diff --git a/.gitignore b/.gitignore index 4749dea19dc782532161ee51266e5a02e9b19602..7c0df64b864ec12923f4446f1045e992caf1b953 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ owncloud config/config.php config/mount.php apps/inc.php +3rdparty # just sane ignores .*.sw[po] diff --git a/.htaccess b/.htaccess index 11ee1d59f83a69f61788b8da5b3504e006543972..048a56d6389dd0b05cc0b4bd36490f125631bdaa 100755 --- a/.htaccess +++ b/.htaccess @@ -1,3 +1,11 @@ + + + +SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 +RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION + + + ErrorDocument 403 /core/templates/403.php ErrorDocument 404 /core/templates/404.php @@ -12,6 +20,7 @@ php_value memory_limit 512M RewriteEngine on RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L] +RewriteRule ^.well-known/host-meta.json /public.php?service=host-meta-json [QSA,L] RewriteRule ^.well-known/carddav /remote.php/carddav/ [R] RewriteRule ^.well-known/caldav /remote.php/caldav/ [R] RewriteRule ^apps/calendar/caldav.php remote.php/caldav/ [QSA,L] @@ -19,4 +28,8 @@ RewriteRule ^apps/contacts/carddav.php remote.php/carddav/ [QSA,L] RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L] RewriteRule ^remote/(.*) remote.php [QSA,L] + +AddType image/svg+xml svg svgz +AddEncoding gzip svgz + Options -Indexes diff --git a/3rdparty/Archive/Tar.php b/3rdparty/Archive/Tar.php deleted file mode 100644 index 33c7d395d0978fcdd47ad4523ccf8814059d1f22..0000000000000000000000000000000000000000 --- a/3rdparty/Archive/Tar.php +++ /dev/null @@ -1,1970 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * @category File_Formats - * @package Archive_Tar - * @author Vincent Blavet - * @copyright 1997-2010 The Authors - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Tar.php 324840 2012-04-05 08:44:41Z mrook $ - * @link http://pear.php.net/package/Archive_Tar - */ - -require_once 'PEAR.php'; - -define('ARCHIVE_TAR_ATT_SEPARATOR', 90001); -define('ARCHIVE_TAR_END_BLOCK', pack("a512", '')); - -/** -* Creates a (compressed) Tar archive -* -* @package Archive_Tar -* @author Vincent Blavet -* @license http://www.opensource.org/licenses/bsd-license.php New BSD License -* @version $Revision: 324840 $ -*/ -class Archive_Tar extends PEAR -{ - /** - * @var string Name of the Tar - */ - var $_tarname=''; - - /** - * @var boolean if true, the Tar file will be gzipped - */ - var $_compress=false; - - /** - * @var string Type of compression : 'none', 'gz' or 'bz2' - */ - var $_compress_type='none'; - - /** - * @var string Explode separator - */ - var $_separator=' '; - - /** - * @var file descriptor - */ - var $_file=0; - - /** - * @var string Local Tar name of a remote Tar (http:// or ftp://) - */ - var $_temp_tarname=''; - - /** - * @var string regular expression for ignoring files or directories - */ - var $_ignore_regexp=''; - - /** - * @var object PEAR_Error object - */ - var $error_object=null; - - // {{{ constructor - /** - * Archive_Tar Class constructor. This flavour of the constructor only - * declare a new Archive_Tar object, identifying it by the name of the - * tar file. - * If the compress argument is set the tar will be read or created as a - * gzip or bz2 compressed TAR file. - * - * @param string $p_tarname The name of the tar archive to create - * @param string $p_compress can be null, 'gz' or 'bz2'. This - * parameter indicates if gzip or bz2 compression - * is required. For compatibility reason the - * boolean value 'true' means 'gz'. - * - * @access public - */ - function Archive_Tar($p_tarname, $p_compress = null) - { - $this->PEAR(); - $this->_compress = false; - $this->_compress_type = 'none'; - if (($p_compress === null) || ($p_compress == '')) { - if (@file_exists($p_tarname)) { - if ($fp = @fopen($p_tarname, "rb")) { - // look for gzip magic cookie - $data = fread($fp, 2); - fclose($fp); - if ($data == "\37\213") { - $this->_compress = true; - $this->_compress_type = 'gz'; - // No sure it's enought for a magic code .... - } elseif ($data == "BZ") { - $this->_compress = true; - $this->_compress_type = 'bz2'; - } - } - } else { - // probably a remote file or some file accessible - // through a stream interface - if (substr($p_tarname, -2) == 'gz') { - $this->_compress = true; - $this->_compress_type = 'gz'; - } elseif ((substr($p_tarname, -3) == 'bz2') || - (substr($p_tarname, -2) == 'bz')) { - $this->_compress = true; - $this->_compress_type = 'bz2'; - } - } - } else { - if (($p_compress === true) || ($p_compress == 'gz')) { - $this->_compress = true; - $this->_compress_type = 'gz'; - } else if ($p_compress == 'bz2') { - $this->_compress = true; - $this->_compress_type = 'bz2'; - } else { - $this->_error("Unsupported compression type '$p_compress'\n". - "Supported types are 'gz' and 'bz2'.\n"); - return false; - } - } - $this->_tarname = $p_tarname; - if ($this->_compress) { // assert zlib or bz2 extension support - if ($this->_compress_type == 'gz') - $extname = 'zlib'; - else if ($this->_compress_type == 'bz2') - $extname = 'bz2'; - - if (!extension_loaded($extname)) { - PEAR::loadExtension($extname); - } - if (!extension_loaded($extname)) { - $this->_error("The extension '$extname' couldn't be found.\n". - "Please make sure your version of PHP was built ". - "with '$extname' support.\n"); - return false; - } - } - } - // }}} - - // {{{ destructor - function _Archive_Tar() - { - $this->_close(); - // ----- Look for a local copy to delete - if ($this->_temp_tarname != '') - @unlink($this->_temp_tarname); - $this->_PEAR(); - } - // }}} - - // {{{ create() - /** - * This method creates the archive file and add the files / directories - * that are listed in $p_filelist. - * If a file with the same name exist and is writable, it is replaced - * by the new tar. - * The method return false and a PEAR error text. - * The $p_filelist parameter can be an array of string, each string - * representing a filename or a directory name with their path if - * needed. It can also be a single string with names separated by a - * single blank. - * For each directory added in the archive, the files and - * sub-directories are also added. - * See also createModify() method for more details. - * - * @param array $p_filelist An array of filenames and directory names, or a - * single string with names separated by a single - * blank space. - * - * @return true on success, false on error. - * @see createModify() - * @access public - */ - function create($p_filelist) - { - return $this->createModify($p_filelist, '', ''); - } - // }}} - - // {{{ add() - /** - * This method add the files / directories that are listed in $p_filelist in - * the archive. If the archive does not exist it is created. - * The method return false and a PEAR error text. - * The files and directories listed are only added at the end of the archive, - * even if a file with the same name is already archived. - * See also createModify() method for more details. - * - * @param array $p_filelist An array of filenames and directory names, or a - * single string with names separated by a single - * blank space. - * - * @return true on success, false on error. - * @see createModify() - * @access public - */ - function add($p_filelist) - { - return $this->addModify($p_filelist, '', ''); - } - // }}} - - // {{{ extract() - function extract($p_path='', $p_preserve=false) - { - return $this->extractModify($p_path, '', $p_preserve); - } - // }}} - - // {{{ listContent() - function listContent() - { - $v_list_detail = array(); - - if ($this->_openRead()) { - if (!$this->_extractList('', $v_list_detail, "list", '', '')) { - unset($v_list_detail); - $v_list_detail = 0; - } - $this->_close(); - } - - return $v_list_detail; - } - // }}} - - // {{{ createModify() - /** - * This method creates the archive file and add the files / directories - * that are listed in $p_filelist. - * If the file already exists and is writable, it is replaced by the - * new tar. It is a create and not an add. If the file exists and is - * read-only or is a directory it is not replaced. The method return - * false and a PEAR error text. - * The $p_filelist parameter can be an array of string, each string - * representing a filename or a directory name with their path if - * needed. It can also be a single string with names separated by a - * single blank. - * The path indicated in $p_remove_dir will be removed from the - * memorized path of each file / directory listed when this path - * exists. By default nothing is removed (empty path '') - * The path indicated in $p_add_dir will be added at the beginning of - * the memorized path of each file / directory listed. However it can - * be set to empty ''. The adding of a path is done after the removing - * of path. - * The path add/remove ability enables the user to prepare an archive - * for extraction in a different path than the origin files are. - * See also addModify() method for file adding properties. - * - * @param array $p_filelist An array of filenames and directory names, - * or a single string with names separated by - * a single blank space. - * @param string $p_add_dir A string which contains a path to be added - * to the memorized path of each element in - * the list. - * @param string $p_remove_dir A string which contains a path to be - * removed from the memorized path of each - * element in the list, when relevant. - * - * @return boolean true on success, false on error. - * @access public - * @see addModify() - */ - function createModify($p_filelist, $p_add_dir, $p_remove_dir='') - { - $v_result = true; - - if (!$this->_openWrite()) - return false; - - if ($p_filelist != '') { - if (is_array($p_filelist)) - $v_list = $p_filelist; - elseif (is_string($p_filelist)) - $v_list = explode($this->_separator, $p_filelist); - else { - $this->_cleanFile(); - $this->_error('Invalid file list'); - return false; - } - - $v_result = $this->_addList($v_list, $p_add_dir, $p_remove_dir); - } - - if ($v_result) { - $this->_writeFooter(); - $this->_close(); - } else - $this->_cleanFile(); - - return $v_result; - } - // }}} - - // {{{ addModify() - /** - * This method add the files / directories listed in $p_filelist at the - * end of the existing archive. If the archive does not yet exists it - * is created. - * The $p_filelist parameter can be an array of string, each string - * representing a filename or a directory name with their path if - * needed. It can also be a single string with names separated by a - * single blank. - * The path indicated in $p_remove_dir will be removed from the - * memorized path of each file / directory listed when this path - * exists. By default nothing is removed (empty path '') - * The path indicated in $p_add_dir will be added at the beginning of - * the memorized path of each file / directory listed. However it can - * be set to empty ''. The adding of a path is done after the removing - * of path. - * The path add/remove ability enables the user to prepare an archive - * for extraction in a different path than the origin files are. - * If a file/dir is already in the archive it will only be added at the - * end of the archive. There is no update of the existing archived - * file/dir. However while extracting the archive, the last file will - * replace the first one. This results in a none optimization of the - * archive size. - * If a file/dir does not exist the file/dir is ignored. However an - * error text is send to PEAR error. - * If a file/dir is not readable the file/dir is ignored. However an - * error text is send to PEAR error. - * - * @param array $p_filelist An array of filenames and directory - * names, or a single string with names - * separated by a single blank space. - * @param string $p_add_dir A string which contains a path to be - * added to the memorized path of each - * element in the list. - * @param string $p_remove_dir A string which contains a path to be - * removed from the memorized path of - * each element in the list, when - * relevant. - * - * @return true on success, false on error. - * @access public - */ - function addModify($p_filelist, $p_add_dir, $p_remove_dir='') - { - $v_result = true; - - if (!$this->_isArchive()) - $v_result = $this->createModify($p_filelist, $p_add_dir, - $p_remove_dir); - else { - if (is_array($p_filelist)) - $v_list = $p_filelist; - elseif (is_string($p_filelist)) - $v_list = explode($this->_separator, $p_filelist); - else { - $this->_error('Invalid file list'); - return false; - } - - $v_result = $this->_append($v_list, $p_add_dir, $p_remove_dir); - } - - return $v_result; - } - // }}} - - // {{{ addString() - /** - * This method add a single string as a file at the - * end of the existing archive. If the archive does not yet exists it - * is created. - * - * @param string $p_filename A string which contains the full - * filename path that will be associated - * with the string. - * @param string $p_string The content of the file added in - * the archive. - * - * @return true on success, false on error. - * @access public - */ - function addString($p_filename, $p_string) - { - $v_result = true; - - if (!$this->_isArchive()) { - if (!$this->_openWrite()) { - return false; - } - $this->_close(); - } - - if (!$this->_openAppend()) - return false; - - // Need to check the get back to the temporary file ? .... - $v_result = $this->_addString($p_filename, $p_string); - - $this->_writeFooter(); - - $this->_close(); - - return $v_result; - } - // }}} - - // {{{ extractModify() - /** - * This method extract all the content of the archive in the directory - * indicated by $p_path. When relevant the memorized path of the - * files/dir can be modified by removing the $p_remove_path path at the - * beginning of the file/dir path. - * While extracting a file, if the directory path does not exists it is - * created. - * While extracting a file, if the file already exists it is replaced - * without looking for last modification date. - * While extracting a file, if the file already exists and is write - * protected, the extraction is aborted. - * While extracting a file, if a directory with the same name already - * exists, the extraction is aborted. - * While extracting a directory, if a file with the same name already - * exists, the extraction is aborted. - * While extracting a file/directory if the destination directory exist - * and is write protected, or does not exist but can not be created, - * the extraction is aborted. - * If after extraction an extracted file does not show the correct - * stored file size, the extraction is aborted. - * When the extraction is aborted, a PEAR error text is set and false - * is returned. However the result can be a partial extraction that may - * need to be manually cleaned. - * - * @param string $p_path The path of the directory where the - * files/dir need to by extracted. - * @param string $p_remove_path Part of the memorized path that can be - * removed if present at the beginning of - * the file/dir path. - * @param boolean $p_preserve Preserve user/group ownership of files - * - * @return boolean true on success, false on error. - * @access public - * @see extractList() - */ - function extractModify($p_path, $p_remove_path, $p_preserve=false) - { - $v_result = true; - $v_list_detail = array(); - - if ($v_result = $this->_openRead()) { - $v_result = $this->_extractList($p_path, $v_list_detail, - "complete", 0, $p_remove_path, $p_preserve); - $this->_close(); - } - - return $v_result; - } - // }}} - - // {{{ extractInString() - /** - * This method extract from the archive one file identified by $p_filename. - * The return value is a string with the file content, or NULL on error. - * - * @param string $p_filename The path of the file to extract in a string. - * - * @return a string with the file content or NULL. - * @access public - */ - function extractInString($p_filename) - { - if ($this->_openRead()) { - $v_result = $this->_extractInString($p_filename); - $this->_close(); - } else { - $v_result = null; - } - - return $v_result; - } - // }}} - - // {{{ extractList() - /** - * This method extract from the archive only the files indicated in the - * $p_filelist. These files are extracted in the current directory or - * in the directory indicated by the optional $p_path parameter. - * If indicated the $p_remove_path can be used in the same way as it is - * used in extractModify() method. - * - * @param array $p_filelist An array of filenames and directory names, - * or a single string with names separated - * by a single blank space. - * @param string $p_path The path of the directory where the - * files/dir need to by extracted. - * @param string $p_remove_path Part of the memorized path that can be - * removed if present at the beginning of - * the file/dir path. - * @param boolean $p_preserve Preserve user/group ownership of files - * - * @return true on success, false on error. - * @access public - * @see extractModify() - */ - function extractList($p_filelist, $p_path='', $p_remove_path='', $p_preserve=false) - { - $v_result = true; - $v_list_detail = array(); - - if (is_array($p_filelist)) - $v_list = $p_filelist; - elseif (is_string($p_filelist)) - $v_list = explode($this->_separator, $p_filelist); - else { - $this->_error('Invalid string list'); - return false; - } - - if ($v_result = $this->_openRead()) { - $v_result = $this->_extractList($p_path, $v_list_detail, "partial", - $v_list, $p_remove_path, $p_preserve); - $this->_close(); - } - - return $v_result; - } - // }}} - - // {{{ setAttribute() - /** - * This method set specific attributes of the archive. It uses a variable - * list of parameters, in the format attribute code + attribute values : - * $arch->setAttribute(ARCHIVE_TAR_ATT_SEPARATOR, ','); - * - * @param mixed $argv variable list of attributes and values - * - * @return true on success, false on error. - * @access public - */ - function setAttribute() - { - $v_result = true; - - // ----- Get the number of variable list of arguments - if (($v_size = func_num_args()) == 0) { - return true; - } - - // ----- Get the arguments - $v_att_list = &func_get_args(); - - // ----- Read the attributes - $i=0; - while ($i<$v_size) { - - // ----- Look for next option - switch ($v_att_list[$i]) { - // ----- Look for options that request a string value - case ARCHIVE_TAR_ATT_SEPARATOR : - // ----- Check the number of parameters - if (($i+1) >= $v_size) { - $this->_error('Invalid number of parameters for ' - .'attribute ARCHIVE_TAR_ATT_SEPARATOR'); - return false; - } - - // ----- Get the value - $this->_separator = $v_att_list[$i+1]; - $i++; - break; - - default : - $this->_error('Unknow attribute code '.$v_att_list[$i].''); - return false; - } - - // ----- Next attribute - $i++; - } - - return $v_result; - } - // }}} - - // {{{ setIgnoreRegexp() - /** - * This method sets the regular expression for ignoring files and directories - * at import, for example: - * $arch->setIgnoreRegexp("#CVS|\.svn#"); - * - * @param string $regexp regular expression defining which files or directories to ignore - * - * @access public - */ - function setIgnoreRegexp($regexp) - { - $this->_ignore_regexp = $regexp; - } - // }}} - - // {{{ setIgnoreList() - /** - * This method sets the regular expression for ignoring all files and directories - * matching the filenames in the array list at import, for example: - * $arch->setIgnoreList(array('CVS', '.svn', 'bin/tool')); - * - * @param array $list a list of file or directory names to ignore - * - * @access public - */ - function setIgnoreList($list) - { - $regexp = str_replace(array('#', '.', '^', '$'), array('\#', '\.', '\^', '\$'), $list); - $regexp = '#/'.join('$|/', $list).'#'; - $this->setIgnoreRegexp($regexp); - } - // }}} - - // {{{ _error() - function _error($p_message) - { - $this->error_object = &$this->raiseError($p_message); - } - // }}} - - // {{{ _warning() - function _warning($p_message) - { - $this->error_object = &$this->raiseError($p_message); - } - // }}} - - // {{{ _isArchive() - function _isArchive($p_filename=null) - { - if ($p_filename == null) { - $p_filename = $this->_tarname; - } - clearstatcache(); - return @is_file($p_filename) && !@is_link($p_filename); - } - // }}} - - // {{{ _openWrite() - function _openWrite() - { - if ($this->_compress_type == 'gz' && function_exists('gzopen')) - $this->_file = @gzopen($this->_tarname, "wb9"); - else if ($this->_compress_type == 'bz2' && function_exists('bzopen')) - $this->_file = @bzopen($this->_tarname, "w"); - else if ($this->_compress_type == 'none') - $this->_file = @fopen($this->_tarname, "wb"); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - - if ($this->_file == 0) { - $this->_error('Unable to open in write mode \'' - .$this->_tarname.'\''); - return false; - } - - return true; - } - // }}} - - // {{{ _openRead() - function _openRead() - { - if (strtolower(substr($this->_tarname, 0, 7)) == 'http://') { - - // ----- Look if a local copy need to be done - if ($this->_temp_tarname == '') { - $this->_temp_tarname = uniqid('tar').'.tmp'; - if (!$v_file_from = @fopen($this->_tarname, 'rb')) { - $this->_error('Unable to open in read mode \'' - .$this->_tarname.'\''); - $this->_temp_tarname = ''; - return false; - } - if (!$v_file_to = @fopen($this->_temp_tarname, 'wb')) { - $this->_error('Unable to open in write mode \'' - .$this->_temp_tarname.'\''); - $this->_temp_tarname = ''; - return false; - } - while ($v_data = @fread($v_file_from, 1024)) - @fwrite($v_file_to, $v_data); - @fclose($v_file_from); - @fclose($v_file_to); - } - - // ----- File to open if the local copy - $v_filename = $this->_temp_tarname; - - } else - // ----- File to open if the normal Tar file - $v_filename = $this->_tarname; - - if ($this->_compress_type == 'gz') - $this->_file = @gzopen($v_filename, "rb"); - else if ($this->_compress_type == 'bz2') - $this->_file = @bzopen($v_filename, "r"); - else if ($this->_compress_type == 'none') - $this->_file = @fopen($v_filename, "rb"); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - - if ($this->_file == 0) { - $this->_error('Unable to open in read mode \''.$v_filename.'\''); - return false; - } - - return true; - } - // }}} - - // {{{ _openReadWrite() - function _openReadWrite() - { - if ($this->_compress_type == 'gz') - $this->_file = @gzopen($this->_tarname, "r+b"); - else if ($this->_compress_type == 'bz2') { - $this->_error('Unable to open bz2 in read/write mode \'' - .$this->_tarname.'\' (limitation of bz2 extension)'); - return false; - } else if ($this->_compress_type == 'none') - $this->_file = @fopen($this->_tarname, "r+b"); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - - if ($this->_file == 0) { - $this->_error('Unable to open in read/write mode \'' - .$this->_tarname.'\''); - return false; - } - - return true; - } - // }}} - - // {{{ _close() - function _close() - { - //if (isset($this->_file)) { - if (is_resource($this->_file)) { - if ($this->_compress_type == 'gz') - @gzclose($this->_file); - else if ($this->_compress_type == 'bz2') - @bzclose($this->_file); - else if ($this->_compress_type == 'none') - @fclose($this->_file); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - - $this->_file = 0; - } - - // ----- Look if a local copy need to be erase - // Note that it might be interesting to keep the url for a time : ToDo - if ($this->_temp_tarname != '') { - @unlink($this->_temp_tarname); - $this->_temp_tarname = ''; - } - - return true; - } - // }}} - - // {{{ _cleanFile() - function _cleanFile() - { - $this->_close(); - - // ----- Look for a local copy - if ($this->_temp_tarname != '') { - // ----- Remove the local copy but not the remote tarname - @unlink($this->_temp_tarname); - $this->_temp_tarname = ''; - } else { - // ----- Remove the local tarname file - @unlink($this->_tarname); - } - $this->_tarname = ''; - - return true; - } - // }}} - - // {{{ _writeBlock() - function _writeBlock($p_binary_data, $p_len=null) - { - if (is_resource($this->_file)) { - if ($p_len === null) { - if ($this->_compress_type == 'gz') - @gzputs($this->_file, $p_binary_data); - else if ($this->_compress_type == 'bz2') - @bzwrite($this->_file, $p_binary_data); - else if ($this->_compress_type == 'none') - @fputs($this->_file, $p_binary_data); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - } else { - if ($this->_compress_type == 'gz') - @gzputs($this->_file, $p_binary_data, $p_len); - else if ($this->_compress_type == 'bz2') - @bzwrite($this->_file, $p_binary_data, $p_len); - else if ($this->_compress_type == 'none') - @fputs($this->_file, $p_binary_data, $p_len); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - - } - } - return true; - } - // }}} - - // {{{ _readBlock() - function _readBlock() - { - $v_block = null; - if (is_resource($this->_file)) { - if ($this->_compress_type == 'gz') - $v_block = @gzread($this->_file, 512); - else if ($this->_compress_type == 'bz2') - $v_block = @bzread($this->_file, 512); - else if ($this->_compress_type == 'none') - $v_block = @fread($this->_file, 512); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - } - return $v_block; - } - // }}} - - // {{{ _jumpBlock() - function _jumpBlock($p_len=null) - { - if (is_resource($this->_file)) { - if ($p_len === null) - $p_len = 1; - - if ($this->_compress_type == 'gz') { - @gzseek($this->_file, gztell($this->_file)+($p_len*512)); - } - else if ($this->_compress_type == 'bz2') { - // ----- Replace missing bztell() and bzseek() - for ($i=0; $i<$p_len; $i++) - $this->_readBlock(); - } else if ($this->_compress_type == 'none') - @fseek($this->_file, $p_len*512, SEEK_CUR); - else - $this->_error('Unknown or missing compression type (' - .$this->_compress_type.')'); - - } - return true; - } - // }}} - - // {{{ _writeFooter() - function _writeFooter() - { - if (is_resource($this->_file)) { - // ----- Write the last 0 filled block for end of archive - $v_binary_data = pack('a1024', ''); - $this->_writeBlock($v_binary_data); - } - return true; - } - // }}} - - // {{{ _addList() - function _addList($p_list, $p_add_dir, $p_remove_dir) - { - $v_result=true; - $v_header = array(); - - // ----- Remove potential windows directory separator - $p_add_dir = $this->_translateWinPath($p_add_dir); - $p_remove_dir = $this->_translateWinPath($p_remove_dir, false); - - if (!$this->_file) { - $this->_error('Invalid file descriptor'); - return false; - } - - if (sizeof($p_list) == 0) - return true; - - foreach ($p_list as $v_filename) { - if (!$v_result) { - break; - } - - // ----- Skip the current tar name - if ($v_filename == $this->_tarname) - continue; - - if ($v_filename == '') - continue; - - // ----- ignore files and directories matching the ignore regular expression - if ($this->_ignore_regexp && preg_match($this->_ignore_regexp, '/'.$v_filename)) { - $this->_warning("File '$v_filename' ignored"); - continue; - } - - if (!file_exists($v_filename) && !is_link($v_filename)) { - $this->_warning("File '$v_filename' does not exist"); - continue; - } - - // ----- Add the file or directory header - if (!$this->_addFile($v_filename, $v_header, $p_add_dir, $p_remove_dir)) - return false; - - if (@is_dir($v_filename) && !@is_link($v_filename)) { - if (!($p_hdir = opendir($v_filename))) { - $this->_warning("Directory '$v_filename' can not be read"); - continue; - } - while (false !== ($p_hitem = readdir($p_hdir))) { - if (($p_hitem != '.') && ($p_hitem != '..')) { - if ($v_filename != ".") - $p_temp_list[0] = $v_filename.'/'.$p_hitem; - else - $p_temp_list[0] = $p_hitem; - - $v_result = $this->_addList($p_temp_list, - $p_add_dir, - $p_remove_dir); - } - } - - unset($p_temp_list); - unset($p_hdir); - unset($p_hitem); - } - } - - return $v_result; - } - // }}} - - // {{{ _addFile() - function _addFile($p_filename, &$p_header, $p_add_dir, $p_remove_dir) - { - if (!$this->_file) { - $this->_error('Invalid file descriptor'); - return false; - } - - if ($p_filename == '') { - $this->_error('Invalid file name'); - return false; - } - - // ----- Calculate the stored filename - $p_filename = $this->_translateWinPath($p_filename, false);; - $v_stored_filename = $p_filename; - if (strcmp($p_filename, $p_remove_dir) == 0) { - return true; - } - if ($p_remove_dir != '') { - if (substr($p_remove_dir, -1) != '/') - $p_remove_dir .= '/'; - - if (substr($p_filename, 0, strlen($p_remove_dir)) == $p_remove_dir) - $v_stored_filename = substr($p_filename, strlen($p_remove_dir)); - } - $v_stored_filename = $this->_translateWinPath($v_stored_filename); - if ($p_add_dir != '') { - if (substr($p_add_dir, -1) == '/') - $v_stored_filename = $p_add_dir.$v_stored_filename; - else - $v_stored_filename = $p_add_dir.'/'.$v_stored_filename; - } - - $v_stored_filename = $this->_pathReduction($v_stored_filename); - - if ($this->_isArchive($p_filename)) { - if (($v_file = @fopen($p_filename, "rb")) == 0) { - $this->_warning("Unable to open file '".$p_filename - ."' in binary read mode"); - return true; - } - - if (!$this->_writeHeader($p_filename, $v_stored_filename)) - return false; - - while (($v_buffer = fread($v_file, 512)) != '') { - $v_binary_data = pack("a512", "$v_buffer"); - $this->_writeBlock($v_binary_data); - } - - fclose($v_file); - - } else { - // ----- Only header for dir - if (!$this->_writeHeader($p_filename, $v_stored_filename)) - return false; - } - - return true; - } - // }}} - - // {{{ _addString() - function _addString($p_filename, $p_string) - { - if (!$this->_file) { - $this->_error('Invalid file descriptor'); - return false; - } - - if ($p_filename == '') { - $this->_error('Invalid file name'); - return false; - } - - // ----- Calculate the stored filename - $p_filename = $this->_translateWinPath($p_filename, false);; - - if (!$this->_writeHeaderBlock($p_filename, strlen($p_string), - time(), 384, "", 0, 0)) - return false; - - $i=0; - while (($v_buffer = substr($p_string, (($i++)*512), 512)) != '') { - $v_binary_data = pack("a512", $v_buffer); - $this->_writeBlock($v_binary_data); - } - - return true; - } - // }}} - - // {{{ _writeHeader() - function _writeHeader($p_filename, $p_stored_filename) - { - if ($p_stored_filename == '') - $p_stored_filename = $p_filename; - $v_reduce_filename = $this->_pathReduction($p_stored_filename); - - if (strlen($v_reduce_filename) > 99) { - if (!$this->_writeLongHeader($v_reduce_filename)) - return false; - } - - $v_info = lstat($p_filename); - $v_uid = sprintf("%07s", DecOct($v_info[4])); - $v_gid = sprintf("%07s", DecOct($v_info[5])); - $v_perms = sprintf("%07s", DecOct($v_info['mode'] & 000777)); - - $v_mtime = sprintf("%011s", DecOct($v_info['mtime'])); - - $v_linkname = ''; - - if (@is_link($p_filename)) { - $v_typeflag = '2'; - $v_linkname = readlink($p_filename); - $v_size = sprintf("%011s", DecOct(0)); - } elseif (@is_dir($p_filename)) { - $v_typeflag = "5"; - $v_size = sprintf("%011s", DecOct(0)); - } else { - $v_typeflag = '0'; - clearstatcache(); - $v_size = sprintf("%011s", DecOct($v_info['size'])); - } - - $v_magic = 'ustar '; - - $v_version = ' '; - - if (function_exists('posix_getpwuid')) - { - $userinfo = posix_getpwuid($v_info[4]); - $groupinfo = posix_getgrgid($v_info[5]); - - $v_uname = $userinfo['name']; - $v_gname = $groupinfo['name']; - } - else - { - $v_uname = ''; - $v_gname = ''; - } - - $v_devmajor = ''; - - $v_devminor = ''; - - $v_prefix = ''; - - $v_binary_data_first = pack("a100a8a8a8a12a12", - $v_reduce_filename, $v_perms, $v_uid, - $v_gid, $v_size, $v_mtime); - $v_binary_data_last = pack("a1a100a6a2a32a32a8a8a155a12", - $v_typeflag, $v_linkname, $v_magic, - $v_version, $v_uname, $v_gname, - $v_devmajor, $v_devminor, $v_prefix, ''); - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i=0; $i<148; $i++) - $v_checksum += ord(substr($v_binary_data_first,$i,1)); - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i=148; $i<156; $i++) - $v_checksum += ord(' '); - // ..... Last part of the header - for ($i=156, $j=0; $i<512; $i++, $j++) - $v_checksum += ord(substr($v_binary_data_last,$j,1)); - - // ----- Write the first 148 bytes of the header in the archive - $this->_writeBlock($v_binary_data_first, 148); - - // ----- Write the calculated checksum - $v_checksum = sprintf("%06s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - $this->_writeBlock($v_binary_data, 8); - - // ----- Write the last 356 bytes of the header in the archive - $this->_writeBlock($v_binary_data_last, 356); - - return true; - } - // }}} - - // {{{ _writeHeaderBlock() - function _writeHeaderBlock($p_filename, $p_size, $p_mtime=0, $p_perms=0, - $p_type='', $p_uid=0, $p_gid=0) - { - $p_filename = $this->_pathReduction($p_filename); - - if (strlen($p_filename) > 99) { - if (!$this->_writeLongHeader($p_filename)) - return false; - } - - if ($p_type == "5") { - $v_size = sprintf("%011s", DecOct(0)); - } else { - $v_size = sprintf("%011s", DecOct($p_size)); - } - - $v_uid = sprintf("%07s", DecOct($p_uid)); - $v_gid = sprintf("%07s", DecOct($p_gid)); - $v_perms = sprintf("%07s", DecOct($p_perms & 000777)); - - $v_mtime = sprintf("%11s", DecOct($p_mtime)); - - $v_linkname = ''; - - $v_magic = 'ustar '; - - $v_version = ' '; - - if (function_exists('posix_getpwuid')) - { - $userinfo = posix_getpwuid($p_uid); - $groupinfo = posix_getgrgid($p_gid); - - $v_uname = $userinfo['name']; - $v_gname = $groupinfo['name']; - } - else - { - $v_uname = ''; - $v_gname = ''; - } - - $v_devmajor = ''; - - $v_devminor = ''; - - $v_prefix = ''; - - $v_binary_data_first = pack("a100a8a8a8a12A12", - $p_filename, $v_perms, $v_uid, $v_gid, - $v_size, $v_mtime); - $v_binary_data_last = pack("a1a100a6a2a32a32a8a8a155a12", - $p_type, $v_linkname, $v_magic, - $v_version, $v_uname, $v_gname, - $v_devmajor, $v_devminor, $v_prefix, ''); - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i=0; $i<148; $i++) - $v_checksum += ord(substr($v_binary_data_first,$i,1)); - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i=148; $i<156; $i++) - $v_checksum += ord(' '); - // ..... Last part of the header - for ($i=156, $j=0; $i<512; $i++, $j++) - $v_checksum += ord(substr($v_binary_data_last,$j,1)); - - // ----- Write the first 148 bytes of the header in the archive - $this->_writeBlock($v_binary_data_first, 148); - - // ----- Write the calculated checksum - $v_checksum = sprintf("%06s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - $this->_writeBlock($v_binary_data, 8); - - // ----- Write the last 356 bytes of the header in the archive - $this->_writeBlock($v_binary_data_last, 356); - - return true; - } - // }}} - - // {{{ _writeLongHeader() - function _writeLongHeader($p_filename) - { - $v_size = sprintf("%11s ", DecOct(strlen($p_filename))); - - $v_typeflag = 'L'; - - $v_linkname = ''; - - $v_magic = ''; - - $v_version = ''; - - $v_uname = ''; - - $v_gname = ''; - - $v_devmajor = ''; - - $v_devminor = ''; - - $v_prefix = ''; - - $v_binary_data_first = pack("a100a8a8a8a12a12", - '././@LongLink', 0, 0, 0, $v_size, 0); - $v_binary_data_last = pack("a1a100a6a2a32a32a8a8a155a12", - $v_typeflag, $v_linkname, $v_magic, - $v_version, $v_uname, $v_gname, - $v_devmajor, $v_devminor, $v_prefix, ''); - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i=0; $i<148; $i++) - $v_checksum += ord(substr($v_binary_data_first,$i,1)); - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i=148; $i<156; $i++) - $v_checksum += ord(' '); - // ..... Last part of the header - for ($i=156, $j=0; $i<512; $i++, $j++) - $v_checksum += ord(substr($v_binary_data_last,$j,1)); - - // ----- Write the first 148 bytes of the header in the archive - $this->_writeBlock($v_binary_data_first, 148); - - // ----- Write the calculated checksum - $v_checksum = sprintf("%06s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - $this->_writeBlock($v_binary_data, 8); - - // ----- Write the last 356 bytes of the header in the archive - $this->_writeBlock($v_binary_data_last, 356); - - // ----- Write the filename as content of the block - $i=0; - while (($v_buffer = substr($p_filename, (($i++)*512), 512)) != '') { - $v_binary_data = pack("a512", "$v_buffer"); - $this->_writeBlock($v_binary_data); - } - - return true; - } - // }}} - - // {{{ _readHeader() - function _readHeader($v_binary_data, &$v_header) - { - if (strlen($v_binary_data)==0) { - $v_header['filename'] = ''; - return true; - } - - if (strlen($v_binary_data) != 512) { - $v_header['filename'] = ''; - $this->_error('Invalid block size : '.strlen($v_binary_data)); - return false; - } - - if (!is_array($v_header)) { - $v_header = array(); - } - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i=0; $i<148; $i++) - $v_checksum+=ord(substr($v_binary_data,$i,1)); - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i=148; $i<156; $i++) - $v_checksum += ord(' '); - // ..... Last part of the header - for ($i=156; $i<512; $i++) - $v_checksum+=ord(substr($v_binary_data,$i,1)); - - $v_data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/" . - "a8checksum/a1typeflag/a100link/a6magic/a2version/" . - "a32uname/a32gname/a8devmajor/a8devminor/a131prefix", - $v_binary_data); - - if (strlen($v_data["prefix"]) > 0) { - $v_data["filename"] = "$v_data[prefix]/$v_data[filename]"; - } - - // ----- Extract the checksum - $v_header['checksum'] = OctDec(trim($v_data['checksum'])); - if ($v_header['checksum'] != $v_checksum) { - $v_header['filename'] = ''; - - // ----- Look for last block (empty block) - if (($v_checksum == 256) && ($v_header['checksum'] == 0)) - return true; - - $this->_error('Invalid checksum for file "'.$v_data['filename'] - .'" : '.$v_checksum.' calculated, ' - .$v_header['checksum'].' expected'); - return false; - } - - // ----- Extract the properties - $v_header['filename'] = $v_data['filename']; - if ($this->_maliciousFilename($v_header['filename'])) { - $this->_error('Malicious .tar detected, file "' . $v_header['filename'] . - '" will not install in desired directory tree'); - return false; - } - $v_header['mode'] = OctDec(trim($v_data['mode'])); - $v_header['uid'] = OctDec(trim($v_data['uid'])); - $v_header['gid'] = OctDec(trim($v_data['gid'])); - $v_header['size'] = OctDec(trim($v_data['size'])); - $v_header['mtime'] = OctDec(trim($v_data['mtime'])); - if (($v_header['typeflag'] = $v_data['typeflag']) == "5") { - $v_header['size'] = 0; - } - $v_header['link'] = trim($v_data['link']); - /* ----- All these fields are removed form the header because - they do not carry interesting info - $v_header[magic] = trim($v_data[magic]); - $v_header[version] = trim($v_data[version]); - $v_header[uname] = trim($v_data[uname]); - $v_header[gname] = trim($v_data[gname]); - $v_header[devmajor] = trim($v_data[devmajor]); - $v_header[devminor] = trim($v_data[devminor]); - */ - - return true; - } - // }}} - - // {{{ _maliciousFilename() - /** - * Detect and report a malicious file name - * - * @param string $file - * - * @return bool - * @access private - */ - function _maliciousFilename($file) - { - if (strpos($file, '/../') !== false) { - return true; - } - if (strpos($file, '../') === 0) { - return true; - } - return false; - } - // }}} - - // {{{ _readLongHeader() - function _readLongHeader(&$v_header) - { - $v_filename = ''; - $n = floor($v_header['size']/512); - for ($i=0; $i<$n; $i++) { - $v_content = $this->_readBlock(); - $v_filename .= $v_content; - } - if (($v_header['size'] % 512) != 0) { - $v_content = $this->_readBlock(); - $v_filename .= trim($v_content); - } - - // ----- Read the next header - $v_binary_data = $this->_readBlock(); - - if (!$this->_readHeader($v_binary_data, $v_header)) - return false; - - $v_filename = trim($v_filename); - $v_header['filename'] = $v_filename; - if ($this->_maliciousFilename($v_filename)) { - $this->_error('Malicious .tar detected, file "' . $v_filename . - '" will not install in desired directory tree'); - return false; - } - - return true; - } - // }}} - - // {{{ _extractInString() - /** - * This method extract from the archive one file identified by $p_filename. - * The return value is a string with the file content, or null on error. - * - * @param string $p_filename The path of the file to extract in a string. - * - * @return a string with the file content or null. - * @access private - */ - function _extractInString($p_filename) - { - $v_result_str = ""; - - While (strlen($v_binary_data = $this->_readBlock()) != 0) - { - if (!$this->_readHeader($v_binary_data, $v_header)) - return null; - - if ($v_header['filename'] == '') - continue; - - // ----- Look for long filename - if ($v_header['typeflag'] == 'L') { - if (!$this->_readLongHeader($v_header)) - return null; - } - - if ($v_header['filename'] == $p_filename) { - if ($v_header['typeflag'] == "5") { - $this->_error('Unable to extract in string a directory ' - .'entry {'.$v_header['filename'].'}'); - return null; - } else { - $n = floor($v_header['size']/512); - for ($i=0; $i<$n; $i++) { - $v_result_str .= $this->_readBlock(); - } - if (($v_header['size'] % 512) != 0) { - $v_content = $this->_readBlock(); - $v_result_str .= substr($v_content, 0, - ($v_header['size'] % 512)); - } - return $v_result_str; - } - } else { - $this->_jumpBlock(ceil(($v_header['size']/512))); - } - } - - return null; - } - // }}} - - // {{{ _extractList() - function _extractList($p_path, &$p_list_detail, $p_mode, - $p_file_list, $p_remove_path, $p_preserve=false) - { - $v_result=true; - $v_nb = 0; - $v_extract_all = true; - $v_listing = false; - - $p_path = $this->_translateWinPath($p_path, false); - if ($p_path == '' || (substr($p_path, 0, 1) != '/' - && substr($p_path, 0, 3) != "../" && !strpos($p_path, ':'))) { - $p_path = "./".$p_path; - } - $p_remove_path = $this->_translateWinPath($p_remove_path); - - // ----- Look for path to remove format (should end by /) - if (($p_remove_path != '') && (substr($p_remove_path, -1) != '/')) - $p_remove_path .= '/'; - $p_remove_path_size = strlen($p_remove_path); - - switch ($p_mode) { - case "complete" : - $v_extract_all = true; - $v_listing = false; - break; - case "partial" : - $v_extract_all = false; - $v_listing = false; - break; - case "list" : - $v_extract_all = false; - $v_listing = true; - break; - default : - $this->_error('Invalid extract mode ('.$p_mode.')'); - return false; - } - - clearstatcache(); - - while (strlen($v_binary_data = $this->_readBlock()) != 0) - { - $v_extract_file = FALSE; - $v_extraction_stopped = 0; - - if (!$this->_readHeader($v_binary_data, $v_header)) - return false; - - if ($v_header['filename'] == '') { - continue; - } - - // ----- Look for long filename - if ($v_header['typeflag'] == 'L') { - if (!$this->_readLongHeader($v_header)) - return false; - } - - if ((!$v_extract_all) && (is_array($p_file_list))) { - // ----- By default no unzip if the file is not found - $v_extract_file = false; - - for ($i=0; $i strlen($p_file_list[$i])) - && (substr($v_header['filename'], 0, strlen($p_file_list[$i])) - == $p_file_list[$i])) { - $v_extract_file = true; - break; - } - } - - // ----- It is a file, so compare the file names - elseif ($p_file_list[$i] == $v_header['filename']) { - $v_extract_file = true; - break; - } - } - } else { - $v_extract_file = true; - } - - // ----- Look if this file need to be extracted - if (($v_extract_file) && (!$v_listing)) - { - if (($p_remove_path != '') - && (substr($v_header['filename'], 0, $p_remove_path_size) - == $p_remove_path)) - $v_header['filename'] = substr($v_header['filename'], - $p_remove_path_size); - if (($p_path != './') && ($p_path != '/')) { - while (substr($p_path, -1) == '/') - $p_path = substr($p_path, 0, strlen($p_path)-1); - - if (substr($v_header['filename'], 0, 1) == '/') - $v_header['filename'] = $p_path.$v_header['filename']; - else - $v_header['filename'] = $p_path.'/'.$v_header['filename']; - } - if (file_exists($v_header['filename'])) { - if ( (@is_dir($v_header['filename'])) - && ($v_header['typeflag'] == '')) { - $this->_error('File '.$v_header['filename'] - .' already exists as a directory'); - return false; - } - if ( ($this->_isArchive($v_header['filename'])) - && ($v_header['typeflag'] == "5")) { - $this->_error('Directory '.$v_header['filename'] - .' already exists as a file'); - return false; - } - if (!is_writeable($v_header['filename'])) { - $this->_error('File '.$v_header['filename'] - .' already exists and is write protected'); - return false; - } - if (filemtime($v_header['filename']) > $v_header['mtime']) { - // To be completed : An error or silent no replace ? - } - } - - // ----- Check the directory availability and create it if necessary - elseif (($v_result - = $this->_dirCheck(($v_header['typeflag'] == "5" - ?$v_header['filename'] - :dirname($v_header['filename'])))) != 1) { - $this->_error('Unable to create path for '.$v_header['filename']); - return false; - } - - if ($v_extract_file) { - if ($v_header['typeflag'] == "5") { - if (!@file_exists($v_header['filename'])) { - if (!@mkdir($v_header['filename'], 0777)) { - $this->_error('Unable to create directory {' - .$v_header['filename'].'}'); - return false; - } - } - } elseif ($v_header['typeflag'] == "2") { - if (@file_exists($v_header['filename'])) { - @unlink($v_header['filename']); - } - if (!@symlink($v_header['link'], $v_header['filename'])) { - $this->_error('Unable to extract symbolic link {' - .$v_header['filename'].'}'); - return false; - } - } else { - if (($v_dest_file = @fopen($v_header['filename'], "wb")) == 0) { - $this->_error('Error while opening {'.$v_header['filename'] - .'} in write binary mode'); - return false; - } else { - $n = floor($v_header['size']/512); - for ($i=0; $i<$n; $i++) { - $v_content = $this->_readBlock(); - fwrite($v_dest_file, $v_content, 512); - } - if (($v_header['size'] % 512) != 0) { - $v_content = $this->_readBlock(); - fwrite($v_dest_file, $v_content, ($v_header['size'] % 512)); - } - - @fclose($v_dest_file); - - if ($p_preserve) { - @chown($v_header['filename'], $v_header['uid']); - @chgrp($v_header['filename'], $v_header['gid']); - } - - // ----- Change the file mode, mtime - @touch($v_header['filename'], $v_header['mtime']); - if ($v_header['mode'] & 0111) { - // make file executable, obey umask - $mode = fileperms($v_header['filename']) | (~umask() & 0111); - @chmod($v_header['filename'], $mode); - } - } - - // ----- Check the file size - clearstatcache(); - if (!is_file($v_header['filename'])) { - $this->_error('Extracted file '.$v_header['filename'] - .'does not exist. Archive may be corrupted.'); - return false; - } - - $filesize = filesize($v_header['filename']); - if ($filesize != $v_header['size']) { - $this->_error('Extracted file '.$v_header['filename'] - .' does not have the correct file size \'' - .$filesize - .'\' ('.$v_header['size'] - .' expected). Archive may be corrupted.'); - return false; - } - } - } else { - $this->_jumpBlock(ceil(($v_header['size']/512))); - } - } else { - $this->_jumpBlock(ceil(($v_header['size']/512))); - } - - /* TBC : Seems to be unused ... - if ($this->_compress) - $v_end_of_file = @gzeof($this->_file); - else - $v_end_of_file = @feof($this->_file); - */ - - if ($v_listing || $v_extract_file || $v_extraction_stopped) { - // ----- Log extracted files - if (($v_file_dir = dirname($v_header['filename'])) - == $v_header['filename']) - $v_file_dir = ''; - if ((substr($v_header['filename'], 0, 1) == '/') && ($v_file_dir == '')) - $v_file_dir = '/'; - - $p_list_detail[$v_nb++] = $v_header; - if (is_array($p_file_list) && (count($p_list_detail) == count($p_file_list))) { - return true; - } - } - } - - return true; - } - // }}} - - // {{{ _openAppend() - function _openAppend() - { - if (filesize($this->_tarname) == 0) - return $this->_openWrite(); - - if ($this->_compress) { - $this->_close(); - - if (!@rename($this->_tarname, $this->_tarname.".tmp")) { - $this->_error('Error while renaming \''.$this->_tarname - .'\' to temporary file \''.$this->_tarname - .'.tmp\''); - return false; - } - - if ($this->_compress_type == 'gz') - $v_temp_tar = @gzopen($this->_tarname.".tmp", "rb"); - elseif ($this->_compress_type == 'bz2') - $v_temp_tar = @bzopen($this->_tarname.".tmp", "r"); - - if ($v_temp_tar == 0) { - $this->_error('Unable to open file \''.$this->_tarname - .'.tmp\' in binary read mode'); - @rename($this->_tarname.".tmp", $this->_tarname); - return false; - } - - if (!$this->_openWrite()) { - @rename($this->_tarname.".tmp", $this->_tarname); - return false; - } - - if ($this->_compress_type == 'gz') { - $end_blocks = 0; - - while (!@gzeof($v_temp_tar)) { - $v_buffer = @gzread($v_temp_tar, 512); - if ($v_buffer == ARCHIVE_TAR_END_BLOCK || strlen($v_buffer) == 0) { - $end_blocks++; - // do not copy end blocks, we will re-make them - // after appending - continue; - } elseif ($end_blocks > 0) { - for ($i = 0; $i < $end_blocks; $i++) { - $this->_writeBlock(ARCHIVE_TAR_END_BLOCK); - } - $end_blocks = 0; - } - $v_binary_data = pack("a512", $v_buffer); - $this->_writeBlock($v_binary_data); - } - - @gzclose($v_temp_tar); - } - elseif ($this->_compress_type == 'bz2') { - $end_blocks = 0; - - while (strlen($v_buffer = @bzread($v_temp_tar, 512)) > 0) { - if ($v_buffer == ARCHIVE_TAR_END_BLOCK || strlen($v_buffer) == 0) { - $end_blocks++; - // do not copy end blocks, we will re-make them - // after appending - continue; - } elseif ($end_blocks > 0) { - for ($i = 0; $i < $end_blocks; $i++) { - $this->_writeBlock(ARCHIVE_TAR_END_BLOCK); - } - $end_blocks = 0; - } - $v_binary_data = pack("a512", $v_buffer); - $this->_writeBlock($v_binary_data); - } - - @bzclose($v_temp_tar); - } - - if (!@unlink($this->_tarname.".tmp")) { - $this->_error('Error while deleting temporary file \'' - .$this->_tarname.'.tmp\''); - } - - } else { - // ----- For not compressed tar, just add files before the last - // one or two 512 bytes block - if (!$this->_openReadWrite()) - return false; - - clearstatcache(); - $v_size = filesize($this->_tarname); - - // We might have zero, one or two end blocks. - // The standard is two, but we should try to handle - // other cases. - fseek($this->_file, $v_size - 1024); - if (fread($this->_file, 512) == ARCHIVE_TAR_END_BLOCK) { - fseek($this->_file, $v_size - 1024); - } - elseif (fread($this->_file, 512) == ARCHIVE_TAR_END_BLOCK) { - fseek($this->_file, $v_size - 512); - } - } - - return true; - } - // }}} - - // {{{ _append() - function _append($p_filelist, $p_add_dir='', $p_remove_dir='') - { - if (!$this->_openAppend()) - return false; - - if ($this->_addList($p_filelist, $p_add_dir, $p_remove_dir)) - $this->_writeFooter(); - - $this->_close(); - - return true; - } - // }}} - - // {{{ _dirCheck() - - /** - * Check if a directory exists and create it (including parent - * dirs) if not. - * - * @param string $p_dir directory to check - * - * @return bool true if the directory exists or was created - */ - function _dirCheck($p_dir) - { - clearstatcache(); - if ((@is_dir($p_dir)) || ($p_dir == '')) - return true; - - $p_parent_dir = dirname($p_dir); - - if (($p_parent_dir != $p_dir) && - ($p_parent_dir != '') && - (!$this->_dirCheck($p_parent_dir))) - return false; - - if (!@mkdir($p_dir, 0777)) { - $this->_error("Unable to create directory '$p_dir'"); - return false; - } - - return true; - } - - // }}} - - // {{{ _pathReduction() - - /** - * Compress path by changing for example "/dir/foo/../bar" to "/dir/bar", - * rand emove double slashes. - * - * @param string $p_dir path to reduce - * - * @return string reduced path - * - * @access private - * - */ - function _pathReduction($p_dir) - { - $v_result = ''; - - // ----- Look for not empty path - if ($p_dir != '') { - // ----- Explode path by directory names - $v_list = explode('/', $p_dir); - - // ----- Study directories from last to first - for ($i=sizeof($v_list)-1; $i>=0; $i--) { - // ----- Look for current path - if ($v_list[$i] == ".") { - // ----- Ignore this directory - // Should be the first $i=0, but no check is done - } - else if ($v_list[$i] == "..") { - // ----- Ignore it and ignore the $i-1 - $i--; - } - else if ( ($v_list[$i] == '') - && ($i!=(sizeof($v_list)-1)) - && ($i!=0)) { - // ----- Ignore only the double '//' in path, - // but not the first and last / - } else { - $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?'/' - .$v_result:''); - } - } - } - - if (defined('OS_WINDOWS') && OS_WINDOWS) { - $v_result = strtr($v_result, '\\', '/'); - } - - return $v_result; - } - - // }}} - - // {{{ _translateWinPath() - function _translateWinPath($p_path, $p_remove_disk_letter=true) - { - if (defined('OS_WINDOWS') && OS_WINDOWS) { - // ----- Look for potential disk letter - if ( ($p_remove_disk_letter) - && (($v_position = strpos($p_path, ':')) != false)) { - $p_path = substr($p_path, $v_position+1); - } - // ----- Change potential windows directory separator - if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { - $p_path = strtr($p_path, '\\', '/'); - } - } - return $p_path; - } - // }}} - -} -?> diff --git a/3rdparty/Console/Getopt.php b/3rdparty/Console/Getopt.php deleted file mode 100644 index aec980b34d571e1ff1a28a6ce7b0aabefb42e1a1..0000000000000000000000000000000000000000 --- a/3rdparty/Console/Getopt.php +++ /dev/null @@ -1,251 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Getopt.php,v 1.21.4.7 2003/12/05 21:57:01 andrei Exp $ - -require_once( 'PEAR.php'); - -/** - * Command-line options parsing class. - * - * @author Andrei Zmievski - * - */ -class Console_Getopt { - /** - * Parses the command-line options. - * - * The first parameter to this function should be the list of command-line - * arguments without the leading reference to the running program. - * - * The second parameter is a string of allowed short options. Each of the - * option letters can be followed by a colon ':' to specify that the option - * requires an argument, or a double colon '::' to specify that the option - * takes an optional argument. - * - * The third argument is an optional array of allowed long options. The - * leading '--' should not be included in the option name. Options that - * require an argument should be followed by '=', and options that take an - * option argument should be followed by '=='. - * - * The return value is an array of two elements: the list of parsed - * options and the list of non-option command-line arguments. Each entry in - * the list of parsed options is a pair of elements - the first one - * specifies the option, and the second one specifies the option argument, - * if there was one. - * - * Long and short options can be mixed. - * - * Most of the semantics of this function are based on GNU getopt_long(). - * - * @param array $args an array of command-line arguments - * @param string $short_options specifies the list of allowed short options - * @param array $long_options specifies the list of allowed long options - * - * @return array two-element array containing the list of parsed options and - * the non-option arguments - * - * @access public - * - */ - function getopt2($args, $short_options, $long_options = null) - { - return Console_Getopt::doGetopt(2, $args, $short_options, $long_options); - } - - /** - * This function expects $args to start with the script name (POSIX-style). - * Preserved for backwards compatibility. - * @see getopt2() - */ - function getopt($args, $short_options, $long_options = null) - { - return Console_Getopt::doGetopt(1, $args, $short_options, $long_options); - } - - /** - * The actual implementation of the argument parsing code. - */ - function doGetopt($version, $args, $short_options, $long_options = null) - { - // in case you pass directly readPHPArgv() as the first arg - if (PEAR::isError($args)) { - return $args; - } - if (empty($args)) { - return array(array(), array()); - } - $opts = array(); - $non_opts = array(); - - settype($args, 'array'); - - if ($long_options) { - sort($long_options); - } - - /* - * Preserve backwards compatibility with callers that relied on - * erroneous POSIX fix. - */ - if ($version < 2) { - if (isset($args[0]{0}) && $args[0]{0} != '-') { - array_shift($args); - } - } - - reset($args); - while (list($i, $arg) = each($args)) { - - /* The special element '--' means explicit end of - options. Treat the rest of the arguments as non-options - and end the loop. */ - if ($arg == '--') { - $non_opts = array_merge($non_opts, array_slice($args, $i + 1)); - break; - } - - if ($arg{0} != '-' || (strlen($arg) > 1 && $arg{1} == '-' && !$long_options)) { - $non_opts = array_merge($non_opts, array_slice($args, $i)); - break; - } elseif (strlen($arg) > 1 && $arg{1} == '-') { - $error = Console_Getopt::_parseLongOption(substr($arg, 2), $long_options, $opts, $args); - if (PEAR::isError($error)) - return $error; - } else { - $error = Console_Getopt::_parseShortOption(substr($arg, 1), $short_options, $opts, $args); - if (PEAR::isError($error)) - return $error; - } - } - - return array($opts, $non_opts); - } - - /** - * @access private - * - */ - function _parseShortOption($arg, $short_options, &$opts, &$args) - { - for ($i = 0; $i < strlen($arg); $i++) { - $opt = $arg{$i}; - $opt_arg = null; - - /* Try to find the short option in the specifier string. */ - if (($spec = strstr($short_options, $opt)) === false || $arg{$i} == ':') - { - return PEAR::raiseError("Console_Getopt: unrecognized option -- $opt"); - } - - if (strlen($spec) > 1 && $spec{1} == ':') { - if (strlen($spec) > 2 && $spec{2} == ':') { - if ($i + 1 < strlen($arg)) { - /* Option takes an optional argument. Use the remainder of - the arg string if there is anything left. */ - $opts[] = array($opt, substr($arg, $i + 1)); - break; - } - } else { - /* Option requires an argument. Use the remainder of the arg - string if there is anything left. */ - if ($i + 1 < strlen($arg)) { - $opts[] = array($opt, substr($arg, $i + 1)); - break; - } else if (list(, $opt_arg) = each($args)) - /* Else use the next argument. */; - else - return PEAR::raiseError("Console_Getopt: option requires an argument -- $opt"); - } - } - - $opts[] = array($opt, $opt_arg); - } - } - - /** - * @access private - * - */ - function _parseLongOption($arg, $long_options, &$opts, &$args) - { - @list($opt, $opt_arg) = explode('=', $arg); - $opt_len = strlen($opt); - - for ($i = 0; $i < count($long_options); $i++) { - $long_opt = $long_options[$i]; - $opt_start = substr($long_opt, 0, $opt_len); - - /* Option doesn't match. Go on to the next one. */ - if ($opt_start != $opt) - continue; - - $opt_rest = substr($long_opt, $opt_len); - - /* Check that the options uniquely matches one of the allowed - options. */ - if ($opt_rest != '' && $opt{0} != '=' && - $i + 1 < count($long_options) && - $opt == substr($long_options[$i+1], 0, $opt_len)) { - return PEAR::raiseError("Console_Getopt: option --$opt is ambiguous"); - } - - if (substr($long_opt, -1) == '=') { - if (substr($long_opt, -2) != '==') { - /* Long option requires an argument. - Take the next argument if one wasn't specified. */; - if (!strlen($opt_arg) && !(list(, $opt_arg) = each($args))) { - return PEAR::raiseError("Console_Getopt: option --$opt requires an argument"); - } - } - } else if ($opt_arg) { - return PEAR::raiseError("Console_Getopt: option --$opt doesn't allow an argument"); - } - - $opts[] = array('--' . $opt, $opt_arg); - return; - } - - return PEAR::raiseError("Console_Getopt: unrecognized option --$opt"); - } - - /** - * Safely read the $argv PHP array across different PHP configurations. - * Will take care on register_globals and register_argc_argv ini directives - * - * @access public - * @return mixed the $argv PHP array or PEAR error if not registered - */ - function readPHPArgv() - { - global $argv; - if (!is_array($argv)) { - if (!@is_array($_SERVER['argv'])) { - if (!@is_array($GLOBALS['HTTP_SERVER_VARS']['argv'])) { - return PEAR::raiseError("Console_Getopt: Could not read cmd args (register_argc_argv=Off?)"); - } - return $GLOBALS['HTTP_SERVER_VARS']['argv']; - } - return $_SERVER['argv']; - } - return $argv; - } - -} - -?> diff --git a/3rdparty/Crypt_Blowfish/Blowfish.php b/3rdparty/Crypt_Blowfish/Blowfish.php deleted file mode 100644 index 4ccacb963e3c535182eba8f5f74470c86abdfc6d..0000000000000000000000000000000000000000 --- a/3rdparty/Crypt_Blowfish/Blowfish.php +++ /dev/null @@ -1,317 +0,0 @@ - - * @copyright 2005 Matthew Fonda - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Blowfish.php,v 1.81 2005/05/30 18:40:36 mfonda Exp $ - * @link http://pear.php.net/package/Crypt_Blowfish - */ - - -require_once 'PEAR.php'; - - -/** - * - * Example usage: - * $bf = new Crypt_Blowfish('some secret key!'); - * $encrypted = $bf->encrypt('this is some example plain text'); - * $plaintext = $bf->decrypt($encrypted); - * echo "plain text: $plaintext"; - * - * - * @category Encryption - * @package Crypt_Blowfish - * @author Matthew Fonda - * @copyright 2005 Matthew Fonda - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @link http://pear.php.net/package/Crypt_Blowfish - * @version @package_version@ - * @access public - */ -class Crypt_Blowfish -{ - /** - * P-Array contains 18 32-bit subkeys - * - * @var array - * @access private - */ - var $_P = array(); - - - /** - * Array of four S-Blocks each containing 256 32-bit entries - * - * @var array - * @access private - */ - var $_S = array(); - - /** - * Mcrypt td resource - * - * @var resource - * @access private - */ - var $_td = null; - - /** - * Initialization vector - * - * @var string - * @access private - */ - var $_iv = null; - - - /** - * Crypt_Blowfish Constructor - * Initializes the Crypt_Blowfish object, and gives a sets - * the secret key - * - * @param string $key - * @access public - */ - function Crypt_Blowfish($key) - { - if (extension_loaded('mcrypt')) { - $this->_td = mcrypt_module_open(MCRYPT_BLOWFISH, '', 'ecb', ''); - $this->_iv = mcrypt_create_iv(8, MCRYPT_RAND); - } - $this->setKey($key); - } - - /** - * Deprecated isReady method - * - * @return bool - * @access public - * @deprecated - */ - function isReady() - { - return true; - } - - /** - * Deprecated init method - init is now a private - * method and has been replaced with _init - * - * @return bool - * @access public - * @deprecated - * @see Crypt_Blowfish::_init() - */ - function init() - { - $this->_init(); - } - - /** - * Initializes the Crypt_Blowfish object - * - * @access private - */ - function _init() - { - $defaults = new Crypt_Blowfish_DefaultKey(); - $this->_P = $defaults->P; - $this->_S = $defaults->S; - } - - /** - * Enciphers a single 64 bit block - * - * @param int &$Xl - * @param int &$Xr - * @access private - */ - function _encipher(&$Xl, &$Xr) - { - for ($i = 0; $i < 16; $i++) { - $temp = $Xl ^ $this->_P[$i]; - $Xl = ((($this->_S[0][($temp>>24) & 255] + - $this->_S[1][($temp>>16) & 255]) ^ - $this->_S[2][($temp>>8) & 255]) + - $this->_S[3][$temp & 255]) ^ $Xr; - $Xr = $temp; - } - $Xr = $Xl ^ $this->_P[16]; - $Xl = $temp ^ $this->_P[17]; - } - - - /** - * Deciphers a single 64 bit block - * - * @param int &$Xl - * @param int &$Xr - * @access private - */ - function _decipher(&$Xl, &$Xr) - { - for ($i = 17; $i > 1; $i--) { - $temp = $Xl ^ $this->_P[$i]; - $Xl = ((($this->_S[0][($temp>>24) & 255] + - $this->_S[1][($temp>>16) & 255]) ^ - $this->_S[2][($temp>>8) & 255]) + - $this->_S[3][$temp & 255]) ^ $Xr; - $Xr = $temp; - } - $Xr = $Xl ^ $this->_P[1]; - $Xl = $temp ^ $this->_P[0]; - } - - - /** - * Encrypts a string - * - * @param string $plainText - * @return string Returns cipher text on success, PEAR_Error on failure - * @access public - */ - function encrypt($plainText) - { - if (!is_string($plainText)) { - PEAR::raiseError('Plain text must be a string', 0, PEAR_ERROR_DIE); - } - - if (extension_loaded('mcrypt')) { - return mcrypt_generic($this->_td, $plainText); - } - - $cipherText = ''; - $len = strlen($plainText); - $plainText .= str_repeat(chr(0),(8 - ($len%8))%8); - for ($i = 0; $i < $len; $i += 8) { - list(,$Xl,$Xr) = unpack("N2",substr($plainText,$i,8)); - $this->_encipher($Xl, $Xr); - $cipherText .= pack("N2", $Xl, $Xr); - } - return $cipherText; - } - - - /** - * Decrypts an encrypted string - * - * @param string $cipherText - * @return string Returns plain text on success, PEAR_Error on failure - * @access public - */ - function decrypt($cipherText) - { - if (!is_string($cipherText)) { - PEAR::raiseError('Cipher text must be a string', 1, PEAR_ERROR_DIE); - } - - if (extension_loaded('mcrypt')) { - return mdecrypt_generic($this->_td, $cipherText); - } - - $plainText = ''; - $len = strlen($cipherText); - $cipherText .= str_repeat(chr(0),(8 - ($len%8))%8); - for ($i = 0; $i < $len; $i += 8) { - list(,$Xl,$Xr) = unpack("N2",substr($cipherText,$i,8)); - $this->_decipher($Xl, $Xr); - $plainText .= pack("N2", $Xl, $Xr); - } - return $plainText; - } - - - /** - * Sets the secret key - * The key must be non-zero, and less than or equal to - * 56 characters in length. - * - * @param string $key - * @return bool Returns true on success, PEAR_Error on failure - * @access public - */ - function setKey($key) - { - if (!is_string($key)) { - PEAR::raiseError('Key must be a string', 2, PEAR_ERROR_DIE); - } - - $len = strlen($key); - - if ($len > 56 || $len == 0) { - PEAR::raiseError('Key must be less than 56 characters and non-zero. Supplied key length: ' . $len, 3, PEAR_ERROR_DIE); - } - - if (extension_loaded('mcrypt')) { - mcrypt_generic_init($this->_td, $key, $this->_iv); - return true; - } - - require_once 'Blowfish/DefaultKey.php'; - $this->_init(); - - $k = 0; - $data = 0; - $datal = 0; - $datar = 0; - - for ($i = 0; $i < 18; $i++) { - $data = 0; - for ($j = 4; $j > 0; $j--) { - $data = $data << 8 | ord($key{$k}); - $k = ($k+1) % $len; - } - $this->_P[$i] ^= $data; - } - - for ($i = 0; $i <= 16; $i += 2) { - $this->_encipher($datal, $datar); - $this->_P[$i] = $datal; - $this->_P[$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[0][$i] = $datal; - $this->_S[0][$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[1][$i] = $datal; - $this->_S[1][$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[2][$i] = $datal; - $this->_S[2][$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[3][$i] = $datal; - $this->_S[3][$i+1] = $datar; - } - - return true; - } - -} - -?> diff --git a/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php b/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php deleted file mode 100644 index 2ff8ac788a6b62a4abde68d476c673612b8bfe01..0000000000000000000000000000000000000000 --- a/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php +++ /dev/null @@ -1,327 +0,0 @@ - - * @copyright 2005 Matthew Fonda - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: DefaultKey.php,v 1.81 2005/05/30 18:40:37 mfonda Exp $ - * @link http://pear.php.net/package/Crypt_Blowfish - */ - - -/** - * Class containing default key - * - * @category Encryption - * @package Crypt_Blowfish - * @author Matthew Fonda - * @copyright 2005 Matthew Fonda - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @link http://pear.php.net/package/Crypt_Blowfish - * @version @package_version@ - * @access public - */ -class Crypt_Blowfish_DefaultKey -{ - var $P = array(); - - var $S = array(); - - function Crypt_Blowfish_DefaultKey() - { - $this->P = array( - 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, - 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, - 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, - 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, - 0x9216D5D9, 0x8979FB1B - ); - - $this->S = array( - array( - 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, - 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, - 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, - 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, - 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, - 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, - 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, - 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, - 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, - 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, - 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, - 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, - 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, - 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, - 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, - 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, - 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, - 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, - 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, - 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, - 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, - 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, - 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, - 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, - 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, - 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, - 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, - 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, - 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, - 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, - 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, - 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, - 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, - 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, - 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, - 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, - 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, - 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, - 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, - 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, - 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, - 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, - 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, - 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, - 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, - 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, - 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, - 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, - 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, - 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, - 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, - 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, - 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, - 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, - 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, - 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, - 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, - 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, - 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, - 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, - 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, - 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, - 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, - 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A - ), - array( - 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, - 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, - 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, - 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, - 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, - 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, - 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, - 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, - 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, - 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, - 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, - 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, - 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, - 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, - 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, - 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, - 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, - 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, - 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, - 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, - 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, - 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, - 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, - 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, - 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, - 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, - 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, - 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, - 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, - 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, - 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, - 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, - 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, - 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, - 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, - 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, - 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, - 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, - 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, - 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, - 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, - 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, - 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, - 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, - 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, - 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, - 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, - 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, - 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, - 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, - 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, - 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, - 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, - 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, - 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, - 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, - 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, - 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, - 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, - 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, - 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, - 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, - 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, - 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 - ), - array( - 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, - 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, - 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, - 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, - 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, - 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, - 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, - 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, - 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, - 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, - 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, - 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, - 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, - 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, - 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, - 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, - 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, - 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, - 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, - 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, - 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, - 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, - 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, - 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, - 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, - 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, - 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, - 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, - 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, - 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, - 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, - 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, - 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, - 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, - 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, - 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, - 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, - 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, - 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, - 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, - 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, - 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, - 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, - 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, - 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, - 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, - 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, - 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, - 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, - 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, - 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, - 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, - 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, - 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, - 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, - 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, - 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, - 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, - 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, - 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, - 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, - 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, - 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, - 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 - ), - array( - 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, - 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, - 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, - 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, - 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, - 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, - 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, - 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, - 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, - 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, - 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, - 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, - 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, - 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, - 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, - 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, - 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, - 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, - 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, - 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, - 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, - 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, - 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, - 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, - 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, - 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, - 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, - 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, - 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, - 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, - 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, - 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, - 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, - 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, - 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, - 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, - 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, - 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, - 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, - 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, - 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, - 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, - 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, - 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, - 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, - 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, - 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, - 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, - 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, - 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, - 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, - 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, - 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, - 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, - 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, - 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, - 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, - 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, - 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, - 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, - 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, - 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, - 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, - 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 - ) - ); - } - -} - -?> diff --git a/3rdparty/Dropbox/API.php b/3rdparty/Dropbox/API.php deleted file mode 100644 index 8cdce678e1c8101d756cd72d36f4d9fbb49c18df..0000000000000000000000000000000000000000 --- a/3rdparty/Dropbox/API.php +++ /dev/null @@ -1,380 +0,0 @@ -oauth = $oauth; - $this->root = $root; - $this->useSSL = $useSSL; - if (!$this->useSSL) - { - throw new Dropbox_Exception('Dropbox REST API now requires that all requests use SSL'); - } - - } - - /** - * Returns information about the current dropbox account - * - * @return stdclass - */ - public function getAccountInfo() { - - $data = $this->oauth->fetch($this->api_url . 'account/info'); - return json_decode($data['body'],true); - - } - - /** - * Returns a file's contents - * - * @param string $path path - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return string - */ - public function getFile($path = '', $root = null) { - - if (is_null($root)) $root = $this->root; - $path = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($path)); - $result = $this->oauth->fetch($this->api_content_url . 'files/' . $root . '/' . ltrim($path,'/')); - return $result['body']; - - } - - /** - * Uploads a new file - * - * @param string $path Target path (including filename) - * @param string $file Either a path to a file or a stream resource - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return bool - */ - public function putFile($path, $file, $root = null) { - - $directory = dirname($path); - $filename = basename($path); - - if($directory==='.') $directory = ''; - $directory = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($directory)); -// $filename = str_replace('~', '%7E', rawurlencode($filename)); - if (is_null($root)) $root = $this->root; - - if (is_string($file)) { - - $file = fopen($file,'rb'); - - } elseif (!is_resource($file)) { - throw new Dropbox_Exception('File must be a file-resource or a string'); - } - $result=$this->multipartFetch($this->api_content_url . 'files/' . - $root . '/' . trim($directory,'/'), $file, $filename); - - if(!isset($result["httpStatus"]) || $result["httpStatus"] != 200) - throw new Dropbox_Exception("Uploading file to Dropbox failed"); - - return true; - } - - - /** - * Copies a file or directory from one location to another - * - * This method returns the file information of the newly created file. - * - * @param string $from source path - * @param string $to destination path - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return stdclass - */ - public function copy($from, $to, $root = null) { - - if (is_null($root)) $root = $this->root; - $response = $this->oauth->fetch($this->api_url . 'fileops/copy', array('from_path' => $from, 'to_path' => $to, 'root' => $root), 'POST'); - - return json_decode($response['body'],true); - - } - - /** - * Creates a new folder - * - * This method returns the information from the newly created directory - * - * @param string $path - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return stdclass - */ - public function createFolder($path, $root = null) { - - if (is_null($root)) $root = $this->root; - - // Making sure the path starts with a / -// $path = '/' . ltrim($path,'/'); - - $response = $this->oauth->fetch($this->api_url . 'fileops/create_folder', array('path' => $path, 'root' => $root),'POST'); - return json_decode($response['body'],true); - - } - - /** - * Deletes a file or folder. - * - * This method will return the metadata information from the deleted file or folder, if successful. - * - * @param string $path Path to new folder - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return array - */ - public function delete($path, $root = null) { - - if (is_null($root)) $root = $this->root; - $response = $this->oauth->fetch($this->api_url . 'fileops/delete', array('path' => $path, 'root' => $root), 'POST'); - return json_decode($response['body']); - - } - - /** - * Moves a file or directory to a new location - * - * This method returns the information from the newly created directory - * - * @param mixed $from Source path - * @param mixed $to destination path - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return stdclass - */ - public function move($from, $to, $root = null) { - - if (is_null($root)) $root = $this->root; - $response = $this->oauth->fetch($this->api_url . 'fileops/move', array('from_path' => rawurldecode($from), 'to_path' => rawurldecode($to), 'root' => $root), 'POST'); - - return json_decode($response['body'],true); - - } - - /** - * Returns file and directory information - * - * @param string $path Path to receive information from - * @param bool $list When set to true, this method returns information from all files in a directory. When set to false it will only return infromation from the specified directory. - * @param string $hash If a hash is supplied, this method simply returns true if nothing has changed since the last request. Good for caching. - * @param int $fileLimit Maximum number of file-information to receive - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return array|true - */ - public function getMetaData($path, $list = true, $hash = null, $fileLimit = null, $root = null) { - - if (is_null($root)) $root = $this->root; - - $args = array( - 'list' => $list, - ); - - if (!is_null($hash)) $args['hash'] = $hash; - if (!is_null($fileLimit)) $args['file_limit'] = $fileLimit; - - $path = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($path)); - $response = $this->oauth->fetch($this->api_url . 'metadata/' . $root . '/' . ltrim($path,'/'), $args); - - /* 304 is not modified */ - if ($response['httpStatus']==304) { - return true; - } else { - return json_decode($response['body'],true); - } - - } - - /** - * A way of letting you keep up with changes to files and folders in a user's Dropbox. You can periodically call /delta to get a list of "delta entries", which are instructions on how to update your local state to match the server's state. - * - * This method returns the information from the newly created directory - * - * @param string $cursor A string that is used to keep track of your current state. On the next call pass in this value to return delta entries that have been recorded since the cursor was returned. - * @return stdclass - */ - public function delta($cursor) { - - $arg['cursor'] = $cursor; - - $response = $this->oauth->fetch($this->api_url . 'delta', $arg, 'POST'); - return json_decode($response['body'],true); - - } - - /** - * Returns a thumbnail (as a string) for a file path. - * - * @param string $path Path to file - * @param string $size small, medium or large - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @return string - */ - public function getThumbnail($path, $size = 'small', $root = null) { - - if (is_null($root)) $root = $this->root; - $path = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($path)); - $response = $this->oauth->fetch($this->api_content_url . 'thumbnails/' . $root . '/' . ltrim($path,'/'),array('size' => $size)); - - return $response['body']; - - } - - /** - * This method is used to generate multipart POST requests for file upload - * - * @param string $uri - * @param array $arguments - * @return bool - */ - protected function multipartFetch($uri, $file, $filename) { - - /* random string */ - $boundary = 'R50hrfBj5JYyfR3vF3wR96GPCC9Fd2q2pVMERvEaOE3D8LZTgLLbRpNwXek3'; - - $headers = array( - 'Content-Type' => 'multipart/form-data; boundary=' . $boundary, - ); - - $body="--" . $boundary . "\r\n"; - $body.="Content-Disposition: form-data; name=file; filename=".rawurldecode($filename)."\r\n"; - $body.="Content-type: application/octet-stream\r\n"; - $body.="\r\n"; - $body.=stream_get_contents($file); - $body.="\r\n"; - $body.="--" . $boundary . "--"; - - // Dropbox requires the filename to also be part of the regular arguments, so it becomes - // part of the signature. - $uri.='?file=' . $filename; - - return $this->oauth->fetch($uri, $body, 'POST', $headers); - - } - - - /** - * Search - * - * Returns metadata for all files and folders that match the search query. - * - * @added by: diszo.sasil - * - * @param string $query - * @param string $root Use this to override the default root path (sandbox/dropbox) - * @param string $path - * @return array - */ - public function search($query = '', $root = null, $path = ''){ - if (is_null($root)) $root = $this->root; - if(!empty($path)){ - $path = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($path)); - } - $response = $this->oauth->fetch($this->api_url . 'search/' . $root . '/' . ltrim($path,'/'),array('query' => $query)); - return json_decode($response['body'],true); - } - - /** - * Creates and returns a shareable link to files or folders. - * - * Note: Links created by the /shares API call expire after thirty days. - * - * @param type $path - * @param type $root - * @return type - */ - public function share($path, $root = null) { - if (is_null($root)) $root = $this->root; - $path = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($path)); - $response = $this->oauth->fetch($this->api_url. 'shares/'. $root . '/' . ltrim($path, '/'), array(), 'POST'); - return json_decode($response['body'],true); - - } - - /** - * Returns a link directly to a file. - * Similar to /shares. The difference is that this bypasses the Dropbox webserver, used to provide a preview of the file, so that you can effectively stream the contents of your media. - * - * Note: The /media link expires after four hours, allotting enough time to stream files, but not enough to leave a connection open indefinitely. - * - * @param type $path - * @param type $root - * @return type - */ - public function media($path, $root = null) { - - if (is_null($root)) $root = $this->root; - $path = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($path)); - $response = $this->oauth->fetch($this->api_url. 'media/'. $root . '/' . ltrim($path, '/'), array(), 'POST'); - return json_decode($response['body'],true); - - } - - /** - * Creates and returns a copy_ref to a file. This reference string can be used to copy that file to another user's Dropbox by passing it in as the from_copy_ref parameter on /fileops/copy. - * - * @param type $path - * @param type $root - * @return type - */ - public function copy_ref($path, $root = null) { - - if (is_null($root)) $root = $this->root; - $path = str_replace(array('%2F','~'), array('/','%7E'), rawurlencode($path)); - $response = $this->oauth->fetch($this->api_url. 'copy_ref/'. $root . '/' . ltrim($path, '/')); - return json_decode($response['body'],true); - - } - - -} diff --git a/3rdparty/Dropbox/Exception.php b/3rdparty/Dropbox/Exception.php deleted file mode 100644 index 50cbc4c79150e821841cae2cb7383a63d88b2e3b..0000000000000000000000000000000000000000 --- a/3rdparty/Dropbox/Exception.php +++ /dev/null @@ -1,15 +0,0 @@ -oauth_token = $token['token']; - $this->oauth_token_secret = $token['token_secret']; - } else { - $this->oauth_token = $token; - $this->oauth_token_secret = $token_secret; - } - - } - - /** - * Returns the oauth request tokens as an associative array. - * - * The array will contain the elements 'token' and 'token_secret'. - * - * @return array - */ - public function getToken() { - - return array( - 'token' => $this->oauth_token, - 'token_secret' => $this->oauth_token_secret, - ); - - } - - /** - * Returns the authorization url - * - * @param string $callBack Specify a callback url to automatically redirect the user back - * @return string - */ - public function getAuthorizeUrl($callBack = null) { - - // Building the redirect uri - $token = $this->getToken(); - $uri = self::URI_AUTHORIZE . '?oauth_token=' . $token['token']; - if ($callBack) $uri.='&oauth_callback=' . $callBack; - return $uri; - } - - /** - * Fetches a secured oauth url and returns the response body. - * - * @param string $uri - * @param mixed $arguments - * @param string $method - * @param array $httpHeaders - * @return string - */ - public abstract function fetch($uri, $arguments = array(), $method = 'GET', $httpHeaders = array()); - - /** - * Requests the OAuth request token. - * - * @return array - */ - abstract public function getRequestToken(); - - /** - * Requests the OAuth access tokens. - * - * @return array - */ - abstract public function getAccessToken(); - -} diff --git a/3rdparty/Dropbox/OAuth/Consumer/Dropbox.php b/3rdparty/Dropbox/OAuth/Consumer/Dropbox.php deleted file mode 100644 index 204a659de00653ec702cb27fedd7ade19653ddcd..0000000000000000000000000000000000000000 --- a/3rdparty/Dropbox/OAuth/Consumer/Dropbox.php +++ /dev/null @@ -1,37 +0,0 @@ -consumerRequest instanceof HTTP_OAuth_Consumer_Request) { - $this->consumerRequest = new HTTP_OAuth_Consumer_Request; - } - - // TODO: Change this and add in code to validate the SSL cert. - // see https://github.com/bagder/curl/blob/master/lib/mk-ca-bundle.pl - $this->consumerRequest->setConfig(array( - 'ssl_verify_peer' => false, - 'ssl_verify_host' => false - )); - - return $this->consumerRequest; - } -} diff --git a/3rdparty/Dropbox/OAuth/Curl.php b/3rdparty/Dropbox/OAuth/Curl.php deleted file mode 100644 index b75b27bb3637363910676c04fc1fcd8886b3d7cf..0000000000000000000000000000000000000000 --- a/3rdparty/Dropbox/OAuth/Curl.php +++ /dev/null @@ -1,282 +0,0 @@ -consumerKey = $consumerKey; - $this->consumerSecret = $consumerSecret; - } - - /** - * Fetches a secured oauth url and returns the response body. - * - * @param string $uri - * @param mixed $arguments - * @param string $method - * @param array $httpHeaders - * @return string - */ - public function fetch($uri, $arguments = array(), $method = 'GET', $httpHeaders = array()) { - - $uri=str_replace('http://', 'https://', $uri); // all https, upload makes problems if not - if (is_string($arguments) and strtoupper($method) == 'POST') { - preg_match("/\?file=(.*)$/i", $uri, $matches); - if (isset($matches[1])) { - $uri = str_replace($matches[0], "", $uri); - $filename = $matches[1]; - $httpHeaders=array_merge($httpHeaders,$this->getOAuthHeader($uri, array("file" => $filename), $method)); - } - } else { - $httpHeaders=array_merge($httpHeaders,$this->getOAuthHeader($uri, $arguments, $method)); - } - $ch = curl_init(); - if (strtoupper($method) == 'POST') { - curl_setopt($ch, CURLOPT_URL, $uri); - curl_setopt($ch, CURLOPT_POST, true); -// if (is_array($arguments)) -// $arguments=http_build_query($arguments); - curl_setopt($ch, CURLOPT_POSTFIELDS, $arguments); -// $httpHeaders['Content-Length']=strlen($arguments); - } else { - curl_setopt($ch, CURLOPT_URL, $uri.'?'.http_build_query($arguments)); - curl_setopt($ch, CURLOPT_POST, false); - } - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 300); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); -// curl_setopt($ch, CURLOPT_CAINFO, "rootca"); - curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); - //Build header - $headers = array(); - foreach ($httpHeaders as $name => $value) { - $headers[] = "{$name}: $value"; - } - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - if (!ini_get('safe_mode') && !ini_get('open_basedir')) - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true ); - if (function_exists($this->ProgressFunction) and defined('CURLOPT_PROGRESSFUNCTION')) { - curl_setopt($ch, CURLOPT_NOPROGRESS, false); - curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, $this->ProgressFunction); - curl_setopt($ch, CURLOPT_BUFFERSIZE, 512); - } - $response=curl_exec($ch); - $errorno=curl_errno($ch); - $error=curl_error($ch); - $status=curl_getinfo($ch,CURLINFO_HTTP_CODE); - curl_close($ch); - - - if (!empty($errorno)) - throw new Dropbox_Exception_NotFound('Curl error: ('.$errorno.') '.$error."\n"); - - if ($status>=300) { - $body = json_decode($response,true); - switch ($status) { - // Not modified - case 304 : - return array( - 'httpStatus' => 304, - 'body' => null, - ); - break; - case 403 : - throw new Dropbox_Exception_Forbidden('Forbidden. - This could mean a bad OAuth request, or a file or folder already existing at the target location. - ' . $body["error"] . "\n"); - case 404 : - throw new Dropbox_Exception_NotFound('Resource at uri: ' . $uri . ' could not be found. ' . - $body["error"] . "\n"); - case 507 : - throw new Dropbox_Exception_OverQuota('This dropbox is full. ' . - $body["error"] . "\n"); - } - if (!empty($body["error"])) - throw new Dropbox_Exception_RequestToken('Error: ('.$status.') '.$body["error"]."\n"); - } - - return array( - 'body' => $response, - 'httpStatus' => $status - ); - } - - /** - * Returns named array with oauth parameters for further use - * @return array Array with oauth_ parameters - */ - private function getOAuthBaseParams() { - $params['oauth_version'] = '1.0'; - $params['oauth_signature_method'] = 'HMAC-SHA1'; - - $params['oauth_consumer_key'] = $this->consumerKey; - $tokens = $this->getToken(); - if (isset($tokens['token']) && $tokens['token']) { - $params['oauth_token'] = $tokens['token']; - } - $params['oauth_timestamp'] = time(); - $params['oauth_nonce'] = md5(microtime() . mt_rand()); - return $params; - } - - /** - * Creates valid Authorization header for OAuth, based on URI and Params - * - * @param string $uri - * @param array $params - * @param string $method GET or POST, standard is GET - * @param array $oAuthParams optional, pass your own oauth_params here - * @return array Array for request's headers section like - * array('Authorization' => 'OAuth ...'); - */ - private function getOAuthHeader($uri, $params, $method = 'GET', $oAuthParams = null) { - $oAuthParams = $oAuthParams ? $oAuthParams : $this->getOAuthBaseParams(); - - // create baseString to encode for the sent parameters - $baseString = $method . '&'; - $baseString .= $this->oauth_urlencode($uri) . "&"; - - // OAuth header does not include GET-Parameters - $signatureParams = array_merge($params, $oAuthParams); - - // sorting the parameters - ksort($signatureParams); - - $encodedParams = array(); - foreach ($signatureParams as $key => $value) { - $encodedParams[] = $this->oauth_urlencode($key) . '=' . $this->oauth_urlencode($value); - } - - $baseString .= $this->oauth_urlencode(implode('&', $encodedParams)); - - // encode the signature - $tokens = $this->getToken(); - $hash = $this->hash_hmac_sha1($this->consumerSecret.'&'.$tokens['token_secret'], $baseString); - $signature = base64_encode($hash); - - // add signature to oAuthParams - $oAuthParams['oauth_signature'] = $signature; - - $oAuthEncoded = array(); - foreach ($oAuthParams as $key => $value) { - $oAuthEncoded[] = $key . '="' . $this->oauth_urlencode($value) . '"'; - } - - return array('Authorization' => 'OAuth ' . implode(', ', $oAuthEncoded)); - } - - /** - * Requests the OAuth request token. - * - * @return void - */ - public function getRequestToken() { - $result = $this->fetch(self::URI_REQUEST_TOKEN, array(), 'POST'); - if ($result['httpStatus'] == "200") { - $tokens = array(); - parse_str($result['body'], $tokens); - $this->setToken($tokens['oauth_token'], $tokens['oauth_token_secret']); - return $this->getToken(); - } else { - throw new Dropbox_Exception_RequestToken('We were unable to fetch request tokens. This likely means that your consumer key and/or secret are incorrect.'); - } - } - - /** - * Requests the OAuth access tokens. - * - * This method requires the 'unauthorized' request tokens - * and, if successful will set the authorized request tokens. - * - * @return void - */ - public function getAccessToken() { - $result = $this->fetch(self::URI_ACCESS_TOKEN, array(), 'POST'); - if ($result['httpStatus'] == "200") { - $tokens = array(); - parse_str($result['body'], $tokens); - $this->setToken($tokens['oauth_token'], $tokens['oauth_token_secret']); - return $this->getToken(); - } else { - throw new Dropbox_Exception_RequestToken('We were unable to fetch request tokens. This likely means that your consumer key and/or secret are incorrect.'); - } - } - - /** - * Helper function to properly urlencode parameters. - * See http://php.net/manual/en/function.oauth-urlencode.php - * - * @param string $string - * @return string - */ - private function oauth_urlencode($string) { - return str_replace('%E7', '~', rawurlencode($string)); - } - - /** - * Hash function for hmac_sha1; uses native function if available. - * - * @param string $key - * @param string $data - * @return string - */ - private function hash_hmac_sha1($key, $data) { - if (function_exists('hash_hmac') && in_array('sha1', hash_algos())) { - return hash_hmac('sha1', $data, $key, true); - } else { - $blocksize = 64; - $hashfunc = 'sha1'; - if (strlen($key) > $blocksize) { - $key = pack('H*', $hashfunc($key)); - } - - $key = str_pad($key, $blocksize, chr(0x00)); - $ipad = str_repeat(chr(0x36), $blocksize); - $opad = str_repeat(chr(0x5c), $blocksize); - $hash = pack('H*', $hashfunc(( $key ^ $opad ) . pack('H*', $hashfunc(($key ^ $ipad) . $data)))); - - return $hash; - } - } - - -} \ No newline at end of file diff --git a/3rdparty/Dropbox/README.md b/3rdparty/Dropbox/README.md deleted file mode 100644 index 54e05db762b723c0722edaa57c13080250cb290c..0000000000000000000000000000000000000000 --- a/3rdparty/Dropbox/README.md +++ /dev/null @@ -1,31 +0,0 @@ -Dropbox-php -=========== - -This PHP library allows you to easily integrate dropbox with PHP. - -The following PHP extension is required: - -* json - -The library makes use of OAuth. At the moment you can use either of these libraries: - -[PHP OAuth extension](http://pecl.php.net/package/oauth) -[PEAR's HTTP_OAUTH package](http://pear.php.net/package/http_oauth) - -The extension is recommended, but if you can't install php extensions you should go for the pear package. -Installing ----------- - - pear channel-discover pear.dropbox-php.com - pear install dropbox-php/Dropbox-alpha - -Documentation -------------- -Check out the [documentation](http://www.dropbox-php.com/docs). - -Questions? ----------- - -[Dropbox-php Mailing list](http://groups.google.com/group/dropbox-php) -[Official Dropbox developer forum](http://forums.dropbox.com/forum.php?id=5) - diff --git a/3rdparty/Dropbox/autoload.php b/3rdparty/Dropbox/autoload.php deleted file mode 100644 index 5388ea6334a23a3e318a0e967404cafdd8827f47..0000000000000000000000000000000000000000 --- a/3rdparty/Dropbox/autoload.php +++ /dev/null @@ -1,29 +0,0 @@ -key = $key; - $this->secret = $secret; - $this->callback_url = $callback_url; - }/*}}}*/ -}/*}}}*/ - -class OAuthToken {/*{{{*/ - // access tokens and request tokens - public $key; - public $secret; - - /** - * key = the token - * secret = the token secret - */ - function __construct($key, $secret) {/*{{{*/ - $this->key = $key; - $this->secret = $secret; - }/*}}}*/ - - /** - * generates the basic string serialization of a token that a server - * would respond to request_token and access_token calls with - */ - function to_string() {/*{{{*/ - return "oauth_token=" . OAuthUtil::urlencodeRFC3986($this->key) . - "&oauth_token_secret=" . OAuthUtil::urlencodeRFC3986($this->secret); - }/*}}}*/ - - function __toString() {/*{{{*/ - return $this->to_string(); - }/*}}}*/ -}/*}}}*/ - -class OAuthSignatureMethod {/*{{{*/ - public function check_signature(&$request, $consumer, $token, $signature) { - $built = $this->build_signature($request, $consumer, $token); - return $built == $signature; - } -}/*}}}*/ - -class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod {/*{{{*/ - function get_name() {/*{{{*/ - return "HMAC-SHA1"; - }/*}}}*/ - - public function build_signature($request, $consumer, $token, $privKey=NULL) {/*{{{*/ - $base_string = $request->get_signature_base_string(); - $request->base_string = $base_string; - - $key_parts = array( - $consumer->secret, - ($token) ? $token->secret : "" - ); - - $key_parts = array_map(array('OAuthUtil','urlencodeRFC3986'), $key_parts); - $key = implode('&', $key_parts); - - return base64_encode( hash_hmac('sha1', $base_string, $key, true)); - }/*}}}*/ -}/*}}}*/ - -class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod {/*{{{*/ - public function get_name() {/*{{{*/ - return "RSA-SHA1"; - }/*}}}*/ - - protected function fetch_public_cert(&$request) {/*{{{*/ - // not implemented yet, ideas are: - // (1) do a lookup in a table of trusted certs keyed off of consumer - // (2) fetch via http using a url provided by the requester - // (3) some sort of specific discovery code based on request - // - // either way should return a string representation of the certificate - throw Exception("fetch_public_cert not implemented"); - }/*}}}*/ - - protected function fetch_private_cert($privKey) {//&$request) {/*{{{*/ - // not implemented yet, ideas are: - // (1) do a lookup in a table of trusted certs keyed off of consumer - // - // either way should return a string representation of the certificate - throw Exception("fetch_private_cert not implemented"); - }/*}}}*/ - - public function build_signature(&$request, $consumer, $token, $privKey) {/*{{{*/ - $base_string = $request->get_signature_base_string(); - - // Fetch the private key cert based on the request - //$cert = $this->fetch_private_cert($consumer->privKey); - - //Pull the private key ID from the certificate - //$privatekeyid = openssl_get_privatekey($cert); - - // hacked in - if ($privKey == '') { - $fp = fopen($GLOBALS['PRIV_KEY_FILE'], "r"); - $privKey = fread($fp, 8192); - fclose($fp); - } - $privatekeyid = openssl_get_privatekey($privKey); - - //Check the computer signature against the one passed in the query - $ok = openssl_sign($base_string, $signature, $privatekeyid); - - //Release the key resource - openssl_free_key($privatekeyid); - - return base64_encode($signature); - } /*}}}*/ - - public function check_signature(&$request, $consumer, $token, $signature) {/*{{{*/ - $decoded_sig = base64_decode($signature); - - $base_string = $request->get_signature_base_string(); - - // Fetch the public key cert based on the request - $cert = $this->fetch_public_cert($request); - - //Pull the public key ID from the certificate - $publickeyid = openssl_get_publickey($cert); - - //Check the computer signature against the one passed in the query - $ok = openssl_verify($base_string, $decoded_sig, $publickeyid); - - //Release the key resource - openssl_free_key($publickeyid); - - return $ok == 1; - } /*}}}*/ -}/*}}}*/ - -class OAuthRequest {/*{{{*/ - private $parameters; - private $http_method; - private $http_url; - // for debug purposes - public $base_string; - public static $version = '1.0'; - - function __construct($http_method, $http_url, $parameters=NULL) {/*{{{*/ - @$parameters or $parameters = array(); - $this->parameters = $parameters; - $this->http_method = $http_method; - $this->http_url = $http_url; - }/*}}}*/ - - - /** - * attempt to build up a request from what was passed to the server - */ - public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {/*{{{*/ - $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https'; - @$http_url or $http_url = $scheme . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - @$http_method or $http_method = $_SERVER['REQUEST_METHOD']; - - $request_headers = OAuthRequest::get_headers(); - - // let the library user override things however they'd like, if they know - // which parameters to use then go for it, for example XMLRPC might want to - // do this - if ($parameters) { - $req = new OAuthRequest($http_method, $http_url, $parameters); - } - // next check for the auth header, we need to do some extra stuff - // if that is the case, namely suck in the parameters from GET or POST - // so that we can include them in the signature - else if (@substr($request_headers['Authorization'], 0, 5) == "OAuth") { - $header_parameters = OAuthRequest::split_header($request_headers['Authorization']); - if ($http_method == "GET") { - $req_parameters = $_GET; - } - else if ($http_method = "POST") { - $req_parameters = $_POST; - } - $parameters = array_merge($header_parameters, $req_parameters); - $req = new OAuthRequest($http_method, $http_url, $parameters); - } - else if ($http_method == "GET") { - $req = new OAuthRequest($http_method, $http_url, $_GET); - } - else if ($http_method == "POST") { - $req = new OAuthRequest($http_method, $http_url, $_POST); - } - return $req; - }/*}}}*/ - - /** - * pretty much a helper function to set up the request - */ - public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {/*{{{*/ - @$parameters or $parameters = array(); - $defaults = array("oauth_version" => OAuthRequest::$version, - "oauth_nonce" => OAuthRequest::generate_nonce(), - "oauth_timestamp" => OAuthRequest::generate_timestamp(), - "oauth_consumer_key" => $consumer->key); - $parameters = array_merge($defaults, $parameters); - - if ($token) { - $parameters['oauth_token'] = $token->key; - } - - // oauth v1.0a - /*if (isset($_REQUEST['oauth_verifier'])) { - $parameters['oauth_verifier'] = $_REQUEST['oauth_verifier']; - }*/ - - - return new OAuthRequest($http_method, $http_url, $parameters); - }/*}}}*/ - - public function set_parameter($name, $value) {/*{{{*/ - $this->parameters[$name] = $value; - }/*}}}*/ - - public function get_parameter($name) {/*{{{*/ - return $this->parameters[$name]; - }/*}}}*/ - - public function get_parameters() {/*{{{*/ - return $this->parameters; - }/*}}}*/ - - /** - * Returns the normalized parameters of the request - * - * This will be all (except oauth_signature) parameters, - * sorted first by key, and if duplicate keys, then by - * value. - * - * The returned string will be all the key=value pairs - * concated by &. - * - * @return string - */ - public function get_signable_parameters() {/*{{{*/ - // Grab all parameters - $params = $this->parameters; - - // Remove oauth_signature if present - if (isset($params['oauth_signature'])) { - unset($params['oauth_signature']); - } - - // Urlencode both keys and values - $keys = array_map(array('OAuthUtil', 'urlencodeRFC3986'), array_keys($params)); - $values = array_map(array('OAuthUtil', 'urlencodeRFC3986'), array_values($params)); - $params = array_combine($keys, $values); - - // Sort by keys (natsort) - uksort($params, 'strnatcmp'); - -if(isset($params['title']) && isset($params['title-exact'])) { - $temp = $params['title-exact']; - $title = $params['title']; - - unset($params['title']); - unset($params['title-exact']); - - $params['title-exact'] = $temp; - $params['title'] = $title; -} - - // Generate key=value pairs - $pairs = array(); - foreach ($params as $key=>$value ) { - if (is_array($value)) { - // If the value is an array, it's because there are multiple - // with the same key, sort them, then add all the pairs - natsort($value); - foreach ($value as $v2) { - $pairs[] = $key . '=' . $v2; - } - } else { - $pairs[] = $key . '=' . $value; - } - } - - // Return the pairs, concated with & - return implode('&', $pairs); - }/*}}}*/ - - /** - * Returns the base string of this request - * - * The base string defined as the method, the url - * and the parameters (normalized), each urlencoded - * and the concated with &. - */ - public function get_signature_base_string() {/*{{{*/ - $parts = array( - $this->get_normalized_http_method(), - $this->get_normalized_http_url(), - $this->get_signable_parameters() - ); - - $parts = array_map(array('OAuthUtil', 'urlencodeRFC3986'), $parts); - - return implode('&', $parts); - }/*}}}*/ - - /** - * just uppercases the http method - */ - public function get_normalized_http_method() {/*{{{*/ - return strtoupper($this->http_method); - }/*}}}*/ - -/** - * parses the url and rebuilds it to be - * scheme://host/path - */ - public function get_normalized_http_url() { - $parts = parse_url($this->http_url); - - $scheme = (isset($parts['scheme'])) ? $parts['scheme'] : 'http'; - $port = (isset($parts['port'])) ? $parts['port'] : (($scheme == 'https') ? '443' : '80'); - $host = (isset($parts['host'])) ? strtolower($parts['host']) : ''; - $path = (isset($parts['path'])) ? $parts['path'] : ''; - - if (($scheme == 'https' && $port != '443') - || ($scheme == 'http' && $port != '80')) { - $host = "$host:$port"; - } - return "$scheme://$host$path"; - } - - /** - * builds a url usable for a GET request - */ - public function to_url() {/*{{{*/ - $out = $this->get_normalized_http_url() . "?"; - $out .= $this->to_postdata(); - return $out; - }/*}}}*/ - - /** - * builds the data one would send in a POST request - */ - public function to_postdata() {/*{{{*/ - $total = array(); - foreach ($this->parameters as $k => $v) { - $total[] = OAuthUtil::urlencodeRFC3986($k) . "=" . OAuthUtil::urlencodeRFC3986($v); - } - $out = implode("&", $total); - return $out; - }/*}}}*/ - - /** - * builds the Authorization: header - */ - public function to_header() {/*{{{*/ - $out ='Authorization: OAuth '; - $total = array(); - - /* - $sig = $this->parameters['oauth_signature']; - unset($this->parameters['oauth_signature']); - uksort($this->parameters, 'strnatcmp'); - $this->parameters['oauth_signature'] = $sig; - */ - - foreach ($this->parameters as $k => $v) { - if (substr($k, 0, 5) != "oauth") continue; - $out .= OAuthUtil::urlencodeRFC3986($k) . '="' . OAuthUtil::urlencodeRFC3986($v) . '", '; - } - $out = substr_replace($out, '', strlen($out) - 2); - - return $out; - }/*}}}*/ - - public function __toString() {/*{{{*/ - return $this->to_url(); - }/*}}}*/ - - - public function sign_request($signature_method, $consumer, $token, $privKey=NULL) {/*{{{*/ - $this->set_parameter("oauth_signature_method", $signature_method->get_name()); - $signature = $this->build_signature($signature_method, $consumer, $token, $privKey); - $this->set_parameter("oauth_signature", $signature); - }/*}}}*/ - - public function build_signature($signature_method, $consumer, $token, $privKey=NULL) {/*{{{*/ - $signature = $signature_method->build_signature($this, $consumer, $token, $privKey); - return $signature; - }/*}}}*/ - - /** - * util function: current timestamp - */ - private static function generate_timestamp() {/*{{{*/ - return time(); - }/*}}}*/ - - /** - * util function: current nonce - */ - private static function generate_nonce() {/*{{{*/ - $mt = microtime(); - $rand = mt_rand(); - - return md5($mt . $rand); // md5s look nicer than numbers - }/*}}}*/ - - /** - * util function for turning the Authorization: header into - * parameters, has to do some unescaping - */ - private static function split_header($header) {/*{{{*/ - // this should be a regex - // error cases: commas in parameter values - $parts = explode(",", $header); - $out = array(); - foreach ($parts as $param) { - $param = ltrim($param); - // skip the "realm" param, nobody ever uses it anyway - if (substr($param, 0, 5) != "oauth") continue; - - $param_parts = explode("=", $param); - - // rawurldecode() used because urldecode() will turn a "+" in the - // value into a space - $out[$param_parts[0]] = rawurldecode(substr($param_parts[1], 1, -1)); - } - return $out; - }/*}}}*/ - - /** - * helper to try to sort out headers for people who aren't running apache - */ - private static function get_headers() {/*{{{*/ - if (function_exists('apache_request_headers')) { - // we need this to get the actual Authorization: header - // because apache tends to tell us it doesn't exist - return apache_request_headers(); - } - // otherwise we don't have apache and are just going to have to hope - // that $_SERVER actually contains what we need - $out = array(); - foreach ($_SERVER as $key => $value) { - if (substr($key, 0, 5) == "HTTP_") { - // this is chaos, basically it is just there to capitalize the first - // letter of every word that is not an initial HTTP and strip HTTP - // code from przemek - $key = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5))))); - $out[$key] = $value; - } - } - return $out; - }/*}}}*/ -}/*}}}*/ - -class OAuthServer {/*{{{*/ - protected $timestamp_threshold = 300; // in seconds, five minutes - protected $version = 1.0; // hi blaine - protected $signature_methods = array(); - - protected $data_store; - - function __construct($data_store) {/*{{{*/ - $this->data_store = $data_store; - }/*}}}*/ - - public function add_signature_method($signature_method) {/*{{{*/ - $this->signature_methods[$signature_method->get_name()] = - $signature_method; - }/*}}}*/ - - // high level functions - - /** - * process a request_token request - * returns the request token on success - */ - public function fetch_request_token(&$request) {/*{{{*/ - $this->get_version($request); - - $consumer = $this->get_consumer($request); - - // no token required for the initial token request - $token = NULL; - - $this->check_signature($request, $consumer, $token); - - $new_token = $this->data_store->new_request_token($consumer); - - return $new_token; - }/*}}}*/ - - /** - * process an access_token request - * returns the access token on success - */ - public function fetch_access_token(&$request) {/*{{{*/ - $this->get_version($request); - - $consumer = $this->get_consumer($request); - - // requires authorized request token - $token = $this->get_token($request, $consumer, "request"); - - $this->check_signature($request, $consumer, $token); - - $new_token = $this->data_store->new_access_token($token, $consumer); - - return $new_token; - }/*}}}*/ - - /** - * verify an api call, checks all the parameters - */ - public function verify_request(&$request) {/*{{{*/ - $this->get_version($request); - $consumer = $this->get_consumer($request); - $token = $this->get_token($request, $consumer, "access"); - $this->check_signature($request, $consumer, $token); - return array($consumer, $token); - }/*}}}*/ - - // Internals from here - /** - * version 1 - */ - private function get_version(&$request) {/*{{{*/ - $version = $request->get_parameter("oauth_version"); - if (!$version) { - $version = 1.0; - } - if ($version && $version != $this->version) { - throw new OAuthException("OAuth version '$version' not supported"); - } - return $version; - }/*}}}*/ - - /** - * figure out the signature with some defaults - */ - private function get_signature_method(&$request) {/*{{{*/ - $signature_method = - @$request->get_parameter("oauth_signature_method"); - if (!$signature_method) { - $signature_method = "PLAINTEXT"; - } - if (!in_array($signature_method, - array_keys($this->signature_methods))) { - throw new OAuthException( - "Signature method '$signature_method' not supported try one of the following: " . implode(", ", array_keys($this->signature_methods)) - ); - } - return $this->signature_methods[$signature_method]; - }/*}}}*/ - - /** - * try to find the consumer for the provided request's consumer key - */ - private function get_consumer(&$request) {/*{{{*/ - $consumer_key = @$request->get_parameter("oauth_consumer_key"); - if (!$consumer_key) { - throw new OAuthException("Invalid consumer key"); - } - - $consumer = $this->data_store->lookup_consumer($consumer_key); - if (!$consumer) { - throw new OAuthException("Invalid consumer"); - } - - return $consumer; - }/*}}}*/ - - /** - * try to find the token for the provided request's token key - */ - private function get_token(&$request, $consumer, $token_type="access") {/*{{{*/ - $token_field = @$request->get_parameter('oauth_token'); - $token = $this->data_store->lookup_token( - $consumer, $token_type, $token_field - ); - if (!$token) { - throw new OAuthException("Invalid $token_type token: $token_field"); - } - return $token; - }/*}}}*/ - - /** - * all-in-one function to check the signature on a request - * should guess the signature method appropriately - */ - private function check_signature(&$request, $consumer, $token) {/*{{{*/ - // this should probably be in a different method - $timestamp = @$request->get_parameter('oauth_timestamp'); - $nonce = @$request->get_parameter('oauth_nonce'); - - $this->check_timestamp($timestamp); - $this->check_nonce($consumer, $token, $nonce, $timestamp); - - $signature_method = $this->get_signature_method($request); - - $signature = $request->get_parameter('oauth_signature'); - $valid_sig = $signature_method->check_signature( - $request, - $consumer, - $token, - $signature - ); - - if (!$valid_sig) { - throw new OAuthException("Invalid signature"); - } - }/*}}}*/ - - /** - * check that the timestamp is new enough - */ - private function check_timestamp($timestamp) {/*{{{*/ - // verify that timestamp is recentish - $now = time(); - if ($now - $timestamp > $this->timestamp_threshold) { - throw new OAuthException("Expired timestamp, yours $timestamp, ours $now"); - } - }/*}}}*/ - - /** - * check that the nonce is not repeated - */ - private function check_nonce($consumer, $token, $nonce, $timestamp) {/*{{{*/ - // verify that the nonce is uniqueish - $found = $this->data_store->lookup_nonce($consumer, $token, $nonce, $timestamp); - if ($found) { - throw new OAuthException("Nonce already used: $nonce"); - } - }/*}}}*/ - - - -}/*}}}*/ - -class OAuthDataStore {/*{{{*/ - function lookup_consumer($consumer_key) {/*{{{*/ - // implement me - }/*}}}*/ - - function lookup_token($consumer, $token_type, $token) {/*{{{*/ - // implement me - }/*}}}*/ - - function lookup_nonce($consumer, $token, $nonce, $timestamp) {/*{{{*/ - // implement me - }/*}}}*/ - - function fetch_request_token($consumer) {/*{{{*/ - // return a new token attached to this consumer - }/*}}}*/ - - function fetch_access_token($token, $consumer) {/*{{{*/ - // return a new access token attached to this consumer - // for the user associated with this token if the request token - // is authorized - // should also invalidate the request token - }/*}}}*/ - -}/*}}}*/ - - -/* A very naive dbm-based oauth storage - */ -class SimpleOAuthDataStore extends OAuthDataStore {/*{{{*/ - private $dbh; - - function __construct($path = "oauth.gdbm") {/*{{{*/ - $this->dbh = dba_popen($path, 'c', 'gdbm'); - }/*}}}*/ - - function __destruct() {/*{{{*/ - dba_close($this->dbh); - }/*}}}*/ - - function lookup_consumer($consumer_key) {/*{{{*/ - $rv = dba_fetch("consumer_$consumer_key", $this->dbh); - if ($rv === FALSE) { - return NULL; - } - $obj = unserialize($rv); - if (!($obj instanceof OAuthConsumer)) { - return NULL; - } - return $obj; - }/*}}}*/ - - function lookup_token($consumer, $token_type, $token) {/*{{{*/ - $rv = dba_fetch("${token_type}_${token}", $this->dbh); - if ($rv === FALSE) { - return NULL; - } - $obj = unserialize($rv); - if (!($obj instanceof OAuthToken)) { - return NULL; - } - return $obj; - }/*}}}*/ - - function lookup_nonce($consumer, $token, $nonce, $timestamp) {/*{{{*/ - return dba_exists("nonce_$nonce", $this->dbh); - }/*}}}*/ - - function new_token($consumer, $type="request") {/*{{{*/ - $key = md5(time()); - $secret = time() + time(); - $token = new OAuthToken($key, md5(md5($secret))); - if (!dba_insert("${type}_$key", serialize($token), $this->dbh)) { - throw new OAuthException("doooom!"); - } - return $token; - }/*}}}*/ - - function new_request_token($consumer) {/*{{{*/ - return $this->new_token($consumer, "request"); - }/*}}}*/ - - function new_access_token($token, $consumer) {/*{{{*/ - - $token = $this->new_token($consumer, 'access'); - dba_delete("request_" . $token->key, $this->dbh); - return $token; - }/*}}}*/ -}/*}}}*/ - -class OAuthUtil {/*{{{*/ - public static function urlencodeRFC3986($string) {/*{{{*/ - return str_replace('%7E', '~', rawurlencode($string)); - }/*}}}*/ - - public static function urldecodeRFC3986($string) {/*{{{*/ - return rawurldecode($string); - }/*}}}*/ -}/*}}}*/ - -?> \ No newline at end of file diff --git a/3rdparty/Google/common.inc.php b/3rdparty/Google/common.inc.php deleted file mode 100755 index 57185cdc4d840ec6e33eac99c49e9ae8846f54f3..0000000000000000000000000000000000000000 --- a/3rdparty/Google/common.inc.php +++ /dev/null @@ -1,185 +0,0 @@ - - */ - -$PRIV_KEY_FILE = '/path/to/your/rsa_private_key.pem'; - -// OAuth library - http://oauth.googlecode.com/svn/code/php/ -require_once('OAuth.php'); - -// Google's accepted signature methods -$hmac_method = new OAuthSignatureMethod_HMAC_SHA1(); -$rsa_method = new OAuthSignatureMethod_RSA_SHA1(); -$SIG_METHODS = array($rsa_method->get_name() => $rsa_method, - $hmac_method->get_name() => $hmac_method); - -/** - * Makes an HTTP request to the specified URL - * - * @param string $http_method The HTTP method (GET, POST, PUT, DELETE) - * @param string $url Full URL of the resource to access - * @param array $extraHeaders (optional) Additional headers to include in each - * request. Elements are header/value pair strings ('Host: example.com') - * @param string $postData (optional) POST/PUT request body - * @param bool $returnResponseHeaders True if resp. headers should be returned. - * @return string Response body from the server - */ -function send_signed_request($http_method, $url, $extraHeaders=null, - $postData=null, $returnResponseHeaders=true) { - $curl = curl_init($url); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curl, CURLOPT_FAILONERROR, false); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); - - // Return request headers in the reponse -// curl_setopt($curl, CURLINFO_HEADER_OUT, true); - - // Return response headers ni the response? - if ($returnResponseHeaders) { - curl_setopt($curl, CURLOPT_HEADER, true); - } - - $headers = array(); - //$headers[] = 'GData-Version: 2.0'; // use GData v2 by default - if (is_array($extraHeaders)) { - $headers = array_merge($headers, $extraHeaders); - } - - // Setup default curl options for each type of HTTP request. - // This is also a great place to add additional headers for each request. - switch($http_method) { - case 'GET': - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - break; - case 'POST': - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - curl_setopt($curl, CURLOPT_POST, 1); - curl_setopt($curl, CURLOPT_POSTFIELDS, $postData); - break; - case 'PUT': - $headers[] = 'If-Match: *'; - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $http_method); - curl_setopt($curl, CURLOPT_POSTFIELDS, $postData); - break; - case 'DELETE': - $headers[] = 'If-Match: *'; - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $http_method); - break; - default: - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - } - - // Execute the request. If an error occures, fill the response body with it. - $response = curl_exec($curl); - if (!$response) { - $response = curl_error($curl); - } - - // Add server's response headers to our response body - $response = curl_getinfo($curl, CURLINFO_HEADER_OUT) . $response; - - curl_close($curl); - - return $response; -} - -/** -* Takes XML as a string and returns it nicely indented -* -* @param string $xml The xml to beautify -* @param boolean $html_output True if returned XML should be escaped for HTML. -* @return string The beautified xml -*/ -function xml_pretty_printer($xml, $html_output=false) { - $xml_obj = new SimpleXMLElement($xml); - $level = 2; - - // Get an array containing each XML element - $xml = explode("\n", preg_replace('/>\s*\n<", $xml_obj->asXML())); - - // Hold current indentation level - $indent = 0; - - $pretty = array(); - - // Shift off opening XML tag if present - if (count($xml) && preg_match('/^<\?\s*xml/', $xml[0])) { - $pretty[] = array_shift($xml); - } - - foreach ($xml as $el) { - if (preg_match('/^<([\w])+[^>\/]*>$/U', $el)) { - // opening tag, increase indent - $pretty[] = str_repeat(' ', $indent) . $el; - $indent += $level; - } else { - if (preg_match('/^<\/.+>$/', $el)) { - $indent -= $level; // closing tag, decrease indent - } - if ($indent < 0) { - $indent += $level; - } - $pretty[] = str_repeat(' ', $indent) . $el; - } - } - - $xml = implode("\n", $pretty); - return $html_output ? htmlentities($xml) : $xml; -} - -/** - * Joins key/value pairs by $inner_glue and each pair together by $outer_glue. - * - * Example: implode_assoc('=', '&', array('a' => 1, 'b' => 2)) === 'a=1&b=2' - * - * @param string $inner_glue What to implode each key/value pair with - * @param string $outer_glue What to impode each key/value string subset with - * @param array $array Associative array of query parameters - * @return string Urlencoded string of query parameters - */ -function implode_assoc($inner_glue, $outer_glue, $array) { - $output = array(); - foreach($array as $key => $item) { - $output[] = $key . $inner_glue . urlencode($item); - } - return implode($outer_glue, $output); -} - -/** - * Explodes a string of key/value url parameters into an associative array. - * This method performs the compliment operations of implode_assoc(). - * - * Example: explode_assoc('=', '&', 'a=1&b=2') === array('a' => 1, 'b' => 2) - * - * @param string $inner_glue What each key/value pair is joined with - * @param string $outer_glue What each set of key/value pairs is joined with. - * @param array $array Associative array of query parameters - * @return array Urlencoded string of query parameters - */ -function explode_assoc($inner_glue, $outer_glue, $params) { - $tempArr = explode($outer_glue, $params); - foreach($tempArr as $val) { - $pos = strpos($val, $inner_glue); - $key = substr($val, 0, $pos); - $array2[$key] = substr($val, $pos + 1, strlen($val)); - } - return $array2; -} - -?> \ No newline at end of file diff --git a/3rdparty/MDB2.php b/3rdparty/MDB2.php deleted file mode 100644 index a0ead9b9bcf27784b020c2b4fef3b08b17c4ee21..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2.php +++ /dev/null @@ -1,4587 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - */ - -require_once 'PEAR.php'; - -// {{{ Error constants - -/** - * The method mapErrorCode in each MDB2_dbtype implementation maps - * native error codes to one of these. - * - * If you add an error code here, make sure you also add a textual - * version of it in MDB2::errorMessage(). - */ - -define('MDB2_OK', true); -define('MDB2_ERROR', -1); -define('MDB2_ERROR_SYNTAX', -2); -define('MDB2_ERROR_CONSTRAINT', -3); -define('MDB2_ERROR_NOT_FOUND', -4); -define('MDB2_ERROR_ALREADY_EXISTS', -5); -define('MDB2_ERROR_UNSUPPORTED', -6); -define('MDB2_ERROR_MISMATCH', -7); -define('MDB2_ERROR_INVALID', -8); -define('MDB2_ERROR_NOT_CAPABLE', -9); -define('MDB2_ERROR_TRUNCATED', -10); -define('MDB2_ERROR_INVALID_NUMBER', -11); -define('MDB2_ERROR_INVALID_DATE', -12); -define('MDB2_ERROR_DIVZERO', -13); -define('MDB2_ERROR_NODBSELECTED', -14); -define('MDB2_ERROR_CANNOT_CREATE', -15); -define('MDB2_ERROR_CANNOT_DELETE', -16); -define('MDB2_ERROR_CANNOT_DROP', -17); -define('MDB2_ERROR_NOSUCHTABLE', -18); -define('MDB2_ERROR_NOSUCHFIELD', -19); -define('MDB2_ERROR_NEED_MORE_DATA', -20); -define('MDB2_ERROR_NOT_LOCKED', -21); -define('MDB2_ERROR_VALUE_COUNT_ON_ROW', -22); -define('MDB2_ERROR_INVALID_DSN', -23); -define('MDB2_ERROR_CONNECT_FAILED', -24); -define('MDB2_ERROR_EXTENSION_NOT_FOUND',-25); -define('MDB2_ERROR_NOSUCHDB', -26); -define('MDB2_ERROR_ACCESS_VIOLATION', -27); -define('MDB2_ERROR_CANNOT_REPLACE', -28); -define('MDB2_ERROR_CONSTRAINT_NOT_NULL',-29); -define('MDB2_ERROR_DEADLOCK', -30); -define('MDB2_ERROR_CANNOT_ALTER', -31); -define('MDB2_ERROR_MANAGER', -32); -define('MDB2_ERROR_MANAGER_PARSE', -33); -define('MDB2_ERROR_LOADMODULE', -34); -define('MDB2_ERROR_INSUFFICIENT_DATA', -35); -define('MDB2_ERROR_NO_PERMISSION', -36); -define('MDB2_ERROR_DISCONNECT_FAILED', -37); - -// }}} -// {{{ Verbose constants -/** - * These are just helper constants to more verbosely express parameters to prepare() - */ - -define('MDB2_PREPARE_MANIP', false); -define('MDB2_PREPARE_RESULT', null); - -// }}} -// {{{ Fetchmode constants - -/** - * This is a special constant that tells MDB2 the user hasn't specified - * any particular get mode, so the default should be used. - */ -define('MDB2_FETCHMODE_DEFAULT', 0); - -/** - * Column data indexed by numbers, ordered from 0 and up - */ -define('MDB2_FETCHMODE_ORDERED', 1); - -/** - * Column data indexed by column names - */ -define('MDB2_FETCHMODE_ASSOC', 2); - -/** - * Column data as object properties - */ -define('MDB2_FETCHMODE_OBJECT', 3); - -/** - * For multi-dimensional results: normally the first level of arrays - * is the row number, and the second level indexed by column number or name. - * MDB2_FETCHMODE_FLIPPED switches this order, so the first level of arrays - * is the column name, and the second level the row number. - */ -define('MDB2_FETCHMODE_FLIPPED', 4); - -// }}} -// {{{ Portability mode constants - -/** - * Portability: turn off all portability features. - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_NONE', 0); - -/** - * Portability: convert names of tables and fields to case defined in the - * "field_case" option when using the query*(), fetch*() and tableInfo() methods. - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_FIX_CASE', 1); - -/** - * Portability: right trim the data output by query*() and fetch*(). - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_RTRIM', 2); - -/** - * Portability: force reporting the number of rows deleted. - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_DELETE_COUNT', 4); - -/** - * Portability: not needed in MDB2 (just left here for compatibility to DB) - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_NUMROWS', 8); - -/** - * Portability: makes certain error messages in certain drivers compatible - * with those from other DBMS's. - * - * + mysql, mysqli: change unique/primary key constraints - * MDB2_ERROR_ALREADY_EXISTS -> MDB2_ERROR_CONSTRAINT - * - * + odbc(access): MS's ODBC driver reports 'no such field' as code - * 07001, which means 'too few parameters.' When this option is on - * that code gets mapped to MDB2_ERROR_NOSUCHFIELD. - * - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_ERRORS', 16); - -/** - * Portability: convert empty values to null strings in data output by - * query*() and fetch*(). - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_EMPTY_TO_NULL', 32); - -/** - * Portability: removes database/table qualifiers from associative indexes - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES', 64); - -/** - * Portability: turn on all portability features. - * @see MDB2_Driver_Common::setOption() - */ -define('MDB2_PORTABILITY_ALL', 127); - -// }}} -// {{{ Globals for class instance tracking - -/** - * These are global variables that are used to track the various class instances - */ - -$GLOBALS['_MDB2_databases'] = array(); -$GLOBALS['_MDB2_dsninfo_default'] = array( - 'phptype' => false, - 'dbsyntax' => false, - 'username' => false, - 'password' => false, - 'protocol' => false, - 'hostspec' => false, - 'port' => false, - 'socket' => false, - 'database' => false, - 'mode' => false, -); - -// }}} -// {{{ class MDB2 - -/** - * The main 'MDB2' class is simply a container class with some static - * methods for creating DB objects as well as some utility functions - * common to all parts of DB. - * - * The object model of MDB2 is as follows (indentation means inheritance): - * - * MDB2 The main MDB2 class. This is simply a utility class - * with some 'static' methods for creating MDB2 objects as - * well as common utility functions for other MDB2 classes. - * - * MDB2_Driver_Common The base for each MDB2 implementation. Provides default - * | implementations (in OO lingo virtual methods) for - * | the actual DB implementations as well as a bunch of - * | query utility functions. - * | - * +-MDB2_Driver_mysql The MDB2 implementation for MySQL. Inherits MDB2_Driver_Common. - * When calling MDB2::factory or MDB2::connect for MySQL - * connections, the object returned is an instance of this - * class. - * +-MDB2_Driver_pgsql The MDB2 implementation for PostGreSQL. Inherits MDB2_Driver_Common. - * When calling MDB2::factory or MDB2::connect for PostGreSQL - * connections, the object returned is an instance of this - * class. - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2 -{ - // {{{ function setOptions($db, $options) - - /** - * set option array in an exiting database object - * - * @param MDB2_Driver_Common MDB2 object - * @param array An associative array of option names and their values. - * - * @return mixed MDB2_OK or a PEAR Error object - * - * @access public - */ - static function setOptions($db, $options) - { - if (is_array($options)) { - foreach ($options as $option => $value) { - $test = $db->setOption($option, $value); - if (MDB2::isError($test)) { - return $test; - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ function classExists($classname) - - /** - * Checks if a class exists without triggering __autoload - * - * @param string classname - * - * @return bool true success and false on error - * @static - * @access public - */ - static function classExists($classname) - { - return class_exists($classname, false); - } - - // }}} - // {{{ function loadClass($class_name, $debug) - - /** - * Loads a PEAR class. - * - * @param string classname to load - * @param bool if errors should be suppressed - * - * @return mixed true success or PEAR_Error on failure - * - * @access public - */ - static function loadClass($class_name, $debug) - { - if (!MDB2::classExists($class_name)) { - $file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name).'.php'; - if ($debug) { - $include = include_once($file_name); - } else { - $include = @include_once($file_name); - } - if (!$include) { - if (!MDB2::fileExists($file_name)) { - $msg = "unable to find package '$class_name' file '$file_name'"; - } else { - $msg = "unable to load class '$class_name' from file '$file_name'"; - } - $err = MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, $msg); - return $err; - } - if (!MDB2::classExists($class_name)) { - $msg = "unable to load class '$class_name' from file '$file_name'"; - $err = MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, $msg); - return $err; - } - } - return MDB2_OK; - } - - // }}} - // {{{ function factory($dsn, $options = false) - - /** - * Create a new MDB2 object for the specified database type - * - * @param mixed 'data source name', see the MDB2::parseDSN - * method for a description of the dsn format. - * Can also be specified as an array of the - * format returned by MDB2::parseDSN. - * @param array An associative array of option names and - * their values. - * - * @return mixed a newly created MDB2 object, or false on error - * - * @access public - */ - static function factory($dsn, $options = false) - { - $dsninfo = MDB2::parseDSN($dsn); - if (empty($dsninfo['phptype'])) { - $err = MDB2::raiseError(MDB2_ERROR_NOT_FOUND, - null, null, 'no RDBMS driver specified'); - return $err; - } - $class_name = 'MDB2_Driver_'.$dsninfo['phptype']; - - $debug = (!empty($options['debug'])); - $err = MDB2::loadClass($class_name, $debug); - if (MDB2::isError($err)) { - return $err; - } - - $db = new $class_name(); - $db->setDSN($dsninfo); - $err = MDB2::setOptions($db, $options); - if (MDB2::isError($err)) { - return $err; - } - - return $db; - } - - // }}} - // {{{ function connect($dsn, $options = false) - - /** - * Create a new MDB2_Driver_* connection object and connect to the specified - * database - * - * @param mixed $dsn 'data source name', see the MDB2::parseDSN - * method for a description of the dsn format. - * Can also be specified as an array of the - * format returned by MDB2::parseDSN. - * @param array $options An associative array of option names and - * their values. - * - * @return mixed a newly created MDB2 connection object, or a MDB2 - * error object on error - * - * @access public - * @see MDB2::parseDSN - */ - static function connect($dsn, $options = false) - { - $db = MDB2::factory($dsn, $options); - if (MDB2::isError($db)) { - return $db; - } - - $err = $db->connect(); - if (MDB2::isError($err)) { - $dsn = $db->getDSN('string', 'xxx'); - $db->disconnect(); - $err->addUserInfo($dsn); - return $err; - } - - return $db; - } - - // }}} - // {{{ function singleton($dsn = null, $options = false) - - /** - * Returns a MDB2 connection with the requested DSN. - * A new MDB2 connection object is only created if no object with the - * requested DSN exists yet. - * - * @param mixed 'data source name', see the MDB2::parseDSN - * method for a description of the dsn format. - * Can also be specified as an array of the - * format returned by MDB2::parseDSN. - * @param array An associative array of option names and - * their values. - * - * @return mixed a newly created MDB2 connection object, or a MDB2 - * error object on error - * - * @access public - * @see MDB2::parseDSN - */ - static function singleton($dsn = null, $options = false) - { - if ($dsn) { - $dsninfo = MDB2::parseDSN($dsn); - $dsninfo = array_merge($GLOBALS['_MDB2_dsninfo_default'], $dsninfo); - $keys = array_keys($GLOBALS['_MDB2_databases']); - for ($i=0, $j=count($keys); $i<$j; ++$i) { - if (isset($GLOBALS['_MDB2_databases'][$keys[$i]])) { - $tmp_dsn = $GLOBALS['_MDB2_databases'][$keys[$i]]->getDSN('array'); - if (count(array_diff_assoc($tmp_dsn, $dsninfo)) == 0) { - MDB2::setOptions($GLOBALS['_MDB2_databases'][$keys[$i]], $options); - return $GLOBALS['_MDB2_databases'][$keys[$i]]; - } - } - } - } elseif (is_array($GLOBALS['_MDB2_databases']) && reset($GLOBALS['_MDB2_databases'])) { - return $GLOBALS['_MDB2_databases'][key($GLOBALS['_MDB2_databases'])]; - } - $db = MDB2::factory($dsn, $options); - return $db; - } - - // }}} - // {{{ function areEquals() - - /** - * It looks like there's a memory leak in array_diff() in PHP 5.1.x, - * so use this method instead. - * @see http://pear.php.net/bugs/bug.php?id=11790 - * - * @param array $arr1 - * @param array $arr2 - * @return boolean - */ - static function areEquals($arr1, $arr2) - { - if (count($arr1) != count($arr2)) { - return false; - } - foreach (array_keys($arr1) as $k) { - if (!array_key_exists($k, $arr2) || $arr1[$k] != $arr2[$k]) { - return false; - } - } - return true; - } - - // }}} - // {{{ function loadFile($file) - - /** - * load a file (like 'Date') - * - * @param string $file name of the file in the MDB2 directory (without '.php') - * - * @return string name of the file that was included - * - * @access public - */ - static function loadFile($file) - { - $file_name = 'MDB2'.DIRECTORY_SEPARATOR.$file.'.php'; - if (!MDB2::fileExists($file_name)) { - return MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'unable to find: '.$file_name); - } - if (!include_once($file_name)) { - return MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'unable to load driver class: '.$file_name); - } - return $file_name; - } - - // }}} - // {{{ function apiVersion() - - /** - * Return the MDB2 API version - * - * @return string the MDB2 API version number - * - * @access public - */ - function apiVersion() - { - return '@package_version@'; - } - - // }}} - // {{{ function &raiseError($code = null, $mode = null, $options = null, $userinfo = null) - - /** - * This method is used to communicate an error and invoke error - * callbacks etc. Basically a wrapper for PEAR::raiseError - * without the message string. - * - * @param mixed int error code - * - * @param int error mode, see PEAR_Error docs - * - * @param mixed If error mode is PEAR_ERROR_TRIGGER, this is the - * error level (E_USER_NOTICE etc). If error mode is - * PEAR_ERROR_CALLBACK, this is the callback function, - * either as a function name, or as an array of an - * object and method name. For other error modes this - * parameter is ignored. - * - * @param string Extra debug information. Defaults to the last - * query and native error code. - * - * @return PEAR_Error instance of a PEAR Error object - * - * @access private - * @see PEAR_Error - */ - public static function &raiseError($code = null, - $mode = null, - $options = null, - $userinfo = null, - $dummy1 = null, - $dummy2 = null, - $dummy3 = false) - { - $pear = new PEAR; - $err = $pear->raiseError(null, $code, $mode, $options, $userinfo, 'MDB2_Error', true); - return $err; - } - - // }}} - // {{{ function isError($data, $code = null) - - /** - * Tell whether a value is a MDB2 error. - * - * @param mixed the value to test - * @param int if is an error object, return true - * only if $code is a string and - * $db->getMessage() == $code or - * $code is an integer and $db->getCode() == $code - * - * @return bool true if parameter is an error - * - * @access public - */ - static function isError($data, $code = null) - { - if ($data instanceof MDB2_Error) { - if (null === $code) { - return true; - } - if (is_string($code)) { - return $data->getMessage() === $code; - } - return in_array($data->getCode(), (array)$code); - } - return false; - } - - // }}} - // {{{ function isConnection($value) - - /** - * Tell whether a value is a MDB2 connection - * - * @param mixed value to test - * - * @return bool whether $value is a MDB2 connection - * @access public - */ - static function isConnection($value) - { - return ($value instanceof MDB2_Driver_Common); - } - - // }}} - // {{{ function isResult($value) - - /** - * Tell whether a value is a MDB2 result - * - * @param mixed $value value to test - * - * @return bool whether $value is a MDB2 result - * - * @access public - */ - function isResult($value) - { - return ($value instanceof MDB2_Result); - } - - // }}} - // {{{ function isResultCommon($value) - - /** - * Tell whether a value is a MDB2 result implementing the common interface - * - * @param mixed $value value to test - * - * @return bool whether $value is a MDB2 result implementing the common interface - * - * @access public - */ - static function isResultCommon($value) - { - return ($value instanceof MDB2_Result_Common); - } - - // }}} - // {{{ function isStatement($value) - - /** - * Tell whether a value is a MDB2 statement interface - * - * @param mixed value to test - * - * @return bool whether $value is a MDB2 statement interface - * - * @access public - */ - function isStatement($value) - { - return ($value instanceof MDB2_Statement_Common); - } - - // }}} - // {{{ function errorMessage($value = null) - - /** - * Return a textual error message for a MDB2 error code - * - * @param int|array integer error code, - null to get the current error code-message map, - or an array with a new error code-message map - * - * @return string error message, or false if the error code was - * not recognized - * - * @access public - */ - static function errorMessage($value = null) - { - static $errorMessages; - - if (is_array($value)) { - $errorMessages = $value; - return MDB2_OK; - } - - if (!isset($errorMessages)) { - $errorMessages = array( - MDB2_OK => 'no error', - MDB2_ERROR => 'unknown error', - MDB2_ERROR_ALREADY_EXISTS => 'already exists', - MDB2_ERROR_CANNOT_CREATE => 'can not create', - MDB2_ERROR_CANNOT_ALTER => 'can not alter', - MDB2_ERROR_CANNOT_REPLACE => 'can not replace', - MDB2_ERROR_CANNOT_DELETE => 'can not delete', - MDB2_ERROR_CANNOT_DROP => 'can not drop', - MDB2_ERROR_CONSTRAINT => 'constraint violation', - MDB2_ERROR_CONSTRAINT_NOT_NULL=> 'null value violates not-null constraint', - MDB2_ERROR_DIVZERO => 'division by zero', - MDB2_ERROR_INVALID => 'invalid', - MDB2_ERROR_INVALID_DATE => 'invalid date or time', - MDB2_ERROR_INVALID_NUMBER => 'invalid number', - MDB2_ERROR_MISMATCH => 'mismatch', - MDB2_ERROR_NODBSELECTED => 'no database selected', - MDB2_ERROR_NOSUCHFIELD => 'no such field', - MDB2_ERROR_NOSUCHTABLE => 'no such table', - MDB2_ERROR_NOT_CAPABLE => 'MDB2 backend not capable', - MDB2_ERROR_NOT_FOUND => 'not found', - MDB2_ERROR_NOT_LOCKED => 'not locked', - MDB2_ERROR_SYNTAX => 'syntax error', - MDB2_ERROR_UNSUPPORTED => 'not supported', - MDB2_ERROR_VALUE_COUNT_ON_ROW => 'value count on row', - MDB2_ERROR_INVALID_DSN => 'invalid DSN', - MDB2_ERROR_CONNECT_FAILED => 'connect failed', - MDB2_ERROR_NEED_MORE_DATA => 'insufficient data supplied', - MDB2_ERROR_EXTENSION_NOT_FOUND=> 'extension not found', - MDB2_ERROR_NOSUCHDB => 'no such database', - MDB2_ERROR_ACCESS_VIOLATION => 'insufficient permissions', - MDB2_ERROR_LOADMODULE => 'error while including on demand module', - MDB2_ERROR_TRUNCATED => 'truncated', - MDB2_ERROR_DEADLOCK => 'deadlock detected', - MDB2_ERROR_NO_PERMISSION => 'no permission', - MDB2_ERROR_DISCONNECT_FAILED => 'disconnect failed', - ); - } - - if (null === $value) { - return $errorMessages; - } - - if (MDB2::isError($value)) { - $value = $value->getCode(); - } - - return isset($errorMessages[$value]) ? - $errorMessages[$value] : $errorMessages[MDB2_ERROR]; - } - - // }}} - // {{{ function parseDSN($dsn) - - /** - * Parse a data source name. - * - * Additional keys can be added by appending a URI query string to the - * end of the DSN. - * - * The format of the supplied DSN is in its fullest form: - * - * phptype(dbsyntax)://username:password@protocol+hostspec/database?option=8&another=true - * - * - * Most variations are allowed: - * - * phptype://username:password@protocol+hostspec:110//usr/db_file.db?mode=0644 - * phptype://username:password@hostspec/database_name - * phptype://username:password@hostspec - * phptype://username@hostspec - * phptype://hostspec/database - * phptype://hostspec - * phptype(dbsyntax) - * phptype - * - * - * @param string Data Source Name to be parsed - * - * @return array an associative array with the following keys: - * + phptype: Database backend used in PHP (mysql, odbc etc.) - * + dbsyntax: Database used with regards to SQL syntax etc. - * + protocol: Communication protocol to use (tcp, unix etc.) - * + hostspec: Host specification (hostname[:port]) - * + database: Database to use on the DBMS server - * + username: User name for login - * + password: Password for login - * - * @access public - * @author Tomas V.V.Cox - */ - static function parseDSN($dsn) - { - $parsed = $GLOBALS['_MDB2_dsninfo_default']; - - if (is_array($dsn)) { - $dsn = array_merge($parsed, $dsn); - if (!$dsn['dbsyntax']) { - $dsn['dbsyntax'] = $dsn['phptype']; - } - return $dsn; - } - - // Find phptype and dbsyntax - if (($pos = strpos($dsn, '://')) !== false) { - $str = substr($dsn, 0, $pos); - $dsn = substr($dsn, $pos + 3); - } else { - $str = $dsn; - $dsn = null; - } - - // Get phptype and dbsyntax - // $str => phptype(dbsyntax) - if (preg_match('|^(.+?)\((.*?)\)$|', $str, $arr)) { - $parsed['phptype'] = $arr[1]; - $parsed['dbsyntax'] = !$arr[2] ? $arr[1] : $arr[2]; - } else { - $parsed['phptype'] = $str; - $parsed['dbsyntax'] = $str; - } - - if (!count($dsn)) { - return $parsed; - } - - // Get (if found): username and password - // $dsn => username:password@protocol+hostspec/database - if (($at = strrpos($dsn,'@')) !== false) { - $str = substr($dsn, 0, $at); - $dsn = substr($dsn, $at + 1); - if (($pos = strpos($str, ':')) !== false) { - $parsed['username'] = rawurldecode(substr($str, 0, $pos)); - $parsed['password'] = rawurldecode(substr($str, $pos + 1)); - } else { - $parsed['username'] = rawurldecode($str); - } - } - - // Find protocol and hostspec - - // $dsn => proto(proto_opts)/database - if (preg_match('|^([^(]+)\((.*?)\)/?(.*?)$|', $dsn, $match)) { - $proto = $match[1]; - $proto_opts = $match[2] ? $match[2] : false; - $dsn = $match[3]; - - // $dsn => protocol+hostspec/database (old format) - } else { - if (strpos($dsn, '+') !== false) { - list($proto, $dsn) = explode('+', $dsn, 2); - } - if ( strpos($dsn, '//') === 0 - && strpos($dsn, '/', 2) !== false - && $parsed['phptype'] == 'oci8' - ) { - //oracle's "Easy Connect" syntax: - //"username/password@[//]host[:port][/service_name]" - //e.g. "scott/tiger@//mymachine:1521/oracle" - $proto_opts = $dsn; - $pos = strrpos($proto_opts, '/'); - $dsn = substr($proto_opts, $pos + 1); - $proto_opts = substr($proto_opts, 0, $pos); - } elseif (strpos($dsn, '/') !== false) { - list($proto_opts, $dsn) = explode('/', $dsn, 2); - } else { - $proto_opts = $dsn; - $dsn = null; - } - } - - // process the different protocol options - $parsed['protocol'] = (!empty($proto)) ? $proto : 'tcp'; - $proto_opts = rawurldecode($proto_opts); - if (strpos($proto_opts, ':') !== false) { - list($proto_opts, $parsed['port']) = explode(':', $proto_opts); - } - if ($parsed['protocol'] == 'tcp') { - $parsed['hostspec'] = $proto_opts; - } elseif ($parsed['protocol'] == 'unix') { - $parsed['socket'] = $proto_opts; - } - - // Get dabase if any - // $dsn => database - if ($dsn) { - // /database - if (($pos = strpos($dsn, '?')) === false) { - $parsed['database'] = rawurldecode($dsn); - // /database?param1=value1¶m2=value2 - } else { - $parsed['database'] = rawurldecode(substr($dsn, 0, $pos)); - $dsn = substr($dsn, $pos + 1); - if (strpos($dsn, '&') !== false) { - $opts = explode('&', $dsn); - } else { // database?param1=value1 - $opts = array($dsn); - } - foreach ($opts as $opt) { - list($key, $value) = explode('=', $opt); - if (!array_key_exists($key, $parsed) || false === $parsed[$key]) { - // don't allow params overwrite - $parsed[$key] = rawurldecode($value); - } - } - } - } - - return $parsed; - } - - // }}} - // {{{ function fileExists($file) - - /** - * Checks if a file exists in the include path - * - * @param string filename - * - * @return bool true success and false on error - * - * @access public - */ - static function fileExists($file) - { - // safe_mode does notwork with is_readable() - if (!@ini_get('safe_mode')) { - $dirs = explode(PATH_SEPARATOR, ini_get('include_path')); - foreach ($dirs as $dir) { - if (is_readable($dir . DIRECTORY_SEPARATOR . $file)) { - return true; - } - } - } else { - $fp = @fopen($file, 'r', true); - if (is_resource($fp)) { - @fclose($fp); - return true; - } - } - return false; - } - // }}} -} - -// }}} -// {{{ class MDB2_Error extends PEAR_Error - -/** - * MDB2_Error implements a class for reporting portable database error - * messages. - * - * @package MDB2 - * @category Database - * @author Stig Bakken - */ -class MDB2_Error extends PEAR_Error -{ - // {{{ constructor: function MDB2_Error($code = MDB2_ERROR, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = null) - - /** - * MDB2_Error constructor. - * - * @param mixed MDB2 error code, or string with error message. - * @param int what 'error mode' to operate in - * @param int what error level to use for $mode & PEAR_ERROR_TRIGGER - * @param mixed additional debug info, such as the last query - */ - function __construct($code = MDB2_ERROR, $mode = PEAR_ERROR_RETURN, - $level = E_USER_NOTICE, $debuginfo = null, $dummy = null) - { - if (null === $code) { - $code = MDB2_ERROR; - } - $this->PEAR_Error('MDB2 Error: '.MDB2::errorMessage($code), $code, - $mode, $level, $debuginfo); - } - - // }}} -} - -// }}} -// {{{ class MDB2_Driver_Common extends PEAR - -/** - * MDB2_Driver_Common: Base class that is extended by each MDB2 driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Common -{ - // {{{ Variables (Properties) - - /** - * @var MDB2_Driver_Datatype_Common - */ - public $datatype; - - /** - * @var MDB2_Extended - */ - public $extended; - - /** - * @var MDB2_Driver_Function_Common - */ - public $function; - - /** - * @var MDB2_Driver_Manager_Common - */ - public $manager; - - /** - * @var MDB2_Driver_Native_Commonn - */ - public $native; - - /** - * @var MDB2_Driver_Reverse_Common - */ - public $reverse; - - /** - * index of the MDB2 object within the $GLOBALS['_MDB2_databases'] array - * @var int - * @access public - */ - public $db_index = 0; - - /** - * DSN used for the next query - * @var array - * @access protected - */ - public $dsn = array(); - - /** - * DSN that was used to create the current connection - * @var array - * @access protected - */ - public $connected_dsn = array(); - - /** - * connection resource - * @var mixed - * @access protected - */ - public $connection = 0; - - /** - * if the current opened connection is a persistent connection - * @var bool - * @access protected - */ - public $opened_persistent; - - /** - * the name of the database for the next query - * @var string - * @access public - */ - public $database_name = ''; - - /** - * the name of the database currently selected - * @var string - * @access protected - */ - public $connected_database_name = ''; - - /** - * server version information - * @var string - * @access protected - */ - public $connected_server_info = ''; - - /** - * list of all supported features of the given driver - * @var array - * @access public - */ - public $supported = array( - 'sequences' => false, - 'indexes' => false, - 'affected_rows' => false, - 'summary_functions' => false, - 'order_by_text' => false, - 'transactions' => false, - 'savepoints' => false, - 'current_id' => false, - 'limit_queries' => false, - 'LOBs' => false, - 'replace' => false, - 'sub_selects' => false, - 'triggers' => false, - 'auto_increment' => false, - 'primary_key' => false, - 'result_introspection' => false, - 'prepared_statements' => false, - 'identifier_quoting' => false, - 'pattern_escaping' => false, - 'new_link' => false, - ); - - /** - * Array of supported options that can be passed to the MDB2 instance. - * - * The options can be set during object creation, using - * MDB2::connect(), MDB2::factory() or MDB2::singleton(). The options can - * also be set after the object is created, using MDB2::setOptions() or - * MDB2_Driver_Common::setOption(). - * The list of available option includes: - *
    - *
  • $options['ssl'] -> boolean: determines if ssl should be used for connections
  • - *
  • $options['field_case'] -> CASE_LOWER|CASE_UPPER: determines what case to force on field/table names
  • - *
  • $options['disable_query'] -> boolean: determines if queries should be executed
  • - *
  • $options['result_class'] -> string: class used for result sets
  • - *
  • $options['buffered_result_class'] -> string: class used for buffered result sets
  • - *
  • $options['result_wrap_class'] -> string: class used to wrap result sets into
  • - *
  • $options['result_buffering'] -> boolean should results be buffered or not?
  • - *
  • $options['fetch_class'] -> string: class to use when fetch mode object is used
  • - *
  • $options['persistent'] -> boolean: persistent connection?
  • - *
  • $options['debug'] -> integer: numeric debug level
  • - *
  • $options['debug_handler'] -> string: function/method that captures debug messages
  • - *
  • $options['debug_expanded_output'] -> bool: BC option to determine if more context information should be send to the debug handler
  • - *
  • $options['default_text_field_length'] -> integer: default text field length to use
  • - *
  • $options['lob_buffer_length'] -> integer: LOB buffer length
  • - *
  • $options['log_line_break'] -> string: line-break format
  • - *
  • $options['idxname_format'] -> string: pattern for index name
  • - *
  • $options['seqname_format'] -> string: pattern for sequence name
  • - *
  • $options['savepoint_format'] -> string: pattern for auto generated savepoint names
  • - *
  • $options['statement_format'] -> string: pattern for prepared statement names
  • - *
  • $options['seqcol_name'] -> string: sequence column name
  • - *
  • $options['quote_identifier'] -> boolean: if identifier quoting should be done when check_option is used
  • - *
  • $options['use_transactions'] -> boolean: if transaction use should be enabled
  • - *
  • $options['decimal_places'] -> integer: number of decimal places to handle
  • - *
  • $options['portability'] -> integer: portability constant
  • - *
  • $options['modules'] -> array: short to long module name mapping for __call()
  • - *
  • $options['emulate_prepared'] -> boolean: force prepared statements to be emulated
  • - *
  • $options['datatype_map'] -> array: map user defined datatypes to other primitive datatypes
  • - *
  • $options['datatype_map_callback'] -> array: callback function/method that should be called
  • - *
  • $options['bindname_format'] -> string: regular expression pattern for named parameters
  • - *
  • $options['multi_query'] -> boolean: determines if queries returning multiple result sets should be executed
  • - *
  • $options['max_identifiers_length'] -> integer: max identifier length
  • - *
  • $options['default_fk_action_onupdate'] -> string: default FOREIGN KEY ON UPDATE action ['RESTRICT'|'NO ACTION'|'SET DEFAULT'|'SET NULL'|'CASCADE']
  • - *
  • $options['default_fk_action_ondelete'] -> string: default FOREIGN KEY ON DELETE action ['RESTRICT'|'NO ACTION'|'SET DEFAULT'|'SET NULL'|'CASCADE']
  • - *
- * - * @var array - * @access public - * @see MDB2::connect() - * @see MDB2::factory() - * @see MDB2::singleton() - * @see MDB2_Driver_Common::setOption() - */ - public $options = array( - 'ssl' => false, - 'field_case' => CASE_LOWER, - 'disable_query' => false, - 'result_class' => 'MDB2_Result_%s', - 'buffered_result_class' => 'MDB2_BufferedResult_%s', - 'result_wrap_class' => false, - 'result_buffering' => true, - 'fetch_class' => 'stdClass', - 'persistent' => false, - 'debug' => 0, - 'debug_handler' => 'MDB2_defaultDebugOutput', - 'debug_expanded_output' => false, - 'default_text_field_length' => 4096, - 'lob_buffer_length' => 8192, - 'log_line_break' => "\n", - 'idxname_format' => '%s_idx', - 'seqname_format' => '%s_seq', - 'savepoint_format' => 'MDB2_SAVEPOINT_%s', - 'statement_format' => 'MDB2_STATEMENT_%1$s_%2$s', - 'seqcol_name' => 'sequence', - 'quote_identifier' => false, - 'use_transactions' => true, - 'decimal_places' => 2, - 'portability' => MDB2_PORTABILITY_ALL, - 'modules' => array( - 'ex' => 'Extended', - 'dt' => 'Datatype', - 'mg' => 'Manager', - 'rv' => 'Reverse', - 'na' => 'Native', - 'fc' => 'Function', - ), - 'emulate_prepared' => false, - 'datatype_map' => array(), - 'datatype_map_callback' => array(), - 'nativetype_map_callback' => array(), - 'lob_allow_url_include' => false, - 'bindname_format' => '(?:\d+)|(?:[a-zA-Z][a-zA-Z0-9_]*)', - 'max_identifiers_length' => 30, - 'default_fk_action_onupdate' => 'RESTRICT', - 'default_fk_action_ondelete' => 'RESTRICT', - ); - - /** - * string array - * @var string - * @access public - */ - public $string_quoting = array( - 'start' => "'", - 'end' => "'", - 'escape' => false, - 'escape_pattern' => false, - ); - - /** - * identifier quoting - * @var array - * @access public - */ - public $identifier_quoting = array( - 'start' => '"', - 'end' => '"', - 'escape' => '"', - ); - - /** - * sql comments - * @var array - * @access protected - */ - public $sql_comments = array( - array('start' => '--', 'end' => "\n", 'escape' => false), - array('start' => '/*', 'end' => '*/', 'escape' => false), - ); - - /** - * comparision wildcards - * @var array - * @access protected - */ - protected $wildcards = array('%', '_'); - - /** - * column alias keyword - * @var string - * @access protected - */ - public $as_keyword = ' AS '; - - /** - * warnings - * @var array - * @access protected - */ - public $warnings = array(); - - /** - * string with the debugging information - * @var string - * @access public - */ - public $debug_output = ''; - - /** - * determine if there is an open transaction - * @var bool - * @access protected - */ - public $in_transaction = false; - - /** - * the smart transaction nesting depth - * @var int - * @access protected - */ - public $nested_transaction_counter = null; - - /** - * the first error that occured inside a nested transaction - * @var MDB2_Error|bool - * @access protected - */ - protected $has_transaction_error = false; - - /** - * result offset used in the next query - * @var int - * @access public - */ - public $offset = 0; - - /** - * result limit used in the next query - * @var int - * @access public - */ - public $limit = 0; - - /** - * Database backend used in PHP (mysql, odbc etc.) - * @var string - * @access public - */ - public $phptype; - - /** - * Database used with regards to SQL syntax etc. - * @var string - * @access public - */ - public $dbsyntax; - - /** - * the last query sent to the driver - * @var string - * @access public - */ - public $last_query; - - /** - * the default fetchmode used - * @var int - * @access public - */ - public $fetchmode = MDB2_FETCHMODE_ORDERED; - - /** - * array of module instances - * @var array - * @access protected - */ - protected $modules = array(); - - /** - * determines of the PHP4 destructor emulation has been enabled yet - * @var array - * @access protected - */ - protected $destructor_registered = true; - - /** - * @var PEAR - */ - protected $pear; - - // }}} - // {{{ constructor: function __construct() - - /** - * Constructor - */ - function __construct() - { - end($GLOBALS['_MDB2_databases']); - $db_index = key($GLOBALS['_MDB2_databases']) + 1; - $GLOBALS['_MDB2_databases'][$db_index] = &$this; - $this->db_index = $db_index; - $this->pear = new PEAR; - } - - // }}} - // {{{ destructor: function __destruct() - - /** - * Destructor - */ - function __destruct() - { - $this->disconnect(false); - } - - // }}} - // {{{ function free() - - /** - * Free the internal references so that the instance can be destroyed - * - * @return bool true on success, false if result is invalid - * - * @access public - */ - function free() - { - unset($GLOBALS['_MDB2_databases'][$this->db_index]); - unset($this->db_index); - return MDB2_OK; - } - - // }}} - // {{{ function __toString() - - /** - * String conversation - * - * @return string representation of the object - * - * @access public - */ - function __toString() - { - $info = get_class($this); - $info.= ': (phptype = '.$this->phptype.', dbsyntax = '.$this->dbsyntax.')'; - if ($this->connection) { - $info.= ' [connected]'; - } - return $info; - } - - // }}} - // {{{ function errorInfo($error = null) - - /** - * This method is used to collect information about an error - * - * @param mixed error code or resource - * - * @return array with MDB2 errorcode, native error code, native message - * - * @access public - */ - function errorInfo($error = null) - { - return array($error, null, null); - } - - // }}} - // {{{ function &raiseError($code = null, $mode = null, $options = null, $userinfo = null) - - /** - * This method is used to communicate an error and invoke error - * callbacks etc. Basically a wrapper for PEAR::raiseError - * without the message string. - * - * @param mixed $code integer error code, or a PEAR error object (all - * other parameters are ignored if this parameter is - * an object - * @param int $mode error mode, see PEAR_Error docs - * @param mixed $options If error mode is PEAR_ERROR_TRIGGER, this is the - * error level (E_USER_NOTICE etc). If error mode is - * PEAR_ERROR_CALLBACK, this is the callback function, - * either as a function name, or as an array of an - * object and method name. For other error modes this - * parameter is ignored. - * @param string $userinfo Extra debug information. Defaults to the last - * query and native error code. - * @param string $method name of the method that triggered the error - * @param string $dummy1 not used - * @param bool $dummy2 not used - * - * @return PEAR_Error instance of a PEAR Error object - * @access public - * @see PEAR_Error - */ - function &raiseError($code = null, - $mode = null, - $options = null, - $userinfo = null, - $method = null, - $dummy1 = null, - $dummy2 = false - ) { - $userinfo = "[Error message: $userinfo]\n"; - // The error is yet a MDB2 error object - if (MDB2::isError($code)) { - // because we use the static PEAR::raiseError, our global - // handler should be used if it is set - if ((null === $mode) && !empty($this->_default_error_mode)) { - $mode = $this->_default_error_mode; - $options = $this->_default_error_options; - } - if (null === $userinfo) { - $userinfo = $code->getUserinfo(); - } - $code = $code->getCode(); - } elseif ($code == MDB2_ERROR_NOT_FOUND) { - // extension not loaded: don't call $this->errorInfo() or the script - // will die - } elseif (isset($this->connection)) { - if (!empty($this->last_query)) { - $userinfo.= "[Last executed query: {$this->last_query}]\n"; - } - $native_errno = $native_msg = null; - list($code, $native_errno, $native_msg) = $this->errorInfo($code); - if ((null !== $native_errno) && $native_errno !== '') { - $userinfo.= "[Native code: $native_errno]\n"; - } - if ((null !== $native_msg) && $native_msg !== '') { - $userinfo.= "[Native message: ". strip_tags($native_msg) ."]\n"; - } - if (null !== $method) { - $userinfo = $method.': '.$userinfo; - } - } - - $err = $this->pear->raiseError(null, $code, $mode, $options, $userinfo, 'MDB2_Error', true); - if ($err->getMode() !== PEAR_ERROR_RETURN - && isset($this->nested_transaction_counter) && !$this->has_transaction_error) { - $this->has_transaction_error = $err; - } - return $err; - } - - // }}} - // {{{ function resetWarnings() - - /** - * reset the warning array - * - * @return void - * - * @access public - */ - function resetWarnings() - { - $this->warnings = array(); - } - - // }}} - // {{{ function getWarnings() - - /** - * Get all warnings in reverse order. - * This means that the last warning is the first element in the array - * - * @return array with warnings - * - * @access public - * @see resetWarnings() - */ - function getWarnings() - { - return array_reverse($this->warnings); - } - - // }}} - // {{{ function setFetchMode($fetchmode, $object_class = 'stdClass') - - /** - * Sets which fetch mode should be used by default on queries - * on this connection - * - * @param int MDB2_FETCHMODE_ORDERED, MDB2_FETCHMODE_ASSOC - * or MDB2_FETCHMODE_OBJECT - * @param string the class name of the object to be returned - * by the fetch methods when the - * MDB2_FETCHMODE_OBJECT mode is selected. - * If no class is specified by default a cast - * to object from the assoc array row will be - * done. There is also the possibility to use - * and extend the 'MDB2_row' class. - * - * @return mixed MDB2_OK or MDB2 Error Object - * - * @access public - * @see MDB2_FETCHMODE_ORDERED, MDB2_FETCHMODE_ASSOC, MDB2_FETCHMODE_OBJECT - */ - function setFetchMode($fetchmode, $object_class = 'stdClass') - { - switch ($fetchmode) { - case MDB2_FETCHMODE_OBJECT: - $this->options['fetch_class'] = $object_class; - case MDB2_FETCHMODE_ORDERED: - case MDB2_FETCHMODE_ASSOC: - $this->fetchmode = $fetchmode; - break; - default: - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'invalid fetchmode mode', __FUNCTION__); - } - - return MDB2_OK; - } - - // }}} - // {{{ function setOption($option, $value) - - /** - * set the option for the db class - * - * @param string option name - * @param mixed value for the option - * - * @return mixed MDB2_OK or MDB2 Error Object - * - * @access public - */ - function setOption($option, $value) - { - if (array_key_exists($option, $this->options)) { - $this->options[$option] = $value; - return MDB2_OK; - } - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - "unknown option $option", __FUNCTION__); - } - - // }}} - // {{{ function getOption($option) - - /** - * Returns the value of an option - * - * @param string option name - * - * @return mixed the option value or error object - * - * @access public - */ - function getOption($option) - { - if (array_key_exists($option, $this->options)) { - return $this->options[$option]; - } - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - "unknown option $option", __FUNCTION__); - } - - // }}} - // {{{ function debug($message, $scope = '', $is_manip = null) - - /** - * set a debug message - * - * @param string message that should be appended to the debug variable - * @param string usually the method name that triggered the debug call: - * for example 'query', 'prepare', 'execute', 'parameters', - * 'beginTransaction', 'commit', 'rollback' - * @param array contains context information about the debug() call - * common keys are: is_manip, time, result etc. - * - * @return void - * - * @access public - */ - function debug($message, $scope = '', $context = array()) - { - if ($this->options['debug'] && $this->options['debug_handler']) { - if (!$this->options['debug_expanded_output']) { - if (!empty($context['when']) && $context['when'] !== 'pre') { - return null; - } - $context = empty($context['is_manip']) ? false : $context['is_manip']; - } - return call_user_func_array($this->options['debug_handler'], array(&$this, $scope, $message, $context)); - } - return null; - } - - // }}} - // {{{ function getDebugOutput() - - /** - * output debug info - * - * @return string content of the debug_output class variable - * - * @access public - */ - function getDebugOutput() - { - return $this->debug_output; - } - - // }}} - // {{{ function escape($text) - - /** - * Quotes a string so it can be safely used in a query. It will quote - * the text so it can safely be used within a query. - * - * @param string the input string to quote - * @param bool escape wildcards - * - * @return string quoted string - * - * @access public - */ - function escape($text, $escape_wildcards = false) - { - if ($escape_wildcards) { - $text = $this->escapePattern($text); - } - - $text = str_replace($this->string_quoting['end'], $this->string_quoting['escape'] . $this->string_quoting['end'], $text); - return $text; - } - - // }}} - // {{{ function escapePattern($text) - - /** - * Quotes pattern (% and _) characters in a string) - * - * @param string the input string to quote - * - * @return string quoted string - * - * @access public - */ - function escapePattern($text) - { - if ($this->string_quoting['escape_pattern']) { - $text = str_replace($this->string_quoting['escape_pattern'], $this->string_quoting['escape_pattern'] . $this->string_quoting['escape_pattern'], $text); - foreach ($this->wildcards as $wildcard) { - $text = str_replace($wildcard, $this->string_quoting['escape_pattern'] . $wildcard, $text); - } - } - return $text; - } - - // }}} - // {{{ function quoteIdentifier($str, $check_option = false) - - /** - * Quote a string so it can be safely used as a table or column name - * - * Delimiting style depends on which database driver is being used. - * - * NOTE: just because you CAN use delimited identifiers doesn't mean - * you SHOULD use them. In general, they end up causing way more - * problems than they solve. - * - * NOTE: if you have table names containing periods, don't use this method - * (@see bug #11906) - * - * Portability is broken by using the following characters inside - * delimited identifiers: - * + backtick (`) -- due to MySQL - * + double quote (") -- due to Oracle - * + brackets ([ or ]) -- due to Access - * - * Delimited identifiers are known to generally work correctly under - * the following drivers: - * + mssql - * + mysql - * + mysqli - * + oci8 - * + pgsql - * + sqlite - * - * InterBase doesn't seem to be able to use delimited identifiers - * via PHP 4. They work fine under PHP 5. - * - * @param string identifier name to be quoted - * @param bool check the 'quote_identifier' option - * - * @return string quoted identifier string - * - * @access public - */ - function quoteIdentifier($str, $check_option = false) - { - if ($check_option && !$this->options['quote_identifier']) { - return $str; - } - $str = str_replace($this->identifier_quoting['end'], $this->identifier_quoting['escape'] . $this->identifier_quoting['end'], $str); - $parts = explode('.', $str); - foreach (array_keys($parts) as $k) { - $parts[$k] = $this->identifier_quoting['start'] . $parts[$k] . $this->identifier_quoting['end']; - } - return implode('.', $parts); - } - - // }}} - // {{{ function getAsKeyword() - - /** - * Gets the string to alias column - * - * @return string to use when aliasing a column - */ - function getAsKeyword() - { - return $this->as_keyword; - } - - // }}} - // {{{ function getConnection() - - /** - * Returns a native connection - * - * @return mixed a valid MDB2 connection object, - * or a MDB2 error object on error - * - * @access public - */ - function getConnection() - { - $result = $this->connect(); - if (MDB2::isError($result)) { - return $result; - } - return $this->connection; - } - - // }}} - // {{{ function _fixResultArrayValues(&$row, $mode) - - /** - * Do all necessary conversions on result arrays to fix DBMS quirks - * - * @param array the array to be fixed (passed by reference) - * @param array bit-wise addition of the required portability modes - * - * @return void - * - * @access protected - */ - function _fixResultArrayValues(&$row, $mode) - { - switch ($mode) { - case MDB2_PORTABILITY_EMPTY_TO_NULL: - foreach ($row as $key => $value) { - if ($value === '') { - $row[$key] = null; - } - } - break; - case MDB2_PORTABILITY_RTRIM: - foreach ($row as $key => $value) { - if (is_string($value)) { - $row[$key] = rtrim($value); - } - } - break; - case MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES: - $tmp_row = array(); - foreach ($row as $key => $value) { - $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value; - } - $row = $tmp_row; - break; - case (MDB2_PORTABILITY_RTRIM + MDB2_PORTABILITY_EMPTY_TO_NULL): - foreach ($row as $key => $value) { - if ($value === '') { - $row[$key] = null; - } elseif (is_string($value)) { - $row[$key] = rtrim($value); - } - } - break; - case (MDB2_PORTABILITY_RTRIM + MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES): - $tmp_row = array(); - foreach ($row as $key => $value) { - if (is_string($value)) { - $value = rtrim($value); - } - $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value; - } - $row = $tmp_row; - break; - case (MDB2_PORTABILITY_EMPTY_TO_NULL + MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES): - $tmp_row = array(); - foreach ($row as $key => $value) { - if ($value === '') { - $value = null; - } - $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value; - } - $row = $tmp_row; - break; - case (MDB2_PORTABILITY_RTRIM + MDB2_PORTABILITY_EMPTY_TO_NULL + MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES): - $tmp_row = array(); - foreach ($row as $key => $value) { - if ($value === '') { - $value = null; - } elseif (is_string($value)) { - $value = rtrim($value); - } - $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value; - } - $row = $tmp_row; - break; - } - } - - // }}} - // {{{ function loadModule($module, $property = null, $phptype_specific = null) - - /** - * loads a module - * - * @param string name of the module that should be loaded - * (only used for error messages) - * @param string name of the property into which the class will be loaded - * @param bool if the class to load for the module is specific to the - * phptype - * - * @return object on success a reference to the given module is returned - * and on failure a PEAR error - * - * @access public - */ - function loadModule($module, $property = null, $phptype_specific = null) - { - if (!$property) { - $property = strtolower($module); - } - - if (!isset($this->{$property})) { - $version = $phptype_specific; - if ($phptype_specific !== false) { - $version = true; - $class_name = 'MDB2_Driver_'.$module.'_'.$this->phptype; - $file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name).'.php'; - } - if ($phptype_specific === false - || (!MDB2::classExists($class_name) && !MDB2::fileExists($file_name)) - ) { - $version = false; - $class_name = 'MDB2_'.$module; - $file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name).'.php'; - } - - $err = MDB2::loadClass($class_name, $this->getOption('debug')); - if (MDB2::isError($err)) { - return $err; - } - - // load module in a specific version - if ($version) { - if (method_exists($class_name, 'getClassName')) { - $class_name_new = call_user_func(array($class_name, 'getClassName'), $this->db_index); - if ($class_name != $class_name_new) { - $class_name = $class_name_new; - $err = MDB2::loadClass($class_name, $this->getOption('debug')); - if (MDB2::isError($err)) { - return $err; - } - } - } - } - - if (!MDB2::classExists($class_name)) { - $err = $this->raiseError(MDB2_ERROR_LOADMODULE, null, null, - "unable to load module '$module' into property '$property'", __FUNCTION__); - return $err; - } - $this->{$property} = new $class_name($this->db_index); - $this->modules[$module] = $this->{$property}; - if ($version) { - // this will be used in the connect method to determine if the module - // needs to be loaded with a different version if the server - // version changed in between connects - $this->loaded_version_modules[] = $property; - } - } - - return $this->{$property}; - } - - // }}} - // {{{ function __call($method, $params) - - /** - * Calls a module method using the __call magic method - * - * @param string Method name. - * @param array Arguments. - * - * @return mixed Returned value. - */ - function __call($method, $params) - { - $module = null; - if (preg_match('/^([a-z]+)([A-Z])(.*)$/', $method, $match) - && isset($this->options['modules'][$match[1]]) - ) { - $module = $this->options['modules'][$match[1]]; - $method = strtolower($match[2]).$match[3]; - if (!isset($this->modules[$module]) || !is_object($this->modules[$module])) { - $result = $this->loadModule($module); - if (MDB2::isError($result)) { - return $result; - } - } - } else { - foreach ($this->modules as $key => $foo) { - if (is_object($this->modules[$key]) - && method_exists($this->modules[$key], $method) - ) { - $module = $key; - break; - } - } - } - if (null !== $module) { - return call_user_func_array(array(&$this->modules[$module], $method), $params); - } - trigger_error(sprintf('Call to undefined function: %s::%s().', get_class($this), $method), E_USER_ERROR); - } - - // }}} - // {{{ function beginTransaction($savepoint = null) - - /** - * Start a transaction or set a savepoint. - * - * @param string name of a savepoint to set - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function beginTransaction($savepoint = null) - { - $this->debug('Starting transaction', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'transactions are not supported', __FUNCTION__); - } - - // }}} - // {{{ function commit($savepoint = null) - - /** - * Commit the database changes done during a transaction that is in - * progress or release a savepoint. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after committing the pending changes. - * - * @param string name of a savepoint to release - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function commit($savepoint = null) - { - $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'commiting transactions is not supported', __FUNCTION__); - } - - // }}} - // {{{ function rollback($savepoint = null) - - /** - * Cancel any database changes done during a transaction or since a specific - * savepoint that is in progress. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after canceling the pending changes. - * - * @param string name of a savepoint to rollback to - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function rollback($savepoint = null) - { - $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'rolling back transactions is not supported', __FUNCTION__); - } - - // }}} - // {{{ function inTransaction($ignore_nested = false) - - /** - * If a transaction is currently open. - * - * @param bool if the nested transaction count should be ignored - * @return int|bool - an integer with the nesting depth is returned if a - * nested transaction is open - * - true is returned for a normal open transaction - * - false is returned if no transaction is open - * - * @access public - */ - function inTransaction($ignore_nested = false) - { - if (!$ignore_nested && isset($this->nested_transaction_counter)) { - return $this->nested_transaction_counter; - } - return $this->in_transaction; - } - - // }}} - // {{{ function setTransactionIsolation($isolation) - - /** - * Set the transacton isolation level. - * - * @param string standard isolation level - * READ UNCOMMITTED (allows dirty reads) - * READ COMMITTED (prevents dirty reads) - * REPEATABLE READ (prevents nonrepeatable reads) - * SERIALIZABLE (prevents phantom reads) - * @param array some transaction options: - * 'wait' => 'WAIT' | 'NO WAIT' - * 'rw' => 'READ WRITE' | 'READ ONLY' - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - * @since 2.1.1 - */ - function setTransactionIsolation($isolation, $options = array()) - { - $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true)); - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'isolation level setting is not supported', __FUNCTION__); - } - - // }}} - // {{{ function beginNestedTransaction($savepoint = false) - - /** - * Start a nested transaction. - * - * @return mixed MDB2_OK on success/savepoint name, a MDB2 error on failure - * - * @access public - * @since 2.1.1 - */ - function beginNestedTransaction() - { - if ($this->in_transaction) { - ++$this->nested_transaction_counter; - $savepoint = sprintf($this->options['savepoint_format'], $this->nested_transaction_counter); - if ($this->supports('savepoints') && $savepoint) { - return $this->beginTransaction($savepoint); - } - return MDB2_OK; - } - $this->has_transaction_error = false; - $result = $this->beginTransaction(); - $this->nested_transaction_counter = 1; - return $result; - } - - // }}} - // {{{ function completeNestedTransaction($force_rollback = false, $release = false) - - /** - * Finish a nested transaction by rolling back if an error occured or - * committing otherwise. - * - * @param bool if the transaction should be rolled back regardless - * even if no error was set within the nested transaction - * @return mixed MDB_OK on commit/counter decrementing, false on rollback - * and a MDB2 error on failure - * - * @access public - * @since 2.1.1 - */ - function completeNestedTransaction($force_rollback = false) - { - if ($this->nested_transaction_counter > 1) { - $savepoint = sprintf($this->options['savepoint_format'], $this->nested_transaction_counter); - if ($this->supports('savepoints') && $savepoint) { - if ($force_rollback || $this->has_transaction_error) { - $result = $this->rollback($savepoint); - if (!MDB2::isError($result)) { - $result = false; - $this->has_transaction_error = false; - } - } else { - $result = $this->commit($savepoint); - } - } else { - $result = MDB2_OK; - } - --$this->nested_transaction_counter; - return $result; - } - - $this->nested_transaction_counter = null; - $result = MDB2_OK; - - // transaction has not yet been rolled back - if ($this->in_transaction) { - if ($force_rollback || $this->has_transaction_error) { - $result = $this->rollback(); - if (!MDB2::isError($result)) { - $result = false; - } - } else { - $result = $this->commit(); - } - } - $this->has_transaction_error = false; - return $result; - } - - // }}} - // {{{ function failNestedTransaction($error = null, $immediately = false) - - /** - * Force setting nested transaction to failed. - * - * @param mixed value to return in getNestededTransactionError() - * @param bool if the transaction should be rolled back immediately - * @return bool MDB2_OK - * - * @access public - * @since 2.1.1 - */ - function failNestedTransaction($error = null, $immediately = false) - { - if (null !== $error) { - $error = $this->has_transaction_error ? $this->has_transaction_error : true; - } elseif (!$error) { - $error = true; - } - $this->has_transaction_error = $error; - if (!$immediately) { - return MDB2_OK; - } - return $this->rollback(); - } - - // }}} - // {{{ function getNestedTransactionError() - - /** - * The first error that occured since the transaction start. - * - * @return MDB2_Error|bool MDB2 error object if an error occured or false. - * - * @access public - * @since 2.1.1 - */ - function getNestedTransactionError() - { - return $this->has_transaction_error; - } - - // }}} - // {{{ connect() - - /** - * Connect to the database - * - * @return true on success, MDB2 Error Object on failure - */ - function connect() - { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ databaseExists() - - /** - * check if given database name is exists? - * - * @param string $name name of the database that should be checked - * - * @return mixed true/false on success, a MDB2 error on failure - * @access public - */ - function databaseExists($name) - { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ setCharset($charset, $connection = null) - - /** - * Set the charset on the current connection - * - * @param string charset - * @param resource connection handle - * - * @return true on success, MDB2 Error Object on failure - */ - function setCharset($charset, $connection = null) - { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function disconnect($force = true) - - /** - * Log out and disconnect from the database. - * - * @param boolean $force whether the disconnect should be forced even if the - * connection is opened persistently - * - * @return mixed true on success, false if not connected and error object on error - * - * @access public - */ - function disconnect($force = true) - { - $this->connection = 0; - $this->connected_dsn = array(); - $this->connected_database_name = ''; - $this->opened_persistent = null; - $this->connected_server_info = ''; - $this->in_transaction = null; - $this->nested_transaction_counter = null; - return MDB2_OK; - } - - // }}} - // {{{ function setDatabase($name) - - /** - * Select a different database - * - * @param string name of the database that should be selected - * - * @return string name of the database previously connected to - * - * @access public - */ - function setDatabase($name) - { - $previous_database_name = (isset($this->database_name)) ? $this->database_name : ''; - $this->database_name = $name; - if (!empty($this->connected_database_name) && ($this->connected_database_name != $this->database_name)) { - $this->disconnect(false); - } - return $previous_database_name; - } - - // }}} - // {{{ function getDatabase() - - /** - * Get the current database - * - * @return string name of the database - * - * @access public - */ - function getDatabase() - { - return $this->database_name; - } - - // }}} - // {{{ function setDSN($dsn) - - /** - * set the DSN - * - * @param mixed DSN string or array - * - * @return MDB2_OK - * - * @access public - */ - function setDSN($dsn) - { - $dsn_default = $GLOBALS['_MDB2_dsninfo_default']; - $dsn = MDB2::parseDSN($dsn); - if (array_key_exists('database', $dsn)) { - $this->database_name = $dsn['database']; - unset($dsn['database']); - } - $this->dsn = array_merge($dsn_default, $dsn); - return $this->disconnect(false); - } - - // }}} - // {{{ function getDSN($type = 'string', $hidepw = false) - - /** - * return the DSN as a string - * - * @param string format to return ("array", "string") - * @param string string to hide the password with - * - * @return mixed DSN in the chosen type - * - * @access public - */ - function getDSN($type = 'string', $hidepw = false) - { - $dsn = array_merge($GLOBALS['_MDB2_dsninfo_default'], $this->dsn); - $dsn['phptype'] = $this->phptype; - $dsn['database'] = $this->database_name; - if ($hidepw) { - $dsn['password'] = $hidepw; - } - switch ($type) { - // expand to include all possible options - case 'string': - $dsn = $dsn['phptype']. - ($dsn['dbsyntax'] ? ('('.$dsn['dbsyntax'].')') : ''). - '://'.$dsn['username'].':'. - $dsn['password'].'@'.$dsn['hostspec']. - ($dsn['port'] ? (':'.$dsn['port']) : ''). - '/'.$dsn['database']; - break; - case 'array': - default: - break; - } - return $dsn; - } - - // }}} - // {{{ _isNewLinkSet() - - /** - * Check if the 'new_link' option is set - * - * @return boolean - * - * @access protected - */ - function _isNewLinkSet() - { - return (isset($this->dsn['new_link']) - && ($this->dsn['new_link'] === true - || (is_string($this->dsn['new_link']) && preg_match('/^true$/i', $this->dsn['new_link'])) - || (is_numeric($this->dsn['new_link']) && 0 != (int)$this->dsn['new_link']) - ) - ); - } - - // }}} - // {{{ function &standaloneQuery($query, $types = null, $is_manip = false) - - /** - * execute a query as database administrator - * - * @param string the SQL query - * @param mixed array that contains the types of the columns in - * the result set - * @param bool if the query is a manipulation query - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function standaloneQuery($query, $types = null, $is_manip = false) - { - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $query = $this->_modifyQuery($query, $is_manip, $limit, $offset); - - $connection = $this->getConnection(); - if (MDB2::isError($connection)) { - return $connection; - } - - $result = $this->_doQuery($query, $is_manip, $connection, false); - if (MDB2::isError($result)) { - return $result; - } - - if ($is_manip) { - $affected_rows = $this->_affectedRows($connection, $result); - return $affected_rows; - } - $result = $this->_wrapResult($result, $types, true, true, $limit, $offset); - return $result; - } - - // }}} - // {{{ function _modifyQuery($query, $is_manip, $limit, $offset) - - /** - * Changes a query string for various DBMS specific reasons - * - * @param string query to modify - * @param bool if it is a DML query - * @param int limit the number of rows - * @param int start reading from given offset - * - * @return string modified query - * - * @access protected - */ - function _modifyQuery($query, $is_manip, $limit, $offset) - { - return $query; - } - - // }}} - // {{{ function &_doQuery($query, $is_manip = false, $connection = null, $database_name = null) - - /** - * Execute a query - * @param string query - * @param bool if the query is a manipulation query - * @param resource connection handle - * @param string database name - * - * @return result or error object - * - * @access protected - */ - function _doQuery($query, $is_manip = false, $connection = null, $database_name = null) - { - $this->last_query = $query; - $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (MDB2::isError($result)) { - return $result; - } - $query = $result; - } - $err = MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - return $err; - } - - // }}} - // {{{ function _affectedRows($connection, $result = null) - - /** - * Returns the number of rows affected - * - * @param resource result handle - * @param resource connection handle - * - * @return mixed MDB2 Error Object or the number of rows affected - * - * @access private - */ - function _affectedRows($connection, $result = null) - { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function &exec($query) - - /** - * Execute a manipulation query to the database and return the number of affected rows - * - * @param string the SQL query - * - * @return mixed number of affected rows on success, a MDB2 error on failure - * - * @access public - */ - function exec($query) - { - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $query = $this->_modifyQuery($query, true, $limit, $offset); - - $connection = $this->getConnection(); - if (MDB2::isError($connection)) { - return $connection; - } - - $result = $this->_doQuery($query, true, $connection, $this->database_name); - if (MDB2::isError($result)) { - return $result; - } - - $affectedRows = $this->_affectedRows($connection, $result); - return $affectedRows; - } - - // }}} - // {{{ function &query($query, $types = null, $result_class = true, $result_wrap_class = false) - - /** - * Send a query to the database and return any results - * - * @param string the SQL query - * @param mixed array that contains the types of the columns in - * the result set - * @param mixed string which specifies which result class to use - * @param mixed string which specifies which class to wrap results in - * - * @return mixed an MDB2_Result handle on success, a MDB2 error on failure - * - * @access public - */ - function query($query, $types = null, $result_class = true, $result_wrap_class = true) - { - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $query = $this->_modifyQuery($query, false, $limit, $offset); - - $connection = $this->getConnection(); - if (MDB2::isError($connection)) { - return $connection; - } - - $result = $this->_doQuery($query, false, $connection, $this->database_name); - if (MDB2::isError($result)) { - return $result; - } - - $result = $this->_wrapResult($result, $types, $result_class, $result_wrap_class, $limit, $offset); - return $result; - } - - // }}} - // {{{ function _wrapResult($result_resource, $types = array(), $result_class = true, $result_wrap_class = false, $limit = null, $offset = null) - - /** - * wrap a result set into the correct class - * - * @param resource result handle - * @param mixed array that contains the types of the columns in - * the result set - * @param mixed string which specifies which result class to use - * @param mixed string which specifies which class to wrap results in - * @param string number of rows to select - * @param string first row to select - * - * @return mixed an MDB2_Result, a MDB2 error on failure - * - * @access protected - */ - function _wrapResult($result_resource, $types = array(), $result_class = true, - $result_wrap_class = true, $limit = null, $offset = null) - { - if ($types === true) { - if ($this->supports('result_introspection')) { - $this->loadModule('Reverse', null, true); - $tableInfo = $this->reverse->tableInfo($result_resource); - if (MDB2::isError($tableInfo)) { - return $tableInfo; - } - $types = array(); - $types_assoc = array(); - foreach ($tableInfo as $field) { - $types[] = $field['mdb2type']; - $types_assoc[$field['name']] = $field['mdb2type']; - } - } else { - $types = null; - } - } - - if ($result_class === true) { - $result_class = $this->options['result_buffering'] - ? $this->options['buffered_result_class'] : $this->options['result_class']; - } - - if ($result_class) { - $class_name = sprintf($result_class, $this->phptype); - if (!MDB2::classExists($class_name)) { - $err = MDB2_Driver_Common::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'result class does not exist '.$class_name, __FUNCTION__); - return $err; - } - $result = new $class_name($this, $result_resource, $limit, $offset); - if (!MDB2::isResultCommon($result)) { - $err = MDB2_Driver_Common::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'result class is not extended from MDB2_Result_Common', __FUNCTION__); - return $err; - } - - if (!empty($types)) { - $err = $result->setResultTypes($types); - if (MDB2::isError($err)) { - $result->free(); - return $err; - } - } - if (!empty($types_assoc)) { - $err = $result->setResultTypes($types_assoc); - if (MDB2::isError($err)) { - $result->free(); - return $err; - } - } - - if ($result_wrap_class === true) { - $result_wrap_class = $this->options['result_wrap_class']; - } - if ($result_wrap_class) { - if (!MDB2::classExists($result_wrap_class)) { - $err = MDB2_Driver_Common::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'result wrap class does not exist '.$result_wrap_class, __FUNCTION__); - return $err; - } - $result = new $result_wrap_class($result, $this->fetchmode); - } - - return $result; - } - - return $result_resource; - } - - // }}} - // {{{ function getServerVersion($native = false) - - /** - * return version information about the server - * - * @param bool determines if the raw version string should be returned - * - * @return mixed array with version information or row string - * - * @access public - */ - function getServerVersion($native = false) - { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function setLimit($limit, $offset = null) - - /** - * set the range of the next query - * - * @param string number of rows to select - * @param string first row to select - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function setLimit($limit, $offset = null) - { - if (!$this->supports('limit_queries')) { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'limit is not supported by this driver', __FUNCTION__); - } - $limit = (int)$limit; - if ($limit < 0) { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_SYNTAX, null, null, - 'it was not specified a valid selected range row limit', __FUNCTION__); - } - $this->limit = $limit; - if (null !== $offset) { - $offset = (int)$offset; - if ($offset < 0) { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_SYNTAX, null, null, - 'it was not specified a valid first selected range row', __FUNCTION__); - } - $this->offset = $offset; - } - return MDB2_OK; - } - - // }}} - // {{{ function subSelect($query, $type = false) - - /** - * simple subselect emulation: leaves the query untouched for all RDBMS - * that support subselects - * - * @param string the SQL query for the subselect that may only - * return a column - * @param string determines type of the field - * - * @return string the query - * - * @access public - */ - function subSelect($query, $type = false) - { - if ($this->supports('sub_selects') === true) { - return $query; - } - - if (!$this->supports('sub_selects')) { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - $col = $this->queryCol($query, $type); - if (MDB2::isError($col)) { - return $col; - } - if (!is_array($col) || count($col) == 0) { - return 'NULL'; - } - if ($type) { - $this->loadModule('Datatype', null, true); - return $this->datatype->implodeArray($col, $type); - } - return implode(', ', $col); - } - - // }}} - // {{{ function replace($table, $fields) - - /** - * Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT - * query, except that if there is already a row in the table with the same - * key field values, the old row is deleted before the new row is inserted. - * - * The REPLACE type of query does not make part of the SQL standards. Since - * practically only MySQL and SQLite implement it natively, this type of - * query isemulated through this method for other DBMS using standard types - * of queries inside a transaction to assure the atomicity of the operation. - * - * @param string name of the table on which the REPLACE query will - * be executed. - * @param array associative array that describes the fields and the - * values that will be inserted or updated in the specified table. The - * indexes of the array are the names of all the fields of the table. - * The values of the array are also associative arrays that describe - * the values and other properties of the table fields. - * - * Here follows a list of field properties that need to be specified: - * - * value - * Value to be assigned to the specified field. This value may be - * of specified in database independent type format as this - * function can perform the necessary datatype conversions. - * - * Default: this property is required unless the Null property is - * set to 1. - * - * type - * Name of the type of the field. Currently, all types MDB2 - * are supported except for clob and blob. - * - * Default: no type conversion - * - * null - * bool property that indicates that the value for this field - * should be set to null. - * - * The default value for fields missing in INSERT queries may be - * specified the definition of a table. Often, the default value - * is already null, but since the REPLACE may be emulated using - * an UPDATE query, make sure that all fields of the table are - * listed in this function argument array. - * - * Default: 0 - * - * key - * bool property that indicates that this field should be - * handled as a primary key or at least as part of the compound - * unique index of the table that will determine the row that will - * updated if it exists or inserted a new row otherwise. - * - * This function will fail if no key field is specified or if the - * value of a key field is set to null because fields that are - * part of unique index they may not be null. - * - * Default: 0 - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function replace($table, $fields) - { - if (!$this->supports('replace')) { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'replace query is not supported', __FUNCTION__); - } - $count = count($fields); - $condition = $values = array(); - for ($colnum = 0, reset($fields); $colnum < $count; next($fields), $colnum++) { - $name = key($fields); - if (isset($fields[$name]['null']) && $fields[$name]['null']) { - $value = 'NULL'; - } else { - $type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null; - $value = $this->quote($fields[$name]['value'], $type); - } - $values[$name] = $value; - if (isset($fields[$name]['key']) && $fields[$name]['key']) { - if ($value === 'NULL') { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null, - 'key value '.$name.' may not be NULL', __FUNCTION__); - } - $condition[] = $this->quoteIdentifier($name, true) . '=' . $value; - } - } - if (empty($condition)) { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null, - 'not specified which fields are keys', __FUNCTION__); - } - - $result = null; - $in_transaction = $this->in_transaction; - if (!$in_transaction && MDB2::isError($result = $this->beginTransaction())) { - return $result; - } - - $connection = $this->getConnection(); - if (MDB2::isError($connection)) { - return $connection; - } - - $condition = ' WHERE '.implode(' AND ', $condition); - $query = 'DELETE FROM ' . $this->quoteIdentifier($table, true) . $condition; - $result = $this->_doQuery($query, true, $connection); - if (!MDB2::isError($result)) { - $affected_rows = $this->_affectedRows($connection, $result); - $insert = ''; - foreach ($values as $key => $value) { - $insert .= ($insert?', ':'') . $this->quoteIdentifier($key, true); - } - $values = implode(', ', $values); - $query = 'INSERT INTO '. $this->quoteIdentifier($table, true) . "($insert) VALUES ($values)"; - $result = $this->_doQuery($query, true, $connection); - if (!MDB2::isError($result)) { - $affected_rows += $this->_affectedRows($connection, $result);; - } - } - - if (!$in_transaction) { - if (MDB2::isError($result)) { - $this->rollback(); - } else { - $result = $this->commit(); - } - } - - if (MDB2::isError($result)) { - return $result; - } - - return $affected_rows; - } - - // }}} - // {{{ function &prepare($query, $types = null, $result_types = null, $lobs = array()) - - /** - * Prepares a query for multiple execution with execute(). - * With some database backends, this is emulated. - * prepare() requires a generic query as string like - * 'INSERT INTO numbers VALUES(?,?)' or - * 'INSERT INTO numbers VALUES(:foo,:bar)'. - * The ? and :name and are placeholders which can be set using - * bindParam() and the query can be sent off using the execute() method. - * The allowed format for :name can be set with the 'bindname_format' option. - * - * @param string the query to prepare - * @param mixed array that contains the types of the placeholders - * @param mixed array that contains the types of the columns in - * the result set or MDB2_PREPARE_RESULT, if set to - * MDB2_PREPARE_MANIP the query is handled as a manipulation query - * @param mixed key (field) value (parameter) pair for all lob placeholders - * - * @return mixed resource handle for the prepared query on success, - * a MDB2 error on failure - * - * @access public - * @see bindParam, execute - */ - function prepare($query, $types = null, $result_types = null, $lobs = array()) - { - $is_manip = ($result_types === MDB2_PREPARE_MANIP); - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (MDB2::isError($result)) { - return $result; - } - $query = $result; - } - $placeholder_type_guess = $placeholder_type = null; - $question = '?'; - $colon = ':'; - $positions = array(); - $position = 0; - while ($position < strlen($query)) { - $q_position = strpos($query, $question, $position); - $c_position = strpos($query, $colon, $position); - if ($q_position && $c_position) { - $p_position = min($q_position, $c_position); - } elseif ($q_position) { - $p_position = $q_position; - } elseif ($c_position) { - $p_position = $c_position; - } else { - break; - } - if (null === $placeholder_type) { - $placeholder_type_guess = $query[$p_position]; - } - - $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position); - if (MDB2::isError($new_pos)) { - return $new_pos; - } - if ($new_pos != $position) { - $position = $new_pos; - continue; //evaluate again starting from the new position - } - - if ($query[$position] == $placeholder_type_guess) { - if (null === $placeholder_type) { - $placeholder_type = $query[$p_position]; - $question = $colon = $placeholder_type; - if (!empty($types) && is_array($types)) { - if ($placeholder_type == ':') { - if (is_int(key($types))) { - $types_tmp = $types; - $types = array(); - $count = -1; - } - } else { - $types = array_values($types); - } - } - } - if ($placeholder_type == ':') { - $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s'; - $parameter = preg_replace($regexp, '\\1', $query); - if ($parameter === '') { - $err = MDB2_Driver_Common::raiseError(MDB2_ERROR_SYNTAX, null, null, - 'named parameter name must match "bindname_format" option', __FUNCTION__); - return $err; - } - $positions[$p_position] = $parameter; - $query = substr_replace($query, '?', $position, strlen($parameter)+1); - // use parameter name in type array - if (isset($count) && isset($types_tmp[++$count])) { - $types[$parameter] = $types_tmp[$count]; - } - } else { - $positions[$p_position] = count($positions); - } - $position = $p_position + 1; - } else { - $position = $p_position; - } - } - $class_name = 'MDB2_Statement_'.$this->phptype; - $statement = null; - $obj = new $class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset); - $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj)); - return $obj; - } - - // }}} - // {{{ function _skipDelimitedStrings($query, $position, $p_position) - - /** - * Utility method, used by prepare() to avoid replacing placeholders within delimited strings. - * Check if the placeholder is contained within a delimited string. - * If so, skip it and advance the position, otherwise return the current position, - * which is valid - * - * @param string $query - * @param integer $position current string cursor position - * @param integer $p_position placeholder position - * - * @return mixed integer $new_position on success - * MDB2_Error on failure - * - * @access protected - */ - function _skipDelimitedStrings($query, $position, $p_position) - { - $ignores = array(); - $ignores[] = $this->string_quoting; - $ignores[] = $this->identifier_quoting; - $ignores = array_merge($ignores, $this->sql_comments); - - foreach ($ignores as $ignore) { - if (!empty($ignore['start'])) { - if (is_int($start_quote = strpos($query, $ignore['start'], $position)) && $start_quote < $p_position) { - $end_quote = $start_quote; - do { - if (!is_int($end_quote = strpos($query, $ignore['end'], $end_quote + 1))) { - if ($ignore['end'] === "\n") { - $end_quote = strlen($query) - 1; - } else { - $err = MDB2_Driver_Common::raiseError(MDB2_ERROR_SYNTAX, null, null, - 'query with an unterminated text string specified', __FUNCTION__); - return $err; - } - } - } while ($ignore['escape'] - && $end_quote-1 != $start_quote - && $query[($end_quote - 1)] == $ignore['escape'] - && ( $ignore['escape_pattern'] !== $ignore['escape'] - || $query[($end_quote - 2)] != $ignore['escape']) - ); - - $position = $end_quote + 1; - return $position; - } - } - } - return $position; - } - - // }}} - // {{{ function quote($value, $type = null, $quote = true) - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string text string value that is intended to be converted. - * @param string type to which the value should be converted to - * @param bool quote - * @param bool escape wildcards - * - * @return string text string that represents the given argument value in - * a DBMS specific format. - * - * @access public - */ - function quote($value, $type = null, $quote = true, $escape_wildcards = false) - { - $result = $this->loadModule('Datatype', null, true); - if (MDB2::isError($result)) { - return $result; - } - - return $this->datatype->quote($value, $type, $quote, $escape_wildcards); - } - - // }}} - // {{{ function getDeclaration($type, $name, $field) - - /** - * Obtain DBMS specific SQL code portion needed to declare - * of the given type - * - * @param string type to which the value should be converted to - * @param string name the field to be declared. - * @param string definition of the field - * - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * - * @access public - */ - function getDeclaration($type, $name, $field) - { - $result = $this->loadModule('Datatype', null, true); - if (MDB2::isError($result)) { - return $result; - } - return $this->datatype->getDeclaration($type, $name, $field); - } - - // }}} - // {{{ function compareDefinition($current, $previous) - - /** - * Obtain an array of changes that may need to applied - * - * @param array new definition - * @param array old definition - * - * @return array containing all changes that will need to be applied - * - * @access public - */ - function compareDefinition($current, $previous) - { - $result = $this->loadModule('Datatype', null, true); - if (MDB2::isError($result)) { - return $result; - } - return $this->datatype->compareDefinition($current, $previous); - } - - // }}} - // {{{ function supports($feature) - - /** - * Tell whether a DB implementation or its backend extension - * supports a given feature. - * - * @param string name of the feature (see the MDB2 class doc) - * - * @return bool|string if this DB implementation supports a given feature - * false means no, true means native, - * 'emulated' means emulated - * - * @access public - */ - function supports($feature) - { - if (array_key_exists($feature, $this->supported)) { - return $this->supported[$feature]; - } - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - "unknown support feature $feature", __FUNCTION__); - } - - // }}} - // {{{ function getSequenceName($sqn) - - /** - * adds sequence name formatting to a sequence name - * - * @param string name of the sequence - * - * @return string formatted sequence name - * - * @access public - */ - function getSequenceName($sqn) - { - return sprintf($this->options['seqname_format'], - preg_replace('/[^a-z0-9_\-\$.]/i', '_', $sqn)); - } - - // }}} - // {{{ function getIndexName($idx) - - /** - * adds index name formatting to a index name - * - * @param string name of the index - * - * @return string formatted index name - * - * @access public - */ - function getIndexName($idx) - { - return sprintf($this->options['idxname_format'], - preg_replace('/[^a-z0-9_\-\$.]/i', '_', $idx)); - } - - // }}} - // {{{ function nextID($seq_name, $ondemand = true) - - /** - * Returns the next free id of a sequence - * - * @param string name of the sequence - * @param bool when true missing sequences are automatic created - * - * @return mixed MDB2 Error Object or id - * - * @access public - */ - function nextID($seq_name, $ondemand = true) - { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function lastInsertID($table = null, $field = null) - - /** - * Returns the autoincrement ID if supported or $id or fetches the current - * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field) - * - * @param string name of the table into which a new row was inserted - * @param string name of the field into which a new row was inserted - * - * @return mixed MDB2 Error Object or id - * - * @access public - */ - function lastInsertID($table = null, $field = null) - { - return MDB2_Driver_Common::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function currID($seq_name) - - /** - * Returns the current id of a sequence - * - * @param string name of the sequence - * - * @return mixed MDB2 Error Object or id - * - * @access public - */ - function currID($seq_name) - { - $this->warnings[] = 'database does not support getting current - sequence value, the sequence value was incremented'; - return $this->nextID($seq_name); - } - - // }}} - // {{{ function queryOne($query, $type = null, $colnum = 0) - - /** - * Execute the specified query, fetch the value from the first column of - * the first row of the result set and then frees - * the result set. - * - * @param string $query the SELECT query statement to be executed. - * @param string $type optional argument that specifies the expected - * datatype of the result set field, so that an eventual - * conversion may be performed. The default datatype is - * text, meaning that no conversion is performed - * @param mixed $colnum the column number (or name) to fetch - * - * @return mixed MDB2_OK or field value on success, a MDB2 error on failure - * - * @access public - */ - function queryOne($query, $type = null, $colnum = 0) - { - $result = $this->query($query, $type); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $one = $result->fetchOne($colnum); - $result->free(); - return $one; - } - - // }}} - // {{{ function queryRow($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT) - - /** - * Execute the specified query, fetch the values from the first - * row of the result set into an array and then frees - * the result set. - * - * @param string the SELECT query statement to be executed. - * @param array optional array argument that specifies a list of - * expected datatypes of the result set columns, so that the eventual - * conversions may be performed. The default list of datatypes is - * empty, meaning that no conversion is performed. - * @param int how the array data should be indexed - * - * @return mixed MDB2_OK or data array on success, a MDB2 error on failure - * - * @access public - */ - function queryRow($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT) - { - $result = $this->query($query, $types); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $row = $result->fetchRow($fetchmode); - $result->free(); - return $row; - } - - // }}} - // {{{ function queryCol($query, $type = null, $colnum = 0) - - /** - * Execute the specified query, fetch the value from the first column of - * each row of the result set into an array and then frees the result set. - * - * @param string $query the SELECT query statement to be executed. - * @param string $type optional argument that specifies the expected - * datatype of the result set field, so that an eventual - * conversion may be performed. The default datatype is text, - * meaning that no conversion is performed - * @param mixed $colnum the column number (or name) to fetch - * - * @return mixed MDB2_OK or data array on success, a MDB2 error on failure - * @access public - */ - function queryCol($query, $type = null, $colnum = 0) - { - $result = $this->query($query, $type); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $col = $result->fetchCol($colnum); - $result->free(); - return $col; - } - - // }}} - // {{{ function queryAll($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT, $rekey = false, $force_array = false, $group = false) - - /** - * Execute the specified query, fetch all the rows of the result set into - * a two dimensional array and then frees the result set. - * - * @param string the SELECT query statement to be executed. - * @param array optional array argument that specifies a list of - * expected datatypes of the result set columns, so that the eventual - * conversions may be performed. The default list of datatypes is - * empty, meaning that no conversion is performed. - * @param int how the array data should be indexed - * @param bool if set to true, the $all will have the first - * column as its first dimension - * @param bool used only when the query returns exactly - * two columns. If true, the values of the returned array will be - * one-element arrays instead of scalars. - * @param bool if true, the values of the returned array is - * wrapped in another array. If the same key value (in the first - * column) repeats itself, the values will be appended to this array - * instead of overwriting the existing values. - * - * @return mixed MDB2_OK or data array on success, a MDB2 error on failure - * - * @access public - */ - function queryAll($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT, - $rekey = false, $force_array = false, $group = false) - { - $result = $this->query($query, $types); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $all = $result->fetchAll($fetchmode, $rekey, $force_array, $group); - $result->free(); - return $all; - } - - // }}} - // {{{ function delExpect($error_code) - - /** - * This method deletes all occurences of the specified element from - * the expected error codes stack. - * - * @param mixed $error_code error code that should be deleted - * @return mixed list of error codes that were deleted or error - * - * @uses PEAR::delExpect() - */ - public function delExpect($error_code) - { - return $this->pear->delExpect($error_code); - } - - // }}} - // {{{ function expectError($code) - - /** - * This method is used to tell which errors you expect to get. - * Expected errors are always returned with error mode - * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, - * and this method pushes a new element onto it. The list of - * expected errors are in effect until they are popped off the - * stack with the popExpect() method. - * - * Note that this method can not be called statically - * - * @param mixed $code a single error code or an array of error codes to expect - * - * @return int the new depth of the "expected errors" stack - * - * @uses PEAR::expectError() - */ - public function expectError($code = '*') - { - return $this->pear->expectError($code); - } - - // }}} - // {{{ function getStaticProperty($class, $var) - - /** - * If you have a class that's mostly/entirely static, and you need static - * properties, you can use this method to simulate them. Eg. in your method(s) - * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar'); - * You MUST use a reference, or they will not persist! - * - * @param string $class The calling classname, to prevent clashes - * @param string $var The variable to retrieve. - * @return mixed A reference to the variable. If not set it will be - * auto initialised to NULL. - * - * @uses PEAR::getStaticProperty() - */ - public function &getStaticProperty($class, $var) - { - $tmp = $this->pear->getStaticProperty($class, $var); - return $tmp; - } - - // }}} - // {{{ function loadExtension($ext) - - /** - * OS independant PHP extension load. Remember to take care - * on the correct extension name for case sensitive OSes. - * - * @param string $ext The extension name - * @return bool Success or not on the dl() call - * - * @uses PEAR::loadExtension() - */ - public function loadExtension($ext) - { - return $this->pear->loadExtension($ext); - } - - // }}} - // {{{ function popErrorHandling() - - /** - * Pop the last error handler used - * - * @return bool Always true - * - * @see PEAR::pushErrorHandling - * @uses PEAR::popErrorHandling() - */ - public function popErrorHandling() - { - return $this->pear->popErrorHandling(); - } - - // }}} - // {{{ function popExpect() - - /** - * This method pops one element off the expected error codes - * stack. - * - * @return array the list of error codes that were popped - * - * @uses PEAR::popExpect() - */ - public function popExpect() - { - return $this->pear->popExpect(); - } - - // }}} - // {{{ function pushErrorHandling($mode, $options = null) - - /** - * Push a new error handler on top of the error handler options stack. With this - * you can easily override the actual error handler for some code and restore - * it later with popErrorHandling. - * - * @param mixed $mode (same as setErrorHandling) - * @param mixed $options (same as setErrorHandling) - * - * @return bool Always true - * - * @see PEAR::setErrorHandling - * @uses PEAR::pushErrorHandling() - */ - public function pushErrorHandling($mode, $options = null) - { - return $this->pear->pushErrorHandling($mode, $options); - } - - // }}} - // {{{ function registerShutdownFunc($func, $args = array()) - - /** - * Use this function to register a shutdown method for static - * classes. - * - * @param mixed $func The function name (or array of class/method) to call - * @param mixed $args The arguments to pass to the function - * @return void - * - * @uses PEAR::registerShutdownFunc() - */ - public function registerShutdownFunc($func, $args = array()) - { - return $this->pear->registerShutdownFunc($func, $args); - } - - // }}} - // {{{ function setErrorHandling($mode = null, $options = null) - - /** - * Sets how errors generated by this object should be handled. - * Can be invoked both in objects and statically. If called - * statically, setErrorHandling sets the default behaviour for all - * PEAR objects. If called in an object, setErrorHandling sets - * the default behaviour for that object. - * - * @param int $mode - * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION. - * - * @param mixed $options - * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one - * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * - * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected - * to be the callback function or method. A callback - * function is a string with the name of the function, a - * callback method is an array of two elements: the element - * at index 0 is the object, and the element at index 1 is - * the name of the method to call in the object. - * - * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is - * a printf format string used when printing the error - * message. - * - * @access public - * @return void - * @see PEAR_ERROR_RETURN - * @see PEAR_ERROR_PRINT - * @see PEAR_ERROR_TRIGGER - * @see PEAR_ERROR_DIE - * @see PEAR_ERROR_CALLBACK - * @see PEAR_ERROR_EXCEPTION - * - * @since PHP 4.0.5 - * @uses PEAR::setErrorHandling($mode, $options) - */ - public function setErrorHandling($mode = null, $options = null) - { - return $this->pear->setErrorHandling($mode, $options); - } - - /** - * @uses PEAR::staticPopErrorHandling() - */ - public function staticPopErrorHandling() - { - return $this->pear->staticPopErrorHandling(); - } - - // }}} - // {{{ function staticPushErrorHandling($mode, $options = null) - - /** - * @uses PEAR::staticPushErrorHandling($mode, $options) - */ - public function staticPushErrorHandling($mode, $options = null) - { - return $this->pear->staticPushErrorHandling($mode, $options); - } - - // }}} - // {{{ function &throwError($message = null, $code = null, $userinfo = null) - - /** - * Simpler form of raiseError with fewer options. In most cases - * message, code and userinfo are enough. - * - * @param mixed $message a text error message or a PEAR error object - * - * @param int $code a numeric error code (it is up to your class - * to define these if you want to use codes) - * - * @param string $userinfo If you need to pass along for example debug - * information, this parameter is meant for that. - * - * @return object a PEAR error object - * @see PEAR::raiseError - * @uses PEAR::&throwError() - */ - public function &throwError($message = null, $code = null, $userinfo = null) - { - $tmp = $this->pear->throwError($message, $code, $userinfo); - return $tmp; - } - - // }}} -} - -// }}} -// {{{ class MDB2_Result - -/** - * The dummy class that all user space result classes should extend from - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Result -{ -} - -// }}} -// {{{ class MDB2_Result_Common extends MDB2_Result - -/** - * The common result class for MDB2 result objects - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Result_Common extends MDB2_Result -{ - // {{{ Variables (Properties) - - public $db; - public $result; - public $rownum = -1; - public $types = array(); - public $types_assoc = array(); - public $values = array(); - public $offset; - public $offset_count = 0; - public $limit; - public $column_names; - - // }}} - // {{{ constructor: function __construct($db, &$result, $limit = 0, $offset = 0) - - /** - * Constructor - */ - function __construct($db, &$result, $limit = 0, $offset = 0) - { - $this->db = $db; - $this->result = $result; - $this->offset = $offset; - $this->limit = max(0, $limit - 1); - } - - // }}} - // {{{ function setResultTypes($types) - - /** - * Define the list of types to be associated with the columns of a given - * result set. - * - * This function may be called before invoking fetchRow(), fetchOne(), - * fetchCol() and fetchAll() so that the necessary data type - * conversions are performed on the data to be retrieved by them. If this - * function is not called, the type of all result set columns is assumed - * to be text, thus leading to not perform any conversions. - * - * @param array variable that lists the - * data types to be expected in the result set columns. If this array - * contains less types than the number of columns that are returned - * in the result set, the remaining columns are assumed to be of the - * type text. Currently, the types clob and blob are not fully - * supported. - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function setResultTypes($types) - { - $load = $this->db->loadModule('Datatype', null, true); - if (MDB2::isError($load)) { - return $load; - } - $types = $this->db->datatype->checkResultTypes($types); - if (MDB2::isError($types)) { - return $types; - } - foreach ($types as $key => $value) { - if (is_numeric($key)) { - $this->types[$key] = $value; - } else { - $this->types_assoc[$key] = $value; - } - } - return MDB2_OK; - } - - // }}} - // {{{ function seek($rownum = 0) - - /** - * Seek to a specific row in a result set - * - * @param int number of the row where the data can be found - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function seek($rownum = 0) - { - $target_rownum = $rownum - 1; - if ($this->rownum > $target_rownum) { - return MDB2::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'seeking to previous rows not implemented', __FUNCTION__); - } - while ($this->rownum < $target_rownum) { - $this->fetchRow(); - } - return MDB2_OK; - } - - // }}} - // {{{ function &fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null) - - /** - * Fetch and return a row of data - * - * @param int how the array data should be indexed - * @param int number of the row where the data can be found - * - * @return int data array on success, a MDB2 error on failure - * - * @access public - */ - function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null) - { - $err = MDB2::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - return $err; - } - - // }}} - // {{{ function fetchOne($colnum = 0) - - /** - * fetch single column from the next row from a result set - * - * @param int|string the column number (or name) to fetch - * @param int number of the row where the data can be found - * - * @return string data on success, a MDB2 error on failure - * @access public - */ - function fetchOne($colnum = 0, $rownum = null) - { - $fetchmode = is_numeric($colnum) ? MDB2_FETCHMODE_ORDERED : MDB2_FETCHMODE_ASSOC; - $row = $this->fetchRow($fetchmode, $rownum); - if (!is_array($row) || MDB2::isError($row)) { - return $row; - } - if (!array_key_exists($colnum, $row)) { - return MDB2::raiseError(MDB2_ERROR_TRUNCATED, null, null, - 'column is not defined in the result set: '.$colnum, __FUNCTION__); - } - return $row[$colnum]; - } - - // }}} - // {{{ function fetchCol($colnum = 0) - - /** - * Fetch and return a column from the current row pointer position - * - * @param int|string the column number (or name) to fetch - * - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function fetchCol($colnum = 0) - { - $column = array(); - $fetchmode = is_numeric($colnum) ? MDB2_FETCHMODE_ORDERED : MDB2_FETCHMODE_ASSOC; - $row = $this->fetchRow($fetchmode); - if (is_array($row)) { - if (!array_key_exists($colnum, $row)) { - return MDB2::raiseError(MDB2_ERROR_TRUNCATED, null, null, - 'column is not defined in the result set: '.$colnum, __FUNCTION__); - } - do { - $column[] = $row[$colnum]; - } while (is_array($row = $this->fetchRow($fetchmode))); - } - if (MDB2::isError($row)) { - return $row; - } - return $column; - } - - // }}} - // {{{ function fetchAll($fetchmode = MDB2_FETCHMODE_DEFAULT, $rekey = false, $force_array = false, $group = false) - - /** - * Fetch and return all rows from the current row pointer position - * - * @param int $fetchmode the fetch mode to use: - * + MDB2_FETCHMODE_ORDERED - * + MDB2_FETCHMODE_ASSOC - * + MDB2_FETCHMODE_ORDERED | MDB2_FETCHMODE_FLIPPED - * + MDB2_FETCHMODE_ASSOC | MDB2_FETCHMODE_FLIPPED - * @param bool if set to true, the $all will have the first - * column as its first dimension - * @param bool used only when the query returns exactly - * two columns. If true, the values of the returned array will be - * one-element arrays instead of scalars. - * @param bool if true, the values of the returned array is - * wrapped in another array. If the same key value (in the first - * column) repeats itself, the values will be appended to this array - * instead of overwriting the existing values. - * - * @return mixed data array on success, a MDB2 error on failure - * - * @access public - * @see getAssoc() - */ - function fetchAll($fetchmode = MDB2_FETCHMODE_DEFAULT, $rekey = false, - $force_array = false, $group = false) - { - $all = array(); - $row = $this->fetchRow($fetchmode); - if (MDB2::isError($row)) { - return $row; - } elseif (!$row) { - return $all; - } - - $shift_array = $rekey ? false : null; - if (null !== $shift_array) { - if (is_object($row)) { - $colnum = count(get_object_vars($row)); - } else { - $colnum = count($row); - } - if ($colnum < 2) { - return MDB2::raiseError(MDB2_ERROR_TRUNCATED, null, null, - 'rekey feature requires atleast 2 column', __FUNCTION__); - } - $shift_array = (!$force_array && $colnum == 2); - } - - if ($rekey) { - do { - if (is_object($row)) { - $arr = get_object_vars($row); - $key = reset($arr); - unset($row->{$key}); - } else { - if ( $fetchmode == MDB2_FETCHMODE_ASSOC - || $fetchmode == MDB2_FETCHMODE_OBJECT - ) { - $key = reset($row); - unset($row[key($row)]); - } else { - $key = array_shift($row); - } - if ($shift_array) { - $row = array_shift($row); - } - } - if ($group) { - $all[$key][] = $row; - } else { - $all[$key] = $row; - } - } while (($row = $this->fetchRow($fetchmode))); - } elseif ($fetchmode == MDB2_FETCHMODE_FLIPPED) { - do { - foreach ($row as $key => $val) { - $all[$key][] = $val; - } - } while (($row = $this->fetchRow($fetchmode))); - } else { - do { - $all[] = $row; - } while (($row = $this->fetchRow($fetchmode))); - } - - return $all; - } - - // }}} - // {{{ function rowCount() - /** - * Returns the actual row number that was last fetched (count from 0) - * @return int - * - * @access public - */ - function rowCount() - { - return $this->rownum + 1; - } - - // }}} - // {{{ function numRows() - - /** - * Returns the number of rows in a result object - * - * @return mixed MDB2 Error Object or the number of rows - * - * @access public - */ - function numRows() - { - return MDB2::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function nextResult() - - /** - * Move the internal result pointer to the next available result - * - * @return true on success, false if there is no more result set or an error object on failure - * - * @access public - */ - function nextResult() - { - return MDB2::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function getColumnNames() - - /** - * Retrieve the names of columns returned by the DBMS in a query result or - * from the cache. - * - * @param bool If set to true the values are the column names, - * otherwise the names of the columns are the keys. - * @return mixed Array variable that holds the names of columns or an - * MDB2 error on failure. - * Some DBMS may not return any columns when the result set - * does not contain any rows. - * - * @access public - */ - function getColumnNames($flip = false) - { - if (!isset($this->column_names)) { - $result = $this->_getColumnNames(); - if (MDB2::isError($result)) { - return $result; - } - $this->column_names = $result; - } - if ($flip) { - return array_flip($this->column_names); - } - return $this->column_names; - } - - // }}} - // {{{ function _getColumnNames() - - /** - * Retrieve the names of columns returned by the DBMS in a query result. - * - * @return mixed Array variable that holds the names of columns as keys - * or an MDB2 error on failure. - * Some DBMS may not return any columns when the result set - * does not contain any rows. - * - * @access private - */ - function _getColumnNames() - { - return MDB2::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function numCols() - - /** - * Count the number of columns returned by the DBMS in a query result. - * - * @return mixed integer value with the number of columns, a MDB2 error - * on failure - * - * @access public - */ - function numCols() - { - return MDB2::raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ function getResource() - - /** - * return the resource associated with the result object - * - * @return resource - * - * @access public - */ - function getResource() - { - return $this->result; - } - - // }}} - // {{{ function bindColumn($column, &$value, $type = null) - - /** - * Set bind variable to a column. - * - * @param int column number or name - * @param mixed variable reference - * @param string specifies the type of the field - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function bindColumn($column, &$value, $type = null) - { - if (!is_numeric($column)) { - $column_names = $this->getColumnNames(); - if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($this->db->options['field_case'] == CASE_LOWER) { - $column = strtolower($column); - } else { - $column = strtoupper($column); - } - } - $column = $column_names[$column]; - } - $this->values[$column] =& $value; - if (null !== $type) { - $this->types[$column] = $type; - } - return MDB2_OK; - } - - // }}} - // {{{ function _assignBindColumns($row) - - /** - * Bind a variable to a value in the result row. - * - * @param array row data - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access private - */ - function _assignBindColumns($row) - { - $row = array_values($row); - foreach ($row as $column => $value) { - if (array_key_exists($column, $this->values)) { - $this->values[$column] = $value; - } - } - return MDB2_OK; - } - - // }}} - // {{{ function free() - - /** - * Free the internal resources associated with result. - * - * @return bool true on success, false if result is invalid - * - * @access public - */ - function free() - { - $this->result = false; - return MDB2_OK; - } - - // }}} -} - -// }}} -// {{{ class MDB2_Row - -/** - * The simple class that accepts row data as an array - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Row -{ - // {{{ constructor: function __construct(&$row) - - /** - * constructor - * - * @param resource row data as array - */ - function __construct(&$row) - { - foreach ($row as $key => $value) { - $this->$key = &$row[$key]; - } - } - - // }}} -} - -// }}} -// {{{ class MDB2_Statement_Common - -/** - * The common statement class for MDB2 statement objects - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Statement_Common -{ - // {{{ Variables (Properties) - - var $db; - var $statement; - var $query; - var $result_types; - var $types; - var $values = array(); - var $limit; - var $offset; - var $is_manip; - - // }}} - // {{{ constructor: function __construct($db, $statement, $positions, $query, $types, $result_types, $is_manip = false, $limit = null, $offset = null) - - /** - * Constructor - */ - function __construct($db, $statement, $positions, $query, $types, $result_types, $is_manip = false, $limit = null, $offset = null) - { - $this->db = $db; - $this->statement = $statement; - $this->positions = $positions; - $this->query = $query; - $this->types = (array)$types; - $this->result_types = (array)$result_types; - $this->limit = $limit; - $this->is_manip = $is_manip; - $this->offset = $offset; - } - - // }}} - // {{{ function bindValue($parameter, &$value, $type = null) - - /** - * Set the value of a parameter of a prepared query. - * - * @param int the order number of the parameter in the query - * statement. The order number of the first parameter is 1. - * @param mixed value that is meant to be assigned to specified - * parameter. The type of the value depends on the $type argument. - * @param string specifies the type of the field - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function bindValue($parameter, $value, $type = null) - { - if (!is_numeric($parameter)) { - if (strpos($parameter, ':') === 0) { - $parameter = substr($parameter, 1); - } - } - if (!in_array($parameter, $this->positions)) { - return MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__); - } - $this->values[$parameter] = $value; - if (null !== $type) { - $this->types[$parameter] = $type; - } - return MDB2_OK; - } - - // }}} - // {{{ function bindValueArray($values, $types = null) - - /** - * Set the values of multiple a parameter of a prepared query in bulk. - * - * @param array specifies all necessary information - * for bindValue() the array elements must use keys corresponding to - * the number of the position of the parameter. - * @param array specifies the types of the fields - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - * @see bindParam() - */ - function bindValueArray($values, $types = null) - { - $types = is_array($types) ? array_values($types) : array_fill(0, count($values), null); - $parameters = array_keys($values); - $this->db->pushErrorHandling(PEAR_ERROR_RETURN); - $this->db->expectError(MDB2_ERROR_NOT_FOUND); - foreach ($parameters as $key => $parameter) { - $err = $this->bindValue($parameter, $values[$parameter], $types[$key]); - if (MDB2::isError($err)) { - if ($err->getCode() == MDB2_ERROR_NOT_FOUND) { - //ignore (extra value for missing placeholder) - continue; - } - $this->db->popExpect(); - $this->db->popErrorHandling(); - return $err; - } - } - $this->db->popExpect(); - $this->db->popErrorHandling(); - return MDB2_OK; - } - - // }}} - // {{{ function bindParam($parameter, &$value, $type = null) - - /** - * Bind a variable to a parameter of a prepared query. - * - * @param int the order number of the parameter in the query - * statement. The order number of the first parameter is 1. - * @param mixed variable that is meant to be bound to specified - * parameter. The type of the value depends on the $type argument. - * @param string specifies the type of the field - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function bindParam($parameter, &$value, $type = null) - { - if (!is_numeric($parameter)) { - if (strpos($parameter, ':') === 0) { - $parameter = substr($parameter, 1); - } - } - if (!in_array($parameter, $this->positions)) { - return MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__); - } - $this->values[$parameter] =& $value; - if (null !== $type) { - $this->types[$parameter] = $type; - } - return MDB2_OK; - } - - // }}} - // {{{ function bindParamArray(&$values, $types = null) - - /** - * Bind the variables of multiple a parameter of a prepared query in bulk. - * - * @param array specifies all necessary information - * for bindParam() the array elements must use keys corresponding to - * the number of the position of the parameter. - * @param array specifies the types of the fields - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - * @see bindParam() - */ - function bindParamArray(&$values, $types = null) - { - $types = is_array($types) ? array_values($types) : array_fill(0, count($values), null); - $parameters = array_keys($values); - foreach ($parameters as $key => $parameter) { - $err = $this->bindParam($parameter, $values[$parameter], $types[$key]); - if (MDB2::isError($err)) { - return $err; - } - } - return MDB2_OK; - } - - // }}} - // {{{ function &execute($values = null, $result_class = true, $result_wrap_class = false) - - /** - * Execute a prepared query statement. - * - * @param array specifies all necessary information - * for bindParam() the array elements must use keys corresponding - * to the number of the position of the parameter. - * @param mixed specifies which result class to use - * @param mixed specifies which class to wrap results in - * - * @return mixed MDB2_Result or integer (affected rows) on success, - * a MDB2 error on failure - * @access public - */ - function execute($values = null, $result_class = true, $result_wrap_class = false) - { - if (null === $this->positions) { - return MDB2::raiseError(MDB2_ERROR, null, null, - 'Prepared statement has already been freed', __FUNCTION__); - } - - $values = (array)$values; - if (!empty($values)) { - $err = $this->bindValueArray($values); - if (MDB2::isError($err)) { - return MDB2::raiseError(MDB2_ERROR, null, null, - 'Binding Values failed with message: ' . $err->getMessage(), __FUNCTION__); - } - } - $result = $this->_execute($result_class, $result_wrap_class); - return $result; - } - - // }}} - // {{{ function _execute($result_class = true, $result_wrap_class = false) - - /** - * Execute a prepared query statement helper method. - * - * @param mixed specifies which result class to use - * @param mixed specifies which class to wrap results in - * - * @return mixed MDB2_Result or integer (affected rows) on success, - * a MDB2 error on failure - * @access private - */ - function _execute($result_class = true, $result_wrap_class = false) - { - $this->last_query = $this->query; - $query = ''; - $last_position = 0; - foreach ($this->positions as $current_position => $parameter) { - if (!array_key_exists($parameter, $this->values)) { - return MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__); - } - $value = $this->values[$parameter]; - $query.= substr($this->query, $last_position, $current_position - $last_position); - if (!isset($value)) { - $value_quoted = 'NULL'; - } else { - $type = !empty($this->types[$parameter]) ? $this->types[$parameter] : null; - $value_quoted = $this->db->quote($value, $type); - if (MDB2::isError($value_quoted)) { - return $value_quoted; - } - } - $query.= $value_quoted; - $last_position = $current_position + 1; - } - $query.= substr($this->query, $last_position); - - $this->db->offset = $this->offset; - $this->db->limit = $this->limit; - if ($this->is_manip) { - $result = $this->db->exec($query); - } else { - $result = $this->db->query($query, $this->result_types, $result_class, $result_wrap_class); - } - return $result; - } - - // }}} - // {{{ function free() - - /** - * Release resources allocated for the specified prepared query. - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function free() - { - if (null === $this->positions) { - return MDB2::raiseError(MDB2_ERROR, null, null, - 'Prepared statement has already been freed', __FUNCTION__); - } - - $this->statement = null; - $this->positions = null; - $this->query = null; - $this->types = null; - $this->result_types = null; - $this->limit = null; - $this->is_manip = null; - $this->offset = null; - $this->values = null; - - return MDB2_OK; - } - - // }}} -} - -// }}} -// {{{ class MDB2_Module_Common - -/** - * The common modules class for MDB2 module objects - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Module_Common -{ - // {{{ Variables (Properties) - - /** - * contains the key to the global MDB2 instance array of the associated - * MDB2 instance - * - * @var int - * @access protected - */ - protected $db_index; - - // }}} - // {{{ constructor: function __construct($db_index) - - /** - * Constructor - */ - function __construct($db_index) - { - $this->db_index = $db_index; - } - - // }}} - // {{{ function getDBInstance() - - /** - * Get the instance of MDB2 associated with the module instance - * - * @return object MDB2 instance or a MDB2 error on failure - * - * @access public - */ - function getDBInstance() - { - if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) { - $result = $GLOBALS['_MDB2_databases'][$this->db_index]; - } else { - $result = MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'could not find MDB2 instance'); - } - return $result; - } - - // }}} -} - -// }}} -// {{{ function MDB2_closeOpenTransactions() - -/** - * Close any open transactions form persistent connections - * - * @return void - * - * @access public - */ - -function MDB2_closeOpenTransactions() -{ - reset($GLOBALS['_MDB2_databases']); - while (next($GLOBALS['_MDB2_databases'])) { - $key = key($GLOBALS['_MDB2_databases']); - if ($GLOBALS['_MDB2_databases'][$key]->opened_persistent - && $GLOBALS['_MDB2_databases'][$key]->in_transaction - ) { - $GLOBALS['_MDB2_databases'][$key]->rollback(); - } - } -} - -// }}} -// {{{ function MDB2_defaultDebugOutput(&$db, $scope, $message, $is_manip = null) - -/** - * default debug output handler - * - * @param object reference to an MDB2 database object - * @param string usually the method name that triggered the debug call: - * for example 'query', 'prepare', 'execute', 'parameters', - * 'beginTransaction', 'commit', 'rollback' - * @param string message that should be appended to the debug variable - * @param array contains context information about the debug() call - * common keys are: is_manip, time, result etc. - * - * @return void|string optionally return a modified message, this allows - * rewriting a query before being issued or prepared - * - * @access public - */ -function MDB2_defaultDebugOutput(&$db, $scope, $message, $context = array()) -{ - $db->debug_output.= $scope.'('.$db->db_index.'): '; - $db->debug_output.= $message.$db->getOption('log_line_break'); - return $message; -} - -// }}} -?> diff --git a/3rdparty/MDB2/Date.php b/3rdparty/MDB2/Date.php deleted file mode 100644 index ca88eaa347e6cc06a55f9d0fe56a76cc66d6373c..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Date.php +++ /dev/null @@ -1,183 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - */ - -/** - * Several methods to convert the MDB2 native timestamp format (ISO based) - * to and from data structures that are convenient to worth with in side of php. - * For more complex date arithmetic please take a look at the Date package in PEAR - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Date -{ - // {{{ mdbNow() - - /** - * return the current datetime - * - * @return string current datetime in the MDB2 format - * @access public - */ - function mdbNow() - { - return date('Y-m-d H:i:s'); - } - // }}} - - // {{{ mdbToday() - - /** - * return the current date - * - * @return string current date in the MDB2 format - * @access public - */ - function mdbToday() - { - return date('Y-m-d'); - } - // }}} - - // {{{ mdbTime() - - /** - * return the current time - * - * @return string current time in the MDB2 format - * @access public - */ - function mdbTime() - { - return date('H:i:s'); - } - // }}} - - // {{{ date2Mdbstamp() - - /** - * convert a date into a MDB2 timestamp - * - * @param int hour of the date - * @param int minute of the date - * @param int second of the date - * @param int month of the date - * @param int day of the date - * @param int year of the date - * - * @return string a valid MDB2 timestamp - * @access public - */ - function date2Mdbstamp($hour = null, $minute = null, $second = null, - $month = null, $day = null, $year = null) - { - return MDB2_Date::unix2Mdbstamp(mktime($hour, $minute, $second, $month, $day, $year, -1)); - } - // }}} - - // {{{ unix2Mdbstamp() - - /** - * convert a unix timestamp into a MDB2 timestamp - * - * @param int a valid unix timestamp - * - * @return string a valid MDB2 timestamp - * @access public - */ - function unix2Mdbstamp($unix_timestamp) - { - return date('Y-m-d H:i:s', $unix_timestamp); - } - // }}} - - // {{{ mdbstamp2Unix() - - /** - * convert a MDB2 timestamp into a unix timestamp - * - * @param int a valid MDB2 timestamp - * @return string unix timestamp with the time stored in the MDB2 format - * - * @access public - */ - function mdbstamp2Unix($mdb_timestamp) - { - $arr = MDB2_Date::mdbstamp2Date($mdb_timestamp); - - return mktime($arr['hour'], $arr['minute'], $arr['second'], $arr['month'], $arr['day'], $arr['year'], -1); - } - // }}} - - // {{{ mdbstamp2Date() - - /** - * convert a MDB2 timestamp into an array containing all - * values necessary to pass to php's date() function - * - * @param int a valid MDB2 timestamp - * - * @return array with the time split - * @access public - */ - function mdbstamp2Date($mdb_timestamp) - { - list($arr['year'], $arr['month'], $arr['day'], $arr['hour'], $arr['minute'], $arr['second']) = - sscanf($mdb_timestamp, "%04u-%02u-%02u %02u:%02u:%02u"); - return $arr; - } - // }}} -} - -?> diff --git a/3rdparty/MDB2/Driver/Datatype/Common.php b/3rdparty/MDB2/Driver/Datatype/Common.php deleted file mode 100644 index dd7f1c7e0a9502987d8a37d7ac9ea8ad516a1c1e..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Datatype/Common.php +++ /dev/null @@ -1,1842 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/LOB.php'; - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - */ - -/** - * MDB2_Driver_Common: Base class that is extended by each MDB2 driver - * - * To load this module in the MDB2 object: - * $mdb->loadModule('Datatype'); - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_Common extends MDB2_Module_Common -{ - var $valid_default_values = array( - 'text' => '', - 'boolean' => true, - 'integer' => 0, - 'decimal' => 0.0, - 'float' => 0.0, - 'timestamp' => '1970-01-01 00:00:00', - 'time' => '00:00:00', - 'date' => '1970-01-01', - 'clob' => '', - 'blob' => '', - ); - - /** - * contains all LOB objects created with this MDB2 instance - * @var array - * @access protected - */ - var $lobs = array(); - - // }}} - // {{{ getValidTypes() - - /** - * Get the list of valid types - * - * This function returns an array of valid types as keys with the values - * being possible default values for all native datatypes and mapped types - * for custom datatypes. - * - * @return mixed array on success, a MDB2 error on failure - * @access public - */ - function getValidTypes() - { - $types = $this->valid_default_values; - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (!empty($db->options['datatype_map'])) { - foreach ($db->options['datatype_map'] as $type => $mapped_type) { - if (array_key_exists($mapped_type, $types)) { - $types[$type] = $types[$mapped_type]; - } elseif (!empty($db->options['datatype_map_callback'][$type])) { - $parameter = array('type' => $type, 'mapped_type' => $mapped_type); - $default = call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter)); - $types[$type] = $default; - } - } - } - return $types; - } - - // }}} - // {{{ checkResultTypes() - - /** - * Define the list of types to be associated with the columns of a given - * result set. - * - * This function may be called before invoking fetchRow(), fetchOne() - * fetchCole() and fetchAll() so that the necessary data type - * conversions are performed on the data to be retrieved by them. If this - * function is not called, the type of all result set columns is assumed - * to be text, thus leading to not perform any conversions. - * - * @param array $types array variable that lists the - * data types to be expected in the result set columns. If this array - * contains less types than the number of columns that are returned - * in the result set, the remaining columns are assumed to be of the - * type text. Currently, the types clob and blob are not fully - * supported. - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function checkResultTypes($types) - { - $types = is_array($types) ? $types : array($types); - foreach ($types as $key => $type) { - if (!isset($this->valid_default_values[$type])) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (empty($db->options['datatype_map'][$type])) { - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - $type.' for '.$key.' is not a supported column type', __FUNCTION__); - } - } - } - return $types; - } - - // }}} - // {{{ _baseConvertResult() - - /** - * General type conversion method - * - * @param mixed $value reference to a value to be converted - * @param string $type specifies which type to convert to - * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text - * @return object an MDB2 error on failure - * @access protected - */ - function _baseConvertResult($value, $type, $rtrim = true) - { - switch ($type) { - case 'text': - if ($rtrim) { - $value = rtrim($value); - } - return $value; - case 'integer': - return intval($value); - case 'boolean': - return !empty($value); - case 'decimal': - return $value; - case 'float': - return doubleval($value); - case 'date': - return $value; - case 'time': - return $value; - case 'timestamp': - return $value; - case 'clob': - case 'blob': - $this->lobs[] = array( - 'buffer' => null, - 'position' => 0, - 'lob_index' => null, - 'endOfLOB' => false, - 'resource' => $value, - 'value' => null, - 'loaded' => false, - ); - end($this->lobs); - $lob_index = key($this->lobs); - $this->lobs[$lob_index]['lob_index'] = $lob_index; - return fopen('MDB2LOB://'.$lob_index.'@'.$this->db_index, 'r+'); - } - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_INVALID, null, null, - 'attempt to convert result value to an unknown type :' . $type, __FUNCTION__); - } - - // }}} - // {{{ convertResult() - - /** - * Convert a value to a RDBMS indipendent MDB2 type - * - * @param mixed $value value to be converted - * @param string $type specifies which type to convert to - * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text - * @return mixed converted value - * @access public - */ - function convertResult($value, $type, $rtrim = true) - { - if (null === $value) { - return null; - } - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (!empty($db->options['datatype_map'][$type])) { - $type = $db->options['datatype_map'][$type]; - if (!empty($db->options['datatype_map_callback'][$type])) { - $parameter = array('type' => $type, 'value' => $value, 'rtrim' => $rtrim); - return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter)); - } - } - return $this->_baseConvertResult($value, $type, $rtrim); - } - - // }}} - // {{{ convertResultRow() - - /** - * Convert a result row - * - * @param array $types - * @param array $row specifies the types to convert to - * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text - * @return mixed MDB2_OK on success, an MDB2 error on failure - * @access public - */ - function convertResultRow($types, $row, $rtrim = true) - { - //$types = $this->_sortResultFieldTypes(array_keys($row), $types); - $keys = array_keys($row); - if (is_int($keys[0])) { - $types = $this->_sortResultFieldTypes($keys, $types); - } - foreach ($row as $key => $value) { - if (empty($types[$key])) { - continue; - } - $value = $this->convertResult($row[$key], $types[$key], $rtrim); - if (PEAR::isError($value)) { - return $value; - } - $row[$key] = $value; - } - return $row; - } - - // }}} - // {{{ _sortResultFieldTypes() - - /** - * convert a result row - * - * @param array $types - * @param array $row specifies the types to convert to - * @param bool $rtrim if to rtrim text values or not - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function _sortResultFieldTypes($columns, $types) - { - $n_cols = count($columns); - $n_types = count($types); - if ($n_cols > $n_types) { - for ($i= $n_cols - $n_types; $i >= 0; $i--) { - $types[] = null; - } - } - $sorted_types = array(); - foreach ($columns as $col) { - $sorted_types[$col] = null; - } - foreach ($types as $name => $type) { - if (array_key_exists($name, $sorted_types)) { - $sorted_types[$name] = $type; - unset($types[$name]); - } - } - // if there are left types in the array, fill the null values of the - // sorted array with them, in order. - if (count($types)) { - reset($types); - foreach (array_keys($sorted_types) as $k) { - if (null === $sorted_types[$k]) { - $sorted_types[$k] = current($types); - next($types); - } - } - } - return $sorted_types; - } - - // }}} - // {{{ getDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare - * of the given type - * - * @param string $type type to which the value should be converted to - * @param string $name name the field to be declared. - * @param string $field definition of the field - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getDeclaration($type, $name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!empty($db->options['datatype_map'][$type])) { - $type = $db->options['datatype_map'][$type]; - if (!empty($db->options['datatype_map_callback'][$type])) { - $parameter = array('type' => $type, 'name' => $name, 'field' => $field); - return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter)); - } - $field['type'] = $type; - } - - if (!method_exists($this, "_get{$type}Declaration")) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'type not defined: '.$type, __FUNCTION__); - } - return $this->{"_get{$type}Declaration"}($name, $field); - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - $length = !empty($field['length']) ? $field['length'] : $db->options['default_text_field_length']; - $fixed = !empty($field['fixed']) ? $field['fixed'] : false; - return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')') - : ($length ? 'VARCHAR('.$length.')' : 'TEXT'); - case 'clob': - return 'TEXT'; - case 'blob': - return 'TEXT'; - case 'integer': - return 'INT'; - case 'boolean': - return 'INT'; - case 'date': - return 'CHAR ('.strlen('YYYY-MM-DD').')'; - case 'time': - return 'CHAR ('.strlen('HH:MM:SS').')'; - case 'timestamp': - return 'CHAR ('.strlen('YYYY-MM-DD HH:MM:SS').')'; - case 'float': - return 'TEXT'; - case 'decimal': - return 'TEXT'; - } - return ''; - } - - // }}} - // {{{ _getDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a generic type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * charset - * Text value with the default CHARACTER SET for this field. - * collation - * Text value with the default COLLATION for this field. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field, or a MDB2_Error on failure - * @access protected - */ - function _getDeclaration($name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $declaration_options = $db->datatype->_getDeclarationOptions($field); - if (PEAR::isError($declaration_options)) { - return $declaration_options; - } - return $name.' '.$this->getTypeDeclaration($field).$declaration_options; - } - - // }}} - // {{{ _getDeclarationOptions() - - /** - * Obtain DBMS specific SQL code portion needed to declare a generic type - * field to be used in statement like CREATE TABLE, without the field name - * and type values (ie. just the character set, default value, if the - * field is permitted to be NULL or not, and the collation options). - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Text value to be used as default for this field. - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * charset - * Text value with the default CHARACTER SET for this field. - * collation - * Text value with the default COLLATION for this field. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field's options. - * @access protected - */ - function _getDeclarationOptions($field) - { - $charset = empty($field['charset']) ? '' : - ' '.$this->_getCharsetFieldDeclaration($field['charset']); - - $notnull = empty($field['notnull']) ? '' : ' NOT NULL'; - $default = ''; - if (array_key_exists('default', $field)) { - if ($field['default'] === '') { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $valid_default_values = $this->getValidTypes(); - $field['default'] = $valid_default_values[$field['type']]; - if ($field['default'] === '' && ($db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL)) { - $field['default'] = ' '; - } - } - if (null !== $field['default']) { - $default = ' DEFAULT ' . $this->quote($field['default'], $field['type']); - } - } - - $collation = empty($field['collation']) ? '' : - ' '.$this->_getCollationFieldDeclaration($field['collation']); - - return $charset.$default.$notnull.$collation; - } - - // }}} - // {{{ _getCharsetFieldDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to set the CHARACTER SET - * of a field declaration to be used in statements like CREATE TABLE. - * - * @param string $charset name of the charset - * @return string DBMS specific SQL code portion needed to set the CHARACTER SET - * of a field declaration. - */ - function _getCharsetFieldDeclaration($charset) - { - return ''; - } - - // }}} - // {{{ _getCollationFieldDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to set the COLLATION - * of a field declaration to be used in statements like CREATE TABLE. - * - * @param string $collation name of the collation - * @return string DBMS specific SQL code portion needed to set the COLLATION - * of a field declaration. - */ - function _getCollationFieldDeclaration($collation) - { - return ''; - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field should be - * declared as unsigned integer if possible. - * - * default - * Integer value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (!empty($field['unsigned'])) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer"; - } - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ _getTextDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTextDeclaration($name, $field) - { - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function _getCLOBDeclaration($name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $notnull = empty($field['notnull']) ? '' : ' NOT NULL'; - $name = $db->quoteIdentifier($name, true); - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $notnull = empty($field['notnull']) ? '' : ' NOT NULL'; - $name = $db->quoteIdentifier($name, true); - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getBooleanDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a boolean type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Boolean value to be used as default for this field. - * - * notnullL - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBooleanDeclaration($name, $field) - { - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a timestamp - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Timestamp value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a time - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Float value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Decimal value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - return $this->_getDeclaration($name, $field); - } - - // }}} - // {{{ compareDefinition() - - /** - * Obtain an array of changes that may need to applied - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access public - */ - function compareDefinition($current, $previous) - { - $type = !empty($current['type']) ? $current['type'] : null; - - if (!method_exists($this, "_compare{$type}Definition")) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (!empty($db->options['datatype_map_callback'][$type])) { - $parameter = array('current' => $current, 'previous' => $previous); - $change = call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter)); - return $change; - } - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'type "'.$current['type'].'" is not yet supported', __FUNCTION__); - } - - if (empty($previous['type']) || $previous['type'] != $type) { - return $current; - } - - $change = $this->{"_compare{$type}Definition"}($current, $previous); - - if ($previous['type'] != $type) { - $change['type'] = true; - } - - $previous_notnull = !empty($previous['notnull']) ? $previous['notnull'] : false; - $notnull = !empty($current['notnull']) ? $current['notnull'] : false; - if ($previous_notnull != $notnull) { - $change['notnull'] = true; - } - - $previous_default = array_key_exists('default', $previous) ? $previous['default'] : - ($previous_notnull ? '' : null); - $default = array_key_exists('default', $current) ? $current['default'] : - ($notnull ? '' : null); - if ($previous_default !== $default) { - $change['default'] = true; - } - - return $change; - } - - // }}} - // {{{ _compareIntegerDefinition() - - /** - * Obtain an array of changes that may need to applied to an integer field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareIntegerDefinition($current, $previous) - { - $change = array(); - $previous_unsigned = !empty($previous['unsigned']) ? $previous['unsigned'] : false; - $unsigned = !empty($current['unsigned']) ? $current['unsigned'] : false; - if ($previous_unsigned != $unsigned) { - $change['unsigned'] = true; - } - $previous_autoincrement = !empty($previous['autoincrement']) ? $previous['autoincrement'] : false; - $autoincrement = !empty($current['autoincrement']) ? $current['autoincrement'] : false; - if ($previous_autoincrement != $autoincrement) { - $change['autoincrement'] = true; - } - return $change; - } - - // }}} - // {{{ _compareTextDefinition() - - /** - * Obtain an array of changes that may need to applied to an text field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareTextDefinition($current, $previous) - { - $change = array(); - $previous_length = !empty($previous['length']) ? $previous['length'] : 0; - $length = !empty($current['length']) ? $current['length'] : 0; - if ($previous_length != $length) { - $change['length'] = true; - } - $previous_fixed = !empty($previous['fixed']) ? $previous['fixed'] : 0; - $fixed = !empty($current['fixed']) ? $current['fixed'] : 0; - if ($previous_fixed != $fixed) { - $change['fixed'] = true; - } - return $change; - } - - // }}} - // {{{ _compareCLOBDefinition() - - /** - * Obtain an array of changes that may need to applied to an CLOB field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareCLOBDefinition($current, $previous) - { - return $this->_compareTextDefinition($current, $previous); - } - - // }}} - // {{{ _compareBLOBDefinition() - - /** - * Obtain an array of changes that may need to applied to an BLOB field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareBLOBDefinition($current, $previous) - { - return $this->_compareTextDefinition($current, $previous); - } - - // }}} - // {{{ _compareDateDefinition() - - /** - * Obtain an array of changes that may need to applied to an date field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareDateDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareTimeDefinition() - - /** - * Obtain an array of changes that may need to applied to an time field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareTimeDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareTimestampDefinition() - - /** - * Obtain an array of changes that may need to applied to an timestamp field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareTimestampDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareBooleanDefinition() - - /** - * Obtain an array of changes that may need to applied to an boolean field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareBooleanDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareFloatDefinition() - - /** - * Obtain an array of changes that may need to applied to an float field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareFloatDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareDecimalDefinition() - - /** - * Obtain an array of changes that may need to applied to an decimal field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containing all changes that will need to be applied - * @access protected - */ - function _compareDecimalDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ quote() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param string $type type to which the value should be converted to - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access public - */ - function quote($value, $type = null, $quote = true, $escape_wildcards = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if ((null === $value) - || ($value === '' && $db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL) - ) { - if (!$quote) { - return null; - } - return 'NULL'; - } - - if (null === $type) { - switch (gettype($value)) { - case 'integer': - $type = 'integer'; - break; - case 'double': - // todo: default to decimal as float is quite unusual - // $type = 'float'; - $type = 'decimal'; - break; - case 'boolean': - $type = 'boolean'; - break; - case 'array': - $value = serialize($value); - case 'object': - $type = 'text'; - break; - default: - if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/', $value)) { - $type = 'timestamp'; - } elseif (preg_match('/^\d{2}:\d{2}$/', $value)) { - $type = 'time'; - } elseif (preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) { - $type = 'date'; - } else { - $type = 'text'; - } - break; - } - } elseif (!empty($db->options['datatype_map'][$type])) { - $type = $db->options['datatype_map'][$type]; - if (!empty($db->options['datatype_map_callback'][$type])) { - $parameter = array('type' => $type, 'value' => $value, 'quote' => $quote, 'escape_wildcards' => $escape_wildcards); - return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter)); - } - } - - if (!method_exists($this, "_quote{$type}")) { - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'type not defined: '.$type, __FUNCTION__); - } - $value = $this->{"_quote{$type}"}($value, $quote, $escape_wildcards); - if ($quote && $escape_wildcards && $db->string_quoting['escape_pattern'] - && $db->string_quoting['escape'] !== $db->string_quoting['escape_pattern'] - ) { - $value.= $this->patternEscapeString(); - } - return $value; - } - - // }}} - // {{{ _quoteInteger() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteInteger($value, $quote, $escape_wildcards) - { - return (int)$value; - } - - // }}} - // {{{ _quoteText() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that already contains any DBMS specific - * escaped character sequences. - * @access protected - */ - function _quoteText($value, $quote, $escape_wildcards) - { - if (!$quote) { - return $value; - } - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $value = $db->escape($value, $escape_wildcards); - if (PEAR::isError($value)) { - return $value; - } - return "'".$value."'"; - } - - // }}} - // {{{ _readFile() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _readFile($value) - { - $close = false; - if (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) { - $close = true; - if (strtolower($match[1]) == 'file://') { - $value = $match[2]; - } - $value = @fopen($value, 'r'); - } - - if (is_resource($value)) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $fp = $value; - $value = ''; - while (!@feof($fp)) { - $value.= @fread($fp, $db->options['lob_buffer_length']); - } - if ($close) { - @fclose($fp); - } - } - - return $value; - } - - // }}} - // {{{ _quoteLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteLOB($value, $quote, $escape_wildcards) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if ($db->options['lob_allow_url_include']) { - $value = $this->_readFile($value); - if (PEAR::isError($value)) { - return $value; - } - } - return $this->_quoteText($value, $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteCLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteCLOB($value, $quote, $escape_wildcards) - { - return $this->_quoteLOB($value, $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value, $quote, $escape_wildcards) - { - return $this->_quoteLOB($value, $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteBoolean() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBoolean($value, $quote, $escape_wildcards) - { - return ($value ? 1 : 0); - } - - // }}} - // {{{ _quoteDate() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDate($value, $quote, $escape_wildcards) - { - if ($value === 'CURRENT_DATE') { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (isset($db->function) && is_object($this->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) { - return $db->function->now('date'); - } - return 'CURRENT_DATE'; - } - return $this->_quoteText($value, $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteTimestamp() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTimestamp($value, $quote, $escape_wildcards) - { - if ($value === 'CURRENT_TIMESTAMP') { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (isset($db->function) && is_object($db->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) { - return $db->function->now('timestamp'); - } - return 'CURRENT_TIMESTAMP'; - } - return $this->_quoteText($value, $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteTime() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTime($value, $quote, $escape_wildcards) - { - if ($value === 'CURRENT_TIME') { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (isset($db->function) && is_object($this->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) { - return $db->function->now('time'); - } - return 'CURRENT_TIME'; - } - return $this->_quoteText($value, $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value, $quote, $escape_wildcards) - { - if (preg_match('/^(.*)e([-+])(\d+)$/i', $value, $matches)) { - $decimal = $this->_quoteDecimal($matches[1], $quote, $escape_wildcards); - $sign = $matches[2]; - $exponent = str_pad($matches[3], 2, '0', STR_PAD_LEFT); - $value = $decimal.'E'.$sign.$exponent; - } else { - $value = $this->_quoteDecimal($value, $quote, $escape_wildcards); - } - return $value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value, $quote, $escape_wildcards) - { - $value = (string)$value; - $value = preg_replace('/[^\d\.,\-+eE]/', '', $value); - if (preg_match('/[^\.\d]/', $value)) { - if (strpos($value, ',')) { - // 1000,00 - if (!strpos($value, '.')) { - // convert the last "," to a "." - $value = strrev(str_replace(',', '.', strrev($value))); - // 1.000,00 - } elseif (strpos($value, '.') && strpos($value, '.') < strpos($value, ',')) { - $value = str_replace('.', '', $value); - // convert the last "," to a "." - $value = strrev(str_replace(',', '.', strrev($value))); - // 1,000.00 - } else { - $value = str_replace(',', '', $value); - } - } - } - return $value; - } - - // }}} - // {{{ writeLOBToFile() - - /** - * retrieve LOB from the database - * - * @param resource $lob stream handle - * @param string $file name of the file into which the LOb should be fetched - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function writeLOBToFile($lob, $file) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (preg_match('/^(\w+:\/\/)(.*)$/', $file, $match)) { - if ($match[1] == 'file://') { - $file = $match[2]; - } - } - - $fp = @fopen($file, 'wb'); - while (!@feof($lob)) { - $result = @fread($lob, $db->options['lob_buffer_length']); - $read = strlen($result); - if (@fwrite($fp, $result, $read) != $read) { - @fclose($fp); - return $db->raiseError(MDB2_ERROR, null, null, - 'could not write to the output file', __FUNCTION__); - } - } - @fclose($fp); - return MDB2_OK; - } - - // }}} - // {{{ _retrieveLOB() - - /** - * retrieve LOB from the database - * - * @param array $lob array - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function _retrieveLOB(&$lob) - { - if (null === $lob['value']) { - $lob['value'] = $lob['resource']; - } - $lob['loaded'] = true; - return MDB2_OK; - } - - // }}} - // {{{ readLOB() - - /** - * Read data from large object input stream. - * - * @param resource $lob stream handle - * @param string $data reference to a variable that will hold data - * to be read from the large object input stream - * @param integer $length value that indicates the largest ammount ofdata - * to be read from the large object input stream. - * @return mixed the effective number of bytes read from the large object - * input stream on sucess or an MDB2 error object. - * @access public - * @see endOfLOB() - */ - function _readLOB($lob, $length) - { - return substr($lob['value'], $lob['position'], $length); - } - - // }}} - // {{{ _endOfLOB() - - /** - * Determine whether it was reached the end of the large object and - * therefore there is no more data to be read for the its input stream. - * - * @param array $lob array - * @return mixed true or false on success, a MDB2 error on failure - * @access protected - */ - function _endOfLOB($lob) - { - return $lob['endOfLOB']; - } - - // }}} - // {{{ destroyLOB() - - /** - * Free any resources allocated during the lifetime of the large object - * handler object. - * - * @param resource $lob stream handle - * @access public - */ - function destroyLOB($lob) - { - $lob_data = stream_get_meta_data($lob); - $lob_index = $lob_data['wrapper_data']->lob_index; - fclose($lob); - if (isset($this->lobs[$lob_index])) { - $this->_destroyLOB($this->lobs[$lob_index]); - unset($this->lobs[$lob_index]); - } - return MDB2_OK; - } - - // }}} - // {{{ _destroyLOB() - - /** - * Free any resources allocated during the lifetime of the large object - * handler object. - * - * @param array $lob array - * @access private - */ - function _destroyLOB(&$lob) - { - return MDB2_OK; - } - - // }}} - // {{{ implodeArray() - - /** - * apply a type to all values of an array and return as a comma seperated string - * useful for generating IN statements - * - * @access public - * - * @param array $array data array - * @param string $type determines type of the field - * - * @return string comma seperated values - */ - function implodeArray($array, $type = false) - { - if (!is_array($array) || empty($array)) { - return 'NULL'; - } - if ($type) { - foreach ($array as $value) { - $return[] = $this->quote($value, $type); - } - } else { - $return = $array; - } - return implode(', ', $return); - } - - // }}} - // {{{ matchPattern() - - /** - * build a pattern matching string - * - * @access public - * - * @param array $pattern even keys are strings, odd are patterns (% and _) - * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future) - * @param string $field optional field name that is being matched against - * (might be required when emulating ILIKE) - * - * @return string SQL pattern - */ - function matchPattern($pattern, $operator = null, $field = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $match = ''; - if (null !== $operator) { - $operator = strtoupper($operator); - switch ($operator) { - // case insensitive - case 'ILIKE': - if (null === $field) { - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'case insensitive LIKE matching requires passing the field name', __FUNCTION__); - } - $db->loadModule('Function', null, true); - $match = $db->function->lower($field).' LIKE '; - break; - case 'NOT ILIKE': - if (null === $field) { - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'case insensitive NOT ILIKE matching requires passing the field name', __FUNCTION__); - } - $db->loadModule('Function', null, true); - $match = $db->function->lower($field).' NOT LIKE '; - break; - // case sensitive - case 'LIKE': - $match = (null === $field) ? 'LIKE ' : ($field.' LIKE '); - break; - case 'NOT LIKE': - $match = (null === $field) ? 'NOT LIKE ' : ($field.' NOT LIKE '); - break; - default: - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'not a supported operator type:'. $operator, __FUNCTION__); - } - } - $match.= "'"; - foreach ($pattern as $key => $value) { - if ($key % 2) { - $match.= $value; - } else { - $escaped = $db->escape($value); - if (PEAR::isError($escaped)) { - return $escaped; - } - $match.= $db->escapePattern($escaped); - } - } - $match.= "'"; - $match.= $this->patternEscapeString(); - return $match; - } - - // }}} - // {{{ patternEscapeString() - - /** - * build string to define pattern escape character - * - * @access public - * - * @return string define pattern escape character - */ - function patternEscapeString() - { - return ''; - } - - // }}} - // {{{ mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types, length, sign, fixed - * @access public - */ - function mapNativeDatatype($field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - // If the user has specified an option to map the native field - // type to a custom MDB2 datatype... - $db_type = strtok($field['type'], '(), '); - if (!empty($db->options['nativetype_map_callback'][$db_type])) { - return call_user_func_array($db->options['nativetype_map_callback'][$db_type], array($db, $field)); - } - - // Otherwise perform the built-in (i.e. normal) MDB2 native type to - // MDB2 datatype conversion - return $this->_mapNativeDatatype($field); - } - - // }}} - // {{{ _mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types, length, sign, fixed - * @access public - */ - function _mapNativeDatatype($field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ mapPrepareDatatype() - - /** - * Maps an mdb2 datatype to mysqli prepare type - * - * @param string $type - * @return string - * @access public - */ - function mapPrepareDatatype($type) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!empty($db->options['datatype_map'][$type])) { - $type = $db->options['datatype_map'][$type]; - if (!empty($db->options['datatype_map_callback'][$type])) { - $parameter = array('type' => $type); - return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter)); - } - } - - return $type; - } -} -?> diff --git a/3rdparty/MDB2/Driver/Datatype/mysql.php b/3rdparty/MDB2/Driver/Datatype/mysql.php deleted file mode 100644 index d23eed23ff7c5f4aada016fbdd72b814c6df2d49..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Datatype/mysql.php +++ /dev/null @@ -1,602 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 MySQL driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_mysql extends MDB2_Driver_Datatype_Common -{ - // {{{ _getCharsetFieldDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to set the CHARACTER SET - * of a field declaration to be used in statements like CREATE TABLE. - * - * @param string $charset name of the charset - * @return string DBMS specific SQL code portion needed to set the CHARACTER SET - * of a field declaration. - */ - function _getCharsetFieldDeclaration($charset) - { - return 'CHARACTER SET '.$charset; - } - - // }}} - // {{{ _getCollationFieldDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to set the COLLATION - * of a field declaration to be used in statements like CREATE TABLE. - * - * @param string $collation name of the collation - * @return string DBMS specific SQL code portion needed to set the COLLATION - * of a field declaration. - */ - function _getCollationFieldDeclaration($collation) - { - return 'COLLATE '.$collation; - } - - // }}} - // {{{ getDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare - * of the given type - * - * @param string $type type to which the value should be converted to - * @param string $name name the field to be declared. - * @param string $field definition of the field - * - * @return string DBMS-specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getDeclaration($type, $name, $field) - { - // MySQL DDL syntax forbids combining NOT NULL with DEFAULT NULL. - // To get a default of NULL for NOT NULL columns, omit it. - if ( isset($field['notnull']) - && !empty($field['notnull']) - && array_key_exists('default', $field) // do not use isset() here! - && null === $field['default'] - ) { - unset($field['default']); - } - return parent::getDeclaration($type, $name, $field); - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - if (empty($field['length']) && array_key_exists('default', $field)) { - $field['length'] = $db->varchar_max_length; - } - $length = !empty($field['length']) ? $field['length'] : false; - $fixed = !empty($field['fixed']) ? $field['fixed'] : false; - return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR(255)') - : ($length ? 'VARCHAR('.$length.')' : 'TEXT'); - case 'clob': - if (!empty($field['length'])) { - $length = $field['length']; - if ($length <= 255) { - return 'TINYTEXT'; - } elseif ($length <= 65532) { - return 'TEXT'; - } elseif ($length <= 16777215) { - return 'MEDIUMTEXT'; - } - } - return 'LONGTEXT'; - case 'blob': - if (!empty($field['length'])) { - $length = $field['length']; - if ($length <= 255) { - return 'TINYBLOB'; - } elseif ($length <= 65532) { - return 'BLOB'; - } elseif ($length <= 16777215) { - return 'MEDIUMBLOB'; - } - } - return 'LONGBLOB'; - case 'integer': - if (!empty($field['length'])) { - $length = $field['length']; - if ($length <= 1) { - return 'TINYINT'; - } elseif ($length == 2) { - return 'SMALLINT'; - } elseif ($length == 3) { - return 'MEDIUMINT'; - } elseif ($length == 4) { - return 'INT'; - } elseif ($length > 4) { - return 'BIGINT'; - } - } - return 'INT'; - case 'boolean': - return 'TINYINT(1)'; - case 'date': - return 'DATE'; - case 'time': - return 'TIME'; - case 'timestamp': - return 'DATETIME'; - case 'float': - $l = ''; - if (!empty($field['length'])) { - $l = '(' . $field['length']; - if (!empty($field['scale'])) { - $l .= ',' . $field['scale']; - } - $l .= ')'; - } - return 'DOUBLE' . $l; - case 'decimal': - $length = !empty($field['length']) ? $field['length'] : 18; - $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places']; - return 'DECIMAL('.$length.','.$scale.')'; - } - return ''; - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned integer if - * possible. - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $default = $autoinc = ''; - if (!empty($field['autoincrement'])) { - $autoinc = ' AUTO_INCREMENT PRIMARY KEY'; - } elseif (array_key_exists('default', $field)) { - if ($field['default'] === '') { - $field['default'] = empty($field['notnull']) ? null : 0; - } - $default = ' DEFAULT '.$this->quote($field['default'], 'integer'); - } - - $notnull = empty($field['notnull']) ? '' : ' NOT NULL'; - $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED'; - if (empty($default) && empty($notnull)) { - $default = ' DEFAULT NULL'; - } - $name = $db->quoteIdentifier($name, true); - return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull.$autoinc; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned float if - * possible. - * - * default - * float value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - // Since AUTO_INCREMENT can be used for integer or floating-point types, - // reuse the INTEGER declaration - // @see http://bugs.mysql.com/bug.php?id=31032 - return $this->_getIntegerDeclaration($name, $field); - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned integer if - * possible. - * - * default - * Decimal value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $default = ''; - if (array_key_exists('default', $field)) { - if ($field['default'] === '') { - $field['default'] = empty($field['notnull']) ? null : 0; - } - $default = ' DEFAULT '.$this->quote($field['default'], 'integer'); - } elseif (empty($field['notnull'])) { - $default = ' DEFAULT NULL'; - } - - $notnull = empty($field['notnull']) ? '' : ' NOT NULL'; - $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED'; - $name = $db->quoteIdentifier($name, true); - return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull; - } - - // }}} - // {{{ matchPattern() - - /** - * build a pattern matching string - * - * @access public - * - * @param array $pattern even keys are strings, odd are patterns (% and _) - * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future) - * @param string $field optional field name that is being matched against - * (might be required when emulating ILIKE) - * - * @return string SQL pattern - */ - function matchPattern($pattern, $operator = null, $field = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $match = ''; - if (null !== $operator) { - $field = (null === $field) ? '' : $field.' '; - $operator = strtoupper($operator); - switch ($operator) { - // case insensitive - case 'ILIKE': - $match = $field.'LIKE '; - break; - case 'NOT ILIKE': - $match = $field.'NOT LIKE '; - break; - // case sensitive - case 'LIKE': - $match = $field.'LIKE BINARY '; - break; - case 'NOT LIKE': - $match = $field.'NOT LIKE BINARY '; - break; - default: - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'not a supported operator type:'. $operator, __FUNCTION__); - } - } - $match.= "'"; - foreach ($pattern as $key => $value) { - if ($key % 2) { - $match.= $value; - } else { - $match.= $db->escapePattern($db->escape($value)); - } - } - $match.= "'"; - $match.= $this->patternEscapeString(); - return $match; - } - - // }}} - // {{{ _mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types, length, sign, fixed - * @access public - */ - function _mapNativeDatatype($field) - { - $db_type = strtolower($field['type']); - $db_type = strtok($db_type, '(), '); - if ($db_type == 'national') { - $db_type = strtok('(), '); - } - if (!empty($field['length'])) { - $length = strtok($field['length'], ', '); - $decimal = strtok(', '); - } else { - $length = strtok('(), '); - $decimal = strtok('(), '); - } - $type = array(); - $unsigned = $fixed = null; - switch ($db_type) { - case 'tinyint': - $type[] = 'integer'; - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 1; - break; - case 'smallint': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 2; - break; - case 'mediumint': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 3; - break; - case 'int': - case 'integer': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 4; - break; - case 'bigint': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 8; - break; - case 'tinytext': - case 'mediumtext': - case 'longtext': - case 'text': - case 'varchar': - $fixed = false; - case 'string': - case 'char': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } elseif (strstr($db_type, 'text')) { - $type[] = 'clob'; - if ($decimal == 'binary') { - $type[] = 'blob'; - } - $type = array_reverse($type); - } - if ($fixed !== false) { - $fixed = true; - } - break; - case 'enum': - $type[] = 'text'; - preg_match_all('/\'.+\'/U', $field['type'], $matches); - $length = 0; - $fixed = false; - if (is_array($matches)) { - foreach ($matches[0] as $value) { - $length = max($length, strlen($value)-2); - } - if ($length == '1' && count($matches[0]) == 2) { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } - } - $type[] = 'integer'; - case 'set': - $fixed = false; - $type[] = 'text'; - $type[] = 'integer'; - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'datetime': - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'double': - case 'real': - $type[] = 'float'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - if ($decimal !== false) { - $length = $length.','.$decimal; - } - break; - case 'unknown': - case 'decimal': - case 'numeric': - $type[] = 'decimal'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - if ($decimal !== false) { - $length = $length.','.$decimal; - } - break; - case 'tinyblob': - case 'mediumblob': - case 'longblob': - case 'blob': - $type[] = 'blob'; - $length = null; - break; - case 'binary': - case 'varbinary': - $type[] = 'blob'; - break; - case 'year': - $type[] = 'integer'; - $type[] = 'date'; - $length = null; - break; - default: - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'unknown database attribute type: '.$db_type, __FUNCTION__); - } - - if ((int)$length <= 0) { - $length = null; - } - - return array($type, $length, $unsigned, $fixed); - } - - // }}} -} - -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Datatype/oci8.php b/3rdparty/MDB2/Driver/Datatype/oci8.php deleted file mode 100644 index 4d2e792a80e903ace73704786532811b8cfaa932..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Datatype/oci8.php +++ /dev/null @@ -1,499 +0,0 @@ - | -// +----------------------------------------------------------------------+ - -// $Id: oci8.php 295587 2010-02-28 17:16:38Z quipo $ - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 OCI8 driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_oci8 extends MDB2_Driver_Datatype_Common -{ - // {{{ _baseConvertResult() - - /** - * general type conversion method - * - * @param mixed $value refernce to a value to be converted - * @param string $type specifies which type to convert to - * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text - * @return object a MDB2 error on failure - * @access protected - */ - function _baseConvertResult($value, $type, $rtrim = true) - { - if (null === $value) { - return null; - } - switch ($type) { - case 'text': - if (is_object($value) && is_a($value, 'OCI-Lob')) { - //LOB => fetch into variable - $clob = $this->_baseConvertResult($value, 'clob', $rtrim); - if (!PEAR::isError($clob) && is_resource($clob)) { - $clob_value = ''; - while (!feof($clob)) { - $clob_value .= fread($clob, 8192); - } - $this->destroyLOB($clob); - } - $value = $clob_value; - } - if ($rtrim) { - $value = rtrim($value); - } - return $value; - case 'date': - return substr($value, 0, strlen('YYYY-MM-DD')); - case 'time': - return substr($value, strlen('YYYY-MM-DD '), strlen('HH:MI:SS')); - } - return parent::_baseConvertResult($value, $type, $rtrim); - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - $length = !empty($field['length']) - ? $field['length'] : $db->options['default_text_field_length']; - $fixed = !empty($field['fixed']) ? $field['fixed'] : false; - return $fixed ? 'CHAR('.$length.')' : 'VARCHAR2('.$length.')'; - case 'clob': - return 'CLOB'; - case 'blob': - return 'BLOB'; - case 'integer': - if (!empty($field['length'])) { - switch((int)$field['length']) { - case 1: $digit = 3; break; - case 2: $digit = 5; break; - case 3: $digit = 8; break; - case 4: $digit = 10; break; - case 5: $digit = 13; break; - case 6: $digit = 15; break; - case 7: $digit = 17; break; - case 8: $digit = 20; break; - default: $digit = 10; - } - return 'NUMBER('.$digit.')'; - } - return 'INT'; - case 'boolean': - return 'NUMBER(1)'; - case 'date': - case 'time': - case 'timestamp': - return 'DATE'; - case 'float': - return 'NUMBER'; - case 'decimal': - $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places']; - return 'NUMBER(*,'.$scale.')'; - } - } - - // }}} - // {{{ _quoteCLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteCLOB($value, $quote, $escape_wildcards) - { - return 'EMPTY_CLOB()'; - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value, $quote, $escape_wildcards) - { - return 'EMPTY_BLOB()'; - } - - // }}} - // {{{ _quoteDate() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDate($value, $quote, $escape_wildcards) - { - return $this->_quoteText("$value 00:00:00", $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteTimestamp() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - //function _quoteTimestamp($value, $quote, $escape_wildcards) - //{ - // return $this->_quoteText($value, $quote, $escape_wildcards); - //} - - // }}} - // {{{ _quoteTime() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTime($value, $quote, $escape_wildcards) - { - return $this->_quoteText("0001-01-01 $value", $quote, $escape_wildcards); - } - - // }}} - // {{{ writeLOBToFile() - - /** - * retrieve LOB from the database - * - * @param array $lob array - * @param string $file name of the file into which the LOb should be fetched - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function writeLOBToFile($lob, $file) - { - if (preg_match('/^(\w+:\/\/)(.*)$/', $file, $match)) { - if ($match[1] == 'file://') { - $file = $match[2]; - } - } - $lob_data = stream_get_meta_data($lob); - $lob_index = $lob_data['wrapper_data']->lob_index; - $result = $this->lobs[$lob_index]['resource']->writetofile($file); - $this->lobs[$lob_index]['resource']->seek(0); - if (!$result) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(null, null, null, - 'Unable to write LOB to file', __FUNCTION__); - } - return MDB2_OK; - } - - // }}} - // {{{ _retrieveLOB() - - /** - * retrieve LOB from the database - * - * @param array $lob array - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function _retrieveLOB(&$lob) - { - if (!is_object($lob['resource'])) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'attemped to retrieve LOB from non existing or NULL column', __FUNCTION__); - } - - if (!$lob['loaded'] -# && !method_exists($lob['resource'], 'read') - ) { - $lob['value'] = $lob['resource']->load(); - $lob['resource']->seek(0); - } - $lob['loaded'] = true; - return MDB2_OK; - } - - // }}} - // {{{ _readLOB() - - /** - * Read data from large object input stream. - * - * @param array $lob array - * @param blob $data reference to a variable that will hold data to be - * read from the large object input stream - * @param int $length integer value that indicates the largest ammount of - * data to be read from the large object input stream. - * @return mixed length on success, a MDB2 error on failure - * @access protected - */ - function _readLOB($lob, $length) - { - if ($lob['loaded']) { - return parent::_readLOB($lob, $length); - } - - if (!is_object($lob['resource'])) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'attemped to retrieve LOB from non existing or NULL column', __FUNCTION__); - } - - $data = $lob['resource']->read($length); - if (!is_string($data)) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(null, null, null, - 'Unable to read LOB', __FUNCTION__); - } - return $data; - } - - // }}} - // {{{ patternEscapeString() - - /** - * build string to define escape pattern string - * - * @access public - * - * - * @return string define escape pattern - */ - function patternEscapeString() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - return " ESCAPE '". $db->string_quoting['escape_pattern'] ."'"; - } - - // }}} - // {{{ _mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types, length, sign, fixed - * @access public - */ - function _mapNativeDatatype($field) - { - $db_type = strtolower($field['type']); - $type = array(); - $length = $unsigned = $fixed = null; - if (!empty($field['length'])) { - $length = $field['length']; - } - switch ($db_type) { - case 'integer': - case 'pls_integer': - case 'binary_integer': - $type[] = 'integer'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } - break; - case 'varchar': - case 'varchar2': - case 'nvarchar2': - $fixed = false; - case 'char': - case 'nchar': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } - if ($fixed !== false) { - $fixed = true; - } - break; - case 'date': - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'float': - $type[] = 'float'; - break; - case 'number': - if (!empty($field['scale'])) { - $type[] = 'decimal'; - $length = $length.','.$field['scale']; - } else { - $type[] = 'integer'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } - } - break; - case 'long': - $type[] = 'text'; - case 'clob': - case 'nclob': - $type[] = 'clob'; - break; - case 'blob': - case 'raw': - case 'long raw': - case 'bfile': - $type[] = 'blob'; - $length = null; - break; - case 'rowid': - case 'urowid': - default: - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'unknown database attribute type: '.$db_type, __FUNCTION__); - } - - if ((int)$length <= 0) { - $length = null; - } - - return array($type, $length, $unsigned, $fixed); - } -} - -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Datatype/pgsql.php b/3rdparty/MDB2/Driver/Datatype/pgsql.php deleted file mode 100644 index db2fa279024bcae8be1700edb36cb7fea624164a..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Datatype/pgsql.php +++ /dev/null @@ -1,579 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 PostGreSQL driver - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_Driver_Datatype_pgsql extends MDB2_Driver_Datatype_Common -{ - // {{{ _baseConvertResult() - - /** - * General type conversion method - * - * @param mixed $value refernce to a value to be converted - * @param string $type specifies which type to convert to - * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text - * @return object a MDB2 error on failure - * @access protected - */ - function _baseConvertResult($value, $type, $rtrim = true) - { - if (null === $value) { - return null; - } - switch ($type) { - case 'boolean': - return $value == 't'; - case 'float': - return doubleval($value); - case 'date': - return $value; - case 'time': - return substr($value, 0, strlen('HH:MM:SS')); - case 'timestamp': - return substr($value, 0, strlen('YYYY-MM-DD HH:MM:SS')); - case 'blob': - $value = pg_unescape_bytea($value); - return parent::_baseConvertResult($value, $type, $rtrim); - } - return parent::_baseConvertResult($value, $type, $rtrim); - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - $length = !empty($field['length']) ? $field['length'] : false; - $fixed = !empty($field['fixed']) ? $field['fixed'] : false; - return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')') - : ($length ? 'VARCHAR('.$length.')' : 'TEXT'); - case 'clob': - return 'TEXT'; - case 'blob': - return 'BYTEA'; - case 'integer': - if (!empty($field['autoincrement'])) { - if (!empty($field['length'])) { - $length = $field['length']; - if ($length > 4) { - return 'BIGSERIAL PRIMARY KEY'; - } - } - return 'SERIAL PRIMARY KEY'; - } - if (!empty($field['length'])) { - $length = $field['length']; - if ($length <= 2) { - return 'SMALLINT'; - } elseif ($length == 3 || $length == 4) { - return 'INT'; - } elseif ($length > 4) { - return 'BIGINT'; - } - } - return 'INT'; - case 'boolean': - return 'BOOLEAN'; - case 'date': - return 'DATE'; - case 'time': - return 'TIME without time zone'; - case 'timestamp': - return 'TIMESTAMP without time zone'; - case 'float': - return 'FLOAT8'; - case 'decimal': - $length = !empty($field['length']) ? $field['length'] : 18; - $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places']; - return 'NUMERIC('.$length.','.$scale.')'; - } - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field should be - * declared as unsigned integer if possible. - * - * default - * Integer value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!empty($field['unsigned'])) { - $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer"; - } - if (!empty($field['autoincrement'])) { - $name = $db->quoteIdentifier($name, true); - return $name.' '.$this->getTypeDeclaration($field); - } - $default = ''; - if (array_key_exists('default', $field)) { - if ($field['default'] === '') { - $field['default'] = empty($field['notnull']) ? null : 0; - } - $default = ' DEFAULT '.$this->quote($field['default'], 'integer'); - } - - $notnull = empty($field['notnull']) ? '' : ' NOT NULL'; - if (empty($default) && empty($notnull)) { - $default = ' DEFAULT NULL'; - } - $name = $db->quoteIdentifier($name, true); - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _quoteCLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteCLOB($value, $quote, $escape_wildcards) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if ($db->options['lob_allow_url_include']) { - $value = $this->_readFile($value); - if (PEAR::isError($value)) { - return $value; - } - } - return $this->_quoteText($value, $quote, $escape_wildcards); - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value, $quote, $escape_wildcards) - { - if (!$quote) { - return $value; - } - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if ($db->options['lob_allow_url_include']) { - $value = $this->_readFile($value); - if (PEAR::isError($value)) { - return $value; - } - } - if (version_compare(PHP_VERSION, '5.2.0RC6', '>=')) { - $connection = $db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - $value = @pg_escape_bytea($connection, $value); - } else { - $value = @pg_escape_bytea($value); - } - return "'".$value."'"; - } - - // }}} - // {{{ _quoteBoolean() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param bool $quote determines if the value should be quoted and escaped - * @param bool $escape_wildcards if to escape escape wildcards - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBoolean($value, $quote, $escape_wildcards) - { - $value = $value ? 't' : 'f'; - if (!$quote) { - return $value; - } - return "'".$value."'"; - } - - // }}} - // {{{ matchPattern() - - /** - * build a pattern matching string - * - * @access public - * - * @param array $pattern even keys are strings, odd are patterns (% and _) - * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future) - * @param string $field optional field name that is being matched against - * (might be required when emulating ILIKE) - * - * @return string SQL pattern - */ - function matchPattern($pattern, $operator = null, $field = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $match = ''; - if (null !== $operator) { - $field = (null === $field) ? '' : $field.' '; - $operator = strtoupper($operator); - switch ($operator) { - // case insensitive - case 'ILIKE': - $match = $field.'ILIKE '; - break; - case 'NOT ILIKE': - $match = $field.'NOT ILIKE '; - break; - // case sensitive - case 'LIKE': - $match = $field.'LIKE '; - break; - case 'NOT LIKE': - $match = $field.'NOT LIKE '; - break; - default: - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'not a supported operator type:'. $operator, __FUNCTION__); - } - } - $match.= "'"; - foreach ($pattern as $key => $value) { - if ($key % 2) { - $match.= $value; - } else { - $match.= $db->escapePattern($db->escape($value)); - } - } - $match.= "'"; - $match.= $this->patternEscapeString(); - return $match; - } - - // }}} - // {{{ patternEscapeString() - - /** - * build string to define escape pattern string - * - * @access public - * - * - * @return string define escape pattern - */ - function patternEscapeString() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - return ' ESCAPE '.$this->quote($db->string_quoting['escape_pattern']); - } - - // }}} - // {{{ _mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types, length, sign, fixed - * @access public - */ - function _mapNativeDatatype($field) - { - $db_type = strtolower($field['type']); - $length = $field['length']; - $type = array(); - $unsigned = $fixed = null; - switch ($db_type) { - case 'smallint': - case 'int2': - $type[] = 'integer'; - $unsigned = false; - $length = 2; - if ($length == '2') { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } - break; - case 'int': - case 'int4': - case 'integer': - case 'serial': - case 'serial4': - $type[] = 'integer'; - $unsigned = false; - $length = 4; - break; - case 'bigint': - case 'int8': - case 'bigserial': - case 'serial8': - $type[] = 'integer'; - $unsigned = false; - $length = 8; - break; - case 'bool': - case 'boolean': - $type[] = 'boolean'; - $length = null; - break; - case 'text': - case 'varchar': - $fixed = false; - case 'unknown': - case 'char': - case 'bpchar': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } elseif (strstr($db_type, 'text')) { - $type[] = 'clob'; - $type = array_reverse($type); - } - if ($fixed !== false) { - $fixed = true; - } - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'datetime': - case 'timestamp': - case 'timestamptz': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'float4': - case 'float8': - case 'double': - case 'real': - $type[] = 'float'; - break; - case 'decimal': - case 'money': - case 'numeric': - $type[] = 'decimal'; - if (isset($field['scale'])) { - $length = $length.','.$field['scale']; - } - break; - case 'tinyblob': - case 'mediumblob': - case 'longblob': - case 'blob': - case 'bytea': - $type[] = 'blob'; - $length = null; - break; - case 'oid': - $type[] = 'blob'; - $type[] = 'clob'; - $length = null; - break; - case 'year': - $type[] = 'integer'; - $type[] = 'date'; - $length = null; - break; - default: - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'unknown database attribute type: '.$db_type, __FUNCTION__); - } - - if ((int)$length <= 0) { - $length = null; - } - - return array($type, $length, $unsigned, $fixed); - } - - // }}} - // {{{ mapPrepareDatatype() - - /** - * Maps an mdb2 datatype to native prepare type - * - * @param string $type - * @return string - * @access public - */ - function mapPrepareDatatype($type) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!empty($db->options['datatype_map'][$type])) { - $type = $db->options['datatype_map'][$type]; - if (!empty($db->options['datatype_map_callback'][$type])) { - $parameter = array('type' => $type); - return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter)); - } - } - - switch ($type) { - case 'integer': - return 'int'; - case 'boolean': - return 'bool'; - case 'decimal': - case 'float': - return 'numeric'; - case 'clob': - return 'text'; - case 'blob': - return 'bytea'; - default: - break; - } - return $type; - } - // }}} -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Datatype/sqlite.php b/3rdparty/MDB2/Driver/Datatype/sqlite.php deleted file mode 100644 index 50475a36282e97db22b3cb21f39ad18bde901fde..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Datatype/sqlite.php +++ /dev/null @@ -1,418 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 SQLite driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_sqlite extends MDB2_Driver_Datatype_Common -{ - // {{{ _getCollationFieldDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to set the COLLATION - * of a field declaration to be used in statements like CREATE TABLE. - * - * @param string $collation name of the collation - * - * @return string DBMS specific SQL code portion needed to set the COLLATION - * of a field declaration. - */ - function _getCollationFieldDeclaration($collation) - { - return 'COLLATE '.$collation; - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - $length = !empty($field['length']) - ? $field['length'] : false; - $fixed = !empty($field['fixed']) ? $field['fixed'] : false; - return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')') - : ($length ? 'VARCHAR('.$length.')' : 'TEXT'); - case 'clob': - if (!empty($field['length'])) { - $length = $field['length']; - if ($length <= 255) { - return 'TINYTEXT'; - } elseif ($length <= 65532) { - return 'TEXT'; - } elseif ($length <= 16777215) { - return 'MEDIUMTEXT'; - } - } - return 'LONGTEXT'; - case 'blob': - if (!empty($field['length'])) { - $length = $field['length']; - if ($length <= 255) { - return 'TINYBLOB'; - } elseif ($length <= 65532) { - return 'BLOB'; - } elseif ($length <= 16777215) { - return 'MEDIUMBLOB'; - } - } - return 'LONGBLOB'; - case 'integer': - if (!empty($field['length'])) { - $length = $field['length']; - if ($length <= 2) { - return 'SMALLINT'; - } elseif ($length == 3 || $length == 4) { - return 'INTEGER'; - } elseif ($length > 4) { - return 'BIGINT'; - } - } - return 'INTEGER'; - case 'boolean': - return 'BOOLEAN'; - case 'date': - return 'DATE'; - case 'time': - return 'TIME'; - case 'timestamp': - return 'DATETIME'; - case 'float': - return 'DOUBLE'.($db->options['fixed_float'] ? '('. - ($db->options['fixed_float']+2).','.$db->options['fixed_float'].')' : ''); - case 'decimal': - $length = !empty($field['length']) ? $field['length'] : 18; - $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places']; - return 'DECIMAL('.$length.','.$scale.')'; - } - return ''; - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned integer if - * possible. - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $default = $autoinc = ''; - if (!empty($field['autoincrement'])) { - $autoinc = ' PRIMARY KEY'; - } elseif (array_key_exists('default', $field)) { - if ($field['default'] === '') { - $field['default'] = empty($field['notnull']) ? null : 0; - } - $default = ' DEFAULT '.$this->quote($field['default'], 'integer'); - } - - $notnull = empty($field['notnull']) ? '' : ' NOT NULL'; - $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED'; - if (empty($default) && empty($notnull)) { - $default = ' DEFAULT NULL'; - } - $name = $db->quoteIdentifier($name, true); - return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull.$autoinc; - } - - // }}} - // {{{ matchPattern() - - /** - * build a pattern matching string - * - * @access public - * - * @param array $pattern even keys are strings, odd are patterns (% and _) - * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future) - * @param string $field optional field name that is being matched against - * (might be required when emulating ILIKE) - * - * @return string SQL pattern - */ - function matchPattern($pattern, $operator = null, $field = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $match = ''; - if (null !== $operator) { - $field = (null === $field) ? '' : $field.' '; - $operator = strtoupper($operator); - switch ($operator) { - // case insensitive - case 'ILIKE': - $match = $field.'LIKE '; - break; - case 'NOT ILIKE': - $match = $field.'NOT LIKE '; - break; - // case sensitive - case 'LIKE': - $match = $field.'LIKE '; - break; - case 'NOT LIKE': - $match = $field.'NOT LIKE '; - break; - default: - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'not a supported operator type:'. $operator, __FUNCTION__); - } - } - $match.= "'"; - foreach ($pattern as $key => $value) { - if ($key % 2) { - $match.= $value; - } else { - $match.= $db->escapePattern($db->escape($value)); - } - } - $match.= "'"; - $match.= $this->patternEscapeString(); - return $match; - } - - // }}} - // {{{ _mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types, length, sign, fixed - * @access public - */ - function _mapNativeDatatype($field) - { - $db_type = strtolower($field['type']); - $length = !empty($field['length']) ? $field['length'] : null; - $unsigned = !empty($field['unsigned']) ? $field['unsigned'] : null; - $fixed = null; - $type = array(); - switch ($db_type) { - case 'boolean': - $type[] = 'boolean'; - break; - case 'tinyint': - $type[] = 'integer'; - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 1; - break; - case 'smallint': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 2; - break; - case 'mediumint': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 3; - break; - case 'int': - case 'integer': - case 'serial': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 4; - break; - case 'bigint': - case 'bigserial': - $type[] = 'integer'; - $unsigned = preg_match('/ unsigned/i', $field['type']); - $length = 8; - break; - case 'clob': - $type[] = 'clob'; - $fixed = false; - break; - case 'tinytext': - case 'mediumtext': - case 'longtext': - case 'text': - case 'varchar': - case 'varchar2': - $fixed = false; - case 'char': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^(is|has)/', $field['name'])) { - $type = array_reverse($type); - } - } elseif (strstr($db_type, 'text')) { - $type[] = 'clob'; - $type = array_reverse($type); - } - if ($fixed !== false) { - $fixed = true; - } - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'datetime': - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'double': - case 'real': - $type[] = 'float'; - break; - case 'decimal': - case 'numeric': - $type[] = 'decimal'; - $length = $length.','.$field['decimal']; - break; - case 'tinyblob': - case 'mediumblob': - case 'longblob': - case 'blob': - $type[] = 'blob'; - $length = null; - break; - case 'year': - $type[] = 'integer'; - $type[] = 'date'; - $length = null; - break; - default: - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'unknown database attribute type: '.$db_type, __FUNCTION__); - } - - if ((int)$length <= 0) { - $length = null; - } - - return array($type, $length, $unsigned, $fixed); - } - - // }}} -} - -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Function/Common.php b/3rdparty/MDB2/Driver/Function/Common.php deleted file mode 100644 index 5a780fd48e851d5027b55217a696661e0e33dce6..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Function/Common.php +++ /dev/null @@ -1,293 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - */ - -/** - * Base class for the function modules that is extended by each MDB2 driver - * - * To load this module in the MDB2 object: - * $mdb->loadModule('Function'); - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Function_Common extends MDB2_Module_Common -{ - // {{{ executeStoredProc() - - /** - * Execute a stored procedure and return any results - * - * @param string $name string that identifies the function to execute - * @param mixed $params array that contains the paramaters to pass the stored proc - * @param mixed $types array that contains the types of the columns in - * the result set - * @param mixed $result_class string which specifies which result class to use - * @param mixed $result_wrap_class string which specifies which class to wrap results in - * - * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - return $error; - } - - // }}} - // {{{ functionTable() - - /** - * return string for internal table used when calling only a function - * - * @return string for internal table used when calling only a function - * @access public - */ - function functionTable() - { - return ''; - } - - // }}} - // {{{ now() - - /** - * Return string to call a variable with the current timestamp inside an SQL statement - * There are three special variables for current date and time: - * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type) - * - CURRENT_DATE (date, DATE type) - * - CURRENT_TIME (time, TIME type) - * - * @param string $type 'timestamp' | 'time' | 'date' - * - * @return string to call a variable with the current timestamp - * @access public - */ - function now($type = 'timestamp') - { - switch ($type) { - case 'time': - return 'CURRENT_TIME'; - case 'date': - return 'CURRENT_DATE'; - case 'timestamp': - default: - return 'CURRENT_TIMESTAMP'; - } - } - - // }}} - // {{{ unixtimestamp() - - /** - * return string to call a function to get the unix timestamp from a iso timestamp - * - * @param string $expression - * - * @return string to call a variable with the timestamp - * @access public - */ - function unixtimestamp($expression) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - return $error; - } - - // }}} - // {{{ substring() - - /** - * return string to call a function to get a substring inside an SQL statement - * - * @return string to call a function to get a substring - * @access public - */ - function substring($value, $position = 1, $length = null) - { - if (null !== $length) { - return "SUBSTRING($value FROM $position FOR $length)"; - } - return "SUBSTRING($value FROM $position)"; - } - - // }}} - // {{{ replace() - - /** - * return string to call a function to get replace inside an SQL statement. - * - * @return string to call a function to get a replace - * @access public - */ - function replace($str, $from_str, $to_str) - { - return "REPLACE($str, $from_str , $to_str)"; - } - - // }}} - // {{{ concat() - - /** - * Returns string to concatenate two or more string parameters - * - * @param string $value1 - * @param string $value2 - * @param string $values... - * - * @return string to concatenate two strings - * @access public - */ - function concat($value1, $value2) - { - $args = func_get_args(); - return "(".implode(' || ', $args).")"; - } - - // }}} - // {{{ random() - - /** - * return string to call a function to get random value inside an SQL statement - * - * @return return string to generate float between 0 and 1 - * @access public - */ - function random() - { - return 'RAND()'; - } - - // }}} - // {{{ lower() - - /** - * return string to call a function to lower the case of an expression - * - * @param string $expression - * - * @return return string to lower case of an expression - * @access public - */ - function lower($expression) - { - return "LOWER($expression)"; - } - - // }}} - // {{{ upper() - - /** - * return string to call a function to upper the case of an expression - * - * @param string $expression - * - * @return return string to upper case of an expression - * @access public - */ - function upper($expression) - { - return "UPPER($expression)"; - } - - // }}} - // {{{ length() - - /** - * return string to call a function to get the length of a string expression - * - * @param string $expression - * - * @return return string to get the string expression length - * @access public - */ - function length($expression) - { - return "LENGTH($expression)"; - } - - // }}} - // {{{ guid() - - /** - * Returns global unique identifier - * - * @return string to get global unique identifier - * @access public - */ - function guid() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - return $error; - } - - // }}} -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Function/mysql.php b/3rdparty/MDB2/Driver/Function/mysql.php deleted file mode 100644 index 90fdafc973c1e869137d6c5f9a7d7e3175e4b501..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Function/mysql.php +++ /dev/null @@ -1,136 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Function/Common.php'; - -/** - * MDB2 MySQL driver for the function modules - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Function_mysql extends MDB2_Driver_Function_Common -{ - // }}} - // {{{ executeStoredProc() - - /** - * Execute a stored procedure and return any results - * - * @param string $name string that identifies the function to execute - * @param mixed $params array that contains the paramaters to pass the stored proc - * @param mixed $types array that contains the types of the columns in - * the result set - * @param mixed $result_class string which specifies which result class to use - * @param mixed $result_wrap_class string which specifies which class to wrap results in - * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'CALL '.$name; - $query .= $params ? '('.implode(', ', $params).')' : '()'; - return $db->query($query, $types, $result_class, $result_wrap_class); - } - - // }}} - // {{{ unixtimestamp() - - /** - * return string to call a function to get the unix timestamp from a iso timestamp - * - * @param string $expression - * - * @return string to call a variable with the timestamp - * @access public - */ - function unixtimestamp($expression) - { - return 'UNIX_TIMESTAMP('. $expression.')'; - } - - // }}} - // {{{ concat() - - /** - * Returns string to concatenate two or more string parameters - * - * @param string $value1 - * @param string $value2 - * @param string $values... - * @return string to concatenate two strings - * @access public - **/ - function concat($value1, $value2) - { - $args = func_get_args(); - return "CONCAT(".implode(', ', $args).")"; - } - - // }}} - // {{{ guid() - - /** - * Returns global unique identifier - * - * @return string to get global unique identifier - * @access public - */ - function guid() - { - return 'UUID()'; - } - - // }}} -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Function/oci8.php b/3rdparty/MDB2/Driver/Function/oci8.php deleted file mode 100644 index 757d17fcb8b8f8f7ef9458fc340c14f3d1953734..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Function/oci8.php +++ /dev/null @@ -1,187 +0,0 @@ - | -// +----------------------------------------------------------------------+ - -// $Id: oci8.php 295587 2010-02-28 17:16:38Z quipo $ - -require_once 'MDB2/Driver/Function/Common.php'; - -/** - * MDB2 oci8 driver for the function modules - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Function_oci8 extends MDB2_Driver_Function_Common -{ - // {{{ executeStoredProc() - - /** - * Execute a stored procedure and return any results - * - * @param string $name string that identifies the function to execute - * @param mixed $params array that contains the paramaters to pass the stored proc - * @param mixed $types array that contains the types of the columns in - * the result set - * @param mixed $result_class string which specifies which result class to use - * @param mixed $result_wrap_class string which specifies which class to wrap results in - * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'EXEC '.$name; - $query .= $params ? '('.implode(', ', $params).')' : '()'; - return $db->query($query, $types, $result_class, $result_wrap_class); - } - - // }}} - // {{{ functionTable() - - /** - * return string for internal table used when calling only a function - * - * @return string for internal table used when calling only a function - * @access public - */ - function functionTable() - { - return ' FROM dual'; - } - - // }}} - // {{{ now() - - /** - * Return string to call a variable with the current timestamp inside an SQL statement - * There are three special variables for current date and time: - * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type) - * - CURRENT_DATE (date, DATE type) - * - CURRENT_TIME (time, TIME type) - * - * @return string to call a variable with the current timestamp - * @access public - */ - function now($type = 'timestamp') - { - switch ($type) { - case 'date': - case 'time': - case 'timestamp': - default: - return 'TO_CHAR(CURRENT_TIMESTAMP, \'YYYY-MM-DD HH24:MI:SS\')'; - } - } - - // }}} - // {{{ unixtimestamp() - - /** - * return string to call a function to get the unix timestamp from a iso timestamp - * - * @param string $expression - * - * @return string to call a variable with the timestamp - * @access public - */ - function unixtimestamp($expression) - { - $utc_offset = 'CAST(SYS_EXTRACT_UTC(SYSTIMESTAMP) AS DATE) - CAST(SYSTIMESTAMP AS DATE)'; - $epoch_date = 'to_date(\'19700101\', \'YYYYMMDD\')'; - return '(CAST('.$expression.' AS DATE) - '.$epoch_date.' + '.$utc_offset.') * 86400 seconds'; - } - - // }}} - // {{{ substring() - - /** - * return string to call a function to get a substring inside an SQL statement - * - * @return string to call a function to get a substring - * @access public - */ - function substring($value, $position = 1, $length = null) - { - if (null !== $length) { - return "SUBSTR($value, $position, $length)"; - } - return "SUBSTR($value, $position)"; - } - - // }}} - // {{{ random() - - /** - * return string to call a function to get random value inside an SQL statement - * - * @return return string to generate float between 0 and 1 - * @access public - */ - function random() - { - return 'dbms_random.value'; - } - - // }}}} - // {{{ guid() - - /** - * Returns global unique identifier - * - * @return string to get global unique identifier - * @access public - */ - function guid() - { - return 'SYS_GUID()'; - } - - // }}}} -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Function/pgsql.php b/3rdparty/MDB2/Driver/Function/pgsql.php deleted file mode 100644 index 7cc34a2d7042d52c51bed166e799d53d647fdffe..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Function/pgsql.php +++ /dev/null @@ -1,132 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/Driver/Function/Common.php'; - -/** - * MDB2 MySQL driver for the function modules - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Function_pgsql extends MDB2_Driver_Function_Common -{ - // {{{ executeStoredProc() - - /** - * Execute a stored procedure and return any results - * - * @param string $name string that identifies the function to execute - * @param mixed $params array that contains the paramaters to pass the stored proc - * @param mixed $types array that contains the types of the columns in - * the result set - * @param mixed $result_class string which specifies which result class to use - * @param mixed $result_wrap_class string which specifies which class to wrap results in - * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SELECT * FROM '.$name; - $query .= $params ? '('.implode(', ', $params).')' : '()'; - return $db->query($query, $types, $result_class, $result_wrap_class); - } - // }}} - // {{{ unixtimestamp() - - /** - * return string to call a function to get the unix timestamp from a iso timestamp - * - * @param string $expression - * - * @return string to call a variable with the timestamp - * @access public - */ - function unixtimestamp($expression) - { - return 'EXTRACT(EPOCH FROM DATE_TRUNC(\'seconds\', CAST ((' . $expression . ') AS TIMESTAMP)))'; - } - - // }}} - // {{{ substring() - - /** - * return string to call a function to get a substring inside an SQL statement - * - * @return string to call a function to get a substring - * @access public - */ - function substring($value, $position = 1, $length = null) - { - if (null !== $length) { - return "SUBSTRING(CAST($value AS VARCHAR) FROM $position FOR $length)"; - } - return "SUBSTRING(CAST($value AS VARCHAR) FROM $position)"; - } - - // }}} - // {{{ random() - - /** - * return string to call a function to get random value inside an SQL statement - * - * @return return string to generate float between 0 and 1 - * @access public - */ - function random() - { - return 'RANDOM()'; - } - - // }}} -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Function/sqlite.php b/3rdparty/MDB2/Driver/Function/sqlite.php deleted file mode 100644 index 65ade4fec07f999bcd69661719845a89041e0797..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Function/sqlite.php +++ /dev/null @@ -1,162 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Function/Common.php'; - -/** - * MDB2 SQLite driver for the function modules - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Function_sqlite extends MDB2_Driver_Function_Common -{ - // {{{ constructor - - /** - * Constructor - */ - function __construct($db_index) - { - parent::__construct($db_index); - // create all sorts of UDFs - } - - // {{{ now() - - /** - * Return string to call a variable with the current timestamp inside an SQL statement - * There are three special variables for current date and time. - * - * @return string to call a variable with the current timestamp - * @access public - */ - function now($type = 'timestamp') - { - switch ($type) { - case 'time': - return 'time(\'now\')'; - case 'date': - return 'date(\'now\')'; - case 'timestamp': - default: - return 'datetime(\'now\')'; - } - } - - // }}} - // {{{ unixtimestamp() - - /** - * return string to call a function to get the unix timestamp from a iso timestamp - * - * @param string $expression - * - * @return string to call a variable with the timestamp - * @access public - */ - function unixtimestamp($expression) - { - return 'strftime("%s",'. $expression.', "utc")'; - } - - // }}} - // {{{ substring() - - /** - * return string to call a function to get a substring inside an SQL statement - * - * @return string to call a function to get a substring - * @access public - */ - function substring($value, $position = 1, $length = null) - { - if (null !== $length) { - return "substr($value, $position, $length)"; - } - return "substr($value, $position, length($value))"; - } - - // }}} - // {{{ random() - - /** - * return string to call a function to get random value inside an SQL statement - * - * @return return string to generate float between 0 and 1 - * @access public - */ - function random() - { - return '((RANDOM()+2147483648)/4294967296)'; - } - - // }}} - // {{{ replace() - - /** - * return string to call a function to get a replacement inside an SQL statement. - * - * @return string to call a function to get a replace - * @access public - */ - function replace($str, $from_str, $to_str) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - return $error; - } - - // }}} -} -?> diff --git a/3rdparty/MDB2/Driver/Manager/Common.php b/3rdparty/MDB2/Driver/Manager/Common.php deleted file mode 100644 index 2e99c332a231432930f98b00bceea71c84ac6661..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Manager/Common.php +++ /dev/null @@ -1,1038 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - * @author Lorenzo Alberton - */ - -/** - * Base class for the management modules that is extended by each MDB2 driver - * - * To load this module in the MDB2 object: - * $mdb->loadModule('Manager'); - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Manager_Common extends MDB2_Module_Common -{ - // {{{ splitTableSchema() - - /** - * Split the "[owner|schema].table" notation into an array - * - * @param string $table [schema and] table name - * - * @return array array(schema, table) - * @access private - */ - function splitTableSchema($table) - { - $ret = array(); - if (strpos($table, '.') !== false) { - return explode('.', $table); - } - return array(null, $table); - } - - // }}} - // {{{ getFieldDeclarationList() - - /** - * Get declaration of a number of field in bulk - * - * @param array $fields a multidimensional associative array. - * The first dimension determines the field name, while the second - * dimension is keyed with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Boolean value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * - * @return mixed string on success, a MDB2 error on failure - * @access public - */ - function getFieldDeclarationList($fields) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!is_array($fields) || empty($fields)) { - return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'missing any fields', __FUNCTION__); - } - foreach ($fields as $field_name => $field) { - $query = $db->getDeclaration($field['type'], $field_name, $field); - if (PEAR::isError($query)) { - return $query; - } - $query_fields[] = $query; - } - return implode(', ', $query_fields); - } - - // }}} - // {{{ _fixSequenceName() - - /** - * Removes any formatting in an sequence name using the 'seqname_format' option - * - * @param string $sqn string that containts name of a potential sequence - * @param bool $check if only formatted sequences should be returned - * @return string name of the sequence with possible formatting removed - * @access protected - */ - function _fixSequenceName($sqn, $check = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $seq_pattern = '/^'.preg_replace('/%s/', '([a-z0-9_]+)', $db->options['seqname_format']).'$/i'; - $seq_name = preg_replace($seq_pattern, '\\1', $sqn); - if ($seq_name && !strcasecmp($sqn, $db->getSequenceName($seq_name))) { - return $seq_name; - } - if ($check) { - return false; - } - return $sqn; - } - - // }}} - // {{{ _fixIndexName() - - /** - * Removes any formatting in an index name using the 'idxname_format' option - * - * @param string $idx string that containts name of anl index - * @return string name of the index with eventual formatting removed - * @access protected - */ - function _fixIndexName($idx) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $idx_pattern = '/^'.preg_replace('/%s/', '([a-z0-9_]+)', $db->options['idxname_format']).'$/i'; - $idx_name = preg_replace($idx_pattern, '\\1', $idx); - if ($idx_name && !strcasecmp($idx, $db->getIndexName($idx_name))) { - return $idx_name; - } - return $idx; - } - - // }}} - // {{{ createDatabase() - - /** - * create a new database - * - * @param string $name name of the database that should be created - * @param array $options array with charset, collation info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createDatabase($database, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ alterDatabase() - - /** - * alter an existing database - * - * @param string $name name of the database that should be created - * @param array $options array with charset, collation info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function alterDatabase($database, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ dropDatabase() - - /** - * drop an existing database - * - * @param string $name name of the database that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropDatabase($database) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ _getCreateTableQuery() - - /** - * Create a basic SQL query for a new table creation - * - * @param string $name Name of the database that should be created - * @param array $fields Associative array that contains the definition of each field of the new table - * @param array $options An associative array of table options - * - * @return mixed string (the SQL query) on success, a MDB2 error on failure - * @see createTable() - */ - function _getCreateTableQuery($name, $fields, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!$name) { - return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null, - 'no valid table name specified', __FUNCTION__); - } - if (empty($fields)) { - return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null, - 'no fields specified for table "'.$name.'"', __FUNCTION__); - } - $query_fields = $this->getFieldDeclarationList($fields); - if (PEAR::isError($query_fields)) { - return $query_fields; - } - if (!empty($options['primary'])) { - $query_fields.= ', PRIMARY KEY ('.implode(', ', array_keys($options['primary'])).')'; - } - - $name = $db->quoteIdentifier($name, true); - $result = 'CREATE '; - if (!empty($options['temporary'])) { - $result .= $this->_getTemporaryTableQuery(); - } - $result .= " TABLE $name ($query_fields)"; - return $result; - } - - // }}} - // {{{ _getTemporaryTableQuery() - - /** - * A method to return the required SQL string that fits between CREATE ... TABLE - * to create the table as a temporary table. - * - * Should be overridden in driver classes to return the correct string for the - * specific database type. - * - * The default is to return the string "TEMPORARY" - this will result in a - * SQL error for any database that does not support temporary tables, or that - * requires a different SQL command from "CREATE TEMPORARY TABLE". - * - * @return string The string required to be placed between "CREATE" and "TABLE" - * to generate a temporary table, if possible. - */ - function _getTemporaryTableQuery() - { - return 'TEMPORARY'; - } - - // }}} - // {{{ createTable() - - /** - * create a new table - * - * @param string $name Name of the database that should be created - * @param array $fields Associative array that contains the definition of each field of the new table - * The indexes of the array entries are the names of the fields of the table an - * the array entry values are associative arrays like those that are meant to be - * passed with the field definitions to get[Type]Declaration() functions. - * array( - * 'id' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * 'notnull' => 1 - * 'default' => 0 - * ), - * 'name' => array( - * 'type' => 'text', - * 'length' => 12 - * ), - * 'password' => array( - * 'type' => 'text', - * 'length' => 12 - * ) - * ); - * @param array $options An associative array of table options: - * array( - * 'comment' => 'Foo', - * 'temporary' => true|false, - * ); - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createTable($name, $fields, $options = array()) - { - $query = $this->_getCreateTableQuery($name, $fields, $options); - if (PEAR::isError($query)) { - return $query; - } - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $result = $db->exec($query); - if (PEAR::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropTable() - - /** - * drop an existing table - * - * @param string $name name of the table that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $result = $db->exec("DROP TABLE $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ truncateTable() - - /** - * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported, - * it falls back to a DELETE FROM TABLE query) - * - * @param string $name name of the table that should be truncated - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function truncateTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $result = $db->exec("DELETE FROM $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ vacuum() - - /** - * Optimize (vacuum) all the tables in the db (or only the specified table) - * and optionally run ANALYZE. - * - * @param string $table table name (all the tables if empty) - * @param array $options an array with driver-specific options: - * - timeout [int] (in seconds) [mssql-only] - * - analyze [boolean] [pgsql and mysql] - * - full [boolean] [pgsql-only] - * - freeze [boolean] [pgsql-only] - * - * @return mixed MDB2_OK success, a MDB2 error on failure - * @access public - */ - function vacuum($table = null, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ alterTable() - - /** - * alter an existing table - * - * @param string $name name of the table that is intended to be changed. - * @param array $changes associative array that contains the details of each type - * of change that is intended to be performed. The types of - * changes that are currently supported are defined as follows: - * - * name - * - * New name for the table. - * - * add - * - * Associative array with the names of fields to be added as - * indexes of the array. The value of each entry of the array - * should be set to another associative array with the properties - * of the fields to be added. The properties of the fields should - * be the same as defined by the MDB2 parser. - * - * - * remove - * - * Associative array with the names of fields to be removed as indexes - * of the array. Currently the values assigned to each entry are ignored. - * An empty array should be used for future compatibility. - * - * rename - * - * Associative array with the names of fields to be renamed as indexes - * of the array. The value of each entry of the array should be set to - * another associative array with the entry named name with the new - * field name and the entry named Declaration that is expected to contain - * the portion of the field declaration already in DBMS specific SQL code - * as it is used in the CREATE TABLE statement. - * - * change - * - * Associative array with the names of the fields to be changed as indexes - * of the array. Keep in mind that if it is intended to change either the - * name of a field and any other properties, the change array entries - * should have the new names of the fields as array indexes. - * - * The value of each entry of the array should be set to another associative - * array with the properties of the fields to that are meant to be changed as - * array entries. These entries should be assigned to the new values of the - * respective properties. The properties of the fields should be the same - * as defined by the MDB2 parser. - * - * Example - * array( - * 'name' => 'userlist', - * 'add' => array( - * 'quota' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * ) - * ), - * 'remove' => array( - * 'file_limit' => array(), - * 'time_limit' => array() - * ), - * 'change' => array( - * 'name' => array( - * 'length' => '20', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 20, - * ), - * ) - * ), - * 'rename' => array( - * 'sex' => array( - * 'name' => 'gender', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 1, - * 'default' => 'M', - * ), - * ) - * ) - * ) - * - * @param boolean $check indicates whether the function should just check if the DBMS driver - * can perform the requested table alterations if the value is true or - * actually perform them otherwise. - * @access public - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - */ - function alterTable($name, $changes, $check) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listDatabases() - - /** - * list all databases - * - * @return mixed array of database names on success, a MDB2 error on failure - * @access public - */ - function listDatabases() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implementedd', __FUNCTION__); - } - - // }}} - // {{{ listUsers() - - /** - * list all users - * - * @return mixed array of user names on success, a MDB2 error on failure - * @access public - */ - function listUsers() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listViews() - - /** - * list all views in the current database - * - * @param string database, the current is default - * NB: not all the drivers can get the view names from - * a database other than the current one - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listViews($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listTableViews() - - /** - * list the views in the database that reference a given table - * - * @param string table for which all referenced views should be found - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listTableViews($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listTableTriggers() - - /** - * list all triggers in the database that reference a given table - * - * @param string table for which all referenced triggers should be found - * @return mixed array of trigger names on success, a MDB2 error on failure - * @access public - */ - function listTableTriggers($table = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listFunctions() - - /** - * list all functions in the current database - * - * @return mixed array of function names on success, a MDB2 error on failure - * @access public - */ - function listFunctions() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listTables() - - /** - * list all tables in the current database - * - * @param string database, the current is default. - * NB: not all the drivers can get the table names from - * a database other than the current one - * @return mixed array of table names on success, a MDB2 error on failure - * @access public - */ - function listTables($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listTableFields() - - /** - * list all fields in a table in the current database - * - * @param string $table name of table that should be used in method - * @return mixed array of field names on success, a MDB2 error on failure - * @access public - */ - function listTableFields($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ createIndex() - - /** - * Get the stucture of a field into an array - * - * @param string $table name of the table on which the index is to be created - * @param string $name name of the index to be created - * @param array $definition associative array that defines properties of the index to be created. - * Currently, only one property named FIELDS is supported. This property - * is also an associative with the names of the index fields as array - * indexes. Each entry of this array is set to another type of associative - * array that specifies properties of the index that are specific to - * each field. - * - * Currently, only the sorting property is supported. It should be used - * to define the sorting direction of the index. It may be set to either - * ascending or descending. - * - * Not all DBMS support index sorting direction configuration. The DBMS - * drivers of those that do not support it ignore this property. Use the - * function supports() to determine whether the DBMS driver can manage indexes. - * - * Example - * array( - * 'fields' => array( - * 'user_name' => array( - * 'sorting' => 'ascending' - * ), - * 'last_login' => array() - * ) - * ) - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createIndex($table, $name, $definition) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $query = "CREATE INDEX $name ON $table"; - $fields = array(); - foreach (array_keys($definition['fields']) as $field) { - $fields[] = $db->quoteIdentifier($field, true); - } - $query .= ' ('. implode(', ', $fields) . ')'; - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropIndex() - - /** - * drop existing index - * - * @param string $table name of table that should be used in method - * @param string $name name of the index to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropIndex($table, $name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $result = $db->exec("DROP INDEX $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listTableIndexes() - - /** - * list all indexes in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of index names on success, a MDB2 error on failure - * @access public - */ - function listTableIndexes($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ _getAdvancedFKOptions() - - /** - * Return the FOREIGN KEY query section dealing with non-standard options - * as MATCH, INITIALLY DEFERRED, ON UPDATE, ... - * - * @param array $definition - * @return string - * @access protected - */ - function _getAdvancedFKOptions($definition) - { - return ''; - } - - // }}} - // {{{ createConstraint() - - /** - * create a constraint on a table - * - * @param string $table name of the table on which the constraint is to be created - * @param string $name name of the constraint to be created - * @param array $definition associative array that defines properties of the constraint to be created. - * The full structure of the array looks like this: - *
-     *          array (
-     *              [primary] => 0
-     *              [unique]  => 0
-     *              [foreign] => 1
-     *              [check]   => 0
-     *              [fields] => array (
-     *                  [field1name] => array() // one entry per each field covered
-     *                  [field2name] => array() // by the index
-     *                  [field3name] => array(
-     *                      [sorting]  => ascending
-     *                      [position] => 3
-     *                  )
-     *              )
-     *              [references] => array(
-     *                  [table] => name
-     *                  [fields] => array(
-     *                      [field1name] => array(  //one entry per each referenced field
-     *                           [position] => 1
-     *                      )
-     *                  )
-     *              )
-     *              [deferrable] => 0
-     *              [initiallydeferred] => 0
-     *              [onupdate] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
-     *              [ondelete] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
-     *              [match] => SIMPLE|PARTIAL|FULL
-     *          );
-     *          
- * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createConstraint($table, $name, $definition) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $query = "ALTER TABLE $table ADD CONSTRAINT $name"; - if (!empty($definition['primary'])) { - $query.= ' PRIMARY KEY'; - } elseif (!empty($definition['unique'])) { - $query.= ' UNIQUE'; - } elseif (!empty($definition['foreign'])) { - $query.= ' FOREIGN KEY'; - } - $fields = array(); - foreach (array_keys($definition['fields']) as $field) { - $fields[] = $db->quoteIdentifier($field, true); - } - $query .= ' ('. implode(', ', $fields) . ')'; - if (!empty($definition['foreign'])) { - $query.= ' REFERENCES ' . $db->quoteIdentifier($definition['references']['table'], true); - $referenced_fields = array(); - foreach (array_keys($definition['references']['fields']) as $field) { - $referenced_fields[] = $db->quoteIdentifier($field, true); - } - $query .= ' ('. implode(', ', $referenced_fields) . ')'; - $query .= $this->_getAdvancedFKOptions($definition); - } - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropConstraint() - - /** - * drop existing constraint - * - * @param string $table name of table that should be used in method - * @param string $name name of the constraint to be dropped - * @param string $primary hint if the constraint is primary - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropConstraint($table, $name, $primary = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $result = $db->exec("ALTER TABLE $table DROP CONSTRAINT $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listTableConstraints() - - /** - * list all constraints in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of constraint names on success, a MDB2 error on failure - * @access public - */ - function listTableConstraints($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ createSequence() - - /** - * create sequence - * - * @param string $seq_name name of the sequence to be created - * @param string $start start value of the sequence; default is 1 - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createSequence($seq_name, $start = 1) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ dropSequence() - - /** - * drop existing sequence - * - * @param string $seq_name name of the sequence to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropSequence($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ listSequences() - - /** - * list all sequences in the current database - * - * @param string database, the current is default - * NB: not all the drivers can get the sequence names from - * a database other than the current one - * @return mixed array of sequence names on success, a MDB2 error on failure - * @access public - */ - function listSequences($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} -} -?> diff --git a/3rdparty/MDB2/Driver/Manager/mysql.php b/3rdparty/MDB2/Driver/Manager/mysql.php deleted file mode 100644 index c663c0c5d2bf19601f06e752a5734d893a613106..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Manager/mysql.php +++ /dev/null @@ -1,1471 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Manager/Common.php'; - -/** - * MDB2 MySQL driver for the management modules - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Manager_mysql extends MDB2_Driver_Manager_Common -{ - - // }}} - // {{{ createDatabase() - - /** - * create a new database - * - * @param string $name name of the database that should be created - * @param array $options array with charset, collation info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createDatabase($name, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $query = 'CREATE DATABASE ' . $name; - if (!empty($options['charset'])) { - $query .= ' DEFAULT CHARACTER SET ' . $db->quote($options['charset'], 'text'); - } - if (!empty($options['collation'])) { - $query .= ' COLLATE ' . $db->quote($options['collation'], 'text'); - } - return $db->standaloneQuery($query, null, true); - } - - // }}} - // {{{ alterDatabase() - - /** - * alter an existing database - * - * @param string $name name of the database that is intended to be changed - * @param array $options array with charset, collation info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function alterDatabase($name, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'ALTER DATABASE '. $db->quoteIdentifier($name, true); - if (!empty($options['charset'])) { - $query .= ' DEFAULT CHARACTER SET ' . $db->quote($options['charset'], 'text'); - } - if (!empty($options['collation'])) { - $query .= ' COLLATE ' . $db->quote($options['collation'], 'text'); - } - return $db->standaloneQuery($query, null, true); - } - - // }}} - // {{{ dropDatabase() - - /** - * drop an existing database - * - * @param string $name name of the database that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropDatabase($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $query = "DROP DATABASE $name"; - return $db->standaloneQuery($query, null, true); - } - - // }}} - // {{{ _getAdvancedFKOptions() - - /** - * Return the FOREIGN KEY query section dealing with non-standard options - * as MATCH, INITIALLY DEFERRED, ON UPDATE, ... - * - * @param array $definition - * @return string - * @access protected - */ - function _getAdvancedFKOptions($definition) - { - $query = ''; - if (!empty($definition['match'])) { - $query .= ' MATCH '.$definition['match']; - } - if (!empty($definition['onupdate'])) { - $query .= ' ON UPDATE '.$definition['onupdate']; - } - if (!empty($definition['ondelete'])) { - $query .= ' ON DELETE '.$definition['ondelete']; - } - return $query; - } - - // }}} - // {{{ createTable() - - /** - * create a new table - * - * @param string $name Name of the database that should be created - * @param array $fields Associative array that contains the definition of each field of the new table - * The indexes of the array entries are the names of the fields of the table an - * the array entry values are associative arrays like those that are meant to be - * passed with the field definitions to get[Type]Declaration() functions. - * array( - * 'id' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * 'notnull' => 1 - * 'default' => 0 - * ), - * 'name' => array( - * 'type' => 'text', - * 'length' => 12 - * ), - * 'password' => array( - * 'type' => 'text', - * 'length' => 12 - * ) - * ); - * @param array $options An associative array of table options: - * array( - * 'comment' => 'Foo', - * 'charset' => 'utf8', - * 'collate' => 'utf8_unicode_ci', - * 'type' => 'innodb', - * ); - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createTable($name, $fields, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - // if we have an AUTO_INCREMENT column and a PK on more than one field, - // we have to handle it differently... - $autoincrement = null; - if (empty($options['primary'])) { - $pk_fields = array(); - foreach ($fields as $fieldname => $def) { - if (!empty($def['primary'])) { - $pk_fields[$fieldname] = true; - } - if (!empty($def['autoincrement'])) { - $autoincrement = $fieldname; - } - } - if ((null !== $autoincrement) && count($pk_fields) > 1) { - $options['primary'] = $pk_fields; - } else { - // the PK constraint is on max one field => OK - $autoincrement = null; - } - } - - $query = $this->_getCreateTableQuery($name, $fields, $options); - if (PEAR::isError($query)) { - return $query; - } - - if (null !== $autoincrement) { - // we have to remove the PK clause added by _getIntegerDeclaration() - $query = str_replace('AUTO_INCREMENT PRIMARY KEY', 'AUTO_INCREMENT', $query); - } - - $options_strings = array(); - - if (!empty($options['comment'])) { - $options_strings['comment'] = 'COMMENT = '.$db->quote($options['comment'], 'text'); - } - - if (!empty($options['charset'])) { - $options_strings['charset'] = 'DEFAULT CHARACTER SET '.$options['charset']; - if (!empty($options['collate'])) { - $options_strings['charset'].= ' COLLATE '.$options['collate']; - } - } - - $type = false; - if (!empty($options['type'])) { - $type = $options['type']; - } elseif ($db->options['default_table_type']) { - $type = $db->options['default_table_type']; - } - if ($type) { - $options_strings[] = "ENGINE = $type"; - } - - if (!empty($options_strings)) { - $query .= ' '.implode(' ', $options_strings); - } - $result = $db->exec($query); - if (PEAR::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropTable() - - /** - * drop an existing table - * - * @param string $name name of the table that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - //delete the triggers associated to existing FK constraints - $constraints = $this->listTableConstraints($name); - if (!PEAR::isError($constraints) && !empty($constraints)) { - $db->loadModule('Reverse', null, true); - foreach ($constraints as $constraint) { - $definition = $db->reverse->getTableConstraintDefinition($name, $constraint); - if (!PEAR::isError($definition) && !empty($definition['foreign'])) { - $result = $this->_dropFKTriggers($name, $constraint, $definition['references']['table']); - if (PEAR::isError($result)) { - return $result; - } - } - } - } - - return parent::dropTable($name); - } - - // }}} - // {{{ truncateTable() - - /** - * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported, - * it falls back to a DELETE FROM TABLE query) - * - * @param string $name name of the table that should be truncated - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function truncateTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $result = $db->exec("TRUNCATE TABLE $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ vacuum() - - /** - * Optimize (vacuum) all the tables in the db (or only the specified table) - * and optionally run ANALYZE. - * - * @param string $table table name (all the tables if empty) - * @param array $options an array with driver-specific options: - * - timeout [int] (in seconds) [mssql-only] - * - analyze [boolean] [pgsql and mysql] - * - full [boolean] [pgsql-only] - * - freeze [boolean] [pgsql-only] - * - * @return mixed MDB2_OK success, a MDB2 error on failure - * @access public - */ - function vacuum($table = null, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (empty($table)) { - $table = $this->listTables(); - if (PEAR::isError($table)) { - return $table; - } - } - if (is_array($table)) { - foreach (array_keys($table) as $k) { - $table[$k] = $db->quoteIdentifier($table[$k], true); - } - $table = implode(', ', $table); - } else { - $table = $db->quoteIdentifier($table, true); - } - - $result = $db->exec('OPTIMIZE TABLE '.$table); - if (PEAR::isError($result)) { - return $result; - } - if (!empty($options['analyze'])) { - $result = $db->exec('ANALYZE TABLE '.$table); - if (MDB2::isError($result)) { - return $result; - } - } - return MDB2_OK; - } - - // }}} - // {{{ alterTable() - - /** - * alter an existing table - * - * @param string $name name of the table that is intended to be changed. - * @param array $changes associative array that contains the details of each type - * of change that is intended to be performed. The types of - * changes that are currently supported are defined as follows: - * - * name - * - * New name for the table. - * - * add - * - * Associative array with the names of fields to be added as - * indexes of the array. The value of each entry of the array - * should be set to another associative array with the properties - * of the fields to be added. The properties of the fields should - * be the same as defined by the MDB2 parser. - * - * - * remove - * - * Associative array with the names of fields to be removed as indexes - * of the array. Currently the values assigned to each entry are ignored. - * An empty array should be used for future compatibility. - * - * rename - * - * Associative array with the names of fields to be renamed as indexes - * of the array. The value of each entry of the array should be set to - * another associative array with the entry named name with the new - * field name and the entry named Declaration that is expected to contain - * the portion of the field declaration already in DBMS specific SQL code - * as it is used in the CREATE TABLE statement. - * - * change - * - * Associative array with the names of the fields to be changed as indexes - * of the array. Keep in mind that if it is intended to change either the - * name of a field and any other properties, the change array entries - * should have the new names of the fields as array indexes. - * - * The value of each entry of the array should be set to another associative - * array with the properties of the fields to that are meant to be changed as - * array entries. These entries should be assigned to the new values of the - * respective properties. The properties of the fields should be the same - * as defined by the MDB2 parser. - * - * Example - * array( - * 'name' => 'userlist', - * 'add' => array( - * 'quota' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * ) - * ), - * 'remove' => array( - * 'file_limit' => array(), - * 'time_limit' => array() - * ), - * 'change' => array( - * 'name' => array( - * 'length' => '20', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 20, - * ), - * ) - * ), - * 'rename' => array( - * 'sex' => array( - * 'name' => 'gender', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 1, - * 'default' => 'M', - * ), - * ) - * ) - * ) - * - * @param boolean $check indicates whether the function should just check if the DBMS driver - * can perform the requested table alterations if the value is true or - * actually perform them otherwise. - * @access public - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - */ - function alterTable($name, $changes, $check) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - foreach ($changes as $change_name => $change) { - switch ($change_name) { - case 'add': - case 'remove': - case 'change': - case 'rename': - case 'name': - break; - default: - return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null, - 'change type "'.$change_name.'" not yet supported', __FUNCTION__); - } - } - - if ($check) { - return MDB2_OK; - } - - $query = ''; - if (!empty($changes['name'])) { - $change_name = $db->quoteIdentifier($changes['name'], true); - $query .= 'RENAME TO ' . $change_name; - } - - if (!empty($changes['add']) && is_array($changes['add'])) { - foreach ($changes['add'] as $field_name => $field) { - if ($query) { - $query.= ', '; - } - $query.= 'ADD ' . $db->getDeclaration($field['type'], $field_name, $field); - } - } - - if (!empty($changes['remove']) && is_array($changes['remove'])) { - foreach ($changes['remove'] as $field_name => $field) { - if ($query) { - $query.= ', '; - } - $field_name = $db->quoteIdentifier($field_name, true); - $query.= 'DROP ' . $field_name; - } - } - - $rename = array(); - if (!empty($changes['rename']) && is_array($changes['rename'])) { - foreach ($changes['rename'] as $field_name => $field) { - $rename[$field['name']] = $field_name; - } - } - - if (!empty($changes['change']) && is_array($changes['change'])) { - foreach ($changes['change'] as $field_name => $field) { - if ($query) { - $query.= ', '; - } - if (isset($rename[$field_name])) { - $old_field_name = $rename[$field_name]; - unset($rename[$field_name]); - } else { - $old_field_name = $field_name; - } - $old_field_name = $db->quoteIdentifier($old_field_name, true); - $query.= "CHANGE $old_field_name " . $db->getDeclaration($field['definition']['type'], $field_name, $field['definition']); - } - } - - if (!empty($rename) && is_array($rename)) { - foreach ($rename as $rename_name => $renamed_field) { - if ($query) { - $query.= ', '; - } - $field = $changes['rename'][$renamed_field]; - $renamed_field = $db->quoteIdentifier($renamed_field, true); - $query.= 'CHANGE ' . $renamed_field . ' ' . $db->getDeclaration($field['definition']['type'], $field['name'], $field['definition']); - } - } - - if (!$query) { - return MDB2_OK; - } - - $name = $db->quoteIdentifier($name, true); - $result = $db->exec("ALTER TABLE $name $query"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listDatabases() - - /** - * list all databases - * - * @return mixed array of database names on success, a MDB2 error on failure - * @access public - */ - function listDatabases() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $result = $db->queryCol('SHOW DATABASES'); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listUsers() - - /** - * list all users - * - * @return mixed array of user names on success, a MDB2 error on failure - * @access public - */ - function listUsers() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->queryCol('SELECT DISTINCT USER FROM mysql.USER'); - } - - // }}} - // {{{ listFunctions() - - /** - * list all functions in the current database - * - * @return mixed array of function names on success, a MDB2 error on failure - * @access public - */ - function listFunctions() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT name FROM mysql.proc"; - /* - SELECT ROUTINE_NAME - FROM INFORMATION_SCHEMA.ROUTINES - WHERE ROUTINE_TYPE = 'FUNCTION' - */ - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTableTriggers() - - /** - * list all triggers in the database that reference a given table - * - * @param string table for which all referenced triggers should be found - * @return mixed array of trigger names on success, a MDB2 error on failure - * @access public - */ - function listTableTriggers($table = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SHOW TRIGGERS'; - if (null !== $table) { - $table = $db->quote($table, 'text'); - $query .= " LIKE $table"; - } - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTables() - - /** - * list all tables in the current database - * - * @param string database, the current is default - * @return mixed array of table names on success, a MDB2 error on failure - * @access public - */ - function listTables($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SHOW /*!50002 FULL*/ TABLES"; - if (null !== $database) { - $query .= " FROM $database"; - } - $query.= "/*!50002 WHERE Table_type = 'BASE TABLE'*/"; - - $table_names = $db->queryAll($query, null, MDB2_FETCHMODE_ORDERED); - if (PEAR::isError($table_names)) { - return $table_names; - } - - $result = array(); - foreach ($table_names as $table) { - if (!$this->_fixSequenceName($table[0], true)) { - $result[] = $table[0]; - } - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listViews() - - /** - * list all views in the current database - * - * @param string database, the current is default - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listViews($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SHOW FULL TABLES'; - if (null !== $database) { - $query.= " FROM $database"; - } - $query.= " WHERE Table_type = 'VIEW'"; - - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTableFields() - - /** - * list all fields in a table in the current database - * - * @param string $table name of table that should be used in method - * @return mixed array of field names on success, a MDB2 error on failure - * @access public - */ - function listTableFields($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quoteIdentifier($table, true); - $result = $db->queryCol("SHOW COLUMNS FROM $table"); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ createIndex() - - /** - * Get the stucture of a field into an array - * - * @author Leoncx - * @param string $table name of the table on which the index is to be created - * @param string $name name of the index to be created - * @param array $definition associative array that defines properties of the index to be created. - * Currently, only one property named FIELDS is supported. This property - * is also an associative with the names of the index fields as array - * indexes. Each entry of this array is set to another type of associative - * array that specifies properties of the index that are specific to - * each field. - * - * Currently, only the sorting property is supported. It should be used - * to define the sorting direction of the index. It may be set to either - * ascending or descending. - * - * Not all DBMS support index sorting direction configuration. The DBMS - * drivers of those that do not support it ignore this property. Use the - * function supports() to determine whether the DBMS driver can manage indexes. - * - * Example - * array( - * 'fields' => array( - * 'user_name' => array( - * 'sorting' => 'ascending' - * 'length' => 10 - * ), - * 'last_login' => array() - * ) - * ) - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createIndex($table, $name, $definition) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $query = "CREATE INDEX $name ON $table"; - $fields = array(); - foreach ($definition['fields'] as $field => $fieldinfo) { - if (!empty($fieldinfo['length'])) { - $fields[] = $db->quoteIdentifier($field, true) . '(' . $fieldinfo['length'] . ')'; - } else { - $fields[] = $db->quoteIdentifier($field, true); - } - } - $query .= ' ('. implode(', ', $fields) . ')'; - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropIndex() - - /** - * drop existing index - * - * @param string $table name of table that should be used in method - * @param string $name name of the index to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropIndex($table, $name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $result = $db->exec("DROP INDEX $name ON $table"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listTableIndexes() - - /** - * list all indexes in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of index names on success, a MDB2 error on failure - * @access public - */ - function listTableIndexes($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $key_name = 'Key_name'; - $non_unique = 'Non_unique'; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $key_name = strtolower($key_name); - $non_unique = strtolower($non_unique); - } else { - $key_name = strtoupper($key_name); - $non_unique = strtoupper($non_unique); - } - } - - $table = $db->quoteIdentifier($table, true); - $query = "SHOW INDEX FROM $table"; - $indexes = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($indexes)) { - return $indexes; - } - - $result = array(); - foreach ($indexes as $index_data) { - if ($index_data[$non_unique] && ($index = $this->_fixIndexName($index_data[$key_name]))) { - $result[$index] = true; - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_change_key_case($result, $db->options['field_case']); - } - return array_keys($result); - } - - // }}} - // {{{ createConstraint() - - /** - * create a constraint on a table - * - * @param string $table name of the table on which the constraint is to be created - * @param string $name name of the constraint to be created - * @param array $definition associative array that defines properties of the constraint to be created. - * Currently, only one property named FIELDS is supported. This property - * is also an associative with the names of the constraint fields as array - * constraints. Each entry of this array is set to another type of associative - * array that specifies properties of the constraint that are specific to - * each field. - * - * Example - * array( - * 'fields' => array( - * 'user_name' => array(), - * 'last_login' => array() - * ) - * ) - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createConstraint($table, $name, $definition) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $type = ''; - $idx_name = $db->quoteIdentifier($db->getIndexName($name), true); - if (!empty($definition['primary'])) { - $type = 'PRIMARY'; - $idx_name = 'KEY'; - } elseif (!empty($definition['unique'])) { - $type = 'UNIQUE'; - } elseif (!empty($definition['foreign'])) { - $type = 'CONSTRAINT'; - } - if (empty($type)) { - return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'invalid definition, could not create constraint', __FUNCTION__); - } - - $table_quoted = $db->quoteIdentifier($table, true); - $query = "ALTER TABLE $table_quoted ADD $type $idx_name"; - if (!empty($definition['foreign'])) { - $query .= ' FOREIGN KEY'; - } - $fields = array(); - foreach ($definition['fields'] as $field => $fieldinfo) { - $quoted = $db->quoteIdentifier($field, true); - if (!empty($fieldinfo['length'])) { - $quoted .= '(' . $fieldinfo['length'] . ')'; - } - $fields[] = $quoted; - } - $query .= ' ('. implode(', ', $fields) . ')'; - if (!empty($definition['foreign'])) { - $query.= ' REFERENCES ' . $db->quoteIdentifier($definition['references']['table'], true); - $referenced_fields = array(); - foreach (array_keys($definition['references']['fields']) as $field) { - $referenced_fields[] = $db->quoteIdentifier($field, true); - } - $query .= ' ('. implode(', ', $referenced_fields) . ')'; - $query .= $this->_getAdvancedFKOptions($definition); - - // add index on FK column(s) or we can't add a FK constraint - // @see http://forums.mysql.com/read.php?22,19755,226009 - $result = $this->createIndex($table, $name.'_fkidx', $definition); - if (PEAR::isError($result)) { - return $result; - } - } - $res = $db->exec($query); - if (PEAR::isError($res)) { - return $res; - } - if (!empty($definition['foreign'])) { - return $this->_createFKTriggers($table, array($name => $definition)); - } - return MDB2_OK; - } - - // }}} - // {{{ dropConstraint() - - /** - * drop existing constraint - * - * @param string $table name of table that should be used in method - * @param string $name name of the constraint to be dropped - * @param string $primary hint if the constraint is primary - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropConstraint($table, $name, $primary = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if ($primary || strtolower($name) == 'primary') { - $query = 'ALTER TABLE '. $db->quoteIdentifier($table, true) .' DROP PRIMARY KEY'; - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - //is it a FK constraint? If so, also delete the associated triggers - $db->loadModule('Reverse', null, true); - $definition = $db->reverse->getTableConstraintDefinition($table, $name); - if (!PEAR::isError($definition) && !empty($definition['foreign'])) { - //first drop the FK enforcing triggers - $result = $this->_dropFKTriggers($table, $name, $definition['references']['table']); - if (PEAR::isError($result)) { - return $result; - } - //then drop the constraint itself - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $query = "ALTER TABLE $table DROP FOREIGN KEY $name"; - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $query = "ALTER TABLE $table DROP INDEX $name"; - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ _createFKTriggers() - - /** - * Create triggers to enforce the FOREIGN KEY constraint on the table - * - * NB: since there's no RAISE_APPLICATION_ERROR facility in mysql, - * we call a non-existent procedure to raise the FK violation message. - * @see http://forums.mysql.com/read.php?99,55108,71877#msg-71877 - * - * @param string $table table name - * @param array $foreign_keys FOREIGN KEY definitions - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access private - */ - function _createFKTriggers($table, $foreign_keys) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - // create triggers to enforce FOREIGN KEY constraints - if ($db->supports('triggers') && !empty($foreign_keys)) { - $table_quoted = $db->quoteIdentifier($table, true); - foreach ($foreign_keys as $fkname => $fkdef) { - if (empty($fkdef)) { - continue; - } - //set actions to default if not set - $fkdef['onupdate'] = empty($fkdef['onupdate']) ? $db->options['default_fk_action_onupdate'] : strtoupper($fkdef['onupdate']); - $fkdef['ondelete'] = empty($fkdef['ondelete']) ? $db->options['default_fk_action_ondelete'] : strtoupper($fkdef['ondelete']); - - $trigger_names = array( - 'insert' => $fkname.'_insert_trg', - 'update' => $fkname.'_update_trg', - 'pk_update' => $fkname.'_pk_update_trg', - 'pk_delete' => $fkname.'_pk_delete_trg', - ); - $table_fields = array_keys($fkdef['fields']); - $referenced_fields = array_keys($fkdef['references']['fields']); - - //create the ON [UPDATE|DELETE] triggers on the primary table - $restrict_action = ' IF (SELECT '; - $aliased_fields = array(); - foreach ($table_fields as $field) { - $aliased_fields[] = $table_quoted .'.'.$field .' AS '.$field; - } - $restrict_action .= implode(',', $aliased_fields) - .' FROM '.$table_quoted - .' WHERE '; - $conditions = array(); - $new_values = array(); - $null_values = array(); - for ($i=0; $i OLD.'.$referenced_fields[$i]; - } - - $restrict_action .= implode(' AND ', $conditions).') IS NOT NULL'; - $restrict_action2 = empty($conditions2) ? '' : ' AND (' .implode(' OR ', $conditions2) .')'; - $restrict_action3 = ' THEN CALL %s_ON_TABLE_'.$table.'_VIOLATES_FOREIGN_KEY_CONSTRAINT();' - .' END IF;'; - - $restrict_action_update = $restrict_action . $restrict_action2 . $restrict_action3; - $restrict_action_delete = $restrict_action . $restrict_action3; // There is no NEW row in on DELETE trigger - - $cascade_action_update = 'UPDATE '.$table_quoted.' SET '.implode(', ', $new_values) .' WHERE '.implode(' AND ', $conditions). ';'; - $cascade_action_delete = 'DELETE FROM '.$table_quoted.' WHERE '.implode(' AND ', $conditions). ';'; - $setnull_action = 'UPDATE '.$table_quoted.' SET '.implode(', ', $null_values).' WHERE '.implode(' AND ', $conditions). ';'; - - if ('SET DEFAULT' == $fkdef['onupdate'] || 'SET DEFAULT' == $fkdef['ondelete']) { - $db->loadModule('Reverse', null, true); - $default_values = array(); - foreach ($table_fields as $table_field) { - $field_definition = $db->reverse->getTableFieldDefinition($table, $field); - if (PEAR::isError($field_definition)) { - return $field_definition; - } - $default_values[] = $table_field .' = '. $field_definition[0]['default']; - } - $setdefault_action = 'UPDATE '.$table_quoted.' SET '.implode(', ', $default_values).' WHERE '.implode(' AND ', $conditions). ';'; - } - - $query = 'CREATE TRIGGER %s' - .' %s ON '.$fkdef['references']['table'] - .' FOR EACH ROW BEGIN ' - .' SET FOREIGN_KEY_CHECKS = 0; '; //only really needed for ON UPDATE CASCADE - - if ('CASCADE' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $cascade_action_update; - } elseif ('SET NULL' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setnull_action; - } elseif ('SET DEFAULT' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setdefault_action; - } elseif ('NO ACTION' == $fkdef['onupdate']) { - $sql_update = sprintf($query.$restrict_action_update, $trigger_names['pk_update'], 'AFTER UPDATE', 'update'); - } elseif ('RESTRICT' == $fkdef['onupdate']) { - $sql_update = sprintf($query.$restrict_action_update, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update'); - } - if ('CASCADE' == $fkdef['ondelete']) { - $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $cascade_action_delete; - } elseif ('SET NULL' == $fkdef['ondelete']) { - $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setnull_action; - } elseif ('SET DEFAULT' == $fkdef['ondelete']) { - $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setdefault_action; - } elseif ('NO ACTION' == $fkdef['ondelete']) { - $sql_delete = sprintf($query.$restrict_action_delete, $trigger_names['pk_delete'], 'AFTER DELETE', 'delete'); - } elseif ('RESTRICT' == $fkdef['ondelete']) { - $sql_delete = sprintf($query.$restrict_action_delete, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete'); - } - $sql_update .= ' SET FOREIGN_KEY_CHECKS = 1; END;'; - $sql_delete .= ' SET FOREIGN_KEY_CHECKS = 1; END;'; - - $db->pushErrorHandling(PEAR_ERROR_RETURN); - $db->expectError(MDB2_ERROR_CANNOT_CREATE); - $result = $db->exec($sql_delete); - $expected_errmsg = 'This MySQL version doesn\'t support multiple triggers with the same action time and event for one table'; - $db->popExpect(); - $db->popErrorHandling(); - if (PEAR::isError($result)) { - if ($result->getCode() != MDB2_ERROR_CANNOT_CREATE) { - return $result; - } - $db->warnings[] = $expected_errmsg; - } - $db->pushErrorHandling(PEAR_ERROR_RETURN); - $db->expectError(MDB2_ERROR_CANNOT_CREATE); - $result = $db->exec($sql_update); - $db->popExpect(); - $db->popErrorHandling(); - if (PEAR::isError($result) && $result->getCode() != MDB2_ERROR_CANNOT_CREATE) { - if ($result->getCode() != MDB2_ERROR_CANNOT_CREATE) { - return $result; - } - $db->warnings[] = $expected_errmsg; - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ _dropFKTriggers() - - /** - * Drop the triggers created to enforce the FOREIGN KEY constraint on the table - * - * @param string $table table name - * @param string $fkname FOREIGN KEY constraint name - * @param string $referenced_table referenced table name - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access private - */ - function _dropFKTriggers($table, $fkname, $referenced_table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $triggers = $this->listTableTriggers($table); - $triggers2 = $this->listTableTriggers($referenced_table); - if (!PEAR::isError($triggers2) && !PEAR::isError($triggers)) { - $triggers = array_merge($triggers, $triggers2); - $pattern = '/^'.$fkname.'(_pk)?_(insert|update|delete)_trg$/i'; - foreach ($triggers as $trigger) { - if (preg_match($pattern, $trigger)) { - $result = $db->exec('DROP TRIGGER '.$trigger); - if (PEAR::isError($result)) { - return $result; - } - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ listTableConstraints() - - /** - * list all constraints in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of constraint names on success, a MDB2 error on failure - * @access public - */ - function listTableConstraints($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $key_name = 'Key_name'; - $non_unique = 'Non_unique'; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $key_name = strtolower($key_name); - $non_unique = strtolower($non_unique); - } else { - $key_name = strtoupper($key_name); - $non_unique = strtoupper($non_unique); - } - } - - $query = 'SHOW INDEX FROM ' . $db->quoteIdentifier($table, true); - $indexes = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($indexes)) { - return $indexes; - } - - $result = array(); - foreach ($indexes as $index_data) { - if (!$index_data[$non_unique]) { - if ($index_data[$key_name] !== 'PRIMARY') { - $index = $this->_fixIndexName($index_data[$key_name]); - } else { - $index = 'PRIMARY'; - } - if (!empty($index)) { - $result[$index] = true; - } - } - } - - //list FOREIGN KEY constraints... - $query = 'SHOW CREATE TABLE '. $db->escape($table); - $definition = $db->queryOne($query, 'text', 1); - if (!PEAR::isError($definition) && !empty($definition)) { - $pattern = '/\bCONSTRAINT\b\s+([^\s]+)\s+\bFOREIGN KEY\b/Uims'; - if (preg_match_all($pattern, str_replace('`', '', $definition), $matches) > 0) { - foreach ($matches[1] as $constraint) { - $result[$constraint] = true; - } - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_change_key_case($result, $db->options['field_case']); - } - return array_keys($result); - } - - // }}} - // {{{ createSequence() - - /** - * create sequence - * - * @param string $seq_name name of the sequence to be created - * @param string $start start value of the sequence; default is 1 - * @param array $options An associative array of table options: - * array( - * 'comment' => 'Foo', - * 'charset' => 'utf8', - * 'collate' => 'utf8_unicode_ci', - * 'type' => 'innodb', - * ); - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createSequence($seq_name, $start = 1, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - $seqcol_name = $db->quoteIdentifier($db->options['seqcol_name'], true); - - $options_strings = array(); - - if (!empty($options['comment'])) { - $options_strings['comment'] = 'COMMENT = '.$db->quote($options['comment'], 'text'); - } - - if (!empty($options['charset'])) { - $options_strings['charset'] = 'DEFAULT CHARACTER SET '.$options['charset']; - if (!empty($options['collate'])) { - $options_strings['charset'].= ' COLLATE '.$options['collate']; - } - } - - $type = false; - if (!empty($options['type'])) { - $type = $options['type']; - } elseif ($db->options['default_table_type']) { - $type = $db->options['default_table_type']; - } - if ($type) { - $options_strings[] = "ENGINE = $type"; - } - - $query = "CREATE TABLE $sequence_name ($seqcol_name INT NOT NULL AUTO_INCREMENT, PRIMARY KEY ($seqcol_name))"; - if (!empty($options_strings)) { - $query .= ' '.implode(' ', $options_strings); - } - $res = $db->exec($query); - if (PEAR::isError($res)) { - return $res; - } - - if ($start == 1) { - return MDB2_OK; - } - - $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (".($start-1).')'; - $res = $db->exec($query); - if (!PEAR::isError($res)) { - return MDB2_OK; - } - - // Handle error - $result = $db->exec("DROP TABLE $sequence_name"); - if (PEAR::isError($result)) { - return $db->raiseError($result, null, null, - 'could not drop inconsistent sequence table', __FUNCTION__); - } - - return $db->raiseError($res, null, null, - 'could not create sequence table', __FUNCTION__); - } - - // }}} - // {{{ dropSequence() - - /** - * drop existing sequence - * - * @param string $seq_name name of the sequence to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropSequence($seq_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - $result = $db->exec("DROP TABLE $sequence_name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listSequences() - - /** - * list all sequences in the current database - * - * @param string database, the current is default - * @return mixed array of sequence names on success, a MDB2 error on failure - * @access public - */ - function listSequences($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SHOW TABLES"; - if (null !== $database) { - $query .= " FROM $database"; - } - $table_names = $db->queryCol($query); - if (PEAR::isError($table_names)) { - return $table_names; - } - - $result = array(); - foreach ($table_names as $table_name) { - if ($sqn = $this->_fixSequenceName($table_name, true)) { - $result[] = $sqn; - } - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} -} -?> diff --git a/3rdparty/MDB2/Driver/Manager/oci8.php b/3rdparty/MDB2/Driver/Manager/oci8.php deleted file mode 100644 index 90ae8eb23027f9f08fe55a853af22657b1483125..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Manager/oci8.php +++ /dev/null @@ -1,1340 +0,0 @@ - | -// +----------------------------------------------------------------------+ - -// $Id: oci8.php 295587 2010-02-28 17:16:38Z quipo $ - -require_once 'MDB2/Driver/Manager/Common.php'; - -/** - * MDB2 oci8 driver for the management modules - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Manager_oci8 extends MDB2_Driver_Manager_Common -{ - // {{{ createDatabase() - - /** - * create a new database - * - * @param string $name name of the database that should be created - * @param array $options array with charset, collation info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createDatabase($name, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $username = $db->options['database_name_prefix'].$name; - $password = $db->dsn['password'] ? $db->dsn['password'] : $name; - $tablespace = $db->options['default_tablespace'] - ? ' DEFAULT TABLESPACE '.$db->options['default_tablespace'] : ''; - - $query = 'CREATE USER '.$username.' IDENTIFIED BY '.$password.$tablespace; - $result = $db->standaloneQuery($query, null, true); - if (PEAR::isError($result)) { - return $result; - } - $query = 'GRANT CREATE SESSION, CREATE TABLE, UNLIMITED TABLESPACE, CREATE SEQUENCE, CREATE TRIGGER TO '.$username; - $result = $db->standaloneQuery($query, null, true); - if (PEAR::isError($result)) { - $query = 'DROP USER '.$username.' CASCADE'; - $result2 = $db->standaloneQuery($query, null, true); - if (PEAR::isError($result2)) { - return $db->raiseError($result2, null, null, - 'could not setup the database user', __FUNCTION__); - } - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ alterDatabase() - - /** - * alter an existing database - * - * IMPORTANT: the safe way to change the db charset is to do a full import/export! - * If - and only if - the new character set is a strict superset of the current - * character set, it is possible to use the ALTER DATABASE CHARACTER SET to - * expedite the change in the database character set. - * - * @param string $name name of the database that is intended to be changed - * @param array $options array with name, charset info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function alterDatabase($name, $options = array()) - { - //disabled - //return parent::alterDatabase($name, $options); - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!empty($options['name'])) { - $query = 'ALTER DATABASE ' . $db->quoteIdentifier($name, true) - .' RENAME GLOBAL_NAME TO ' . $db->quoteIdentifier($options['name'], true); - $result = $db->standaloneQuery($query); - if (PEAR::isError($result)) { - return $result; - } - } - - if (!empty($options['charset'])) { - $queries = array(); - $queries[] = 'SHUTDOWN IMMEDIATE'; //or NORMAL - $queries[] = 'STARTUP MOUNT'; - $queries[] = 'ALTER SYSTEM ENABLE RESTRICTED SESSION'; - $queries[] = 'ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0'; - $queries[] = 'ALTER DATABASE OPEN'; - $queries[] = 'ALTER DATABASE CHARACTER SET ' . $options['charset']; - $queries[] = 'ALTER DATABASE NATIONAL CHARACTER SET ' . $options['charset']; - $queries[] = 'SHUTDOWN IMMEDIATE'; //or NORMAL - $queries[] = 'STARTUP'; - - foreach ($queries as $query) { - $result = $db->standaloneQuery($query); - if (PEAR::isError($result)) { - return $result; - } - } - } - - return MDB2_OK; - } - - // }}} - // {{{ dropDatabase() - - /** - * drop an existing database - * - * @param object $db database object that is extended by this class - * @param string $name name of the database that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropDatabase($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $username = $db->options['database_name_prefix'].$name; - return $db->standaloneQuery('DROP USER '.$username.' CASCADE', null, true); - } - - - // }}} - // {{{ _makeAutoincrement() - - /** - * add an autoincrement sequence + trigger - * - * @param string $name name of the PK field - * @param string $table name of the table - * @param string $start start value for the sequence - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access private - */ - function _makeAutoincrement($name, $table, $start = 1) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table_uppercase = strtoupper($table); - $index_name = $table_uppercase . '_AI_PK'; - $definition = array( - 'primary' => true, - 'fields' => array($name => true), - ); - $idxname_format = $db->getOption('idxname_format'); - $db->setOption('idxname_format', '%s'); - $result = $this->createConstraint($table, $index_name, $definition); - $db->setOption('idxname_format', $idxname_format); - if (PEAR::isError($result)) { - return $db->raiseError($result, null, null, - 'primary key for autoincrement PK could not be created', __FUNCTION__); - } - - if (null === $start) { - $db->beginTransaction(); - $query = 'SELECT MAX(' . $db->quoteIdentifier($name, true) . ') FROM ' . $db->quoteIdentifier($table, true); - $start = $this->db->queryOne($query, 'integer'); - if (PEAR::isError($start)) { - return $start; - } - ++$start; - $result = $this->createSequence($table, $start); - $db->commit(); - } else { - $result = $this->createSequence($table, $start); - } - if (PEAR::isError($result)) { - return $db->raiseError($result, null, null, - 'sequence for autoincrement PK could not be created', __FUNCTION__); - } - $seq_name = $db->getSequenceName($table); - $trigger_name = $db->quoteIdentifier($table_uppercase . '_AI_PK', true); - $seq_name_quoted = $db->quoteIdentifier($seq_name, true); - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($name, true); - $trigger_sql = ' -CREATE TRIGGER '.$trigger_name.' - BEFORE INSERT - ON '.$table.' - FOR EACH ROW -DECLARE - last_Sequence NUMBER; - last_InsertID NUMBER; -BEGIN - SELECT '.$seq_name_quoted.'.NEXTVAL INTO :NEW.'.$name.' FROM DUAL; - IF (:NEW.'.$name.' IS NULL OR :NEW.'.$name.' = 0) THEN - SELECT '.$seq_name_quoted.'.NEXTVAL INTO :NEW.'.$name.' FROM DUAL; - ELSE - SELECT NVL(Last_Number, 0) INTO last_Sequence - FROM User_Sequences - WHERE UPPER(Sequence_Name) = UPPER(\''.$seq_name.'\'); - SELECT :NEW.'.$name.' INTO last_InsertID FROM DUAL; - WHILE (last_InsertID > last_Sequence) LOOP - SELECT '.$seq_name_quoted.'.NEXTVAL INTO last_Sequence FROM DUAL; - END LOOP; - END IF; -END; -'; - $result = $db->exec($trigger_sql); - if (PEAR::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ _dropAutoincrement() - - /** - * drop an existing autoincrement sequence + trigger - * - * @param string $table name of the table - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access private - */ - function _dropAutoincrement($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = strtoupper($table); - $trigger_name = $table . '_AI_PK'; - $trigger_name_quoted = $db->quote($trigger_name, 'text'); - $query = 'SELECT trigger_name FROM user_triggers'; - $query.= ' WHERE trigger_name='.$trigger_name_quoted.' OR trigger_name='.strtoupper($trigger_name_quoted); - $trigger = $db->queryOne($query); - if (PEAR::isError($trigger)) { - return $trigger; - } - - if ($trigger) { - $trigger_name = $db->quoteIdentifier($table . '_AI_PK', true); - $trigger_sql = 'DROP TRIGGER ' . $trigger_name; - $result = $db->exec($trigger_sql); - if (PEAR::isError($result)) { - return $db->raiseError($result, null, null, - 'trigger for autoincrement PK could not be dropped', __FUNCTION__); - } - - $result = $this->dropSequence($table); - if (PEAR::isError($result)) { - return $db->raiseError($result, null, null, - 'sequence for autoincrement PK could not be dropped', __FUNCTION__); - } - - $index_name = $table . '_AI_PK'; - $idxname_format = $db->getOption('idxname_format'); - $db->setOption('idxname_format', '%s'); - $result1 = $this->dropConstraint($table, $index_name); - $db->setOption('idxname_format', $idxname_format); - $result2 = $this->dropConstraint($table, $index_name); - if (PEAR::isError($result1) && PEAR::isError($result2)) { - return $db->raiseError($result1, null, null, - 'primary key for autoincrement PK could not be dropped', __FUNCTION__); - } - } - - return MDB2_OK; - } - - // }}} - // {{{ _getTemporaryTableQuery() - - /** - * A method to return the required SQL string that fits between CREATE ... TABLE - * to create the table as a temporary table. - * - * @return string The string required to be placed between "CREATE" and "TABLE" - * to generate a temporary table, if possible. - */ - function _getTemporaryTableQuery() - { - return 'GLOBAL TEMPORARY'; - } - - // }}} - // {{{ _getAdvancedFKOptions() - - /** - * Return the FOREIGN KEY query section dealing with non-standard options - * as MATCH, INITIALLY DEFERRED, ON UPDATE, ... - * - * @param array $definition - * @return string - * @access protected - */ - function _getAdvancedFKOptions($definition) - { - $query = ''; - if (!empty($definition['ondelete']) && (strtoupper($definition['ondelete']) != 'NO ACTION')) { - $query .= ' ON DELETE '.$definition['ondelete']; - } - if (!empty($definition['deferrable'])) { - $query .= ' DEFERRABLE'; - } else { - $query .= ' NOT DEFERRABLE'; - } - if (!empty($definition['initiallydeferred'])) { - $query .= ' INITIALLY DEFERRED'; - } else { - $query .= ' INITIALLY IMMEDIATE'; - } - return $query; - } - - // }}} - // {{{ createTable() - - /** - * create a new table - * - * @param string $name Name of the database that should be created - * @param array $fields Associative array that contains the definition of each field of the new table - * The indexes of the array entries are the names of the fields of the table an - * the array entry values are associative arrays like those that are meant to be - * passed with the field definitions to get[Type]Declaration() functions. - * - * Example - * array( - * - * 'id' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * 'notnull' => 1 - * 'default' => 0 - * ), - * 'name' => array( - * 'type' => 'text', - * 'length' => 12 - * ), - * 'password' => array( - * 'type' => 'text', - * 'length' => 12 - * ) - * ); - * @param array $options An associative array of table options: - * array( - * 'comment' => 'Foo', - * 'temporary' => true|false, - * ); - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createTable($name, $fields, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $db->beginNestedTransaction(); - $result = parent::createTable($name, $fields, $options); - if (!PEAR::isError($result)) { - foreach ($fields as $field_name => $field) { - if (!empty($field['autoincrement'])) { - $result = $this->_makeAutoincrement($field_name, $name); - } - } - } - $db->completeNestedTransaction(); - return $result; - } - - // }}} - // {{{ dropTable() - - /** - * drop an existing table - * - * @param string $name name of the table that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $db->beginNestedTransaction(); - $result = $this->_dropAutoincrement($name); - if (!PEAR::isError($result)) { - $result = parent::dropTable($name); - } - $db->completeNestedTransaction(); - return $result; - } - - // }}} - // {{{ truncateTable() - - /** - * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported, - * it falls back to a DELETE FROM TABLE query) - * - * @param string $name name of the table that should be truncated - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function truncateTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - return $db->exec("TRUNCATE TABLE $name"); - } - - // }}} - // {{{ vacuum() - - /** - * Optimize (vacuum) all the tables in the db (or only the specified table) - * and optionally run ANALYZE. - * - * @param string $table table name (all the tables if empty) - * @param array $options an array with driver-specific options: - * - timeout [int] (in seconds) [mssql-only] - * - analyze [boolean] [pgsql and mysql] - * - full [boolean] [pgsql-only] - * - freeze [boolean] [pgsql-only] - * - * @return mixed MDB2_OK success, a MDB2 error on failure - * @access public - */ - function vacuum($table = null, $options = array()) - { - // not needed in Oracle - return MDB2_OK; - } - - // }}} - // {{{ alterTable() - - /** - * alter an existing table - * - * @param string $name name of the table that is intended to be changed. - * @param array $changes associative array that contains the details of each type - * of change that is intended to be performed. The types of - * changes that are currently supported are defined as follows: - * - * name - * - * New name for the table. - * - * add - * - * Associative array with the names of fields to be added as - * indexes of the array. The value of each entry of the array - * should be set to another associative array with the properties - * of the fields to be added. The properties of the fields should - * be the same as defined by the MDB2 parser. - * - * - * remove - * - * Associative array with the names of fields to be removed as indexes - * of the array. Currently the values assigned to each entry are ignored. - * An empty array should be used for future compatibility. - * - * rename - * - * Associative array with the names of fields to be renamed as indexes - * of the array. The value of each entry of the array should be set to - * another associative array with the entry named name with the new - * field name and the entry named Declaration that is expected to contain - * the portion of the field declaration already in DBMS specific SQL code - * as it is used in the CREATE TABLE statement. - * - * change - * - * Associative array with the names of the fields to be changed as indexes - * of the array. Keep in mind that if it is intended to change either the - * name of a field and any other properties, the change array entries - * should have the new names of the fields as array indexes. - * - * The value of each entry of the array should be set to another associative - * array with the properties of the fields to that are meant to be changed as - * array entries. These entries should be assigned to the new values of the - * respective properties. The properties of the fields should be the same - * as defined by the MDB2 parser. - * - * Example - * array( - * 'name' => 'userlist', - * 'add' => array( - * 'quota' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * ) - * ), - * 'remove' => array( - * 'file_limit' => array(), - * 'time_limit' => array() - * ), - * 'change' => array( - * 'name' => array( - * 'length' => '20', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 20, - * ), - * ) - * ), - * 'rename' => array( - * 'sex' => array( - * 'name' => 'gender', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 1, - * 'default' => 'M', - * ), - * ) - * ) - * ) - * - * @param boolean $check indicates whether the function should just check if the DBMS driver - * can perform the requested table alterations if the value is true or - * actually perform them otherwise. - * @access public - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - */ - function alterTable($name, $changes, $check) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - foreach ($changes as $change_name => $change) { - switch ($change_name) { - case 'add': - case 'remove': - case 'change': - case 'name': - case 'rename': - break; - default: - return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null, - 'change type "'.$change_name.'" not yet supported', __FUNCTION__); - } - } - - if ($check) { - return MDB2_OK; - } - - $name = $db->quoteIdentifier($name, true); - - if (!empty($changes['add']) && is_array($changes['add'])) { - $fields = array(); - foreach ($changes['add'] as $field_name => $field) { - $fields[] = $db->getDeclaration($field['type'], $field_name, $field); - } - $result = $db->exec("ALTER TABLE $name ADD (". implode(', ', $fields).')'); - if (PEAR::isError($result)) { - return $result; - } - } - - if (!empty($changes['change']) && is_array($changes['change'])) { - $fields = array(); - foreach ($changes['change'] as $field_name => $field) { - //fix error "column to be modified to NOT NULL is already NOT NULL" - if (!array_key_exists('notnull', $field)) { - unset($field['definition']['notnull']); - } - $fields[] = $db->getDeclaration($field['definition']['type'], $field_name, $field['definition']); - } - $result = $db->exec("ALTER TABLE $name MODIFY (". implode(', ', $fields).')'); - if (PEAR::isError($result)) { - return $result; - } - } - - if (!empty($changes['rename']) && is_array($changes['rename'])) { - foreach ($changes['rename'] as $field_name => $field) { - $field_name = $db->quoteIdentifier($field_name, true); - $query = "ALTER TABLE $name RENAME COLUMN $field_name TO ".$db->quoteIdentifier($field['name']); - $result = $db->exec($query); - if (PEAR::isError($result)) { - return $result; - } - } - } - - if (!empty($changes['remove']) && is_array($changes['remove'])) { - $fields = array(); - foreach ($changes['remove'] as $field_name => $field) { - $fields[] = $db->quoteIdentifier($field_name, true); - } - $result = $db->exec("ALTER TABLE $name DROP COLUMN ". implode(', ', $fields)); - if (PEAR::isError($result)) { - return $result; - } - } - - if (!empty($changes['name'])) { - $change_name = $db->quoteIdentifier($changes['name'], true); - $result = $db->exec("ALTER TABLE $name RENAME TO ".$change_name); - if (PEAR::isError($result)) { - return $result; - } - } - - return MDB2_OK; - } - - // }}} - // {{{ _fetchCol() - - /** - * Utility method to fetch and format a column from a resultset - * - * @param resource $result - * @param boolean $fixname (used when listing indices or constraints) - * @return mixed array of names on success, a MDB2 error on failure - * @access private - */ - function _fetchCol($result, $fixname = false) - { - if (PEAR::isError($result)) { - return $result; - } - $col = $result->fetchCol(); - if (PEAR::isError($col)) { - return $col; - } - $result->free(); - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if ($fixname) { - foreach ($col as $k => $v) { - $col[$k] = $this->_fixIndexName($v); - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE - && $db->options['field_case'] == CASE_LOWER - ) { - $col = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $col); - } - return $col; - } - - // }}} - // {{{ listDatabases() - - /** - * list all databases - * - * @return mixed array of database names on success, a MDB2 error on failure - * @access public - */ - function listDatabases() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!$db->options['emulate_database']) { - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'database listing is only supported if the "emulate_database" option is enabled', __FUNCTION__); - } - - if ($db->options['database_name_prefix']) { - $query = 'SELECT SUBSTR(username, '; - $query.= (strlen($db->options['database_name_prefix'])+1); - $query.= ") FROM sys.dba_users WHERE username LIKE '"; - $query.= $db->options['database_name_prefix']."%'"; - } else { - $query = 'SELECT username FROM sys.dba_users'; - } - $result = $db->standaloneQuery($query, array('text'), false); - return $this->_fetchCol($result); - } - - // }}} - // {{{ listUsers() - - /** - * list all users - * - * @return mixed array of user names on success, a MDB2 error on failure - * @access public - */ - function listUsers() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if ($db->options['emulate_database'] && $db->options['database_name_prefix']) { - $query = 'SELECT SUBSTR(username, '; - $query.= (strlen($db->options['database_name_prefix'])+1); - $query.= ") FROM sys.dba_users WHERE username NOT LIKE '"; - $query.= $db->options['database_name_prefix']."%'"; - } else { - $query = 'SELECT username FROM sys.dba_users'; - } - return $db->queryCol($query); - } - - // }}} - // {{{ listViews() - - /** - * list all views in the current database - * - * @param string owner, the current is default - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listViews($owner = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT view_name - FROM sys.all_views - WHERE owner=? OR owner=?'; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $result = $stmt->execute(array($owner, strtoupper($owner))); - return $this->_fetchCol($result); - } - - // }}} - // {{{ listFunctions() - - /** - * list all functions in the current database - * - * @param string owner, the current is default - * @return mixed array of function names on success, a MDB2 error on failure - * @access public - */ - function listFunctions($owner = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = "SELECT name - FROM sys.all_source - WHERE line = 1 - AND type = 'FUNCTION' - AND (owner=? OR owner=?)"; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $result = $stmt->execute(array($owner, strtoupper($owner))); - return $this->_fetchCol($result); - } - - // }}} - // {{{ listTableTriggers() - - /** - * list all triggers in the database that reference a given table - * - * @param string table for which all referenced triggers should be found - * @return mixed array of trigger names on success, a MDB2 error on failure - * @access public - */ - function listTableTriggers($table = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = "SELECT trigger_name - FROM sys.all_triggers - WHERE (table_name=? OR table_name=?) - AND (owner=? OR owner=?)"; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $args = array( - $table, - strtoupper($table), - $owner, - strtoupper($owner), - ); - $result = $stmt->execute($args); - return $this->_fetchCol($result); - } - - // }}} - // {{{ listTables() - - /** - * list all tables in the database - * - * @param string owner, the current is default - * @return mixed array of table names on success, a MDB2 error on failure - * @access public - */ - function listTables($owner = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT table_name - FROM sys.all_tables - WHERE owner=? OR owner=?'; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $result = $stmt->execute(array($owner, strtoupper($owner))); - return $this->_fetchCol($result); - } - - // }}} - // {{{ listTableFields() - - /** - * list all fields in a table in the current database - * - * @param string $table name of table that should be used in method - * @return mixed array of field names on success, a MDB2 error on failure - * @access public - */ - function listTableFields($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($owner, $table) = $this->splitTableSchema($table); - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT column_name - FROM all_tab_columns - WHERE (table_name=? OR table_name=?) - AND (owner=? OR owner=?) - ORDER BY column_id'; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $args = array( - $table, - strtoupper($table), - $owner, - strtoupper($owner), - ); - $result = $stmt->execute($args); - return $this->_fetchCol($result); - } - - // }}} - // {{{ listTableIndexes() - - /** - * list all indexes in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of index names on success, a MDB2 error on failure - * @access public - */ - function listTableIndexes($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($owner, $table) = $this->splitTableSchema($table); - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT i.index_name name - FROM all_indexes i - LEFT JOIN all_constraints c - ON c.index_name = i.index_name - AND c.owner = i.owner - AND c.table_name = i.table_name - WHERE (i.table_name=? OR i.table_name=?) - AND (i.owner=? OR i.owner=?) - AND c.index_name IS NULL - AND i.generated=' .$db->quote('N', 'text'); - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $args = array( - $table, - strtoupper($table), - $owner, - strtoupper($owner), - ); - $result = $stmt->execute($args); - return $this->_fetchCol($result, true); - } - - // }}} - // {{{ createConstraint() - - /** - * create a constraint on a table - * - * @param string $table name of the table on which the constraint is to be created - * @param string $name name of the constraint to be created - * @param array $definition associative array that defines properties of the constraint to be created. - * Currently, only one property named FIELDS is supported. This property - * is also an associative with the names of the constraint fields as array - * constraints. Each entry of this array is set to another type of associative - * array that specifies properties of the constraint that are specific to - * each field. - * - * Example - * array( - * 'fields' => array( - * 'user_name' => array(), - * 'last_login' => array() - * ) - * ) - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createConstraint($table, $name, $definition) - { - $result = parent::createConstraint($table, $name, $definition); - if (PEAR::isError($result)) { - return $result; - } - if (!empty($definition['foreign'])) { - return $this->_createFKTriggers($table, array($name => $definition)); - } - return MDB2_OK; - } - - // }}} - // {{{ dropConstraint() - - /** - * drop existing constraint - * - * @param string $table name of table that should be used in method - * @param string $name name of the constraint to be dropped - * @param string $primary hint if the constraint is primary - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropConstraint($table, $name, $primary = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - //is it a FK constraint? If so, also delete the associated triggers - $db->loadModule('Reverse', null, true); - $definition = $db->reverse->getTableConstraintDefinition($table, $name); - if (!PEAR::isError($definition) && !empty($definition['foreign'])) { - //first drop the FK enforcing triggers - $result = $this->_dropFKTriggers($table, $name, $definition['references']['table']); - if (PEAR::isError($result)) { - return $result; - } - } - - return parent::dropConstraint($table, $name, $primary); - } - - // }}} - // {{{ _createFKTriggers() - - /** - * Create triggers to enforce the FOREIGN KEY constraint on the table - * - * @param string $table table name - * @param array $foreign_keys FOREIGN KEY definitions - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access private - */ - function _createFKTriggers($table, $foreign_keys) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - // create triggers to enforce FOREIGN KEY constraints - if ($db->supports('triggers') && !empty($foreign_keys)) { - $table = $db->quoteIdentifier($table, true); - foreach ($foreign_keys as $fkname => $fkdef) { - if (empty($fkdef)) { - continue; - } - $fkdef['onupdate'] = empty($fkdef['onupdate']) ? $db->options['default_fk_action_onupdate'] : strtoupper($fkdef['onupdate']); - if ('RESTRICT' == $fkdef['onupdate'] || 'NO ACTION' == $fkdef['onupdate']) { - // already handled by default - continue; - } - - $trigger_name = substr(strtolower($fkname.'_pk_upd_trg'), 0, $db->options['max_identifiers_length']); - $table_fields = array_keys($fkdef['fields']); - $referenced_fields = array_keys($fkdef['references']['fields']); - - //create the ON UPDATE trigger on the primary table - $restrict_action = ' IF (SELECT '; - $aliased_fields = array(); - foreach ($table_fields as $field) { - $aliased_fields[] = $table .'.'.$field .' AS '.$field; - } - $restrict_action .= implode(',', $aliased_fields) - .' FROM '.$table - .' WHERE '; - $conditions = array(); - $new_values = array(); - $null_values = array(); - for ($i=0; $iloadModule('Reverse', null, true); - $default_values = array(); - foreach ($table_fields as $table_field) { - $field_definition = $db->reverse->getTableFieldDefinition($table, $field); - if (PEAR::isError($field_definition)) { - return $field_definition; - } - $default_values[] = $table_field .' = '. $field_definition[0]['default']; - } - $setdefault_action = 'UPDATE '.$table.' SET '.implode(', ', $default_values).' WHERE '.implode(' AND ', $conditions). ';'; - } - - $query = 'CREATE TRIGGER %s' - .' %s ON '.$fkdef['references']['table'] - .' FOR EACH ROW ' - .' BEGIN '; - - if ('CASCADE' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_name, 'BEFORE UPDATE', 'update') . $cascade_action; - } elseif ('SET NULL' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_name, 'BEFORE UPDATE', 'update') . $setnull_action; - } elseif ('SET DEFAULT' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_name, 'BEFORE UPDATE', 'update') . $setdefault_action; - } - $sql_update .= ' END;'; - $result = $db->exec($sql_update); - if (PEAR::isError($result)) { - if ($result->getCode() === MDB2_ERROR_ALREADY_EXISTS) { - return MDB2_OK; - } - return $result; - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ _dropFKTriggers() - - /** - * Drop the triggers created to enforce the FOREIGN KEY constraint on the table - * - * @param string $table table name - * @param string $fkname FOREIGN KEY constraint name - * @param string $referenced_table referenced table name - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access private - */ - function _dropFKTriggers($table, $fkname, $referenced_table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $triggers = $this->listTableTriggers($table); - $triggers2 = $this->listTableTriggers($referenced_table); - if (!PEAR::isError($triggers2) && !PEAR::isError($triggers)) { - $triggers = array_merge($triggers, $triggers2); - $trigger_name = substr(strtolower($fkname.'_pk_upd_trg'), 0, $db->options['max_identifiers_length']); - $pattern = '/^'.$trigger_name.'$/i'; - foreach ($triggers as $trigger) { - if (preg_match($pattern, $trigger)) { - $result = $db->exec('DROP TRIGGER '.$trigger); - if (PEAR::isError($result)) { - return $result; - } - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ listTableConstraints() - - /** - * list all constraints in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of constraint names on success, a MDB2 error on failure - * @access public - */ - function listTableConstraints($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($owner, $table) = $this->splitTableSchema($table); - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT constraint_name - FROM all_constraints - WHERE (table_name=? OR table_name=?) - AND (owner=? OR owner=?)'; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $args = array( - $table, - strtoupper($table), - $owner, - strtoupper($owner), - ); - $result = $stmt->execute($args); - return $this->_fetchCol($result, true); - } - - // }}} - // {{{ createSequence() - - /** - * create sequence - * - * @param object $db database object that is extended by this class - * @param string $seq_name name of the sequence to be created - * @param string $start start value of the sequence; default is 1 - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createSequence($seq_name, $start = 1) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - $query = "CREATE SEQUENCE $sequence_name START WITH $start INCREMENT BY 1 NOCACHE"; - $query.= ($start < 1 ? " MINVALUE $start" : ''); - return $db->exec($query); - } - - // }}} - // {{{ dropSequence() - - /** - * drop existing sequence - * - * @param object $db database object that is extended by this class - * @param string $seq_name name of the sequence to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropSequence($seq_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - return $db->exec("DROP SEQUENCE $sequence_name"); - } - - // }}} - // {{{ listSequences() - - /** - * list all sequences in the current database - * - * @param string owner, the current is default - * @return mixed array of sequence names on success, a MDB2 error on failure - * @access public - */ - function listSequences($owner = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT sequence_name - FROM sys.all_sequences - WHERE (sequence_owner=? OR sequence_owner=?)'; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $result = $stmt->execute(array($owner, strtoupper($owner))); - if (PEAR::isError($result)) { - return $result; - } - $col = $result->fetchCol(); - if (PEAR::isError($col)) { - return $col; - } - $result->free(); - - foreach ($col as $k => $v) { - $col[$k] = $this->_fixSequenceName($v); - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE - && $db->options['field_case'] == CASE_LOWER - ) { - $col = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $col); - } - return $col; - } -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Manager/pgsql.php b/3rdparty/MDB2/Driver/Manager/pgsql.php deleted file mode 100644 index f2c2137dc8b3b1c6c536392b5dd26eb229a55060..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Manager/pgsql.php +++ /dev/null @@ -1,981 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/Driver/Manager/Common.php'; - -/** - * MDB2 MySQL driver for the management modules - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_Driver_Manager_pgsql extends MDB2_Driver_Manager_Common -{ - // {{{ createDatabase() - - /** - * create a new database - * - * @param string $name name of the database that should be created - * @param array $options array with charset info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createDatabase($name, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $query = 'CREATE DATABASE ' . $name; - if (!empty($options['charset'])) { - $query .= ' WITH ENCODING ' . $db->quote($options['charset'], 'text'); - } - return $db->standaloneQuery($query, null, true); - } - - // }}} - // {{{ alterDatabase() - - /** - * alter an existing database - * - * @param string $name name of the database that is intended to be changed - * @param array $options array with name, owner info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function alterDatabase($name, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = ''; - if (!empty($options['name'])) { - $query .= ' RENAME TO ' . $options['name']; - } - if (!empty($options['owner'])) { - $query .= ' OWNER TO ' . $options['owner']; - } - - if (empty($query)) { - return MDB2_OK; - } - - $query = 'ALTER DATABASE '. $db->quoteIdentifier($name, true) . $query; - return $db->standaloneQuery($query, null, true); - } - - // }}} - // {{{ dropDatabase() - - /** - * drop an existing database - * - * @param string $name name of the database that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropDatabase($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $query = "DROP DATABASE $name"; - return $db->standaloneQuery($query, null, true); - } - - // }}} - // {{{ _getAdvancedFKOptions() - - /** - * Return the FOREIGN KEY query section dealing with non-standard options - * as MATCH, INITIALLY DEFERRED, ON UPDATE, ... - * - * @param array $definition - * @return string - * @access protected - */ - function _getAdvancedFKOptions($definition) - { - $query = ''; - if (!empty($definition['match'])) { - $query .= ' MATCH '.$definition['match']; - } - if (!empty($definition['onupdate'])) { - $query .= ' ON UPDATE '.$definition['onupdate']; - } - if (!empty($definition['ondelete'])) { - $query .= ' ON DELETE '.$definition['ondelete']; - } - if (!empty($definition['deferrable'])) { - $query .= ' DEFERRABLE'; - } else { - $query .= ' NOT DEFERRABLE'; - } - if (!empty($definition['initiallydeferred'])) { - $query .= ' INITIALLY DEFERRED'; - } else { - $query .= ' INITIALLY IMMEDIATE'; - } - return $query; - } - - // }}} - // {{{ truncateTable() - - /** - * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported, - * it falls back to a DELETE FROM TABLE query) - * - * @param string $name name of the table that should be truncated - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function truncateTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $result = $db->exec("TRUNCATE TABLE $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ vacuum() - - /** - * Optimize (vacuum) all the tables in the db (or only the specified table) - * and optionally run ANALYZE. - * - * @param string $table table name (all the tables if empty) - * @param array $options an array with driver-specific options: - * - timeout [int] (in seconds) [mssql-only] - * - analyze [boolean] [pgsql and mysql] - * - full [boolean] [pgsql-only] - * - freeze [boolean] [pgsql-only] - * - * @return mixed MDB2_OK success, a MDB2 error on failure - * @access public - */ - function vacuum($table = null, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $query = 'VACUUM'; - - if (!empty($options['full'])) { - $query .= ' FULL'; - } - if (!empty($options['freeze'])) { - $query .= ' FREEZE'; - } - if (!empty($options['analyze'])) { - $query .= ' ANALYZE'; - } - - if (!empty($table)) { - $query .= ' '.$db->quoteIdentifier($table, true); - } - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ alterTable() - - /** - * alter an existing table - * - * @param string $name name of the table that is intended to be changed. - * @param array $changes associative array that contains the details of each type - * of change that is intended to be performed. The types of - * changes that are currently supported are defined as follows: - * - * name - * - * New name for the table. - * - * add - * - * Associative array with the names of fields to be added as - * indexes of the array. The value of each entry of the array - * should be set to another associative array with the properties - * of the fields to be added. The properties of the fields should - * be the same as defined by the MDB2 parser. - * - * - * remove - * - * Associative array with the names of fields to be removed as indexes - * of the array. Currently the values assigned to each entry are ignored. - * An empty array should be used for future compatibility. - * - * rename - * - * Associative array with the names of fields to be renamed as indexes - * of the array. The value of each entry of the array should be set to - * another associative array with the entry named name with the new - * field name and the entry named Declaration that is expected to contain - * the portion of the field declaration already in DBMS specific SQL code - * as it is used in the CREATE TABLE statement. - * - * change - * - * Associative array with the names of the fields to be changed as indexes - * of the array. Keep in mind that if it is intended to change either the - * name of a field and any other properties, the change array entries - * should have the new names of the fields as array indexes. - * - * The value of each entry of the array should be set to another associative - * array with the properties of the fields to that are meant to be changed as - * array entries. These entries should be assigned to the new values of the - * respective properties. The properties of the fields should be the same - * as defined by the MDB2 parser. - * - * Example - * array( - * 'name' => 'userlist', - * 'add' => array( - * 'quota' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * ) - * ), - * 'remove' => array( - * 'file_limit' => array(), - * 'time_limit' => array() - * ), - * 'change' => array( - * 'name' => array( - * 'length' => '20', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 20, - * ), - * ) - * ), - * 'rename' => array( - * 'sex' => array( - * 'name' => 'gender', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 1, - * 'default' => 'M', - * ), - * ) - * ) - * ) - * - * @param boolean $check indicates whether the function should just check if the DBMS driver - * can perform the requested table alterations if the value is true or - * actually perform them otherwise. - * @access public - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - */ - function alterTable($name, $changes, $check) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - foreach ($changes as $change_name => $change) { - switch ($change_name) { - case 'add': - case 'remove': - case 'change': - case 'name': - case 'rename': - break; - default: - return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null, - 'change type "'.$change_name.'\" not yet supported', __FUNCTION__); - } - } - - if ($check) { - return MDB2_OK; - } - - $name = $db->quoteIdentifier($name, true); - - if (!empty($changes['remove']) && is_array($changes['remove'])) { - foreach ($changes['remove'] as $field_name => $field) { - $field_name = $db->quoteIdentifier($field_name, true); - $query = 'DROP ' . $field_name; - $result = $db->exec("ALTER TABLE $name $query"); - if (PEAR::isError($result)) { - return $result; - } - } - } - - if (!empty($changes['rename']) && is_array($changes['rename'])) { - foreach ($changes['rename'] as $field_name => $field) { - $field_name = $db->quoteIdentifier($field_name, true); - $result = $db->exec("ALTER TABLE $name RENAME COLUMN $field_name TO ".$db->quoteIdentifier($field['name'], true)); - if (PEAR::isError($result)) { - return $result; - } - } - } - - if (!empty($changes['add']) && is_array($changes['add'])) { - foreach ($changes['add'] as $field_name => $field) { - $query = 'ADD ' . $db->getDeclaration($field['type'], $field_name, $field); - $result = $db->exec("ALTER TABLE $name $query"); - if (PEAR::isError($result)) { - return $result; - } - } - } - - if (!empty($changes['change']) && is_array($changes['change'])) { - foreach ($changes['change'] as $field_name => $field) { - $field_name = $db->quoteIdentifier($field_name, true); - if (!empty($field['definition']['type'])) { - $server_info = $db->getServerVersion(); - if (PEAR::isError($server_info)) { - return $server_info; - } - if (is_array($server_info) && $server_info['major'] < 8) { - return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null, - 'changing column type for "'.$change_name.'\" requires PostgreSQL 8.0 or above', __FUNCTION__); - } - $db->loadModule('Datatype', null, true); - $type = $db->datatype->getTypeDeclaration($field['definition']); - if($type=='SERIAL PRIMARY KEY'){//not correct when altering a table, since serials arent a real type - $type='INTEGER';//use integer instead - } - $query = "ALTER $field_name TYPE $type USING CAST($field_name AS $type)"; - $result = $db->exec("ALTER TABLE $name $query"); - if (PEAR::isError($result)) { - return $result; - } - } - if (array_key_exists('default', $field['definition'])) { - $query = "ALTER $field_name SET DEFAULT ".$db->quote($field['definition']['default'], $field['definition']['type']); - $result = $db->exec("ALTER TABLE $name $query"); - if (PEAR::isError($result)) { - return $result; - } - } - if (array_key_exists('notnull', $field['definition'])) { - $query = "ALTER $field_name ".($field['definition']['notnull'] ? 'SET' : 'DROP').' NOT NULL'; - $result = $db->exec("ALTER TABLE $name $query"); - if (PEAR::isError($result)) { - return $result; - } - } - } - } - - if (!empty($changes['name'])) { - $change_name = $db->quoteIdentifier($changes['name'], true); - $result = $db->exec("ALTER TABLE $name RENAME TO ".$change_name); - if (PEAR::isError($result)) { - return $result; - } - } - - return MDB2_OK; - } - - // }}} - // {{{ listDatabases() - - /** - * list all databases - * - * @return mixed array of database names on success, a MDB2 error on failure - * @access public - */ - function listDatabases() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SELECT datname FROM pg_database'; - $result2 = $db->standaloneQuery($query, array('text'), false); - if (!MDB2::isResultCommon($result2)) { - return $result2; - } - - $result = $result2->fetchCol(); - $result2->free(); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listUsers() - - /** - * list all users - * - * @return mixed array of user names on success, a MDB2 error on failure - * @access public - */ - function listUsers() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SELECT usename FROM pg_user'; - $result2 = $db->standaloneQuery($query, array('text'), false); - if (!MDB2::isResultCommon($result2)) { - return $result2; - } - - $result = $result2->fetchCol(); - $result2->free(); - return $result; - } - - // }}} - // {{{ listViews() - - /** - * list all views in the current database - * - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listViews($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT viewname - FROM pg_views - WHERE schemaname NOT IN ('pg_catalog', 'information_schema') - AND viewname !~ '^pg_'"; - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTableViews() - - /** - * list the views in the database that reference a given table - * - * @param string table for which all referenced views should be found - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listTableViews($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SELECT viewname FROM pg_views NATURAL JOIN pg_tables'; - $query.= ' WHERE tablename ='.$db->quote($table, 'text'); - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listFunctions() - - /** - * list all functions in the current database - * - * @return mixed array of function names on success, a MDB2 error on failure - * @access public - */ - function listFunctions() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = " - SELECT - proname - FROM - pg_proc pr, - pg_type tp - WHERE - tp.oid = pr.prorettype - AND pr.proisagg = FALSE - AND tp.typname <> 'trigger' - AND pr.pronamespace IN - (SELECT oid FROM pg_namespace WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema')"; - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTableTriggers() - - /** - * list all triggers in the database that reference a given table - * - * @param string table for which all referenced triggers should be found - * @return mixed array of trigger names on success, a MDB2 error on failure - * @access public - */ - function listTableTriggers($table = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SELECT trg.tgname AS trigger_name - FROM pg_trigger trg, - pg_class tbl - WHERE trg.tgrelid = tbl.oid'; - if (null !== $table) { - $table = $db->quote(strtoupper($table), 'text'); - $query .= " AND UPPER(tbl.relname) = $table"; - } - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTables() - - /** - * list all tables in the current database - * - * @return mixed array of table names on success, a MDB2 error on failure - * @access public - */ - function listTables($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - // gratuitously stolen from PEAR DB _getSpecialQuery in pgsql.php - $query = 'SELECT c.relname AS "Name"' - . ' FROM pg_class c, pg_user u' - . ' WHERE c.relowner = u.usesysid' - . " AND c.relkind = 'r'" - . ' AND NOT EXISTS' - . ' (SELECT 1 FROM pg_views' - . ' WHERE viewname = c.relname)' - . " AND c.relname !~ '^(pg_|sql_)'" - . ' UNION' - . ' SELECT c.relname AS "Name"' - . ' FROM pg_class c' - . " WHERE c.relkind = 'r'" - . ' AND NOT EXISTS' - . ' (SELECT 1 FROM pg_views' - . ' WHERE viewname = c.relname)' - . ' AND NOT EXISTS' - . ' (SELECT 1 FROM pg_user' - . ' WHERE usesysid = c.relowner)' - . " AND c.relname !~ '^pg_'"; - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTableFields() - - /** - * list all fields in a table in the current database - * - * @param string $table name of table that should be used in method - * @return mixed array of field names on success, a MDB2 error on failure - * @access public - */ - function listTableFields($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table); - - $table = $db->quoteIdentifier($table, true); - if (!empty($schema)) { - $table = $db->quoteIdentifier($schema, true) . '.' .$table; - } - $db->setLimit(1); - $result2 = $db->query("SELECT * FROM $table"); - if (PEAR::isError($result2)) { - return $result2; - } - $result = $result2->getColumnNames(); - $result2->free(); - if (PEAR::isError($result)) { - return $result; - } - return array_flip($result); - } - - // }}} - // {{{ listTableIndexes() - - /** - * list all indexes in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of index names on success, a MDB2 error on failure - * @access public - */ - function listTableIndexes($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table); - - $table = $db->quote($table, 'text'); - $subquery = "SELECT indexrelid - FROM pg_index - LEFT JOIN pg_class ON pg_class.oid = pg_index.indrelid - LEFT JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid - WHERE pg_class.relname = $table - AND indisunique != 't' - AND indisprimary != 't'"; - if (!empty($schema)) { - $subquery .= ' AND pg_namespace.nspname = '.$db->quote($schema, 'text'); - } - $query = "SELECT relname FROM pg_class WHERE oid IN ($subquery)"; - $indexes = $db->queryCol($query, 'text'); - if (PEAR::isError($indexes)) { - return $indexes; - } - - $result = array(); - foreach ($indexes as $index) { - $index = $this->_fixIndexName($index); - if (!empty($index)) { - $result[$index] = true; - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_change_key_case($result, $db->options['field_case']); - } - return array_keys($result); - } - - // }}} - // {{{ dropConstraint() - - /** - * drop existing constraint - * - * @param string $table name of table that should be used in method - * @param string $name name of the constraint to be dropped - * @param string $primary hint if the constraint is primary - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropConstraint($table, $name, $primary = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - // is it an UNIQUE index? - $query = 'SELECT relname - FROM pg_class - WHERE oid IN ( - SELECT indexrelid - FROM pg_index, pg_class - WHERE pg_class.relname = '.$db->quote($table, 'text').' - AND pg_class.oid = pg_index.indrelid - AND indisunique = \'t\') - EXCEPT - SELECT conname - FROM pg_constraint, pg_class - WHERE pg_constraint.conrelid = pg_class.oid - AND relname = '. $db->quote($table, 'text'); - $unique = $db->queryCol($query, 'text'); - if (PEAR::isError($unique) || empty($unique)) { - // not an UNIQUE index, maybe a CONSTRAINT - return parent::dropConstraint($table, $name, $primary); - } - - if (in_array($name, $unique)) { - $result = $db->exec('DROP INDEX '.$db->quoteIdentifier($name, true)); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - $idxname = $db->getIndexName($name); - if (in_array($idxname, $unique)) { - $result = $db->exec('DROP INDEX '.$db->quoteIdentifier($idxname, true)); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $name . ' is not an existing constraint for table ' . $table, __FUNCTION__); - } - - // }}} - // {{{ listTableConstraints() - - /** - * list all constraints in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of constraint names on success, a MDB2 error on failure - * @access public - */ - function listTableConstraints($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table); - - $table = $db->quote($table, 'text'); - $query = 'SELECT conname - FROM pg_constraint - LEFT JOIN pg_class ON pg_constraint.conrelid = pg_class.oid - LEFT JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid - WHERE relname = ' .$table; - if (!empty($schema)) { - $query .= ' AND pg_namespace.nspname = ' . $db->quote($schema, 'text'); - } - $query .= ' - UNION DISTINCT - SELECT relname - FROM pg_class - WHERE oid IN ( - SELECT indexrelid - FROM pg_index - LEFT JOIN pg_class ON pg_class.oid = pg_index.indrelid - LEFT JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid - WHERE pg_class.relname = '.$table.' - AND indisunique = \'t\''; - if (!empty($schema)) { - $query .= ' AND pg_namespace.nspname = ' . $db->quote($schema, 'text'); - } - $query .= ')'; - $constraints = $db->queryCol($query); - if (PEAR::isError($constraints)) { - return $constraints; - } - - $result = array(); - foreach ($constraints as $constraint) { - $constraint = $this->_fixIndexName($constraint); - if (!empty($constraint)) { - $result[$constraint] = true; - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE - && $db->options['field_case'] == CASE_LOWER - ) { - $result = array_change_key_case($result, $db->options['field_case']); - } - return array_keys($result); - } - - // }}} - // {{{ createSequence() - - /** - * create sequence - * - * @param string $seq_name name of the sequence to be created - * @param string $start start value of the sequence; default is 1 - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createSequence($seq_name, $start = 1) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - $result = $db->exec("CREATE SEQUENCE $sequence_name INCREMENT 1". - ($start < 1 ? " MINVALUE $start" : '')." START $start"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropSequence() - - /** - * drop existing sequence - * - * @param string $seq_name name of the sequence to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropSequence($seq_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - $result = $db->exec("DROP SEQUENCE $sequence_name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listSequences() - - /** - * list all sequences in the current database - * - * @return mixed array of sequence names on success, a MDB2 error on failure - * @access public - */ - function listSequences($database = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace IN"; - $query.= "(SELECT oid FROM pg_namespace WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema')"; - $table_names = $db->queryCol($query); - if (PEAR::isError($table_names)) { - return $table_names; - } - $result = array(); - foreach ($table_names as $table_name) { - $result[] = $this->_fixSequenceName($table_name); - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } -} -?> diff --git a/3rdparty/MDB2/Driver/Manager/sqlite.php b/3rdparty/MDB2/Driver/Manager/sqlite.php deleted file mode 100644 index 1e7efe3e743dc7cbced870312b04ebf35d9a91df..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Manager/sqlite.php +++ /dev/null @@ -1,1390 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Manager/Common.php'; - -/** - * MDB2 SQLite driver for the management modules - * - * @package MDB2 - * @category Database - * @author Lukas Smith - * @author Lorenzo Alberton - */ -class MDB2_Driver_Manager_sqlite extends MDB2_Driver_Manager_Common -{ - // {{{ createDatabase() - - /** - * create a new database - * - * @param string $name name of the database that should be created - * @param array $options array with charset info - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createDatabase($name, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $database_file = $db->_getDatabaseFile($name); - if (file_exists($database_file)) { - return $db->raiseError(MDB2_ERROR_ALREADY_EXISTS, null, null, - 'database already exists', __FUNCTION__); - } - $php_errormsg = ''; - $handle = @sqlite_open($database_file, $db->dsn['mode'], $php_errormsg); - if (!$handle) { - return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null, - (isset($php_errormsg) ? $php_errormsg : 'could not create the database file'), __FUNCTION__); - } - if (!empty($options['charset'])) { - $query = 'PRAGMA encoding = ' . $db->quote($options['charset'], 'text'); - @sqlite_query($query, $handle); - } - @sqlite_close($handle); - return MDB2_OK; - } - - // }}} - // {{{ dropDatabase() - - /** - * drop an existing database - * - * @param string $name name of the database that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropDatabase($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $database_file = $db->_getDatabaseFile($name); - if (!@file_exists($database_file)) { - return $db->raiseError(MDB2_ERROR_CANNOT_DROP, null, null, - 'database does not exist', __FUNCTION__); - } - $result = @unlink($database_file); - if (!$result) { - return $db->raiseError(MDB2_ERROR_CANNOT_DROP, null, null, - (isset($php_errormsg) ? $php_errormsg : 'could not remove the database file'), __FUNCTION__); - } - return MDB2_OK; - } - - // }}} - // {{{ _getAdvancedFKOptions() - - /** - * Return the FOREIGN KEY query section dealing with non-standard options - * as MATCH, INITIALLY DEFERRED, ON UPDATE, ... - * - * @param array $definition - * @return string - * @access protected - */ - function _getAdvancedFKOptions($definition) - { - $query = ''; - if (!empty($definition['match'])) { - $query .= ' MATCH '.$definition['match']; - } - if (!empty($definition['onupdate']) && (strtoupper($definition['onupdate']) != 'NO ACTION')) { - $query .= ' ON UPDATE '.$definition['onupdate']; - } - if (!empty($definition['ondelete']) && (strtoupper($definition['ondelete']) != 'NO ACTION')) { - $query .= ' ON DELETE '.$definition['ondelete']; - } - if (!empty($definition['deferrable'])) { - $query .= ' DEFERRABLE'; - } else { - $query .= ' NOT DEFERRABLE'; - } - if (!empty($definition['initiallydeferred'])) { - $query .= ' INITIALLY DEFERRED'; - } else { - $query .= ' INITIALLY IMMEDIATE'; - } - return $query; - } - - // }}} - // {{{ _getCreateTableQuery() - - /** - * Create a basic SQL query for a new table creation - * @param string $name Name of the database that should be created - * @param array $fields Associative array that contains the definition of each field of the new table - * @param array $options An associative array of table options - * @return mixed string (the SQL query) on success, a MDB2 error on failure - * @see createTable() - */ - function _getCreateTableQuery($name, $fields, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!$name) { - return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null, - 'no valid table name specified', __FUNCTION__); - } - if (empty($fields)) { - return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null, - 'no fields specified for table "'.$name.'"', __FUNCTION__); - } - $query_fields = $this->getFieldDeclarationList($fields); - if (PEAR::isError($query_fields)) { - return $query_fields; - } - if (!empty($options['primary'])) { - $query_fields.= ', PRIMARY KEY ('.implode(', ', array_keys($options['primary'])).')'; - } - if (!empty($options['foreign_keys'])) { - foreach ($options['foreign_keys'] as $fkname => $fkdef) { - if (empty($fkdef)) { - continue; - } - $query_fields.= ', CONSTRAINT '.$fkname.' FOREIGN KEY ('.implode(', ', array_keys($fkdef['fields'])).')'; - $query_fields.= ' REFERENCES '.$fkdef['references']['table'].' ('.implode(', ', array_keys($fkdef['references']['fields'])).')'; - $query_fields.= $this->_getAdvancedFKOptions($fkdef); - } - } - - $name = $db->quoteIdentifier($name, true); - $result = 'CREATE '; - if (!empty($options['temporary'])) { - $result .= $this->_getTemporaryTableQuery(); - } - $result .= " TABLE $name ($query_fields)"; - return $result; - } - - // }}} - // {{{ createTable() - - /** - * create a new table - * - * @param string $name Name of the database that should be created - * @param array $fields Associative array that contains the definition - * of each field of the new table - * @param array $options An associative array of table options - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createTable($name, $fields, $options = array()) - { - $result = parent::createTable($name, $fields, $options); - if (PEAR::isError($result)) { - return $result; - } - // create triggers to enforce FOREIGN KEY constraints - if (!empty($options['foreign_keys'])) { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - foreach ($options['foreign_keys'] as $fkname => $fkdef) { - if (empty($fkdef)) { - continue; - } - //set actions to default if not set - $fkdef['onupdate'] = empty($fkdef['onupdate']) ? $db->options['default_fk_action_onupdate'] : strtoupper($fkdef['onupdate']); - $fkdef['ondelete'] = empty($fkdef['ondelete']) ? $db->options['default_fk_action_ondelete'] : strtoupper($fkdef['ondelete']); - - $trigger_names = array( - 'insert' => $fkname.'_insert_trg', - 'update' => $fkname.'_update_trg', - 'pk_update' => $fkname.'_pk_update_trg', - 'pk_delete' => $fkname.'_pk_delete_trg', - ); - - //create the [insert|update] triggers on the FK table - $table_fields = array_keys($fkdef['fields']); - $referenced_fields = array_keys($fkdef['references']['fields']); - $query = 'CREATE TRIGGER %s BEFORE %s ON '.$name - .' FOR EACH ROW BEGIN' - .' SELECT RAISE(ROLLBACK, \'%s on table "'.$name.'" violates FOREIGN KEY constraint "'.$fkname.'"\')' - .' WHERE (SELECT '; - $aliased_fields = array(); - foreach ($referenced_fields as $field) { - $aliased_fields[] = $fkdef['references']['table'] .'.'.$field .' AS '.$field; - } - $query .= implode(',', $aliased_fields) - .' FROM '.$fkdef['references']['table'] - .' WHERE '; - $conditions = array(); - for ($i=0; $iexec(sprintf($query, $trigger_names['insert'], 'INSERT', 'insert')); - if (PEAR::isError($result)) { - return $result; - } - - $result = $db->exec(sprintf($query, $trigger_names['update'], 'UPDATE', 'update')); - if (PEAR::isError($result)) { - return $result; - } - - //create the ON [UPDATE|DELETE] triggers on the primary table - $restrict_action = 'SELECT RAISE(ROLLBACK, \'%s on table "'.$name.'" violates FOREIGN KEY constraint "'.$fkname.'"\')' - .' WHERE (SELECT '; - $aliased_fields = array(); - foreach ($table_fields as $field) { - $aliased_fields[] = $name .'.'.$field .' AS '.$field; - } - $restrict_action .= implode(',', $aliased_fields) - .' FROM '.$name - .' WHERE '; - $conditions = array(); - $new_values = array(); - $null_values = array(); - for ($i=0; $i OLD.'.$referenced_fields[$i]; - } - $restrict_action .= implode(' AND ', $conditions).') IS NOT NULL' - .' AND (' .implode(' OR ', $conditions2) .')'; - - $cascade_action_update = 'UPDATE '.$name.' SET '.implode(', ', $new_values) .' WHERE '.implode(' AND ', $conditions); - $cascade_action_delete = 'DELETE FROM '.$name.' WHERE '.implode(' AND ', $conditions); - $setnull_action = 'UPDATE '.$name.' SET '.implode(', ', $null_values).' WHERE '.implode(' AND ', $conditions); - - if ('SET DEFAULT' == $fkdef['onupdate'] || 'SET DEFAULT' == $fkdef['ondelete']) { - $db->loadModule('Reverse', null, true); - $default_values = array(); - foreach ($table_fields as $table_field) { - $field_definition = $db->reverse->getTableFieldDefinition($name, $field); - if (PEAR::isError($field_definition)) { - return $field_definition; - } - $default_values[] = $table_field .' = '. $field_definition[0]['default']; - } - $setdefault_action = 'UPDATE '.$name.' SET '.implode(', ', $default_values).' WHERE '.implode(' AND ', $conditions); - } - - $query = 'CREATE TRIGGER %s' - .' %s ON '.$fkdef['references']['table'] - .' FOR EACH ROW BEGIN '; - - if ('CASCADE' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_names['pk_update'], 'AFTER UPDATE', 'update') . $cascade_action_update. '; END;'; - } elseif ('SET NULL' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setnull_action. '; END;'; - } elseif ('SET DEFAULT' == $fkdef['onupdate']) { - $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setdefault_action. '; END;'; - } elseif ('NO ACTION' == $fkdef['onupdate']) { - $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'AFTER UPDATE', 'update') . '; END;'; - } elseif ('RESTRICT' == $fkdef['onupdate']) { - $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . '; END;'; - } - if ('CASCADE' == $fkdef['ondelete']) { - $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'AFTER DELETE', 'delete') . $cascade_action_delete. '; END;'; - } elseif ('SET NULL' == $fkdef['ondelete']) { - $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setnull_action. '; END;'; - } elseif ('SET DEFAULT' == $fkdef['ondelete']) { - $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setdefault_action. '; END;'; - } elseif ('NO ACTION' == $fkdef['ondelete']) { - $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'AFTER DELETE', 'delete') . '; END;'; - } elseif ('RESTRICT' == $fkdef['ondelete']) { - $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . '; END;'; - } - - if (PEAR::isError($result)) { - return $result; - } - $result = $db->exec($sql_delete); - if (PEAR::isError($result)) { - return $result; - } - $result = $db->exec($sql_update); - if (PEAR::isError($result)) { - return $result; - } - } - } - if (PEAR::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropTable() - - /** - * drop an existing table - * - * @param string $name name of the table that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - //delete the triggers associated to existing FK constraints - $constraints = $this->listTableConstraints($name); - if (!PEAR::isError($constraints) && !empty($constraints)) { - $db->loadModule('Reverse', null, true); - foreach ($constraints as $constraint) { - $definition = $db->reverse->getTableConstraintDefinition($name, $constraint); - if (!PEAR::isError($definition) && !empty($definition['foreign'])) { - $result = $this->_dropFKTriggers($name, $constraint, $definition['references']['table']); - if (PEAR::isError($result)) { - return $result; - } - } - } - } - - $name = $db->quoteIdentifier($name, true); - $result = $db->exec("DROP TABLE $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ vacuum() - - /** - * Optimize (vacuum) all the tables in the db (or only the specified table) - * and optionally run ANALYZE. - * - * @param string $table table name (all the tables if empty) - * @param array $options an array with driver-specific options: - * - timeout [int] (in seconds) [mssql-only] - * - analyze [boolean] [pgsql and mysql] - * - full [boolean] [pgsql-only] - * - freeze [boolean] [pgsql-only] - * - * @return mixed MDB2_OK success, a MDB2 error on failure - * @access public - */ - function vacuum($table = null, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'VACUUM'; - if (!empty($table)) { - $query .= ' '.$db->quoteIdentifier($table, true); - } - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ alterTable() - - /** - * alter an existing table - * - * @param string $name name of the table that is intended to be changed. - * @param array $changes associative array that contains the details of each type - * of change that is intended to be performed. The types of - * changes that are currently supported are defined as follows: - * - * name - * - * New name for the table. - * - * add - * - * Associative array with the names of fields to be added as - * indexes of the array. The value of each entry of the array - * should be set to another associative array with the properties - * of the fields to be added. The properties of the fields should - * be the same as defined by the MDB2 parser. - * - * - * remove - * - * Associative array with the names of fields to be removed as indexes - * of the array. Currently the values assigned to each entry are ignored. - * An empty array should be used for future compatibility. - * - * rename - * - * Associative array with the names of fields to be renamed as indexes - * of the array. The value of each entry of the array should be set to - * another associative array with the entry named name with the new - * field name and the entry named Declaration that is expected to contain - * the portion of the field declaration already in DBMS specific SQL code - * as it is used in the CREATE TABLE statement. - * - * change - * - * Associative array with the names of the fields to be changed as indexes - * of the array. Keep in mind that if it is intended to change either the - * name of a field and any other properties, the change array entries - * should have the new names of the fields as array indexes. - * - * The value of each entry of the array should be set to another associative - * array with the properties of the fields to that are meant to be changed as - * array entries. These entries should be assigned to the new values of the - * respective properties. The properties of the fields should be the same - * as defined by the MDB2 parser. - * - * Example - * array( - * 'name' => 'userlist', - * 'add' => array( - * 'quota' => array( - * 'type' => 'integer', - * 'unsigned' => 1 - * ) - * ), - * 'remove' => array( - * 'file_limit' => array(), - * 'time_limit' => array() - * ), - * 'change' => array( - * 'name' => array( - * 'length' => '20', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 20, - * ), - * ) - * ), - * 'rename' => array( - * 'sex' => array( - * 'name' => 'gender', - * 'definition' => array( - * 'type' => 'text', - * 'length' => 1, - * 'default' => 'M', - * ), - * ) - * ) - * ) - * - * @param boolean $check indicates whether the function should just check if the DBMS driver - * can perform the requested table alterations if the value is true or - * actually perform them otherwise. - * @access public - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - */ - function alterTable($name, $changes, $check, $options = array()) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - foreach ($changes as $change_name => $change) { - switch ($change_name) { - case 'add': - case 'remove': - case 'change': - case 'name': - case 'rename': - break; - default: - return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null, - 'change type "'.$change_name.'" not yet supported', __FUNCTION__); - } - } - - if ($check) { - return MDB2_OK; - } - - $db->loadModule('Reverse', null, true); - - // actually sqlite 2.x supports no ALTER TABLE at all .. so we emulate it - $fields = $db->manager->listTableFields($name); - if (PEAR::isError($fields)) { - return $fields; - } - - $fields = array_flip($fields); - foreach ($fields as $field => $value) { - $definition = $db->reverse->getTableFieldDefinition($name, $field); - if (PEAR::isError($definition)) { - return $definition; - } - $fields[$field] = $definition[0]; - } - - $indexes = $db->manager->listTableIndexes($name); - if (PEAR::isError($indexes)) { - return $indexes; - } - - $indexes = array_flip($indexes); - foreach ($indexes as $index => $value) { - $definition = $db->reverse->getTableIndexDefinition($name, $index); - if (PEAR::isError($definition)) { - return $definition; - } - $indexes[$index] = $definition; - } - - $constraints = $db->manager->listTableConstraints($name); - if (PEAR::isError($constraints)) { - return $constraints; - } - - if (!array_key_exists('foreign_keys', $options)) { - $options['foreign_keys'] = array(); - } - $constraints = array_flip($constraints); - foreach ($constraints as $constraint => $value) { - if (!empty($definition['primary'])) { - if (!array_key_exists('primary', $options)) { - $options['primary'] = $definition['fields']; - //remove from the $constraint array, it's already handled by createTable() - unset($constraints[$constraint]); - } - } else { - $c_definition = $db->reverse->getTableConstraintDefinition($name, $constraint); - if (PEAR::isError($c_definition)) { - return $c_definition; - } - if (!empty($c_definition['foreign'])) { - if (!array_key_exists($constraint, $options['foreign_keys'])) { - $options['foreign_keys'][$constraint] = $c_definition; - } - //remove from the $constraint array, it's already handled by createTable() - unset($constraints[$constraint]); - } else { - $constraints[$constraint] = $c_definition; - } - } - } - - $name_new = $name; - $create_order = $select_fields = array_keys($fields); - foreach ($changes as $change_name => $change) { - switch ($change_name) { - case 'add': - foreach ($change as $field_name => $field) { - $fields[$field_name] = $field; - $create_order[] = $field_name; - } - break; - case 'remove': - foreach ($change as $field_name => $field) { - unset($fields[$field_name]); - $select_fields = array_diff($select_fields, array($field_name)); - $create_order = array_diff($create_order, array($field_name)); - } - break; - case 'change': - foreach ($change as $field_name => $field) { - $fields[$field_name] = $field['definition']; - } - break; - case 'name': - $name_new = $change; - break; - case 'rename': - foreach ($change as $field_name => $field) { - unset($fields[$field_name]); - $fields[$field['name']] = $field['definition']; - $create_order[array_search($field_name, $create_order)] = $field['name']; - } - break; - default: - return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null, - 'change type "'.$change_name.'" not yet supported', __FUNCTION__); - } - } - - $data = null; - if (!empty($select_fields)) { - $query = 'SELECT '.implode(', ', $select_fields).' FROM '.$db->quoteIdentifier($name, true); - $data = $db->queryAll($query, null, MDB2_FETCHMODE_ORDERED); - } - - $result = $this->dropTable($name); - if (PEAR::isError($result)) { - return $result; - } - - $result = $this->createTable($name_new, $fields, $options); - if (PEAR::isError($result)) { - return $result; - } - - foreach ($indexes as $index => $definition) { - $this->createIndex($name_new, $index, $definition); - } - - foreach ($constraints as $constraint => $definition) { - $this->createConstraint($name_new, $constraint, $definition); - } - - if (!empty($select_fields) && !empty($data)) { - $query = 'INSERT INTO '.$db->quoteIdentifier($name_new, true); - $query.= '('.implode(', ', array_slice(array_keys($fields), 0, count($select_fields))).')'; - $query.=' VALUES (?'.str_repeat(', ?', (count($select_fields) - 1)).')'; - $stmt = $db->prepare($query, null, MDB2_PREPARE_MANIP); - if (PEAR::isError($stmt)) { - return $stmt; - } - foreach ($data as $row) { - $result = $stmt->execute($row); - if (PEAR::isError($result)) { - return $result; - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ listDatabases() - - /** - * list all databases - * - * @return mixed array of database names on success, a MDB2 error on failure - * @access public - */ - function listDatabases() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'list databases is not supported', __FUNCTION__); - } - - // }}} - // {{{ listUsers() - - /** - * list all users - * - * @return mixed array of user names on success, a MDB2 error on failure - * @access public - */ - function listUsers() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'list databases is not supported', __FUNCTION__); - } - - // }}} - // {{{ listViews() - - /** - * list all views in the current database - * - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listViews() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT name FROM sqlite_master WHERE type='view' AND sql NOT NULL"; - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTableViews() - - /** - * list the views in the database that reference a given table - * - * @param string table for which all referenced views should be found - * @return mixed array of view names on success, a MDB2 error on failure - * @access public - */ - function listTableViews($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT name, sql FROM sqlite_master WHERE type='view' AND sql NOT NULL"; - $views = $db->queryAll($query, array('text', 'text'), MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($views)) { - return $views; - } - $result = array(); - foreach ($views as $row) { - if (preg_match("/^create view .* \bfrom\b\s+\b{$table}\b /i", $row['sql'])) { - if (!empty($row['name'])) { - $result[$row['name']] = true; - } - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_change_key_case($result, $db->options['field_case']); - } - return array_keys($result); - } - - // }}} - // {{{ listTables() - - /** - * list all tables in the current database - * - * @return mixed array of table names on success, a MDB2 error on failure - * @access public - */ - function listTables() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT name FROM sqlite_master WHERE type='table' AND sql NOT NULL ORDER BY name"; - $table_names = $db->queryCol($query); - if (PEAR::isError($table_names)) { - return $table_names; - } - $result = array(); - foreach ($table_names as $table_name) { - if (!$this->_fixSequenceName($table_name, true)) { - $result[] = $table_name; - } - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ listTableFields() - - /** - * list all fields in a table in the current database - * - * @param string $table name of table that should be used in method - * @return mixed array of field names on success, a MDB2 error on failure - * @access public - */ - function listTableFields($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $result = $db->loadModule('Reverse', null, true); - if (PEAR::isError($result)) { - return $result; - } - $query = "SELECT sql FROM sqlite_master WHERE type='table' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(name)='.$db->quote(strtolower($table), 'text'); - } else { - $query.= 'name='.$db->quote($table, 'text'); - } - $sql = $db->queryOne($query); - if (PEAR::isError($sql)) { - return $sql; - } - $columns = $db->reverse->_getTableColumns($sql); - $fields = array(); - foreach ($columns as $column) { - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column['name'] = strtolower($column['name']); - } else { - $column['name'] = strtoupper($column['name']); - } - } else { - $column = array_change_key_case($column, $db->options['field_case']); - } - $fields[] = $column['name']; - } - return $fields; - } - - // }}} - // {{{ listTableTriggers() - - /** - * list all triggers in the database that reference a given table - * - * @param string table for which all referenced triggers should be found - * @return mixed array of trigger names on success, a MDB2 error on failure - * @access public - */ - function listTableTriggers($table = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT name FROM sqlite_master WHERE type='trigger' AND sql NOT NULL"; - if (null !== $table) { - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= ' AND LOWER(tbl_name)='.$db->quote(strtolower($table), 'text'); - } else { - $query.= ' AND tbl_name='.$db->quote($table, 'text'); - } - } - $result = $db->queryCol($query); - if (PEAR::isError($result)) { - return $result; - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} - // {{{ createIndex() - - /** - * Get the stucture of a field into an array - * - * @param string $table name of the table on which the index is to be created - * @param string $name name of the index to be created - * @param array $definition associative array that defines properties of the index to be created. - * Currently, only one property named FIELDS is supported. This property - * is also an associative with the names of the index fields as array - * indexes. Each entry of this array is set to another type of associative - * array that specifies properties of the index that are specific to - * each field. - * - * Currently, only the sorting property is supported. It should be used - * to define the sorting direction of the index. It may be set to either - * ascending or descending. - * - * Not all DBMS support index sorting direction configuration. The DBMS - * drivers of those that do not support it ignore this property. Use the - * function support() to determine whether the DBMS driver can manage indexes. - - * Example - * array( - * 'fields' => array( - * 'user_name' => array( - * 'sorting' => 'ascending' - * ), - * 'last_login' => array() - * ) - * ) - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createIndex($table, $name, $definition) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quoteIdentifier($table, true); - $name = $db->quoteIdentifier($db->getIndexName($name), true); - $query = "CREATE INDEX $name ON $table"; - $fields = array(); - foreach ($definition['fields'] as $field_name => $field) { - $field_string = $db->quoteIdentifier($field_name, true); - if (!empty($field['sorting'])) { - switch ($field['sorting']) { - case 'ascending': - $field_string.= ' ASC'; - break; - case 'descending': - $field_string.= ' DESC'; - break; - } - } - $fields[] = $field_string; - } - $query .= ' ('.implode(', ', $fields) . ')'; - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropIndex() - - /** - * drop existing index - * - * @param string $table name of table that should be used in method - * @param string $name name of the index to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropIndex($table, $name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->getIndexName($name); - $result = $db->exec("DROP INDEX $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listTableIndexes() - - /** - * list all indexes in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of index names on success, a MDB2 error on failure - * @access public - */ - function listTableIndexes($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quote($table, 'text'); - $query = "SELECT sql FROM sqlite_master WHERE type='index' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(tbl_name)='.strtolower($table); - } else { - $query.= "tbl_name=$table"; - } - $query.= " AND sql NOT NULL ORDER BY name"; - $indexes = $db->queryCol($query, 'text'); - if (PEAR::isError($indexes)) { - return $indexes; - } - - $result = array(); - foreach ($indexes as $sql) { - if (preg_match("/^create index ([^ ]+) on /i", $sql, $tmp)) { - $index = $this->_fixIndexName($tmp[1]); - if (!empty($index)) { - $result[$index] = true; - } - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_change_key_case($result, $db->options['field_case']); - } - return array_keys($result); - } - - // }}} - // {{{ createConstraint() - - /** - * create a constraint on a table - * - * @param string $table name of the table on which the constraint is to be created - * @param string $name name of the constraint to be created - * @param array $definition associative array that defines properties of the constraint to be created. - * Currently, only one property named FIELDS is supported. This property - * is also an associative with the names of the constraint fields as array - * constraints. Each entry of this array is set to another type of associative - * array that specifies properties of the constraint that are specific to - * each field. - * - * Example - * array( - * 'fields' => array( - * 'user_name' => array(), - * 'last_login' => array() - * ) - * ) - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createConstraint($table, $name, $definition) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!empty($definition['primary'])) { - return $db->manager->alterTable($table, array(), false, array('primary' => $definition['fields'])); - } - - if (!empty($definition['foreign'])) { - return $db->manager->alterTable($table, array(), false, array('foreign_keys' => array($name => $definition))); - } - - $table = $db->quoteIdentifier($table, true); - $name = $db->getIndexName($name); - $query = "CREATE UNIQUE INDEX $name ON $table"; - $fields = array(); - foreach ($definition['fields'] as $field_name => $field) { - $field_string = $field_name; - if (!empty($field['sorting'])) { - switch ($field['sorting']) { - case 'ascending': - $field_string.= ' ASC'; - break; - case 'descending': - $field_string.= ' DESC'; - break; - } - } - $fields[] = $field_string; - } - $query .= ' ('.implode(', ', $fields) . ')'; - $result = $db->exec($query); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ dropConstraint() - - /** - * drop existing constraint - * - * @param string $table name of table that should be used in method - * @param string $name name of the constraint to be dropped - * @param string $primary hint if the constraint is primary - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropConstraint($table, $name, $primary = false) - { - if ($primary || $name == 'PRIMARY') { - return $this->alterTable($table, array(), false, array('primary' => null)); - } - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - //is it a FK constraint? If so, also delete the associated triggers - $db->loadModule('Reverse', null, true); - $definition = $db->reverse->getTableConstraintDefinition($table, $name); - if (!PEAR::isError($definition) && !empty($definition['foreign'])) { - //first drop the FK enforcing triggers - $result = $this->_dropFKTriggers($table, $name, $definition['references']['table']); - if (PEAR::isError($result)) { - return $result; - } - //then drop the constraint itself - return $this->alterTable($table, array(), false, array('foreign_keys' => array($name => null))); - } - - $name = $db->getIndexName($name); - $result = $db->exec("DROP INDEX $name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ _dropFKTriggers() - - /** - * Drop the triggers created to enforce the FOREIGN KEY constraint on the table - * - * @param string $table table name - * @param string $fkname FOREIGN KEY constraint name - * @param string $referenced_table referenced table name - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access private - */ - function _dropFKTriggers($table, $fkname, $referenced_table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $triggers = $this->listTableTriggers($table); - $triggers2 = $this->listTableTriggers($referenced_table); - if (!PEAR::isError($triggers2) && !PEAR::isError($triggers)) { - $triggers = array_merge($triggers, $triggers2); - $pattern = '/^'.$fkname.'(_pk)?_(insert|update|delete)_trg$/i'; - foreach ($triggers as $trigger) { - if (preg_match($pattern, $trigger)) { - $result = $db->exec('DROP TRIGGER '.$trigger); - if (PEAR::isError($result)) { - return $result; - } - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ listTableConstraints() - - /** - * list all constraints in a table - * - * @param string $table name of table that should be used in method - * @return mixed array of constraint names on success, a MDB2 error on failure - * @access public - */ - function listTableConstraints($table) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $table = $db->quote($table, 'text'); - $query = "SELECT sql FROM sqlite_master WHERE type='index' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(tbl_name)='.strtolower($table); - } else { - $query.= "tbl_name=$table"; - } - $query.= " AND sql NOT NULL ORDER BY name"; - $indexes = $db->queryCol($query, 'text'); - if (PEAR::isError($indexes)) { - return $indexes; - } - - $result = array(); - foreach ($indexes as $sql) { - if (preg_match("/^create unique index ([^ ]+) on /i", $sql, $tmp)) { - $index = $this->_fixIndexName($tmp[1]); - if (!empty($index)) { - $result[$index] = true; - } - } - } - - // also search in table definition for PRIMARY KEYs... - $query = "SELECT sql FROM sqlite_master WHERE type='table' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(name)='.strtolower($table); - } else { - $query.= "name=$table"; - } - $query.= " AND sql NOT NULL ORDER BY name"; - $table_def = $db->queryOne($query, 'text'); - if (PEAR::isError($table_def)) { - return $table_def; - } - if (preg_match("/\bPRIMARY\s+KEY\b/i", $table_def, $tmp)) { - $result['primary'] = true; - } - - // ...and for FOREIGN KEYs - if (preg_match_all("/\bCONSTRAINT\b\s+([^\s]+)\s+\bFOREIGN\s+KEY/imsx", $table_def, $tmp)) { - foreach ($tmp[1] as $fk) { - $result[$fk] = true; - } - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_change_key_case($result, $db->options['field_case']); - } - return array_keys($result); - } - - // }}} - // {{{ createSequence() - - /** - * create sequence - * - * @param string $seq_name name of the sequence to be created - * @param string $start start value of the sequence; default is 1 - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function createSequence($seq_name, $start = 1) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - $seqcol_name = $db->quoteIdentifier($db->options['seqcol_name'], true); - $query = "CREATE TABLE $sequence_name ($seqcol_name INTEGER PRIMARY KEY DEFAULT 0 NOT NULL)"; - $res = $db->exec($query); - if (PEAR::isError($res)) { - return $res; - } - if ($start == 1) { - return MDB2_OK; - } - $res = $db->exec("INSERT INTO $sequence_name ($seqcol_name) VALUES (".($start-1).')'); - if (!PEAR::isError($res)) { - return MDB2_OK; - } - // Handle error - $result = $db->exec("DROP TABLE $sequence_name"); - if (PEAR::isError($result)) { - return $db->raiseError($result, null, null, - 'could not drop inconsistent sequence table', __FUNCTION__); - } - return $db->raiseError($res, null, null, - 'could not create sequence table', __FUNCTION__); - } - - // }}} - // {{{ dropSequence() - - /** - * drop existing sequence - * - * @param string $seq_name name of the sequence to be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropSequence($seq_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true); - $result = $db->exec("DROP TABLE $sequence_name"); - if (MDB2::isError($result)) { - return $result; - } - return MDB2_OK; - } - - // }}} - // {{{ listSequences() - - /** - * list all sequences in the current database - * - * @return mixed array of sequence names on success, a MDB2 error on failure - * @access public - */ - function listSequences() - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT name FROM sqlite_master WHERE type='table' AND sql NOT NULL ORDER BY name"; - $table_names = $db->queryCol($query); - if (PEAR::isError($table_names)) { - return $table_names; - } - $result = array(); - foreach ($table_names as $table_name) { - if ($sqn = $this->_fixSequenceName($table_name, true)) { - $result[] = $sqn; - } - } - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result); - } - return $result; - } - - // }}} -} -?> diff --git a/3rdparty/MDB2/Driver/Native/Common.php b/3rdparty/MDB2/Driver/Native/Common.php deleted file mode 100644 index 67dc1bddd031224821ce724a831211550a8ea349..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Native/Common.php +++ /dev/null @@ -1,61 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * Base class for the natuve modules that is extended by each MDB2 driver - * - * To load this module in the MDB2 object: - * $mdb->loadModule('Native'); - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Native_Common extends MDB2_Module_Common -{ -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Native/mysql.php b/3rdparty/MDB2/Driver/Native/mysql.php deleted file mode 100644 index 48e65a05fd25f76539499d08807b0e246015edb5..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Native/mysql.php +++ /dev/null @@ -1,60 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Native/Common.php'; - -/** - * MDB2 MySQL driver for the native module - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Native_mysql extends MDB2_Driver_Native_Common -{ -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Native/oci8.php b/3rdparty/MDB2/Driver/Native/oci8.php deleted file mode 100644 index d198f9687a9341a8c29fb1e0e079bebc5920d151..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Native/oci8.php +++ /dev/null @@ -1,60 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: oci8.php 215004 2006-06-18 21:59:05Z lsmith $ -// - -require_once 'MDB2/Driver/Native/Common.php'; - -/** - * MDB2 Oracle driver for the native module - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Native_oci8 extends MDB2_Driver_Native_Common -{ -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Native/pgsql.php b/3rdparty/MDB2/Driver/Native/pgsql.php deleted file mode 100644 index f4db5eae5298b540abbcdd6c8b6d688f9c26c15d..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Native/pgsql.php +++ /dev/null @@ -1,88 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/Driver/Native/Common.php'; - -/** - * MDB2 PostGreSQL driver for the native module - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_Driver_Native_pgsql extends MDB2_Driver_Native_Common -{ - // }}} - // {{{ deleteOID() - - /** - * delete an OID - * - * @param integer $OID - * @return mixed MDB2_OK on success or MDB2 Error Object on failure - * @access public - */ - function deleteOID($OID) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $connection = $db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - if (!@pg_lo_unlink($connection, $OID)) { - return $db->raiseError(null, null, null, - 'Unable to unlink OID: '.$OID, __FUNCTION__); - } - return MDB2_OK; - } - -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Native/sqlite.php b/3rdparty/MDB2/Driver/Native/sqlite.php deleted file mode 100644 index 4eb796dce7aebdbffdaebeca36ab1873273dc586..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Native/sqlite.php +++ /dev/null @@ -1,60 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Native/Common.php'; - -/** - * MDB2 SQLite driver for the native module - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Native_sqlite extends MDB2_Driver_Native_Common -{ -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Reverse/Common.php b/3rdparty/MDB2/Driver/Reverse/Common.php deleted file mode 100644 index 2260520835ed9c0e3e447bfce512e6de7ad59b20..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Reverse/Common.php +++ /dev/null @@ -1,517 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * @package MDB2 - * @category Database - */ - -/** - * These are constants for the tableInfo-function - * they are bitwised or'ed. so if there are more constants to be defined - * in the future, adjust MDB2_TABLEINFO_FULL accordingly - */ - -define('MDB2_TABLEINFO_ORDER', 1); -define('MDB2_TABLEINFO_ORDERTABLE', 2); -define('MDB2_TABLEINFO_FULL', 3); - -/** - * Base class for the schema reverse engineering module that is extended by each MDB2 driver - * - * To load this module in the MDB2 object: - * $mdb->loadModule('Reverse'); - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Reverse_Common extends MDB2_Module_Common -{ - // {{{ splitTableSchema() - - /** - * Split the "[owner|schema].table" notation into an array - * - * @param string $table [schema and] table name - * - * @return array array(schema, table) - * @access private - */ - function splitTableSchema($table) - { - $ret = array(); - if (strpos($table, '.') !== false) { - return explode('.', $table); - } - return array(null, $table); - } - - // }}} - // {{{ getTableFieldDefinition() - - /** - * Get the structure of a field into an array - * - * @param string $table name of table that should be used in method - * @param string $field name of field that should be used in method - * @return mixed data array on success, a MDB2 error on failure. - * The returned array contains an array for each field definition, - * with all or some of these indices, depending on the field data type: - * [notnull] [nativetype] [length] [fixed] [default] [type] [mdb2type] - * @access public - */ - function getTableFieldDefinition($table, $field) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ getTableIndexDefinition() - - /** - * Get the structure of an index into an array - * - * @param string $table name of table that should be used in method - * @param string $index name of index that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * The returned array has this structure: - * - * array ( - * [fields] => array ( - * [field1name] => array() // one entry per each field covered - * [field2name] => array() // by the index - * [field3name] => array( - * [sorting] => ascending - * ) - * ) - * ); - * - * @access public - */ - function getTableIndexDefinition($table, $index) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ getTableConstraintDefinition() - - /** - * Get the structure of an constraints into an array - * - * @param string $table name of table that should be used in method - * @param string $index name of index that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * The returned array has this structure: - *
-     *          array (
-     *              [primary] => 0
-     *              [unique]  => 0
-     *              [foreign] => 1
-     *              [check]   => 0
-     *              [fields] => array (
-     *                  [field1name] => array() // one entry per each field covered
-     *                  [field2name] => array() // by the index
-     *                  [field3name] => array(
-     *                      [sorting]  => ascending
-     *                      [position] => 3
-     *                  )
-     *              )
-     *              [references] => array(
-     *                  [table] => name
-     *                  [fields] => array(
-     *                      [field1name] => array(  //one entry per each referenced field
-     *                           [position] => 1
-     *                      )
-     *                  )
-     *              )
-     *              [deferrable] => 0
-     *              [initiallydeferred] => 0
-     *              [onupdate] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
-     *              [ondelete] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
-     *              [match] => SIMPLE|PARTIAL|FULL
-     *          );
-     *          
- * @access public - */ - function getTableConstraintDefinition($table, $index) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ getSequenceDefinition() - - /** - * Get the structure of a sequence into an array - * - * @param string $sequence name of sequence that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * The returned array has this structure: - *
-     *          array (
-     *              [start] => n
-     *          );
-     *          
- * @access public - */ - function getSequenceDefinition($sequence) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $start = $db->currId($sequence); - if (PEAR::isError($start)) { - return $start; - } - if ($db->supports('current_id')) { - $start++; - } else { - $db->warnings[] = 'database does not support getting current - sequence value, the sequence value was incremented'; - } - $definition = array(); - if ($start != 1) { - $definition = array('start' => $start); - } - return $definition; - } - - // }}} - // {{{ getTriggerDefinition() - - /** - * Get the structure of a trigger into an array - * - * EXPERIMENTAL - * - * WARNING: this function is experimental and may change the returned value - * at any time until labelled as non-experimental - * - * @param string $trigger name of trigger that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * The returned array has this structure: - *
-     *          array (
-     *              [trigger_name]    => 'trigger name',
-     *              [table_name]      => 'table name',
-     *              [trigger_body]    => 'trigger body definition',
-     *              [trigger_type]    => 'BEFORE' | 'AFTER',
-     *              [trigger_event]   => 'INSERT' | 'UPDATE' | 'DELETE'
-     *                  //or comma separated list of multiple events, when supported
-     *              [trigger_enabled] => true|false
-     *              [trigger_comment] => 'trigger comment',
-     *          );
-     *          
- * The oci8 driver also returns a [when_clause] index. - * @access public - */ - function getTriggerDefinition($trigger) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - // }}} - // {{{ tableInfo() - - /** - * Returns information about a table or a result set - * - * The format of the resulting array depends on which $mode - * you select. The sample output below is based on this query: - *
-     *    SELECT tblFoo.fldID, tblFoo.fldPhone, tblBar.fldId
-     *    FROM tblFoo
-     *    JOIN tblBar ON tblFoo.fldId = tblBar.fldId
-     * 
- * - *
    - *
  • - * - * null (default) - *
    -     *   [0] => Array (
    -     *       [table] => tblFoo
    -     *       [name] => fldId
    -     *       [type] => int
    -     *       [len] => 11
    -     *       [flags] => primary_key not_null
    -     *   )
    -     *   [1] => Array (
    -     *       [table] => tblFoo
    -     *       [name] => fldPhone
    -     *       [type] => string
    -     *       [len] => 20
    -     *       [flags] =>
    -     *   )
    -     *   [2] => Array (
    -     *       [table] => tblBar
    -     *       [name] => fldId
    -     *       [type] => int
    -     *       [len] => 11
    -     *       [flags] => primary_key not_null
    -     *   )
    -     *   
    - * - *
  • - * - * MDB2_TABLEINFO_ORDER - * - *

    In addition to the information found in the default output, - * a notation of the number of columns is provided by the - * num_fields element while the order - * element provides an array with the column names as the keys and - * their location index number (corresponding to the keys in the - * the default output) as the values.

    - * - *

    If a result set has identical field names, the last one is - * used.

    - * - *
    -     *   [num_fields] => 3
    -     *   [order] => Array (
    -     *       [fldId] => 2
    -     *       [fldTrans] => 1
    -     *   )
    -     *   
    - * - *
  • - * - * MDB2_TABLEINFO_ORDERTABLE - * - *

    Similar to MDB2_TABLEINFO_ORDER but adds more - * dimensions to the array in which the table names are keys and - * the field names are sub-keys. This is helpful for queries that - * join tables which have identical field names.

    - * - *
    -     *   [num_fields] => 3
    -     *   [ordertable] => Array (
    -     *       [tblFoo] => Array (
    -     *           [fldId] => 0
    -     *           [fldPhone] => 1
    -     *       )
    -     *       [tblBar] => Array (
    -     *           [fldId] => 2
    -     *       )
    -     *   )
    -     *   
    - * - *
  • - *
- * - * The flags element contains a space separated list - * of extra information about the field. This data is inconsistent - * between DBMS's due to the way each DBMS works. - * + primary_key - * + unique_key - * + multiple_key - * + not_null - * - * Most DBMS's only provide the table and flags - * elements if $result is a table name. The following DBMS's - * provide full information from queries: - * + fbsql - * + mysql - * - * If the 'portability' option has MDB2_PORTABILITY_FIX_CASE - * turned on, the names of tables and fields will be lower or upper cased. - * - * @param object|string $result MDB2_result object from a query or a - * string containing the name of a table. - * While this also accepts a query result - * resource identifier, this behavior is - * deprecated. - * @param int $mode either unused or one of the tableInfo modes: - * MDB2_TABLEINFO_ORDERTABLE, - * MDB2_TABLEINFO_ORDER or - * MDB2_TABLEINFO_FULL (which does both). - * These are bitwise, so the first two can be - * combined using |. - * - * @return array an associative array with the information requested. - * A MDB2_Error object on failure. - * - * @see MDB2_Driver_Common::setOption() - */ - function tableInfo($result, $mode = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (!is_string($result)) { - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'method not implemented', __FUNCTION__); - } - - $db->loadModule('Manager', null, true); - $fields = $db->manager->listTableFields($result); - if (PEAR::isError($fields)) { - return $fields; - } - - $flags = array(); - - $idxname_format = $db->getOption('idxname_format'); - $db->setOption('idxname_format', '%s'); - - $indexes = $db->manager->listTableIndexes($result); - if (PEAR::isError($indexes)) { - $db->setOption('idxname_format', $idxname_format); - return $indexes; - } - - foreach ($indexes as $index) { - $definition = $this->getTableIndexDefinition($result, $index); - if (PEAR::isError($definition)) { - $db->setOption('idxname_format', $idxname_format); - return $definition; - } - if (count($definition['fields']) > 1) { - foreach ($definition['fields'] as $field => $sort) { - $flags[$field] = 'multiple_key'; - } - } - } - - $constraints = $db->manager->listTableConstraints($result); - if (PEAR::isError($constraints)) { - return $constraints; - } - - foreach ($constraints as $constraint) { - $definition = $this->getTableConstraintDefinition($result, $constraint); - if (PEAR::isError($definition)) { - $db->setOption('idxname_format', $idxname_format); - return $definition; - } - $flag = !empty($definition['primary']) - ? 'primary_key' : (!empty($definition['unique']) - ? 'unique_key' : false); - if ($flag) { - foreach ($definition['fields'] as $field => $sort) { - if (empty($flags[$field]) || $flags[$field] != 'primary_key') { - $flags[$field] = $flag; - } - } - } - } - - $res = array(); - - if ($mode) { - $res['num_fields'] = count($fields); - } - - foreach ($fields as $i => $field) { - $definition = $this->getTableFieldDefinition($result, $field); - if (PEAR::isError($definition)) { - $db->setOption('idxname_format', $idxname_format); - return $definition; - } - $res[$i] = $definition[0]; - $res[$i]['name'] = $field; - $res[$i]['table'] = $result; - $res[$i]['type'] = preg_replace('/^([a-z]+).*$/i', '\\1', trim($definition[0]['nativetype'])); - // 'primary_key', 'unique_key', 'multiple_key' - $res[$i]['flags'] = empty($flags[$field]) ? '' : $flags[$field]; - // not_null', 'unsigned', 'auto_increment', 'default_[rawencodedvalue]' - if (!empty($res[$i]['notnull'])) { - $res[$i]['flags'].= ' not_null'; - } - if (!empty($res[$i]['unsigned'])) { - $res[$i]['flags'].= ' unsigned'; - } - if (!empty($res[$i]['auto_increment'])) { - $res[$i]['flags'].= ' autoincrement'; - } - if (!empty($res[$i]['default'])) { - $res[$i]['flags'].= ' default_'.rawurlencode($res[$i]['default']); - } - - if ($mode & MDB2_TABLEINFO_ORDER) { - $res['order'][$res[$i]['name']] = $i; - } - if ($mode & MDB2_TABLEINFO_ORDERTABLE) { - $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i; - } - } - - $db->setOption('idxname_format', $idxname_format); - return $res; - } -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Reverse/mysql.php b/3rdparty/MDB2/Driver/Reverse/mysql.php deleted file mode 100644 index 8ebdc9979bcf9efa824e451967741ff986cd8dc4..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Reverse/mysql.php +++ /dev/null @@ -1,546 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Reverse/Common.php'; - -/** - * MDB2 MySQL driver for the schema reverse engineering module - * - * @package MDB2 - * @category Database - * @author Lukas Smith - * @author Lorenzo Alberton - */ -class MDB2_Driver_Reverse_mysql extends MDB2_Driver_Reverse_Common -{ - // {{{ getTableFieldDefinition() - - /** - * Get the structure of a field into an array - * - * @param string $table_name name of table that should be used in method - * @param string $field_name name of field that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableFieldDefinition($table_name, $field_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $result = $db->loadModule('Datatype', null, true); - if (PEAR::isError($result)) { - return $result; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $table = $db->quoteIdentifier($table, true); - $query = "SHOW FULL COLUMNS FROM $table LIKE ".$db->quote($field_name); - $columns = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($columns)) { - return $columns; - } - foreach ($columns as $column) { - $column = array_change_key_case($column, CASE_LOWER); - $column['name'] = $column['field']; - unset($column['field']); - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column['name'] = strtolower($column['name']); - } else { - $column['name'] = strtoupper($column['name']); - } - } else { - $column = array_change_key_case($column, $db->options['field_case']); - } - if ($field_name == $column['name']) { - $mapped_datatype = $db->datatype->mapNativeDatatype($column); - if (PEAR::isError($mapped_datatype)) { - return $mapped_datatype; - } - list($types, $length, $unsigned, $fixed) = $mapped_datatype; - $notnull = false; - if (empty($column['null']) || $column['null'] !== 'YES') { - $notnull = true; - } - $default = false; - if (array_key_exists('default', $column)) { - $default = $column['default']; - if ((null === $default) && $notnull) { - $default = ''; - } - } - $definition[0] = array( - 'notnull' => $notnull, - 'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type']) - ); - $autoincrement = false; - if (!empty($column['extra'])) { - if ($column['extra'] == 'auto_increment') { - $autoincrement = true; - } else { - $definition[0]['extra'] = $column['extra']; - } - } - $collate = null; - if (!empty($column['collation'])) { - $collate = $column['collation']; - $charset = preg_replace('/(.+?)(_.+)?/', '$1', $collate); - } - - if (null !== $length) { - $definition[0]['length'] = $length; - } - if (null !== $unsigned) { - $definition[0]['unsigned'] = $unsigned; - } - if (null !== $fixed) { - $definition[0]['fixed'] = $fixed; - } - if ($default !== false) { - $definition[0]['default'] = $default; - } - if ($autoincrement !== false) { - $definition[0]['autoincrement'] = $autoincrement; - } - if (null !== $collate) { - $definition[0]['collate'] = $collate; - $definition[0]['charset'] = $charset; - } - foreach ($types as $key => $type) { - $definition[$key] = $definition[0]; - if ($type == 'clob' || $type == 'blob') { - unset($definition[$key]['default']); - } elseif ($type == 'timestamp' && $notnull && empty($definition[$key]['default'])) { - $definition[$key]['default'] = '0000-00-00 00:00:00'; - } - $definition[$key]['type'] = $type; - $definition[$key]['mdb2type'] = $type; - } - return $definition; - } - } - - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing table column', __FUNCTION__); - } - - // }}} - // {{{ getTableIndexDefinition() - - /** - * Get the structure of an index into an array - * - * @param string $table_name name of table that should be used in method - * @param string $index_name name of index that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableIndexDefinition($table_name, $index_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $table = $db->quoteIdentifier($table, true); - $query = "SHOW INDEX FROM $table /*!50002 WHERE Key_name = %s */"; - $index_name_mdb2 = $db->getIndexName($index_name); - $result = $db->queryRow(sprintf($query, $db->quote($index_name_mdb2))); - if (!PEAR::isError($result) && (null !== $result)) { - // apply 'idxname_format' only if the query succeeded, otherwise - // fallback to the given $index_name, without transformation - $index_name = $index_name_mdb2; - } - $result = $db->query(sprintf($query, $db->quote($index_name))); - if (PEAR::isError($result)) { - return $result; - } - $colpos = 1; - $definition = array(); - while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) { - $row = array_change_key_case($row, CASE_LOWER); - $key_name = $row['key_name']; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $key_name = strtolower($key_name); - } else { - $key_name = strtoupper($key_name); - } - } - if ($index_name == $key_name) { - if (!$row['non_unique']) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $index_name . ' is not an existing table index', __FUNCTION__); - } - $column_name = $row['column_name']; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column_name = strtolower($column_name); - } else { - $column_name = strtoupper($column_name); - } - } - $definition['fields'][$column_name] = array( - 'position' => $colpos++ - ); - if (!empty($row['collation'])) { - $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'A' - ? 'ascending' : 'descending'); - } - } - } - $result->free(); - if (empty($definition['fields'])) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $index_name . ' is not an existing table index', __FUNCTION__); - } - return $definition; - } - - // }}} - // {{{ getTableConstraintDefinition() - - /** - * Get the structure of a constraint into an array - * - * @param string $table_name name of table that should be used in method - * @param string $constraint_name name of constraint that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableConstraintDefinition($table_name, $constraint_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - $constraint_name_original = $constraint_name; - - $table = $db->quoteIdentifier($table, true); - $query = "SHOW INDEX FROM $table /*!50002 WHERE Key_name = %s */"; - if (strtolower($constraint_name) != 'primary') { - $constraint_name_mdb2 = $db->getIndexName($constraint_name); - $result = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2))); - if (!PEAR::isError($result) && (null !== $result)) { - // apply 'idxname_format' only if the query succeeded, otherwise - // fallback to the given $index_name, without transformation - $constraint_name = $constraint_name_mdb2; - } - } - $result = $db->query(sprintf($query, $db->quote($constraint_name))); - if (PEAR::isError($result)) { - return $result; - } - $colpos = 1; - //default values, eventually overridden - $definition = array( - 'primary' => false, - 'unique' => false, - 'foreign' => false, - 'check' => false, - 'fields' => array(), - 'references' => array( - 'table' => '', - 'fields' => array(), - ), - 'onupdate' => '', - 'ondelete' => '', - 'match' => '', - 'deferrable' => false, - 'initiallydeferred' => false, - ); - while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) { - $row = array_change_key_case($row, CASE_LOWER); - $key_name = $row['key_name']; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $key_name = strtolower($key_name); - } else { - $key_name = strtoupper($key_name); - } - } - if ($constraint_name == $key_name) { - if ($row['non_unique']) { - //FOREIGN KEY? - return $this->_getTableFKConstraintDefinition($table, $constraint_name_original, $definition); - } - if ($row['key_name'] == 'PRIMARY') { - $definition['primary'] = true; - } elseif (!$row['non_unique']) { - $definition['unique'] = true; - } - $column_name = $row['column_name']; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column_name = strtolower($column_name); - } else { - $column_name = strtoupper($column_name); - } - } - $definition['fields'][$column_name] = array( - 'position' => $colpos++ - ); - if (!empty($row['collation'])) { - $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'A' - ? 'ascending' : 'descending'); - } - } - } - $result->free(); - if (empty($definition['fields'])) { - return $this->_getTableFKConstraintDefinition($table, $constraint_name_original, $definition); - } - return $definition; - } - - // }}} - // {{{ _getTableFKConstraintDefinition() - - /** - * Get the FK definition from the CREATE TABLE statement - * - * @param string $table table name - * @param string $constraint_name constraint name - * @param array $definition default values for constraint definition - * - * @return array|PEAR_Error - * @access private - */ - function _getTableFKConstraintDefinition($table, $constraint_name, $definition) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - //Use INFORMATION_SCHEMA instead? - //SELECT * - // FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS - // WHERE CONSTRAINT_SCHEMA = '$dbname' - // AND TABLE_NAME = '$table' - // AND CONSTRAINT_NAME = '$constraint_name'; - $query = 'SHOW CREATE TABLE '. $db->escape($table); - $constraint = $db->queryOne($query, 'text', 1); - if (!PEAR::isError($constraint) && !empty($constraint)) { - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $constraint = strtolower($constraint); - } else { - $constraint = strtoupper($constraint); - } - } - $constraint_name_original = $constraint_name; - $constraint_name = $db->getIndexName($constraint_name); - $pattern = '/\bCONSTRAINT\s+'.$constraint_name.'\s+FOREIGN KEY\s+\(([^\)]+)\) \bREFERENCES\b ([^\s]+) \(([^\)]+)\)(?: ON DELETE ([^\s]+))?(?: ON UPDATE ([^\s]+))?/i'; - if (!preg_match($pattern, str_replace('`', '', $constraint), $matches)) { - //fallback to original constraint name - $pattern = '/\bCONSTRAINT\s+'.$constraint_name_original.'\s+FOREIGN KEY\s+\(([^\)]+)\) \bREFERENCES\b ([^\s]+) \(([^\)]+)\)(?: ON DELETE ([^\s]+))?(?: ON UPDATE ([^\s]+))?/i'; - } - if (preg_match($pattern, str_replace('`', '', $constraint), $matches)) { - $definition['foreign'] = true; - $column_names = explode(',', $matches[1]); - $referenced_cols = explode(',', $matches[3]); - $definition['references'] = array( - 'table' => $matches[2], - 'fields' => array(), - ); - $colpos = 1; - foreach ($column_names as $column_name) { - $definition['fields'][trim($column_name)] = array( - 'position' => $colpos++ - ); - } - $colpos = 1; - foreach ($referenced_cols as $column_name) { - $definition['references']['fields'][trim($column_name)] = array( - 'position' => $colpos++ - ); - } - $definition['ondelete'] = empty($matches[4]) ? 'RESTRICT' : strtoupper($matches[4]); - $definition['onupdate'] = empty($matches[5]) ? 'RESTRICT' : strtoupper($matches[5]); - $definition['match'] = 'SIMPLE'; - return $definition; - } - } - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $constraint_name . ' is not an existing table constraint', __FUNCTION__); - } - - // }}} - // {{{ getTriggerDefinition() - - /** - * Get the structure of a trigger into an array - * - * EXPERIMENTAL - * - * WARNING: this function is experimental and may change the returned value - * at any time until labelled as non-experimental - * - * @param string $trigger name of trigger that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTriggerDefinition($trigger) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SELECT trigger_name, - event_object_table AS table_name, - action_statement AS trigger_body, - action_timing AS trigger_type, - event_manipulation AS trigger_event - FROM information_schema.triggers - WHERE trigger_name = '. $db->quote($trigger, 'text'); - $types = array( - 'trigger_name' => 'text', - 'table_name' => 'text', - 'trigger_body' => 'text', - 'trigger_type' => 'text', - 'trigger_event' => 'text', - ); - $def = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($def)) { - return $def; - } - $def['trigger_comment'] = ''; - $def['trigger_enabled'] = true; - return $def; - } - - // }}} - // {{{ tableInfo() - - /** - * Returns information about a table or a result set - * - * @param object|string $result MDB2_result object from a query or a - * string containing the name of a table. - * While this also accepts a query result - * resource identifier, this behavior is - * deprecated. - * @param int $mode a valid tableInfo mode - * - * @return array an associative array with the information requested. - * A MDB2_Error object on failure. - * - * @see MDB2_Driver_Common::setOption() - */ - function tableInfo($result, $mode = null) - { - if (is_string($result)) { - return parent::tableInfo($result, $mode); - } - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result; - if (!is_resource($resource)) { - return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'Could not generate result resource', __FUNCTION__); - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $case_func = 'strtolower'; - } else { - $case_func = 'strtoupper'; - } - } else { - $case_func = 'strval'; - } - - $count = @mysql_num_fields($resource); - $res = array(); - if ($mode) { - $res['num_fields'] = $count; - } - - $db->loadModule('Datatype', null, true); - for ($i = 0; $i < $count; $i++) { - $res[$i] = array( - 'table' => $case_func(@mysql_field_table($resource, $i)), - 'name' => $case_func(@mysql_field_name($resource, $i)), - 'type' => @mysql_field_type($resource, $i), - 'length' => @mysql_field_len($resource, $i), - 'flags' => @mysql_field_flags($resource, $i), - ); - if ($res[$i]['type'] == 'string') { - $res[$i]['type'] = 'char'; - } elseif ($res[$i]['type'] == 'unknown') { - $res[$i]['type'] = 'decimal'; - } - $mdb2type_info = $db->datatype->mapNativeDatatype($res[$i]); - if (PEAR::isError($mdb2type_info)) { - return $mdb2type_info; - } - $res[$i]['mdb2type'] = $mdb2type_info[0][0]; - if ($mode & MDB2_TABLEINFO_ORDER) { - $res['order'][$res[$i]['name']] = $i; - } - if ($mode & MDB2_TABLEINFO_ORDERTABLE) { - $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i; - } - } - - return $res; - } -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Reverse/oci8.php b/3rdparty/MDB2/Driver/Reverse/oci8.php deleted file mode 100644 index d89ad771374b3d631a1e7c1877ed2e83c3e4c14b..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Reverse/oci8.php +++ /dev/null @@ -1,625 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: oci8.php 295587 2010-02-28 17:16:38Z quipo $ -// - -require_once 'MDB2/Driver/Reverse/Common.php'; - -/** - * MDB2 Oracle driver for the schema reverse engineering module - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Reverse_oci8 extends MDB2_Driver_Reverse_Common -{ - // {{{ getTableFieldDefinition() - - /** - * Get the structure of a field into an array - * - * @param string $table_name name of table that should be used in method - * @param string $field_name name of field that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableFieldDefinition($table_name, $field_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $result = $db->loadModule('Datatype', null, true); - if (PEAR::isError($result)) { - return $result; - } - - list($owner, $table) = $this->splitTableSchema($table_name); - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT column_name AS "name", - data_type AS "type", - nullable AS "nullable", - data_default AS "default", - COALESCE(data_precision, data_length) AS "length", - data_scale AS "scale" - FROM all_tab_columns - WHERE (table_name=? OR table_name=?) - AND (owner=? OR owner=?) - AND (column_name=? OR column_name=?) - ORDER BY column_id'; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $args = array( - $table, - strtoupper($table), - $owner, - strtoupper($owner), - $field_name, - strtoupper($field_name) - ); - $result = $stmt->execute($args); - if (PEAR::isError($result)) { - return $result; - } - $column = $result->fetchRow(MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($column)) { - return $column; - } - $stmt->free(); - $result->free(); - - if (empty($column)) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $field_name . ' is not a column in table ' . $table_name, __FUNCTION__); - } - - $column = array_change_key_case($column, CASE_LOWER); - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column['name'] = strtolower($column['name']); - } else { - $column['name'] = strtoupper($column['name']); - } - } - $mapped_datatype = $db->datatype->mapNativeDatatype($column); - if (PEAR::isError($mapped_datatype)) { - return $mapped_datatype; - } - list($types, $length, $unsigned, $fixed) = $mapped_datatype; - $notnull = false; - if (!empty($column['nullable']) && $column['nullable'] == 'N') { - $notnull = true; - } - $default = false; - if (array_key_exists('default', $column)) { - $default = $column['default']; - if ($default === 'NULL') { - $default = null; - } - //ugly hack, but works for the reverse direction - if ($default == "''") { - $default = ''; - } - if ((null === $default) && $notnull) { - $default = ''; - } - } - - $definition[0] = array('notnull' => $notnull, 'nativetype' => $column['type']); - if (null !== $length) { - $definition[0]['length'] = $length; - } - if (null !== $unsigned) { - $definition[0]['unsigned'] = $unsigned; - } - if (null !== $fixed) { - $definition[0]['fixed'] = $fixed; - } - if ($default !== false) { - $definition[0]['default'] = $default; - } - foreach ($types as $key => $type) { - $definition[$key] = $definition[0]; - if ($type == 'clob' || $type == 'blob') { - unset($definition[$key]['default']); - } - $definition[$key]['type'] = $type; - $definition[$key]['mdb2type'] = $type; - } - if ($type == 'integer') { - $query= "SELECT trigger_body - FROM all_triggers - WHERE table_name=? - AND triggering_event='INSERT' - AND trigger_type='BEFORE EACH ROW'"; - // ^^ pretty reasonable mimic for "auto_increment" in oracle? - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $result = $stmt->execute(strtoupper($table)); - if (PEAR::isError($result)) { - return $result; - } - while ($triggerstr = $result->fetchOne()) { - if (preg_match('/.*SELECT\W+(.+)\.nextval +into +\:NEW\.'.$field_name.' +FROM +dual/im', $triggerstr, $matches)) { - $definition[0]['autoincrement'] = $matches[1]; - } - } - $stmt->free(); - $result->free(); - } - return $definition; - } - - // }}} - // {{{ getTableIndexDefinition() - - /** - * Get the structure of an index into an array - * - * @param string $table_name name of table that should be used in method - * @param string $index_name name of index that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableIndexDefinition($table_name, $index_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($owner, $table) = $this->splitTableSchema($table_name); - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT aic.column_name AS "column_name", - aic.column_position AS "column_position", - aic.descend AS "descend", - aic.table_owner AS "table_owner", - alc.constraint_type AS "constraint_type" - FROM all_ind_columns aic - LEFT JOIN all_constraints alc - ON aic.index_name = alc.constraint_name - AND aic.table_name = alc.table_name - AND aic.table_owner = alc.owner - WHERE (aic.table_name=? OR aic.table_name=?) - AND (aic.index_name=? OR aic.index_name=?) - AND (aic.table_owner=? OR aic.table_owner=?) - ORDER BY column_position'; - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - $indexnames = array_unique(array($db->getIndexName($index_name), $index_name)); - $i = 0; - $row = null; - while ((null === $row) && array_key_exists($i, $indexnames)) { - $args = array( - $table, - strtoupper($table), - $indexnames[$i], - strtoupper($indexnames[$i]), - $owner, - strtoupper($owner) - ); - $result = $stmt->execute($args); - if (PEAR::isError($result)) { - return $result; - } - $row = $result->fetchRow(MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($row)) { - return $row; - } - $i++; - } - if (null === $row) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $index_name. ' is not an index on table '. $table_name, __FUNCTION__); - } - if ($row['constraint_type'] == 'U' || $row['constraint_type'] == 'P') { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $index_name. ' is a constraint, not an index on table '. $table_name, __FUNCTION__); - } - - $definition = array(); - while (null !== $row) { - $row = array_change_key_case($row, CASE_LOWER); - $column_name = $row['column_name']; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column_name = strtolower($column_name); - } else { - $column_name = strtoupper($column_name); - } - } - $definition['fields'][$column_name] = array( - 'position' => (int)$row['column_position'], - ); - if (!empty($row['descend'])) { - $definition['fields'][$column_name]['sorting'] = - ($row['descend'] == 'ASC' ? 'ascending' : 'descending'); - } - $row = $result->fetchRow(MDB2_FETCHMODE_ASSOC); - } - $result->free(); - if (empty($definition['fields'])) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $index_name. ' is not an index on table '. $table_name, __FUNCTION__); - } - return $definition; - } - - // }}} - // {{{ getTableConstraintDefinition() - - /** - * Get the structure of a constraint into an array - * - * @param string $table_name name of table that should be used in method - * @param string $constraint_name name of constraint that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableConstraintDefinition($table_name, $constraint_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($owner, $table) = $this->splitTableSchema($table_name); - if (empty($owner)) { - $owner = $db->dsn['username']; - } - - $query = 'SELECT alc.constraint_name, - CASE alc.constraint_type WHEN \'P\' THEN 1 ELSE 0 END "primary", - CASE alc.constraint_type WHEN \'R\' THEN 1 ELSE 0 END "foreign", - CASE alc.constraint_type WHEN \'U\' THEN 1 ELSE 0 END "unique", - CASE alc.constraint_type WHEN \'C\' THEN 1 ELSE 0 END "check", - alc.DELETE_RULE "ondelete", - \'NO ACTION\' "onupdate", - \'SIMPLE\' "match", - CASE alc.deferrable WHEN \'NOT DEFERRABLE\' THEN 0 ELSE 1 END "deferrable", - CASE alc.deferred WHEN \'IMMEDIATE\' THEN 0 ELSE 1 END "initiallydeferred", - alc.search_condition AS "search_condition", - alc.table_name, - cols.column_name AS "column_name", - cols.position, - r_alc.table_name "references_table", - r_cols.column_name "references_field", - r_cols.position "references_field_position" - FROM all_cons_columns cols - LEFT JOIN all_constraints alc - ON alc.constraint_name = cols.constraint_name - AND alc.owner = cols.owner - LEFT JOIN all_constraints r_alc - ON alc.r_constraint_name = r_alc.constraint_name - AND alc.r_owner = r_alc.owner - LEFT JOIN all_cons_columns r_cols - ON r_alc.constraint_name = r_cols.constraint_name - AND r_alc.owner = r_cols.owner - AND cols.position = r_cols.position - WHERE (alc.constraint_name=? OR alc.constraint_name=?) - AND alc.constraint_name = cols.constraint_name - AND (alc.owner=? OR alc.owner=?)'; - $tablenames = array(); - if (!empty($table)) { - $query.= ' AND (alc.table_name=? OR alc.table_name=?)'; - $tablenames = array($table, strtoupper($table)); - } - $stmt = $db->prepare($query); - if (PEAR::isError($stmt)) { - return $stmt; - } - - $constraintnames = array_unique(array($db->getIndexName($constraint_name), $constraint_name)); - $c = 0; - $row = null; - while ((null === $row) && array_key_exists($c, $constraintnames)) { - $args = array( - $constraintnames[$c], - strtoupper($constraintnames[$c]), - $owner, - strtoupper($owner) - ); - if (!empty($table)) { - $args = array_merge($args, $tablenames); - } - $result = $stmt->execute($args); - if (PEAR::isError($result)) { - return $result; - } - $row = $result->fetchRow(MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($row)) { - return $row; - } - $c++; - } - - $definition = array( - 'primary' => (boolean)$row['primary'], - 'unique' => (boolean)$row['unique'], - 'foreign' => (boolean)$row['foreign'], - 'check' => (boolean)$row['check'], - 'deferrable' => (boolean)$row['deferrable'], - 'initiallydeferred' => (boolean)$row['initiallydeferred'], - 'ondelete' => $row['ondelete'], - 'onupdate' => $row['onupdate'], - 'match' => $row['match'], - ); - - if ($definition['check']) { - // pattern match constraint for check constraint values into enum-style output: - $enumregex = '/'.$row['column_name'].' in \((.+?)\)/i'; - if (preg_match($enumregex, $row['search_condition'], $rangestr)) { - $definition['fields'][$column_name] = array(); - $allowed = explode(',', $rangestr[1]); - foreach ($allowed as $val) { - $val = trim($val); - $val = preg_replace('/^\'/', '', $val); - $val = preg_replace('/\'$/', '', $val); - array_push($definition['fields'][$column_name], $val); - } - } - } - - while (null !== $row) { - $row = array_change_key_case($row, CASE_LOWER); - $column_name = $row['column_name']; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column_name = strtolower($column_name); - } else { - $column_name = strtoupper($column_name); - } - } - $definition['fields'][$column_name] = array( - 'position' => (int)$row['position'] - ); - if ($row['foreign']) { - $ref_column_name = $row['references_field']; - $ref_table_name = $row['references_table']; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $ref_column_name = strtolower($ref_column_name); - $ref_table_name = strtolower($ref_table_name); - } else { - $ref_column_name = strtoupper($ref_column_name); - $ref_table_name = strtoupper($ref_table_name); - } - } - $definition['references']['table'] = $ref_table_name; - $definition['references']['fields'][$ref_column_name] = array( - 'position' => (int)$row['references_field_position'] - ); - } - $lastrow = $row; - $row = $result->fetchRow(MDB2_FETCHMODE_ASSOC); - } - $result->free(); - if (empty($definition['fields'])) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $constraint_name . ' is not a constraint on table '. $table_name, __FUNCTION__); - } - - return $definition; - } - - // }}} - // {{{ getSequenceDefinition() - - /** - * Get the structure of a sequence into an array - * - * @param string $sequence name of sequence that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getSequenceDefinition($sequence) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $sequence_name = $db->getSequenceName($sequence); - $query = 'SELECT last_number FROM user_sequences'; - $query.= ' WHERE sequence_name='.$db->quote($sequence_name, 'text'); - $query.= ' OR sequence_name='.$db->quote(strtoupper($sequence_name), 'text'); - $start = $db->queryOne($query, 'integer'); - if (PEAR::isError($start)) { - return $start; - } - $definition = array(); - if ($start != 1) { - $definition = array('start' => $start); - } - return $definition; - } - - // }}} - // {{{ getTriggerDefinition() - - /** - * Get the structure of a trigger into an array - * - * EXPERIMENTAL - * - * WARNING: this function is experimental and may change the returned value - * at any time until labelled as non-experimental - * - * @param string $trigger name of trigger that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTriggerDefinition($trigger) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = 'SELECT trigger_name AS "trigger_name", - table_name AS "table_name", - trigger_body AS "trigger_body", - trigger_type AS "trigger_type", - triggering_event AS "trigger_event", - description AS "trigger_comment", - 1 AS "trigger_enabled", - when_clause AS "when_clause" - FROM user_triggers - WHERE trigger_name = \''. strtoupper($trigger).'\''; - $types = array( - 'trigger_name' => 'text', - 'table_name' => 'text', - 'trigger_body' => 'text', - 'trigger_type' => 'text', - 'trigger_event' => 'text', - 'trigger_comment' => 'text', - 'trigger_enabled' => 'boolean', - 'when_clause' => 'text', - ); - $result = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($result)) { - return $result; - } - if (!empty($result['trigger_type'])) { - //$result['trigger_type'] = array_shift(explode(' ', $result['trigger_type'])); - $result['trigger_type'] = preg_replace('/(\S+).*/', '\\1', $result['trigger_type']); - } - return $result; - } - - // }}} - // {{{ tableInfo() - - /** - * Returns information about a table or a result set - * - * NOTE: only supports 'table' and 'flags' if $result - * is a table name. - * - * NOTE: flags won't contain index information. - * - * @param object|string $result MDB2_result object from a query or a - * string containing the name of a table. - * While this also accepts a query result - * resource identifier, this behavior is - * deprecated. - * @param int $mode a valid tableInfo mode - * - * @return array an associative array with the information requested. - * A MDB2_Error object on failure. - * - * @see MDB2_Driver_Common::tableInfo() - */ - function tableInfo($result, $mode = null) - { - if (is_string($result)) { - return parent::tableInfo($result, $mode); - } - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result; - if (!is_resource($resource)) { - return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'Could not generate result resource', __FUNCTION__); - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $case_func = 'strtolower'; - } else { - $case_func = 'strtoupper'; - } - } else { - $case_func = 'strval'; - } - - $count = @OCINumCols($resource); - $res = array(); - - if ($mode) { - $res['num_fields'] = $count; - } - - $db->loadModule('Datatype', null, true); - for ($i = 0; $i < $count; $i++) { - $column = array( - 'table' => '', - 'name' => $case_func(@OCIColumnName($resource, $i+1)), - 'type' => @OCIColumnType($resource, $i+1), - 'length' => @OCIColumnSize($resource, $i+1), - 'flags' => '', - ); - $res[$i] = $column; - $res[$i]['mdb2type'] = $db->datatype->mapNativeDatatype($res[$i]); - if ($mode & MDB2_TABLEINFO_ORDER) { - $res['order'][$res[$i]['name']] = $i; - } - if ($mode & MDB2_TABLEINFO_ORDERTABLE) { - $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i; - } - } - return $res; - } -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Reverse/pgsql.php b/3rdparty/MDB2/Driver/Reverse/pgsql.php deleted file mode 100644 index eab02f9b9988dc8b9885d6d1fb5aab0ec94586f1..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Reverse/pgsql.php +++ /dev/null @@ -1,574 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/Driver/Reverse/Common.php'; - -/** - * MDB2 PostGreSQL driver for the schema reverse engineering module - * - * @package MDB2 - * @category Database - * @author Paul Cooper - * @author Lorenzo Alberton - */ -class MDB2_Driver_Reverse_pgsql extends MDB2_Driver_Reverse_Common -{ - // {{{ getTableFieldDefinition() - - /** - * Get the structure of a field into an array - * - * @param string $table_name name of table that should be used in method - * @param string $field_name name of field that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableFieldDefinition($table_name, $field_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $result = $db->loadModule('Datatype', null, true); - if (PEAR::isError($result)) { - return $result; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $query = "SELECT a.attname AS name, - t.typname AS type, - CASE a.attlen - WHEN -1 THEN - CASE t.typname - WHEN 'numeric' THEN (a.atttypmod / 65536) - WHEN 'decimal' THEN (a.atttypmod / 65536) - WHEN 'money' THEN (a.atttypmod / 65536) - ELSE CASE a.atttypmod - WHEN -1 THEN NULL - ELSE a.atttypmod - 4 - END - END - ELSE a.attlen - END AS length, - CASE t.typname - WHEN 'numeric' THEN (a.atttypmod % 65536) - 4 - WHEN 'decimal' THEN (a.atttypmod % 65536) - 4 - WHEN 'money' THEN (a.atttypmod % 65536) - 4 - ELSE 0 - END AS scale, - a.attnotnull, - a.atttypmod, - a.atthasdef, - (SELECT substring(pg_get_expr(d.adbin, d.adrelid) for 128) - FROM pg_attrdef d - WHERE d.adrelid = a.attrelid - AND d.adnum = a.attnum - AND a.atthasdef - ) as default - FROM pg_attribute a, - pg_class c, - pg_type t - WHERE c.relname = ".$db->quote($table, 'text')." - AND a.atttypid = t.oid - AND c.oid = a.attrelid - AND NOT a.attisdropped - AND a.attnum > 0 - AND a.attname = ".$db->quote($field_name, 'text')." - ORDER BY a.attnum"; - $column = $db->queryRow($query, null, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($column)) { - return $column; - } - - if (empty($column)) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing table column', __FUNCTION__); - } - - $column = array_change_key_case($column, CASE_LOWER); - $mapped_datatype = $db->datatype->mapNativeDatatype($column); - if (PEAR::isError($mapped_datatype)) { - return $mapped_datatype; - } - list($types, $length, $unsigned, $fixed) = $mapped_datatype; - $notnull = false; - if (!empty($column['attnotnull']) && $column['attnotnull'] == 't') { - $notnull = true; - } - $default = null; - if ($column['atthasdef'] === 't' - && strpos($column['default'], 'NULL') !== 0 - && !preg_match("/nextval\('([^']+)'/", $column['default']) - ) { - $pattern = '/^\'(.*)\'::[\w ]+$/i'; - $default = $column['default'];#substr($column['adsrc'], 1, -1); - if ((null === $default) && $notnull) { - $default = ''; - } elseif (!empty($default) && preg_match($pattern, $default)) { - //remove data type cast - $default = preg_replace ($pattern, '\\1', $default); - } - } - $autoincrement = false; - if (preg_match("/nextval\('([^']+)'/", $column['default'], $nextvals)) { - $autoincrement = true; - } - $definition[0] = array('notnull' => $notnull, 'nativetype' => $column['type']); - if (null !== $length) { - $definition[0]['length'] = $length; - } - if (null !== $unsigned) { - $definition[0]['unsigned'] = $unsigned; - } - if (null !== $fixed) { - $definition[0]['fixed'] = $fixed; - } - if ($default !== false) { - $definition[0]['default'] = $default; - } - if ($autoincrement !== false) { - $definition[0]['autoincrement'] = $autoincrement; - } - foreach ($types as $key => $type) { - $definition[$key] = $definition[0]; - if ($type == 'clob' || $type == 'blob') { - unset($definition[$key]['default']); - } - $definition[$key]['type'] = $type; - $definition[$key]['mdb2type'] = $type; - } - return $definition; - } - - // }}} - // {{{ getTableIndexDefinition() - - /** - * Get the structure of an index into an array - * - * @param string $table_name name of table that should be used in method - * @param string $index_name name of index that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableIndexDefinition($table_name, $index_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $query = 'SELECT relname, indkey FROM pg_index, pg_class'; - $query.= ' WHERE pg_class.oid = pg_index.indexrelid'; - $query.= " AND indisunique != 't' AND indisprimary != 't'"; - $query.= ' AND pg_class.relname = %s'; - $index_name_mdb2 = $db->getIndexName($index_name); - $row = $db->queryRow(sprintf($query, $db->quote($index_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($row) || empty($row)) { - // fallback to the given $index_name, without transformation - $row = $db->queryRow(sprintf($query, $db->quote($index_name, 'text')), null, MDB2_FETCHMODE_ASSOC); - } - if (PEAR::isError($row)) { - return $row; - } - - if (empty($row)) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing table index', __FUNCTION__); - } - - $row = array_change_key_case($row, CASE_LOWER); - - $db->loadModule('Manager', null, true); - $columns = $db->manager->listTableFields($table_name); - - $definition = array(); - - $index_column_numbers = explode(' ', $row['indkey']); - - $colpos = 1; - foreach ($index_column_numbers as $number) { - $definition['fields'][$columns[($number - 1)]] = array( - 'position' => $colpos++, - 'sorting' => 'ascending', - ); - } - return $definition; - } - - // }}} - // {{{ getTableConstraintDefinition() - - /** - * Get the structure of a constraint into an array - * - * @param string $table_name name of table that should be used in method - * @param string $constraint_name name of constraint that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableConstraintDefinition($table_name, $constraint_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $query = "SELECT c.oid, - c.conname AS constraint_name, - CASE WHEN c.contype = 'c' THEN 1 ELSE 0 END AS \"check\", - CASE WHEN c.contype = 'f' THEN 1 ELSE 0 END AS \"foreign\", - CASE WHEN c.contype = 'p' THEN 1 ELSE 0 END AS \"primary\", - CASE WHEN c.contype = 'u' THEN 1 ELSE 0 END AS \"unique\", - CASE WHEN c.condeferrable = 'f' THEN 0 ELSE 1 END AS deferrable, - CASE WHEN c.condeferred = 'f' THEN 0 ELSE 1 END AS initiallydeferred, - --array_to_string(c.conkey, ' ') AS constraint_key, - t.relname AS table_name, - t2.relname AS references_table, - CASE confupdtype - WHEN 'a' THEN 'NO ACTION' - WHEN 'r' THEN 'RESTRICT' - WHEN 'c' THEN 'CASCADE' - WHEN 'n' THEN 'SET NULL' - WHEN 'd' THEN 'SET DEFAULT' - END AS onupdate, - CASE confdeltype - WHEN 'a' THEN 'NO ACTION' - WHEN 'r' THEN 'RESTRICT' - WHEN 'c' THEN 'CASCADE' - WHEN 'n' THEN 'SET NULL' - WHEN 'd' THEN 'SET DEFAULT' - END AS ondelete, - CASE confmatchtype - WHEN 'u' THEN 'UNSPECIFIED' - WHEN 'f' THEN 'FULL' - WHEN 'p' THEN 'PARTIAL' - END AS match, - --array_to_string(c.confkey, ' ') AS fk_constraint_key, - consrc - FROM pg_constraint c - LEFT JOIN pg_class t ON c.conrelid = t.oid - LEFT JOIN pg_class t2 ON c.confrelid = t2.oid - WHERE c.conname = %s - AND t.relname = " . $db->quote($table, 'text'); - $constraint_name_mdb2 = $db->getIndexName($constraint_name); - $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($row) || empty($row)) { - // fallback to the given $index_name, without transformation - $constraint_name_mdb2 = $constraint_name; - $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC); - } - if (PEAR::isError($row)) { - return $row; - } - $uniqueIndex = false; - if (empty($row)) { - // We might be looking for a UNIQUE index that was not created - // as a constraint but should be treated as such. - $query = 'SELECT relname AS constraint_name, - indkey, - 0 AS "check", - 0 AS "foreign", - 0 AS "primary", - 1 AS "unique", - 0 AS deferrable, - 0 AS initiallydeferred, - NULL AS references_table, - NULL AS onupdate, - NULL AS ondelete, - NULL AS match - FROM pg_index, pg_class - WHERE pg_class.oid = pg_index.indexrelid - AND indisunique = \'t\' - AND pg_class.relname = %s'; - $constraint_name_mdb2 = $db->getIndexName($constraint_name); - $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($row) || empty($row)) { - // fallback to the given $index_name, without transformation - $constraint_name_mdb2 = $constraint_name; - $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC); - } - if (PEAR::isError($row)) { - return $row; - } - if (empty($row)) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $constraint_name . ' is not an existing table constraint', __FUNCTION__); - } - $uniqueIndex = true; - } - - $row = array_change_key_case($row, CASE_LOWER); - - $definition = array( - 'primary' => (boolean)$row['primary'], - 'unique' => (boolean)$row['unique'], - 'foreign' => (boolean)$row['foreign'], - 'check' => (boolean)$row['check'], - 'fields' => array(), - 'references' => array( - 'table' => $row['references_table'], - 'fields' => array(), - ), - 'deferrable' => (boolean)$row['deferrable'], - 'initiallydeferred' => (boolean)$row['initiallydeferred'], - 'onupdate' => $row['onupdate'], - 'ondelete' => $row['ondelete'], - 'match' => $row['match'], - ); - - if ($uniqueIndex) { - $db->loadModule('Manager', null, true); - $columns = $db->manager->listTableFields($table_name); - $index_column_numbers = explode(' ', $row['indkey']); - $colpos = 1; - foreach ($index_column_numbers as $number) { - $definition['fields'][$columns[($number - 1)]] = array( - 'position' => $colpos++, - 'sorting' => 'ascending', - ); - } - return $definition; - } - - $query = 'SELECT a.attname - FROM pg_constraint c - LEFT JOIN pg_class t ON c.conrelid = t.oid - LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey) - WHERE c.conname = %s - AND t.relname = ' . $db->quote($table, 'text'); - $fields = $db->queryCol(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null); - if (PEAR::isError($fields)) { - return $fields; - } - $colpos = 1; - foreach ($fields as $field) { - $definition['fields'][$field] = array( - 'position' => $colpos++, - 'sorting' => 'ascending', - ); - } - - if ($definition['foreign']) { - $query = 'SELECT a.attname - FROM pg_constraint c - LEFT JOIN pg_class t ON c.confrelid = t.oid - LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.confkey) - WHERE c.conname = %s - AND t.relname = ' . $db->quote($definition['references']['table'], 'text'); - $foreign_fields = $db->queryCol(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null); - if (PEAR::isError($foreign_fields)) { - return $foreign_fields; - } - $colpos = 1; - foreach ($foreign_fields as $foreign_field) { - $definition['references']['fields'][$foreign_field] = array( - 'position' => $colpos++, - ); - } - } - - if ($definition['check']) { - $check_def = $db->queryOne("SELECT pg_get_constraintdef(" . $row['oid'] . ", 't')"); - // ... - } - return $definition; - } - - // }}} - // {{{ getTriggerDefinition() - - /** - * Get the structure of a trigger into an array - * - * EXPERIMENTAL - * - * WARNING: this function is experimental and may change the returned value - * at any time until labelled as non-experimental - * - * @param string $trigger name of trigger that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - * - * @TODO: add support for plsql functions and functions with args - */ - function getTriggerDefinition($trigger) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT trg.tgname AS trigger_name, - tbl.relname AS table_name, - CASE - WHEN p.proname IS NOT NULL THEN 'EXECUTE PROCEDURE ' || p.proname || '();' - ELSE '' - END AS trigger_body, - CASE trg.tgtype & cast(2 as int2) - WHEN 0 THEN 'AFTER' - ELSE 'BEFORE' - END AS trigger_type, - CASE trg.tgtype & cast(28 as int2) - WHEN 16 THEN 'UPDATE' - WHEN 8 THEN 'DELETE' - WHEN 4 THEN 'INSERT' - WHEN 20 THEN 'INSERT, UPDATE' - WHEN 28 THEN 'INSERT, UPDATE, DELETE' - WHEN 24 THEN 'UPDATE, DELETE' - WHEN 12 THEN 'INSERT, DELETE' - END AS trigger_event, - CASE trg.tgenabled - WHEN 'O' THEN 't' - ELSE trg.tgenabled - END AS trigger_enabled, - obj_description(trg.oid, 'pg_trigger') AS trigger_comment - FROM pg_trigger trg, - pg_class tbl, - pg_proc p - WHERE trg.tgrelid = tbl.oid - AND trg.tgfoid = p.oid - AND trg.tgname = ". $db->quote($trigger, 'text'); - $types = array( - 'trigger_name' => 'text', - 'table_name' => 'text', - 'trigger_body' => 'text', - 'trigger_type' => 'text', - 'trigger_event' => 'text', - 'trigger_comment' => 'text', - 'trigger_enabled' => 'boolean', - ); - return $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC); - } - - // }}} - // {{{ tableInfo() - - /** - * Returns information about a table or a result set - * - * NOTE: only supports 'table' and 'flags' if $result - * is a table name. - * - * @param object|string $result MDB2_result object from a query or a - * string containing the name of a table. - * While this also accepts a query result - * resource identifier, this behavior is - * deprecated. - * @param int $mode a valid tableInfo mode - * - * @return array an associative array with the information requested. - * A MDB2_Error object on failure. - * - * @see MDB2_Driver_Common::tableInfo() - */ - function tableInfo($result, $mode = null) - { - if (is_string($result)) { - return parent::tableInfo($result, $mode); - } - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result; - if (!is_resource($resource)) { - return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'Could not generate result resource', __FUNCTION__); - } - - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $case_func = 'strtolower'; - } else { - $case_func = 'strtoupper'; - } - } else { - $case_func = 'strval'; - } - - $count = @pg_num_fields($resource); - $res = array(); - - if ($mode) { - $res['num_fields'] = $count; - } - - $db->loadModule('Datatype', null, true); - for ($i = 0; $i < $count; $i++) { - $res[$i] = array( - 'table' => function_exists('pg_field_table') ? @pg_field_table($resource, $i) : '', - 'name' => $case_func(@pg_field_name($resource, $i)), - 'type' => @pg_field_type($resource, $i), - 'length' => @pg_field_size($resource, $i), - 'flags' => '', - ); - $mdb2type_info = $db->datatype->mapNativeDatatype($res[$i]); - if (PEAR::isError($mdb2type_info)) { - return $mdb2type_info; - } - $res[$i]['mdb2type'] = $mdb2type_info[0][0]; - if ($mode & MDB2_TABLEINFO_ORDER) { - $res['order'][$res[$i]['name']] = $i; - } - if ($mode & MDB2_TABLEINFO_ORDERTABLE) { - $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i; - } - } - - return $res; - } -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/Reverse/sqlite.php b/3rdparty/MDB2/Driver/Reverse/sqlite.php deleted file mode 100644 index 811400480fef23e3bd6dbee94b0599d478e2854c..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/Reverse/sqlite.php +++ /dev/null @@ -1,611 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Reverse/Common.php'; - -/** - * MDB2 SQlite driver for the schema reverse engineering module - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Reverse_sqlite extends MDB2_Driver_Reverse_Common -{ - /** - * Remove SQL comments from the field definition - * - * @access private - */ - function _removeComments($sql) { - $lines = explode("\n", $sql); - foreach ($lines as $k => $line) { - $pieces = explode('--', $line); - if (count($pieces) > 1 && (substr_count($pieces[0], '\'') % 2) == 0) { - $lines[$k] = substr($line, 0, strpos($line, '--')); - } - } - return implode("\n", $lines); - } - - /** - * - */ - function _getTableColumns($sql) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $start_pos = strpos($sql, '('); - $end_pos = strrpos($sql, ')'); - $column_def = substr($sql, $start_pos+1, $end_pos-$start_pos-1); - // replace the decimal length-places-separator with a colon - $column_def = preg_replace('/(\d),(\d)/', '\1:\2', $column_def); - $column_def = $this->_removeComments($column_def); - $column_sql = explode(',', $column_def); - $columns = array(); - $count = count($column_sql); - if ($count == 0) { - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'unexpected empty table column definition list', __FUNCTION__); - } - $regexp = '/^\s*([^\s]+) +(CHAR|VARCHAR|VARCHAR2|TEXT|BOOLEAN|SMALLINT|INT|INTEGER|DECIMAL|TINYINT|BIGINT|DOUBLE|FLOAT|DATETIME|DATE|TIME|LONGTEXT|LONGBLOB)( ?\(([1-9][0-9]*)(:([1-9][0-9]*))?\))?( NULL| NOT NULL)?( UNSIGNED)?( NULL| NOT NULL)?( PRIMARY KEY)?( DEFAULT (\'[^\']*\'|[^ ]+))?( NULL| NOT NULL)?( PRIMARY KEY)?(\s*\-\-.*)?$/i'; - $regexp2 = '/^\s*([^ ]+) +(PRIMARY|UNIQUE|CHECK)$/i'; - for ($i=0, $j=0; $i<$count; ++$i) { - if (!preg_match($regexp, trim($column_sql[$i]), $matches)) { - if (!preg_match($regexp2, trim($column_sql[$i]))) { - continue; - } - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'unexpected table column SQL definition: "'.$column_sql[$i].'"', __FUNCTION__); - } - $columns[$j]['name'] = trim($matches[1], implode('', $db->identifier_quoting)); - $columns[$j]['type'] = strtolower($matches[2]); - if (isset($matches[4]) && strlen($matches[4])) { - $columns[$j]['length'] = $matches[4]; - } - if (isset($matches[6]) && strlen($matches[6])) { - $columns[$j]['decimal'] = $matches[6]; - } - if (isset($matches[8]) && strlen($matches[8])) { - $columns[$j]['unsigned'] = true; - } - if (isset($matches[9]) && strlen($matches[9])) { - $columns[$j]['autoincrement'] = true; - } - if (isset($matches[12]) && strlen($matches[12])) { - $default = $matches[12]; - if (strlen($default) && $default[0]=="'") { - $default = str_replace("''", "'", substr($default, 1, strlen($default)-2)); - } - if ($default === 'NULL') { - $default = null; - } - $columns[$j]['default'] = $default; - } else { - $columns[$j]['default'] = null; - } - if (isset($matches[7]) && strlen($matches[7])) { - $columns[$j]['notnull'] = ($matches[7] === ' NOT NULL'); - } else if (isset($matches[9]) && strlen($matches[9])) { - $columns[$j]['notnull'] = ($matches[9] === ' NOT NULL'); - } else if (isset($matches[13]) && strlen($matches[13])) { - $columns[$j]['notnull'] = ($matches[13] === ' NOT NULL'); - } - ++$j; - } - return $columns; - } - - // {{{ getTableFieldDefinition() - - /** - * Get the stucture of a field into an array - * - * @param string $table_name name of table that should be used in method - * @param string $field_name name of field that should be used in method - * @return mixed data array on success, a MDB2 error on failure. - * The returned array contains an array for each field definition, - * with (some of) these indices: - * [notnull] [nativetype] [length] [fixed] [default] [type] [mdb2type] - * @access public - */ - function getTableFieldDefinition($table_name, $field_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $result = $db->loadModule('Datatype', null, true); - if (PEAR::isError($result)) { - return $result; - } - $query = "SELECT sql FROM sqlite_master WHERE type='table' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(name)='.$db->quote(strtolower($table), 'text'); - } else { - $query.= 'name='.$db->quote($table, 'text'); - } - $sql = $db->queryOne($query); - if (PEAR::isError($sql)) { - return $sql; - } - $columns = $this->_getTableColumns($sql); - foreach ($columns as $column) { - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - if ($db->options['field_case'] == CASE_LOWER) { - $column['name'] = strtolower($column['name']); - } else { - $column['name'] = strtoupper($column['name']); - } - } else { - $column = array_change_key_case($column, $db->options['field_case']); - } - if ($field_name == $column['name']) { - $mapped_datatype = $db->datatype->mapNativeDatatype($column); - if (PEAR::isError($mapped_datatype)) { - return $mapped_datatype; - } - list($types, $length, $unsigned, $fixed) = $mapped_datatype; - $notnull = false; - if (!empty($column['notnull'])) { - $notnull = $column['notnull']; - } - $default = false; - if (array_key_exists('default', $column)) { - $default = $column['default']; - if ((null === $default) && $notnull) { - $default = ''; - } - } - $autoincrement = false; - if (!empty($column['autoincrement'])) { - $autoincrement = true; - } - - $definition[0] = array( - 'notnull' => $notnull, - 'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type']) - ); - if (null !== $length) { - $definition[0]['length'] = $length; - } - if (null !== $unsigned) { - $definition[0]['unsigned'] = $unsigned; - } - if (null !== $fixed) { - $definition[0]['fixed'] = $fixed; - } - if ($default !== false) { - $definition[0]['default'] = $default; - } - if ($autoincrement !== false) { - $definition[0]['autoincrement'] = $autoincrement; - } - foreach ($types as $key => $type) { - $definition[$key] = $definition[0]; - if ($type == 'clob' || $type == 'blob') { - unset($definition[$key]['default']); - } - $definition[$key]['type'] = $type; - $definition[$key]['mdb2type'] = $type; - } - return $definition; - } - } - - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing table column', __FUNCTION__); - } - - // }}} - // {{{ getTableIndexDefinition() - - /** - * Get the stucture of an index into an array - * - * @param string $table_name name of table that should be used in method - * @param string $index_name name of index that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableIndexDefinition($table_name, $index_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $query = "SELECT sql FROM sqlite_master WHERE type='index' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(name)=%s AND LOWER(tbl_name)=' . $db->quote(strtolower($table), 'text'); - } else { - $query.= 'name=%s AND tbl_name=' . $db->quote($table, 'text'); - } - $query.= ' AND sql NOT NULL ORDER BY name'; - $index_name_mdb2 = $db->getIndexName($index_name); - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $qry = sprintf($query, $db->quote(strtolower($index_name_mdb2), 'text')); - } else { - $qry = sprintf($query, $db->quote($index_name_mdb2, 'text')); - } - $sql = $db->queryOne($qry, 'text'); - if (PEAR::isError($sql) || empty($sql)) { - // fallback to the given $index_name, without transformation - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $qry = sprintf($query, $db->quote(strtolower($index_name), 'text')); - } else { - $qry = sprintf($query, $db->quote($index_name, 'text')); - } - $sql = $db->queryOne($qry, 'text'); - } - if (PEAR::isError($sql)) { - return $sql; - } - if (!$sql) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing table index', __FUNCTION__); - } - - $sql = strtolower($sql); - $start_pos = strpos($sql, '('); - $end_pos = strrpos($sql, ')'); - $column_names = substr($sql, $start_pos+1, $end_pos-$start_pos-1); - $column_names = explode(',', $column_names); - - if (preg_match("/^create unique/", $sql)) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing table index', __FUNCTION__); - } - - $definition = array(); - $count = count($column_names); - for ($i=0; $i<$count; ++$i) { - $column_name = strtok($column_names[$i], ' '); - $collation = strtok(' '); - $definition['fields'][$column_name] = array( - 'position' => $i+1 - ); - if (!empty($collation)) { - $definition['fields'][$column_name]['sorting'] = - ($collation=='ASC' ? 'ascending' : 'descending'); - } - } - - if (empty($definition['fields'])) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing table index', __FUNCTION__); - } - return $definition; - } - - // }}} - // {{{ getTableConstraintDefinition() - - /** - * Get the stucture of a constraint into an array - * - * @param string $table_name name of table that should be used in method - * @param string $constraint_name name of constraint that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTableConstraintDefinition($table_name, $constraint_name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - list($schema, $table) = $this->splitTableSchema($table_name); - - $query = "SELECT sql FROM sqlite_master WHERE type='index' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(name)=%s AND LOWER(tbl_name)=' . $db->quote(strtolower($table), 'text'); - } else { - $query.= 'name=%s AND tbl_name=' . $db->quote($table, 'text'); - } - $query.= ' AND sql NOT NULL ORDER BY name'; - $constraint_name_mdb2 = $db->getIndexName($constraint_name); - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $qry = sprintf($query, $db->quote(strtolower($constraint_name_mdb2), 'text')); - } else { - $qry = sprintf($query, $db->quote($constraint_name_mdb2, 'text')); - } - $sql = $db->queryOne($qry, 'text'); - if (PEAR::isError($sql) || empty($sql)) { - // fallback to the given $index_name, without transformation - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $qry = sprintf($query, $db->quote(strtolower($constraint_name), 'text')); - } else { - $qry = sprintf($query, $db->quote($constraint_name, 'text')); - } - $sql = $db->queryOne($qry, 'text'); - } - if (PEAR::isError($sql)) { - return $sql; - } - //default values, eventually overridden - $definition = array( - 'primary' => false, - 'unique' => false, - 'foreign' => false, - 'check' => false, - 'fields' => array(), - 'references' => array( - 'table' => '', - 'fields' => array(), - ), - 'onupdate' => '', - 'ondelete' => '', - 'match' => '', - 'deferrable' => false, - 'initiallydeferred' => false, - ); - if (!$sql) { - $query = "SELECT sql FROM sqlite_master WHERE type='table' AND "; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= 'LOWER(name)='.$db->quote(strtolower($table), 'text'); - } else { - $query.= 'name='.$db->quote($table, 'text'); - } - $query.= " AND sql NOT NULL ORDER BY name"; - $sql = $db->queryOne($query, 'text'); - if (PEAR::isError($sql)) { - return $sql; - } - if ($constraint_name == 'primary') { - // search in table definition for PRIMARY KEYs - if (preg_match("/\bPRIMARY\s+KEY\b\s*\(([^)]+)/i", $sql, $tmp)) { - $definition['primary'] = true; - $definition['fields'] = array(); - $column_names = explode(',', $tmp[1]); - $colpos = 1; - foreach ($column_names as $column_name) { - $definition['fields'][trim($column_name)] = array( - 'position' => $colpos++ - ); - } - return $definition; - } - if (preg_match("/\"([^\"]+)\"[^\,\"]+\bPRIMARY\s+KEY\b[^\,\)]*/i", $sql, $tmp)) { - $definition['primary'] = true; - $definition['fields'] = array(); - $column_names = explode(',', $tmp[1]); - $colpos = 1; - foreach ($column_names as $column_name) { - $definition['fields'][trim($column_name)] = array( - 'position' => $colpos++ - ); - } - return $definition; - } - } else { - // search in table definition for FOREIGN KEYs - $pattern = "/\bCONSTRAINT\b\s+%s\s+ - \bFOREIGN\s+KEY\b\s*\(([^\)]+)\)\s* - \bREFERENCES\b\s+([^\s]+)\s*\(([^\)]+)\)\s* - (?:\bMATCH\s*([^\s]+))?\s* - (?:\bON\s+UPDATE\s+([^\s,\)]+))?\s* - (?:\bON\s+DELETE\s+([^\s,\)]+))?\s* - /imsx"; - $found_fk = false; - if (preg_match(sprintf($pattern, $constraint_name_mdb2), $sql, $tmp)) { - $found_fk = true; - } elseif (preg_match(sprintf($pattern, $constraint_name), $sql, $tmp)) { - $found_fk = true; - } - if ($found_fk) { - $definition['foreign'] = true; - $definition['match'] = 'SIMPLE'; - $definition['onupdate'] = 'NO ACTION'; - $definition['ondelete'] = 'NO ACTION'; - $definition['references']['table'] = $tmp[2]; - $column_names = explode(',', $tmp[1]); - $colpos = 1; - foreach ($column_names as $column_name) { - $definition['fields'][trim($column_name)] = array( - 'position' => $colpos++ - ); - } - $referenced_cols = explode(',', $tmp[3]); - $colpos = 1; - foreach ($referenced_cols as $column_name) { - $definition['references']['fields'][trim($column_name)] = array( - 'position' => $colpos++ - ); - } - if (isset($tmp[4])) { - $definition['match'] = $tmp[4]; - } - if (isset($tmp[5])) { - $definition['onupdate'] = $tmp[5]; - } - if (isset($tmp[6])) { - $definition['ondelete'] = $tmp[6]; - } - return $definition; - } - } - $sql = false; - } - if (!$sql) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $constraint_name . ' is not an existing table constraint', __FUNCTION__); - } - - $sql = strtolower($sql); - $start_pos = strpos($sql, '('); - $end_pos = strrpos($sql, ')'); - $column_names = substr($sql, $start_pos+1, $end_pos-$start_pos-1); - $column_names = explode(',', $column_names); - - if (!preg_match("/^create unique/", $sql)) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $constraint_name . ' is not an existing table constraint', __FUNCTION__); - } - - $definition['unique'] = true; - $count = count($column_names); - for ($i=0; $i<$count; ++$i) { - $column_name = strtok($column_names[$i]," "); - $collation = strtok(" "); - $definition['fields'][$column_name] = array( - 'position' => $i+1 - ); - if (!empty($collation)) { - $definition['fields'][$column_name]['sorting'] = - ($collation=='ASC' ? 'ascending' : 'descending'); - } - } - - if (empty($definition['fields'])) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - $constraint_name . ' is not an existing table constraint', __FUNCTION__); - } - return $definition; - } - - // }}} - // {{{ getTriggerDefinition() - - /** - * Get the structure of a trigger into an array - * - * EXPERIMENTAL - * - * WARNING: this function is experimental and may change the returned value - * at any time until labelled as non-experimental - * - * @param string $trigger name of trigger that should be used in method - * @return mixed data array on success, a MDB2 error on failure - * @access public - */ - function getTriggerDefinition($trigger) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $query = "SELECT name as trigger_name, - tbl_name AS table_name, - sql AS trigger_body, - NULL AS trigger_type, - NULL AS trigger_event, - NULL AS trigger_comment, - 1 AS trigger_enabled - FROM sqlite_master - WHERE type='trigger'"; - if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $query.= ' AND LOWER(name)='.$db->quote(strtolower($trigger), 'text'); - } else { - $query.= ' AND name='.$db->quote($trigger, 'text'); - } - $types = array( - 'trigger_name' => 'text', - 'table_name' => 'text', - 'trigger_body' => 'text', - 'trigger_type' => 'text', - 'trigger_event' => 'text', - 'trigger_comment' => 'text', - 'trigger_enabled' => 'boolean', - ); - $def = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC); - if (PEAR::isError($def)) { - return $def; - } - if (empty($def)) { - return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'it was not specified an existing trigger', __FUNCTION__); - } - if (preg_match("/^create\s+(?:temp|temporary)?trigger\s+(?:if\s+not\s+exists\s+)?.*(before|after)?\s+(insert|update|delete)/Uims", $def['trigger_body'], $tmp)) { - $def['trigger_type'] = strtoupper($tmp[1]); - $def['trigger_event'] = strtoupper($tmp[2]); - } - return $def; - } - - // }}} - // {{{ tableInfo() - - /** - * Returns information about a table - * - * @param string $result a string containing the name of a table - * @param int $mode a valid tableInfo mode - * - * @return array an associative array with the information requested. - * A MDB2_Error object on failure. - * - * @see MDB2_Driver_Common::tableInfo() - * @since Method available since Release 1.7.0 - */ - function tableInfo($result, $mode = null) - { - if (is_string($result)) { - return parent::tableInfo($result, $mode); - } - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_NOT_CAPABLE, null, null, - 'This DBMS can not obtain tableInfo from result sets', __FUNCTION__); - } -} - -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/mysql.php b/3rdparty/MDB2/Driver/mysql.php deleted file mode 100644 index 1d22e61f4603602dba11572ee950c53eb1567ea9..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/mysql.php +++ /dev/null @@ -1,1729 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * MDB2 MySQL driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_mysql extends MDB2_Driver_Common -{ - // {{{ properties - - public $string_quoting = array( - 'start' => "'", - 'end' => "'", - 'escape' => '\\', - 'escape_pattern' => '\\', - ); - - public $identifier_quoting = array( - 'start' => '`', - 'end' => '`', - 'escape' => '`', - ); - - public $sql_comments = array( - array('start' => '-- ', 'end' => "\n", 'escape' => false), - array('start' => '#', 'end' => "\n", 'escape' => false), - array('start' => '/*', 'end' => '*/', 'escape' => false), - ); - - protected $server_capabilities_checked = false; - - protected $start_transaction = false; - - public $varchar_max_length = 255; - - // }}} - // {{{ constructor - - /** - * Constructor - */ - function __construct() - { - parent::__construct(); - - $this->phptype = 'mysql'; - $this->dbsyntax = 'mysql'; - - $this->supported['sequences'] = 'emulated'; - $this->supported['indexes'] = true; - $this->supported['affected_rows'] = true; - $this->supported['transactions'] = false; - $this->supported['savepoints'] = false; - $this->supported['summary_functions'] = true; - $this->supported['order_by_text'] = true; - $this->supported['current_id'] = 'emulated'; - $this->supported['limit_queries'] = true; - $this->supported['LOBs'] = true; - $this->supported['replace'] = true; - $this->supported['sub_selects'] = 'emulated'; - $this->supported['triggers'] = false; - $this->supported['auto_increment'] = true; - $this->supported['primary_key'] = true; - $this->supported['result_introspection'] = true; - $this->supported['prepared_statements'] = 'emulated'; - $this->supported['identifier_quoting'] = true; - $this->supported['pattern_escaping'] = true; - $this->supported['new_link'] = true; - - $this->options['DBA_username'] = false; - $this->options['DBA_password'] = false; - $this->options['default_table_type'] = ''; - $this->options['max_identifiers_length'] = 64; - - $this->_reCheckSupportedOptions(); - } - - // }}} - // {{{ _reCheckSupportedOptions() - - /** - * If the user changes certain options, other capabilities may depend - * on the new settings, so we need to check them (again). - * - * @access private - */ - function _reCheckSupportedOptions() - { - $this->supported['transactions'] = $this->options['use_transactions']; - $this->supported['savepoints'] = $this->options['use_transactions']; - if ($this->options['default_table_type']) { - switch (strtoupper($this->options['default_table_type'])) { - case 'BLACKHOLE': - case 'MEMORY': - case 'ARCHIVE': - case 'CSV': - case 'HEAP': - case 'ISAM': - case 'MERGE': - case 'MRG_ISAM': - case 'ISAM': - case 'MRG_MYISAM': - case 'MYISAM': - $this->supported['savepoints'] = false; - $this->supported['transactions'] = false; - $this->warnings[] = $this->options['default_table_type'] . - ' is not a supported default table type'; - break; - } - } - } - - // }}} - // {{{ function setOption($option, $value) - - /** - * set the option for the db class - * - * @param string option name - * @param mixed value for the option - * - * @return mixed MDB2_OK or MDB2 Error Object - * - * @access public - */ - function setOption($option, $value) - { - $res = parent::setOption($option, $value); - $this->_reCheckSupportedOptions(); - } - - // }}} - // {{{ errorInfo() - - /** - * This method is used to collect information about an error - * - * @param integer $error - * @return array - * @access public - */ - function errorInfo($error = null) - { - if ($this->connection) { - $native_code = @mysql_errno($this->connection); - $native_msg = @mysql_error($this->connection); - } else { - $native_code = @mysql_errno(); - $native_msg = @mysql_error(); - } - if (is_null($error)) { - static $ecode_map; - if (empty($ecode_map)) { - $ecode_map = array( - 1000 => MDB2_ERROR_INVALID, //hashchk - 1001 => MDB2_ERROR_INVALID, //isamchk - 1004 => MDB2_ERROR_CANNOT_CREATE, - 1005 => MDB2_ERROR_CANNOT_CREATE, - 1006 => MDB2_ERROR_CANNOT_CREATE, - 1007 => MDB2_ERROR_ALREADY_EXISTS, - 1008 => MDB2_ERROR_CANNOT_DROP, - 1009 => MDB2_ERROR_CANNOT_DROP, - 1010 => MDB2_ERROR_CANNOT_DROP, - 1011 => MDB2_ERROR_CANNOT_DELETE, - 1022 => MDB2_ERROR_ALREADY_EXISTS, - 1029 => MDB2_ERROR_NOT_FOUND, - 1032 => MDB2_ERROR_NOT_FOUND, - 1044 => MDB2_ERROR_ACCESS_VIOLATION, - 1045 => MDB2_ERROR_ACCESS_VIOLATION, - 1046 => MDB2_ERROR_NODBSELECTED, - 1048 => MDB2_ERROR_CONSTRAINT, - 1049 => MDB2_ERROR_NOSUCHDB, - 1050 => MDB2_ERROR_ALREADY_EXISTS, - 1051 => MDB2_ERROR_NOSUCHTABLE, - 1054 => MDB2_ERROR_NOSUCHFIELD, - 1060 => MDB2_ERROR_ALREADY_EXISTS, - 1061 => MDB2_ERROR_ALREADY_EXISTS, - 1062 => MDB2_ERROR_ALREADY_EXISTS, - 1064 => MDB2_ERROR_SYNTAX, - 1067 => MDB2_ERROR_INVALID, - 1072 => MDB2_ERROR_NOT_FOUND, - 1086 => MDB2_ERROR_ALREADY_EXISTS, - 1091 => MDB2_ERROR_NOT_FOUND, - 1100 => MDB2_ERROR_NOT_LOCKED, - 1109 => MDB2_ERROR_NOT_FOUND, - 1125 => MDB2_ERROR_ALREADY_EXISTS, - 1136 => MDB2_ERROR_VALUE_COUNT_ON_ROW, - 1138 => MDB2_ERROR_INVALID, - 1142 => MDB2_ERROR_ACCESS_VIOLATION, - 1143 => MDB2_ERROR_ACCESS_VIOLATION, - 1146 => MDB2_ERROR_NOSUCHTABLE, - 1149 => MDB2_ERROR_SYNTAX, - 1169 => MDB2_ERROR_CONSTRAINT, - 1176 => MDB2_ERROR_NOT_FOUND, - 1177 => MDB2_ERROR_NOSUCHTABLE, - 1213 => MDB2_ERROR_DEADLOCK, - 1216 => MDB2_ERROR_CONSTRAINT, - 1217 => MDB2_ERROR_CONSTRAINT, - 1227 => MDB2_ERROR_ACCESS_VIOLATION, - 1235 => MDB2_ERROR_CANNOT_CREATE, - 1299 => MDB2_ERROR_INVALID_DATE, - 1300 => MDB2_ERROR_INVALID, - 1304 => MDB2_ERROR_ALREADY_EXISTS, - 1305 => MDB2_ERROR_NOT_FOUND, - 1306 => MDB2_ERROR_CANNOT_DROP, - 1307 => MDB2_ERROR_CANNOT_CREATE, - 1334 => MDB2_ERROR_CANNOT_ALTER, - 1339 => MDB2_ERROR_NOT_FOUND, - 1356 => MDB2_ERROR_INVALID, - 1359 => MDB2_ERROR_ALREADY_EXISTS, - 1360 => MDB2_ERROR_NOT_FOUND, - 1363 => MDB2_ERROR_NOT_FOUND, - 1365 => MDB2_ERROR_DIVZERO, - 1451 => MDB2_ERROR_CONSTRAINT, - 1452 => MDB2_ERROR_CONSTRAINT, - 1542 => MDB2_ERROR_CANNOT_DROP, - 1546 => MDB2_ERROR_CONSTRAINT, - 1582 => MDB2_ERROR_CONSTRAINT, - 2003 => MDB2_ERROR_CONNECT_FAILED, - 2019 => MDB2_ERROR_INVALID, - ); - } - if ($this->options['portability'] & MDB2_PORTABILITY_ERRORS) { - $ecode_map[1022] = MDB2_ERROR_CONSTRAINT; - $ecode_map[1048] = MDB2_ERROR_CONSTRAINT_NOT_NULL; - $ecode_map[1062] = MDB2_ERROR_CONSTRAINT; - } else { - // Doing this in case mode changes during runtime. - $ecode_map[1022] = MDB2_ERROR_ALREADY_EXISTS; - $ecode_map[1048] = MDB2_ERROR_CONSTRAINT; - $ecode_map[1062] = MDB2_ERROR_ALREADY_EXISTS; - } - if (isset($ecode_map[$native_code])) { - $error = $ecode_map[$native_code]; - } - } - return array($error, $native_code, $native_msg); - } - - // }}} - // {{{ escape() - - /** - * Quotes a string so it can be safely used in a query. It will quote - * the text so it can safely be used within a query. - * - * @param string the input string to quote - * @param bool escape wildcards - * - * @return string quoted string - * - * @access public - */ - function escape($text, $escape_wildcards = false) - { - if ($escape_wildcards) { - $text = $this->escapePattern($text); - } - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - $text = @mysql_real_escape_string($text, $connection); - return $text; - } - - // }}} - // {{{ beginTransaction() - - /** - * Start a transaction or set a savepoint. - * - * @param string name of a savepoint to set - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function beginTransaction($savepoint = null) - { - $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - $this->_getServerCapabilities(); - if (!is_null($savepoint)) { - if (!$this->supports('savepoints')) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'savepoints are not supported', __FUNCTION__); - } - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'savepoint cannot be released when changes are auto committed', __FUNCTION__); - } - $query = 'SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } elseif ($this->in_transaction) { - return MDB2_OK; //nothing to do - } - if (!$this->destructor_registered && $this->opened_persistent) { - $this->destructor_registered = true; - register_shutdown_function('MDB2_closeOpenTransactions'); - } - $query = $this->start_transaction ? 'START TRANSACTION' : 'SET AUTOCOMMIT = 0'; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - $this->in_transaction = true; - return MDB2_OK; - } - - // }}} - // {{{ commit() - - /** - * Commit the database changes done during a transaction that is in - * progress or release a savepoint. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after committing the pending changes. - * - * @param string name of a savepoint to release - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function commit($savepoint = null) - { - $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__); - } - if (!is_null($savepoint)) { - if (!$this->supports('savepoints')) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'savepoints are not supported', __FUNCTION__); - } - $server_info = $this->getServerVersion(); - if (version_compare($server_info['major'].'.'.$server_info['minor'].'.'.$server_info['patch'], '5.0.3', '<')) { - return MDB2_OK; - } - $query = 'RELEASE SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } - - if (!$this->supports('transactions')) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'transactions are not supported', __FUNCTION__); - } - - $result = $this->_doQuery('COMMIT', true); - if (PEAR::isError($result)) { - return $result; - } - if (!$this->start_transaction) { - $query = 'SET AUTOCOMMIT = 1'; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ rollback() - - /** - * Cancel any database changes done during a transaction or since a specific - * savepoint that is in progress. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after canceling the pending changes. - * - * @param string name of a savepoint to rollback to - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function rollback($savepoint = null) - { - $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'rollback cannot be done changes are auto committed', __FUNCTION__); - } - if (!is_null($savepoint)) { - if (!$this->supports('savepoints')) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'savepoints are not supported', __FUNCTION__); - } - $query = 'ROLLBACK TO SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } - - $query = 'ROLLBACK'; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - if (!$this->start_transaction) { - $query = 'SET AUTOCOMMIT = 1'; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ function setTransactionIsolation() - - /** - * Set the transacton isolation level. - * - * @param string standard isolation level - * READ UNCOMMITTED (allows dirty reads) - * READ COMMITTED (prevents dirty reads) - * REPEATABLE READ (prevents nonrepeatable reads) - * SERIALIZABLE (prevents phantom reads) - * @param array some transaction options: - * 'wait' => 'WAIT' | 'NO WAIT' - * 'rw' => 'READ WRITE' | 'READ ONLY' - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - * @since 2.1.1 - */ - function setTransactionIsolation($isolation, $options = array()) - { - $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true)); - if (!$this->supports('transactions')) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'transactions are not supported', __FUNCTION__); - } - switch ($isolation) { - case 'READ UNCOMMITTED': - case 'READ COMMITTED': - case 'REPEATABLE READ': - case 'SERIALIZABLE': - break; - default: - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'isolation level is not supported: '.$isolation, __FUNCTION__); - } - - $query = "SET SESSION TRANSACTION ISOLATION LEVEL $isolation"; - return $this->_doQuery($query, true); - } - - // }}} - // {{{ _doConnect() - - /** - * do the grunt work of the connect - * - * @return connection on success or MDB2 Error Object on failure - * @access protected - */ - function _doConnect($username, $password, $persistent = false) - { - if (!PEAR::loadExtension($this->phptype)) { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__); - } - - $params = array(); - $unix = ($this->dsn['protocol'] && $this->dsn['protocol'] == 'unix'); - if (empty($this->dsn['hostspec'])) { - $this->dsn['hostspec'] = $unix ? '' : 'localhost'; - } - if ($this->dsn['hostspec']) { - $params[0] = $this->dsn['hostspec'] . ($this->dsn['port'] ? ':' . $this->dsn['port'] : ''); - } else { - $params[0] = ':' . $this->dsn['socket']; - } - $params[] = $username ? $username : null; - $params[] = $password ? $password : null; - if (!$persistent) { - if ($this->_isNewLinkSet()) { - $params[] = true; - } else { - $params[] = false; - } - } - if (version_compare(phpversion(), '4.3.0', '>=')) { - $params[] = isset($this->dsn['client_flags']) - ? $this->dsn['client_flags'] : null; - } - $connect_function = $persistent ? 'mysql_pconnect' : 'mysql_connect'; - - $connection = @call_user_func_array($connect_function, $params); - if (!$connection) { - if (($err = @mysql_error()) != '') { - return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null, - $err, __FUNCTION__); - } else { - return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null, - 'unable to establish a connection', __FUNCTION__); - } - } - - if (!empty($this->dsn['charset'])) { - $result = $this->setCharset($this->dsn['charset'], $connection); - if (PEAR::isError($result)) { - $this->disconnect(false); - return $result; - } - } - - return $connection; - } - - // }}} - // {{{ connect() - - /** - * Connect to the database - * - * @return MDB2_OK on success, MDB2 Error Object on failure - * @access public - */ - function connect() - { - if (is_resource($this->connection)) { - //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0 - if (MDB2::areEquals($this->connected_dsn, $this->dsn) - && $this->opened_persistent == $this->options['persistent'] - ) { - return MDB2_OK; - } - $this->disconnect(false); - } - - $connection = $this->_doConnect( - $this->dsn['username'], - $this->dsn['password'], - $this->options['persistent'] - ); - if (PEAR::isError($connection)) { - return $connection; - } - - $this->connection = $connection; - $this->connected_dsn = $this->dsn; - $this->connected_database_name = ''; - $this->opened_persistent = $this->options['persistent']; - $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype; - - if ($this->database_name) { - if ($this->database_name != $this->connected_database_name) { - if (!@mysql_select_db($this->database_name, $connection)) { - $err = $this->raiseError(null, null, null, - 'Could not select the database: '.$this->database_name, __FUNCTION__); - return $err; - } - $this->connected_database_name = $this->database_name; - } - } - - $this->_getServerCapabilities(); - - return MDB2_OK; - } - - // }}} - // {{{ setCharset() - - /** - * Set the charset on the current connection - * - * @param string charset (or array(charset, collation)) - * @param resource connection handle - * - * @return true on success, MDB2 Error Object on failure - */ - function setCharset($charset, $connection = null) - { - if (is_null($connection)) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - $collation = null; - if (is_array($charset) && 2 == count($charset)) { - $collation = array_pop($charset); - $charset = array_pop($charset); - } - $client_info = mysql_get_client_info(); - if (function_exists('mysql_set_charset') && version_compare($client_info, '5.0.6')) { - if (!$result = mysql_set_charset($charset, $connection)) { - $err = $this->raiseError(null, null, null, - 'Could not set client character set', __FUNCTION__); - return $err; - } - return $result; - } - $query = "SET NAMES '".mysql_real_escape_string($charset, $connection)."'"; - if (!is_null($collation)) { - $query .= " COLLATE '".mysql_real_escape_string($collation, $connection)."'"; - } - return $this->_doQuery($query, true, $connection); - } - - // }}} - // {{{ databaseExists() - - /** - * check if given database name is exists? - * - * @param string $name name of the database that should be checked - * - * @return mixed true/false on success, a MDB2 error on failure - * @access public - */ - function databaseExists($name) - { - $connection = $this->_doConnect($this->dsn['username'], - $this->dsn['password'], - $this->options['persistent']); - if (PEAR::isError($connection)) { - return $connection; - } - - $result = @mysql_select_db($name, $connection); - @mysql_close($connection); - - return $result; - } - - // }}} - // {{{ disconnect() - - /** - * Log out and disconnect from the database. - * - * @param boolean $force if the disconnect should be forced even if the - * connection is opened persistently - * @return mixed true on success, false if not connected and error - * object on error - * @access public - */ - function disconnect($force = true) - { - if (is_resource($this->connection)) { - if ($this->in_transaction) { - $dsn = $this->dsn; - $database_name = $this->database_name; - $persistent = $this->options['persistent']; - $this->dsn = $this->connected_dsn; - $this->database_name = $this->connected_database_name; - $this->options['persistent'] = $this->opened_persistent; - $this->rollback(); - $this->dsn = $dsn; - $this->database_name = $database_name; - $this->options['persistent'] = $persistent; - } - - if (!$this->opened_persistent || $force) { - $ok = @mysql_close($this->connection); - if (!$ok) { - return $this->raiseError(MDB2_ERROR_DISCONNECT_FAILED, - null, null, null, __FUNCTION__); - } - } - } else { - return false; - } - return parent::disconnect($force); - } - - // }}} - // {{{ standaloneQuery() - - /** - * execute a query as DBA - * - * @param string $query the SQL query - * @param mixed $types array that contains the types of the columns in - * the result set - * @param boolean $is_manip if the query is a manipulation query - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function standaloneQuery($query, $types = null, $is_manip = false) - { - $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username']; - $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password']; - $connection = $this->_doConnect($user, $pass, $this->options['persistent']); - if (PEAR::isError($connection)) { - return $connection; - } - - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $query = $this->_modifyQuery($query, $is_manip, $limit, $offset); - - $result = $this->_doQuery($query, $is_manip, $connection, $this->database_name); - if (!PEAR::isError($result)) { - $result = $this->_affectedRows($connection, $result); - } - - @mysql_close($connection); - return $result; - } - - // }}} - // {{{ _doQuery() - - /** - * Execute a query - * @param string $query query - * @param boolean $is_manip if the query is a manipulation query - * @param resource $connection - * @param string $database_name - * @return result or error object - * @access protected - */ - function _doQuery($query, $is_manip = false, $connection = null, $database_name = null) - { - $this->last_query = $query; - $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (PEAR::isError($result)) { - return $result; - } - $query = $result; - } - if ($this->options['disable_query']) { - $result = $is_manip ? 0 : null; - return $result; - } - - if (is_null($connection)) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - if (is_null($database_name)) { - $database_name = $this->database_name; - } - - if ($database_name) { - if ($database_name != $this->connected_database_name) { - if (!@mysql_select_db($database_name, $connection)) { - $err = $this->raiseError(null, null, null, - 'Could not select the database: '.$database_name, __FUNCTION__); - return $err; - } - $this->connected_database_name = $database_name; - } - } - - $function = $this->options['result_buffering'] - ? 'mysql_query' : 'mysql_unbuffered_query'; - $result = @$function($query, $connection); - if (!$result && 0 !== mysql_errno($connection)) { - $err = $this->raiseError(null, null, null, - 'Could not execute statement', __FUNCTION__); - return $err; - } - - $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result)); - return $result; - } - - // }}} - // {{{ _affectedRows() - - /** - * Returns the number of rows affected - * - * @param resource $result - * @param resource $connection - * @return mixed MDB2 Error Object or the number of rows affected - * @access private - */ - function _affectedRows($connection, $result = null) - { - if (is_null($connection)) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - return @mysql_affected_rows($connection); - } - - // }}} - // {{{ _modifyQuery() - - /** - * Changes a query string for various DBMS specific reasons - * - * @param string $query query to modify - * @param boolean $is_manip if it is a DML query - * @param integer $limit limit the number of rows - * @param integer $offset start reading from given offset - * @return string modified query - * @access protected - */ - function _modifyQuery($query, $is_manip, $limit, $offset) - { - if ($this->options['portability'] & MDB2_PORTABILITY_DELETE_COUNT) { - // "DELETE FROM table" gives 0 affected rows in MySQL. - // This little hack lets you know how many rows were deleted. - if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) { - $query = preg_replace('/^\s*DELETE\s+FROM\s+(\S+)\s*$/', - 'DELETE FROM \1 WHERE 1=1', $query); - } - } - if ($limit > 0 - && !preg_match('/LIMIT\s*\d(?:\s*(?:,|OFFSET)\s*\d+)?(?:[^\)]*)?$/i', $query) - ) { - $query = rtrim($query); - if (substr($query, -1) == ';') { - $query = substr($query, 0, -1); - } - - // LIMIT doesn't always come last in the query - // @see http://dev.mysql.com/doc/refman/5.0/en/select.html - $after = ''; - if (preg_match('/(\s+INTO\s+(?:OUT|DUMP)FILE\s.*)$/ims', $query, $matches)) { - $after = $matches[0]; - $query = preg_replace('/(\s+INTO\s+(?:OUT|DUMP)FILE\s.*)$/ims', '', $query); - } elseif (preg_match('/(\s+FOR\s+UPDATE\s*)$/i', $query, $matches)) { - $after = $matches[0]; - $query = preg_replace('/(\s+FOR\s+UPDATE\s*)$/im', '', $query); - } elseif (preg_match('/(\s+LOCK\s+IN\s+SHARE\s+MODE\s*)$/im', $query, $matches)) { - $after = $matches[0]; - $query = preg_replace('/(\s+LOCK\s+IN\s+SHARE\s+MODE\s*)$/im', '', $query); - } - - if ($is_manip) { - return $query . " LIMIT $limit" . $after; - } else { - return $query . " LIMIT $offset, $limit" . $after; - } - } - return $query; - } - - // }}} - // {{{ getServerVersion() - - /** - * return version information about the server - * - * @param bool $native determines if the raw version string should be returned - * @return mixed array/string with version information or MDB2 error object - * @access public - */ - function getServerVersion($native = false) - { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - if ($this->connected_server_info) { - $server_info = $this->connected_server_info; - } else { - $server_info = @mysql_get_server_info($connection); - } - if (!$server_info) { - return $this->raiseError(null, null, null, - 'Could not get server information', __FUNCTION__); - } - // cache server_info - $this->connected_server_info = $server_info; - if (!$native) { - $tmp = explode('.', $server_info, 3); - if (isset($tmp[2]) && strpos($tmp[2], '-')) { - $tmp2 = explode('-', @$tmp[2], 2); - } else { - $tmp2[0] = isset($tmp[2]) ? $tmp[2] : null; - $tmp2[1] = null; - } - $server_info = array( - 'major' => isset($tmp[0]) ? $tmp[0] : null, - 'minor' => isset($tmp[1]) ? $tmp[1] : null, - 'patch' => $tmp2[0], - 'extra' => $tmp2[1], - 'native' => $server_info, - ); - } - return $server_info; - } - - // }}} - // {{{ _getServerCapabilities() - - /** - * Fetch some information about the server capabilities - * (transactions, subselects, prepared statements, etc). - * - * @access private - */ - function _getServerCapabilities() - { - if (!$this->server_capabilities_checked) { - $this->server_capabilities_checked = true; - - //set defaults - $this->supported['sub_selects'] = 'emulated'; - $this->supported['prepared_statements'] = 'emulated'; - $this->supported['triggers'] = false; - $this->start_transaction = false; - $this->varchar_max_length = 255; - - $server_info = $this->getServerVersion(); - if (is_array($server_info)) { - $server_version = $server_info['major'].'.'.$server_info['minor'].'.'.$server_info['patch']; - - if (!version_compare($server_version, '4.1.0', '<')) { - $this->supported['sub_selects'] = true; - $this->supported['prepared_statements'] = true; - } - - // SAVEPOINTs were introduced in MySQL 4.0.14 and 4.1.1 (InnoDB) - if (version_compare($server_version, '4.1.0', '>=')) { - if (version_compare($server_version, '4.1.1', '<')) { - $this->supported['savepoints'] = false; - } - } elseif (version_compare($server_version, '4.0.14', '<')) { - $this->supported['savepoints'] = false; - } - - if (!version_compare($server_version, '4.0.11', '<')) { - $this->start_transaction = true; - } - - if (!version_compare($server_version, '5.0.3', '<')) { - $this->varchar_max_length = 65532; - } - - if (!version_compare($server_version, '5.0.2', '<')) { - $this->supported['triggers'] = true; - } - } - } - } - - // }}} - // {{{ function _skipUserDefinedVariable($query, $position) - - /** - * Utility method, used by prepare() to avoid misinterpreting MySQL user - * defined variables (SELECT @x:=5) for placeholders. - * Check if the placeholder is a false positive, i.e. if it is an user defined - * variable instead. If so, skip it and advance the position, otherwise - * return the current position, which is valid - * - * @param string $query - * @param integer $position current string cursor position - * @return integer $new_position - * @access protected - */ - function _skipUserDefinedVariable($query, $position) - { - $found = strpos(strrev(substr($query, 0, $position)), '@'); - if ($found === false) { - return $position; - } - $pos = strlen($query) - strlen(substr($query, $position)) - $found - 1; - $substring = substr($query, $pos, $position - $pos + 2); - if (preg_match('/^@\w+\s*:=$/', $substring)) { - return $position + 1; //found an user defined variable: skip it - } - return $position; - } - - // }}} - // {{{ prepare() - - /** - * Prepares a query for multiple execution with execute(). - * With some database backends, this is emulated. - * prepare() requires a generic query as string like - * 'INSERT INTO numbers VALUES(?,?)' or - * 'INSERT INTO numbers VALUES(:foo,:bar)'. - * The ? and :name and are placeholders which can be set using - * bindParam() and the query can be sent off using the execute() method. - * The allowed format for :name can be set with the 'bindname_format' option. - * - * @param string $query the query to prepare - * @param mixed $types array that contains the types of the placeholders - * @param mixed $result_types array that contains the types of the columns in - * the result set or MDB2_PREPARE_RESULT, if set to - * MDB2_PREPARE_MANIP the query is handled as a manipulation query - * @param mixed $lobs key (field) value (parameter) pair for all lob placeholders - * @return mixed resource handle for the prepared query on success, a MDB2 - * error on failure - * @access public - * @see bindParam, execute - */ - function prepare($query, $types = null, $result_types = null, $lobs = array()) - { - // connect to get server capabilities (http://pear.php.net/bugs/16147) - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - if ($this->options['emulate_prepared'] - || $this->supported['prepared_statements'] !== true - ) { - return parent::prepare($query, $types, $result_types, $lobs); - } - $is_manip = ($result_types === MDB2_PREPARE_MANIP); - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $query = $this->_modifyQuery($query, $is_manip, $limit, $offset); - $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (PEAR::isError($result)) { - return $result; - } - $query = $result; - } - $placeholder_type_guess = $placeholder_type = null; - $question = '?'; - $colon = ':'; - $positions = array(); - $position = 0; - while ($position < strlen($query)) { - $q_position = strpos($query, $question, $position); - $c_position = strpos($query, $colon, $position); - if ($q_position && $c_position) { - $p_position = min($q_position, $c_position); - } elseif ($q_position) { - $p_position = $q_position; - } elseif ($c_position) { - $p_position = $c_position; - } else { - break; - } - if (is_null($placeholder_type)) { - $placeholder_type_guess = $query[$p_position]; - } - - $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position); - if (PEAR::isError($new_pos)) { - return $new_pos; - } - if ($new_pos != $position) { - $position = $new_pos; - continue; //evaluate again starting from the new position - } - - //make sure this is not part of an user defined variable - $new_pos = $this->_skipUserDefinedVariable($query, $position); - if ($new_pos != $position) { - $position = $new_pos; - continue; //evaluate again starting from the new position - } - - if ($query[$position] == $placeholder_type_guess) { - if (is_null($placeholder_type)) { - $placeholder_type = $query[$p_position]; - $question = $colon = $placeholder_type; - } - if ($placeholder_type == ':') { - $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s'; - $parameter = preg_replace($regexp, '\\1', $query); - if ($parameter === '') { - $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null, - 'named parameter name must match "bindname_format" option', __FUNCTION__); - return $err; - } - $positions[$p_position] = $parameter; - $query = substr_replace($query, '?', $position, strlen($parameter)+1); - } else { - $positions[$p_position] = count($positions); - } - $position = $p_position + 1; - } else { - $position = $p_position; - } - } - - static $prep_statement_counter = 1; - $statement_name = sprintf($this->options['statement_format'], $this->phptype, $prep_statement_counter++ . sha1(microtime() + mt_rand())); - $statement_name = substr(strtolower($statement_name), 0, $this->options['max_identifiers_length']); - $query = "PREPARE $statement_name FROM ".$this->quote($query, 'text'); - $statement = $this->_doQuery($query, true, $connection); - if (PEAR::isError($statement)) { - return $statement; - } - - $class_name = 'MDB2_Statement_'.$this->phptype; - $obj = new $class_name($this, $statement_name, $positions, $query, $types, $result_types, $is_manip, $limit, $offset); - $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj)); - return $obj; - } - - // }}} - // {{{ replace() - - /** - * Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT - * query, except that if there is already a row in the table with the same - * key field values, the old row is deleted before the new row is inserted. - * - * The REPLACE type of query does not make part of the SQL standards. Since - * practically only MySQL implements it natively, this type of query is - * emulated through this method for other DBMS using standard types of - * queries inside a transaction to assure the atomicity of the operation. - * - * @access public - * - * @param string $table name of the table on which the REPLACE query will - * be executed. - * @param array $fields associative array that describes the fields and the - * values that will be inserted or updated in the specified table. The - * indexes of the array are the names of all the fields of the table. The - * values of the array are also associative arrays that describe the - * values and other properties of the table fields. - * - * Here follows a list of field properties that need to be specified: - * - * value: - * Value to be assigned to the specified field. This value may be - * of specified in database independent type format as this - * function can perform the necessary datatype conversions. - * - * Default: - * this property is required unless the Null property - * is set to 1. - * - * type - * Name of the type of the field. Currently, all types Metabase - * are supported except for clob and blob. - * - * Default: no type conversion - * - * null - * Boolean property that indicates that the value for this field - * should be set to null. - * - * The default value for fields missing in INSERT queries may be - * specified the definition of a table. Often, the default value - * is already null, but since the REPLACE may be emulated using - * an UPDATE query, make sure that all fields of the table are - * listed in this function argument array. - * - * Default: 0 - * - * key - * Boolean property that indicates that this field should be - * handled as a primary key or at least as part of the compound - * unique index of the table that will determine the row that will - * updated if it exists or inserted a new row otherwise. - * - * This function will fail if no key field is specified or if the - * value of a key field is set to null because fields that are - * part of unique index they may not be null. - * - * Default: 0 - * - * @see http://dev.mysql.com/doc/refman/5.0/en/replace.html - * @return mixed MDB2_OK on success, a MDB2 error on failure - */ - function replace($table, $fields) - { - $count = count($fields); - $query = $values = ''; - $keys = $colnum = 0; - for (reset($fields); $colnum < $count; next($fields), $colnum++) { - $name = key($fields); - if ($colnum > 0) { - $query .= ','; - $values.= ','; - } - $query.= $this->quoteIdentifier($name, true); - if (isset($fields[$name]['null']) && $fields[$name]['null']) { - $value = 'NULL'; - } else { - $type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null; - $value = $this->quote($fields[$name]['value'], $type); - if (PEAR::isError($value)) { - return $value; - } - } - $values.= $value; - if (isset($fields[$name]['key']) && $fields[$name]['key']) { - if ($value === 'NULL') { - return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null, - 'key value '.$name.' may not be NULL', __FUNCTION__); - } - $keys++; - } - } - if ($keys == 0) { - return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null, - 'not specified which fields are keys', __FUNCTION__); - } - - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - $table = $this->quoteIdentifier($table, true); - $query = "REPLACE INTO $table ($query) VALUES ($values)"; - $result = $this->_doQuery($query, true, $connection); - if (PEAR::isError($result)) { - return $result; - } - return $this->_affectedRows($connection, $result); - } - - // }}} - // {{{ nextID() - - /** - * Returns the next free id of a sequence - * - * @param string $seq_name name of the sequence - * @param boolean $ondemand when true the sequence is - * automatic created, if it - * not exists - * - * @return mixed MDB2 Error Object or id - * @access public - */ - function nextID($seq_name, $ondemand = true) - { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true); - $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true); - $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (NULL)"; - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $this->expectError(MDB2_ERROR_NOSUCHTABLE); - $result = $this->_doQuery($query, true); - $this->popExpect(); - $this->popErrorHandling(); - if (PEAR::isError($result)) { - if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) { - $this->loadModule('Manager', null, true); - $result = $this->manager->createSequence($seq_name); - if (PEAR::isError($result)) { - return $this->raiseError($result, null, null, - 'on demand sequence '.$seq_name.' could not be created', __FUNCTION__); - } else { - return $this->nextID($seq_name, false); - } - } - return $result; - } - $value = $this->lastInsertID(); - if (is_numeric($value)) { - $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value"; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name; - } - } - return $value; - } - - // }}} - // {{{ lastInsertID() - - /** - * Returns the autoincrement ID if supported or $id or fetches the current - * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field) - * - * @param string $table name of the table into which a new row was inserted - * @param string $field name of the field into which a new row was inserted - * @return mixed MDB2 Error Object or id - * @access public - */ - function lastInsertID($table = null, $field = null) - { - // not using mysql_insert_id() due to http://pear.php.net/bugs/bug.php?id=8051 - // not casting to integer to handle BIGINT http://pear.php.net/bugs/bug.php?id=17650 - return $this->queryOne('SELECT LAST_INSERT_ID()'); - } - - // }}} - // {{{ currID() - - /** - * Returns the current id of a sequence - * - * @param string $seq_name name of the sequence - * @return mixed MDB2 Error Object or id - * @access public - */ - function currID($seq_name) - { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true); - $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true); - $query = "SELECT MAX($seqcol_name) FROM $sequence_name"; - return $this->queryOne($query, 'integer'); - } -} - -/** - * MDB2 MySQL result driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Result_mysql extends MDB2_Result_Common -{ - // }}} - // {{{ fetchRow() - - /** - * Fetch a row and insert the data into an existing array. - * - * @param int $fetchmode how the array data should be indexed - * @param int $rownum number of the row where the data can be found - * @return int data array on success, a MDB2 error on failure - * @access public - */ - function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null) - { - if (!is_null($rownum)) { - $seek = $this->seek($rownum); - if (PEAR::isError($seek)) { - return $seek; - } - } - if ($fetchmode == MDB2_FETCHMODE_DEFAULT) { - $fetchmode = $this->db->fetchmode; - } - if ( $fetchmode == MDB2_FETCHMODE_ASSOC - || $fetchmode == MDB2_FETCHMODE_OBJECT - ) { - $row = @mysql_fetch_assoc($this->result); - if (is_array($row) - && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE - ) { - $row = array_change_key_case($row, $this->db->options['field_case']); - } - } else { - $row = @mysql_fetch_row($this->result); - } - - if (!$row) { - if ($this->result === false) { - $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - return $err; - } - return null; - } - $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL; - $rtrim = false; - if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) { - if (empty($this->types)) { - $mode += MDB2_PORTABILITY_RTRIM; - } else { - $rtrim = true; - } - } - if ($mode) { - $this->db->_fixResultArrayValues($row, $mode); - } - if ( ( $fetchmode != MDB2_FETCHMODE_ASSOC - && $fetchmode != MDB2_FETCHMODE_OBJECT) - && !empty($this->types) - ) { - $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim); - } elseif (($fetchmode == MDB2_FETCHMODE_ASSOC - || $fetchmode == MDB2_FETCHMODE_OBJECT) - && !empty($this->types_assoc) - ) { - $row = $this->db->datatype->convertResultRow($this->types_assoc, $row, $rtrim); - } - if (!empty($this->values)) { - $this->_assignBindColumns($row); - } - if ($fetchmode === MDB2_FETCHMODE_OBJECT) { - $object_class = $this->db->options['fetch_class']; - if ($object_class == 'stdClass') { - $row = (object) $row; - } else { - $rowObj = new $object_class($row); - $row = $rowObj; - } - } - ++$this->rownum; - return $row; - } - - // }}} - // {{{ _getColumnNames() - - /** - * Retrieve the names of columns returned by the DBMS in a query result. - * - * @return mixed Array variable that holds the names of columns as keys - * or an MDB2 error on failure. - * Some DBMS may not return any columns when the result set - * does not contain any rows. - * @access private - */ - function _getColumnNames() - { - $columns = array(); - $numcols = $this->numCols(); - if (PEAR::isError($numcols)) { - return $numcols; - } - for ($column = 0; $column < $numcols; $column++) { - $column_name = @mysql_field_name($this->result, $column); - $columns[$column_name] = $column; - } - if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $columns = array_change_key_case($columns, $this->db->options['field_case']); - } - return $columns; - } - - // }}} - // {{{ numCols() - - /** - * Count the number of columns returned by the DBMS in a query result. - * - * @return mixed integer value with the number of columns, a MDB2 error - * on failure - * @access public - */ - function numCols() - { - $cols = @mysql_num_fields($this->result); - if (is_null($cols)) { - if ($this->result === false) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } elseif (is_null($this->result)) { - return count($this->types); - } - return $this->db->raiseError(null, null, null, - 'Could not get column count', __FUNCTION__); - } - return $cols; - } - - // }}} - // {{{ free() - - /** - * Free the internal resources associated with result. - * - * @return boolean true on success, false if result is invalid - * @access public - */ - function free() - { - if (is_resource($this->result) && $this->db->connection) { - $free = @mysql_free_result($this->result); - if ($free === false) { - return $this->db->raiseError(null, null, null, - 'Could not free result', __FUNCTION__); - } - } - $this->result = false; - return MDB2_OK; - } -} - -/** - * MDB2 MySQL buffered result driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_BufferedResult_mysql extends MDB2_Result_mysql -{ - // }}} - // {{{ seek() - - /** - * Seek to a specific row in a result set - * - * @param int $rownum number of the row where the data can be found - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function seek($rownum = 0) - { - if ($this->rownum != ($rownum - 1) && !@mysql_data_seek($this->result, $rownum)) { - if ($this->result === false) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } elseif (is_null($this->result)) { - return MDB2_OK; - } - return $this->db->raiseError(MDB2_ERROR_INVALID, null, null, - 'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__); - } - $this->rownum = $rownum - 1; - return MDB2_OK; - } - - // }}} - // {{{ valid() - - /** - * Check if the end of the result set has been reached - * - * @return mixed true or false on sucess, a MDB2 error on failure - * @access public - */ - function valid() - { - $numrows = $this->numRows(); - if (PEAR::isError($numrows)) { - return $numrows; - } - return $this->rownum < ($numrows - 1); - } - - // }}} - // {{{ numRows() - - /** - * Returns the number of rows in a result object - * - * @return mixed MDB2 Error Object or the number of rows - * @access public - */ - function numRows() - { - $rows = @mysql_num_rows($this->result); - if (false === $rows) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } elseif (is_null($this->result)) { - return 0; - } - return $this->db->raiseError(null, null, null, - 'Could not get row count', __FUNCTION__); - } - return $rows; - } - - // }}} -} - -/** - * MDB2 MySQL statement driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Statement_mysql extends MDB2_Statement_Common -{ - // {{{ _execute() - - /** - * Execute a prepared query statement helper method. - * - * @param mixed $result_class string which specifies which result class to use - * @param mixed $result_wrap_class string which specifies which class to wrap results in - * - * @return mixed MDB2_Result or integer (affected rows) on success, - * a MDB2 error on failure - * @access private - */ - function _execute($result_class = true, $result_wrap_class = true) - { - if (is_null($this->statement)) { - $result = parent::_execute($result_class, $result_wrap_class); - return $result; - } - $this->db->last_query = $this->query; - $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'pre', 'parameters' => $this->values)); - if ($this->db->getOption('disable_query')) { - $result = $this->is_manip ? 0 : null; - return $result; - } - - $connection = $this->db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - $query = 'EXECUTE '.$this->statement; - if (!empty($this->positions)) { - $parameters = array(); - foreach ($this->positions as $parameter) { - if (!array_key_exists($parameter, $this->values)) { - return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__); - } - $close = false; - $value = $this->values[$parameter]; - $type = array_key_exists($parameter, $this->types) ? $this->types[$parameter] : null; - if (is_resource($value) || $type == 'clob' || $type == 'blob' && $this->db->options['lob_allow_url_include']) { - if (!is_resource($value) && preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) { - if ($match[1] == 'file://') { - $value = $match[2]; - } - $value = @fopen($value, 'r'); - $close = true; - } - if (is_resource($value)) { - $data = ''; - while (!@feof($value)) { - $data.= @fread($value, $this->db->options['lob_buffer_length']); - } - if ($close) { - @fclose($value); - } - $value = $data; - } - } - $quoted = $this->db->quote($value, $type); - if (PEAR::isError($quoted)) { - return $quoted; - } - $param_query = 'SET @'.$parameter.' = '.$quoted; - $result = $this->db->_doQuery($param_query, true, $connection); - if (PEAR::isError($result)) { - return $result; - } - } - $query.= ' USING @'.implode(', @', array_values($this->positions)); - } - - $result = $this->db->_doQuery($query, $this->is_manip, $connection); - if (PEAR::isError($result)) { - return $result; - } - - if ($this->is_manip) { - $affected_rows = $this->db->_affectedRows($connection, $result); - return $affected_rows; - } - - $result = $this->db->_wrapResult($result, $this->result_types, - $result_class, $result_wrap_class, $this->limit, $this->offset); - $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'post', 'result' => $result)); - return $result; - } - - // }}} - // {{{ free() - - /** - * Release resources allocated for the specified prepared query. - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function free() - { - if (is_null($this->positions)) { - return $this->db->raiseError(MDB2_ERROR, null, null, - 'Prepared statement has already been freed', __FUNCTION__); - } - $result = MDB2_OK; - - if (!is_null($this->statement)) { - $connection = $this->db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - $query = 'DEALLOCATE PREPARE '.$this->statement; - $result = $this->db->_doQuery($query, true, $connection); - } - - parent::free(); - return $result; - } -} -?> diff --git a/3rdparty/MDB2/Driver/oci8.php b/3rdparty/MDB2/Driver/oci8.php deleted file mode 100644 index a1eefc94d15f9d1ddd9aa8dcd5c0aecad49d57f2..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/oci8.php +++ /dev/null @@ -1,1700 +0,0 @@ - | -// +----------------------------------------------------------------------+ - -// $Id: oci8.php 295587 2010-02-28 17:16:38Z quipo $ - -/** - * MDB2 OCI8 driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_oci8 extends MDB2_Driver_Common -{ - // {{{ properties - var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => "'", 'escape_pattern' => '@'); - - var $identifier_quoting = array('start' => '"', 'end' => '"', 'escape' => '"'); - - var $uncommitedqueries = 0; - // }}} - // {{{ constructor - - /** - * Constructor - */ - function __construct() - { - parent::__construct(); - - $this->phptype = 'oci8'; - $this->dbsyntax = 'oci8'; - - $this->supported['sequences'] = true; - $this->supported['indexes'] = true; - $this->supported['summary_functions'] = true; - $this->supported['order_by_text'] = true; - $this->supported['current_id'] = true; - $this->supported['affected_rows'] = true; - $this->supported['transactions'] = true; - $this->supported['savepoints'] = true; - $this->supported['limit_queries'] = true; - $this->supported['LOBs'] = true; - $this->supported['replace'] = 'emulated'; - $this->supported['sub_selects'] = true; - $this->supported['triggers'] = true; - $this->supported['auto_increment'] = false; // implementation is broken - $this->supported['primary_key'] = true; - $this->supported['result_introspection'] = true; - $this->supported['prepared_statements'] = true; - $this->supported['identifier_quoting'] = true; - $this->supported['pattern_escaping'] = true; - $this->supported['new_link'] = true; - - $this->options['DBA_username'] = false; - $this->options['DBA_password'] = false; - $this->options['database_name_prefix'] = false; - $this->options['emulate_database'] = true; - $this->options['default_tablespace'] = false; - $this->options['default_text_field_length'] = 2000; - $this->options['lob_allow_url_include'] = false; - $this->options['result_prefetching'] = false; - $this->options['max_identifiers_length'] = 30; - } - - // }}} - // {{{ errorInfo() - - /** - * This method is used to collect information about an error - * - * @param integer $error - * @return array - * @access public - */ - function errorInfo($error = null) - { - if (is_resource($error)) { - $error_data = @OCIError($error); - $error = null; - } elseif ($this->connection) { - $error_data = @OCIError($this->connection); - } else { - $error_data = @OCIError(); - } - $native_code = $error_data['code']; - $native_msg = $error_data['message']; - if (null === $error) { - static $ecode_map; - if (empty($ecode_map)) { - $ecode_map = array( - 1 => MDB2_ERROR_CONSTRAINT, - 900 => MDB2_ERROR_SYNTAX, - 904 => MDB2_ERROR_NOSUCHFIELD, - 911 => MDB2_ERROR_SYNTAX, //invalid character - 913 => MDB2_ERROR_VALUE_COUNT_ON_ROW, - 921 => MDB2_ERROR_SYNTAX, - 923 => MDB2_ERROR_SYNTAX, - 942 => MDB2_ERROR_NOSUCHTABLE, - 955 => MDB2_ERROR_ALREADY_EXISTS, - 1400 => MDB2_ERROR_CONSTRAINT_NOT_NULL, - 1401 => MDB2_ERROR_INVALID, - 1407 => MDB2_ERROR_CONSTRAINT_NOT_NULL, - 1418 => MDB2_ERROR_NOT_FOUND, - 1435 => MDB2_ERROR_NOT_FOUND, - 1476 => MDB2_ERROR_DIVZERO, - 1722 => MDB2_ERROR_INVALID_NUMBER, - 2289 => MDB2_ERROR_NOSUCHTABLE, - 2291 => MDB2_ERROR_CONSTRAINT, - 2292 => MDB2_ERROR_CONSTRAINT, - 2449 => MDB2_ERROR_CONSTRAINT, - 4081 => MDB2_ERROR_ALREADY_EXISTS, //trigger already exists - 24344 => MDB2_ERROR_SYNTAX, //success with compilation error - ); - } - if (isset($ecode_map[$native_code])) { - $error = $ecode_map[$native_code]; - } - } - return array($error, $native_code, $native_msg); - } - - // }}} - // {{{ beginTransaction() - - /** - * Start a transaction or set a savepoint. - * - * @param string name of a savepoint to set - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function beginTransaction($savepoint = null) - { - $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (null !== $savepoint) { - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'savepoint cannot be released when changes are auto committed', __FUNCTION__); - } - $query = 'SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } - if ($this->in_transaction) { - return MDB2_OK; //nothing to do - } - if (!$this->destructor_registered && $this->opened_persistent) { - $this->destructor_registered = true; - register_shutdown_function('MDB2_closeOpenTransactions'); - } - $this->in_transaction = true; - ++$this->uncommitedqueries; - return MDB2_OK; - } - - // }}} - // {{{ commit() - - /** - * Commit the database changes done during a transaction that is in - * progress or release a savepoint. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after committing the pending changes. - * - * @param string name of a savepoint to release - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function commit($savepoint = null) - { - $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__); - } - if (null !== $savepoint) { - return MDB2_OK; - } - - if ($this->uncommitedqueries) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - if (!@OCICommit($connection)) { - return $this->raiseError(null, null, null, - 'Unable to commit transaction', __FUNCTION__); - } - $this->uncommitedqueries = 0; - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ rollback() - - /** - * Cancel any database changes done during a transaction or since a specific - * savepoint that is in progress. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after canceling the pending changes. - * - * @param string name of a savepoint to rollback to - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function rollback($savepoint = null) - { - $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'rollback cannot be done changes are auto committed', __FUNCTION__); - } - if (null !== $savepoint) { - $query = 'ROLLBACK TO SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } - - if ($this->uncommitedqueries) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - if (!@OCIRollback($connection)) { - return $this->raiseError(null, null, null, - 'Unable to rollback transaction', __FUNCTION__); - } - $this->uncommitedqueries = 0; - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ function setTransactionIsolation() - - /** - * Set the transacton isolation level. - * - * @param string standard isolation level - * READ UNCOMMITTED (allows dirty reads) - * READ COMMITTED (prevents dirty reads) - * REPEATABLE READ (prevents nonrepeatable reads) - * SERIALIZABLE (prevents phantom reads) - * @param array some transaction options: - * 'wait' => 'WAIT' | 'NO WAIT' - * 'rw' => 'READ WRITE' | 'READ ONLY' - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - * @since 2.1.1 - */ - function setTransactionIsolation($isolation, $options = array()) - { - $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true)); - switch ($isolation) { - case 'READ UNCOMMITTED': - $isolation = 'READ COMMITTED'; - case 'READ COMMITTED': - case 'REPEATABLE READ': - $isolation = 'SERIALIZABLE'; - case 'SERIALIZABLE': - break; - default: - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'isolation level is not supported: '.$isolation, __FUNCTION__); - } - - $query = "ALTER SESSION ISOLATION LEVEL $isolation"; - return $this->_doQuery($query, true); - } - - // }}} - // {{{ _doConnect() - - /** - * do the grunt work of the connect - * - * @return connection on success or MDB2 Error Object on failure - * @access protected - */ - function _doConnect($username, $password, $persistent = false) - { - if (!PEAR::loadExtension($this->phptype)) { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__); - } - - $sid = ''; - - if (!empty($this->dsn['service']) && $this->dsn['hostspec']) { - //oci8://username:password@foo.example.com[:port]/?service=service - // service name is given, it is assumed that hostspec is really a - // hostname, we try to construct an oracle connection string from this - $port = $this->dsn['port'] ? $this->dsn['port'] : 1521; - $sid = sprintf("(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) - (HOST=%s) (PORT=%s))) - (CONNECT_DATA=(SERVICE_NAME=%s)))", - $this->dsn['hostspec'], - $port, - $this->dsn['service'] - ); - } elseif ($this->dsn['hostspec']) { - // we are given something like 'oci8://username:password@foo/' - // we have hostspec but not a service name, now we assume that - // hostspec is a tnsname defined in tnsnames.ora - $sid = $this->dsn['hostspec']; - if (isset($this->dsn['port']) && $this->dsn['port']) { - $sid = $sid.':'.$this->dsn['port']; - } - } else { - // oci://username:password@ - // if everything fails, we have to rely on environment variables - // not before a check to 'emulate_database' - if (!$this->options['emulate_database'] && $this->database_name) { - $sid = $this->database_name; - } elseif (getenv('ORACLE_SID')) { - $sid = getenv('ORACLE_SID'); - } elseif ($sid = getenv('TWO_TASK')) { - $sid = getenv('TWO_TASK'); - } else { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'not a valid connection string or environment variable [ORACLE_SID|TWO_TASK] not set', - __FUNCTION__); - } - } - - if (function_exists('oci_connect')) { - if ($this->_isNewLinkSet()) { - $connect_function = 'oci_new_connect'; - } else { - $connect_function = $persistent ? 'oci_pconnect' : 'oci_connect'; - } - - $charset = empty($this->dsn['charset']) ? null : $this->dsn['charset']; - $session_mode = empty($this->dsn['session_mode']) ? null : $this->dsn['session_mode']; - $connection = @$connect_function($username, $password, $sid, $charset, $session_mode); - $error = @OCIError(); - if (isset($error['code']) && $error['code'] == 12541) { - // Couldn't find TNS listener. Try direct connection. - $connection = @$connect_function($username, $password, null, $charset); - } - } else { - $connect_function = $persistent ? 'OCIPLogon' : 'OCILogon'; - $connection = @$connect_function($username, $password, $sid); - - if (!empty($this->dsn['charset'])) { - $result = $this->setCharset($this->dsn['charset'], $connection); - if (PEAR::isError($result)) { - return $result; - } - } - } - - if (!$connection) { - return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null, - 'unable to establish a connection', __FUNCTION__); - } - - if (empty($this->dsn['disable_iso_date'])) { - $query = "ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'"; - $err = $this->_doQuery($query, true, $connection); - if (PEAR::isError($err)) { - $this->disconnect(false); - return $err; - } - } - - $query = "ALTER SESSION SET NLS_NUMERIC_CHARACTERS='. '"; - $err = $this->_doQuery($query, true, $connection); - if (PEAR::isError($err)) { - $this->disconnect(false); - return $err; - } - - return $connection; - } - - // }}} - // {{{ connect() - - /** - * Connect to the database - * - * @return MDB2_OK on success, MDB2 Error Object on failure - * @access public - */ - function connect() - { - if (is_resource($this->connection)) { - //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0 - if (MDB2::areEquals($this->connected_dsn, $this->dsn) - && $this->opened_persistent == $this->options['persistent'] - ) { - return MDB2_OK; - } - $this->disconnect(false); - } - - if ($this->database_name && $this->options['emulate_database']) { - $this->dsn['username'] = $this->options['database_name_prefix'].$this->database_name; - } - - $connection = $this->_doConnect($this->dsn['username'], - $this->dsn['password'], - $this->options['persistent']); - if (PEAR::isError($connection)) { - return $connection; - } - $this->connection = $connection; - $this->connected_dsn = $this->dsn; - $this->connected_database_name = ''; - $this->opened_persistent = $this->options['persistent']; - $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype; - - if ($this->database_name) { - if ($this->database_name != $this->connected_database_name) { - $query = 'ALTER SESSION SET CURRENT_SCHEMA = "' .strtoupper($this->database_name) .'"'; - $result = $this->_doQuery($query); - if (PEAR::isError($result)) { - $err = $this->raiseError($result, null, null, - 'Could not select the database: '.$this->database_name, __FUNCTION__); - return $err; - } - $this->connected_database_name = $this->database_name; - } - } - - $this->as_keyword = ' '; - $server_info = $this->getServerVersion(); - if (is_array($server_info)) { - if ($server_info['major'] >= '10') { - $this->as_keyword = ' AS '; - } - } - return MDB2_OK; - } - - // }}} - // {{{ databaseExists() - - /** - * check if given database name is exists? - * - * @param string $name name of the database that should be checked - * - * @return mixed true/false on success, a MDB2 error on failure - * @access public - */ - function databaseExists($name) - { - $connection = $this->_doConnect($this->dsn['username'], - $this->dsn['password'], - $this->options['persistent']); - if (PEAR::isError($connection)) { - return $connection; - } - - $query = 'ALTER SESSION SET CURRENT_SCHEMA = "' .strtoupper($name) .'"'; - $result = $this->_doQuery($query, true, $connection, false); - if (PEAR::isError($result)) { - if (!MDB2::isError($result, MDB2_ERROR_NOT_FOUND)) { - return $result; - } - return false; - } - return true; - } - - // }}} - // {{{ disconnect() - - /** - * Log out and disconnect from the database. - * - * @param boolean $force if the disconnect should be forced even if the - * connection is opened persistently - * @return mixed true on success, false if not connected and error - * object on error - * @access public - */ - function disconnect($force = true) - { - if (is_resource($this->connection)) { - if ($this->in_transaction) { - $dsn = $this->dsn; - $database_name = $this->database_name; - $persistent = $this->options['persistent']; - $this->dsn = $this->connected_dsn; - $this->database_name = $this->connected_database_name; - $this->options['persistent'] = $this->opened_persistent; - $this->rollback(); - $this->dsn = $dsn; - $this->database_name = $database_name; - $this->options['persistent'] = $persistent; - } - - if (!$this->opened_persistent || $force) { - $ok = false; - if (function_exists('oci_close')) { - $ok = @oci_close($this->connection); - } else { - $ok = @OCILogOff($this->connection); - } - if (!$ok) { - return $this->raiseError(MDB2_ERROR_DISCONNECT_FAILED, - null, null, null, __FUNCTION__); - } - } - $this->uncommitedqueries = 0; - } else { - return false; - } - return parent::disconnect($force); - } - - // }}} - // {{{ standaloneQuery() - - /** - * execute a query as DBA - * - * @param string $query the SQL query - * @param mixed $types array containing the types of the columns in - * the result set - * @param boolean $is_manip if the query is a manipulation query - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function standaloneQuery($query, $types = null, $is_manip = false) - { - $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username']; - $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password']; - $connection = $this->_doConnect($user, $pass, $this->options['persistent']); - if (PEAR::isError($connection)) { - return $connection; - } - - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $query = $this->_modifyQuery($query, $is_manip, $limit, $offset); - - $result = $this->_doQuery($query, $is_manip, $connection, false); - if (!PEAR::isError($result)) { - if ($is_manip) { - $result = $this->_affectedRows($connection, $result); - } else { - $result = $this->_wrapResult($result, $types, true, false, $limit, $offset); - } - } - - @OCILogOff($connection); - return $result; - } - - // }}} - // {{{ _modifyQuery() - - /** - * Changes a query string for various DBMS specific reasons - * - * @param string $query query to modify - * @param boolean $is_manip if it is a DML query - * @param integer $limit limit the number of rows - * @param integer $offset start reading from given offset - * @return string modified query - * @access protected - */ - function _modifyQuery($query, $is_manip, $limit, $offset) - { - if (preg_match('/^\s*SELECT/i', $query)) { - if (!preg_match('/\sFROM\s/i', $query)) { - $query.= " FROM dual"; - } - if ($limit > 0) { - // taken from http://svn.ez.no/svn/ezcomponents/packages/Database - $max = $offset + $limit; - if ($offset > 0) { - $min = $offset + 1; - $query = "SELECT * FROM (SELECT a.*, ROWNUM mdb2rn FROM ($query) a WHERE ROWNUM <= $max) WHERE mdb2rn >= $min"; - } else { - $query = "SELECT a.* FROM ($query) a WHERE ROWNUM <= $max"; - } - } - } - return $query; - } - - /** - * Obtain DBMS specific SQL code portion needed to declare a generic type - * field to be used in statement like CREATE TABLE, without the field name - * and type values (ie. just the character set, default value, if the - * field is permitted to be NULL or not, and the collation options). - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Text value to be used as default for this field. - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * charset - * Text value with the default CHARACTER SET for this field. - * collation - * Text value with the default COLLATION for this field. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field's options. - * @access protected - */ - function _getDeclarationOptions($field) - { - $charset = empty($field['charset']) ? '' : - ' '.$this->_getCharsetFieldDeclaration($field['charset']); - - $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL'; - $default = ''; - if (array_key_exists('default', $field)) { - if ($field['default'] === '') { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $valid_default_values = $this->getValidTypes(); - $field['default'] = $valid_default_values[$field['type']]; - if ($field['default'] === '' && ($db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL)) { - $field['default'] = ' '; - } - } - if (null !== $field['default']) { - $default = ' DEFAULT ' . $this->quote($field['default'], $field['type']); - } - } - - $collation = empty($field['collation']) ? '' : - ' '.$this->_getCollationFieldDeclaration($field['collation']); - - return $charset.$default.$notnull.$collation; - } - - // }}} - // {{{ _doQuery() - - /** - * Execute a query - * @param string $query query - * @param boolean $is_manip if the query is a manipulation query - * @param resource $connection - * @param string $database_name - * @return result or error object - * @access protected - */ - function _doQuery($query, $is_manip = false, $connection = null, $database_name = null) - { - $this->last_query = $query; - $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (PEAR::isError($result)) { - return $result; - } - $query = $result; - } - if ($this->getOption('disable_query')) { - if ($is_manip) { - return 0; - } - return null; - } - - if (null === $connection) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - - $query = str_replace("\r\n", "\n", $query); //for fixing end-of-line character in the PL/SQL in windows - $result = @OCIParse($connection, $query); - if (!$result) { - $err = $this->raiseError(null, null, null, - 'Could not create statement', __FUNCTION__); - return $err; - } - - $mode = $this->in_transaction ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS; - if (!@OCIExecute($result, $mode)) { - $err = $this->raiseError($result, null, null, - 'Could not execute statement', __FUNCTION__); - return $err; - } - - if (is_numeric($this->options['result_prefetching'])) { - @ocisetprefetch($result, $this->options['result_prefetching']); - } - - $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result)); - return $result; - } - - // }}} - // {{{ _affectedRows() - - /** - * Returns the number of rows affected - * - * @param resource $result - * @param resource $connection - * @return mixed MDB2 Error Object or the number of rows affected - * @access private - */ - function _affectedRows($connection, $result = null) - { - if (null === $connection) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - return @OCIRowCount($result); - } - - // }}} - // {{{ getServerVersion() - - /** - * return version information about the server - * - * @param bool $native determines if the raw version string should be returned - * @return mixed array/string with version information or MDB2 error object - * @access public - */ - function getServerVersion($native = false) - { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - if ($this->connected_server_info) { - $server_info = $this->connected_server_info; - } else { - $server_info = @ociserverversion($connection); - } - if (!$server_info) { - return $this->raiseError(null, null, null, - 'Could not get server information', __FUNCTION__); - } - // cache server_info - $this->connected_server_info = $server_info; - if (!$native) { - if (!preg_match('/ (\d+)\.(\d+)\.(\d+)\.([\d\.]+) /', $server_info, $tmp)) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'Could not parse version information:'.$server_info, __FUNCTION__); - } - $server_info = array( - 'major' => $tmp[1], - 'minor' => $tmp[2], - 'patch' => $tmp[3], - 'extra' => $tmp[4], - 'native' => $server_info, - ); - } - return $server_info; - } - - // }}} - // {{{ prepare() - - /** - * Prepares a query for multiple execution with execute(). - * With some database backends, this is emulated. - * prepare() requires a generic query as string like - * 'INSERT INTO numbers VALUES(?,?)' or - * 'INSERT INTO numbers VALUES(:foo,:bar)'. - * The ? and :name and are placeholders which can be set using - * bindParam() and the query can be sent off using the execute() method. - * The allowed format for :name can be set with the 'bindname_format' option. - * - * @param string $query the query to prepare - * @param mixed $types array that contains the types of the placeholders - * @param mixed $result_types array that contains the types of the columns in - * the result set or MDB2_PREPARE_RESULT, if set to - * MDB2_PREPARE_MANIP the query is handled as a manipulation query - * @param mixed $lobs key (field) value (parameter) pair for all lob placeholders - * @return mixed resource handle for the prepared query on success, a MDB2 - * error on failure - * @access public - * @see bindParam, execute - */ - function prepare($query, $types = null, $result_types = null, $lobs = array()) - { - if ($this->options['emulate_prepared']) { - return parent::prepare($query, $types, $result_types, $lobs); - } - $is_manip = ($result_types === MDB2_PREPARE_MANIP); - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (PEAR::isError($result)) { - return $result; - } - $query = $result; - } - $query = $this->_modifyQuery($query, $is_manip, $limit, $offset); - $placeholder_type_guess = $placeholder_type = null; - $question = '?'; - $colon = ':'; - $positions = array(); - $position = 0; - $parameter = -1; - while ($position < strlen($query)) { - $q_position = strpos($query, $question, $position); - $c_position = strpos($query, $colon, $position); - if ($q_position && $c_position) { - $p_position = min($q_position, $c_position); - } elseif ($q_position) { - $p_position = $q_position; - } elseif ($c_position) { - $p_position = $c_position; - } else { - break; - } - if (null === $placeholder_type) { - $placeholder_type_guess = $query[$p_position]; - } - - $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position); - if (PEAR::isError($new_pos)) { - return $new_pos; - } - if ($new_pos != $position) { - $position = $new_pos; - continue; //evaluate again starting from the new position - } - - if ($query[$position] == $placeholder_type_guess) { - if (null === $placeholder_type) { - $placeholder_type = $query[$p_position]; - $question = $colon = $placeholder_type; - if (!empty($types) && is_array($types)) { - if ($placeholder_type == ':') { - if (is_int(key($types))) { - $types_tmp = $types; - $types = array(); - $count = -1; - } - } else { - $types = array_values($types); - } - } - } - if ($placeholder_type == ':') { - $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s'; - $parameter = preg_replace($regexp, '\\1', $query); - if ($parameter === '') { - $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null, - 'named parameter name must match "bindname_format" option', __FUNCTION__); - return $err; - } - // use parameter name in type array - if (isset($count) && isset($types_tmp[++$count])) { - $types[$parameter] = $types_tmp[$count]; - } - $length = strlen($parameter) + 1; - } else { - ++$parameter; - //$length = strlen($parameter); - $length = 1; // strlen('?') - } - if (!in_array($parameter, $positions)) { - $positions[] = $parameter; - } - if (isset($types[$parameter]) - && ($types[$parameter] == 'clob' || $types[$parameter] == 'blob') - ) { - if (!isset($lobs[$parameter])) { - $lobs[$parameter] = $parameter; - } - $value = $this->quote(true, $types[$parameter]); - if (PEAR::isError($value)) { - return $value; - } - $query = substr_replace($query, $value, $p_position, $length); - $position = $p_position + strlen($value) - 1; - } elseif ($placeholder_type == '?') { - $query = substr_replace($query, ':'.$parameter, $p_position, 1); - $position = $p_position + $length; - } else { - $position = $p_position + 1; - } - } else { - $position = $p_position; - } - } - if (is_array($lobs)) { - $columns = $variables = ''; - foreach ($lobs as $parameter => $field) { - $columns.= ($columns ? ', ' : ' RETURNING ').$field; - $variables.= ($variables ? ', ' : ' INTO ').':'.$parameter; - } - $query.= $columns.$variables; - } - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - $statement = @OCIParse($connection, $query); - if (!$statement) { - $err = $this->raiseError(null, null, null, - 'Could not create statement', __FUNCTION__); - return $err; - } - - $class_name = 'MDB2_Statement_'.$this->phptype; - $obj = new $class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset); - $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj)); - return $obj; - } - - // }}} - // {{{ nextID() - - /** - * Returns the next free id of a sequence - * - * @param string $seq_name name of the sequence - * @param boolean $ondemand when true the sequence is - * automatic created, if it - * not exists - * @return mixed MDB2 Error Object or id - * @access public - */ - function nextID($seq_name, $ondemand = true) - { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true); - $query = "SELECT $sequence_name.nextval FROM DUAL"; - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $this->expectError(MDB2_ERROR_NOSUCHTABLE); - $result = $this->queryOne($query, 'integer'); - $this->popExpect(); - $this->popErrorHandling(); - if (PEAR::isError($result)) { - if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) { - $this->loadModule('Manager', null, true); - $result = $this->manager->createSequence($seq_name); - if (PEAR::isError($result)) { - return $result; - } - return $this->nextId($seq_name, false); - } - } - return $result; - } - - // }}} - // {{{ lastInsertID() - - /** - * Returns the autoincrement ID if supported or $id or fetches the current - * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field) - * - * @param string $table name of the table into which a new row was inserted - * @param string $field name of the field into which a new row was inserted - * @return mixed MDB2 Error Object or id - * @access public - */ - function lastInsertID($table = null, $field = null) - { - $old_seq = $table.(empty($field) ? '' : '_'.$field); - $sequence_name = $this->quoteIdentifier($this->getSequenceName($table), true); - $result = $this->queryOne("SELECT $sequence_name.currval", 'integer'); - if (PEAR::isError($result)) { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($old_seq), true); - $result = $this->queryOne("SELECT $sequence_name.currval", 'integer'); - } - - return $result; - } - - // }}} - // {{{ currId() - - /** - * Returns the current id of a sequence - * - * @param string $seq_name name of the sequence - * @return mixed MDB2_Error or id - * @access public - */ - function currId($seq_name) - { - $sequence_name = $this->getSequenceName($seq_name); - $query = 'SELECT (last_number-1) FROM all_sequences'; - $query.= ' WHERE sequence_name='.$this->quote($sequence_name, 'text'); - $query.= ' OR sequence_name='.$this->quote(strtoupper($sequence_name), 'text'); - return $this->queryOne($query, 'integer'); - } -} - -/** - * MDB2 OCI8 result driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Result_oci8 extends MDB2_Result_Common -{ - // }}} - // {{{ fetchRow() - - /** - * Fetch a row and insert the data into an existing array. - * - * @param int $fetchmode how the array data should be indexed - * @param int $rownum number of the row where the data can be found - * @return int data array on success, a MDB2 error on failure - * @access public - */ - function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null) - { - if (null !== $rownum) { - $seek = $this->seek($rownum); - if (PEAR::isError($seek)) { - return $seek; - } - } - if ($fetchmode == MDB2_FETCHMODE_DEFAULT) { - $fetchmode = $this->db->fetchmode; - } - if ($fetchmode & MDB2_FETCHMODE_ASSOC) { - @OCIFetchInto($this->result, $row, OCI_ASSOC+OCI_RETURN_NULLS); - if (is_array($row) - && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE - ) { - $row = array_change_key_case($row, $this->db->options['field_case']); - } - } else { - @OCIFetchInto($this->result, $row, OCI_RETURN_NULLS); - } - if (!$row) { - if (false === $this->result) { - $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - return $err; - } - return null; - } - // remove additional column at the end - if ($this->offset > 0) { - array_pop($row); - } - $mode = 0; - $rtrim = false; - if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) { - if (empty($this->types)) { - $mode += MDB2_PORTABILITY_RTRIM; - } else { - $rtrim = true; - } - } - if ($mode) { - $this->db->_fixResultArrayValues($row, $mode); - } - if (!empty($this->types)) { - $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim); - } - if (!empty($this->values)) { - $this->_assignBindColumns($row); - } - if ($fetchmode === MDB2_FETCHMODE_OBJECT) { - $object_class = $this->db->options['fetch_class']; - if ($object_class == 'stdClass') { - $row = (object) $row; - } else { - $rowObj = new $object_class($row); - $row = $rowObj; - } - } - ++$this->rownum; - return $row; - } - - // }}} - // {{{ _getColumnNames() - - /** - * Retrieve the names of columns returned by the DBMS in a query result. - * - * @return mixed Array variable that holds the names of columns as keys - * or an MDB2 error on failure. - * Some DBMS may not return any columns when the result set - * does not contain any rows. - * @access private - */ - function _getColumnNames() - { - $columns = array(); - $numcols = $this->numCols(); - if (PEAR::isError($numcols)) { - return $numcols; - } - for ($column = 0; $column < $numcols; $column++) { - $column_name = @OCIColumnName($this->result, $column + 1); - $columns[$column_name] = $column; - } - if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $columns = array_change_key_case($columns, $this->db->options['field_case']); - } - return $columns; - } - - // }}} - // {{{ numCols() - - /** - * Count the number of columns returned by the DBMS in a query result. - * - * @return mixed integer value with the number of columns, a MDB2 error - * on failure - * @access public - */ - function numCols() - { - $cols = @OCINumCols($this->result); - if (null === $cols) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return count($this->types); - } - return $this->db->raiseError(null, null, null, - 'Could not get column count', __FUNCTION__); - } - if ($this->offset > 0) { - --$cols; - } - return $cols; - } - - // }}} - // {{{ free() - - /** - * Free the internal resources associated with $result. - * - * @return boolean true on success, false if $result is invalid - * @access public - */ - function free() - { - if (is_resource($this->result) && $this->db->connection) { - $free = @OCIFreeCursor($this->result); - if (false === $free) { - return $this->db->raiseError(null, null, null, - 'Could not free result', __FUNCTION__); - } - } - $this->result = false; - return MDB2_OK; - - } -} - -/** - * MDB2 OCI8 buffered result driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_BufferedResult_oci8 extends MDB2_Result_oci8 -{ - var $buffer; - var $buffer_rownum = - 1; - - // {{{ _fillBuffer() - - /** - * Fill the row buffer - * - * @param int $rownum row number upto which the buffer should be filled - if the row number is null all rows are ready into the buffer - * @return boolean true on success, false on failure - * @access protected - */ - function _fillBuffer($rownum = null) - { - if (isset($this->buffer) && is_array($this->buffer)) { - if (null === $rownum) { - if (!end($this->buffer)) { - return false; - } - } elseif (isset($this->buffer[$rownum])) { - return (bool)$this->buffer[$rownum]; - } - } - - $row = true; - while (((null === $rownum) || $this->buffer_rownum < $rownum) - && ($row = @OCIFetchInto($this->result, $buffer, OCI_RETURN_NULLS)) - ) { - ++$this->buffer_rownum; - // remove additional column at the end - if ($this->offset > 0) { - array_pop($buffer); - } - if (empty($this->types)) { - foreach (array_keys($buffer) as $key) { - if (is_a($buffer[$key], 'oci-lob')) { - $buffer[$key] = $buffer[$key]->load(); - } - } - } - $this->buffer[$this->buffer_rownum] = $buffer; - } - - if (!$row) { - ++$this->buffer_rownum; - $this->buffer[$this->buffer_rownum] = false; - return false; - } - return true; - } - - // }}} - // {{{ fetchRow() - - /** - * Fetch a row and insert the data into an existing array. - * - * @param int $fetchmode how the array data should be indexed - * @param int $rownum number of the row where the data can be found - * @return int data array on success, a MDB2 error on failure - * @access public - */ - function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null) - { - if (false === $this->result) { - $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - return $err; - } - if (null === $this->result) { - return null; - } - if (null !== $rownum) { - $seek = $this->seek($rownum); - if (PEAR::isError($seek)) { - return $seek; - } - } - $target_rownum = $this->rownum + 1; - if ($fetchmode == MDB2_FETCHMODE_DEFAULT) { - $fetchmode = $this->db->fetchmode; - } - if (!$this->_fillBuffer($target_rownum)) { - return null; - } - $row = $this->buffer[$target_rownum]; - if ($fetchmode & MDB2_FETCHMODE_ASSOC) { - $column_names = $this->getColumnNames(); - foreach ($column_names as $name => $i) { - $column_names[$name] = $row[$i]; - } - $row = $column_names; - } - $mode = 0; - $rtrim = false; - if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) { - if (empty($this->types)) { - $mode += MDB2_PORTABILITY_RTRIM; - } else { - $rtrim = true; - } - } - if ($mode) { - $this->db->_fixResultArrayValues($row, $mode); - } - if (!empty($this->types)) { - $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim); - } - if (!empty($this->values)) { - $this->_assignBindColumns($row); - } - if ($fetchmode === MDB2_FETCHMODE_OBJECT) { - $object_class = $this->db->options['fetch_class']; - if ($object_class == 'stdClass') { - $row = (object) $row; - } else { - $rowObj = new $object_class($row); - $row = $rowObj; - } - } - ++$this->rownum; - return $row; - } - - // }}} - // {{{ seek() - - /** - * Seek to a specific row in a result set - * - * @param int $rownum number of the row where the data can be found - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function seek($rownum = 0) - { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - $this->rownum = $rownum - 1; - return MDB2_OK; - } - - // }}} - // {{{ valid() - - /** - * Check if the end of the result set has been reached - * - * @return mixed true or false on sucess, a MDB2 error on failure - * @access public - */ - function valid() - { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return true; - } - if ($this->_fillBuffer($this->rownum + 1)) { - return true; - } - return false; - } - - // }}} - // {{{ numRows() - - /** - * Returns the number of rows in a result object - * - * @return mixed MDB2 Error Object or the number of rows - * @access public - */ - function numRows() - { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return 0; - } - $this->_fillBuffer(); - return $this->buffer_rownum; - } - - // }}} - // {{{ free() - - /** - * Free the internal resources associated with $result. - * - * @return boolean true on success, false if $result is invalid - * @access public - */ - function free() - { - $this->buffer = null; - $this->buffer_rownum = null; - return parent::free(); - } -} - -/** - * MDB2 OCI8 statement driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Statement_oci8 extends MDB2_Statement_Common -{ - // {{{ Variables (Properties) - - var $type_maxlengths = array(); - - // }}} - // {{{ bindParam() - - /** - * Bind a variable to a parameter of a prepared query. - * - * @param int $parameter the order number of the parameter in the query - * statement. The order number of the first parameter is 1. - * @param mixed &$value variable that is meant to be bound to specified - * parameter. The type of the value depends on the $type argument. - * @param string $type specifies the type of the field - * @param int $maxlength specifies the maximum length of the field; if set to -1, the - * current length of $value is used - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function bindParam($parameter, &$value, $type = null, $maxlength = -1) - { - if (!is_numeric($parameter)) { - $parameter = preg_replace('/^:(.*)$/', '\\1', $parameter); - } - if (MDB2_OK === ($ret = parent::bindParam($parameter, $value, $type))) { - $this->type_maxlengths[$parameter] = $maxlength; - } - - return $ret; - } - - // }}} - // {{{ _execute() - - /** - * Execute a prepared query statement helper method. - * - * @param mixed $result_class string which specifies which result class to use - * @param mixed $result_wrap_class string which specifies which class to wrap results in - * - * @return mixed MDB2_Result or integer (affected rows) on success, - * a MDB2 error on failure - * @access private - */ - function _execute($result_class = true, $result_wrap_class = false) - { - if (null === $this->statement) { - return parent::_execute($result_class, $result_wrap_class); - } - $this->db->last_query = $this->query; - $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'pre', 'parameters' => $this->values)); - if ($this->db->getOption('disable_query')) { - $result = $this->is_manip ? 0 : null; - return $result; - } - - $connection = $this->db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - $result = MDB2_OK; - $lobs = $quoted_values = array(); - $i = 0; - foreach ($this->positions as $parameter) { - if (!array_key_exists($parameter, $this->values)) { - return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__); - } - $type = array_key_exists($parameter, $this->types) ? $this->types[$parameter] : null; - if ($type == 'clob' || $type == 'blob') { - $lobs[$i]['file'] = false; - if (is_resource($this->values[$parameter])) { - $fp = $this->values[$parameter]; - $this->values[$parameter] = ''; - while (!feof($fp)) { - $this->values[$parameter] .= fread($fp, 8192); - } - } elseif (is_a($this->values[$parameter], 'OCI-Lob')) { - //do nothing - } elseif ($this->db->getOption('lob_allow_url_include') - && preg_match('/^(\w+:\/\/)(.*)$/', $this->values[$parameter], $match) - ) { - $lobs[$i]['file'] = true; - if ($match[1] == 'file://') { - $this->values[$parameter] = $match[2]; - } - } - $lobs[$i]['value'] = $this->values[$parameter]; - $lobs[$i]['descriptor'] =& $this->values[$parameter]; - // Test to see if descriptor has already been created for this - // variable (i.e. if it has been bound more than once): - if (!is_a($this->values[$parameter], 'OCI-Lob')) { - $this->values[$parameter] = @OCINewDescriptor($connection, OCI_D_LOB); - if (false === $this->values[$parameter]) { - $result = $this->db->raiseError(null, null, null, - 'Unable to create descriptor for LOB in parameter: '.$parameter, __FUNCTION__); - break; - } - } - $lob_type = ($type == 'blob' ? OCI_B_BLOB : OCI_B_CLOB); - if (!@OCIBindByName($this->statement, ':'.$parameter, $lobs[$i]['descriptor'], -1, $lob_type)) { - $result = $this->db->raiseError($this->statement, null, null, - 'could not bind LOB parameter', __FUNCTION__); - break; - } - } else if ($type == OCI_B_BFILE) { - // Test to see if descriptor has already been created for this - // variable (i.e. if it has been bound more than once): - if (!is_a($this->values[$parameter], "OCI-Lob")) { - $this->values[$parameter] = @OCINewDescriptor($connection, OCI_D_FILE); - if (false === $this->values[$parameter]) { - $result = $this->db->raiseError(null, null, null, - 'Unable to create descriptor for BFILE in parameter: '.$parameter, __FUNCTION__); - break; - } - } - if (!@OCIBindByName($this->statement, ':'.$parameter, $this->values[$parameter], -1, $type)) { - $result = $this->db->raiseError($this->statement, null, null, - 'Could not bind BFILE parameter', __FUNCTION__); - break; - } - } else if ($type == OCI_B_ROWID) { - // Test to see if descriptor has already been created for this - // variable (i.e. if it has been bound more than once): - if (!is_a($this->values[$parameter], "OCI-Lob")) { - $this->values[$parameter] = @OCINewDescriptor($connection, OCI_D_ROWID); - if (false === $this->values[$parameter]) { - $result = $this->db->raiseError(null, null, null, - 'Unable to create descriptor for ROWID in parameter: '.$parameter, __FUNCTION__); - break; - } - } - if (!@OCIBindByName($this->statement, ':'.$parameter, $this->values[$parameter], -1, $type)) { - $result = $this->db->raiseError($this->statement, null, null, - 'Could not bind ROWID parameter', __FUNCTION__); - break; - } - } else if ($type == OCI_B_CURSOR) { - // Test to see if cursor has already been allocated for this - // variable (i.e. if it has been bound more than once): - if (!is_resource($this->values[$parameter]) || !get_resource_type($this->values[$parameter]) == "oci8 statement") { - $this->values[$parameter] = @OCINewCursor($connection); - if (false === $this->values[$parameter]) { - $result = $this->db->raiseError(null, null, null, - 'Unable to allocate cursor for parameter: '.$parameter, __FUNCTION__); - break; - } - } - if (!@OCIBindByName($this->statement, ':'.$parameter, $this->values[$parameter], -1, $type)) { - $result = $this->db->raiseError($this->statement, null, null, - 'Could not bind CURSOR parameter', __FUNCTION__); - break; - } - } else { - $maxlength = array_key_exists($parameter, $this->type_maxlengths) ? $this->type_maxlengths[$parameter] : -1; - $this->values[$parameter] = $this->db->quote($this->values[$parameter], $type, false); - $quoted_values[$i] =& $this->values[$parameter]; - if (PEAR::isError($quoted_values[$i])) { - return $quoted_values[$i]; - } - if (!@OCIBindByName($this->statement, ':'.$parameter, $quoted_values[$i], $maxlength)) { - $result = $this->db->raiseError($this->statement, null, null, - 'could not bind non-abstract parameter', __FUNCTION__); - break; - } - } - ++$i; - } - - $lob_keys = array_keys($lobs); - if (!PEAR::isError($result)) { - $mode = (!empty($lobs) || $this->db->in_transaction) ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS; - if (!@OCIExecute($this->statement, $mode)) { - $err = $this->db->raiseError($this->statement, null, null, - 'could not execute statement', __FUNCTION__); - return $err; - } - - if (!empty($lobs)) { - foreach ($lob_keys as $i) { - if ((null !== $lobs[$i]['value']) && $lobs[$i]['value'] !== '') { - if (is_object($lobs[$i]['value'])) { - // Probably a NULL LOB - // @see http://bugs.php.net/bug.php?id=27485 - continue; - } - if ($lobs[$i]['file']) { - $result = $lobs[$i]['descriptor']->savefile($lobs[$i]['value']); - } else { - $result = $lobs[$i]['descriptor']->save($lobs[$i]['value']); - } - if (!$result) { - $result = $this->db->raiseError(null, null, null, - 'Unable to save descriptor contents', __FUNCTION__); - break; - } - } - } - - if (!PEAR::isError($result)) { - if (!$this->db->in_transaction) { - if (!@OCICommit($connection)) { - $result = $this->db->raiseError(null, null, null, - 'Unable to commit transaction', __FUNCTION__); - } - } else { - ++$this->db->uncommitedqueries; - } - } - } - } - - if (PEAR::isError($result)) { - return $result; - } - - if ($this->is_manip) { - $affected_rows = $this->db->_affectedRows($connection, $this->statement); - return $affected_rows; - } - - $result = $this->db->_wrapResult($this->statement, $this->result_types, - $result_class, $result_wrap_class, $this->limit, $this->offset); - $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'post', 'result' => $result)); - return $result; - } - - // }}} - // {{{ free() - - /** - * Release resources allocated for the specified prepared query. - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function free() - { - if (null === $this->positions) { - return $this->db->raiseError(MDB2_ERROR, null, null, - 'Prepared statement has already been freed', __FUNCTION__); - } - $result = MDB2_OK; - - if ((null !== $this->statement) && !@OCIFreeStatement($this->statement)) { - $result = $this->db->raiseError(null, null, null, - 'Could not free statement', __FUNCTION__); - } - - parent::free(); - return $result; - } -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Driver/pgsql.php b/3rdparty/MDB2/Driver/pgsql.php deleted file mode 100644 index 8a8b3f7c91dea57eef3067cb424f8bed673e7c8c..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/pgsql.php +++ /dev/null @@ -1,1583 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -/** - * MDB2 PostGreSQL driver - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_Driver_pgsql extends MDB2_Driver_Common -{ - // {{{ properties - var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => "'", 'escape_pattern' => '\\'); - - var $identifier_quoting = array('start' => '"', 'end' => '"', 'escape' => '"'); - // }}} - // {{{ constructor - - /** - * Constructor - */ - function __construct() - { - parent::__construct(); - - $this->phptype = 'pgsql'; - $this->dbsyntax = 'pgsql'; - - $this->supported['sequences'] = true; - $this->supported['indexes'] = true; - $this->supported['affected_rows'] = true; - $this->supported['summary_functions'] = true; - $this->supported['order_by_text'] = true; - $this->supported['transactions'] = true; - $this->supported['savepoints'] = true; - $this->supported['current_id'] = true; - $this->supported['limit_queries'] = true; - $this->supported['LOBs'] = true; - $this->supported['replace'] = 'emulated'; - $this->supported['sub_selects'] = true; - $this->supported['triggers'] = true; - $this->supported['auto_increment'] = 'emulated'; - $this->supported['primary_key'] = true; - $this->supported['result_introspection'] = true; - $this->supported['prepared_statements'] = true; - $this->supported['identifier_quoting'] = true; - $this->supported['pattern_escaping'] = true; - $this->supported['new_link'] = true; - - $this->options['DBA_username'] = false; - $this->options['DBA_password'] = false; - $this->options['multi_query'] = false; - $this->options['disable_smart_seqname'] = true; - $this->options['max_identifiers_length'] = 63; - } - - // }}} - // {{{ errorInfo() - - /** - * This method is used to collect information about an error - * - * @param integer $error - * @return array - * @access public - */ - function errorInfo($error = null) - { - // Fall back to MDB2_ERROR if there was no mapping. - $error_code = MDB2_ERROR; - - $native_msg = ''; - if (is_resource($error)) { - $native_msg = @pg_result_error($error); - } elseif ($this->connection) { - $native_msg = @pg_last_error($this->connection); - if (!$native_msg && @pg_connection_status($this->connection) === PGSQL_CONNECTION_BAD) { - $native_msg = 'Database connection has been lost.'; - $error_code = MDB2_ERROR_CONNECT_FAILED; - } - } else { - $native_msg = @pg_last_error(); - } - - static $error_regexps; - if (empty($error_regexps)) { - $error_regexps = array( - '/column .* (of relation .*)?does not exist/i' - => MDB2_ERROR_NOSUCHFIELD, - '/(relation|sequence|table).*does not exist|class .* not found/i' - => MDB2_ERROR_NOSUCHTABLE, - '/database .* does not exist/' - => MDB2_ERROR_NOT_FOUND, - '/constraint .* does not exist/' - => MDB2_ERROR_NOT_FOUND, - '/index .* does not exist/' - => MDB2_ERROR_NOT_FOUND, - '/database .* already exists/i' - => MDB2_ERROR_ALREADY_EXISTS, - '/relation .* already exists/i' - => MDB2_ERROR_ALREADY_EXISTS, - '/(divide|division) by zero$/i' - => MDB2_ERROR_DIVZERO, - '/pg_atoi: error in .*: can\'t parse /i' - => MDB2_ERROR_INVALID_NUMBER, - '/invalid input syntax for( type)? (integer|numeric)/i' - => MDB2_ERROR_INVALID_NUMBER, - '/value .* is out of range for type \w*int/i' - => MDB2_ERROR_INVALID_NUMBER, - '/integer out of range/i' - => MDB2_ERROR_INVALID_NUMBER, - '/value too long for type character/i' - => MDB2_ERROR_INVALID, - '/attribute .* not found|relation .* does not have attribute/i' - => MDB2_ERROR_NOSUCHFIELD, - '/column .* specified in USING clause does not exist in (left|right) table/i' - => MDB2_ERROR_NOSUCHFIELD, - '/parser: parse error at or near/i' - => MDB2_ERROR_SYNTAX, - '/syntax error at/' - => MDB2_ERROR_SYNTAX, - '/column reference .* is ambiguous/i' - => MDB2_ERROR_SYNTAX, - '/permission denied/' - => MDB2_ERROR_ACCESS_VIOLATION, - '/violates not-null constraint/' - => MDB2_ERROR_CONSTRAINT_NOT_NULL, - '/violates [\w ]+ constraint/' - => MDB2_ERROR_CONSTRAINT, - '/referential integrity violation/' - => MDB2_ERROR_CONSTRAINT, - '/more expressions than target columns/i' - => MDB2_ERROR_VALUE_COUNT_ON_ROW, - ); - } - if (is_numeric($error) && $error < 0) { - $error_code = $error; - } else { - foreach ($error_regexps as $regexp => $code) { - if (preg_match($regexp, $native_msg)) { - $error_code = $code; - break; - } - } - } - return array($error_code, null, $native_msg); - } - - // }}} - // {{{ escape() - - /** - * Quotes a string so it can be safely used in a query. It will quote - * the text so it can safely be used within a query. - * - * @param string the input string to quote - * @param bool escape wildcards - * - * @return string quoted string - * - * @access public - */ - function escape($text, $escape_wildcards = false) - { - if ($escape_wildcards) { - $text = $this->escapePattern($text); - } - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - if (is_resource($connection) && version_compare(PHP_VERSION, '5.2.0RC5', '>=')) { - $text = @pg_escape_string($connection, $text); - } else { - $text = @pg_escape_string($text); - } - return $text; - } - - // }}} - // {{{ beginTransaction() - - /** - * Start a transaction or set a savepoint. - * - * @param string name of a savepoint to set - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function beginTransaction($savepoint = null) - { - $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (null !== $savepoint) { - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'savepoint cannot be released when changes are auto committed', __FUNCTION__); - } - $query = 'SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } - if ($this->in_transaction) { - return MDB2_OK; //nothing to do - } - if (!$this->destructor_registered && $this->opened_persistent) { - $this->destructor_registered = true; - register_shutdown_function('MDB2_closeOpenTransactions'); - } - $result = $this->_doQuery('BEGIN', true); - if (PEAR::isError($result)) { - return $result; - } - $this->in_transaction = true; - return MDB2_OK; - } - - // }}} - // {{{ commit() - - /** - * Commit the database changes done during a transaction that is in - * progress or release a savepoint. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after committing the pending changes. - * - * @param string name of a savepoint to release - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function commit($savepoint = null) - { - $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__); - } - if (null !== $savepoint) { - $query = 'RELEASE SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } - - $result = $this->_doQuery('COMMIT', true); - if (PEAR::isError($result)) { - return $result; - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ rollback() - - /** - * Cancel any database changes done during a transaction or since a specific - * savepoint that is in progress. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after canceling the pending changes. - * - * @param string name of a savepoint to rollback to - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function rollback($savepoint = null) - { - $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'rollback cannot be done changes are auto committed', __FUNCTION__); - } - if (null !== $savepoint) { - $query = 'ROLLBACK TO SAVEPOINT '.$savepoint; - return $this->_doQuery($query, true); - } - - $query = 'ROLLBACK'; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ function setTransactionIsolation() - - /** - * Set the transacton isolation level. - * - * @param string standard isolation level - * READ UNCOMMITTED (allows dirty reads) - * READ COMMITTED (prevents dirty reads) - * REPEATABLE READ (prevents nonrepeatable reads) - * SERIALIZABLE (prevents phantom reads) - * @param array some transaction options: - * 'wait' => 'WAIT' | 'NO WAIT' - * 'rw' => 'READ WRITE' | 'READ ONLY' - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - * @since 2.1.1 - */ - function setTransactionIsolation($isolation, $options = array()) - { - $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true)); - switch ($isolation) { - case 'READ UNCOMMITTED': - case 'READ COMMITTED': - case 'REPEATABLE READ': - case 'SERIALIZABLE': - break; - default: - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'isolation level is not supported: '.$isolation, __FUNCTION__); - } - - $query = "SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL $isolation"; - return $this->_doQuery($query, true); - } - - // }}} - // {{{ _doConnect() - - /** - * Do the grunt work of connecting to the database - * - * @return mixed connection resource on success, MDB2 Error Object on failure - * @access protected - */ - function _doConnect($username, $password, $database_name, $persistent = false) - { - if (!PEAR::loadExtension($this->phptype)) { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__); - } - - if ($database_name == '') { - $database_name = 'template1'; - } - - $protocol = $this->dsn['protocol'] ? $this->dsn['protocol'] : 'tcp'; - - $params = array(''); - if ($protocol == 'tcp') { - if ($this->dsn['hostspec']) { - $params[0].= 'host=' . $this->dsn['hostspec']; - } - if ($this->dsn['port']) { - $params[0].= ' port=' . $this->dsn['port']; - } - } elseif ($protocol == 'unix') { - // Allow for pg socket in non-standard locations. - if ($this->dsn['socket']) { - $params[0].= 'host=' . $this->dsn['socket']; - } - if ($this->dsn['port']) { - $params[0].= ' port=' . $this->dsn['port']; - } - } - if ($database_name) { - $params[0].= ' dbname=\'' . addslashes($database_name) . '\''; - } - if ($username) { - $params[0].= ' user=\'' . addslashes($username) . '\''; - } - if ($password) { - $params[0].= ' password=\'' . addslashes($password) . '\''; - } - if (!empty($this->dsn['options'])) { - $params[0].= ' options=' . $this->dsn['options']; - } - if (!empty($this->dsn['tty'])) { - $params[0].= ' tty=' . $this->dsn['tty']; - } - if (!empty($this->dsn['connect_timeout'])) { - $params[0].= ' connect_timeout=' . $this->dsn['connect_timeout']; - } - if (!empty($this->dsn['sslmode'])) { - $params[0].= ' sslmode=' . $this->dsn['sslmode']; - } - if (!empty($this->dsn['service'])) { - $params[0].= ' service=' . $this->dsn['service']; - } - - if ($this->_isNewLinkSet()) { - if (version_compare(phpversion(), '4.3.0', '>=')) { - $params[] = PGSQL_CONNECT_FORCE_NEW; - } - } - - $connect_function = $persistent ? 'pg_pconnect' : 'pg_connect'; - $connection = @call_user_func_array($connect_function, $params); - if (!$connection) { - return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null, - 'unable to establish a connection', __FUNCTION__); - } - - if (empty($this->dsn['disable_iso_date'])) { - if (!@pg_query($connection, "SET SESSION DATESTYLE = 'ISO'")) { - return $this->raiseError(null, null, null, - 'Unable to set date style to iso', __FUNCTION__); - } - } - - if (!empty($this->dsn['charset'])) { - $result = $this->setCharset($this->dsn['charset'], $connection); - if (PEAR::isError($result)) { - return $result; - } - } - - // Enable extra compatibility settings on 8.2 and later - if (function_exists('pg_parameter_status')) { - $version = pg_parameter_status($connection, 'server_version'); - if ($version == false) { - return $this->raiseError(null, null, null, - 'Unable to retrieve server version', __FUNCTION__); - } - $version = explode ('.', $version); - if ( $version['0'] > 8 - || ($version['0'] == 8 && $version['1'] >= 2) - ) { - if (!@pg_query($connection, "SET SESSION STANDARD_CONFORMING_STRINGS = OFF")) { - return $this->raiseError(null, null, null, - 'Unable to set standard_conforming_strings to off', __FUNCTION__); - } - - if (!@pg_query($connection, "SET SESSION ESCAPE_STRING_WARNING = OFF")) { - return $this->raiseError(null, null, null, - 'Unable to set escape_string_warning to off', __FUNCTION__); - } - } - } - - return $connection; - } - - // }}} - // {{{ connect() - - /** - * Connect to the database - * - * @return true on success, MDB2 Error Object on failure - * @access public - */ - function connect() - { - if (is_resource($this->connection)) { - //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0 - if (MDB2::areEquals($this->connected_dsn, $this->dsn) - && $this->connected_database_name == $this->database_name - && ($this->opened_persistent == $this->options['persistent']) - ) { - return MDB2_OK; - } - $this->disconnect(false); - } - - if ($this->database_name) { - $connection = $this->_doConnect($this->dsn['username'], - $this->dsn['password'], - $this->database_name, - $this->options['persistent']); - if (PEAR::isError($connection)) { - return $connection; - } - - $this->connection = $connection; - $this->connected_dsn = $this->dsn; - $this->connected_database_name = $this->database_name; - $this->opened_persistent = $this->options['persistent']; - $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype; - } - - return MDB2_OK; - } - - // }}} - // {{{ setCharset() - - /** - * Set the charset on the current connection - * - * @param string charset - * @param resource connection handle - * - * @return true on success, MDB2 Error Object on failure - */ - function setCharset($charset, $connection = null) - { - if (null === $connection) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - if (is_array($charset)) { - $charset = array_shift($charset); - $this->warnings[] = 'postgresql does not support setting client collation'; - } - $result = @pg_set_client_encoding($connection, $charset); - if ($result == -1) { - return $this->raiseError(null, null, null, - 'Unable to set client charset: '.$charset, __FUNCTION__); - } - return MDB2_OK; - } - - // }}} - // {{{ databaseExists() - - /** - * check if given database name is exists? - * - * @param string $name name of the database that should be checked - * - * @return mixed true/false on success, a MDB2 error on failure - * @access public - */ - function databaseExists($name) - { - $res = $this->_doConnect($this->dsn['username'], - $this->dsn['password'], - $this->escape($name), - $this->options['persistent']); - if (!PEAR::isError($res)) { - return true; - } - - return false; - } - - // }}} - // {{{ disconnect() - - /** - * Log out and disconnect from the database. - * - * @param boolean $force if the disconnect should be forced even if the - * connection is opened persistently - * @return mixed true on success, false if not connected and error - * object on error - * @access public - */ - function disconnect($force = true) - { - if (is_resource($this->connection)) { - if ($this->in_transaction) { - $dsn = $this->dsn; - $database_name = $this->database_name; - $persistent = $this->options['persistent']; - $this->dsn = $this->connected_dsn; - $this->database_name = $this->connected_database_name; - $this->options['persistent'] = $this->opened_persistent; - $this->rollback(); - $this->dsn = $dsn; - $this->database_name = $database_name; - $this->options['persistent'] = $persistent; - } - - if (!$this->opened_persistent || $force) { - $ok = @pg_close($this->connection); - if (!$ok) { - return $this->raiseError(MDB2_ERROR_DISCONNECT_FAILED, - null, null, null, __FUNCTION__); - } - } - } else { - return false; - } - return parent::disconnect($force); - } - - // }}} - // {{{ standaloneQuery() - - /** - * execute a query as DBA - * - * @param string $query the SQL query - * @param mixed $types array that contains the types of the columns in - * the result set - * @param boolean $is_manip if the query is a manipulation query - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function standaloneQuery($query, $types = null, $is_manip = false) - { - $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username']; - $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password']; - $connection = $this->_doConnect($user, $pass, $this->database_name, $this->options['persistent']); - if (PEAR::isError($connection)) { - return $connection; - } - - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $query = $this->_modifyQuery($query, $is_manip, $limit, $offset); - - $result = $this->_doQuery($query, $is_manip, $connection, $this->database_name); - if (!PEAR::isError($result)) { - if ($is_manip) { - $result = $this->_affectedRows($connection, $result); - } else { - $result = $this->_wrapResult($result, $types, true, true, $limit, $offset); - } - } - - @pg_close($connection); - return $result; - } - - // }}} - // {{{ _doQuery() - - /** - * Execute a query - * @param string $query query - * @param boolean $is_manip if the query is a manipulation query - * @param resource $connection - * @param string $database_name - * @return result or error object - * @access protected - */ - function _doQuery($query, $is_manip = false, $connection = null, $database_name = null) - { - $this->last_query = $query; - $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (PEAR::isError($result)) { - return $result; - } - $query = $result; - } - if ($this->options['disable_query']) { - $result = $is_manip ? 0 : null; - return $result; - } - - if (null === $connection) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - - $function = $this->options['multi_query'] ? 'pg_send_query' : 'pg_query'; - $result = @$function($connection, $query); - if (!$result) { - $err = $this->raiseError(null, null, null, - 'Could not execute statement', __FUNCTION__); - return $err; - } elseif ($this->options['multi_query']) { - if (!($result = @pg_get_result($connection))) { - $err = $this->raiseError(null, null, null, - 'Could not get the first result from a multi query', __FUNCTION__); - return $err; - } - } - - $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result)); - return $result; - } - - // }}} - // {{{ _affectedRows() - - /** - * Returns the number of rows affected - * - * @param resource $result - * @param resource $connection - * @return mixed MDB2 Error Object or the number of rows affected - * @access private - */ - function _affectedRows($connection, $result = null) - { - if (null === $connection) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - return @pg_affected_rows($result); - } - - // }}} - // {{{ _modifyQuery() - - /** - * Changes a query string for various DBMS specific reasons - * - * @param string $query query to modify - * @param boolean $is_manip if it is a DML query - * @param integer $limit limit the number of rows - * @param integer $offset start reading from given offset - * @return string modified query - * @access protected - */ - function _modifyQuery($query, $is_manip, $limit, $offset) - { - if ($limit > 0 - && !preg_match('/LIMIT\s*\d(?:\s*(?:,|OFFSET)\s*\d+)?(?:[^\)]*)?$/i', $query) - ) { - $query = rtrim($query); - if (substr($query, -1) == ';') { - $query = substr($query, 0, -1); - } - if ($is_manip) { - $query = $this->_modifyManipQuery($query, $limit); - } else { - $query.= " LIMIT $limit OFFSET $offset"; - } - } - return $query; - } - - // }}} - // {{{ _modifyManipQuery() - - /** - * Changes a manip query string for various DBMS specific reasons - * - * @param string $query query to modify - * @param integer $limit limit the number of rows - * @return string modified query - * @access protected - */ - function _modifyManipQuery($query, $limit) - { - $pos = strpos(strtolower($query), 'where'); - $where = $pos ? substr($query, $pos) : ''; - - $manip_clause = '(\bDELETE\b\s+(?:\*\s+)?\bFROM\b|\bUPDATE\b)'; - $from_clause = '([\w\.]+)'; - $where_clause = '(?:(.*)\bWHERE\b\s+(.*))|(.*)'; - $pattern = '/^'. $manip_clause . '\s+' . $from_clause .'(?:\s)*(?:'. $where_clause .')?$/i'; - $matches = preg_match($pattern, $query, $match); - if ($matches) { - $manip = $match[1]; - $from = $match[2]; - $what = (count($matches) == 6) ? $match[5] : $match[3]; - return $manip.' '.$from.' '.$what.' WHERE ctid=(SELECT ctid FROM '.$from.' '.$where.' LIMIT '.$limit.')'; - } - //return error? - return $query; - } - - // }}} - // {{{ getServerVersion() - - /** - * return version information about the server - * - * @param bool $native determines if the raw version string should be returned - * @return mixed array/string with version information or MDB2 error object - * @access public - */ - function getServerVersion($native = false) - { - $query = 'SHOW SERVER_VERSION'; - if ($this->connected_server_info) { - $server_info = $this->connected_server_info; - } else { - $server_info = $this->queryOne($query, 'text'); - if (PEAR::isError($server_info)) { - return $server_info; - } - } - // cache server_info - $this->connected_server_info = $server_info; - if (!$native && !PEAR::isError($server_info)) { - $tmp = explode('.', $server_info, 3); - if (empty($tmp[2]) - && isset($tmp[1]) - && preg_match('/(\d+)(.*)/', $tmp[1], $tmp2) - ) { - $server_info = array( - 'major' => $tmp[0], - 'minor' => $tmp2[1], - 'patch' => null, - 'extra' => $tmp2[2], - 'native' => $server_info, - ); - } else { - $server_info = array( - 'major' => isset($tmp[0]) ? $tmp[0] : null, - 'minor' => isset($tmp[1]) ? $tmp[1] : null, - 'patch' => isset($tmp[2]) ? $tmp[2] : null, - 'extra' => null, - 'native' => $server_info, - ); - } - } - return $server_info; - } - - // }}} - // {{{ prepare() - - /** - * Prepares a query for multiple execution with execute(). - * With some database backends, this is emulated. - * prepare() requires a generic query as string like - * 'INSERT INTO numbers VALUES(?,?)' or - * 'INSERT INTO numbers VALUES(:foo,:bar)'. - * The ? and :name and are placeholders which can be set using - * bindParam() and the query can be sent off using the execute() method. - * The allowed format for :name can be set with the 'bindname_format' option. - * - * @param string $query the query to prepare - * @param mixed $types array that contains the types of the placeholders - * @param mixed $result_types array that contains the types of the columns in - * the result set or MDB2_PREPARE_RESULT, if set to - * MDB2_PREPARE_MANIP the query is handled as a manipulation query - * @param mixed $lobs key (field) value (parameter) pair for all lob placeholders - * @return mixed resource handle for the prepared query on success, a MDB2 - * error on failure - * @access public - * @see bindParam, execute - */ - function prepare($query, $types = null, $result_types = null, $lobs = array()) - { - if ($this->options['emulate_prepared']) { - return parent::prepare($query, $types, $result_types, $lobs); - } - $is_manip = ($result_types === MDB2_PREPARE_MANIP); - $offset = $this->offset; - $limit = $this->limit; - $this->offset = $this->limit = 0; - $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (PEAR::isError($result)) { - return $result; - } - $query = $result; - } - $pgtypes = function_exists('pg_prepare') ? false : array(); - if ($pgtypes !== false && !empty($types)) { - $this->loadModule('Datatype', null, true); - } - $query = $this->_modifyQuery($query, $is_manip, $limit, $offset); - $placeholder_type_guess = $placeholder_type = null; - $question = '?'; - $colon = ':'; - $positions = array(); - $position = $parameter = 0; - while ($position < strlen($query)) { - $q_position = strpos($query, $question, $position); - $c_position = strpos($query, $colon, $position); - //skip "::type" cast ("select id::varchar(20) from sometable where name=?") - $doublecolon_position = strpos($query, '::', $position); - if ($doublecolon_position !== false && $doublecolon_position == $c_position) { - $c_position = strpos($query, $colon, $position+2); - } - if ($q_position && $c_position) { - $p_position = min($q_position, $c_position); - } elseif ($q_position) { - $p_position = $q_position; - } elseif ($c_position) { - $p_position = $c_position; - } else { - break; - } - if (null === $placeholder_type) { - $placeholder_type_guess = $query[$p_position]; - } - - $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position); - if (PEAR::isError($new_pos)) { - return $new_pos; - } - if ($new_pos != $position) { - $position = $new_pos; - continue; //evaluate again starting from the new position - } - - if ($query[$position] == $placeholder_type_guess) { - if (null === $placeholder_type) { - $placeholder_type = $query[$p_position]; - $question = $colon = $placeholder_type; - if (!empty($types) && is_array($types)) { - if ($placeholder_type == ':') { - } else { - $types = array_values($types); - } - } - } - if ($placeholder_type_guess == '?') { - $length = 1; - $name = $parameter; - } else { - $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s'; - $param = preg_replace($regexp, '\\1', $query); - if ($param === '') { - $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null, - 'named parameter name must match "bindname_format" option', __FUNCTION__); - return $err; - } - $length = strlen($param) + 1; - $name = $param; - } - if ($pgtypes !== false) { - if (is_array($types) && array_key_exists($name, $types)) { - $pgtypes[] = $this->datatype->mapPrepareDatatype($types[$name]); - } elseif (is_array($types) && array_key_exists($parameter, $types)) { - $pgtypes[] = $this->datatype->mapPrepareDatatype($types[$parameter]); - } else { - $pgtypes[] = 'text'; - } - } - if (($key_parameter = array_search($name, $positions)) !== false) { - //$next_parameter = 1; - $parameter = $key_parameter + 1; - //foreach ($positions as $key => $value) { - // if ($key_parameter == $key) { - // break; - // } - // ++$next_parameter; - //} - } else { - ++$parameter; - //$next_parameter = $parameter; - $positions[] = $name; - } - $query = substr_replace($query, '$'.$parameter, $position, $length); - $position = $p_position + strlen($parameter); - } else { - $position = $p_position; - } - } - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - static $prep_statement_counter = 1; - $statement_name = sprintf($this->options['statement_format'], $this->phptype, $prep_statement_counter++ . sha1(microtime() + mt_rand())); - $statement_name = substr(strtolower($statement_name), 0, $this->options['max_identifiers_length']); - if (false === $pgtypes) { - $result = @pg_prepare($connection, $statement_name, $query); - if (!$result) { - $err = $this->raiseError(null, null, null, - 'Unable to create prepared statement handle', __FUNCTION__); - return $err; - } - } else { - $types_string = ''; - if ($pgtypes) { - $types_string = ' ('.implode(', ', $pgtypes).') '; - } - $query = 'PREPARE '.$statement_name.$types_string.' AS '.$query; - $statement = $this->_doQuery($query, true, $connection); - if (PEAR::isError($statement)) { - return $statement; - } - } - - $class_name = 'MDB2_Statement_'.$this->phptype; - $obj = new $class_name($this, $statement_name, $positions, $query, $types, $result_types, $is_manip, $limit, $offset); - $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj)); - return $obj; - } - - // }}} - // {{{ function getSequenceName($sqn) - - /** - * adds sequence name formatting to a sequence name - * - * @param string name of the sequence - * - * @return string formatted sequence name - * - * @access public - */ - function getSequenceName($sqn) - { - if (false === $this->options['disable_smart_seqname']) { - if (strpos($sqn, '_') !== false) { - list($table, $field) = explode('_', $sqn, 2); - } - $schema_list = $this->queryOne("SELECT array_to_string(current_schemas(false), ',')"); - if (PEAR::isError($schema_list) || empty($schema_list) || count($schema_list) < 2) { - $order_by = ' a.attnum'; - $schema_clause = ' AND n.nspname=current_schema()'; - } else { - $schemas = explode(',', $schema_list); - $schema_clause = ' AND n.nspname IN ('.$schema_list.')'; - $counter = 1; - $order_by = ' CASE '; - foreach ($schemas as $schema) { - $order_by .= ' WHEN n.nspname='.$schema.' THEN '.$counter++; - } - $order_by .= ' ELSE '.$counter.' END, a.attnum'; - } - - $query = "SELECT substring((SELECT substring(pg_get_expr(d.adbin, d.adrelid) for 128) - FROM pg_attrdef d - WHERE d.adrelid = a.attrelid - AND d.adnum = a.attnum - AND a.atthasdef - ) FROM 'nextval[^'']*''([^'']*)') - FROM pg_attribute a - LEFT JOIN pg_class c ON c.oid = a.attrelid - LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef - LEFT JOIN pg_namespace n ON c.relnamespace = n.oid - WHERE (c.relname = ".$this->quote($sqn, 'text'); - if (!empty($field)) { - $query .= " OR (c.relname = ".$this->quote($table, 'text')." AND a.attname = ".$this->quote($field, 'text').")"; - } - $query .= " )" - .$schema_clause." - AND NOT a.attisdropped - AND a.attnum > 0 - AND pg_get_expr(d.adbin, d.adrelid) LIKE 'nextval%' - ORDER BY ".$order_by; - $seqname = $this->queryOne($query); - if (!PEAR::isError($seqname) && !empty($seqname) && is_string($seqname)) { - return $seqname; - } - } - - return parent::getSequenceName($sqn); - } - - // }}} - // {{{ nextID() - - /** - * Returns the next free id of a sequence - * - * @param string $seq_name name of the sequence - * @param boolean $ondemand when true the sequence is - * automatic created, if it - * not exists - * @return mixed MDB2 Error Object or id - * @access public - */ - function nextID($seq_name, $ondemand = true) - { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true); - $query = "SELECT NEXTVAL('$sequence_name')"; - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $this->expectError(MDB2_ERROR_NOSUCHTABLE); - $result = $this->queryOne($query, 'integer'); - $this->popExpect(); - $this->popErrorHandling(); - if (PEAR::isError($result)) { - if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) { - $this->loadModule('Manager', null, true); - $result = $this->manager->createSequence($seq_name); - if (PEAR::isError($result)) { - return $this->raiseError($result, null, null, - 'on demand sequence could not be created', __FUNCTION__); - } - return $this->nextId($seq_name, false); - } - } - return $result; - } - - // }}} - // {{{ lastInsertID() - - /** - * Returns the autoincrement ID if supported or $id or fetches the current - * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field) - * - * @param string $table name of the table into which a new row was inserted - * @param string $field name of the field into which a new row was inserted - * @return mixed MDB2 Error Object or id - * @access public - */ - function lastInsertID($table = null, $field = null) - { - if (empty($table) && empty($field)) { - return $this->queryOne('SELECT lastval()', 'integer'); - } - $seq = $table.(empty($field) ? '' : '_'.$field); - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq), true); - return $this->queryOne("SELECT currval('$sequence_name')", 'integer'); - } - - // }}} - // {{{ currID() - - /** - * Returns the current id of a sequence - * - * @param string $seq_name name of the sequence - * @return mixed MDB2 Error Object or id - * @access public - */ - function currID($seq_name) - { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true); - return $this->queryOne("SELECT last_value FROM $sequence_name", 'integer'); - } -} - -/** - * MDB2 PostGreSQL result driver - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_Result_pgsql extends MDB2_Result_Common -{ - // }}} - // {{{ fetchRow() - - /** - * Fetch a row and insert the data into an existing array. - * - * @param int $fetchmode how the array data should be indexed - * @param int $rownum number of the row where the data can be found - * @return int data array on success, a MDB2 error on failure - * @access public - */ - function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null) - { - if (null !== $rownum) { - $seek = $this->seek($rownum); - if (PEAR::isError($seek)) { - return $seek; - } - } - if ($fetchmode == MDB2_FETCHMODE_DEFAULT) { - $fetchmode = $this->db->fetchmode; - } - if ( $fetchmode == MDB2_FETCHMODE_ASSOC - || $fetchmode == MDB2_FETCHMODE_OBJECT - ) { - $row = @pg_fetch_array($this->result, null, PGSQL_ASSOC); - if (is_array($row) - && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE - ) { - $row = array_change_key_case($row, $this->db->options['field_case']); - } - } else { - $row = @pg_fetch_row($this->result); - } - if (!$row) { - if (false === $this->result) { - $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - return $err; - } - return null; - } - $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL; - $rtrim = false; - if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) { - if (empty($this->types)) { - $mode += MDB2_PORTABILITY_RTRIM; - } else { - $rtrim = true; - } - } - if ($mode) { - $this->db->_fixResultArrayValues($row, $mode); - } - if ( ( $fetchmode != MDB2_FETCHMODE_ASSOC - && $fetchmode != MDB2_FETCHMODE_OBJECT) - && !empty($this->types) - ) { - $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim); - } elseif (($fetchmode == MDB2_FETCHMODE_ASSOC - || $fetchmode == MDB2_FETCHMODE_OBJECT) - && !empty($this->types_assoc) - ) { - $row = $this->db->datatype->convertResultRow($this->types_assoc, $row, $rtrim); - } - if (!empty($this->values)) { - $this->_assignBindColumns($row); - } - if ($fetchmode === MDB2_FETCHMODE_OBJECT) { - $object_class = $this->db->options['fetch_class']; - if ($object_class == 'stdClass') { - $row = (object) $row; - } else { - $rowObj = new $object_class($row); - $row = $rowObj; - } - } - ++$this->rownum; - return $row; - } - - // }}} - // {{{ _getColumnNames() - - /** - * Retrieve the names of columns returned by the DBMS in a query result. - * - * @return mixed Array variable that holds the names of columns as keys - * or an MDB2 error on failure. - * Some DBMS may not return any columns when the result set - * does not contain any rows. - * @access private - */ - function _getColumnNames() - { - $columns = array(); - $numcols = $this->numCols(); - if (PEAR::isError($numcols)) { - return $numcols; - } - for ($column = 0; $column < $numcols; $column++) { - $column_name = @pg_field_name($this->result, $column); - $columns[$column_name] = $column; - } - if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $columns = array_change_key_case($columns, $this->db->options['field_case']); - } - return $columns; - } - - // }}} - // {{{ numCols() - - /** - * Count the number of columns returned by the DBMS in a query result. - * - * @access public - * @return mixed integer value with the number of columns, a MDB2 error - * on failure - */ - function numCols() - { - $cols = @pg_num_fields($this->result); - if (null === $cols) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return count($this->types); - } - return $this->db->raiseError(null, null, null, - 'Could not get column count', __FUNCTION__); - } - return $cols; - } - - // }}} - // {{{ nextResult() - - /** - * Move the internal result pointer to the next available result - * - * @return true on success, false if there is no more result set or an error object on failure - * @access public - */ - function nextResult() - { - $connection = $this->db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - if (!($this->result = @pg_get_result($connection))) { - return false; - } - return MDB2_OK; - } - - // }}} - // {{{ free() - - /** - * Free the internal resources associated with result. - * - * @return boolean true on success, false if result is invalid - * @access public - */ - function free() - { - if (is_resource($this->result) && $this->db->connection) { - $free = @pg_free_result($this->result); - if (false === $free) { - return $this->db->raiseError(null, null, null, - 'Could not free result', __FUNCTION__); - } - } - $this->result = false; - return MDB2_OK; - } -} - -/** - * MDB2 PostGreSQL buffered result driver - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_BufferedResult_pgsql extends MDB2_Result_pgsql -{ - // {{{ seek() - - /** - * Seek to a specific row in a result set - * - * @param int $rownum number of the row where the data can be found - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function seek($rownum = 0) - { - if ($this->rownum != ($rownum - 1) && !@pg_result_seek($this->result, $rownum)) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return MDB2_OK; - } - return $this->db->raiseError(MDB2_ERROR_INVALID, null, null, - 'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__); - } - $this->rownum = $rownum - 1; - return MDB2_OK; - } - - // }}} - // {{{ valid() - - /** - * Check if the end of the result set has been reached - * - * @return mixed true or false on sucess, a MDB2 error on failure - * @access public - */ - function valid() - { - $numrows = $this->numRows(); - if (PEAR::isError($numrows)) { - return $numrows; - } - return $this->rownum < ($numrows - 1); - } - - // }}} - // {{{ numRows() - - /** - * Returns the number of rows in a result object - * - * @return mixed MDB2 Error Object or the number of rows - * @access public - */ - function numRows() - { - $rows = @pg_num_rows($this->result); - if (null === $rows) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return 0; - } - return $this->db->raiseError(null, null, null, - 'Could not get row count', __FUNCTION__); - } - return $rows; - } -} - -/** - * MDB2 PostGreSQL statement driver - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_Statement_pgsql extends MDB2_Statement_Common -{ - // {{{ _execute() - - /** - * Execute a prepared query statement helper method. - * - * @param mixed $result_class string which specifies which result class to use - * @param mixed $result_wrap_class string which specifies which class to wrap results in - * - * @return mixed MDB2_Result or integer (affected rows) on success, - * a MDB2 error on failure - * @access private - */ - function _execute($result_class = true, $result_wrap_class = true) - { - if (null === $this->statement) { - return parent::_execute($result_class, $result_wrap_class); - } - $this->db->last_query = $this->query; - $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'pre', 'parameters' => $this->values)); - if ($this->db->getOption('disable_query')) { - $result = $this->is_manip ? 0 : null; - return $result; - } - - $connection = $this->db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - $query = false; - $parameters = array(); - // todo: disabled until pg_execute() bytea issues are cleared up - if (true || !function_exists('pg_execute')) { - $query = 'EXECUTE '.$this->statement; - } - if (!empty($this->positions)) { - foreach ($this->positions as $parameter) { - if (!array_key_exists($parameter, $this->values)) { - return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__); - } - $value = $this->values[$parameter]; - $type = array_key_exists($parameter, $this->types) ? $this->types[$parameter] : null; - if (is_resource($value) || $type == 'clob' || $type == 'blob' || $this->db->options['lob_allow_url_include']) { - if (!is_resource($value) && preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) { - if ($match[1] == 'file://') { - $value = $match[2]; - } - $value = @fopen($value, 'r'); - $close = true; - } - if (is_resource($value)) { - $data = ''; - while (!@feof($value)) { - $data.= @fread($value, $this->db->options['lob_buffer_length']); - } - if ($close) { - @fclose($value); - } - $value = $data; - } - } - $quoted = $this->db->quote($value, $type, $query); - if (PEAR::isError($quoted)) { - return $quoted; - } - $parameters[] = $quoted; - } - if ($query) { - $query.= ' ('.implode(', ', $parameters).')'; - } - } - - if (!$query) { - $result = @pg_execute($connection, $this->statement, $parameters); - if (!$result) { - $err = $this->db->raiseError(null, null, null, - 'Unable to execute statement', __FUNCTION__); - return $err; - } - } else { - $result = $this->db->_doQuery($query, $this->is_manip, $connection); - if (PEAR::isError($result)) { - return $result; - } - } - - if ($this->is_manip) { - $affected_rows = $this->db->_affectedRows($connection, $result); - return $affected_rows; - } - - $result = $this->db->_wrapResult($result, $this->result_types, - $result_class, $result_wrap_class, $this->limit, $this->offset); - $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'post', 'result' => $result)); - return $result; - } - - // }}} - // {{{ free() - - /** - * Release resources allocated for the specified prepared query. - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function free() - { - if (null === $this->positions) { - return $this->db->raiseError(MDB2_ERROR, null, null, - 'Prepared statement has already been freed', __FUNCTION__); - } - $result = MDB2_OK; - - if (null !== $this->statement) { - $connection = $this->db->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - $query = 'DEALLOCATE PREPARE '.$this->statement; - $result = $this->db->_doQuery($query, true, $connection); - } - - parent::free(); - return $result; - } - - /** - * drop an existing table - * - * @param string $name name of the table that should be dropped - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function dropTable($name) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $name = $db->quoteIdentifier($name, true); - $result = $db->exec("DROP TABLE $name"); - - if (PEAR::isError($result)) { - $result = $db->exec("DROP TABLE $name CASCADE"); - } - - return $result; - } -} -?> diff --git a/3rdparty/MDB2/Driver/sqlite.php b/3rdparty/MDB2/Driver/sqlite.php deleted file mode 100644 index 42363bb8c58cbe0eed5813aea5bc047182c67db2..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Driver/sqlite.php +++ /dev/null @@ -1,1104 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -/** - * MDB2 SQLite driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_sqlite extends MDB2_Driver_Common -{ - // {{{ properties - var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => "'", 'escape_pattern' => false); - - var $identifier_quoting = array('start' => '"', 'end' => '"', 'escape' => '"'); - - var $_lasterror = ''; - - var $fix_assoc_fields_names = false; - - // }}} - // {{{ constructor - - /** - * Constructor - */ - function __construct() - { - parent::__construct(); - - $this->phptype = 'sqlite'; - $this->dbsyntax = 'sqlite'; - - $this->supported['sequences'] = 'emulated'; - $this->supported['indexes'] = true; - $this->supported['affected_rows'] = true; - $this->supported['summary_functions'] = true; - $this->supported['order_by_text'] = true; - $this->supported['current_id'] = 'emulated'; - $this->supported['limit_queries'] = true; - $this->supported['LOBs'] = true; - $this->supported['replace'] = true; - $this->supported['transactions'] = true; - $this->supported['savepoints'] = false; - $this->supported['sub_selects'] = true; - $this->supported['triggers'] = true; - $this->supported['auto_increment'] = true; - $this->supported['primary_key'] = false; // requires alter table implementation - $this->supported['result_introspection'] = false; // not implemented - $this->supported['prepared_statements'] = 'emulated'; - $this->supported['identifier_quoting'] = true; - $this->supported['pattern_escaping'] = false; - $this->supported['new_link'] = false; - - $this->options['DBA_username'] = false; - $this->options['DBA_password'] = false; - $this->options['base_transaction_name'] = '___php_MDB2_sqlite_auto_commit_off'; - $this->options['fixed_float'] = 0; - $this->options['database_path'] = ''; - $this->options['database_extension'] = ''; - $this->options['server_version'] = ''; - $this->options['max_identifiers_length'] = 128; //no real limit - } - - // }}} - // {{{ errorInfo() - - /** - * This method is used to collect information about an error - * - * @param integer $error - * @return array - * @access public - */ - function errorInfo($error = null) - { - $native_code = null; - if ($this->connection) { - $native_code = @sqlite_last_error($this->connection); - } - $native_msg = $this->_lasterror - ? html_entity_decode($this->_lasterror) : @sqlite_error_string($native_code); - - // PHP 5.2+ prepends the function name to $php_errormsg, so we need - // this hack to work around it, per bug #9599. - $native_msg = preg_replace('/^sqlite[a-z_]+\(\)[^:]*: /', '', $native_msg); - - if (null === $error) { - static $error_regexps; - if (empty($error_regexps)) { - $error_regexps = array( - '/^no such table:/' => MDB2_ERROR_NOSUCHTABLE, - '/^no such index:/' => MDB2_ERROR_NOT_FOUND, - '/^(table|index) .* already exists$/' => MDB2_ERROR_ALREADY_EXISTS, - '/PRIMARY KEY must be unique/i' => MDB2_ERROR_CONSTRAINT, - '/is not unique/' => MDB2_ERROR_CONSTRAINT, - '/columns .* are not unique/i' => MDB2_ERROR_CONSTRAINT, - '/uniqueness constraint failed/' => MDB2_ERROR_CONSTRAINT, - '/violates .*constraint/' => MDB2_ERROR_CONSTRAINT, - '/may not be NULL/' => MDB2_ERROR_CONSTRAINT_NOT_NULL, - '/^no such column:/' => MDB2_ERROR_NOSUCHFIELD, - '/no column named/' => MDB2_ERROR_NOSUCHFIELD, - '/column not present in both tables/i' => MDB2_ERROR_NOSUCHFIELD, - '/^near ".*": syntax error$/' => MDB2_ERROR_SYNTAX, - '/[0-9]+ values for [0-9]+ columns/i' => MDB2_ERROR_VALUE_COUNT_ON_ROW, - ); - } - foreach ($error_regexps as $regexp => $code) { - if (preg_match($regexp, $native_msg)) { - $error = $code; - break; - } - } - } - return array($error, $native_code, $native_msg); - } - - // }}} - // {{{ escape() - - /** - * Quotes a string so it can be safely used in a query. It will quote - * the text so it can safely be used within a query. - * - * @param string the input string to quote - * @param bool escape wildcards - * - * @return string quoted string - * - * @access public - */ - function escape($text, $escape_wildcards = false) - { - $text = @sqlite_escape_string($text); - return $text; - } - - // }}} - // {{{ beginTransaction() - - /** - * Start a transaction or set a savepoint. - * - * @param string name of a savepoint to set - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function beginTransaction($savepoint = null) - { - $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (null !== $savepoint) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'savepoints are not supported', __FUNCTION__); - } - if ($this->in_transaction) { - return MDB2_OK; //nothing to do - } - if (!$this->destructor_registered && $this->opened_persistent) { - $this->destructor_registered = true; - register_shutdown_function('MDB2_closeOpenTransactions'); - } - $query = 'BEGIN TRANSACTION '.$this->options['base_transaction_name']; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - $this->in_transaction = true; - return MDB2_OK; - } - - // }}} - // {{{ commit() - - /** - * Commit the database changes done during a transaction that is in - * progress or release a savepoint. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after committing the pending changes. - * - * @param string name of a savepoint to release - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function commit($savepoint = null) - { - $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__); - } - if (null !== $savepoint) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'savepoints are not supported', __FUNCTION__); - } - - $query = 'COMMIT TRANSACTION '.$this->options['base_transaction_name']; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ - - /** - * Cancel any database changes done during a transaction or since a specific - * savepoint that is in progress. This function may only be called when - * auto-committing is disabled, otherwise it will fail. Therefore, a new - * transaction is implicitly started after canceling the pending changes. - * - * @param string name of a savepoint to rollback to - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - */ - function rollback($savepoint = null) - { - $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint)); - if (!$this->in_transaction) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'rollback cannot be done changes are auto committed', __FUNCTION__); - } - if (null !== $savepoint) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'savepoints are not supported', __FUNCTION__); - } - - $query = 'ROLLBACK TRANSACTION '.$this->options['base_transaction_name']; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - return $result; - } - $this->in_transaction = false; - return MDB2_OK; - } - - // }}} - // {{{ function setTransactionIsolation() - - /** - * Set the transacton isolation level. - * - * @param string standard isolation level - * READ UNCOMMITTED (allows dirty reads) - * READ COMMITTED (prevents dirty reads) - * REPEATABLE READ (prevents nonrepeatable reads) - * SERIALIZABLE (prevents phantom reads) - * @param array some transaction options: - * 'wait' => 'WAIT' | 'NO WAIT' - * 'rw' => 'READ WRITE' | 'READ ONLY' - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - * - * @access public - * @since 2.1.1 - */ - function setTransactionIsolation($isolation, $options = array()) - { - $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true)); - switch ($isolation) { - case 'READ UNCOMMITTED': - $isolation = 0; - break; - case 'READ COMMITTED': - case 'REPEATABLE READ': - case 'SERIALIZABLE': - $isolation = 1; - break; - default: - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'isolation level is not supported: '.$isolation, __FUNCTION__); - } - - $query = "PRAGMA read_uncommitted=$isolation"; - return $this->_doQuery($query, true); - } - - // }}} - // {{{ getDatabaseFile() - - /** - * Builds the string with path+dbname+extension - * - * @return string full database path+file - * @access protected - */ - function _getDatabaseFile($database_name) - { - if ($database_name === '' || $database_name === ':memory:') { - return $database_name; - } - return $this->options['database_path'].$database_name.$this->options['database_extension']; - } - - // }}} - // {{{ connect() - - /** - * Connect to the database - * - * @return true on success, MDB2 Error Object on failure - **/ - function connect() - { - $database_file = $this->_getDatabaseFile($this->database_name); - if (is_resource($this->connection)) { - //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0 - if (MDB2::areEquals($this->connected_dsn, $this->dsn) - && $this->connected_database_name == $database_file - && $this->opened_persistent == $this->options['persistent'] - ) { - return MDB2_OK; - } - $this->disconnect(false); - } - - if (!PEAR::loadExtension($this->phptype)) { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__); - } - - if (empty($this->database_name)) { - return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null, - 'unable to establish a connection', __FUNCTION__); - } - - if ($database_file !== ':memory:') { - if (!file_exists($database_file)) { - if (!touch($database_file)) { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Could not create database file', __FUNCTION__); - } - if (!isset($this->dsn['mode']) - || !is_numeric($this->dsn['mode']) - ) { - $mode = 0644; - } else { - $mode = octdec($this->dsn['mode']); - } - if (!chmod($database_file, $mode)) { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Could not be chmodded database file', __FUNCTION__); - } - if (!file_exists($database_file)) { - return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, - 'Could not be found database file', __FUNCTION__); - } - } - if (!is_file($database_file)) { - return $this->raiseError(MDB2_ERROR_INVALID, null, null, - 'Database is a directory name', __FUNCTION__); - } - if (!is_readable($database_file)) { - return $this->raiseError(MDB2_ERROR_ACCESS_VIOLATION, null, null, - 'Could not read database file', __FUNCTION__); - } - } - - $connect_function = ($this->options['persistent'] ? 'sqlite_popen' : 'sqlite_open'); - $php_errormsg = ''; - if (version_compare('5.1.0', PHP_VERSION, '>')) { - @ini_set('track_errors', true); - $connection = @$connect_function($database_file); - @ini_restore('track_errors'); - } else { - $connection = @$connect_function($database_file, 0666, $php_errormsg); - } - $this->_lasterror = $php_errormsg; - if (!$connection) { - return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null, - 'unable to establish a connection', __FUNCTION__); - } - - if ($this->fix_assoc_fields_names || - $this->options['portability'] & MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES) - { - @sqlite_query("PRAGMA short_column_names = 1", $connection); - $this->fix_assoc_fields_names = true; - } - - $this->connection = $connection; - $this->connected_dsn = $this->dsn; - $this->connected_database_name = $database_file; - $this->opened_persistent = $this->getoption('persistent'); - $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype; - - return MDB2_OK; - } - - // }}} - // {{{ databaseExists() - - /** - * check if given database name is exists? - * - * @param string $name name of the database that should be checked - * - * @return mixed true/false on success, a MDB2 error on failure - * @access public - */ - function databaseExists($name) - { - $database_file = $this->_getDatabaseFile($name); - $result = file_exists($database_file); - return $result; - } - - // }}} - // {{{ disconnect() - - /** - * Log out and disconnect from the database. - * - * @param boolean $force if the disconnect should be forced even if the - * connection is opened persistently - * @return mixed true on success, false if not connected and error - * object on error - * @access public - */ - function disconnect($force = true) - { - if (is_resource($this->connection)) { - if ($this->in_transaction) { - $dsn = $this->dsn; - $database_name = $this->database_name; - $persistent = $this->options['persistent']; - $this->dsn = $this->connected_dsn; - $this->database_name = $this->connected_database_name; - $this->options['persistent'] = $this->opened_persistent; - $this->rollback(); - $this->dsn = $dsn; - $this->database_name = $database_name; - $this->options['persistent'] = $persistent; - } - - if (!$this->opened_persistent || $force) { - @sqlite_close($this->connection); - } - } else { - return false; - } - return parent::disconnect($force); - } - - // }}} - // {{{ _doQuery() - - /** - * Execute a query - * @param string $query query - * @param boolean $is_manip if the query is a manipulation query - * @param resource $connection - * @param string $database_name - * @return result or error object - * @access protected - */ - function _doQuery($query, $is_manip = false, $connection = null, $database_name = null) - { - $this->last_query = $query; - $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre')); - if ($result) { - if (PEAR::isError($result)) { - return $result; - } - $query = $result; - } - if ($this->options['disable_query']) { - $result = $is_manip ? 0 : null; - return $result; - } - - if (null === $connection) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - - $function = $this->options['result_buffering'] - ? 'sqlite_query' : 'sqlite_unbuffered_query'; - $php_errormsg = ''; - if (version_compare('5.1.0', PHP_VERSION, '>')) { - @ini_set('track_errors', true); - do { - $result = @$function($query.';', $connection); - } while (sqlite_last_error($connection) == SQLITE_SCHEMA); - @ini_restore('track_errors'); - } else { - do { - $result = @$function($query.';', $connection, SQLITE_BOTH, $php_errormsg); - } while (sqlite_last_error($connection) == SQLITE_SCHEMA); - } - $this->_lasterror = $php_errormsg; - - if (!$result) { - $code = null; - if (0 === strpos($this->_lasterror, 'no such table')) { - $code = MDB2_ERROR_NOSUCHTABLE; - } - $err = $this->raiseError($code, null, null, - 'Could not execute statement', __FUNCTION__); - return $err; - } - - $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result)); - return $result; - } - - // }}} - // {{{ _affectedRows() - - /** - * Returns the number of rows affected - * - * @param resource $result - * @param resource $connection - * @return mixed MDB2 Error Object or the number of rows affected - * @access private - */ - function _affectedRows($connection, $result = null) - { - if (null === $connection) { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - } - return @sqlite_changes($connection); - } - - // }}} - // {{{ _modifyQuery() - - /** - * Changes a query string for various DBMS specific reasons - * - * @param string $query query to modify - * @param boolean $is_manip if it is a DML query - * @param integer $limit limit the number of rows - * @param integer $offset start reading from given offset - * @return string modified query - * @access protected - */ - function _modifyQuery($query, $is_manip, $limit, $offset) - { - if ($this->options['portability'] & MDB2_PORTABILITY_DELETE_COUNT) { - if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) { - $query = preg_replace('/^\s*DELETE\s+FROM\s+(\S+)\s*$/', - 'DELETE FROM \1 WHERE 1=1', $query); - } - } - if ($limit > 0 - && !preg_match('/LIMIT\s*\d(?:\s*(?:,|OFFSET)\s*\d+)?(?:[^\)]*)?$/i', $query) - ) { - $query = rtrim($query); - if (substr($query, -1) == ';') { - $query = substr($query, 0, -1); - } - if ($is_manip) { - $query.= " LIMIT $limit"; - } else { - $query.= " LIMIT $offset,$limit"; - } - } - return $query; - } - - // }}} - // {{{ getServerVersion() - - /** - * return version information about the server - * - * @param bool $native determines if the raw version string should be returned - * @return mixed array/string with version information or MDB2 error object - * @access public - */ - function getServerVersion($native = false) - { - $server_info = false; - if ($this->connected_server_info) { - $server_info = $this->connected_server_info; - } elseif ($this->options['server_version']) { - $server_info = $this->options['server_version']; - } elseif (function_exists('sqlite_libversion')) { - $server_info = @sqlite_libversion(); - } - if (!$server_info) { - return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'Requires either the "server_version" option or the sqlite_libversion() function', __FUNCTION__); - } - // cache server_info - $this->connected_server_info = $server_info; - if (!$native) { - $tmp = explode('.', $server_info, 3); - $server_info = array( - 'major' => isset($tmp[0]) ? $tmp[0] : null, - 'minor' => isset($tmp[1]) ? $tmp[1] : null, - 'patch' => isset($tmp[2]) ? $tmp[2] : null, - 'extra' => null, - 'native' => $server_info, - ); - } - return $server_info; - } - - // }}} - // {{{ replace() - - /** - * Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT - * query, except that if there is already a row in the table with the same - * key field values, the old row is deleted before the new row is inserted. - * - * The REPLACE type of query does not make part of the SQL standards. Since - * practically only SQLite implements it natively, this type of query is - * emulated through this method for other DBMS using standard types of - * queries inside a transaction to assure the atomicity of the operation. - * - * @access public - * - * @param string $table name of the table on which the REPLACE query will - * be executed. - * @param array $fields associative array that describes the fields and the - * values that will be inserted or updated in the specified table. The - * indexes of the array are the names of all the fields of the table. The - * values of the array are also associative arrays that describe the - * values and other properties of the table fields. - * - * Here follows a list of field properties that need to be specified: - * - * value: - * Value to be assigned to the specified field. This value may be - * of specified in database independent type format as this - * function can perform the necessary datatype conversions. - * - * Default: - * this property is required unless the Null property - * is set to 1. - * - * type - * Name of the type of the field. Currently, all types Metabase - * are supported except for clob and blob. - * - * Default: no type conversion - * - * null - * Boolean property that indicates that the value for this field - * should be set to null. - * - * The default value for fields missing in INSERT queries may be - * specified the definition of a table. Often, the default value - * is already null, but since the REPLACE may be emulated using - * an UPDATE query, make sure that all fields of the table are - * listed in this function argument array. - * - * Default: 0 - * - * key - * Boolean property that indicates that this field should be - * handled as a primary key or at least as part of the compound - * unique index of the table that will determine the row that will - * updated if it exists or inserted a new row otherwise. - * - * This function will fail if no key field is specified or if the - * value of a key field is set to null because fields that are - * part of unique index they may not be null. - * - * Default: 0 - * - * @return mixed MDB2_OK on success, a MDB2 error on failure - */ - function replace($table, $fields) - { - $count = count($fields); - $query = $values = ''; - $keys = $colnum = 0; - for (reset($fields); $colnum < $count; next($fields), $colnum++) { - $name = key($fields); - if ($colnum > 0) { - $query .= ','; - $values.= ','; - } - $query.= $this->quoteIdentifier($name, true); - if (isset($fields[$name]['null']) && $fields[$name]['null']) { - $value = 'NULL'; - } else { - $type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null; - $value = $this->quote($fields[$name]['value'], $type); - if (PEAR::isError($value)) { - return $value; - } - } - $values.= $value; - if (isset($fields[$name]['key']) && $fields[$name]['key']) { - if ($value === 'NULL') { - return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null, - 'key value '.$name.' may not be NULL', __FUNCTION__); - } - $keys++; - } - } - if ($keys == 0) { - return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null, - 'not specified which fields are keys', __FUNCTION__); - } - - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - - $table = $this->quoteIdentifier($table, true); - $query = "REPLACE INTO $table ($query) VALUES ($values)"; - $result = $this->_doQuery($query, true, $connection); - if (PEAR::isError($result)) { - return $result; - } - return $this->_affectedRows($connection, $result); - } - - // }}} - // {{{ nextID() - - /** - * Returns the next free id of a sequence - * - * @param string $seq_name name of the sequence - * @param boolean $ondemand when true the sequence is - * automatic created, if it - * not exists - * - * @return mixed MDB2 Error Object or id - * @access public - */ - function nextID($seq_name, $ondemand = true) - { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true); - $seqcol_name = $this->options['seqcol_name']; - $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (NULL)"; - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $this->expectError(MDB2_ERROR_NOSUCHTABLE); - $result = $this->_doQuery($query, true); - $this->popExpect(); - $this->popErrorHandling(); - if (PEAR::isError($result)) { - if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) { - $this->loadModule('Manager', null, true); - $result = $this->manager->createSequence($seq_name); - if (PEAR::isError($result)) { - return $this->raiseError($result, null, null, - 'on demand sequence '.$seq_name.' could not be created', __FUNCTION__); - } else { - return $this->nextID($seq_name, false); - } - } - return $result; - } - $value = $this->lastInsertID(); - if (is_numeric($value)) { - $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value"; - $result = $this->_doQuery($query, true); - if (PEAR::isError($result)) { - $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name; - } - } - return $value; - } - - // }}} - // {{{ lastInsertID() - - /** - * Returns the autoincrement ID if supported or $id or fetches the current - * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field) - * - * @param string $table name of the table into which a new row was inserted - * @param string $field name of the field into which a new row was inserted - * @return mixed MDB2 Error Object or id - * @access public - */ - function lastInsertID($table = null, $field = null) - { - $connection = $this->getConnection(); - if (PEAR::isError($connection)) { - return $connection; - } - $value = @sqlite_last_insert_rowid($connection); - if (!$value) { - return $this->raiseError(null, null, null, - 'Could not get last insert ID', __FUNCTION__); - } - return $value; - } - - // }}} - // {{{ currID() - - /** - * Returns the current id of a sequence - * - * @param string $seq_name name of the sequence - * @return mixed MDB2 Error Object or id - * @access public - */ - function currID($seq_name) - { - $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true); - $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true); - $query = "SELECT MAX($seqcol_name) FROM $sequence_name"; - return $this->queryOne($query, 'integer'); - } -} - -/** - * MDB2 SQLite result driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Result_sqlite extends MDB2_Result_Common -{ - // }}} - // {{{ fetchRow() - - /** - * Fetch a row and insert the data into an existing array. - * - * @param int $fetchmode how the array data should be indexed - * @param int $rownum number of the row where the data can be found - * @return int data array on success, a MDB2 error on failure - * @access public - */ - function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null) - { - if (null !== $rownum) { - $seek = $this->seek($rownum); - if (PEAR::isError($seek)) { - return $seek; - } - } - if ($fetchmode == MDB2_FETCHMODE_DEFAULT) { - $fetchmode = $this->db->fetchmode; - } - if ( $fetchmode == MDB2_FETCHMODE_ASSOC - || $fetchmode == MDB2_FETCHMODE_OBJECT - ) { - $row = @sqlite_fetch_array($this->result, SQLITE_ASSOC); - if (is_array($row) - && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE - ) { - $row = array_change_key_case($row, $this->db->options['field_case']); - } - } else { - $row = @sqlite_fetch_array($this->result, SQLITE_NUM); - } - if (!$row) { - if (false === $this->result) { - $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - return $err; - } - return null; - } - $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL; - $rtrim = false; - if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) { - if (empty($this->types)) { - $mode += MDB2_PORTABILITY_RTRIM; - } else { - $rtrim = true; - } - } - if ($mode) { - $this->db->_fixResultArrayValues($row, $mode); - } - if ( ( $fetchmode != MDB2_FETCHMODE_ASSOC - && $fetchmode != MDB2_FETCHMODE_OBJECT) - && !empty($this->types) - ) { - $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim); - } elseif (($fetchmode == MDB2_FETCHMODE_ASSOC - || $fetchmode == MDB2_FETCHMODE_OBJECT) - && !empty($this->types_assoc) - ) { - $row = $this->db->datatype->convertResultRow($this->types_assoc, $row, $rtrim); - } - if (!empty($this->values)) { - $this->_assignBindColumns($row); - } - if ($fetchmode === MDB2_FETCHMODE_OBJECT) { - $object_class = $this->db->options['fetch_class']; - if ($object_class == 'stdClass') { - $row = (object) $row; - } else { - $rowObj = new $object_class($row); - $row = $rowObj; - } - } - ++$this->rownum; - return $row; - } - - // }}} - // {{{ _getColumnNames() - - /** - * Retrieve the names of columns returned by the DBMS in a query result. - * - * @return mixed Array variable that holds the names of columns as keys - * or an MDB2 error on failure. - * Some DBMS may not return any columns when the result set - * does not contain any rows. - * @access private - */ - function _getColumnNames() - { - $columns = array(); - $numcols = $this->numCols(); - if (PEAR::isError($numcols)) { - return $numcols; - } - for ($column = 0; $column < $numcols; $column++) { - $column_name = @sqlite_field_name($this->result, $column); - $columns[$column_name] = $column; - } - if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $columns = array_change_key_case($columns, $this->db->options['field_case']); - } - return $columns; - } - - // }}} - // {{{ numCols() - - /** - * Count the number of columns returned by the DBMS in a query result. - * - * @access public - * @return mixed integer value with the number of columns, a MDB2 error - * on failure - */ - function numCols() - { - $cols = @sqlite_num_fields($this->result); - if (null === $cols) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return count($this->types); - } - return $this->db->raiseError(null, null, null, - 'Could not get column count', __FUNCTION__); - } - return $cols; - } -} - -/** - * MDB2 SQLite buffered result driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_BufferedResult_sqlite extends MDB2_Result_sqlite -{ - // {{{ seek() - - /** - * Seek to a specific row in a result set - * - * @param int $rownum number of the row where the data can be found - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function seek($rownum = 0) - { - if (!@sqlite_seek($this->result, $rownum)) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return MDB2_OK; - } - return $this->db->raiseError(MDB2_ERROR_INVALID, null, null, - 'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__); - } - $this->rownum = $rownum - 1; - return MDB2_OK; - } - - // }}} - // {{{ valid() - - /** - * Check if the end of the result set has been reached - * - * @return mixed true or false on sucess, a MDB2 error on failure - * @access public - */ - function valid() - { - $numrows = $this->numRows(); - if (PEAR::isError($numrows)) { - return $numrows; - } - return $this->rownum < ($numrows - 1); - } - - // }}} - // {{{ numRows() - - /** - * Returns the number of rows in a result object - * - * @return mixed MDB2 Error Object or the number of rows - * @access public - */ - function numRows() - { - $rows = @sqlite_num_rows($this->result); - if (null === $rows) { - if (false === $this->result) { - return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'resultset has already been freed', __FUNCTION__); - } - if (null === $this->result) { - return 0; - } - return $this->db->raiseError(null, null, null, - 'Could not get row count', __FUNCTION__); - } - return $rows; - } -} - -/** - * MDB2 SQLite statement driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Statement_sqlite extends MDB2_Statement_Common -{ - -} -?> diff --git a/3rdparty/MDB2/Extended.php b/3rdparty/MDB2/Extended.php deleted file mode 100644 index 5b0a5be34a02e36c5131849701b0ce12e65becd2..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Extended.php +++ /dev/null @@ -1,723 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - */ - -/** - * Used by autoPrepare() - */ -define('MDB2_AUTOQUERY_INSERT', 1); -define('MDB2_AUTOQUERY_UPDATE', 2); -define('MDB2_AUTOQUERY_DELETE', 3); -define('MDB2_AUTOQUERY_SELECT', 4); - -/** - * MDB2_Extended: class which adds several high level methods to MDB2 - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Extended extends MDB2_Module_Common -{ - // {{{ autoPrepare() - - /** - * Generate an insert, update or delete query and call prepare() on it - * - * @param string table - * @param array the fields names - * @param int type of query to build - * MDB2_AUTOQUERY_INSERT - * MDB2_AUTOQUERY_UPDATE - * MDB2_AUTOQUERY_DELETE - * MDB2_AUTOQUERY_SELECT - * @param string (in case of update and delete queries, this string will be put after the sql WHERE statement) - * @param array that contains the types of the placeholders - * @param mixed array that contains the types of the columns in - * the result set or MDB2_PREPARE_RESULT, if set to - * MDB2_PREPARE_MANIP the query is handled as a manipulation query - * - * @return resource handle for the query - * @see buildManipSQL - * @access public - */ - function autoPrepare($table, $table_fields, $mode = MDB2_AUTOQUERY_INSERT, - $where = false, $types = null, $result_types = MDB2_PREPARE_MANIP) - { - $query = $this->buildManipSQL($table, $table_fields, $mode, $where); - if (PEAR::isError($query)) { - return $query; - } - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $lobs = array(); - foreach ((array)$types as $param => $type) { - if (($type == 'clob') || ($type == 'blob')) { - $lobs[$param] = $table_fields[$param]; - } - } - return $db->prepare($query, $types, $result_types, $lobs); - } - - // }}} - // {{{ autoExecute() - - /** - * Generate an insert, update or delete query and call prepare() and execute() on it - * - * @param string name of the table - * @param array assoc ($key=>$value) where $key is a field name and $value its value - * @param int type of query to build - * MDB2_AUTOQUERY_INSERT - * MDB2_AUTOQUERY_UPDATE - * MDB2_AUTOQUERY_DELETE - * MDB2_AUTOQUERY_SELECT - * @param string (in case of update and delete queries, this string will be put after the sql WHERE statement) - * @param array that contains the types of the placeholders - * @param string which specifies which result class to use - * @param mixed array that contains the types of the columns in - * the result set or MDB2_PREPARE_RESULT, if set to - * MDB2_PREPARE_MANIP the query is handled as a manipulation query - * - * @return bool|MDB2_Error true on success, a MDB2 error on failure - * @see buildManipSQL - * @see autoPrepare - * @access public - */ - function autoExecute($table, $fields_values, $mode = MDB2_AUTOQUERY_INSERT, - $where = false, $types = null, $result_class = true, $result_types = MDB2_PREPARE_MANIP) - { - $fields_values = (array)$fields_values; - if ($mode == MDB2_AUTOQUERY_SELECT) { - if (is_array($result_types)) { - $keys = array_keys($result_types); - } elseif (!empty($fields_values)) { - $keys = $fields_values; - } else { - $keys = array(); - } - } else { - $keys = array_keys($fields_values); - } - $params = array_values($fields_values); - if (empty($params)) { - $query = $this->buildManipSQL($table, $keys, $mode, $where); - - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if ($mode == MDB2_AUTOQUERY_SELECT) { - $result = $db->query($query, $result_types, $result_class); - } else { - $result = $db->exec($query); - } - } else { - $stmt = $this->autoPrepare($table, $keys, $mode, $where, $types, $result_types); - if (PEAR::isError($stmt)) { - return $stmt; - } - $result = $stmt->execute($params, $result_class); - $stmt->free(); - } - return $result; - } - - // }}} - // {{{ buildManipSQL() - - /** - * Make automaticaly an sql query for prepare() - * - * Example : buildManipSQL('table_sql', array('field1', 'field2', 'field3'), MDB2_AUTOQUERY_INSERT) - * will return the string : INSERT INTO table_sql (field1,field2,field3) VALUES (?,?,?) - * NB : - This belongs more to a SQL Builder class, but this is a simple facility - * - Be carefull ! If you don't give a $where param with an UPDATE/DELETE query, all - * the records of the table will be updated/deleted ! - * - * @param string name of the table - * @param ordered array containing the fields names - * @param int type of query to build - * MDB2_AUTOQUERY_INSERT - * MDB2_AUTOQUERY_UPDATE - * MDB2_AUTOQUERY_DELETE - * MDB2_AUTOQUERY_SELECT - * @param string (in case of update and delete queries, this string will be put after the sql WHERE statement) - * - * @return string sql query for prepare() - * @access public - */ - function buildManipSQL($table, $table_fields, $mode, $where = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if ($db->options['quote_identifier']) { - $table = $db->quoteIdentifier($table); - } - - if (!empty($table_fields) && $db->options['quote_identifier']) { - foreach ($table_fields as $key => $field) { - $table_fields[$key] = $db->quoteIdentifier($field); - } - } - - if ((false !== $where) && (null !== $where)) { - if (is_array($where)) { - $where = implode(' AND ', $where); - } - $where = ' WHERE '.$where; - } - - switch ($mode) { - case MDB2_AUTOQUERY_INSERT: - if (empty($table_fields)) { - return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'Insert requires table fields', __FUNCTION__); - } - $cols = implode(', ', $table_fields); - $values = '?'.str_repeat(', ?', (count($table_fields) - 1)); - return 'INSERT INTO '.$table.' ('.$cols.') VALUES ('.$values.')'; - break; - case MDB2_AUTOQUERY_UPDATE: - if (empty($table_fields)) { - return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null, - 'Update requires table fields', __FUNCTION__); - } - $set = implode(' = ?, ', $table_fields).' = ?'; - $sql = 'UPDATE '.$table.' SET '.$set.$where; - return $sql; - break; - case MDB2_AUTOQUERY_DELETE: - $sql = 'DELETE FROM '.$table.$where; - return $sql; - break; - case MDB2_AUTOQUERY_SELECT: - $cols = !empty($table_fields) ? implode(', ', $table_fields) : '*'; - $sql = 'SELECT '.$cols.' FROM '.$table.$where; - return $sql; - break; - } - return $db->raiseError(MDB2_ERROR_SYNTAX, null, null, - 'Non existant mode', __FUNCTION__); - } - - // }}} - // {{{ limitQuery() - - /** - * Generates a limited query - * - * @param string query - * @param array that contains the types of the columns in the result set - * @param integer the numbers of rows to fetch - * @param integer the row to start to fetching - * @param string which specifies which result class to use - * @param mixed string which specifies which class to wrap results in - * - * @return MDB2_Result|MDB2_Error result set on success, a MDB2 error on failure - * @access public - */ - function limitQuery($query, $types, $limit, $offset = 0, $result_class = true, - $result_wrap_class = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $result = $db->setLimit($limit, $offset); - if (PEAR::isError($result)) { - return $result; - } - return $db->query($query, $types, $result_class, $result_wrap_class); - } - - // }}} - // {{{ execParam() - - /** - * Execute a parameterized DML statement. - * - * @param string the SQL query - * @param array if supplied, prepare/execute will be used - * with this array as execute parameters - * @param array that contains the types of the values defined in $params - * - * @return int|MDB2_Error affected rows on success, a MDB2 error on failure - * @access public - */ - function execParam($query, $params = array(), $param_types = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - settype($params, 'array'); - if (empty($params)) { - return $db->exec($query); - } - - $stmt = $db->prepare($query, $param_types, MDB2_PREPARE_MANIP); - if (PEAR::isError($stmt)) { - return $stmt; - } - - $result = $stmt->execute($params); - if (PEAR::isError($result)) { - return $result; - } - - $stmt->free(); - return $result; - } - - // }}} - // {{{ getOne() - - /** - * Fetch the first column of the first row of data returned from a query. - * Takes care of doing the query and freeing the results when finished. - * - * @param string the SQL query - * @param string that contains the type of the column in the result set - * @param array if supplied, prepare/execute will be used - * with this array as execute parameters - * @param array that contains the types of the values defined in $params - * @param int|string which column to return - * - * @return scalar|MDB2_Error data on success, a MDB2 error on failure - * @access public - */ - function getOne($query, $type = null, $params = array(), - $param_types = null, $colnum = 0) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - settype($params, 'array'); - settype($type, 'array'); - if (empty($params)) { - return $db->queryOne($query, $type, $colnum); - } - - $stmt = $db->prepare($query, $param_types, $type); - if (PEAR::isError($stmt)) { - return $stmt; - } - - $result = $stmt->execute($params); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $one = $result->fetchOne($colnum); - $stmt->free(); - $result->free(); - return $one; - } - - // }}} - // {{{ getRow() - - /** - * Fetch the first row of data returned from a query. Takes care - * of doing the query and freeing the results when finished. - * - * @param string the SQL query - * @param array that contains the types of the columns in the result set - * @param array if supplied, prepare/execute will be used - * with this array as execute parameters - * @param array that contains the types of the values defined in $params - * @param int the fetch mode to use - * - * @return array|MDB2_Error data on success, a MDB2 error on failure - * @access public - */ - function getRow($query, $types = null, $params = array(), - $param_types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - settype($params, 'array'); - if (empty($params)) { - return $db->queryRow($query, $types, $fetchmode); - } - - $stmt = $db->prepare($query, $param_types, $types); - if (PEAR::isError($stmt)) { - return $stmt; - } - - $result = $stmt->execute($params); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $row = $result->fetchRow($fetchmode); - $stmt->free(); - $result->free(); - return $row; - } - - // }}} - // {{{ getCol() - - /** - * Fetch a single column from a result set and return it as an - * indexed array. - * - * @param string the SQL query - * @param string that contains the type of the column in the result set - * @param array if supplied, prepare/execute will be used - * with this array as execute parameters - * @param array that contains the types of the values defined in $params - * @param int|string which column to return - * - * @return array|MDB2_Error data on success, a MDB2 error on failure - * @access public - */ - function getCol($query, $type = null, $params = array(), - $param_types = null, $colnum = 0) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - settype($params, 'array'); - settype($type, 'array'); - if (empty($params)) { - return $db->queryCol($query, $type, $colnum); - } - - $stmt = $db->prepare($query, $param_types, $type); - if (PEAR::isError($stmt)) { - return $stmt; - } - - $result = $stmt->execute($params); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $col = $result->fetchCol($colnum); - $stmt->free(); - $result->free(); - return $col; - } - - // }}} - // {{{ getAll() - - /** - * Fetch all the rows returned from a query. - * - * @param string the SQL query - * @param array that contains the types of the columns in the result set - * @param array if supplied, prepare/execute will be used - * with this array as execute parameters - * @param array that contains the types of the values defined in $params - * @param int the fetch mode to use - * @param bool if set to true, the $all will have the first - * column as its first dimension - * @param bool $force_array used only when the query returns exactly - * two columns. If true, the values of the returned array will be - * one-element arrays instead of scalars. - * @param bool $group if true, the values of the returned array is - * wrapped in another array. If the same key value (in the first - * column) repeats itself, the values will be appended to this array - * instead of overwriting the existing values. - * - * @return array|MDB2_Error data on success, a MDB2 error on failure - * @access public - */ - function getAll($query, $types = null, $params = array(), - $param_types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT, - $rekey = false, $force_array = false, $group = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - settype($params, 'array'); - if (empty($params)) { - return $db->queryAll($query, $types, $fetchmode, $rekey, $force_array, $group); - } - - $stmt = $db->prepare($query, $param_types, $types); - if (PEAR::isError($stmt)) { - return $stmt; - } - - $result = $stmt->execute($params); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $all = $result->fetchAll($fetchmode, $rekey, $force_array, $group); - $stmt->free(); - $result->free(); - return $all; - } - - // }}} - // {{{ getAssoc() - - /** - * Fetch the entire result set of a query and return it as an - * associative array using the first column as the key. - * - * If the result set contains more than two columns, the value - * will be an array of the values from column 2-n. If the result - * set contains only two columns, the returned value will be a - * scalar with the value of the second column (unless forced to an - * array with the $force_array parameter). A MDB2 error code is - * returned on errors. If the result set contains fewer than two - * columns, a MDB2_ERROR_TRUNCATED error is returned. - * - * For example, if the table 'mytable' contains: - *
-     *   ID      TEXT       DATE
-     * --------------------------------
-     *   1       'one'      944679408
-     *   2       'two'      944679408
-     *   3       'three'    944679408
-     * 
- * Then the call getAssoc('SELECT id,text FROM mytable') returns: - *
-     *    array(
-     *      '1' => 'one',
-     *      '2' => 'two',
-     *      '3' => 'three',
-     *    )
-     * 
- * ...while the call getAssoc('SELECT id,text,date FROM mytable') returns: - *
-     *    array(
-     *      '1' => array('one', '944679408'),
-     *      '2' => array('two', '944679408'),
-     *      '3' => array('three', '944679408')
-     *    )
-     * 
- * - * If the more than one row occurs with the same value in the - * first column, the last row overwrites all previous ones by - * default. Use the $group parameter if you don't want to - * overwrite like this. Example: - *
-     * getAssoc('SELECT category,id,name FROM mytable', null, null
-     *           MDB2_FETCHMODE_ASSOC, false, true) returns:
-     *    array(
-     *      '1' => array(array('id' => '4', 'name' => 'number four'),
-     *                   array('id' => '6', 'name' => 'number six')
-     *             ),
-     *      '9' => array(array('id' => '4', 'name' => 'number four'),
-     *                   array('id' => '6', 'name' => 'number six')
-     *             )
-     *    )
-     * 
- * - * Keep in mind that database functions in PHP usually return string - * values for results regardless of the database's internal type. - * - * @param string the SQL query - * @param array that contains the types of the columns in the result set - * @param array if supplied, prepare/execute will be used - * with this array as execute parameters - * @param array that contains the types of the values defined in $params - * @param bool $force_array used only when the query returns - * exactly two columns. If TRUE, the values of the returned array - * will be one-element arrays instead of scalars. - * @param bool $group if TRUE, the values of the returned array - * is wrapped in another array. If the same key value (in the first - * column) repeats itself, the values will be appended to this array - * instead of overwriting the existing values. - * - * @return array|MDB2_Error data on success, a MDB2 error on failure - * @access public - */ - function getAssoc($query, $types = null, $params = array(), $param_types = null, - $fetchmode = MDB2_FETCHMODE_DEFAULT, $force_array = false, $group = false) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - settype($params, 'array'); - if (empty($params)) { - return $db->queryAll($query, $types, $fetchmode, true, $force_array, $group); - } - - $stmt = $db->prepare($query, $param_types, $types); - if (PEAR::isError($stmt)) { - return $stmt; - } - - $result = $stmt->execute($params); - if (!MDB2::isResultCommon($result)) { - return $result; - } - - $all = $result->fetchAll($fetchmode, true, $force_array, $group); - $stmt->free(); - $result->free(); - return $all; - } - - // }}} - // {{{ executeMultiple() - - /** - * This function does several execute() calls on the same statement handle. - * $params must be an array indexed numerically from 0, one execute call is - * done for every 'row' in the array. - * - * If an error occurs during execute(), executeMultiple() does not execute - * the unfinished rows, but rather returns that error. - * - * @param resource query handle from prepare() - * @param array numeric array containing the data to insert into the query - * - * @return bool|MDB2_Error true on success, a MDB2 error on failure - * @access public - * @see prepare(), execute() - */ - function executeMultiple($stmt, $params = null) - { - if (MDB2::isError($stmt)) { - return $stmt; - } - for ($i = 0, $j = count($params); $i < $j; $i++) { - $result = $stmt->execute($params[$i]); - if (PEAR::isError($result)) { - return $result; - } - } - return MDB2_OK; - } - - // }}} - // {{{ getBeforeID() - - /** - * Returns the next free id of a sequence if the RDBMS - * does not support auto increment - * - * @param string name of the table into which a new row was inserted - * @param string name of the field into which a new row was inserted - * @param bool when true the sequence is automatic created, if it not exists - * @param bool if the returned value should be quoted - * - * @return int|MDB2_Error id on success, a MDB2 error on failure - * @access public - */ - function getBeforeID($table, $field = null, $ondemand = true, $quote = true) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if ($db->supports('auto_increment') !== true) { - $seq = $table.(empty($field) ? '' : '_'.$field); - $id = $db->nextID($seq, $ondemand); - if (!$quote || PEAR::isError($id)) { - return $id; - } - return $db->quote($id, 'integer'); - } elseif (!$quote) { - return null; - } - return 'NULL'; - } - - // }}} - // {{{ getAfterID() - - /** - * Returns the autoincrement ID if supported or $id - * - * @param mixed value as returned by getBeforeId() - * @param string name of the table into which a new row was inserted - * @param string name of the field into which a new row was inserted - * - * @return int|MDB2_Error id on success, a MDB2 error on failure - * @access public - */ - function getAfterID($id, $table, $field = null) - { - $db = $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if ($db->supports('auto_increment') !== true) { - return $id; - } - return $db->lastInsertID($table, $field); - } - - // }}} -} -?> \ No newline at end of file diff --git a/3rdparty/MDB2/Iterator.php b/3rdparty/MDB2/Iterator.php deleted file mode 100644 index 46feade32183bc459abdb4691d7cbb602e887745..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Iterator.php +++ /dev/null @@ -1,262 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -/** - * PHP5 Iterator - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Iterator implements Iterator -{ - protected $fetchmode; - /** - * @var MDB2_Result_Common - */ - protected $result; - protected $row; - - // {{{ constructor - - /** - * Constructor - */ - public function __construct(MDB2_Result_Common $result, $fetchmode = MDB2_FETCHMODE_DEFAULT) - { - $this->result = $result; - $this->fetchmode = $fetchmode; - } - // }}} - - // {{{ seek() - - /** - * Seek forward to a specific row in a result set - * - * @param int number of the row where the data can be found - * - * @return void - * @access public - */ - public function seek($rownum) - { - $this->row = null; - if ($this->result) { - $this->result->seek($rownum); - } - } - // }}} - - // {{{ next() - - /** - * Fetch next row of data - * - * @return void - * @access public - */ - public function next() - { - $this->row = null; - } - // }}} - - // {{{ current() - - /** - * return a row of data - * - * @return void - * @access public - */ - public function current() - { - if (null === $this->row) { - $row = $this->result->fetchRow($this->fetchmode); - if (PEAR::isError($row)) { - $row = false; - } - $this->row = $row; - } - return $this->row; - } - // }}} - - // {{{ valid() - - /** - * Check if the end of the result set has been reached - * - * @return bool true/false, false is also returned on failure - * @access public - */ - public function valid() - { - return (bool)$this->current(); - } - // }}} - - // {{{ free() - - /** - * Free the internal resources associated with result. - * - * @return bool|MDB2_Error true on success, false|MDB2_Error if result is invalid - * @access public - */ - public function free() - { - if ($this->result) { - return $this->result->free(); - } - $this->result = false; - $this->row = null; - return false; - } - // }}} - - // {{{ key() - - /** - * Returns the row number - * - * @return int|bool|MDB2_Error true on success, false|MDB2_Error if result is invalid - * @access public - */ - public function key() - { - if ($this->result) { - return $this->result->rowCount(); - } - return false; - } - // }}} - - // {{{ rewind() - - /** - * Seek to the first row in a result set - * - * @return void - * @access public - */ - public function rewind() - { - } - // }}} - - // {{{ destructor - - /** - * Destructor - */ - public function __destruct() - { - $this->free(); - } - // }}} -} - -/** - * PHP5 buffered Iterator - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_BufferedIterator extends MDB2_Iterator implements SeekableIterator -{ - // {{{ valid() - - /** - * Check if the end of the result set has been reached - * - * @return bool|MDB2_Error true on success, false|MDB2_Error if result is invalid - * @access public - */ - public function valid() - { - if ($this->result) { - return $this->result->valid(); - } - return false; - } - // }}} - - // {{{count() - - /** - * Returns the number of rows in a result object - * - * @return int|MDB2_Error number of rows, false|MDB2_Error if result is invalid - * @access public - */ - public function count() - { - if ($this->result) { - return $this->result->numRows(); - } - return false; - } - // }}} - - // {{{ rewind() - - /** - * Seek to the first row in a result set - * - * @return void - * @access public - */ - public function rewind() - { - $this->seek(0); - } - // }}} -} - -?> \ No newline at end of file diff --git a/3rdparty/MDB2/LOB.php b/3rdparty/MDB2/LOB.php deleted file mode 100644 index 537a77e546bcddbf49b8aa1488f74ee62dcdcdeb..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/LOB.php +++ /dev/null @@ -1,264 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - */ - -require_once 'MDB2.php'; - -/** - * MDB2_LOB: user land stream wrapper implementation for LOB support - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_LOB -{ - /** - * contains the key to the global MDB2 instance array of the associated - * MDB2 instance - * - * @var integer - * @access protected - */ - var $db_index; - - /** - * contains the key to the global MDB2_LOB instance array of the associated - * MDB2_LOB instance - * - * @var integer - * @access protected - */ - var $lob_index; - - // {{{ stream_open() - - /** - * open stream - * - * @param string specifies the URL that was passed to fopen() - * @param string the mode used to open the file - * @param int holds additional flags set by the streams API - * @param string not used - * - * @return bool - * @access public - */ - function stream_open($path, $mode, $options, &$opened_path) - { - if (!preg_match('/^rb?\+?$/', $mode)) { - return false; - } - $url = parse_url($path); - if (empty($url['host'])) { - return false; - } - $this->db_index = (int)$url['host']; - if (!isset($GLOBALS['_MDB2_databases'][$this->db_index])) { - return false; - } - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $this->lob_index = (int)$url['user']; - if (!isset($db->datatype->lobs[$this->lob_index])) { - return false; - } - return true; - } - // }}} - - // {{{ stream_read() - - /** - * read stream - * - * @param int number of bytes to read - * - * @return string - * @access public - */ - function stream_read($count) - { - if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $db->datatype->_retrieveLOB($db->datatype->lobs[$this->lob_index]); - - $data = $db->datatype->_readLOB($db->datatype->lobs[$this->lob_index], $count); - $length = strlen($data); - if ($length == 0) { - $db->datatype->lobs[$this->lob_index]['endOfLOB'] = true; - } - $db->datatype->lobs[$this->lob_index]['position'] += $length; - return $data; - } - } - // }}} - - // {{{ stream_write() - - /** - * write stream, note implemented - * - * @param string data - * - * @return int - * @access public - */ - function stream_write($data) - { - return 0; - } - // }}} - - // {{{ stream_tell() - - /** - * return the current position - * - * @return int current position - * @access public - */ - function stream_tell() - { - if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - return $db->datatype->lobs[$this->lob_index]['position']; - } - } - // }}} - - // {{{ stream_eof() - - /** - * Check if stream reaches EOF - * - * @return bool - * @access public - */ - function stream_eof() - { - if (!isset($GLOBALS['_MDB2_databases'][$this->db_index])) { - return true; - } - - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $result = $db->datatype->_endOfLOB($db->datatype->lobs[$this->lob_index]); - if (version_compare(phpversion(), "5.0", ">=") - && version_compare(phpversion(), "5.1", "<") - ) { - return !$result; - } - return $result; - } - // }}} - - // {{{ stream_seek() - - /** - * Seek stream, not implemented - * - * @param int offset - * @param int whence - * - * @return bool - * @access public - */ - function stream_seek($offset, $whence) - { - return false; - } - // }}} - - // {{{ stream_stat() - - /** - * return information about stream - * - * @access public - */ - function stream_stat() - { - if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - return array( - 'db_index' => $this->db_index, - 'lob_index' => $this->lob_index, - ); - } - } - // }}} - - // {{{ stream_close() - - /** - * close stream - * - * @access public - */ - function stream_close() - { - if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - if (isset($db->datatype->lobs[$this->lob_index])) { - $db->datatype->_destroyLOB($db->datatype->lobs[$this->lob_index]); - unset($db->datatype->lobs[$this->lob_index]); - } - } - } - // }}} -} - -// register streams wrapper -if (!stream_wrapper_register("MDB2LOB", "MDB2_LOB")) { - MDB2::raiseError(); - return false; -} - -?> diff --git a/3rdparty/MDB2/Schema.php b/3rdparty/MDB2/Schema.php deleted file mode 100644 index 5eeb97b055bf1c74a101ad0601f0b58e94d60e30..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema.php +++ /dev/null @@ -1,2797 +0,0 @@ - - * @author Igor Feghali - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -require_once 'MDB2.php'; - -define('MDB2_SCHEMA_DUMP_ALL', 0); -define('MDB2_SCHEMA_DUMP_STRUCTURE', 1); -define('MDB2_SCHEMA_DUMP_CONTENT', 2); - -/** - * If you add an error code here, make sure you also add a textual - * version of it in MDB2_Schema::errorMessage(). - */ - -define('MDB2_SCHEMA_ERROR', -1); -define('MDB2_SCHEMA_ERROR_PARSE', -2); -define('MDB2_SCHEMA_ERROR_VALIDATE', -3); -define('MDB2_SCHEMA_ERROR_UNSUPPORTED', -4); // Driver does not support this function -define('MDB2_SCHEMA_ERROR_INVALID', -5); // Invalid attribute value -define('MDB2_SCHEMA_ERROR_WRITER', -6); - -/** - * The database manager is a class that provides a set of database - * management services like installing, altering and dumping the data - * structures of databases. - * - * @category Database - * @package MDB2_Schema - * @author Lukas Smith - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema extends PEAR -{ - // {{{ properties - - var $db; - - var $warnings = array(); - - var $options = array( - 'fail_on_invalid_names' => true, - 'dtd_file' => false, - 'valid_types' => array(), - 'force_defaults' => true, - 'parser' => 'MDB2_Schema_Parser', - 'writer' => 'MDB2_Schema_Writer', - 'validate' => 'MDB2_Schema_Validate', - 'drop_obsolete_objects' => false - ); - - // }}} - // {{{ apiVersion() - - /** - * Return the MDB2 API version - * - * @return string the MDB2 API version number - * @access public - */ - function apiVersion() - { - return '0.4.3'; - } - - // }}} - // {{{ arrayMergeClobber() - - /** - * Clobbers two arrays together - * - * @param array $a1 array that should be clobbered - * @param array $a2 array that should be clobbered - * - * @return array|false array on success and false on error - * - * @access public - * @author kc@hireability.com - */ - function arrayMergeClobber($a1, $a2) - { - if (!is_array($a1) || !is_array($a2)) { - return false; - } - foreach ($a2 as $key => $val) { - if (is_array($val) && array_key_exists($key, $a1) && is_array($a1[$key])) { - $a1[$key] = MDB2_Schema::arrayMergeClobber($a1[$key], $val); - } else { - $a1[$key] = $val; - } - } - return $a1; - } - - // }}} - // {{{ resetWarnings() - - /** - * reset the warning array - * - * @access public - * @return void - */ - function resetWarnings() - { - $this->warnings = array(); - } - - // }}} - // {{{ getWarnings() - - /** - * Get all warnings in reverse order - * - * This means that the last warning is the first element in the array - * - * @return array with warnings - * @access public - * @see resetWarnings() - */ - function getWarnings() - { - return array_reverse($this->warnings); - } - - // }}} - // {{{ setOption() - - /** - * Sets the option for the db class - * - * @param string $option option name - * @param mixed $value value for the option - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function setOption($option, $value) - { - if (isset($this->options[$option])) { - if (is_null($value)) { - return $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'may not set an option to value null'); - } - $this->options[$option] = $value; - return MDB2_OK; - } - return $this->raiseError(MDB2_SCHEMA_ERROR_UNSUPPORTED, null, null, - "unknown option $option"); - } - - // }}} - // {{{ getOption() - - /** - * returns the value of an option - * - * @param string $option option name - * - * @return mixed the option value or error object - * @access public - */ - function getOption($option) - { - if (isset($this->options[$option])) { - return $this->options[$option]; - } - return $this->raiseError(MDB2_SCHEMA_ERROR_UNSUPPORTED, - null, null, "unknown option $option"); - } - - // }}} - // {{{ factory() - - /** - * Create a new MDB2 object for the specified database type - * type - * - * @param string|array|MDB2_Driver_Common &$db 'data source name', see the - * MDB2::parseDSN method for a description of the dsn format. - * Can also be specified as an array of the - * format returned by @see MDB2::parseDSN. - * Finally you can also pass an existing db object to be used. - * @param array $options An associative array of option names and their values. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - * @see MDB2::parseDSN - */ - static function &factory(&$db, $options = array()) - { - $obj = new MDB2_Schema(); - - $result = $obj->connect($db, $options); - if (PEAR::isError($result)) { - return $result; - } - return $obj; - } - - // }}} - // {{{ connect() - - /** - * Create a new MDB2 connection object and connect to the specified - * database - * - * @param string|array|MDB2_Driver_Common &$db 'data source name', see the - * MDB2::parseDSN method for a description of the dsn format. - * Can also be specified as an array of the - * format returned by MDB2::parseDSN. - * Finally you can also pass an existing db object to be used. - * @param array $options An associative array of option names and their values. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - * @see MDB2::parseDSN - */ - function connect(&$db, $options = array()) - { - $db_options = array(); - if (is_array($options)) { - foreach ($options as $option => $value) { - if (array_key_exists($option, $this->options)) { - $result = $this->setOption($option, $value); - if (PEAR::isError($result)) { - return $result; - } - } else { - $db_options[$option] = $value; - } - } - } - - $this->disconnect(); - if (!MDB2::isConnection($db)) { - $db = MDB2::factory($db, $db_options); - } - - if (PEAR::isError($db)) { - return $db; - } - - $this->db = $db; - $this->db->loadModule('Datatype'); - $this->db->loadModule('Manager'); - $this->db->loadModule('Reverse'); - $this->db->loadModule('Function'); - if (empty($this->options['valid_types'])) { - $this->options['valid_types'] = $this->db->datatype->getValidTypes(); - } - - return MDB2_OK; - } - - // }}} - // {{{ disconnect() - - /** - * Log out and disconnect from the database. - * - * @access public - * @return void - */ - function disconnect() - { - if (MDB2::isConnection($this->db)) { - $this->db->disconnect(); - unset($this->db); - } - } - - // }}} - // {{{ parseDatabaseDefinition() - - /** - * Parse a database definition from a file or an array - * - * @param string|array $schema the database schema array or file name - * @param bool $skip_unreadable if non readable files should be skipped - * @param array $variables associative array that the defines the text string values - * that are meant to be used to replace the variables that are - * used in the schema description. - * @param bool $fail_on_invalid_names make function fail on invalid names - * @param array $structure database structure definition - * - * @access public - * @return array - */ - function parseDatabaseDefinition($schema, $skip_unreadable = false, $variables = array(), - $fail_on_invalid_names = true, $structure = false) - { - $database_definition = false; - if (is_string($schema)) { - // if $schema is not readable then we just skip it - // and simply copy the $current_schema file to that file name - if (is_readable($schema)) { - $database_definition = $this->parseDatabaseDefinitionFile($schema, $variables, $fail_on_invalid_names, $structure); - } - } elseif (is_array($schema)) { - $database_definition = $schema; - } - if (!$database_definition && !$skip_unreadable) { - $database_definition = $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'invalid data type of schema or unreadable data source'); - } - return $database_definition; - } - - // }}} - // {{{ parseDatabaseDefinitionFile() - - /** - * Parse a database definition file by creating a schema format - * parser object and passing the file contents as parser input data stream. - * - * @param string $input_file the database schema file. - * @param array $variables associative array that the defines the text string values - * that are meant to be used to replace the variables that are - * used in the schema description. - * @param bool $fail_on_invalid_names make function fail on invalid names - * @param array $structure database structure definition - * - * @access public - * @return array - */ - function parseDatabaseDefinitionFile($input_file, $variables = array(), - $fail_on_invalid_names = true, $structure = false) - { - $dtd_file = $this->options['dtd_file']; - if ($dtd_file) { - include_once 'XML/DTD/XmlValidator.php'; - $dtd = new XML_DTD_XmlValidator; - if (!$dtd->isValid($dtd_file, $input_file)) { - return $this->raiseError(MDB2_SCHEMA_ERROR_PARSE, null, null, $dtd->getMessage()); - } - } - - $class_name = $this->options['parser']; - - $result = MDB2::loadClass($class_name, $this->db->getOption('debug')); - if (PEAR::isError($result)) { - return $result; - } - - $max_identifiers_length = null; - if (isset($this->db->options['max_identifiers_length'])) { - $max_identifiers_length = $this->db->options['max_identifiers_length']; - } - - $parser = new $class_name($variables, $fail_on_invalid_names, $structure, - $this->options['valid_types'], $this->options['force_defaults'], - $max_identifiers_length - ); - - $result = $parser->setInputFile($input_file); - if (PEAR::isError($result)) { - return $result; - } - - $result = $parser->parse(); - if (PEAR::isError($result)) { - return $result; - } - if (PEAR::isError($parser->error)) { - return $parser->error; - } - - return $parser->database_definition; - } - - // }}} - // {{{ getDefinitionFromDatabase() - - /** - * Attempt to reverse engineer a schema structure from an existing MDB2 - * This method can be used if no xml schema file exists yet. - * The resulting xml schema file may need some manual adjustments. - * - * @return array|MDB2_Error array with definition or error object - * @access public - */ - function getDefinitionFromDatabase() - { - $database = $this->db->database_name; - if (empty($database)) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'it was not specified a valid database name'); - } - - $class_name = $this->options['validate']; - - $result = MDB2::loadClass($class_name, $this->db->getOption('debug')); - if (PEAR::isError($result)) { - return $result; - } - - $max_identifiers_length = null; - if (isset($this->db->options['max_identifiers_length'])) { - $max_identifiers_length = $this->db->options['max_identifiers_length']; - } - - $val = new $class_name( - $this->options['fail_on_invalid_names'], - $this->options['valid_types'], - $this->options['force_defaults'], - $max_identifiers_length - ); - - $database_definition = array( - 'name' => $database, - 'create' => true, - 'overwrite' => false, - 'charset' => 'utf8', - 'description' => '', - 'comments' => '', - 'tables' => array(), - 'sequences' => array(), - ); - - $tables = $this->db->manager->listTables(); - if (PEAR::isError($tables)) { - return $tables; - } - - foreach ($tables as $table_name) { - $fields = $this->db->manager->listTableFields($table_name); - if (PEAR::isError($fields)) { - return $fields; - } - - $database_definition['tables'][$table_name] = array( - 'was' => '', - 'description' => '', - 'comments' => '', - 'fields' => array(), - 'indexes' => array(), - 'constraints' => array(), - 'initialization' => array() - ); - - $table_definition = $database_definition['tables'][$table_name]; - foreach ($fields as $field_name) { - $definition = $this->db->reverse->getTableFieldDefinition($table_name, $field_name); - if (PEAR::isError($definition)) { - return $definition; - } - - if (!empty($definition[0]['autoincrement'])) { - $definition[0]['default'] = '0'; - } - - $table_definition['fields'][$field_name] = $definition[0]; - - $field_choices = count($definition); - if ($field_choices > 1) { - $warning = "There are $field_choices type choices in the table $table_name field $field_name (#1 is the default): "; - - $field_choice_cnt = 1; - - $table_definition['fields'][$field_name]['choices'] = array(); - foreach ($definition as $field_choice) { - $table_definition['fields'][$field_name]['choices'][] = $field_choice; - - $warning .= 'choice #'.($field_choice_cnt).': '.serialize($field_choice); - $field_choice_cnt++; - } - $this->warnings[] = $warning; - } - - /** - * The first parameter is used to verify if there are duplicated - * fields which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateField(array(), $table_definition['fields'][$field_name], $field_name); - if (PEAR::isError($result)) { - return $result; - } - } - - $keys = array(); - - $indexes = $this->db->manager->listTableIndexes($table_name); - if (PEAR::isError($indexes)) { - return $indexes; - } - - if (is_array($indexes)) { - foreach ($indexes as $index_name) { - $this->db->expectError(MDB2_ERROR_NOT_FOUND); - $definition = $this->db->reverse->getTableIndexDefinition($table_name, $index_name); - $this->db->popExpect(); - if (PEAR::isError($definition)) { - if (PEAR::isError($definition, MDB2_ERROR_NOT_FOUND)) { - continue; - } - return $definition; - } - - $keys[$index_name] = $definition; - } - } - - $constraints = $this->db->manager->listTableConstraints($table_name); - if (PEAR::isError($constraints)) { - return $constraints; - } - - if (is_array($constraints)) { - foreach ($constraints as $constraint_name) { - $this->db->expectError(MDB2_ERROR_NOT_FOUND); - $definition = $this->db->reverse->getTableConstraintDefinition($table_name, $constraint_name); - $this->db->popExpect(); - if (PEAR::isError($definition)) { - if (PEAR::isError($definition, MDB2_ERROR_NOT_FOUND)) { - continue; - } - return $definition; - } - - $keys[$constraint_name] = $definition; - } - } - - foreach ($keys as $key_name => $definition) { - if (array_key_exists('foreign', $definition) - && $definition['foreign'] - ) { - /** - * The first parameter is used to verify if there are duplicated - * foreign keys which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateConstraint(array(), $definition, $key_name); - if (PEAR::isError($result)) { - return $result; - } - - foreach ($definition['fields'] as $field_name => $field) { - /** - * The first parameter is used to verify if there are duplicated - * referencing fields which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateConstraintField(array(), $field_name); - if (PEAR::isError($result)) { - return $result; - } - - $definition['fields'][$field_name] = ''; - } - - foreach ($definition['references']['fields'] as $field_name => $field) { - /** - * The first parameter is used to verify if there are duplicated - * referenced fields which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateConstraintReferencedField(array(), $field_name); - if (PEAR::isError($result)) { - return $result; - } - - $definition['references']['fields'][$field_name] = ''; - } - - $table_definition['constraints'][$key_name] = $definition; - } else { - /** - * The first parameter is used to verify if there are duplicated - * indices which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateIndex(array(), $definition, $key_name); - if (PEAR::isError($result)) { - return $result; - } - - foreach ($definition['fields'] as $field_name => $field) { - /** - * The first parameter is used to verify if there are duplicated - * index fields which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateIndexField(array(), $field, $field_name); - if (PEAR::isError($result)) { - return $result; - } - - $definition['fields'][$field_name] = $field; - } - - $table_definition['indexes'][$key_name] = $definition; - } - } - - /** - * The first parameter is used to verify if there are duplicated - * tables which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateTable(array(), $table_definition, $table_name); - if (PEAR::isError($result)) { - return $result; - } - $database_definition['tables'][$table_name]=$table_definition; - - } - - $sequences = $this->db->manager->listSequences(); - if (PEAR::isError($sequences)) { - return $sequences; - } - - if (is_array($sequences)) { - foreach ($sequences as $sequence_name) { - $definition = $this->db->reverse->getSequenceDefinition($sequence_name); - if (PEAR::isError($definition)) { - return $definition; - } - if (isset($database_definition['tables'][$sequence_name]) - && isset($database_definition['tables'][$sequence_name]['indexes']) - ) { - foreach ($database_definition['tables'][$sequence_name]['indexes'] as $index) { - if (isset($index['primary']) && $index['primary'] - && count($index['fields'] == 1) - ) { - $definition['on'] = array( - 'table' => $sequence_name, - 'field' => key($index['fields']), - ); - break; - } - } - } - - /** - * The first parameter is used to verify if there are duplicated - * sequences which we can guarantee that won't happen when reverse engineering - */ - $result = $val->validateSequence(array(), $definition, $sequence_name); - if (PEAR::isError($result)) { - return $result; - } - - $database_definition['sequences'][$sequence_name] = $definition; - } - } - - $result = $val->validateDatabase($database_definition); - if (PEAR::isError($result)) { - return $result; - } - - return $database_definition; - } - - // }}} - // {{{ createTableIndexes() - - /** - * A method to create indexes for an existing table - * - * @param string $table_name Name of the table - * @param array $indexes An array of indexes to be created - * @param boolean $overwrite If the table/index should be overwritten if it already exists - * - * @return mixed MDB2_Error if there is an error creating an index, MDB2_OK otherwise - * @access public - */ - function createTableIndexes($table_name, $indexes, $overwrite = false) - { - if (!$this->db->supports('indexes')) { - $this->db->debug('Indexes are not supported', __FUNCTION__); - return MDB2_OK; - } - - $errorcodes = array(MDB2_ERROR_UNSUPPORTED, MDB2_ERROR_NOT_CAPABLE); - foreach ($indexes as $index_name => $index) { - - // Does the index already exist, and if so, should it be overwritten? - $create_index = true; - $this->db->expectError($errorcodes); - if (!empty($index['primary']) || !empty($index['unique'])) { - $current_indexes = $this->db->manager->listTableConstraints($table_name); - } else { - $current_indexes = $this->db->manager->listTableIndexes($table_name); - } - - $this->db->popExpect(); - if (PEAR::isError($current_indexes)) { - if (!MDB2::isError($current_indexes, $errorcodes)) { - return $current_indexes; - } - } elseif (is_array($current_indexes) && in_array($index_name, $current_indexes)) { - if (!$overwrite) { - $this->db->debug('Index already exists: '.$index_name, __FUNCTION__); - $create_index = false; - } else { - $this->db->debug('Preparing to overwrite index: '.$index_name, __FUNCTION__); - - $this->db->expectError(MDB2_ERROR_NOT_FOUND); - if (!empty($index['primary']) || !empty($index['unique'])) { - $result = $this->db->manager->dropConstraint($table_name, $index_name); - } else { - $result = $this->db->manager->dropIndex($table_name, $index_name); - } - $this->db->popExpect(); - if (PEAR::isError($result) && !MDB2::isError($result, MDB2_ERROR_NOT_FOUND)) { - return $result; - } - } - } - - // Check if primary is being used and if it's supported - if (!empty($index['primary']) && !$this->db->supports('primary_key')) { - - // Primary not supported so we fallback to UNIQUE and making the field NOT NULL - $index['unique'] = true; - - $changes = array(); - - foreach ($index['fields'] as $field => $empty) { - $field_info = $this->db->reverse->getTableFieldDefinition($table_name, $field); - if (PEAR::isError($field_info)) { - return $field_info; - } - if (!$field_info[0]['notnull']) { - $changes['change'][$field] = $field_info[0]; - - $changes['change'][$field]['notnull'] = true; - } - } - if (!empty($changes)) { - $this->db->manager->alterTable($table_name, $changes, false); - } - } - - // Should the index be created? - if ($create_index) { - if (!empty($index['primary']) || !empty($index['unique'])) { - $result = $this->db->manager->createConstraint($table_name, $index_name, $index); - } else { - $result = $this->db->manager->createIndex($table_name, $index_name, $index); - } - if (PEAR::isError($result)) { - return $result; - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ createTableConstraints() - - /** - * A method to create foreign keys for an existing table - * - * @param string $table_name Name of the table - * @param array $constraints An array of foreign keys to be created - * @param boolean $overwrite If the foreign key should be overwritten if it already exists - * - * @return mixed MDB2_Error if there is an error creating a foreign key, MDB2_OK otherwise - * @access public - */ - function createTableConstraints($table_name, $constraints, $overwrite = false) - { - if (!$this->db->supports('indexes')) { - $this->db->debug('Indexes are not supported', __FUNCTION__); - return MDB2_OK; - } - - $errorcodes = array(MDB2_ERROR_UNSUPPORTED, MDB2_ERROR_NOT_CAPABLE); - foreach ($constraints as $constraint_name => $constraint) { - - // Does the foreign key already exist, and if so, should it be overwritten? - $create_constraint = true; - $this->db->expectError($errorcodes); - $current_constraints = $this->db->manager->listTableConstraints($table_name); - $this->db->popExpect(); - if (PEAR::isError($current_constraints)) { - if (!MDB2::isError($current_constraints, $errorcodes)) { - return $current_constraints; - } - } elseif (is_array($current_constraints) && in_array($constraint_name, $current_constraints)) { - if (!$overwrite) { - $this->db->debug('Foreign key already exists: '.$constraint_name, __FUNCTION__); - $create_constraint = false; - } else { - $this->db->debug('Preparing to overwrite foreign key: '.$constraint_name, __FUNCTION__); - $result = $this->db->manager->dropConstraint($table_name, $constraint_name); - if (PEAR::isError($result)) { - return $result; - } - } - } - - // Should the foreign key be created? - if ($create_constraint) { - $result = $this->db->manager->createConstraint($table_name, $constraint_name, $constraint); - if (PEAR::isError($result)) { - return $result; - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ createTable() - - /** - * Create a table and inititialize the table if data is available - * - * @param string $table_name name of the table to be created - * @param array $table multi dimensional array that contains the - * structure and optional data of the table - * @param bool $overwrite if the table/index should be overwritten if it already exists - * @param array $options an array of options to be passed to the database specific driver - * version of MDB2_Driver_Manager_Common::createTable(). - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function createTable($table_name, $table, $overwrite = false, $options = array()) - { - $create = true; - - $errorcodes = array(MDB2_ERROR_UNSUPPORTED, MDB2_ERROR_NOT_CAPABLE); - - $this->db->expectError($errorcodes); - - $tables = $this->db->manager->listTables(); - - $this->db->popExpect(); - if (PEAR::isError($tables)) { - if (!MDB2::isError($tables, $errorcodes)) { - return $tables; - } - } elseif (is_array($tables) && in_array($table_name, $tables)) { - if (!$overwrite) { - $create = false; - $this->db->debug('Table already exists: '.$table_name, __FUNCTION__); - } else { - $result = $this->db->manager->dropTable($table_name); - if (PEAR::isError($result)) { - return $result; - } - $this->db->debug('Overwritting table: '.$table_name, __FUNCTION__); - } - } - - if ($create) { - $result = $this->db->manager->createTable($table_name, $table['fields'], $options); - if (PEAR::isError($result)) { - return $result; - } - } - - if (!empty($table['initialization']) && is_array($table['initialization'])) { - $result = $this->initializeTable($table_name, $table); - if (PEAR::isError($result)) { - return $result; - } - } - - if (!empty($table['indexes']) && is_array($table['indexes'])) { - $result = $this->createTableIndexes($table_name, $table['indexes'], $overwrite); - if (PEAR::isError($result)) { - return $result; - } - } - - if (!empty($table['constraints']) && is_array($table['constraints'])) { - $result = $this->createTableConstraints($table_name, $table['constraints'], $overwrite); - if (PEAR::isError($result)) { - return $result; - } - } - - return MDB2_OK; - } - - // }}} - // {{{ initializeTable() - - /** - * Inititialize the table with data - * - * @param string $table_name name of the table - * @param array $table multi dimensional array that contains the - * structure and optional data of the table - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function initializeTable($table_name, $table) - { - $query_insertselect = 'INSERT INTO %s (%s) (SELECT %s FROM %s %s)'; - - $query_insert = 'INSERT INTO %s (%s) VALUES (%s)'; - $query_update = 'UPDATE %s SET %s %s'; - $query_delete = 'DELETE FROM %s %s'; - - $table_name = $this->db->quoteIdentifier($table_name, true); - - $result = MDB2_OK; - - $support_transactions = $this->db->supports('transactions'); - - foreach ($table['initialization'] as $instruction) { - $query = ''; - switch ($instruction['type']) { - case 'insert': - if (!isset($instruction['data']['select'])) { - $data = $this->getInstructionFields($instruction['data'], $table['fields']); - if (!empty($data)) { - $fields = implode(', ', array_keys($data)); - $values = implode(', ', array_values($data)); - - $query = sprintf($query_insert, $table_name, $fields, $values); - } - } else { - $data = $this->getInstructionFields($instruction['data']['select'], $table['fields']); - $where = $this->getInstructionWhere($instruction['data']['select'], $table['fields']); - - $select_table_name = $this->db->quoteIdentifier($instruction['data']['select']['table'], true); - if (!empty($data)) { - $fields = implode(', ', array_keys($data)); - $values = implode(', ', array_values($data)); - - $query = sprintf($query_insertselect, $table_name, $fields, $values, $select_table_name, $where); - } - } - break; - case 'update': - $data = $this->getInstructionFields($instruction['data'], $table['fields']); - $where = $this->getInstructionWhere($instruction['data'], $table['fields']); - if (!empty($data)) { - array_walk($data, array($this, 'buildFieldValue')); - $fields_values = implode(', ', $data); - - $query = sprintf($query_update, $table_name, $fields_values, $where); - } - break; - case 'delete': - $where = $this->getInstructionWhere($instruction['data'], $table['fields']); - $query = sprintf($query_delete, $table_name, $where); - break; - } - if ($query) { - if ($support_transactions && PEAR::isError($res = $this->db->beginNestedTransaction())) { - return $res; - } - - $result = $this->db->exec($query); - if (PEAR::isError($result)) { - return $result; - } - - if ($support_transactions && PEAR::isError($res = $this->db->completeNestedTransaction())) { - return $res; - } - } - } - return $result; - } - - // }}} - // {{{ buildFieldValue() - - /** - * Appends the contents of second argument + '=' to the beginning of first - * argument. - * - * Used with array_walk() in initializeTable() for UPDATEs. - * - * @param string &$element value of array's element - * @param string $key key of array's element - * - * @return void - * - * @access public - * @see MDB2_Schema::initializeTable() - */ - function buildFieldValue(&$element, $key) - { - $element = $key."=$element"; - } - - // }}} - // {{{ getExpression() - - /** - * Generates a string that represents a value that would be associated - * with a column in a DML instruction. - * - * @param array $element multi dimensional array that contains the - * structure of the current DML instruction. - * @param array $fields_definition multi dimensional array that contains the - * definition for current table's fields - * @param string $type type of given field - * - * @return string - * - * @access public - * @see MDB2_Schema::getInstructionFields(), MDB2_Schema::getInstructionWhere() - */ - function getExpression($element, $fields_definition = array(), $type = null) - { - $str = ''; - switch ($element['type']) { - case 'null': - $str .= 'NULL'; - break; - case 'value': - $str .= $this->db->quote($element['data'], $type); - break; - case 'column': - $str .= $this->db->quoteIdentifier($element['data'], true); - break; - case 'function': - $arguments = array(); - if (!empty($element['data']['arguments']) - && is_array($element['data']['arguments']) - ) { - foreach ($element['data']['arguments'] as $v) { - $arguments[] = $this->getExpression($v, $fields_definition); - } - } - if (method_exists($this->db->function, $element['data']['name'])) { - $user_func = array(&$this->db->function, $element['data']['name']); - - $str .= call_user_func_array($user_func, $arguments); - } else { - $str .= $element['data']['name'].'('; - $str .= implode(', ', $arguments); - $str .= ')'; - } - break; - case 'expression': - $type0 = $type1 = null; - if ($element['data']['operants'][0]['type'] == 'column' - && array_key_exists($element['data']['operants'][0]['data'], $fields_definition) - ) { - $type0 = $fields_definition[$element['data']['operants'][0]['data']]['type']; - } - - if ($element['data']['operants'][1]['type'] == 'column' - && array_key_exists($element['data']['operants'][1]['data'], $fields_definition) - ) { - $type1 = $fields_definition[$element['data']['operants'][1]['data']]['type']; - } - - $str .= '('; - $str .= $this->getExpression($element['data']['operants'][0], $fields_definition, $type1); - $str .= $this->getOperator($element['data']['operator']); - $str .= $this->getExpression($element['data']['operants'][1], $fields_definition, $type0); - $str .= ')'; - break; - } - - return $str; - } - - // }}} - // {{{ getOperator() - - /** - * Returns the matching SQL operator - * - * @param string $op parsed descriptive operator - * - * @return string matching SQL operator - * - * @access public - * @static - * @see MDB2_Schema::getExpression() - */ - function getOperator($op) - { - switch ($op) { - case 'PLUS': - return ' + '; - case 'MINUS': - return ' - '; - case 'TIMES': - return ' * '; - case 'DIVIDED': - return ' / '; - case 'EQUAL': - return ' = '; - case 'NOT EQUAL': - return ' != '; - case 'LESS THAN': - return ' < '; - case 'GREATER THAN': - return ' > '; - case 'LESS THAN OR EQUAL': - return ' <= '; - case 'GREATER THAN OR EQUAL': - return ' >= '; - default: - return ' '.$op.' '; - } - } - - // }}} - // {{{ getInstructionFields() - - /** - * Walks the parsed DML instruction array, field by field, - * storing them and their processed values inside a new array. - * - * @param array $instruction multi dimensional array that contains the - * structure of the current DML instruction. - * @param array $fields_definition multi dimensional array that contains the - * definition for current table's fields - * - * @return array array of strings in the form 'field_name' => 'value' - * - * @access public - * @static - * @see MDB2_Schema::initializeTable() - */ - function getInstructionFields($instruction, $fields_definition = array()) - { - $fields = array(); - if (!empty($instruction['field']) && is_array($instruction['field'])) { - foreach ($instruction['field'] as $field) { - $field_name = $this->db->quoteIdentifier($field['name'], true); - - $fields[$field_name] = $this->getExpression($field['group'], $fields_definition); - } - } - return $fields; - } - - // }}} - // {{{ getInstructionWhere() - - /** - * Translates the parsed WHERE expression of a DML instruction - * (array structure) to a SQL WHERE clause (string). - * - * @param array $instruction multi dimensional array that contains the - * structure of the current DML instruction. - * @param array $fields_definition multi dimensional array that contains the - * definition for current table's fields. - * - * @return string SQL WHERE clause - * - * @access public - * @static - * @see MDB2_Schema::initializeTable() - */ - function getInstructionWhere($instruction, $fields_definition = array()) - { - $where = ''; - if (!empty($instruction['where'])) { - $where = 'WHERE '.$this->getExpression($instruction['where'], $fields_definition); - } - return $where; - } - - // }}} - // {{{ createSequence() - - /** - * Create a sequence - * - * @param string $sequence_name name of the sequence to be created - * @param array $sequence multi dimensional array that contains the - * structure and optional data of the table - * @param bool $overwrite if the sequence should be overwritten if it already exists - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function createSequence($sequence_name, $sequence, $overwrite = false) - { - if (!$this->db->supports('sequences')) { - $this->db->debug('Sequences are not supported', __FUNCTION__); - return MDB2_OK; - } - - $errorcodes = array(MDB2_ERROR_UNSUPPORTED, MDB2_ERROR_NOT_CAPABLE); - $this->db->expectError($errorcodes); - $sequences = $this->db->manager->listSequences(); - $this->db->popExpect(); - if (PEAR::isError($sequences)) { - if (!MDB2::isError($sequences, $errorcodes)) { - return $sequences; - } - } elseif (is_array($sequence) && in_array($sequence_name, $sequences)) { - if (!$overwrite) { - $this->db->debug('Sequence already exists: '.$sequence_name, __FUNCTION__); - return MDB2_OK; - } - - $result = $this->db->manager->dropSequence($sequence_name); - if (PEAR::isError($result)) { - return $result; - } - $this->db->debug('Overwritting sequence: '.$sequence_name, __FUNCTION__); - } - - $start = 1; - $field = ''; - if (!empty($sequence['on'])) { - $table = $sequence['on']['table']; - $field = $sequence['on']['field']; - - $errorcodes = array(MDB2_ERROR_UNSUPPORTED, MDB2_ERROR_NOT_CAPABLE); - $this->db->expectError($errorcodes); - $tables = $this->db->manager->listTables(); - $this->db->popExpect(); - if (PEAR::isError($tables) && !MDB2::isError($tables, $errorcodes)) { - return $tables; - } - - if (!PEAR::isError($tables) && is_array($tables) && in_array($table, $tables)) { - if ($this->db->supports('summary_functions')) { - $query = "SELECT MAX($field) FROM ".$this->db->quoteIdentifier($table, true); - } else { - $query = "SELECT $field FROM ".$this->db->quoteIdentifier($table, true)." ORDER BY $field DESC"; - } - $start = $this->db->queryOne($query, 'integer'); - if (PEAR::isError($start)) { - return $start; - } - ++$start; - } else { - $this->warnings[] = 'Could not sync sequence: '.$sequence_name; - } - } elseif (!empty($sequence['start']) && is_numeric($sequence['start'])) { - $start = $sequence['start']; - $table = ''; - } - - $result = $this->db->manager->createSequence($sequence_name, $start); - if (PEAR::isError($result)) { - return $result; - } - - return MDB2_OK; - } - - // }}} - // {{{ createDatabase() - - /** - * Create a database space within which may be created database objects - * like tables, indexes and sequences. The implementation of this function - * is highly DBMS specific and may require special permissions to run - * successfully. Consult the documentation or the DBMS drivers that you - * use to be aware of eventual configuration requirements. - * - * @param array $database_definition multi dimensional array that contains the current definition - * @param array $options an array of options to be passed to the - * database specific driver version of - * MDB2_Driver_Manager_Common::createTable(). - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function createDatabase($database_definition, $options = array()) - { - if (!isset($database_definition['name']) || !$database_definition['name']) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'no valid database name specified'); - } - - $create = (isset($database_definition['create']) && $database_definition['create']); - $overwrite = (isset($database_definition['overwrite']) && $database_definition['overwrite']); - - /** - * - * We need to clean up database name before any query to prevent - * database driver from using a inexistent database - * - */ - $previous_database_name = $this->db->setDatabase(''); - - // Lower / Upper case the db name if the portability deems so. - if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) { - $func = $this->db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'; - - $db_name = $func($database_definition['name']); - } else { - $db_name = $database_definition['name']; - } - - if ($create) { - - $dbExists = $this->db->databaseExists($db_name); - if (PEAR::isError($dbExists)) { - return $dbExists; - } - - if ($dbExists && $overwrite) { - $this->db->expectError(MDB2_ERROR_CANNOT_DROP); - $result = $this->db->manager->dropDatabase($db_name); - $this->db->popExpect(); - if (PEAR::isError($result) && !MDB2::isError($result, MDB2_ERROR_CANNOT_DROP)) { - return $result; - } - $dbExists = false; - $this->db->debug('Overwritting database: ' . $db_name, __FUNCTION__); - } - - $dbOptions = array(); - if (array_key_exists('charset', $database_definition) - && !empty($database_definition['charset'])) { - $dbOptions['charset'] = $database_definition['charset']; - } - - if ($dbExists) { - $this->db->debug('Database already exists: ' . $db_name, __FUNCTION__); - if (!empty($dbOptions)) { - $errorcodes = array(MDB2_ERROR_UNSUPPORTED, MDB2_ERROR_NO_PERMISSION); - $this->db->expectError($errorcodes); - $result = $this->db->manager->alterDatabase($db_name, $dbOptions); - $this->db->popExpect(); - if (PEAR::isError($result) && !MDB2::isError($result, $errorcodes)) { - return $result; - } - } - $create = false; - } else { - $this->db->expectError(MDB2_ERROR_UNSUPPORTED); - $result = $this->db->manager->createDatabase($db_name, $dbOptions); - $this->db->popExpect(); - if (PEAR::isError($result) && !MDB2::isError($result, MDB2_ERROR_UNSUPPORTED)) { - return $result; - } - $this->db->debug('Creating database: ' . $db_name, __FUNCTION__); - } - } - - $this->db->setDatabase($db_name); - if (($support_transactions = $this->db->supports('transactions')) - && PEAR::isError($result = $this->db->beginNestedTransaction()) - ) { - return $result; - } - - $created_objects = 0; - if (isset($database_definition['tables']) - && is_array($database_definition['tables']) - ) { - foreach ($database_definition['tables'] as $table_name => $table) { - $result = $this->createTable($table_name, $table, $overwrite, $options); - if (PEAR::isError($result)) { - break; - } - $created_objects++; - } - } - if (!PEAR::isError($result) - && isset($database_definition['sequences']) - && is_array($database_definition['sequences']) - ) { - foreach ($database_definition['sequences'] as $sequence_name => $sequence) { - $result = $this->createSequence($sequence_name, $sequence, false, $overwrite); - - if (PEAR::isError($result)) { - break; - } - $created_objects++; - } - } - - if ($support_transactions) { - $res = $this->db->completeNestedTransaction(); - if (PEAR::isError($res)) { - $result = $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'Could not end transaction ('. - $res->getMessage().' ('.$res->getUserinfo().'))'); - } - } elseif (PEAR::isError($result) && $created_objects) { - $result = $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'the database was only partially created ('. - $result->getMessage().' ('.$result->getUserinfo().'))'); - } - - $this->db->setDatabase($previous_database_name); - - if (PEAR::isError($result) && $create - && PEAR::isError($result2 = $this->db->manager->dropDatabase($db_name)) - ) { - if (!MDB2::isError($result2, MDB2_ERROR_UNSUPPORTED)) { - return $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'Could not drop the created database after unsuccessful creation attempt ('. - $result2->getMessage().' ('.$result2->getUserinfo().'))'); - } - } - - return $result; - } - - // }}} - // {{{ compareDefinitions() - - /** - * Compare a previous definition with the currently parsed definition - * - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * - * @return array|MDB2_Error array of changes on success, or a error object - * @access public - */ - function compareDefinitions($current_definition, $previous_definition) - { - $changes = array(); - - if (!empty($current_definition['tables']) && is_array($current_definition['tables'])) { - $changes['tables'] = $defined_tables = array(); - foreach ($current_definition['tables'] as $table_name => $table) { - $previous_tables = array(); - if (!empty($previous_definition) && is_array($previous_definition)) { - $previous_tables = $previous_definition['tables']; - } - $change = $this->compareTableDefinitions($table_name, $table, $previous_tables, $defined_tables); - if (PEAR::isError($change)) { - return $change; - } - if (!empty($change)) { - $changes['tables'] = MDB2_Schema::arrayMergeClobber($changes['tables'], $change); - } - } - } - if (!empty($previous_definition['tables']) - && is_array($previous_definition['tables']) - ) { - foreach ($previous_definition['tables'] as $table_name => $table) { - if (empty($defined_tables[$table_name])) { - $changes['tables']['remove'][$table_name] = true; - } - } - } - - if (!empty($current_definition['sequences']) && is_array($current_definition['sequences'])) { - $changes['sequences'] = $defined_sequences = array(); - foreach ($current_definition['sequences'] as $sequence_name => $sequence) { - $previous_sequences = array(); - if (!empty($previous_definition) && is_array($previous_definition)) { - $previous_sequences = $previous_definition['sequences']; - } - - $change = $this->compareSequenceDefinitions($sequence_name, - $sequence, - $previous_sequences, - $defined_sequences); - if (PEAR::isError($change)) { - return $change; - } - if (!empty($change)) { - $changes['sequences'] = MDB2_Schema::arrayMergeClobber($changes['sequences'], $change); - } - } - } - if (!empty($previous_definition['sequences']) - && is_array($previous_definition['sequences']) - ) { - foreach ($previous_definition['sequences'] as $sequence_name => $sequence) { - if (empty($defined_sequences[$sequence_name])) { - $changes['sequences']['remove'][$sequence_name] = true; - } - } - } - - return $changes; - } - - // }}} - // {{{ compareTableFieldsDefinitions() - - /** - * Compare a previous definition with the currently parsed definition - * - * @param string $table_name name of the table - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * - * @return array|MDB2_Error array of changes on success, or a error object - * @access public - */ - function compareTableFieldsDefinitions($table_name, $current_definition, - $previous_definition) - { - $changes = $defined_fields = array(); - - if (is_array($current_definition)) { - foreach ($current_definition as $field_name => $field) { - $was_field_name = $field['was']; - if (!empty($previous_definition[$field_name]) - && ( - (isset($previous_definition[$field_name]['was']) - && $previous_definition[$field_name]['was'] == $was_field_name) - || !isset($previous_definition[$was_field_name]) - )) { - $was_field_name = $field_name; - } - - if (!empty($previous_definition[$was_field_name])) { - if ($was_field_name != $field_name) { - $changes['rename'][$was_field_name] = array('name' => $field_name, 'definition' => $field); - } - - if (!empty($defined_fields[$was_field_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'the field "'.$was_field_name. - '" was specified for more than one field of table'); - } - - $defined_fields[$was_field_name] = true; - - $change = $this->db->compareDefinition($field, $previous_definition[$was_field_name]); - if (PEAR::isError($change)) { - return $change; - } - - if (!empty($change)) { - if (array_key_exists('default', $change) - && $change['default'] - && !array_key_exists('default', $field)) { - $field['default'] = null; - } - - $change['definition'] = $field; - - $changes['change'][$field_name] = $change; - } - } else { - if ($field_name != $was_field_name) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'it was specified a previous field name ("'. - $was_field_name.'") for field "'.$field_name.'" of table "'. - $table_name.'" that does not exist'); - } - - $changes['add'][$field_name] = $field; - } - } - } - - if (isset($previous_definition) && is_array($previous_definition)) { - foreach ($previous_definition as $field_previous_name => $field_previous) { - if (empty($defined_fields[$field_previous_name])) { - $changes['remove'][$field_previous_name] = true; - } - } - } - - return $changes; - } - - // }}} - // {{{ compareTableIndexesDefinitions() - - /** - * Compare a previous definition with the currently parsed definition - * - * @param string $table_name name of the table - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * - * @return array|MDB2_Error array of changes on success, or a error object - * @access public - */ - function compareTableIndexesDefinitions($table_name, $current_definition, - $previous_definition) - { - $changes = $defined_indexes = array(); - - if (is_array($current_definition)) { - foreach ($current_definition as $index_name => $index) { - $was_index_name = $index['was']; - if (!empty($previous_definition[$index_name]) - && isset($previous_definition[$index_name]['was']) - && $previous_definition[$index_name]['was'] == $was_index_name - ) { - $was_index_name = $index_name; - } - if (!empty($previous_definition[$was_index_name])) { - $change = array(); - if ($was_index_name != $index_name) { - $change['name'] = $was_index_name; - } - - if (!empty($defined_indexes[$was_index_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'the index "'.$was_index_name.'" was specified for'. - ' more than one index of table "'.$table_name.'"'); - } - $defined_indexes[$was_index_name] = true; - - $previous_unique = array_key_exists('unique', $previous_definition[$was_index_name]) - ? $previous_definition[$was_index_name]['unique'] : false; - - $unique = array_key_exists('unique', $index) ? $index['unique'] : false; - if ($previous_unique != $unique) { - $change['unique'] = $unique; - } - - $previous_primary = array_key_exists('primary', $previous_definition[$was_index_name]) - ? $previous_definition[$was_index_name]['primary'] : false; - - $primary = array_key_exists('primary', $index) ? $index['primary'] : false; - if ($previous_primary != $primary) { - $change['primary'] = $primary; - } - - $defined_fields = array(); - $previous_fields = $previous_definition[$was_index_name]['fields']; - if (!empty($index['fields']) && is_array($index['fields'])) { - foreach ($index['fields'] as $field_name => $field) { - if (!empty($previous_fields[$field_name])) { - $defined_fields[$field_name] = true; - - $previous_sorting = array_key_exists('sorting', $previous_fields[$field_name]) - ? $previous_fields[$field_name]['sorting'] : ''; - - $sorting = array_key_exists('sorting', $field) ? $field['sorting'] : ''; - if ($previous_sorting != $sorting) { - $change['change'] = true; - } - } else { - $change['change'] = true; - } - } - } - if (isset($previous_fields) && is_array($previous_fields)) { - foreach ($previous_fields as $field_name => $field) { - if (empty($defined_fields[$field_name])) { - $change['change'] = true; - } - } - } - if (!empty($change)) { - $changes['change'][$index_name] = $current_definition[$index_name]; - } - } else { - if ($index_name != $was_index_name) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'it was specified a previous index name ("'.$was_index_name. - ') for index "'.$index_name.'" of table "'.$table_name.'" that does not exist'); - } - $changes['add'][$index_name] = $current_definition[$index_name]; - } - } - } - foreach ($previous_definition as $index_previous_name => $index_previous) { - if (empty($defined_indexes[$index_previous_name])) { - $changes['remove'][$index_previous_name] = $index_previous; - } - } - return $changes; - } - - // }}} - // {{{ compareTableDefinitions() - - /** - * Compare a previous definition with the currently parsed definition - * - * @param string $table_name name of the table - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * @param array &$defined_tables table names in the schema - * - * @return array|MDB2_Error array of changes on success, or a error object - * @access public - */ - function compareTableDefinitions($table_name, $current_definition, - $previous_definition, &$defined_tables) - { - $changes = array(); - - if (is_array($current_definition)) { - $was_table_name = $table_name; - if (!empty($current_definition['was'])) { - $was_table_name = $current_definition['was']; - } - if (!empty($previous_definition[$was_table_name])) { - $changes['change'][$was_table_name] = array(); - if ($was_table_name != $table_name) { - $changes['change'][$was_table_name] = array('name' => $table_name); - } - if (!empty($defined_tables[$was_table_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'the table "'.$was_table_name. - '" was specified for more than one table of the database'); - } - $defined_tables[$was_table_name] = true; - if (!empty($current_definition['fields']) && is_array($current_definition['fields'])) { - $previous_fields = array(); - if (isset($previous_definition[$was_table_name]['fields']) - && is_array($previous_definition[$was_table_name]['fields'])) { - $previous_fields = $previous_definition[$was_table_name]['fields']; - } - - $change = $this->compareTableFieldsDefinitions($table_name, - $current_definition['fields'], - $previous_fields); - - if (PEAR::isError($change)) { - return $change; - } - if (!empty($change)) { - $changes['change'][$was_table_name] = - MDB2_Schema::arrayMergeClobber($changes['change'][$was_table_name], $change); - } - } - if (!empty($current_definition['indexes']) && is_array($current_definition['indexes'])) { - $previous_indexes = array(); - if (isset($previous_definition[$was_table_name]['indexes']) - && is_array($previous_definition[$was_table_name]['indexes'])) { - $previous_indexes = $previous_definition[$was_table_name]['indexes']; - } - $change = $this->compareTableIndexesDefinitions($table_name, - $current_definition['indexes'], - $previous_indexes); - - if (PEAR::isError($change)) { - return $change; - } - if (!empty($change)) { - $changes['change'][$was_table_name]['indexes'] = $change; - } - } - if (empty($changes['change'][$was_table_name])) { - unset($changes['change'][$was_table_name]); - } - if (empty($changes['change'])) { - unset($changes['change']); - } - } else { - if ($table_name != $was_table_name) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'it was specified a previous table name ("'.$was_table_name. - '") for table "'.$table_name.'" that does not exist'); - } - $changes['add'][$table_name] = true; - } - } - - return $changes; - } - - // }}} - // {{{ compareSequenceDefinitions() - - /** - * Compare a previous definition with the currently parsed definition - * - * @param string $sequence_name name of the sequence - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * @param array &$defined_sequences names in the schema - * - * @return array|MDB2_Error array of changes on success, or a error object - * @access public - */ - function compareSequenceDefinitions($sequence_name, $current_definition, - $previous_definition, &$defined_sequences) - { - $changes = array(); - - if (is_array($current_definition)) { - $was_sequence_name = $sequence_name; - if (!empty($previous_definition[$sequence_name]) - && isset($previous_definition[$sequence_name]['was']) - && $previous_definition[$sequence_name]['was'] == $was_sequence_name - ) { - $was_sequence_name = $sequence_name; - } elseif (!empty($current_definition['was'])) { - $was_sequence_name = $current_definition['was']; - } - if (!empty($previous_definition[$was_sequence_name])) { - if ($was_sequence_name != $sequence_name) { - $changes['change'][$was_sequence_name]['name'] = $sequence_name; - } - - if (!empty($defined_sequences[$was_sequence_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'the sequence "'.$was_sequence_name.'" was specified as base'. - ' of more than of sequence of the database'); - } - - $defined_sequences[$was_sequence_name] = true; - - $change = array(); - if (!empty($current_definition['start']) - && isset($previous_definition[$was_sequence_name]['start']) - && $current_definition['start'] != $previous_definition[$was_sequence_name]['start'] - ) { - $change['start'] = $previous_definition[$sequence_name]['start']; - } - if (isset($current_definition['on']['table']) - && isset($previous_definition[$was_sequence_name]['on']['table']) - && $current_definition['on']['table'] != $previous_definition[$was_sequence_name]['on']['table'] - && isset($current_definition['on']['field']) - && isset($previous_definition[$was_sequence_name]['on']['field']) - && $current_definition['on']['field'] != $previous_definition[$was_sequence_name]['on']['field'] - ) { - $change['on'] = $current_definition['on']; - } - if (!empty($change)) { - $changes['change'][$was_sequence_name][$sequence_name] = $change; - } - } else { - if ($sequence_name != $was_sequence_name) { - return $this->raiseError(MDB2_SCHEMA_ERROR_INVALID, null, null, - 'it was specified a previous sequence name ("'.$was_sequence_name. - '") for sequence "'.$sequence_name.'" that does not exist'); - } - $changes['add'][$sequence_name] = true; - } - } - return $changes; - } - // }}} - // {{{ verifyAlterDatabase() - - /** - * Verify that the changes requested are supported - * - * @param array $changes associative array that contains the definition of the changes - * that are meant to be applied to the database structure. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function verifyAlterDatabase($changes) - { - if (!empty($changes['tables']['change']) && is_array($changes['tables']['change'])) { - foreach ($changes['tables']['change'] as $table_name => $table) { - if (!empty($table['indexes']) && is_array($table['indexes'])) { - if (!$this->db->supports('indexes')) { - return $this->raiseError(MDB2_SCHEMA_ERROR_UNSUPPORTED, null, null, - 'indexes are not supported'); - } - $table_changes = count($table['indexes']); - if (!empty($table['indexes']['add'])) { - $table_changes--; - } - if (!empty($table['indexes']['remove'])) { - $table_changes--; - } - if (!empty($table['indexes']['change'])) { - $table_changes--; - } - if ($table_changes) { - return $this->raiseError(MDB2_SCHEMA_ERROR_UNSUPPORTED, null, null, - 'index alteration not yet supported: '.implode(', ', array_keys($table['indexes']))); - } - } - unset($table['indexes']); - $result = $this->db->manager->alterTable($table_name, $table, true); - if (PEAR::isError($result)) { - return $result; - } - } - } - if (!empty($changes['sequences']) && is_array($changes['sequences'])) { - if (!$this->db->supports('sequences')) { - return $this->raiseError(MDB2_SCHEMA_ERROR_UNSUPPORTED, null, null, - 'sequences are not supported'); - } - $sequence_changes = count($changes['sequences']); - if (!empty($changes['sequences']['add'])) { - $sequence_changes--; - } - if (!empty($changes['sequences']['remove'])) { - $sequence_changes--; - } - if (!empty($changes['sequences']['change'])) { - $sequence_changes--; - } - if ($sequence_changes) { - return $this->raiseError(MDB2_SCHEMA_ERROR_UNSUPPORTED, null, null, - 'sequence alteration not yet supported: '.implode(', ', array_keys($changes['sequences']))); - } - } - return MDB2_OK; - } - - // }}} - // {{{ alterDatabaseIndexes() - - /** - * Execute the necessary actions to implement the requested changes - * in the indexes inside a database structure. - * - * @param string $table_name name of the table - * @param array $changes associative array that contains the definition of the changes - * that are meant to be applied to the database structure. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function alterDatabaseIndexes($table_name, $changes) - { - $alterations = 0; - if (empty($changes)) { - return $alterations; - } - - if (!empty($changes['remove']) && is_array($changes['remove'])) { - foreach ($changes['remove'] as $index_name => $index) { - $this->db->expectError(MDB2_ERROR_NOT_FOUND); - if (!empty($index['primary']) || !empty($index['unique'])) { - $result = $this->db->manager->dropConstraint($table_name, $index_name, !empty($index['primary'])); - } else { - $result = $this->db->manager->dropIndex($table_name, $index_name); - } - $this->db->popExpect(); - if (PEAR::isError($result) && !MDB2::isError($result, MDB2_ERROR_NOT_FOUND)) { - return $result; - } - $alterations++; - } - } - if (!empty($changes['change']) && is_array($changes['change'])) { - foreach ($changes['change'] as $index_name => $index) { - /** - * Drop existing index/constraint first. - * Since $changes doesn't tell us whether it's an index or a constraint before the change, - * we have to find out and call the appropriate method. - */ - if (in_array($index_name, $this->db->manager->listTableIndexes($table_name))) { - $result = $this->db->manager->dropIndex($table_name, $index_name); - } elseif (in_array($index_name, $this->db->manager->listTableConstraints($table_name))) { - $result = $this->db->manager->dropConstraint($table_name, $index_name); - } - if (!empty($result) && PEAR::isError($result)) { - return $result; - } - - if (!empty($index['primary']) || !empty($index['unique'])) { - $result = $this->db->manager->createConstraint($table_name, $index_name, $index); - } else { - $result = $this->db->manager->createIndex($table_name, $index_name, $index); - } - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - } - } - if (!empty($changes['add']) && is_array($changes['add'])) { - foreach ($changes['add'] as $index_name => $index) { - if (!empty($index['primary']) || !empty($index['unique'])) { - $result = $this->db->manager->createConstraint($table_name, $index_name, $index); - } else { - $result = $this->db->manager->createIndex($table_name, $index_name, $index); - } - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - } - } - - return $alterations; - } - - // }}} - // {{{ alterDatabaseTables() - - /** - * Execute the necessary actions to implement the requested changes - * in the tables inside a database structure. - * - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * @param array $changes associative array that contains the definition of the changes - * that are meant to be applied to the database structure. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function alterDatabaseTables($current_definition, $previous_definition, $changes) - { - /* FIXME: tables marked to be added are initialized by createTable(), others don't */ - $alterations = 0; - if (empty($changes)) { - return $alterations; - } - - if (!empty($changes['add']) && is_array($changes['add'])) { - foreach ($changes['add'] as $table_name => $table) { - $result = $this->createTable($table_name, $current_definition[$table_name]); - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - } - } - - if ($this->options['drop_obsolete_objects'] - && !empty($changes['remove']) - && is_array($changes['remove']) - ) { - foreach ($changes['remove'] as $table_name => $table) { - $result = $this->db->manager->dropTable($table_name); - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - } - } - - if (!empty($changes['change']) && is_array($changes['change'])) { - foreach ($changes['change'] as $table_name => $table) { - $indexes = array(); - if (!empty($table['indexes'])) { - $indexes = $table['indexes']; - unset($table['indexes']); - } - if (!empty($indexes['remove'])) { - $result = $this->alterDatabaseIndexes($table_name, array('remove' => $indexes['remove'])); - if (PEAR::isError($result)) { - return $result; - } - unset($indexes['remove']); - $alterations += $result; - } - $result = $this->db->manager->alterTable($table_name, $table, false); - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - - // table may be renamed at this point - if (!empty($table['name'])) { - $table_name = $table['name']; - } - - if (!empty($indexes)) { - $result = $this->alterDatabaseIndexes($table_name, $indexes); - if (PEAR::isError($result)) { - return $result; - } - $alterations += $result; - } - } - } - - return $alterations; - } - - // }}} - // {{{ alterDatabaseSequences() - - /** - * Execute the necessary actions to implement the requested changes - * in the sequences inside a database structure. - * - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * @param array $changes associative array that contains the definition of the changes - * that are meant to be applied to the database structure. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function alterDatabaseSequences($current_definition, $previous_definition, $changes) - { - $alterations = 0; - if (empty($changes)) { - return $alterations; - } - - if (!empty($changes['add']) && is_array($changes['add'])) { - foreach ($changes['add'] as $sequence_name => $sequence) { - $result = $this->createSequence($sequence_name, $current_definition[$sequence_name]); - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - } - } - - if ($this->options['drop_obsolete_objects'] - && !empty($changes['remove']) - && is_array($changes['remove']) - ) { - foreach ($changes['remove'] as $sequence_name => $sequence) { - $result = $this->db->manager->dropSequence($sequence_name); - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - } - } - - if (!empty($changes['change']) && is_array($changes['change'])) { - foreach ($changes['change'] as $sequence_name => $sequence) { - $result = $this->db->manager->dropSequence($previous_definition[$sequence_name]['was']); - if (PEAR::isError($result)) { - return $result; - } - $result = $this->createSequence($sequence_name, $sequence); - if (PEAR::isError($result)) { - return $result; - } - $alterations++; - } - } - - return $alterations; - } - - // }}} - // {{{ alterDatabase() - - /** - * Execute the necessary actions to implement the requested changes - * in a database structure. - * - * @param array $current_definition multi dimensional array that contains the current definition - * @param array $previous_definition multi dimensional array that contains the previous definition - * @param array $changes associative array that contains the definition of the changes - * that are meant to be applied to the database structure. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function alterDatabase($current_definition, $previous_definition, $changes) - { - $alterations = 0; - if (empty($changes)) { - return $alterations; - } - - $result = $this->verifyAlterDatabase($changes); - if (PEAR::isError($result)) { - return $result; - } - - if (!empty($current_definition['name'])) { - $previous_database_name = $this->db->setDatabase($current_definition['name']); - } - - if (($support_transactions = $this->db->supports('transactions')) - && PEAR::isError($result = $this->db->beginNestedTransaction()) - ) { - return $result; - } - - if (!empty($changes['tables']) && !empty($current_definition['tables'])) { - $current_tables = isset($current_definition['tables']) ? $current_definition['tables'] : array(); - $previous_tables = isset($previous_definition['tables']) ? $previous_definition['tables'] : array(); - - $result = $this->alterDatabaseTables($current_tables, $previous_tables, $changes['tables']); - if (is_numeric($result)) { - $alterations += $result; - } - } - - if (!PEAR::isError($result) && !empty($changes['sequences'])) { - $current_sequences = isset($current_definition['sequences']) ? $current_definition['sequences'] : array(); - $previous_sequences = isset($previous_definition['sequences']) ? $previous_definition['sequences'] : array(); - - $result = $this->alterDatabaseSequences($current_sequences, $previous_sequences, $changes['sequences']); - if (is_numeric($result)) { - $alterations += $result; - } - } - - if ($support_transactions) { - $res = $this->db->completeNestedTransaction(); - if (PEAR::isError($res)) { - $result = $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'Could not end transaction ('. - $res->getMessage().' ('.$res->getUserinfo().'))'); - } - } elseif (PEAR::isError($result) && $alterations) { - $result = $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'the requested database alterations were only partially implemented ('. - $result->getMessage().' ('.$result->getUserinfo().'))'); - } - - if (isset($previous_database_name)) { - $this->db->setDatabase($previous_database_name); - } - return $result; - } - - // }}} - // {{{ dumpDatabaseChanges() - - /** - * Dump the changes between two database definitions. - * - * @param array $changes associative array that specifies the list of database - * definitions changes as returned by the _compareDefinitions - * manager class function. - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function dumpDatabaseChanges($changes) - { - if (!empty($changes['tables'])) { - if (!empty($changes['tables']['add']) && is_array($changes['tables']['add'])) { - foreach ($changes['tables']['add'] as $table_name => $table) { - $this->db->debug("$table_name:", __FUNCTION__); - $this->db->debug("\tAdded table '$table_name'", __FUNCTION__); - } - } - - if (!empty($changes['tables']['remove']) && is_array($changes['tables']['remove'])) { - if ($this->options['drop_obsolete_objects']) { - foreach ($changes['tables']['remove'] as $table_name => $table) { - $this->db->debug("$table_name:", __FUNCTION__); - $this->db->debug("\tRemoved table '$table_name'", __FUNCTION__); - } - } else { - foreach ($changes['tables']['remove'] as $table_name => $table) { - $this->db->debug("\tObsolete table '$table_name' left as is", __FUNCTION__); - } - } - } - - if (!empty($changes['tables']['change']) && is_array($changes['tables']['change'])) { - foreach ($changes['tables']['change'] as $table_name => $table) { - if (array_key_exists('name', $table)) { - $this->db->debug("\tRenamed table '$table_name' to '".$table['name']."'", __FUNCTION__); - } - if (!empty($table['add']) && is_array($table['add'])) { - foreach ($table['add'] as $field_name => $field) { - $this->db->debug("\tAdded field '".$field_name."'", __FUNCTION__); - } - } - if (!empty($table['remove']) && is_array($table['remove'])) { - foreach ($table['remove'] as $field_name => $field) { - $this->db->debug("\tRemoved field '".$field_name."'", __FUNCTION__); - } - } - if (!empty($table['rename']) && is_array($table['rename'])) { - foreach ($table['rename'] as $field_name => $field) { - $this->db->debug("\tRenamed field '".$field_name."' to '".$field['name']."'", __FUNCTION__); - } - } - if (!empty($table['change']) && is_array($table['change'])) { - foreach ($table['change'] as $field_name => $field) { - $field = $field['definition']; - if (array_key_exists('type', $field)) { - $this->db->debug("\tChanged field '$field_name' type to '".$field['type']."'", __FUNCTION__); - } - - if (array_key_exists('unsigned', $field)) { - $this->db->debug("\tChanged field '$field_name' type to '". - (!empty($field['unsigned']) && $field['unsigned'] ? '' : 'not ')."unsigned'", - __FUNCTION__); - } - - if (array_key_exists('length', $field)) { - $this->db->debug("\tChanged field '$field_name' length to '". - (!empty($field['length']) ? $field['length']: 'no length')."'", __FUNCTION__); - } - if (array_key_exists('default', $field)) { - $this->db->debug("\tChanged field '$field_name' default to ". - (isset($field['default']) ? "'".$field['default']."'" : 'NULL'), __FUNCTION__); - } - - if (array_key_exists('notnull', $field)) { - $this->db->debug("\tChanged field '$field_name' notnull to ". - (!empty($field['notnull']) && $field['notnull'] ? 'true' : 'false'), - __FUNCTION__); - } - } - } - if (!empty($table['indexes']) && is_array($table['indexes'])) { - if (!empty($table['indexes']['add']) && is_array($table['indexes']['add'])) { - foreach ($table['indexes']['add'] as $index_name => $index) { - $this->db->debug("\tAdded index '".$index_name. - "' of table '$table_name'", __FUNCTION__); - } - } - if (!empty($table['indexes']['remove']) && is_array($table['indexes']['remove'])) { - foreach ($table['indexes']['remove'] as $index_name => $index) { - $this->db->debug("\tRemoved index '".$index_name. - "' of table '$table_name'", __FUNCTION__); - } - } - if (!empty($table['indexes']['change']) && is_array($table['indexes']['change'])) { - foreach ($table['indexes']['change'] as $index_name => $index) { - if (array_key_exists('name', $index)) { - $this->db->debug("\tRenamed index '".$index_name."' to '".$index['name']. - "' on table '$table_name'", __FUNCTION__); - } - if (array_key_exists('unique', $index)) { - $this->db->debug("\tChanged index '".$index_name."' unique to '". - !empty($index['unique'])."' on table '$table_name'", __FUNCTION__); - } - if (array_key_exists('primary', $index)) { - $this->db->debug("\tChanged index '".$index_name."' primary to '". - !empty($index['primary'])."' on table '$table_name'", __FUNCTION__); - } - if (array_key_exists('change', $index)) { - $this->db->debug("\tChanged index '".$index_name. - "' on table '$table_name'", __FUNCTION__); - } - } - } - } - } - } - } - if (!empty($changes['sequences'])) { - if (!empty($changes['sequences']['add']) && is_array($changes['sequences']['add'])) { - foreach ($changes['sequences']['add'] as $sequence_name => $sequence) { - $this->db->debug("$sequence_name:", __FUNCTION__); - $this->db->debug("\tAdded sequence '$sequence_name'", __FUNCTION__); - } - } - if (!empty($changes['sequences']['remove']) && is_array($changes['sequences']['remove'])) { - if ($this->options['drop_obsolete_objects']) { - foreach ($changes['sequences']['remove'] as $sequence_name => $sequence) { - $this->db->debug("$sequence_name:", __FUNCTION__); - $this->db->debug("\tRemoved sequence '$sequence_name'", __FUNCTION__); - } - } else { - foreach ($changes['sequences']['remove'] as $sequence_name => $sequence) { - $this->db->debug("\tObsolete sequence '$sequence_name' left as is", __FUNCTION__); - } - } - } - if (!empty($changes['sequences']['change']) && is_array($changes['sequences']['change'])) { - foreach ($changes['sequences']['change'] as $sequence_name => $sequence) { - if (array_key_exists('name', $sequence)) { - $this->db->debug("\tRenamed sequence '$sequence_name' to '". - $sequence['name']."'", __FUNCTION__); - } - if (!empty($sequence['change']) && is_array($sequence['change'])) { - foreach ($sequence['change'] as $sequence_name => $sequence) { - if (array_key_exists('start', $sequence)) { - $this->db->debug("\tChanged sequence '$sequence_name' start to '". - $sequence['start']."'", __FUNCTION__); - } - } - } - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ dumpDatabase() - - /** - * Dump a previously parsed database structure in the Metabase schema - * XML based format suitable for the Metabase parser. This function - * may optionally dump the database definition with initialization - * commands that specify the data that is currently present in the tables. - * - * @param array $database_definition multi dimensional array that contains the current definition - * @param array $arguments associative array that takes pairs of tag - * names and values that define dump options. - *
array (
-     *                     'output_mode'    =>    String
-     *                         'file' :   dump into a file
-     *                         default:   dump using a function
-     *                     'output'        =>    String
-     *                         depending on the 'Output_Mode'
-     *                                  name of the file
-     *                                  name of the function
-     *                     'end_of_line'        =>    String
-     *                         end of line delimiter that should be used
-     *                         default: "\n"
-     *                 );
- * @param int $dump Int that determines what data to dump - * + MDB2_SCHEMA_DUMP_ALL : the entire db - * + MDB2_SCHEMA_DUMP_STRUCTURE : only the structure of the db - * + MDB2_SCHEMA_DUMP_CONTENT : only the content of the db - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function dumpDatabase($database_definition, $arguments, $dump = MDB2_SCHEMA_DUMP_ALL) - { - $class_name = $this->options['writer']; - - $result = MDB2::loadClass($class_name, $this->db->getOption('debug')); - if (PEAR::isError($result)) { - return $result; - } - - // get initialization data - if (isset($database_definition['tables']) && is_array($database_definition['tables']) - && $dump == MDB2_SCHEMA_DUMP_ALL || $dump == MDB2_SCHEMA_DUMP_CONTENT - ) { - foreach ($database_definition['tables'] as $table_name => $table) { - $fields = array(); - $fieldsq = array(); - foreach ($table['fields'] as $field_name => $field) { - $fields[$field_name] = $field['type']; - - $fieldsq[] = $this->db->quoteIdentifier($field_name, true); - } - - $query = 'SELECT '.implode(', ', $fieldsq).' FROM '; - $query .= $this->db->quoteIdentifier($table_name, true); - - $data = $this->db->queryAll($query, $fields, MDB2_FETCHMODE_ASSOC); - - if (PEAR::isError($data)) { - return $data; - } - - if (!empty($data)) { - $initialization = array(); - $lob_buffer_length = $this->db->getOption('lob_buffer_length'); - foreach ($data as $row) { - $rows = array(); - foreach ($row as $key => $lob) { - if (is_resource($lob)) { - $value = ''; - while (!feof($lob)) { - $value .= fread($lob, $lob_buffer_length); - } - $row[$key] = $value; - } - $rows[] = array('name' => $key, 'group' => array('type' => 'value', 'data' => $row[$key])); - } - $initialization[] = array('type' => 'insert', 'data' => array('field' => $rows)); - } - $database_definition['tables'][$table_name]['initialization'] = $initialization; - } - } - } - - $writer = new $class_name($this->options['valid_types']); - return $writer->dumpDatabase($database_definition, $arguments, $dump); - } - - // }}} - // {{{ writeInitialization() - - /** - * Write initialization and sequences - * - * @param string|array $data data file or data array - * @param string|array $structure structure file or array - * @param array $variables associative array that is passed to the argument - * of the same name to the parseDatabaseDefinitionFile function. (there third - * param) - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function writeInitialization($data, $structure = false, $variables = array()) - { - if ($structure) { - $structure = $this->parseDatabaseDefinition($structure, false, $variables); - if (PEAR::isError($structure)) { - return $structure; - } - } - - $data = $this->parseDatabaseDefinition($data, false, $variables, false, $structure); - if (PEAR::isError($data)) { - return $data; - } - - $previous_database_name = null; - if (!empty($data['name'])) { - $previous_database_name = $this->db->setDatabase($data['name']); - } elseif (!empty($structure['name'])) { - $previous_database_name = $this->db->setDatabase($structure['name']); - } - - if (!empty($data['tables']) && is_array($data['tables'])) { - foreach ($data['tables'] as $table_name => $table) { - if (empty($table['initialization'])) { - continue; - } - $result = $this->initializeTable($table_name, $table); - if (PEAR::isError($result)) { - return $result; - } - } - } - - if (!empty($structure['sequences']) && is_array($structure['sequences'])) { - foreach ($structure['sequences'] as $sequence_name => $sequence) { - if (isset($data['sequences'][$sequence_name]) - || !isset($sequence['on']['table']) - || !isset($data['tables'][$sequence['on']['table']]) - ) { - continue; - } - $result = $this->createSequence($sequence_name, $sequence, true); - if (PEAR::isError($result)) { - return $result; - } - } - } - if (!empty($data['sequences']) && is_array($data['sequences'])) { - foreach ($data['sequences'] as $sequence_name => $sequence) { - $result = $this->createSequence($sequence_name, $sequence, true); - if (PEAR::isError($result)) { - return $result; - } - } - } - - if (isset($previous_database_name)) { - $this->db->setDatabase($previous_database_name); - } - - return MDB2_OK; - } - - // }}} - // {{{ updateDatabase() - - /** - * Compare the correspondent files of two versions of a database schema - * definition: the previously installed and the one that defines the schema - * that is meant to update the database. - * If the specified previous definition file does not exist, this function - * will create the database from the definition specified in the current - * schema file. - * If both files exist, the function assumes that the database was previously - * installed based on the previous schema file and will update it by just - * applying the changes. - * If this function succeeds, the contents of the current schema file are - * copied to replace the previous schema file contents. Any subsequent schema - * changes should only be done on the file specified by the $current_schema_file - * to let this function make a consistent evaluation of the exact changes that - * need to be applied. - * - * @param string|array $current_schema filename or array of the updated database schema definition. - * @param string|array $previous_schema filename or array of the previously installed database schema definition. - * @param array $variables associative array that is passed to the argument of the same - * name to the parseDatabaseDefinitionFile function. (there third param) - * @param bool $disable_query determines if the disable_query option should be set to true - * for the alterDatabase() or createDatabase() call - * @param bool $overwrite_old_schema_file Overwrite? - * - * @return bool|MDB2_Error MDB2_OK or error object - * @access public - */ - function updateDatabase($current_schema, $previous_schema = false, - $variables = array(), $disable_query = false, - $overwrite_old_schema_file = false) - { - $current_definition = $this->parseDatabaseDefinition($current_schema, false, $variables, - $this->options['fail_on_invalid_names']); - - if (PEAR::isError($current_definition)) { - return $current_definition; - } - - $previous_definition = false; - if ($previous_schema) { - $previous_definition = $this->parseDatabaseDefinition($previous_schema, true, $variables, - $this->options['fail_on_invalid_names']); - if (PEAR::isError($previous_definition)) { - return $previous_definition; - } - } - - if ($previous_definition) { - $dbExists = $this->db->databaseExists($current_definition['name']); - if (PEAR::isError($dbExists)) { - return $dbExists; - } - - if (!$dbExists) { - return $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'database to update does not exist: '.$current_definition['name']); - } - - $changes = $this->compareDefinitions($current_definition, $previous_definition); - if (PEAR::isError($changes)) { - return $changes; - } - - if (is_array($changes)) { - $this->db->setOption('disable_query', $disable_query); - $result = $this->alterDatabase($current_definition, $previous_definition, $changes); - $this->db->setOption('disable_query', false); - if (PEAR::isError($result)) { - return $result; - } - $copy = true; - if ($this->db->options['debug']) { - $result = $this->dumpDatabaseChanges($changes); - if (PEAR::isError($result)) { - return $result; - } - } - } - } else { - $this->db->setOption('disable_query', $disable_query); - $result = $this->createDatabase($current_definition); - $this->db->setOption('disable_query', false); - if (PEAR::isError($result)) { - return $result; - } - } - - if ($overwrite_old_schema_file - && !$disable_query - && is_string($previous_schema) && is_string($current_schema) - && !copy($current_schema, $previous_schema)) { - - return $this->raiseError(MDB2_SCHEMA_ERROR, null, null, - 'Could not copy the new database definition file to the current file'); - } - - return MDB2_OK; - } - // }}} - // {{{ errorMessage() - - /** - * Return a textual error message for a MDB2 error code - * - * @param int|array $value integer error code, null to get the - * current error code-message map, - * or an array with a new error code-message map - * - * @return string error message, or false if the error code was not recognized - * @access public - */ - function errorMessage($value = null) - { - static $errorMessages; - if (is_array($value)) { - $errorMessages = $value; - return MDB2_OK; - } elseif (!isset($errorMessages)) { - $errorMessages = array( - MDB2_SCHEMA_ERROR => 'unknown error', - MDB2_SCHEMA_ERROR_PARSE => 'schema parse error', - MDB2_SCHEMA_ERROR_VALIDATE => 'schema validation error', - MDB2_SCHEMA_ERROR_INVALID => 'invalid', - MDB2_SCHEMA_ERROR_UNSUPPORTED => 'not supported', - MDB2_SCHEMA_ERROR_WRITER => 'schema writer error', - ); - } - - if (is_null($value)) { - return $errorMessages; - } - - if (PEAR::isError($value)) { - $value = $value->getCode(); - } - - return !empty($errorMessages[$value]) ? - $errorMessages[$value] : $errorMessages[MDB2_SCHEMA_ERROR]; - } - - // }}} - // {{{ raiseError() - - /** - * This method is used to communicate an error and invoke error - * callbacks etc. Basically a wrapper for PEAR::raiseError - * without the message string. - * - * @param int|PEAR_Error $code integer error code or and PEAR_Error instance - * @param int $mode error mode, see PEAR_Error docs - * error level (E_USER_NOTICE etc). If error mode is - * PEAR_ERROR_CALLBACK, this is the callback function, - * either as a function name, or as an array of an - * object and method name. For other error modes this - * parameter is ignored. - * @param array $options Options, depending on the mode, @see PEAR::setErrorHandling - * @param string $userinfo Extra debug information. Defaults to the last - * query and native error code. - * - * @return object a PEAR error object - * @access public - * @see PEAR_Error - */ - static function &raiseError($code = null, $mode = null, $options = null, $userinfo = null, $dummy1 = null, $dummy2 = null, $dummy3 = false) - { - $err = PEAR::raiseError(null, $code, $mode, $options, - $userinfo, 'MDB2_Schema_Error', true); - return $err; - } - - // }}} - // {{{ isError() - - /** - * Tell whether a value is an MDB2_Schema error. - * - * @param mixed $data the value to test - * @param int $code if $data is an error object, return true only if $code is - * a string and $db->getMessage() == $code or - * $code is an integer and $db->getCode() == $code - * - * @return bool true if parameter is an error - * @access public - */ - static function isError($data, $code = null) - { - if (is_a($data, 'MDB2_Schema_Error')) { - if (is_null($code)) { - return true; - } elseif (is_string($code)) { - return $data->getMessage() === $code; - } else { - $code = (array)$code; - return in_array($data->getCode(), $code); - } - } - return false; - } - - // }}} -} - -/** - * MDB2_Schema_Error implements a class for reporting portable database error - * messages. - * - * @category Database - * @package MDB2_Schema - * @author Stig Bakken - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema_Error extends PEAR_Error -{ - /** - * MDB2_Schema_Error constructor. - * - * @param mixed $code error code, or string with error message. - * @param int $mode what 'error mode' to operate in - * @param int $level what error level to use for $mode & PEAR_ERROR_TRIGGER - * @param mixed $debuginfo additional debug info, such as the last query - * - * @access public - */ - function MDB2_Schema_Error($code = MDB2_SCHEMA_ERROR, $mode = PEAR_ERROR_RETURN, - $level = E_USER_NOTICE, $debuginfo = null) - { - $this->PEAR_Error('MDB2_Schema Error: ' . MDB2_Schema::errorMessage($code), $code, - $mode, $level, $debuginfo); - } -} diff --git a/3rdparty/MDB2/Schema/Parser.php b/3rdparty/MDB2/Schema/Parser.php deleted file mode 100644 index 3c4345661b135dc91b1c6bfe039b02bd9ed18077..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Parser.php +++ /dev/null @@ -1,876 +0,0 @@ - - * @author Igor Feghali - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -require_once 'XML/Parser.php'; -require_once 'MDB2/Schema/Validate.php'; - -/** - * Parses an XML schema file - * - * @category Database - * @package MDB2_Schema - * @author Christian Dickmann - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema_Parser extends XML_Parser -{ - var $database_definition = array(); - - var $elements = array(); - - var $element = ''; - - var $count = 0; - - var $table = array(); - - var $table_name = ''; - - var $field = array(); - - var $field_name = ''; - - var $init = array(); - - var $init_function = array(); - - var $init_expression = array(); - - var $init_field = array(); - - var $index = array(); - - var $index_name = ''; - - var $constraint = array(); - - var $constraint_name = ''; - - var $var_mode = false; - - var $variables = array(); - - var $sequence = array(); - - var $sequence_name = ''; - - var $error; - - var $structure = false; - - var $val; - - /** - * PHP 5 constructor - * - * @param array $variables mixed array with user defined schema - * variables - * @param bool $fail_on_invalid_names array with reserved words per RDBMS - * @param array $structure multi dimensional array with - * database schema and data - * @param array $valid_types information of all valid fields - * types - * @param bool $force_defaults if true sets a default value to - * field when not explicit - * @param int $max_identifiers_length maximum allowed size for entities - * name - * - * @return void - * - * @access public - * @static - */ - function __construct($variables, $fail_on_invalid_names = true, - $structure = false, $valid_types = array(), $force_defaults = true, - $max_identifiers_length = null - ) { - // force ISO-8859-1 due to different defaults for PHP4 and PHP5 - // todo: this probably needs to be investigated some more andcleaned up - parent::__construct('ISO-8859-1'); - - $this->variables = $variables; - $this->structure = $structure; - $this->val = new MDB2_Schema_Validate( - $fail_on_invalid_names, - $valid_types, - $force_defaults, - $max_identifiers_length - ); - } - - /** - * Triggered when reading a XML open tag - * - * @param resource $xp xml parser resource - * @param string $element element name - * @param array $attribs attributes - * - * @return void - * @access private - * @static - */ - function startHandler($xp, $element, &$attribs) - { - if (strtolower($element) == 'variable') { - $this->var_mode = true; - return; - } - - $this->elements[$this->count++] = strtolower($element); - - $this->element = implode('-', $this->elements); - - switch ($this->element) { - /* Initialization */ - case 'database-table-initialization': - $this->table['initialization'] = array(); - break; - - /* Insert */ - /* insert: field+ */ - case 'database-table-initialization-insert': - $this->init = array('type' => 'insert', 'data' => array('field' => array())); - break; - /* insert-select: field+, table, where? */ - case 'database-table-initialization-insert-select': - $this->init['data']['table'] = ''; - break; - - /* Update */ - /* update: field+, where? */ - case 'database-table-initialization-update': - $this->init = array('type' => 'update', 'data' => array('field' => array())); - break; - - /* Delete */ - /* delete: where */ - case 'database-table-initialization-delete': - $this->init = array('type' => 'delete', 'data' => array('where' => array())); - break; - - /* Insert and Update */ - case 'database-table-initialization-insert-field': - case 'database-table-initialization-insert-select-field': - case 'database-table-initialization-update-field': - $this->init_field = array('name' => '', 'group' => array()); - break; - case 'database-table-initialization-insert-field-value': - case 'database-table-initialization-insert-select-field-value': - case 'database-table-initialization-update-field-value': - /* if value tag is empty cdataHandler is not called so we must force value element creation here */ - $this->init_field['group'] = array('type' => 'value', 'data' => ''); - break; - case 'database-table-initialization-insert-field-null': - case 'database-table-initialization-insert-select-field-null': - case 'database-table-initialization-update-field-null': - $this->init_field['group'] = array('type' => 'null'); - break; - case 'database-table-initialization-insert-field-function': - case 'database-table-initialization-insert-select-field-function': - case 'database-table-initialization-update-field-function': - $this->init_function = array('name' => ''); - break; - case 'database-table-initialization-insert-field-expression': - case 'database-table-initialization-insert-select-field-expression': - case 'database-table-initialization-update-field-expression': - $this->init_expression = array(); - break; - - /* All */ - case 'database-table-initialization-insert-select-where': - case 'database-table-initialization-update-where': - case 'database-table-initialization-delete-where': - $this->init['data']['where'] = array('type' => '', 'data' => array()); - break; - case 'database-table-initialization-insert-select-where-expression': - case 'database-table-initialization-update-where-expression': - case 'database-table-initialization-delete-where-expression': - $this->init_expression = array(); - break; - - /* One level simulation of expression-function recursion */ - case 'database-table-initialization-insert-field-expression-function': - case 'database-table-initialization-insert-select-field-expression-function': - case 'database-table-initialization-insert-select-where-expression-function': - case 'database-table-initialization-update-field-expression-function': - case 'database-table-initialization-update-where-expression-function': - case 'database-table-initialization-delete-where-expression-function': - $this->init_function = array('name' => ''); - break; - - /* One level simulation of function-expression recursion */ - case 'database-table-initialization-insert-field-function-expression': - case 'database-table-initialization-insert-select-field-function-expression': - case 'database-table-initialization-insert-select-where-function-expression': - case 'database-table-initialization-update-field-function-expression': - case 'database-table-initialization-update-where-function-expression': - case 'database-table-initialization-delete-where-function-expression': - $this->init_expression = array(); - break; - - /* Definition */ - case 'database': - $this->database_definition = array( - 'name' => '', - 'create' => '', - 'overwrite' => '', - 'charset' => '', - 'description' => '', - 'comments' => '', - 'tables' => array(), - 'sequences' => array() - ); - break; - case 'database-table': - $this->table_name = ''; - - $this->table = array( - 'was' => '', - 'description' => '', - 'comments' => '', - 'fields' => array(), - 'indexes' => array(), - 'constraints' => array(), - 'initialization' => array() - ); - break; - case 'database-table-declaration-field': - case 'database-table-declaration-foreign-field': - case 'database-table-declaration-foreign-references-field': - $this->field_name = ''; - - $this->field = array(); - break; - case 'database-table-declaration-index-field': - $this->field_name = ''; - - $this->field = array('sorting' => '', 'length' => ''); - break; - /* force field attributes to be initialized when the tag is empty in the XML */ - case 'database-table-declaration-field-was': - $this->field['was'] = ''; - break; - case 'database-table-declaration-field-type': - $this->field['type'] = ''; - break; - case 'database-table-declaration-field-fixed': - $this->field['fixed'] = ''; - break; - case 'database-table-declaration-field-default': - $this->field['default'] = ''; - break; - case 'database-table-declaration-field-notnull': - $this->field['notnull'] = ''; - break; - case 'database-table-declaration-field-autoincrement': - $this->field['autoincrement'] = ''; - break; - case 'database-table-declaration-field-unsigned': - $this->field['unsigned'] = ''; - break; - case 'database-table-declaration-field-length': - $this->field['length'] = ''; - break; - case 'database-table-declaration-field-description': - $this->field['description'] = ''; - break; - case 'database-table-declaration-field-comments': - $this->field['comments'] = ''; - break; - case 'database-table-declaration-index': - $this->index_name = ''; - - $this->index = array( - 'was' => '', - 'unique' =>'', - 'primary' => '', - 'fields' => array() - ); - break; - case 'database-table-declaration-foreign': - $this->constraint_name = ''; - - $this->constraint = array( - 'was' => '', - 'match' => '', - 'ondelete' => '', - 'onupdate' => '', - 'deferrable' => '', - 'initiallydeferred' => '', - 'foreign' => true, - 'fields' => array(), - 'references' => array('table' => '', 'fields' => array()) - ); - break; - case 'database-sequence': - $this->sequence_name = ''; - - $this->sequence = array( - 'was' => '', - 'start' => '', - 'description' => '', - 'comments' => '', - ); - break; - } - } - - /** - * Triggered when reading a XML close tag - * - * @param resource $xp xml parser resource - * @param string $element element name - * - * @return void - * @access private - * @static - */ - function endHandler($xp, $element) - { - if (strtolower($element) == 'variable') { - $this->var_mode = false; - return; - } - - switch ($this->element) { - /* Initialization */ - - /* Insert */ - case 'database-table-initialization-insert-select': - $this->init['data'] = array('select' => $this->init['data']); - break; - - /* Insert and Delete */ - case 'database-table-initialization-insert-field': - case 'database-table-initialization-insert-select-field': - case 'database-table-initialization-update-field': - $result = $this->val->validateDataField($this->table['fields'], $this->init['data']['field'], $this->init_field); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->init['data']['field'][] = $this->init_field; - } - break; - case 'database-table-initialization-insert-field-function': - case 'database-table-initialization-insert-select-field-function': - case 'database-table-initialization-update-field-function': - $this->init_field['group'] = array('type' => 'function', 'data' => $this->init_function); - break; - case 'database-table-initialization-insert-field-expression': - case 'database-table-initialization-insert-select-field-expression': - case 'database-table-initialization-update-field-expression': - $this->init_field['group'] = array('type' => 'expression', 'data' => $this->init_expression); - break; - - /* All */ - case 'database-table-initialization-insert-select-where-expression': - case 'database-table-initialization-update-where-expression': - case 'database-table-initialization-delete-where-expression': - $this->init['data']['where']['type'] = 'expression'; - $this->init['data']['where']['data'] = $this->init_expression; - break; - case 'database-table-initialization-insert': - case 'database-table-initialization-delete': - case 'database-table-initialization-update': - $this->table['initialization'][] = $this->init; - break; - - /* One level simulation of expression-function recursion */ - case 'database-table-initialization-insert-field-expression-function': - case 'database-table-initialization-insert-select-field-expression-function': - case 'database-table-initialization-insert-select-where-expression-function': - case 'database-table-initialization-update-field-expression-function': - case 'database-table-initialization-update-where-expression-function': - case 'database-table-initialization-delete-where-expression-function': - $this->init_expression['operants'][] = array('type' => 'function', 'data' => $this->init_function); - break; - - /* One level simulation of function-expression recursion */ - case 'database-table-initialization-insert-field-function-expression': - case 'database-table-initialization-insert-select-field-function-expression': - case 'database-table-initialization-insert-select-where-function-expression': - case 'database-table-initialization-update-field-function-expression': - case 'database-table-initialization-update-where-function-expression': - case 'database-table-initialization-delete-where-function-expression': - $this->init_function['arguments'][] = array('type' => 'expression', 'data' => $this->init_expression); - break; - - /* Table definition */ - case 'database-table': - $result = $this->val->validateTable($this->database_definition['tables'], $this->table, $this->table_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->database_definition['tables'][$this->table_name] = $this->table; - } - break; - case 'database-table-name': - if (isset($this->structure['tables'][$this->table_name])) { - $this->table = $this->structure['tables'][$this->table_name]; - } - break; - - /* Field declaration */ - case 'database-table-declaration-field': - $result = $this->val->validateField($this->table['fields'], $this->field, $this->field_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->table['fields'][$this->field_name] = $this->field; - } - break; - - /* Index declaration */ - case 'database-table-declaration-index': - $result = $this->val->validateIndex($this->table['indexes'], $this->index, $this->index_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->table['indexes'][$this->index_name] = $this->index; - } - break; - case 'database-table-declaration-index-field': - $result = $this->val->validateIndexField($this->index['fields'], $this->field, $this->field_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->index['fields'][$this->field_name] = $this->field; - } - break; - - /* Foreign Key declaration */ - case 'database-table-declaration-foreign': - $result = $this->val->validateConstraint($this->table['constraints'], $this->constraint, $this->constraint_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->table['constraints'][$this->constraint_name] = $this->constraint; - } - break; - case 'database-table-declaration-foreign-field': - $result = $this->val->validateConstraintField($this->constraint['fields'], $this->field_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->constraint['fields'][$this->field_name] = ''; - } - break; - case 'database-table-declaration-foreign-references-field': - $result = $this->val->validateConstraintReferencedField($this->constraint['references']['fields'], $this->field_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->constraint['references']['fields'][$this->field_name] = ''; - } - break; - - /* Sequence declaration */ - case 'database-sequence': - $result = $this->val->validateSequence($this->database_definition['sequences'], $this->sequence, $this->sequence_name); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } else { - $this->database_definition['sequences'][$this->sequence_name] = $this->sequence; - } - break; - - /* End of File */ - case 'database': - $result = $this->val->validateDatabase($this->database_definition); - if (PEAR::isError($result)) { - $this->raiseError($result->getUserinfo(), 0, $xp, $result->getCode()); - } - break; - } - - unset($this->elements[--$this->count]); - $this->element = implode('-', $this->elements); - } - - /** - * Pushes a MDB2_Schema_Error into stack and returns it - * - * @param string $msg textual message - * @param int $xmlecode PHP's XML parser error code - * @param resource $xp xml parser resource - * @param int $ecode MDB2_Schema's error code - * - * @return object - * @access private - * @static - */ - static function &raiseError($msg = null, $xmlecode = 0, $xp = null, $ecode = MDB2_SCHEMA_ERROR_PARSE, $userinfo = null, - $error_class = null, - $skipmsg = false) - { - if (is_null($this->error)) { - $error = ''; - if (is_resource($msg)) { - $error .= 'Parser error: '.xml_error_string(xml_get_error_code($msg)); - $xp = $msg; - } else { - $error .= 'Parser error: '.$msg; - if (!is_resource($xp)) { - $xp = $this->parser; - } - } - - if ($error_string = xml_error_string($xmlecode)) { - $error .= ' - '.$error_string; - } - - if (is_resource($xp)) { - $byte = @xml_get_current_byte_index($xp); - $line = @xml_get_current_line_number($xp); - $column = @xml_get_current_column_number($xp); - $error .= " - Byte: $byte; Line: $line; Col: $column"; - } - - $error .= "\n"; - - $this->error = MDB2_Schema::raiseError($ecode, null, null, $error); - } - return $this->error; - } - - /** - * Triggered when reading data in a XML element (text between tags) - * - * @param resource $xp xml parser resource - * @param string $data text - * - * @return void - * @access private - * @static - */ - function cdataHandler($xp, $data) - { - if ($this->var_mode == true) { - if (!isset($this->variables[$data])) { - $this->raiseError('variable "'.$data.'" not found', null, $xp); - return; - } - $data = $this->variables[$data]; - } - - switch ($this->element) { - /* Initialization */ - - /* Insert */ - case 'database-table-initialization-insert-select-table': - $this->init['data']['table'] = $data; - break; - - /* Insert and Update */ - case 'database-table-initialization-insert-field-name': - case 'database-table-initialization-insert-select-field-name': - case 'database-table-initialization-update-field-name': - $this->init_field['name'] .= $data; - break; - case 'database-table-initialization-insert-field-value': - case 'database-table-initialization-insert-select-field-value': - case 'database-table-initialization-update-field-value': - $this->init_field['group']['data'] .= $data; - break; - case 'database-table-initialization-insert-field-function-name': - case 'database-table-initialization-insert-select-field-function-name': - case 'database-table-initialization-update-field-function-name': - $this->init_function['name'] .= $data; - break; - case 'database-table-initialization-insert-field-function-value': - case 'database-table-initialization-insert-select-field-function-value': - case 'database-table-initialization-update-field-function-value': - $this->init_function['arguments'][] = array('type' => 'value', 'data' => $data); - break; - case 'database-table-initialization-insert-field-function-column': - case 'database-table-initialization-insert-select-field-function-column': - case 'database-table-initialization-update-field-function-column': - $this->init_function['arguments'][] = array('type' => 'column', 'data' => $data); - break; - case 'database-table-initialization-insert-field-column': - case 'database-table-initialization-insert-select-field-column': - case 'database-table-initialization-update-field-column': - $this->init_field['group'] = array('type' => 'column', 'data' => $data); - break; - - /* All */ - case 'database-table-initialization-insert-field-expression-operator': - case 'database-table-initialization-insert-select-field-expression-operator': - case 'database-table-initialization-insert-select-where-expression-operator': - case 'database-table-initialization-update-field-expression-operator': - case 'database-table-initialization-update-where-expression-operator': - case 'database-table-initialization-delete-where-expression-operator': - $this->init_expression['operator'] = $data; - break; - case 'database-table-initialization-insert-field-expression-value': - case 'database-table-initialization-insert-select-field-expression-value': - case 'database-table-initialization-insert-select-where-expression-value': - case 'database-table-initialization-update-field-expression-value': - case 'database-table-initialization-update-where-expression-value': - case 'database-table-initialization-delete-where-expression-value': - $this->init_expression['operants'][] = array('type' => 'value', 'data' => $data); - break; - case 'database-table-initialization-insert-field-expression-column': - case 'database-table-initialization-insert-select-field-expression-column': - case 'database-table-initialization-insert-select-where-expression-column': - case 'database-table-initialization-update-field-expression-column': - case 'database-table-initialization-update-where-expression-column': - case 'database-table-initialization-delete-where-expression-column': - $this->init_expression['operants'][] = array('type' => 'column', 'data' => $data); - break; - - case 'database-table-initialization-insert-field-function-function': - case 'database-table-initialization-insert-field-function-expression': - case 'database-table-initialization-insert-field-expression-expression': - case 'database-table-initialization-update-field-function-function': - case 'database-table-initialization-update-field-function-expression': - case 'database-table-initialization-update-field-expression-expression': - case 'database-table-initialization-update-where-expression-expression': - case 'database-table-initialization-delete-where-expression-expression': - /* Recursion to be implemented yet */ - break; - - /* One level simulation of expression-function recursion */ - case 'database-table-initialization-insert-field-expression-function-name': - case 'database-table-initialization-insert-select-field-expression-function-name': - case 'database-table-initialization-insert-select-where-expression-function-name': - case 'database-table-initialization-update-field-expression-function-name': - case 'database-table-initialization-update-where-expression-function-name': - case 'database-table-initialization-delete-where-expression-function-name': - $this->init_function['name'] .= $data; - break; - case 'database-table-initialization-insert-field-expression-function-value': - case 'database-table-initialization-insert-select-field-expression-function-value': - case 'database-table-initialization-insert-select-where-expression-function-value': - case 'database-table-initialization-update-field-expression-function-value': - case 'database-table-initialization-update-where-expression-function-value': - case 'database-table-initialization-delete-where-expression-function-value': - $this->init_function['arguments'][] = array('type' => 'value', 'data' => $data); - break; - case 'database-table-initialization-insert-field-expression-function-column': - case 'database-table-initialization-insert-select-field-expression-function-column': - case 'database-table-initialization-insert-select-where-expression-function-column': - case 'database-table-initialization-update-field-expression-function-column': - case 'database-table-initialization-update-where-expression-function-column': - case 'database-table-initialization-delete-where-expression-function-column': - $this->init_function['arguments'][] = array('type' => 'column', 'data' => $data); - break; - - /* One level simulation of function-expression recursion */ - case 'database-table-initialization-insert-field-function-expression-operator': - case 'database-table-initialization-insert-select-field-function-expression-operator': - case 'database-table-initialization-update-field-function-expression-operator': - $this->init_expression['operator'] = $data; - break; - case 'database-table-initialization-insert-field-function-expression-value': - case 'database-table-initialization-insert-select-field-function-expression-value': - case 'database-table-initialization-update-field-function-expression-value': - $this->init_expression['operants'][] = array('type' => 'value', 'data' => $data); - break; - case 'database-table-initialization-insert-field-function-expression-column': - case 'database-table-initialization-insert-select-field-function-expression-column': - case 'database-table-initialization-update-field-function-expression-column': - $this->init_expression['operants'][] = array('type' => 'column', 'data' => $data); - break; - - /* Database */ - case 'database-name': - $this->database_definition['name'] .= $data; - break; - case 'database-create': - $this->database_definition['create'] .= $data; - break; - case 'database-overwrite': - $this->database_definition['overwrite'] .= $data; - break; - case 'database-charset': - $this->database_definition['charset'] .= $data; - break; - case 'database-description': - $this->database_definition['description'] .= $data; - break; - case 'database-comments': - $this->database_definition['comments'] .= $data; - break; - - /* Table declaration */ - case 'database-table-name': - $this->table_name .= $data; - break; - case 'database-table-was': - $this->table['was'] .= $data; - break; - case 'database-table-description': - $this->table['description'] .= $data; - break; - case 'database-table-comments': - $this->table['comments'] .= $data; - break; - - /* Field declaration */ - case 'database-table-declaration-field-name': - $this->field_name .= $data; - break; - case 'database-table-declaration-field-was': - $this->field['was'] .= $data; - break; - case 'database-table-declaration-field-type': - $this->field['type'] .= $data; - break; - case 'database-table-declaration-field-fixed': - $this->field['fixed'] .= $data; - break; - case 'database-table-declaration-field-default': - $this->field['default'] .= $data; - break; - case 'database-table-declaration-field-notnull': - $this->field['notnull'] .= $data; - break; - case 'database-table-declaration-field-autoincrement': - $this->field['autoincrement'] .= $data; - break; - case 'database-table-declaration-field-unsigned': - $this->field['unsigned'] .= $data; - break; - case 'database-table-declaration-field-length': - $this->field['length'] .= $data; - break; - case 'database-table-declaration-field-description': - $this->field['description'] .= $data; - break; - case 'database-table-declaration-field-comments': - $this->field['comments'] .= $data; - break; - - /* Index declaration */ - case 'database-table-declaration-index-name': - $this->index_name .= $data; - break; - case 'database-table-declaration-index-was': - $this->index['was'] .= $data; - break; - case 'database-table-declaration-index-unique': - $this->index['unique'] .= $data; - break; - case 'database-table-declaration-index-primary': - $this->index['primary'] .= $data; - break; - case 'database-table-declaration-index-field-name': - $this->field_name .= $data; - break; - case 'database-table-declaration-index-field-sorting': - $this->field['sorting'] .= $data; - break; - /* Add by Leoncx */ - case 'database-table-declaration-index-field-length': - $this->field['length'] .= $data; - break; - - /* Foreign Key declaration */ - case 'database-table-declaration-foreign-name': - $this->constraint_name .= $data; - break; - case 'database-table-declaration-foreign-was': - $this->constraint['was'] .= $data; - break; - case 'database-table-declaration-foreign-match': - $this->constraint['match'] .= $data; - break; - case 'database-table-declaration-foreign-ondelete': - $this->constraint['ondelete'] .= $data; - break; - case 'database-table-declaration-foreign-onupdate': - $this->constraint['onupdate'] .= $data; - break; - case 'database-table-declaration-foreign-deferrable': - $this->constraint['deferrable'] .= $data; - break; - case 'database-table-declaration-foreign-initiallydeferred': - $this->constraint['initiallydeferred'] .= $data; - break; - case 'database-table-declaration-foreign-field': - $this->field_name .= $data; - break; - case 'database-table-declaration-foreign-references-table': - $this->constraint['references']['table'] .= $data; - break; - case 'database-table-declaration-foreign-references-field': - $this->field_name .= $data; - break; - - /* Sequence declaration */ - case 'database-sequence-name': - $this->sequence_name .= $data; - break; - case 'database-sequence-was': - $this->sequence['was'] .= $data; - break; - case 'database-sequence-start': - $this->sequence['start'] .= $data; - break; - case 'database-sequence-description': - $this->sequence['description'] .= $data; - break; - case 'database-sequence-comments': - $this->sequence['comments'] .= $data; - break; - case 'database-sequence-on': - $this->sequence['on'] = array('table' => '', 'field' => ''); - break; - case 'database-sequence-on-table': - $this->sequence['on']['table'] .= $data; - break; - case 'database-sequence-on-field': - $this->sequence['on']['field'] .= $data; - break; - } - } -} diff --git a/3rdparty/MDB2/Schema/Parser2.php b/3rdparty/MDB2/Schema/Parser2.php deleted file mode 100644 index f27dffbabf95f8019ca85a0617b240701ca9bf4e..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Parser2.php +++ /dev/null @@ -1,802 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -require_once 'XML/Unserializer.php'; -require_once 'MDB2/Schema/Validate.php'; - -/** - * Parses an XML schema file - * - * @category Database - * @package MDB2_Schema - * @author Lukas Smith - * @author Igor Feghali - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema_Parser2 extends XML_Unserializer -{ - var $database_definition = array(); - - var $database_loaded = array(); - - var $variables = array(); - - var $error; - - var $structure = false; - - var $val; - - var $options = array(); - - var $table = array(); - - var $table_name = ''; - - var $field = array(); - - var $field_name = ''; - - var $index = array(); - - var $index_name = ''; - - var $constraint = array(); - - var $constraint_name = ''; - - var $sequence = array(); - - var $sequence_name = ''; - - var $init = array(); - - /** - * PHP 5 constructor - * - * @param array $variables mixed array with user defined schema - * variables - * @param bool $fail_on_invalid_names array with reserved words per RDBMS - * @param array $structure multi dimensional array with - * database schema and data - * @param array $valid_types information of all valid fields - * types - * @param bool $force_defaults if true sets a default value to - * field when not explicit - * @param int $max_identifiers_length maximum allowed size for entities - * name - * - * @return void - * - * @access public - * @static - */ - function __construct($variables, $fail_on_invalid_names = true, - $structure = false, $valid_types = array(), $force_defaults = true, - $max_identifiers_length = null - ) { - // force ISO-8859-1 due to different defaults for PHP4 and PHP5 - // todo: this probably needs to be investigated some more and cleaned up - $this->options['encoding'] = 'ISO-8859-1'; - - $this->options['XML_UNSERIALIZER_OPTION_ATTRIBUTES_PARSE'] = true; - $this->options['XML_UNSERIALIZER_OPTION_ATTRIBUTES_ARRAYKEY'] = false; - - $this->options['forceEnum'] = array('table', 'field', 'index', 'foreign', 'insert', 'update', 'delete', 'sequence'); - - /* - * todo: find a way to force the following items not to be parsed as arrays - * as it cause problems in functions with multiple arguments - */ - //$this->options['forceNEnum'] = array('value', 'column'); - $this->variables = $variables; - $this->structure = $structure; - - $this->val = new MDB2_Schema_Validate($fail_on_invalid_names, $valid_types, $force_defaults); - parent::XML_Unserializer($this->options); - } - - /** - * Main method. Parses XML Schema File. - * - * @return bool|error object - * - * @access public - */ - function parse() - { - $result = $this->unserialize($this->filename, true); - - if (PEAR::isError($result)) { - return $result; - } else { - $this->database_loaded = $this->getUnserializedData(); - return $this->fixDatabaseKeys($this->database_loaded); - } - } - - /** - * Do the necessary stuff to set the input XML schema file - * - * @param string $filename full path to schema file - * - * @return boolean MDB2_OK on success - * - * @access public - */ - function setInputFile($filename) - { - $this->filename = $filename; - return MDB2_OK; - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works at database level. - * - * @param array $database multi dimensional array with database definition - * and data. - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixDatabaseKeys($database) - { - $this->database_definition = array( - 'name' => '', - 'create' => '', - 'overwrite' => '', - 'charset' => '', - 'description' => '', - 'comments' => '', - 'tables' => array(), - 'sequences' => array() - ); - - if (!empty($database['name'])) { - $this->database_definition['name'] = $database['name']; - } - if (!empty($database['create'])) { - $this->database_definition['create'] = $database['create']; - } - if (!empty($database['overwrite'])) { - $this->database_definition['overwrite'] = $database['overwrite']; - } - if (!empty($database['charset'])) { - $this->database_definition['charset'] = $database['charset']; - } - if (!empty($database['description'])) { - $this->database_definition['description'] = $database['description']; - } - if (!empty($database['comments'])) { - $this->database_definition['comments'] = $database['comments']; - } - - if (!empty($database['table']) && is_array($database['table'])) { - foreach ($database['table'] as $table) { - $this->fixTableKeys($table); - } - } - - if (!empty($database['sequence']) && is_array($database['sequence'])) { - foreach ($database['sequence'] as $sequence) { - $this->fixSequenceKeys($sequence); - } - } - - $result = $this->val->validateDatabase($this->database_definition); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } - - return MDB2_OK; - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works at table level. - * - * @param array $table multi dimensional array with table definition - * and data. - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixTableKeys($table) - { - $this->table = array( - 'was' => '', - 'description' => '', - 'comments' => '', - 'fields' => array(), - 'indexes' => array(), - 'constraints' => array(), - 'initialization' => array() - ); - - if (!empty($table['name'])) { - $this->table_name = $table['name']; - } else { - $this->table_name = ''; - } - if (!empty($table['was'])) { - $this->table['was'] = $table['was']; - } - if (!empty($table['description'])) { - $this->table['description'] = $table['description']; - } - if (!empty($table['comments'])) { - $this->table['comments'] = $table['comments']; - } - - if (!empty($table['declaration']) && is_array($table['declaration'])) { - if (!empty($table['declaration']['field']) && is_array($table['declaration']['field'])) { - foreach ($table['declaration']['field'] as $field) { - $this->fixTableFieldKeys($field); - } - } - - if (!empty($table['declaration']['index']) && is_array($table['declaration']['index'])) { - foreach ($table['declaration']['index'] as $index) { - $this->fixTableIndexKeys($index); - } - } - - if (!empty($table['declaration']['foreign']) && is_array($table['declaration']['foreign'])) { - foreach ($table['declaration']['foreign'] as $constraint) { - $this->fixTableConstraintKeys($constraint); - } - } - } - - if (!empty($table['initialization']) && is_array($table['initialization'])) { - if (!empty($table['initialization']['insert']) && is_array($table['initialization']['insert'])) { - foreach ($table['initialization']['insert'] as $init) { - $this->fixTableInitializationKeys($init, 'insert'); - } - } - if (!empty($table['initialization']['update']) && is_array($table['initialization']['update'])) { - foreach ($table['initialization']['update'] as $init) { - $this->fixTableInitializationKeys($init, 'update'); - } - } - if (!empty($table['initialization']['delete']) && is_array($table['initialization']['delete'])) { - foreach ($table['initialization']['delete'] as $init) { - $this->fixTableInitializationKeys($init, 'delete'); - } - } - } - - $result = $this->val->validateTable($this->database_definition['tables'], $this->table, $this->table_name); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } else { - $this->database_definition['tables'][$this->table_name] = $this->table; - } - - return MDB2_OK; - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works at table field level. - * - * @param array $field array with table field definition - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixTableFieldKeys($field) - { - $this->field = array(); - if (!empty($field['name'])) { - $this->field_name = $field['name']; - } else { - $this->field_name = ''; - } - if (!empty($field['was'])) { - $this->field['was'] = $field['was']; - } - if (!empty($field['type'])) { - $this->field['type'] = $field['type']; - } - if (!empty($field['fixed'])) { - $this->field['fixed'] = $field['fixed']; - } - if (isset($field['default'])) { - $this->field['default'] = $field['default']; - } - if (!empty($field['notnull'])) { - $this->field['notnull'] = $field['notnull']; - } - if (!empty($field['autoincrement'])) { - $this->field['autoincrement'] = $field['autoincrement']; - } - if (!empty($field['unsigned'])) { - $this->field['unsigned'] = $field['unsigned']; - } - if (!empty($field['length'])) { - $this->field['length'] = $field['length']; - } - if (!empty($field['description'])) { - $this->field['description'] = $field['description']; - } - if (!empty($field['comments'])) { - $this->field['comments'] = $field['comments']; - } - - $result = $this->val->validateField($this->table['fields'], $this->field, $this->field_name); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } else { - $this->table['fields'][$this->field_name] = $this->field; - } - - return MDB2_OK; - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works at table index level. - * - * @param array $index array with table index definition - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixTableIndexKeys($index) - { - $this->index = array( - 'was' => '', - 'unique' =>'', - 'primary' => '', - 'fields' => array() - ); - - if (!empty($index['name'])) { - $this->index_name = $index['name']; - } else { - $this->index_name = ''; - } - if (!empty($index['was'])) { - $this->index['was'] = $index['was']; - } - if (!empty($index['unique'])) { - $this->index['unique'] = $index['unique']; - } - if (!empty($index['primary'])) { - $this->index['primary'] = $index['primary']; - } - if (!empty($index['field'])) { - foreach ($index['field'] as $field) { - if (!empty($field['name'])) { - $this->field_name = $field['name']; - } else { - $this->field_name = ''; - } - $this->field = array( - 'sorting' => '', - 'length' => '' - ); - - if (!empty($field['sorting'])) { - $this->field['sorting'] = $field['sorting']; - } - if (!empty($field['length'])) { - $this->field['length'] = $field['length']; - } - - $result = $this->val->validateIndexField($this->index['fields'], $this->field, $this->field_name); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } - - $this->index['fields'][$this->field_name] = $this->field; - } - } - - $result = $this->val->validateIndex($this->table['indexes'], $this->index, $this->index_name); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } else { - $this->table['indexes'][$this->index_name] = $this->index; - } - - return MDB2_OK; - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works at table constraint level. - * - * @param array $constraint array with table index definition - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixTableConstraintKeys($constraint) - { - $this->constraint = array( - 'was' => '', - 'match' => '', - 'ondelete' => '', - 'onupdate' => '', - 'deferrable' => '', - 'initiallydeferred' => '', - 'foreign' => true, - 'fields' => array(), - 'references' => array('table' => '', 'fields' => array()) - ); - - if (!empty($constraint['name'])) { - $this->constraint_name = $constraint['name']; - } else { - $this->constraint_name = ''; - } - if (!empty($constraint['was'])) { - $this->constraint['was'] = $constraint['was']; - } - if (!empty($constraint['match'])) { - $this->constraint['match'] = $constraint['match']; - } - if (!empty($constraint['ondelete'])) { - $this->constraint['ondelete'] = $constraint['ondelete']; - } - if (!empty($constraint['onupdate'])) { - $this->constraint['onupdate'] = $constraint['onupdate']; - } - if (!empty($constraint['deferrable'])) { - $this->constraint['deferrable'] = $constraint['deferrable']; - } - if (!empty($constraint['initiallydeferred'])) { - $this->constraint['initiallydeferred'] = $constraint['initiallydeferred']; - } - if (!empty($constraint['field']) && is_array($constraint['field'])) { - foreach ($constraint['field'] as $field) { - $result = $this->val->validateConstraintField($this->constraint['fields'], $field); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } - - $this->constraint['fields'][$field] = ''; - } - } - - if (!empty($constraint['references']) && is_array($constraint['references'])) { - /** - * As we forced 'table' to be enumerated - * we have to fix it on the foreign-references-table context - */ - if (!empty($constraint['references']['table']) && is_array($constraint['references']['table'])) { - $this->constraint['references']['table'] = $constraint['references']['table'][0]; - } - - if (!empty($constraint['references']['field']) && is_array($constraint['references']['field'])) { - foreach ($constraint['references']['field'] as $field) { - $result = $this->val->validateConstraintReferencedField($this->constraint['references']['fields'], $field); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } - - $this->constraint['references']['fields'][$field] = ''; - } - } - } - - $result = $this->val->validateConstraint($this->table['constraints'], $this->constraint, $this->constraint_name); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } else { - $this->table['constraints'][$this->constraint_name] = $this->constraint; - } - - return MDB2_OK; - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works at table data level. - * - * @param array $element multi dimensional array with query definition - * @param string $type whether its a insert|update|delete query - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixTableInitializationKeys($element, $type = '') - { - if (!empty($element['select']) && is_array($element['select'])) { - $this->fixTableInitializationDataKeys($element['select']); - $this->init = array( 'select' => $this->init ); - } else { - $this->fixTableInitializationDataKeys($element); - } - - $this->table['initialization'][] = array( 'type' => $type, 'data' => $this->init ); - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works deeper at the table initialization level (data). At this - * point we are look at one of the below: - * - * - * {field}+ - * - * - * - * - * - * {field}+ - * - * {expression} - * ? - * - * - * - * - * {expression} - * - * - * - * @param array $element multi dimensional array with query definition - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixTableInitializationDataKeys($element) - { - $this->init = array(); - if (!empty($element['field']) && is_array($element['field'])) { - foreach ($element['field'] as $field) { - $name = $field['name']; - unset($field['name']); - - $this->setExpression($field); - $this->init['field'][] = array( 'name' => $name, 'group' => $field ); - } - } - /** - * As we forced 'table' to be enumerated - * we have to fix it on the insert-select context - */ - if (!empty($element['table']) && is_array($element['table'])) { - $this->init['table'] = $element['table'][0]; - } - if (!empty($element['where']) && is_array($element['where'])) { - $this->init['where'] = $element['where']; - $this->setExpression($this->init['where']); - } - } - - /** - * Recursively diggs into an "expression" element. According to our - * documentation an "expression" element is of the kind: - * - * - * or or or {function} or {expression} - * - * or or or {function} or {expression} - * - * - * @param array &$arr reference to current element definition - * - * @return void - * - * @access private - */ - function setExpression(&$arr) - { - $element = each($arr); - - $arr = array( 'type' => $element['key'] ); - - $element = $element['value']; - - switch ($arr['type']) { - case 'null': - break; - case 'value': - case 'column': - $arr['data'] = $element; - break; - case 'function': - if (!empty($element) - && is_array($element) - ) { - $arr['data'] = array( 'name' => $element['name'] ); - unset($element['name']); - - foreach ($element as $type => $value) { - if (!empty($value)) { - if (is_array($value)) { - foreach ($value as $argument) { - $argument = array( $type => $argument ); - $this->setExpression($argument); - $arr['data']['arguments'][] = $argument; - } - } else { - $arr['data']['arguments'][] = array( 'type' => $type, 'data' => $value ); - } - } - } - } - break; - case 'expression': - $arr['data'] = array( 'operants' => array(), 'operator' => $element['operator'] ); - unset($element['operator']); - - foreach ($element as $k => $v) { - $argument = array( $k => $v ); - $this->setExpression($argument); - $arr['data']['operants'][] = $argument; - } - break; - } - } - - /** - * Enforce the default values for mandatory keys and ensure everything goes - * always in the same order (simulates the behaviour of the original - * parser). Works at database sequences level. A "sequence" element looks - * like: - * - * - * - * ? - * ? - * ? - * ? - * - * - * - * ? - * - * - * @param array $sequence multi dimensional array with sequence definition - * - * @return bool|error MDB2_OK on success or error object - * - * @access private - */ - function fixSequenceKeys($sequence) - { - $this->sequence = array( - 'was' => '', - 'start' => '', - 'description' => '', - 'comments' => '', - ); - - if (!empty($sequence['name'])) { - $this->sequence_name = $sequence['name']; - } else { - $this->sequence_name = ''; - } - if (!empty($sequence['was'])) { - $this->sequence['was'] = $sequence['was']; - } - if (!empty($sequence['start'])) { - $this->sequence['start'] = $sequence['start']; - } - if (!empty($sequence['description'])) { - $this->sequence['description'] = $sequence['description']; - } - if (!empty($sequence['comments'])) { - $this->sequence['comments'] = $sequence['comments']; - } - if (!empty($sequence['on']) && is_array($sequence['on'])) { - /** - * As we forced 'table' to be enumerated - * we have to fix it on the sequence-on-table context - */ - if (!empty($sequence['on']['table']) && is_array($sequence['on']['table'])) { - $this->sequence['on']['table'] = $sequence['on']['table'][0]; - } - - /** - * As we forced 'field' to be enumerated - * we have to fix it on the sequence-on-field context - */ - if (!empty($sequence['on']['field']) && is_array($sequence['on']['field'])) { - $this->sequence['on']['field'] = $sequence['on']['field'][0]; - } - } - - $result = $this->val->validateSequence($this->database_definition['sequences'], $this->sequence, $this->sequence_name); - if (PEAR::isError($result)) { - return $this->raiseError($result->getUserinfo()); - } else { - $this->database_definition['sequences'][$this->sequence_name] = $this->sequence; - } - - return MDB2_OK; - } - - /** - * Pushes a MDB2_Schema_Error into stack and returns it - * - * @param string $msg textual message - * @param int $ecode MDB2_Schema's error code - * - * @return object - * @access private - * @static - */ - function &raiseError($msg = null, $ecode = MDB2_SCHEMA_ERROR_PARSE) - { - if (is_null($this->error)) { - $error = 'Parser error: '.$msg."\n"; - - $this->error = MDB2_Schema::raiseError($ecode, null, null, $error); - } - return $this->error; - } -} diff --git a/3rdparty/MDB2/Schema/Reserved/ibase.php b/3rdparty/MDB2/Schema/Reserved/ibase.php deleted file mode 100644 index d797822a4b96b3ea350701924e4539c7d4b67ce7..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Reserved/ibase.php +++ /dev/null @@ -1,437 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ -// {{{ $GLOBALS['_MDB2_Schema_Reserved']['ibase'] -/** - * Has a list of reserved words of Interbase/Firebird - * - * @package MDB2_Schema - * @category Database - * @access protected - * @author Lorenzo Alberton - */ -$GLOBALS['_MDB2_Schema_Reserved']['ibase'] = array( - 'ABS', - 'ABSOLUTE', - 'ACTION', - 'ACTIVE', - 'ADD', - 'ADMIN', - 'AFTER', - 'ALL', - 'ALLOCATE', - 'ALTER', - 'AND', - 'ANY', - 'ARE', - 'AS', - 'ASC', - 'ASCENDING', - 'ASSERTION', - 'AT', - 'AUTHORIZATION', - 'AUTO', - 'AUTODDL', - 'AVG', - 'BACKUP', - 'BASE_NAME', - 'BASED', - 'BASENAME', - 'BEFORE', - 'BEGIN', - 'BETWEEN', - 'BIGINT', - 'BIT', - 'BIT_LENGTH', - 'BLOB', - 'BLOCK', - 'BLOBEDIT', - 'BOOLEAN', - 'BOTH', - 'BOTH', - 'BREAK', - 'BUFFER', - 'BY', - 'CACHE', - 'CASCADE', - 'CASCADED', - 'CASE', - 'CASE', - 'CAST', - 'CATALOG', - 'CHAR', - 'CHAR_LENGTH', - 'CHARACTER', - 'CHARACTER_LENGTH', - 'CHECK', - 'CHECK_POINT_LEN', - 'CHECK_POINT_LENGTH', - 'CLOSE', - 'COALESCE', - 'COLLATE', - 'COLLATION', - 'COLUMN', - 'COMMENT', - 'COMMIT', - 'COMMITTED', - 'COMPILETIME', - 'COMPUTED', - 'CONDITIONAL', - 'CONNECT', - 'CONNECTION', - 'CONSTRAINT', - 'CONSTRAINTS', - 'CONTAINING', - 'CONTINUE', - 'CONVERT', - 'CORRESPONDING', - 'COUNT', - 'CREATE', - 'CROSS', - 'CSTRING', - 'CURRENT', - 'CURRENT_CONNECTION', - 'CURRENT_DATE', - 'CURRENT_ROLE', - 'CURRENT_TIME', - 'CURRENT_TIMESTAMP', - 'CURRENT_TRANSACTION', - 'CURRENT_USER', - 'DATABASE', - 'DATE', - 'DAY', - 'DB_KEY', - 'DEALLOCATE', - 'DEBUG', - 'DEC', - 'DECIMAL', - 'DECLARE', - 'DEFAULT', - 'DEFERRABLE', - 'DEFERRED', - 'DELETE', - 'DELETING', - 'DESC', - 'DESCENDING', - 'DESCRIBE', - 'DESCRIPTOR', - 'DIAGNOSTICS', - 'DIFFERENCE', - 'DISCONNECT', - 'DISPLAY', - 'DISTINCT', - 'DO', - 'DOMAIN', - 'DOUBLE', - 'DROP', - 'ECHO', - 'EDIT', - 'ELSE', - 'END', - 'END-EXEC', - 'ENTRY_POINT', - 'ESCAPE', - 'EVENT', - 'EXCEPT', - 'EXCEPTION', - 'EXEC', - 'EXECUTE', - 'EXISTS', - 'EXIT', - 'EXTERN', - 'EXTERNAL', - 'EXTRACT', - 'FALSE', - 'FETCH', - 'FILE', - 'FILTER', - 'FIRST', - 'FLOAT', - 'FOR', - 'FOREIGN', - 'FOUND', - 'FREE_IT', - 'FROM', - 'FULL', - 'FUNCTION', - 'GDSCODE', - 'GEN_ID', - 'GENERATOR', - 'GET', - 'GLOBAL', - 'GO', - 'GOTO', - 'GRANT', - 'GROUP', - 'GROUP_COMMIT_WAIT', - 'GROUP_COMMIT_WAIT_TIME', - 'HAVING', - 'HELP', - 'HOUR', - 'IDENTITY', - 'IF', - 'IIF', - 'IMMEDIATE', - 'IN', - 'INACTIVE', - 'INDEX', - 'INDICATOR', - 'INIT', - 'INITIALLY', - 'INNER', - 'INPUT', - 'INPUT_TYPE', - 'INSENSITIVE', - 'INSERT', - 'INSERTING', - 'INT', - 'INTEGER', - 'INTERSECT', - 'INTERVAL', - 'INTO', - 'IS', - 'ISOLATION', - 'ISQL', - 'JOIN', - 'KEY', - 'LANGUAGE', - 'LAST', - 'LC_MESSAGES', - 'LC_TYPE', - 'LEADING', - 'LEADING', - 'LEADING', - 'LEAVE', - 'LEFT', - 'LENGTH', - 'LEV', - 'LEVEL', - 'LIKE', - 'LOCAL', - 'LOCK', - 'LOG_BUF_SIZE', - 'LOG_BUFFER_SIZE', - 'LOGFILE', - 'LONG', - 'LOWER', - 'MANUAL', - 'MATCH', - 'MAX', - 'MAX_SEGMENT', - 'MAXIMUM', - 'MAXIMUM_SEGMENT', - 'MERGE', - 'MESSAGE', - 'MIN', - 'MINIMUM', - 'MINUTE', - 'MODULE', - 'MODULE_NAME', - 'MONTH', - 'NAMES', - 'NATIONAL', - 'NATURAL', - 'NCHAR', - 'NEXT', - 'NO', - 'NOAUTO', - 'NOT', - 'NULL', - 'NULLIF', - 'NULLS', - 'NUM_LOG_BUFFERS', - 'NUM_LOG_BUFS', - 'NUMERIC', - 'OCTET_LENGTH', - 'OF', - 'ON', - 'ONLY', - 'OPEN', - 'OPTION', - 'OR', - 'ORDER', - 'OUTER', - 'OUTPUT', - 'OUTPUT_TYPE', - 'OVERFLOW', - 'OVERLAPS', - 'PAD', - 'PAGE', - 'PAGE_SIZE', - 'PAGELENGTH', - 'PAGES', - 'PARAMETER', - 'PARTIAL', - 'PASSWORD', - 'PERCENT', - 'PLAN', - 'POSITION', - 'POST_EVENT', - 'PRECISION', - 'PREPARE', - 'PRESERVE', - 'PRIMARY', - 'PRIOR', - 'PRIVILEGES', - 'PROCEDURE', - 'PUBLIC', - 'QUIT', - 'RAW_PARTITIONS', - 'RDB$DB_KEY', - 'READ', - 'REAL', - 'RECORD_VERSION', - 'RECREATE', - 'RECREATE ROW_COUNT', - 'REFERENCES', - 'RELATIVE', - 'RELEASE', - 'RESERV', - 'RESERVING', - 'RESTART', - 'RESTRICT', - 'RETAIN', - 'RETURN', - 'RETURNING', - 'RETURNING_VALUES', - 'RETURNS', - 'REVOKE', - 'RIGHT', - 'ROLE', - 'ROLLBACK', - 'ROW_COUNT', - 'ROWS', - 'RUNTIME', - 'SAVEPOINT', - 'SCALAR_ARRAY', - 'SCHEMA', - 'SCROLL', - 'SECOND', - 'SECTION', - 'SELECT', - 'SEQUENCE', - 'SESSION', - 'SESSION_USER', - 'SET', - 'SHADOW', - 'SHARED', - 'SHELL', - 'SHOW', - 'SINGULAR', - 'SIZE', - 'SKIP', - 'SMALLINT', - 'SNAPSHOT', - 'SOME', - 'SORT', - 'SPACE', - 'SQL', - 'SQLCODE', - 'SQLERROR', - 'SQLSTATE', - 'SQLWARNING', - 'STABILITY', - 'STARTING', - 'STARTS', - 'STATEMENT', - 'STATIC', - 'STATISTICS', - 'SUB_TYPE', - 'SUBSTRING', - 'SUM', - 'SUSPEND', - 'SYSTEM_USER', - 'TABLE', - 'TEMPORARY', - 'TERMINATOR', - 'THEN', - 'TIES', - 'TIME', - 'TIMESTAMP', - 'TIMEZONE_HOUR', - 'TIMEZONE_MINUTE', - 'TO', - 'TRAILING', - 'TRANSACTION', - 'TRANSLATE', - 'TRANSLATION', - 'TRIGGER', - 'TRIM', - 'TRUE', - 'TYPE', - 'UNCOMMITTED', - 'UNION', - 'UNIQUE', - 'UNKNOWN', - 'UPDATE', - 'UPDATING', - 'UPPER', - 'USAGE', - 'USER', - 'USING', - 'VALUE', - 'VALUES', - 'VARCHAR', - 'VARIABLE', - 'VARYING', - 'VERSION', - 'VIEW', - 'WAIT', - 'WEEKDAY', - 'WHEN', - 'WHENEVER', - 'WHERE', - 'WHILE', - 'WITH', - 'WORK', - 'WRITE', - 'YEAR', - 'YEARDAY', - 'ZONE', -); -// }}} diff --git a/3rdparty/MDB2/Schema/Reserved/mssql.php b/3rdparty/MDB2/Schema/Reserved/mssql.php deleted file mode 100644 index 7aa65f426f9a2f78526e07b7548d154ca2ceac2d..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Reserved/mssql.php +++ /dev/null @@ -1,260 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -// {{{ $GLOBALS['_MDB2_Schema_Reserved']['mssql'] -/** - * Has a list of all the reserved words for mssql. - * - * @package MDB2_Schema - * @category Database - * @access protected - * @author David Coallier - */ -$GLOBALS['_MDB2_Schema_Reserved']['mssql'] = array( - 'ADD', - 'CURRENT_TIMESTAMP', - 'GROUP', - 'OPENQUERY', - 'SERIALIZABLE', - 'ALL', - 'CURRENT_USER', - 'HAVING', - 'OPENROWSET', - 'SESSION_USER', - 'ALTER', - 'CURSOR', - 'HOLDLOCK', - 'OPTION', - 'SET', - 'AND', - 'DATABASE', - 'IDENTITY', - 'OR', - 'SETUSER', - 'ANY', - 'DBCC', - 'IDENTITYCOL', - 'ORDER', - 'SHUTDOWN', - 'AS', - 'DEALLOCATE', - 'IDENTITY_INSERT', - 'OUTER', - 'SOME', - 'ASC', - 'DECLARE', - 'IF', - 'OVER', - 'STATISTICS', - 'AUTHORIZATION', - 'DEFAULT', - 'IN', - 'PERCENT', - 'SUM', - 'AVG', - 'DELETE', - 'INDEX', - 'PERM', - 'SYSTEM_USER', - 'BACKUP', - 'DENY', - 'INNER', - 'PERMANENT', - 'TABLE', - 'BEGIN', - 'DESC', - 'INSERT', - 'PIPE', - 'TAPE', - 'BETWEEN', - 'DISK', - 'INTERSECT', - 'PLAN', - 'TEMP', - 'BREAK', - 'DISTINCT', - 'INTO', - 'PRECISION', - 'TEMPORARY', - 'BROWSE', - 'DISTRIBUTED', - 'IS', - 'PREPARE', - 'TEXTSIZE', - 'BULK', - 'DOUBLE', - 'ISOLATION', - 'PRIMARY', - 'THEN', - 'BY', - 'DROP', - 'JOIN', - 'PRINT', - 'TO', - 'CASCADE', - 'DUMMY', - 'KEY', - 'PRIVILEGES', - 'TOP', - 'CASE', - 'DUMP', - 'KILL', - 'PROC', - 'TRAN', - 'CHECK', - 'ELSE', - 'LEFT', - 'PROCEDURE', - 'TRANSACTION', - 'CHECKPOINT', - 'END', - 'LEVEL', - 'PROCESSEXIT', - 'TRIGGER', - 'CLOSE', - 'ERRLVL', - 'LIKE', - 'PUBLIC', - 'TRUNCATE', - 'CLUSTERED', - 'ERROREXIT', - 'LINENO', - 'RAISERROR', - 'TSEQUAL', - 'COALESCE', - 'ESCAPE', - 'LOAD', - 'READ', - 'UNCOMMITTED', - 'COLUMN', - 'EXCEPT', - 'MAX', - 'READTEXT', - 'UNION', - 'COMMIT', - 'EXEC', - 'MIN', - 'RECONFIGURE', - 'UNIQUE', - 'COMMITTED', - 'EXECUTE', - 'MIRROREXIT', - 'REFERENCES', - 'UPDATE', - 'COMPUTE', - 'EXISTS', - 'NATIONAL', - 'REPEATABLE', - 'UPDATETEXT', - 'CONFIRM', - 'EXIT', - 'NOCHECK', - 'REPLICATION', - 'USE', - 'CONSTRAINT', - 'FETCH', - 'NONCLUSTERED', - 'RESTORE', - 'USER', - 'CONTAINS', - 'FILE', - 'NOT', - 'RESTRICT', - 'VALUES', - 'CONTAINSTABLE', - 'FILLFACTOR', - 'NULL', - 'RETURN', - 'VARYING', - 'CONTINUE', - 'FLOPPY', - 'NULLIF', - 'REVOKE', - 'VIEW', - 'CONTROLROW', - 'FOR', - 'OF', - 'RIGHT', - 'WAITFOR', - 'CONVERT', - 'FOREIGN', - 'OFF', - 'ROLLBACK', - 'WHEN', - 'COUNT', - 'FREETEXT', - 'OFFSETS', - 'ROWCOUNT', - 'WHERE', - 'CREATE', - 'FREETEXTTABLE', - 'ON', - 'ROWGUIDCOL', - 'WHILE', - 'CROSS', - 'FROM', - 'ONCE', - 'RULE', - 'WITH', - 'CURRENT', - 'FULL', - 'ONLY', - 'SAVE', - 'WORK', - 'CURRENT_DATE', - 'GOTO', - 'OPEN', - 'SCHEMA', - 'WRITETEXT', - 'CURRENT_TIME', - 'GRANT', - 'OPENDATASOURCE', - 'SELECT', -); -//}}} diff --git a/3rdparty/MDB2/Schema/Reserved/mysql.php b/3rdparty/MDB2/Schema/Reserved/mysql.php deleted file mode 100644 index 6a4338b261d58e6a5f6337c6f070ed32a0167cfe..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Reserved/mysql.php +++ /dev/null @@ -1,285 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -// {{{ $GLOBALS['_MDB2_Schema_Reserved']['mysql'] -/** - * Has a list of reserved words of mysql - * - * @package MDB2_Schema - * @category Database - * @access protected - * @author David Coalier - */ -$GLOBALS['_MDB2_Schema_Reserved']['mysql'] = array( - 'ADD', - 'ALL', - 'ALTER', - 'ANALYZE', - 'AND', - 'AS', - 'ASC', - 'ASENSITIVE', - 'BEFORE', - 'BETWEEN', - 'BIGINT', - 'BINARY', - 'BLOB', - 'BOTH', - 'BY', - 'CALL', - 'CASCADE', - 'CASE', - 'CHANGE', - 'CHAR', - 'CHARACTER', - 'CHECK', - 'COLLATE', - 'COLUMN', - 'CONDITION', - 'CONNECTION', - 'CONSTRAINT', - 'CONTINUE', - 'CONVERT', - 'CREATE', - 'CROSS', - 'CURRENT_DATE', - 'CURRENT_TIME', - 'CURRENT_TIMESTAMP', - 'CURRENT_USER', - 'CURSOR', - 'DATABASE', - 'DATABASES', - 'DAY_HOUR', - 'DAY_MICROSECOND', - 'DAY_MINUTE', - 'DAY_SECOND', - 'DEC', - 'DECIMAL', - 'DECLARE', - 'DEFAULT', - 'DELAYED', - 'DELETE', - 'DESC', - 'DESCRIBE', - 'DETERMINISTIC', - 'DISTINCT', - 'DISTINCTROW', - 'DIV', - 'DOUBLE', - 'DROP', - 'DUAL', - 'EACH', - 'ELSE', - 'ELSEIF', - 'ENCLOSED', - 'ESCAPED', - 'EXISTS', - 'EXIT', - 'EXPLAIN', - 'FALSE', - 'FETCH', - 'FLOAT', - 'FLOAT4', - 'FLOAT8', - 'FOR', - 'FORCE', - 'FOREIGN', - 'FROM', - 'FULLTEXT', - 'GOTO', - 'GRANT', - 'GROUP', - 'HAVING', - 'HIGH_PRIORITY', - 'HOUR_MICROSECOND', - 'HOUR_MINUTE', - 'HOUR_SECOND', - 'IF', - 'IGNORE', - 'IN', - 'INDEX', - 'INFILE', - 'INNER', - 'INOUT', - 'INSENSITIVE', - 'INSERT', - 'INT', - 'INT1', - 'INT2', - 'INT3', - 'INT4', - 'INT8', - 'INTEGER', - 'INTERVAL', - 'INTO', - 'IS', - 'ITERATE', - 'JOIN', - 'KEY', - 'KEYS', - 'KILL', - 'LABEL', - 'LEADING', - 'LEAVE', - 'LEFT', - 'LIKE', - 'LIMIT', - 'LINES', - 'LOAD', - 'LOCALTIME', - 'LOCALTIMESTAMP', - 'LOCK', - 'LONG', - 'LONGBLOB', - 'LONGTEXT', - 'LOOP', - 'LOW_PRIORITY', - 'MATCH', - 'MEDIUMBLOB', - 'MEDIUMINT', - 'MEDIUMTEXT', - 'MIDDLEINT', - 'MINUTE_MICROSECOND', - 'MINUTE_SECOND', - 'MOD', - 'MODIFIES', - 'NATURAL', - 'NOT', - 'NO_WRITE_TO_BINLOG', - 'NULL', - 'NUMERIC', - 'ON', - 'OPTIMIZE', - 'OPTION', - 'OPTIONALLY', - 'OR', - 'ORDER', - 'OUT', - 'OUTER', - 'OUTFILE', - 'PRECISION', - 'PRIMARY', - 'PROCEDURE', - 'PURGE', - 'RAID0', - 'READ', - 'READS', - 'REAL', - 'REFERENCES', - 'REGEXP', - 'RELEASE', - 'RENAME', - 'REPEAT', - 'REPLACE', - 'REQUIRE', - 'RESTRICT', - 'RETURN', - 'REVOKE', - 'RIGHT', - 'RLIKE', - 'SCHEMA', - 'SCHEMAS', - 'SECOND_MICROSECOND', - 'SELECT', - 'SENSITIVE', - 'SEPARATOR', - 'SET', - 'SHOW', - 'SMALLINT', - 'SONAME', - 'SPATIAL', - 'SPECIFIC', - 'SQL', - 'SQLEXCEPTION', - 'SQLSTATE', - 'SQLWARNING', - 'SQL_BIG_RESULT', - 'SQL_CALC_FOUND_ROWS', - 'SQL_SMALL_RESULT', - 'SSL', - 'STARTING', - 'STRAIGHT_JOIN', - 'TABLE', - 'TERMINATED', - 'THEN', - 'TINYBLOB', - 'TINYINT', - 'TINYTEXT', - 'TO', - 'TRAILING', - 'TRIGGER', - 'TRUE', - 'UNDO', - 'UNION', - 'UNIQUE', - 'UNLOCK', - 'UNSIGNED', - 'UPDATE', - 'USAGE', - 'USE', - 'USING', - 'UTC_DATE', - 'UTC_TIME', - 'UTC_TIMESTAMP', - 'VALUES', - 'VARBINARY', - 'VARCHAR', - 'VARCHARACTER', - 'VARYING', - 'WHEN', - 'WHERE', - 'WHILE', - 'WITH', - 'WRITE', - 'X509', - 'XOR', - 'YEAR_MONTH', - 'ZEROFILL', - ); - // }}} diff --git a/3rdparty/MDB2/Schema/Reserved/oci8.php b/3rdparty/MDB2/Schema/Reserved/oci8.php deleted file mode 100644 index 3cc898e1d68715a049900c50280d9efc39433f0c..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Reserved/oci8.php +++ /dev/null @@ -1,173 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -// {{{ $GLOBALS['_MDB2_Schema_Reserved']['oci8'] -/** - * Has a list of all the reserved words for oracle. - * - * @package MDB2_Schema - * @category Database - * @access protected - * @author David Coallier - */ -$GLOBALS['_MDB2_Schema_Reserved']['oci8'] = array( - 'ACCESS', - 'ELSE', - 'MODIFY', - 'START', - 'ADD', - 'EXCLUSIVE', - 'NOAUDIT', - 'SELECT', - 'ALL', - 'EXISTS', - 'NOCOMPRESS', - 'SESSION', - 'ALTER', - 'FILE', - 'NOT', - 'SET', - 'AND', - 'FLOAT', - 'NOTFOUND ', - 'SHARE', - 'ANY', - 'FOR', - 'NOWAIT', - 'SIZE', - 'ARRAYLEN', - 'FROM', - 'NULL', - 'SMALLINT', - 'AS', - 'GRANT', - 'NUMBER', - 'SQLBUF', - 'ASC', - 'GROUP', - 'OF', - 'SUCCESSFUL', - 'AUDIT', - 'HAVING', - 'OFFLINE ', - 'SYNONYM', - 'BETWEEN', - 'IDENTIFIED', - 'ON', - 'SYSDATE', - 'BY', - 'IMMEDIATE', - 'ONLINE', - 'TABLE', - 'CHAR', - 'IN', - 'OPTION', - 'THEN', - 'CHECK', - 'INCREMENT', - 'OR', - 'TO', - 'CLUSTER', - 'INDEX', - 'ORDER', - 'TRIGGER', - 'COLUMN', - 'INITIAL', - 'PCTFREE', - 'UID', - 'COMMENT', - 'INSERT', - 'PRIOR', - 'UNION', - 'COMPRESS', - 'INTEGER', - 'PRIVILEGES', - 'UNIQUE', - 'CONNECT', - 'INTERSECT', - 'PUBLIC', - 'UPDATE', - 'CREATE', - 'INTO', - 'RAW', - 'USER', - 'CURRENT', - 'IS', - 'RENAME', - 'VALIDATE', - 'DATE', - 'LEVEL', - 'RESOURCE', - 'VALUES', - 'DECIMAL', - 'LIKE', - 'REVOKE', - 'VARCHAR', - 'DEFAULT', - 'LOCK', - 'ROW', - 'VARCHAR2', - 'DELETE', - 'LONG', - 'ROWID', - 'VIEW', - 'DESC', - 'MAXEXTENTS', - 'ROWLABEL', - 'WHENEVER', - 'DISTINCT', - 'MINUS', - 'ROWNUM', - 'WHERE', - 'DROP', - 'MODE', - 'ROWS', - 'WITH', -); -// }}} diff --git a/3rdparty/MDB2/Schema/Reserved/pgsql.php b/3rdparty/MDB2/Schema/Reserved/pgsql.php deleted file mode 100644 index 84537685e0fb9113f347822fc433c9bfdad56381..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Reserved/pgsql.php +++ /dev/null @@ -1,148 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -// {{{ $GLOBALS['_MDB2_Schema_Reserved']['pgsql'] -/** - * Has a list of reserved words of pgsql - * - * @package MDB2_Schema - * @category Database - * @access protected - * @author Marcelo Santos Araujo - */ -$GLOBALS['_MDB2_Schema_Reserved']['pgsql'] = array( - 'ALL', - 'ANALYSE', - 'ANALYZE', - 'AND', - 'ANY', - 'AS', - 'ASC', - 'AUTHORIZATION', - 'BETWEEN', - 'BINARY', - 'BOTH', - 'CASE', - 'CAST', - 'CHECK', - 'COLLATE', - 'COLUMN', - 'CONSTRAINT', - 'CREATE', - 'CURRENT_DATE', - 'CURRENT_TIME', - 'CURRENT_TIMESTAMP', - 'CURRENT_USER', - 'DEFAULT', - 'DEFERRABLE', - 'DESC', - 'DISTINCT', - 'DO', - 'ELSE', - 'END', - 'EXCEPT', - 'FALSE', - 'FOR', - 'FOREIGN', - 'FREEZE', - 'FROM', - 'FULL', - 'GRANT', - 'GROUP', - 'HAVING', - 'ILIKE', - 'IN', - 'INITIALLY', - 'INNER', - 'INTERSECT', - 'INTO', - 'IS', - 'ISNULL', - 'JOIN', - 'LEADING', - 'LEFT', - 'LIKE', - 'LIMIT', - 'LOCALTIME', - 'LOCALTIMESTAMP', - 'NATURAL', - 'NEW', - 'NOT', - 'NOTNULL', - 'NULL', - 'OFF', - 'OFFSET', - 'OLD', - 'ON', - 'ONLY', - 'OR', - 'ORDER', - 'OUTER', - 'OVERLAPS', - 'PLACING', - 'PRIMARY', - 'REFERENCES', - 'SELECT', - 'SESSION_USER', - 'SIMILAR', - 'SOME', - 'TABLE', - 'THEN', - 'TO', - 'TRAILING', - 'TRUE', - 'UNION', - 'UNIQUE', - 'USER', - 'USING', - 'VERBOSE', - 'WHEN', - 'WHERE' -); -// }}} diff --git a/3rdparty/MDB2/Schema/Tool.php b/3rdparty/MDB2/Schema/Tool.php deleted file mode 100644 index 3210c9173ebd49acccf26597bd9fc8c80886432e..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Tool.php +++ /dev/null @@ -1,583 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -require_once 'MDB2/Schema.php'; -require_once 'MDB2/Schema/Tool/ParameterException.php'; - -/** -* Command line tool to work with database schemas -* -* Functionality: -* - dump a database schema to stdout -* - import schema into database -* - create a diff between two schemas -* - apply diff to database -* - * @category Database - * @package MDB2_Schema - * @author Christian Weiske - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema_Tool -{ - /** - * Run the schema tool - * - * @param array $args Array of command line arguments - */ - public function __construct($args) - { - $strAction = $this->getAction($args); - try { - $this->{'do' . ucfirst($strAction)}($args); - } catch (MDB2_Schema_Tool_ParameterException $e) { - $this->{'doHelp' . ucfirst($strAction)}($e->getMessage()); - } - }//public function __construct($args) - - - - /** - * Runs the tool with command line arguments - * - * @return void - */ - public static function run() - { - $args = $GLOBALS['argv']; - array_shift($args); - - try { - $tool = new MDB2_Schema_Tool($args); - } catch (Exception $e) { - self::toStdErr($e->getMessage() . "\n"); - } - }//public static function run() - - - - /** - * Reads the first parameter from the argument array and - * returns the action. - * - * @param array &$args Command line parameters - * - * @return string Action to execute - */ - protected function getAction(&$args) - { - if (count($args) == 0) { - return 'help'; - } - $arg = array_shift($args); - switch ($arg) { - case 'h': - case 'help': - case '-h': - case '--help': - return 'help'; - case 'd': - case 'dump': - case '-d': - case '--dump': - return 'dump'; - case 'l': - case 'load': - case '-l': - case '--load': - return 'load'; - case 'i': - case 'diff': - case '-i': - case '--diff': - return 'diff'; - case 'a': - case 'apply': - case '-a': - case '--apply': - return 'apply'; - case 'n': - case 'init': - case '-i': - case '--init': - return 'init'; - default: - throw new MDB2_Schema_Tool_ParameterException( - "Unknown mode \"$arg\"" - ); - } - }//protected function getAction(&$args) - - - - /** - * Writes the message to stderr - * - * @param string $msg Message to print - * - * @return void - */ - protected static function toStdErr($msg) - { - file_put_contents('php://stderr', $msg); - }//protected static function toStdErr($msg) - - - - /** - * Displays generic help to stdout - * - * @return void - */ - protected function doHelp() - { - self::toStdErr( -<< '
', - 'idxname_format' => '%s', - 'debug' => true, - 'quote_identifier' => true, - 'force_defaults' => false, - 'portability' => true, - 'use_transactions' => false, - ); - return $options; - }//protected function getSchemaOptions() - - - - /** - * Checks if the passed parameter is a PEAR_Error object - * and throws an exception in that case. - * - * @param mixed $object Some variable to check - * @param string $location Where the error occured - * - * @return void - */ - protected function throwExceptionOnError($object, $location = '') - { - if (PEAR::isError($object)) { - //FIXME: exception class - //debug_print_backtrace(); - throw new Exception('Error ' . $location - . "\n" . $object->getMessage() - . "\n" . $object->getUserInfo() - ); - } - }//protected function throwExceptionOnError($object, $location = '') - - - - /** - * Loads a file or a dsn from the arguments - * - * @param array &$args Array of arguments to the program - * - * @return array Array of ('file'|'dsn', $value) - */ - protected function getFileOrDsn(&$args) - { - if (count($args) == 0) { - throw new MDB2_Schema_Tool_ParameterException( - 'File or DSN expected' - ); - } - - $arg = array_shift($args); - if ($arg == '-p') { - $bAskPassword = true; - $arg = array_shift($args); - } else { - $bAskPassword = false; - } - - if (strpos($arg, '://') === false) { - if (file_exists($arg)) { - //File - return array('file', $arg); - } else { - throw new Exception('Schema file does not exist'); - } - } - - //read password if necessary - if ($bAskPassword) { - $password = $this->readPasswordFromStdin($arg); - $arg = self::setPasswordIntoDsn($arg, $password); - self::toStdErr($arg); - } - return array('dsn', $arg); - }//protected function getFileOrDsn(&$args) - - - - /** - * Takes a DSN data source name and integrates the given - * password into it. - * - * @param string $dsn Data source name - * @param string $password Password - * - * @return string DSN with password - */ - protected function setPasswordIntoDsn($dsn, $password) - { - //simple try to integrate password - if (strpos($dsn, '@') === false) { - //no @ -> no user and no password - return str_replace('://', '://:' . $password . '@', $dsn); - } else if (preg_match('|://[^:]+@|', $dsn)) { - //user only, no password - return str_replace('@', ':' . $password . '@', $dsn); - } else if (strpos($dsn, ':@') !== false) { - //abstract version - return str_replace(':@', ':' . $password . '@', $dsn); - } - - return $dsn; - }//protected function setPasswordIntoDsn($dsn, $password) - - - - /** - * Reads a password from stdin - * - * @param string $dsn DSN name to put into the message - * - * @return string Password - */ - protected function readPasswordFromStdin($dsn) - { - $stdin = fopen('php://stdin', 'r'); - self::toStdErr('Please insert password for ' . $dsn . "\n"); - $password = ''; - $breakme = false; - while (false !== ($char = fgetc($stdin))) { - if (ord($char) == 10 || $char == "\n" || $char == "\r") { - break; - } - $password .= $char; - } - fclose($stdin); - - return trim($password); - }//protected function readPasswordFromStdin() - - - - /** - * Creates a database schema dump and sends it to stdout - * - * @param array $args Command line arguments - * - * @return void - */ - protected function doDump($args) - { - $dump_what = MDB2_SCHEMA_DUMP_STRUCTURE; - $arg = ''; - if (count($args)) { - $arg = $args[0]; - } - - switch (strtolower($arg)) { - case 'all': - $dump_what = MDB2_SCHEMA_DUMP_ALL; - array_shift($args); - break; - case 'data': - $dump_what = MDB2_SCHEMA_DUMP_CONTENT; - array_shift($args); - break; - case 'schema': - array_shift($args); - } - - list($type, $dsn) = $this->getFileOrDsn($args); - if ($type == 'file') { - throw new MDB2_Schema_Tool_ParameterException( - 'Dumping a schema file as a schema file does not make much ' . - 'sense' - ); - } - - $schema = MDB2_Schema::factory($dsn, $this->getSchemaOptions()); - $this->throwExceptionOnError($schema); - - $definition = $schema->getDefinitionFromDatabase(); - $this->throwExceptionOnError($definition); - - - $dump_options = array( - 'output_mode' => 'file', - 'output' => 'php://stdout', - 'end_of_line' => "\r\n" - ); - $op = $schema->dumpDatabase( - $definition, $dump_options, $dump_what - ); - $this->throwExceptionOnError($op); - - $schema->disconnect(); - }//protected function doDump($args) - - - - /** - * Loads a database schema - * - * @param array $args Command line arguments - * - * @return void - */ - protected function doLoad($args) - { - list($typeSource, $dsnSource) = $this->getFileOrDsn($args); - list($typeDest, $dsnDest) = $this->getFileOrDsn($args); - - if ($typeDest == 'file') { - throw new MDB2_Schema_Tool_ParameterException( - 'A schema can only be loaded into a database, not a file' - ); - } - - - $schemaDest = MDB2_Schema::factory($dsnDest, $this->getSchemaOptions()); - $this->throwExceptionOnError($schemaDest); - - //load definition - if ($typeSource == 'file') { - $definition = $schemaDest->parseDatabaseDefinitionFile($dsnSource); - $where = 'loading schema file'; - } else { - $schemaSource = MDB2_Schema::factory( - $dsnSource, - $this->getSchemaOptions() - ); - $this->throwExceptionOnError( - $schemaSource, - 'connecting to source database' - ); - - $definition = $schemaSource->getDefinitionFromDatabase(); - $where = 'loading definition from database'; - } - $this->throwExceptionOnError($definition, $where); - - - //create destination database from definition - $simulate = false; - $op = $schemaDest->createDatabase( - $definition, - array(), - $simulate - ); - $this->throwExceptionOnError($op, 'creating the database'); - }//protected function doLoad($args) - - - - /** - * Initializes a database with data - * - * @param array $args Command line arguments - * - * @return void - */ - protected function doInit($args) - { - list($typeSource, $dsnSource) = $this->getFileOrDsn($args); - list($typeDest, $dsnDest) = $this->getFileOrDsn($args); - - if ($typeSource != 'file') { - throw new MDB2_Schema_Tool_ParameterException( - 'Data must come from a source file' - ); - } - - if ($typeDest != 'dsn') { - throw new MDB2_Schema_Tool_ParameterException( - 'A schema can only be loaded into a database, not a file' - ); - } - - $schemaDest = MDB2_Schema::factory($dsnDest, $this->getSchemaOptions()); - $this->throwExceptionOnError( - $schemaDest, - 'connecting to destination database' - ); - - $definition = $schemaDest->getDefinitionFromDatabase(); - $this->throwExceptionOnError( - $definition, - 'loading definition from database' - ); - - $op = $schemaDest->writeInitialization($dsnSource, $definition); - $this->throwExceptionOnError($op, 'initializing database'); - }//protected function doInit($args) - - -}//class MDB2_Schema_Tool diff --git a/3rdparty/MDB2/Schema/Tool/ParameterException.php b/3rdparty/MDB2/Schema/Tool/ParameterException.php deleted file mode 100644 index 92bea69391722dda6fa09b1bbac162577b2a4744..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Tool/ParameterException.php +++ /dev/null @@ -1,61 +0,0 @@ - - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -/** - * To be implemented yet - * - * @category Database - * @package MDB2_Schema - * @author Christian Weiske - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema_Tool_ParameterException extends Exception -{ -} diff --git a/3rdparty/MDB2/Schema/Validate.php b/3rdparty/MDB2/Schema/Validate.php deleted file mode 100644 index 4a8e0d27bacdbfc25f7b1ccf54bd87d1a3491b69..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Validate.php +++ /dev/null @@ -1,1004 +0,0 @@ - - * @author Igor Feghali - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -/** - * Validates an XML schema file - * - * @category Database - * @package MDB2_Schema - * @author Igor Feghali - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema_Validate -{ - // {{{ properties - - var $fail_on_invalid_names = true; - - var $valid_types = array(); - - var $force_defaults = true; - - var $max_identifiers_length = null; - - // }}} - // {{{ constructor - - /** - * PHP 5 constructor - * - * @param bool $fail_on_invalid_names array with reserved words per RDBMS - * @param array $valid_types information of all valid fields - * types - * @param bool $force_defaults if true sets a default value to - * field when not explicit - * @param int $max_identifiers_length maximum allowed size for entities - * name - * - * @return void - * - * @access public - * @static - */ - function __construct($fail_on_invalid_names = true, $valid_types = array(), - $force_defaults = true, $max_identifiers_length = null - ) { - if (empty($GLOBALS['_MDB2_Schema_Reserved'])) { - $GLOBALS['_MDB2_Schema_Reserved'] = array(); - } - - if (is_array($fail_on_invalid_names)) { - $this->fail_on_invalid_names = array_intersect($fail_on_invalid_names, - array_keys($GLOBALS['_MDB2_Schema_Reserved'])); - } elseif ($fail_on_invalid_names === true) { - $this->fail_on_invalid_names = array_keys($GLOBALS['_MDB2_Schema_Reserved']); - } else { - $this->fail_on_invalid_names = array(); - } - $this->valid_types = $valid_types; - $this->force_defaults = $force_defaults; - $this->max_identifiers_length = $max_identifiers_length; - } - - // }}} - // {{{ raiseError() - - /** - * Pushes a MDB2_Schema_Error into stack and returns it - * - * @param int $ecode MDB2_Schema's error code - * @param string $msg textual message - * - * @return object - * @access private - * @static - */ - function &raiseError($ecode, $msg = null) - { - $error = MDB2_Schema::raiseError($ecode, null, null, $msg); - return $error; - } - - // }}} - // {{{ isBoolean() - - /** - * Verifies if a given value can be considered boolean. If yes, set value - * to true or false according to its actual contents and return true. If - * not, keep its contents untouched and return false. - * - * @param mixed &$value value to be checked - * - * @return bool - * - * @access public - * @static - */ - function isBoolean(&$value) - { - if (is_bool($value)) { - return true; - } - - if ($value === 0 || $value === 1 || $value === '') { - $value = (bool)$value; - return true; - } - - if (!is_string($value)) { - return false; - } - - switch ($value) { - case '0': - case 'N': - case 'n': - case 'no': - case 'false': - $value = false; - break; - case '1': - case 'Y': - case 'y': - case 'yes': - case 'true': - $value = true; - break; - default: - return false; - } - return true; - } - - // }}} - // {{{ validateTable() - - /* Definition */ - /** - * Checks whether the definition of a parsed table is valid. Modify table - * definition when necessary. - * - * @param array $tables multi dimensional array that contains the - * tables of current database. - * @param array &$table multi dimensional array that contains the - * structure and optional data of the table. - * @param string $table_name name of the parsed table - * - * @return bool|error object - * - * @access public - */ - function validateTable($tables, &$table, $table_name) - { - /* Table name duplicated? */ - if (is_array($tables) && isset($tables[$table_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'table "'.$table_name.'" already exists'); - } - - /** - * Valid name ? - */ - $result = $this->validateIdentifier($table_name, 'table'); - if (PEAR::isError($result)) { - return $result; - } - - /* Was */ - if (empty($table['was'])) { - $table['was'] = $table_name; - } - - /* Have we got fields? */ - if (empty($table['fields']) || !is_array($table['fields'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'tables need one or more fields'); - } - - /* Autoincrement */ - $autoinc = $primary = false; - foreach ($table['fields'] as $field_name => $field) { - if (!empty($field['autoincrement'])) { - if ($autoinc) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'there was already an autoincrement field in "'.$table_name.'" before "'.$field_name.'"'); - } - $autoinc = $field_name; - } - } - - /* - * Checking Indexes - * this have to be done here otherwise we can't - * guarantee that all table fields were already - * defined in the moment we are parsing indexes - */ - if (!empty($table['indexes']) && is_array($table['indexes'])) { - foreach ($table['indexes'] as $name => $index) { - $skip_index = false; - if (!empty($index['primary'])) { - /* - * Lets see if we should skip this index since there is - * already an auto increment on this field this implying - * a primary key index. - */ - if (count($index['fields']) == '1' - && $autoinc - && array_key_exists($autoinc, $index['fields'])) { - $skip_index = true; - } elseif ($autoinc || $primary) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'there was already an primary index or autoincrement field in "'.$table_name.'" before "'.$name.'"'); - } else { - $primary = true; - } - } - - if (!$skip_index && is_array($index['fields'])) { - foreach ($index['fields'] as $field_name => $field) { - if (!isset($table['fields'][$field_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'index field "'.$field_name.'" does not exist'); - } - if (!empty($index['primary']) - && !$table['fields'][$field_name]['notnull'] - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'all primary key fields must be defined notnull in "'.$table_name.'"'); - } - } - } else { - unset($table['indexes'][$name]); - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ validateField() - - /** - * Checks whether the definition of a parsed field is valid. Modify field - * definition when necessary. - * - * @param array $fields multi dimensional array that contains the - * fields of current table. - * @param array &$field multi dimensional array that contains the - * structure of the parsed field. - * @param string $field_name name of the parsed field - * - * @return bool|error object - * - * @access public - */ - function validateField($fields, &$field, $field_name) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($field_name, 'field'); - if (PEAR::isError($result)) { - return $result; - } - - /* Field name duplicated? */ - if (is_array($fields) && isset($fields[$field_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'field "'.$field_name.'" already exists'); - } - - /* Type check */ - if (empty($field['type'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'no field type specified'); - } - if (!empty($this->valid_types) && !array_key_exists($field['type'], $this->valid_types)) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'no valid field type ("'.$field['type'].'") specified'); - } - - /* Unsigned */ - if (array_key_exists('unsigned', $field) && !$this->isBoolean($field['unsigned'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'unsigned has to be a boolean value'); - } - - /* Fixed */ - if (array_key_exists('fixed', $field) && !$this->isBoolean($field['fixed'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'fixed has to be a boolean value'); - } - - /* Length */ - if (array_key_exists('length', $field) && $field['length'] <= 0) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'length has to be an integer greater 0'); - } - - // if it's a DECIMAL datatype, check if a 'scale' value is provided: - // 8,4 should be translated to DECIMAL(8,4) - if (is_float($this->valid_types[$field['type']]) - && !empty($field['length']) - && strpos($field['length'], ',') !== false - ) { - list($field['length'], $field['scale']) = explode(',', $field['length']); - } - - /* Was */ - if (empty($field['was'])) { - $field['was'] = $field_name; - } - - /* Notnull */ - if (empty($field['notnull'])) { - $field['notnull'] = false; - } - if (!$this->isBoolean($field['notnull'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'field "notnull" has to be a boolean value'); - } - - /* Default */ - if ($this->force_defaults - && !array_key_exists('default', $field) - && $field['type'] != 'clob' && $field['type'] != 'blob' - ) { - $field['default'] = $this->valid_types[$field['type']]; - } - if (array_key_exists('default', $field)) { - if ($field['type'] == 'clob' || $field['type'] == 'blob') { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field['type'].'"-fields are not allowed to have a default value'); - } - if ($field['default'] === '' && !$field['notnull']) { - $field['default'] = null; - } - } - if (isset($field['default']) - && PEAR::isError($result = $this->validateDataFieldValue($field, $field['default'], $field_name)) - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'default value of "'.$field_name.'" is incorrect: '.$result->getUserinfo()); - } - - /* Autoincrement */ - if (!empty($field['autoincrement'])) { - if (!$field['notnull']) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'all autoincrement fields must be defined notnull'); - } - - if (empty($field['default'])) { - $field['default'] = '0'; - } elseif ($field['default'] !== '0' && $field['default'] !== 0) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'all autoincrement fields must be defined default "0"'); - } - } - return MDB2_OK; - } - - // }}} - // {{{ validateIndex() - - /** - * Checks whether a parsed index is valid. Modify index definition when - * necessary. - * - * @param array $table_indexes multi dimensional array that contains the - * indexes of current table. - * @param array &$index multi dimensional array that contains the - * structure of the parsed index. - * @param string $index_name name of the parsed index - * - * @return bool|error object - * - * @access public - */ - function validateIndex($table_indexes, &$index, $index_name) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($index_name, 'index'); - if (PEAR::isError($result)) { - return $result; - } - - if (is_array($table_indexes) && isset($table_indexes[$index_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'index "'.$index_name.'" already exists'); - } - if (array_key_exists('unique', $index) && !$this->isBoolean($index['unique'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'field "unique" has to be a boolean value'); - } - if (array_key_exists('primary', $index) && !$this->isBoolean($index['primary'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'field "primary" has to be a boolean value'); - } - - /* Have we got fields? */ - if (empty($index['fields']) || !is_array($index['fields'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'indexes need one or more fields'); - } - - if (empty($index['was'])) { - $index['was'] = $index_name; - } - return MDB2_OK; - } - - // }}} - // {{{ validateIndexField() - - /** - * Checks whether a parsed index-field is valid. Modify its definition when - * necessary. - * - * @param array $index_fields multi dimensional array that contains the - * fields of current index. - * @param array &$field multi dimensional array that contains the - * structure of the parsed index-field. - * @param string $field_name name of the parsed index-field - * - * @return bool|error object - * - * @access public - */ - function validateIndexField($index_fields, &$field, $field_name) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($field_name, 'index field'); - if (PEAR::isError($result)) { - return $result; - } - - if (is_array($index_fields) && isset($index_fields[$field_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'index field "'.$field_name.'" already exists'); - } - if (empty($field['sorting'])) { - $field['sorting'] = 'ascending'; - } elseif ($field['sorting'] !== 'ascending' && $field['sorting'] !== 'descending') { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'sorting type unknown'); - } - return MDB2_OK; - } - - // }}} - // {{{ validateConstraint() - - /** - * Checks whether a parsed foreign key is valid. Modify its definition when - * necessary. - * - * @param array $table_constraints multi dimensional array that contains the - * constraints of current table. - * @param array &$constraint multi dimensional array that contains the - * structure of the parsed foreign key. - * @param string $constraint_name name of the parsed foreign key - * - * @return bool|error object - * - * @access public - */ - function validateConstraint($table_constraints, &$constraint, $constraint_name) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($constraint_name, 'foreign key'); - if (PEAR::isError($result)) { - return $result; - } - - if (is_array($table_constraints) && isset($table_constraints[$constraint_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'foreign key "'.$constraint_name.'" already exists'); - } - - /* Have we got fields? */ - if (empty($constraint['fields']) || !is_array($constraint['fields'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'foreign key "'.$constraint_name.'" need one or more fields'); - } - - /* Have we got referenced fields? */ - if (empty($constraint['references']) || !is_array($constraint['references'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'foreign key "'.$constraint_name.'" need to reference one or more fields'); - } - - /* Have we got referenced table? */ - if (empty($constraint['references']['table'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'foreign key "'.$constraint_name.'" need to reference a table'); - } - - if (empty($constraint['was'])) { - $constraint['was'] = $constraint_name; - } - return MDB2_OK; - } - - // }}} - // {{{ validateConstraintField() - - /** - * Checks whether a foreign-field is valid. - * - * @param array $constraint_fields multi dimensional array that contains the - * fields of current foreign key. - * @param string $field_name name of the parsed foreign-field - * - * @return bool|error object - * - * @access public - */ - function validateConstraintField($constraint_fields, $field_name) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($field_name, 'foreign key field'); - if (PEAR::isError($result)) { - return $result; - } - - if (is_array($constraint_fields) && isset($constraint_fields[$field_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'foreign field "'.$field_name.'" already exists'); - } - return MDB2_OK; - } - - // }}} - // {{{ validateConstraintReferencedField() - - /** - * Checks whether a foreign-referenced field is valid. - * - * @param array $referenced_fields multi dimensional array that contains the - * fields of current foreign key. - * @param string $field_name name of the parsed foreign-field - * - * @return bool|error object - * - * @access public - */ - function validateConstraintReferencedField($referenced_fields, $field_name) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($field_name, 'referenced foreign field'); - if (PEAR::isError($result)) { - return $result; - } - - if (is_array($referenced_fields) && isset($referenced_fields[$field_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'foreign field "'.$field_name.'" already referenced'); - } - return MDB2_OK; - } - - // }}} - // {{{ validateSequence() - - /** - * Checks whether the definition of a parsed sequence is valid. Modify - * sequence definition when necessary. - * - * @param array $sequences multi dimensional array that contains the - * sequences of current database. - * @param array &$sequence multi dimensional array that contains the - * structure of the parsed sequence. - * @param string $sequence_name name of the parsed sequence - * - * @return bool|error object - * - * @access public - */ - function validateSequence($sequences, &$sequence, $sequence_name) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($sequence_name, 'sequence'); - if (PEAR::isError($result)) { - return $result; - } - - if (is_array($sequences) && isset($sequences[$sequence_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'sequence "'.$sequence_name.'" already exists'); - } - - if (is_array($this->fail_on_invalid_names)) { - $name = strtoupper($sequence_name); - foreach ($this->fail_on_invalid_names as $rdbms) { - if (in_array($name, $GLOBALS['_MDB2_Schema_Reserved'][$rdbms])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'sequence name "'.$sequence_name.'" is a reserved word in: '.$rdbms); - } - } - } - - if (empty($sequence['was'])) { - $sequence['was'] = $sequence_name; - } - - if (!empty($sequence['on']) - && (empty($sequence['on']['table']) || empty($sequence['on']['field'])) - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'sequence "'.$sequence_name.'" on a table was not properly defined'); - } - return MDB2_OK; - } - - // }}} - // {{{ validateDatabase() - - /** - * Checks whether a parsed database is valid. Modify its structure and - * data when necessary. - * - * @param array &$database multi dimensional array that contains the - * structure and optional data of the database. - * - * @return bool|error object - * - * @access public - */ - function validateDatabase(&$database) - { - if (!is_array($database)) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'something wrong went with database definition'); - } - - /** - * Valid name ? - */ - $result = $this->validateIdentifier($database['name'], 'database'); - if (PEAR::isError($result)) { - return $result; - } - - /* Create */ - if (isset($database['create']) - && !$this->isBoolean($database['create']) - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'field "create" has to be a boolean value'); - } - - /* Overwrite */ - if (isset($database['overwrite']) - && $database['overwrite'] !== '' - && !$this->isBoolean($database['overwrite']) - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'field "overwrite" has to be a boolean value'); - } - - /* - * This have to be done here otherwise we can't guarantee that all - * tables were already defined in the moment we are parsing constraints - */ - if (isset($database['tables'])) { - foreach ($database['tables'] as $table_name => $table) { - if (!empty($table['constraints'])) { - foreach ($table['constraints'] as $constraint_name => $constraint) { - $referenced_table_name = $constraint['references']['table']; - - if (!isset($database['tables'][$referenced_table_name])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'referenced table "'.$referenced_table_name.'" of foreign key "'.$constraint_name.'" of table "'.$table_name.'" does not exist'); - } - - if (empty($constraint['references']['fields'])) { - $referenced_table = $database['tables'][$referenced_table_name]; - - $primary = false; - - if (!empty($referenced_table['indexes'])) { - foreach ($referenced_table['indexes'] as $index_name => $index) { - if (array_key_exists('primary', $index) - && $index['primary'] - ) { - $primary = array(); - foreach ($index['fields'] as $field_name => $field) { - $primary[$field_name] = ''; - } - break; - } - } - } - - if (!$primary) { - foreach ($referenced_table['fields'] as $field_name => $field) { - if (array_key_exists('autoincrement', $field) - && $field['autoincrement'] - ) { - $primary = array( $field_name => '' ); - break; - } - } - } - - if (!$primary) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'referenced table "'.$referenced_table_name.'" has no primary key and no referenced field was specified for foreign key "'.$constraint_name.'" of table "'.$table_name.'"'); - } - - $constraint['references']['fields'] = $primary; - } - - /* the same number of referencing and referenced fields ? */ - if (count($constraint['fields']) != count($constraint['references']['fields'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'The number of fields in the referenced key must match those of the foreign key "'.$constraint_name.'"'); - } - - $database['tables'][$table_name]['constraints'][$constraint_name]['references']['fields'] = $constraint['references']['fields']; - } - } - } - } - - /* - * This have to be done here otherwise we can't guarantee that all - * tables were already defined in the moment we are parsing sequences - */ - if (isset($database['sequences'])) { - foreach ($database['sequences'] as $seq_name => $seq) { - if (!empty($seq['on']) - && empty($database['tables'][$seq['on']['table']]['fields'][$seq['on']['field']]) - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'sequence "'.$seq_name.'" was assigned on unexisting field/table'); - } - } - } - return MDB2_OK; - } - - // }}} - // {{{ validateDataField() - - /* Data Manipulation */ - /** - * Checks whether a parsed DML-field is valid. Modify its structure when - * necessary. This is called when validating INSERT and - * UPDATE. - * - * @param array $table_fields multi dimensional array that contains the - * definition for current table's fields. - * @param array $instruction_fields multi dimensional array that contains the - * parsed fields of the current DML instruction. - * @param string &$field array that contains the parsed instruction field - * - * @return bool|error object - * - * @access public - */ - function validateDataField($table_fields, $instruction_fields, &$field) - { - /** - * Valid name ? - */ - $result = $this->validateIdentifier($field['name'], 'field'); - if (PEAR::isError($result)) { - return $result; - } - - if (is_array($instruction_fields) && isset($instruction_fields[$field['name']])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'field "'.$field['name'].'" already initialized'); - } - - if (is_array($table_fields) && !isset($table_fields[$field['name']])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field['name'].'" is not defined'); - } - - if (!isset($field['group']['type'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field['name'].'" has no initial value'); - } - - if (isset($field['group']['data']) - && $field['group']['type'] == 'value' - && $field['group']['data'] !== '' - && PEAR::isError($result = $this->validateDataFieldValue($table_fields[$field['name']], $field['group']['data'], $field['name'])) - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - 'value of "'.$field['name'].'" is incorrect: '.$result->getUserinfo()); - } - - return MDB2_OK; - } - - // }}} - // {{{ validateDataFieldValue() - - /** - * Checks whether a given value is compatible with a table field. This is - * done when parsing a field for a INSERT or UPDATE instruction. - * - * @param array $field_def multi dimensional array that contains the - * definition for current table's fields. - * @param string &$field_value value to fill the parsed field - * @param string $field_name name of the parsed field - * - * @return bool|error object - * - * @access public - * @see MDB2_Schema_Validate::validateInsertField() - */ - function validateDataFieldValue($field_def, &$field_value, $field_name) - { - switch ($field_def['type']) { - case 'text': - case 'clob': - if (!empty($field_def['length']) && strlen($field_value) > $field_def['length']) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is larger than "'.$field_def['length'].'"'); - } - break; - case 'blob': - $field_value = pack('H*', $field_value); - if (!empty($field_def['length']) && strlen($field_value) > $field_def['length']) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is larger than "'.$field_def['type'].'"'); - } - break; - case 'integer': - if ($field_value != ((int)$field_value)) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is not of type "'.$field_def['type'].'"'); - } - //$field_value = (int)$field_value; - if (!empty($field_def['unsigned']) && $field_def['unsigned'] && $field_value < 0) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" signed instead of unsigned'); - } - break; - case 'boolean': - if (!$this->isBoolean($field_value)) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is not of type "'.$field_def['type'].'"'); - } - break; - case 'date': - if (!preg_match('/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/', $field_value) - && $field_value !== 'CURRENT_DATE' - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is not of type "'.$field_def['type'].'"'); - } - break; - case 'timestamp': - if (!preg_match('/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})/', $field_value) - && strcasecmp($field_value, 'now()') != 0 - && $field_value !== 'CURRENT_TIMESTAMP' - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is not of type "'.$field_def['type'].'"'); - } - break; - case 'time': - if (!preg_match("/([0-9]{2}):([0-9]{2}):([0-9]{2})/", $field_value) - && $field_value !== 'CURRENT_TIME' - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is not of type "'.$field_def['type'].'"'); - } - break; - case 'float': - case 'double': - if ($field_value != (double)$field_value) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - '"'.$field_value.'" is not of type "'.$field_def['type'].'"'); - } - //$field_value = (double)$field_value; - break; - } - return MDB2_OK; - } - - // }}} - // {{{ validateIdentifier() - - /** - * Checks whether a given identifier is valid for current driver. - * - * @param string $id identifier to check - * @param string $type whether identifier represents a table name, index, etc. - * - * @return bool|error object - * - * @access public - */ - function validateIdentifier($id, $type) - { - $max_length = $this->max_identifiers_length; - $cur_length = strlen($id); - - /** - * Have we got a name? - */ - if (!$id) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - "a $type has to have a name"); - } - - /** - * Supported length ? - */ - if ($max_length !== null - && $cur_length > $max_length - ) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - "$type name '$id' is too long for current driver"); - } elseif ($cur_length > 30) { - // FIXME: find a way to issue a warning in MDB2_Schema object - /* $this->warnings[] = "$type name '$id' might not be - portable to other drivers"; */ - } - - /** - * Reserved ? - */ - if (is_array($this->fail_on_invalid_names)) { - $name = strtoupper($id); - foreach ($this->fail_on_invalid_names as $rdbms) { - if (in_array($name, $GLOBALS['_MDB2_Schema_Reserved'][$rdbms])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, - "$type name '$id' is a reserved word in: $rdbms"); - } - } - } - - return MDB2_OK; - } - - // }}} -} diff --git a/3rdparty/MDB2/Schema/Writer.php b/3rdparty/MDB2/Schema/Writer.php deleted file mode 100644 index 3eaa39a207196c80b3a60dc2f11707df0ea9c66d..0000000000000000000000000000000000000000 --- a/3rdparty/MDB2/Schema/Writer.php +++ /dev/null @@ -1,586 +0,0 @@ - - * @author Igor Feghali - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version SVN: $Id$ - * @link http://pear.php.net/packages/MDB2_Schema - */ - -/** - * Writes an XML schema file - * - * @category Database - * @package MDB2_Schema - * @author Lukas Smith - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/MDB2_Schema - */ -class MDB2_Schema_Writer -{ - // {{{ properties - - var $valid_types = array(); - - // }}} - // {{{ constructor - - /** - * PHP 5 constructor - * - * @param array $valid_types information of all valid fields - * types - * - * @return void - * - * @access public - * @static - */ - function __construct($valid_types = array()) - { - $this->valid_types = $valid_types; - } - - // }}} - // {{{ raiseError() - - /** - * This method is used to communicate an error and invoke error - * callbacks etc. Basically a wrapper for PEAR::raiseError - * without the message string. - * - * @param int|PEAR_Error $code integer error code or and PEAR_Error - * instance - * @param int $mode error mode, see PEAR_Error docs error - * level (E_USER_NOTICE etc). If error mode - * is PEAR_ERROR_CALLBACK, this is the - * callback function, either as a function - * name, or as an array of an object and - * method name. For other error modes this - * parameter is ignored. - * @param string $options Extra debug information. Defaults to the - * last query and native error code. - * @param string $userinfo User-friendly error message - * - * @return object a PEAR error object - * @access public - * @see PEAR_Error - */ - function &raiseError($code = null, $mode = null, $options = null, $userinfo = null) - { - $error = MDB2_Schema::raiseError($code, $mode, $options, $userinfo); - return $error; - } - - // }}} - // {{{ _escapeSpecialChars() - - /** - * add escapecharacters to all special characters in a string - * - * @param string $string string that should be escaped - * - * @return string escaped string - * @access protected - */ - function _escapeSpecialChars($string) - { - if (!is_string($string)) { - $string = strval($string); - } - - $escaped = ''; - for ($char = 0, $count = strlen($string); $char < $count; $char++) { - switch ($string[$char]) { - case '&': - $escaped .= '&'; - break; - case '>': - $escaped .= '>'; - break; - case '<': - $escaped .= '<'; - break; - case '"': - $escaped .= '"'; - break; - case '\'': - $escaped .= '''; - break; - default: - $code = ord($string[$char]); - if ($code < 32 || $code > 127) { - $escaped .= "&#$code;"; - } else { - $escaped .= $string[$char]; - } - break; - } - } - return $escaped; - } - - // }}} - // {{{ _dumpBoolean() - - /** - * dump the structure of a sequence - * - * @param string $boolean boolean value or variable definition - * - * @return string with xml boolea definition - * @access private - */ - function _dumpBoolean($boolean) - { - if (is_string($boolean)) { - if ($boolean !== 'true' || $boolean !== 'false' - || preg_match('/.*/', $boolean) - ) { - return $boolean; - } - } - return $boolean ? 'true' : 'false'; - } - - // }}} - // {{{ dumpSequence() - - /** - * dump the structure of a sequence - * - * @param string $sequence_definition sequence definition - * @param string $sequence_name sequence name - * @param string $eol end of line characters - * @param integer $dump determines what data to dump - * MDB2_SCHEMA_DUMP_ALL : the entire db - * MDB2_SCHEMA_DUMP_STRUCTURE : only the structure of the db - * MDB2_SCHEMA_DUMP_CONTENT : only the content of the db - * - * @return mixed string xml sequence definition on success, or a error object - * @access public - */ - function dumpSequence($sequence_definition, $sequence_name, $eol, $dump = MDB2_SCHEMA_DUMP_ALL) - { - $buffer = "$eol $eol $sequence_name$eol"; - if ($dump == MDB2_SCHEMA_DUMP_ALL || $dump == MDB2_SCHEMA_DUMP_CONTENT) { - if (!empty($sequence_definition['start'])) { - $start = $sequence_definition['start']; - $buffer .= " $start$eol"; - } - } - - if (!empty($sequence_definition['on'])) { - $buffer .= " $eol"; - $buffer .= "
".$sequence_definition['on']['table']; - $buffer .= "
$eol ".$sequence_definition['on']['field']; - $buffer .= "$eol
$eol"; - } - $buffer .= "
$eol"; - - return $buffer; - } - - // }}} - // {{{ dumpDatabase() - - /** - * Dump a previously parsed database structure in the Metabase schema - * XML based format suitable for the Metabase parser. This function - * may optionally dump the database definition with initialization - * commands that specify the data that is currently present in the tables. - * - * @param array $database_definition unknown - * @param array $arguments associative array that takes pairs of tag - * names and values that define dump options. - * array ( - * 'output_mode' => String - * 'file' : dump into a file - * default: dump using a function - * 'output' => String - * depending on the 'Output_Mode' - * name of the file - * name of the function - * 'end_of_line' => String - * end of line delimiter that should be used - * default: "\n" - * ); - * @param integer $dump determines what data to dump - * MDB2_SCHEMA_DUMP_ALL : the entire db - * MDB2_SCHEMA_DUMP_STRUCTURE : only the structure of the db - * MDB2_SCHEMA_DUMP_CONTENT : only the content of the db - * - * @return mixed MDB2_OK on success, or a error object - * @access public - */ - function dumpDatabase($database_definition, $arguments, $dump = MDB2_SCHEMA_DUMP_ALL) - { - if (!empty($arguments['output'])) { - if (!empty($arguments['output_mode']) && $arguments['output_mode'] == 'file') { - $fp = fopen($arguments['output'], 'w'); - if ($fp === false) { - return $this->raiseError(MDB2_SCHEMA_ERROR_WRITER, null, null, - 'it was not possible to open output file'); - } - - $output = false; - } elseif (is_callable($arguments['output'])) { - $output = $arguments['output']; - } else { - return $this->raiseError(MDB2_SCHEMA_ERROR_WRITER, null, null, - 'no valid output function specified'); - } - } else { - return $this->raiseError(MDB2_SCHEMA_ERROR_WRITER, null, null, - 'no output method specified'); - } - - $eol = isset($arguments['end_of_line']) ? $arguments['end_of_line'] : "\n"; - - $sequences = array(); - if (!empty($database_definition['sequences']) - && is_array($database_definition['sequences']) - ) { - foreach ($database_definition['sequences'] as $sequence_name => $sequence) { - $table = !empty($sequence['on']) ? $sequence['on']['table'] :''; - - $sequences[$table][] = $sequence_name; - } - } - - $buffer = ''.$eol; - $buffer .= "$eol$eol ".$database_definition['name'].""; - $buffer .= "$eol ".$this->_dumpBoolean($database_definition['create']).""; - $buffer .= "$eol ".$this->_dumpBoolean($database_definition['overwrite'])."$eol"; - $buffer .= "$eol ".$database_definition['charset']."$eol"; - - if ($output) { - call_user_func($output, $buffer); - } else { - fwrite($fp, $buffer); - } - - if (!empty($database_definition['tables']) && is_array($database_definition['tables'])) { - foreach ($database_definition['tables'] as $table_name => $table) { - $buffer = "$eol $eol$eol $table_name$eol"; - if ($dump == MDB2_SCHEMA_DUMP_ALL || $dump == MDB2_SCHEMA_DUMP_STRUCTURE) { - $buffer .= "$eol $eol"; - if (!empty($table['fields']) && is_array($table['fields'])) { - foreach ($table['fields'] as $field_name => $field) { - if (empty($field['type'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, null, null, - 'it was not specified the type of the field "'. - $field_name.'" of the table "'.$table_name.'"'); - } - if (!empty($this->valid_types) && !array_key_exists($field['type'], $this->valid_types)) { - return $this->raiseError(MDB2_SCHEMA_ERROR_UNSUPPORTED, null, null, - 'type "'.$field['type'].'" is not yet supported'); - } - $buffer .= "$eol $eol $field_name$eol "; - $buffer .= $field['type']."$eol"; - if (!empty($field['fixed']) && $field['type'] === 'text') { - $buffer .= " ".$this->_dumpBoolean($field['fixed'])."$eol"; - } - if (array_key_exists('default', $field) - && $field['type'] !== 'clob' && $field['type'] !== 'blob' - ) { - $buffer .= ' '.$this->_escapeSpecialChars($field['default'])."$eol"; - } - if (!empty($field['notnull'])) { - $buffer .= " ".$this->_dumpBoolean($field['notnull'])."$eol"; - } else { - $buffer .= " false$eol"; - } - if (!empty($field['autoincrement'])) { - $buffer .= " " . $field['autoincrement'] ."$eol"; - } - if (!empty($field['unsigned'])) { - $buffer .= " ".$this->_dumpBoolean($field['unsigned'])."$eol"; - } - if (!empty($field['length'])) { - $buffer .= ' '.$field['length']."$eol"; - } - $buffer .= " $eol"; - } - } - - if (!empty($table['indexes']) && is_array($table['indexes'])) { - foreach ($table['indexes'] as $index_name => $index) { - if (strtolower($index_name) === 'primary') { - $index_name = $table_name . '_pKey'; - } - $buffer .= "$eol $eol $index_name$eol"; - if (!empty($index['unique'])) { - $buffer .= " ".$this->_dumpBoolean($index['unique'])."$eol"; - } - - if (!empty($index['primary'])) { - $buffer .= " ".$this->_dumpBoolean($index['primary'])."$eol"; - } - - foreach ($index['fields'] as $field_name => $field) { - $buffer .= " $eol $field_name$eol"; - if (!empty($field) && is_array($field)) { - $buffer .= ' '.$field['sorting']."$eol"; - } - $buffer .= " $eol"; - } - $buffer .= " $eol"; - } - } - - if (!empty($table['constraints']) && is_array($table['constraints'])) { - foreach ($table['constraints'] as $constraint_name => $constraint) { - $buffer .= "$eol $eol $constraint_name$eol"; - if (empty($constraint['fields']) || !is_array($constraint['fields'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, null, null, - 'it was not specified a field for the foreign key "'. - $constraint_name.'" of the table "'.$table_name.'"'); - } - if (!is_array($constraint['references']) || empty($constraint['references']['table'])) { - return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, null, null, - 'it was not specified the referenced table of the foreign key "'. - $constraint_name.'" of the table "'.$table_name.'"'); - } - if (!empty($constraint['match'])) { - $buffer .= " ".$constraint['match']."$eol"; - } - if (!empty($constraint['ondelete'])) { - $buffer .= " ".$constraint['ondelete']."$eol"; - } - if (!empty($constraint['onupdate'])) { - $buffer .= " ".$constraint['onupdate']."$eol"; - } - if (!empty($constraint['deferrable'])) { - $buffer .= " ".$constraint['deferrable']."$eol"; - } - if (!empty($constraint['initiallydeferred'])) { - $buffer .= " ".$constraint['initiallydeferred']."$eol"; - } - foreach ($constraint['fields'] as $field_name => $field) { - $buffer .= " $field_name$eol"; - } - $buffer .= " $eol
".$constraint['references']['table']."
$eol"; - foreach ($constraint['references']['fields'] as $field_name => $field) { - $buffer .= " $field_name$eol"; - } - $buffer .= " $eol"; - - $buffer .= " $eol"; - } - } - - $buffer .= "$eol $eol"; - } - - if ($output) { - call_user_func($output, $buffer); - } else { - fwrite($fp, $buffer); - } - - $buffer = ''; - if ($dump == MDB2_SCHEMA_DUMP_ALL || $dump == MDB2_SCHEMA_DUMP_CONTENT) { - if (!empty($table['initialization']) && is_array($table['initialization'])) { - $buffer = "$eol $eol"; - foreach ($table['initialization'] as $instruction) { - switch ($instruction['type']) { - case 'insert': - $buffer .= "$eol $eol"; - foreach ($instruction['data']['field'] as $field) { - $field_name = $field['name']; - - $buffer .= "$eol $eol $field_name$eol"; - $buffer .= $this->writeExpression($field['group'], 5, $arguments); - $buffer .= " $eol"; - } - $buffer .= "$eol $eol"; - break; - case 'update': - $buffer .= "$eol $eol"; - foreach ($instruction['data']['field'] as $field) { - $field_name = $field['name']; - - $buffer .= "$eol $eol $field_name$eol"; - $buffer .= $this->writeExpression($field['group'], 5, $arguments); - $buffer .= " $eol"; - } - - if (!empty($instruction['data']['where']) - && is_array($instruction['data']['where']) - ) { - $buffer .= " $eol"; - $buffer .= $this->writeExpression($instruction['data']['where'], 5, $arguments); - $buffer .= " $eol"; - } - - $buffer .= "$eol $eol"; - break; - case 'delete': - $buffer .= "$eol $eol$eol"; - if (!empty($instruction['data']['where']) - && is_array($instruction['data']['where']) - ) { - $buffer .= " $eol"; - $buffer .= $this->writeExpression($instruction['data']['where'], 5, $arguments); - $buffer .= " $eol"; - } - $buffer .= "$eol $eol"; - break; - } - } - $buffer .= "$eol $eol"; - } - } - $buffer .= "$eol $eol"; - if ($output) { - call_user_func($output, $buffer); - } else { - fwrite($fp, $buffer); - } - - if (isset($sequences[$table_name])) { - foreach ($sequences[$table_name] as $sequence) { - $result = $this->dumpSequence($database_definition['sequences'][$sequence], - $sequence, $eol, $dump); - if (PEAR::isError($result)) { - return $result; - } - - if ($output) { - call_user_func($output, $result); - } else { - fwrite($fp, $result); - } - } - } - } - } - - if (isset($sequences[''])) { - foreach ($sequences[''] as $sequence) { - $result = $this->dumpSequence($database_definition['sequences'][$sequence], - $sequence, $eol, $dump); - if (PEAR::isError($result)) { - return $result; - } - - if ($output) { - call_user_func($output, $result); - } else { - fwrite($fp, $result); - } - } - } - - $buffer = "$eol
$eol"; - if ($output) { - call_user_func($output, $buffer); - } else { - fwrite($fp, $buffer); - fclose($fp); - } - - return MDB2_OK; - } - - // }}} - // {{{ writeExpression() - - /** - * Dumps the structure of an element. Elements can be value, column, - * function or expression. - * - * @param array $element multi dimensional array that represents the parsed element - * of a DML instruction. - * @param integer $offset base indentation width - * @param array $arguments associative array that takes pairs of tag - * names and values that define dump options. - * - * @return string - * - * @access public - * @see MDB2_Schema_Writer::dumpDatabase() - */ - function writeExpression($element, $offset = 0, $arguments = null) - { - $eol = isset($arguments['end_of_line']) ? $arguments['end_of_line'] : "\n"; - $str = ''; - - $indent = str_repeat(' ', $offset); - $noffset = $offset + 1; - - switch ($element['type']) { - case 'value': - $str .= "$indent".$this->_escapeSpecialChars($element['data'])."$eol"; - break; - case 'column': - $str .= "$indent".$this->_escapeSpecialChars($element['data'])."$eol"; - break; - case 'function': - $str .= "$indent$eol$indent ".$this->_escapeSpecialChars($element['data']['name'])."$eol"; - - if (!empty($element['data']['arguments']) - && is_array($element['data']['arguments']) - ) { - foreach ($element['data']['arguments'] as $v) { - $str .= $this->writeExpression($v, $noffset, $arguments); - } - } - - $str .= "$indent$eol"; - break; - case 'expression': - $str .= "$indent$eol"; - $str .= $this->writeExpression($element['data']['operants'][0], $noffset, $arguments); - $str .= "$indent ".$element['data']['operator']."$eol"; - $str .= $this->writeExpression($element['data']['operants'][1], $noffset, $arguments); - $str .= "$indent$eol"; - break; - } - return $str; - } - - // }}} -} diff --git a/3rdparty/OS/Guess.php b/3rdparty/OS/Guess.php deleted file mode 100644 index d3f2cc764ebfde597f3b6442cdcc54dc6cb513f6..0000000000000000000000000000000000000000 --- a/3rdparty/OS/Guess.php +++ /dev/null @@ -1,338 +0,0 @@ - - * @author Gregory Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Guess.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since PEAR 0.1 - */ - -// {{{ uname examples - -// php_uname() without args returns the same as 'uname -a', or a PHP-custom -// string for Windows. -// PHP versions prior to 4.3 return the uname of the host where PHP was built, -// as of 4.3 it returns the uname of the host running the PHP code. -// -// PC RedHat Linux 7.1: -// Linux host.example.com 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001 i686 unknown -// -// PC Debian Potato: -// Linux host 2.4.17 #2 SMP Tue Feb 12 15:10:04 CET 2002 i686 unknown -// -// PC FreeBSD 3.3: -// FreeBSD host.example.com 3.3-STABLE FreeBSD 3.3-STABLE #0: Mon Feb 21 00:42:31 CET 2000 root@example.com:/usr/src/sys/compile/CONFIG i386 -// -// PC FreeBSD 4.3: -// FreeBSD host.example.com 4.3-RELEASE FreeBSD 4.3-RELEASE #1: Mon Jun 25 11:19:43 EDT 2001 root@example.com:/usr/src/sys/compile/CONFIG i386 -// -// PC FreeBSD 4.5: -// FreeBSD host.example.com 4.5-STABLE FreeBSD 4.5-STABLE #0: Wed Feb 6 23:59:23 CET 2002 root@example.com:/usr/src/sys/compile/CONFIG i386 -// -// PC FreeBSD 4.5 w/uname from GNU shellutils: -// FreeBSD host.example.com 4.5-STABLE FreeBSD 4.5-STABLE #0: Wed Feb i386 unknown -// -// HP 9000/712 HP-UX 10: -// HP-UX iq B.10.10 A 9000/712 2008429113 two-user license -// -// HP 9000/712 HP-UX 10 w/uname from GNU shellutils: -// HP-UX host B.10.10 A 9000/712 unknown -// -// IBM RS6000/550 AIX 4.3: -// AIX host 3 4 000003531C00 -// -// AIX 4.3 w/uname from GNU shellutils: -// AIX host 3 4 000003531C00 unknown -// -// SGI Onyx IRIX 6.5 w/uname from GNU shellutils: -// IRIX64 host 6.5 01091820 IP19 mips -// -// SGI Onyx IRIX 6.5: -// IRIX64 host 6.5 01091820 IP19 -// -// SparcStation 20 Solaris 8 w/uname from GNU shellutils: -// SunOS host.example.com 5.8 Generic_108528-12 sun4m sparc -// -// SparcStation 20 Solaris 8: -// SunOS host.example.com 5.8 Generic_108528-12 sun4m sparc SUNW,SPARCstation-20 -// -// Mac OS X (Darwin) -// Darwin home-eden.local 7.5.0 Darwin Kernel Version 7.5.0: Thu Aug 5 19:26:16 PDT 2004; root:xnu/xnu-517.7.21.obj~3/RELEASE_PPC Power Macintosh -// -// Mac OS X early versions -// - -// }}} - -/* TODO: - * - define endianness, to allow matchSignature("bigend") etc. - */ - -/** - * Retrieves information about the current operating system - * - * This class uses php_uname() to grok information about the current OS - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Gregory Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class OS_Guess -{ - var $sysname; - var $nodename; - var $cpu; - var $release; - var $extra; - - function OS_Guess($uname = null) - { - list($this->sysname, - $this->release, - $this->cpu, - $this->extra, - $this->nodename) = $this->parseSignature($uname); - } - - function parseSignature($uname = null) - { - static $sysmap = array( - 'HP-UX' => 'hpux', - 'IRIX64' => 'irix', - ); - static $cpumap = array( - 'i586' => 'i386', - 'i686' => 'i386', - 'ppc' => 'powerpc', - ); - if ($uname === null) { - $uname = php_uname(); - } - $parts = preg_split('/\s+/', trim($uname)); - $n = count($parts); - - $release = $machine = $cpu = ''; - $sysname = $parts[0]; - $nodename = $parts[1]; - $cpu = $parts[$n-1]; - $extra = ''; - if ($cpu == 'unknown') { - $cpu = $parts[$n - 2]; - } - - switch ($sysname) { - case 'AIX' : - $release = "$parts[3].$parts[2]"; - break; - case 'Windows' : - switch ($parts[1]) { - case '95/98': - $release = '9x'; - break; - default: - $release = $parts[1]; - break; - } - $cpu = 'i386'; - break; - case 'Linux' : - $extra = $this->_detectGlibcVersion(); - // use only the first two digits from the kernel version - $release = preg_replace('/^([0-9]+\.[0-9]+).*/', '\1', $parts[2]); - break; - case 'Mac' : - $sysname = 'darwin'; - $nodename = $parts[2]; - $release = $parts[3]; - if ($cpu == 'Macintosh') { - if ($parts[$n - 2] == 'Power') { - $cpu = 'powerpc'; - } - } - break; - case 'Darwin' : - if ($cpu == 'Macintosh') { - if ($parts[$n - 2] == 'Power') { - $cpu = 'powerpc'; - } - } - $release = preg_replace('/^([0-9]+\.[0-9]+).*/', '\1', $parts[2]); - break; - default: - $release = preg_replace('/-.*/', '', $parts[2]); - break; - } - - if (isset($sysmap[$sysname])) { - $sysname = $sysmap[$sysname]; - } else { - $sysname = strtolower($sysname); - } - if (isset($cpumap[$cpu])) { - $cpu = $cpumap[$cpu]; - } - return array($sysname, $release, $cpu, $extra, $nodename); - } - - function _detectGlibcVersion() - { - static $glibc = false; - if ($glibc !== false) { - return $glibc; // no need to run this multiple times - } - $major = $minor = 0; - include_once "System.php"; - // Use glibc's header file to - // get major and minor version number: - if (@file_exists('/usr/include/features.h') && - @is_readable('/usr/include/features.h')) { - if (!@file_exists('/usr/bin/cpp') || !@is_executable('/usr/bin/cpp')) { - $features_file = fopen('/usr/include/features.h', 'rb'); - while (!feof($features_file)) { - $line = fgets($features_file, 8192); - if (!$line || (strpos($line, '#define') === false)) { - continue; - } - if (strpos($line, '__GLIBC__')) { - // major version number #define __GLIBC__ version - $line = preg_split('/\s+/', $line); - $glibc_major = trim($line[2]); - if (isset($glibc_minor)) { - break; - } - continue; - } - - if (strpos($line, '__GLIBC_MINOR__')) { - // got the minor version number - // #define __GLIBC_MINOR__ version - $line = preg_split('/\s+/', $line); - $glibc_minor = trim($line[2]); - if (isset($glibc_major)) { - break; - } - continue; - } - } - fclose($features_file); - if (!isset($glibc_major) || !isset($glibc_minor)) { - return $glibc = ''; - } - return $glibc = 'glibc' . trim($glibc_major) . "." . trim($glibc_minor) ; - } // no cpp - - $tmpfile = System::mktemp("glibctest"); - $fp = fopen($tmpfile, "w"); - fwrite($fp, "#include \n__GLIBC__ __GLIBC_MINOR__\n"); - fclose($fp); - $cpp = popen("/usr/bin/cpp $tmpfile", "r"); - while ($line = fgets($cpp, 1024)) { - if ($line{0} == '#' || trim($line) == '') { - continue; - } - - if (list($major, $minor) = explode(' ', trim($line))) { - break; - } - } - pclose($cpp); - unlink($tmpfile); - } // features.h - - if (!($major && $minor) && @is_link('/lib/libc.so.6')) { - // Let's try reading the libc.so.6 symlink - if (preg_match('/^libc-(.*)\.so$/', basename(readlink('/lib/libc.so.6')), $matches)) { - list($major, $minor) = explode('.', $matches[1]); - } - } - - if (!($major && $minor)) { - return $glibc = ''; - } - - return $glibc = "glibc{$major}.{$minor}"; - } - - function getSignature() - { - if (empty($this->extra)) { - return "{$this->sysname}-{$this->release}-{$this->cpu}"; - } - return "{$this->sysname}-{$this->release}-{$this->cpu}-{$this->extra}"; - } - - function getSysname() - { - return $this->sysname; - } - - function getNodename() - { - return $this->nodename; - } - - function getCpu() - { - return $this->cpu; - } - - function getRelease() - { - return $this->release; - } - - function getExtra() - { - return $this->extra; - } - - function matchSignature($match) - { - $fragments = is_array($match) ? $match : explode('-', $match); - $n = count($fragments); - $matches = 0; - if ($n > 0) { - $matches += $this->_matchFragment($fragments[0], $this->sysname); - } - if ($n > 1) { - $matches += $this->_matchFragment($fragments[1], $this->release); - } - if ($n > 2) { - $matches += $this->_matchFragment($fragments[2], $this->cpu); - } - if ($n > 3) { - $matches += $this->_matchFragment($fragments[3], $this->extra); - } - return ($matches == $n); - } - - function _matchFragment($fragment, $value) - { - if (strcspn($fragment, '*?') < strlen($fragment)) { - $reg = '/^' . str_replace(array('*', '?', '/'), array('.*', '.', '\\/'), $fragment) . '\\z/'; - return preg_match($reg, $value); - } - return ($fragment == '*' || !strcasecmp($fragment, $value)); - } - -} -/* - * Local Variables: - * indent-tabs-mode: nil - * c-basic-offset: 4 - * End: - */ \ No newline at end of file diff --git a/3rdparty/PEAR-LICENSE b/3rdparty/PEAR-LICENSE deleted file mode 100644 index a00a2421fd8cdcb99af083977c4188d70b3c838d..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR-LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 1997-2009, - Stig Bakken , - Gregory Beaver , - Helgi Þormar Þorbjörnsson , - Tomas V.V.Cox , - Martin Jansen . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/3rdparty/PEAR.php b/3rdparty/PEAR.php deleted file mode 100644 index 501f6a653d8a9e8741beca76ca4f2227790057f8..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR.php +++ /dev/null @@ -1,1063 +0,0 @@ - - * @author Stig Bakken - * @author Tomas V.V.Cox - * @author Greg Beaver - * @copyright 1997-2010 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: PEAR.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/**#@+ - * ERROR constants - */ -define('PEAR_ERROR_RETURN', 1); -define('PEAR_ERROR_PRINT', 2); -define('PEAR_ERROR_TRIGGER', 4); -define('PEAR_ERROR_DIE', 8); -define('PEAR_ERROR_CALLBACK', 16); -/** - * WARNING: obsolete - * @deprecated - */ -define('PEAR_ERROR_EXCEPTION', 32); -/**#@-*/ -define('PEAR_ZE2', (function_exists('version_compare') && - version_compare(zend_version(), "2-dev", "ge"))); - -if (substr(PHP_OS, 0, 3) == 'WIN') { - define('OS_WINDOWS', true); - define('OS_UNIX', false); - define('PEAR_OS', 'Windows'); -} else { - define('OS_WINDOWS', false); - define('OS_UNIX', true); - define('PEAR_OS', 'Unix'); // blatant assumption -} - -$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; -$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; -$GLOBALS['_PEAR_destructor_object_list'] = array(); -$GLOBALS['_PEAR_shutdown_funcs'] = array(); -$GLOBALS['_PEAR_error_handler_stack'] = array(); - -@ini_set('track_errors', true); - -/** - * Base class for other PEAR classes. Provides rudimentary - * emulation of destructors. - * - * If you want a destructor in your class, inherit PEAR and make a - * destructor method called _yourclassname (same name as the - * constructor, but with a "_" prefix). Also, in your constructor you - * have to call the PEAR constructor: $this->PEAR();. - * The destructor method will be called without parameters. Note that - * at in some SAPI implementations (such as Apache), any output during - * the request shutdown (in which destructors are called) seems to be - * discarded. If you need to get any debug information from your - * destructor, use error_log(), syslog() or something similar. - * - * IMPORTANT! To use the emulated destructors you need to create the - * objects by reference: $obj =& new PEAR_child; - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V. Cox - * @author Greg Beaver - * @copyright 1997-2006 The PHP Group - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @see PEAR_Error - * @since Class available since PHP 4.0.2 - * @link http://pear.php.net/manual/en/core.pear.php#core.pear.pear - */ -class PEAR -{ - /** - * Whether to enable internal debug messages. - * - * @var bool - * @access private - */ - var $_debug = false; - - /** - * Default error mode for this object. - * - * @var int - * @access private - */ - var $_default_error_mode = null; - - /** - * Default error options used for this object when error mode - * is PEAR_ERROR_TRIGGER. - * - * @var int - * @access private - */ - var $_default_error_options = null; - - /** - * Default error handler (callback) for this object, if error mode is - * PEAR_ERROR_CALLBACK. - * - * @var string - * @access private - */ - var $_default_error_handler = ''; - - /** - * Which class to use for error objects. - * - * @var string - * @access private - */ - var $_error_class = 'PEAR_Error'; - - /** - * An array of expected errors. - * - * @var array - * @access private - */ - var $_expected_errors = array(); - - /** - * Constructor. Registers this object in - * $_PEAR_destructor_object_list for destructor emulation if a - * destructor object exists. - * - * @param string $error_class (optional) which class to use for - * error objects, defaults to PEAR_Error. - * @access public - * @return void - */ - function PEAR($error_class = null) - { - $classname = strtolower(get_class($this)); - if ($this->_debug) { - print "PEAR constructor called, class=$classname\n"; - } - - if ($error_class !== null) { - $this->_error_class = $error_class; - } - - while ($classname && strcasecmp($classname, "pear")) { - $destructor = "_$classname"; - if (method_exists($this, $destructor)) { - global $_PEAR_destructor_object_list; - $_PEAR_destructor_object_list[] = &$this; - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - break; - } else { - $classname = get_parent_class($classname); - } - } - } - - /** - * Destructor (the emulated type of...). Does nothing right now, - * but is included for forward compatibility, so subclass - * destructors should always call it. - * - * See the note in the class desciption about output from - * destructors. - * - * @access public - * @return void - */ - function _PEAR() { - if ($this->_debug) { - printf("PEAR destructor called, class=%s\n", strtolower(get_class($this))); - } - } - - /** - * If you have a class that's mostly/entirely static, and you need static - * properties, you can use this method to simulate them. Eg. in your method(s) - * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar'); - * You MUST use a reference, or they will not persist! - * - * @access public - * @param string $class The calling classname, to prevent clashes - * @param string $var The variable to retrieve. - * @return mixed A reference to the variable. If not set it will be - * auto initialised to NULL. - */ - function &getStaticProperty($class, $var) - { - static $properties; - if (!isset($properties[$class])) { - $properties[$class] = array(); - } - - if (!array_key_exists($var, $properties[$class])) { - $properties[$class][$var] = null; - } - - return $properties[$class][$var]; - } - - /** - * Use this function to register a shutdown method for static - * classes. - * - * @access public - * @param mixed $func The function name (or array of class/method) to call - * @param mixed $args The arguments to pass to the function - * @return void - */ - function registerShutdownFunc($func, $args = array()) - { - // if we are called statically, there is a potential - // that no shutdown func is registered. Bug #6445 - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args); - } - - /** - * Tell whether a value is a PEAR error. - * - * @param mixed $data the value to test - * @param int $code if $data is an error object, return true - * only if $code is a string and - * $obj->getMessage() == $code or - * $code is an integer and $obj->getCode() == $code - * @access public - * @return bool true if parameter is an error - */ - static function isError($data, $code = null) - { - if (!is_a($data, 'PEAR_Error')) { - return false; - } - - if (is_null($code)) { - return true; - } elseif (is_string($code)) { - return $data->getMessage() == $code; - } - - return $data->getCode() == $code; - } - - /** - * Sets how errors generated by this object should be handled. - * Can be invoked both in objects and statically. If called - * statically, setErrorHandling sets the default behaviour for all - * PEAR objects. If called in an object, setErrorHandling sets - * the default behaviour for that object. - * - * @param int $mode - * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION. - * - * @param mixed $options - * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one - * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * - * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected - * to be the callback function or method. A callback - * function is a string with the name of the function, a - * callback method is an array of two elements: the element - * at index 0 is the object, and the element at index 1 is - * the name of the method to call in the object. - * - * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is - * a printf format string used when printing the error - * message. - * - * @access public - * @return void - * @see PEAR_ERROR_RETURN - * @see PEAR_ERROR_PRINT - * @see PEAR_ERROR_TRIGGER - * @see PEAR_ERROR_DIE - * @see PEAR_ERROR_CALLBACK - * @see PEAR_ERROR_EXCEPTION - * - * @since PHP 4.0.5 - */ - function setErrorHandling($mode = null, $options = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $setmode = &$this->_default_error_mode; - $setoptions = &$this->_default_error_options; - } else { - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - } - - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - } - - /** - * This method is used to tell which errors you expect to get. - * Expected errors are always returned with error mode - * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, - * and this method pushes a new element onto it. The list of - * expected errors are in effect until they are popped off the - * stack with the popExpect() method. - * - * Note that this method can not be called statically - * - * @param mixed $code a single error code or an array of error codes to expect - * - * @return int the new depth of the "expected errors" stack - * @access public - */ - function expectError($code = '*') - { - if (is_array($code)) { - array_push($this->_expected_errors, $code); - } else { - array_push($this->_expected_errors, array($code)); - } - return count($this->_expected_errors); - } - - /** - * This method pops one element off the expected error codes - * stack. - * - * @return array the list of error codes that were popped - */ - function popExpect() - { - return array_pop($this->_expected_errors); - } - - /** - * This method checks unsets an error code if available - * - * @param mixed error code - * @return bool true if the error code was unset, false otherwise - * @access private - * @since PHP 4.3.0 - */ - function _checkDelExpect($error_code) - { - $deleted = false; - foreach ($this->_expected_errors as $key => $error_array) { - if (in_array($error_code, $error_array)) { - unset($this->_expected_errors[$key][array_search($error_code, $error_array)]); - $deleted = true; - } - - // clean up empty arrays - if (0 == count($this->_expected_errors[$key])) { - unset($this->_expected_errors[$key]); - } - } - - return $deleted; - } - - /** - * This method deletes all occurences of the specified element from - * the expected error codes stack. - * - * @param mixed $error_code error code that should be deleted - * @return mixed list of error codes that were deleted or error - * @access public - * @since PHP 4.3.0 - */ - function delExpect($error_code) - { - $deleted = false; - if ((is_array($error_code) && (0 != count($error_code)))) { - // $error_code is a non-empty array here; we walk through it trying - // to unset all values - foreach ($error_code as $key => $error) { - $deleted = $this->_checkDelExpect($error) ? true : false; - } - - return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } elseif (!empty($error_code)) { - // $error_code comes alone, trying to unset it - if ($this->_checkDelExpect($error_code)) { - return true; - } - - return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } - - // $error_code is empty - return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME - } - - /** - * This method is a wrapper that returns an instance of the - * configured error class with this object's default error - * handling applied. If the $mode and $options parameters are not - * specified, the object's defaults are used. - * - * @param mixed $message a text error message or a PEAR error object - * - * @param int $code a numeric error code (it is up to your class - * to define these if you want to use codes) - * - * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION. - * - * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter - * specifies the PHP-internal error level (one of - * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * If $mode is PEAR_ERROR_CALLBACK, this - * parameter specifies the callback function or - * method. In other error modes this parameter - * is ignored. - * - * @param string $userinfo If you need to pass along for example debug - * information, this parameter is meant for that. - * - * @param string $error_class The returned error object will be - * instantiated from this class, if specified. - * - * @param bool $skipmsg If true, raiseError will only pass error codes, - * the error message parameter will be dropped. - * - * @access public - * @return object a PEAR error object - * @see PEAR::setErrorHandling - * @since PHP 4.0.5 - */ - static function &raiseError($message = null, - $code = null, - $mode = null, - $options = null, - $userinfo = null, - $error_class = null, - $skipmsg = false) - { - // The error is yet a PEAR error object - if (is_object($message)) { - $code = $message->getCode(); - $userinfo = $message->getUserInfo(); - $error_class = $message->getType(); - $message->error_message_prefix = ''; - $message = $message->getMessage(); - } - - if ( - isset($this) && - isset($this->_expected_errors) && - count($this->_expected_errors) > 0 && - count($exp = end($this->_expected_errors)) - ) { - if ($exp[0] == "*" || - (is_int(reset($exp)) && in_array($code, $exp)) || - (is_string(reset($exp)) && in_array($message, $exp)) - ) { - $mode = PEAR_ERROR_RETURN; - } - } - - // No mode given, try global ones - if ($mode === null) { - // Class error handler - if (isset($this) && isset($this->_default_error_mode)) { - $mode = $this->_default_error_mode; - $options = $this->_default_error_options; - // Global error handler - } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) { - $mode = $GLOBALS['_PEAR_default_error_mode']; - $options = $GLOBALS['_PEAR_default_error_options']; - } - } - - if ($error_class !== null) { - $ec = $error_class; - } elseif (isset($this) && isset($this->_error_class)) { - $ec = $this->_error_class; - } else { - $ec = 'PEAR_Error'; - } - - if (intval(PHP_VERSION) < 5) { - // little non-eval hack to fix bug #12147 - include 'PEAR/FixPHP5PEARWarnings.php'; - return $a; - } - - if ($skipmsg) { - $a = new $ec($code, $mode, $options, $userinfo); - } else { - $a = new $ec($message, $code, $mode, $options, $userinfo); - } - - return $a; - } - - /** - * Simpler form of raiseError with fewer options. In most cases - * message, code and userinfo are enough. - * - * @param mixed $message a text error message or a PEAR error object - * - * @param int $code a numeric error code (it is up to your class - * to define these if you want to use codes) - * - * @param string $userinfo If you need to pass along for example debug - * information, this parameter is meant for that. - * - * @access public - * @return object a PEAR error object - * @see PEAR::raiseError - */ - function &throwError($message = null, $code = null, $userinfo = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $a = $this->raiseError($message, $code, null, null, $userinfo); - return $a; - } - - $a = PEAR::raiseError($message, $code, null, null, $userinfo); - return $a; - } - - function staticPushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - $stack[] = array($def_mode, $def_options); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $def_mode = $mode; - $def_options = $options; - break; - - case PEAR_ERROR_CALLBACK: - $def_mode = $mode; - // class/object method callback - if (is_callable($options)) { - $def_options = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - $stack[] = array($mode, $options); - return true; - } - - function staticPopErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - return true; - } - - /** - * Push a new error handler on top of the error handler options stack. With this - * you can easily override the actual error handler for some code and restore - * it later with popErrorHandling. - * - * @param mixed $mode (same as setErrorHandling) - * @param mixed $options (same as setErrorHandling) - * - * @return bool Always true - * - * @see PEAR::setErrorHandling - */ - function pushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - if (isset($this) && is_a($this, 'PEAR')) { - $def_mode = &$this->_default_error_mode; - $def_options = &$this->_default_error_options; - } else { - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - } - $stack[] = array($def_mode, $def_options); - - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - $stack[] = array($mode, $options); - return true; - } - - /** - * Pop the last error handler used - * - * @return bool Always true - * - * @see PEAR::pushErrorHandling - */ - function popErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - return true; - } - - /** - * OS independant PHP extension load. Remember to take care - * on the correct extension name for case sensitive OSes. - * - * @param string $ext The extension name - * @return bool Success or not on the dl() call - */ - static function loadExtension($ext) - { - if (extension_loaded($ext)) { - return true; - } - - // if either returns true dl() will produce a FATAL error, stop that - if ( - function_exists('dl') === false || - ini_get('enable_dl') != 1 || - ini_get('safe_mode') == 1 - ) { - return false; - } - - if (OS_WINDOWS) { - $suffix = '.dll'; - } elseif (PHP_OS == 'HP-UX') { - $suffix = '.sl'; - } elseif (PHP_OS == 'AIX') { - $suffix = '.a'; - } elseif (PHP_OS == 'OSX') { - $suffix = '.bundle'; - } else { - $suffix = '.so'; - } - - return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix); - } -} - -if (PEAR_ZE2) { - include_once 'PEAR5.php'; -} - -function _PEAR_call_destructors() -{ - global $_PEAR_destructor_object_list; - if (is_array($_PEAR_destructor_object_list) && - sizeof($_PEAR_destructor_object_list)) - { - reset($_PEAR_destructor_object_list); - if (PEAR_ZE2) { - $destructLifoExists = PEAR5::getStaticProperty('PEAR', 'destructlifo'); - } else { - $destructLifoExists = PEAR::getStaticProperty('PEAR', 'destructlifo'); - } - - if ($destructLifoExists) { - $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list); - } - - while (list($k, $objref) = each($_PEAR_destructor_object_list)) { - $classname = get_class($objref); - while ($classname) { - $destructor = "_$classname"; - if (method_exists($objref, $destructor)) { - $objref->$destructor(); - break; - } else { - $classname = get_parent_class($classname); - } - } - } - // Empty the object list to ensure that destructors are - // not called more than once. - $_PEAR_destructor_object_list = array(); - } - - // Now call the shutdown functions - if ( - isset($GLOBALS['_PEAR_shutdown_funcs']) && - is_array($GLOBALS['_PEAR_shutdown_funcs']) && - !empty($GLOBALS['_PEAR_shutdown_funcs']) - ) { - foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) { - call_user_func_array($value[0], $value[1]); - } - } -} - -/** - * Standard PEAR error class for PHP 4 - * - * This class is supserseded by {@link PEAR_Exception} in PHP 5 - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V. Cox - * @author Gregory Beaver - * @copyright 1997-2006 The PHP Group - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/manual/en/core.pear.pear-error.php - * @see PEAR::raiseError(), PEAR::throwError() - * @since Class available since PHP 4.0.2 - */ -class PEAR_Error -{ - var $error_message_prefix = ''; - var $mode = PEAR_ERROR_RETURN; - var $level = E_USER_NOTICE; - var $code = -1; - var $message = ''; - var $userinfo = ''; - var $backtrace = null; - - /** - * PEAR_Error constructor - * - * @param string $message message - * - * @param int $code (optional) error code - * - * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN, - * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION - * - * @param mixed $options (optional) error level, _OR_ in the case of - * PEAR_ERROR_CALLBACK, the callback function or object/method - * tuple. - * - * @param string $userinfo (optional) additional user/debug info - * - * @access public - * - */ - function PEAR_Error($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - if ($mode === null) { - $mode = PEAR_ERROR_RETURN; - } - $this->message = $message; - $this->code = $code; - $this->mode = $mode; - $this->userinfo = $userinfo; - - if (PEAR_ZE2) { - $skiptrace = PEAR5::getStaticProperty('PEAR_Error', 'skiptrace'); - } else { - $skiptrace = PEAR::getStaticProperty('PEAR_Error', 'skiptrace'); - } - - if (!$skiptrace) { - $this->backtrace = debug_backtrace(); - if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) { - unset($this->backtrace[0]['object']); - } - } - - if ($mode & PEAR_ERROR_CALLBACK) { - $this->level = E_USER_NOTICE; - $this->callback = $options; - } else { - if ($options === null) { - $options = E_USER_NOTICE; - } - - $this->level = $options; - $this->callback = null; - } - - if ($this->mode & PEAR_ERROR_PRINT) { - if (is_null($options) || is_int($options)) { - $format = "%s"; - } else { - $format = $options; - } - - printf($format, $this->getMessage()); - } - - if ($this->mode & PEAR_ERROR_TRIGGER) { - trigger_error($this->getMessage(), $this->level); - } - - if ($this->mode & PEAR_ERROR_DIE) { - $msg = $this->getMessage(); - if (is_null($options) || is_int($options)) { - $format = "%s"; - if (substr($msg, -1) != "\n") { - $msg .= "\n"; - } - } else { - $format = $options; - } - die(sprintf($format, $msg)); - } - - if ($this->mode & PEAR_ERROR_CALLBACK && is_callable($this->callback)) { - call_user_func($this->callback, $this); - } - - if ($this->mode & PEAR_ERROR_EXCEPTION) { - trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING); - eval('$e = new Exception($this->message, $this->code);throw($e);'); - } - } - - /** - * Get the error mode from an error object. - * - * @return int error mode - * @access public - */ - function getMode() - { - return $this->mode; - } - - /** - * Get the callback function/method from an error object. - * - * @return mixed callback function or object/method array - * @access public - */ - function getCallback() - { - return $this->callback; - } - - /** - * Get the error message from an error object. - * - * @return string full error message - * @access public - */ - function getMessage() - { - return ($this->error_message_prefix . $this->message); - } - - /** - * Get error code from an error object - * - * @return int error code - * @access public - */ - function getCode() - { - return $this->code; - } - - /** - * Get the name of this error/exception. - * - * @return string error/exception name (type) - * @access public - */ - function getType() - { - return get_class($this); - } - - /** - * Get additional user-supplied information. - * - * @return string user-supplied information - * @access public - */ - function getUserInfo() - { - return $this->userinfo; - } - - /** - * Get additional debug information supplied by the application. - * - * @return string debug information - * @access public - */ - function getDebugInfo() - { - return $this->getUserInfo(); - } - - /** - * Get the call backtrace from where the error was generated. - * Supported with PHP 4.3.0 or newer. - * - * @param int $frame (optional) what frame to fetch - * @return array Backtrace, or NULL if not available. - * @access public - */ - function getBacktrace($frame = null) - { - if (defined('PEAR_IGNORE_BACKTRACE')) { - return null; - } - if ($frame === null) { - return $this->backtrace; - } - return $this->backtrace[$frame]; - } - - function addUserInfo($info) - { - if (empty($this->userinfo)) { - $this->userinfo = $info; - } else { - $this->userinfo .= " ** $info"; - } - } - - function __toString() - { - return $this->getMessage(); - } - - /** - * Make a string representation of this object. - * - * @return string a string with an object summary - * @access public - */ - function toString() - { - $modes = array(); - $levels = array(E_USER_NOTICE => 'notice', - E_USER_WARNING => 'warning', - E_USER_ERROR => 'error'); - if ($this->mode & PEAR_ERROR_CALLBACK) { - if (is_array($this->callback)) { - $callback = (is_object($this->callback[0]) ? - strtolower(get_class($this->callback[0])) : - $this->callback[0]) . '::' . - $this->callback[1]; - } else { - $callback = $this->callback; - } - return sprintf('[%s: message="%s" code=%d mode=callback '. - 'callback=%s prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - $callback, $this->error_message_prefix, - $this->userinfo); - } - if ($this->mode & PEAR_ERROR_PRINT) { - $modes[] = 'print'; - } - if ($this->mode & PEAR_ERROR_TRIGGER) { - $modes[] = 'trigger'; - } - if ($this->mode & PEAR_ERROR_DIE) { - $modes[] = 'die'; - } - if ($this->mode & PEAR_ERROR_RETURN) { - $modes[] = 'return'; - } - return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. - 'prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - implode("|", $modes), $levels[$this->level], - $this->error_message_prefix, - $this->userinfo); - } -} - -/* - * Local Variables: - * mode: php - * tab-width: 4 - * c-basic-offset: 4 - * End: - */ diff --git a/3rdparty/PEAR/Autoloader.php b/3rdparty/PEAR/Autoloader.php deleted file mode 100644 index 51620c7085f7d6a54864b31bde09d042fdea741a..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Autoloader.php +++ /dev/null @@ -1,218 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Autoloader.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/manual/en/core.ppm.php#core.ppm.pear-autoloader - * @since File available since Release 0.1 - * @deprecated File deprecated in Release 1.4.0a1 - */ - -// /* vim: set expandtab tabstop=4 shiftwidth=4: */ - -if (!extension_loaded("overload")) { - // die hard without ext/overload - die("Rebuild PHP with the `overload' extension to use PEAR_Autoloader"); -} - -/** - * Include for PEAR_Error and PEAR classes - */ -require_once "PEAR.php"; - -/** - * This class is for objects where you want to separate the code for - * some methods into separate classes. This is useful if you have a - * class with not-frequently-used methods that contain lots of code - * that you would like to avoid always parsing. - * - * The PEAR_Autoloader class provides autoloading and aggregation. - * The autoloading lets you set up in which classes the separated - * methods are found. Aggregation is the technique used to import new - * methods, an instance of each class providing separated methods is - * stored and called every time the aggregated method is called. - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/manual/en/core.ppm.php#core.ppm.pear-autoloader - * @since File available since Release 0.1 - * @deprecated File deprecated in Release 1.4.0a1 - */ -class PEAR_Autoloader extends PEAR -{ - // {{{ properties - - /** - * Map of methods and classes where they are defined - * - * @var array - * - * @access private - */ - var $_autoload_map = array(); - - /** - * Map of methods and aggregate objects - * - * @var array - * - * @access private - */ - var $_method_map = array(); - - // }}} - // {{{ addAutoload() - - /** - * Add one or more autoload entries. - * - * @param string $method which method to autoload - * - * @param string $classname (optional) which class to find the method in. - * If the $method parameter is an array, this - * parameter may be omitted (and will be ignored - * if not), and the $method parameter will be - * treated as an associative array with method - * names as keys and class names as values. - * - * @return void - * - * @access public - */ - function addAutoload($method, $classname = null) - { - if (is_array($method)) { - array_walk($method, create_function('$a,&$b', '$b = strtolower($b);')); - $this->_autoload_map = array_merge($this->_autoload_map, $method); - } else { - $this->_autoload_map[strtolower($method)] = $classname; - } - } - - // }}} - // {{{ removeAutoload() - - /** - * Remove an autoload entry. - * - * @param string $method which method to remove the autoload entry for - * - * @return bool TRUE if an entry was removed, FALSE if not - * - * @access public - */ - function removeAutoload($method) - { - $method = strtolower($method); - $ok = isset($this->_autoload_map[$method]); - unset($this->_autoload_map[$method]); - return $ok; - } - - // }}} - // {{{ addAggregateObject() - - /** - * Add an aggregate object to this object. If the specified class - * is not defined, loading it will be attempted following PEAR's - * file naming scheme. All the methods in the class will be - * aggregated, except private ones (name starting with an - * underscore) and constructors. - * - * @param string $classname what class to instantiate for the object. - * - * @return void - * - * @access public - */ - function addAggregateObject($classname) - { - $classname = strtolower($classname); - if (!class_exists($classname)) { - $include_file = preg_replace('/[^a-z0-9]/i', '_', $classname); - include_once $include_file; - } - $obj = new $classname; - $methods = get_class_methods($classname); - foreach ($methods as $method) { - // don't import priviate methods and constructors - if ($method{0} != '_' && $method != $classname) { - $this->_method_map[$method] = $obj; - } - } - } - - // }}} - // {{{ removeAggregateObject() - - /** - * Remove an aggregate object. - * - * @param string $classname the class of the object to remove - * - * @return bool TRUE if an object was removed, FALSE if not - * - * @access public - */ - function removeAggregateObject($classname) - { - $ok = false; - $classname = strtolower($classname); - reset($this->_method_map); - while (list($method, $obj) = each($this->_method_map)) { - if (is_a($obj, $classname)) { - unset($this->_method_map[$method]); - $ok = true; - } - } - return $ok; - } - - // }}} - // {{{ __call() - - /** - * Overloaded object call handler, called each time an - * undefined/aggregated method is invoked. This method repeats - * the call in the right aggregate object and passes on the return - * value. - * - * @param string $method which method that was called - * - * @param string $args An array of the parameters passed in the - * original call - * - * @return mixed The return value from the aggregated method, or a PEAR - * error if the called method was unknown. - */ - function __call($method, $args, &$retval) - { - $method = strtolower($method); - if (empty($this->_method_map[$method]) && isset($this->_autoload_map[$method])) { - $this->addAggregateObject($this->_autoload_map[$method]); - } - if (isset($this->_method_map[$method])) { - $retval = call_user_func_array(array($this->_method_map[$method], $method), $args); - return true; - } - return false; - } - - // }}} -} - -overload("PEAR_Autoloader"); - -?> diff --git a/3rdparty/PEAR/Builder.php b/3rdparty/PEAR/Builder.php deleted file mode 100644 index 90f3a1455524a48454e2d3dd17ea5897b6789660..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Builder.php +++ /dev/null @@ -1,489 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Builder.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - * - * TODO: log output parameters in PECL command line - * TODO: msdev path in configuration - */ - -/** - * Needed for extending PEAR_Builder - */ -require_once 'PEAR/Common.php'; -require_once 'PEAR/PackageFile.php'; - -/** - * Class to handle building (compiling) extensions. - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since PHP 4.0.2 - * @see http://pear.php.net/manual/en/core.ppm.pear-builder.php - */ -class PEAR_Builder extends PEAR_Common -{ - var $php_api_version = 0; - var $zend_module_api_no = 0; - var $zend_extension_api_no = 0; - - var $extensions_built = array(); - - /** - * @var string Used for reporting when it is not possible to pass function - * via extra parameter, e.g. log, msdevCallback - */ - var $current_callback = null; - - // used for msdev builds - var $_lastline = null; - var $_firstline = null; - - /** - * PEAR_Builder constructor. - * - * @param object $ui user interface object (instance of PEAR_Frontend_*) - * - * @access public - */ - function PEAR_Builder(&$ui) - { - parent::PEAR_Common(); - $this->setFrontendObject($ui); - } - - /** - * Build an extension from source on windows. - * requires msdev - */ - function _build_win32($descfile, $callback = null) - { - if (is_object($descfile)) { - $pkg = $descfile; - $descfile = $pkg->getPackageFile(); - } else { - $pf = &new PEAR_PackageFile($this->config, $this->debug); - $pkg = &$pf->fromPackageFile($descfile, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pkg)) { - return $pkg; - } - } - $dir = dirname($descfile); - $old_cwd = getcwd(); - - if (!file_exists($dir) || !is_dir($dir) || !chdir($dir)) { - return $this->raiseError("could not chdir to $dir"); - } - - // packages that were in a .tar have the packagefile in this directory - $vdir = $pkg->getPackage() . '-' . $pkg->getVersion(); - if (file_exists($dir) && is_dir($vdir)) { - if (!chdir($vdir)) { - return $this->raiseError("could not chdir to " . realpath($vdir)); - } - - $dir = getcwd(); - } - - $this->log(2, "building in $dir"); - - $dsp = $pkg->getPackage().'.dsp'; - if (!file_exists("$dir/$dsp")) { - return $this->raiseError("The DSP $dsp does not exist."); - } - // XXX TODO: make release build type configurable - $command = 'msdev '.$dsp.' /MAKE "'.$pkg->getPackage(). ' - Release"'; - - $err = $this->_runCommand($command, array(&$this, 'msdevCallback')); - if (PEAR::isError($err)) { - return $err; - } - - // figure out the build platform and type - $platform = 'Win32'; - $buildtype = 'Release'; - if (preg_match('/.*?'.$pkg->getPackage().'\s-\s(\w+)\s(.*?)-+/i',$this->_firstline,$matches)) { - $platform = $matches[1]; - $buildtype = $matches[2]; - } - - if (preg_match('/(.*)?\s-\s(\d+).*?(\d+)/', $this->_lastline, $matches)) { - if ($matches[2]) { - // there were errors in the build - return $this->raiseError("There were errors during compilation."); - } - $out = $matches[1]; - } else { - return $this->raiseError("Did not understand the completion status returned from msdev.exe."); - } - - // msdev doesn't tell us the output directory :/ - // open the dsp, find /out and use that directory - $dsptext = join(file($dsp),''); - - // this regex depends on the build platform and type having been - // correctly identified above. - $regex ='/.*?!IF\s+"\$\(CFG\)"\s+==\s+("'. - $pkg->getPackage().'\s-\s'. - $platform.'\s'. - $buildtype.'").*?'. - '\/out:"(.*?)"/is'; - - if ($dsptext && preg_match($regex, $dsptext, $matches)) { - // what we get back is a relative path to the output file itself. - $outfile = realpath($matches[2]); - } else { - return $this->raiseError("Could not retrieve output information from $dsp."); - } - // realpath returns false if the file doesn't exist - if ($outfile && copy($outfile, "$dir/$out")) { - $outfile = "$dir/$out"; - } - - $built_files[] = array( - 'file' => "$outfile", - 'php_api' => $this->php_api_version, - 'zend_mod_api' => $this->zend_module_api_no, - 'zend_ext_api' => $this->zend_extension_api_no, - ); - - return $built_files; - } - // }}} - - // {{{ msdevCallback() - function msdevCallback($what, $data) - { - if (!$this->_firstline) - $this->_firstline = $data; - $this->_lastline = $data; - call_user_func($this->current_callback, $what, $data); - } - - /** - * @param string - * @param string - * @param array - * @access private - */ - function _harvestInstDir($dest_prefix, $dirname, &$built_files) - { - $d = opendir($dirname); - if (!$d) - return false; - - $ret = true; - while (($ent = readdir($d)) !== false) { - if ($ent{0} == '.') - continue; - - $full = $dirname . DIRECTORY_SEPARATOR . $ent; - if (is_dir($full)) { - if (!$this->_harvestInstDir( - $dest_prefix . DIRECTORY_SEPARATOR . $ent, - $full, $built_files)) { - $ret = false; - break; - } - } else { - $dest = $dest_prefix . DIRECTORY_SEPARATOR . $ent; - $built_files[] = array( - 'file' => $full, - 'dest' => $dest, - 'php_api' => $this->php_api_version, - 'zend_mod_api' => $this->zend_module_api_no, - 'zend_ext_api' => $this->zend_extension_api_no, - ); - } - } - closedir($d); - return $ret; - } - - /** - * Build an extension from source. Runs "phpize" in the source - * directory, but compiles in a temporary directory - * (TMPDIR/pear-build-USER/PACKAGE-VERSION). - * - * @param string|PEAR_PackageFile_v* $descfile path to XML package description file, or - * a PEAR_PackageFile object - * - * @param mixed $callback callback function used to report output, - * see PEAR_Builder::_runCommand for details - * - * @return array an array of associative arrays with built files, - * format: - * array( array( 'file' => '/path/to/ext.so', - * 'php_api' => YYYYMMDD, - * 'zend_mod_api' => YYYYMMDD, - * 'zend_ext_api' => YYYYMMDD ), - * ... ) - * - * @access public - * - * @see PEAR_Builder::_runCommand - */ - function build($descfile, $callback = null) - { - if (preg_match('/(\\/|\\\\|^)([^\\/\\\\]+)?php(.+)?$/', - $this->config->get('php_bin'), $matches)) { - if (isset($matches[2]) && strlen($matches[2]) && - trim($matches[2]) != trim($this->config->get('php_prefix'))) { - $this->log(0, 'WARNING: php_bin ' . $this->config->get('php_bin') . - ' appears to have a prefix ' . $matches[2] . ', but' . - ' config variable php_prefix does not match'); - } - - if (isset($matches[3]) && strlen($matches[3]) && - trim($matches[3]) != trim($this->config->get('php_suffix'))) { - $this->log(0, 'WARNING: php_bin ' . $this->config->get('php_bin') . - ' appears to have a suffix ' . $matches[3] . ', but' . - ' config variable php_suffix does not match'); - } - } - - $this->current_callback = $callback; - if (PEAR_OS == "Windows") { - return $this->_build_win32($descfile, $callback); - } - - if (PEAR_OS != 'Unix') { - return $this->raiseError("building extensions not supported on this platform"); - } - - if (is_object($descfile)) { - $pkg = $descfile; - $descfile = $pkg->getPackageFile(); - if (is_a($pkg, 'PEAR_PackageFile_v1')) { - $dir = dirname($descfile); - } else { - $dir = $pkg->_config->get('temp_dir') . '/' . $pkg->getName(); - // automatically delete at session end - $this->addTempFile($dir); - } - } else { - $pf = &new PEAR_PackageFile($this->config); - $pkg = &$pf->fromPackageFile($descfile, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pkg)) { - return $pkg; - } - $dir = dirname($descfile); - } - - // Find config. outside of normal path - e.g. config.m4 - foreach (array_keys($pkg->getInstallationFileList()) as $item) { - if (stristr(basename($item), 'config.m4') && dirname($item) != '.') { - $dir .= DIRECTORY_SEPARATOR . dirname($item); - break; - } - } - - $old_cwd = getcwd(); - if (!file_exists($dir) || !is_dir($dir) || !chdir($dir)) { - return $this->raiseError("could not chdir to $dir"); - } - - $vdir = $pkg->getPackage() . '-' . $pkg->getVersion(); - if (is_dir($vdir)) { - chdir($vdir); - } - - $dir = getcwd(); - $this->log(2, "building in $dir"); - putenv('PATH=' . $this->config->get('bin_dir') . ':' . getenv('PATH')); - $err = $this->_runCommand($this->config->get('php_prefix') - . "phpize" . - $this->config->get('php_suffix'), - array(&$this, 'phpizeCallback')); - if (PEAR::isError($err)) { - return $err; - } - - if (!$err) { - return $this->raiseError("`phpize' failed"); - } - - // {{{ start of interactive part - $configure_command = "$dir/configure"; - $configure_options = $pkg->getConfigureOptions(); - if ($configure_options) { - foreach ($configure_options as $o) { - $default = array_key_exists('default', $o) ? $o['default'] : null; - list($r) = $this->ui->userDialog('build', - array($o['prompt']), - array('text'), - array($default)); - if (substr($o['name'], 0, 5) == 'with-' && - ($r == 'yes' || $r == 'autodetect')) { - $configure_command .= " --$o[name]"; - } else { - $configure_command .= " --$o[name]=".trim($r); - } - } - } - // }}} end of interactive part - - // FIXME make configurable - if (!$user=getenv('USER')) { - $user='defaultuser'; - } - - $tmpdir = $this->config->get('temp_dir'); - $build_basedir = System::mktemp(' -t "' . $tmpdir . '" -d "pear-build-' . $user . '"'); - $build_dir = "$build_basedir/$vdir"; - $inst_dir = "$build_basedir/install-$vdir"; - $this->log(1, "building in $build_dir"); - if (is_dir($build_dir)) { - System::rm(array('-rf', $build_dir)); - } - - if (!System::mkDir(array('-p', $build_dir))) { - return $this->raiseError("could not create build dir: $build_dir"); - } - - $this->addTempFile($build_dir); - if (!System::mkDir(array('-p', $inst_dir))) { - return $this->raiseError("could not create temporary install dir: $inst_dir"); - } - $this->addTempFile($inst_dir); - - $make_command = getenv('MAKE') ? getenv('MAKE') : 'make'; - - $to_run = array( - $configure_command, - $make_command, - "$make_command INSTALL_ROOT=\"$inst_dir\" install", - "find \"$inst_dir\" | xargs ls -dils" - ); - if (!file_exists($build_dir) || !is_dir($build_dir) || !chdir($build_dir)) { - return $this->raiseError("could not chdir to $build_dir"); - } - putenv('PHP_PEAR_VERSION=1.9.4'); - foreach ($to_run as $cmd) { - $err = $this->_runCommand($cmd, $callback); - if (PEAR::isError($err)) { - chdir($old_cwd); - return $err; - } - if (!$err) { - chdir($old_cwd); - return $this->raiseError("`$cmd' failed"); - } - } - if (!($dp = opendir("modules"))) { - chdir($old_cwd); - return $this->raiseError("no `modules' directory found"); - } - $built_files = array(); - $prefix = exec($this->config->get('php_prefix') - . "php-config" . - $this->config->get('php_suffix') . " --prefix"); - $this->_harvestInstDir($prefix, $inst_dir . DIRECTORY_SEPARATOR . $prefix, $built_files); - chdir($old_cwd); - return $built_files; - } - - /** - * Message callback function used when running the "phpize" - * program. Extracts the API numbers used. Ignores other message - * types than "cmdoutput". - * - * @param string $what the type of message - * @param mixed $data the message - * - * @return void - * - * @access public - */ - function phpizeCallback($what, $data) - { - if ($what != 'cmdoutput') { - return; - } - $this->log(1, rtrim($data)); - if (preg_match('/You should update your .aclocal.m4/', $data)) { - return; - } - $matches = array(); - if (preg_match('/^\s+(\S[^:]+):\s+(\d{8})/', $data, $matches)) { - $member = preg_replace('/[^a-z]/', '_', strtolower($matches[1])); - $apino = (int)$matches[2]; - if (isset($this->$member)) { - $this->$member = $apino; - //$msg = sprintf("%-22s : %d", $matches[1], $apino); - //$this->log(1, $msg); - } - } - } - - /** - * Run an external command, using a message callback to report - * output. The command will be run through popen and output is - * reported for every line with a "cmdoutput" message with the - * line string, including newlines, as payload. - * - * @param string $command the command to run - * - * @param mixed $callback (optional) function to use as message - * callback - * - * @return bool whether the command was successful (exit code 0 - * means success, any other means failure) - * - * @access private - */ - function _runCommand($command, $callback = null) - { - $this->log(1, "running: $command"); - $pp = popen("$command 2>&1", "r"); - if (!$pp) { - return $this->raiseError("failed to run `$command'"); - } - if ($callback && $callback[0]->debug == 1) { - $olddbg = $callback[0]->debug; - $callback[0]->debug = 2; - } - - while ($line = fgets($pp, 1024)) { - if ($callback) { - call_user_func($callback, 'cmdoutput', $line); - } else { - $this->log(2, rtrim($line)); - } - } - if ($callback && isset($olddbg)) { - $callback[0]->debug = $olddbg; - } - - $exitcode = is_resource($pp) ? pclose($pp) : -1; - return ($exitcode == 0); - } - - function log($level, $msg) - { - if ($this->current_callback) { - if ($this->debug >= $level) { - call_user_func($this->current_callback, 'output', $msg); - } - return; - } - return PEAR_Common::log($level, $msg); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/ChannelFile.php b/3rdparty/PEAR/ChannelFile.php deleted file mode 100644 index f2c02ab42b78848676665937a6eaa954ba6af23a..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/ChannelFile.php +++ /dev/null @@ -1,1559 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: ChannelFile.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Needed for error handling - */ -require_once 'PEAR/ErrorStack.php'; -require_once 'PEAR/XMLParser.php'; -require_once 'PEAR/Common.php'; - -/** - * Error code if the channel.xml tag does not contain a valid version - */ -define('PEAR_CHANNELFILE_ERROR_NO_VERSION', 1); -/** - * Error code if the channel.xml tag version is not supported (version 1.0 is the only supported version, - * currently - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_VERSION', 2); - -/** - * Error code if parsing is attempted with no xml extension - */ -define('PEAR_CHANNELFILE_ERROR_NO_XML_EXT', 3); - -/** - * Error code if creating the xml parser resource fails - */ -define('PEAR_CHANNELFILE_ERROR_CANT_MAKE_PARSER', 4); - -/** - * Error code used for all sax xml parsing errors - */ -define('PEAR_CHANNELFILE_ERROR_PARSER_ERROR', 5); - -/**#@+ - * Validation errors - */ -/** - * Error code when channel name is missing - */ -define('PEAR_CHANNELFILE_ERROR_NO_NAME', 6); -/** - * Error code when channel name is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_NAME', 7); -/** - * Error code when channel summary is missing - */ -define('PEAR_CHANNELFILE_ERROR_NO_SUMMARY', 8); -/** - * Error code when channel summary is multi-line - */ -define('PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY', 9); -/** - * Error code when channel server is missing for protocol - */ -define('PEAR_CHANNELFILE_ERROR_NO_HOST', 10); -/** - * Error code when channel server is invalid for protocol - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_HOST', 11); -/** - * Error code when a mirror name is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_MIRROR', 21); -/** - * Error code when a mirror type is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_MIRRORTYPE', 22); -/** - * Error code when an attempt is made to generate xml, but the parsed content is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID', 23); -/** - * Error code when an empty package name validate regex is passed in - */ -define('PEAR_CHANNELFILE_ERROR_EMPTY_REGEX', 24); -/** - * Error code when a tag has no version - */ -define('PEAR_CHANNELFILE_ERROR_NO_FUNCTIONVERSION', 25); -/** - * Error code when a tag has no name - */ -define('PEAR_CHANNELFILE_ERROR_NO_FUNCTIONNAME', 26); -/** - * Error code when a tag has no name - */ -define('PEAR_CHANNELFILE_ERROR_NOVALIDATE_NAME', 27); -/** - * Error code when a tag has no version attribute - */ -define('PEAR_CHANNELFILE_ERROR_NOVALIDATE_VERSION', 28); -/** - * Error code when a mirror does not exist but is called for in one of the set* - * methods. - */ -define('PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND', 32); -/** - * Error code when a server port is not numeric - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_PORT', 33); -/** - * Error code when contains no version attribute - */ -define('PEAR_CHANNELFILE_ERROR_NO_STATICVERSION', 34); -/** - * Error code when contains no type attribute in a protocol definition - */ -define('PEAR_CHANNELFILE_ERROR_NOBASEURLTYPE', 35); -/** - * Error code when a mirror is defined and the channel.xml represents the __uri pseudo-channel - */ -define('PEAR_CHANNELFILE_URI_CANT_MIRROR', 36); -/** - * Error code when ssl attribute is present and is not "yes" - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_SSL', 37); -/**#@-*/ - -/** - * Mirror types allowed. Currently only internet servers are recognized. - */ -$GLOBALS['_PEAR_CHANNELS_MIRROR_TYPES'] = array('server'); - - -/** - * The Channel handling class - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_ChannelFile -{ - /** - * @access private - * @var PEAR_ErrorStack - * @access private - */ - var $_stack; - - /** - * Supported channel.xml versions, for parsing - * @var array - * @access private - */ - var $_supportedVersions = array('1.0'); - - /** - * Parsed channel information - * @var array - * @access private - */ - var $_channelInfo; - - /** - * index into the subchannels array, used for parsing xml - * @var int - * @access private - */ - var $_subchannelIndex; - - /** - * index into the mirrors array, used for parsing xml - * @var int - * @access private - */ - var $_mirrorIndex; - - /** - * Flag used to determine the validity of parsed content - * @var boolean - * @access private - */ - var $_isValid = false; - - function PEAR_ChannelFile() - { - $this->_stack = &new PEAR_ErrorStack('PEAR_ChannelFile'); - $this->_stack->setErrorMessageTemplate($this->_getErrorMessage()); - $this->_isValid = false; - } - - /** - * @return array - * @access protected - */ - function _getErrorMessage() - { - return - array( - PEAR_CHANNELFILE_ERROR_INVALID_VERSION => - 'While parsing channel.xml, an invalid version number "%version% was passed in, expecting one of %versions%', - PEAR_CHANNELFILE_ERROR_NO_VERSION => - 'No version number found in tag', - PEAR_CHANNELFILE_ERROR_NO_XML_EXT => - '%error%', - PEAR_CHANNELFILE_ERROR_CANT_MAKE_PARSER => - 'Unable to create XML parser', - PEAR_CHANNELFILE_ERROR_PARSER_ERROR => - '%error%', - PEAR_CHANNELFILE_ERROR_NO_NAME => - 'Missing channel name', - PEAR_CHANNELFILE_ERROR_INVALID_NAME => - 'Invalid channel %tag% "%name%"', - PEAR_CHANNELFILE_ERROR_NO_SUMMARY => - 'Missing channel summary', - PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY => - 'Channel summary should be on one line, but is multi-line', - PEAR_CHANNELFILE_ERROR_NO_HOST => - 'Missing channel server for %type% server', - PEAR_CHANNELFILE_ERROR_INVALID_HOST => - 'Server name "%server%" is invalid for %type% server', - PEAR_CHANNELFILE_ERROR_INVALID_MIRROR => - 'Invalid mirror name "%name%", mirror type %type%', - PEAR_CHANNELFILE_ERROR_INVALID_MIRRORTYPE => - 'Invalid mirror type "%type%"', - PEAR_CHANNELFILE_ERROR_INVALID => - 'Cannot generate xml, contents are invalid', - PEAR_CHANNELFILE_ERROR_EMPTY_REGEX => - 'packagenameregex cannot be empty', - PEAR_CHANNELFILE_ERROR_NO_FUNCTIONVERSION => - '%parent% %protocol% function has no version', - PEAR_CHANNELFILE_ERROR_NO_FUNCTIONNAME => - '%parent% %protocol% function has no name', - PEAR_CHANNELFILE_ERROR_NOBASEURLTYPE => - '%parent% rest baseurl has no type', - PEAR_CHANNELFILE_ERROR_NOVALIDATE_NAME => - 'Validation package has no name in tag', - PEAR_CHANNELFILE_ERROR_NOVALIDATE_VERSION => - 'Validation package "%package%" has no version', - PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND => - 'Mirror "%mirror%" does not exist', - PEAR_CHANNELFILE_ERROR_INVALID_PORT => - 'Port "%port%" must be numeric', - PEAR_CHANNELFILE_ERROR_NO_STATICVERSION => - ' tag must contain version attribute', - PEAR_CHANNELFILE_URI_CANT_MIRROR => - 'The __uri pseudo-channel cannot have mirrors', - PEAR_CHANNELFILE_ERROR_INVALID_SSL => - '%server% has invalid ssl attribute "%ssl%" can only be yes or not present', - ); - } - - /** - * @param string contents of package.xml file - * @return bool success of parsing - */ - function fromXmlString($data) - { - if (preg_match('/_supportedVersions)) { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_INVALID_VERSION, 'error', - array('version' => $channelversion[1])); - return false; - } - $parser = new PEAR_XMLParser; - $result = $parser->parse($data); - if ($result !== true) { - if ($result->getCode() == 1) { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_NO_XML_EXT, 'error', - array('error' => $result->getMessage())); - } else { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_CANT_MAKE_PARSER, 'error'); - } - return false; - } - $this->_channelInfo = $parser->getData(); - return true; - } else { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_NO_VERSION, 'error', array('xml' => $data)); - return false; - } - } - - /** - * @return array - */ - function toArray() - { - if (!$this->_isValid && !$this->validate()) { - return false; - } - return $this->_channelInfo; - } - - /** - * @param array - * @static - * @return PEAR_ChannelFile|false false if invalid - */ - function &fromArray($data, $compatibility = false, $stackClass = 'PEAR_ErrorStack') - { - $a = new PEAR_ChannelFile($compatibility, $stackClass); - $a->_fromArray($data); - if (!$a->validate()) { - $a = false; - return $a; - } - return $a; - } - - /** - * Unlike {@link fromArray()} this does not do any validation - * @param array - * @static - * @return PEAR_ChannelFile - */ - function &fromArrayWithErrors($data, $compatibility = false, - $stackClass = 'PEAR_ErrorStack') - { - $a = new PEAR_ChannelFile($compatibility, $stackClass); - $a->_fromArray($data); - return $a; - } - - /** - * @param array - * @access private - */ - function _fromArray($data) - { - $this->_channelInfo = $data; - } - - /** - * Wrapper to {@link PEAR_ErrorStack::getErrors()} - * @param boolean determines whether to purge the error stack after retrieving - * @return array - */ - function getErrors($purge = false) - { - return $this->_stack->getErrors($purge); - } - - /** - * Unindent given string (?) - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } - } - return $data; - } - - /** - * Parse a channel.xml file. Expects the name of - * a channel xml file as input. - * - * @param string $descfile name of channel xml file - * @return bool success of parsing - */ - function fromXmlFile($descfile) - { - if (!file_exists($descfile) || !is_file($descfile) || !is_readable($descfile) || - (!$fp = fopen($descfile, 'r'))) { - require_once 'PEAR.php'; - return PEAR::raiseError("Unable to open $descfile"); - } - - // read the whole thing so we only get one cdata callback - // for each block of cdata - fclose($fp); - $data = file_get_contents($descfile); - return $this->fromXmlString($data); - } - - /** - * Parse channel information from different sources - * - * This method is able to extract information about a channel - * from an .xml file or a string - * - * @access public - * @param string Filename of the source or the source itself - * @return bool - */ - function fromAny($info) - { - if (is_string($info) && file_exists($info) && strlen($info) < 255) { - $tmp = substr($info, -4); - if ($tmp == '.xml') { - $info = $this->fromXmlFile($info); - } else { - $fp = fopen($info, "r"); - $test = fread($fp, 5); - fclose($fp); - if ($test == "fromXmlFile($info); - } - } - if (PEAR::isError($info)) { - require_once 'PEAR.php'; - return PEAR::raiseError($info); - } - } - if (is_string($info)) { - $info = $this->fromXmlString($info); - } - return $info; - } - - /** - * Return an XML document based on previous parsing and modifications - * - * @return string XML data - * - * @access public - */ - function toXml() - { - if (!$this->_isValid && !$this->validate()) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID); - return false; - } - if (!isset($this->_channelInfo['attribs']['version'])) { - $this->_channelInfo['attribs']['version'] = '1.0'; - } - $channelInfo = $this->_channelInfo; - $ret = "\n"; - $ret .= " - $channelInfo[name] - " . htmlspecialchars($channelInfo['summary'])." -"; - if (isset($channelInfo['suggestedalias'])) { - $ret .= ' ' . $channelInfo['suggestedalias'] . "\n"; - } - if (isset($channelInfo['validatepackage'])) { - $ret .= ' ' . - htmlspecialchars($channelInfo['validatepackage']['_content']) . - "\n"; - } - $ret .= " \n"; - $ret .= ' _makeRestXml($channelInfo['servers']['primary']['rest'], ' '); - } - $ret .= " \n"; - if (isset($channelInfo['servers']['mirror'])) { - $ret .= $this->_makeMirrorsXml($channelInfo); - } - $ret .= " \n"; - $ret .= ""; - return str_replace("\r", "\n", str_replace("\r\n", "\n", $ret)); - } - - /** - * Generate the tag - * @access private - */ - function _makeRestXml($info, $indent) - { - $ret = $indent . "\n"; - if (isset($info['baseurl']) && !isset($info['baseurl'][0])) { - $info['baseurl'] = array($info['baseurl']); - } - - if (isset($info['baseurl'])) { - foreach ($info['baseurl'] as $url) { - $ret .= "$indent \n"; - } - } - $ret .= $indent . "\n"; - return $ret; - } - - /** - * Generate the tag - * @access private - */ - function _makeMirrorsXml($channelInfo) - { - $ret = ""; - if (!isset($channelInfo['servers']['mirror'][0])) { - $channelInfo['servers']['mirror'] = array($channelInfo['servers']['mirror']); - } - foreach ($channelInfo['servers']['mirror'] as $mirror) { - $ret .= ' _makeRestXml($mirror['rest'], ' '); - } - $ret .= " \n"; - } else { - $ret .= "/>\n"; - } - } - return $ret; - } - - /** - * Generate the tag - * @access private - */ - function _makeFunctionsXml($functions, $indent, $rest = false) - { - $ret = ''; - if (!isset($functions[0])) { - $functions = array($functions); - } - foreach ($functions as $function) { - $ret .= "$indent\n"; - } - return $ret; - } - - /** - * Validation error. Also marks the object contents as invalid - * @param error code - * @param array error information - * @access private - */ - function _validateError($code, $params = array()) - { - $this->_stack->push($code, 'error', $params); - $this->_isValid = false; - } - - /** - * Validation warning. Does not mark the object contents invalid. - * @param error code - * @param array error information - * @access private - */ - function _validateWarning($code, $params = array()) - { - $this->_stack->push($code, 'warning', $params); - } - - /** - * Validate parsed file. - * - * @access public - * @return boolean - */ - function validate() - { - $this->_isValid = true; - $info = $this->_channelInfo; - if (empty($info['name'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_NAME); - } elseif (!$this->validChannelServer($info['name'])) { - if ($info['name'] != '__uri') { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, array('tag' => 'name', - 'name' => $info['name'])); - } - } - if (empty($info['summary'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_SUMMARY); - } elseif (strpos(trim($info['summary']), "\n") !== false) { - $this->_validateWarning(PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY, - array('summary' => $info['summary'])); - } - if (isset($info['suggestedalias'])) { - if (!$this->validChannelServer($info['suggestedalias'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'suggestedalias', 'name' =>$info['suggestedalias'])); - } - } - if (isset($info['localalias'])) { - if (!$this->validChannelServer($info['localalias'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'localalias', 'name' =>$info['localalias'])); - } - } - if (isset($info['validatepackage'])) { - if (!isset($info['validatepackage']['_content'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NOVALIDATE_NAME); - } - if (!isset($info['validatepackage']['attribs']['version'])) { - $content = isset($info['validatepackage']['_content']) ? - $info['validatepackage']['_content'] : - null; - $this->_validateError(PEAR_CHANNELFILE_ERROR_NOVALIDATE_VERSION, - array('package' => $content)); - } - } - - if (isset($info['servers']['primary']['attribs'], $info['servers']['primary']['attribs']['port']) && - !is_numeric($info['servers']['primary']['attribs']['port'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_PORT, - array('port' => $info['servers']['primary']['attribs']['port'])); - } - - if (isset($info['servers']['primary']['attribs'], $info['servers']['primary']['attribs']['ssl']) && - $info['servers']['primary']['attribs']['ssl'] != 'yes') { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_SSL, - array('ssl' => $info['servers']['primary']['attribs']['ssl'], - 'server' => $info['name'])); - } - - if (isset($info['servers']['primary']['rest']) && - isset($info['servers']['primary']['rest']['baseurl'])) { - $this->_validateFunctions('rest', $info['servers']['primary']['rest']['baseurl']); - } - if (isset($info['servers']['mirror'])) { - if ($this->_channelInfo['name'] == '__uri') { - $this->_validateError(PEAR_CHANNELFILE_URI_CANT_MIRROR); - } - if (!isset($info['servers']['mirror'][0])) { - $info['servers']['mirror'] = array($info['servers']['mirror']); - } - foreach ($info['servers']['mirror'] as $mirror) { - if (!isset($mirror['attribs']['host'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_HOST, - array('type' => 'mirror')); - } elseif (!$this->validChannelServer($mirror['attribs']['host'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_HOST, - array('server' => $mirror['attribs']['host'], 'type' => 'mirror')); - } - if (isset($mirror['attribs']['ssl']) && $mirror['attribs']['ssl'] != 'yes') { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_SSL, - array('ssl' => $info['ssl'], 'server' => $mirror['attribs']['host'])); - } - if (isset($mirror['rest'])) { - $this->_validateFunctions('rest', $mirror['rest']['baseurl'], - $mirror['attribs']['host']); - } - } - } - return $this->_isValid; - } - - /** - * @param string rest - protocol name this function applies to - * @param array the functions - * @param string the name of the parent element (mirror name, for instance) - */ - function _validateFunctions($protocol, $functions, $parent = '') - { - if (!isset($functions[0])) { - $functions = array($functions); - } - - foreach ($functions as $function) { - if (!isset($function['_content']) || empty($function['_content'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_FUNCTIONNAME, - array('parent' => $parent, 'protocol' => $protocol)); - } - - if ($protocol == 'rest') { - if (!isset($function['attribs']['type']) || - empty($function['attribs']['type'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NOBASEURLTYPE, - array('parent' => $parent, 'protocol' => $protocol)); - } - } else { - if (!isset($function['attribs']['version']) || - empty($function['attribs']['version'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_FUNCTIONVERSION, - array('parent' => $parent, 'protocol' => $protocol)); - } - } - } - } - - /** - * Test whether a string contains a valid channel server. - * @param string $ver the package version to test - * @return bool - */ - function validChannelServer($server) - { - if ($server == '__uri') { - return true; - } - return (bool) preg_match(PEAR_CHANNELS_SERVER_PREG, $server); - } - - /** - * @return string|false - */ - function getName() - { - if (isset($this->_channelInfo['name'])) { - return $this->_channelInfo['name']; - } - - return false; - } - - /** - * @return string|false - */ - function getServer() - { - if (isset($this->_channelInfo['name'])) { - return $this->_channelInfo['name']; - } - - return false; - } - - /** - * @return int|80 port number to connect to - */ - function getPort($mirror = false) - { - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - if (isset($mir['attribs']['port'])) { - return $mir['attribs']['port']; - } - - if ($this->getSSL($mirror)) { - return 443; - } - - return 80; - } - - return false; - } - - if (isset($this->_channelInfo['servers']['primary']['attribs']['port'])) { - return $this->_channelInfo['servers']['primary']['attribs']['port']; - } - - if ($this->getSSL()) { - return 443; - } - - return 80; - } - - /** - * @return bool Determines whether secure sockets layer (SSL) is used to connect to this channel - */ - function getSSL($mirror = false) - { - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - if (isset($mir['attribs']['ssl'])) { - return true; - } - - return false; - } - - return false; - } - - if (isset($this->_channelInfo['servers']['primary']['attribs']['ssl'])) { - return true; - } - - return false; - } - - /** - * @return string|false - */ - function getSummary() - { - if (isset($this->_channelInfo['summary'])) { - return $this->_channelInfo['summary']; - } - - return false; - } - - /** - * @param string protocol type - * @param string Mirror name - * @return array|false - */ - function getFunctions($protocol, $mirror = false) - { - if ($this->getName() == '__uri') { - return false; - } - - $function = $protocol == 'rest' ? 'baseurl' : 'function'; - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - if (isset($mir[$protocol][$function])) { - return $mir[$protocol][$function]; - } - } - - return false; - } - - if (isset($this->_channelInfo['servers']['primary'][$protocol][$function])) { - return $this->_channelInfo['servers']['primary'][$protocol][$function]; - } - - return false; - } - - /** - * @param string Protocol type - * @param string Function name (null to return the - * first protocol of the type requested) - * @param string Mirror name, if any - * @return array - */ - function getFunction($type, $name = null, $mirror = false) - { - $protocols = $this->getFunctions($type, $mirror); - if (!$protocols) { - return false; - } - - foreach ($protocols as $protocol) { - if ($name === null) { - return $protocol; - } - - if ($protocol['_content'] != $name) { - continue; - } - - return $protocol; - } - - return false; - } - - /** - * @param string protocol type - * @param string protocol name - * @param string version - * @param string mirror name - * @return boolean - */ - function supports($type, $name = null, $mirror = false, $version = '1.0') - { - $protocols = $this->getFunctions($type, $mirror); - if (!$protocols) { - return false; - } - - foreach ($protocols as $protocol) { - if ($protocol['attribs']['version'] != $version) { - continue; - } - - if ($name === null) { - return true; - } - - if ($protocol['_content'] != $name) { - continue; - } - - return true; - } - - return false; - } - - /** - * Determines whether a channel supports Representational State Transfer (REST) protocols - * for retrieving channel information - * @param string - * @return bool - */ - function supportsREST($mirror = false) - { - if ($mirror == $this->_channelInfo['name']) { - $mirror = false; - } - - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - return isset($mir['rest']); - } - - return false; - } - - return isset($this->_channelInfo['servers']['primary']['rest']); - } - - /** - * Get the URL to access a base resource. - * - * Hyperlinks in the returned xml will be used to retrieve the proper information - * needed. This allows extreme extensibility and flexibility in implementation - * @param string Resource Type to retrieve - */ - function getBaseURL($resourceType, $mirror = false) - { - if ($mirror == $this->_channelInfo['name']) { - $mirror = false; - } - - if ($mirror) { - $mir = $this->getMirror($mirror); - if (!$mir) { - return false; - } - - $rest = $mir['rest']; - } else { - $rest = $this->_channelInfo['servers']['primary']['rest']; - } - - if (!isset($rest['baseurl'][0])) { - $rest['baseurl'] = array($rest['baseurl']); - } - - foreach ($rest['baseurl'] as $baseurl) { - if (strtolower($baseurl['attribs']['type']) == strtolower($resourceType)) { - return $baseurl['_content']; - } - } - - return false; - } - - /** - * Since REST does not implement RPC, provide this as a logical wrapper around - * resetFunctions for REST - * @param string|false mirror name, if any - */ - function resetREST($mirror = false) - { - return $this->resetFunctions('rest', $mirror); - } - - /** - * Empty all protocol definitions - * @param string protocol type - * @param string|false mirror name, if any - */ - function resetFunctions($type, $mirror = false) - { - if ($mirror) { - if (isset($this->_channelInfo['servers']['mirror'])) { - $mirrors = $this->_channelInfo['servers']['mirror']; - if (!isset($mirrors[0])) { - $mirrors = array($mirrors); - } - - foreach ($mirrors as $i => $mir) { - if ($mir['attribs']['host'] == $mirror) { - if (isset($this->_channelInfo['servers']['mirror'][$i][$type])) { - unset($this->_channelInfo['servers']['mirror'][$i][$type]); - } - - return true; - } - } - - return false; - } - - return false; - } - - if (isset($this->_channelInfo['servers']['primary'][$type])) { - unset($this->_channelInfo['servers']['primary'][$type]); - } - - return true; - } - - /** - * Set a channel's protocols to the protocols supported by pearweb - */ - function setDefaultPEARProtocols($version = '1.0', $mirror = false) - { - switch ($version) { - case '1.0' : - $this->resetREST($mirror); - - if (!isset($this->_channelInfo['servers'])) { - $this->_channelInfo['servers'] = array('primary' => - array('rest' => array())); - } elseif (!isset($this->_channelInfo['servers']['primary'])) { - $this->_channelInfo['servers']['primary'] = array('rest' => array()); - } - - return true; - break; - default : - return false; - break; - } - } - - /** - * @return array - */ - function getMirrors() - { - if (isset($this->_channelInfo['servers']['mirror'])) { - $mirrors = $this->_channelInfo['servers']['mirror']; - if (!isset($mirrors[0])) { - $mirrors = array($mirrors); - } - - return $mirrors; - } - - return array(); - } - - /** - * Get the unserialized XML representing a mirror - * @return array|false - */ - function getMirror($server) - { - foreach ($this->getMirrors() as $mirror) { - if ($mirror['attribs']['host'] == $server) { - return $mirror; - } - } - - return false; - } - - /** - * @param string - * @return string|false - * @error PEAR_CHANNELFILE_ERROR_NO_NAME - * @error PEAR_CHANNELFILE_ERROR_INVALID_NAME - */ - function setName($name) - { - return $this->setServer($name); - } - - /** - * Set the socket number (port) that is used to connect to this channel - * @param integer - * @param string|false name of the mirror server, or false for the primary - */ - function setPort($port, $mirror = false) - { - if ($mirror) { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $this->_channelInfo['servers']['mirror'][$i]['attribs']['port'] = $port; - return true; - } - } - - return false; - } elseif ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - $this->_channelInfo['servers']['mirror']['attribs']['port'] = $port; - $this->_isValid = false; - return true; - } - } - - $this->_channelInfo['servers']['primary']['attribs']['port'] = $port; - $this->_isValid = false; - return true; - } - - /** - * Set the socket number (port) that is used to connect to this channel - * @param bool Determines whether to turn on SSL support or turn it off - * @param string|false name of the mirror server, or false for the primary - */ - function setSSL($ssl = true, $mirror = false) - { - if ($mirror) { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - if (!$ssl) { - if (isset($this->_channelInfo['servers']['mirror'][$i] - ['attribs']['ssl'])) { - unset($this->_channelInfo['servers']['mirror'][$i]['attribs']['ssl']); - } - } else { - $this->_channelInfo['servers']['mirror'][$i]['attribs']['ssl'] = 'yes'; - } - - return true; - } - } - - return false; - } elseif ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - if (!$ssl) { - if (isset($this->_channelInfo['servers']['mirror']['attribs']['ssl'])) { - unset($this->_channelInfo['servers']['mirror']['attribs']['ssl']); - } - } else { - $this->_channelInfo['servers']['mirror']['attribs']['ssl'] = 'yes'; - } - - $this->_isValid = false; - return true; - } - } - - if ($ssl) { - $this->_channelInfo['servers']['primary']['attribs']['ssl'] = 'yes'; - } else { - if (isset($this->_channelInfo['servers']['primary']['attribs']['ssl'])) { - unset($this->_channelInfo['servers']['primary']['attribs']['ssl']); - } - } - - $this->_isValid = false; - return true; - } - - /** - * @param string - * @return string|false - * @error PEAR_CHANNELFILE_ERROR_NO_SERVER - * @error PEAR_CHANNELFILE_ERROR_INVALID_SERVER - */ - function setServer($server, $mirror = false) - { - if (empty($server)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_SERVER); - return false; - } elseif (!$this->validChannelServer($server)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'name', 'name' => $server)); - return false; - } - - if ($mirror) { - $found = false; - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $found = true; - break; - } - } - - if (!$found) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - - $this->_channelInfo['mirror'][$i]['attribs']['host'] = $server; - return true; - } - - $this->_channelInfo['name'] = $server; - return true; - } - - /** - * @param string - * @return boolean success - * @error PEAR_CHANNELFILE_ERROR_NO_SUMMARY - * @warning PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY - */ - function setSummary($summary) - { - if (empty($summary)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_SUMMARY); - return false; - } elseif (strpos(trim($summary), "\n") !== false) { - $this->_validateWarning(PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY, - array('summary' => $summary)); - } - - $this->_channelInfo['summary'] = $summary; - return true; - } - - /** - * @param string - * @param boolean determines whether the alias is in channel.xml or local - * @return boolean success - */ - function setAlias($alias, $local = false) - { - if (!$this->validChannelServer($alias)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'suggestedalias', 'name' => $alias)); - return false; - } - - if ($local) { - $this->_channelInfo['localalias'] = $alias; - } else { - $this->_channelInfo['suggestedalias'] = $alias; - } - - return true; - } - - /** - * @return string - */ - function getAlias() - { - if (isset($this->_channelInfo['localalias'])) { - return $this->_channelInfo['localalias']; - } - if (isset($this->_channelInfo['suggestedalias'])) { - return $this->_channelInfo['suggestedalias']; - } - if (isset($this->_channelInfo['name'])) { - return $this->_channelInfo['name']; - } - return ''; - } - - /** - * Set the package validation object if it differs from PEAR's default - * The class must be includeable via changing _ in the classname to path separator, - * but no checking of this is made. - * @param string|false pass in false to reset to the default packagename regex - * @return boolean success - */ - function setValidationPackage($validateclass, $version) - { - if (empty($validateclass)) { - unset($this->_channelInfo['validatepackage']); - } - $this->_channelInfo['validatepackage'] = array('_content' => $validateclass); - $this->_channelInfo['validatepackage']['attribs'] = array('version' => $version); - } - - /** - * Add a protocol to the provides section - * @param string protocol type - * @param string protocol version - * @param string protocol name, if any - * @param string mirror name, if this is a mirror's protocol - * @return bool - */ - function addFunction($type, $version, $name = '', $mirror = false) - { - if ($mirror) { - return $this->addMirrorFunction($mirror, $type, $version, $name); - } - - $set = array('attribs' => array('version' => $version), '_content' => $name); - if (!isset($this->_channelInfo['servers']['primary'][$type]['function'])) { - if (!isset($this->_channelInfo['servers'])) { - $this->_channelInfo['servers'] = array('primary' => - array($type => array())); - } elseif (!isset($this->_channelInfo['servers']['primary'])) { - $this->_channelInfo['servers']['primary'] = array($type => array()); - } - - $this->_channelInfo['servers']['primary'][$type]['function'] = $set; - $this->_isValid = false; - return true; - } elseif (!isset($this->_channelInfo['servers']['primary'][$type]['function'][0])) { - $this->_channelInfo['servers']['primary'][$type]['function'] = array( - $this->_channelInfo['servers']['primary'][$type]['function']); - } - - $this->_channelInfo['servers']['primary'][$type]['function'][] = $set; - return true; - } - /** - * Add a protocol to a mirror's provides section - * @param string mirror name (server) - * @param string protocol type - * @param string protocol version - * @param string protocol name, if any - */ - function addMirrorFunction($mirror, $type, $version, $name = '') - { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - - $setmirror = false; - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $setmirror = &$this->_channelInfo['servers']['mirror'][$i]; - break; - } - } - } else { - if ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - $setmirror = &$this->_channelInfo['servers']['mirror']; - } - } - - if (!$setmirror) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - - $set = array('attribs' => array('version' => $version), '_content' => $name); - if (!isset($setmirror[$type]['function'])) { - $setmirror[$type]['function'] = $set; - $this->_isValid = false; - return true; - } elseif (!isset($setmirror[$type]['function'][0])) { - $setmirror[$type]['function'] = array($setmirror[$type]['function']); - } - - $setmirror[$type]['function'][] = $set; - $this->_isValid = false; - return true; - } - - /** - * @param string Resource Type this url links to - * @param string URL - * @param string|false mirror name, if this is not a primary server REST base URL - */ - function setBaseURL($resourceType, $url, $mirror = false) - { - if ($mirror) { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - - $setmirror = false; - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $setmirror = &$this->_channelInfo['servers']['mirror'][$i]; - break; - } - } - } else { - if ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - $setmirror = &$this->_channelInfo['servers']['mirror']; - } - } - } else { - $setmirror = &$this->_channelInfo['servers']['primary']; - } - - $set = array('attribs' => array('type' => $resourceType), '_content' => $url); - if (!isset($setmirror['rest'])) { - $setmirror['rest'] = array(); - } - - if (!isset($setmirror['rest']['baseurl'])) { - $setmirror['rest']['baseurl'] = $set; - $this->_isValid = false; - return true; - } elseif (!isset($setmirror['rest']['baseurl'][0])) { - $setmirror['rest']['baseurl'] = array($setmirror['rest']['baseurl']); - } - - foreach ($setmirror['rest']['baseurl'] as $i => $url) { - if ($url['attribs']['type'] == $resourceType) { - $this->_isValid = false; - $setmirror['rest']['baseurl'][$i] = $set; - return true; - } - } - - $setmirror['rest']['baseurl'][] = $set; - $this->_isValid = false; - return true; - } - - /** - * @param string mirror server - * @param int mirror http port - * @return boolean - */ - function addMirror($server, $port = null) - { - if ($this->_channelInfo['name'] == '__uri') { - return false; // the __uri channel cannot have mirrors by definition - } - - $set = array('attribs' => array('host' => $server)); - if (is_numeric($port)) { - $set['attribs']['port'] = $port; - } - - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_channelInfo['servers']['mirror'] = $set; - return true; - } - - if (!isset($this->_channelInfo['servers']['mirror'][0])) { - $this->_channelInfo['servers']['mirror'] = - array($this->_channelInfo['servers']['mirror']); - } - - $this->_channelInfo['servers']['mirror'][] = $set; - return true; - } - - /** - * Retrieve the name of the validation package for this channel - * @return string|false - */ - function getValidationPackage() - { - if (!$this->_isValid && !$this->validate()) { - return false; - } - - if (!isset($this->_channelInfo['validatepackage'])) { - return array('attribs' => array('version' => 'default'), - '_content' => 'PEAR_Validate'); - } - - return $this->_channelInfo['validatepackage']; - } - - /** - * Retrieve the object that can be used for custom validation - * @param string|false the name of the package to validate. If the package is - * the channel validation package, PEAR_Validate is returned - * @return PEAR_Validate|false false is returned if the validation package - * cannot be located - */ - function &getValidationObject($package = false) - { - if (!class_exists('PEAR_Validate')) { - require_once 'PEAR/Validate.php'; - } - - if (!$this->_isValid) { - if (!$this->validate()) { - $a = false; - return $a; - } - } - - if (isset($this->_channelInfo['validatepackage'])) { - if ($package == $this->_channelInfo['validatepackage']) { - // channel validation packages are always validated by PEAR_Validate - $val = &new PEAR_Validate; - return $val; - } - - if (!class_exists(str_replace('.', '_', - $this->_channelInfo['validatepackage']['_content']))) { - if ($this->isIncludeable(str_replace('_', '/', - $this->_channelInfo['validatepackage']['_content']) . '.php')) { - include_once str_replace('_', '/', - $this->_channelInfo['validatepackage']['_content']) . '.php'; - $vclass = str_replace('.', '_', - $this->_channelInfo['validatepackage']['_content']); - $val = &new $vclass; - } else { - $a = false; - return $a; - } - } else { - $vclass = str_replace('.', '_', - $this->_channelInfo['validatepackage']['_content']); - $val = &new $vclass; - } - } else { - $val = &new PEAR_Validate; - } - - return $val; - } - - function isIncludeable($path) - { - $possibilities = explode(PATH_SEPARATOR, ini_get('include_path')); - foreach ($possibilities as $dir) { - if (file_exists($dir . DIRECTORY_SEPARATOR . $path) - && is_readable($dir . DIRECTORY_SEPARATOR . $path)) { - return true; - } - } - - return false; - } - - /** - * This function is used by the channel updater and retrieves a value set by - * the registry, or the current time if it has not been set - * @return string - */ - function lastModified() - { - if (isset($this->_channelInfo['_lastmodified'])) { - return $this->_channelInfo['_lastmodified']; - } - - return time(); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/ChannelFile/Parser.php b/3rdparty/PEAR/ChannelFile/Parser.php deleted file mode 100644 index e630ace2245d983f005d27bd35dde4bec13d7a5a..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/ChannelFile/Parser.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Parser.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * base xml parser class - */ -require_once 'PEAR/XMLParser.php'; -require_once 'PEAR/ChannelFile.php'; -/** - * Parser for channel.xml - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_ChannelFile_Parser extends PEAR_XMLParser -{ - var $_config; - var $_logger; - var $_registry; - - function setConfig(&$c) - { - $this->_config = &$c; - $this->_registry = &$c->getRegistry(); - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - - function parse($data, $file) - { - if (PEAR::isError($err = parent::parse($data, $file))) { - return $err; - } - - $ret = new PEAR_ChannelFile; - $ret->setConfig($this->_config); - if (isset($this->_logger)) { - $ret->setLogger($this->_logger); - } - - $ret->fromArray($this->_unserializedData); - // make sure the filelist is in the easy to read format needed - $ret->flattenFilelist(); - $ret->setPackagefile($file, $archive); - return $ret; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command.php b/3rdparty/PEAR/Command.php deleted file mode 100644 index 13518d4e4b253574978b389b2bae4f64a0a3143f..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command.php +++ /dev/null @@ -1,414 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Command.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * Needed for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Frontend.php'; -require_once 'PEAR/XMLParser.php'; - -/** - * List of commands and what classes they are implemented in. - * @var array command => implementing class - */ -$GLOBALS['_PEAR_Command_commandlist'] = array(); - -/** - * List of commands and their descriptions - * @var array command => description - */ -$GLOBALS['_PEAR_Command_commanddesc'] = array(); - -/** - * List of shortcuts to common commands. - * @var array shortcut => command - */ -$GLOBALS['_PEAR_Command_shortcuts'] = array(); - -/** - * Array of command objects - * @var array class => object - */ -$GLOBALS['_PEAR_Command_objects'] = array(); - -/** - * PEAR command class, a simple factory class for administrative - * commands. - * - * How to implement command classes: - * - * - The class must be called PEAR_Command_Nnn, installed in the - * "PEAR/Common" subdir, with a method called getCommands() that - * returns an array of the commands implemented by the class (see - * PEAR/Command/Install.php for an example). - * - * - The class must implement a run() function that is called with three - * params: - * - * (string) command name - * (array) assoc array with options, freely defined by each - * command, for example: - * array('force' => true) - * (array) list of the other parameters - * - * The run() function returns a PEAR_CommandResponse object. Use - * these methods to get information: - * - * int getStatus() Returns PEAR_COMMAND_(SUCCESS|FAILURE|PARTIAL) - * *_PARTIAL means that you need to issue at least - * one more command to complete the operation - * (used for example for validation steps). - * - * string getMessage() Returns a message for the user. Remember, - * no HTML or other interface-specific markup. - * - * If something unexpected happens, run() returns a PEAR error. - * - * - DON'T OUTPUT ANYTHING! Return text for output instead. - * - * - DON'T USE HTML! The text you return will be used from both Gtk, - * web and command-line interfaces, so for now, keep everything to - * plain text. - * - * - DON'T USE EXIT OR DIE! Always use pear errors. From static - * classes do PEAR::raiseError(), from other classes do - * $this->raiseError(). - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command -{ - // {{{ factory() - - /** - * Get the right object for executing a command. - * - * @param string $command The name of the command - * @param object $config Instance of PEAR_Config object - * - * @return object the command object or a PEAR error - * - * @access public - * @static - */ - function &factory($command, &$config) - { - if (empty($GLOBALS['_PEAR_Command_commandlist'])) { - PEAR_Command::registerCommands(); - } - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$command])) { - $command = $GLOBALS['_PEAR_Command_shortcuts'][$command]; - } - if (!isset($GLOBALS['_PEAR_Command_commandlist'][$command])) { - $a = PEAR::raiseError("unknown command `$command'"); - return $a; - } - $class = $GLOBALS['_PEAR_Command_commandlist'][$command]; - if (!class_exists($class)) { - require_once $GLOBALS['_PEAR_Command_objects'][$class]; - } - if (!class_exists($class)) { - $a = PEAR::raiseError("unknown command `$command'"); - return $a; - } - $ui = PEAR_Command::getFrontendObject(); - $obj = new $class($ui, $config); - return $obj; - } - - // }}} - // {{{ & getObject() - function &getObject($command) - { - $class = $GLOBALS['_PEAR_Command_commandlist'][$command]; - if (!class_exists($class)) { - require_once $GLOBALS['_PEAR_Command_objects'][$class]; - } - if (!class_exists($class)) { - return PEAR::raiseError("unknown command `$command'"); - } - $ui = PEAR_Command::getFrontendObject(); - $config = &PEAR_Config::singleton(); - $obj = &new $class($ui, $config); - return $obj; - } - - // }}} - // {{{ & getFrontendObject() - - /** - * Get instance of frontend object. - * - * @return object|PEAR_Error - * @static - */ - function &getFrontendObject() - { - $a = &PEAR_Frontend::singleton(); - return $a; - } - - // }}} - // {{{ & setFrontendClass() - - /** - * Load current frontend class. - * - * @param string $uiclass Name of class implementing the frontend - * - * @return object the frontend object, or a PEAR error - * @static - */ - function &setFrontendClass($uiclass) - { - $a = &PEAR_Frontend::setFrontendClass($uiclass); - return $a; - } - - // }}} - // {{{ setFrontendType() - - /** - * Set current frontend. - * - * @param string $uitype Name of the frontend type (for example "CLI") - * - * @return object the frontend object, or a PEAR error - * @static - */ - function setFrontendType($uitype) - { - $uiclass = 'PEAR_Frontend_' . $uitype; - return PEAR_Command::setFrontendClass($uiclass); - } - - // }}} - // {{{ registerCommands() - - /** - * Scan through the Command directory looking for classes - * and see what commands they implement. - * - * @param bool (optional) if FALSE (default), the new list of - * commands should replace the current one. If TRUE, - * new entries will be merged with old. - * - * @param string (optional) where (what directory) to look for - * classes, defaults to the Command subdirectory of - * the directory from where this file (__FILE__) is - * included. - * - * @return bool TRUE on success, a PEAR error on failure - * - * @access public - * @static - */ - function registerCommands($merge = false, $dir = null) - { - $parser = new PEAR_XMLParser; - if ($dir === null) { - $dir = dirname(__FILE__) . '/Command'; - } - if (!is_dir($dir)) { - return PEAR::raiseError("registerCommands: opendir($dir) '$dir' does not exist or is not a directory"); - } - $dp = @opendir($dir); - if (empty($dp)) { - return PEAR::raiseError("registerCommands: opendir($dir) failed"); - } - if (!$merge) { - $GLOBALS['_PEAR_Command_commandlist'] = array(); - } - - while ($file = readdir($dp)) { - if ($file{0} == '.' || substr($file, -4) != '.xml') { - continue; - } - - $f = substr($file, 0, -4); - $class = "PEAR_Command_" . $f; - // List of commands - if (empty($GLOBALS['_PEAR_Command_objects'][$class])) { - $GLOBALS['_PEAR_Command_objects'][$class] = "$dir/" . $f . '.php'; - } - - $parser->parse(file_get_contents("$dir/$file")); - $implements = $parser->getData(); - foreach ($implements as $command => $desc) { - if ($command == 'attribs') { - continue; - } - - if (isset($GLOBALS['_PEAR_Command_commandlist'][$command])) { - return PEAR::raiseError('Command "' . $command . '" already registered in ' . - 'class "' . $GLOBALS['_PEAR_Command_commandlist'][$command] . '"'); - } - - $GLOBALS['_PEAR_Command_commandlist'][$command] = $class; - $GLOBALS['_PEAR_Command_commanddesc'][$command] = $desc['summary']; - if (isset($desc['shortcut'])) { - $shortcut = $desc['shortcut']; - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$shortcut])) { - return PEAR::raiseError('Command shortcut "' . $shortcut . '" already ' . - 'registered to command "' . $command . '" in class "' . - $GLOBALS['_PEAR_Command_commandlist'][$command] . '"'); - } - $GLOBALS['_PEAR_Command_shortcuts'][$shortcut] = $command; - } - - if (isset($desc['options']) && $desc['options']) { - foreach ($desc['options'] as $oname => $option) { - if (isset($option['shortopt']) && strlen($option['shortopt']) > 1) { - return PEAR::raiseError('Option "' . $oname . '" short option "' . - $option['shortopt'] . '" must be ' . - 'only 1 character in Command "' . $command . '" in class "' . - $class . '"'); - } - } - } - } - } - - ksort($GLOBALS['_PEAR_Command_shortcuts']); - ksort($GLOBALS['_PEAR_Command_commandlist']); - @closedir($dp); - return true; - } - - // }}} - // {{{ getCommands() - - /** - * Get the list of currently supported commands, and what - * classes implement them. - * - * @return array command => implementing class - * - * @access public - * @static - */ - function getCommands() - { - if (empty($GLOBALS['_PEAR_Command_commandlist'])) { - PEAR_Command::registerCommands(); - } - return $GLOBALS['_PEAR_Command_commandlist']; - } - - // }}} - // {{{ getShortcuts() - - /** - * Get the list of command shortcuts. - * - * @return array shortcut => command - * - * @access public - * @static - */ - function getShortcuts() - { - if (empty($GLOBALS['_PEAR_Command_shortcuts'])) { - PEAR_Command::registerCommands(); - } - return $GLOBALS['_PEAR_Command_shortcuts']; - } - - // }}} - // {{{ getGetoptArgs() - - /** - * Compiles arguments for getopt. - * - * @param string $command command to get optstring for - * @param string $short_args (reference) short getopt format - * @param array $long_args (reference) long getopt format - * - * @return void - * - * @access public - * @static - */ - function getGetoptArgs($command, &$short_args, &$long_args) - { - if (empty($GLOBALS['_PEAR_Command_commandlist'])) { - PEAR_Command::registerCommands(); - } - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$command])) { - $command = $GLOBALS['_PEAR_Command_shortcuts'][$command]; - } - if (!isset($GLOBALS['_PEAR_Command_commandlist'][$command])) { - return null; - } - $obj = &PEAR_Command::getObject($command); - return $obj->getGetoptArgs($command, $short_args, $long_args); - } - - // }}} - // {{{ getDescription() - - /** - * Get description for a command. - * - * @param string $command Name of the command - * - * @return string command description - * - * @access public - * @static - */ - function getDescription($command) - { - if (!isset($GLOBALS['_PEAR_Command_commanddesc'][$command])) { - return null; - } - return $GLOBALS['_PEAR_Command_commanddesc'][$command]; - } - - // }}} - // {{{ getHelp() - - /** - * Get help for command. - * - * @param string $command Name of the command to return help for - * - * @access public - * @static - */ - function getHelp($command) - { - $cmds = PEAR_Command::getCommands(); - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$command])) { - $command = $GLOBALS['_PEAR_Command_shortcuts'][$command]; - } - if (isset($cmds[$command])) { - $obj = &PEAR_Command::getObject($command); - return $obj->getHelp($command); - } - return false; - } - // }}} -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Auth.php b/3rdparty/PEAR/Command/Auth.php deleted file mode 100644 index 63cd152b900735ee8c07a5b342460f9cb8963254..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Auth.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Auth.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - * @deprecated since 1.8.0alpha1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Channels.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - * @deprecated since 1.8.0alpha1 - */ -class PEAR_Command_Auth extends PEAR_Command_Channels -{ - var $commands = array( - 'login' => array( - 'summary' => 'Connects and authenticates to remote server [Deprecated in favor of channel-login]', - 'shortcut' => 'li', - 'function' => 'doLogin', - 'options' => array(), - 'doc' => ' -WARNING: This function is deprecated in favor of using channel-login - -Log in to a remote channel server. If is not supplied, -the default channel is used. To use remote functions in the installer -that require any kind of privileges, you need to log in first. The -username and password you enter here will be stored in your per-user -PEAR configuration (~/.pearrc on Unix-like systems). After logging -in, your username and password will be sent along in subsequent -operations on the remote server.', - ), - 'logout' => array( - 'summary' => 'Logs out from the remote server [Deprecated in favor of channel-logout]', - 'shortcut' => 'lo', - 'function' => 'doLogout', - 'options' => array(), - 'doc' => ' -WARNING: This function is deprecated in favor of using channel-logout - -Logs out from the remote server. This command does not actually -connect to the remote server, it only deletes the stored username and -password from your user configuration.', - ) - - ); - - /** - * PEAR_Command_Auth constructor. - * - * @access public - */ - function PEAR_Command_Auth(&$ui, &$config) - { - parent::PEAR_Command_Channels($ui, $config); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Auth.xml b/3rdparty/PEAR/Command/Auth.xml deleted file mode 100644 index 590193d142a989432488be51eb5f32f01285b5a8..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Auth.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - Connects and authenticates to remote server [Deprecated in favor of channel-login] - doLogin - li - - <channel name> -WARNING: This function is deprecated in favor of using channel-login - -Log in to a remote channel server. If <channel name> is not supplied, -the default channel is used. To use remote functions in the installer -that require any kind of privileges, you need to log in first. The -username and password you enter here will be stored in your per-user -PEAR configuration (~/.pearrc on Unix-like systems). After logging -in, your username and password will be sent along in subsequent -operations on the remote server. - - - Logs out from the remote server [Deprecated in favor of channel-logout] - doLogout - lo - - -WARNING: This function is deprecated in favor of using channel-logout - -Logs out from the remote server. This command does not actually -connect to the remote server, it only deletes the stored username and -password from your user configuration. - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Build.php b/3rdparty/PEAR/Command/Build.php deleted file mode 100644 index 1de7320246a1c292c49f4f5800c1438b10e7cb3b..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Build.php +++ /dev/null @@ -1,85 +0,0 @@ - - * @author Tomas V.V.Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Build.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for building extensions. - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V.Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Build extends PEAR_Command_Common -{ - var $commands = array( - 'build' => array( - 'summary' => 'Build an Extension From C Source', - 'function' => 'doBuild', - 'shortcut' => 'b', - 'options' => array(), - 'doc' => '[package.xml] -Builds one or more extensions contained in a package.' - ), - ); - - /** - * PEAR_Command_Build constructor. - * - * @access public - */ - function PEAR_Command_Build(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - function doBuild($command, $options, $params) - { - require_once 'PEAR/Builder.php'; - if (sizeof($params) < 1) { - $params[0] = 'package.xml'; - } - - $builder = &new PEAR_Builder($this->ui); - $this->debug = $this->config->get('verbose'); - $err = $builder->build($params[0], array(&$this, 'buildCallback')); - if (PEAR::isError($err)) { - return $err; - } - - return true; - } - - function buildCallback($what, $data) - { - if (($what == 'cmdoutput' && $this->debug > 1) || - ($what == 'output' && $this->debug > 0)) { - $this->ui->outputData(rtrim($data), 'build'); - } - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Build.xml b/3rdparty/PEAR/Command/Build.xml deleted file mode 100644 index ec4e6f554ca148bf583c77642aa087620a4a46cd..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Build.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - Build an Extension From C Source - doBuild - b - - [package.xml] -Builds one or more extensions contained in a package. - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Channels.php b/3rdparty/PEAR/Command/Channels.php deleted file mode 100644 index fcf01b50391c7e58338898e292f0cfd2643a3a8c..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Channels.php +++ /dev/null @@ -1,883 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Channels.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -define('PEAR_COMMAND_CHANNELS_CHANNEL_EXISTS', -500); - -/** - * PEAR commands for managing channels. - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Command_Channels extends PEAR_Command_Common -{ - var $commands = array( - 'list-channels' => array( - 'summary' => 'List Available Channels', - 'function' => 'doList', - 'shortcut' => 'lc', - 'options' => array(), - 'doc' => ' -List all available channels for installation. -', - ), - 'update-channels' => array( - 'summary' => 'Update the Channel List', - 'function' => 'doUpdateAll', - 'shortcut' => 'uc', - 'options' => array(), - 'doc' => ' -List all installed packages in all channels. -' - ), - 'channel-delete' => array( - 'summary' => 'Remove a Channel From the List', - 'function' => 'doDelete', - 'shortcut' => 'cde', - 'options' => array(), - 'doc' => ' -Delete a channel from the registry. You may not -remove any channel that has installed packages. -' - ), - 'channel-add' => array( - 'summary' => 'Add a Channel', - 'function' => 'doAdd', - 'shortcut' => 'ca', - 'options' => array(), - 'doc' => ' -Add a private channel to the channel list. Note that all -public channels should be synced using "update-channels". -Parameter may be either a local file or remote URL to a -channel.xml. -' - ), - 'channel-update' => array( - 'summary' => 'Update an Existing Channel', - 'function' => 'doUpdate', - 'shortcut' => 'cu', - 'options' => array( - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'will force download of new channel.xml if an existing channel name is used', - ), - 'channel' => array( - 'shortopt' => 'c', - 'arg' => 'CHANNEL', - 'doc' => 'will force download of new channel.xml if an existing channel name is used', - ), -), - 'doc' => '[|] -Update a channel in the channel list directly. Note that all -public channels can be synced using "update-channels". -Parameter may be a local or remote channel.xml, or the name of -an existing channel. -' - ), - 'channel-info' => array( - 'summary' => 'Retrieve Information on a Channel', - 'function' => 'doInfo', - 'shortcut' => 'ci', - 'options' => array(), - 'doc' => ' -List the files in an installed package. -' - ), - 'channel-alias' => array( - 'summary' => 'Specify an alias to a channel name', - 'function' => 'doAlias', - 'shortcut' => 'cha', - 'options' => array(), - 'doc' => ' -Specify a specific alias to use for a channel name. -The alias may not be an existing channel name or -alias. -' - ), - 'channel-discover' => array( - 'summary' => 'Initialize a Channel from its server', - 'function' => 'doDiscover', - 'shortcut' => 'di', - 'options' => array(), - 'doc' => '[|] -Initialize a channel from its server and create a local channel.xml. -If is in the format ":@" then - and will be set as the login username/password for -. Use caution when passing the username/password in this way, as -it may allow other users on your computer to briefly view your username/ -password via the system\'s process list. -' - ), - 'channel-login' => array( - 'summary' => 'Connects and authenticates to remote channel server', - 'shortcut' => 'cli', - 'function' => 'doLogin', - 'options' => array(), - 'doc' => ' -Log in to a remote channel server. If is not supplied, -the default channel is used. To use remote functions in the installer -that require any kind of privileges, you need to log in first. The -username and password you enter here will be stored in your per-user -PEAR configuration (~/.pearrc on Unix-like systems). After logging -in, your username and password will be sent along in subsequent -operations on the remote server.', - ), - 'channel-logout' => array( - 'summary' => 'Logs out from the remote channel server', - 'shortcut' => 'clo', - 'function' => 'doLogout', - 'options' => array(), - 'doc' => ' -Logs out from a remote channel server. If is not supplied, -the default channel is used. This command does not actually connect to the -remote server, it only deletes the stored username and password from your user -configuration.', - ), - ); - - /** - * PEAR_Command_Registry constructor. - * - * @access public - */ - function PEAR_Command_Channels(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - function _sortChannels($a, $b) - { - return strnatcasecmp($a->getName(), $b->getName()); - } - - function doList($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $registered = $reg->getChannels(); - usort($registered, array(&$this, '_sortchannels')); - $i = $j = 0; - $data = array( - 'caption' => 'Registered Channels:', - 'border' => true, - 'headline' => array('Channel', 'Alias', 'Summary') - ); - foreach ($registered as $channel) { - $data['data'][] = array($channel->getName(), - $channel->getAlias(), - $channel->getSummary()); - } - - if (count($registered) === 0) { - $data = '(no registered channels)'; - } - $this->ui->outputData($data, $command); - return true; - } - - function doUpdateAll($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $channels = $reg->getChannels(); - - $success = true; - foreach ($channels as $channel) { - if ($channel->getName() != '__uri') { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->doUpdate('channel-update', - $options, - array($channel->getName())); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - $success = false; - } else { - $success &= $err; - } - } - } - return $success; - } - - function doInfo($command, $options, $params) - { - if (count($params) !== 1) { - return $this->raiseError("No channel specified"); - } - - $reg = &$this->config->getRegistry(); - $channel = strtolower($params[0]); - if ($reg->channelExists($channel)) { - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - } else { - if (strpos($channel, '://')) { - $downloader = &$this->getDownloader(); - $tmpdir = $this->config->get('temp_dir'); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $loc = $downloader->downloadHttp($channel, $this->ui, $tmpdir); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($loc)) { - return $this->raiseError('Cannot open "' . $channel . - '" (' . $loc->getMessage() . ')'); - } else { - $contents = implode('', file($loc)); - } - } else { - if (!file_exists($params[0])) { - return $this->raiseError('Unknown channel "' . $channel . '"'); - } - - $fp = fopen($params[0], 'r'); - if (!$fp) { - return $this->raiseError('Cannot open "' . $params[0] . '"'); - } - - $contents = ''; - while (!feof($fp)) { - $contents .= fread($fp, 1024); - } - fclose($fp); - } - - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $chan = new PEAR_ChannelFile; - $chan->fromXmlString($contents); - $chan->validate(); - if ($errs = $chan->getErrors(true)) { - foreach ($errs as $err) { - $this->ui->outputData($err['level'] . ': ' . $err['message']); - } - return $this->raiseError('Channel file "' . $params[0] . '" is not valid'); - } - } - - if (!$chan) { - return $this->raiseError('Serious error: Channel "' . $params[0] . - '" has a corrupted registry entry'); - } - - $channel = $chan->getName(); - $caption = 'Channel ' . $channel . ' Information:'; - $data1 = array( - 'caption' => $caption, - 'border' => true); - $data1['data']['server'] = array('Name and Server', $chan->getName()); - if ($chan->getAlias() != $chan->getName()) { - $data1['data']['alias'] = array('Alias', $chan->getAlias()); - } - - $data1['data']['summary'] = array('Summary', $chan->getSummary()); - $validate = $chan->getValidationPackage(); - $data1['data']['vpackage'] = array('Validation Package Name', $validate['_content']); - $data1['data']['vpackageversion'] = - array('Validation Package Version', $validate['attribs']['version']); - $d = array(); - $d['main'] = $data1; - - $data['data'] = array(); - $data['caption'] = 'Server Capabilities'; - $data['headline'] = array('Type', 'Version/REST type', 'Function Name/REST base'); - if ($chan->supportsREST()) { - if ($chan->supportsREST()) { - $funcs = $chan->getFunctions('rest'); - if (!isset($funcs[0])) { - $funcs = array($funcs); - } - foreach ($funcs as $protocol) { - $data['data'][] = array('rest', $protocol['attribs']['type'], - $protocol['_content']); - } - } - } else { - $data['data'][] = array('No supported protocols'); - } - - $d['protocols'] = $data; - $data['data'] = array(); - $mirrors = $chan->getMirrors(); - if ($mirrors) { - $data['caption'] = 'Channel ' . $channel . ' Mirrors:'; - unset($data['headline']); - foreach ($mirrors as $mirror) { - $data['data'][] = array($mirror['attribs']['host']); - $d['mirrors'] = $data; - } - - foreach ($mirrors as $i => $mirror) { - $data['data'] = array(); - $data['caption'] = 'Mirror ' . $mirror['attribs']['host'] . ' Capabilities'; - $data['headline'] = array('Type', 'Version/REST type', 'Function Name/REST base'); - if ($chan->supportsREST($mirror['attribs']['host'])) { - if ($chan->supportsREST($mirror['attribs']['host'])) { - $funcs = $chan->getFunctions('rest', $mirror['attribs']['host']); - if (!isset($funcs[0])) { - $funcs = array($funcs); - } - - foreach ($funcs as $protocol) { - $data['data'][] = array('rest', $protocol['attribs']['type'], - $protocol['_content']); - } - } - } else { - $data['data'][] = array('No supported protocols'); - } - $d['mirrorprotocols' . $i] = $data; - } - } - $this->ui->outputData($d, 'channel-info'); - } - - // }}} - - function doDelete($command, $options, $params) - { - if (count($params) !== 1) { - return $this->raiseError('channel-delete: no channel specified'); - } - - $reg = &$this->config->getRegistry(); - if (!$reg->channelExists($params[0])) { - return $this->raiseError('channel-delete: channel "' . $params[0] . '" does not exist'); - } - - $channel = $reg->channelName($params[0]); - if ($channel == 'pear.php.net') { - return $this->raiseError('Cannot delete the pear.php.net channel'); - } - - if ($channel == 'pecl.php.net') { - return $this->raiseError('Cannot delete the pecl.php.net channel'); - } - - if ($channel == 'doc.php.net') { - return $this->raiseError('Cannot delete the doc.php.net channel'); - } - - if ($channel == '__uri') { - return $this->raiseError('Cannot delete the __uri pseudo-channel'); - } - - if (PEAR::isError($err = $reg->listPackages($channel))) { - return $err; - } - - if (count($err)) { - return $this->raiseError('Channel "' . $channel . - '" has installed packages, cannot delete'); - } - - if (!$reg->deleteChannel($channel)) { - return $this->raiseError('Channel "' . $channel . '" deletion failed'); - } else { - $this->config->deleteChannel($channel); - $this->ui->outputData('Channel "' . $channel . '" deleted', $command); - } - } - - function doAdd($command, $options, $params) - { - if (count($params) !== 1) { - return $this->raiseError('channel-add: no channel file specified'); - } - - if (strpos($params[0], '://')) { - $downloader = &$this->getDownloader(); - $tmpdir = $this->config->get('temp_dir'); - if (!file_exists($tmpdir)) { - require_once 'System.php'; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = System::mkdir(array('-p', $tmpdir)); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($err)) { - return $this->raiseError('channel-add: temp_dir does not exist: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - } - - if (!is_writable($tmpdir)) { - return $this->raiseError('channel-add: temp_dir is not writable: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $loc = $downloader->downloadHttp($params[0], $this->ui, $tmpdir, null, false); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($loc)) { - return $this->raiseError('channel-add: Cannot open "' . $params[0] . - '" (' . $loc->getMessage() . ')'); - } - - list($loc, $lastmodified) = $loc; - $contents = implode('', file($loc)); - } else { - $lastmodified = $fp = false; - if (file_exists($params[0])) { - $fp = fopen($params[0], 'r'); - } - - if (!$fp) { - return $this->raiseError('channel-add: cannot open "' . $params[0] . '"'); - } - - $contents = ''; - while (!feof($fp)) { - $contents .= fread($fp, 1024); - } - fclose($fp); - } - - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $channel = new PEAR_ChannelFile; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $result = $channel->fromXmlString($contents); - PEAR::staticPopErrorHandling(); - if (!$result) { - $exit = false; - if (count($errors = $channel->getErrors(true))) { - foreach ($errors as $error) { - $this->ui->outputData(ucfirst($error['level'] . ': ' . $error['message'])); - if (!$exit) { - $exit = $error['level'] == 'error' ? true : false; - } - } - if ($exit) { - return $this->raiseError('channel-add: invalid channel.xml file'); - } - } - } - - $reg = &$this->config->getRegistry(); - if ($reg->channelExists($channel->getName())) { - return $this->raiseError('channel-add: Channel "' . $channel->getName() . - '" exists, use channel-update to update entry', PEAR_COMMAND_CHANNELS_CHANNEL_EXISTS); - } - - $ret = $reg->addChannel($channel, $lastmodified); - if (PEAR::isError($ret)) { - return $ret; - } - - if (!$ret) { - return $this->raiseError('channel-add: adding Channel "' . $channel->getName() . - '" to registry failed'); - } - - $this->config->setChannels($reg->listChannels()); - $this->config->writeConfigFile(); - $this->ui->outputData('Adding Channel "' . $channel->getName() . '" succeeded', $command); - } - - function doUpdate($command, $options, $params) - { - if (count($params) !== 1) { - return $this->raiseError("No channel file specified"); - } - - $tmpdir = $this->config->get('temp_dir'); - if (!file_exists($tmpdir)) { - require_once 'System.php'; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = System::mkdir(array('-p', $tmpdir)); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($err)) { - return $this->raiseError('channel-add: temp_dir does not exist: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - } - - if (!is_writable($tmpdir)) { - return $this->raiseError('channel-add: temp_dir is not writable: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - - $reg = &$this->config->getRegistry(); - $lastmodified = false; - if ((!file_exists($params[0]) || is_dir($params[0])) - && $reg->channelExists(strtolower($params[0]))) { - $c = $reg->getChannel(strtolower($params[0])); - if (PEAR::isError($c)) { - return $this->raiseError($c); - } - - $this->ui->outputData("Updating channel \"$params[0]\"", $command); - $dl = &$this->getDownloader(array()); - // if force is specified, use a timestamp of "1" to force retrieval - $lastmodified = isset($options['force']) ? false : $c->lastModified(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $contents = $dl->downloadHttp('http://' . $c->getName() . '/channel.xml', - $this->ui, $tmpdir, null, $lastmodified); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($contents)) { - // Attempt to fall back to https - $this->ui->outputData("Channel \"$params[0]\" is not responding over http://, failed with message: " . $contents->getMessage()); - $this->ui->outputData("Trying channel \"$params[0]\" over https:// instead"); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $contents = $dl->downloadHttp('https://' . $c->getName() . '/channel.xml', - $this->ui, $tmpdir, null, $lastmodified); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($contents)) { - return $this->raiseError('Cannot retrieve channel.xml for channel "' . - $c->getName() . '" (' . $contents->getMessage() . ')'); - } - } - - list($contents, $lastmodified) = $contents; - if (!$contents) { - $this->ui->outputData("Channel \"$params[0]\" is up to date"); - return; - } - - $contents = implode('', file($contents)); - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $channel = new PEAR_ChannelFile; - $channel->fromXmlString($contents); - if (!$channel->getErrors()) { - // security check: is the downloaded file for the channel we got it from? - if (strtolower($channel->getName()) != strtolower($c->getName())) { - if (!isset($options['force'])) { - return $this->raiseError('ERROR: downloaded channel definition file' . - ' for channel "' . $channel->getName() . '" from channel "' . - strtolower($c->getName()) . '"'); - } - - $this->ui->log(0, 'WARNING: downloaded channel definition file' . - ' for channel "' . $channel->getName() . '" from channel "' . - strtolower($c->getName()) . '"'); - } - } - } else { - if (strpos($params[0], '://')) { - $dl = &$this->getDownloader(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $loc = $dl->downloadHttp($params[0], - $this->ui, $tmpdir, null, $lastmodified); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($loc)) { - return $this->raiseError("Cannot open " . $params[0] . - ' (' . $loc->getMessage() . ')'); - } - - list($loc, $lastmodified) = $loc; - $contents = implode('', file($loc)); - } else { - $fp = false; - if (file_exists($params[0])) { - $fp = fopen($params[0], 'r'); - } - - if (!$fp) { - return $this->raiseError("Cannot open " . $params[0]); - } - - $contents = ''; - while (!feof($fp)) { - $contents .= fread($fp, 1024); - } - fclose($fp); - } - - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $channel = new PEAR_ChannelFile; - $channel->fromXmlString($contents); - } - - $exit = false; - if (count($errors = $channel->getErrors(true))) { - foreach ($errors as $error) { - $this->ui->outputData(ucfirst($error['level'] . ': ' . $error['message'])); - if (!$exit) { - $exit = $error['level'] == 'error' ? true : false; - } - } - if ($exit) { - return $this->raiseError('Invalid channel.xml file'); - } - } - - if (!$reg->channelExists($channel->getName())) { - return $this->raiseError('Error: Channel "' . $channel->getName() . - '" does not exist, use channel-add to add an entry'); - } - - $ret = $reg->updateChannel($channel, $lastmodified); - if (PEAR::isError($ret)) { - return $ret; - } - - if (!$ret) { - return $this->raiseError('Updating Channel "' . $channel->getName() . - '" in registry failed'); - } - - $this->config->setChannels($reg->listChannels()); - $this->config->writeConfigFile(); - $this->ui->outputData('Update of Channel "' . $channel->getName() . '" succeeded'); - } - - function &getDownloader() - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - $a = new PEAR_Downloader($this->ui, array(), $this->config); - return $a; - } - - function doAlias($command, $options, $params) - { - if (count($params) === 1) { - return $this->raiseError('No channel alias specified'); - } - - if (count($params) !== 2 || (!empty($params[1]) && $params[1]{0} == '-')) { - return $this->raiseError( - 'Invalid format, correct is: channel-alias channel alias'); - } - - $reg = &$this->config->getRegistry(); - if (!$reg->channelExists($params[0], true)) { - $extra = ''; - if ($reg->isAlias($params[0])) { - $extra = ' (use "channel-alias ' . $reg->channelName($params[0]) . ' ' . - strtolower($params[1]) . '")'; - } - - return $this->raiseError('"' . $params[0] . '" is not a valid channel' . $extra); - } - - if ($reg->isAlias($params[1])) { - return $this->raiseError('Channel "' . $reg->channelName($params[1]) . '" is ' . - 'already aliased to "' . strtolower($params[1]) . '", cannot re-alias'); - } - - $chan = &$reg->getChannel($params[0]); - if (PEAR::isError($chan)) { - return $this->raiseError('Corrupt registry? Error retrieving channel "' . $params[0] . - '" information (' . $chan->getMessage() . ')'); - } - - // make it a local alias - if (!$chan->setAlias(strtolower($params[1]), true)) { - return $this->raiseError('Alias "' . strtolower($params[1]) . - '" is not a valid channel alias'); - } - - $reg->updateChannel($chan); - $this->ui->outputData('Channel "' . $chan->getName() . '" aliased successfully to "' . - strtolower($params[1]) . '"'); - } - - /** - * The channel-discover command - * - * @param string $command command name - * @param array $options option_name => value - * @param array $params list of additional parameters. - * $params[0] should contain a string with either: - * - or - * - :@ - * @return null|PEAR_Error - */ - function doDiscover($command, $options, $params) - { - if (count($params) !== 1) { - return $this->raiseError("No channel server specified"); - } - - // Look for the possible input format ":@" - if (preg_match('/^(.+):(.+)@(.+)\\z/', $params[0], $matches)) { - $username = $matches[1]; - $password = $matches[2]; - $channel = $matches[3]; - } else { - $channel = $params[0]; - } - - $reg = &$this->config->getRegistry(); - if ($reg->channelExists($channel)) { - if (!$reg->isAlias($channel)) { - return $this->raiseError("Channel \"$channel\" is already initialized", PEAR_COMMAND_CHANNELS_CHANNEL_EXISTS); - } - - return $this->raiseError("A channel alias named \"$channel\" " . - 'already exists, aliasing channel "' . $reg->channelName($channel) - . '"'); - } - - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->doAdd($command, $options, array('http://' . $channel . '/channel.xml')); - $this->popErrorHandling(); - if (PEAR::isError($err)) { - if ($err->getCode() === PEAR_COMMAND_CHANNELS_CHANNEL_EXISTS) { - return $this->raiseError("Discovery of channel \"$channel\" failed (" . - $err->getMessage() . ')'); - } - // Attempt fetch via https - $this->ui->outputData("Discovering channel $channel over http:// failed with message: " . $err->getMessage()); - $this->ui->outputData("Trying to discover channel $channel over https:// instead"); - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->doAdd($command, $options, array('https://' . $channel . '/channel.xml')); - $this->popErrorHandling(); - if (PEAR::isError($err)) { - return $this->raiseError("Discovery of channel \"$channel\" failed (" . - $err->getMessage() . ')'); - } - } - - // Store username/password if they were given - // Arguably we should do a logintest on the channel here, but since - // that's awkward on a REST-based channel (even "pear login" doesn't - // do it for those), and XML-RPC is deprecated, it's fairly pointless. - if (isset($username)) { - $this->config->set('username', $username, 'user', $channel); - $this->config->set('password', $password, 'user', $channel); - $this->config->store(); - $this->ui->outputData("Stored login for channel \"$channel\" using username \"$username\"", $command); - } - - $this->ui->outputData("Discovery of channel \"$channel\" succeeded", $command); - } - - /** - * Execute the 'login' command. - * - * @param string $command command name - * @param array $options option_name => value - * @param array $params list of additional parameters - * - * @return bool TRUE on success or - * a PEAR error on failure - * - * @access public - */ - function doLogin($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - - // If a parameter is supplied, use that as the channel to log in to - $channel = isset($params[0]) ? $params[0] : $this->config->get('default_channel'); - - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - - $server = $this->config->get('preferred_mirror', null, $channel); - $username = $this->config->get('username', null, $channel); - if (empty($username)) { - $username = isset($_ENV['USER']) ? $_ENV['USER'] : null; - } - $this->ui->outputData("Logging in to $server.", $command); - - list($username, $password) = $this->ui->userDialog( - $command, - array('Username', 'Password'), - array('text', 'password'), - array($username, '') - ); - $username = trim($username); - $password = trim($password); - - $ourfile = $this->config->getConfFile('user'); - if (!$ourfile) { - $ourfile = $this->config->getConfFile('system'); - } - - $this->config->set('username', $username, 'user', $channel); - $this->config->set('password', $password, 'user', $channel); - - if ($chan->supportsREST()) { - $ok = true; - } - - if ($ok !== true) { - return $this->raiseError('Login failed!'); - } - - $this->ui->outputData("Logged in.", $command); - // avoid changing any temporary settings changed with -d - $ourconfig = new PEAR_Config($ourfile, $ourfile); - $ourconfig->set('username', $username, 'user', $channel); - $ourconfig->set('password', $password, 'user', $channel); - $ourconfig->store(); - - return true; - } - - /** - * Execute the 'logout' command. - * - * @param string $command command name - * @param array $options option_name => value - * @param array $params list of additional parameters - * - * @return bool TRUE on success or - * a PEAR error on failure - * - * @access public - */ - function doLogout($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - - // If a parameter is supplied, use that as the channel to log in to - $channel = isset($params[0]) ? $params[0] : $this->config->get('default_channel'); - - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - - $server = $this->config->get('preferred_mirror', null, $channel); - $this->ui->outputData("Logging out from $server.", $command); - $this->config->remove('username', 'user', $channel); - $this->config->remove('password', 'user', $channel); - $this->config->store(); - return true; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Channels.xml b/3rdparty/PEAR/Command/Channels.xml deleted file mode 100644 index 47b72066abf928c1d1550772f721dd3bb95cfd40..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Channels.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - List Available Channels - doList - lc - - -List all available channels for installation. - - - - Update the Channel List - doUpdateAll - uc - - -List all installed packages in all channels. - - - - Remove a Channel From the List - doDelete - cde - - <channel name> -Delete a channel from the registry. You may not -remove any channel that has installed packages. - - - - Add a Channel - doAdd - ca - - <channel.xml> -Add a private channel to the channel list. Note that all -public channels should be synced using "update-channels". -Parameter may be either a local file or remote URL to a -channel.xml. - - - - Update an Existing Channel - doUpdate - cu - - - f - will force download of new channel.xml if an existing channel name is used - - - c - will force download of new channel.xml if an existing channel name is used - CHANNEL - - - [<channel.xml>|<channel name>] -Update a channel in the channel list directly. Note that all -public channels can be synced using "update-channels". -Parameter may be a local or remote channel.xml, or the name of -an existing channel. - - - - Retrieve Information on a Channel - doInfo - ci - - <package> -List the files in an installed package. - - - - Specify an alias to a channel name - doAlias - cha - - <channel> <alias> -Specify a specific alias to use for a channel name. -The alias may not be an existing channel name or -alias. - - - - Initialize a Channel from its server - doDiscover - di - - [<channel.xml>|<channel name>] -Initialize a channel from its server and create a local channel.xml. -If <channel name> is in the format "<username>:<password>@<channel>" then -<username> and <password> will be set as the login username/password for -<channel>. Use caution when passing the username/password in this way, as -it may allow other users on your computer to briefly view your username/ -password via the system's process list. - - - - Connects and authenticates to remote channel server - doLogin - cli - - <channel name> -Log in to a remote channel server. If <channel name> is not supplied, -the default channel is used. To use remote functions in the installer -that require any kind of privileges, you need to log in first. The -username and password you enter here will be stored in your per-user -PEAR configuration (~/.pearrc on Unix-like systems). After logging -in, your username and password will be sent along in subsequent -operations on the remote server. - - - Logs out from the remote channel server - doLogout - clo - - <channel name> -Logs out from a remote channel server. If <channel name> is not supplied, -the default channel is used. This command does not actually connect to the -remote server, it only deletes the stored username and password from your user -configuration. - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Common.php b/3rdparty/PEAR/Command/Common.php deleted file mode 100644 index 279a716623df94e22e12b5b86362fe9df612065b..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Common.php +++ /dev/null @@ -1,273 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Common.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR.php'; - -/** - * PEAR commands base class - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Common extends PEAR -{ - /** - * PEAR_Config object used to pass user system and configuration - * on when executing commands - * - * @var PEAR_Config - */ - var $config; - /** - * @var PEAR_Registry - * @access protected - */ - var $_registry; - - /** - * User Interface object, for all interaction with the user. - * @var object - */ - var $ui; - - var $_deps_rel_trans = array( - 'lt' => '<', - 'le' => '<=', - 'eq' => '=', - 'ne' => '!=', - 'gt' => '>', - 'ge' => '>=', - 'has' => '==' - ); - - var $_deps_type_trans = array( - 'pkg' => 'package', - 'ext' => 'extension', - 'php' => 'PHP', - 'prog' => 'external program', - 'ldlib' => 'external library for linking', - 'rtlib' => 'external runtime library', - 'os' => 'operating system', - 'websrv' => 'web server', - 'sapi' => 'SAPI backend' - ); - - /** - * PEAR_Command_Common constructor. - * - * @access public - */ - function PEAR_Command_Common(&$ui, &$config) - { - parent::PEAR(); - $this->config = &$config; - $this->ui = &$ui; - } - - /** - * Return a list of all the commands defined by this class. - * @return array list of commands - * @access public - */ - function getCommands() - { - $ret = array(); - foreach (array_keys($this->commands) as $command) { - $ret[$command] = $this->commands[$command]['summary']; - } - - return $ret; - } - - /** - * Return a list of all the command shortcuts defined by this class. - * @return array shortcut => command - * @access public - */ - function getShortcuts() - { - $ret = array(); - foreach (array_keys($this->commands) as $command) { - if (isset($this->commands[$command]['shortcut'])) { - $ret[$this->commands[$command]['shortcut']] = $command; - } - } - - return $ret; - } - - function getOptions($command) - { - $shortcuts = $this->getShortcuts(); - if (isset($shortcuts[$command])) { - $command = $shortcuts[$command]; - } - - if (isset($this->commands[$command]) && - isset($this->commands[$command]['options'])) { - return $this->commands[$command]['options']; - } - - return null; - } - - function getGetoptArgs($command, &$short_args, &$long_args) - { - $short_args = ''; - $long_args = array(); - if (empty($this->commands[$command]) || empty($this->commands[$command]['options'])) { - return; - } - - reset($this->commands[$command]['options']); - while (list($option, $info) = each($this->commands[$command]['options'])) { - $larg = $sarg = ''; - if (isset($info['arg'])) { - if ($info['arg']{0} == '(') { - $larg = '=='; - $sarg = '::'; - $arg = substr($info['arg'], 1, -1); - } else { - $larg = '='; - $sarg = ':'; - $arg = $info['arg']; - } - } - - if (isset($info['shortopt'])) { - $short_args .= $info['shortopt'] . $sarg; - } - - $long_args[] = $option . $larg; - } - } - - /** - * Returns the help message for the given command - * - * @param string $command The command - * @return mixed A fail string if the command does not have help or - * a two elements array containing [0]=>help string, - * [1]=> help string for the accepted cmd args - */ - function getHelp($command) - { - $config = &PEAR_Config::singleton(); - if (!isset($this->commands[$command])) { - return "No such command \"$command\""; - } - - $help = null; - if (isset($this->commands[$command]['doc'])) { - $help = $this->commands[$command]['doc']; - } - - if (empty($help)) { - // XXX (cox) Fallback to summary if there is no doc (show both?) - if (!isset($this->commands[$command]['summary'])) { - return "No help for command \"$command\""; - } - $help = $this->commands[$command]['summary']; - } - - if (preg_match_all('/{config\s+([^\}]+)}/e', $help, $matches)) { - foreach($matches[0] as $k => $v) { - $help = preg_replace("/$v/", $config->get($matches[1][$k]), $help); - } - } - - return array($help, $this->getHelpArgs($command)); - } - - /** - * Returns the help for the accepted arguments of a command - * - * @param string $command - * @return string The help string - */ - function getHelpArgs($command) - { - if (isset($this->commands[$command]['options']) && - count($this->commands[$command]['options'])) - { - $help = "Options:\n"; - foreach ($this->commands[$command]['options'] as $k => $v) { - if (isset($v['arg'])) { - if ($v['arg'][0] == '(') { - $arg = substr($v['arg'], 1, -1); - $sapp = " [$arg]"; - $lapp = "[=$arg]"; - } else { - $sapp = " $v[arg]"; - $lapp = "=$v[arg]"; - } - } else { - $sapp = $lapp = ""; - } - - if (isset($v['shortopt'])) { - $s = $v['shortopt']; - $help .= " -$s$sapp, --$k$lapp\n"; - } else { - $help .= " --$k$lapp\n"; - } - - $p = " "; - $doc = rtrim(str_replace("\n", "\n$p", $v['doc'])); - $help .= " $doc\n"; - } - - return $help; - } - - return null; - } - - function run($command, $options, $params) - { - if (empty($this->commands[$command]['function'])) { - // look for shortcuts - foreach (array_keys($this->commands) as $cmd) { - if (isset($this->commands[$cmd]['shortcut']) && $this->commands[$cmd]['shortcut'] == $command) { - if (empty($this->commands[$cmd]['function'])) { - return $this->raiseError("unknown command `$command'"); - } else { - $func = $this->commands[$cmd]['function']; - } - $command = $cmd; - - //$command = $this->commands[$cmd]['function']; - break; - } - } - } else { - $func = $this->commands[$command]['function']; - } - - return $this->$func($command, $options, $params); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Config.php b/3rdparty/PEAR/Command/Config.php deleted file mode 100644 index a761b277f5f8460651bcdff5a9d3776cc3d3ecbc..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Config.php +++ /dev/null @@ -1,414 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Config.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for managing configuration data. - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Config extends PEAR_Command_Common -{ - var $commands = array( - 'config-show' => array( - 'summary' => 'Show All Settings', - 'function' => 'doConfigShow', - 'shortcut' => 'csh', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'show configuration variables for another channel', - 'arg' => 'CHAN', - ), -), - 'doc' => '[layer] -Displays all configuration values. An optional argument -may be used to tell which configuration layer to display. Valid -configuration layers are "user", "system" and "default". To display -configurations for different channels, set the default_channel -configuration variable and run config-show again. -', - ), - 'config-get' => array( - 'summary' => 'Show One Setting', - 'function' => 'doConfigGet', - 'shortcut' => 'cg', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'show configuration variables for another channel', - 'arg' => 'CHAN', - ), -), - 'doc' => ' [layer] -Displays the value of one configuration parameter. The -first argument is the name of the parameter, an optional second argument -may be used to tell which configuration layer to look in. Valid configuration -layers are "user", "system" and "default". If no layer is specified, a value -will be picked from the first layer that defines the parameter, in the order -just specified. The configuration value will be retrieved for the channel -specified by the default_channel configuration variable. -', - ), - 'config-set' => array( - 'summary' => 'Change Setting', - 'function' => 'doConfigSet', - 'shortcut' => 'cs', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'show configuration variables for another channel', - 'arg' => 'CHAN', - ), -), - 'doc' => ' [layer] -Sets the value of one configuration parameter. The first argument is -the name of the parameter, the second argument is the new value. Some -parameters are subject to validation, and the command will fail with -an error message if the new value does not make sense. An optional -third argument may be used to specify in which layer to set the -configuration parameter. The default layer is "user". The -configuration value will be set for the current channel, which -is controlled by the default_channel configuration variable. -', - ), - 'config-help' => array( - 'summary' => 'Show Information About Setting', - 'function' => 'doConfigHelp', - 'shortcut' => 'ch', - 'options' => array(), - 'doc' => '[parameter] -Displays help for a configuration parameter. Without arguments it -displays help for all configuration parameters. -', - ), - 'config-create' => array( - 'summary' => 'Create a Default configuration file', - 'function' => 'doConfigCreate', - 'shortcut' => 'coc', - 'options' => array( - 'windows' => array( - 'shortopt' => 'w', - 'doc' => 'create a config file for a windows install', - ), - ), - 'doc' => ' -Create a default configuration file with all directory configuration -variables set to subdirectories of , and save it as . -This is useful especially for creating a configuration file for a remote -PEAR installation (using the --remoteconfig option of install, upgrade, -and uninstall). -', - ), - ); - - /** - * PEAR_Command_Config constructor. - * - * @access public - */ - function PEAR_Command_Config(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - function doConfigShow($command, $options, $params) - { - $layer = null; - if (is_array($params)) { - $layer = isset($params[0]) ? $params[0] : null; - } - - // $params[0] -> the layer - if ($error = $this->_checkLayer($layer)) { - return $this->raiseError("config-show:$error"); - } - - $keys = $this->config->getKeys(); - sort($keys); - $channel = isset($options['channel']) ? $options['channel'] : - $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - - $channel = $reg->channelName($channel); - $data = array('caption' => 'Configuration (channel ' . $channel . '):'); - foreach ($keys as $key) { - $type = $this->config->getType($key); - $value = $this->config->get($key, $layer, $channel); - if ($type == 'password' && $value) { - $value = '********'; - } - - if ($value === false) { - $value = 'false'; - } elseif ($value === true) { - $value = 'true'; - } - - $data['data'][$this->config->getGroup($key)][] = array($this->config->getPrompt($key) , $key, $value); - } - - foreach ($this->config->getLayers() as $layer) { - $data['data']['Config Files'][] = array(ucfirst($layer) . ' Configuration File', 'Filename' , $this->config->getConfFile($layer)); - } - - $this->ui->outputData($data, $command); - return true; - } - - function doConfigGet($command, $options, $params) - { - $args_cnt = is_array($params) ? count($params) : 0; - switch ($args_cnt) { - case 1: - $config_key = $params[0]; - $layer = null; - break; - case 2: - $config_key = $params[0]; - $layer = $params[1]; - if ($error = $this->_checkLayer($layer)) { - return $this->raiseError("config-get:$error"); - } - break; - case 0: - default: - return $this->raiseError("config-get expects 1 or 2 parameters"); - } - - $reg = &$this->config->getRegistry(); - $channel = isset($options['channel']) ? $options['channel'] : $this->config->get('default_channel'); - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - - $channel = $reg->channelName($channel); - $this->ui->outputData($this->config->get($config_key, $layer, $channel), $command); - return true; - } - - function doConfigSet($command, $options, $params) - { - // $param[0] -> a parameter to set - // $param[1] -> the value for the parameter - // $param[2] -> the layer - $failmsg = ''; - if (count($params) < 2 || count($params) > 3) { - $failmsg .= "config-set expects 2 or 3 parameters"; - return PEAR::raiseError($failmsg); - } - - if (isset($params[2]) && ($error = $this->_checkLayer($params[2]))) { - $failmsg .= $error; - return PEAR::raiseError("config-set:$failmsg"); - } - - $channel = isset($options['channel']) ? $options['channel'] : $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - - $channel = $reg->channelName($channel); - if ($params[0] == 'default_channel' && !$reg->channelExists($params[1])) { - return $this->raiseError('Channel "' . $params[1] . '" does not exist'); - } - - if ($params[0] == 'preferred_mirror' - && ( - !$reg->mirrorExists($channel, $params[1]) && - (!$reg->channelExists($params[1]) || $channel != $params[1]) - ) - ) { - $msg = 'Channel Mirror "' . $params[1] . '" does not exist'; - $msg .= ' in your registry for channel "' . $channel . '".'; - $msg .= "\n" . 'Attempt to run "pear channel-update ' . $channel .'"'; - $msg .= ' if you believe this mirror should exist as you may'; - $msg .= ' have outdated channel information.'; - return $this->raiseError($msg); - } - - if (count($params) == 2) { - array_push($params, 'user'); - $layer = 'user'; - } else { - $layer = $params[2]; - } - - array_push($params, $channel); - if (!call_user_func_array(array(&$this->config, 'set'), $params)) { - array_pop($params); - $failmsg = "config-set (" . implode(", ", $params) . ") failed, channel $channel"; - } else { - $this->config->store($layer); - } - - if ($failmsg) { - return $this->raiseError($failmsg); - } - - $this->ui->outputData('config-set succeeded', $command); - return true; - } - - function doConfigHelp($command, $options, $params) - { - if (empty($params)) { - $params = $this->config->getKeys(); - } - - $data['caption'] = "Config help" . ((count($params) == 1) ? " for $params[0]" : ''); - $data['headline'] = array('Name', 'Type', 'Description'); - $data['border'] = true; - foreach ($params as $name) { - $type = $this->config->getType($name); - $docs = $this->config->getDocs($name); - if ($type == 'set') { - $docs = rtrim($docs) . "\nValid set: " . - implode(' ', $this->config->getSetValues($name)); - } - - $data['data'][] = array($name, $type, $docs); - } - - $this->ui->outputData($data, $command); - } - - function doConfigCreate($command, $options, $params) - { - if (count($params) != 2) { - return PEAR::raiseError('config-create: must have 2 parameters, root path and ' . - 'filename to save as'); - } - - $root = $params[0]; - // Clean up the DIRECTORY_SEPARATOR mess - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - $root = preg_replace(array('!\\\\+!', '!/+!', "!$ds2+!"), - array('/', '/', '/'), - $root); - if ($root{0} != '/') { - if (!isset($options['windows'])) { - return PEAR::raiseError('Root directory must be an absolute path beginning ' . - 'with "/", was: "' . $root . '"'); - } - - if (!preg_match('/^[A-Za-z]:/', $root)) { - return PEAR::raiseError('Root directory must be an absolute path beginning ' . - 'with "\\" or "C:\\", was: "' . $root . '"'); - } - } - - $windows = isset($options['windows']); - if ($windows) { - $root = str_replace('/', '\\', $root); - } - - if (!file_exists($params[1]) && !@touch($params[1])) { - return PEAR::raiseError('Could not create "' . $params[1] . '"'); - } - - $params[1] = realpath($params[1]); - $config = &new PEAR_Config($params[1], '#no#system#config#', false, false); - if ($root{strlen($root) - 1} == '/') { - $root = substr($root, 0, strlen($root) - 1); - } - - $config->noRegistry(); - $config->set('php_dir', $windows ? "$root\\pear\\php" : "$root/pear/php", 'user'); - $config->set('data_dir', $windows ? "$root\\pear\\data" : "$root/pear/data"); - $config->set('www_dir', $windows ? "$root\\pear\\www" : "$root/pear/www"); - $config->set('cfg_dir', $windows ? "$root\\pear\\cfg" : "$root/pear/cfg"); - $config->set('ext_dir', $windows ? "$root\\pear\\ext" : "$root/pear/ext"); - $config->set('doc_dir', $windows ? "$root\\pear\\docs" : "$root/pear/docs"); - $config->set('test_dir', $windows ? "$root\\pear\\tests" : "$root/pear/tests"); - $config->set('cache_dir', $windows ? "$root\\pear\\cache" : "$root/pear/cache"); - $config->set('download_dir', $windows ? "$root\\pear\\download" : "$root/pear/download"); - $config->set('temp_dir', $windows ? "$root\\pear\\temp" : "$root/pear/temp"); - $config->set('bin_dir', $windows ? "$root\\pear" : "$root/pear"); - $config->writeConfigFile(); - $this->_showConfig($config); - $this->ui->outputData('Successfully created default configuration file "' . $params[1] . '"', - $command); - } - - function _showConfig(&$config) - { - $params = array('user'); - $keys = $config->getKeys(); - sort($keys); - $channel = 'pear.php.net'; - $data = array('caption' => 'Configuration (channel ' . $channel . '):'); - foreach ($keys as $key) { - $type = $config->getType($key); - $value = $config->get($key, 'user', $channel); - if ($type == 'password' && $value) { - $value = '********'; - } - - if ($value === false) { - $value = 'false'; - } elseif ($value === true) { - $value = 'true'; - } - $data['data'][$config->getGroup($key)][] = - array($config->getPrompt($key) , $key, $value); - } - - foreach ($config->getLayers() as $layer) { - $data['data']['Config Files'][] = - array(ucfirst($layer) . ' Configuration File', 'Filename' , - $config->getConfFile($layer)); - } - - $this->ui->outputData($data, 'config-show'); - return true; - } - - /** - * Checks if a layer is defined or not - * - * @param string $layer The layer to search for - * @return mixed False on no error or the error message - */ - function _checkLayer($layer = null) - { - if (!empty($layer) && $layer != 'default') { - $layers = $this->config->getLayers(); - if (!in_array($layer, $layers)) { - return " only the layers: \"" . implode('" or "', $layers) . "\" are supported"; - } - } - - return false; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Config.xml b/3rdparty/PEAR/Command/Config.xml deleted file mode 100644 index f64a925f52c38a43c428f471b7b8ac8e6249ea82..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Config.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - Show All Settings - doConfigShow - csh - - - c - show configuration variables for another channel - CHAN - - - [layer] -Displays all configuration values. An optional argument -may be used to tell which configuration layer to display. Valid -configuration layers are "user", "system" and "default". To display -configurations for different channels, set the default_channel -configuration variable and run config-show again. - - - - Show One Setting - doConfigGet - cg - - - c - show configuration variables for another channel - CHAN - - - <parameter> [layer] -Displays the value of one configuration parameter. The -first argument is the name of the parameter, an optional second argument -may be used to tell which configuration layer to look in. Valid configuration -layers are "user", "system" and "default". If no layer is specified, a value -will be picked from the first layer that defines the parameter, in the order -just specified. The configuration value will be retrieved for the channel -specified by the default_channel configuration variable. - - - - Change Setting - doConfigSet - cs - - - c - show configuration variables for another channel - CHAN - - - <parameter> <value> [layer] -Sets the value of one configuration parameter. The first argument is -the name of the parameter, the second argument is the new value. Some -parameters are subject to validation, and the command will fail with -an error message if the new value does not make sense. An optional -third argument may be used to specify in which layer to set the -configuration parameter. The default layer is "user". The -configuration value will be set for the current channel, which -is controlled by the default_channel configuration variable. - - - - Show Information About Setting - doConfigHelp - ch - - [parameter] -Displays help for a configuration parameter. Without arguments it -displays help for all configuration parameters. - - - - Create a Default configuration file - doConfigCreate - coc - - - w - create a config file for a windows install - - - <root path> <filename> -Create a default configuration file with all directory configuration -variables set to subdirectories of <root path>, and save it as <filename>. -This is useful especially for creating a configuration file for a remote -PEAR installation (using the --remoteconfig option of install, upgrade, -and uninstall). - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Install.php b/3rdparty/PEAR/Command/Install.php deleted file mode 100644 index c035f6d20de1eadcd7e6807718b645de4b336fa8..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Install.php +++ /dev/null @@ -1,1268 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Install.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for installation or deinstallation/upgrading of - * packages. - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Install extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'install' => array( - 'summary' => 'Install Package', - 'function' => 'doInstall', - 'shortcut' => 'i', - 'options' => array( - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'will overwrite newer installed packages', - ), - 'loose' => array( - 'shortopt' => 'l', - 'doc' => 'do not check for recommended dependency version', - ), - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, install anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not install files, only register the package as installed', - ), - 'soft' => array( - 'shortopt' => 's', - 'doc' => 'soft install, fail silently, or upgrade if already installed', - ), - 'nobuild' => array( - 'shortopt' => 'B', - 'doc' => 'don\'t build C extensions', - ), - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'request uncompressed files when downloading', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT), use packagingroot for RPM', - ), - 'packagingroot' => array( - 'shortopt' => 'P', - 'arg' => 'DIR', - 'doc' => 'root directory used when packaging files, like RPM packaging', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'alldeps' => array( - 'shortopt' => 'a', - 'doc' => 'install all required and optional dependencies', - ), - 'onlyreqdeps' => array( - 'shortopt' => 'o', - 'doc' => 'install all required dependencies', - ), - 'offline' => array( - 'shortopt' => 'O', - 'doc' => 'do not attempt to download any urls or contact channels', - ), - 'pretend' => array( - 'shortopt' => 'p', - 'doc' => 'Only list the packages that would be downloaded', - ), - ), - 'doc' => '[channel/] ... -Installs one or more PEAR packages. You can specify a package to -install in four ways: - -"Package-1.0.tgz" : installs from a local file - -"http://example.com/Package-1.0.tgz" : installs from -anywhere on the net. - -"package.xml" : installs the package described in -package.xml. Useful for testing, or for wrapping a PEAR package in -another package manager such as RPM. - -"Package[-version/state][.tar]" : queries your default channel\'s server -({config master_server}) and downloads the newest package with -the preferred quality/state ({config preferred_state}). - -To retrieve Package version 1.1, use "Package-1.1," to retrieve -Package state beta, use "Package-beta." To retrieve an uncompressed -file, append .tar (make sure there is no file by the same name first) - -To download a package from another channel, prefix with the channel name like -"channel/Package" - -More than one package may be specified at once. It is ok to mix these -four ways of specifying packages. -'), - 'upgrade' => array( - 'summary' => 'Upgrade Package', - 'function' => 'doInstall', - 'shortcut' => 'up', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'upgrade packages from a specific channel', - 'arg' => 'CHAN', - ), - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'overwrite newer installed packages', - ), - 'loose' => array( - 'shortopt' => 'l', - 'doc' => 'do not check for recommended dependency version', - ), - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, upgrade anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not install files, only register the package as upgraded', - ), - 'nobuild' => array( - 'shortopt' => 'B', - 'doc' => 'don\'t build C extensions', - ), - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'request uncompressed files when downloading', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT)', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'alldeps' => array( - 'shortopt' => 'a', - 'doc' => 'install all required and optional dependencies', - ), - 'onlyreqdeps' => array( - 'shortopt' => 'o', - 'doc' => 'install all required dependencies', - ), - 'offline' => array( - 'shortopt' => 'O', - 'doc' => 'do not attempt to download any urls or contact channels', - ), - 'pretend' => array( - 'shortopt' => 'p', - 'doc' => 'Only list the packages that would be downloaded', - ), - ), - 'doc' => ' ... -Upgrades one or more PEAR packages. See documentation for the -"install" command for ways to specify a package. - -When upgrading, your package will be updated if the provided new -package has a higher version number (use the -f option if you need to -upgrade anyway). - -More than one package may be specified at once. -'), - 'upgrade-all' => array( - 'summary' => 'Upgrade All Packages [Deprecated in favor of calling upgrade with no parameters]', - 'function' => 'doUpgradeAll', - 'shortcut' => 'ua', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'upgrade packages from a specific channel', - 'arg' => 'CHAN', - ), - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, upgrade anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not install files, only register the package as upgraded', - ), - 'nobuild' => array( - 'shortopt' => 'B', - 'doc' => 'don\'t build C extensions', - ), - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'request uncompressed files when downloading', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT), use packagingroot for RPM', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'loose' => array( - 'doc' => 'do not check for recommended dependency version', - ), - ), - 'doc' => ' -WARNING: This function is deprecated in favor of using the upgrade command with no params - -Upgrades all packages that have a newer release available. Upgrades are -done only if there is a release available of the state specified in -"preferred_state" (currently {config preferred_state}), or a state considered -more stable. -'), - 'uninstall' => array( - 'summary' => 'Un-install Package', - 'function' => 'doUninstall', - 'shortcut' => 'un', - 'options' => array( - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, uninstall anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not remove files, only register the packages as not installed', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT)', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'offline' => array( - 'shortopt' => 'O', - 'doc' => 'do not attempt to uninstall remotely', - ), - ), - 'doc' => '[channel/] ... -Uninstalls one or more PEAR packages. More than one package may be -specified at once. Prefix with channel name to uninstall from a -channel not in your default channel ({config default_channel}) -'), - 'bundle' => array( - 'summary' => 'Unpacks a Pecl Package', - 'function' => 'doBundle', - 'shortcut' => 'bun', - 'options' => array( - 'destination' => array( - 'shortopt' => 'd', - 'arg' => 'DIR', - 'doc' => 'Optional destination directory for unpacking (defaults to current path or "ext" if exists)', - ), - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'Force the unpacking even if there were errors in the package', - ), - ), - 'doc' => ' -Unpacks a Pecl Package into the selected location. It will download the -package if needed. -'), - 'run-scripts' => array( - 'summary' => 'Run Post-Install Scripts bundled with a package', - 'function' => 'doRunScripts', - 'shortcut' => 'rs', - 'options' => array( - ), - 'doc' => ' -Run post-installation scripts in package , if any exist. -'), - ); - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Install constructor. - * - * @access public - */ - function PEAR_Command_Install(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - /** - * For unit testing purposes - */ - function &getDownloader(&$ui, $options, &$config) - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - $a = &new PEAR_Downloader($ui, $options, $config); - return $a; - } - - /** - * For unit testing purposes - */ - function &getInstaller(&$ui) - { - if (!class_exists('PEAR_Installer')) { - require_once 'PEAR/Installer.php'; - } - $a = &new PEAR_Installer($ui); - return $a; - } - - function enableExtension($binaries, $type) - { - if (!($phpini = $this->config->get('php_ini', null, 'pear.php.net'))) { - return PEAR::raiseError('configuration option "php_ini" is not set to php.ini location'); - } - $ini = $this->_parseIni($phpini); - if (PEAR::isError($ini)) { - return $ini; - } - $line = 0; - if ($type == 'extsrc' || $type == 'extbin') { - $search = 'extensions'; - $enable = 'extension'; - } else { - $search = 'zend_extensions'; - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('/Thread Safety.+enabled/', $info) ? '_ts' : ''; - $enable = 'zend_extension' . $debug . $ts; - } - foreach ($ini[$search] as $line => $extension) { - if (in_array($extension, $binaries, true) || in_array( - $ini['extension_dir'] . DIRECTORY_SEPARATOR . $extension, $binaries, true)) { - // already enabled - assume if one is, all are - return true; - } - } - if ($line) { - $newini = array_slice($ini['all'], 0, $line); - } else { - $newini = array(); - } - foreach ($binaries as $binary) { - if ($ini['extension_dir']) { - $binary = basename($binary); - } - $newini[] = $enable . '="' . $binary . '"' . (OS_UNIX ? "\n" : "\r\n"); - } - $newini = array_merge($newini, array_slice($ini['all'], $line)); - $fp = @fopen($phpini, 'wb'); - if (!$fp) { - return PEAR::raiseError('cannot open php.ini "' . $phpini . '" for writing'); - } - foreach ($newini as $line) { - fwrite($fp, $line); - } - fclose($fp); - return true; - } - - function disableExtension($binaries, $type) - { - if (!($phpini = $this->config->get('php_ini', null, 'pear.php.net'))) { - return PEAR::raiseError('configuration option "php_ini" is not set to php.ini location'); - } - $ini = $this->_parseIni($phpini); - if (PEAR::isError($ini)) { - return $ini; - } - $line = 0; - if ($type == 'extsrc' || $type == 'extbin') { - $search = 'extensions'; - $enable = 'extension'; - } else { - $search = 'zend_extensions'; - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('/Thread Safety.+enabled/', $info) ? '_ts' : ''; - $enable = 'zend_extension' . $debug . $ts; - } - $found = false; - foreach ($ini[$search] as $line => $extension) { - if (in_array($extension, $binaries, true) || in_array( - $ini['extension_dir'] . DIRECTORY_SEPARATOR . $extension, $binaries, true)) { - $found = true; - break; - } - } - if (!$found) { - // not enabled - return true; - } - $fp = @fopen($phpini, 'wb'); - if (!$fp) { - return PEAR::raiseError('cannot open php.ini "' . $phpini . '" for writing'); - } - if ($line) { - $newini = array_slice($ini['all'], 0, $line); - // delete the enable line - $newini = array_merge($newini, array_slice($ini['all'], $line + 1)); - } else { - $newini = array_slice($ini['all'], 1); - } - foreach ($newini as $line) { - fwrite($fp, $line); - } - fclose($fp); - return true; - } - - function _parseIni($filename) - { - if (!file_exists($filename)) { - return PEAR::raiseError('php.ini "' . $filename . '" does not exist'); - } - - if (filesize($filename) > 300000) { - return PEAR::raiseError('php.ini "' . $filename . '" is too large, aborting'); - } - - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('/Thread Safety.+enabled/', $info) ? '_ts' : ''; - $zend_extension_line = 'zend_extension' . $debug . $ts; - $all = @file($filename); - if (!$all) { - return PEAR::raiseError('php.ini "' . $filename .'" could not be read'); - } - $zend_extensions = $extensions = array(); - // assume this is right, but pull from the php.ini if it is found - $extension_dir = ini_get('extension_dir'); - foreach ($all as $linenum => $line) { - $line = trim($line); - if (!$line) { - continue; - } - if ($line[0] == ';') { - continue; - } - if (strtolower(substr($line, 0, 13)) == 'extension_dir') { - $line = trim(substr($line, 13)); - if ($line[0] == '=') { - $x = trim(substr($line, 1)); - $x = explode(';', $x); - $extension_dir = str_replace('"', '', array_shift($x)); - continue; - } - } - if (strtolower(substr($line, 0, 9)) == 'extension') { - $line = trim(substr($line, 9)); - if ($line[0] == '=') { - $x = trim(substr($line, 1)); - $x = explode(';', $x); - $extensions[$linenum] = str_replace('"', '', array_shift($x)); - continue; - } - } - if (strtolower(substr($line, 0, strlen($zend_extension_line))) == - $zend_extension_line) { - $line = trim(substr($line, strlen($zend_extension_line))); - if ($line[0] == '=') { - $x = trim(substr($line, 1)); - $x = explode(';', $x); - $zend_extensions[$linenum] = str_replace('"', '', array_shift($x)); - continue; - } - } - } - return array( - 'extensions' => $extensions, - 'zend_extensions' => $zend_extensions, - 'extension_dir' => $extension_dir, - 'all' => $all, - ); - } - - // {{{ doInstall() - - function doInstall($command, $options, $params) - { - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - - if (isset($options['installroot']) && isset($options['packagingroot'])) { - return $this->raiseError('ERROR: cannot use both --installroot and --packagingroot'); - } - - $reg = &$this->config->getRegistry(); - $channel = isset($options['channel']) ? $options['channel'] : $this->config->get('default_channel'); - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - - if (empty($this->installer)) { - $this->installer = &$this->getInstaller($this->ui); - } - - if ($command == 'upgrade' || $command == 'upgrade-all') { - // If people run the upgrade command but pass nothing, emulate a upgrade-all - if ($command == 'upgrade' && empty($params)) { - return $this->doUpgradeAll($command, $options, $params); - } - $options['upgrade'] = true; - } else { - $packages = $params; - } - - $instreg = &$reg; // instreg used to check if package is installed - if (isset($options['packagingroot']) && !isset($options['upgrade'])) { - $packrootphp_dir = $this->installer->_prependPath( - $this->config->get('php_dir', null, 'pear.php.net'), - $options['packagingroot']); - $instreg = new PEAR_Registry($packrootphp_dir); // other instreg! - - if ($this->config->get('verbose') > 2) { - $this->ui->outputData('using package root: ' . $options['packagingroot']); - } - } - - $abstractpackages = $otherpackages = array(); - // parse params - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - - foreach ($params as $param) { - if (strpos($param, 'http://') === 0) { - $otherpackages[] = $param; - continue; - } - - if (strpos($param, 'channel://') === false && @file_exists($param)) { - if (isset($options['force'])) { - $otherpackages[] = $param; - continue; - } - - $pkg = new PEAR_PackageFile($this->config); - $pf = $pkg->fromAnyFile($param, PEAR_VALIDATE_DOWNLOADING); - if (PEAR::isError($pf)) { - $otherpackages[] = $param; - continue; - } - - $exists = $reg->packageExists($pf->getPackage(), $pf->getChannel()); - $pversion = $reg->packageInfo($pf->getPackage(), 'version', $pf->getChannel()); - $version_compare = version_compare($pf->getVersion(), $pversion, '<='); - if ($exists && $version_compare) { - if ($this->config->get('verbose')) { - $this->ui->outputData('Ignoring installed package ' . - $reg->parsedPackageNameToString( - array('package' => $pf->getPackage(), - 'channel' => $pf->getChannel()), true)); - } - continue; - } - $otherpackages[] = $param; - continue; - } - - $e = $reg->parsePackageName($param, $channel); - if (PEAR::isError($e)) { - $otherpackages[] = $param; - } else { - $abstractpackages[] = $e; - } - } - PEAR::staticPopErrorHandling(); - - // if there are any local package .tgz or remote static url, we can't - // filter. The filter only works for abstract packages - if (count($abstractpackages) && !isset($options['force'])) { - // when not being forced, only do necessary upgrades/installs - if (isset($options['upgrade'])) { - $abstractpackages = $this->_filterUptodatePackages($abstractpackages, $command); - } else { - $count = count($abstractpackages); - foreach ($abstractpackages as $i => $package) { - if (isset($package['group'])) { - // do not filter out install groups - continue; - } - - if ($instreg->packageExists($package['package'], $package['channel'])) { - if ($count > 1) { - if ($this->config->get('verbose')) { - $this->ui->outputData('Ignoring installed package ' . - $reg->parsedPackageNameToString($package, true)); - } - unset($abstractpackages[$i]); - } elseif ($count === 1) { - // Lets try to upgrade it since it's already installed - $options['upgrade'] = true; - } - } - } - } - $abstractpackages = - array_map(array($reg, 'parsedPackageNameToString'), $abstractpackages); - } elseif (count($abstractpackages)) { - $abstractpackages = - array_map(array($reg, 'parsedPackageNameToString'), $abstractpackages); - } - - $packages = array_merge($abstractpackages, $otherpackages); - if (!count($packages)) { - $c = ''; - if (isset($options['channel'])){ - $c .= ' in channel "' . $options['channel'] . '"'; - } - $this->ui->outputData('Nothing to ' . $command . $c); - return true; - } - - $this->downloader = &$this->getDownloader($this->ui, $options, $this->config); - $errors = $downloaded = $binaries = array(); - $downloaded = &$this->downloader->download($packages); - if (PEAR::isError($downloaded)) { - return $this->raiseError($downloaded); - } - - $errors = $this->downloader->getErrorMsgs(); - if (count($errors)) { - $err = array(); - $err['data'] = array(); - foreach ($errors as $error) { - if ($error !== null) { - $err['data'][] = array($error); - } - } - - if (!empty($err['data'])) { - $err['headline'] = 'Install Errors'; - $this->ui->outputData($err); - } - - if (!count($downloaded)) { - return $this->raiseError("$command failed"); - } - } - - $data = array( - 'headline' => 'Packages that would be Installed' - ); - - if (isset($options['pretend'])) { - foreach ($downloaded as $package) { - $data['data'][] = array($reg->parsedPackageNameToString($package->getParsedPackage())); - } - $this->ui->outputData($data, 'pretend'); - return true; - } - - $this->installer->setOptions($options); - $this->installer->sortPackagesForInstall($downloaded); - if (PEAR::isError($err = $this->installer->setDownloadedPackages($downloaded))) { - $this->raiseError($err->getMessage()); - return true; - } - - $binaries = $extrainfo = array(); - foreach ($downloaded as $param) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->installer->install($param, $options); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($info)) { - $oldinfo = $info; - $pkg = &$param->getPackageFile(); - if ($info->getCode() != PEAR_INSTALLER_NOBINARY) { - if (!($info = $pkg->installBinary($this->installer))) { - $this->ui->outputData('ERROR: ' .$oldinfo->getMessage()); - continue; - } - - // we just installed a different package than requested, - // let's change the param and info so that the rest of this works - $param = $info[0]; - $info = $info[1]; - } - } - - if (!is_array($info)) { - return $this->raiseError("$command failed"); - } - - if ($param->getPackageType() == 'extsrc' || - $param->getPackageType() == 'extbin' || - $param->getPackageType() == 'zendextsrc' || - $param->getPackageType() == 'zendextbin' - ) { - $pkg = &$param->getPackageFile(); - if ($instbin = $pkg->getInstalledBinary()) { - $instpkg = &$instreg->getPackage($instbin, $pkg->getChannel()); - } else { - $instpkg = &$instreg->getPackage($pkg->getPackage(), $pkg->getChannel()); - } - - foreach ($instpkg->getFilelist() as $name => $atts) { - $pinfo = pathinfo($atts['installed_as']); - if (!isset($pinfo['extension']) || - in_array($pinfo['extension'], array('c', 'h')) - ) { - continue; // make sure we don't match php_blah.h - } - - if ((strpos($pinfo['basename'], 'php_') === 0 && - $pinfo['extension'] == 'dll') || - // most unices - $pinfo['extension'] == 'so' || - // hp-ux - $pinfo['extension'] == 'sl') { - $binaries[] = array($atts['installed_as'], $pinfo); - break; - } - } - - if (count($binaries)) { - foreach ($binaries as $pinfo) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $ret = $this->enableExtension(array($pinfo[0]), $param->getPackageType()); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($ret)) { - $extrainfo[] = $ret->getMessage(); - if ($param->getPackageType() == 'extsrc' || - $param->getPackageType() == 'extbin') { - $exttype = 'extension'; - } else { - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('/Thread Safety.+enabled/', $info) ? '_ts' : ''; - $exttype = 'zend_extension' . $debug . $ts; - } - $extrainfo[] = 'You should add "' . $exttype . '=' . - $pinfo[1]['basename'] . '" to php.ini'; - } else { - $extrainfo[] = 'Extension ' . $instpkg->getProvidesExtension() . - ' enabled in php.ini'; - } - } - } - } - - if ($this->config->get('verbose') > 0) { - $chan = $param->getChannel(); - $label = $reg->parsedPackageNameToString( - array( - 'channel' => $chan, - 'package' => $param->getPackage(), - 'version' => $param->getVersion(), - )); - $out = array('data' => "$command ok: $label"); - if (isset($info['release_warnings'])) { - $out['release_warnings'] = $info['release_warnings']; - } - $this->ui->outputData($out, $command); - - if (!isset($options['register-only']) && !isset($options['offline'])) { - if ($this->config->isDefinedLayer('ftp')) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->installer->ftpInstall($param); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($info)) { - $this->ui->outputData($info->getMessage()); - $this->ui->outputData("remote install failed: $label"); - } else { - $this->ui->outputData("remote install ok: $label"); - } - } - } - } - - $deps = $param->getDeps(); - if ($deps) { - if (isset($deps['group'])) { - $groups = $deps['group']; - if (!isset($groups[0])) { - $groups = array($groups); - } - - foreach ($groups as $group) { - if ($group['attribs']['name'] == 'default') { - // default group is always installed, unless the user - // explicitly chooses to install another group - continue; - } - $extrainfo[] = $param->getPackage() . ': Optional feature ' . - $group['attribs']['name'] . ' available (' . - $group['attribs']['hint'] . ')'; - } - - $extrainfo[] = $param->getPackage() . - ': To install optional features use "pear install ' . - $reg->parsedPackageNameToString( - array('package' => $param->getPackage(), - 'channel' => $param->getChannel()), true) . - '#featurename"'; - } - } - - $pkg = &$instreg->getPackage($param->getPackage(), $param->getChannel()); - // $pkg may be NULL if install is a 'fake' install via --packagingroot - if (is_object($pkg)) { - $pkg->setConfig($this->config); - if ($list = $pkg->listPostinstallScripts()) { - $pn = $reg->parsedPackageNameToString(array('channel' => - $param->getChannel(), 'package' => $param->getPackage()), true); - $extrainfo[] = $pn . ' has post-install scripts:'; - foreach ($list as $file) { - $extrainfo[] = $file; - } - $extrainfo[] = $param->getPackage() . - ': Use "pear run-scripts ' . $pn . '" to finish setup.'; - $extrainfo[] = 'DO NOT RUN SCRIPTS FROM UNTRUSTED SOURCES'; - } - } - } - - if (count($extrainfo)) { - foreach ($extrainfo as $info) { - $this->ui->outputData($info); - } - } - - return true; - } - - // }}} - // {{{ doUpgradeAll() - - function doUpgradeAll($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $upgrade = array(); - - if (isset($options['channel'])) { - $channels = array($options['channel']); - } else { - $channels = $reg->listChannels(); - } - - foreach ($channels as $channel) { - if ($channel == '__uri') { - continue; - } - - // parse name with channel - foreach ($reg->listPackages($channel) as $name) { - $upgrade[] = $reg->parsedPackageNameToString(array( - 'channel' => $channel, - 'package' => $name - )); - } - } - - $err = $this->doInstall($command, $options, $upgrade); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - } - } - - // }}} - // {{{ doUninstall() - - function doUninstall($command, $options, $params) - { - if (count($params) < 1) { - return $this->raiseError("Please supply the package(s) you want to uninstall"); - } - - if (empty($this->installer)) { - $this->installer = &$this->getInstaller($this->ui); - } - - if (isset($options['remoteconfig'])) { - $e = $this->config->readFTPConfigFile($options['remoteconfig']); - if (!PEAR::isError($e)) { - $this->installer->setConfig($this->config); - } - } - - $reg = &$this->config->getRegistry(); - $newparams = array(); - $binaries = array(); - $badparams = array(); - foreach ($params as $pkg) { - $channel = $this->config->get('default_channel'); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $parsed = $reg->parsePackageName($pkg, $channel); - PEAR::staticPopErrorHandling(); - if (!$parsed || PEAR::isError($parsed)) { - $badparams[] = $pkg; - continue; - } - $package = $parsed['package']; - $channel = $parsed['channel']; - $info = &$reg->getPackage($package, $channel); - if ($info === null && - ($channel == 'pear.php.net' || $channel == 'pecl.php.net')) { - // make sure this isn't a package that has flipped from pear to pecl but - // used a package.xml 1.0 - $testc = ($channel == 'pear.php.net') ? 'pecl.php.net' : 'pear.php.net'; - $info = &$reg->getPackage($package, $testc); - if ($info !== null) { - $channel = $testc; - } - } - if ($info === null) { - $badparams[] = $pkg; - } else { - $newparams[] = &$info; - // check for binary packages (this is an alias for those packages if so) - if ($installedbinary = $info->getInstalledBinary()) { - $this->ui->log('adding binary package ' . - $reg->parsedPackageNameToString(array('channel' => $channel, - 'package' => $installedbinary), true)); - $newparams[] = &$reg->getPackage($installedbinary, $channel); - } - // add the contents of a dependency group to the list of installed packages - if (isset($parsed['group'])) { - $group = $info->getDependencyGroup($parsed['group']); - if ($group) { - $installed = $reg->getInstalledGroup($group); - if ($installed) { - foreach ($installed as $i => $p) { - $newparams[] = &$installed[$i]; - } - } - } - } - } - } - $err = $this->installer->sortPackagesForUninstall($newparams); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - return true; - } - $params = $newparams; - // twist this to use it to check on whether dependent packages are also being uninstalled - // for circular dependencies like subpackages - $this->installer->setUninstallPackages($newparams); - $params = array_merge($params, $badparams); - $binaries = array(); - foreach ($params as $pkg) { - $this->installer->pushErrorHandling(PEAR_ERROR_RETURN); - if ($err = $this->installer->uninstall($pkg, $options)) { - $this->installer->popErrorHandling(); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - continue; - } - if ($pkg->getPackageType() == 'extsrc' || - $pkg->getPackageType() == 'extbin' || - $pkg->getPackageType() == 'zendextsrc' || - $pkg->getPackageType() == 'zendextbin') { - if ($instbin = $pkg->getInstalledBinary()) { - continue; // this will be uninstalled later - } - - foreach ($pkg->getFilelist() as $name => $atts) { - $pinfo = pathinfo($atts['installed_as']); - if (!isset($pinfo['extension']) || - in_array($pinfo['extension'], array('c', 'h'))) { - continue; // make sure we don't match php_blah.h - } - if ((strpos($pinfo['basename'], 'php_') === 0 && - $pinfo['extension'] == 'dll') || - // most unices - $pinfo['extension'] == 'so' || - // hp-ux - $pinfo['extension'] == 'sl') { - $binaries[] = array($atts['installed_as'], $pinfo); - break; - } - } - if (count($binaries)) { - foreach ($binaries as $pinfo) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $ret = $this->disableExtension(array($pinfo[0]), $pkg->getPackageType()); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($ret)) { - $extrainfo[] = $ret->getMessage(); - if ($pkg->getPackageType() == 'extsrc' || - $pkg->getPackageType() == 'extbin') { - $exttype = 'extension'; - } else { - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('/Thread Safety.+enabled/', $info) ? '_ts' : ''; - $exttype = 'zend_extension' . $debug . $ts; - } - $this->ui->outputData('Unable to remove "' . $exttype . '=' . - $pinfo[1]['basename'] . '" from php.ini', $command); - } else { - $this->ui->outputData('Extension ' . $pkg->getProvidesExtension() . - ' disabled in php.ini', $command); - } - } - } - } - $savepkg = $pkg; - if ($this->config->get('verbose') > 0) { - if (is_object($pkg)) { - $pkg = $reg->parsedPackageNameToString($pkg); - } - $this->ui->outputData("uninstall ok: $pkg", $command); - } - if (!isset($options['offline']) && is_object($savepkg) && - defined('PEAR_REMOTEINSTALL_OK')) { - if ($this->config->isDefinedLayer('ftp')) { - $this->installer->pushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->installer->ftpUninstall($savepkg); - $this->installer->popErrorHandling(); - if (PEAR::isError($info)) { - $this->ui->outputData($info->getMessage()); - $this->ui->outputData("remote uninstall failed: $pkg"); - } else { - $this->ui->outputData("remote uninstall ok: $pkg"); - } - } - } - } else { - $this->installer->popErrorHandling(); - if (!is_object($pkg)) { - return $this->raiseError("uninstall failed: $pkg"); - } - $pkg = $reg->parsedPackageNameToString($pkg); - } - } - - return true; - } - - // }}} - - - // }}} - // {{{ doBundle() - /* - (cox) It just downloads and untars the package, does not do - any check that the PEAR_Installer::_installFile() does. - */ - - function doBundle($command, $options, $params) - { - $opts = array( - 'force' => true, - 'nodeps' => true, - 'soft' => true, - 'downloadonly' => true - ); - $downloader = &$this->getDownloader($this->ui, $opts, $this->config); - $reg = &$this->config->getRegistry(); - if (count($params) < 1) { - return $this->raiseError("Please supply the package you want to bundle"); - } - - if (isset($options['destination'])) { - if (!is_dir($options['destination'])) { - System::mkdir('-p ' . $options['destination']); - } - $dest = realpath($options['destination']); - } else { - $pwd = getcwd(); - $dir = $pwd . DIRECTORY_SEPARATOR . 'ext'; - $dest = is_dir($dir) ? $dir : $pwd; - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $downloader->setDownloadDir($dest); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($err)) { - return PEAR::raiseError('download directory "' . $dest . - '" is not writeable.'); - } - $result = &$downloader->download(array($params[0])); - if (PEAR::isError($result)) { - return $result; - } - if (!isset($result[0])) { - return $this->raiseError('unable to unpack ' . $params[0]); - } - $pkgfile = &$result[0]->getPackageFile(); - $pkgname = $pkgfile->getName(); - $pkgversion = $pkgfile->getVersion(); - - // Unpacking ------------------------------------------------- - $dest .= DIRECTORY_SEPARATOR . $pkgname; - $orig = $pkgname . '-' . $pkgversion; - - $tar = &new Archive_Tar($pkgfile->getArchiveFile()); - if (!$tar->extractModify($dest, $orig)) { - return $this->raiseError('unable to unpack ' . $pkgfile->getArchiveFile()); - } - $this->ui->outputData("Package ready at '$dest'"); - // }}} - } - - // }}} - - function doRunScripts($command, $options, $params) - { - if (!isset($params[0])) { - return $this->raiseError('run-scripts expects 1 parameter: a package name'); - } - - $reg = &$this->config->getRegistry(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $parsed = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($parsed)) { - return $this->raiseError($parsed); - } - - $package = &$reg->getPackage($parsed['package'], $parsed['channel']); - if (!is_object($package)) { - return $this->raiseError('Could not retrieve package "' . $params[0] . '" from registry'); - } - - $package->setConfig($this->config); - $package->runPostinstallScripts(); - $this->ui->outputData('Install scripts complete', $command); - return true; - } - - /** - * Given a list of packages, filter out those ones that are already up to date - * - * @param $packages: packages, in parsed array format ! - * @return list of packages that can be upgraded - */ - function _filterUptodatePackages($packages, $command) - { - $reg = &$this->config->getRegistry(); - $latestReleases = array(); - - $ret = array(); - foreach ($packages as $package) { - if (isset($package['group'])) { - $ret[] = $package; - continue; - } - - $channel = $package['channel']; - $name = $package['package']; - if (!$reg->packageExists($name, $channel)) { - $ret[] = $package; - continue; - } - - if (!isset($latestReleases[$channel])) { - // fill in cache for this channel - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - - $base2 = false; - $preferred_mirror = $this->config->get('preferred_mirror', null, $channel); - if ($chan->supportsREST($preferred_mirror) && - ( - //($base2 = $chan->getBaseURL('REST1.4', $preferred_mirror)) || - ($base = $chan->getBaseURL('REST1.0', $preferred_mirror)) - ) - ) { - $dorest = true; - } - - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (!isset($package['state'])) { - $state = $this->config->get('preferred_state', null, $channel); - } else { - $state = $package['state']; - } - - if ($dorest) { - if ($base2) { - $rest = &$this->config->getREST('1.4', array()); - $base = $base2; - } else { - $rest = &$this->config->getREST('1.0', array()); - } - - $installed = array_flip($reg->listPackages($channel)); - $latest = $rest->listLatestUpgrades($base, $state, $installed, $channel, $reg); - } - - PEAR::staticPopErrorHandling(); - if (PEAR::isError($latest)) { - $this->ui->outputData('Error getting channel info from ' . $channel . - ': ' . $latest->getMessage()); - continue; - } - - $latestReleases[$channel] = array_change_key_case($latest); - } - - // check package for latest release - $name_lower = strtolower($name); - if (isset($latestReleases[$channel][$name_lower])) { - // if not set, up to date - $inst_version = $reg->packageInfo($name, 'version', $channel); - $channel_version = $latestReleases[$channel][$name_lower]['version']; - if (version_compare($channel_version, $inst_version, 'le')) { - // installed version is up-to-date - continue; - } - - // maintain BC - if ($command == 'upgrade-all') { - $this->ui->outputData(array('data' => 'Will upgrade ' . - $reg->parsedPackageNameToString($package)), $command); - } - $ret[] = $package; - } - } - - return $ret; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Install.xml b/3rdparty/PEAR/Command/Install.xml deleted file mode 100644 index 1b1e933c22da92225b6ed73a0e8f76f6df47bcdf..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Install.xml +++ /dev/null @@ -1,276 +0,0 @@ - - - Install Package - doInstall - i - - - f - will overwrite newer installed packages - - - l - do not check for recommended dependency version - - - n - ignore dependencies, install anyway - - - r - do not install files, only register the package as installed - - - s - soft install, fail silently, or upgrade if already installed - - - B - don't build C extensions - - - Z - request uncompressed files when downloading - - - R - root directory used when installing files (ala PHP's INSTALL_ROOT), use packagingroot for RPM - DIR - - - P - root directory used when packaging files, like RPM packaging - DIR - - - - force install even if there were errors - - - a - install all required and optional dependencies - - - o - install all required dependencies - - - O - do not attempt to download any urls or contact channels - - - p - Only list the packages that would be downloaded - - - [channel/]<package> ... -Installs one or more PEAR packages. You can specify a package to -install in four ways: - -"Package-1.0.tgz" : installs from a local file - -"http://example.com/Package-1.0.tgz" : installs from -anywhere on the net. - -"package.xml" : installs the package described in -package.xml. Useful for testing, or for wrapping a PEAR package in -another package manager such as RPM. - -"Package[-version/state][.tar]" : queries your default channel's server -({config master_server}) and downloads the newest package with -the preferred quality/state ({config preferred_state}). - -To retrieve Package version 1.1, use "Package-1.1," to retrieve -Package state beta, use "Package-beta." To retrieve an uncompressed -file, append .tar (make sure there is no file by the same name first) - -To download a package from another channel, prefix with the channel name like -"channel/Package" - -More than one package may be specified at once. It is ok to mix these -four ways of specifying packages. - - - - Upgrade Package - doInstall - up - - - c - upgrade packages from a specific channel - CHAN - - - f - overwrite newer installed packages - - - l - do not check for recommended dependency version - - - n - ignore dependencies, upgrade anyway - - - r - do not install files, only register the package as upgraded - - - B - don't build C extensions - - - Z - request uncompressed files when downloading - - - R - root directory used when installing files (ala PHP's INSTALL_ROOT) - DIR - - - - force install even if there were errors - - - a - install all required and optional dependencies - - - o - install all required dependencies - - - O - do not attempt to download any urls or contact channels - - - p - Only list the packages that would be downloaded - - - <package> ... -Upgrades one or more PEAR packages. See documentation for the -"install" command for ways to specify a package. - -When upgrading, your package will be updated if the provided new -package has a higher version number (use the -f option if you need to -upgrade anyway). - -More than one package may be specified at once. - - - - Upgrade All Packages [Deprecated in favor of calling upgrade with no parameters] - doUpgradeAll - ua - - - c - upgrade packages from a specific channel - CHAN - - - n - ignore dependencies, upgrade anyway - - - r - do not install files, only register the package as upgraded - - - B - don't build C extensions - - - Z - request uncompressed files when downloading - - - R - root directory used when installing files (ala PHP's INSTALL_ROOT), use packagingroot for RPM - DIR - - - - force install even if there were errors - - - - do not check for recommended dependency version - - - -WARNING: This function is deprecated in favor of using the upgrade command with no params - -Upgrades all packages that have a newer release available. Upgrades are -done only if there is a release available of the state specified in -"preferred_state" (currently {config preferred_state}), or a state considered -more stable. - - - - Un-install Package - doUninstall - un - - - n - ignore dependencies, uninstall anyway - - - r - do not remove files, only register the packages as not installed - - - R - root directory used when installing files (ala PHP's INSTALL_ROOT) - DIR - - - - force install even if there were errors - - - O - do not attempt to uninstall remotely - - - [channel/]<package> ... -Uninstalls one or more PEAR packages. More than one package may be -specified at once. Prefix with channel name to uninstall from a -channel not in your default channel ({config default_channel}) - - - - Unpacks a Pecl Package - doBundle - bun - - - d - Optional destination directory for unpacking (defaults to current path or "ext" if exists) - DIR - - - f - Force the unpacking even if there were errors in the package - - - <package> -Unpacks a Pecl Package into the selected location. It will download the -package if needed. - - - - Run Post-Install Scripts bundled with a package - doRunScripts - rs - - <package> -Run post-installation scripts in package <package>, if any exist. - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Mirror.php b/3rdparty/PEAR/Command/Mirror.php deleted file mode 100644 index 4d157c6b8886000edfc0d6dbec85e303087bc368..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Mirror.php +++ /dev/null @@ -1,139 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Mirror.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.2.0 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for providing file mirrors - * - * @category pear - * @package PEAR - * @author Alexander Merz - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.2.0 - */ -class PEAR_Command_Mirror extends PEAR_Command_Common -{ - var $commands = array( - 'download-all' => array( - 'summary' => 'Downloads each available package from the default channel', - 'function' => 'doDownloadAll', - 'shortcut' => 'da', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ), - ), - 'doc' => ' -Requests a list of available packages from the default channel ({config default_channel}) -and downloads them to current working directory. Note: only -packages within preferred_state ({config preferred_state}) will be downloaded' - ), - ); - - /** - * PEAR_Command_Mirror constructor. - * - * @access public - * @param object PEAR_Frontend a reference to an frontend - * @param object PEAR_Config a reference to the configuration data - */ - function PEAR_Command_Mirror(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - /** - * For unit-testing - */ - function &factory($a) - { - $a = &PEAR_Command::factory($a, $this->config); - return $a; - } - - /** - * retrieves a list of avaible Packages from master server - * and downloads them - * - * @access public - * @param string $command the command - * @param array $options the command options before the command - * @param array $params the stuff after the command name - * @return bool true if succesful - * @throw PEAR_Error - */ - function doDownloadAll($command, $options, $params) - { - $savechannel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - $channel = isset($options['channel']) ? $options['channel'] : - $this->config->get('default_channel'); - if (!$reg->channelExists($channel)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - $this->config->set('default_channel', $channel); - - $this->ui->outputData('Using Channel ' . $this->config->get('default_channel')); - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $remoteInfo = array_flip($rest->listPackages($base, $channel)); - } - - if (PEAR::isError($remoteInfo)) { - return $remoteInfo; - } - - $cmd = &$this->factory("download"); - if (PEAR::isError($cmd)) { - return $cmd; - } - - $this->ui->outputData('Using Preferred State of ' . - $this->config->get('preferred_state')); - $this->ui->outputData('Gathering release information, please wait...'); - - /** - * Error handling not necessary, because already done by - * the download command - */ - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $cmd->run('download', array('downloadonly' => true), array_keys($remoteInfo)); - PEAR::staticPopErrorHandling(); - $this->config->set('default_channel', $savechannel); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage()); - } - - return true; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Mirror.xml b/3rdparty/PEAR/Command/Mirror.xml deleted file mode 100644 index fe8be9d03bf94a11aae5fb1fbbe338932bd2c9c8..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Mirror.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - Downloads each available package from the default channel - doDownloadAll - da - - - c - specify a channel other than the default channel - CHAN - - - -Requests a list of available packages from the default channel ({config default_channel}) -and downloads them to current working directory. Note: only -packages within preferred_state ({config preferred_state}) will be downloaded - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Package.php b/3rdparty/PEAR/Command/Package.php deleted file mode 100644 index 81df7bf6945d974923427de420f199cbe6f48ab3..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Package.php +++ /dev/null @@ -1,1124 +0,0 @@ - - * @author Martin Jansen - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Package.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Martin Jansen - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ - -class PEAR_Command_Package extends PEAR_Command_Common -{ - var $commands = array( - 'package' => array( - 'summary' => 'Build Package', - 'function' => 'doPackage', - 'shortcut' => 'p', - 'options' => array( - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'Do not gzip the package file' - ), - 'showname' => array( - 'shortopt' => 'n', - 'doc' => 'Print the name of the packaged file.', - ), - ), - 'doc' => '[descfile] [descfile2] -Creates a PEAR package from its description file (usually called -package.xml). If a second packagefile is passed in, then -the packager will check to make sure that one is a package.xml -version 1.0, and the other is a package.xml version 2.0. The -package.xml version 1.0 will be saved as "package.xml" in the archive, -and the other as "package2.xml" in the archive" -' - ), - 'package-validate' => array( - 'summary' => 'Validate Package Consistency', - 'function' => 'doPackageValidate', - 'shortcut' => 'pv', - 'options' => array(), - 'doc' => ' -', - ), - 'cvsdiff' => array( - 'summary' => 'Run a "cvs diff" for all files in a package', - 'function' => 'doCvsDiff', - 'shortcut' => 'cd', - 'options' => array( - 'quiet' => array( - 'shortopt' => 'q', - 'doc' => 'Be quiet', - ), - 'reallyquiet' => array( - 'shortopt' => 'Q', - 'doc' => 'Be really quiet', - ), - 'date' => array( - 'shortopt' => 'D', - 'doc' => 'Diff against revision of DATE', - 'arg' => 'DATE', - ), - 'release' => array( - 'shortopt' => 'R', - 'doc' => 'Diff against tag for package release REL', - 'arg' => 'REL', - ), - 'revision' => array( - 'shortopt' => 'r', - 'doc' => 'Diff against revision REV', - 'arg' => 'REV', - ), - 'context' => array( - 'shortopt' => 'c', - 'doc' => 'Generate context diff', - ), - 'unified' => array( - 'shortopt' => 'u', - 'doc' => 'Generate unified diff', - ), - 'ignore-case' => array( - 'shortopt' => 'i', - 'doc' => 'Ignore case, consider upper- and lower-case letters equivalent', - ), - 'ignore-whitespace' => array( - 'shortopt' => 'b', - 'doc' => 'Ignore changes in amount of white space', - ), - 'ignore-blank-lines' => array( - 'shortopt' => 'B', - 'doc' => 'Ignore changes that insert or delete blank lines', - ), - 'brief' => array( - 'doc' => 'Report only whether the files differ, no details', - ), - 'dry-run' => array( - 'shortopt' => 'n', - 'doc' => 'Don\'t do anything, just pretend', - ), - ), - 'doc' => ' -Compares all the files in a package. Without any options, this -command will compare the current code with the last checked-in code. -Using the -r or -R option you may compare the current code with that -of a specific release. -', - ), - 'svntag' => array( - 'summary' => 'Set SVN Release Tag', - 'function' => 'doSvnTag', - 'shortcut' => 'sv', - 'options' => array( - 'quiet' => array( - 'shortopt' => 'q', - 'doc' => 'Be quiet', - ), - 'slide' => array( - 'shortopt' => 'F', - 'doc' => 'Move (slide) tag if it exists', - ), - 'delete' => array( - 'shortopt' => 'd', - 'doc' => 'Remove tag', - ), - 'dry-run' => array( - 'shortopt' => 'n', - 'doc' => 'Don\'t do anything, just pretend', - ), - ), - 'doc' => ' [files...] - Sets a SVN tag on all files in a package. Use this command after you have - packaged a distribution tarball with the "package" command to tag what - revisions of what files were in that release. If need to fix something - after running svntag once, but before the tarball is released to the public, - use the "slide" option to move the release tag. - - to include files (such as a second package.xml, or tests not included in the - release), pass them as additional parameters. - ', - ), - 'cvstag' => array( - 'summary' => 'Set CVS Release Tag', - 'function' => 'doCvsTag', - 'shortcut' => 'ct', - 'options' => array( - 'quiet' => array( - 'shortopt' => 'q', - 'doc' => 'Be quiet', - ), - 'reallyquiet' => array( - 'shortopt' => 'Q', - 'doc' => 'Be really quiet', - ), - 'slide' => array( - 'shortopt' => 'F', - 'doc' => 'Move (slide) tag if it exists', - ), - 'delete' => array( - 'shortopt' => 'd', - 'doc' => 'Remove tag', - ), - 'dry-run' => array( - 'shortopt' => 'n', - 'doc' => 'Don\'t do anything, just pretend', - ), - ), - 'doc' => ' [files...] -Sets a CVS tag on all files in a package. Use this command after you have -packaged a distribution tarball with the "package" command to tag what -revisions of what files were in that release. If need to fix something -after running cvstag once, but before the tarball is released to the public, -use the "slide" option to move the release tag. - -to include files (such as a second package.xml, or tests not included in the -release), pass them as additional parameters. -', - ), - 'package-dependencies' => array( - 'summary' => 'Show package dependencies', - 'function' => 'doPackageDependencies', - 'shortcut' => 'pd', - 'options' => array(), - 'doc' => ' or or -List all dependencies the package has. -Can take a tgz / tar file, package.xml or a package name of an installed package.' - ), - 'sign' => array( - 'summary' => 'Sign a package distribution file', - 'function' => 'doSign', - 'shortcut' => 'si', - 'options' => array( - 'verbose' => array( - 'shortopt' => 'v', - 'doc' => 'Display GnuPG output', - ), - ), - 'doc' => ' -Signs a package distribution (.tar or .tgz) file with GnuPG.', - ), - 'makerpm' => array( - 'summary' => 'Builds an RPM spec file from a PEAR package', - 'function' => 'doMakeRPM', - 'shortcut' => 'rpm', - 'options' => array( - 'spec-template' => array( - 'shortopt' => 't', - 'arg' => 'FILE', - 'doc' => 'Use FILE as RPM spec file template' - ), - 'rpm-pkgname' => array( - 'shortopt' => 'p', - 'arg' => 'FORMAT', - 'doc' => 'Use FORMAT as format string for RPM package name, %s is replaced -by the PEAR package name, defaults to "PEAR::%s".', - ), - ), - 'doc' => ' - -Creates an RPM .spec file for wrapping a PEAR package inside an RPM -package. Intended to be used from the SPECS directory, with the PEAR -package tarball in the SOURCES directory: - -$ pear makerpm ../SOURCES/Net_Socket-1.0.tgz -Wrote RPM spec file PEAR::Net_Geo-1.0.spec -$ rpm -bb PEAR::Net_Socket-1.0.spec -... -Wrote: /usr/src/redhat/RPMS/i386/PEAR::Net_Socket-1.0-1.i386.rpm -', - ), - 'convert' => array( - 'summary' => 'Convert a package.xml 1.0 to package.xml 2.0 format', - 'function' => 'doConvert', - 'shortcut' => 'c2', - 'options' => array( - 'flat' => array( - 'shortopt' => 'f', - 'doc' => 'do not beautify the filelist.', - ), - ), - 'doc' => '[descfile] [descfile2] -Converts a package.xml in 1.0 format into a package.xml -in 2.0 format. The new file will be named package2.xml by default, -and package.xml will be used as the old file by default. -This is not the most intelligent conversion, and should only be -used for automated conversion or learning the format. -' - ), - ); - - var $output; - - /** - * PEAR_Command_Package constructor. - * - * @access public - */ - function PEAR_Command_Package(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - function _displayValidationResults($err, $warn, $strict = false) - { - foreach ($err as $e) { - $this->output .= "Error: $e\n"; - } - foreach ($warn as $w) { - $this->output .= "Warning: $w\n"; - } - $this->output .= sprintf('Validation: %d error(s), %d warning(s)'."\n", - sizeof($err), sizeof($warn)); - if ($strict && count($err) > 0) { - $this->output .= "Fix these errors and try again."; - return false; - } - return true; - } - - function &getPackager() - { - if (!class_exists('PEAR_Packager')) { - require_once 'PEAR/Packager.php'; - } - $a = &new PEAR_Packager; - return $a; - } - - function &getPackageFile($config, $debug = false) - { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - $a = &new PEAR_PackageFile($config, $debug); - $common = new PEAR_Common; - $common->ui = $this->ui; - $a->setLogger($common); - return $a; - } - - function doPackage($command, $options, $params) - { - $this->output = ''; - $pkginfofile = isset($params[0]) ? $params[0] : 'package.xml'; - $pkg2 = isset($params[1]) ? $params[1] : null; - if (!$pkg2 && !isset($params[0]) && file_exists('package2.xml')) { - $pkg2 = 'package2.xml'; - } - - $packager = &$this->getPackager(); - $compress = empty($options['nocompress']) ? true : false; - $result = $packager->package($pkginfofile, $compress, $pkg2); - if (PEAR::isError($result)) { - return $this->raiseError($result); - } - - // Don't want output, only the package file name just created - if (isset($options['showname'])) { - $this->output = $result; - } - - if ($this->output) { - $this->ui->outputData($this->output, $command); - } - - return true; - } - - function doPackageValidate($command, $options, $params) - { - $this->output = ''; - if (count($params) < 1) { - $params[0] = 'package.xml'; - } - - $obj = &$this->getPackageFile($this->config, $this->_debug); - $obj->rawReturn(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = $obj->fromTgzFile($params[0], PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - $info = $obj->fromPackageFile($params[0], PEAR_VALIDATE_NORMAL); - } else { - $archive = $info->getArchiveFile(); - $tar = &new Archive_Tar($archive); - $tar->extract(dirname($info->getPackageFile())); - $info->setPackageFile(dirname($info->getPackageFile()) . DIRECTORY_SEPARATOR . - $info->getPackage() . '-' . $info->getVersion() . DIRECTORY_SEPARATOR . - basename($info->getPackageFile())); - } - - PEAR::staticPopErrorHandling(); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - - $valid = false; - if ($info->getPackagexmlVersion() == '2.0') { - if ($valid = $info->validate(PEAR_VALIDATE_NORMAL)) { - $info->flattenFileList(); - $valid = $info->validate(PEAR_VALIDATE_PACKAGING); - } - } else { - $valid = $info->validate(PEAR_VALIDATE_PACKAGING); - } - - $err = $warn = array(); - if ($errors = $info->getValidationWarnings()) { - foreach ($errors as $error) { - if ($error['level'] == 'warning') { - $warn[] = $error['message']; - } else { - $err[] = $error['message']; - } - } - } - - $this->_displayValidationResults($err, $warn); - $this->ui->outputData($this->output, $command); - return true; - } - - function doSvnTag($command, $options, $params) - { - $this->output = ''; - $_cmd = $command; - if (count($params) < 1) { - $help = $this->getHelp($command); - return $this->raiseError("$command: missing parameter: $help[0]"); - } - - $packageFile = realpath($params[0]); - $dir = dirname($packageFile); - $dir = substr($dir, strrpos($dir, DIRECTORY_SEPARATOR) + 1); - $obj = &$this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromAnyFile($packageFile, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - - $err = $warn = array(); - if (!$info->validate()) { - foreach ($info->getValidationWarnings() as $error) { - if ($error['level'] == 'warning') { - $warn[] = $error['message']; - } else { - $err[] = $error['message']; - } - } - } - - if (!$this->_displayValidationResults($err, $warn, true)) { - $this->ui->outputData($this->output, $command); - return $this->raiseError('SVN tag failed'); - } - - $version = $info->getVersion(); - $package = $info->getName(); - $svntag = "$package-$version"; - - if (isset($options['delete'])) { - return $this->_svnRemoveTag($version, $package, $svntag, $packageFile, $options); - } - - $path = $this->_svnFindPath($packageFile); - - // Check if there are any modified files - $fp = popen('svn st --xml ' . dirname($packageFile), "r"); - $out = ''; - while ($line = fgets($fp, 1024)) { - $out .= rtrim($line)."\n"; - } - pclose($fp); - - if (!isset($options['quiet']) && strpos($out, 'item="modified"')) { - $params = array(array( - 'name' => 'modified', - 'type' => 'yesno', - 'default' => 'no', - 'prompt' => 'You have files in your SVN checkout (' . $path['from'] . ') that have been modified but not commited, do you still want to tag ' . $version . '?', - )); - $answers = $this->ui->confirmDialog($params); - - if (!in_array($answers['modified'], array('y', 'yes', 'on', '1'))) { - return true; - } - } - - if (isset($options['slide'])) { - $this->_svnRemoveTag($version, $package, $svntag, $packageFile, $options); - } - - // Check if tag already exists - $releaseTag = $path['local']['base'] . 'tags' . DIRECTORY_SEPARATOR . $svntag; - $existsCommand = 'svn ls ' . $path['base'] . 'tags/'; - - $fp = popen($existsCommand, "r"); - $out = ''; - while ($line = fgets($fp, 1024)) { - $out .= rtrim($line)."\n"; - } - pclose($fp); - - if (in_array($svntag . DIRECTORY_SEPARATOR, explode("\n", $out))) { - $this->ui->outputData($this->output, $command); - return $this->raiseError('SVN tag ' . $svntag . ' for ' . $package . ' already exists.'); - } elseif (file_exists($path['local']['base'] . 'tags') === false) { - return $this->raiseError('Can not locate the tags directory at ' . $path['local']['base'] . 'tags'); - } elseif (is_writeable($path['local']['base'] . 'tags') === false) { - return $this->raiseError('Can not write to the tag directory at ' . $path['local']['base'] . 'tags'); - } else { - $makeCommand = 'svn mkdir ' . $releaseTag; - $this->output .= "+ $makeCommand\n"; - if (empty($options['dry-run'])) { - // We need to create the tag dir. - $fp = popen($makeCommand, "r"); - $out = ''; - while ($line = fgets($fp, 1024)) { - $out .= rtrim($line)."\n"; - } - pclose($fp); - $this->output .= "$out\n"; - } - } - - $command = 'svn'; - if (isset($options['quiet'])) { - $command .= ' -q'; - } - - $command .= ' copy --parents '; - - $dir = dirname($packageFile); - $dir = substr($dir, strrpos($dir, DIRECTORY_SEPARATOR) + 1); - $files = array_keys($info->getFilelist()); - if (!in_array(basename($packageFile), $files)) { - $files[] = basename($packageFile); - } - - array_shift($params); - if (count($params)) { - // add in additional files to be tagged (package files and such) - $files = array_merge($files, $params); - } - - $commands = array(); - foreach ($files as $file) { - if (!file_exists($file)) { - $file = $dir . DIRECTORY_SEPARATOR . $file; - } - $commands[] = $command . ' ' . escapeshellarg($file) . ' ' . - escapeshellarg($releaseTag . DIRECTORY_SEPARATOR . $file); - } - - $this->output .= implode("\n", $commands) . "\n"; - if (empty($options['dry-run'])) { - foreach ($commands as $command) { - $fp = popen($command, "r"); - while ($line = fgets($fp, 1024)) { - $this->output .= rtrim($line)."\n"; - } - pclose($fp); - } - } - - $command = 'svn ci -m "Tagging the ' . $version . ' release" ' . $releaseTag . "\n"; - $this->output .= "+ $command\n"; - if (empty($options['dry-run'])) { - $fp = popen($command, "r"); - while ($line = fgets($fp, 1024)) { - $this->output .= rtrim($line)."\n"; - } - pclose($fp); - } - - $this->ui->outputData($this->output, $_cmd); - return true; - } - - function _svnFindPath($file) - { - $xml = ''; - $command = "svn info --xml $file"; - $fp = popen($command, "r"); - while ($line = fgets($fp, 1024)) { - $xml .= rtrim($line)."\n"; - } - pclose($fp); - $url_tag = strpos($xml, ''); - $url = substr($xml, $url_tag + 5, strpos($xml, '', $url_tag + 5) - ($url_tag + 5)); - - $path = array(); - $path['from'] = substr($url, 0, strrpos($url, '/')); - $path['base'] = substr($path['from'], 0, strrpos($path['from'], '/') + 1); - - // Figure out the local paths - see http://pear.php.net/bugs/17463 - $pos = strpos($file, DIRECTORY_SEPARATOR . 'trunk' . DIRECTORY_SEPARATOR); - if ($pos === false) { - $pos = strpos($file, DIRECTORY_SEPARATOR . 'branches' . DIRECTORY_SEPARATOR); - } - $path['local']['base'] = substr($file, 0, $pos + 1); - - return $path; - } - - function _svnRemoveTag($version, $package, $tag, $packageFile, $options) - { - $command = 'svn'; - - if (isset($options['quiet'])) { - $command .= ' -q'; - } - - $command .= ' remove'; - $command .= ' -m "Removing tag for the ' . $version . ' release."'; - - $path = $this->_svnFindPath($packageFile); - $command .= ' ' . $path['base'] . 'tags/' . $tag; - - - if ($this->config->get('verbose') > 1) { - $this->output .= "+ $command\n"; - } - - $this->output .= "+ $command\n"; - if (empty($options['dry-run'])) { - $fp = popen($command, "r"); - while ($line = fgets($fp, 1024)) { - $this->output .= rtrim($line)."\n"; - } - pclose($fp); - } - - $this->ui->outputData($this->output, $command); - return true; - } - - function doCvsTag($command, $options, $params) - { - $this->output = ''; - $_cmd = $command; - if (count($params) < 1) { - $help = $this->getHelp($command); - return $this->raiseError("$command: missing parameter: $help[0]"); - } - - $packageFile = realpath($params[0]); - $obj = &$this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromAnyFile($packageFile, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - - $err = $warn = array(); - if (!$info->validate()) { - foreach ($info->getValidationWarnings() as $error) { - if ($error['level'] == 'warning') { - $warn[] = $error['message']; - } else { - $err[] = $error['message']; - } - } - } - - if (!$this->_displayValidationResults($err, $warn, true)) { - $this->ui->outputData($this->output, $command); - return $this->raiseError('CVS tag failed'); - } - - $version = $info->getVersion(); - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $version); - $cvstag = "RELEASE_$cvsversion"; - $files = array_keys($info->getFilelist()); - $command = 'cvs'; - if (isset($options['quiet'])) { - $command .= ' -q'; - } - - if (isset($options['reallyquiet'])) { - $command .= ' -Q'; - } - - $command .= ' tag'; - if (isset($options['slide'])) { - $command .= ' -F'; - } - - if (isset($options['delete'])) { - $command .= ' -d'; - } - - $command .= ' ' . $cvstag . ' ' . escapeshellarg($params[0]); - array_shift($params); - if (count($params)) { - // add in additional files to be tagged - $files = array_merge($files, $params); - } - - $dir = dirname($packageFile); - $dir = substr($dir, strrpos($dir, '/') + 1); - foreach ($files as $file) { - if (!file_exists($file)) { - $file = $dir . DIRECTORY_SEPARATOR . $file; - } - $command .= ' ' . escapeshellarg($file); - } - - if ($this->config->get('verbose') > 1) { - $this->output .= "+ $command\n"; - } - - $this->output .= "+ $command\n"; - if (empty($options['dry-run'])) { - $fp = popen($command, "r"); - while ($line = fgets($fp, 1024)) { - $this->output .= rtrim($line)."\n"; - } - pclose($fp); - } - - $this->ui->outputData($this->output, $_cmd); - return true; - } - - function doCvsDiff($command, $options, $params) - { - $this->output = ''; - if (sizeof($params) < 1) { - $help = $this->getHelp($command); - return $this->raiseError("$command: missing parameter: $help[0]"); - } - - $file = realpath($params[0]); - $obj = &$this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromAnyFile($file, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - - $err = $warn = array(); - if (!$info->validate()) { - foreach ($info->getValidationWarnings() as $error) { - if ($error['level'] == 'warning') { - $warn[] = $error['message']; - } else { - $err[] = $error['message']; - } - } - } - - if (!$this->_displayValidationResults($err, $warn, true)) { - $this->ui->outputData($this->output, $command); - return $this->raiseError('CVS diff failed'); - } - - $info1 = $info->getFilelist(); - $files = $info1; - $cmd = "cvs"; - if (isset($options['quiet'])) { - $cmd .= ' -q'; - unset($options['quiet']); - } - - if (isset($options['reallyquiet'])) { - $cmd .= ' -Q'; - unset($options['reallyquiet']); - } - - if (isset($options['release'])) { - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $options['release']); - $cvstag = "RELEASE_$cvsversion"; - $options['revision'] = $cvstag; - unset($options['release']); - } - - $execute = true; - if (isset($options['dry-run'])) { - $execute = false; - unset($options['dry-run']); - } - - $cmd .= ' diff'; - // the rest of the options are passed right on to "cvs diff" - foreach ($options as $option => $optarg) { - $arg = $short = false; - if (isset($this->commands[$command]['options'][$option])) { - $arg = $this->commands[$command]['options'][$option]['arg']; - $short = $this->commands[$command]['options'][$option]['shortopt']; - } - $cmd .= $short ? " -$short" : " --$option"; - if ($arg && $optarg) { - $cmd .= ($short ? '' : '=') . escapeshellarg($optarg); - } - } - - foreach ($files as $file) { - $cmd .= ' ' . escapeshellarg($file['name']); - } - - if ($this->config->get('verbose') > 1) { - $this->output .= "+ $cmd\n"; - } - - if ($execute) { - $fp = popen($cmd, "r"); - while ($line = fgets($fp, 1024)) { - $this->output .= rtrim($line)."\n"; - } - pclose($fp); - } - - $this->ui->outputData($this->output, $command); - return true; - } - - function doPackageDependencies($command, $options, $params) - { - // $params[0] -> the PEAR package to list its information - if (count($params) !== 1) { - return $this->raiseError("bad parameter(s), try \"help $command\""); - } - - $obj = &$this->getPackageFile($this->config, $this->_debug); - if (is_file($params[0]) || strpos($params[0], '.xml') > 0) { - $info = $obj->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - } else { - $reg = $this->config->getRegistry(); - $info = $obj->fromArray($reg->packageInfo($params[0])); - } - - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - - $deps = $info->getDeps(); - if (is_array($deps)) { - if ($info->getPackagexmlVersion() == '1.0') { - $data = array( - 'caption' => 'Dependencies for pear/' . $info->getPackage(), - 'border' => true, - 'headline' => array("Required?", "Type", "Name", "Relation", "Version"), - ); - - foreach ($deps as $d) { - if (isset($d['optional'])) { - if ($d['optional'] == 'yes') { - $req = 'No'; - } else { - $req = 'Yes'; - } - } else { - $req = 'Yes'; - } - - if (isset($this->_deps_rel_trans[$d['rel']])) { - $rel = $this->_deps_rel_trans[$d['rel']]; - } else { - $rel = $d['rel']; - } - - if (isset($this->_deps_type_trans[$d['type']])) { - $type = ucfirst($this->_deps_type_trans[$d['type']]); - } else { - $type = $d['type']; - } - - if (isset($d['name'])) { - $name = $d['name']; - } else { - $name = ''; - } - - if (isset($d['version'])) { - $version = $d['version']; - } else { - $version = ''; - } - - $data['data'][] = array($req, $type, $name, $rel, $version); - } - } else { // package.xml 2.0 dependencies display - require_once 'PEAR/Dependency2.php'; - $deps = $info->getDependencies(); - $reg = &$this->config->getRegistry(); - if (is_array($deps)) { - $d = new PEAR_Dependency2($this->config, array(), ''); - $data = array( - 'caption' => 'Dependencies for ' . $info->getPackage(), - 'border' => true, - 'headline' => array("Required?", "Type", "Name", 'Versioning', 'Group'), - ); - foreach ($deps as $type => $subd) { - $req = ($type == 'required') ? 'Yes' : 'No'; - if ($type == 'group') { - $group = $subd['attribs']['name']; - } else { - $group = ''; - } - - if (!isset($subd[0])) { - $subd = array($subd); - } - - foreach ($subd as $groupa) { - foreach ($groupa as $deptype => $depinfo) { - if ($deptype == 'attribs') { - continue; - } - - if ($deptype == 'pearinstaller') { - $deptype = 'pear Installer'; - } - - if (!isset($depinfo[0])) { - $depinfo = array($depinfo); - } - - foreach ($depinfo as $inf) { - $name = ''; - if (isset($inf['channel'])) { - $alias = $reg->channelAlias($inf['channel']); - if (!$alias) { - $alias = '(channel?) ' .$inf['channel']; - } - $name = $alias . '/'; - - } - if (isset($inf['name'])) { - $name .= $inf['name']; - } elseif (isset($inf['pattern'])) { - $name .= $inf['pattern']; - } else { - $name .= ''; - } - - if (isset($inf['uri'])) { - $name .= ' [' . $inf['uri'] . ']'; - } - - if (isset($inf['conflicts'])) { - $ver = 'conflicts'; - } else { - $ver = $d->_getExtraString($inf); - } - - $data['data'][] = array($req, ucfirst($deptype), $name, - $ver, $group); - } - } - } - } - } - } - - $this->ui->outputData($data, $command); - return true; - } - - // Fallback - $this->ui->outputData("This package does not have any dependencies.", $command); - } - - function doSign($command, $options, $params) - { - // should move most of this code into PEAR_Packager - // so it'll be easy to implement "pear package --sign" - if (count($params) !== 1) { - return $this->raiseError("bad parameter(s), try \"help $command\""); - } - - require_once 'System.php'; - require_once 'Archive/Tar.php'; - - if (!file_exists($params[0])) { - return $this->raiseError("file does not exist: $params[0]"); - } - - $obj = $this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromTgzFile($params[0], PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - - $tar = new Archive_Tar($params[0]); - - $tmpdir = $this->config->get('temp_dir'); - $tmpdir = System::mktemp(' -t "' . $tmpdir . '" -d pearsign'); - if (!$tar->extractList('package2.xml package.xml package.sig', $tmpdir)) { - return $this->raiseError("failed to extract tar file"); - } - - if (file_exists("$tmpdir/package.sig")) { - return $this->raiseError("package already signed"); - } - - $packagexml = 'package.xml'; - if (file_exists("$tmpdir/package2.xml")) { - $packagexml = 'package2.xml'; - } - - if (file_exists("$tmpdir/package.sig")) { - unlink("$tmpdir/package.sig"); - } - - if (!file_exists("$tmpdir/$packagexml")) { - return $this->raiseError("Extracted file $tmpdir/$packagexml not found."); - } - - $input = $this->ui->userDialog($command, - array('GnuPG Passphrase'), - array('password')); - if (!isset($input[0])) { - //use empty passphrase - $input[0] = ''; - } - - $devnull = (isset($options['verbose'])) ? '' : ' 2>/dev/null'; - $gpg = popen("gpg --batch --passphrase-fd 0 --armor --detach-sign --output $tmpdir/package.sig $tmpdir/$packagexml" . $devnull, "w"); - if (!$gpg) { - return $this->raiseError("gpg command failed"); - } - - fwrite($gpg, "$input[0]\n"); - if (pclose($gpg) || !file_exists("$tmpdir/package.sig")) { - return $this->raiseError("gpg sign failed"); - } - - if (!$tar->addModify("$tmpdir/package.sig", '', $tmpdir)) { - return $this->raiseError('failed adding signature to file'); - } - - $this->ui->outputData("Package signed.", $command); - return true; - } - - /** - * For unit testing purposes - */ - function &getInstaller(&$ui) - { - if (!class_exists('PEAR_Installer')) { - require_once 'PEAR/Installer.php'; - } - $a = &new PEAR_Installer($ui); - return $a; - } - - /** - * For unit testing purposes - */ - function &getCommandPackaging(&$ui, &$config) - { - if (!class_exists('PEAR_Command_Packaging')) { - if ($fp = @fopen('PEAR/Command/Packaging.php', 'r', true)) { - fclose($fp); - include_once 'PEAR/Command/Packaging.php'; - } - } - - if (class_exists('PEAR_Command_Packaging')) { - $a = &new PEAR_Command_Packaging($ui, $config); - } else { - $a = null; - } - - return $a; - } - - function doMakeRPM($command, $options, $params) - { - - // Check to see if PEAR_Command_Packaging is installed, and - // transparently switch to use the "make-rpm-spec" command from it - // instead, if it does. Otherwise, continue to use the old version - // of "makerpm" supplied with this package (PEAR). - $packaging_cmd = $this->getCommandPackaging($this->ui, $this->config); - if ($packaging_cmd !== null) { - $this->ui->outputData('PEAR_Command_Packaging is installed; using '. - 'newer "make-rpm-spec" command instead'); - return $packaging_cmd->run('make-rpm-spec', $options, $params); - } - - $this->ui->outputData('WARNING: "pear makerpm" is no longer available; an '. - 'improved version is available via "pear make-rpm-spec", which '. - 'is available by installing PEAR_Command_Packaging'); - return true; - } - - function doConvert($command, $options, $params) - { - $packagexml = isset($params[0]) ? $params[0] : 'package.xml'; - $newpackagexml = isset($params[1]) ? $params[1] : dirname($packagexml) . - DIRECTORY_SEPARATOR . 'package2.xml'; - $pkg = &$this->getPackageFile($this->config, $this->_debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pf = $pkg->fromPackageFile($packagexml, PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf)) { - if (is_array($pf->getUserInfo())) { - foreach ($pf->getUserInfo() as $warning) { - $this->ui->outputData($warning['message']); - } - } - return $this->raiseError($pf); - } - - if (is_a($pf, 'PEAR_PackageFile_v2')) { - $this->ui->outputData($packagexml . ' is already a package.xml version 2.0'); - return true; - } - - $gen = &$pf->getDefaultGenerator(); - $newpf = &$gen->toV2(); - $newpf->setPackagefile($newpackagexml); - $gen = &$newpf->getDefaultGenerator(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $state = (isset($options['flat']) ? PEAR_VALIDATE_PACKAGING : PEAR_VALIDATE_NORMAL); - $saved = $gen->toPackageFile(dirname($newpackagexml), $state, basename($newpackagexml)); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($saved)) { - if (is_array($saved->getUserInfo())) { - foreach ($saved->getUserInfo() as $warning) { - $this->ui->outputData($warning['message']); - } - } - - $this->ui->outputData($saved->getMessage()); - return true; - } - - $this->ui->outputData('Wrote new version 2.0 package.xml to "' . $saved . '"'); - return true; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Package.xml b/3rdparty/PEAR/Command/Package.xml deleted file mode 100644 index d1aff9d48dea7d9cd725afebf93698fa310f3f98..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Package.xml +++ /dev/null @@ -1,237 +0,0 @@ - - - Build Package - doPackage - p - - - Z - Do not gzip the package file - - - n - Print the name of the packaged file. - - - [descfile] [descfile2] -Creates a PEAR package from its description file (usually called -package.xml). If a second packagefile is passed in, then -the packager will check to make sure that one is a package.xml -version 1.0, and the other is a package.xml version 2.0. The -package.xml version 1.0 will be saved as "package.xml" in the archive, -and the other as "package2.xml" in the archive" - - - - Validate Package Consistency - doPackageValidate - pv - - - - - - Run a "cvs diff" for all files in a package - doCvsDiff - cd - - - q - Be quiet - - - Q - Be really quiet - - - D - Diff against revision of DATE - DATE - - - R - Diff against tag for package release REL - REL - - - r - Diff against revision REV - REV - - - c - Generate context diff - - - u - Generate unified diff - - - i - Ignore case, consider upper- and lower-case letters equivalent - - - b - Ignore changes in amount of white space - - - B - Ignore changes that insert or delete blank lines - - - - Report only whether the files differ, no details - - - n - Don't do anything, just pretend - - - <package.xml> -Compares all the files in a package. Without any options, this -command will compare the current code with the last checked-in code. -Using the -r or -R option you may compare the current code with that -of a specific release. - - - - Set SVN Release Tag - doSvnTag - sv - - - q - Be quiet - - - F - Move (slide) tag if it exists - - - d - Remove tag - - - n - Don't do anything, just pretend - - - <package.xml> [files...] - Sets a SVN tag on all files in a package. Use this command after you have - packaged a distribution tarball with the "package" command to tag what - revisions of what files were in that release. If need to fix something - after running svntag once, but before the tarball is released to the public, - use the "slide" option to move the release tag. - - to include files (such as a second package.xml, or tests not included in the - release), pass them as additional parameters. - - - - Set CVS Release Tag - doCvsTag - ct - - - q - Be quiet - - - Q - Be really quiet - - - F - Move (slide) tag if it exists - - - d - Remove tag - - - n - Don't do anything, just pretend - - - <package.xml> [files...] -Sets a CVS tag on all files in a package. Use this command after you have -packaged a distribution tarball with the "package" command to tag what -revisions of what files were in that release. If need to fix something -after running cvstag once, but before the tarball is released to the public, -use the "slide" option to move the release tag. - -to include files (such as a second package.xml, or tests not included in the -release), pass them as additional parameters. - - - - Show package dependencies - doPackageDependencies - pd - - <package-file> or <package.xml> or <install-package-name> -List all dependencies the package has. -Can take a tgz / tar file, package.xml or a package name of an installed package. - - - Sign a package distribution file - doSign - si - - - v - Display GnuPG output - - - <package-file> -Signs a package distribution (.tar or .tgz) file with GnuPG. - - - Builds an RPM spec file from a PEAR package - doMakeRPM - rpm - - - t - Use FILE as RPM spec file template - FILE - - - p - Use FORMAT as format string for RPM package name, %s is replaced -by the PEAR package name, defaults to "PEAR::%s". - FORMAT - - - <package-file> - -Creates an RPM .spec file for wrapping a PEAR package inside an RPM -package. Intended to be used from the SPECS directory, with the PEAR -package tarball in the SOURCES directory: - -$ pear makerpm ../SOURCES/Net_Socket-1.0.tgz -Wrote RPM spec file PEAR::Net_Geo-1.0.spec -$ rpm -bb PEAR::Net_Socket-1.0.spec -... -Wrote: /usr/src/redhat/RPMS/i386/PEAR::Net_Socket-1.0-1.i386.rpm - - - - Convert a package.xml 1.0 to package.xml 2.0 format - doConvert - c2 - - - f - do not beautify the filelist. - - - [descfile] [descfile2] -Converts a package.xml in 1.0 format into a package.xml -in 2.0 format. The new file will be named package2.xml by default, -and package.xml will be used as the old file by default. -This is not the most intelligent conversion, and should only be -used for automated conversion or learning the format. - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Pickle.php b/3rdparty/PEAR/Command/Pickle.php deleted file mode 100644 index 87aa25ea30c5f2f4d08c6204974a65882787b7b3..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Pickle.php +++ /dev/null @@ -1,421 +0,0 @@ - - * @copyright 2005-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Pickle.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 2005-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.1 - */ - -class PEAR_Command_Pickle extends PEAR_Command_Common -{ - var $commands = array( - 'pickle' => array( - 'summary' => 'Build PECL Package', - 'function' => 'doPackage', - 'shortcut' => 'pi', - 'options' => array( - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'Do not gzip the package file' - ), - 'showname' => array( - 'shortopt' => 'n', - 'doc' => 'Print the name of the packaged file.', - ), - ), - 'doc' => '[descfile] -Creates a PECL package from its package2.xml file. - -An automatic conversion will be made to a package.xml 1.0 and written out to -disk in the current directory as "package.xml". Note that -only simple package.xml 2.0 will be converted. package.xml 2.0 with: - - - dependency types other than required/optional PECL package/ext/php/pearinstaller - - more than one extsrcrelease or zendextsrcrelease - - zendextbinrelease, extbinrelease, phprelease, or bundle release type - - dependency groups - - ignore tags in release filelist - - tasks other than replace - - custom roles - -will cause pickle to fail, and output an error message. If your package2.xml -uses any of these features, you are best off using PEAR_PackageFileManager to -generate both package.xml. -' - ), - ); - - /** - * PEAR_Command_Package constructor. - * - * @access public - */ - function PEAR_Command_Pickle(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - /** - * For unit-testing ease - * - * @return PEAR_Packager - */ - function &getPackager() - { - if (!class_exists('PEAR_Packager')) { - require_once 'PEAR/Packager.php'; - } - - $a = &new PEAR_Packager; - return $a; - } - - /** - * For unit-testing ease - * - * @param PEAR_Config $config - * @param bool $debug - * @param string|null $tmpdir - * @return PEAR_PackageFile - */ - function &getPackageFile($config, $debug = false) - { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - - $a = &new PEAR_PackageFile($config, $debug); - $common = new PEAR_Common; - $common->ui = $this->ui; - $a->setLogger($common); - return $a; - } - - function doPackage($command, $options, $params) - { - $this->output = ''; - $pkginfofile = isset($params[0]) ? $params[0] : 'package2.xml'; - $packager = &$this->getPackager(); - if (PEAR::isError($err = $this->_convertPackage($pkginfofile))) { - return $err; - } - - $compress = empty($options['nocompress']) ? true : false; - $result = $packager->package($pkginfofile, $compress, 'package.xml'); - if (PEAR::isError($result)) { - return $this->raiseError($result); - } - - // Don't want output, only the package file name just created - if (isset($options['showname'])) { - $this->ui->outputData($result, $command); - } - - return true; - } - - function _convertPackage($packagexml) - { - $pkg = &$this->getPackageFile($this->config); - $pf2 = &$pkg->fromPackageFile($packagexml, PEAR_VALIDATE_NORMAL); - if (!is_a($pf2, 'PEAR_PackageFile_v2')) { - return $this->raiseError('Cannot process "' . - $packagexml . '", is not a package.xml 2.0'); - } - - require_once 'PEAR/PackageFile/v1.php'; - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->config); - if ($pf2->getPackageType() != 'extsrc' && $pf2->getPackageType() != 'zendextsrc') { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", is not an extension source package. Using a PEAR_PackageFileManager-based ' . - 'script is an option'); - } - - if (is_array($pf2->getUsesRole())) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains custom roles. Using a PEAR_PackageFileManager-based script or ' . - 'the convert command is an option'); - } - - if (is_array($pf2->getUsesTask())) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains custom tasks. Using a PEAR_PackageFileManager-based script or ' . - 'the convert command is an option'); - } - - $deps = $pf2->getDependencies(); - if (isset($deps['group'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains dependency groups. Using a PEAR_PackageFileManager-based script ' . - 'or the convert command is an option'); - } - - if (isset($deps['required']['subpackage']) || - isset($deps['optional']['subpackage'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains subpackage dependencies. Using a PEAR_PackageFileManager-based '. - 'script is an option'); - } - - if (isset($deps['required']['os'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains os dependencies. Using a PEAR_PackageFileManager-based '. - 'script is an option'); - } - - if (isset($deps['required']['arch'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains arch dependencies. Using a PEAR_PackageFileManager-based '. - 'script is an option'); - } - - $pf->setPackage($pf2->getPackage()); - $pf->setSummary($pf2->getSummary()); - $pf->setDescription($pf2->getDescription()); - foreach ($pf2->getMaintainers() as $maintainer) { - $pf->addMaintainer($maintainer['role'], $maintainer['handle'], - $maintainer['name'], $maintainer['email']); - } - - $pf->setVersion($pf2->getVersion()); - $pf->setDate($pf2->getDate()); - $pf->setLicense($pf2->getLicense()); - $pf->setState($pf2->getState()); - $pf->setNotes($pf2->getNotes()); - $pf->addPhpDep($deps['required']['php']['min'], 'ge'); - if (isset($deps['required']['php']['max'])) { - $pf->addPhpDep($deps['required']['php']['max'], 'le'); - } - - if (isset($deps['required']['package'])) { - if (!isset($deps['required']['package'][0])) { - $deps['required']['package'] = array($deps['required']['package']); - } - - foreach ($deps['required']['package'] as $dep) { - if (!isset($dep['channel'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains uri-based dependency on a package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - - if ($dep['channel'] != 'pear.php.net' - && $dep['channel'] != 'pecl.php.net' - && $dep['channel'] != 'doc.php.net') { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains dependency on a non-standard channel package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - - if (isset($dep['conflicts'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains conflicts dependency. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - - if (isset($dep['min'])) { - $pf->addPackageDep($dep['name'], $dep['min'], 'ge'); - } - - if (isset($dep['max'])) { - $pf->addPackageDep($dep['name'], $dep['max'], 'le'); - } - } - } - - if (isset($deps['required']['extension'])) { - if (!isset($deps['required']['extension'][0])) { - $deps['required']['extension'] = array($deps['required']['extension']); - } - - foreach ($deps['required']['extension'] as $dep) { - if (isset($dep['conflicts'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains conflicts dependency. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - - if (isset($dep['min'])) { - $pf->addExtensionDep($dep['name'], $dep['min'], 'ge'); - } - - if (isset($dep['max'])) { - $pf->addExtensionDep($dep['name'], $dep['max'], 'le'); - } - } - } - - if (isset($deps['optional']['package'])) { - if (!isset($deps['optional']['package'][0])) { - $deps['optional']['package'] = array($deps['optional']['package']); - } - - foreach ($deps['optional']['package'] as $dep) { - if (!isset($dep['channel'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains uri-based dependency on a package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - - if ($dep['channel'] != 'pear.php.net' - && $dep['channel'] != 'pecl.php.net' - && $dep['channel'] != 'doc.php.net') { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains dependency on a non-standard channel package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - - if (isset($dep['min'])) { - $pf->addPackageDep($dep['name'], $dep['min'], 'ge', 'yes'); - } - - if (isset($dep['max'])) { - $pf->addPackageDep($dep['name'], $dep['max'], 'le', 'yes'); - } - } - } - - if (isset($deps['optional']['extension'])) { - if (!isset($deps['optional']['extension'][0])) { - $deps['optional']['extension'] = array($deps['optional']['extension']); - } - - foreach ($deps['optional']['extension'] as $dep) { - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - - if (isset($dep['min'])) { - $pf->addExtensionDep($dep['name'], $dep['min'], 'ge', 'yes'); - } - - if (isset($dep['max'])) { - $pf->addExtensionDep($dep['name'], $dep['max'], 'le', 'yes'); - } - } - } - - $contents = $pf2->getContents(); - $release = $pf2->getReleases(); - if (isset($releases[0])) { - return $this->raiseError('Cannot safely process "' . $packagexml . '" contains ' - . 'multiple extsrcrelease/zendextsrcrelease tags. Using a PEAR_PackageFileManager-based script ' . - 'or the convert command is an option'); - } - - if ($configoptions = $pf2->getConfigureOptions()) { - foreach ($configoptions as $option) { - $default = isset($option['default']) ? $option['default'] : false; - $pf->addConfigureOption($option['name'], $option['prompt'], $default); - } - } - - if (isset($release['filelist']['ignore'])) { - return $this->raiseError('Cannot safely process "' . $packagexml . '" contains ' - . 'ignore tags. Using a PEAR_PackageFileManager-based script or the convert' . - ' command is an option'); - } - - if (isset($release['filelist']['install']) && - !isset($release['filelist']['install'][0])) { - $release['filelist']['install'] = array($release['filelist']['install']); - } - - if (isset($contents['dir']['attribs']['baseinstalldir'])) { - $baseinstalldir = $contents['dir']['attribs']['baseinstalldir']; - } else { - $baseinstalldir = false; - } - - if (!isset($contents['dir']['file'][0])) { - $contents['dir']['file'] = array($contents['dir']['file']); - } - - foreach ($contents['dir']['file'] as $file) { - if ($baseinstalldir && !isset($file['attribs']['baseinstalldir'])) { - $file['attribs']['baseinstalldir'] = $baseinstalldir; - } - - $processFile = $file; - unset($processFile['attribs']); - if (count($processFile)) { - foreach ($processFile as $name => $task) { - if ($name != $pf2->getTasksNs() . ':replace') { - return $this->raiseError('Cannot safely process "' . $packagexml . - '" contains tasks other than replace. Using a ' . - 'PEAR_PackageFileManager-based script is an option.'); - } - $file['attribs']['replace'][] = $task; - } - } - - if (!in_array($file['attribs']['role'], PEAR_Common::getFileRoles())) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains custom roles. Using a PEAR_PackageFileManager-based script ' . - 'or the convert command is an option'); - } - - if (isset($release['filelist']['install'])) { - foreach ($release['filelist']['install'] as $installas) { - if ($installas['attribs']['name'] == $file['attribs']['name']) { - $file['attribs']['install-as'] = $installas['attribs']['as']; - } - } - } - - $pf->addFile('/', $file['attribs']['name'], $file['attribs']); - } - - if ($pf2->getChangeLog()) { - $this->ui->outputData('WARNING: changelog is not translated to package.xml ' . - '1.0, use PEAR_PackageFileManager-based script if you need changelog-' . - 'translation for package.xml 1.0'); - } - - $gen = &$pf->getDefaultGenerator(); - $gen->toPackageFile('.'); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Pickle.xml b/3rdparty/PEAR/Command/Pickle.xml deleted file mode 100644 index 721ecea995eba916c775717cfd2c9b9b2fe24b84..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Pickle.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Build PECL Package - doPackage - pi - - - Z - Do not gzip the package file - - - n - Print the name of the packaged file. - - - [descfile] -Creates a PECL package from its package2.xml file. - -An automatic conversion will be made to a package.xml 1.0 and written out to -disk in the current directory as "package.xml". Note that -only simple package.xml 2.0 will be converted. package.xml 2.0 with: - - - dependency types other than required/optional PECL package/ext/php/pearinstaller - - more than one extsrcrelease or zendextsrcrelease - - zendextbinrelease, extbinrelease, phprelease, or bundle release type - - dependency groups - - ignore tags in release filelist - - tasks other than replace - - custom roles - -will cause pickle to fail, and output an error message. If your package2.xml -uses any of these features, you are best off using PEAR_PackageFileManager to -generate both package.xml. - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Registry.php b/3rdparty/PEAR/Command/Registry.php deleted file mode 100644 index 4304db5ddf578f7c420ccb188fa1bbf2e377ef2c..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Registry.php +++ /dev/null @@ -1,1145 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Registry.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for registry manipulation - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Registry extends PEAR_Command_Common -{ - var $commands = array( - 'list' => array( - 'summary' => 'List Installed Packages In The Default Channel', - 'function' => 'doList', - 'shortcut' => 'l', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'list installed packages from this channel', - 'arg' => 'CHAN', - ), - 'allchannels' => array( - 'shortopt' => 'a', - 'doc' => 'list installed packages from all channels', - ), - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => ' -If invoked without parameters, this command lists the PEAR packages -installed in your php_dir ({config php_dir}). With a parameter, it -lists the files in a package. -', - ), - 'list-files' => array( - 'summary' => 'List Files In Installed Package', - 'function' => 'doFileList', - 'shortcut' => 'fl', - 'options' => array(), - 'doc' => ' -List the files in an installed package. -' - ), - 'shell-test' => array( - 'summary' => 'Shell Script Test', - 'function' => 'doShellTest', - 'shortcut' => 'st', - 'options' => array(), - 'doc' => ' [[relation] version] -Tests if a package is installed in the system. Will exit(1) if it is not. - The version comparison operator. One of: - <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne - The version to compare with -'), - 'info' => array( - 'summary' => 'Display information about a package', - 'function' => 'doInfo', - 'shortcut' => 'in', - 'options' => array(), - 'doc' => ' -Displays information about a package. The package argument may be a -local package file, an URL to a package file, or the name of an -installed package.' - ) - ); - - /** - * PEAR_Command_Registry constructor. - * - * @access public - */ - function PEAR_Command_Registry(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - function _sortinfo($a, $b) - { - $apackage = isset($a['package']) ? $a['package'] : $a['name']; - $bpackage = isset($b['package']) ? $b['package'] : $b['name']; - return strcmp($apackage, $bpackage); - } - - function doList($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $channelinfo = isset($options['channelinfo']); - if (isset($options['allchannels']) && !$channelinfo) { - return $this->doListAll($command, array(), $params); - } - - if (isset($options['allchannels']) && $channelinfo) { - // allchannels with $channelinfo - unset($options['allchannels']); - $channels = $reg->getChannels(); - $errors = array(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - foreach ($channels as $channel) { - $options['channel'] = $channel->getName(); - $ret = $this->doList($command, $options, $params); - - if (PEAR::isError($ret)) { - $errors[] = $ret; - } - } - - PEAR::staticPopErrorHandling(); - if (count($errors)) { - // for now, only give first error - return PEAR::raiseError($errors[0]); - } - - return true; - } - - if (count($params) === 1) { - return $this->doFileList($command, $options, $params); - } - - if (isset($options['channel'])) { - if (!$reg->channelExists($options['channel'])) { - return $this->raiseError('Channel "' . $options['channel'] .'" does not exist'); - } - - $channel = $reg->channelName($options['channel']); - } else { - $channel = $this->config->get('default_channel'); - } - - $installed = $reg->packageInfo(null, null, $channel); - usort($installed, array(&$this, '_sortinfo')); - - $data = array( - 'caption' => 'Installed packages, channel ' . - $channel . ':', - 'border' => true, - 'headline' => array('Package', 'Version', 'State'), - 'channel' => $channel, - ); - if ($channelinfo) { - $data['headline'] = array('Channel', 'Package', 'Version', 'State'); - } - - if (count($installed) && !isset($data['data'])) { - $data['data'] = array(); - } - - foreach ($installed as $package) { - $pobj = $reg->getPackage(isset($package['package']) ? - $package['package'] : $package['name'], $channel); - if ($channelinfo) { - $packageinfo = array($pobj->getChannel(), $pobj->getPackage(), $pobj->getVersion(), - $pobj->getState() ? $pobj->getState() : null); - } else { - $packageinfo = array($pobj->getPackage(), $pobj->getVersion(), - $pobj->getState() ? $pobj->getState() : null); - } - $data['data'][] = $packageinfo; - } - - if (count($installed) === 0) { - if (!$channelinfo) { - $data = '(no packages installed from channel ' . $channel . ')'; - } else { - $data = array( - 'caption' => 'Installed packages, channel ' . - $channel . ':', - 'border' => true, - 'channel' => $channel, - 'data' => array(array('(no packages installed)')), - ); - } - } - - $this->ui->outputData($data, $command); - return true; - } - - function doListAll($command, $options, $params) - { - // This duplicate code is deprecated over - // list --channelinfo, which gives identical - // output for list and list --allchannels. - $reg = &$this->config->getRegistry(); - $installed = $reg->packageInfo(null, null, null); - foreach ($installed as $channel => $packages) { - usort($packages, array($this, '_sortinfo')); - $data = array( - 'caption' => 'Installed packages, channel ' . $channel . ':', - 'border' => true, - 'headline' => array('Package', 'Version', 'State'), - 'channel' => $channel - ); - - foreach ($packages as $package) { - $p = isset($package['package']) ? $package['package'] : $package['name']; - $pobj = $reg->getPackage($p, $channel); - $data['data'][] = array($pobj->getPackage(), $pobj->getVersion(), - $pobj->getState() ? $pobj->getState() : null); - } - - // Adds a blank line after each section - $data['data'][] = array(); - - if (count($packages) === 0) { - $data = array( - 'caption' => 'Installed packages, channel ' . $channel . ':', - 'border' => true, - 'data' => array(array('(no packages installed)'), array()), - 'channel' => $channel - ); - } - $this->ui->outputData($data, $command); - } - return true; - } - - function doFileList($command, $options, $params) - { - if (count($params) !== 1) { - return $this->raiseError('list-files expects 1 parameter'); - } - - $reg = &$this->config->getRegistry(); - $fp = false; - if (!is_dir($params[0]) && (file_exists($params[0]) || $fp = @fopen($params[0], 'r'))) { - if ($fp) { - fclose($fp); - } - - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - - $pkg = &new PEAR_PackageFile($this->config, $this->_debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = &$pkg->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - $headings = array('Package File', 'Install Path'); - $installed = false; - } else { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $parsed = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($parsed)) { - return $this->raiseError($parsed); - } - - $info = &$reg->getPackage($parsed['package'], $parsed['channel']); - $headings = array('Type', 'Install Path'); - $installed = true; - } - - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - - if ($info === null) { - return $this->raiseError("`$params[0]' not installed"); - } - - $list = ($info->getPackagexmlVersion() == '1.0' || $installed) ? - $info->getFilelist() : $info->getContents(); - if ($installed) { - $caption = 'Installed Files For ' . $params[0]; - } else { - $caption = 'Contents of ' . basename($params[0]); - } - - $data = array( - 'caption' => $caption, - 'border' => true, - 'headline' => $headings); - if ($info->getPackagexmlVersion() == '1.0' || $installed) { - foreach ($list as $file => $att) { - if ($installed) { - if (empty($att['installed_as'])) { - continue; - } - $data['data'][] = array($att['role'], $att['installed_as']); - } else { - if (isset($att['baseinstalldir']) && !in_array($att['role'], - array('test', 'data', 'doc'))) { - $dest = $att['baseinstalldir'] . DIRECTORY_SEPARATOR . - $file; - } else { - $dest = $file; - } - switch ($att['role']) { - case 'test': - case 'data': - case 'doc': - $role = $att['role']; - if ($role == 'test') { - $role .= 's'; - } - $dest = $this->config->get($role . '_dir') . DIRECTORY_SEPARATOR . - $info->getPackage() . DIRECTORY_SEPARATOR . $dest; - break; - case 'php': - default: - $dest = $this->config->get('php_dir') . DIRECTORY_SEPARATOR . - $dest; - } - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - $dest = preg_replace(array('!\\\\+!', '!/!', "!$ds2+!"), - array(DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR), - $dest); - $file = preg_replace('!/+!', '/', $file); - $data['data'][] = array($file, $dest); - } - } - } else { // package.xml 2.0, not installed - if (!isset($list['dir']['file'][0])) { - $list['dir']['file'] = array($list['dir']['file']); - } - - foreach ($list['dir']['file'] as $att) { - $att = $att['attribs']; - $file = $att['name']; - $role = &PEAR_Installer_Role::factory($info, $att['role'], $this->config); - $role->setup($this, $info, $att, $file); - if (!$role->isInstallable()) { - $dest = '(not installable)'; - } else { - $dest = $role->processInstallation($info, $att, $file, ''); - if (PEAR::isError($dest)) { - $dest = '(Unknown role "' . $att['role'] . ')'; - } else { - list(,, $dest) = $dest; - } - } - $data['data'][] = array($file, $dest); - } - } - - $this->ui->outputData($data, $command); - return true; - } - - function doShellTest($command, $options, $params) - { - if (count($params) < 1) { - return PEAR::raiseError('ERROR, usage: pear shell-test packagename [[relation] version]'); - } - - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $reg = &$this->config->getRegistry(); - $info = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - if (PEAR::isError($info)) { - exit(1); // invalid package name - } - - $package = $info['package']; - $channel = $info['channel']; - // "pear shell-test Foo" - if (!$reg->packageExists($package, $channel)) { - if ($channel == 'pecl.php.net') { - if ($reg->packageExists($package, 'pear.php.net')) { - $channel = 'pear.php.net'; // magically change channels for extensions - } - } - } - - if (count($params) === 1) { - if (!$reg->packageExists($package, $channel)) { - exit(1); - } - // "pear shell-test Foo 1.0" - } elseif (count($params) === 2) { - $v = $reg->packageInfo($package, 'version', $channel); - if (!$v || !version_compare("$v", "{$params[1]}", "ge")) { - exit(1); - } - // "pear shell-test Foo ge 1.0" - } elseif (count($params) === 3) { - $v = $reg->packageInfo($package, 'version', $channel); - if (!$v || !version_compare("$v", "{$params[2]}", $params[1])) { - exit(1); - } - } else { - PEAR::staticPopErrorHandling(); - $this->raiseError("$command: expects 1 to 3 parameters"); - exit(1); - } - } - - function doInfo($command, $options, $params) - { - if (count($params) !== 1) { - return $this->raiseError('pear info expects 1 parameter'); - } - - $info = $fp = false; - $reg = &$this->config->getRegistry(); - if (is_file($params[0]) && !is_dir($params[0]) && - (file_exists($params[0]) || $fp = @fopen($params[0], 'r')) - ) { - if ($fp) { - fclose($fp); - } - - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - - $pkg = &new PEAR_PackageFile($this->config, $this->_debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $obj = &$pkg->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($obj)) { - $uinfo = $obj->getUserInfo(); - if (is_array($uinfo)) { - foreach ($uinfo as $message) { - if (is_array($message)) { - $message = $message['message']; - } - $this->ui->outputData($message); - } - } - - return $this->raiseError($obj); - } - - if ($obj->getPackagexmlVersion() != '1.0') { - return $this->_doInfo2($command, $options, $params, $obj, false); - } - - $info = $obj->toArray(); - } else { - $parsed = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - if (PEAR::isError($parsed)) { - return $this->raiseError($parsed); - } - - $package = $parsed['package']; - $channel = $parsed['channel']; - $info = $reg->packageInfo($package, null, $channel); - if (isset($info['old'])) { - $obj = $reg->getPackage($package, $channel); - return $this->_doInfo2($command, $options, $params, $obj, true); - } - } - - if (PEAR::isError($info)) { - return $info; - } - - if (empty($info)) { - $this->raiseError("No information found for `$params[0]'"); - return; - } - - unset($info['filelist']); - unset($info['dirtree']); - unset($info['changelog']); - if (isset($info['xsdversion'])) { - $info['package.xml version'] = $info['xsdversion']; - unset($info['xsdversion']); - } - - if (isset($info['packagerversion'])) { - $info['packaged with PEAR version'] = $info['packagerversion']; - unset($info['packagerversion']); - } - - $keys = array_keys($info); - $longtext = array('description', 'summary'); - foreach ($keys as $key) { - if (is_array($info[$key])) { - switch ($key) { - case 'maintainers': { - $i = 0; - $mstr = ''; - foreach ($info[$key] as $m) { - if ($i++ > 0) { - $mstr .= "\n"; - } - $mstr .= $m['name'] . " <"; - if (isset($m['email'])) { - $mstr .= $m['email']; - } else { - $mstr .= $m['handle'] . '@php.net'; - } - $mstr .= "> ($m[role])"; - } - $info[$key] = $mstr; - break; - } - case 'release_deps': { - $i = 0; - $dstr = ''; - foreach ($info[$key] as $d) { - if (isset($this->_deps_rel_trans[$d['rel']])) { - $rel = $this->_deps_rel_trans[$d['rel']]; - } else { - $rel = $d['rel']; - } - if (isset($this->_deps_type_trans[$d['type']])) { - $type = ucfirst($this->_deps_type_trans[$d['type']]); - } else { - $type = $d['type']; - } - if (isset($d['name'])) { - $name = $d['name'] . ' '; - } else { - $name = ''; - } - if (isset($d['version'])) { - $version = $d['version'] . ' '; - } else { - $version = ''; - } - if (isset($d['optional']) && $d['optional'] == 'yes') { - $optional = ' (optional)'; - } else { - $optional = ''; - } - $dstr .= "$type $name$rel $version$optional\n"; - } - $info[$key] = $dstr; - break; - } - case 'provides' : { - $debug = $this->config->get('verbose'); - if ($debug < 2) { - $pstr = 'Classes: '; - } else { - $pstr = ''; - } - $i = 0; - foreach ($info[$key] as $p) { - if ($debug < 2 && $p['type'] != "class") { - continue; - } - // Only print classes when verbosity mode is < 2 - if ($debug < 2) { - if ($i++ > 0) { - $pstr .= ", "; - } - $pstr .= $p['name']; - } else { - if ($i++ > 0) { - $pstr .= "\n"; - } - $pstr .= ucfirst($p['type']) . " " . $p['name']; - if (isset($p['explicit']) && $p['explicit'] == 1) { - $pstr .= " (explicit)"; - } - } - } - $info[$key] = $pstr; - break; - } - case 'configure_options' : { - foreach ($info[$key] as $i => $p) { - $info[$key][$i] = array_map(null, array_keys($p), array_values($p)); - $info[$key][$i] = array_map(create_function('$a', - 'return join(" = ",$a);'), $info[$key][$i]); - $info[$key][$i] = implode(', ', $info[$key][$i]); - } - $info[$key] = implode("\n", $info[$key]); - break; - } - default: { - $info[$key] = implode(", ", $info[$key]); - break; - } - } - } - - if ($key == '_lastmodified') { - $hdate = date('Y-m-d', $info[$key]); - unset($info[$key]); - $info['Last Modified'] = $hdate; - } elseif ($key == '_lastversion') { - $info['Previous Installed Version'] = $info[$key] ? $info[$key] : '- None -'; - unset($info[$key]); - } else { - $info[$key] = trim($info[$key]); - if (in_array($key, $longtext)) { - $info[$key] = preg_replace('/ +/', ' ', $info[$key]); - } - } - } - - $caption = 'About ' . $info['package'] . '-' . $info['version']; - $data = array( - 'caption' => $caption, - 'border' => true); - foreach ($info as $key => $value) { - $key = ucwords(trim(str_replace('_', ' ', $key))); - $data['data'][] = array($key, $value); - } - $data['raw'] = $info; - - $this->ui->outputData($data, 'package-info'); - } - - /** - * @access private - */ - function _doInfo2($command, $options, $params, &$obj, $installed) - { - $reg = &$this->config->getRegistry(); - $caption = 'About ' . $obj->getChannel() . '/' .$obj->getPackage() . '-' . - $obj->getVersion(); - $data = array( - 'caption' => $caption, - 'border' => true); - switch ($obj->getPackageType()) { - case 'php' : - $release = 'PEAR-style PHP-based Package'; - break; - case 'extsrc' : - $release = 'PECL-style PHP extension (source code)'; - break; - case 'zendextsrc' : - $release = 'PECL-style Zend extension (source code)'; - break; - case 'extbin' : - $release = 'PECL-style PHP extension (binary)'; - break; - case 'zendextbin' : - $release = 'PECL-style Zend extension (binary)'; - break; - case 'bundle' : - $release = 'Package bundle (collection of packages)'; - break; - } - $extends = $obj->getExtends(); - $extends = $extends ? - $obj->getPackage() . ' (extends ' . $extends . ')' : $obj->getPackage(); - if ($src = $obj->getSourcePackage()) { - $extends .= ' (source package ' . $src['channel'] . '/' . $src['package'] . ')'; - } - - $info = array( - 'Release Type' => $release, - 'Name' => $extends, - 'Channel' => $obj->getChannel(), - 'Summary' => preg_replace('/ +/', ' ', $obj->getSummary()), - 'Description' => preg_replace('/ +/', ' ', $obj->getDescription()), - ); - $info['Maintainers'] = ''; - foreach (array('lead', 'developer', 'contributor', 'helper') as $role) { - $leads = $obj->{"get{$role}s"}(); - if (!$leads) { - continue; - } - - if (isset($leads['active'])) { - $leads = array($leads); - } - - foreach ($leads as $lead) { - if (!empty($info['Maintainers'])) { - $info['Maintainers'] .= "\n"; - } - - $active = $lead['active'] == 'no' ? ', inactive' : ''; - $info['Maintainers'] .= $lead['name'] . ' <'; - $info['Maintainers'] .= $lead['email'] . "> ($role$active)"; - } - } - - $info['Release Date'] = $obj->getDate(); - if ($time = $obj->getTime()) { - $info['Release Date'] .= ' ' . $time; - } - - $info['Release Version'] = $obj->getVersion() . ' (' . $obj->getState() . ')'; - $info['API Version'] = $obj->getVersion('api') . ' (' . $obj->getState('api') . ')'; - $info['License'] = $obj->getLicense(); - $uri = $obj->getLicenseLocation(); - if ($uri) { - if (isset($uri['uri'])) { - $info['License'] .= ' (' . $uri['uri'] . ')'; - } else { - $extra = $obj->getInstalledLocation($info['filesource']); - if ($extra) { - $info['License'] .= ' (' . $uri['filesource'] . ')'; - } - } - } - - $info['Release Notes'] = $obj->getNotes(); - if ($compat = $obj->getCompatible()) { - if (!isset($compat[0])) { - $compat = array($compat); - } - - $info['Compatible with'] = ''; - foreach ($compat as $package) { - $info['Compatible with'] .= $package['channel'] . '/' . $package['name'] . - "\nVersions >= " . $package['min'] . ', <= ' . $package['max']; - if (isset($package['exclude'])) { - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - $info['Not Compatible with'] .= $package['channel'] . '/' . - $package['name'] . "\nVersions " . $package['exclude']; - } - } - } - - $usesrole = $obj->getUsesrole(); - if ($usesrole) { - if (!isset($usesrole[0])) { - $usesrole = array($usesrole); - } - - foreach ($usesrole as $roledata) { - if (isset($info['Uses Custom Roles'])) { - $info['Uses Custom Roles'] .= "\n"; - } else { - $info['Uses Custom Roles'] = ''; - } - - if (isset($roledata['package'])) { - $rolepackage = $reg->parsedPackageNameToString($roledata, true); - } else { - $rolepackage = $roledata['uri']; - } - $info['Uses Custom Roles'] .= $roledata['role'] . ' (' . $rolepackage . ')'; - } - } - - $usestask = $obj->getUsestask(); - if ($usestask) { - if (!isset($usestask[0])) { - $usestask = array($usestask); - } - - foreach ($usestask as $taskdata) { - if (isset($info['Uses Custom Tasks'])) { - $info['Uses Custom Tasks'] .= "\n"; - } else { - $info['Uses Custom Tasks'] = ''; - } - - if (isset($taskdata['package'])) { - $taskpackage = $reg->parsedPackageNameToString($taskdata, true); - } else { - $taskpackage = $taskdata['uri']; - } - $info['Uses Custom Tasks'] .= $taskdata['task'] . ' (' . $taskpackage . ')'; - } - } - - $deps = $obj->getDependencies(); - $info['Required Dependencies'] = 'PHP version ' . $deps['required']['php']['min']; - if (isset($deps['required']['php']['max'])) { - $info['Required Dependencies'] .= '-' . $deps['required']['php']['max'] . "\n"; - } else { - $info['Required Dependencies'] .= "\n"; - } - - if (isset($deps['required']['php']['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - - if (is_array($deps['required']['php']['exclude'])) { - $deps['required']['php']['exclude'] = - implode(', ', $deps['required']['php']['exclude']); - } - $info['Not Compatible with'] .= "PHP versions\n " . - $deps['required']['php']['exclude']; - } - - $info['Required Dependencies'] .= 'PEAR installer version'; - if (isset($deps['required']['pearinstaller']['max'])) { - $info['Required Dependencies'] .= 's ' . - $deps['required']['pearinstaller']['min'] . '-' . - $deps['required']['pearinstaller']['max']; - } else { - $info['Required Dependencies'] .= ' ' . - $deps['required']['pearinstaller']['min'] . ' or newer'; - } - - if (isset($deps['required']['pearinstaller']['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - - if (is_array($deps['required']['pearinstaller']['exclude'])) { - $deps['required']['pearinstaller']['exclude'] = - implode(', ', $deps['required']['pearinstaller']['exclude']); - } - $info['Not Compatible with'] .= "PEAR installer\n Versions " . - $deps['required']['pearinstaller']['exclude']; - } - - foreach (array('Package', 'Extension') as $type) { - $index = strtolower($type); - if (isset($deps['required'][$index])) { - if (isset($deps['required'][$index]['name'])) { - $deps['required'][$index] = array($deps['required'][$index]); - } - - foreach ($deps['required'][$index] as $package) { - if (isset($package['conflicts'])) { - $infoindex = 'Not Compatible with'; - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - } else { - $infoindex = 'Required Dependencies'; - $info[$infoindex] .= "\n"; - } - - if ($index == 'extension') { - $name = $package['name']; - } else { - if (isset($package['channel'])) { - $name = $package['channel'] . '/' . $package['name']; - } else { - $name = '__uri/' . $package['name'] . ' (static URI)'; - } - } - - $info[$infoindex] .= "$type $name"; - if (isset($package['uri'])) { - $info[$infoindex] .= "\n Download URI: $package[uri]"; - continue; - } - - if (isset($package['max']) && isset($package['min'])) { - $info[$infoindex] .= " \n Versions " . - $package['min'] . '-' . $package['max']; - } elseif (isset($package['min'])) { - $info[$infoindex] .= " \n Version " . - $package['min'] . ' or newer'; - } elseif (isset($package['max'])) { - $info[$infoindex] .= " \n Version " . - $package['max'] . ' or older'; - } - - if (isset($package['recommended'])) { - $info[$infoindex] .= "\n Recommended version: $package[recommended]"; - } - - if (isset($package['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - - $package['package'] = $package['name']; // for parsedPackageNameToString - if (isset($package['conflicts'])) { - $info['Not Compatible with'] .= '=> except '; - } - $info['Not Compatible with'] .= 'Package ' . - $reg->parsedPackageNameToString($package, true); - $info['Not Compatible with'] .= "\n Versions " . $package['exclude']; - } - } - } - } - - if (isset($deps['required']['os'])) { - if (isset($deps['required']['os']['name'])) { - $dep['required']['os']['name'] = array($dep['required']['os']['name']); - } - - foreach ($dep['required']['os'] as $os) { - if (isset($os['conflicts']) && $os['conflicts'] == 'yes') { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - $info['Not Compatible with'] .= "$os[name] Operating System"; - } else { - $info['Required Dependencies'] .= "\n"; - $info['Required Dependencies'] .= "$os[name] Operating System"; - } - } - } - - if (isset($deps['required']['arch'])) { - if (isset($deps['required']['arch']['pattern'])) { - $dep['required']['arch']['pattern'] = array($dep['required']['os']['pattern']); - } - - foreach ($dep['required']['arch'] as $os) { - if (isset($os['conflicts']) && $os['conflicts'] == 'yes') { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - $info['Not Compatible with'] .= "OS/Arch matching pattern '/$os[pattern]/'"; - } else { - $info['Required Dependencies'] .= "\n"; - $info['Required Dependencies'] .= "OS/Arch matching pattern '/$os[pattern]/'"; - } - } - } - - if (isset($deps['optional'])) { - foreach (array('Package', 'Extension') as $type) { - $index = strtolower($type); - if (isset($deps['optional'][$index])) { - if (isset($deps['optional'][$index]['name'])) { - $deps['optional'][$index] = array($deps['optional'][$index]); - } - - foreach ($deps['optional'][$index] as $package) { - if (isset($package['conflicts']) && $package['conflicts'] == 'yes') { - $infoindex = 'Not Compatible with'; - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - } else { - $infoindex = 'Optional Dependencies'; - if (!isset($info['Optional Dependencies'])) { - $info['Optional Dependencies'] = ''; - } else { - $info['Optional Dependencies'] .= "\n"; - } - } - - if ($index == 'extension') { - $name = $package['name']; - } else { - if (isset($package['channel'])) { - $name = $package['channel'] . '/' . $package['name']; - } else { - $name = '__uri/' . $package['name'] . ' (static URI)'; - } - } - - $info[$infoindex] .= "$type $name"; - if (isset($package['uri'])) { - $info[$infoindex] .= "\n Download URI: $package[uri]"; - continue; - } - - if ($infoindex == 'Not Compatible with') { - // conflicts is only used to say that all versions conflict - continue; - } - - if (isset($package['max']) && isset($package['min'])) { - $info[$infoindex] .= " \n Versions " . - $package['min'] . '-' . $package['max']; - } elseif (isset($package['min'])) { - $info[$infoindex] .= " \n Version " . - $package['min'] . ' or newer'; - } elseif (isset($package['max'])) { - $info[$infoindex] .= " \n Version " . - $package['min'] . ' or older'; - } - - if (isset($package['recommended'])) { - $info[$infoindex] .= "\n Recommended version: $package[recommended]"; - } - - if (isset($package['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - - $info['Not Compatible with'] .= "Package $package\n Versions " . - $package['exclude']; - } - } - } - } - } - - if (isset($deps['group'])) { - if (!isset($deps['group'][0])) { - $deps['group'] = array($deps['group']); - } - - foreach ($deps['group'] as $group) { - $info['Dependency Group ' . $group['attribs']['name']] = $group['attribs']['hint']; - $groupindex = $group['attribs']['name'] . ' Contents'; - $info[$groupindex] = ''; - foreach (array('Package', 'Extension') as $type) { - $index = strtolower($type); - if (isset($group[$index])) { - if (isset($group[$index]['name'])) { - $group[$index] = array($group[$index]); - } - - foreach ($group[$index] as $package) { - if (!empty($info[$groupindex])) { - $info[$groupindex] .= "\n"; - } - - if ($index == 'extension') { - $name = $package['name']; - } else { - if (isset($package['channel'])) { - $name = $package['channel'] . '/' . $package['name']; - } else { - $name = '__uri/' . $package['name'] . ' (static URI)'; - } - } - - if (isset($package['uri'])) { - if (isset($package['conflicts']) && $package['conflicts'] == 'yes') { - $info[$groupindex] .= "Not Compatible with $type $name"; - } else { - $info[$groupindex] .= "$type $name"; - } - - $info[$groupindex] .= "\n Download URI: $package[uri]"; - continue; - } - - if (isset($package['conflicts']) && $package['conflicts'] == 'yes') { - $info[$groupindex] .= "Not Compatible with $type $name"; - continue; - } - - $info[$groupindex] .= "$type $name"; - if (isset($package['max']) && isset($package['min'])) { - $info[$groupindex] .= " \n Versions " . - $package['min'] . '-' . $package['max']; - } elseif (isset($package['min'])) { - $info[$groupindex] .= " \n Version " . - $package['min'] . ' or newer'; - } elseif (isset($package['max'])) { - $info[$groupindex] .= " \n Version " . - $package['min'] . ' or older'; - } - - if (isset($package['recommended'])) { - $info[$groupindex] .= "\n Recommended version: $package[recommended]"; - } - - if (isset($package['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info[$groupindex] .= "Not Compatible with\n"; - } - - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - $info[$groupindex] .= " Package $package\n Versions " . - $package['exclude']; - } - } - } - } - } - } - - if ($obj->getPackageType() == 'bundle') { - $info['Bundled Packages'] = ''; - foreach ($obj->getBundledPackages() as $package) { - if (!empty($info['Bundled Packages'])) { - $info['Bundled Packages'] .= "\n"; - } - - if (isset($package['uri'])) { - $info['Bundled Packages'] .= '__uri/' . $package['name']; - $info['Bundled Packages'] .= "\n (URI: $package[uri]"; - } else { - $info['Bundled Packages'] .= $package['channel'] . '/' . $package['name']; - } - } - } - - $info['package.xml version'] = '2.0'; - if ($installed) { - if ($obj->getLastModified()) { - $info['Last Modified'] = date('Y-m-d H:i', $obj->getLastModified()); - } - - $v = $obj->getLastInstalledVersion(); - $info['Previous Installed Version'] = $v ? $v : '- None -'; - } - - foreach ($info as $key => $value) { - $data['data'][] = array($key, $value); - } - - $data['raw'] = $obj->getArray(); // no validation needed - $this->ui->outputData($data, 'package-info'); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Registry.xml b/3rdparty/PEAR/Command/Registry.xml deleted file mode 100644 index 9f4e2149672f9ed2b0b39947292108ac81444d1b..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Registry.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - List Installed Packages In The Default Channel - doList - l - - - c - list installed packages from this channel - CHAN - - - a - list installed packages from all channels - - - i - output fully channel-aware data, even on failure - - - <package> -If invoked without parameters, this command lists the PEAR packages -installed in your php_dir ({config php_dir}). With a parameter, it -lists the files in a package. - - - - List Files In Installed Package - doFileList - fl - - <package> -List the files in an installed package. - - - - Shell Script Test - doShellTest - st - - <package> [[relation] version] -Tests if a package is installed in the system. Will exit(1) if it is not. - <relation> The version comparison operator. One of: - <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne - <version> The version to compare with - - - - Display information about a package - doInfo - in - - <package> -Displays information about a package. The package argument may be a -local package file, an URL to a package file, or the name of an -installed package. - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Remote.php b/3rdparty/PEAR/Command/Remote.php deleted file mode 100644 index 74478d83c7a7394a977a0159d61c653bd343b754..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Remote.php +++ /dev/null @@ -1,810 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Remote.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; -require_once 'PEAR/REST.php'; - -/** - * PEAR commands for remote server querying - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Remote extends PEAR_Command_Common -{ - var $commands = array( - 'remote-info' => array( - 'summary' => 'Information About Remote Packages', - 'function' => 'doRemoteInfo', - 'shortcut' => 'ri', - 'options' => array(), - 'doc' => ' -Get details on a package from the server.', - ), - 'list-upgrades' => array( - 'summary' => 'List Available Upgrades', - 'function' => 'doListUpgrades', - 'shortcut' => 'lu', - 'options' => array( - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => '[preferred_state] -List releases on the server of packages you have installed where -a newer version is available with the same release state (stable etc.) -or the state passed as the second parameter.' - ), - 'remote-list' => array( - 'summary' => 'List Remote Packages', - 'function' => 'doRemoteList', - 'shortcut' => 'rl', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ) - ), - 'doc' => ' -Lists the packages available on the configured server along with the -latest stable release of each package.', - ), - 'search' => array( - 'summary' => 'Search remote package database', - 'function' => 'doSearch', - 'shortcut' => 'sp', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ), - 'allchannels' => array( - 'shortopt' => 'a', - 'doc' => 'search packages from all known channels', - ), - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => '[packagename] [packageinfo] -Lists all packages which match the search parameters. The first -parameter is a fragment of a packagename. The default channel -will be used unless explicitly overridden. The second parameter -will be used to match any portion of the summary/description', - ), - 'list-all' => array( - 'summary' => 'List All Packages', - 'function' => 'doListAll', - 'shortcut' => 'la', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ), - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => ' -Lists the packages available on the configured server along with the -latest stable release of each package.', - ), - 'download' => array( - 'summary' => 'Download Package', - 'function' => 'doDownload', - 'shortcut' => 'd', - 'options' => array( - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'download an uncompressed (.tar) file', - ), - ), - 'doc' => '... -Download package tarballs. The files will be named as suggested by the -server, for example if you download the DB package and the latest stable -version of DB is 1.6.5, the downloaded file will be DB-1.6.5.tgz.', - ), - 'clear-cache' => array( - 'summary' => 'Clear Web Services Cache', - 'function' => 'doClearCache', - 'shortcut' => 'cc', - 'options' => array(), - 'doc' => ' -Clear the REST cache. See also the cache_ttl configuration -parameter. -', - ), - ); - - /** - * PEAR_Command_Remote constructor. - * - * @access public - */ - function PEAR_Command_Remote(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - function _checkChannelForStatus($channel, $chan) - { - if (PEAR::isError($chan)) { - $this->raiseError($chan); - } - if (!is_a($chan, 'PEAR_ChannelFile')) { - return $this->raiseError('Internal corruption error: invalid channel "' . - $channel . '"'); - } - $rest = new PEAR_REST($this->config); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $mirror = $this->config->get('preferred_mirror', null, - $channel); - $a = $rest->downloadHttp('http://' . $channel . - '/channel.xml', $chan->lastModified()); - PEAR::staticPopErrorHandling(); - if (!PEAR::isError($a) && $a) { - $this->ui->outputData('WARNING: channel "' . $channel . '" has ' . - 'updated its protocols, use "' . PEAR_RUNTYPE . ' channel-update ' . $channel . - '" to update'); - } - } - - function doRemoteInfo($command, $options, $params) - { - if (sizeof($params) != 1) { - return $this->raiseError("$command expects one param: the remote package name"); - } - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - $package = $params[0]; - $parsed = $reg->parsePackageName($package, $channel); - if (PEAR::isError($parsed)) { - return $this->raiseError('Invalid package name "' . $package . '"'); - } - - $channel = $parsed['channel']; - $this->config->set('default_channel', $channel); - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - - $mirror = $this->config->get('preferred_mirror'); - if ($chan->supportsREST($mirror) && $base = $chan->getBaseURL('REST1.0', $mirror)) { - $rest = &$this->config->getREST('1.0', array()); - $info = $rest->packageInfo($base, $parsed['package'], $channel); - } - - if (!isset($info)) { - return $this->raiseError('No supported protocol was found'); - } - - if (PEAR::isError($info)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError($info); - } - - if (!isset($info['name'])) { - return $this->raiseError('No remote package "' . $package . '" was found'); - } - - $installed = $reg->packageInfo($info['name'], null, $channel); - $info['installed'] = $installed['version'] ? $installed['version'] : '- no -'; - if (is_array($info['installed'])) { - $info['installed'] = $info['installed']['release']; - } - - $this->ui->outputData($info, $command); - $this->config->set('default_channel', $savechannel); - - return true; - } - - function doRemoteList($command, $options, $params) - { - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (isset($options['channel'])) { - $channel = $options['channel']; - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - - $this->config->set('default_channel', $channel); - } - - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - - $list_options = false; - if ($this->config->get('preferred_state') == 'stable') { - $list_options = true; - } - - $available = array(); - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror')) - ) { - // use faster list-all if available - $rest = &$this->config->getREST('1.1', array()); - $available = $rest->listAll($base, $list_options, true, false, false, $chan->getName()); - } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $available = $rest->listAll($base, $list_options, true, false, false, $chan->getName()); - } - - if (PEAR::isError($available)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError($available); - } - - $i = $j = 0; - $data = array( - 'caption' => 'Channel ' . $channel . ' Available packages:', - 'border' => true, - 'headline' => array('Package', 'Version'), - 'channel' => $channel - ); - - if (count($available) == 0) { - $data = '(no packages available yet)'; - } else { - foreach ($available as $name => $info) { - $version = (isset($info['stable']) && $info['stable']) ? $info['stable'] : '-n/a-'; - $data['data'][] = array($name, $version); - } - } - $this->ui->outputData($data, $command); - $this->config->set('default_channel', $savechannel); - return true; - } - - function doListAll($command, $options, $params) - { - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (isset($options['channel'])) { - $channel = $options['channel']; - if (!$reg->channelExists($channel)) { - return $this->raiseError("Channel \"$channel\" does not exist"); - } - - $this->config->set('default_channel', $channel); - } - - $list_options = false; - if ($this->config->get('preferred_state') == 'stable') { - $list_options = true; - } - - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) { - // use faster list-all if available - $rest = &$this->config->getREST('1.1', array()); - $available = $rest->listAll($base, $list_options, false, false, false, $chan->getName()); - } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $available = $rest->listAll($base, $list_options, false, false, false, $chan->getName()); - } - - if (PEAR::isError($available)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError('The package list could not be fetched from the remote server. Please try again. (Debug info: "' . $available->getMessage() . '")'); - } - - $data = array( - 'caption' => 'All packages [Channel ' . $channel . ']:', - 'border' => true, - 'headline' => array('Package', 'Latest', 'Local'), - 'channel' => $channel, - ); - - if (isset($options['channelinfo'])) { - // add full channelinfo - $data['caption'] = 'Channel ' . $channel . ' All packages:'; - $data['headline'] = array('Channel', 'Package', 'Latest', 'Local', - 'Description', 'Dependencies'); - } - $local_pkgs = $reg->listPackages($channel); - - foreach ($available as $name => $info) { - $installed = $reg->packageInfo($name, null, $channel); - if (is_array($installed['version'])) { - $installed['version'] = $installed['version']['release']; - } - $desc = $info['summary']; - if (isset($params[$name])) { - $desc .= "\n\n".$info['description']; - } - if (isset($options['mode'])) - { - if ($options['mode'] == 'installed' && !isset($installed['version'])) { - continue; - } - if ($options['mode'] == 'notinstalled' && isset($installed['version'])) { - continue; - } - if ($options['mode'] == 'upgrades' - && (!isset($installed['version']) || version_compare($installed['version'], - $info['stable'], '>='))) { - continue; - } - } - $pos = array_search(strtolower($name), $local_pkgs); - if ($pos !== false) { - unset($local_pkgs[$pos]); - } - - if (isset($info['stable']) && !$info['stable']) { - $info['stable'] = null; - } - - if (isset($options['channelinfo'])) { - // add full channelinfo - if ($info['stable'] === $info['unstable']) { - $state = $info['state']; - } else { - $state = 'stable'; - } - $latest = $info['stable'].' ('.$state.')'; - $local = ''; - if (isset($installed['version'])) { - $inst_state = $reg->packageInfo($name, 'release_state', $channel); - $local = $installed['version'].' ('.$inst_state.')'; - } - - $packageinfo = array( - $channel, - $name, - $latest, - $local, - isset($desc) ? $desc : null, - isset($info['deps']) ? $info['deps'] : null, - ); - } else { - $packageinfo = array( - $reg->channelAlias($channel) . '/' . $name, - isset($info['stable']) ? $info['stable'] : null, - isset($installed['version']) ? $installed['version'] : null, - isset($desc) ? $desc : null, - isset($info['deps']) ? $info['deps'] : null, - ); - } - $data['data'][$info['category']][] = $packageinfo; - } - - if (isset($options['mode']) && in_array($options['mode'], array('notinstalled', 'upgrades'))) { - $this->config->set('default_channel', $savechannel); - $this->ui->outputData($data, $command); - return true; - } - - foreach ($local_pkgs as $name) { - $info = &$reg->getPackage($name, $channel); - $data['data']['Local'][] = array( - $reg->channelAlias($channel) . '/' . $info->getPackage(), - '', - $info->getVersion(), - $info->getSummary(), - $info->getDeps() - ); - } - - $this->config->set('default_channel', $savechannel); - $this->ui->outputData($data, $command); - return true; - } - - function doSearch($command, $options, $params) - { - if ((!isset($params[0]) || empty($params[0])) - && (!isset($params[1]) || empty($params[1]))) - { - return $this->raiseError('no valid search string supplied'); - } - - $channelinfo = isset($options['channelinfo']); - $reg = &$this->config->getRegistry(); - if (isset($options['allchannels'])) { - // search all channels - unset($options['allchannels']); - $channels = $reg->getChannels(); - $errors = array(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - foreach ($channels as $channel) { - if ($channel->getName() != '__uri') { - $options['channel'] = $channel->getName(); - $ret = $this->doSearch($command, $options, $params); - if (PEAR::isError($ret)) { - $errors[] = $ret; - } - } - } - - PEAR::staticPopErrorHandling(); - if (count($errors) !== 0) { - // for now, only give first error - return PEAR::raiseError($errors[0]); - } - - return true; - } - - $savechannel = $channel = $this->config->get('default_channel'); - $package = strtolower($params[0]); - $summary = isset($params[1]) ? $params[1] : false; - if (isset($options['channel'])) { - $reg = &$this->config->getRegistry(); - $channel = $options['channel']; - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - - $this->config->set('default_channel', $channel); - } - - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $available = $rest->listAll($base, false, false, $package, $summary, $chan->getName()); - } - - if (PEAR::isError($available)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError($available); - } - - if (!$available && !$channelinfo) { - // clean exit when not found, no error ! - $data = 'no packages found that match pattern "' . $package . '", for channel '.$channel.'.'; - $this->ui->outputData($data); - $this->config->set('default_channel', $channel); - return true; - } - - if ($channelinfo) { - $data = array( - 'caption' => 'Matched packages, channel ' . $channel . ':', - 'border' => true, - 'headline' => array('Channel', 'Package', 'Stable/(Latest)', 'Local'), - 'channel' => $channel - ); - } else { - $data = array( - 'caption' => 'Matched packages, channel ' . $channel . ':', - 'border' => true, - 'headline' => array('Package', 'Stable/(Latest)', 'Local'), - 'channel' => $channel - ); - } - - if (!$available && $channelinfo) { - unset($data['headline']); - $data['data'] = 'No packages found that match pattern "' . $package . '".'; - $available = array(); - } - - foreach ($available as $name => $info) { - $installed = $reg->packageInfo($name, null, $channel); - $desc = $info['summary']; - if (isset($params[$name])) - $desc .= "\n\n".$info['description']; - - if (!isset($info['stable']) || !$info['stable']) { - $version_remote = 'none'; - } else { - if ($info['unstable']) { - $version_remote = $info['unstable']; - } else { - $version_remote = $info['stable']; - } - $version_remote .= ' ('.$info['state'].')'; - } - $version = is_array($installed['version']) ? $installed['version']['release'] : - $installed['version']; - if ($channelinfo) { - $packageinfo = array( - $channel, - $name, - $version_remote, - $version, - $desc, - ); - } else { - $packageinfo = array( - $name, - $version_remote, - $version, - $desc, - ); - } - $data['data'][$info['category']][] = $packageinfo; - } - - $this->ui->outputData($data, $command); - $this->config->set('default_channel', $channel); - return true; - } - - function &getDownloader($options) - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - $a = &new PEAR_Downloader($this->ui, $options, $this->config); - return $a; - } - - function doDownload($command, $options, $params) - { - // make certain that dependencies are ignored - $options['downloadonly'] = 1; - - // eliminate error messages for preferred_state-related errors - /* TODO: Should be an option, but until now download does respect - prefered state */ - /* $options['ignorepreferred_state'] = 1; */ - // eliminate error messages for preferred_state-related errors - - $downloader = &$this->getDownloader($options); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $e = $downloader->setDownloadDir(getcwd()); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($e)) { - return $this->raiseError('Current directory is not writeable, cannot download'); - } - - $errors = array(); - $downloaded = array(); - $err = $downloader->download($params); - if (PEAR::isError($err)) { - return $err; - } - - $errors = $downloader->getErrorMsgs(); - if (count($errors)) { - foreach ($errors as $error) { - if ($error !== null) { - $this->ui->outputData($error); - } - } - - return $this->raiseError("$command failed"); - } - - $downloaded = $downloader->getDownloadedPackages(); - foreach ($downloaded as $pkg) { - $this->ui->outputData("File $pkg[file] downloaded", $command); - } - - return true; - } - - function downloadCallback($msg, $params = null) - { - if ($msg == 'done') { - $this->bytes_downloaded = $params; - } - } - - function doListUpgrades($command, $options, $params) - { - require_once 'PEAR/Common.php'; - if (isset($params[0]) && !is_array(PEAR_Common::betterStates($params[0]))) { - return $this->raiseError($params[0] . ' is not a valid state (stable/beta/alpha/devel/etc.) try "pear help list-upgrades"'); - } - - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - foreach ($reg->listChannels() as $channel) { - $inst = array_flip($reg->listPackages($channel)); - if (!count($inst)) { - continue; - } - - if ($channel == '__uri') { - continue; - } - - $this->config->set('default_channel', $channel); - $state = empty($params[0]) ? $this->config->get('preferred_state') : $params[0]; - - $caption = $channel . ' Available Upgrades'; - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - - $latest = array(); - $base2 = false; - $preferred_mirror = $this->config->get('preferred_mirror'); - if ($chan->supportsREST($preferred_mirror) && - ( - //($base2 = $chan->getBaseURL('REST1.4', $preferred_mirror)) || - ($base = $chan->getBaseURL('REST1.0', $preferred_mirror)) - ) - - ) { - if ($base2) { - $rest = &$this->config->getREST('1.4', array()); - $base = $base2; - } else { - $rest = &$this->config->getREST('1.0', array()); - } - - if (empty($state) || $state == 'any') { - $state = false; - } else { - $caption .= ' (' . implode(', ', PEAR_Common::betterStates($state, true)) . ')'; - } - - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $latest = $rest->listLatestUpgrades($base, $state, $inst, $channel, $reg); - PEAR::staticPopErrorHandling(); - } - - if (PEAR::isError($latest)) { - $this->ui->outputData($latest->getMessage()); - continue; - } - - $caption .= ':'; - if (PEAR::isError($latest)) { - $this->config->set('default_channel', $savechannel); - return $latest; - } - - $data = array( - 'caption' => $caption, - 'border' => 1, - 'headline' => array('Channel', 'Package', 'Local', 'Remote', 'Size'), - 'channel' => $channel - ); - - foreach ((array)$latest as $pkg => $info) { - $package = strtolower($pkg); - if (!isset($inst[$package])) { - // skip packages we don't have installed - continue; - } - - extract($info); - $inst_version = $reg->packageInfo($package, 'version', $channel); - $inst_state = $reg->packageInfo($package, 'release_state', $channel); - if (version_compare("$version", "$inst_version", "le")) { - // installed version is up-to-date - continue; - } - - if ($filesize >= 20480) { - $filesize += 1024 - ($filesize % 1024); - $fs = sprintf("%dkB", $filesize / 1024); - } elseif ($filesize > 0) { - $filesize += 103 - ($filesize % 103); - $fs = sprintf("%.1fkB", $filesize / 1024.0); - } else { - $fs = " -"; // XXX center instead - } - - $data['data'][] = array($channel, $pkg, "$inst_version ($inst_state)", "$version ($state)", $fs); - } - - if (isset($options['channelinfo'])) { - if (empty($data['data'])) { - unset($data['headline']); - if (count($inst) == 0) { - $data['data'] = '(no packages installed)'; - } else { - $data['data'] = '(no upgrades available)'; - } - } - $this->ui->outputData($data, $command); - } else { - if (empty($data['data'])) { - $this->ui->outputData('Channel ' . $channel . ': No upgrades available'); - } else { - $this->ui->outputData($data, $command); - } - } - } - - $this->config->set('default_channel', $savechannel); - return true; - } - - function doClearCache($command, $options, $params) - { - $cache_dir = $this->config->get('cache_dir'); - $verbose = $this->config->get('verbose'); - $output = ''; - if (!file_exists($cache_dir) || !is_dir($cache_dir)) { - return $this->raiseError("$cache_dir does not exist or is not a directory"); - } - - if (!($dp = @opendir($cache_dir))) { - return $this->raiseError("opendir($cache_dir) failed: $php_errormsg"); - } - - if ($verbose >= 1) { - $output .= "reading directory $cache_dir\n"; - } - - $num = 0; - while ($ent = readdir($dp)) { - if (preg_match('/rest.cache(file|id)\\z/', $ent)) { - $path = $cache_dir . DIRECTORY_SEPARATOR . $ent; - if (file_exists($path)) { - $ok = @unlink($path); - } else { - $ok = false; - $php_errormsg = ''; - } - - if ($ok) { - if ($verbose >= 2) { - $output .= "deleted $path\n"; - } - $num++; - } elseif ($verbose >= 1) { - $output .= "failed to delete $path $php_errormsg\n"; - } - } - } - - closedir($dp); - if ($verbose >= 1) { - $output .= "$num cache entries cleared\n"; - } - - $this->ui->outputData(rtrim($output), $command); - return $num; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Remote.xml b/3rdparty/PEAR/Command/Remote.xml deleted file mode 100644 index b4f6100c793109d1f8bd66ecbe70055ae348559d..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Remote.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - Information About Remote Packages - doRemoteInfo - ri - - <package> -Get details on a package from the server. - - - List Available Upgrades - doListUpgrades - lu - - - i - output fully channel-aware data, even on failure - - - [preferred_state] -List releases on the server of packages you have installed where -a newer version is available with the same release state (stable etc.) -or the state passed as the second parameter. - - - List Remote Packages - doRemoteList - rl - - - c - specify a channel other than the default channel - CHAN - - - -Lists the packages available on the configured server along with the -latest stable release of each package. - - - Search remote package database - doSearch - sp - - - c - specify a channel other than the default channel - CHAN - - - a - search packages from all known channels - - - i - output fully channel-aware data, even on failure - - - [packagename] [packageinfo] -Lists all packages which match the search parameters. The first -parameter is a fragment of a packagename. The default channel -will be used unless explicitly overridden. The second parameter -will be used to match any portion of the summary/description - - - List All Packages - doListAll - la - - - c - specify a channel other than the default channel - CHAN - - - i - output fully channel-aware data, even on failure - - - -Lists the packages available on the configured server along with the -latest stable release of each package. - - - Download Package - doDownload - d - - - Z - download an uncompressed (.tar) file - - - <package>... -Download package tarballs. The files will be named as suggested by the -server, for example if you download the DB package and the latest stable -version of DB is 1.6.5, the downloaded file will be DB-1.6.5.tgz. - - - Clear Web Services Cache - doClearCache - cc - - -Clear the XML-RPC/REST cache. See also the cache_ttl configuration -parameter. - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Test.php b/3rdparty/PEAR/Command/Test.php deleted file mode 100644 index a757d9e579091f6d20ce5d6f93eb9cec8b883566..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Test.php +++ /dev/null @@ -1,337 +0,0 @@ - - * @author Martin Jansen - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Test.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Martin Jansen - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ - -class PEAR_Command_Test extends PEAR_Command_Common -{ - var $commands = array( - 'run-tests' => array( - 'summary' => 'Run Regression Tests', - 'function' => 'doRunTests', - 'shortcut' => 'rt', - 'options' => array( - 'recur' => array( - 'shortopt' => 'r', - 'doc' => 'Run tests in child directories, recursively. 4 dirs deep maximum', - ), - 'ini' => array( - 'shortopt' => 'i', - 'doc' => 'actual string of settings to pass to php in format " -d setting=blah"', - 'arg' => 'SETTINGS' - ), - 'realtimelog' => array( - 'shortopt' => 'l', - 'doc' => 'Log test runs/results as they are run', - ), - 'quiet' => array( - 'shortopt' => 'q', - 'doc' => 'Only display detail for failed tests', - ), - 'simple' => array( - 'shortopt' => 's', - 'doc' => 'Display simple output for all tests', - ), - 'package' => array( - 'shortopt' => 'p', - 'doc' => 'Treat parameters as installed packages from which to run tests', - ), - 'phpunit' => array( - 'shortopt' => 'u', - 'doc' => 'Search parameters for AllTests.php, and use that to run phpunit-based tests -If none is found, all .phpt tests will be tried instead.', - ), - 'tapoutput' => array( - 'shortopt' => 't', - 'doc' => 'Output run-tests.log in TAP-compliant format', - ), - 'cgi' => array( - 'shortopt' => 'c', - 'doc' => 'CGI php executable (needed for tests with POST/GET section)', - 'arg' => 'PHPCGI', - ), - 'coverage' => array( - 'shortopt' => 'x', - 'doc' => 'Generate a code coverage report (requires Xdebug 2.0.0+)', - ), - ), - 'doc' => '[testfile|dir ...] -Run regression tests with PHP\'s regression testing script (run-tests.php).', - ), - ); - - var $output; - - /** - * PEAR_Command_Test constructor. - * - * @access public - */ - function PEAR_Command_Test(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - function doRunTests($command, $options, $params) - { - if (isset($options['phpunit']) && isset($options['tapoutput'])) { - return $this->raiseError('ERROR: cannot use both --phpunit and --tapoutput at the same time'); - } - - require_once 'PEAR/Common.php'; - require_once 'System.php'; - $log = new PEAR_Common; - $log->ui = &$this->ui; // slightly hacky, but it will work - $tests = array(); - $depth = isset($options['recur']) ? 14 : 1; - - if (!count($params)) { - $params[] = '.'; - } - - if (isset($options['package'])) { - $oldparams = $params; - $params = array(); - $reg = &$this->config->getRegistry(); - foreach ($oldparams as $param) { - $pname = $reg->parsePackageName($param, $this->config->get('default_channel')); - if (PEAR::isError($pname)) { - return $this->raiseError($pname); - } - - $package = &$reg->getPackage($pname['package'], $pname['channel']); - if (!$package) { - return PEAR::raiseError('Unknown package "' . - $reg->parsedPackageNameToString($pname) . '"'); - } - - $filelist = $package->getFilelist(); - foreach ($filelist as $name => $atts) { - if (isset($atts['role']) && $atts['role'] != 'test') { - continue; - } - - if (isset($options['phpunit']) && preg_match('/AllTests\.php\\z/i', $name)) { - $params[] = $atts['installed_as']; - continue; - } elseif (!preg_match('/\.phpt\\z/', $name)) { - continue; - } - $params[] = $atts['installed_as']; - } - } - } - - foreach ($params as $p) { - if (is_dir($p)) { - if (isset($options['phpunit'])) { - $dir = System::find(array($p, '-type', 'f', - '-maxdepth', $depth, - '-name', 'AllTests.php')); - if (count($dir)) { - foreach ($dir as $p) { - $p = realpath($p); - if (!count($tests) || - (count($tests) && strlen($p) < strlen($tests[0]))) { - // this is in a higher-level directory, use this one instead. - $tests = array($p); - } - } - } - continue; - } - - $args = array($p, '-type', 'f', '-name', '*.phpt'); - } else { - if (isset($options['phpunit'])) { - if (preg_match('/AllTests\.php\\z/i', $p)) { - $p = realpath($p); - if (!count($tests) || - (count($tests) && strlen($p) < strlen($tests[0]))) { - // this is in a higher-level directory, use this one instead. - $tests = array($p); - } - } - continue; - } - - if (file_exists($p) && preg_match('/\.phpt$/', $p)) { - $tests[] = $p; - continue; - } - - if (!preg_match('/\.phpt\\z/', $p)) { - $p .= '.phpt'; - } - - $args = array(dirname($p), '-type', 'f', '-name', $p); - } - - if (!isset($options['recur'])) { - $args[] = '-maxdepth'; - $args[] = 1; - } - - $dir = System::find($args); - $tests = array_merge($tests, $dir); - } - - $ini_settings = ''; - if (isset($options['ini'])) { - $ini_settings .= $options['ini']; - } - - if (isset($_ENV['TEST_PHP_INCLUDE_PATH'])) { - $ini_settings .= " -d include_path={$_ENV['TEST_PHP_INCLUDE_PATH']}"; - } - - if ($ini_settings) { - $this->ui->outputData('Using INI settings: "' . $ini_settings . '"'); - } - - $skipped = $passed = $failed = array(); - $tests_count = count($tests); - $this->ui->outputData('Running ' . $tests_count . ' tests', $command); - $start = time(); - if (isset($options['realtimelog']) && file_exists('run-tests.log')) { - unlink('run-tests.log'); - } - - if (isset($options['tapoutput'])) { - $tap = '1..' . $tests_count . "\n"; - } - - require_once 'PEAR/RunTest.php'; - $run = new PEAR_RunTest($log, $options); - $run->tests_count = $tests_count; - - if (isset($options['coverage']) && extension_loaded('xdebug')){ - $run->xdebug_loaded = true; - } else { - $run->xdebug_loaded = false; - } - - $j = $i = 1; - foreach ($tests as $t) { - if (isset($options['realtimelog'])) { - $fp = @fopen('run-tests.log', 'a'); - if ($fp) { - fwrite($fp, "Running test [$i / $tests_count] $t..."); - fclose($fp); - } - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (isset($options['phpunit'])) { - $result = $run->runPHPUnit($t, $ini_settings); - } else { - $result = $run->run($t, $ini_settings, $j); - } - PEAR::staticPopErrorHandling(); - if (PEAR::isError($result)) { - $this->ui->log($result->getMessage()); - continue; - } - - if (isset($options['tapoutput'])) { - $tap .= $result[0] . ' ' . $i . $result[1] . "\n"; - continue; - } - - if (isset($options['realtimelog'])) { - $fp = @fopen('run-tests.log', 'a'); - if ($fp) { - fwrite($fp, "$result\n"); - fclose($fp); - } - } - - if ($result == 'FAILED') { - $failed[] = $t; - } - if ($result == 'PASSED') { - $passed[] = $t; - } - if ($result == 'SKIPPED') { - $skipped[] = $t; - } - - $j++; - } - - $total = date('i:s', time() - $start); - if (isset($options['tapoutput'])) { - $fp = @fopen('run-tests.log', 'w'); - if ($fp) { - fwrite($fp, $tap, strlen($tap)); - fclose($fp); - $this->ui->outputData('wrote TAP-format log to "' .realpath('run-tests.log') . - '"', $command); - } - } else { - if (count($failed)) { - $output = "TOTAL TIME: $total\n"; - $output .= count($passed) . " PASSED TESTS\n"; - $output .= count($skipped) . " SKIPPED TESTS\n"; - $output .= count($failed) . " FAILED TESTS:\n"; - foreach ($failed as $failure) { - $output .= $failure . "\n"; - } - - $mode = isset($options['realtimelog']) ? 'a' : 'w'; - $fp = @fopen('run-tests.log', $mode); - - if ($fp) { - fwrite($fp, $output, strlen($output)); - fclose($fp); - $this->ui->outputData('wrote log to "' . realpath('run-tests.log') . '"', $command); - } - } elseif (file_exists('run-tests.log') && !is_dir('run-tests.log')) { - @unlink('run-tests.log'); - } - } - $this->ui->outputData('TOTAL TIME: ' . $total); - $this->ui->outputData(count($passed) . ' PASSED TESTS', $command); - $this->ui->outputData(count($skipped) . ' SKIPPED TESTS', $command); - if (count($failed)) { - $this->ui->outputData(count($failed) . ' FAILED TESTS:', $command); - foreach ($failed as $failure) { - $this->ui->outputData($failure, $command); - } - } - - return true; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Command/Test.xml b/3rdparty/PEAR/Command/Test.xml deleted file mode 100644 index bbe9fcccc51fad7569d664bc894a7b04076de5ca..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Command/Test.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - Run Regression Tests - doRunTests - rt - - - r - Run tests in child directories, recursively. 4 dirs deep maximum - - - i - actual string of settings to pass to php in format " -d setting=blah" - SETTINGS - - - l - Log test runs/results as they are run - - - q - Only display detail for failed tests - - - s - Display simple output for all tests - - - p - Treat parameters as installed packages from which to run tests - - - u - Search parameters for AllTests.php, and use that to run phpunit-based tests -If none is found, all .phpt tests will be tried instead. - - - t - Output run-tests.log in TAP-compliant format - - - c - CGI php executable (needed for tests with POST/GET section) - PHPCGI - - - x - Generate a code coverage report (requires Xdebug 2.0.0+) - - - [testfile|dir ...] -Run regression tests with PHP's regression testing script (run-tests.php). - - \ No newline at end of file diff --git a/3rdparty/PEAR/Common.php b/3rdparty/PEAR/Common.php deleted file mode 100644 index 83f2de742ac0e68db714cb5cd056e2c76495c4a3..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Common.php +++ /dev/null @@ -1,837 +0,0 @@ - - * @author Tomas V. V. Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Common.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1.0 - * @deprecated File deprecated since Release 1.4.0a1 - */ - -/** - * Include error handling - */ -require_once 'PEAR.php'; - -/** - * PEAR_Common error when an invalid PHP file is passed to PEAR_Common::analyzeSourceCode() - */ -define('PEAR_COMMON_ERROR_INVALIDPHP', 1); -define('_PEAR_COMMON_PACKAGE_NAME_PREG', '[A-Za-z][a-zA-Z0-9_]+'); -define('PEAR_COMMON_PACKAGE_NAME_PREG', '/^' . _PEAR_COMMON_PACKAGE_NAME_PREG . '\\z/'); - -// this should allow: 1, 1.0, 1.0RC1, 1.0dev, 1.0dev123234234234, 1.0a1, 1.0b1, 1.0pl1 -define('_PEAR_COMMON_PACKAGE_VERSION_PREG', '\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?'); -define('PEAR_COMMON_PACKAGE_VERSION_PREG', '/^' . _PEAR_COMMON_PACKAGE_VERSION_PREG . '\\z/i'); - -// XXX far from perfect :-) -define('_PEAR_COMMON_PACKAGE_DOWNLOAD_PREG', '(' . _PEAR_COMMON_PACKAGE_NAME_PREG . - ')(-([.0-9a-zA-Z]+))?'); -define('PEAR_COMMON_PACKAGE_DOWNLOAD_PREG', '/^' . _PEAR_COMMON_PACKAGE_DOWNLOAD_PREG . - '\\z/'); - -define('_PEAR_CHANNELS_NAME_PREG', '[A-Za-z][a-zA-Z0-9\.]+'); -define('PEAR_CHANNELS_NAME_PREG', '/^' . _PEAR_CHANNELS_NAME_PREG . '\\z/'); - -// this should allow any dns or IP address, plus a path - NO UNDERSCORES ALLOWED -define('_PEAR_CHANNELS_SERVER_PREG', '[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*(\/[a-zA-Z0-9\-]+)*'); -define('PEAR_CHANNELS_SERVER_PREG', '/^' . _PEAR_CHANNELS_SERVER_PREG . '\\z/i'); - -define('_PEAR_CHANNELS_PACKAGE_PREG', '(' ._PEAR_CHANNELS_SERVER_PREG . ')\/(' - . _PEAR_COMMON_PACKAGE_NAME_PREG . ')'); -define('PEAR_CHANNELS_PACKAGE_PREG', '/^' . _PEAR_CHANNELS_PACKAGE_PREG . '\\z/i'); - -define('_PEAR_COMMON_CHANNEL_DOWNLOAD_PREG', '(' . _PEAR_CHANNELS_NAME_PREG . ')::(' - . _PEAR_COMMON_PACKAGE_NAME_PREG . ')(-([.0-9a-zA-Z]+))?'); -define('PEAR_COMMON_CHANNEL_DOWNLOAD_PREG', '/^' . _PEAR_COMMON_CHANNEL_DOWNLOAD_PREG . '\\z/'); - -/** - * List of temporary files and directories registered by - * PEAR_Common::addTempFile(). - * @var array - */ -$GLOBALS['_PEAR_Common_tempfiles'] = array(); - -/** - * Valid maintainer roles - * @var array - */ -$GLOBALS['_PEAR_Common_maintainer_roles'] = array('lead','developer','contributor','helper'); - -/** - * Valid release states - * @var array - */ -$GLOBALS['_PEAR_Common_release_states'] = array('alpha','beta','stable','snapshot','devel'); - -/** - * Valid dependency types - * @var array - */ -$GLOBALS['_PEAR_Common_dependency_types'] = array('pkg','ext','php','prog','ldlib','rtlib','os','websrv','sapi'); - -/** - * Valid dependency relations - * @var array - */ -$GLOBALS['_PEAR_Common_dependency_relations'] = array('has','eq','lt','le','gt','ge','not', 'ne'); - -/** - * Valid file roles - * @var array - */ -$GLOBALS['_PEAR_Common_file_roles'] = array('php','ext','test','doc','data','src','script'); - -/** - * Valid replacement types - * @var array - */ -$GLOBALS['_PEAR_Common_replacement_types'] = array('php-const', 'pear-config', 'package-info'); - -/** - * Valid "provide" types - * @var array - */ -$GLOBALS['_PEAR_Common_provide_types'] = array('ext', 'prog', 'class', 'function', 'feature', 'api'); - -/** - * Valid "provide" types - * @var array - */ -$GLOBALS['_PEAR_Common_script_phases'] = array('pre-install', 'post-install', 'pre-uninstall', 'post-uninstall', 'pre-build', 'post-build', 'pre-configure', 'post-configure', 'pre-setup', 'post-setup'); - -/** - * Class providing common functionality for PEAR administration classes. - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V. V. Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - * @deprecated This class will disappear, and its components will be spread - * into smaller classes, like the AT&T breakup, as of Release 1.4.0a1 - */ -class PEAR_Common extends PEAR -{ - /** - * User Interface object (PEAR_Frontend_* class). If null, - * the log() method uses print. - * @var object - */ - var $ui = null; - - /** - * Configuration object (PEAR_Config). - * @var PEAR_Config - */ - var $config = null; - - /** stack of elements, gives some sort of XML context */ - var $element_stack = array(); - - /** name of currently parsed XML element */ - var $current_element; - - /** array of attributes of the currently parsed XML element */ - var $current_attributes = array(); - - /** assoc with information about a package */ - var $pkginfo = array(); - - var $current_path = null; - - /** - * Flag variable used to mark a valid package file - * @var boolean - * @access private - */ - var $_validPackageFile; - - /** - * PEAR_Common constructor - * - * @access public - */ - function PEAR_Common() - { - parent::PEAR(); - $this->config = PEAR_Config::singleton(); - $this->debug = $this->config->get('verbose'); - } - - /** - * PEAR_Common destructor - * - * @access private - */ - function _PEAR_Common() - { - // doesn't work due to bug #14744 - //$tempfiles = $this->_tempfiles; - $tempfiles =& $GLOBALS['_PEAR_Common_tempfiles']; - while ($file = array_shift($tempfiles)) { - if (@is_dir($file)) { - if (!class_exists('System')) { - require_once 'System.php'; - } - - System::rm(array('-rf', $file)); - } elseif (file_exists($file)) { - unlink($file); - } - } - } - - /** - * Register a temporary file or directory. When the destructor is - * executed, all registered temporary files and directories are - * removed. - * - * @param string $file name of file or directory - * - * @return void - * - * @access public - */ - function addTempFile($file) - { - if (!class_exists('PEAR_Frontend')) { - require_once 'PEAR/Frontend.php'; - } - PEAR_Frontend::addTempFile($file); - } - - /** - * Wrapper to System::mkDir(), creates a directory as well as - * any necessary parent directories. - * - * @param string $dir directory name - * - * @return bool TRUE on success, or a PEAR error - * - * @access public - */ - function mkDirHier($dir) - { - // Only used in Installer - move it there ? - $this->log(2, "+ create dir $dir"); - if (!class_exists('System')) { - require_once 'System.php'; - } - return System::mkDir(array('-p', $dir)); - } - - /** - * Logging method. - * - * @param int $level log level (0 is quiet, higher is noisier) - * @param string $msg message to write to the log - * - * @return void - * - * @access public - * @static - */ - function log($level, $msg, $append_crlf = true) - { - if ($this->debug >= $level) { - if (!class_exists('PEAR_Frontend')) { - require_once 'PEAR/Frontend.php'; - } - - $ui = &PEAR_Frontend::singleton(); - if (is_a($ui, 'PEAR_Frontend')) { - $ui->log($msg, $append_crlf); - } else { - print "$msg\n"; - } - } - } - - /** - * Create and register a temporary directory. - * - * @param string $tmpdir (optional) Directory to use as tmpdir. - * Will use system defaults (for example - * /tmp or c:\windows\temp) if not specified - * - * @return string name of created directory - * - * @access public - */ - function mkTempDir($tmpdir = '') - { - $topt = $tmpdir ? array('-t', $tmpdir) : array(); - $topt = array_merge($topt, array('-d', 'pear')); - if (!class_exists('System')) { - require_once 'System.php'; - } - - if (!$tmpdir = System::mktemp($topt)) { - return false; - } - - $this->addTempFile($tmpdir); - return $tmpdir; - } - - /** - * Set object that represents the frontend to be used. - * - * @param object Reference of the frontend object - * @return void - * @access public - */ - function setFrontendObject(&$ui) - { - $this->ui = &$ui; - } - - /** - * Return an array containing all of the states that are more stable than - * or equal to the passed in state - * - * @param string Release state - * @param boolean Determines whether to include $state in the list - * @return false|array False if $state is not a valid release state - */ - function betterStates($state, $include = false) - { - static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - $i = array_search($state, $states); - if ($i === false) { - return false; - } - if ($include) { - $i--; - } - return array_slice($states, $i + 1); - } - - /** - * Get the valid roles for a PEAR package maintainer - * - * @return array - * @static - */ - function getUserRoles() - { - return $GLOBALS['_PEAR_Common_maintainer_roles']; - } - - /** - * Get the valid package release states of packages - * - * @return array - * @static - */ - function getReleaseStates() - { - return $GLOBALS['_PEAR_Common_release_states']; - } - - /** - * Get the implemented dependency types (php, ext, pkg etc.) - * - * @return array - * @static - */ - function getDependencyTypes() - { - return $GLOBALS['_PEAR_Common_dependency_types']; - } - - /** - * Get the implemented dependency relations (has, lt, ge etc.) - * - * @return array - * @static - */ - function getDependencyRelations() - { - return $GLOBALS['_PEAR_Common_dependency_relations']; - } - - /** - * Get the implemented file roles - * - * @return array - * @static - */ - function getFileRoles() - { - return $GLOBALS['_PEAR_Common_file_roles']; - } - - /** - * Get the implemented file replacement types in - * - * @return array - * @static - */ - function getReplacementTypes() - { - return $GLOBALS['_PEAR_Common_replacement_types']; - } - - /** - * Get the implemented file replacement types in - * - * @return array - * @static - */ - function getProvideTypes() - { - return $GLOBALS['_PEAR_Common_provide_types']; - } - - /** - * Get the implemented file replacement types in - * - * @return array - * @static - */ - function getScriptPhases() - { - return $GLOBALS['_PEAR_Common_script_phases']; - } - - /** - * Test whether a string contains a valid package name. - * - * @param string $name the package name to test - * - * @return bool - * - * @access public - */ - function validPackageName($name) - { - return (bool)preg_match(PEAR_COMMON_PACKAGE_NAME_PREG, $name); - } - - /** - * Test whether a string contains a valid package version. - * - * @param string $ver the package version to test - * - * @return bool - * - * @access public - */ - function validPackageVersion($ver) - { - return (bool)preg_match(PEAR_COMMON_PACKAGE_VERSION_PREG, $ver); - } - - /** - * @param string $path relative or absolute include path - * @return boolean - * @static - */ - function isIncludeable($path) - { - if (file_exists($path) && is_readable($path)) { - return true; - } - - $ipath = explode(PATH_SEPARATOR, ini_get('include_path')); - foreach ($ipath as $include) { - $test = realpath($include . DIRECTORY_SEPARATOR . $path); - if (file_exists($test) && is_readable($test)) { - return true; - } - } - - return false; - } - - function _postProcessChecks($pf) - { - if (!PEAR::isError($pf)) { - return $this->_postProcessValidPackagexml($pf); - } - - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - $e = $this->raiseError($error['message'], $error['code'], null, null, $error); - } - } - - return $pf; - } - - /** - * Returns information about a package file. Expects the name of - * a gzipped tar file as input. - * - * @param string $file name of .tgz file - * - * @return array array with package information - * - * @access public - * @deprecated use PEAR_PackageFile->fromTgzFile() instead - * - */ - function infoFromTgzFile($file) - { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromTgzFile($file, PEAR_VALIDATE_NORMAL); - return $this->_postProcessChecks($pf); - } - - /** - * Returns information about a package file. Expects the name of - * a package xml file as input. - * - * @param string $descfile name of package xml file - * - * @return array array with package information - * - * @access public - * @deprecated use PEAR_PackageFile->fromPackageFile() instead - * - */ - function infoFromDescriptionFile($descfile) - { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromPackageFile($descfile, PEAR_VALIDATE_NORMAL); - return $this->_postProcessChecks($pf); - } - - /** - * Returns information about a package file. Expects the contents - * of a package xml file as input. - * - * @param string $data contents of package.xml file - * - * @return array array with package information - * - * @access public - * @deprecated use PEAR_PackageFile->fromXmlstring() instead - * - */ - function infoFromString($data) - { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromXmlString($data, PEAR_VALIDATE_NORMAL, false); - return $this->_postProcessChecks($pf); - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return array - */ - function _postProcessValidPackagexml(&$pf) - { - if (!is_a($pf, 'PEAR_PackageFile_v2')) { - $this->pkginfo = $pf->toArray(); - return $this->pkginfo; - } - - // sort of make this into a package.xml 1.0-style array - // changelog is not converted to old format. - $arr = $pf->toArray(true); - $arr = array_merge($arr, $arr['old']); - unset($arr['old'], $arr['xsdversion'], $arr['contents'], $arr['compatible'], - $arr['channel'], $arr['uri'], $arr['dependencies'], $arr['phprelease'], - $arr['extsrcrelease'], $arr['zendextsrcrelease'], $arr['extbinrelease'], - $arr['zendextbinrelease'], $arr['bundle'], $arr['lead'], $arr['developer'], - $arr['helper'], $arr['contributor']); - $arr['filelist'] = $pf->getFilelist(); - $this->pkginfo = $arr; - return $arr; - } - - /** - * Returns package information from different sources - * - * This method is able to extract information about a package - * from a .tgz archive or from a XML package definition file. - * - * @access public - * @param string Filename of the source ('package.xml', '.tgz') - * @return string - * @deprecated use PEAR_PackageFile->fromAnyFile() instead - */ - function infoFromAny($info) - { - if (is_string($info) && file_exists($info)) { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromAnyFile($info, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pf)) { - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - $e = $this->raiseError($error['message'], $error['code'], null, null, $error); - } - } - - return $pf; - } - - return $this->_postProcessValidPackagexml($pf); - } - - return $info; - } - - /** - * Return an XML document based on the package info (as returned - * by the PEAR_Common::infoFrom* methods). - * - * @param array $pkginfo package info - * - * @return string XML data - * - * @access public - * @deprecated use a PEAR_PackageFile_v* object's generator instead - */ - function xmlFromInfo($pkginfo) - { - $config = &PEAR_Config::singleton(); - $packagefile = &new PEAR_PackageFile($config); - $pf = &$packagefile->fromArray($pkginfo); - $gen = &$pf->getDefaultGenerator(); - return $gen->toXml(PEAR_VALIDATE_PACKAGING); - } - - /** - * Validate XML package definition file. - * - * @param string $info Filename of the package archive or of the - * package definition file - * @param array $errors Array that will contain the errors - * @param array $warnings Array that will contain the warnings - * @param string $dir_prefix (optional) directory where source files - * may be found, or empty if they are not available - * @access public - * @return boolean - * @deprecated use the validation of PEAR_PackageFile objects - */ - function validatePackageInfo($info, &$errors, &$warnings, $dir_prefix = '') - { - $config = &PEAR_Config::singleton(); - $packagefile = &new PEAR_PackageFile($config); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (strpos($info, 'fromXmlString($info, PEAR_VALIDATE_NORMAL, ''); - } else { - $pf = &$packagefile->fromAnyFile($info, PEAR_VALIDATE_NORMAL); - } - - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf)) { - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - if ($error['level'] == 'error') { - $errors[] = $error['message']; - } else { - $warnings[] = $error['message']; - } - } - } - - return false; - } - - return true; - } - - /** - * Build a "provides" array from data returned by - * analyzeSourceCode(). The format of the built array is like - * this: - * - * array( - * 'class;MyClass' => 'array('type' => 'class', 'name' => 'MyClass'), - * ... - * ) - * - * - * @param array $srcinfo array with information about a source file - * as returned by the analyzeSourceCode() method. - * - * @return void - * - * @access public - * - */ - function buildProvidesArray($srcinfo) - { - $file = basename($srcinfo['source_file']); - $pn = ''; - if (isset($this->_packageName)) { - $pn = $this->_packageName; - } - - $pnl = strlen($pn); - foreach ($srcinfo['declared_classes'] as $class) { - $key = "class;$class"; - if (isset($this->pkginfo['provides'][$key])) { - continue; - } - - $this->pkginfo['provides'][$key] = - array('file'=> $file, 'type' => 'class', 'name' => $class); - if (isset($srcinfo['inheritance'][$class])) { - $this->pkginfo['provides'][$key]['extends'] = - $srcinfo['inheritance'][$class]; - } - } - - foreach ($srcinfo['declared_methods'] as $class => $methods) { - foreach ($methods as $method) { - $function = "$class::$method"; - $key = "function;$function"; - if ($method{0} == '_' || !strcasecmp($method, $class) || - isset($this->pkginfo['provides'][$key])) { - continue; - } - - $this->pkginfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - foreach ($srcinfo['declared_functions'] as $function) { - $key = "function;$function"; - if ($function{0} == '_' || isset($this->pkginfo['provides'][$key])) { - continue; - } - - if (!strstr($function, '::') && strncasecmp($function, $pn, $pnl)) { - $warnings[] = "in1 " . $file . ": function \"$function\" not prefixed with package name \"$pn\""; - } - - $this->pkginfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - /** - * Analyze the source code of the given PHP file - * - * @param string Filename of the PHP file - * @return mixed - * @access public - */ - function analyzeSourceCode($file) - { - if (!class_exists('PEAR_PackageFile_v2_Validator')) { - require_once 'PEAR/PackageFile/v2/Validator.php'; - } - - $a = new PEAR_PackageFile_v2_Validator; - return $a->analyzeSourceCode($file); - } - - function detectDependencies($any, $status_callback = null) - { - if (!function_exists("token_get_all")) { - return false; - } - - if (PEAR::isError($info = $this->infoFromAny($any))) { - return $this->raiseError($info); - } - - if (!is_array($info)) { - return false; - } - - $deps = array(); - $used_c = $decl_c = $decl_f = $decl_m = array(); - foreach ($info['filelist'] as $file => $fa) { - $tmp = $this->analyzeSourceCode($file); - $used_c = @array_merge($used_c, $tmp['used_classes']); - $decl_c = @array_merge($decl_c, $tmp['declared_classes']); - $decl_f = @array_merge($decl_f, $tmp['declared_functions']); - $decl_m = @array_merge($decl_m, $tmp['declared_methods']); - $inheri = @array_merge($inheri, $tmp['inheritance']); - } - - $used_c = array_unique($used_c); - $decl_c = array_unique($decl_c); - $undecl_c = array_diff($used_c, $decl_c); - - return array('used_classes' => $used_c, - 'declared_classes' => $decl_c, - 'declared_methods' => $decl_m, - 'declared_functions' => $decl_f, - 'undeclared_classes' => $undecl_c, - 'inheritance' => $inheri, - ); - } - - /** - * Download a file through HTTP. Considers suggested file name in - * Content-disposition: header and can run a callback function for - * different events. The callback will be called with two - * parameters: the callback type, and parameters. The implemented - * callback types are: - * - * 'setup' called at the very beginning, parameter is a UI object - * that should be used for all output - * 'message' the parameter is a string with an informational message - * 'saveas' may be used to save with a different file name, the - * parameter is the filename that is about to be used. - * If a 'saveas' callback returns a non-empty string, - * that file name will be used as the filename instead. - * Note that $save_dir will not be affected by this, only - * the basename of the file. - * 'start' download is starting, parameter is number of bytes - * that are expected, or -1 if unknown - * 'bytesread' parameter is the number of bytes read so far - * 'done' download is complete, parameter is the total number - * of bytes read - * 'connfailed' if the TCP connection fails, this callback is called - * with array(host,port,errno,errmsg) - * 'writefailed' if writing to disk fails, this callback is called - * with array(destfile,errmsg) - * - * If an HTTP proxy has been configured (http_proxy PEAR_Config - * setting), the proxy will be used. - * - * @param string $url the URL to download - * @param object $ui PEAR_Frontend_* instance - * @param object $config PEAR_Config instance - * @param string $save_dir (optional) directory to save file in - * @param mixed $callback (optional) function/method to call for status - * updates - * - * @return string Returns the full path of the downloaded file or a PEAR - * error on failure. If the error is caused by - * socket-related errors, the error object will - * have the fsockopen error code available through - * getCode(). - * - * @access public - * @deprecated in favor of PEAR_Downloader::downloadHttp() - */ - function downloadHttp($url, &$ui, $save_dir = '.', $callback = null) - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - return PEAR_Downloader::downloadHttp($url, $ui, $save_dir, $callback); - } -} - -require_once 'PEAR/Config.php'; -require_once 'PEAR/PackageFile.php'; \ No newline at end of file diff --git a/3rdparty/PEAR/Config.php b/3rdparty/PEAR/Config.php deleted file mode 100644 index 86a7db3f32f3a9768f4df111db4788fc61692dbb..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Config.php +++ /dev/null @@ -1,2097 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Config.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * Required for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Registry.php'; -require_once 'PEAR/Installer/Role.php'; -require_once 'System.php'; - -/** - * Last created PEAR_Config instance. - * @var object - */ -$GLOBALS['_PEAR_Config_instance'] = null; -if (!defined('PEAR_INSTALL_DIR') || !PEAR_INSTALL_DIR) { - $PEAR_INSTALL_DIR = PHP_LIBDIR . DIRECTORY_SEPARATOR . 'pear'; -} else { - $PEAR_INSTALL_DIR = PEAR_INSTALL_DIR; -} - -// Below we define constants with default values for all configuration -// parameters except username/password. All of them can have their -// defaults set through environment variables. The reason we use the -// PHP_ prefix is for some security, PHP protects environment -// variables starting with PHP_*. - -// default channel and preferred mirror is based on whether we are invoked through -// the "pear" or the "pecl" command -if (!defined('PEAR_RUNTYPE')) { - define('PEAR_RUNTYPE', 'pear'); -} - -if (PEAR_RUNTYPE == 'pear') { - define('PEAR_CONFIG_DEFAULT_CHANNEL', 'pear.php.net'); -} else { - define('PEAR_CONFIG_DEFAULT_CHANNEL', 'pecl.php.net'); -} - -if (getenv('PHP_PEAR_SYSCONF_DIR')) { - define('PEAR_CONFIG_SYSCONFDIR', getenv('PHP_PEAR_SYSCONF_DIR')); -} elseif (getenv('SystemRoot')) { - define('PEAR_CONFIG_SYSCONFDIR', getenv('SystemRoot')); -} else { - define('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR); -} - -// Default for master_server -if (getenv('PHP_PEAR_MASTER_SERVER')) { - define('PEAR_CONFIG_DEFAULT_MASTER_SERVER', getenv('PHP_PEAR_MASTER_SERVER')); -} else { - define('PEAR_CONFIG_DEFAULT_MASTER_SERVER', 'pear.php.net'); -} - -// Default for http_proxy -if (getenv('PHP_PEAR_HTTP_PROXY')) { - define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', getenv('PHP_PEAR_HTTP_PROXY')); -} elseif (getenv('http_proxy')) { - define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', getenv('http_proxy')); -} else { - define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', ''); -} - -// Default for php_dir -if (getenv('PHP_PEAR_INSTALL_DIR')) { - define('PEAR_CONFIG_DEFAULT_PHP_DIR', getenv('PHP_PEAR_INSTALL_DIR')); -} else { - if (@file_exists($PEAR_INSTALL_DIR) && is_dir($PEAR_INSTALL_DIR)) { - define('PEAR_CONFIG_DEFAULT_PHP_DIR', $PEAR_INSTALL_DIR); - } else { - define('PEAR_CONFIG_DEFAULT_PHP_DIR', $PEAR_INSTALL_DIR); - } -} - -// Default for ext_dir -if (getenv('PHP_PEAR_EXTENSION_DIR')) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', getenv('PHP_PEAR_EXTENSION_DIR')); -} else { - if (ini_get('extension_dir')) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', ini_get('extension_dir')); - } elseif (defined('PEAR_EXTENSION_DIR') && - file_exists(PEAR_EXTENSION_DIR) && is_dir(PEAR_EXTENSION_DIR)) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', PEAR_EXTENSION_DIR); - } elseif (defined('PHP_EXTENSION_DIR')) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', PHP_EXTENSION_DIR); - } else { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', '.'); - } -} - -// Default for doc_dir -if (getenv('PHP_PEAR_DOC_DIR')) { - define('PEAR_CONFIG_DEFAULT_DOC_DIR', getenv('PHP_PEAR_DOC_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_DOC_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'docs'); -} - -// Default for bin_dir -if (getenv('PHP_PEAR_BIN_DIR')) { - define('PEAR_CONFIG_DEFAULT_BIN_DIR', getenv('PHP_PEAR_BIN_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_BIN_DIR', PHP_BINDIR); -} - -// Default for data_dir -if (getenv('PHP_PEAR_DATA_DIR')) { - define('PEAR_CONFIG_DEFAULT_DATA_DIR', getenv('PHP_PEAR_DATA_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_DATA_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'data'); -} - -// Default for cfg_dir -if (getenv('PHP_PEAR_CFG_DIR')) { - define('PEAR_CONFIG_DEFAULT_CFG_DIR', getenv('PHP_PEAR_CFG_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_CFG_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'cfg'); -} - -// Default for www_dir -if (getenv('PHP_PEAR_WWW_DIR')) { - define('PEAR_CONFIG_DEFAULT_WWW_DIR', getenv('PHP_PEAR_WWW_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_WWW_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'www'); -} - -// Default for test_dir -if (getenv('PHP_PEAR_TEST_DIR')) { - define('PEAR_CONFIG_DEFAULT_TEST_DIR', getenv('PHP_PEAR_TEST_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_TEST_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'tests'); -} - -// Default for temp_dir -if (getenv('PHP_PEAR_TEMP_DIR')) { - define('PEAR_CONFIG_DEFAULT_TEMP_DIR', getenv('PHP_PEAR_TEMP_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_TEMP_DIR', - System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . - DIRECTORY_SEPARATOR . 'temp'); -} - -// Default for cache_dir -if (getenv('PHP_PEAR_CACHE_DIR')) { - define('PEAR_CONFIG_DEFAULT_CACHE_DIR', getenv('PHP_PEAR_CACHE_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_CACHE_DIR', - System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . - DIRECTORY_SEPARATOR . 'cache'); -} - -// Default for download_dir -if (getenv('PHP_PEAR_DOWNLOAD_DIR')) { - define('PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR', getenv('PHP_PEAR_DOWNLOAD_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR', - System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . - DIRECTORY_SEPARATOR . 'download'); -} - -// Default for php_bin -if (getenv('PHP_PEAR_PHP_BIN')) { - define('PEAR_CONFIG_DEFAULT_PHP_BIN', getenv('PHP_PEAR_PHP_BIN')); -} else { - define('PEAR_CONFIG_DEFAULT_PHP_BIN', PEAR_CONFIG_DEFAULT_BIN_DIR. - DIRECTORY_SEPARATOR.'php'.(OS_WINDOWS ? '.exe' : '')); -} - -// Default for verbose -if (getenv('PHP_PEAR_VERBOSE')) { - define('PEAR_CONFIG_DEFAULT_VERBOSE', getenv('PHP_PEAR_VERBOSE')); -} else { - define('PEAR_CONFIG_DEFAULT_VERBOSE', 1); -} - -// Default for preferred_state -if (getenv('PHP_PEAR_PREFERRED_STATE')) { - define('PEAR_CONFIG_DEFAULT_PREFERRED_STATE', getenv('PHP_PEAR_PREFERRED_STATE')); -} else { - define('PEAR_CONFIG_DEFAULT_PREFERRED_STATE', 'stable'); -} - -// Default for umask -if (getenv('PHP_PEAR_UMASK')) { - define('PEAR_CONFIG_DEFAULT_UMASK', getenv('PHP_PEAR_UMASK')); -} else { - define('PEAR_CONFIG_DEFAULT_UMASK', decoct(umask())); -} - -// Default for cache_ttl -if (getenv('PHP_PEAR_CACHE_TTL')) { - define('PEAR_CONFIG_DEFAULT_CACHE_TTL', getenv('PHP_PEAR_CACHE_TTL')); -} else { - define('PEAR_CONFIG_DEFAULT_CACHE_TTL', 3600); -} - -// Default for sig_type -if (getenv('PHP_PEAR_SIG_TYPE')) { - define('PEAR_CONFIG_DEFAULT_SIG_TYPE', getenv('PHP_PEAR_SIG_TYPE')); -} else { - define('PEAR_CONFIG_DEFAULT_SIG_TYPE', 'gpg'); -} - -// Default for sig_bin -if (getenv('PHP_PEAR_SIG_BIN')) { - define('PEAR_CONFIG_DEFAULT_SIG_BIN', getenv('PHP_PEAR_SIG_BIN')); -} else { - define('PEAR_CONFIG_DEFAULT_SIG_BIN', - System::which( - 'gpg', OS_WINDOWS ? 'c:\gnupg\gpg.exe' : '/usr/local/bin/gpg')); -} - -// Default for sig_keydir -if (getenv('PHP_PEAR_SIG_KEYDIR')) { - define('PEAR_CONFIG_DEFAULT_SIG_KEYDIR', getenv('PHP_PEAR_SIG_KEYDIR')); -} else { - define('PEAR_CONFIG_DEFAULT_SIG_KEYDIR', - PEAR_CONFIG_SYSCONFDIR . DIRECTORY_SEPARATOR . 'pearkeys'); -} - -/** - * This is a class for storing configuration data, keeping track of - * which are system-defined, user-defined or defaulted. - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Config extends PEAR -{ - /** - * Array of config files used. - * - * @var array layer => config file - */ - var $files = array( - 'system' => '', - 'user' => '', - ); - - var $layers = array(); - - /** - * Configuration data, two-dimensional array where the first - * dimension is the config layer ('user', 'system' and 'default'), - * and the second dimension is keyname => value. - * - * The order in the first dimension is important! Earlier - * layers will shadow later ones when a config value is - * requested (if a 'user' value exists, it will be returned first, - * then 'system' and finally 'default'). - * - * @var array layer => array(keyname => value, ...) - */ - var $configuration = array( - 'user' => array(), - 'system' => array(), - 'default' => array(), - ); - - /** - * Configuration values that can be set for a channel - * - * All other configuration values can only have a global value - * @var array - * @access private - */ - var $_channelConfigInfo = array( - 'php_dir', 'ext_dir', 'doc_dir', 'bin_dir', 'data_dir', 'cfg_dir', - 'test_dir', 'www_dir', 'php_bin', 'php_prefix', 'php_suffix', 'username', - 'password', 'verbose', 'preferred_state', 'umask', 'preferred_mirror', 'php_ini' - ); - - /** - * Channels that can be accessed - * @see setChannels() - * @var array - * @access private - */ - var $_channels = array('pear.php.net', 'pecl.php.net', '__uri'); - - /** - * This variable is used to control the directory values returned - * @see setInstallRoot(); - * @var string|false - * @access private - */ - var $_installRoot = false; - - /** - * If requested, this will always refer to the registry - * contained in php_dir - * @var PEAR_Registry - */ - var $_registry = array(); - - /** - * @var array - * @access private - */ - var $_regInitialized = array(); - - /** - * @var bool - * @access private - */ - var $_noRegistry = false; - - /** - * amount of errors found while parsing config - * @var integer - * @access private - */ - var $_errorsFound = 0; - var $_lastError = null; - - /** - * Information about the configuration data. Stores the type, - * default value and a documentation string for each configuration - * value. - * - * @var array layer => array(infotype => value, ...) - */ - var $configuration_info = array( - // Channels/Internet Access - 'default_channel' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_CHANNEL, - 'doc' => 'the default channel to use for all non explicit commands', - 'prompt' => 'Default Channel', - 'group' => 'Internet Access', - ), - 'preferred_mirror' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_CHANNEL, - 'doc' => 'the default server or mirror to use for channel actions', - 'prompt' => 'Default Channel Mirror', - 'group' => 'Internet Access', - ), - 'remote_config' => array( - 'type' => 'password', - 'default' => '', - 'doc' => 'ftp url of remote configuration file to use for synchronized install', - 'prompt' => 'Remote Configuration File', - 'group' => 'Internet Access', - ), - 'auto_discover' => array( - 'type' => 'integer', - 'default' => 0, - 'doc' => 'whether to automatically discover new channels', - 'prompt' => 'Auto-discover new Channels', - 'group' => 'Internet Access', - ), - // Internet Access - 'master_server' => array( - 'type' => 'string', - 'default' => 'pear.php.net', - 'doc' => 'name of the main PEAR server [NOT USED IN THIS VERSION]', - 'prompt' => 'PEAR server [DEPRECATED]', - 'group' => 'Internet Access', - ), - 'http_proxy' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_HTTP_PROXY, - 'doc' => 'HTTP proxy (host:port) to use when downloading packages', - 'prompt' => 'HTTP Proxy Server Address', - 'group' => 'Internet Access', - ), - // File Locations - 'php_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_PHP_DIR, - 'doc' => 'directory where .php files are installed', - 'prompt' => 'PEAR directory', - 'group' => 'File Locations', - ), - 'ext_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_EXT_DIR, - 'doc' => 'directory where loadable extensions are installed', - 'prompt' => 'PHP extension directory', - 'group' => 'File Locations', - ), - 'doc_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DOC_DIR, - 'doc' => 'directory where documentation is installed', - 'prompt' => 'PEAR documentation directory', - 'group' => 'File Locations', - ), - 'bin_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_BIN_DIR, - 'doc' => 'directory where executables are installed', - 'prompt' => 'PEAR executables directory', - 'group' => 'File Locations', - ), - 'data_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DATA_DIR, - 'doc' => 'directory where data files are installed', - 'prompt' => 'PEAR data directory', - 'group' => 'File Locations (Advanced)', - ), - 'cfg_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_CFG_DIR, - 'doc' => 'directory where modifiable configuration files are installed', - 'prompt' => 'PEAR configuration file directory', - 'group' => 'File Locations (Advanced)', - ), - 'www_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_WWW_DIR, - 'doc' => 'directory where www frontend files (html/js) are installed', - 'prompt' => 'PEAR www files directory', - 'group' => 'File Locations (Advanced)', - ), - 'test_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_TEST_DIR, - 'doc' => 'directory where regression tests are installed', - 'prompt' => 'PEAR test directory', - 'group' => 'File Locations (Advanced)', - ), - 'cache_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_CACHE_DIR, - 'doc' => 'directory which is used for web service cache', - 'prompt' => 'PEAR Installer cache directory', - 'group' => 'File Locations (Advanced)', - ), - 'temp_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_TEMP_DIR, - 'doc' => 'directory which is used for all temp files', - 'prompt' => 'PEAR Installer temp directory', - 'group' => 'File Locations (Advanced)', - ), - 'download_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR, - 'doc' => 'directory which is used for all downloaded files', - 'prompt' => 'PEAR Installer download directory', - 'group' => 'File Locations (Advanced)', - ), - 'php_bin' => array( - 'type' => 'file', - 'default' => PEAR_CONFIG_DEFAULT_PHP_BIN, - 'doc' => 'PHP CLI/CGI binary for executing scripts', - 'prompt' => 'PHP CLI/CGI binary', - 'group' => 'File Locations (Advanced)', - ), - 'php_prefix' => array( - 'type' => 'string', - 'default' => '', - 'doc' => '--program-prefix for php_bin\'s ./configure, used for pecl installs', - 'prompt' => '--program-prefix passed to PHP\'s ./configure', - 'group' => 'File Locations (Advanced)', - ), - 'php_suffix' => array( - 'type' => 'string', - 'default' => '', - 'doc' => '--program-suffix for php_bin\'s ./configure, used for pecl installs', - 'prompt' => '--program-suffix passed to PHP\'s ./configure', - 'group' => 'File Locations (Advanced)', - ), - 'php_ini' => array( - 'type' => 'file', - 'default' => '', - 'doc' => 'location of php.ini in which to enable PECL extensions on install', - 'prompt' => 'php.ini location', - 'group' => 'File Locations (Advanced)', - ), - // Maintainers - 'username' => array( - 'type' => 'string', - 'default' => '', - 'doc' => '(maintainers) your PEAR account name', - 'prompt' => 'PEAR username (for maintainers)', - 'group' => 'Maintainers', - ), - 'password' => array( - 'type' => 'password', - 'default' => '', - 'doc' => '(maintainers) your PEAR account password', - 'prompt' => 'PEAR password (for maintainers)', - 'group' => 'Maintainers', - ), - // Advanced - 'verbose' => array( - 'type' => 'integer', - 'default' => PEAR_CONFIG_DEFAULT_VERBOSE, - 'doc' => 'verbosity level -0: really quiet -1: somewhat quiet -2: verbose -3: debug', - 'prompt' => 'Debug Log Level', - 'group' => 'Advanced', - ), - 'preferred_state' => array( - 'type' => 'set', - 'default' => PEAR_CONFIG_DEFAULT_PREFERRED_STATE, - 'doc' => 'the installer will prefer releases with this state when installing packages without a version or state specified', - 'valid_set' => array( - 'stable', 'beta', 'alpha', 'devel', 'snapshot'), - 'prompt' => 'Preferred Package State', - 'group' => 'Advanced', - ), - 'umask' => array( - 'type' => 'mask', - 'default' => PEAR_CONFIG_DEFAULT_UMASK, - 'doc' => 'umask used when creating files (Unix-like systems only)', - 'prompt' => 'Unix file mask', - 'group' => 'Advanced', - ), - 'cache_ttl' => array( - 'type' => 'integer', - 'default' => PEAR_CONFIG_DEFAULT_CACHE_TTL, - 'doc' => 'amount of secs where the local cache is used and not updated', - 'prompt' => 'Cache TimeToLive', - 'group' => 'Advanced', - ), - 'sig_type' => array( - 'type' => 'set', - 'default' => PEAR_CONFIG_DEFAULT_SIG_TYPE, - 'doc' => 'which package signature mechanism to use', - 'valid_set' => array('gpg'), - 'prompt' => 'Package Signature Type', - 'group' => 'Maintainers', - ), - 'sig_bin' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_SIG_BIN, - 'doc' => 'which package signature mechanism to use', - 'prompt' => 'Signature Handling Program', - 'group' => 'Maintainers', - ), - 'sig_keyid' => array( - 'type' => 'string', - 'default' => '', - 'doc' => 'which key to use for signing with', - 'prompt' => 'Signature Key Id', - 'group' => 'Maintainers', - ), - 'sig_keydir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_SIG_KEYDIR, - 'doc' => 'directory where signature keys are located', - 'prompt' => 'Signature Key Directory', - 'group' => 'Maintainers', - ), - // __channels is reserved - used for channel-specific configuration - ); - - /** - * Constructor. - * - * @param string file to read user-defined options from - * @param string file to read system-wide defaults from - * @param bool determines whether a registry object "follows" - * the value of php_dir (is automatically created - * and moved when php_dir is changed) - * @param bool if true, fails if configuration files cannot be loaded - * - * @access public - * - * @see PEAR_Config::singleton - */ - function PEAR_Config($user_file = '', $system_file = '', $ftp_file = false, - $strict = true) - { - $this->PEAR(); - PEAR_Installer_Role::initializeConfig($this); - $sl = DIRECTORY_SEPARATOR; - if (empty($user_file)) { - if (OS_WINDOWS) { - $user_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.ini'; - } else { - $user_file = getenv('HOME') . $sl . '.pearrc'; - } - } - - if (empty($system_file)) { - $system_file = PEAR_CONFIG_SYSCONFDIR . $sl; - if (OS_WINDOWS) { - $system_file .= 'pearsys.ini'; - } else { - $system_file .= 'pear.conf'; - } - } - - $this->layers = array_keys($this->configuration); - $this->files['user'] = $user_file; - $this->files['system'] = $system_file; - if ($user_file && file_exists($user_file)) { - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $this->readConfigFile($user_file, 'user', $strict); - $this->popErrorHandling(); - if ($this->_errorsFound > 0) { - return; - } - } - - if ($system_file && @file_exists($system_file)) { - $this->mergeConfigFile($system_file, false, 'system', $strict); - if ($this->_errorsFound > 0) { - return; - } - - } - - if (!$ftp_file) { - $ftp_file = $this->get('remote_config'); - } - - if ($ftp_file && defined('PEAR_REMOTEINSTALL_OK')) { - $this->readFTPConfigFile($ftp_file); - } - - foreach ($this->configuration_info as $key => $info) { - $this->configuration['default'][$key] = $info['default']; - } - - $this->_registry['default'] = &new PEAR_Registry($this->configuration['default']['php_dir']); - $this->_registry['default']->setConfig($this, false); - $this->_regInitialized['default'] = false; - //$GLOBALS['_PEAR_Config_instance'] = &$this; - } - - /** - * Return the default locations of user and system configuration files - * @static - */ - function getDefaultConfigFiles() - { - $sl = DIRECTORY_SEPARATOR; - if (OS_WINDOWS) { - return array( - 'user' => PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.ini', - 'system' => PEAR_CONFIG_SYSCONFDIR . $sl . 'pearsys.ini' - ); - } - - return array( - 'user' => getenv('HOME') . $sl . '.pearrc', - 'system' => PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.conf' - ); - } - - /** - * Static singleton method. If you want to keep only one instance - * of this class in use, this method will give you a reference to - * the last created PEAR_Config object if one exists, or create a - * new object. - * - * @param string (optional) file to read user-defined options from - * @param string (optional) file to read system-wide defaults from - * - * @return object an existing or new PEAR_Config instance - * - * @access public - * - * @see PEAR_Config::PEAR_Config - */ - function &singleton($user_file = '', $system_file = '', $strict = true) - { - if (is_object($GLOBALS['_PEAR_Config_instance'])) { - return $GLOBALS['_PEAR_Config_instance']; - } - - $t_conf = &new PEAR_Config($user_file, $system_file, false, $strict); - if ($t_conf->_errorsFound > 0) { - return $t_conf->lastError; - } - - $GLOBALS['_PEAR_Config_instance'] = &$t_conf; - return $GLOBALS['_PEAR_Config_instance']; - } - - /** - * Determine whether any configuration files have been detected, and whether a - * registry object can be retrieved from this configuration. - * @return bool - * @since PEAR 1.4.0a1 - */ - function validConfiguration() - { - if ($this->isDefinedLayer('user') || $this->isDefinedLayer('system')) { - return true; - } - - return false; - } - - /** - * Reads configuration data from a file. All existing values in - * the config layer are discarded and replaced with data from the - * file. - * @param string file to read from, if NULL or not specified, the - * last-used file for the same layer (second param) is used - * @param string config layer to insert data into ('user' or 'system') - * @return bool TRUE on success or a PEAR error on failure - */ - function readConfigFile($file = null, $layer = 'user', $strict = true) - { - if (empty($this->files[$layer])) { - return $this->raiseError("unknown config layer `$layer'"); - } - - if ($file === null) { - $file = $this->files[$layer]; - } - - $data = $this->_readConfigDataFrom($file); - if (PEAR::isError($data)) { - if (!$strict) { - return true; - } - - $this->_errorsFound++; - $this->lastError = $data; - - return $data; - } - - $this->files[$layer] = $file; - $this->_decodeInput($data); - $this->configuration[$layer] = $data; - $this->_setupChannels(); - if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) { - $this->_registry[$layer] = &new PEAR_Registry($phpdir); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } else { - unset($this->_registry[$layer]); - } - return true; - } - - /** - * @param string url to the remote config file, like ftp://www.example.com/pear/config.ini - * @return true|PEAR_Error - */ - function readFTPConfigFile($path) - { - do { // poor man's try - if (!class_exists('PEAR_FTP')) { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - if (PEAR_Common::isIncludeable('PEAR/FTP.php')) { - require_once 'PEAR/FTP.php'; - } - } - - if (!class_exists('PEAR_FTP')) { - return PEAR::raiseError('PEAR_RemoteInstaller must be installed to use remote config'); - } - - $this->_ftp = &new PEAR_FTP; - $this->_ftp->pushErrorHandling(PEAR_ERROR_RETURN); - $e = $this->_ftp->init($path); - if (PEAR::isError($e)) { - $this->_ftp->popErrorHandling(); - return $e; - } - - $tmp = System::mktemp('-d'); - PEAR_Common::addTempFile($tmp); - $e = $this->_ftp->get(basename($path), $tmp . DIRECTORY_SEPARATOR . - 'pear.ini', false, FTP_BINARY); - if (PEAR::isError($e)) { - $this->_ftp->popErrorHandling(); - return $e; - } - - PEAR_Common::addTempFile($tmp . DIRECTORY_SEPARATOR . 'pear.ini'); - $this->_ftp->disconnect(); - $this->_ftp->popErrorHandling(); - $this->files['ftp'] = $tmp . DIRECTORY_SEPARATOR . 'pear.ini'; - $e = $this->readConfigFile(null, 'ftp'); - if (PEAR::isError($e)) { - return $e; - } - - $fail = array(); - foreach ($this->configuration_info as $key => $val) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - // any directory configs must be set for this to work - if (!isset($this->configuration['ftp'][$key])) { - $fail[] = $key; - } - } - } - - if (!count($fail)) { - return true; - } - - $fail = '"' . implode('", "', $fail) . '"'; - unset($this->files['ftp']); - unset($this->configuration['ftp']); - return PEAR::raiseError('ERROR: Ftp configuration file must set all ' . - 'directory configuration variables. These variables were not set: ' . - $fail); - } while (false); // poor man's catch - unset($this->files['ftp']); - return PEAR::raiseError('no remote host specified'); - } - - /** - * Reads the existing configurations and creates the _channels array from it - */ - function _setupChannels() - { - $set = array_flip(array_values($this->_channels)); - foreach ($this->configuration as $layer => $data) { - $i = 1000; - if (isset($data['__channels']) && is_array($data['__channels'])) { - foreach ($data['__channels'] as $channel => $info) { - $set[$channel] = $i++; - } - } - } - $this->_channels = array_values(array_flip($set)); - $this->setChannels($this->_channels); - } - - function deleteChannel($channel) - { - $ch = strtolower($channel); - foreach ($this->configuration as $layer => $data) { - if (isset($data['__channels']) && isset($data['__channels'][$ch])) { - unset($this->configuration[$layer]['__channels'][$ch]); - } - } - - $this->_channels = array_flip($this->_channels); - unset($this->_channels[$ch]); - $this->_channels = array_flip($this->_channels); - } - - /** - * Merges data into a config layer from a file. Does the same - * thing as readConfigFile, except it does not replace all - * existing values in the config layer. - * @param string file to read from - * @param bool whether to overwrite existing data (default TRUE) - * @param string config layer to insert data into ('user' or 'system') - * @param string if true, errors are returned if file opening fails - * @return bool TRUE on success or a PEAR error on failure - */ - function mergeConfigFile($file, $override = true, $layer = 'user', $strict = true) - { - if (empty($this->files[$layer])) { - return $this->raiseError("unknown config layer `$layer'"); - } - - if ($file === null) { - $file = $this->files[$layer]; - } - - $data = $this->_readConfigDataFrom($file); - if (PEAR::isError($data)) { - if (!$strict) { - return true; - } - - $this->_errorsFound++; - $this->lastError = $data; - - return $data; - } - - $this->_decodeInput($data); - if ($override) { - $this->configuration[$layer] = - PEAR_Config::arrayMergeRecursive($this->configuration[$layer], $data); - } else { - $this->configuration[$layer] = - PEAR_Config::arrayMergeRecursive($data, $this->configuration[$layer]); - } - - $this->_setupChannels(); - if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) { - $this->_registry[$layer] = &new PEAR_Registry($phpdir); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } else { - unset($this->_registry[$layer]); - } - return true; - } - - /** - * @param array - * @param array - * @return array - * @static - */ - function arrayMergeRecursive($arr2, $arr1) - { - $ret = array(); - foreach ($arr2 as $key => $data) { - if (!isset($arr1[$key])) { - $ret[$key] = $data; - unset($arr1[$key]); - continue; - } - if (is_array($data)) { - if (!is_array($arr1[$key])) { - $ret[$key] = $arr1[$key]; - unset($arr1[$key]); - continue; - } - $ret[$key] = PEAR_Config::arrayMergeRecursive($arr1[$key], $arr2[$key]); - unset($arr1[$key]); - } - } - - return array_merge($ret, $arr1); - } - - /** - * Writes data into a config layer from a file. - * - * @param string|null file to read from, or null for default - * @param string config layer to insert data into ('user' or - * 'system') - * @param string|null data to write to config file or null for internal data [DEPRECATED] - * @return bool TRUE on success or a PEAR error on failure - */ - function writeConfigFile($file = null, $layer = 'user', $data = null) - { - $this->_lazyChannelSetup($layer); - if ($layer == 'both' || $layer == 'all') { - foreach ($this->files as $type => $file) { - $err = $this->writeConfigFile($file, $type, $data); - if (PEAR::isError($err)) { - return $err; - } - } - return true; - } - - if (empty($this->files[$layer])) { - return $this->raiseError("unknown config file type `$layer'"); - } - - if ($file === null) { - $file = $this->files[$layer]; - } - - $data = ($data === null) ? $this->configuration[$layer] : $data; - $this->_encodeOutput($data); - $opt = array('-p', dirname($file)); - if (!@System::mkDir($opt)) { - return $this->raiseError("could not create directory: " . dirname($file)); - } - - if (file_exists($file) && is_file($file) && !is_writeable($file)) { - return $this->raiseError("no write access to $file!"); - } - - $fp = @fopen($file, "w"); - if (!$fp) { - return $this->raiseError("PEAR_Config::writeConfigFile fopen('$file','w') failed ($php_errormsg)"); - } - - $contents = "#PEAR_Config 0.9\n" . serialize($data); - if (!@fwrite($fp, $contents)) { - return $this->raiseError("PEAR_Config::writeConfigFile: fwrite failed ($php_errormsg)"); - } - return true; - } - - /** - * Reads configuration data from a file and returns the parsed data - * in an array. - * - * @param string file to read from - * @return array configuration data or a PEAR error on failure - * @access private - */ - function _readConfigDataFrom($file) - { - $fp = false; - if (file_exists($file)) { - $fp = @fopen($file, "r"); - } - - if (!$fp) { - return $this->raiseError("PEAR_Config::readConfigFile fopen('$file','r') failed"); - } - - $size = filesize($file); - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - fclose($fp); - $contents = file_get_contents($file); - if (empty($contents)) { - return $this->raiseError('Configuration file "' . $file . '" is empty'); - } - - set_magic_quotes_runtime($rt); - - $version = false; - if (preg_match('/^#PEAR_Config\s+(\S+)\s+/si', $contents, $matches)) { - $version = $matches[1]; - $contents = substr($contents, strlen($matches[0])); - } else { - // Museum config file - if (substr($contents,0,2) == 'a:') { - $version = '0.1'; - } - } - - if ($version && version_compare("$version", '1', '<')) { - // no '@', it is possible that unserialize - // raises a notice but it seems to block IO to - // STDOUT if a '@' is used and a notice is raise - $data = unserialize($contents); - - if (!is_array($data) && !$data) { - if ($contents == serialize(false)) { - $data = array(); - } else { - $err = $this->raiseError("PEAR_Config: bad data in $file"); - return $err; - } - } - if (!is_array($data)) { - if (strlen(trim($contents)) > 0) { - $error = "PEAR_Config: bad data in $file"; - $err = $this->raiseError($error); - return $err; - } - - $data = array(); - } - // add parsing of newer formats here... - } else { - $err = $this->raiseError("$file: unknown version `$version'"); - return $err; - } - - return $data; - } - - /** - * Gets the file used for storing the config for a layer - * - * @param string $layer 'user' or 'system' - */ - function getConfFile($layer) - { - return $this->files[$layer]; - } - - /** - * @param string Configuration class name, used for detecting duplicate calls - * @param array information on a role as parsed from its xml file - * @return true|PEAR_Error - * @access private - */ - function _addConfigVars($class, $vars) - { - static $called = array(); - if (isset($called[$class])) { - return; - } - - $called[$class] = 1; - if (count($vars) > 3) { - return $this->raiseError('Roles can only define 3 new config variables or less'); - } - - foreach ($vars as $name => $var) { - if (!is_array($var)) { - return $this->raiseError('Configuration information must be an array'); - } - - if (!isset($var['type'])) { - return $this->raiseError('Configuration information must contain a type'); - } elseif (!in_array($var['type'], - array('string', 'mask', 'password', 'directory', 'file', 'set'))) { - return $this->raiseError( - 'Configuration type must be one of directory, file, string, ' . - 'mask, set, or password'); - } - if (!isset($var['default'])) { - return $this->raiseError( - 'Configuration information must contain a default value ("default" index)'); - } - - if (is_array($var['default'])) { - $real_default = ''; - foreach ($var['default'] as $config_var => $val) { - if (strpos($config_var, 'text') === 0) { - $real_default .= $val; - } elseif (strpos($config_var, 'constant') === 0) { - if (!defined($val)) { - return $this->raiseError( - 'Unknown constant "' . $val . '" requested in ' . - 'default value for configuration variable "' . - $name . '"'); - } - - $real_default .= constant($val); - } elseif (isset($this->configuration_info[$config_var])) { - $real_default .= - $this->configuration_info[$config_var]['default']; - } else { - return $this->raiseError( - 'Unknown request for "' . $config_var . '" value in ' . - 'default value for configuration variable "' . - $name . '"'); - } - } - $var['default'] = $real_default; - } - - if ($var['type'] == 'integer') { - $var['default'] = (integer) $var['default']; - } - - if (!isset($var['doc'])) { - return $this->raiseError( - 'Configuration information must contain a summary ("doc" index)'); - } - - if (!isset($var['prompt'])) { - return $this->raiseError( - 'Configuration information must contain a simple prompt ("prompt" index)'); - } - - if (!isset($var['group'])) { - return $this->raiseError( - 'Configuration information must contain a simple group ("group" index)'); - } - - if (isset($this->configuration_info[$name])) { - return $this->raiseError('Configuration variable "' . $name . - '" already exists'); - } - - $this->configuration_info[$name] = $var; - // fix bug #7351: setting custom config variable in a channel fails - $this->_channelConfigInfo[] = $name; - } - - return true; - } - - /** - * Encodes/scrambles configuration data before writing to files. - * Currently, 'password' values will be base64-encoded as to avoid - * that people spot cleartext passwords by accident. - * - * @param array (reference) array to encode values in - * @return bool TRUE on success - * @access private - */ - function _encodeOutput(&$data) - { - foreach ($data as $key => $value) { - if ($key == '__channels') { - foreach ($data['__channels'] as $channel => $blah) { - $this->_encodeOutput($data['__channels'][$channel]); - } - } - - if (!isset($this->configuration_info[$key])) { - continue; - } - - $type = $this->configuration_info[$key]['type']; - switch ($type) { - // we base64-encode passwords so they are at least - // not shown in plain by accident - case 'password': { - $data[$key] = base64_encode($data[$key]); - break; - } - case 'mask': { - $data[$key] = octdec($data[$key]); - break; - } - } - } - - return true; - } - - /** - * Decodes/unscrambles configuration data after reading from files. - * - * @param array (reference) array to encode values in - * @return bool TRUE on success - * @access private - * - * @see PEAR_Config::_encodeOutput - */ - function _decodeInput(&$data) - { - if (!is_array($data)) { - return true; - } - - foreach ($data as $key => $value) { - if ($key == '__channels') { - foreach ($data['__channels'] as $channel => $blah) { - $this->_decodeInput($data['__channels'][$channel]); - } - } - - if (!isset($this->configuration_info[$key])) { - continue; - } - - $type = $this->configuration_info[$key]['type']; - switch ($type) { - case 'password': { - $data[$key] = base64_decode($data[$key]); - break; - } - case 'mask': { - $data[$key] = decoct($data[$key]); - break; - } - } - } - - return true; - } - - /** - * Retrieve the default channel. - * - * On startup, channels are not initialized, so if the default channel is not - * pear.php.net, then initialize the config. - * @param string registry layer - * @return string|false - */ - function getDefaultChannel($layer = null) - { - $ret = false; - if ($layer === null) { - foreach ($this->layers as $layer) { - if (isset($this->configuration[$layer]['default_channel'])) { - $ret = $this->configuration[$layer]['default_channel']; - break; - } - } - } elseif (isset($this->configuration[$layer]['default_channel'])) { - $ret = $this->configuration[$layer]['default_channel']; - } - - if ($ret == 'pear.php.net' && defined('PEAR_RUNTYPE') && PEAR_RUNTYPE == 'pecl') { - $ret = 'pecl.php.net'; - } - - if ($ret) { - if ($ret != 'pear.php.net') { - $this->_lazyChannelSetup(); - } - - return $ret; - } - - return PEAR_CONFIG_DEFAULT_CHANNEL; - } - - /** - * Returns a configuration value, prioritizing layers as per the - * layers property. - * - * @param string config key - * @return mixed the config value, or NULL if not found - * @access public - */ - function get($key, $layer = null, $channel = false) - { - if (!isset($this->configuration_info[$key])) { - return null; - } - - if ($key == '__channels') { - return null; - } - - if ($key == 'default_channel') { - return $this->getDefaultChannel($layer); - } - - if (!$channel) { - $channel = $this->getDefaultChannel(); - } elseif ($channel != 'pear.php.net') { - $this->_lazyChannelSetup(); - } - $channel = strtolower($channel); - - $test = (in_array($key, $this->_channelConfigInfo)) ? - $this->_getChannelValue($key, $layer, $channel) : - null; - if ($test !== null) { - if ($this->_installRoot) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - return $this->_prependPath($test, $this->_installRoot); - } - } - return $test; - } - - if ($layer === null) { - foreach ($this->layers as $layer) { - if (isset($this->configuration[$layer][$key])) { - $test = $this->configuration[$layer][$key]; - if ($this->_installRoot) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - return $this->_prependPath($test, $this->_installRoot); - } - } - - if ($key == 'preferred_mirror') { - $reg = &$this->getRegistry(); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $channel; - } - - if (!$chan->getMirror($test) && $chan->getName() != $test) { - return $channel; // mirror does not exist - } - } - } - return $test; - } - } - } elseif (isset($this->configuration[$layer][$key])) { - $test = $this->configuration[$layer][$key]; - if ($this->_installRoot) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - return $this->_prependPath($test, $this->_installRoot); - } - } - - if ($key == 'preferred_mirror') { - $reg = &$this->getRegistry(); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $channel; - } - - if (!$chan->getMirror($test) && $chan->getName() != $test) { - return $channel; // mirror does not exist - } - } - } - - return $test; - } - - return null; - } - - /** - * Returns a channel-specific configuration value, prioritizing layers as per the - * layers property. - * - * @param string config key - * @return mixed the config value, or NULL if not found - * @access private - */ - function _getChannelValue($key, $layer, $channel) - { - if ($key == '__channels' || $channel == 'pear.php.net') { - return null; - } - - $ret = null; - if ($layer === null) { - foreach ($this->layers as $ilayer) { - if (isset($this->configuration[$ilayer]['__channels'][$channel][$key])) { - $ret = $this->configuration[$ilayer]['__channels'][$channel][$key]; - break; - } - } - } elseif (isset($this->configuration[$layer]['__channels'][$channel][$key])) { - $ret = $this->configuration[$layer]['__channels'][$channel][$key]; - } - - if ($key != 'preferred_mirror') { - return $ret; - } - - - if ($ret !== null) { - $reg = &$this->getRegistry($layer); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $channel; - } - - if (!$chan->getMirror($ret) && $chan->getName() != $ret) { - return $channel; // mirror does not exist - } - } - - return $ret; - } - - if ($channel != $this->getDefaultChannel($layer)) { - return $channel; // we must use the channel name as the preferred mirror - // if the user has not chosen an alternate - } - - return $this->getDefaultChannel($layer); - } - - /** - * Set a config value in a specific layer (defaults to 'user'). - * Enforces the types defined in the configuration_info array. An - * integer config variable will be cast to int, and a set config - * variable will be validated against its legal values. - * - * @param string config key - * @param string config value - * @param string (optional) config layer - * @param string channel to set this value for, or null for global value - * @return bool TRUE on success, FALSE on failure - */ - function set($key, $value, $layer = 'user', $channel = false) - { - if ($key == '__channels') { - return false; - } - - if (!isset($this->configuration[$layer])) { - return false; - } - - if ($key == 'default_channel') { - // can only set this value globally - $channel = 'pear.php.net'; - if ($value != 'pear.php.net') { - $this->_lazyChannelSetup($layer); - } - } - - if ($key == 'preferred_mirror') { - if ($channel == '__uri') { - return false; // can't set the __uri pseudo-channel's mirror - } - - $reg = &$this->getRegistry($layer); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel ? $channel : 'pear.php.net'); - if (PEAR::isError($chan)) { - return false; - } - - if (!$chan->getMirror($value) && $chan->getName() != $value) { - return false; // mirror does not exist - } - } - } - - if (!isset($this->configuration_info[$key])) { - return false; - } - - extract($this->configuration_info[$key]); - switch ($type) { - case 'integer': - $value = (int)$value; - break; - case 'set': { - // If a valid_set is specified, require the value to - // be in the set. If there is no valid_set, accept - // any value. - if ($valid_set) { - reset($valid_set); - if ((key($valid_set) === 0 && !in_array($value, $valid_set)) || - (key($valid_set) !== 0 && empty($valid_set[$value]))) - { - return false; - } - } - break; - } - } - - if (!$channel) { - $channel = $this->get('default_channel', null, 'pear.php.net'); - } - - if (!in_array($channel, $this->_channels)) { - $this->_lazyChannelSetup($layer); - $reg = &$this->getRegistry($layer); - if ($reg) { - $channel = $reg->channelName($channel); - } - - if (!in_array($channel, $this->_channels)) { - return false; - } - } - - if ($channel != 'pear.php.net') { - if (in_array($key, $this->_channelConfigInfo)) { - $this->configuration[$layer]['__channels'][$channel][$key] = $value; - return true; - } - - return false; - } - - if ($key == 'default_channel') { - if (!isset($reg)) { - $reg = &$this->getRegistry($layer); - if (!$reg) { - $reg = &$this->getRegistry(); - } - } - - if ($reg) { - $value = $reg->channelName($value); - } - - if (!$value) { - return false; - } - } - - $this->configuration[$layer][$key] = $value; - if ($key == 'php_dir' && !$this->_noRegistry) { - if (!isset($this->_registry[$layer]) || - $value != $this->_registry[$layer]->install_dir) { - $this->_registry[$layer] = &new PEAR_Registry($value); - $this->_regInitialized[$layer] = false; - $this->_registry[$layer]->setConfig($this, false); - } - } - - return true; - } - - function _lazyChannelSetup($uselayer = false) - { - if ($this->_noRegistry) { - return; - } - - $merge = false; - foreach ($this->_registry as $layer => $p) { - if ($uselayer && $uselayer != $layer) { - continue; - } - - if (!$this->_regInitialized[$layer]) { - if ($layer == 'default' && isset($this->_registry['user']) || - isset($this->_registry['system'])) { - // only use the default registry if there are no alternatives - continue; - } - - if (!is_object($this->_registry[$layer])) { - if ($phpdir = $this->get('php_dir', $layer, 'pear.php.net')) { - $this->_registry[$layer] = &new PEAR_Registry($phpdir); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } else { - unset($this->_registry[$layer]); - return; - } - } - - $this->setChannels($this->_registry[$layer]->listChannels(), $merge); - $this->_regInitialized[$layer] = true; - $merge = true; - } - } - } - - /** - * Set the list of channels. - * - * This should be set via a call to {@link PEAR_Registry::listChannels()} - * @param array - * @param bool - * @return bool success of operation - */ - function setChannels($channels, $merge = false) - { - if (!is_array($channels)) { - return false; - } - - if ($merge) { - $this->_channels = array_merge($this->_channels, $channels); - } else { - $this->_channels = $channels; - } - - foreach ($channels as $channel) { - $channel = strtolower($channel); - if ($channel == 'pear.php.net') { - continue; - } - - foreach ($this->layers as $layer) { - if (!isset($this->configuration[$layer]['__channels'])) { - $this->configuration[$layer]['__channels'] = array(); - } - if (!isset($this->configuration[$layer]['__channels'][$channel]) - || !is_array($this->configuration[$layer]['__channels'][$channel])) { - $this->configuration[$layer]['__channels'][$channel] = array(); - } - } - } - - return true; - } - - /** - * Get the type of a config value. - * - * @param string config key - * - * @return string type, one of "string", "integer", "file", - * "directory", "set" or "password". - * - * @access public - * - */ - function getType($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['type']; - } - return false; - } - - /** - * Get the documentation for a config value. - * - * @param string config key - * @return string documentation string - * - * @access public - * - */ - function getDocs($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['doc']; - } - - return false; - } - - /** - * Get the short documentation for a config value. - * - * @param string config key - * @return string short documentation string - * - * @access public - * - */ - function getPrompt($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['prompt']; - } - - return false; - } - - /** - * Get the parameter group for a config key. - * - * @param string config key - * @return string parameter group - * - * @access public - * - */ - function getGroup($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['group']; - } - - return false; - } - - /** - * Get the list of parameter groups. - * - * @return array list of parameter groups - * - * @access public - * - */ - function getGroups() - { - $tmp = array(); - foreach ($this->configuration_info as $key => $info) { - $tmp[$info['group']] = 1; - } - - return array_keys($tmp); - } - - /** - * Get the list of the parameters in a group. - * - * @param string $group parameter group - * @return array list of parameters in $group - * - * @access public - * - */ - function getGroupKeys($group) - { - $keys = array(); - foreach ($this->configuration_info as $key => $info) { - if ($info['group'] == $group) { - $keys[] = $key; - } - } - - return $keys; - } - - /** - * Get the list of allowed set values for a config value. Returns - * NULL for config values that are not sets. - * - * @param string config key - * @return array enumerated array of set values, or NULL if the - * config key is unknown or not a set - * - * @access public - * - */ - function getSetValues($key) - { - if (isset($this->configuration_info[$key]) && - isset($this->configuration_info[$key]['type']) && - $this->configuration_info[$key]['type'] == 'set') - { - $valid_set = $this->configuration_info[$key]['valid_set']; - reset($valid_set); - if (key($valid_set) === 0) { - return $valid_set; - } - - return array_keys($valid_set); - } - - return null; - } - - /** - * Get all the current config keys. - * - * @return array simple array of config keys - * - * @access public - */ - function getKeys() - { - $keys = array(); - foreach ($this->layers as $layer) { - $test = $this->configuration[$layer]; - if (isset($test['__channels'])) { - foreach ($test['__channels'] as $channel => $configs) { - $keys = array_merge($keys, $configs); - } - } - - unset($test['__channels']); - $keys = array_merge($keys, $test); - - } - return array_keys($keys); - } - - /** - * Remove the a config key from a specific config layer. - * - * @param string config key - * @param string (optional) config layer - * @param string (optional) channel (defaults to default channel) - * @return bool TRUE on success, FALSE on failure - * - * @access public - */ - function remove($key, $layer = 'user', $channel = null) - { - if ($channel === null) { - $channel = $this->getDefaultChannel(); - } - - if ($channel !== 'pear.php.net') { - if (isset($this->configuration[$layer]['__channels'][$channel][$key])) { - unset($this->configuration[$layer]['__channels'][$channel][$key]); - return true; - } - } - - if (isset($this->configuration[$layer][$key])) { - unset($this->configuration[$layer][$key]); - return true; - } - - return false; - } - - /** - * Temporarily remove an entire config layer. USE WITH CARE! - * - * @param string config key - * @param string (optional) config layer - * @return bool TRUE on success, FALSE on failure - * - * @access public - */ - function removeLayer($layer) - { - if (isset($this->configuration[$layer])) { - $this->configuration[$layer] = array(); - return true; - } - - return false; - } - - /** - * Stores configuration data in a layer. - * - * @param string config layer to store - * @return bool TRUE on success, or PEAR error on failure - * - * @access public - */ - function store($layer = 'user', $data = null) - { - return $this->writeConfigFile(null, $layer, $data); - } - - /** - * Tells what config layer that gets to define a key. - * - * @param string config key - * @param boolean return the defining channel - * - * @return string|array the config layer, or an empty string if not found. - * - * if $returnchannel, the return is an array array('layer' => layername, - * 'channel' => channelname), or an empty string if not found - * - * @access public - */ - function definedBy($key, $returnchannel = false) - { - foreach ($this->layers as $layer) { - $channel = $this->getDefaultChannel(); - if ($channel !== 'pear.php.net') { - if (isset($this->configuration[$layer]['__channels'][$channel][$key])) { - if ($returnchannel) { - return array('layer' => $layer, 'channel' => $channel); - } - return $layer; - } - } - - if (isset($this->configuration[$layer][$key])) { - if ($returnchannel) { - return array('layer' => $layer, 'channel' => 'pear.php.net'); - } - return $layer; - } - } - - return ''; - } - - /** - * Tells whether a given key exists as a config value. - * - * @param string config key - * @return bool whether exists in this object - * - * @access public - */ - function isDefined($key) - { - foreach ($this->layers as $layer) { - if (isset($this->configuration[$layer][$key])) { - return true; - } - } - - return false; - } - - /** - * Tells whether a given config layer exists. - * - * @param string config layer - * @return bool whether exists in this object - * - * @access public - */ - function isDefinedLayer($layer) - { - return isset($this->configuration[$layer]); - } - - /** - * Returns the layers defined (except the 'default' one) - * - * @return array of the defined layers - */ - function getLayers() - { - $cf = $this->configuration; - unset($cf['default']); - return array_keys($cf); - } - - function apiVersion() - { - return '1.1'; - } - - /** - * @return PEAR_Registry - */ - function &getRegistry($use = null) - { - $layer = $use === null ? 'user' : $use; - if (isset($this->_registry[$layer])) { - return $this->_registry[$layer]; - } elseif ($use === null && isset($this->_registry['system'])) { - return $this->_registry['system']; - } elseif ($use === null && isset($this->_registry['default'])) { - return $this->_registry['default']; - } elseif ($use) { - $a = false; - return $a; - } - - // only go here if null was passed in - echo "CRITICAL ERROR: Registry could not be initialized from any value"; - exit(1); - } - - /** - * This is to allow customization like the use of installroot - * @param PEAR_Registry - * @return bool - */ - function setRegistry(&$reg, $layer = 'user') - { - if ($this->_noRegistry) { - return false; - } - - if (!in_array($layer, array('user', 'system'))) { - return false; - } - - $this->_registry[$layer] = &$reg; - if (is_object($reg)) { - $this->_registry[$layer]->setConfig($this, false); - } - - return true; - } - - function noRegistry() - { - $this->_noRegistry = true; - } - - /** - * @return PEAR_REST - */ - function &getREST($version, $options = array()) - { - $version = str_replace('.', '', $version); - if (!class_exists($class = 'PEAR_REST_' . $version)) { - require_once 'PEAR/REST/' . $version . '.php'; - } - - $remote = &new $class($this, $options); - return $remote; - } - - /** - * The ftp server is set in {@link readFTPConfigFile()}. It exists only if a - * remote configuration file has been specified - * @return PEAR_FTP|false - */ - function &getFTP() - { - if (isset($this->_ftp)) { - return $this->_ftp; - } - - $a = false; - return $a; - } - - function _prependPath($path, $prepend) - { - if (strlen($prepend) > 0) { - if (OS_WINDOWS && preg_match('/^[a-z]:/i', $path)) { - if (preg_match('/^[a-z]:/i', $prepend)) { - $prepend = substr($prepend, 2); - } elseif ($prepend{0} != '\\') { - $prepend = "\\$prepend"; - } - $path = substr($path, 0, 2) . $prepend . substr($path, 2); - } else { - $path = $prepend . $path; - } - } - return $path; - } - - /** - * @param string|false installation directory to prepend to all _dir variables, or false to - * disable - */ - function setInstallRoot($root) - { - if (substr($root, -1) == DIRECTORY_SEPARATOR) { - $root = substr($root, 0, -1); - } - $old = $this->_installRoot; - $this->_installRoot = $root; - if (($old != $root) && !$this->_noRegistry) { - foreach (array_keys($this->_registry) as $layer) { - if ($layer == 'ftp' || !isset($this->_registry[$layer])) { - continue; - } - $this->_registry[$layer] = - &new PEAR_Registry($this->get('php_dir', $layer, 'pear.php.net')); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } - } - } -} diff --git a/3rdparty/PEAR/Dependency.php b/3rdparty/PEAR/Dependency.php deleted file mode 100644 index 705167aa70fa158d03884b188ccadb3db8eca505..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Dependency.php +++ /dev/null @@ -1,487 +0,0 @@ - | -// | Stig Bakken | -// +----------------------------------------------------------------------+ -// -// $Id: Dependency.php,v 1.36.4.1 2004/12/27 07:04:19 cellog Exp $ - -require_once "PEAR.php"; - -define('PEAR_DEPENDENCY_MISSING', -1); -define('PEAR_DEPENDENCY_CONFLICT', -2); -define('PEAR_DEPENDENCY_UPGRADE_MINOR', -3); -define('PEAR_DEPENDENCY_UPGRADE_MAJOR', -4); -define('PEAR_DEPENDENCY_BAD_DEPENDENCY', -5); -define('PEAR_DEPENDENCY_MISSING_OPTIONAL', -6); -define('PEAR_DEPENDENCY_CONFLICT_OPTIONAL', -7); -define('PEAR_DEPENDENCY_UPGRADE_MINOR_OPTIONAL', -8); -define('PEAR_DEPENDENCY_UPGRADE_MAJOR_OPTIONAL', -9); - -/** - * Dependency check for PEAR packages - * - * The class is based on the dependency RFC that can be found at - * http://cvs.php.net/cvs.php/pearweb/rfc. It requires PHP >= 4.1 - * - * @author Tomas V.V.Vox - * @author Stig Bakken - */ -class PEAR_Dependency -{ - // {{{ constructor - /** - * Constructor - * - * @access public - * @param object Registry object - * @return void - */ - function PEAR_Dependency(&$registry) - { - $this->registry = &$registry; - } - - // }}} - // {{{ callCheckMethod() - - /** - * This method maps the XML dependency definition to the - * corresponding one from PEAR_Dependency - * - *
-    * $opts => Array
-    *    (
-    *        [type] => pkg
-    *        [rel] => ge
-    *        [version] => 3.4
-    *        [name] => HTML_Common
-    *        [optional] => false
-    *    )
-    * 
- * - * @param string Error message - * @param array Options - * @return boolean - */ - function callCheckMethod(&$errmsg, $opts) - { - $rel = isset($opts['rel']) ? $opts['rel'] : 'has'; - $req = isset($opts['version']) ? $opts['version'] : null; - $name = isset($opts['name']) ? $opts['name'] : null; - $opt = (isset($opts['optional']) && $opts['optional'] == 'yes') ? - $opts['optional'] : null; - $errmsg = ''; - switch ($opts['type']) { - case 'pkg': - return $this->checkPackage($errmsg, $name, $req, $rel, $opt); - break; - case 'ext': - return $this->checkExtension($errmsg, $name, $req, $rel, $opt); - break; - case 'php': - return $this->checkPHP($errmsg, $req, $rel); - break; - case 'prog': - return $this->checkProgram($errmsg, $name); - break; - case 'os': - return $this->checkOS($errmsg, $name); - break; - case 'sapi': - return $this->checkSAPI($errmsg, $name); - break; - case 'zend': - return $this->checkZend($errmsg, $name); - break; - default: - return "'{$opts['type']}' dependency type not supported"; - } - } - - // }}} - // {{{ checkPackage() - - /** - * Package dependencies check method - * - * @param string $errmsg Empty string, it will be populated with an error message, if any - * @param string $name Name of the package to test - * @param string $req The package version required - * @param string $relation How to compare versions with each other - * @param bool $opt Whether the relationship is optional - * - * @return mixed bool false if no error or the error string - */ - function checkPackage(&$errmsg, $name, $req = null, $relation = 'has', - $opt = false) - { - if (is_string($req) && substr($req, 0, 2) == 'v.') { - $req = substr($req, 2); - } - switch ($relation) { - case 'has': - if (!$this->registry->packageExists($name)) { - if ($opt) { - $errmsg = "package `$name' is recommended to utilize some features."; - return PEAR_DEPENDENCY_MISSING_OPTIONAL; - } - $errmsg = "requires package `$name'"; - return PEAR_DEPENDENCY_MISSING; - } - return false; - case 'not': - if ($this->registry->packageExists($name)) { - $errmsg = "conflicts with package `$name'"; - return PEAR_DEPENDENCY_CONFLICT; - } - return false; - case 'lt': - case 'le': - case 'eq': - case 'ne': - case 'ge': - case 'gt': - $version = $this->registry->packageInfo($name, 'version'); - if (!$this->registry->packageExists($name) - || !version_compare("$version", "$req", $relation)) - { - $code = $this->codeFromRelation($relation, $version, $req, $opt); - if ($opt) { - $errmsg = "package `$name' version " . $this->signOperator($relation) . - " $req is recommended to utilize some features."; - if ($version) { - $errmsg .= " Installed version is $version"; - } - return $code; - } - $errmsg = "requires package `$name' " . - $this->signOperator($relation) . " $req"; - return $code; - } - return false; - } - $errmsg = "relation '$relation' with requirement '$req' is not supported (name=$name)"; - return PEAR_DEPENDENCY_BAD_DEPENDENCY; - } - - // }}} - // {{{ checkPackageUninstall() - - /** - * Check package dependencies on uninstall - * - * @param string $error The resultant error string - * @param string $warning The resultant warning string - * @param string $name Name of the package to test - * - * @return bool true if there were errors - */ - function checkPackageUninstall(&$error, &$warning, $package) - { - $error = null; - $packages = $this->registry->listPackages(); - foreach ($packages as $pkg) { - if ($pkg == $package) { - continue; - } - $deps = $this->registry->packageInfo($pkg, 'release_deps'); - if (empty($deps)) { - continue; - } - foreach ($deps as $dep) { - if ($dep['type'] == 'pkg' && strcasecmp($dep['name'], $package) == 0) { - if ($dep['rel'] == 'ne' || $dep['rel'] == 'not') { - continue; - } - if (isset($dep['optional']) && $dep['optional'] == 'yes') { - $warning .= "\nWarning: Package '$pkg' optionally depends on '$package'"; - } else { - $error .= "Package '$pkg' depends on '$package'\n"; - } - } - } - } - return ($error) ? true : false; - } - - // }}} - // {{{ checkExtension() - - /** - * Extension dependencies check method - * - * @param string $name Name of the extension to test - * @param string $req_ext_ver Required extension version to compare with - * @param string $relation How to compare versions with eachother - * @param bool $opt Whether the relationship is optional - * - * @return mixed bool false if no error or the error string - */ - function checkExtension(&$errmsg, $name, $req = null, $relation = 'has', - $opt = false) - { - if ($relation == 'not') { - if (extension_loaded($name)) { - $errmsg = "conflicts with PHP extension '$name'"; - return PEAR_DEPENDENCY_CONFLICT; - } else { - return false; - } - } - - if (!extension_loaded($name)) { - if ($relation == 'not') { - return false; - } - if ($opt) { - $errmsg = "'$name' PHP extension is recommended to utilize some features"; - return PEAR_DEPENDENCY_MISSING_OPTIONAL; - } - $errmsg = "'$name' PHP extension is not installed"; - return PEAR_DEPENDENCY_MISSING; - } - if ($relation == 'has') { - return false; - } - $code = false; - if (is_string($req) && substr($req, 0, 2) == 'v.') { - $req = substr($req, 2); - } - $ext_ver = phpversion($name); - $operator = $relation; - // Force params to be strings, otherwise the comparation will fail (ex. 0.9==0.90) - if (!version_compare("$ext_ver", "$req", $operator)) { - $errmsg = "'$name' PHP extension version " . - $this->signOperator($operator) . " $req is required"; - $code = $this->codeFromRelation($relation, $ext_ver, $req, $opt); - if ($opt) { - $errmsg = "'$name' PHP extension version " . $this->signOperator($operator) . - " $req is recommended to utilize some features"; - return $code; - } - } - return $code; - } - - // }}} - // {{{ checkOS() - - /** - * Operating system dependencies check method - * - * @param string $os Name of the operating system - * - * @return mixed bool false if no error or the error string - */ - function checkOS(&$errmsg, $os) - { - // XXX Fixme: Implement a more flexible way, like - // comma separated values or something similar to PEAR_OS - static $myos; - if (empty($myos)) { - include_once "OS/Guess.php"; - $myos = new OS_Guess(); - } - // only 'has' relation is currently supported - if ($myos->matchSignature($os)) { - return false; - } - $errmsg = "'$os' operating system not supported"; - return PEAR_DEPENDENCY_CONFLICT; - } - - // }}} - // {{{ checkPHP() - - /** - * PHP version check method - * - * @param string $req which version to compare - * @param string $relation how to compare the version - * - * @return mixed bool false if no error or the error string - */ - function checkPHP(&$errmsg, $req, $relation = 'ge') - { - // this would be a bit stupid, but oh well :) - if ($relation == 'has') { - return false; - } - if ($relation == 'not') { - $errmsg = 'Invalid dependency - "not" is not allowed for php dependencies, ' . - 'php cannot conflict with itself'; - return PEAR_DEPENDENCY_BAD_DEPENDENCY; - } - if (substr($req, 0, 2) == 'v.') { - $req = substr($req,2, strlen($req) - 2); - } - $php_ver = phpversion(); - $operator = $relation; - if (!version_compare("$php_ver", "$req", $operator)) { - $errmsg = "PHP version " . $this->signOperator($operator) . - " $req is required"; - return PEAR_DEPENDENCY_CONFLICT; - } - return false; - } - - // }}} - // {{{ checkProgram() - - /** - * External program check method. Looks for executable files in - * directories listed in the PATH environment variable. - * - * @param string $program which program to look for - * - * @return mixed bool false if no error or the error string - */ - function checkProgram(&$errmsg, $program) - { - // XXX FIXME honor safe mode - $exe_suffix = OS_WINDOWS ? '.exe' : ''; - $path_elements = explode(PATH_SEPARATOR, getenv('PATH')); - foreach ($path_elements as $dir) { - $file = $dir . DIRECTORY_SEPARATOR . $program . $exe_suffix; - if (@file_exists($file) && @is_executable($file)) { - return false; - } - } - $errmsg = "'$program' program is not present in the PATH"; - return PEAR_DEPENDENCY_MISSING; - } - - // }}} - // {{{ checkSAPI() - - /** - * SAPI backend check method. Version comparison is not yet - * available here. - * - * @param string $name name of SAPI backend - * @param string $req which version to compare - * @param string $relation how to compare versions (currently - * hardcoded to 'has') - * @return mixed bool false if no error or the error string - */ - function checkSAPI(&$errmsg, $name, $req = null, $relation = 'has') - { - // XXX Fixme: There is no way to know if the user has or - // not other SAPI backends installed than the installer one - - $sapi_backend = php_sapi_name(); - // Version comparisons not supported, sapi backends don't have - // version information yet. - if ($sapi_backend == $name) { - return false; - } - $errmsg = "'$sapi_backend' SAPI backend not supported"; - return PEAR_DEPENDENCY_CONFLICT; - } - - // }}} - // {{{ checkZend() - - /** - * Zend version check method - * - * @param string $req which version to compare - * @param string $relation how to compare the version - * - * @return mixed bool false if no error or the error string - */ - function checkZend(&$errmsg, $req, $relation = 'ge') - { - if (substr($req, 0, 2) == 'v.') { - $req = substr($req,2, strlen($req) - 2); - } - $zend_ver = zend_version(); - $operator = substr($relation,0,2); - if (!version_compare("$zend_ver", "$req", $operator)) { - $errmsg = "Zend version " . $this->signOperator($operator) . - " $req is required"; - return PEAR_DEPENDENCY_CONFLICT; - } - return false; - } - - // }}} - // {{{ signOperator() - - /** - * Converts text comparing operators to them sign equivalents - * - * Example: 'ge' to '>=' - * - * @access public - * @param string Operator - * @return string Sign equivalent - */ - function signOperator($operator) - { - switch($operator) { - case 'lt': return '<'; - case 'le': return '<='; - case 'gt': return '>'; - case 'ge': return '>='; - case 'eq': return '=='; - case 'ne': return '!='; - default: - return $operator; - } - } - - // }}} - // {{{ codeFromRelation() - - /** - * Convert relation into corresponding code - * - * @access public - * @param string Relation - * @param string Version - * @param string Requirement - * @param bool Optional dependency indicator - * @return integer - */ - function codeFromRelation($relation, $version, $req, $opt = false) - { - $code = PEAR_DEPENDENCY_BAD_DEPENDENCY; - switch ($relation) { - case 'gt': case 'ge': case 'eq': - // upgrade - $have_major = preg_replace('/\D.*/', '', $version); - $need_major = preg_replace('/\D.*/', '', $req); - if ($need_major > $have_major) { - $code = $opt ? PEAR_DEPENDENCY_UPGRADE_MAJOR_OPTIONAL : - PEAR_DEPENDENCY_UPGRADE_MAJOR; - } else { - $code = $opt ? PEAR_DEPENDENCY_UPGRADE_MINOR_OPTIONAL : - PEAR_DEPENDENCY_UPGRADE_MINOR; - } - break; - case 'lt': case 'le': case 'ne': - $code = $opt ? PEAR_DEPENDENCY_CONFLICT_OPTIONAL : - PEAR_DEPENDENCY_CONFLICT; - break; - } - return $code; - } - - // }}} -} -?> diff --git a/3rdparty/PEAR/Dependency2.php b/3rdparty/PEAR/Dependency2.php deleted file mode 100644 index f3ddeb1cf1b4b5d874b533099348b91d961547dc..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Dependency2.php +++ /dev/null @@ -1,1358 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Dependency2.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Required for the PEAR_VALIDATE_* constants - */ -require_once 'PEAR/Validate.php'; - -/** - * Dependency check for PEAR packages - * - * This class handles both version 1.0 and 2.0 dependencies - * WARNING: *any* changes to this class must be duplicated in the - * test_PEAR_Dependency2 class found in tests/PEAR_Dependency2/setup.php.inc, - * or unit tests will not actually validate the changes - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Dependency2 -{ - /** - * One of the PEAR_VALIDATE_* states - * @see PEAR_VALIDATE_NORMAL - * @var integer - */ - var $_state; - - /** - * Command-line options to install/upgrade/uninstall commands - * @param array - */ - var $_options; - - /** - * @var OS_Guess - */ - var $_os; - - /** - * @var PEAR_Registry - */ - var $_registry; - - /** - * @var PEAR_Config - */ - var $_config; - - /** - * @var PEAR_DependencyDB - */ - var $_dependencydb; - - /** - * Output of PEAR_Registry::parsedPackageName() - * @var array - */ - var $_currentPackage; - - /** - * @param PEAR_Config - * @param array installation options - * @param array format of PEAR_Registry::parsedPackageName() - * @param int installation state (one of PEAR_VALIDATE_*) - */ - function PEAR_Dependency2(&$config, $installoptions, $package, - $state = PEAR_VALIDATE_INSTALLING) - { - $this->_config = &$config; - if (!class_exists('PEAR_DependencyDB')) { - require_once 'PEAR/DependencyDB.php'; - } - - if (isset($installoptions['packagingroot'])) { - // make sure depdb is in the right location - $config->setInstallRoot($installoptions['packagingroot']); - } - - $this->_registry = &$config->getRegistry(); - $this->_dependencydb = &PEAR_DependencyDB::singleton($config); - if (isset($installoptions['packagingroot'])) { - $config->setInstallRoot(false); - } - - $this->_options = $installoptions; - $this->_state = $state; - if (!class_exists('OS_Guess')) { - require_once 'OS/Guess.php'; - } - - $this->_os = new OS_Guess; - $this->_currentPackage = $package; - } - - function _getExtraString($dep) - { - $extra = ' ('; - if (isset($dep['uri'])) { - return ''; - } - - if (isset($dep['recommended'])) { - $extra .= 'recommended version ' . $dep['recommended']; - } else { - if (isset($dep['min'])) { - $extra .= 'version >= ' . $dep['min']; - } - - if (isset($dep['max'])) { - if ($extra != ' (') { - $extra .= ', '; - } - $extra .= 'version <= ' . $dep['max']; - } - - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - - if ($extra != ' (') { - $extra .= ', '; - } - - $extra .= 'excluded versions: '; - foreach ($dep['exclude'] as $i => $exclude) { - if ($i) { - $extra .= ', '; - } - $extra .= $exclude; - } - } - } - - $extra .= ')'; - if ($extra == ' ()') { - $extra = ''; - } - - return $extra; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function getPHP_OS() - { - return PHP_OS; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function getsysname() - { - return $this->_os->getSysname(); - } - - /** - * Specify a dependency on an OS. Use arch for detailed os/processor information - * - * There are two generic OS dependencies that will be the most common, unix and windows. - * Other options are linux, freebsd, darwin (OS X), sunos, irix, hpux, aix - */ - function validateOsDependency($dep) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - - if ($dep['name'] == '*') { - return true; - } - - $not = isset($dep['conflicts']) ? true : false; - switch (strtolower($dep['name'])) { - case 'windows' : - if ($not) { - if (strtolower(substr($this->getPHP_OS(), 0, 3)) == 'win') { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError("Cannot install %s on Windows"); - } - - return $this->warning("warning: Cannot install %s on Windows"); - } - } else { - if (strtolower(substr($this->getPHP_OS(), 0, 3)) != 'win') { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError("Can only install %s on Windows"); - } - - return $this->warning("warning: Can only install %s on Windows"); - } - } - break; - case 'unix' : - $unices = array('linux', 'freebsd', 'darwin', 'sunos', 'irix', 'hpux', 'aix'); - if ($not) { - if (in_array($this->getSysname(), $unices)) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError("Cannot install %s on any Unix system"); - } - - return $this->warning( "warning: Cannot install %s on any Unix system"); - } - } else { - if (!in_array($this->getSysname(), $unices)) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError("Can only install %s on a Unix system"); - } - - return $this->warning("warning: Can only install %s on a Unix system"); - } - } - break; - default : - if ($not) { - if (strtolower($dep['name']) == strtolower($this->getSysname())) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError('Cannot install %s on ' . $dep['name'] . - ' operating system'); - } - - return $this->warning('warning: Cannot install %s on ' . - $dep['name'] . ' operating system'); - } - } else { - if (strtolower($dep['name']) != strtolower($this->getSysname())) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('Cannot install %s on ' . - $this->getSysname() . - ' operating system, can only install on ' . $dep['name']); - } - - return $this->warning('warning: Cannot install %s on ' . - $this->getSysname() . - ' operating system, can only install on ' . $dep['name']); - } - } - } - return true; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function matchSignature($pattern) - { - return $this->_os->matchSignature($pattern); - } - - /** - * Specify a complex dependency on an OS/processor/kernel version, - * Use OS for simple operating system dependency. - * - * This is the only dependency that accepts an eregable pattern. The pattern - * will be matched against the php_uname() output parsed by OS_Guess - */ - function validateArchDependency($dep) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING) { - return true; - } - - $not = isset($dep['conflicts']) ? true : false; - if (!$this->matchSignature($dep['pattern'])) { - if (!$not) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s Architecture dependency failed, does not ' . - 'match "' . $dep['pattern'] . '"'); - } - - return $this->warning('warning: %s Architecture dependency failed, does ' . - 'not match "' . $dep['pattern'] . '"'); - } - - return true; - } - - if ($not) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s Architecture dependency failed, required "' . - $dep['pattern'] . '"'); - } - - return $this->warning('warning: %s Architecture dependency failed, ' . - 'required "' . $dep['pattern'] . '"'); - } - - return true; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function extension_loaded($name) - { - return extension_loaded($name); - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function phpversion($name = null) - { - if ($name !== null) { - return phpversion($name); - } - - return phpversion(); - } - - function validateExtensionDependency($dep, $required = true) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && - $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - - $loaded = $this->extension_loaded($dep['name']); - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - - if (!isset($dep['min']) && !isset($dep['max']) && - !isset($dep['recommended']) && !isset($dep['exclude']) - ) { - if ($loaded) { - if (isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra); - } - - return $this->warning('warning: %s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra); - } - - return true; - } - - if (isset($dep['conflicts'])) { - return true; - } - - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP extension "' . - $dep['name'] . '"' . $extra); - } - - return $this->warning('warning: %s requires PHP extension "' . - $dep['name'] . '"' . $extra); - } - - return $this->warning('%s can optionally use PHP extension "' . - $dep['name'] . '"' . $extra); - } - - if (!$loaded) { - if (isset($dep['conflicts'])) { - return true; - } - - if (!$required) { - return $this->warning('%s can optionally use PHP extension "' . - $dep['name'] . '"' . $extra); - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP extension "' . $dep['name'] . - '"' . $extra); - } - - return $this->warning('warning: %s requires PHP extension "' . $dep['name'] . - '"' . $extra); - } - - $version = (string) $this->phpversion($dep['name']); - if (empty($version)) { - $version = '0'; - } - - $fail = false; - if (isset($dep['min']) && !version_compare($version, $dep['min'], '>=')) { - $fail = true; - } - - if (isset($dep['max']) && !version_compare($version, $dep['max'], '<=')) { - $fail = true; - } - - if ($fail && !isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP extension "' . $dep['name'] . - '"' . $extra . ', installed version is ' . $version); - } - - return $this->warning('warning: %s requires PHP extension "' . $dep['name'] . - '"' . $extra . ', installed version is ' . $version); - } elseif ((isset($dep['min']) || isset($dep['max'])) && !$fail && isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } - - return $this->warning('warning: %s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } - - if (isset($dep['exclude'])) { - foreach ($dep['exclude'] as $exclude) { - if (version_compare($version, $exclude, '==')) { - if (isset($dep['conflicts'])) { - continue; - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s is not compatible with PHP extension "' . - $dep['name'] . '" version ' . - $exclude); - } - - return $this->warning('warning: %s is not compatible with PHP extension "' . - $dep['name'] . '" version ' . - $exclude); - } elseif (version_compare($version, $exclude, '!=') && isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } - - return $this->warning('warning: %s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } - } - } - - if (isset($dep['recommended'])) { - if (version_compare($version, $dep['recommended'], '==')) { - return true; - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s dependency: PHP extension ' . $dep['name'] . - ' version "' . $version . '"' . - ' is not the recommended version "' . $dep['recommended'] . - '", but may be compatible, use --force to install'); - } - - return $this->warning('warning: %s dependency: PHP extension ' . - $dep['name'] . ' version "' . $version . '"' . - ' is not the recommended version "' . $dep['recommended'].'"'); - } - - return true; - } - - function validatePhpDependency($dep) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && - $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - - $version = $this->phpversion(); - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - - if (isset($dep['min'])) { - if (!version_compare($version, $dep['min'], '>=')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP' . - $extra . ', installed version is ' . $version); - } - - return $this->warning('warning: %s requires PHP' . - $extra . ', installed version is ' . $version); - } - } - - if (isset($dep['max'])) { - if (!version_compare($version, $dep['max'], '<=')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP' . - $extra . ', installed version is ' . $version); - } - - return $this->warning('warning: %s requires PHP' . - $extra . ', installed version is ' . $version); - } - } - - if (isset($dep['exclude'])) { - foreach ($dep['exclude'] as $exclude) { - if (version_compare($version, $exclude, '==')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s is not compatible with PHP version ' . - $exclude); - } - - return $this->warning( - 'warning: %s is not compatible with PHP version ' . - $exclude); - } - } - } - - return true; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function getPEARVersion() - { - return '1.9.4'; - } - - function validatePearinstallerDependency($dep) - { - $pearversion = $this->getPEARVersion(); - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - - if (version_compare($pearversion, $dep['min'], '<')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } - - return $this->warning('warning: %s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } - - if (isset($dep['max'])) { - if (version_compare($pearversion, $dep['max'], '>')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } - - return $this->warning('warning: %s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } - } - - if (isset($dep['exclude'])) { - if (!isset($dep['exclude'][0])) { - $dep['exclude'] = array($dep['exclude']); - } - - foreach ($dep['exclude'] as $exclude) { - if (version_compare($exclude, $pearversion, '==')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s is not compatible with PEAR Installer ' . - 'version ' . $exclude); - } - - return $this->warning('warning: %s is not compatible with PEAR ' . - 'Installer version ' . $exclude); - } - } - } - - return true; - } - - function validateSubpackageDependency($dep, $required, $params) - { - return $this->validatePackageDependency($dep, $required, $params); - } - - /** - * @param array dependency information (2.0 format) - * @param boolean whether this is a required dependency - * @param array a list of downloaded packages to be installed, if any - * @param boolean if true, then deps on pear.php.net that fail will also check - * against pecl.php.net packages to accomodate extensions that have - * moved to pecl.php.net from pear.php.net - */ - function validatePackageDependency($dep, $required, $params, $depv1 = false) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && - $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - - if (isset($dep['providesextension'])) { - if ($this->extension_loaded($dep['providesextension'])) { - $save = $dep; - $subdep = $dep; - $subdep['name'] = $subdep['providesextension']; - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $ret = $this->validateExtensionDependency($subdep, $required); - PEAR::popErrorHandling(); - if (!PEAR::isError($ret)) { - return true; - } - } - } - - if ($this->_state == PEAR_VALIDATE_INSTALLING) { - return $this->_validatePackageInstall($dep, $required, $depv1); - } - - if ($this->_state == PEAR_VALIDATE_DOWNLOADING) { - return $this->_validatePackageDownload($dep, $required, $params, $depv1); - } - } - - function _validatePackageDownload($dep, $required, $params, $depv1 = false) - { - $dep['package'] = $dep['name']; - if (isset($dep['uri'])) { - $dep['channel'] = '__uri'; - } - - $depname = $this->_registry->parsedPackageNameToString($dep, true); - $found = false; - foreach ($params as $param) { - if ($param->isEqual( - array('package' => $dep['name'], - 'channel' => $dep['channel']))) { - $found = true; - break; - } - - if ($depv1 && $dep['channel'] == 'pear.php.net') { - if ($param->isEqual( - array('package' => $dep['name'], - 'channel' => 'pecl.php.net'))) { - $found = true; - break; - } - } - } - - if (!$found && isset($dep['providesextension'])) { - foreach ($params as $param) { - if ($param->isExtension($dep['providesextension'])) { - $found = true; - break; - } - } - } - - if ($found) { - $version = $param->getVersion(); - $installed = false; - $downloaded = true; - } else { - if ($this->_registry->packageExists($dep['name'], $dep['channel'])) { - $installed = true; - $downloaded = false; - $version = $this->_registry->packageinfo($dep['name'], 'version', - $dep['channel']); - } else { - if ($dep['channel'] == 'pecl.php.net' && $this->_registry->packageExists($dep['name'], - 'pear.php.net')) { - $installed = true; - $downloaded = false; - $version = $this->_registry->packageinfo($dep['name'], 'version', - 'pear.php.net'); - } else { - $version = 'not installed or downloaded'; - $installed = false; - $downloaded = false; - } - } - } - - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude']) && !is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - - if (!isset($dep['min']) && !isset($dep['max']) && - !isset($dep['recommended']) && !isset($dep['exclude']) - ) { - if ($installed || $downloaded) { - $installed = $installed ? 'installed' : 'downloaded'; - if (isset($dep['conflicts'])) { - $rest = ''; - if ($version) { - $rest = ", $installed version is " . $version; - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with package "' . $depname . '"' . $extra . $rest); - } - - return $this->warning('warning: %s conflicts with package "' . $depname . '"' . $extra . $rest); - } - - return true; - } - - if (isset($dep['conflicts'])) { - return true; - } - - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires package "' . $depname . '"' . $extra); - } - - return $this->warning('warning: %s requires package "' . $depname . '"' . $extra); - } - - return $this->warning('%s can optionally use package "' . $depname . '"' . $extra); - } - - if (!$installed && !$downloaded) { - if (isset($dep['conflicts'])) { - return true; - } - - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires package "' . $depname . '"' . $extra); - } - - return $this->warning('warning: %s requires package "' . $depname . '"' . $extra); - } - - return $this->warning('%s can optionally use package "' . $depname . '"' . $extra); - } - - $fail = false; - if (isset($dep['min']) && version_compare($version, $dep['min'], '<')) { - $fail = true; - } - - if (isset($dep['max']) && version_compare($version, $dep['max'], '>')) { - $fail = true; - } - - if ($fail && !isset($dep['conflicts'])) { - $installed = $installed ? 'installed' : 'downloaded'; - $dep['package'] = $dep['name']; - $dep = $this->_registry->parsedPackageNameToString($dep, true); - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } - - return $this->warning('warning: %s requires package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } elseif ((isset($dep['min']) || isset($dep['max'])) && !$fail && - isset($dep['conflicts']) && !isset($dep['exclude'])) { - $installed = $installed ? 'installed' : 'downloaded'; - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with package "' . $depname . '"' . $extra . - ", $installed version is " . $version); - } - - return $this->warning('warning: %s conflicts with package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } - - if (isset($dep['exclude'])) { - $installed = $installed ? 'installed' : 'downloaded'; - foreach ($dep['exclude'] as $exclude) { - if (version_compare($version, $exclude, '==') && !isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force']) - ) { - return $this->raiseError('%s is not compatible with ' . - $installed . ' package "' . - $depname . '" version ' . - $exclude); - } - - return $this->warning('warning: %s is not compatible with ' . - $installed . ' package "' . - $depname . '" version ' . - $exclude); - } elseif (version_compare($version, $exclude, '!=') && isset($dep['conflicts'])) { - $installed = $installed ? 'installed' : 'downloaded'; - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } - - return $this->warning('warning: %s conflicts with package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } - } - } - - if (isset($dep['recommended'])) { - $installed = $installed ? 'installed' : 'downloaded'; - if (version_compare($version, $dep['recommended'], '==')) { - return true; - } - - if (!$found && $installed) { - $param = $this->_registry->getPackage($dep['name'], $dep['channel']); - } - - if ($param) { - $found = false; - foreach ($params as $parent) { - if ($parent->isEqual($this->_currentPackage)) { - $found = true; - break; - } - } - - if ($found) { - if ($param->isCompatible($parent)) { - return true; - } - } else { // this is for validPackage() calls - $parent = $this->_registry->getPackage($this->_currentPackage['package'], - $this->_currentPackage['channel']); - if ($parent !== null && $param->isCompatible($parent)) { - return true; - } - } - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['force']) && - !isset($this->_options['loose']) - ) { - return $this->raiseError('%s dependency package "' . $depname . - '" ' . $installed . ' version ' . $version . - ' is not the recommended version ' . $dep['recommended'] . - ', but may be compatible, use --force to install'); - } - - return $this->warning('warning: %s dependency package "' . $depname . - '" ' . $installed . ' version ' . $version . - ' is not the recommended version ' . $dep['recommended']); - } - - return true; - } - - function _validatePackageInstall($dep, $required, $depv1 = false) - { - return $this->_validatePackageDownload($dep, $required, array(), $depv1); - } - - /** - * Verify that uninstalling packages passed in to command line is OK. - * - * @param PEAR_Installer $dl - * @return PEAR_Error|true - */ - function validatePackageUninstall(&$dl) - { - if (PEAR::isError($this->_dependencydb)) { - return $this->_dependencydb; - } - - $params = array(); - // construct an array of "downloaded" packages to fool the package dependency checker - // into using these to validate uninstalls of circular dependencies - $downloaded = &$dl->getUninstallPackages(); - foreach ($downloaded as $i => $pf) { - if (!class_exists('PEAR_Downloader_Package')) { - require_once 'PEAR/Downloader/Package.php'; - } - $dp = &new PEAR_Downloader_Package($dl); - $dp->setPackageFile($downloaded[$i]); - $params[$i] = &$dp; - } - - // check cache - $memyselfandI = strtolower($this->_currentPackage['channel']) . '/' . - strtolower($this->_currentPackage['package']); - if (isset($dl->___uninstall_package_cache)) { - $badpackages = $dl->___uninstall_package_cache; - if (isset($badpackages[$memyselfandI]['warnings'])) { - foreach ($badpackages[$memyselfandI]['warnings'] as $warning) { - $dl->log(0, $warning[0]); - } - } - - if (isset($badpackages[$memyselfandI]['errors'])) { - foreach ($badpackages[$memyselfandI]['errors'] as $error) { - if (is_array($error)) { - $dl->log(0, $error[0]); - } else { - $dl->log(0, $error->getMessage()); - } - } - - if (isset($this->_options['nodeps']) || isset($this->_options['force'])) { - return $this->warning( - 'warning: %s should not be uninstalled, other installed packages depend ' . - 'on this package'); - } - - return $this->raiseError( - '%s cannot be uninstalled, other installed packages depend on this package'); - } - - return true; - } - - // first, list the immediate parents of each package to be uninstalled - $perpackagelist = array(); - $allparents = array(); - foreach ($params as $i => $param) { - $a = array( - 'channel' => strtolower($param->getChannel()), - 'package' => strtolower($param->getPackage()) - ); - - $deps = $this->_dependencydb->getDependentPackages($a); - if ($deps) { - foreach ($deps as $d) { - $pardeps = $this->_dependencydb->getDependencies($d); - foreach ($pardeps as $dep) { - if (strtolower($dep['dep']['channel']) == $a['channel'] && - strtolower($dep['dep']['name']) == $a['package']) { - if (!isset($perpackagelist[$a['channel'] . '/' . $a['package']])) { - $perpackagelist[$a['channel'] . '/' . $a['package']] = array(); - } - $perpackagelist[$a['channel'] . '/' . $a['package']][] - = array($d['channel'] . '/' . $d['package'], $dep); - if (!isset($allparents[$d['channel'] . '/' . $d['package']])) { - $allparents[$d['channel'] . '/' . $d['package']] = array(); - } - if (!isset($allparents[$d['channel'] . '/' . $d['package']][$a['channel'] . '/' . $a['package']])) { - $allparents[$d['channel'] . '/' . $d['package']][$a['channel'] . '/' . $a['package']] = array(); - } - $allparents[$d['channel'] . '/' . $d['package']] - [$a['channel'] . '/' . $a['package']][] - = array($d, $dep); - } - } - } - } - } - - // next, remove any packages from the parents list that are not installed - $remove = array(); - foreach ($allparents as $parent => $d1) { - foreach ($d1 as $d) { - if ($this->_registry->packageExists($d[0][0]['package'], $d[0][0]['channel'])) { - continue; - } - $remove[$parent] = true; - } - } - - // next remove any packages from the parents list that are not passed in for - // uninstallation - foreach ($allparents as $parent => $d1) { - foreach ($d1 as $d) { - foreach ($params as $param) { - if (strtolower($param->getChannel()) == $d[0][0]['channel'] && - strtolower($param->getPackage()) == $d[0][0]['package']) { - // found it - continue 3; - } - } - $remove[$parent] = true; - } - } - - // remove all packages whose dependencies fail - // save which ones failed for error reporting - $badchildren = array(); - do { - $fail = false; - foreach ($remove as $package => $unused) { - if (!isset($allparents[$package])) { - continue; - } - - foreach ($allparents[$package] as $kid => $d1) { - foreach ($d1 as $depinfo) { - if ($depinfo[1]['type'] != 'optional') { - if (isset($badchildren[$kid])) { - continue; - } - $badchildren[$kid] = true; - $remove[$kid] = true; - $fail = true; - continue 2; - } - } - } - if ($fail) { - // start over, we removed some children - continue 2; - } - } - } while ($fail); - - // next, construct the list of packages that can't be uninstalled - $badpackages = array(); - $save = $this->_currentPackage; - foreach ($perpackagelist as $package => $packagedeps) { - foreach ($packagedeps as $parent) { - if (!isset($remove[$parent[0]])) { - continue; - } - - $packagename = $this->_registry->parsePackageName($parent[0]); - $packagename['channel'] = $this->_registry->channelAlias($packagename['channel']); - $pa = $this->_registry->getPackage($packagename['package'], $packagename['channel']); - $packagename['package'] = $pa->getPackage(); - $this->_currentPackage = $packagename; - // parent is not present in uninstall list, make sure we can actually - // uninstall it (parent dep is optional) - $parentname['channel'] = $this->_registry->channelAlias($parent[1]['dep']['channel']); - $pa = $this->_registry->getPackage($parent[1]['dep']['name'], $parent[1]['dep']['channel']); - $parentname['package'] = $pa->getPackage(); - $parent[1]['dep']['package'] = $parentname['package']; - $parent[1]['dep']['channel'] = $parentname['channel']; - if ($parent[1]['type'] == 'optional') { - $test = $this->_validatePackageUninstall($parent[1]['dep'], false, $dl); - if ($test !== true) { - $badpackages[$package]['warnings'][] = $test; - } - } else { - $test = $this->_validatePackageUninstall($parent[1]['dep'], true, $dl); - if ($test !== true) { - $badpackages[$package]['errors'][] = $test; - } - } - } - } - - $this->_currentPackage = $save; - $dl->___uninstall_package_cache = $badpackages; - if (isset($badpackages[$memyselfandI])) { - if (isset($badpackages[$memyselfandI]['warnings'])) { - foreach ($badpackages[$memyselfandI]['warnings'] as $warning) { - $dl->log(0, $warning[0]); - } - } - - if (isset($badpackages[$memyselfandI]['errors'])) { - foreach ($badpackages[$memyselfandI]['errors'] as $error) { - if (is_array($error)) { - $dl->log(0, $error[0]); - } else { - $dl->log(0, $error->getMessage()); - } - } - - if (isset($this->_options['nodeps']) || isset($this->_options['force'])) { - return $this->warning( - 'warning: %s should not be uninstalled, other installed packages depend ' . - 'on this package'); - } - - return $this->raiseError( - '%s cannot be uninstalled, other installed packages depend on this package'); - } - } - - return true; - } - - function _validatePackageUninstall($dep, $required, $dl) - { - $depname = $this->_registry->parsedPackageNameToString($dep, true); - $version = $this->_registry->packageinfo($dep['package'], 'version', $dep['channel']); - if (!$version) { - return true; - } - - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude']) && !is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - - if (isset($dep['conflicts'])) { - return true; // uninstall OK - these packages conflict (probably installed with --force) - } - - if (!isset($dep['min']) && !isset($dep['max'])) { - if (!$required) { - return $this->warning('"' . $depname . '" can be optionally used by ' . - 'installed package %s' . $extra); - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('"' . $depname . '" is required by ' . - 'installed package %s' . $extra); - } - - return $this->warning('warning: "' . $depname . '" is required by ' . - 'installed package %s' . $extra); - } - - $fail = false; - if (isset($dep['min']) && version_compare($version, $dep['min'], '>=')) { - $fail = true; - } - - if (isset($dep['max']) && version_compare($version, $dep['max'], '<=')) { - $fail = true; - } - - // we re-use this variable, preserve the original value - $saverequired = $required; - if (!$required) { - return $this->warning($depname . $extra . ' can be optionally used by installed package' . - ' "%s"'); - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError($depname . $extra . ' is required by installed package' . - ' "%s"'); - } - - return $this->raiseError('warning: ' . $depname . $extra . - ' is required by installed package "%s"'); - } - - /** - * validate a downloaded package against installed packages - * - * As of PEAR 1.4.3, this will only validate - * - * @param array|PEAR_Downloader_Package|PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * $pkg package identifier (either - * array('package' => blah, 'channel' => blah) or an array with - * index 'info' referencing an object) - * @param PEAR_Downloader $dl - * @param array $params full list of packages to install - * @return true|PEAR_Error - */ - function validatePackage($pkg, &$dl, $params = array()) - { - if (is_array($pkg) && isset($pkg['info'])) { - $deps = $this->_dependencydb->getDependentPackageDependencies($pkg['info']); - } else { - $deps = $this->_dependencydb->getDependentPackageDependencies($pkg); - } - - $fail = false; - if ($deps) { - if (!class_exists('PEAR_Downloader_Package')) { - require_once 'PEAR/Downloader/Package.php'; - } - - $dp = &new PEAR_Downloader_Package($dl); - if (is_object($pkg)) { - $dp->setPackageFile($pkg); - } else { - $dp->setDownloadURL($pkg); - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($deps as $channel => $info) { - foreach ($info as $package => $ds) { - foreach ($params as $packd) { - if (strtolower($packd->getPackage()) == strtolower($package) && - $packd->getChannel() == $channel) { - $dl->log(3, 'skipping installed package check of "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $channel, 'package' => $package), - true) . - '", version "' . $packd->getVersion() . '" will be ' . - 'downloaded and installed'); - continue 2; // jump to next package - } - } - - foreach ($ds as $d) { - $checker = &new PEAR_Dependency2($this->_config, $this->_options, - array('channel' => $channel, 'package' => $package), $this->_state); - $dep = $d['dep']; - $required = $d['type'] == 'required'; - $ret = $checker->_validatePackageDownload($dep, $required, array(&$dp)); - if (is_array($ret)) { - $dl->log(0, $ret[0]); - } elseif (PEAR::isError($ret)) { - $dl->log(0, $ret->getMessage()); - $fail = true; - } - } - } - } - PEAR::popErrorHandling(); - } - - if ($fail) { - return $this->raiseError( - '%s cannot be installed, conflicts with installed packages'); - } - - return true; - } - - /** - * validate a package.xml 1.0 dependency - */ - function validateDependency1($dep, $params = array()) - { - if (!isset($dep['optional'])) { - $dep['optional'] = 'no'; - } - - list($newdep, $type) = $this->normalizeDep($dep); - if (!$newdep) { - return $this->raiseError("Invalid Dependency"); - } - - if (method_exists($this, "validate{$type}Dependency")) { - return $this->{"validate{$type}Dependency"}($newdep, $dep['optional'] == 'no', - $params, true); - } - } - - /** - * Convert a 1.0 dep into a 2.0 dep - */ - function normalizeDep($dep) - { - $types = array( - 'pkg' => 'Package', - 'ext' => 'Extension', - 'os' => 'Os', - 'php' => 'Php' - ); - - if (!isset($types[$dep['type']])) { - return array(false, false); - } - - $type = $types[$dep['type']]; - - $newdep = array(); - switch ($type) { - case 'Package' : - $newdep['channel'] = 'pear.php.net'; - case 'Extension' : - case 'Os' : - $newdep['name'] = $dep['name']; - break; - } - - $dep['rel'] = PEAR_Dependency2::signOperator($dep['rel']); - switch ($dep['rel']) { - case 'has' : - return array($newdep, $type); - break; - case 'not' : - $newdep['conflicts'] = true; - break; - case '>=' : - case '>' : - $newdep['min'] = $dep['version']; - if ($dep['rel'] == '>') { - $newdep['exclude'] = $dep['version']; - } - break; - case '<=' : - case '<' : - $newdep['max'] = $dep['version']; - if ($dep['rel'] == '<') { - $newdep['exclude'] = $dep['version']; - } - break; - case 'ne' : - case '!=' : - $newdep['min'] = '0'; - $newdep['max'] = '100000'; - $newdep['exclude'] = $dep['version']; - break; - case '==' : - $newdep['min'] = $dep['version']; - $newdep['max'] = $dep['version']; - break; - } - if ($type == 'Php') { - if (!isset($newdep['min'])) { - $newdep['min'] = '4.4.0'; - } - - if (!isset($newdep['max'])) { - $newdep['max'] = '6.0.0'; - } - } - return array($newdep, $type); - } - - /** - * Converts text comparing operators to them sign equivalents - * - * Example: 'ge' to '>=' - * - * @access public - * @param string Operator - * @return string Sign equivalent - */ - function signOperator($operator) - { - switch($operator) { - case 'lt': return '<'; - case 'le': return '<='; - case 'gt': return '>'; - case 'ge': return '>='; - case 'eq': return '=='; - case 'ne': return '!='; - default: - return $operator; - } - } - - function raiseError($msg) - { - if (isset($this->_options['ignore-errors'])) { - return $this->warning($msg); - } - - return PEAR::raiseError(sprintf($msg, $this->_registry->parsedPackageNameToString( - $this->_currentPackage, true))); - } - - function warning($msg) - { - return array(sprintf($msg, $this->_registry->parsedPackageNameToString( - $this->_currentPackage, true))); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/DependencyDB.php b/3rdparty/PEAR/DependencyDB.php deleted file mode 100644 index 948f0c9d7083e31f27aa22b6caa340486d603a50..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/DependencyDB.php +++ /dev/null @@ -1,769 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: DependencyDB.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Needed for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Config.php'; - -$GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'] = array(); -/** - * Track dependency relationships between installed packages - * @category pear - * @package PEAR - * @author Greg Beaver - * @author Tomas V.V.Cox - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_DependencyDB -{ - // {{{ properties - - /** - * This is initialized by {@link setConfig()} - * @var PEAR_Config - * @access private - */ - var $_config; - /** - * This is initialized by {@link setConfig()} - * @var PEAR_Registry - * @access private - */ - var $_registry; - /** - * Filename of the dependency DB (usually .depdb) - * @var string - * @access private - */ - var $_depdb = false; - /** - * File name of the lockfile (usually .depdblock) - * @var string - * @access private - */ - var $_lockfile = false; - /** - * Open file resource for locking the lockfile - * @var resource|false - * @access private - */ - var $_lockFp = false; - /** - * API version of this class, used to validate a file on-disk - * @var string - * @access private - */ - var $_version = '1.0'; - /** - * Cached dependency database file - * @var array|null - * @access private - */ - var $_cache; - - // }}} - // {{{ & singleton() - - /** - * Get a raw dependency database. Calls setConfig() and assertDepsDB() - * @param PEAR_Config - * @param string|false full path to the dependency database, or false to use default - * @return PEAR_DependencyDB|PEAR_Error - * @static - */ - function &singleton(&$config, $depdb = false) - { - $phpdir = $config->get('php_dir', null, 'pear.php.net'); - if (!isset($GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'][$phpdir])) { - $a = new PEAR_DependencyDB; - $GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'][$phpdir] = &$a; - $a->setConfig($config, $depdb); - $e = $a->assertDepsDB(); - if (PEAR::isError($e)) { - return $e; - } - } - - return $GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'][$phpdir]; - } - - /** - * Set up the registry/location of dependency DB - * @param PEAR_Config|false - * @param string|false full path to the dependency database, or false to use default - */ - function setConfig(&$config, $depdb = false) - { - if (!$config) { - $this->_config = &PEAR_Config::singleton(); - } else { - $this->_config = &$config; - } - - $this->_registry = &$this->_config->getRegistry(); - if (!$depdb) { - $this->_depdb = $this->_config->get('php_dir', null, 'pear.php.net') . - DIRECTORY_SEPARATOR . '.depdb'; - } else { - $this->_depdb = $depdb; - } - - $this->_lockfile = dirname($this->_depdb) . DIRECTORY_SEPARATOR . '.depdblock'; - } - // }}} - - function hasWriteAccess() - { - if (!file_exists($this->_depdb)) { - $dir = $this->_depdb; - while ($dir && $dir != '.') { - $dir = dirname($dir); // cd .. - if ($dir != '.' && file_exists($dir)) { - if (is_writeable($dir)) { - return true; - } - - return false; - } - } - - return false; - } - - return is_writeable($this->_depdb); - } - - // {{{ assertDepsDB() - - /** - * Create the dependency database, if it doesn't exist. Error if the database is - * newer than the code reading it. - * @return void|PEAR_Error - */ - function assertDepsDB() - { - if (!is_file($this->_depdb)) { - $this->rebuildDB(); - return; - } - - $depdb = $this->_getDepDB(); - // Datatype format has been changed, rebuild the Deps DB - if ($depdb['_version'] < $this->_version) { - $this->rebuildDB(); - } - - if ($depdb['_version']{0} > $this->_version{0}) { - return PEAR::raiseError('Dependency database is version ' . - $depdb['_version'] . ', and we are version ' . - $this->_version . ', cannot continue'); - } - } - - /** - * Get a list of installed packages that depend on this package - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array - * @return array|false - */ - function getDependentPackages(&$pkg) - { - $data = $this->_getDepDB(); - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - - if (isset($data['packages'][$channel][$package])) { - return $data['packages'][$channel][$package]; - } - - return false; - } - - /** - * Get a list of the actual dependencies of installed packages that depend on - * a package. - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array - * @return array|false - */ - function getDependentPackageDependencies(&$pkg) - { - $data = $this->_getDepDB(); - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - - $depend = $this->getDependentPackages($pkg); - if (!$depend) { - return false; - } - - $dependencies = array(); - foreach ($depend as $info) { - $temp = $this->getDependencies($info); - foreach ($temp as $dep) { - if ( - isset($dep['dep'], $dep['dep']['channel'], $dep['dep']['name']) && - strtolower($dep['dep']['channel']) == $channel && - strtolower($dep['dep']['name']) == $package - ) { - if (!isset($dependencies[$info['channel']])) { - $dependencies[$info['channel']] = array(); - } - - if (!isset($dependencies[$info['channel']][$info['package']])) { - $dependencies[$info['channel']][$info['package']] = array(); - } - $dependencies[$info['channel']][$info['package']][] = $dep; - } - } - } - - return $dependencies; - } - - /** - * Get a list of dependencies of this installed package - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array - * @return array|false - */ - function getDependencies(&$pkg) - { - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - - $data = $this->_getDepDB(); - if (isset($data['dependencies'][$channel][$package])) { - return $data['dependencies'][$channel][$package]; - } - - return false; - } - - /** - * Determine whether $parent depends on $child, near or deep - * @param array|PEAR_PackageFile_v2|PEAR_PackageFile_v2 - * @param array|PEAR_PackageFile_v2|PEAR_PackageFile_v2 - */ - function dependsOn($parent, $child) - { - $c = array(); - $this->_getDepDB(); - return $this->_dependsOn($parent, $child, $c); - } - - function _dependsOn($parent, $child, &$checked) - { - if (is_object($parent)) { - $channel = strtolower($parent->getChannel()); - $package = strtolower($parent->getPackage()); - } else { - $channel = strtolower($parent['channel']); - $package = strtolower($parent['package']); - } - - if (is_object($child)) { - $depchannel = strtolower($child->getChannel()); - $deppackage = strtolower($child->getPackage()); - } else { - $depchannel = strtolower($child['channel']); - $deppackage = strtolower($child['package']); - } - - if (isset($checked[$channel][$package][$depchannel][$deppackage])) { - return false; // avoid endless recursion - } - - $checked[$channel][$package][$depchannel][$deppackage] = true; - if (!isset($this->_cache['dependencies'][$channel][$package])) { - return false; - } - - foreach ($this->_cache['dependencies'][$channel][$package] as $info) { - if (isset($info['dep']['uri'])) { - if (is_object($child)) { - if ($info['dep']['uri'] == $child->getURI()) { - return true; - } - } elseif (isset($child['uri'])) { - if ($info['dep']['uri'] == $child['uri']) { - return true; - } - } - return false; - } - - if (strtolower($info['dep']['channel']) == $depchannel && - strtolower($info['dep']['name']) == $deppackage) { - return true; - } - } - - foreach ($this->_cache['dependencies'][$channel][$package] as $info) { - if (isset($info['dep']['uri'])) { - if ($this->_dependsOn(array( - 'uri' => $info['dep']['uri'], - 'package' => $info['dep']['name']), $child, $checked)) { - return true; - } - } else { - if ($this->_dependsOn(array( - 'channel' => $info['dep']['channel'], - 'package' => $info['dep']['name']), $child, $checked)) { - return true; - } - } - } - - return false; - } - - /** - * Register dependencies of a package that is being installed or upgraded - * @param PEAR_PackageFile_v2|PEAR_PackageFile_v2 - */ - function installPackage(&$package) - { - $data = $this->_getDepDB(); - unset($this->_cache); - $this->_setPackageDeps($data, $package); - $this->_writeDepDB($data); - } - - /** - * Remove dependencies of a package that is being uninstalled, or upgraded. - * - * Upgraded packages first uninstall, then install - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array If an array, then it must have - * indices 'channel' and 'package' - */ - function uninstallPackage(&$pkg) - { - $data = $this->_getDepDB(); - unset($this->_cache); - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - - if (!isset($data['dependencies'][$channel][$package])) { - return true; - } - - foreach ($data['dependencies'][$channel][$package] as $dep) { - $found = false; - $depchannel = isset($dep['dep']['uri']) ? '__uri' : strtolower($dep['dep']['channel']); - $depname = strtolower($dep['dep']['name']); - if (isset($data['packages'][$depchannel][$depname])) { - foreach ($data['packages'][$depchannel][$depname] as $i => $info) { - if ($info['channel'] == $channel && $info['package'] == $package) { - $found = true; - break; - } - } - } - - if ($found) { - unset($data['packages'][$depchannel][$depname][$i]); - if (!count($data['packages'][$depchannel][$depname])) { - unset($data['packages'][$depchannel][$depname]); - if (!count($data['packages'][$depchannel])) { - unset($data['packages'][$depchannel]); - } - } else { - $data['packages'][$depchannel][$depname] = - array_values($data['packages'][$depchannel][$depname]); - } - } - } - - unset($data['dependencies'][$channel][$package]); - if (!count($data['dependencies'][$channel])) { - unset($data['dependencies'][$channel]); - } - - if (!count($data['dependencies'])) { - unset($data['dependencies']); - } - - if (!count($data['packages'])) { - unset($data['packages']); - } - - $this->_writeDepDB($data); - } - - /** - * Rebuild the dependency DB by reading registry entries. - * @return true|PEAR_Error - */ - function rebuildDB() - { - $depdb = array('_version' => $this->_version); - if (!$this->hasWriteAccess()) { - // allow startup for read-only with older Registry - return $depdb; - } - - $packages = $this->_registry->listAllPackages(); - if (PEAR::isError($packages)) { - return $packages; - } - - foreach ($packages as $channel => $ps) { - foreach ($ps as $package) { - $package = $this->_registry->getPackage($package, $channel); - if (PEAR::isError($package)) { - return $package; - } - $this->_setPackageDeps($depdb, $package); - } - } - - $error = $this->_writeDepDB($depdb); - if (PEAR::isError($error)) { - return $error; - } - - $this->_cache = $depdb; - return true; - } - - /** - * Register usage of the dependency DB to prevent race conditions - * @param int one of the LOCK_* constants - * @return true|PEAR_Error - * @access private - */ - function _lock($mode = LOCK_EX) - { - if (stristr(php_uname(), 'Windows 9')) { - return true; - } - - if ($mode != LOCK_UN && is_resource($this->_lockFp)) { - // XXX does not check type of lock (LOCK_SH/LOCK_EX) - return true; - } - - $open_mode = 'w'; - // XXX People reported problems with LOCK_SH and 'w' - if ($mode === LOCK_SH) { - if (!file_exists($this->_lockfile)) { - touch($this->_lockfile); - } elseif (!is_file($this->_lockfile)) { - return PEAR::raiseError('could not create Dependency lock file, ' . - 'it exists and is not a regular file'); - } - $open_mode = 'r'; - } - - if (!is_resource($this->_lockFp)) { - $this->_lockFp = @fopen($this->_lockfile, $open_mode); - } - - if (!is_resource($this->_lockFp)) { - return PEAR::raiseError("could not create Dependency lock file" . - (isset($php_errormsg) ? ": " . $php_errormsg : "")); - } - - if (!(int)flock($this->_lockFp, $mode)) { - switch ($mode) { - case LOCK_SH: $str = 'shared'; break; - case LOCK_EX: $str = 'exclusive'; break; - case LOCK_UN: $str = 'unlock'; break; - default: $str = 'unknown'; break; - } - - return PEAR::raiseError("could not acquire $str lock ($this->_lockfile)"); - } - - return true; - } - - /** - * Release usage of dependency DB - * @return true|PEAR_Error - * @access private - */ - function _unlock() - { - $ret = $this->_lock(LOCK_UN); - if (is_resource($this->_lockFp)) { - fclose($this->_lockFp); - } - $this->_lockFp = null; - return $ret; - } - - /** - * Load the dependency database from disk, or return the cache - * @return array|PEAR_Error - */ - function _getDepDB() - { - if (!$this->hasWriteAccess()) { - return array('_version' => $this->_version); - } - - if (isset($this->_cache)) { - return $this->_cache; - } - - if (!$fp = fopen($this->_depdb, 'r')) { - $err = PEAR::raiseError("Could not open dependencies file `".$this->_depdb."'"); - return $err; - } - - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - clearstatcache(); - fclose($fp); - $data = unserialize(file_get_contents($this->_depdb)); - set_magic_quotes_runtime($rt); - $this->_cache = $data; - return $data; - } - - /** - * Write out the dependency database to disk - * @param array the database - * @return true|PEAR_Error - * @access private - */ - function _writeDepDB(&$deps) - { - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - - if (!$fp = fopen($this->_depdb, 'wb')) { - $this->_unlock(); - return PEAR::raiseError("Could not open dependencies file `".$this->_depdb."' for writing"); - } - - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - fwrite($fp, serialize($deps)); - set_magic_quotes_runtime($rt); - fclose($fp); - $this->_unlock(); - $this->_cache = $deps; - return true; - } - - /** - * Register all dependencies from a package in the dependencies database, in essence - * "installing" the package's dependency information - * @param array the database - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @access private - */ - function _setPackageDeps(&$data, &$pkg) - { - $pkg->setConfig($this->_config); - if ($pkg->getPackagexmlVersion() == '1.0') { - $gen = &$pkg->getDefaultGenerator(); - $deps = $gen->dependenciesToV2(); - } else { - $deps = $pkg->getDeps(true); - } - - if (!$deps) { - return; - } - - if (!is_array($data)) { - $data = array(); - } - - if (!isset($data['dependencies'])) { - $data['dependencies'] = array(); - } - - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - - if (!isset($data['dependencies'][$channel])) { - $data['dependencies'][$channel] = array(); - } - - $data['dependencies'][$channel][$package] = array(); - if (isset($deps['required']['package'])) { - if (!isset($deps['required']['package'][0])) { - $deps['required']['package'] = array($deps['required']['package']); - } - - foreach ($deps['required']['package'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'required'); - } - } - - if (isset($deps['optional']['package'])) { - if (!isset($deps['optional']['package'][0])) { - $deps['optional']['package'] = array($deps['optional']['package']); - } - - foreach ($deps['optional']['package'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional'); - } - } - - if (isset($deps['required']['subpackage'])) { - if (!isset($deps['required']['subpackage'][0])) { - $deps['required']['subpackage'] = array($deps['required']['subpackage']); - } - - foreach ($deps['required']['subpackage'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'required'); - } - } - - if (isset($deps['optional']['subpackage'])) { - if (!isset($deps['optional']['subpackage'][0])) { - $deps['optional']['subpackage'] = array($deps['optional']['subpackage']); - } - - foreach ($deps['optional']['subpackage'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional'); - } - } - - if (isset($deps['group'])) { - if (!isset($deps['group'][0])) { - $deps['group'] = array($deps['group']); - } - - foreach ($deps['group'] as $group) { - if (isset($group['package'])) { - if (!isset($group['package'][0])) { - $group['package'] = array($group['package']); - } - - foreach ($group['package'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional', - $group['attribs']['name']); - } - } - - if (isset($group['subpackage'])) { - if (!isset($group['subpackage'][0])) { - $group['subpackage'] = array($group['subpackage']); - } - - foreach ($group['subpackage'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional', - $group['attribs']['name']); - } - } - } - } - - if ($data['dependencies'][$channel][$package] == array()) { - unset($data['dependencies'][$channel][$package]); - if (!count($data['dependencies'][$channel])) { - unset($data['dependencies'][$channel]); - } - } - } - - /** - * @param array the database - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param array the specific dependency - * @param required|optional whether this is a required or an optional dep - * @param string|false dependency group this dependency is from, or false for ordinary dep - */ - function _registerDep(&$data, &$pkg, $dep, $type, $group = false) - { - $info = array( - 'dep' => $dep, - 'type' => $type, - 'group' => $group - ); - - $dep = array_map('strtolower', $dep); - $depchannel = isset($dep['channel']) ? $dep['channel'] : '__uri'; - if (!isset($data['dependencies'])) { - $data['dependencies'] = array(); - } - - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - - if (!isset($data['dependencies'][$channel])) { - $data['dependencies'][$channel] = array(); - } - - if (!isset($data['dependencies'][$channel][$package])) { - $data['dependencies'][$channel][$package] = array(); - } - - $data['dependencies'][$channel][$package][] = $info; - if (isset($data['packages'][$depchannel][$dep['name']])) { - $found = false; - foreach ($data['packages'][$depchannel][$dep['name']] as $i => $p) { - if ($p['channel'] == $channel && $p['package'] == $package) { - $found = true; - break; - } - } - } else { - if (!isset($data['packages'])) { - $data['packages'] = array(); - } - - if (!isset($data['packages'][$depchannel])) { - $data['packages'][$depchannel] = array(); - } - - if (!isset($data['packages'][$depchannel][$dep['name']])) { - $data['packages'][$depchannel][$dep['name']] = array(); - } - - $found = false; - } - - if (!$found) { - $data['packages'][$depchannel][$dep['name']][] = array( - 'channel' => $channel, - 'package' => $package - ); - } - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Downloader.php b/3rdparty/PEAR/Downloader.php deleted file mode 100644 index 730df0b73874bc2da179c692d14a3bf896ce6de7..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Downloader.php +++ /dev/null @@ -1,1766 +0,0 @@ - - * @author Stig Bakken - * @author Tomas V. V. Cox - * @author Martin Jansen - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Downloader.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.3.0 - */ - -/** - * Needed for constants, extending - */ -require_once 'PEAR/Common.php'; - -define('PEAR_INSTALLER_OK', 1); -define('PEAR_INSTALLER_FAILED', 0); -define('PEAR_INSTALLER_SKIPPED', -1); -define('PEAR_INSTALLER_ERROR_NO_PREF_STATE', 2); - -/** - * Administration class used to download anything from the internet (PEAR Packages, - * static URLs, xml files) - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @author Stig Bakken - * @author Tomas V. V. Cox - * @author Martin Jansen - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.3.0 - */ -class PEAR_Downloader extends PEAR_Common -{ - /** - * @var PEAR_Registry - * @access private - */ - var $_registry; - - /** - * Preferred Installation State (snapshot, devel, alpha, beta, stable) - * @var string|null - * @access private - */ - var $_preferredState; - - /** - * Options from command-line passed to Install. - * - * Recognized options:
- * - onlyreqdeps : install all required dependencies as well - * - alldeps : install all dependencies, including optional - * - installroot : base relative path to install files in - * - force : force a download even if warnings would prevent it - * - nocompress : download uncompressed tarballs - * @see PEAR_Command_Install - * @access private - * @var array - */ - var $_options; - - /** - * Downloaded Packages after a call to download(). - * - * Format of each entry: - * - * - * array('pkg' => 'package_name', 'file' => '/path/to/local/file', - * 'info' => array() // parsed package.xml - * ); - * - * @access private - * @var array - */ - var $_downloadedPackages = array(); - - /** - * Packages slated for download. - * - * This is used to prevent downloading a package more than once should it be a dependency - * for two packages to be installed. - * Format of each entry: - * - *
-     * array('package_name1' => parsed package.xml, 'package_name2' => parsed package.xml,
-     * );
-     * 
- * @access private - * @var array - */ - var $_toDownload = array(); - - /** - * Array of every package installed, with names lower-cased. - * - * Format: - * - * array('package1' => 0, 'package2' => 1, ); - * - * @var array - */ - var $_installed = array(); - - /** - * @var array - * @access private - */ - var $_errorStack = array(); - - /** - * @var boolean - * @access private - */ - var $_internalDownload = false; - - /** - * Temporary variable used in sorting packages by dependency in {@link sortPkgDeps()} - * @var array - * @access private - */ - var $_packageSortTree; - - /** - * Temporary directory, or configuration value where downloads will occur - * @var string - */ - var $_downloadDir; - - /** - * @param PEAR_Frontend_* - * @param array - * @param PEAR_Config - */ - function PEAR_Downloader(&$ui, $options, &$config) - { - parent::PEAR_Common(); - $this->_options = $options; - $this->config = &$config; - $this->_preferredState = $this->config->get('preferred_state'); - $this->ui = &$ui; - if (!$this->_preferredState) { - // don't inadvertantly use a non-set preferred_state - $this->_preferredState = null; - } - - if (isset($this->_options['installroot'])) { - $this->config->setInstallRoot($this->_options['installroot']); - } - $this->_registry = &$config->getRegistry(); - - if (isset($this->_options['alldeps']) || isset($this->_options['onlyreqdeps'])) { - $this->_installed = $this->_registry->listAllPackages(); - foreach ($this->_installed as $key => $unused) { - if (!count($unused)) { - continue; - } - $strtolower = create_function('$a','return strtolower($a);'); - array_walk($this->_installed[$key], $strtolower); - } - } - } - - /** - * Attempt to discover a channel's remote capabilities from - * its server name - * @param string - * @return boolean - */ - function discover($channel) - { - $this->log(1, 'Attempting to discover channel "' . $channel . '"...'); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $callback = $this->ui ? array(&$this, '_downloadCallback') : null; - if (!class_exists('System')) { - require_once 'System.php'; - } - - $tmpdir = $this->config->get('temp_dir'); - $tmp = System::mktemp('-d -t "' . $tmpdir . '"'); - $a = $this->downloadHttp('http://' . $channel . '/channel.xml', $this->ui, $tmp, $callback, false); - PEAR::popErrorHandling(); - if (PEAR::isError($a)) { - // Attempt to fallback to https automatically. - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $this->log(1, 'Attempting fallback to https instead of http on channel "' . $channel . '"...'); - $a = $this->downloadHttp('https://' . $channel . '/channel.xml', $this->ui, $tmp, $callback, false); - PEAR::popErrorHandling(); - if (PEAR::isError($a)) { - return false; - } - } - - list($a, $lastmodified) = $a; - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $b = new PEAR_ChannelFile; - if ($b->fromXmlFile($a)) { - unlink($a); - if ($this->config->get('auto_discover')) { - $this->_registry->addChannel($b, $lastmodified); - $alias = $b->getName(); - if ($b->getName() == $this->_registry->channelName($b->getAlias())) { - $alias = $b->getAlias(); - } - - $this->log(1, 'Auto-discovered channel "' . $channel . - '", alias "' . $alias . '", adding to registry'); - } - - return true; - } - - unlink($a); - return false; - } - - /** - * For simpler unit-testing - * @param PEAR_Downloader - * @return PEAR_Downloader_Package - */ - function &newDownloaderPackage(&$t) - { - if (!class_exists('PEAR_Downloader_Package')) { - require_once 'PEAR/Downloader/Package.php'; - } - $a = &new PEAR_Downloader_Package($t); - return $a; - } - - /** - * For simpler unit-testing - * @param PEAR_Config - * @param array - * @param array - * @param int - */ - function &getDependency2Object(&$c, $i, $p, $s) - { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - $z = &new PEAR_Dependency2($c, $i, $p, $s); - return $z; - } - - function &download($params) - { - if (!count($params)) { - $a = array(); - return $a; - } - - if (!isset($this->_registry)) { - $this->_registry = &$this->config->getRegistry(); - } - - $channelschecked = array(); - // convert all parameters into PEAR_Downloader_Package objects - foreach ($params as $i => $param) { - $params[$i] = &$this->newDownloaderPackage($this); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $params[$i]->initialize($param); - PEAR::staticPopErrorHandling(); - if (!$err) { - // skip parameters that were missed by preferred_state - continue; - } - - if (PEAR::isError($err)) { - if (!isset($this->_options['soft']) && $err->getMessage() !== '') { - $this->log(0, $err->getMessage()); - } - - $params[$i] = false; - if (is_object($param)) { - $param = $param->getChannel() . '/' . $param->getPackage(); - } - - if (!isset($this->_options['soft'])) { - $this->log(2, 'Package "' . $param . '" is not valid'); - } - - // Message logged above in a specific verbose mode, passing null to not show up on CLI - $this->pushError(null, PEAR_INSTALLER_SKIPPED); - } else { - do { - if ($params[$i] && $params[$i]->getType() == 'local') { - // bug #7090 skip channel.xml check for local packages - break; - } - - if ($params[$i] && !isset($channelschecked[$params[$i]->getChannel()]) && - !isset($this->_options['offline']) - ) { - $channelschecked[$params[$i]->getChannel()] = true; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (!class_exists('System')) { - require_once 'System.php'; - } - - $curchannel = &$this->_registry->getChannel($params[$i]->getChannel()); - if (PEAR::isError($curchannel)) { - PEAR::staticPopErrorHandling(); - return $this->raiseError($curchannel); - } - - if (PEAR::isError($dir = $this->getDownloadDir())) { - PEAR::staticPopErrorHandling(); - break; - } - - $mirror = $this->config->get('preferred_mirror', null, $params[$i]->getChannel()); - $url = 'http://' . $mirror . '/channel.xml'; - $a = $this->downloadHttp($url, $this->ui, $dir, null, $curchannel->lastModified()); - - PEAR::staticPopErrorHandling(); - if (PEAR::isError($a) || !$a) { - // Attempt fallback to https automatically - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $a = $this->downloadHttp('https://' . $mirror . - '/channel.xml', $this->ui, $dir, null, $curchannel->lastModified()); - - PEAR::staticPopErrorHandling(); - if (PEAR::isError($a) || !$a) { - break; - } - } - $this->log(0, 'WARNING: channel "' . $params[$i]->getChannel() . '" has ' . - 'updated its protocols, use "' . PEAR_RUNTYPE . ' channel-update ' . $params[$i]->getChannel() . - '" to update'); - } - } while (false); - - if ($params[$i] && !isset($this->_options['downloadonly'])) { - if (isset($this->_options['packagingroot'])) { - $checkdir = $this->_prependPath( - $this->config->get('php_dir', null, $params[$i]->getChannel()), - $this->_options['packagingroot']); - } else { - $checkdir = $this->config->get('php_dir', - null, $params[$i]->getChannel()); - } - - while ($checkdir && $checkdir != '/' && !file_exists($checkdir)) { - $checkdir = dirname($checkdir); - } - - if ($checkdir == '.') { - $checkdir = '/'; - } - - if (!is_writeable($checkdir)) { - return PEAR::raiseError('Cannot install, php_dir for channel "' . - $params[$i]->getChannel() . '" is not writeable by the current user'); - } - } - } - } - - unset($channelschecked); - PEAR_Downloader_Package::removeDuplicates($params); - if (!count($params)) { - $a = array(); - return $a; - } - - if (!isset($this->_options['nodeps']) && !isset($this->_options['offline'])) { - $reverify = true; - while ($reverify) { - $reverify = false; - foreach ($params as $i => $param) { - //PHP Bug 40768 / PEAR Bug #10944 - //Nested foreaches fail in PHP 5.2.1 - key($params); - $ret = $params[$i]->detectDependencies($params); - if (PEAR::isError($ret)) { - $reverify = true; - $params[$i] = false; - PEAR_Downloader_Package::removeDuplicates($params); - if (!isset($this->_options['soft'])) { - $this->log(0, $ret->getMessage()); - } - continue 2; - } - } - } - } - - if (isset($this->_options['offline'])) { - $this->log(3, 'Skipping dependency download check, --offline specified'); - } - - if (!count($params)) { - $a = array(); - return $a; - } - - while (PEAR_Downloader_Package::mergeDependencies($params)); - PEAR_Downloader_Package::removeDuplicates($params, true); - $errorparams = array(); - if (PEAR_Downloader_Package::detectStupidDuplicates($params, $errorparams)) { - if (count($errorparams)) { - foreach ($errorparams as $param) { - $name = $this->_registry->parsedPackageNameToString($param->getParsedPackage()); - $this->pushError('Duplicate package ' . $name . ' found', PEAR_INSTALLER_FAILED); - } - $a = array(); - return $a; - } - } - - PEAR_Downloader_Package::removeInstalled($params); - if (!count($params)) { - $this->pushError('No valid packages found', PEAR_INSTALLER_FAILED); - $a = array(); - return $a; - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->analyzeDependencies($params); - PEAR::popErrorHandling(); - if (!count($params)) { - $this->pushError('No valid packages found', PEAR_INSTALLER_FAILED); - $a = array(); - return $a; - } - - $ret = array(); - $newparams = array(); - if (isset($this->_options['pretend'])) { - return $params; - } - - $somefailed = false; - foreach ($params as $i => $package) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pf = &$params[$i]->download(); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf)) { - if (!isset($this->_options['soft'])) { - $this->log(1, $pf->getMessage()); - $this->log(0, 'Error: cannot download "' . - $this->_registry->parsedPackageNameToString($package->getParsedPackage(), - true) . - '"'); - } - $somefailed = true; - continue; - } - - $newparams[] = &$params[$i]; - $ret[] = array( - 'file' => $pf->getArchiveFile(), - 'info' => &$pf, - 'pkg' => $pf->getPackage() - ); - } - - if ($somefailed) { - // remove params that did not download successfully - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->analyzeDependencies($newparams, true); - PEAR::popErrorHandling(); - if (!count($newparams)) { - $this->pushError('Download failed', PEAR_INSTALLER_FAILED); - $a = array(); - return $a; - } - } - - $this->_downloadedPackages = $ret; - return $newparams; - } - - /** - * @param array all packages to be installed - */ - function analyzeDependencies(&$params, $force = false) - { - if (isset($this->_options['downloadonly'])) { - return; - } - - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $redo = true; - $reset = $hasfailed = $failed = false; - while ($redo) { - $redo = false; - foreach ($params as $i => $param) { - $deps = $param->getDeps(); - if (!$deps) { - $depchecker = &$this->getDependency2Object($this->config, $this->getOptions(), - $param->getParsedPackage(), PEAR_VALIDATE_DOWNLOADING); - $send = $param->getPackageFile(); - - $installcheck = $depchecker->validatePackage($send, $this, $params); - if (PEAR::isError($installcheck)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $installcheck->getMessage()); - } - $hasfailed = true; - $params[$i] = false; - $reset = true; - $redo = true; - $failed = false; - PEAR_Downloader_Package::removeDuplicates($params); - continue 2; - } - continue; - } - - if (!$reset && $param->alreadyValidated() && !$force) { - continue; - } - - if (count($deps)) { - $depchecker = &$this->getDependency2Object($this->config, $this->getOptions(), - $param->getParsedPackage(), PEAR_VALIDATE_DOWNLOADING); - $send = $param->getPackageFile(); - if ($send === null) { - $send = $param->getDownloadURL(); - } - - $installcheck = $depchecker->validatePackage($send, $this, $params); - if (PEAR::isError($installcheck)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $installcheck->getMessage()); - } - $hasfailed = true; - $params[$i] = false; - $reset = true; - $redo = true; - $failed = false; - PEAR_Downloader_Package::removeDuplicates($params); - continue 2; - } - - $failed = false; - if (isset($deps['required']) && is_array($deps['required'])) { - foreach ($deps['required'] as $type => $dep) { - // note: Dependency2 will never return a PEAR_Error if ignore-errors - // is specified, so soft is needed to turn off logging - if (!isset($dep[0])) { - if (PEAR::isError($e = $depchecker->{"validate{$type}Dependency"}($dep, - true, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } else { - foreach ($dep as $d) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($d, - true, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - } - - if (isset($deps['optional']) && is_array($deps['optional'])) { - foreach ($deps['optional'] as $type => $dep) { - if (!isset($dep[0])) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($dep, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } else { - foreach ($dep as $d) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($d, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - } - } - - $groupname = $param->getGroup(); - if (isset($deps['group']) && $groupname) { - if (!isset($deps['group'][0])) { - $deps['group'] = array($deps['group']); - } - - $found = false; - foreach ($deps['group'] as $group) { - if ($group['attribs']['name'] == $groupname) { - $found = true; - break; - } - } - - if ($found) { - unset($group['attribs']); - foreach ($group as $type => $dep) { - if (!isset($dep[0])) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($dep, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } else { - foreach ($dep as $d) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($d, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - } - } - } - } else { - foreach ($deps as $dep) { - if (PEAR::isError($e = $depchecker->validateDependency1($dep, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - $params[$i]->setValidated(); - } - - if ($failed) { - $hasfailed = true; - $params[$i] = false; - $reset = true; - $redo = true; - $failed = false; - PEAR_Downloader_Package::removeDuplicates($params); - continue 2; - } - } - } - - PEAR::staticPopErrorHandling(); - if ($hasfailed && (isset($this->_options['ignore-errors']) || - isset($this->_options['nodeps']))) { - // this is probably not needed, but just in case - if (!isset($this->_options['soft'])) { - $this->log(0, 'WARNING: dependencies failed'); - } - } - } - - /** - * Retrieve the directory that downloads will happen in - * @access private - * @return string - */ - function getDownloadDir() - { - if (isset($this->_downloadDir)) { - return $this->_downloadDir; - } - - $downloaddir = $this->config->get('download_dir'); - if (empty($downloaddir) || (is_dir($downloaddir) && !is_writable($downloaddir))) { - if (is_dir($downloaddir) && !is_writable($downloaddir)) { - $this->log(0, 'WARNING: configuration download directory "' . $downloaddir . - '" is not writeable. Change download_dir config variable to ' . - 'a writeable dir to avoid this warning'); - } - - if (!class_exists('System')) { - require_once 'System.php'; - } - - if (PEAR::isError($downloaddir = System::mktemp('-d'))) { - return $downloaddir; - } - $this->log(3, '+ tmp dir created at ' . $downloaddir); - } - - if (!is_writable($downloaddir)) { - if (PEAR::isError(System::mkdir(array('-p', $downloaddir))) || - !is_writable($downloaddir)) { - return PEAR::raiseError('download directory "' . $downloaddir . - '" is not writeable. Change download_dir config variable to ' . - 'a writeable dir'); - } - } - - return $this->_downloadDir = $downloaddir; - } - - function setDownloadDir($dir) - { - if (!@is_writable($dir)) { - if (PEAR::isError(System::mkdir(array('-p', $dir)))) { - return PEAR::raiseError('download directory "' . $dir . - '" is not writeable. Change download_dir config variable to ' . - 'a writeable dir'); - } - } - $this->_downloadDir = $dir; - } - - function configSet($key, $value, $layer = 'user', $channel = false) - { - $this->config->set($key, $value, $layer, $channel); - $this->_preferredState = $this->config->get('preferred_state', null, $channel); - if (!$this->_preferredState) { - // don't inadvertantly use a non-set preferred_state - $this->_preferredState = null; - } - } - - function setOptions($options) - { - $this->_options = $options; - } - - function getOptions() - { - return $this->_options; - } - - - /** - * @param array output of {@link parsePackageName()} - * @access private - */ - function _getPackageDownloadUrl($parr) - { - $curchannel = $this->config->get('default_channel'); - $this->configSet('default_channel', $parr['channel']); - // getDownloadURL returns an array. On error, it only contains information - // on the latest release as array(version, info). On success it contains - // array(version, info, download url string) - $state = isset($parr['state']) ? $parr['state'] : $this->config->get('preferred_state'); - if (!$this->_registry->channelExists($parr['channel'])) { - do { - if ($this->config->get('auto_discover') && $this->discover($parr['channel'])) { - break; - } - - $this->configSet('default_channel', $curchannel); - return PEAR::raiseError('Unknown remote channel: ' . $parr['channel']); - } while (false); - } - - $chan = &$this->_registry->getChannel($parr['channel']); - if (PEAR::isError($chan)) { - return $chan; - } - - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $version = $this->_registry->packageInfo($parr['package'], 'version', $parr['channel']); - $stability = $this->_registry->packageInfo($parr['package'], 'stability', $parr['channel']); - // package is installed - use the installed release stability level - if (!isset($parr['state']) && $stability !== null) { - $state = $stability['release']; - } - PEAR::staticPopErrorHandling(); - $base2 = false; - - $preferred_mirror = $this->config->get('preferred_mirror'); - if (!$chan->supportsREST($preferred_mirror) || - ( - !($base2 = $chan->getBaseURL('REST1.3', $preferred_mirror)) - && - !($base = $chan->getBaseURL('REST1.0', $preferred_mirror)) - ) - ) { - return $this->raiseError($parr['channel'] . ' is using a unsupported protocol - This should never happen.'); - } - - if ($base2) { - $rest = &$this->config->getREST('1.3', $this->_options); - $base = $base2; - } else { - $rest = &$this->config->getREST('1.0', $this->_options); - } - - $downloadVersion = false; - if (!isset($parr['version']) && !isset($parr['state']) && $version - && !PEAR::isError($version) - && !isset($this->_options['downloadonly']) - ) { - $downloadVersion = $version; - } - - $url = $rest->getDownloadURL($base, $parr, $state, $downloadVersion, $chan->getName()); - if (PEAR::isError($url)) { - $this->configSet('default_channel', $curchannel); - return $url; - } - - if ($parr['channel'] != $curchannel) { - $this->configSet('default_channel', $curchannel); - } - - if (!is_array($url)) { - return $url; - } - - $url['raw'] = false; // no checking is necessary for REST - if (!is_array($url['info'])) { - return PEAR::raiseError('Invalid remote dependencies retrieved from REST - ' . - 'this should never happen'); - } - - if (!isset($this->_options['force']) && - !isset($this->_options['downloadonly']) && - $version && - !PEAR::isError($version) && - !isset($parr['group']) - ) { - if (version_compare($version, $url['version'], '=')) { - return PEAR::raiseError($this->_registry->parsedPackageNameToString( - $parr, true) . ' is already installed and is the same as the ' . - 'released version ' . $url['version'], -976); - } - - if (version_compare($version, $url['version'], '>')) { - return PEAR::raiseError($this->_registry->parsedPackageNameToString( - $parr, true) . ' is already installed and is newer than detected ' . - 'released version ' . $url['version'], -976); - } - } - - if (isset($url['info']['required']) || $url['compatible']) { - require_once 'PEAR/PackageFile/v2.php'; - $pf = new PEAR_PackageFile_v2; - $pf->setRawChannel($parr['channel']); - if ($url['compatible']) { - $pf->setRawCompatible($url['compatible']); - } - } else { - require_once 'PEAR/PackageFile/v1.php'; - $pf = new PEAR_PackageFile_v1; - } - - $pf->setRawPackage($url['package']); - $pf->setDeps($url['info']); - if ($url['compatible']) { - $pf->setCompatible($url['compatible']); - } - - $pf->setRawState($url['stability']); - $url['info'] = &$pf; - if (!extension_loaded("zlib") || isset($this->_options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - - if (is_array($url) && isset($url['url'])) { - $url['url'] .= $ext; - } - - return $url; - } - - /** - * @param array dependency array - * @access private - */ - function _getDepPackageDownloadUrl($dep, $parr) - { - $xsdversion = isset($dep['rel']) ? '1.0' : '2.0'; - $curchannel = $this->config->get('default_channel'); - if (isset($dep['uri'])) { - $xsdversion = '2.0'; - $chan = &$this->_registry->getChannel('__uri'); - if (PEAR::isError($chan)) { - return $chan; - } - - $version = $this->_registry->packageInfo($dep['name'], 'version', '__uri'); - $this->configSet('default_channel', '__uri'); - } else { - if (isset($dep['channel'])) { - $remotechannel = $dep['channel']; - } else { - $remotechannel = 'pear.php.net'; - } - - if (!$this->_registry->channelExists($remotechannel)) { - do { - if ($this->config->get('auto_discover')) { - if ($this->discover($remotechannel)) { - break; - } - } - return PEAR::raiseError('Unknown remote channel: ' . $remotechannel); - } while (false); - } - - $chan = &$this->_registry->getChannel($remotechannel); - if (PEAR::isError($chan)) { - return $chan; - } - - $version = $this->_registry->packageInfo($dep['name'], 'version', $remotechannel); - $this->configSet('default_channel', $remotechannel); - } - - $state = isset($parr['state']) ? $parr['state'] : $this->config->get('preferred_state'); - if (isset($parr['state']) && isset($parr['version'])) { - unset($parr['state']); - } - - if (isset($dep['uri'])) { - $info = &$this->newDownloaderPackage($this); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $info->initialize($dep); - PEAR::staticPopErrorHandling(); - if (!$err) { - // skip parameters that were missed by preferred_state - return PEAR::raiseError('Cannot initialize dependency'); - } - - if (PEAR::isError($err)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $err->getMessage()); - } - - if (is_object($info)) { - $param = $info->getChannel() . '/' . $info->getPackage(); - } - return PEAR::raiseError('Package "' . $param . '" is not valid'); - } - return $info; - } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) - && - ( - ($base2 = $chan->getBaseURL('REST1.3', $this->config->get('preferred_mirror'))) - || - ($base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) - ) - ) { - if ($base2) { - $base = $base2; - $rest = &$this->config->getREST('1.3', $this->_options); - } else { - $rest = &$this->config->getREST('1.0', $this->_options); - } - - $url = $rest->getDepDownloadURL($base, $xsdversion, $dep, $parr, - $state, $version, $chan->getName()); - if (PEAR::isError($url)) { - return $url; - } - - if ($parr['channel'] != $curchannel) { - $this->configSet('default_channel', $curchannel); - } - - if (!is_array($url)) { - return $url; - } - - $url['raw'] = false; // no checking is necessary for REST - if (!is_array($url['info'])) { - return PEAR::raiseError('Invalid remote dependencies retrieved from REST - ' . - 'this should never happen'); - } - - if (isset($url['info']['required'])) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - $pf = new PEAR_PackageFile_v2; - $pf->setRawChannel($remotechannel); - } else { - if (!class_exists('PEAR_PackageFile_v1')) { - require_once 'PEAR/PackageFile/v1.php'; - } - $pf = new PEAR_PackageFile_v1; - - } - $pf->setRawPackage($url['package']); - $pf->setDeps($url['info']); - if ($url['compatible']) { - $pf->setCompatible($url['compatible']); - } - - $pf->setRawState($url['stability']); - $url['info'] = &$pf; - if (!extension_loaded("zlib") || isset($this->_options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - - if (is_array($url) && isset($url['url'])) { - $url['url'] .= $ext; - } - - return $url; - } - - return $this->raiseError($parr['channel'] . ' is using a unsupported protocol - This should never happen.'); - } - - /** - * @deprecated in favor of _getPackageDownloadUrl - */ - function getPackageDownloadUrl($package, $version = null, $channel = false) - { - if ($version) { - $package .= "-$version"; - } - if ($this === null || $this->_registry === null) { - $package = "http://pear.php.net/get/$package"; - } else { - $chan = $this->_registry->getChannel($channel); - if (PEAR::isError($chan)) { - return ''; - } - $package = "http://" . $chan->getServer() . "/get/$package"; - } - if (!extension_loaded("zlib")) { - $package .= '?uncompress=yes'; - } - return $package; - } - - /** - * Retrieve a list of downloaded packages after a call to {@link download()}. - * - * Also resets the list of downloaded packages. - * @return array - */ - function getDownloadedPackages() - { - $ret = $this->_downloadedPackages; - $this->_downloadedPackages = array(); - $this->_toDownload = array(); - return $ret; - } - - function _downloadCallback($msg, $params = null) - { - switch ($msg) { - case 'saveas': - $this->log(1, "downloading $params ..."); - break; - case 'done': - $this->log(1, '...done: ' . number_format($params, 0, '', ',') . ' bytes'); - break; - case 'bytesread': - static $bytes; - if (empty($bytes)) { - $bytes = 0; - } - if (!($bytes % 10240)) { - $this->log(1, '.', false); - } - $bytes += $params; - break; - case 'start': - if($params[1] == -1) { - $length = "Unknown size"; - } else { - $length = number_format($params[1], 0, '', ',')." bytes"; - } - $this->log(1, "Starting to download {$params[0]} ($length)"); - break; - } - if (method_exists($this->ui, '_downloadCallback')) - $this->ui->_downloadCallback($msg, $params); - } - - function _prependPath($path, $prepend) - { - if (strlen($prepend) > 0) { - if (OS_WINDOWS && preg_match('/^[a-z]:/i', $path)) { - if (preg_match('/^[a-z]:/i', $prepend)) { - $prepend = substr($prepend, 2); - } elseif ($prepend{0} != '\\') { - $prepend = "\\$prepend"; - } - $path = substr($path, 0, 2) . $prepend . substr($path, 2); - } else { - $path = $prepend . $path; - } - } - return $path; - } - - /** - * @param string - * @param integer - */ - function pushError($errmsg, $code = -1) - { - array_push($this->_errorStack, array($errmsg, $code)); - } - - function getErrorMsgs() - { - $msgs = array(); - $errs = $this->_errorStack; - foreach ($errs as $err) { - $msgs[] = $err[0]; - } - $this->_errorStack = array(); - return $msgs; - } - - /** - * for BC - * - * @deprecated - */ - function sortPkgDeps(&$packages, $uninstall = false) - { - $uninstall ? - $this->sortPackagesForUninstall($packages) : - $this->sortPackagesForInstall($packages); - } - - /** - * Sort a list of arrays of array(downloaded packagefilename) by dependency. - * - * This uses the topological sort method from graph theory, and the - * Structures_Graph package to properly sort dependencies for installation. - * @param array an array of downloaded PEAR_Downloader_Packages - * @return array array of array(packagefilename, package.xml contents) - */ - function sortPackagesForInstall(&$packages) - { - require_once 'Structures/Graph.php'; - require_once 'Structures/Graph/Node.php'; - require_once 'Structures/Graph/Manipulator/TopologicalSorter.php'; - $depgraph = new Structures_Graph(true); - $nodes = array(); - $reg = &$this->config->getRegistry(); - foreach ($packages as $i => $package) { - $pname = $reg->parsedPackageNameToString( - array( - 'channel' => $package->getChannel(), - 'package' => strtolower($package->getPackage()), - )); - $nodes[$pname] = new Structures_Graph_Node; - $nodes[$pname]->setData($packages[$i]); - $depgraph->addNode($nodes[$pname]); - } - - $deplinks = array(); - foreach ($nodes as $package => $node) { - $pf = &$node->getData(); - $pdeps = $pf->getDeps(true); - if (!$pdeps) { - continue; - } - - if ($pf->getPackagexmlVersion() == '1.0') { - foreach ($pdeps as $dep) { - if ($dep['type'] != 'pkg' || - (isset($dep['optional']) && $dep['optional'] == 'yes')) { - continue; - } - - $dname = $reg->parsedPackageNameToString( - array( - 'channel' => 'pear.php.net', - 'package' => strtolower($dep['name']), - )); - - if (isset($nodes[$dname])) { - if (!isset($deplinks[$dname])) { - $deplinks[$dname] = array(); - } - - $deplinks[$dname][$package] = 1; - // dependency is in installed packages - continue; - } - - $dname = $reg->parsedPackageNameToString( - array( - 'channel' => 'pecl.php.net', - 'package' => strtolower($dep['name']), - )); - - if (isset($nodes[$dname])) { - if (!isset($deplinks[$dname])) { - $deplinks[$dname] = array(); - } - - $deplinks[$dname][$package] = 1; - // dependency is in installed packages - continue; - } - } - } else { - // the only ordering we care about is: - // 1) subpackages must be installed before packages that depend on them - // 2) required deps must be installed before packages that depend on them - if (isset($pdeps['required']['subpackage'])) { - $t = $pdeps['required']['subpackage']; - if (!isset($t[0])) { - $t = array($t); - } - - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - - if (isset($pdeps['group'])) { - if (!isset($pdeps['group'][0])) { - $pdeps['group'] = array($pdeps['group']); - } - - foreach ($pdeps['group'] as $group) { - if (isset($group['subpackage'])) { - $t = $group['subpackage']; - if (!isset($t[0])) { - $t = array($t); - } - - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - } - } - - if (isset($pdeps['optional']['subpackage'])) { - $t = $pdeps['optional']['subpackage']; - if (!isset($t[0])) { - $t = array($t); - } - - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - - if (isset($pdeps['required']['package'])) { - $t = $pdeps['required']['package']; - if (!isset($t[0])) { - $t = array($t); - } - - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - - if (isset($pdeps['group'])) { - if (!isset($pdeps['group'][0])) { - $pdeps['group'] = array($pdeps['group']); - } - - foreach ($pdeps['group'] as $group) { - if (isset($group['package'])) { - $t = $group['package']; - if (!isset($t[0])) { - $t = array($t); - } - - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - } - } - } - } - - $this->_detectDepCycle($deplinks); - foreach ($deplinks as $dependent => $parents) { - foreach ($parents as $parent => $unused) { - $nodes[$dependent]->connectTo($nodes[$parent]); - } - } - - $installOrder = Structures_Graph_Manipulator_TopologicalSorter::sort($depgraph); - $ret = array(); - for ($i = 0, $count = count($installOrder); $i < $count; $i++) { - foreach ($installOrder[$i] as $index => $sortedpackage) { - $data = &$installOrder[$i][$index]->getData(); - $ret[] = &$nodes[$reg->parsedPackageNameToString( - array( - 'channel' => $data->getChannel(), - 'package' => strtolower($data->getPackage()), - ))]->getData(); - } - } - - $packages = $ret; - return; - } - - /** - * Detect recursive links between dependencies and break the cycles - * - * @param array - * @access private - */ - function _detectDepCycle(&$deplinks) - { - do { - $keepgoing = false; - foreach ($deplinks as $dep => $parents) { - foreach ($parents as $parent => $unused) { - // reset the parent cycle detector - $this->_testCycle(null, null, null); - if ($this->_testCycle($dep, $deplinks, $parent)) { - $keepgoing = true; - unset($deplinks[$dep][$parent]); - if (count($deplinks[$dep]) == 0) { - unset($deplinks[$dep]); - } - - continue 3; - } - } - } - } while ($keepgoing); - } - - function _testCycle($test, $deplinks, $dep) - { - static $visited = array(); - if ($test === null) { - $visited = array(); - return; - } - - // this happens when a parent has a dep cycle on another dependency - // but the child is not part of the cycle - if (isset($visited[$dep])) { - return false; - } - - $visited[$dep] = 1; - if ($test == $dep) { - return true; - } - - if (isset($deplinks[$dep])) { - if (in_array($test, array_keys($deplinks[$dep]), true)) { - return true; - } - - foreach ($deplinks[$dep] as $parent => $unused) { - if ($this->_testCycle($test, $deplinks, $parent)) { - return true; - } - } - } - - return false; - } - - /** - * Set up the dependency for installation parsing - * - * @param array $t dependency information - * @param PEAR_Registry $reg - * @param array $deplinks list of dependency links already established - * @param array $nodes all existing package nodes - * @param string $package parent package name - * @access private - */ - function _setupGraph($t, $reg, &$deplinks, &$nodes, $package) - { - foreach ($t as $dep) { - $depchannel = !isset($dep['channel']) ? '__uri': $dep['channel']; - $dname = $reg->parsedPackageNameToString( - array( - 'channel' => $depchannel, - 'package' => strtolower($dep['name']), - )); - - if (isset($nodes[$dname])) { - if (!isset($deplinks[$dname])) { - $deplinks[$dname] = array(); - } - $deplinks[$dname][$package] = 1; - } - } - } - - function _dependsOn($a, $b) - { - return $this->_checkDepTree(strtolower($a->getChannel()), strtolower($a->getPackage()), $b); - } - - function _checkDepTree($channel, $package, $b, $checked = array()) - { - $checked[$channel][$package] = true; - if (!isset($this->_depTree[$channel][$package])) { - return false; - } - - if (isset($this->_depTree[$channel][$package][strtolower($b->getChannel())] - [strtolower($b->getPackage())])) { - return true; - } - - foreach ($this->_depTree[$channel][$package] as $ch => $packages) { - foreach ($packages as $pa => $true) { - if ($this->_checkDepTree($ch, $pa, $b, $checked)) { - return true; - } - } - } - - return false; - } - - function _sortInstall($a, $b) - { - if (!$a->getDeps() && !$b->getDeps()) { - return 0; // neither package has dependencies, order is insignificant - } - if ($a->getDeps() && !$b->getDeps()) { - return 1; // $a must be installed after $b because $a has dependencies - } - if (!$a->getDeps() && $b->getDeps()) { - return -1; // $b must be installed after $a because $b has dependencies - } - // both packages have dependencies - if ($this->_dependsOn($a, $b)) { - return 1; - } - if ($this->_dependsOn($b, $a)) { - return -1; - } - return 0; - } - - /** - * Download a file through HTTP. Considers suggested file name in - * Content-disposition: header and can run a callback function for - * different events. The callback will be called with two - * parameters: the callback type, and parameters. The implemented - * callback types are: - * - * 'setup' called at the very beginning, parameter is a UI object - * that should be used for all output - * 'message' the parameter is a string with an informational message - * 'saveas' may be used to save with a different file name, the - * parameter is the filename that is about to be used. - * If a 'saveas' callback returns a non-empty string, - * that file name will be used as the filename instead. - * Note that $save_dir will not be affected by this, only - * the basename of the file. - * 'start' download is starting, parameter is number of bytes - * that are expected, or -1 if unknown - * 'bytesread' parameter is the number of bytes read so far - * 'done' download is complete, parameter is the total number - * of bytes read - * 'connfailed' if the TCP/SSL connection fails, this callback is called - * with array(host,port,errno,errmsg) - * 'writefailed' if writing to disk fails, this callback is called - * with array(destfile,errmsg) - * - * If an HTTP proxy has been configured (http_proxy PEAR_Config - * setting), the proxy will be used. - * - * @param string $url the URL to download - * @param object $ui PEAR_Frontend_* instance - * @param object $config PEAR_Config instance - * @param string $save_dir directory to save file in - * @param mixed $callback function/method to call for status - * updates - * @param false|string|array $lastmodified header values to check against for caching - * use false to return the header values from this download - * @param false|array $accept Accept headers to send - * @param false|string $channel Channel to use for retrieving authentication - * @return string|array Returns the full path of the downloaded file or a PEAR - * error on failure. If the error is caused by - * socket-related errors, the error object will - * have the fsockopen error code available through - * getCode(). If caching is requested, then return the header - * values. - * - * @access public - */ - function downloadHttp($url, &$ui, $save_dir = '.', $callback = null, $lastmodified = null, - $accept = false, $channel = false) - { - static $redirect = 0; - // always reset , so we are clean case of error - $wasredirect = $redirect; - $redirect = 0; - if ($callback) { - call_user_func($callback, 'setup', array(&$ui)); - } - - $info = parse_url($url); - if (!isset($info['scheme']) || !in_array($info['scheme'], array('http', 'https'))) { - return PEAR::raiseError('Cannot download non-http URL "' . $url . '"'); - } - - if (!isset($info['host'])) { - return PEAR::raiseError('Cannot download from non-URL "' . $url . '"'); - } - - $host = isset($info['host']) ? $info['host'] : null; - $port = isset($info['port']) ? $info['port'] : null; - $path = isset($info['path']) ? $info['path'] : null; - - if (isset($this)) { - $config = &$this->config; - } else { - $config = &PEAR_Config::singleton(); - } - - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($config->get('http_proxy') && - $proxy = parse_url($config->get('http_proxy'))) { - $proxy_host = isset($proxy['host']) ? $proxy['host'] : null; - if (isset($proxy['scheme']) && $proxy['scheme'] == 'https') { - $proxy_host = 'ssl://' . $proxy_host; - } - $proxy_port = isset($proxy['port']) ? $proxy['port'] : 8080; - $proxy_user = isset($proxy['user']) ? urldecode($proxy['user']) : null; - $proxy_pass = isset($proxy['pass']) ? urldecode($proxy['pass']) : null; - - if ($callback) { - call_user_func($callback, 'message', "Using HTTP proxy $host:$port"); - } - } - - if (empty($port)) { - $port = (isset($info['scheme']) && $info['scheme'] == 'https') ? 443 : 80; - } - - $scheme = (isset($info['scheme']) && $info['scheme'] == 'https') ? 'https' : 'http'; - - if ($proxy_host != '') { - $fp = @fsockopen($proxy_host, $proxy_port, $errno, $errstr); - if (!$fp) { - if ($callback) { - call_user_func($callback, 'connfailed', array($proxy_host, $proxy_port, - $errno, $errstr)); - } - return PEAR::raiseError("Connection to `$proxy_host:$proxy_port' failed: $errstr", $errno); - } - - if ($lastmodified === false || $lastmodified) { - $request = "GET $url HTTP/1.1\r\n"; - $request .= "Host: $host\r\n"; - } else { - $request = "GET $url HTTP/1.0\r\n"; - $request .= "Host: $host\r\n"; - } - } else { - $network_host = $host; - if (isset($info['scheme']) && $info['scheme'] == 'https') { - $network_host = 'ssl://' . $host; - } - - $fp = @fsockopen($network_host, $port, $errno, $errstr); - if (!$fp) { - if ($callback) { - call_user_func($callback, 'connfailed', array($host, $port, - $errno, $errstr)); - } - return PEAR::raiseError("Connection to `$host:$port' failed: $errstr", $errno); - } - - if ($lastmodified === false || $lastmodified) { - $request = "GET $path HTTP/1.1\r\n"; - $request .= "Host: $host\r\n"; - } else { - $request = "GET $path HTTP/1.0\r\n"; - $request .= "Host: $host\r\n"; - } - } - - $ifmodifiedsince = ''; - if (is_array($lastmodified)) { - if (isset($lastmodified['Last-Modified'])) { - $ifmodifiedsince = 'If-Modified-Since: ' . $lastmodified['Last-Modified'] . "\r\n"; - } - - if (isset($lastmodified['ETag'])) { - $ifmodifiedsince .= "If-None-Match: $lastmodified[ETag]\r\n"; - } - } else { - $ifmodifiedsince = ($lastmodified ? "If-Modified-Since: $lastmodified\r\n" : ''); - } - - $request .= $ifmodifiedsince . - "User-Agent: PEAR/1.9.4/PHP/" . PHP_VERSION . "\r\n"; - - if (isset($this)) { // only pass in authentication for non-static calls - $username = $config->get('username', null, $channel); - $password = $config->get('password', null, $channel); - if ($username && $password) { - $tmp = base64_encode("$username:$password"); - $request .= "Authorization: Basic $tmp\r\n"; - } - } - - if ($proxy_host != '' && $proxy_user != '') { - $request .= 'Proxy-Authorization: Basic ' . - base64_encode($proxy_user . ':' . $proxy_pass) . "\r\n"; - } - - if ($accept) { - $request .= 'Accept: ' . implode(', ', $accept) . "\r\n"; - } - - $request .= "Connection: close\r\n"; - $request .= "\r\n"; - fwrite($fp, $request); - $headers = array(); - $reply = 0; - while (trim($line = fgets($fp, 1024))) { - if (preg_match('/^([^:]+):\s+(.*)\s*\\z/', $line, $matches)) { - $headers[strtolower($matches[1])] = trim($matches[2]); - } elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) { - $reply = (int)$matches[1]; - if ($reply == 304 && ($lastmodified || ($lastmodified === false))) { - return false; - } - - if (!in_array($reply, array(200, 301, 302, 303, 305, 307))) { - return PEAR::raiseError("File $scheme://$host:$port$path not valid (received: $line)"); - } - } - } - - if ($reply != 200) { - if (!isset($headers['location'])) { - return PEAR::raiseError("File $scheme://$host:$port$path not valid (redirected but no location)"); - } - - if ($wasredirect > 4) { - return PEAR::raiseError("File $scheme://$host:$port$path not valid (redirection looped more than 5 times)"); - } - - $redirect = $wasredirect + 1; - return $this->downloadHttp($headers['location'], - $ui, $save_dir, $callback, $lastmodified, $accept); - } - - if (isset($headers['content-disposition']) && - preg_match('/\sfilename=\"([^;]*\S)\"\s*(;|\\z)/', $headers['content-disposition'], $matches)) { - $save_as = basename($matches[1]); - } else { - $save_as = basename($url); - } - - if ($callback) { - $tmp = call_user_func($callback, 'saveas', $save_as); - if ($tmp) { - $save_as = $tmp; - } - } - - $dest_file = $save_dir . DIRECTORY_SEPARATOR . $save_as; - if (is_link($dest_file)) { - return PEAR::raiseError('SECURITY ERROR: Will not write to ' . $dest_file . ' as it is symlinked to ' . readlink($dest_file) . ' - Possible symlink attack'); - } - - if (!$wp = @fopen($dest_file, 'wb')) { - fclose($fp); - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("could not open $dest_file for writing"); - } - - $length = isset($headers['content-length']) ? $headers['content-length'] : -1; - - $bytes = 0; - if ($callback) { - call_user_func($callback, 'start', array(basename($dest_file), $length)); - } - - while ($data = fread($fp, 1024)) { - $bytes += strlen($data); - if ($callback) { - call_user_func($callback, 'bytesread', $bytes); - } - if (!@fwrite($wp, $data)) { - fclose($fp); - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("$dest_file: write failed ($php_errormsg)"); - } - } - - fclose($fp); - fclose($wp); - if ($callback) { - call_user_func($callback, 'done', $bytes); - } - - if ($lastmodified === false || $lastmodified) { - if (isset($headers['etag'])) { - $lastmodified = array('ETag' => $headers['etag']); - } - - if (isset($headers['last-modified'])) { - if (is_array($lastmodified)) { - $lastmodified['Last-Modified'] = $headers['last-modified']; - } else { - $lastmodified = $headers['last-modified']; - } - } - return array($dest_file, $lastmodified, $headers); - } - return $dest_file; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Downloader/Package.php b/3rdparty/PEAR/Downloader/Package.php deleted file mode 100644 index 987c9656751fbe4d0e24cfcc332b7ba1dd5d24ad..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Downloader/Package.php +++ /dev/null @@ -1,1988 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Package.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Error code when parameter initialization fails because no releases - * exist within preferred_state, but releases do exist - */ -define('PEAR_DOWNLOADER_PACKAGE_STATE', -1003); -/** - * Error code when parameter initialization fails because no releases - * exist that will work with the existing PHP version - */ -define('PEAR_DOWNLOADER_PACKAGE_PHPVERSION', -1004); - -/** - * Coordinates download parameters and manages their dependencies - * prior to downloading them. - * - * Input can come from three sources: - * - * - local files (archives or package.xml) - * - remote files (downloadable urls) - * - abstract package names - * - * The first two elements are handled cleanly by PEAR_PackageFile, but the third requires - * accessing pearweb's xml-rpc interface to determine necessary dependencies, and the - * format returned of dependencies is slightly different from that used in package.xml. - * - * This class hides the differences between these elements, and makes automatic - * dependency resolution a piece of cake. It also manages conflicts when - * two classes depend on incompatible dependencies, or differing versions of the same - * package dependency. In addition, download will not be attempted if the php version is - * not supported, PEAR installer version is not supported, or non-PECL extensions are not - * installed. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Downloader_Package -{ - /** - * @var PEAR_Downloader - */ - var $_downloader; - /** - * @var PEAR_Config - */ - var $_config; - /** - * @var PEAR_Registry - */ - var $_registry; - /** - * Used to implement packagingroot properly - * @var PEAR_Registry - */ - var $_installRegistry; - /** - * @var PEAR_PackageFile_v1|PEAR_PackageFile|v2 - */ - var $_packagefile; - /** - * @var array - */ - var $_parsedname; - /** - * @var array - */ - var $_downloadURL; - /** - * @var array - */ - var $_downloadDeps = array(); - /** - * @var boolean - */ - var $_valid = false; - /** - * @var boolean - */ - var $_analyzed = false; - /** - * if this or a parent package was invoked with Package-state, this is set to the - * state variable. - * - * This allows temporary reassignment of preferred_state for a parent package and all of - * its dependencies. - * @var string|false - */ - var $_explicitState = false; - /** - * If this package is invoked with Package#group, this variable will be true - */ - var $_explicitGroup = false; - /** - * Package type local|url - * @var string - */ - var $_type; - /** - * Contents of package.xml, if downloaded from a remote channel - * @var string|false - * @access private - */ - var $_rawpackagefile; - /** - * @var boolean - * @access private - */ - var $_validated = false; - - /** - * @param PEAR_Downloader - */ - function PEAR_Downloader_Package(&$downloader) - { - $this->_downloader = &$downloader; - $this->_config = &$this->_downloader->config; - $this->_registry = &$this->_config->getRegistry(); - $options = $downloader->getOptions(); - if (isset($options['packagingroot'])) { - $this->_config->setInstallRoot($options['packagingroot']); - $this->_installRegistry = &$this->_config->getRegistry(); - $this->_config->setInstallRoot(false); - } else { - $this->_installRegistry = &$this->_registry; - } - $this->_valid = $this->_analyzed = false; - } - - /** - * Parse the input and determine whether this is a local file, a remote uri, or an - * abstract package name. - * - * This is the heart of the PEAR_Downloader_Package(), and is used in - * {@link PEAR_Downloader::download()} - * @param string - * @return bool|PEAR_Error - */ - function initialize($param) - { - $origErr = $this->_fromFile($param); - if ($this->_valid) { - return true; - } - - $options = $this->_downloader->getOptions(); - if (isset($options['offline'])) { - if (PEAR::isError($origErr) && !isset($options['soft'])) { - foreach ($origErr->getUserInfo() as $userInfo) { - if (isset($userInfo['message'])) { - $this->_downloader->log(0, $userInfo['message']); - } - } - - $this->_downloader->log(0, $origErr->getMessage()); - } - - return PEAR::raiseError('Cannot download non-local package "' . $param . '"'); - } - - $err = $this->_fromUrl($param); - if (PEAR::isError($err) || !$this->_valid) { - if ($this->_type == 'url') { - if (PEAR::isError($err) && !isset($options['soft'])) { - $this->_downloader->log(0, $err->getMessage()); - } - - return PEAR::raiseError("Invalid or missing remote package file"); - } - - $err = $this->_fromString($param); - if (PEAR::isError($err) || !$this->_valid) { - if (PEAR::isError($err) && $err->getCode() == PEAR_DOWNLOADER_PACKAGE_STATE) { - return false; // instruct the downloader to silently skip - } - - if (isset($this->_type) && $this->_type == 'local' && PEAR::isError($origErr)) { - if (is_array($origErr->getUserInfo())) { - foreach ($origErr->getUserInfo() as $err) { - if (is_array($err)) { - $err = $err['message']; - } - - if (!isset($options['soft'])) { - $this->_downloader->log(0, $err); - } - } - } - - if (!isset($options['soft'])) { - $this->_downloader->log(0, $origErr->getMessage()); - } - - if (is_array($param)) { - $param = $this->_registry->parsedPackageNameToString($param, true); - } - - if (!isset($options['soft'])) { - $this->_downloader->log(2, "Cannot initialize '$param', invalid or missing package file"); - } - - // Passing no message back - already logged above - return PEAR::raiseError(); - } - - if (PEAR::isError($err) && !isset($options['soft'])) { - $this->_downloader->log(0, $err->getMessage()); - } - - if (is_array($param)) { - $param = $this->_registry->parsedPackageNameToString($param, true); - } - - if (!isset($options['soft'])) { - $this->_downloader->log(2, "Cannot initialize '$param', invalid or missing package file"); - } - - // Passing no message back - already logged above - return PEAR::raiseError(); - } - } - - return true; - } - - /** - * Retrieve any non-local packages - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2|PEAR_Error - */ - function &download() - { - if (isset($this->_packagefile)) { - return $this->_packagefile; - } - - if (isset($this->_downloadURL['url'])) { - $this->_isvalid = false; - $info = $this->getParsedPackage(); - foreach ($info as $i => $p) { - $info[$i] = strtolower($p); - } - - $err = $this->_fromUrl($this->_downloadURL['url'], - $this->_registry->parsedPackageNameToString($this->_parsedname, true)); - $newinfo = $this->getParsedPackage(); - foreach ($newinfo as $i => $p) { - $newinfo[$i] = strtolower($p); - } - - if ($info != $newinfo) { - do { - if ($info['channel'] == 'pecl.php.net' && $newinfo['channel'] == 'pear.php.net') { - $info['channel'] = 'pear.php.net'; - if ($info == $newinfo) { - // skip the channel check if a pecl package says it's a PEAR package - break; - } - } - if ($info['channel'] == 'pear.php.net' && $newinfo['channel'] == 'pecl.php.net') { - $info['channel'] = 'pecl.php.net'; - if ($info == $newinfo) { - // skip the channel check if a pecl package says it's a PEAR package - break; - } - } - - return PEAR::raiseError('CRITICAL ERROR: We are ' . - $this->_registry->parsedPackageNameToString($info) . ', but the file ' . - 'downloaded claims to be ' . - $this->_registry->parsedPackageNameToString($this->getParsedPackage())); - } while (false); - } - - if (PEAR::isError($err) || !$this->_valid) { - return $err; - } - } - - $this->_type = 'local'; - return $this->_packagefile; - } - - function &getPackageFile() - { - return $this->_packagefile; - } - - function &getDownloader() - { - return $this->_downloader; - } - - function getType() - { - return $this->_type; - } - - /** - * Like {@link initialize()}, but operates on a dependency - */ - function fromDepURL($dep) - { - $this->_downloadURL = $dep; - if (isset($dep['uri'])) { - $options = $this->_downloader->getOptions(); - if (!extension_loaded("zlib") || isset($options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->_fromUrl($dep['uri'] . $ext); - PEAR::popErrorHandling(); - if (PEAR::isError($err)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $err->getMessage()); - } - - return PEAR::raiseError('Invalid uri dependency "' . $dep['uri'] . $ext . '", ' . - 'cannot download'); - } - } else { - $this->_parsedname = - array( - 'package' => $dep['info']->getPackage(), - 'channel' => $dep['info']->getChannel(), - 'version' => $dep['version'] - ); - if (!isset($dep['nodefault'])) { - $this->_parsedname['group'] = 'default'; // download the default dependency group - $this->_explicitGroup = false; - } - - $this->_rawpackagefile = $dep['raw']; - } - } - - function detectDependencies($params) - { - $options = $this->_downloader->getOptions(); - if (isset($options['downloadonly'])) { - return; - } - - if (isset($options['offline'])) { - $this->_downloader->log(3, 'Skipping dependency download check, --offline specified'); - return; - } - - $pname = $this->getParsedPackage(); - if (!$pname) { - return; - } - - $deps = $this->getDeps(); - if (!$deps) { - return; - } - - if (isset($deps['required'])) { // package.xml 2.0 - return $this->_detect2($deps, $pname, $options, $params); - } - - return $this->_detect1($deps, $pname, $options, $params); - } - - function setValidated() - { - $this->_validated = true; - } - - function alreadyValidated() - { - return $this->_validated; - } - - /** - * Remove packages to be downloaded that are already installed - * @param array of PEAR_Downloader_Package objects - * @static - */ - function removeInstalled(&$params) - { - if (!isset($params[0])) { - return; - } - - $options = $params[0]->_downloader->getOptions(); - if (!isset($options['downloadonly'])) { - foreach ($params as $i => $param) { - $package = $param->getPackage(); - $channel = $param->getChannel(); - // remove self if already installed with this version - // this does not need any pecl magic - we only remove exact matches - if ($param->_installRegistry->packageExists($package, $channel)) { - $packageVersion = $param->_installRegistry->packageInfo($package, 'version', $channel); - if (version_compare($packageVersion, $param->getVersion(), '==')) { - if (!isset($options['force'])) { - $info = $param->getParsedPackage(); - unset($info['version']); - unset($info['state']); - if (!isset($options['soft'])) { - $param->_downloader->log(1, 'Skipping package "' . - $param->getShortName() . - '", already installed as version ' . $packageVersion); - } - $params[$i] = false; - } - } elseif (!isset($options['force']) && !isset($options['upgrade']) && - !isset($options['soft'])) { - $info = $param->getParsedPackage(); - $param->_downloader->log(1, 'Skipping package "' . - $param->getShortName() . - '", already installed as version ' . $packageVersion); - $params[$i] = false; - } - } - } - } - - PEAR_Downloader_Package::removeDuplicates($params); - } - - function _detect2($deps, $pname, $options, $params) - { - $this->_downloadDeps = array(); - $groupnotfound = false; - foreach (array('package', 'subpackage') as $packagetype) { - // get required dependency group - if (isset($deps['required'][$packagetype])) { - if (isset($deps['required'][$packagetype][0])) { - foreach ($deps['required'][$packagetype] as $dep) { - if (isset($dep['conflicts'])) { - // skip any package that this package conflicts with - continue; - } - $ret = $this->_detect2Dep($dep, $pname, 'required', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } elseif (PEAR::isError($ret) && !isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - } - } else { - $dep = $deps['required'][$packagetype]; - if (!isset($dep['conflicts'])) { - // skip any package that this package conflicts with - $ret = $this->_detect2Dep($dep, $pname, 'required', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } elseif (PEAR::isError($ret) && !isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - } - } - } - - // get optional dependency group, if any - if (isset($deps['optional'][$packagetype])) { - $skipnames = array(); - if (!isset($deps['optional'][$packagetype][0])) { - $deps['optional'][$packagetype] = array($deps['optional'][$packagetype]); - } - - foreach ($deps['optional'][$packagetype] as $dep) { - $skip = false; - if (!isset($options['alldeps'])) { - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, 'Notice: package "' . - $this->_registry->parsedPackageNameToString($this->getParsedPackage(), - true) . '" optional dependency "' . - $this->_registry->parsedPackageNameToString(array('package' => - $dep['name'], 'channel' => 'pear.php.net'), true) . - '" will not be automatically downloaded'); - } - $skipnames[] = $this->_registry->parsedPackageNameToString($dep, true); - $skip = true; - unset($dep['package']); - } - - $ret = $this->_detect2Dep($dep, $pname, 'optional', $params); - if (PEAR::isError($ret) && !isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - - if (!$ret) { - $dep['package'] = $dep['name']; - $skip = count($skipnames) ? - $skipnames[count($skipnames) - 1] : ''; - if ($skip == - $this->_registry->parsedPackageNameToString($dep, true)) { - array_pop($skipnames); - } - } - - if (!$skip && is_array($ret)) { - $this->_downloadDeps[] = $ret; - } - } - - if (count($skipnames)) { - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'Did not download optional dependencies: ' . - implode(', ', $skipnames) . - ', use --alldeps to download automatically'); - } - } - } - - // get requested dependency group, if any - $groupname = $this->getGroup(); - $explicit = $this->_explicitGroup; - if (!$groupname) { - if (!$this->canDefault()) { - continue; - } - - $groupname = 'default'; // try the default dependency group - } - - if ($groupnotfound) { - continue; - } - - if (isset($deps['group'])) { - if (isset($deps['group']['attribs'])) { - if (strtolower($deps['group']['attribs']['name']) == strtolower($groupname)) { - $group = $deps['group']; - } elseif ($explicit) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, 'Warning: package "' . - $this->_registry->parsedPackageNameToString($pname, true) . - '" has no dependency ' . 'group named "' . $groupname . '"'); - } - - $groupnotfound = true; - continue; - } - } else { - $found = false; - foreach ($deps['group'] as $group) { - if (strtolower($group['attribs']['name']) == strtolower($groupname)) { - $found = true; - break; - } - } - - if (!$found) { - if ($explicit) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, 'Warning: package "' . - $this->_registry->parsedPackageNameToString($pname, true) . - '" has no dependency ' . 'group named "' . $groupname . '"'); - } - } - - $groupnotfound = true; - continue; - } - } - } - - if (isset($group) && isset($group[$packagetype])) { - if (isset($group[$packagetype][0])) { - foreach ($group[$packagetype] as $dep) { - $ret = $this->_detect2Dep($dep, $pname, 'dependency group "' . - $group['attribs']['name'] . '"', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } elseif (PEAR::isError($ret) && !isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - } - } else { - $ret = $this->_detect2Dep($group[$packagetype], $pname, - 'dependency group "' . - $group['attribs']['name'] . '"', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } elseif (PEAR::isError($ret) && !isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - } - } - } - } - - function _detect2Dep($dep, $pname, $group, $params) - { - if (isset($dep['conflicts'])) { - return true; - } - - $options = $this->_downloader->getOptions(); - if (isset($dep['uri'])) { - return array('uri' => $dep['uri'], 'dep' => $dep);; - } - - $testdep = $dep; - $testdep['package'] = $dep['name']; - if (PEAR_Downloader_Package::willDownload($testdep, $params)) { - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(2, $this->getShortName() . ': Skipping ' . $group . - ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", will be installed'); - } - return false; - } - - $options = $this->_downloader->getOptions(); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if ($this->_explicitState) { - $pname['state'] = $this->_explicitState; - } - - $url = $this->_downloader->_getDepPackageDownloadUrl($dep, $pname); - if (PEAR::isError($url)) { - PEAR::popErrorHandling(); - return $url; - } - - $dep['package'] = $dep['name']; - $ret = $this->_analyzeDownloadURL($url, 'dependency', $dep, $params, $group == 'optional' && - !isset($options['alldeps']), true); - PEAR::popErrorHandling(); - if (PEAR::isError($ret)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - - return false; - } - - // check to see if a dep is already installed and is the same or newer - if (!isset($dep['min']) && !isset($dep['max']) && !isset($dep['recommended'])) { - $oper = 'has'; - } else { - $oper = 'gt'; - } - - // do not try to move this before getDepPackageDownloadURL - // we can't determine whether upgrade is necessary until we know what - // version would be downloaded - if (!isset($options['force']) && $this->isInstalled($ret, $oper)) { - $version = $this->_installRegistry->packageInfo($dep['name'], 'version', $dep['channel']); - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, $this->getShortName() . ': Skipping ' . $group . - ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '" version ' . $url['version'] . ', already installed as version ' . - $version); - } - - return false; - } - - if (isset($dep['nodefault'])) { - $ret['nodefault'] = true; - } - - return $ret; - } - - function _detect1($deps, $pname, $options, $params) - { - $this->_downloadDeps = array(); - $skipnames = array(); - foreach ($deps as $dep) { - $nodownload = false; - if (isset ($dep['type']) && $dep['type'] === 'pkg') { - $dep['channel'] = 'pear.php.net'; - $dep['package'] = $dep['name']; - switch ($dep['rel']) { - case 'not' : - continue 2; - case 'ge' : - case 'eq' : - case 'gt' : - case 'has' : - $group = (!isset($dep['optional']) || $dep['optional'] == 'no') ? - 'required' : - 'optional'; - if (PEAR_Downloader_Package::willDownload($dep, $params)) { - $this->_downloader->log(2, $this->getShortName() . ': Skipping ' . $group - . ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", will be installed'); - continue 2; - } - $fakedp = new PEAR_PackageFile_v1; - $fakedp->setPackage($dep['name']); - // skip internet check if we are not upgrading (bug #5810) - if (!isset($options['upgrade']) && $this->isInstalled( - $fakedp, $dep['rel'])) { - $this->_downloader->log(2, $this->getShortName() . ': Skipping ' . $group - . ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", is already installed'); - continue 2; - } - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if ($this->_explicitState) { - $pname['state'] = $this->_explicitState; - } - - $url = $this->_downloader->_getDepPackageDownloadUrl($dep, $pname); - $chan = 'pear.php.net'; - if (PEAR::isError($url)) { - // check to see if this is a pecl package that has jumped - // from pear.php.net to pecl.php.net channel - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - - $newdep = PEAR_Dependency2::normalizeDep($dep); - $newdep = $newdep[0]; - $newdep['channel'] = 'pecl.php.net'; - $chan = 'pecl.php.net'; - $url = $this->_downloader->_getDepPackageDownloadUrl($newdep, $pname); - $obj = &$this->_installRegistry->getPackage($dep['name']); - if (PEAR::isError($url)) { - PEAR::popErrorHandling(); - if ($obj !== null && $this->isInstalled($obj, $dep['rel'])) { - $group = (!isset($dep['optional']) || $dep['optional'] == 'no') ? - 'required' : - 'optional'; - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, $this->getShortName() . - ': Skipping ' . $group . ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", already installed as version ' . $obj->getVersion()); - } - $skip = count($skipnames) ? - $skipnames[count($skipnames) - 1] : ''; - if ($skip == - $this->_registry->parsedPackageNameToString($dep, true)) { - array_pop($skipnames); - } - continue; - } else { - if (isset($dep['optional']) && $dep['optional'] == 'yes') { - $this->_downloader->log(2, $this->getShortName() . - ': Skipping optional dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", no releases exist'); - continue; - } else { - return $url; - } - } - } - } - - PEAR::popErrorHandling(); - if (!isset($options['alldeps'])) { - if (isset($dep['optional']) && $dep['optional'] == 'yes') { - if (!isset($options['soft'])) { - $this->_downloader->log(3, 'Notice: package "' . - $this->getShortName() . - '" optional dependency "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true) . - '" will not be automatically downloaded'); - } - $skipnames[] = $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true); - $nodownload = true; - } - } - - if (!isset($options['alldeps']) && !isset($options['onlyreqdeps'])) { - if (!isset($dep['optional']) || $dep['optional'] == 'no') { - if (!isset($options['soft'])) { - $this->_downloader->log(3, 'Notice: package "' . - $this->getShortName() . - '" required dependency "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true) . - '" will not be automatically downloaded'); - } - $skipnames[] = $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true); - $nodownload = true; - } - } - - // check to see if a dep is already installed - // do not try to move this before getDepPackageDownloadURL - // we can't determine whether upgrade is necessary until we know what - // version would be downloaded - if (!isset($options['force']) && $this->isInstalled( - $url, $dep['rel'])) { - $group = (!isset($dep['optional']) || $dep['optional'] == 'no') ? - 'required' : - 'optional'; - $dep['package'] = $dep['name']; - if (isset($newdep)) { - $version = $this->_installRegistry->packageInfo($newdep['name'], 'version', $newdep['channel']); - } else { - $version = $this->_installRegistry->packageInfo($dep['name'], 'version'); - } - - $dep['version'] = $url['version']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, $this->getShortName() . ': Skipping ' . $group . - ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", already installed as version ' . $version); - } - - $skip = count($skipnames) ? - $skipnames[count($skipnames) - 1] : ''; - if ($skip == - $this->_registry->parsedPackageNameToString($dep, true)) { - array_pop($skipnames); - } - - continue; - } - - if ($nodownload) { - continue; - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if (isset($newdep)) { - $dep = $newdep; - } - - $dep['package'] = $dep['name']; - $ret = $this->_analyzeDownloadURL($url, 'dependency', $dep, $params, - isset($dep['optional']) && $dep['optional'] == 'yes' && - !isset($options['alldeps']), true); - PEAR::popErrorHandling(); - if (PEAR::isError($ret)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - continue; - } - - $this->_downloadDeps[] = $ret; - } - } - - if (count($skipnames)) { - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'Did not download dependencies: ' . - implode(', ', $skipnames) . - ', use --alldeps or --onlyreqdeps to download automatically'); - } - } - } - - function setDownloadURL($pkg) - { - $this->_downloadURL = $pkg; - } - - /** - * Set the package.xml object for this downloaded package - * - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 $pkg - */ - function setPackageFile(&$pkg) - { - $this->_packagefile = &$pkg; - } - - function getShortName() - { - return $this->_registry->parsedPackageNameToString(array('channel' => $this->getChannel(), - 'package' => $this->getPackage()), true); - } - - function getParsedPackage() - { - if (isset($this->_packagefile) || isset($this->_parsedname)) { - return array('channel' => $this->getChannel(), - 'package' => $this->getPackage(), - 'version' => $this->getVersion()); - } - - return false; - } - - function getDownloadURL() - { - return $this->_downloadURL; - } - - function canDefault() - { - if (isset($this->_downloadURL) && isset($this->_downloadURL['nodefault'])) { - return false; - } - - return true; - } - - function getPackage() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackage(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getPackage(); - } - - return false; - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - function isSubpackage(&$pf) - { - if (isset($this->_packagefile)) { - return $this->_packagefile->isSubpackage($pf); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->isSubpackage($pf); - } - - return false; - } - - function getPackageType() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackageType(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getPackageType(); - } - - return false; - } - - function isBundle() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackageType() == 'bundle'; - } - - return false; - } - - function getPackageXmlVersion() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackagexmlVersion(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getPackagexmlVersion(); - } - - return '1.0'; - } - - function getChannel() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getChannel(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getChannel(); - } - - return false; - } - - function getURI() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getURI(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getURI(); - } - - return false; - } - - function getVersion() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getVersion(); - } elseif (isset($this->_downloadURL['version'])) { - return $this->_downloadURL['version']; - } - - return false; - } - - function isCompatible($pf) - { - if (isset($this->_packagefile)) { - return $this->_packagefile->isCompatible($pf); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->isCompatible($pf); - } - - return true; - } - - function setGroup($group) - { - $this->_parsedname['group'] = $group; - } - - function getGroup() - { - if (isset($this->_parsedname['group'])) { - return $this->_parsedname['group']; - } - - return ''; - } - - function isExtension($name) - { - if (isset($this->_packagefile)) { - return $this->_packagefile->isExtension($name); - } elseif (isset($this->_downloadURL['info'])) { - if ($this->_downloadURL['info']->getPackagexmlVersion() == '2.0') { - return $this->_downloadURL['info']->getProvidesExtension() == $name; - } - - return false; - } - - return false; - } - - function getDeps() - { - if (isset($this->_packagefile)) { - $ver = $this->_packagefile->getPackagexmlVersion(); - if (version_compare($ver, '2.0', '>=')) { - return $this->_packagefile->getDeps(true); - } - - return $this->_packagefile->getDeps(); - } elseif (isset($this->_downloadURL['info'])) { - $ver = $this->_downloadURL['info']->getPackagexmlVersion(); - if (version_compare($ver, '2.0', '>=')) { - return $this->_downloadURL['info']->getDeps(true); - } - - return $this->_downloadURL['info']->getDeps(); - } - - return array(); - } - - /** - * @param array Parsed array from {@link PEAR_Registry::parsePackageName()} or a dependency - * returned from getDepDownloadURL() - */ - function isEqual($param) - { - if (is_object($param)) { - $channel = $param->getChannel(); - $package = $param->getPackage(); - if ($param->getURI()) { - $param = array( - 'channel' => $param->getChannel(), - 'package' => $param->getPackage(), - 'version' => $param->getVersion(), - 'uri' => $param->getURI(), - ); - } else { - $param = array( - 'channel' => $param->getChannel(), - 'package' => $param->getPackage(), - 'version' => $param->getVersion(), - ); - } - } else { - if (isset($param['uri'])) { - if ($this->getChannel() != '__uri') { - return false; - } - return $param['uri'] == $this->getURI(); - } - - $package = isset($param['package']) ? $param['package'] : $param['info']->getPackage(); - $channel = isset($param['channel']) ? $param['channel'] : $param['info']->getChannel(); - if (isset($param['rel'])) { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - - $newdep = PEAR_Dependency2::normalizeDep($param); - $newdep = $newdep[0]; - } elseif (isset($param['min'])) { - $newdep = $param; - } - } - - if (isset($newdep)) { - if (!isset($newdep['min'])) { - $newdep['min'] = '0'; - } - - if (!isset($newdep['max'])) { - $newdep['max'] = '100000000000000000000'; - } - - // use magic to support pecl packages suddenly jumping to the pecl channel - // we need to support both dependency possibilities - if ($channel == 'pear.php.net' && $this->getChannel() == 'pecl.php.net') { - if ($package == $this->getPackage()) { - $channel = 'pecl.php.net'; - } - } - if ($channel == 'pecl.php.net' && $this->getChannel() == 'pear.php.net') { - if ($package == $this->getPackage()) { - $channel = 'pear.php.net'; - } - } - - return (strtolower($package) == strtolower($this->getPackage()) && - $channel == $this->getChannel() && - version_compare($newdep['min'], $this->getVersion(), '<=') && - version_compare($newdep['max'], $this->getVersion(), '>=')); - } - - // use magic to support pecl packages suddenly jumping to the pecl channel - if ($channel == 'pecl.php.net' && $this->getChannel() == 'pear.php.net') { - if (strtolower($package) == strtolower($this->getPackage())) { - $channel = 'pear.php.net'; - } - } - - if (isset($param['version'])) { - return (strtolower($package) == strtolower($this->getPackage()) && - $channel == $this->getChannel() && - $param['version'] == $this->getVersion()); - } - - return strtolower($package) == strtolower($this->getPackage()) && - $channel == $this->getChannel(); - } - - function isInstalled($dep, $oper = '==') - { - if (!$dep) { - return false; - } - - if ($oper != 'ge' && $oper != 'gt' && $oper != 'has' && $oper != '==') { - return false; - } - - if (is_object($dep)) { - $package = $dep->getPackage(); - $channel = $dep->getChannel(); - if ($dep->getURI()) { - $dep = array( - 'uri' => $dep->getURI(), - 'version' => $dep->getVersion(), - ); - } else { - $dep = array( - 'version' => $dep->getVersion(), - ); - } - } else { - if (isset($dep['uri'])) { - $channel = '__uri'; - $package = $dep['dep']['name']; - } else { - $channel = $dep['info']->getChannel(); - $package = $dep['info']->getPackage(); - } - } - - $options = $this->_downloader->getOptions(); - $test = $this->_installRegistry->packageExists($package, $channel); - if (!$test && $channel == 'pecl.php.net') { - // do magic to allow upgrading from old pecl packages to new ones - $test = $this->_installRegistry->packageExists($package, 'pear.php.net'); - $channel = 'pear.php.net'; - } - - if ($test) { - if (isset($dep['uri'])) { - if ($this->_installRegistry->packageInfo($package, 'uri', '__uri') == $dep['uri']) { - return true; - } - } - - if (isset($options['upgrade'])) { - $packageVersion = $this->_installRegistry->packageInfo($package, 'version', $channel); - if (version_compare($packageVersion, $dep['version'], '>=')) { - return true; - } - - return false; - } - - return true; - } - - return false; - } - - /** - * Detect duplicate package names with differing versions - * - * If a user requests to install Date 1.4.6 and Date 1.4.7, - * for instance, this is a logic error. This method - * detects this situation. - * - * @param array $params array of PEAR_Downloader_Package objects - * @param array $errorparams empty array - * @return array array of stupid duplicated packages in PEAR_Downloader_Package obejcts - */ - function detectStupidDuplicates($params, &$errorparams) - { - $existing = array(); - foreach ($params as $i => $param) { - $package = $param->getPackage(); - $channel = $param->getChannel(); - $group = $param->getGroup(); - if (!isset($existing[$channel . '/' . $package])) { - $existing[$channel . '/' . $package] = array(); - } - - if (!isset($existing[$channel . '/' . $package][$group])) { - $existing[$channel . '/' . $package][$group] = array(); - } - - $existing[$channel . '/' . $package][$group][] = $i; - } - - $indices = array(); - foreach ($existing as $package => $groups) { - foreach ($groups as $group => $dupes) { - if (count($dupes) > 1) { - $indices = $indices + $dupes; - } - } - } - - $indices = array_unique($indices); - foreach ($indices as $index) { - $errorparams[] = $params[$index]; - } - - return count($errorparams); - } - - /** - * @param array - * @param bool ignore install groups - for final removal of dupe packages - * @static - */ - function removeDuplicates(&$params, $ignoreGroups = false) - { - $pnames = array(); - foreach ($params as $i => $param) { - if (!$param) { - continue; - } - - if ($param->getPackage()) { - $group = $ignoreGroups ? '' : $param->getGroup(); - $pnames[$i] = $param->getChannel() . '/' . - $param->getPackage() . '-' . $param->getVersion() . '#' . $group; - } - } - - $pnames = array_unique($pnames); - $unset = array_diff(array_keys($params), array_keys($pnames)); - $testp = array_flip($pnames); - foreach ($params as $i => $param) { - if (!$param) { - $unset[] = $i; - continue; - } - - if (!is_a($param, 'PEAR_Downloader_Package')) { - $unset[] = $i; - continue; - } - - $group = $ignoreGroups ? '' : $param->getGroup(); - if (!isset($testp[$param->getChannel() . '/' . $param->getPackage() . '-' . - $param->getVersion() . '#' . $group])) { - $unset[] = $i; - } - } - - foreach ($unset as $i) { - unset($params[$i]); - } - - $ret = array(); - foreach ($params as $i => $param) { - $ret[] = &$params[$i]; - } - - $params = array(); - foreach ($ret as $i => $param) { - $params[] = &$ret[$i]; - } - } - - function explicitState() - { - return $this->_explicitState; - } - - function setExplicitState($s) - { - $this->_explicitState = $s; - } - - /** - * @static - */ - function mergeDependencies(&$params) - { - $bundles = $newparams = array(); - foreach ($params as $i => $param) { - if (!$param->isBundle()) { - continue; - } - - $bundles[] = $i; - $pf = &$param->getPackageFile(); - $newdeps = array(); - $contents = $pf->getBundledPackages(); - if (!is_array($contents)) { - $contents = array($contents); - } - - foreach ($contents as $file) { - $filecontents = $pf->getFileContents($file); - $dl = &$param->getDownloader(); - $options = $dl->getOptions(); - if (PEAR::isError($dir = $dl->getDownloadDir())) { - return $dir; - } - - $fp = @fopen($dir . DIRECTORY_SEPARATOR . $file, 'wb'); - if (!$fp) { - continue; - } - - // FIXME do symlink check - - fwrite($fp, $filecontents, strlen($filecontents)); - fclose($fp); - if ($s = $params[$i]->explicitState()) { - $obj->setExplicitState($s); - } - - $obj = &new PEAR_Downloader_Package($params[$i]->getDownloader()); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if (PEAR::isError($dir = $dl->getDownloadDir())) { - PEAR::popErrorHandling(); - return $dir; - } - - $e = $obj->_fromFile($a = $dir . DIRECTORY_SEPARATOR . $file); - PEAR::popErrorHandling(); - if (PEAR::isError($e)) { - if (!isset($options['soft'])) { - $dl->log(0, $e->getMessage()); - } - continue; - } - - $j = &$obj; - if (!PEAR_Downloader_Package::willDownload($j, - array_merge($params, $newparams)) && !$param->isInstalled($j)) { - $newparams[] = &$j; - } - } - } - - foreach ($bundles as $i) { - unset($params[$i]); // remove bundles - only their contents matter for installation - } - - PEAR_Downloader_Package::removeDuplicates($params); // strip any unset indices - if (count($newparams)) { // add in bundled packages for install - foreach ($newparams as $i => $unused) { - $params[] = &$newparams[$i]; - } - $newparams = array(); - } - - foreach ($params as $i => $param) { - $newdeps = array(); - foreach ($param->_downloadDeps as $dep) { - $merge = array_merge($params, $newparams); - if (!PEAR_Downloader_Package::willDownload($dep, $merge) - && !$param->isInstalled($dep) - ) { - $newdeps[] = $dep; - } else { - //var_dump($dep); - // detect versioning conflicts here - } - } - - // convert the dependencies into PEAR_Downloader_Package objects for the next time around - $params[$i]->_downloadDeps = array(); - foreach ($newdeps as $dep) { - $obj = &new PEAR_Downloader_Package($params[$i]->getDownloader()); - if ($s = $params[$i]->explicitState()) { - $obj->setExplicitState($s); - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $e = $obj->fromDepURL($dep); - PEAR::popErrorHandling(); - if (PEAR::isError($e)) { - if (!isset($options['soft'])) { - $obj->_downloader->log(0, $e->getMessage()); - } - continue; - } - - $e = $obj->detectDependencies($params); - if (PEAR::isError($e)) { - if (!isset($options['soft'])) { - $obj->_downloader->log(0, $e->getMessage()); - } - } - - $j = &$obj; - $newparams[] = &$j; - } - } - - if (count($newparams)) { - foreach ($newparams as $i => $unused) { - $params[] = &$newparams[$i]; - } - return true; - } - - return false; - } - - - /** - * @static - */ - function willDownload($param, $params) - { - if (!is_array($params)) { - return false; - } - - foreach ($params as $obj) { - if ($obj->isEqual($param)) { - return true; - } - } - - return false; - } - - /** - * For simpler unit-testing - * @param PEAR_Config - * @param int - * @param string - */ - function &getPackagefileObject(&$c, $d) - { - $a = &new PEAR_PackageFile($c, $d); - return $a; - } - - /** - * This will retrieve from a local file if possible, and parse out - * a group name as well. The original parameter will be modified to reflect this. - * @param string|array can be a parsed package name as well - * @access private - */ - function _fromFile(&$param) - { - $saveparam = $param; - if (is_string($param)) { - if (!@file_exists($param)) { - $test = explode('#', $param); - $group = array_pop($test); - if (@file_exists(implode('#', $test))) { - $this->setGroup($group); - $param = implode('#', $test); - $this->_explicitGroup = true; - } - } - - if (@is_file($param)) { - $this->_type = 'local'; - $options = $this->_downloader->getOptions(); - $pkg = &$this->getPackagefileObject($this->_config, $this->_downloader->_debug); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pf = &$pkg->fromAnyFile($param, PEAR_VALIDATE_INSTALLING); - PEAR::popErrorHandling(); - if (PEAR::isError($pf)) { - $this->_valid = false; - $param = $saveparam; - return $pf; - } - $this->_packagefile = &$pf; - if (!$this->getGroup()) { - $this->setGroup('default'); // install the default dependency group - } - return $this->_valid = true; - } - } - $param = $saveparam; - return $this->_valid = false; - } - - function _fromUrl($param, $saveparam = '') - { - if (!is_array($param) && (preg_match('#^(http|https|ftp)://#', $param))) { - $options = $this->_downloader->getOptions(); - $this->_type = 'url'; - $callback = $this->_downloader->ui ? - array(&$this->_downloader, '_downloadCallback') : null; - $this->_downloader->pushErrorHandling(PEAR_ERROR_RETURN); - if (PEAR::isError($dir = $this->_downloader->getDownloadDir())) { - $this->_downloader->popErrorHandling(); - return $dir; - } - - $this->_downloader->log(3, 'Downloading "' . $param . '"'); - $file = $this->_downloader->downloadHttp($param, $this->_downloader->ui, - $dir, $callback, null, false, $this->getChannel()); - $this->_downloader->popErrorHandling(); - if (PEAR::isError($file)) { - if (!empty($saveparam)) { - $saveparam = ", cannot download \"$saveparam\""; - } - $err = PEAR::raiseError('Could not download from "' . $param . - '"' . $saveparam . ' (' . $file->getMessage() . ')'); - return $err; - } - - if ($this->_rawpackagefile) { - require_once 'Archive/Tar.php'; - $tar = &new Archive_Tar($file); - $packagexml = $tar->extractInString('package2.xml'); - if (!$packagexml) { - $packagexml = $tar->extractInString('package.xml'); - } - - if (str_replace(array("\n", "\r"), array('',''), $packagexml) != - str_replace(array("\n", "\r"), array('',''), $this->_rawpackagefile)) { - if ($this->getChannel() != 'pear.php.net') { - return PEAR::raiseError('CRITICAL ERROR: package.xml downloaded does ' . - 'not match value returned from xml-rpc'); - } - - // be more lax for the existing PEAR packages that have not-ok - // characters in their package.xml - $this->_downloader->log(0, 'CRITICAL WARNING: The "' . - $this->getPackage() . '" package has invalid characters in its ' . - 'package.xml. The next version of PEAR may not be able to install ' . - 'this package for security reasons. Please open a bug report at ' . - 'http://pear.php.net/package/' . $this->getPackage() . '/bugs'); - } - } - - // whew, download worked! - $pkg = &$this->getPackagefileObject($this->_config, $this->_downloader->debug); - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pf = &$pkg->fromAnyFile($file, PEAR_VALIDATE_INSTALLING); - PEAR::popErrorHandling(); - if (PEAR::isError($pf)) { - if (is_array($pf->getUserInfo())) { - foreach ($pf->getUserInfo() as $err) { - if (is_array($err)) { - $err = $err['message']; - } - - if (!isset($options['soft'])) { - $this->_downloader->log(0, "Validation Error: $err"); - } - } - } - - if (!isset($options['soft'])) { - $this->_downloader->log(0, $pf->getMessage()); - } - - ///FIXME need to pass back some error code that we can use to match with to cancel all further operations - /// At least stop all deps of this package from being installed - $out = $saveparam ? $saveparam : $param; - $err = PEAR::raiseError('Download of "' . $out . '" succeeded, but it is not a valid package archive'); - $this->_valid = false; - return $err; - } - - $this->_packagefile = &$pf; - $this->setGroup('default'); // install the default dependency group - return $this->_valid = true; - } - - return $this->_valid = false; - } - - /** - * - * @param string|array pass in an array of format - * array( - * 'package' => 'pname', - * ['channel' => 'channame',] - * ['version' => 'version',] - * ['state' => 'state',]) - * or a string of format [channame/]pname[-version|-state] - */ - function _fromString($param) - { - $options = $this->_downloader->getOptions(); - $channel = $this->_config->get('default_channel'); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pname = $this->_registry->parsePackageName($param, $channel); - PEAR::popErrorHandling(); - if (PEAR::isError($pname)) { - if ($pname->getCode() == 'invalid') { - $this->_valid = false; - return false; - } - - if ($pname->getCode() == 'channel') { - $parsed = $pname->getUserInfo(); - if ($this->_downloader->discover($parsed['channel'])) { - if ($this->_config->get('auto_discover')) { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pname = $this->_registry->parsePackageName($param, $channel); - PEAR::popErrorHandling(); - } else { - if (!isset($options['soft'])) { - $this->_downloader->log(0, 'Channel "' . $parsed['channel'] . - '" is not initialized, use ' . - '"pear channel-discover ' . $parsed['channel'] . '" to initialize' . - 'or pear config-set auto_discover 1'); - } - } - } - - if (PEAR::isError($pname)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $pname->getMessage()); - } - - if (is_array($param)) { - $param = $this->_registry->parsedPackageNameToString($param); - } - - $err = PEAR::raiseError('invalid package name/package file "' . $param . '"'); - $this->_valid = false; - return $err; - } - } else { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $pname->getMessage()); - } - - $err = PEAR::raiseError('invalid package name/package file "' . $param . '"'); - $this->_valid = false; - return $err; - } - } - - if (!isset($this->_type)) { - $this->_type = 'rest'; - } - - $this->_parsedname = $pname; - $this->_explicitState = isset($pname['state']) ? $pname['state'] : false; - $this->_explicitGroup = isset($pname['group']) ? true : false; - - $info = $this->_downloader->_getPackageDownloadUrl($pname); - if (PEAR::isError($info)) { - if ($info->getCode() != -976 && $pname['channel'] == 'pear.php.net') { - // try pecl - $pname['channel'] = 'pecl.php.net'; - if ($test = $this->_downloader->_getPackageDownloadUrl($pname)) { - if (!PEAR::isError($test)) { - $info = PEAR::raiseError($info->getMessage() . ' - package ' . - $this->_registry->parsedPackageNameToString($pname, true) . - ' can be installed with "pecl install ' . $pname['package'] . - '"'); - } else { - $pname['channel'] = 'pear.php.net'; - } - } else { - $pname['channel'] = 'pear.php.net'; - } - } - - return $info; - } - - $this->_rawpackagefile = $info['raw']; - $ret = $this->_analyzeDownloadURL($info, $param, $pname); - if (PEAR::isError($ret)) { - return $ret; - } - - if ($ret) { - $this->_downloadURL = $ret; - return $this->_valid = (bool) $ret; - } - } - - /** - * @param array output of package.getDownloadURL - * @param string|array|object information for detecting packages to be downloaded, and - * for errors - * @param array name information of the package - * @param array|null packages to be downloaded - * @param bool is this an optional dependency? - * @param bool is this any kind of dependency? - * @access private - */ - function _analyzeDownloadURL($info, $param, $pname, $params = null, $optional = false, - $isdependency = false) - { - if (!is_string($param) && PEAR_Downloader_Package::willDownload($param, $params)) { - return false; - } - - if ($info === false) { - $saveparam = !is_string($param) ? ", cannot download \"$param\"" : ''; - - // no releases exist - return PEAR::raiseError('No releases for package "' . - $this->_registry->parsedPackageNameToString($pname, true) . '" exist' . $saveparam); - } - - if (strtolower($info['info']->getChannel()) != strtolower($pname['channel'])) { - $err = false; - if ($pname['channel'] == 'pecl.php.net') { - if ($info['info']->getChannel() != 'pear.php.net') { - $err = true; - } - } elseif ($info['info']->getChannel() == 'pecl.php.net') { - if ($pname['channel'] != 'pear.php.net') { - $err = true; - } - } else { - $err = true; - } - - if ($err) { - return PEAR::raiseError('SECURITY ERROR: package in channel "' . $pname['channel'] . - '" retrieved another channel\'s name for download! ("' . - $info['info']->getChannel() . '")'); - } - } - - $preferred_state = $this->_config->get('preferred_state'); - if (!isset($info['url'])) { - $package_version = $this->_registry->packageInfo($info['info']->getPackage(), - 'version', $info['info']->getChannel()); - if ($this->isInstalled($info)) { - if ($isdependency && version_compare($info['version'], $package_version, '<=')) { - // ignore bogus errors of "failed to download dependency" - // if it is already installed and the one that would be - // downloaded is older or the same version (Bug #7219) - return false; - } - } - - if ($info['version'] === $package_version) { - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . - '/' . $pname['package'] . '-' . $package_version. ', additionally the suggested version' . - ' (' . $package_version . ') is the same as the locally installed one.'); - } - - return false; - } - - if (version_compare($info['version'], $package_version, '<=')) { - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . - '/' . $pname['package'] . '-' . $package_version . ', additionally the suggested version' . - ' (' . $info['version'] . ') is a lower version than the locally installed one (' . $package_version . ').'); - } - - return false; - } - - $instead = ', will instead download version ' . $info['version'] . - ', stability "' . $info['info']->getState() . '"'; - // releases exist, but we failed to get any - if (isset($this->_downloader->_options['force'])) { - if (isset($pname['version'])) { - $vs = ', version "' . $pname['version'] . '"'; - } elseif (isset($pname['state'])) { - $vs = ', stability "' . $pname['state'] . '"'; - } elseif ($param == 'dependency') { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - - if (!in_array($info['info']->getState(), - PEAR_Common::betterStates($preferred_state, true))) { - if ($optional) { - // don't spit out confusing error message - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = ' within preferred state "' . $preferred_state . - '"'; - } else { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - - if ($optional) { - // don't spit out confusing error message - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = PEAR_Dependency2::_getExtraString($pname); - $instead = ''; - } - } else { - $vs = ' within preferred state "' . $preferred_state . '"'; - } - - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . - '/' . $pname['package'] . $vs . $instead); - } - - // download the latest release - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } else { - if (isset($info['php']) && $info['php']) { - $err = PEAR::raiseError('Failed to download ' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], - 'package' => $pname['package']), - true) . - ', latest release is version ' . $info['php']['v'] . - ', but it requires PHP version "' . - $info['php']['m'] . '", use "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package'], - 'version' => $info['php']['v'])) . '" to install', - PEAR_DOWNLOADER_PACKAGE_PHPVERSION); - return $err; - } - - // construct helpful error message - if (isset($pname['version'])) { - $vs = ', version "' . $pname['version'] . '"'; - } elseif (isset($pname['state'])) { - $vs = ', stability "' . $pname['state'] . '"'; - } elseif ($param == 'dependency') { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - - if (!in_array($info['info']->getState(), - PEAR_Common::betterStates($preferred_state, true))) { - if ($optional) { - // don't spit out confusing error message, and don't die on - // optional dep failure! - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = ' within preferred state "' . $preferred_state . '"'; - } else { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - - if ($optional) { - // don't spit out confusing error message, and don't die on - // optional dep failure! - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = PEAR_Dependency2::_getExtraString($pname); - } - } else { - $vs = ' within preferred state "' . $this->_downloader->config->get('preferred_state') . '"'; - } - - $options = $this->_downloader->getOptions(); - // this is only set by the "download-all" command - if (isset($options['ignorepreferred_state'])) { - $err = PEAR::raiseError( - 'Failed to download ' . $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package']), - true) - . $vs . - ', latest release is version ' . $info['version'] . - ', stability "' . $info['info']->getState() . '", use "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package'], - 'version' => $info['version'])) . '" to install', - PEAR_DOWNLOADER_PACKAGE_STATE); - return $err; - } - - // Checks if the user has a package installed already and checks the release against - // the state against the installed package, this allows upgrades for packages - // with lower stability than the preferred_state - $stability = $this->_registry->packageInfo($pname['package'], 'stability', $pname['channel']); - if (!$this->isInstalled($info) - || !in_array($info['info']->getState(), PEAR_Common::betterStates($stability['release'], true)) - ) { - $err = PEAR::raiseError( - 'Failed to download ' . $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package']), - true) - . $vs . - ', latest release is version ' . $info['version'] . - ', stability "' . $info['info']->getState() . '", use "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package'], - 'version' => $info['version'])) . '" to install'); - return $err; - } - } - } - - if (isset($info['deprecated']) && $info['deprecated']) { - $this->_downloader->log(0, - 'WARNING: "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $info['info']->getChannel(), - 'package' => $info['info']->getPackage()), true) . - '" is deprecated in favor of "' . - $this->_registry->parsedPackageNameToString($info['deprecated'], true) . - '"'); - } - - return $info; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/ErrorStack.php b/3rdparty/PEAR/ErrorStack.php deleted file mode 100644 index 0303f5273adb45d68c77368ac99bd1910e1d4edd..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/ErrorStack.php +++ /dev/null @@ -1,985 +0,0 @@ - - * @copyright 2004-2008 Greg Beaver - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: ErrorStack.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR_ErrorStack - */ - -/** - * Singleton storage - * - * Format: - *
- * array(
- *  'package1' => PEAR_ErrorStack object,
- *  'package2' => PEAR_ErrorStack object,
- *  ...
- * )
- * 
- * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] - */ -$GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] = array(); - -/** - * Global error callback (default) - * - * This is only used if set to non-false. * is the default callback for - * all packages, whereas specific packages may set a default callback - * for all instances, regardless of whether they are a singleton or not. - * - * To exclude non-singletons, only set the local callback for the singleton - * @see PEAR_ErrorStack::setDefaultCallback() - * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'] - */ -$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'] = array( - '*' => false, -); - -/** - * Global Log object (default) - * - * This is only used if set to non-false. Use to set a default log object for - * all stacks, regardless of instantiation order or location - * @see PEAR_ErrorStack::setDefaultLogger() - * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] - */ -$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = false; - -/** - * Global Overriding Callback - * - * This callback will override any error callbacks that specific loggers have set. - * Use with EXTREME caution - * @see PEAR_ErrorStack::staticPushCallback() - * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] - */ -$GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'] = array(); - -/**#@+ - * One of four possible return values from the error Callback - * @see PEAR_ErrorStack::_errorCallback() - */ -/** - * If this is returned, then the error will be both pushed onto the stack - * and logged. - */ -define('PEAR_ERRORSTACK_PUSHANDLOG', 1); -/** - * If this is returned, then the error will only be pushed onto the stack, - * and not logged. - */ -define('PEAR_ERRORSTACK_PUSH', 2); -/** - * If this is returned, then the error will only be logged, but not pushed - * onto the error stack. - */ -define('PEAR_ERRORSTACK_LOG', 3); -/** - * If this is returned, then the error is completely ignored. - */ -define('PEAR_ERRORSTACK_IGNORE', 4); -/** - * If this is returned, then the error is logged and die() is called. - */ -define('PEAR_ERRORSTACK_DIE', 5); -/**#@-*/ - -/** - * Error code for an attempt to instantiate a non-class as a PEAR_ErrorStack in - * the singleton method. - */ -define('PEAR_ERRORSTACK_ERR_NONCLASS', 1); - -/** - * Error code for an attempt to pass an object into {@link PEAR_ErrorStack::getMessage()} - * that has no __toString() method - */ -define('PEAR_ERRORSTACK_ERR_OBJTOSTRING', 2); -/** - * Error Stack Implementation - * - * Usage: - * - * // global error stack - * $global_stack = &PEAR_ErrorStack::singleton('MyPackage'); - * // local error stack - * $local_stack = new PEAR_ErrorStack('MyPackage'); - * - * @author Greg Beaver - * @version 1.9.4 - * @package PEAR_ErrorStack - * @category Debugging - * @copyright 2004-2008 Greg Beaver - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: ErrorStack.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR_ErrorStack - */ -class PEAR_ErrorStack { - /** - * Errors are stored in the order that they are pushed on the stack. - * @since 0.4alpha Errors are no longer organized by error level. - * This renders pop() nearly unusable, and levels could be more easily - * handled in a callback anyway - * @var array - * @access private - */ - var $_errors = array(); - - /** - * Storage of errors by level. - * - * Allows easy retrieval and deletion of only errors from a particular level - * @since PEAR 1.4.0dev - * @var array - * @access private - */ - var $_errorsByLevel = array(); - - /** - * Package name this error stack represents - * @var string - * @access protected - */ - var $_package; - - /** - * Determines whether a PEAR_Error is thrown upon every error addition - * @var boolean - * @access private - */ - var $_compat = false; - - /** - * If set to a valid callback, this will be used to generate the error - * message from the error code, otherwise the message passed in will be - * used - * @var false|string|array - * @access private - */ - var $_msgCallback = false; - - /** - * If set to a valid callback, this will be used to generate the error - * context for an error. For PHP-related errors, this will be a file - * and line number as retrieved from debug_backtrace(), but can be - * customized for other purposes. The error might actually be in a separate - * configuration file, or in a database query. - * @var false|string|array - * @access protected - */ - var $_contextCallback = false; - - /** - * If set to a valid callback, this will be called every time an error - * is pushed onto the stack. The return value will be used to determine - * whether to allow an error to be pushed or logged. - * - * The return value must be one an PEAR_ERRORSTACK_* constant - * @see PEAR_ERRORSTACK_PUSHANDLOG, PEAR_ERRORSTACK_PUSH, PEAR_ERRORSTACK_LOG - * @var false|string|array - * @access protected - */ - var $_errorCallback = array(); - - /** - * PEAR::Log object for logging errors - * @var false|Log - * @access protected - */ - var $_logger = false; - - /** - * Error messages - designed to be overridden - * @var array - * @abstract - */ - var $_errorMsgs = array(); - - /** - * Set up a new error stack - * - * @param string $package name of the package this error stack represents - * @param callback $msgCallback callback used for error message generation - * @param callback $contextCallback callback used for context generation, - * defaults to {@link getFileLine()} - * @param boolean $throwPEAR_Error - */ - function PEAR_ErrorStack($package, $msgCallback = false, $contextCallback = false, - $throwPEAR_Error = false) - { - $this->_package = $package; - $this->setMessageCallback($msgCallback); - $this->setContextCallback($contextCallback); - $this->_compat = $throwPEAR_Error; - } - - /** - * Return a single error stack for this package. - * - * Note that all parameters are ignored if the stack for package $package - * has already been instantiated - * @param string $package name of the package this error stack represents - * @param callback $msgCallback callback used for error message generation - * @param callback $contextCallback callback used for context generation, - * defaults to {@link getFileLine()} - * @param boolean $throwPEAR_Error - * @param string $stackClass class to instantiate - * @static - * @return PEAR_ErrorStack - */ - function &singleton($package, $msgCallback = false, $contextCallback = false, - $throwPEAR_Error = false, $stackClass = 'PEAR_ErrorStack') - { - if (isset($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package])) { - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]; - } - if (!class_exists($stackClass)) { - if (function_exists('debug_backtrace')) { - $trace = debug_backtrace(); - } - PEAR_ErrorStack::staticPush('PEAR_ErrorStack', PEAR_ERRORSTACK_ERR_NONCLASS, - 'exception', array('stackclass' => $stackClass), - 'stack class "%stackclass%" is not a valid class name (should be like PEAR_ErrorStack)', - false, $trace); - } - $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package] = - new $stackClass($package, $msgCallback, $contextCallback, $throwPEAR_Error); - - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]; - } - - /** - * Internal error handler for PEAR_ErrorStack class - * - * Dies if the error is an exception (and would have died anyway) - * @access private - */ - function _handleError($err) - { - if ($err['level'] == 'exception') { - $message = $err['message']; - if (isset($_SERVER['REQUEST_URI'])) { - echo '
'; - } else { - echo "\n"; - } - var_dump($err['context']); - die($message); - } - } - - /** - * Set up a PEAR::Log object for all error stacks that don't have one - * @param Log $log - * @static - */ - function setDefaultLogger(&$log) - { - if (is_object($log) && method_exists($log, 'log') ) { - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = &$log; - } elseif (is_callable($log)) { - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = &$log; - } - } - - /** - * Set up a PEAR::Log object for this error stack - * @param Log $log - */ - function setLogger(&$log) - { - if (is_object($log) && method_exists($log, 'log') ) { - $this->_logger = &$log; - } elseif (is_callable($log)) { - $this->_logger = &$log; - } - } - - /** - * Set an error code => error message mapping callback - * - * This method sets the callback that can be used to generate error - * messages for any instance - * @param array|string Callback function/method - */ - function setMessageCallback($msgCallback) - { - if (!$msgCallback) { - $this->_msgCallback = array(&$this, 'getErrorMessage'); - } else { - if (is_callable($msgCallback)) { - $this->_msgCallback = $msgCallback; - } - } - } - - /** - * Get an error code => error message mapping callback - * - * This method returns the current callback that can be used to generate error - * messages - * @return array|string|false Callback function/method or false if none - */ - function getMessageCallback() - { - return $this->_msgCallback; - } - - /** - * Sets a default callback to be used by all error stacks - * - * This method sets the callback that can be used to generate error - * messages for a singleton - * @param array|string Callback function/method - * @param string Package name, or false for all packages - * @static - */ - function setDefaultCallback($callback = false, $package = false) - { - if (!is_callable($callback)) { - $callback = false; - } - $package = $package ? $package : '*'; - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'][$package] = $callback; - } - - /** - * Set a callback that generates context information (location of error) for an error stack - * - * This method sets the callback that can be used to generate context - * information for an error. Passing in NULL will disable context generation - * and remove the expensive call to debug_backtrace() - * @param array|string|null Callback function/method - */ - function setContextCallback($contextCallback) - { - if ($contextCallback === null) { - return $this->_contextCallback = false; - } - if (!$contextCallback) { - $this->_contextCallback = array(&$this, 'getFileLine'); - } else { - if (is_callable($contextCallback)) { - $this->_contextCallback = $contextCallback; - } - } - } - - /** - * Set an error Callback - * If set to a valid callback, this will be called every time an error - * is pushed onto the stack. The return value will be used to determine - * whether to allow an error to be pushed or logged. - * - * The return value must be one of the ERRORSTACK_* constants. - * - * This functionality can be used to emulate PEAR's pushErrorHandling, and - * the PEAR_ERROR_CALLBACK mode, without affecting the integrity of - * the error stack or logging - * @see PEAR_ERRORSTACK_PUSHANDLOG, PEAR_ERRORSTACK_PUSH, PEAR_ERRORSTACK_LOG - * @see popCallback() - * @param string|array $cb - */ - function pushCallback($cb) - { - array_push($this->_errorCallback, $cb); - } - - /** - * Remove a callback from the error callback stack - * @see pushCallback() - * @return array|string|false - */ - function popCallback() - { - if (!count($this->_errorCallback)) { - return false; - } - return array_pop($this->_errorCallback); - } - - /** - * Set a temporary overriding error callback for every package error stack - * - * Use this to temporarily disable all existing callbacks (can be used - * to emulate the @ operator, for instance) - * @see PEAR_ERRORSTACK_PUSHANDLOG, PEAR_ERRORSTACK_PUSH, PEAR_ERRORSTACK_LOG - * @see staticPopCallback(), pushCallback() - * @param string|array $cb - * @static - */ - function staticPushCallback($cb) - { - array_push($GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'], $cb); - } - - /** - * Remove a temporary overriding error callback - * @see staticPushCallback() - * @return array|string|false - * @static - */ - function staticPopCallback() - { - $ret = array_pop($GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK']); - if (!is_array($GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'])) { - $GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'] = array(); - } - return $ret; - } - - /** - * Add an error to the stack - * - * If the message generator exists, it is called with 2 parameters. - * - the current Error Stack object - * - an array that is in the same format as an error. Available indices - * are 'code', 'package', 'time', 'params', 'level', and 'context' - * - * Next, if the error should contain context information, this is - * handled by the context grabbing method. - * Finally, the error is pushed onto the proper error stack - * @param int $code Package-specific error code - * @param string $level Error level. This is NOT spell-checked - * @param array $params associative array of error parameters - * @param string $msg Error message, or a portion of it if the message - * is to be generated - * @param array $repackage If this error re-packages an error pushed by - * another package, place the array returned from - * {@link pop()} in this parameter - * @param array $backtrace Protected parameter: use this to pass in the - * {@link debug_backtrace()} that should be used - * to find error context - * @return PEAR_Error|array if compatibility mode is on, a PEAR_Error is also - * thrown. If a PEAR_Error is returned, the userinfo - * property is set to the following array: - * - * - * array( - * 'code' => $code, - * 'params' => $params, - * 'package' => $this->_package, - * 'level' => $level, - * 'time' => time(), - * 'context' => $context, - * 'message' => $msg, - * //['repackage' => $err] repackaged error array/Exception class - * ); - * - * - * Normally, the previous array is returned. - */ - function push($code, $level = 'error', $params = array(), $msg = false, - $repackage = false, $backtrace = false) - { - $context = false; - // grab error context - if ($this->_contextCallback) { - if (!$backtrace) { - $backtrace = debug_backtrace(); - } - $context = call_user_func($this->_contextCallback, $code, $params, $backtrace); - } - - // save error - $time = explode(' ', microtime()); - $time = $time[1] + $time[0]; - $err = array( - 'code' => $code, - 'params' => $params, - 'package' => $this->_package, - 'level' => $level, - 'time' => $time, - 'context' => $context, - 'message' => $msg, - ); - - if ($repackage) { - $err['repackage'] = $repackage; - } - - // set up the error message, if necessary - if ($this->_msgCallback) { - $msg = call_user_func_array($this->_msgCallback, - array(&$this, $err)); - $err['message'] = $msg; - } - $push = $log = true; - $die = false; - // try the overriding callback first - $callback = $this->staticPopCallback(); - if ($callback) { - $this->staticPushCallback($callback); - } - if (!is_callable($callback)) { - // try the local callback next - $callback = $this->popCallback(); - if (is_callable($callback)) { - $this->pushCallback($callback); - } else { - // try the default callback - $callback = isset($GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'][$this->_package]) ? - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'][$this->_package] : - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK']['*']; - } - } - if (is_callable($callback)) { - switch(call_user_func($callback, $err)){ - case PEAR_ERRORSTACK_IGNORE: - return $err; - break; - case PEAR_ERRORSTACK_PUSH: - $log = false; - break; - case PEAR_ERRORSTACK_LOG: - $push = false; - break; - case PEAR_ERRORSTACK_DIE: - $die = true; - break; - // anything else returned has the same effect as pushandlog - } - } - if ($push) { - array_unshift($this->_errors, $err); - if (!isset($this->_errorsByLevel[$err['level']])) { - $this->_errorsByLevel[$err['level']] = array(); - } - $this->_errorsByLevel[$err['level']][] = &$this->_errors[0]; - } - if ($log) { - if ($this->_logger || $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER']) { - $this->_log($err); - } - } - if ($die) { - die(); - } - if ($this->_compat && $push) { - return $this->raiseError($msg, $code, null, null, $err); - } - return $err; - } - - /** - * Static version of {@link push()} - * - * @param string $package Package name this error belongs to - * @param int $code Package-specific error code - * @param string $level Error level. This is NOT spell-checked - * @param array $params associative array of error parameters - * @param string $msg Error message, or a portion of it if the message - * is to be generated - * @param array $repackage If this error re-packages an error pushed by - * another package, place the array returned from - * {@link pop()} in this parameter - * @param array $backtrace Protected parameter: use this to pass in the - * {@link debug_backtrace()} that should be used - * to find error context - * @return PEAR_Error|array if compatibility mode is on, a PEAR_Error is also - * thrown. see docs for {@link push()} - * @static - */ - function staticPush($package, $code, $level = 'error', $params = array(), - $msg = false, $repackage = false, $backtrace = false) - { - $s = &PEAR_ErrorStack::singleton($package); - if ($s->_contextCallback) { - if (!$backtrace) { - if (function_exists('debug_backtrace')) { - $backtrace = debug_backtrace(); - } - } - } - return $s->push($code, $level, $params, $msg, $repackage, $backtrace); - } - - /** - * Log an error using PEAR::Log - * @param array $err Error array - * @param array $levels Error level => Log constant map - * @access protected - */ - function _log($err) - { - if ($this->_logger) { - $logger = &$this->_logger; - } else { - $logger = &$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER']; - } - if (is_a($logger, 'Log')) { - $levels = array( - 'exception' => PEAR_LOG_CRIT, - 'alert' => PEAR_LOG_ALERT, - 'critical' => PEAR_LOG_CRIT, - 'error' => PEAR_LOG_ERR, - 'warning' => PEAR_LOG_WARNING, - 'notice' => PEAR_LOG_NOTICE, - 'info' => PEAR_LOG_INFO, - 'debug' => PEAR_LOG_DEBUG); - if (isset($levels[$err['level']])) { - $level = $levels[$err['level']]; - } else { - $level = PEAR_LOG_INFO; - } - $logger->log($err['message'], $level, $err); - } else { // support non-standard logs - call_user_func($logger, $err); - } - } - - - /** - * Pop an error off of the error stack - * - * @return false|array - * @since 0.4alpha it is no longer possible to specify a specific error - * level to return - the last error pushed will be returned, instead - */ - function pop() - { - $err = @array_shift($this->_errors); - if (!is_null($err)) { - @array_pop($this->_errorsByLevel[$err['level']]); - if (!count($this->_errorsByLevel[$err['level']])) { - unset($this->_errorsByLevel[$err['level']]); - } - } - return $err; - } - - /** - * Pop an error off of the error stack, static method - * - * @param string package name - * @return boolean - * @since PEAR1.5.0a1 - */ - function staticPop($package) - { - if ($package) { - if (!isset($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package])) { - return false; - } - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]->pop(); - } - } - - /** - * Determine whether there are any errors on the stack - * @param string|array Level name. Use to determine if any errors - * of level (string), or levels (array) have been pushed - * @return boolean - */ - function hasErrors($level = false) - { - if ($level) { - return isset($this->_errorsByLevel[$level]); - } - return count($this->_errors); - } - - /** - * Retrieve all errors since last purge - * - * @param boolean set in order to empty the error stack - * @param string level name, to return only errors of a particular severity - * @return array - */ - function getErrors($purge = false, $level = false) - { - if (!$purge) { - if ($level) { - if (!isset($this->_errorsByLevel[$level])) { - return array(); - } else { - return $this->_errorsByLevel[$level]; - } - } else { - return $this->_errors; - } - } - if ($level) { - $ret = $this->_errorsByLevel[$level]; - foreach ($this->_errorsByLevel[$level] as $i => $unused) { - // entries are references to the $_errors array - $this->_errorsByLevel[$level][$i] = false; - } - // array_filter removes all entries === false - $this->_errors = array_filter($this->_errors); - unset($this->_errorsByLevel[$level]); - return $ret; - } - $ret = $this->_errors; - $this->_errors = array(); - $this->_errorsByLevel = array(); - return $ret; - } - - /** - * Determine whether there are any errors on a single error stack, or on any error stack - * - * The optional parameter can be used to test the existence of any errors without the need of - * singleton instantiation - * @param string|false Package name to check for errors - * @param string Level name to check for a particular severity - * @return boolean - * @static - */ - function staticHasErrors($package = false, $level = false) - { - if ($package) { - if (!isset($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package])) { - return false; - } - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]->hasErrors($level); - } - foreach ($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] as $package => $obj) { - if ($obj->hasErrors($level)) { - return true; - } - } - return false; - } - - /** - * Get a list of all errors since last purge, organized by package - * @since PEAR 1.4.0dev BC break! $level is now in the place $merge used to be - * @param boolean $purge Set to purge the error stack of existing errors - * @param string $level Set to a level name in order to retrieve only errors of a particular level - * @param boolean $merge Set to return a flat array, not organized by package - * @param array $sortfunc Function used to sort a merged array - default - * sorts by time, and should be good for most cases - * @static - * @return array - */ - function staticGetErrors($purge = false, $level = false, $merge = false, - $sortfunc = array('PEAR_ErrorStack', '_sortErrors')) - { - $ret = array(); - if (!is_callable($sortfunc)) { - $sortfunc = array('PEAR_ErrorStack', '_sortErrors'); - } - foreach ($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] as $package => $obj) { - $test = $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]->getErrors($purge, $level); - if ($test) { - if ($merge) { - $ret = array_merge($ret, $test); - } else { - $ret[$package] = $test; - } - } - } - if ($merge) { - usort($ret, $sortfunc); - } - return $ret; - } - - /** - * Error sorting function, sorts by time - * @access private - */ - function _sortErrors($a, $b) - { - if ($a['time'] == $b['time']) { - return 0; - } - if ($a['time'] < $b['time']) { - return 1; - } - return -1; - } - - /** - * Standard file/line number/function/class context callback - * - * This function uses a backtrace generated from {@link debug_backtrace()} - * and so will not work at all in PHP < 4.3.0. The frame should - * reference the frame that contains the source of the error. - * @return array|false either array('file' => file, 'line' => line, - * 'function' => function name, 'class' => class name) or - * if this doesn't work, then false - * @param unused - * @param integer backtrace frame. - * @param array Results of debug_backtrace() - * @static - */ - function getFileLine($code, $params, $backtrace = null) - { - if ($backtrace === null) { - return false; - } - $frame = 0; - $functionframe = 1; - if (!isset($backtrace[1])) { - $functionframe = 0; - } else { - while (isset($backtrace[$functionframe]['function']) && - $backtrace[$functionframe]['function'] == 'eval' && - isset($backtrace[$functionframe + 1])) { - $functionframe++; - } - } - if (isset($backtrace[$frame])) { - if (!isset($backtrace[$frame]['file'])) { - $frame++; - } - $funcbacktrace = $backtrace[$functionframe]; - $filebacktrace = $backtrace[$frame]; - $ret = array('file' => $filebacktrace['file'], - 'line' => $filebacktrace['line']); - // rearrange for eval'd code or create function errors - if (strpos($filebacktrace['file'], '(') && - preg_match(';^(.*?)\((\d+)\) : (.*?)\\z;', $filebacktrace['file'], - $matches)) { - $ret['file'] = $matches[1]; - $ret['line'] = $matches[2] + 0; - } - if (isset($funcbacktrace['function']) && isset($backtrace[1])) { - if ($funcbacktrace['function'] != 'eval') { - if ($funcbacktrace['function'] == '__lambda_func') { - $ret['function'] = 'create_function() code'; - } else { - $ret['function'] = $funcbacktrace['function']; - } - } - } - if (isset($funcbacktrace['class']) && isset($backtrace[1])) { - $ret['class'] = $funcbacktrace['class']; - } - return $ret; - } - return false; - } - - /** - * Standard error message generation callback - * - * This method may also be called by a custom error message generator - * to fill in template values from the params array, simply - * set the third parameter to the error message template string to use - * - * The special variable %__msg% is reserved: use it only to specify - * where a message passed in by the user should be placed in the template, - * like so: - * - * Error message: %msg% - internal error - * - * If the message passed like so: - * - * - * $stack->push(ERROR_CODE, 'error', array(), 'server error 500'); - * - * - * The returned error message will be "Error message: server error 500 - - * internal error" - * @param PEAR_ErrorStack - * @param array - * @param string|false Pre-generated error message template - * @static - * @return string - */ - function getErrorMessage(&$stack, $err, $template = false) - { - if ($template) { - $mainmsg = $template; - } else { - $mainmsg = $stack->getErrorMessageTemplate($err['code']); - } - $mainmsg = str_replace('%__msg%', $err['message'], $mainmsg); - if (is_array($err['params']) && count($err['params'])) { - foreach ($err['params'] as $name => $val) { - if (is_array($val)) { - // @ is needed in case $val is a multi-dimensional array - $val = @implode(', ', $val); - } - if (is_object($val)) { - if (method_exists($val, '__toString')) { - $val = $val->__toString(); - } else { - PEAR_ErrorStack::staticPush('PEAR_ErrorStack', PEAR_ERRORSTACK_ERR_OBJTOSTRING, - 'warning', array('obj' => get_class($val)), - 'object %obj% passed into getErrorMessage, but has no __toString() method'); - $val = 'Object'; - } - } - $mainmsg = str_replace('%' . $name . '%', $val, $mainmsg); - } - } - return $mainmsg; - } - - /** - * Standard Error Message Template generator from code - * @return string - */ - function getErrorMessageTemplate($code) - { - if (!isset($this->_errorMsgs[$code])) { - return '%__msg%'; - } - return $this->_errorMsgs[$code]; - } - - /** - * Set the Error Message Template array - * - * The array format must be: - *
-     * array(error code => 'message template',...)
-     * 
- * - * Error message parameters passed into {@link push()} will be used as input - * for the error message. If the template is 'message %foo% was %bar%', and the - * parameters are array('foo' => 'one', 'bar' => 'six'), the error message returned will - * be 'message one was six' - * @return string - */ - function setErrorMessageTemplate($template) - { - $this->_errorMsgs = $template; - } - - - /** - * emulate PEAR::raiseError() - * - * @return PEAR_Error - */ - function raiseError() - { - require_once 'PEAR.php'; - $args = func_get_args(); - return call_user_func_array(array('PEAR', 'raiseError'), $args); - } -} -$stack = &PEAR_ErrorStack::singleton('PEAR_ErrorStack'); -$stack->pushCallback(array('PEAR_ErrorStack', '_handleError')); -?> diff --git a/3rdparty/PEAR/Exception.php b/3rdparty/PEAR/Exception.php deleted file mode 100644 index 4a0e7b86fac7a953773f2f3a841d36e2380b7664..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Exception.php +++ /dev/null @@ -1,389 +0,0 @@ - - * @author Hans Lellelid - * @author Bertrand Mansion - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Exception.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.3.3 - */ - - -/** - * Base PEAR_Exception Class - * - * 1) Features: - * - * - Nestable exceptions (throw new PEAR_Exception($msg, $prev_exception)) - * - Definable triggers, shot when exceptions occur - * - Pretty and informative error messages - * - Added more context info available (like class, method or cause) - * - cause can be a PEAR_Exception or an array of mixed - * PEAR_Exceptions/PEAR_ErrorStack warnings - * - callbacks for specific exception classes and their children - * - * 2) Ideas: - * - * - Maybe a way to define a 'template' for the output - * - * 3) Inherited properties from PHP Exception Class: - * - * protected $message - * protected $code - * protected $line - * protected $file - * private $trace - * - * 4) Inherited methods from PHP Exception Class: - * - * __clone - * __construct - * getMessage - * getCode - * getFile - * getLine - * getTraceSafe - * getTraceSafeAsString - * __toString - * - * 5) Usage example - * - * - * require_once 'PEAR/Exception.php'; - * - * class Test { - * function foo() { - * throw new PEAR_Exception('Error Message', ERROR_CODE); - * } - * } - * - * function myLogger($pear_exception) { - * echo $pear_exception->getMessage(); - * } - * // each time a exception is thrown the 'myLogger' will be called - * // (its use is completely optional) - * PEAR_Exception::addObserver('myLogger'); - * $test = new Test; - * try { - * $test->foo(); - * } catch (PEAR_Exception $e) { - * print $e; - * } - * - * - * @category pear - * @package PEAR - * @author Tomas V.V.Cox - * @author Hans Lellelid - * @author Bertrand Mansion - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.3.3 - * - */ -class PEAR_Exception extends Exception -{ - const OBSERVER_PRINT = -2; - const OBSERVER_TRIGGER = -4; - const OBSERVER_DIE = -8; - protected $cause; - private static $_observers = array(); - private static $_uniqueid = 0; - private $_trace; - - /** - * Supported signatures: - * - PEAR_Exception(string $message); - * - PEAR_Exception(string $message, int $code); - * - PEAR_Exception(string $message, Exception $cause); - * - PEAR_Exception(string $message, Exception $cause, int $code); - * - PEAR_Exception(string $message, PEAR_Error $cause); - * - PEAR_Exception(string $message, PEAR_Error $cause, int $code); - * - PEAR_Exception(string $message, array $causes); - * - PEAR_Exception(string $message, array $causes, int $code); - * @param string exception message - * @param int|Exception|PEAR_Error|array|null exception cause - * @param int|null exception code or null - */ - public function __construct($message, $p2 = null, $p3 = null) - { - if (is_int($p2)) { - $code = $p2; - $this->cause = null; - } elseif (is_object($p2) || is_array($p2)) { - // using is_object allows both Exception and PEAR_Error - if (is_object($p2) && !($p2 instanceof Exception)) { - if (!class_exists('PEAR_Error') || !($p2 instanceof PEAR_Error)) { - throw new PEAR_Exception('exception cause must be Exception, ' . - 'array, or PEAR_Error'); - } - } - $code = $p3; - if (is_array($p2) && isset($p2['message'])) { - // fix potential problem of passing in a single warning - $p2 = array($p2); - } - $this->cause = $p2; - } else { - $code = null; - $this->cause = null; - } - parent::__construct($message, $code); - $this->signal(); - } - - /** - * @param mixed $callback - A valid php callback, see php func is_callable() - * - A PEAR_Exception::OBSERVER_* constant - * - An array(const PEAR_Exception::OBSERVER_*, - * mixed $options) - * @param string $label The name of the observer. Use this if you want - * to remove it later with removeObserver() - */ - public static function addObserver($callback, $label = 'default') - { - self::$_observers[$label] = $callback; - } - - public static function removeObserver($label = 'default') - { - unset(self::$_observers[$label]); - } - - /** - * @return int unique identifier for an observer - */ - public static function getUniqueId() - { - return self::$_uniqueid++; - } - - private function signal() - { - foreach (self::$_observers as $func) { - if (is_callable($func)) { - call_user_func($func, $this); - continue; - } - settype($func, 'array'); - switch ($func[0]) { - case self::OBSERVER_PRINT : - $f = (isset($func[1])) ? $func[1] : '%s'; - printf($f, $this->getMessage()); - break; - case self::OBSERVER_TRIGGER : - $f = (isset($func[1])) ? $func[1] : E_USER_NOTICE; - trigger_error($this->getMessage(), $f); - break; - case self::OBSERVER_DIE : - $f = (isset($func[1])) ? $func[1] : '%s'; - die(printf($f, $this->getMessage())); - break; - default: - trigger_error('invalid observer type', E_USER_WARNING); - } - } - } - - /** - * Return specific error information that can be used for more detailed - * error messages or translation. - * - * This method may be overridden in child exception classes in order - * to add functionality not present in PEAR_Exception and is a placeholder - * to define API - * - * The returned array must be an associative array of parameter => value like so: - *
-     * array('name' => $name, 'context' => array(...))
-     * 
- * @return array - */ - public function getErrorData() - { - return array(); - } - - /** - * Returns the exception that caused this exception to be thrown - * @access public - * @return Exception|array The context of the exception - */ - public function getCause() - { - return $this->cause; - } - - /** - * Function must be public to call on caused exceptions - * @param array - */ - public function getCauseMessage(&$causes) - { - $trace = $this->getTraceSafe(); - $cause = array('class' => get_class($this), - 'message' => $this->message, - 'file' => 'unknown', - 'line' => 'unknown'); - if (isset($trace[0])) { - if (isset($trace[0]['file'])) { - $cause['file'] = $trace[0]['file']; - $cause['line'] = $trace[0]['line']; - } - } - $causes[] = $cause; - if ($this->cause instanceof PEAR_Exception) { - $this->cause->getCauseMessage($causes); - } elseif ($this->cause instanceof Exception) { - $causes[] = array('class' => get_class($this->cause), - 'message' => $this->cause->getMessage(), - 'file' => $this->cause->getFile(), - 'line' => $this->cause->getLine()); - } elseif (class_exists('PEAR_Error') && $this->cause instanceof PEAR_Error) { - $causes[] = array('class' => get_class($this->cause), - 'message' => $this->cause->getMessage(), - 'file' => 'unknown', - 'line' => 'unknown'); - } elseif (is_array($this->cause)) { - foreach ($this->cause as $cause) { - if ($cause instanceof PEAR_Exception) { - $cause->getCauseMessage($causes); - } elseif ($cause instanceof Exception) { - $causes[] = array('class' => get_class($cause), - 'message' => $cause->getMessage(), - 'file' => $cause->getFile(), - 'line' => $cause->getLine()); - } elseif (class_exists('PEAR_Error') && $cause instanceof PEAR_Error) { - $causes[] = array('class' => get_class($cause), - 'message' => $cause->getMessage(), - 'file' => 'unknown', - 'line' => 'unknown'); - } elseif (is_array($cause) && isset($cause['message'])) { - // PEAR_ErrorStack warning - $causes[] = array( - 'class' => $cause['package'], - 'message' => $cause['message'], - 'file' => isset($cause['context']['file']) ? - $cause['context']['file'] : - 'unknown', - 'line' => isset($cause['context']['line']) ? - $cause['context']['line'] : - 'unknown', - ); - } - } - } - } - - public function getTraceSafe() - { - if (!isset($this->_trace)) { - $this->_trace = $this->getTrace(); - if (empty($this->_trace)) { - $backtrace = debug_backtrace(); - $this->_trace = array($backtrace[count($backtrace)-1]); - } - } - return $this->_trace; - } - - public function getErrorClass() - { - $trace = $this->getTraceSafe(); - return $trace[0]['class']; - } - - public function getErrorMethod() - { - $trace = $this->getTraceSafe(); - return $trace[0]['function']; - } - - public function __toString() - { - if (isset($_SERVER['REQUEST_URI'])) { - return $this->toHtml(); - } - return $this->toText(); - } - - public function toHtml() - { - $trace = $this->getTraceSafe(); - $causes = array(); - $this->getCauseMessage($causes); - $html = '' . "\n"; - foreach ($causes as $i => $cause) { - $html .= '\n"; - } - $html .= '' . "\n" - . '' - . '' - . '' . "\n"; - - foreach ($trace as $k => $v) { - $html .= '' - . '' - . '' . "\n"; - } - $html .= '' - . '' - . '' . "\n" - . '
' - . str_repeat('-', $i) . ' ' . $cause['class'] . ': ' - . htmlspecialchars($cause['message']) . ' in ' . $cause['file'] . ' ' - . 'on line ' . $cause['line'] . '' - . "
Exception trace
#FunctionLocation
' . $k . ''; - if (!empty($v['class'])) { - $html .= $v['class'] . $v['type']; - } - $html .= $v['function']; - $args = array(); - if (!empty($v['args'])) { - foreach ($v['args'] as $arg) { - if (is_null($arg)) $args[] = 'null'; - elseif (is_array($arg)) $args[] = 'Array'; - elseif (is_object($arg)) $args[] = 'Object('.get_class($arg).')'; - elseif (is_bool($arg)) $args[] = $arg ? 'true' : 'false'; - elseif (is_int($arg) || is_double($arg)) $args[] = $arg; - else { - $arg = (string)$arg; - $str = htmlspecialchars(substr($arg, 0, 16)); - if (strlen($arg) > 16) $str .= '…'; - $args[] = "'" . $str . "'"; - } - } - } - $html .= '(' . implode(', ',$args) . ')' - . '' . (isset($v['file']) ? $v['file'] : 'unknown') - . ':' . (isset($v['line']) ? $v['line'] : 'unknown') - . '
' . ($k+1) . '{main} 
'; - return $html; - } - - public function toText() - { - $causes = array(); - $this->getCauseMessage($causes); - $causeMsg = ''; - foreach ($causes as $i => $cause) { - $causeMsg .= str_repeat(' ', $i) . $cause['class'] . ': ' - . $cause['message'] . ' in ' . $cause['file'] - . ' on line ' . $cause['line'] . "\n"; - } - return $causeMsg . $this->getTraceAsString(); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/FixPHP5PEARWarnings.php b/3rdparty/PEAR/FixPHP5PEARWarnings.php deleted file mode 100644 index be5dc3ce707c3e06189b89395819ae49edbab19c..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/FixPHP5PEARWarnings.php +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/3rdparty/PEAR/Frontend.php b/3rdparty/PEAR/Frontend.php deleted file mode 100644 index 531e541f9eb3942da0aaccb332fc6a0223441620..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Frontend.php +++ /dev/null @@ -1,228 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Frontend.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Include error handling - */ -//require_once 'PEAR.php'; - -/** - * Which user interface class is being used. - * @var string class name - */ -$GLOBALS['_PEAR_FRONTEND_CLASS'] = 'PEAR_Frontend_CLI'; - -/** - * Instance of $_PEAR_Command_uiclass. - * @var object - */ -$GLOBALS['_PEAR_FRONTEND_SINGLETON'] = null; - -/** - * Singleton-based frontend for PEAR user input/output - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Frontend extends PEAR -{ - /** - * Retrieve the frontend object - * @return PEAR_Frontend_CLI|PEAR_Frontend_Web|PEAR_Frontend_Gtk - * @static - */ - function &singleton($type = null) - { - if ($type === null) { - if (!isset($GLOBALS['_PEAR_FRONTEND_SINGLETON'])) { - $a = false; - return $a; - } - return $GLOBALS['_PEAR_FRONTEND_SINGLETON']; - } - - $a = PEAR_Frontend::setFrontendClass($type); - return $a; - } - - /** - * Set the frontend class that will be used by calls to {@link singleton()} - * - * Frontends are expected to conform to the PEAR naming standard of - * _ => DIRECTORY_SEPARATOR (PEAR_Frontend_CLI is in PEAR/Frontend/CLI.php) - * @param string $uiclass full class name - * @return PEAR_Frontend - * @static - */ - function &setFrontendClass($uiclass) - { - if (is_object($GLOBALS['_PEAR_FRONTEND_SINGLETON']) && - is_a($GLOBALS['_PEAR_FRONTEND_SINGLETON'], $uiclass)) { - return $GLOBALS['_PEAR_FRONTEND_SINGLETON']; - } - - if (!class_exists($uiclass)) { - $file = str_replace('_', '/', $uiclass) . '.php'; - if (PEAR_Frontend::isIncludeable($file)) { - include_once $file; - } - } - - if (class_exists($uiclass)) { - $obj = &new $uiclass; - // quick test to see if this class implements a few of the most - // important frontend methods - if (is_a($obj, 'PEAR_Frontend')) { - $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = &$obj; - $GLOBALS['_PEAR_FRONTEND_CLASS'] = $uiclass; - return $obj; - } - - $err = PEAR::raiseError("not a frontend class: $uiclass"); - return $err; - } - - $err = PEAR::raiseError("no such class: $uiclass"); - return $err; - } - - /** - * Set the frontend class that will be used by calls to {@link singleton()} - * - * Frontends are expected to be a descendant of PEAR_Frontend - * @param PEAR_Frontend - * @return PEAR_Frontend - * @static - */ - function &setFrontendObject($uiobject) - { - if (is_object($GLOBALS['_PEAR_FRONTEND_SINGLETON']) && - is_a($GLOBALS['_PEAR_FRONTEND_SINGLETON'], get_class($uiobject))) { - return $GLOBALS['_PEAR_FRONTEND_SINGLETON']; - } - - if (!is_a($uiobject, 'PEAR_Frontend')) { - $err = PEAR::raiseError('not a valid frontend class: (' . - get_class($uiobject) . ')'); - return $err; - } - - $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = &$uiobject; - $GLOBALS['_PEAR_FRONTEND_CLASS'] = get_class($uiobject); - return $uiobject; - } - - /** - * @param string $path relative or absolute include path - * @return boolean - * @static - */ - function isIncludeable($path) - { - if (file_exists($path) && is_readable($path)) { - return true; - } - - $fp = @fopen($path, 'r', true); - if ($fp) { - fclose($fp); - return true; - } - - return false; - } - - /** - * @param PEAR_Config - */ - function setConfig(&$config) - { - } - - /** - * This can be overridden to allow session-based temporary file management - * - * By default, all files are deleted at the end of a session. The web installer - * needs to be able to sustain a list over many sessions in order to support - * user interaction with install scripts - */ - function addTempFile($file) - { - $GLOBALS['_PEAR_Common_tempfiles'][] = $file; - } - - /** - * Log an action - * - * @param string $msg the message to log - * @param boolean $append_crlf - * @return boolean true - * @abstract - */ - function log($msg, $append_crlf = true) - { - } - - /** - * Run a post-installation script - * - * @param array $scripts array of post-install scripts - * @abstract - */ - function runPostinstallScripts(&$scripts) - { - } - - /** - * Display human-friendly output formatted depending on the - * $command parameter. - * - * This should be able to handle basic output data with no command - * @param mixed $data data structure containing the information to display - * @param string $command command from which this method was called - * @abstract - */ - function outputData($data, $command = '_default') - { - } - - /** - * Display a modal form dialog and return the given input - * - * A frontend that requires multiple requests to retrieve and process - * data must take these needs into account, and implement the request - * handling code. - * @param string $command command from which this method was called - * @param array $prompts associative array. keys are the input field names - * and values are the description - * @param array $types array of input field types (text, password, - * etc.) keys have to be the same like in $prompts - * @param array $defaults array of default values. again keys have - * to be the same like in $prompts. Do not depend - * on a default value being set. - * @return array input sent by the user - * @abstract - */ - function userDialog($command, $prompts, $types = array(), $defaults = array()) - { - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Frontend/CLI.php b/3rdparty/PEAR/Frontend/CLI.php deleted file mode 100644 index 340b99b79b7872404809a56175955e84a3da6c0a..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Frontend/CLI.php +++ /dev/null @@ -1,751 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: CLI.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ -/** - * base class - */ -require_once 'PEAR/Frontend.php'; - -/** - * Command-line Frontend for the PEAR Installer - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Frontend_CLI extends PEAR_Frontend -{ - /** - * What type of user interface this frontend is for. - * @var string - * @access public - */ - var $type = 'CLI'; - var $lp = ''; // line prefix - - var $params = array(); - var $term = array( - 'bold' => '', - 'normal' => '', - ); - - function PEAR_Frontend_CLI() - { - parent::PEAR(); - $term = getenv('TERM'); //(cox) $_ENV is empty for me in 4.1.1 - if (function_exists('posix_isatty') && !posix_isatty(1)) { - // output is being redirected to a file or through a pipe - } elseif ($term) { - if (preg_match('/^(xterm|vt220|linux)/', $term)) { - $this->term['bold'] = sprintf("%c%c%c%c", 27, 91, 49, 109); - $this->term['normal'] = sprintf("%c%c%c", 27, 91, 109); - } elseif (preg_match('/^vt100/', $term)) { - $this->term['bold'] = sprintf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); - $this->term['normal'] = sprintf("%c%c%c%c%c", 27, 91, 109, 0, 0); - } - } elseif (OS_WINDOWS) { - // XXX add ANSI codes here - } - } - - /** - * @param object PEAR_Error object - */ - function displayError($e) - { - return $this->_displayLine($e->getMessage()); - } - - /** - * @param object PEAR_Error object - */ - function displayFatalError($eobj) - { - $this->displayError($eobj); - if (class_exists('PEAR_Config')) { - $config = &PEAR_Config::singleton(); - if ($config->get('verbose') > 5) { - if (function_exists('debug_print_backtrace')) { - debug_print_backtrace(); - exit(1); - } - - $raised = false; - foreach (debug_backtrace() as $i => $frame) { - if (!$raised) { - if (isset($frame['class']) - && strtolower($frame['class']) == 'pear' - && strtolower($frame['function']) == 'raiseerror' - ) { - $raised = true; - } else { - continue; - } - } - - $frame['class'] = !isset($frame['class']) ? '' : $frame['class']; - $frame['type'] = !isset($frame['type']) ? '' : $frame['type']; - $frame['function'] = !isset($frame['function']) ? '' : $frame['function']; - $frame['line'] = !isset($frame['line']) ? '' : $frame['line']; - $this->_displayLine("#$i: $frame[class]$frame[type]$frame[function] $frame[line]"); - } - } - } - - exit(1); - } - - /** - * Instruct the runInstallScript method to skip a paramgroup that matches the - * id value passed in. - * - * This method is useful for dynamically configuring which sections of a post-install script - * will be run based on the user's setup, which is very useful for making flexible - * post-install scripts without losing the cross-Frontend ability to retrieve user input - * @param string - */ - function skipParamgroup($id) - { - $this->_skipSections[$id] = true; - } - - function runPostinstallScripts(&$scripts) - { - foreach ($scripts as $i => $script) { - $this->runInstallScript($scripts[$i]->_params, $scripts[$i]->_obj); - } - } - - /** - * @param array $xml contents of postinstallscript tag - * @param object $script post-installation script - * @param string install|upgrade - */ - function runInstallScript($xml, &$script) - { - $this->_skipSections = array(); - if (!is_array($xml) || !isset($xml['paramgroup'])) { - $script->run(array(), '_default'); - return; - } - - $completedPhases = array(); - if (!isset($xml['paramgroup'][0])) { - $xml['paramgroup'] = array($xml['paramgroup']); - } - - foreach ($xml['paramgroup'] as $group) { - if (isset($this->_skipSections[$group['id']])) { - // the post-install script chose to skip this section dynamically - continue; - } - - if (isset($group['name'])) { - $paramname = explode('::', $group['name']); - if ($lastgroup['id'] != $paramname[0]) { - continue; - } - - $group['name'] = $paramname[1]; - if (!isset($answers)) { - return; - } - - if (isset($answers[$group['name']])) { - switch ($group['conditiontype']) { - case '=' : - if ($answers[$group['name']] != $group['value']) { - continue 2; - } - break; - case '!=' : - if ($answers[$group['name']] == $group['value']) { - continue 2; - } - break; - case 'preg_match' : - if (!@preg_match('/' . $group['value'] . '/', - $answers[$group['name']])) { - continue 2; - } - break; - default : - return; - } - } - } - - $lastgroup = $group; - if (isset($group['instructions'])) { - $this->_display($group['instructions']); - } - - if (!isset($group['param'][0])) { - $group['param'] = array($group['param']); - } - - if (isset($group['param'])) { - if (method_exists($script, 'postProcessPrompts')) { - $prompts = $script->postProcessPrompts($group['param'], $group['id']); - if (!is_array($prompts) || count($prompts) != count($group['param'])) { - $this->outputData('postinstall', 'Error: post-install script did not ' . - 'return proper post-processed prompts'); - $prompts = $group['param']; - } else { - foreach ($prompts as $i => $var) { - if (!is_array($var) || !isset($var['prompt']) || - !isset($var['name']) || - ($var['name'] != $group['param'][$i]['name']) || - ($var['type'] != $group['param'][$i]['type']) - ) { - $this->outputData('postinstall', 'Error: post-install script ' . - 'modified the variables or prompts, severe security risk. ' . - 'Will instead use the defaults from the package.xml'); - $prompts = $group['param']; - } - } - } - - $answers = $this->confirmDialog($prompts); - } else { - $answers = $this->confirmDialog($group['param']); - } - } - - if ((isset($answers) && $answers) || !isset($group['param'])) { - if (!isset($answers)) { - $answers = array(); - } - - array_unshift($completedPhases, $group['id']); - if (!$script->run($answers, $group['id'])) { - $script->run($completedPhases, '_undoOnError'); - return; - } - } else { - $script->run($completedPhases, '_undoOnError'); - return; - } - } - } - - /** - * Ask for user input, confirm the answers and continue until the user is satisfied - * @param array an array of arrays, format array('name' => 'paramname', 'prompt' => - * 'text to display', 'type' => 'string'[, default => 'default value']) - * @return array - */ - function confirmDialog($params) - { - $answers = $prompts = $types = array(); - foreach ($params as $param) { - $prompts[$param['name']] = $param['prompt']; - $types[$param['name']] = $param['type']; - $answers[$param['name']] = isset($param['default']) ? $param['default'] : ''; - } - - $tried = false; - do { - if ($tried) { - $i = 1; - foreach ($answers as $var => $value) { - if (!strlen($value)) { - echo $this->bold("* Enter an answer for #" . $i . ": ({$prompts[$var]})\n"); - } - $i++; - } - } - - $answers = $this->userDialog('', $prompts, $types, $answers); - $tried = true; - } while (is_array($answers) && count(array_filter($answers)) != count($prompts)); - - return $answers; - } - - function userDialog($command, $prompts, $types = array(), $defaults = array(), $screensize = 20) - { - if (!is_array($prompts)) { - return array(); - } - - $testprompts = array_keys($prompts); - $result = $defaults; - - reset($prompts); - if (count($prompts) === 1) { - foreach ($prompts as $key => $prompt) { - $type = $types[$key]; - $default = @$defaults[$key]; - print "$prompt "; - if ($default) { - print "[$default] "; - } - print ": "; - - $line = fgets(STDIN, 2048); - $result[$key] = ($default && trim($line) == '') ? $default : trim($line); - } - - return $result; - } - - $first_run = true; - while (true) { - $descLength = max(array_map('strlen', $prompts)); - $descFormat = "%-{$descLength}s"; - $last = count($prompts); - - $i = 0; - foreach ($prompts as $n => $var) { - $res = isset($result[$n]) ? $result[$n] : null; - printf("%2d. $descFormat : %s\n", ++$i, $prompts[$n], $res); - } - print "\n1-$last, 'all', 'abort', or Enter to continue: "; - - $tmp = trim(fgets(STDIN, 1024)); - if (empty($tmp)) { - break; - } - - if ($tmp == 'abort') { - return false; - } - - if (isset($testprompts[(int)$tmp - 1])) { - $var = $testprompts[(int)$tmp - 1]; - $desc = $prompts[$var]; - $current = @$result[$var]; - print "$desc [$current] : "; - $tmp = trim(fgets(STDIN, 1024)); - if ($tmp !== '') { - $result[$var] = $tmp; - } - } elseif ($tmp == 'all') { - foreach ($prompts as $var => $desc) { - $current = $result[$var]; - print "$desc [$current] : "; - $tmp = trim(fgets(STDIN, 1024)); - if (trim($tmp) !== '') { - $result[$var] = trim($tmp); - } - } - } - - $first_run = false; - } - - return $result; - } - - function userConfirm($prompt, $default = 'yes') - { - trigger_error("PEAR_Frontend_CLI::userConfirm not yet converted", E_USER_ERROR); - static $positives = array('y', 'yes', 'on', '1'); - static $negatives = array('n', 'no', 'off', '0'); - print "$this->lp$prompt [$default] : "; - $fp = fopen("php://stdin", "r"); - $line = fgets($fp, 2048); - fclose($fp); - $answer = strtolower(trim($line)); - if (empty($answer)) { - $answer = $default; - } - if (in_array($answer, $positives)) { - return true; - } - if (in_array($answer, $negatives)) { - return false; - } - if (in_array($default, $positives)) { - return true; - } - return false; - } - - function outputData($data, $command = '_default') - { - switch ($command) { - case 'channel-info': - foreach ($data as $type => $section) { - if ($type == 'main') { - $section['data'] = array_values($section['data']); - } - - $this->outputData($section); - } - break; - case 'install': - case 'upgrade': - case 'upgrade-all': - if (is_array($data) && isset($data['release_warnings'])) { - $this->_displayLine(''); - $this->_startTable(array( - 'border' => false, - 'caption' => 'Release Warnings' - )); - $this->_tableRow(array($data['release_warnings']), null, array(1 => array('wrap' => 55))); - $this->_endTable(); - $this->_displayLine(''); - } - - $this->_displayLine(is_array($data) ? $data['data'] : $data); - break; - case 'search': - $this->_startTable($data); - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], array('bold' => true), array(1 => array('wrap' => 55))); - } - - $packages = array(); - foreach($data['data'] as $category) { - foreach($category as $name => $pkg) { - $packages[$pkg[0]] = $pkg; - } - } - - $p = array_keys($packages); - natcasesort($p); - foreach ($p as $name) { - $this->_tableRow($packages[$name], null, array(1 => array('wrap' => 55))); - } - - $this->_endTable(); - break; - case 'list-all': - if (!isset($data['data'])) { - $this->_displayLine('No packages in channel'); - break; - } - - $this->_startTable($data); - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], array('bold' => true), array(1 => array('wrap' => 55))); - } - - $packages = array(); - foreach($data['data'] as $category) { - foreach($category as $name => $pkg) { - $packages[$pkg[0]] = $pkg; - } - } - - $p = array_keys($packages); - natcasesort($p); - foreach ($p as $name) { - $pkg = $packages[$name]; - unset($pkg[4], $pkg[5]); - $this->_tableRow($pkg, null, array(1 => array('wrap' => 55))); - } - - $this->_endTable(); - break; - case 'config-show': - $data['border'] = false; - $opts = array( - 0 => array('wrap' => 30), - 1 => array('wrap' => 20), - 2 => array('wrap' => 35) - ); - - $this->_startTable($data); - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], array('bold' => true), $opts); - } - - foreach ($data['data'] as $group) { - foreach ($group as $value) { - if ($value[2] == '') { - $value[2] = ""; - } - - $this->_tableRow($value, null, $opts); - } - } - - $this->_endTable(); - break; - case 'remote-info': - $d = $data; - $data = array( - 'caption' => 'Package details:', - 'border' => false, - 'data' => array( - array("Latest", $data['stable']), - array("Installed", $data['installed']), - array("Package", $data['name']), - array("License", $data['license']), - array("Category", $data['category']), - array("Summary", $data['summary']), - array("Description", $data['description']), - ), - ); - - if (isset($d['deprecated']) && $d['deprecated']) { - $conf = &PEAR_Config::singleton(); - $reg = $conf->getRegistry(); - $name = $reg->parsedPackageNameToString($d['deprecated'], true); - $data['data'][] = array('Deprecated! use', $name); - } - default: { - if (is_array($data)) { - $this->_startTable($data); - $count = count($data['data'][0]); - if ($count == 2) { - $opts = array(0 => array('wrap' => 25), - 1 => array('wrap' => 48) - ); - } elseif ($count == 3) { - $opts = array(0 => array('wrap' => 30), - 1 => array('wrap' => 20), - 2 => array('wrap' => 35) - ); - } else { - $opts = null; - } - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], - array('bold' => true), - $opts); - } - - if (is_array($data['data'])) { - foreach($data['data'] as $row) { - $this->_tableRow($row, null, $opts); - } - } else { - $this->_tableRow(array($data['data']), null, $opts); - } - $this->_endTable(); - } else { - $this->_displayLine($data); - } - } - } - } - - function log($text, $append_crlf = true) - { - if ($append_crlf) { - return $this->_displayLine($text); - } - - return $this->_display($text); - } - - function bold($text) - { - if (empty($this->term['bold'])) { - return strtoupper($text); - } - - return $this->term['bold'] . $text . $this->term['normal']; - } - - function _displayHeading($title) - { - print $this->lp.$this->bold($title)."\n"; - print $this->lp.str_repeat("=", strlen($title))."\n"; - } - - function _startTable($params = array()) - { - $params['table_data'] = array(); - $params['widest'] = array(); // indexed by column - $params['highest'] = array(); // indexed by row - $params['ncols'] = 0; - $this->params = $params; - } - - function _tableRow($columns, $rowparams = array(), $colparams = array()) - { - $highest = 1; - for ($i = 0; $i < count($columns); $i++) { - $col = &$columns[$i]; - if (isset($colparams[$i]) && !empty($colparams[$i]['wrap'])) { - $col = wordwrap($col, $colparams[$i]['wrap']); - } - - if (strpos($col, "\n") !== false) { - $multiline = explode("\n", $col); - $w = 0; - foreach ($multiline as $n => $line) { - $len = strlen($line); - if ($len > $w) { - $w = $len; - } - } - $lines = count($multiline); - } else { - $w = strlen($col); - } - - if (isset($this->params['widest'][$i])) { - if ($w > $this->params['widest'][$i]) { - $this->params['widest'][$i] = $w; - } - } else { - $this->params['widest'][$i] = $w; - } - - $tmp = count_chars($columns[$i], 1); - // handle unix, mac and windows formats - $lines = (isset($tmp[10]) ? $tmp[10] : (isset($tmp[13]) ? $tmp[13] : 0)) + 1; - if ($lines > $highest) { - $highest = $lines; - } - } - - if (count($columns) > $this->params['ncols']) { - $this->params['ncols'] = count($columns); - } - - $new_row = array( - 'data' => $columns, - 'height' => $highest, - 'rowparams' => $rowparams, - 'colparams' => $colparams, - ); - $this->params['table_data'][] = $new_row; - } - - function _endTable() - { - extract($this->params); - if (!empty($caption)) { - $this->_displayHeading($caption); - } - - if (count($table_data) === 0) { - return; - } - - if (!isset($width)) { - $width = $widest; - } else { - for ($i = 0; $i < $ncols; $i++) { - if (!isset($width[$i])) { - $width[$i] = $widest[$i]; - } - } - } - - $border = false; - if (empty($border)) { - $cellstart = ''; - $cellend = ' '; - $rowend = ''; - $padrowend = false; - $borderline = ''; - } else { - $cellstart = '| '; - $cellend = ' '; - $rowend = '|'; - $padrowend = true; - $borderline = '+'; - foreach ($width as $w) { - $borderline .= str_repeat('-', $w + strlen($cellstart) + strlen($cellend) - 1); - $borderline .= '+'; - } - } - - if ($borderline) { - $this->_displayLine($borderline); - } - - for ($i = 0; $i < count($table_data); $i++) { - extract($table_data[$i]); - if (!is_array($rowparams)) { - $rowparams = array(); - } - - if (!is_array($colparams)) { - $colparams = array(); - } - - $rowlines = array(); - if ($height > 1) { - for ($c = 0; $c < count($data); $c++) { - $rowlines[$c] = preg_split('/(\r?\n|\r)/', $data[$c]); - if (count($rowlines[$c]) < $height) { - $rowlines[$c] = array_pad($rowlines[$c], $height, ''); - } - } - } else { - for ($c = 0; $c < count($data); $c++) { - $rowlines[$c] = array($data[$c]); - } - } - - for ($r = 0; $r < $height; $r++) { - $rowtext = ''; - for ($c = 0; $c < count($data); $c++) { - if (isset($colparams[$c])) { - $attribs = array_merge($rowparams, $colparams); - } else { - $attribs = $rowparams; - } - - $w = isset($width[$c]) ? $width[$c] : 0; - //$cell = $data[$c]; - $cell = $rowlines[$c][$r]; - $l = strlen($cell); - if ($l > $w) { - $cell = substr($cell, 0, $w); - } - - if (isset($attribs['bold'])) { - $cell = $this->bold($cell); - } - - if ($l < $w) { - // not using str_pad here because we may - // add bold escape characters to $cell - $cell .= str_repeat(' ', $w - $l); - } - - $rowtext .= $cellstart . $cell . $cellend; - } - - if (!$border) { - $rowtext = rtrim($rowtext); - } - - $rowtext .= $rowend; - $this->_displayLine($rowtext); - } - } - - if ($borderline) { - $this->_displayLine($borderline); - } - } - - function _displayLine($text) - { - print "$this->lp$text\n"; - } - - function _display($text) - { - print $text; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Installer.php b/3rdparty/PEAR/Installer.php deleted file mode 100644 index eb17ca7914dc0a7a34588715cbf61e5d99cf1966..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer.php +++ /dev/null @@ -1,1823 +0,0 @@ - - * @author Tomas V.V. Cox - * @author Martin Jansen - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Installer.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * Used for installation groups in package.xml 2.0 and platform exceptions - */ -require_once 'OS/Guess.php'; -require_once 'PEAR/Downloader.php'; - -define('PEAR_INSTALLER_NOBINARY', -240); -/** - * Administration class used to install PEAR packages and maintain the - * installed package database. - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V. Cox - * @author Martin Jansen - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Installer extends PEAR_Downloader -{ - // {{{ properties - - /** name of the package directory, for example Foo-1.0 - * @var string - */ - var $pkgdir; - - /** directory where PHP code files go - * @var string - */ - var $phpdir; - - /** directory where PHP extension files go - * @var string - */ - var $extdir; - - /** directory where documentation goes - * @var string - */ - var $docdir; - - /** installation root directory (ala PHP's INSTALL_ROOT or - * automake's DESTDIR - * @var string - */ - var $installroot = ''; - - /** debug level - * @var int - */ - var $debug = 1; - - /** temporary directory - * @var string - */ - var $tmpdir; - - /** - * PEAR_Registry object used by the installer - * @var PEAR_Registry - */ - var $registry; - - /** - * array of PEAR_Downloader_Packages - * @var array - */ - var $_downloadedPackages; - - /** List of file transactions queued for an install/upgrade/uninstall. - * - * Format: - * array( - * 0 => array("rename => array("from-file", "to-file")), - * 1 => array("delete" => array("file-to-delete")), - * ... - * ) - * - * @var array - */ - var $file_operations = array(); - - // }}} - - // {{{ constructor - - /** - * PEAR_Installer constructor. - * - * @param object $ui user interface object (instance of PEAR_Frontend_*) - * - * @access public - */ - function PEAR_Installer(&$ui) - { - parent::PEAR_Common(); - $this->setFrontendObject($ui); - $this->debug = $this->config->get('verbose'); - } - - function setOptions($options) - { - $this->_options = $options; - } - - function setConfig(&$config) - { - $this->config = &$config; - $this->_registry = &$config->getRegistry(); - } - - // }}} - - function _removeBackups($files) - { - foreach ($files as $path) { - $this->addFileOperation('removebackup', array($path)); - } - } - - // {{{ _deletePackageFiles() - - /** - * Delete a package's installed files, does not remove empty directories. - * - * @param string package name - * @param string channel name - * @param bool if true, then files are backed up first - * @return bool TRUE on success, or a PEAR error on failure - * @access protected - */ - function _deletePackageFiles($package, $channel = false, $backup = false) - { - if (!$channel) { - $channel = 'pear.php.net'; - } - - if (!strlen($package)) { - return $this->raiseError("No package to uninstall given"); - } - - if (strtolower($package) == 'pear' && $channel == 'pear.php.net') { - // to avoid race conditions, include all possible needed files - require_once 'PEAR/Task/Common.php'; - require_once 'PEAR/Task/Replace.php'; - require_once 'PEAR/Task/Unixeol.php'; - require_once 'PEAR/Task/Windowseol.php'; - require_once 'PEAR/PackageFile/v1.php'; - require_once 'PEAR/PackageFile/v2.php'; - require_once 'PEAR/PackageFile/Generator/v1.php'; - require_once 'PEAR/PackageFile/Generator/v2.php'; - } - - $filelist = $this->_registry->packageInfo($package, 'filelist', $channel); - if ($filelist == null) { - return $this->raiseError("$channel/$package not installed"); - } - - $ret = array(); - foreach ($filelist as $file => $props) { - if (empty($props['installed_as'])) { - continue; - } - - $path = $props['installed_as']; - if ($backup) { - $this->addFileOperation('backup', array($path)); - $ret[] = $path; - } - - $this->addFileOperation('delete', array($path)); - } - - if ($backup) { - return $ret; - } - - return true; - } - - // }}} - // {{{ _installFile() - - /** - * @param string filename - * @param array attributes from tag in package.xml - * @param string path to install the file in - * @param array options from command-line - * @access private - */ - function _installFile($file, $atts, $tmp_path, $options) - { - // {{{ return if this file is meant for another platform - static $os; - if (!isset($this->_registry)) { - $this->_registry = &$this->config->getRegistry(); - } - - if (isset($atts['platform'])) { - if (empty($os)) { - $os = new OS_Guess(); - } - - if (strlen($atts['platform']) && $atts['platform']{0} == '!') { - $negate = true; - $platform = substr($atts['platform'], 1); - } else { - $negate = false; - $platform = $atts['platform']; - } - - if ((bool) $os->matchSignature($platform) === $negate) { - $this->log(3, "skipped $file (meant for $atts[platform], we are ".$os->getSignature().")"); - return PEAR_INSTALLER_SKIPPED; - } - } - // }}} - - $channel = $this->pkginfo->getChannel(); - // {{{ assemble the destination paths - switch ($atts['role']) { - case 'src': - case 'extsrc': - $this->source_files++; - return; - case 'doc': - case 'data': - case 'test': - $dest_dir = $this->config->get($atts['role'] . '_dir', null, $channel) . - DIRECTORY_SEPARATOR . $this->pkginfo->getPackage(); - unset($atts['baseinstalldir']); - break; - case 'ext': - case 'php': - $dest_dir = $this->config->get($atts['role'] . '_dir', null, $channel); - break; - case 'script': - $dest_dir = $this->config->get('bin_dir', null, $channel); - break; - default: - return $this->raiseError("Invalid role `$atts[role]' for file $file"); - } - - $save_destdir = $dest_dir; - if (!empty($atts['baseinstalldir'])) { - $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; - } - - if (dirname($file) != '.' && empty($atts['install-as'])) { - $dest_dir .= DIRECTORY_SEPARATOR . dirname($file); - } - - if (empty($atts['install-as'])) { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . basename($file); - } else { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . $atts['install-as']; - } - $orig_file = $tmp_path . DIRECTORY_SEPARATOR . $file; - - // Clean up the DIRECTORY_SEPARATOR mess - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - list($dest_file, $orig_file) = preg_replace(array('!\\\\+!', '!/!', "!$ds2+!"), - array(DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR), - array($dest_file, $orig_file)); - $final_dest_file = $installed_as = $dest_file; - if (isset($this->_options['packagingroot'])) { - $installedas_dest_dir = dirname($final_dest_file); - $installedas_dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - $final_dest_file = $this->_prependPath($final_dest_file, $this->_options['packagingroot']); - } else { - $installedas_dest_dir = dirname($final_dest_file); - $installedas_dest_file = $installedas_dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - } - - $dest_dir = dirname($final_dest_file); - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - if (preg_match('~/\.\.(/|\\z)|^\.\./~', str_replace('\\', '/', $dest_file))) { - return $this->raiseError("SECURITY ERROR: file $file (installed to $dest_file) contains parent directory reference ..", PEAR_INSTALLER_FAILED); - } - // }}} - - if (empty($this->_options['register-only']) && - (!file_exists($dest_dir) || !is_dir($dest_dir))) { - if (!$this->mkDirHier($dest_dir)) { - return $this->raiseError("failed to mkdir $dest_dir", - PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ mkdir $dest_dir"); - } - - // pretty much nothing happens if we are only registering the install - if (empty($this->_options['register-only'])) { - if (empty($atts['replacements'])) { - if (!file_exists($orig_file)) { - return $this->raiseError("file $orig_file does not exist", - PEAR_INSTALLER_FAILED); - } - - if (!@copy($orig_file, $dest_file)) { - return $this->raiseError("failed to write $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - - $this->log(3, "+ cp $orig_file $dest_file"); - if (isset($atts['md5sum'])) { - $md5sum = md5_file($dest_file); - } - } else { - // {{{ file with replacements - if (!file_exists($orig_file)) { - return $this->raiseError("file does not exist", - PEAR_INSTALLER_FAILED); - } - - $contents = file_get_contents($orig_file); - if ($contents === false) { - $contents = ''; - } - - if (isset($atts['md5sum'])) { - $md5sum = md5($contents); - } - - $subst_from = $subst_to = array(); - foreach ($atts['replacements'] as $a) { - $to = ''; - if ($a['type'] == 'php-const') { - if (preg_match('/^[a-z0-9_]+\\z/i', $a['to'])) { - eval("\$to = $a[to];"); - } else { - if (!isset($options['soft'])) { - $this->log(0, "invalid php-const replacement: $a[to]"); - } - continue; - } - } elseif ($a['type'] == 'pear-config') { - if ($a['to'] == 'master_server') { - $chan = $this->_registry->getChannel($channel); - if (!PEAR::isError($chan)) { - $to = $chan->getServer(); - } else { - $to = $this->config->get($a['to'], null, $channel); - } - } else { - $to = $this->config->get($a['to'], null, $channel); - } - if (is_null($to)) { - if (!isset($options['soft'])) { - $this->log(0, "invalid pear-config replacement: $a[to]"); - } - continue; - } - } elseif ($a['type'] == 'package-info') { - if ($t = $this->pkginfo->packageInfo($a['to'])) { - $to = $t; - } else { - if (!isset($options['soft'])) { - $this->log(0, "invalid package-info replacement: $a[to]"); - } - continue; - } - } - if (!is_null($to)) { - $subst_from[] = $a['from']; - $subst_to[] = $to; - } - } - - $this->log(3, "doing ".sizeof($subst_from)." substitution(s) for $final_dest_file"); - if (sizeof($subst_from)) { - $contents = str_replace($subst_from, $subst_to, $contents); - } - - $wp = @fopen($dest_file, "wb"); - if (!is_resource($wp)) { - return $this->raiseError("failed to create $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - - if (@fwrite($wp, $contents) === false) { - return $this->raiseError("failed writing to $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - - fclose($wp); - // }}} - } - - // {{{ check the md5 - if (isset($md5sum)) { - if (strtolower($md5sum) === strtolower($atts['md5sum'])) { - $this->log(2, "md5sum ok: $final_dest_file"); - } else { - if (empty($options['force'])) { - // delete the file - if (file_exists($dest_file)) { - unlink($dest_file); - } - - if (!isset($options['ignore-errors'])) { - return $this->raiseError("bad md5sum for file $final_dest_file", - PEAR_INSTALLER_FAILED); - } - - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } else { - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } - } - } - // }}} - // {{{ set file permissions - if (!OS_WINDOWS) { - if ($atts['role'] == 'script') { - $mode = 0777 & ~(int)octdec($this->config->get('umask')); - $this->log(3, "+ chmod +x $dest_file"); - } else { - $mode = 0666 & ~(int)octdec($this->config->get('umask')); - } - - if ($atts['role'] != 'src') { - $this->addFileOperation("chmod", array($mode, $dest_file)); - if (!@chmod($dest_file, $mode)) { - if (!isset($options['soft'])) { - $this->log(0, "failed to change mode of $dest_file: $php_errormsg"); - } - } - } - } - // }}} - - if ($atts['role'] == 'src') { - rename($dest_file, $final_dest_file); - $this->log(2, "renamed source file $dest_file to $final_dest_file"); - } else { - $this->addFileOperation("rename", array($dest_file, $final_dest_file, - $atts['role'] == 'ext')); - } - } - - // Store the full path where the file was installed for easy unistall - if ($atts['role'] != 'script') { - $loc = $this->config->get($atts['role'] . '_dir'); - } else { - $loc = $this->config->get('bin_dir'); - } - - if ($atts['role'] != 'src') { - $this->addFileOperation("installed_as", array($file, $installed_as, - $loc, - dirname(substr($installedas_dest_file, strlen($loc))))); - } - - //$this->log(2, "installed: $dest_file"); - return PEAR_INSTALLER_OK; - } - - // }}} - // {{{ _installFile2() - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string filename - * @param array attributes from tag in package.xml - * @param string path to install the file in - * @param array options from command-line - * @access private - */ - function _installFile2(&$pkg, $file, &$real_atts, $tmp_path, $options) - { - $atts = $real_atts; - if (!isset($this->_registry)) { - $this->_registry = &$this->config->getRegistry(); - } - - $channel = $pkg->getChannel(); - // {{{ assemble the destination paths - if (!in_array($atts['attribs']['role'], - PEAR_Installer_Role::getValidRoles($pkg->getPackageType()))) { - return $this->raiseError('Invalid role `' . $atts['attribs']['role'] . - "' for file $file"); - } - - $role = &PEAR_Installer_Role::factory($pkg, $atts['attribs']['role'], $this->config); - $err = $role->setup($this, $pkg, $atts['attribs'], $file); - if (PEAR::isError($err)) { - return $err; - } - - if (!$role->isInstallable()) { - return; - } - - $info = $role->processInstallation($pkg, $atts['attribs'], $file, $tmp_path); - if (PEAR::isError($info)) { - return $info; - } - - list($save_destdir, $dest_dir, $dest_file, $orig_file) = $info; - if (preg_match('~/\.\.(/|\\z)|^\.\./~', str_replace('\\', '/', $dest_file))) { - return $this->raiseError("SECURITY ERROR: file $file (installed to $dest_file) contains parent directory reference ..", PEAR_INSTALLER_FAILED); - } - - $final_dest_file = $installed_as = $dest_file; - if (isset($this->_options['packagingroot'])) { - $final_dest_file = $this->_prependPath($final_dest_file, - $this->_options['packagingroot']); - } - - $dest_dir = dirname($final_dest_file); - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - // }}} - - if (empty($this->_options['register-only'])) { - if (!file_exists($dest_dir) || !is_dir($dest_dir)) { - if (!$this->mkDirHier($dest_dir)) { - return $this->raiseError("failed to mkdir $dest_dir", - PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ mkdir $dest_dir"); - } - } - - $attribs = $atts['attribs']; - unset($atts['attribs']); - // pretty much nothing happens if we are only registering the install - if (empty($this->_options['register-only'])) { - if (!count($atts)) { // no tasks - if (!file_exists($orig_file)) { - return $this->raiseError("file $orig_file does not exist", - PEAR_INSTALLER_FAILED); - } - - if (!@copy($orig_file, $dest_file)) { - return $this->raiseError("failed to write $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - - $this->log(3, "+ cp $orig_file $dest_file"); - if (isset($attribs['md5sum'])) { - $md5sum = md5_file($dest_file); - } - } else { // file with tasks - if (!file_exists($orig_file)) { - return $this->raiseError("file $orig_file does not exist", - PEAR_INSTALLER_FAILED); - } - - $contents = file_get_contents($orig_file); - if ($contents === false) { - $contents = ''; - } - - if (isset($attribs['md5sum'])) { - $md5sum = md5($contents); - } - - foreach ($atts as $tag => $raw) { - $tag = str_replace(array($pkg->getTasksNs() . ':', '-'), array('', '_'), $tag); - $task = "PEAR_Task_$tag"; - $task = &new $task($this->config, $this, PEAR_TASK_INSTALL); - if (!$task->isScript()) { // scripts are only handled after installation - $task->init($raw, $attribs, $pkg->getLastInstalledVersion()); - $res = $task->startSession($pkg, $contents, $final_dest_file); - if ($res === false) { - continue; // skip this file - } - - if (PEAR::isError($res)) { - return $res; - } - - $contents = $res; // save changes - } - - $wp = @fopen($dest_file, "wb"); - if (!is_resource($wp)) { - return $this->raiseError("failed to create $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - - if (fwrite($wp, $contents) === false) { - return $this->raiseError("failed writing to $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - - fclose($wp); - } - } - - // {{{ check the md5 - if (isset($md5sum)) { - // Make sure the original md5 sum matches with expected - if (strtolower($md5sum) === strtolower($attribs['md5sum'])) { - $this->log(2, "md5sum ok: $final_dest_file"); - - if (isset($contents)) { - // set md5 sum based on $content in case any tasks were run. - $real_atts['attribs']['md5sum'] = md5($contents); - } - } else { - if (empty($options['force'])) { - // delete the file - if (file_exists($dest_file)) { - unlink($dest_file); - } - - if (!isset($options['ignore-errors'])) { - return $this->raiseError("bad md5sum for file $final_dest_file", - PEAR_INSTALLER_FAILED); - } - - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } else { - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } - } - } else { - $real_atts['attribs']['md5sum'] = md5_file($dest_file); - } - - // }}} - // {{{ set file permissions - if (!OS_WINDOWS) { - if ($role->isExecutable()) { - $mode = 0777 & ~(int)octdec($this->config->get('umask')); - $this->log(3, "+ chmod +x $dest_file"); - } else { - $mode = 0666 & ~(int)octdec($this->config->get('umask')); - } - - if ($attribs['role'] != 'src') { - $this->addFileOperation("chmod", array($mode, $dest_file)); - if (!@chmod($dest_file, $mode)) { - if (!isset($options['soft'])) { - $this->log(0, "failed to change mode of $dest_file: $php_errormsg"); - } - } - } - } - // }}} - - if ($attribs['role'] == 'src') { - rename($dest_file, $final_dest_file); - $this->log(2, "renamed source file $dest_file to $final_dest_file"); - } else { - $this->addFileOperation("rename", array($dest_file, $final_dest_file, $role->isExtension())); - } - } - - // Store the full path where the file was installed for easy uninstall - if ($attribs['role'] != 'src') { - $loc = $this->config->get($role->getLocationConfig(), null, $channel); - $this->addFileOperation('installed_as', array($file, $installed_as, - $loc, - dirname(substr($installed_as, strlen($loc))))); - } - - //$this->log(2, "installed: $dest_file"); - return PEAR_INSTALLER_OK; - } - - // }}} - // {{{ addFileOperation() - - /** - * Add a file operation to the current file transaction. - * - * @see startFileTransaction() - * @param string $type This can be one of: - * - rename: rename a file ($data has 3 values) - * - backup: backup an existing file ($data has 1 value) - * - removebackup: clean up backups created during install ($data has 1 value) - * - chmod: change permissions on a file ($data has 2 values) - * - delete: delete a file ($data has 1 value) - * - rmdir: delete a directory if empty ($data has 1 value) - * - installed_as: mark a file as installed ($data has 4 values). - * @param array $data For all file operations, this array must contain the - * full path to the file or directory that is being operated on. For - * the rename command, the first parameter must be the file to rename, - * the second its new name, the third whether this is a PHP extension. - * - * The installed_as operation contains 4 elements in this order: - * 1. Filename as listed in the filelist element from package.xml - * 2. Full path to the installed file - * 3. Full path from the php_dir configuration variable used in this - * installation - * 4. Relative path from the php_dir that this file is installed in - */ - function addFileOperation($type, $data) - { - if (!is_array($data)) { - return $this->raiseError('Internal Error: $data in addFileOperation' - . ' must be an array, was ' . gettype($data)); - } - - if ($type == 'chmod') { - $octmode = decoct($data[0]); - $this->log(3, "adding to transaction: $type $octmode $data[1]"); - } else { - $this->log(3, "adding to transaction: $type " . implode(" ", $data)); - } - $this->file_operations[] = array($type, $data); - } - - // }}} - // {{{ startFileTransaction() - - function startFileTransaction($rollback_in_case = false) - { - if (count($this->file_operations) && $rollback_in_case) { - $this->rollbackFileTransaction(); - } - $this->file_operations = array(); - } - - // }}} - // {{{ commitFileTransaction() - - function commitFileTransaction() - { - // {{{ first, check permissions and such manually - $errors = array(); - foreach ($this->file_operations as $key => $tr) { - list($type, $data) = $tr; - switch ($type) { - case 'rename': - if (!file_exists($data[0])) { - $errors[] = "cannot rename file $data[0], doesn't exist"; - } - - // check that dest dir. is writable - if (!is_writable(dirname($data[1]))) { - $errors[] = "permission denied ($type): $data[1]"; - } - break; - case 'chmod': - // check that file is writable - if (!is_writable($data[1])) { - $errors[] = "permission denied ($type): $data[1] " . decoct($data[0]); - } - break; - case 'delete': - if (!file_exists($data[0])) { - $this->log(2, "warning: file $data[0] doesn't exist, can't be deleted"); - } - // check that directory is writable - if (file_exists($data[0])) { - if (!is_writable(dirname($data[0]))) { - $errors[] = "permission denied ($type): $data[0]"; - } else { - // make sure the file to be deleted can be opened for writing - $fp = false; - if (!is_dir($data[0]) && - (!is_writable($data[0]) || !($fp = @fopen($data[0], 'a')))) { - $errors[] = "permission denied ($type): $data[0]"; - } elseif ($fp) { - fclose($fp); - } - } - - /* Verify we are not deleting a file owned by another package - * This can happen when a file moves from package A to B in - * an upgrade ala http://pear.php.net/17986 - */ - $info = array( - 'package' => strtolower($this->pkginfo->getName()), - 'channel' => strtolower($this->pkginfo->getChannel()), - ); - $result = $this->_registry->checkFileMap($data[0], $info, '1.1'); - if (is_array($result)) { - $res = array_diff($result, $info); - if (!empty($res)) { - $new = $this->_registry->getPackage($result[1], $result[0]); - $this->file_operations[$key] = false; - $this->log(3, "file $data[0] was scheduled for removal from {$this->pkginfo->getName()} but is owned by {$new->getChannel()}/{$new->getName()}, removal has been cancelled."); - } - } - } - break; - } - - } - // }}} - - $n = count($this->file_operations); - $this->log(2, "about to commit $n file operations for " . $this->pkginfo->getName()); - - $m = count($errors); - if ($m > 0) { - foreach ($errors as $error) { - if (!isset($this->_options['soft'])) { - $this->log(1, $error); - } - } - - if (!isset($this->_options['ignore-errors'])) { - return false; - } - } - - $this->_dirtree = array(); - // {{{ really commit the transaction - foreach ($this->file_operations as $i => $tr) { - if (!$tr) { - // support removal of non-existing backups - continue; - } - - list($type, $data) = $tr; - switch ($type) { - case 'backup': - if (!file_exists($data[0])) { - $this->file_operations[$i] = false; - break; - } - - if (!@copy($data[0], $data[0] . '.bak')) { - $this->log(1, 'Could not copy ' . $data[0] . ' to ' . $data[0] . - '.bak ' . $php_errormsg); - return false; - } - $this->log(3, "+ backup $data[0] to $data[0].bak"); - break; - case 'removebackup': - if (file_exists($data[0] . '.bak') && is_writable($data[0] . '.bak')) { - unlink($data[0] . '.bak'); - $this->log(3, "+ rm backup of $data[0] ($data[0].bak)"); - } - break; - case 'rename': - $test = file_exists($data[1]) ? @unlink($data[1]) : null; - if (!$test && file_exists($data[1])) { - if ($data[2]) { - $extra = ', this extension must be installed manually. Rename to "' . - basename($data[1]) . '"'; - } else { - $extra = ''; - } - - if (!isset($this->_options['soft'])) { - $this->log(1, 'Could not delete ' . $data[1] . ', cannot rename ' . - $data[0] . $extra); - } - - if (!isset($this->_options['ignore-errors'])) { - return false; - } - } - - // permissions issues with rename - copy() is far superior - $perms = @fileperms($data[0]); - if (!@copy($data[0], $data[1])) { - $this->log(1, 'Could not rename ' . $data[0] . ' to ' . $data[1] . - ' ' . $php_errormsg); - return false; - } - - // copy over permissions, otherwise they are lost - @chmod($data[1], $perms); - @unlink($data[0]); - $this->log(3, "+ mv $data[0] $data[1]"); - break; - case 'chmod': - if (!@chmod($data[1], $data[0])) { - $this->log(1, 'Could not chmod ' . $data[1] . ' to ' . - decoct($data[0]) . ' ' . $php_errormsg); - return false; - } - - $octmode = decoct($data[0]); - $this->log(3, "+ chmod $octmode $data[1]"); - break; - case 'delete': - if (file_exists($data[0])) { - if (!@unlink($data[0])) { - $this->log(1, 'Could not delete ' . $data[0] . ' ' . - $php_errormsg); - return false; - } - $this->log(3, "+ rm $data[0]"); - } - break; - case 'rmdir': - if (file_exists($data[0])) { - do { - $testme = opendir($data[0]); - while (false !== ($entry = readdir($testme))) { - if ($entry == '.' || $entry == '..') { - continue; - } - closedir($testme); - break 2; // this directory is not empty and can't be - // deleted - } - - closedir($testme); - if (!@rmdir($data[0])) { - $this->log(1, 'Could not rmdir ' . $data[0] . ' ' . - $php_errormsg); - return false; - } - $this->log(3, "+ rmdir $data[0]"); - } while (false); - } - break; - case 'installed_as': - $this->pkginfo->setInstalledAs($data[0], $data[1]); - if (!isset($this->_dirtree[dirname($data[1])])) { - $this->_dirtree[dirname($data[1])] = true; - $this->pkginfo->setDirtree(dirname($data[1])); - - while(!empty($data[3]) && dirname($data[3]) != $data[3] && - $data[3] != '/' && $data[3] != '\\') { - $this->pkginfo->setDirtree($pp = - $this->_prependPath($data[3], $data[2])); - $this->_dirtree[$pp] = true; - $data[3] = dirname($data[3]); - } - } - break; - } - } - // }}} - $this->log(2, "successfully committed $n file operations"); - $this->file_operations = array(); - return true; - } - - // }}} - // {{{ rollbackFileTransaction() - - function rollbackFileTransaction() - { - $n = count($this->file_operations); - $this->log(2, "rolling back $n file operations"); - foreach ($this->file_operations as $tr) { - list($type, $data) = $tr; - switch ($type) { - case 'backup': - if (file_exists($data[0] . '.bak')) { - if (file_exists($data[0] && is_writable($data[0]))) { - unlink($data[0]); - } - @copy($data[0] . '.bak', $data[0]); - $this->log(3, "+ restore $data[0] from $data[0].bak"); - } - break; - case 'removebackup': - if (file_exists($data[0] . '.bak') && is_writable($data[0] . '.bak')) { - unlink($data[0] . '.bak'); - $this->log(3, "+ rm backup of $data[0] ($data[0].bak)"); - } - break; - case 'rename': - @unlink($data[0]); - $this->log(3, "+ rm $data[0]"); - break; - case 'mkdir': - @rmdir($data[0]); - $this->log(3, "+ rmdir $data[0]"); - break; - case 'chmod': - break; - case 'delete': - break; - case 'installed_as': - $this->pkginfo->setInstalledAs($data[0], false); - break; - } - } - $this->pkginfo->resetDirtree(); - $this->file_operations = array(); - } - - // }}} - // {{{ mkDirHier($dir) - - function mkDirHier($dir) - { - $this->addFileOperation('mkdir', array($dir)); - return parent::mkDirHier($dir); - } - - // }}} - // {{{ download() - - /** - * Download any files and their dependencies, if necessary - * - * @param array a mixed list of package names, local files, or package.xml - * @param PEAR_Config - * @param array options from the command line - * @param array this is the array that will be populated with packages to - * install. Format of each entry: - * - * - * array('pkg' => 'package_name', 'file' => '/path/to/local/file', - * 'info' => array() // parsed package.xml - * ); - * - * @param array this will be populated with any error messages - * @param false private recursion variable - * @param false private recursion variable - * @param false private recursion variable - * @deprecated in favor of PEAR_Downloader - */ - function download($packages, $options, &$config, &$installpackages, - &$errors, $installed = false, $willinstall = false, $state = false) - { - // trickiness: initialize here - parent::PEAR_Downloader($this->ui, $options, $config); - $ret = parent::download($packages); - $errors = $this->getErrorMsgs(); - $installpackages = $this->getDownloadedPackages(); - trigger_error("PEAR Warning: PEAR_Installer::download() is deprecated " . - "in favor of PEAR_Downloader class", E_USER_WARNING); - return $ret; - } - - // }}} - // {{{ _parsePackageXml() - - function _parsePackageXml(&$descfile) - { - // Parse xml file ----------------------------------------------- - $pkg = new PEAR_PackageFile($this->config, $this->debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $p = &$pkg->fromAnyFile($descfile, PEAR_VALIDATE_INSTALLING); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($p)) { - if (is_array($p->getUserInfo())) { - foreach ($p->getUserInfo() as $err) { - $loglevel = $err['level'] == 'error' ? 0 : 1; - if (!isset($this->_options['soft'])) { - $this->log($loglevel, ucfirst($err['level']) . ': ' . $err['message']); - } - } - } - return $this->raiseError('Installation failed: invalid package file'); - } - - $descfile = $p->getPackageFile(); - return $p; - } - - // }}} - /** - * Set the list of PEAR_Downloader_Package objects to allow more sane - * dependency validation - * @param array - */ - function setDownloadedPackages(&$pkgs) - { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->analyzeDependencies($pkgs); - PEAR::popErrorHandling(); - if (PEAR::isError($err)) { - return $err; - } - $this->_downloadedPackages = &$pkgs; - } - - /** - * Set the list of PEAR_Downloader_Package objects to allow more sane - * dependency validation - * @param array - */ - function setUninstallPackages(&$pkgs) - { - $this->_downloadedPackages = &$pkgs; - } - - function getInstallPackages() - { - return $this->_downloadedPackages; - } - - // {{{ install() - - /** - * Installs the files within the package file specified. - * - * @param string|PEAR_Downloader_Package $pkgfile path to the package file, - * or a pre-initialized packagefile object - * @param array $options - * recognized options: - * - installroot : optional prefix directory for installation - * - force : force installation - * - register-only : update registry but don't install files - * - upgrade : upgrade existing install - * - soft : fail silently - * - nodeps : ignore dependency conflicts/missing dependencies - * - alldeps : install all dependencies - * - onlyreqdeps : install only required dependencies - * - * @return array|PEAR_Error package info if successful - */ - function install($pkgfile, $options = array()) - { - $this->_options = $options; - $this->_registry = &$this->config->getRegistry(); - if (is_object($pkgfile)) { - $dlpkg = &$pkgfile; - $pkg = $pkgfile->getPackageFile(); - $pkgfile = $pkg->getArchiveFile(); - $descfile = $pkg->getPackageFile(); - } else { - $descfile = $pkgfile; - $pkg = $this->_parsePackageXml($descfile); - if (PEAR::isError($pkg)) { - return $pkg; - } - } - - $tmpdir = dirname($descfile); - if (realpath($descfile) != realpath($pkgfile)) { - // Use the temp_dir since $descfile can contain the download dir path - $tmpdir = $this->config->get('temp_dir', null, 'pear.php.net'); - $tmpdir = System::mktemp('-d -t "' . $tmpdir . '"'); - - $tar = new Archive_Tar($pkgfile); - if (!$tar->extract($tmpdir)) { - return $this->raiseError("unable to unpack $pkgfile"); - } - } - - $pkgname = $pkg->getName(); - $channel = $pkg->getChannel(); - if (isset($this->_options['packagingroot'])) { - $regdir = $this->_prependPath( - $this->config->get('php_dir', null, 'pear.php.net'), - $this->_options['packagingroot']); - - $packrootphp_dir = $this->_prependPath( - $this->config->get('php_dir', null, $channel), - $this->_options['packagingroot']); - } - - if (isset($options['installroot'])) { - $this->config->setInstallRoot($options['installroot']); - $this->_registry = &$this->config->getRegistry(); - $installregistry = &$this->_registry; - $this->installroot = ''; // all done automagically now - $php_dir = $this->config->get('php_dir', null, $channel); - } else { - $this->config->setInstallRoot(false); - $this->_registry = &$this->config->getRegistry(); - if (isset($this->_options['packagingroot'])) { - $installregistry = &new PEAR_Registry($regdir); - if (!$installregistry->channelExists($channel, true)) { - // we need to fake a channel-discover of this channel - $chanobj = $this->_registry->getChannel($channel, true); - $installregistry->addChannel($chanobj); - } - $php_dir = $packrootphp_dir; - } else { - $installregistry = &$this->_registry; - $php_dir = $this->config->get('php_dir', null, $channel); - } - $this->installroot = ''; - } - - // {{{ checks to do when not in "force" mode - if (empty($options['force']) && - (file_exists($this->config->get('php_dir')) && - is_dir($this->config->get('php_dir')))) { - $testp = $channel == 'pear.php.net' ? $pkgname : array($channel, $pkgname); - $instfilelist = $pkg->getInstallationFileList(true); - if (PEAR::isError($instfilelist)) { - return $instfilelist; - } - - // ensure we have the most accurate registry - $installregistry->flushFileMap(); - $test = $installregistry->checkFileMap($instfilelist, $testp, '1.1'); - if (PEAR::isError($test)) { - return $test; - } - - if (sizeof($test)) { - $pkgs = $this->getInstallPackages(); - $found = false; - foreach ($pkgs as $param) { - if ($pkg->isSubpackageOf($param)) { - $found = true; - break; - } - } - - if ($found) { - // subpackages can conflict with earlier versions of parent packages - $parentreg = $installregistry->packageInfo($param->getPackage(), null, $param->getChannel()); - $tmp = $test; - foreach ($tmp as $file => $info) { - if (is_array($info)) { - if (strtolower($info[1]) == strtolower($param->getPackage()) && - strtolower($info[0]) == strtolower($param->getChannel()) - ) { - if (isset($parentreg['filelist'][$file])) { - unset($parentreg['filelist'][$file]); - } else{ - $pos = strpos($file, '/'); - $basedir = substr($file, 0, $pos); - $file2 = substr($file, $pos + 1); - if (isset($parentreg['filelist'][$file2]['baseinstalldir']) - && $parentreg['filelist'][$file2]['baseinstalldir'] === $basedir - ) { - unset($parentreg['filelist'][$file2]); - } - } - - unset($test[$file]); - } - } else { - if (strtolower($param->getChannel()) != 'pear.php.net') { - continue; - } - - if (strtolower($info) == strtolower($param->getPackage())) { - if (isset($parentreg['filelist'][$file])) { - unset($parentreg['filelist'][$file]); - } else{ - $pos = strpos($file, '/'); - $basedir = substr($file, 0, $pos); - $file2 = substr($file, $pos + 1); - if (isset($parentreg['filelist'][$file2]['baseinstalldir']) - && $parentreg['filelist'][$file2]['baseinstalldir'] === $basedir - ) { - unset($parentreg['filelist'][$file2]); - } - } - - unset($test[$file]); - } - } - } - - $pfk = &new PEAR_PackageFile($this->config); - $parentpkg = &$pfk->fromArray($parentreg); - $installregistry->updatePackage2($parentpkg); - } - - if ($param->getChannel() == 'pecl.php.net' && isset($options['upgrade'])) { - $tmp = $test; - foreach ($tmp as $file => $info) { - if (is_string($info)) { - // pear.php.net packages are always stored as strings - if (strtolower($info) == strtolower($param->getPackage())) { - // upgrading existing package - unset($test[$file]); - } - } - } - } - - if (count($test)) { - $msg = "$channel/$pkgname: conflicting files found:\n"; - $longest = max(array_map("strlen", array_keys($test))); - $fmt = "%${longest}s (%s)\n"; - foreach ($test as $file => $info) { - if (!is_array($info)) { - $info = array('pear.php.net', $info); - } - $info = $info[0] . '/' . $info[1]; - $msg .= sprintf($fmt, $file, $info); - } - - if (!isset($options['ignore-errors'])) { - return $this->raiseError($msg); - } - - if (!isset($options['soft'])) { - $this->log(0, "WARNING: $msg"); - } - } - } - } - // }}} - - $this->startFileTransaction(); - - $usechannel = $channel; - if ($channel == 'pecl.php.net') { - $test = $installregistry->packageExists($pkgname, $channel); - if (!$test) { - $test = $installregistry->packageExists($pkgname, 'pear.php.net'); - $usechannel = 'pear.php.net'; - } - } else { - $test = $installregistry->packageExists($pkgname, $channel); - } - - if (empty($options['upgrade']) && empty($options['soft'])) { - // checks to do only when installing new packages - if (empty($options['force']) && $test) { - return $this->raiseError("$channel/$pkgname is already installed"); - } - } else { - // Upgrade - if ($test) { - $v1 = $installregistry->packageInfo($pkgname, 'version', $usechannel); - $v2 = $pkg->getVersion(); - $cmp = version_compare("$v1", "$v2", 'gt'); - if (empty($options['force']) && !version_compare("$v2", "$v1", 'gt')) { - return $this->raiseError("upgrade to a newer version ($v2 is not newer than $v1)"); - } - } - } - - // Do cleanups for upgrade and install, remove old release's files first - if ($test && empty($options['register-only'])) { - // when upgrading, remove old release's files first: - if (PEAR::isError($err = $this->_deletePackageFiles($pkgname, $usechannel, - true))) { - if (!isset($options['ignore-errors'])) { - return $this->raiseError($err); - } - - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: ' . $err->getMessage()); - } - } else { - $backedup = $err; - } - } - - // {{{ Copy files to dest dir --------------------------------------- - - // info from the package it self we want to access from _installFile - $this->pkginfo = &$pkg; - // used to determine whether we should build any C code - $this->source_files = 0; - - $savechannel = $this->config->get('default_channel'); - if (empty($options['register-only']) && !is_dir($php_dir)) { - if (PEAR::isError(System::mkdir(array('-p'), $php_dir))) { - return $this->raiseError("no installation destination directory '$php_dir'\n"); - } - } - - if (substr($pkgfile, -4) != '.xml') { - $tmpdir .= DIRECTORY_SEPARATOR . $pkgname . '-' . $pkg->getVersion(); - } - - $this->configSet('default_channel', $channel); - // {{{ install files - - $ver = $pkg->getPackagexmlVersion(); - if (version_compare($ver, '2.0', '>=')) { - $filelist = $pkg->getInstallationFilelist(); - } else { - $filelist = $pkg->getFileList(); - } - - if (PEAR::isError($filelist)) { - return $filelist; - } - - $p = &$installregistry->getPackage($pkgname, $channel); - $dirtree = (empty($options['register-only']) && $p) ? $p->getDirTree() : false; - - $pkg->resetFilelist(); - $pkg->setLastInstalledVersion($installregistry->packageInfo($pkg->getPackage(), - 'version', $pkg->getChannel())); - foreach ($filelist as $file => $atts) { - $this->expectError(PEAR_INSTALLER_FAILED); - if ($pkg->getPackagexmlVersion() == '1.0') { - $res = $this->_installFile($file, $atts, $tmpdir, $options); - } else { - $res = $this->_installFile2($pkg, $file, $atts, $tmpdir, $options); - } - $this->popExpect(); - - if (PEAR::isError($res)) { - if (empty($options['ignore-errors'])) { - $this->rollbackFileTransaction(); - if ($res->getMessage() == "file does not exist") { - $this->raiseError("file $file in package.xml does not exist"); - } - - return $this->raiseError($res); - } - - if (!isset($options['soft'])) { - $this->log(0, "Warning: " . $res->getMessage()); - } - } - - $real = isset($atts['attribs']) ? $atts['attribs'] : $atts; - if ($res == PEAR_INSTALLER_OK && $real['role'] != 'src') { - // Register files that were installed - $pkg->installedFile($file, $atts); - } - } - // }}} - - // {{{ compile and install source files - if ($this->source_files > 0 && empty($options['nobuild'])) { - if (PEAR::isError($err = - $this->_compileSourceFiles($savechannel, $pkg))) { - return $err; - } - } - // }}} - - if (isset($backedup)) { - $this->_removeBackups($backedup); - } - - if (!$this->commitFileTransaction()) { - $this->rollbackFileTransaction(); - $this->configSet('default_channel', $savechannel); - return $this->raiseError("commit failed", PEAR_INSTALLER_FAILED); - } - // }}} - - $ret = false; - $installphase = 'install'; - $oldversion = false; - // {{{ Register that the package is installed ----------------------- - if (empty($options['upgrade'])) { - // if 'force' is used, replace the info in registry - $usechannel = $channel; - if ($channel == 'pecl.php.net') { - $test = $installregistry->packageExists($pkgname, $channel); - if (!$test) { - $test = $installregistry->packageExists($pkgname, 'pear.php.net'); - $usechannel = 'pear.php.net'; - } - } else { - $test = $installregistry->packageExists($pkgname, $channel); - } - - if (!empty($options['force']) && $test) { - $oldversion = $installregistry->packageInfo($pkgname, 'version', $usechannel); - $installregistry->deletePackage($pkgname, $usechannel); - } - $ret = $installregistry->addPackage2($pkg); - } else { - if ($dirtree) { - $this->startFileTransaction(); - // attempt to delete empty directories - uksort($dirtree, array($this, '_sortDirs')); - foreach($dirtree as $dir => $notused) { - $this->addFileOperation('rmdir', array($dir)); - } - $this->commitFileTransaction(); - } - - $usechannel = $channel; - if ($channel == 'pecl.php.net') { - $test = $installregistry->packageExists($pkgname, $channel); - if (!$test) { - $test = $installregistry->packageExists($pkgname, 'pear.php.net'); - $usechannel = 'pear.php.net'; - } - } else { - $test = $installregistry->packageExists($pkgname, $channel); - } - - // new: upgrade installs a package if it isn't installed - if (!$test) { - $ret = $installregistry->addPackage2($pkg); - } else { - if ($usechannel != $channel) { - $installregistry->deletePackage($pkgname, $usechannel); - $ret = $installregistry->addPackage2($pkg); - } else { - $ret = $installregistry->updatePackage2($pkg); - } - $installphase = 'upgrade'; - } - } - - if (!$ret) { - $this->configSet('default_channel', $savechannel); - return $this->raiseError("Adding package $channel/$pkgname to registry failed"); - } - // }}} - - $this->configSet('default_channel', $savechannel); - if (class_exists('PEAR_Task_Common')) { // this is auto-included if any tasks exist - if (PEAR_Task_Common::hasPostinstallTasks()) { - PEAR_Task_Common::runPostinstallTasks($installphase); - } - } - - return $pkg->toArray(true); - } - - // }}} - - // {{{ _compileSourceFiles() - /** - * @param string - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - function _compileSourceFiles($savechannel, &$filelist) - { - require_once 'PEAR/Builder.php'; - $this->log(1, "$this->source_files source files, building"); - $bob = &new PEAR_Builder($this->ui); - $bob->debug = $this->debug; - $built = $bob->build($filelist, array(&$this, '_buildCallback')); - if (PEAR::isError($built)) { - $this->rollbackFileTransaction(); - $this->configSet('default_channel', $savechannel); - return $built; - } - - $this->log(1, "\nBuild process completed successfully"); - foreach ($built as $ext) { - $bn = basename($ext['file']); - list($_ext_name, $_ext_suff) = explode('.', $bn); - if ($_ext_suff == '.so' || $_ext_suff == '.dll') { - if (extension_loaded($_ext_name)) { - $this->raiseError("Extension '$_ext_name' already loaded. " . - 'Please unload it in your php.ini file ' . - 'prior to install or upgrade'); - } - $role = 'ext'; - } else { - $role = 'src'; - } - - $dest = $ext['dest']; - $packagingroot = ''; - if (isset($this->_options['packagingroot'])) { - $packagingroot = $this->_options['packagingroot']; - } - - $copyto = $this->_prependPath($dest, $packagingroot); - $extra = $copyto != $dest ? " as '$copyto'" : ''; - $this->log(1, "Installing '$dest'$extra"); - - $copydir = dirname($copyto); - // pretty much nothing happens if we are only registering the install - if (empty($this->_options['register-only'])) { - if (!file_exists($copydir) || !is_dir($copydir)) { - if (!$this->mkDirHier($copydir)) { - return $this->raiseError("failed to mkdir $copydir", - PEAR_INSTALLER_FAILED); - } - - $this->log(3, "+ mkdir $copydir"); - } - - if (!@copy($ext['file'], $copyto)) { - return $this->raiseError("failed to write $copyto ($php_errormsg)", PEAR_INSTALLER_FAILED); - } - - $this->log(3, "+ cp $ext[file] $copyto"); - $this->addFileOperation('rename', array($ext['file'], $copyto)); - if (!OS_WINDOWS) { - $mode = 0666 & ~(int)octdec($this->config->get('umask')); - $this->addFileOperation('chmod', array($mode, $copyto)); - if (!@chmod($copyto, $mode)) { - $this->log(0, "failed to change mode of $copyto ($php_errormsg)"); - } - } - } - - - $data = array( - 'role' => $role, - 'name' => $bn, - 'installed_as' => $dest, - 'php_api' => $ext['php_api'], - 'zend_mod_api' => $ext['zend_mod_api'], - 'zend_ext_api' => $ext['zend_ext_api'], - ); - - if ($filelist->getPackageXmlVersion() == '1.0') { - $filelist->installedFile($bn, $data); - } else { - $filelist->installedFile($bn, array('attribs' => $data)); - } - } - } - - // }}} - function &getUninstallPackages() - { - return $this->_downloadedPackages; - } - // {{{ uninstall() - - /** - * Uninstall a package - * - * This method removes all files installed by the application, and then - * removes any empty directories. - * @param string package name - * @param array Command-line options. Possibilities include: - * - * - installroot: base installation dir, if not the default - * - register-only : update registry but don't remove files - * - nodeps: do not process dependencies of other packages to ensure - * uninstallation does not break things - */ - function uninstall($package, $options = array()) - { - $installRoot = isset($options['installroot']) ? $options['installroot'] : ''; - $this->config->setInstallRoot($installRoot); - - $this->installroot = ''; - $this->_registry = &$this->config->getRegistry(); - if (is_object($package)) { - $channel = $package->getChannel(); - $pkg = $package; - $package = $pkg->getPackage(); - } else { - $pkg = false; - $info = $this->_registry->parsePackageName($package, - $this->config->get('default_channel')); - $channel = $info['channel']; - $package = $info['package']; - } - - $savechannel = $this->config->get('default_channel'); - $this->configSet('default_channel', $channel); - if (!is_object($pkg)) { - $pkg = $this->_registry->getPackage($package, $channel); - } - - if (!$pkg) { - $this->configSet('default_channel', $savechannel); - return $this->raiseError($this->_registry->parsedPackageNameToString( - array( - 'channel' => $channel, - 'package' => $package - ), true) . ' not installed'); - } - - if ($pkg->getInstalledBinary()) { - // this is just an alias for a binary package - return $this->_registry->deletePackage($package, $channel); - } - - $filelist = $pkg->getFilelist(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - - $depchecker = &new PEAR_Dependency2($this->config, $options, - array('channel' => $channel, 'package' => $package), - PEAR_VALIDATE_UNINSTALLING); - $e = $depchecker->validatePackageUninstall($this); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($e)) { - if (!isset($options['ignore-errors'])) { - return $this->raiseError($e); - } - - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: ' . $e->getMessage()); - } - } elseif (is_array($e)) { - if (!isset($options['soft'])) { - $this->log(0, $e[0]); - } - } - - $this->pkginfo = &$pkg; - // pretty much nothing happens if we are only registering the uninstall - if (empty($options['register-only'])) { - // {{{ Delete the files - $this->startFileTransaction(); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if (PEAR::isError($err = $this->_deletePackageFiles($package, $channel))) { - PEAR::popErrorHandling(); - $this->rollbackFileTransaction(); - $this->configSet('default_channel', $savechannel); - if (!isset($options['ignore-errors'])) { - return $this->raiseError($err); - } - - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: ' . $err->getMessage()); - } - } else { - PEAR::popErrorHandling(); - } - - if (!$this->commitFileTransaction()) { - $this->rollbackFileTransaction(); - if (!isset($options['ignore-errors'])) { - return $this->raiseError("uninstall failed"); - } - - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: uninstall failed'); - } - } else { - $this->startFileTransaction(); - $dirtree = $pkg->getDirTree(); - if ($dirtree === false) { - $this->configSet('default_channel', $savechannel); - return $this->_registry->deletePackage($package, $channel); - } - - // attempt to delete empty directories - uksort($dirtree, array($this, '_sortDirs')); - foreach($dirtree as $dir => $notused) { - $this->addFileOperation('rmdir', array($dir)); - } - - if (!$this->commitFileTransaction()) { - $this->rollbackFileTransaction(); - if (!isset($options['ignore-errors'])) { - return $this->raiseError("uninstall failed"); - } - - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: uninstall failed'); - } - } - } - // }}} - } - - $this->configSet('default_channel', $savechannel); - // Register that the package is no longer installed - return $this->_registry->deletePackage($package, $channel); - } - - /** - * Sort a list of arrays of array(downloaded packagefilename) by dependency. - * - * It also removes duplicate dependencies - * @param array an array of PEAR_PackageFile_v[1/2] objects - * @return array|PEAR_Error array of array(packagefilename, package.xml contents) - */ - function sortPackagesForUninstall(&$packages) - { - $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->config); - if (PEAR::isError($this->_dependencyDB)) { - return $this->_dependencyDB; - } - usort($packages, array(&$this, '_sortUninstall')); - } - - function _sortUninstall($a, $b) - { - if (!$a->getDeps() && !$b->getDeps()) { - return 0; // neither package has dependencies, order is insignificant - } - if ($a->getDeps() && !$b->getDeps()) { - return -1; // $a must be installed after $b because $a has dependencies - } - if (!$a->getDeps() && $b->getDeps()) { - return 1; // $b must be installed after $a because $b has dependencies - } - // both packages have dependencies - if ($this->_dependencyDB->dependsOn($a, $b)) { - return -1; - } - if ($this->_dependencyDB->dependsOn($b, $a)) { - return 1; - } - return 0; - } - - // }}} - // {{{ _sortDirs() - function _sortDirs($a, $b) - { - if (strnatcmp($a, $b) == -1) return 1; - if (strnatcmp($a, $b) == 1) return -1; - return 0; - } - - // }}} - - // {{{ _buildCallback() - - function _buildCallback($what, $data) - { - if (($what == 'cmdoutput' && $this->debug > 1) || - ($what == 'output' && $this->debug > 0)) { - $this->ui->outputData(rtrim($data), 'build'); - } - } - - // }}} -} \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role.php b/3rdparty/PEAR/Installer/Role.php deleted file mode 100644 index 0c50fa79c0c83dbe853ed3bb872bd15a2e0ace18..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role.php +++ /dev/null @@ -1,276 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Role.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * base class for installer roles - */ -require_once 'PEAR/Installer/Role/Common.php'; -require_once 'PEAR/XMLParser.php'; -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role -{ - /** - * Set up any additional configuration variables that file roles require - * - * Never call this directly, it is called by the PEAR_Config constructor - * @param PEAR_Config - * @access private - * @static - */ - function initializeConfig(&$config) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $class => $info) { - if (!$info['config_vars']) { - continue; - } - - $config->_addConfigVars($class, $info['config_vars']); - } - } - - /** - * @param PEAR_PackageFile_v2 - * @param string role name - * @param PEAR_Config - * @return PEAR_Installer_Role_Common - * @static - */ - function &factory($pkg, $role, &$config) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - - if (!in_array($role, PEAR_Installer_Role::getValidRoles($pkg->getPackageType()))) { - $a = false; - return $a; - } - - $a = 'PEAR_Installer_Role_' . ucfirst($role); - if (!class_exists($a)) { - require_once str_replace('_', '/', $a) . '.php'; - } - - $b = new $a($config); - return $b; - } - - /** - * Get a list of file roles that are valid for the particular release type. - * - * For instance, src files serve no purpose in regular php releases. - * @param string - * @param bool clear cache - * @return array - * @static - */ - function getValidRoles($release, $clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - - static $ret = array(); - if ($clear) { - $ret = array(); - } - - if (isset($ret[$release])) { - return $ret[$release]; - } - - $ret[$release] = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if (in_array($release, $okreleases['releasetypes'])) { - $ret[$release][] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - - return $ret[$release]; - } - - /** - * Get a list of roles that require their files to be installed - * - * Most roles must be installed, but src and package roles, for instance - * are pseudo-roles. src files are compiled into a new extension. Package - * roles are actually fully bundled releases of a package - * @param bool clear cache - * @return array - * @static - */ - function getInstallableRoles($clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - - static $ret; - if ($clear) { - unset($ret); - } - - if (isset($ret)) { - return $ret; - } - - $ret = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if ($okreleases['installable']) { - $ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - - return $ret; - } - - /** - * Return an array of roles that are affected by the baseinstalldir attribute - * - * Most roles ignore this attribute, and instead install directly into: - * PackageName/filepath - * so a tests file tests/file.phpt is installed into PackageName/tests/filepath.php - * @param bool clear cache - * @return array - * @static - */ - function getBaseinstallRoles($clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - - static $ret; - if ($clear) { - unset($ret); - } - - if (isset($ret)) { - return $ret; - } - - $ret = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if ($okreleases['honorsbaseinstall']) { - $ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - - return $ret; - } - - /** - * Return an array of file roles that should be analyzed for PHP content at package time, - * like the "php" role. - * @param bool clear cache - * @return array - * @static - */ - function getPhpRoles($clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - - static $ret; - if ($clear) { - unset($ret); - } - - if (isset($ret)) { - return $ret; - } - - $ret = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if ($okreleases['phpfile']) { - $ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - - return $ret; - } - - /** - * Scan through the Command directory looking for classes - * and see what commands they implement. - * @param string which directory to look for classes, defaults to - * the Installer/Roles subdirectory of - * the directory from where this file (__FILE__) is - * included. - * - * @return bool TRUE on success, a PEAR error on failure - * @access public - * @static - */ - function registerRoles($dir = null) - { - $GLOBALS['_PEAR_INSTALLER_ROLES'] = array(); - $parser = new PEAR_XMLParser; - if ($dir === null) { - $dir = dirname(__FILE__) . '/Role'; - } - - if (!file_exists($dir) || !is_dir($dir)) { - return PEAR::raiseError("registerRoles: opendir($dir) failed: does not exist/is not directory"); - } - - $dp = @opendir($dir); - if (empty($dp)) { - return PEAR::raiseError("registerRoles: opendir($dir) failed: $php_errmsg"); - } - - while ($entry = readdir($dp)) { - if ($entry{0} == '.' || substr($entry, -4) != '.xml') { - continue; - } - - $class = "PEAR_Installer_Role_".substr($entry, 0, -4); - // List of roles - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'][$class])) { - $file = "$dir/$entry"; - $parser->parse(file_get_contents($file)); - $data = $parser->getData(); - if (!is_array($data['releasetypes'])) { - $data['releasetypes'] = array($data['releasetypes']); - } - - $GLOBALS['_PEAR_INSTALLER_ROLES'][$class] = $data; - } - } - - closedir($dp); - ksort($GLOBALS['_PEAR_INSTALLER_ROLES']); - PEAR_Installer_Role::getBaseinstallRoles(true); - PEAR_Installer_Role::getInstallableRoles(true); - PEAR_Installer_Role::getPhpRoles(true); - PEAR_Installer_Role::getValidRoles('****', true); - return true; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Cfg.php b/3rdparty/PEAR/Installer/Role/Cfg.php deleted file mode 100644 index 762012248d23a5a4cd47eacd47449313d467d4f1..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Cfg.php +++ /dev/null @@ -1,106 +0,0 @@ - - * @copyright 2007-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Cfg.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.7.0 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 2007-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.7.0 - */ -class PEAR_Installer_Role_Cfg extends PEAR_Installer_Role_Common -{ - /** - * @var PEAR_Installer - */ - var $installer; - - /** - * the md5 of the original file - * - * @var unknown_type - */ - var $md5 = null; - - /** - * Do any unusual setup here - * @param PEAR_Installer - * @param PEAR_PackageFile_v2 - * @param array file attributes - * @param string file name - */ - function setup(&$installer, $pkg, $atts, $file) - { - $this->installer = &$installer; - $reg = &$this->installer->config->getRegistry(); - $package = $reg->getPackage($pkg->getPackage(), $pkg->getChannel()); - if ($package) { - $filelist = $package->getFilelist(); - if (isset($filelist[$file]) && isset($filelist[$file]['md5sum'])) { - $this->md5 = $filelist[$file]['md5sum']; - } - } - } - - function processInstallation($pkg, $atts, $file, $tmp_path, $layer = null) - { - $test = parent::processInstallation($pkg, $atts, $file, $tmp_path, $layer); - if (@file_exists($test[2]) && @file_exists($test[3])) { - $md5 = md5_file($test[2]); - // configuration has already been installed, check for mods - if ($md5 !== $this->md5 && $md5 !== md5_file($test[3])) { - // configuration has been modified, so save our version as - // configfile-version - $old = $test[2]; - $test[2] .= '.new-' . $pkg->getVersion(); - // backup original and re-install it - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $tmpcfg = $this->config->get('temp_dir'); - $newloc = System::mkdir(array('-p', $tmpcfg)); - if (!$newloc) { - // try temp_dir - $newloc = System::mktemp(array('-d')); - if (!$newloc || PEAR::isError($newloc)) { - PEAR::popErrorHandling(); - return PEAR::raiseError('Could not save existing configuration file '. - $old . ', unable to install. Please set temp_dir ' . - 'configuration variable to a writeable location and try again'); - } - } else { - $newloc = $tmpcfg; - } - - $temp_file = $newloc . DIRECTORY_SEPARATOR . uniqid('savefile'); - if (!@copy($old, $temp_file)) { - PEAR::popErrorHandling(); - return PEAR::raiseError('Could not save existing configuration file '. - $old . ', unable to install. Please set temp_dir ' . - 'configuration variable to a writeable location and try again'); - } - - PEAR::popErrorHandling(); - $this->installer->log(0, "WARNING: configuration file $old is being installed as $test[2], you should manually merge in changes to the existing configuration file"); - $this->installer->addFileOperation('rename', array($temp_file, $old, false)); - $this->installer->addFileOperation('delete', array($temp_file)); - } - } - - return $test; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Cfg.xml b/3rdparty/PEAR/Installer/Role/Cfg.xml deleted file mode 100644 index 7a415dc466ab9a58607c4bed3dc2900f7414e76d..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Cfg.xml +++ /dev/null @@ -1,15 +0,0 @@ - - php - extsrc - extbin - zendextsrc - zendextbin - 1 - cfg_dir - - 1 - - - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Common.php b/3rdparty/PEAR/Installer/Role/Common.php deleted file mode 100644 index 23e7348d70cf2332689f8968f66bfdb13a8531e4..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Common.php +++ /dev/null @@ -1,174 +0,0 @@ - - * @copyright 1997-2006 The PHP Group - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Common.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class for all installation roles. - * - * This class allows extensibility of file roles. Packages with complex - * customization can now provide custom file roles along with the possibility of - * adding configuration values to match. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2006 The PHP Group - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Common -{ - /** - * @var PEAR_Config - * @access protected - */ - var $config; - - /** - * @param PEAR_Config - */ - function PEAR_Installer_Role_Common(&$config) - { - $this->config = $config; - } - - /** - * Retrieve configuration information about a file role from its XML info - * - * @param string $role Role Classname, as in "PEAR_Installer_Role_Data" - * @return array - */ - function getInfo($role) - { - if (empty($GLOBALS['_PEAR_INSTALLER_ROLES'][$role])) { - return PEAR::raiseError('Unknown Role class: "' . $role . '"'); - } - return $GLOBALS['_PEAR_INSTALLER_ROLES'][$role]; - } - - /** - * This is called for each file to set up the directories and files - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param array attributes from the tag - * @param string file name - * @return array an array consisting of: - * - * 1 the original, pre-baseinstalldir installation directory - * 2 the final installation directory - * 3 the full path to the final location of the file - * 4 the location of the pre-installation file - */ - function processInstallation($pkg, $atts, $file, $tmp_path, $layer = null) - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - if (!$roleInfo['locationconfig']) { - return false; - } - if ($roleInfo['honorsbaseinstall']) { - $dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], $layer, - $pkg->getChannel()); - if (!empty($atts['baseinstalldir'])) { - $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; - } - } elseif ($roleInfo['unusualbaseinstall']) { - $dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], - $layer, $pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage(); - if (!empty($atts['baseinstalldir'])) { - $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; - } - } else { - $dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], - $layer, $pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage(); - } - if (dirname($file) != '.' && empty($atts['install-as'])) { - $dest_dir .= DIRECTORY_SEPARATOR . dirname($file); - } - if (empty($atts['install-as'])) { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . basename($file); - } else { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . $atts['install-as']; - } - $orig_file = $tmp_path . DIRECTORY_SEPARATOR . $file; - - // Clean up the DIRECTORY_SEPARATOR mess - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - - list($dest_dir, $dest_file, $orig_file) = preg_replace(array('!\\\\+!', '!/!', "!$ds2+!"), - array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR), - array($dest_dir, $dest_file, $orig_file)); - return array($save_destdir, $dest_dir, $dest_file, $orig_file); - } - - /** - * Get the name of the configuration variable that specifies the location of this file - * @return string|false - */ - function getLocationConfig() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['locationconfig']; - } - - /** - * Do any unusual setup here - * @param PEAR_Installer - * @param PEAR_PackageFile_v2 - * @param array file attributes - * @param string file name - */ - function setup(&$installer, $pkg, $atts, $file) - { - } - - function isExecutable() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['executable']; - } - - function isInstallable() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['installable']; - } - - function isExtension() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['phpextension']; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Data.php b/3rdparty/PEAR/Installer/Role/Data.php deleted file mode 100644 index e3b7fa2fff2da698a1924a627356c1c8f4fcc9ad..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Data.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Data.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Data extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Data.xml b/3rdparty/PEAR/Installer/Role/Data.xml deleted file mode 100644 index eae63720d3ba4022846e7ed36880cd71af734139..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Data.xml +++ /dev/null @@ -1,15 +0,0 @@ - - php - extsrc - extbin - zendextsrc - zendextbin - 1 - data_dir - - - - - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Doc.php b/3rdparty/PEAR/Installer/Role/Doc.php deleted file mode 100644 index d592ffff01481f4af2eb856ad1f734d53701b0f3..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Doc.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Doc.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Doc extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Doc.xml b/3rdparty/PEAR/Installer/Role/Doc.xml deleted file mode 100644 index 173afba011a0f45e88da18659bd47c3cb47471a1..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Doc.xml +++ /dev/null @@ -1,15 +0,0 @@ - - php - extsrc - extbin - zendextsrc - zendextbin - 1 - doc_dir - - - - - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Ext.php b/3rdparty/PEAR/Installer/Role/Ext.php deleted file mode 100644 index eceb0279ff957267539233858fe1d1fcbb0c4c6a..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Ext.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Ext.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Ext extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Ext.xml b/3rdparty/PEAR/Installer/Role/Ext.xml deleted file mode 100644 index e2940fe1f22cbe7dc1c7a1b02e97e0c6ab9ca7ef..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Ext.xml +++ /dev/null @@ -1,12 +0,0 @@ - - extbin - zendextbin - 1 - ext_dir - 1 - - - - 1 - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Php.php b/3rdparty/PEAR/Installer/Role/Php.php deleted file mode 100644 index e2abf44eed1ea222432a47e5bf14d425f3e61e5b..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Php.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Php.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Php extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Php.xml b/3rdparty/PEAR/Installer/Role/Php.xml deleted file mode 100644 index 6b9a0e67af9ac8d90543de9575988a7da3427da8..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Php.xml +++ /dev/null @@ -1,15 +0,0 @@ - - php - extsrc - extbin - zendextsrc - zendextbin - 1 - php_dir - 1 - - 1 - - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Script.php b/3rdparty/PEAR/Installer/Role/Script.php deleted file mode 100644 index b31469e4b10721f8e02619ca194a2e03c80a5506..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Script.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Script.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Script extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Script.xml b/3rdparty/PEAR/Installer/Role/Script.xml deleted file mode 100644 index e732cf2af6f8e3731d0f91068053787eb23ad4eb..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Script.xml +++ /dev/null @@ -1,15 +0,0 @@ - - php - extsrc - extbin - zendextsrc - zendextbin - 1 - bin_dir - 1 - - - 1 - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Src.php b/3rdparty/PEAR/Installer/Role/Src.php deleted file mode 100644 index 503705313d821bff26e0457c805e40c612e3eed0..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Src.php +++ /dev/null @@ -1,34 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Src.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Src extends PEAR_Installer_Role_Common -{ - function setup(&$installer, $pkg, $atts, $file) - { - $installer->source_files++; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Src.xml b/3rdparty/PEAR/Installer/Role/Src.xml deleted file mode 100644 index 103483402f04d40d2630ffa2e46d866c039d806a..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Src.xml +++ /dev/null @@ -1,12 +0,0 @@ - - extsrc - zendextsrc - 1 - temp_dir - - - - - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Test.php b/3rdparty/PEAR/Installer/Role/Test.php deleted file mode 100644 index 14c0e60919239fa8d2716fd114d7e31dc4b140cf..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Test.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Test.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Test extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Test.xml b/3rdparty/PEAR/Installer/Role/Test.xml deleted file mode 100644 index 51d5b894e07b695f5766bf10a7c70a8630eefa61..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Test.xml +++ /dev/null @@ -1,15 +0,0 @@ - - php - extsrc - extbin - zendextsrc - zendextbin - 1 - test_dir - - - - - - - \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Www.php b/3rdparty/PEAR/Installer/Role/Www.php deleted file mode 100644 index 11adeff8295c4a0b7c843e0b163f7f66159d1d2f..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Www.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @copyright 2007-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Www.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.7.0 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 2007-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.7.0 - */ -class PEAR_Installer_Role_Www extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Installer/Role/Www.xml b/3rdparty/PEAR/Installer/Role/Www.xml deleted file mode 100644 index 7598be38892571d3eca2d32d24b5413377ad6099..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Installer/Role/Www.xml +++ /dev/null @@ -1,15 +0,0 @@ - - php - extsrc - extbin - zendextsrc - zendextbin - 1 - www_dir - 1 - - - - - - \ No newline at end of file diff --git a/3rdparty/PEAR/PackageFile.php b/3rdparty/PEAR/PackageFile.php deleted file mode 100644 index 7ae3362844158c8650cb54d12f02b13d94d7db93..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile.php +++ /dev/null @@ -1,492 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: PackageFile.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * needed for PEAR_VALIDATE_* constants - */ -require_once 'PEAR/Validate.php'; -/** - * Error code if the package.xml tag does not contain a valid version - */ -define('PEAR_PACKAGEFILE_ERROR_NO_PACKAGEVERSION', 1); -/** - * Error code if the package.xml tag version is not supported (version 1.0 and 1.1 are the only supported versions, - * currently - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_PACKAGEVERSION', 2); -/** - * Abstraction for the package.xml package description file - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile -{ - /** - * @var PEAR_Config - */ - var $_config; - var $_debug; - - var $_logger = false; - /** - * @var boolean - */ - var $_rawReturn = false; - - /** - * helper for extracting Archive_Tar errors - * @var array - * @access private - */ - var $_extractErrors = array(); - - /** - * - * @param PEAR_Config $config - * @param ? $debug - * @param string @tmpdir Optional temporary directory for uncompressing - * files - */ - function PEAR_PackageFile(&$config, $debug = false) - { - $this->_config = $config; - $this->_debug = $debug; - } - - /** - * Turn off validation - return a parsed package.xml without checking it - * - * This is used by the package-validate command - */ - function rawReturn() - { - $this->_rawReturn = true; - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - - /** - * Create a PEAR_PackageFile_Parser_v* of a given version. - * @param int $version - * @return PEAR_PackageFile_Parser_v1|PEAR_PackageFile_Parser_v1 - */ - function &parserFactory($version) - { - if (!in_array($version{0}, array('1', '2'))) { - $a = false; - return $a; - } - - include_once 'PEAR/PackageFile/Parser/v' . $version{0} . '.php'; - $version = $version{0}; - $class = "PEAR_PackageFile_Parser_v$version"; - $a = new $class; - return $a; - } - - /** - * For simpler unit-testing - * @return string - */ - function getClassPrefix() - { - return 'PEAR_PackageFile_v'; - } - - /** - * Create a PEAR_PackageFile_v* of a given version. - * @param int $version - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v1 - */ - function &factory($version) - { - if (!in_array($version{0}, array('1', '2'))) { - $a = false; - return $a; - } - - include_once 'PEAR/PackageFile/v' . $version{0} . '.php'; - $version = $version{0}; - $class = $this->getClassPrefix() . $version; - $a = new $class; - return $a; - } - - /** - * Create a PEAR_PackageFile_v* from its toArray() method - * - * WARNING: no validation is performed, the array is assumed to be valid, - * always parse from xml if you want validation. - * @param array $arr - * @return PEAR_PackageFileManager_v1|PEAR_PackageFileManager_v2 - * @uses factory() to construct the returned object. - */ - function &fromArray($arr) - { - if (isset($arr['xsdversion'])) { - $obj = &$this->factory($arr['xsdversion']); - if ($this->_logger) { - $obj->setLogger($this->_logger); - } - - $obj->setConfig($this->_config); - $obj->fromArray($arr); - return $obj; - } - - if (isset($arr['package']['attribs']['version'])) { - $obj = &$this->factory($arr['package']['attribs']['version']); - } else { - $obj = &$this->factory('1.0'); - } - - if ($this->_logger) { - $obj->setLogger($this->_logger); - } - - $obj->setConfig($this->_config); - $obj->fromArray($arr); - return $obj; - } - - /** - * Create a PEAR_PackageFile_v* from an XML string. - * @access public - * @param string $data contents of package.xml file - * @param int $state package state (one of PEAR_VALIDATE_* constants) - * @param string $file full path to the package.xml file (and the files - * it references) - * @param string $archive optional name of the archive that the XML was - * extracted from, if any - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @uses parserFactory() to construct a parser to load the package. - */ - function &fromXmlString($data, $state, $file, $archive = false) - { - if (preg_match('/]+version=[\'"]([0-9]+\.[0-9]+)[\'"]/', $data, $packageversion)) { - if (!in_array($packageversion[1], array('1.0', '2.0', '2.1'))) { - return PEAR::raiseError('package.xml version "' . $packageversion[1] . - '" is not supported, only 1.0, 2.0, and 2.1 are supported.'); - } - - $object = &$this->parserFactory($packageversion[1]); - if ($this->_logger) { - $object->setLogger($this->_logger); - } - - $object->setConfig($this->_config); - $pf = $object->parse($data, $file, $archive); - if (PEAR::isError($pf)) { - return $pf; - } - - if ($this->_rawReturn) { - return $pf; - } - - if (!$pf->validate($state)) {; - if ($this->_config->get('verbose') > 0 - && $this->_logger && $pf->getValidationWarnings(false) - ) { - foreach ($pf->getValidationWarnings(false) as $warning) { - $this->_logger->log(0, 'ERROR: ' . $warning['message']); - } - } - - $a = PEAR::raiseError('Parsing of package.xml from file "' . $file . '" failed', - 2, null, null, $pf->getValidationWarnings()); - return $a; - } - - if ($this->_logger && $pf->getValidationWarnings(false)) { - foreach ($pf->getValidationWarnings() as $warning) { - $this->_logger->log(0, 'WARNING: ' . $warning['message']); - } - } - - if (method_exists($pf, 'flattenFilelist')) { - $pf->flattenFilelist(); // for v2 - } - - return $pf; - } elseif (preg_match('/]+version=[\'"]([^"\']+)[\'"]/', $data, $packageversion)) { - $a = PEAR::raiseError('package.xml file "' . $file . - '" has unsupported package.xml version "' . $packageversion[1] . '"'); - return $a; - } else { - if (!class_exists('PEAR_ErrorStack')) { - require_once 'PEAR/ErrorStack.php'; - } - - PEAR_ErrorStack::staticPush('PEAR_PackageFile', - PEAR_PACKAGEFILE_ERROR_NO_PACKAGEVERSION, - 'warning', array('xml' => $data), 'package.xml "' . $file . - '" has no package.xml version'); - $object = &$this->parserFactory('1.0'); - $object->setConfig($this->_config); - $pf = $object->parse($data, $file, $archive); - if (PEAR::isError($pf)) { - return $pf; - } - - if ($this->_rawReturn) { - return $pf; - } - - if (!$pf->validate($state)) { - $a = PEAR::raiseError('Parsing of package.xml from file "' . $file . '" failed', - 2, null, null, $pf->getValidationWarnings()); - return $a; - } - - if ($this->_logger && $pf->getValidationWarnings(false)) { - foreach ($pf->getValidationWarnings() as $warning) { - $this->_logger->log(0, 'WARNING: ' . $warning['message']); - } - } - - if (method_exists($pf, 'flattenFilelist')) { - $pf->flattenFilelist(); // for v2 - } - - return $pf; - } - } - - /** - * Register a temporary file or directory. When the destructor is - * executed, all registered temporary files and directories are - * removed. - * - * @param string $file name of file or directory - * @return void - */ - function addTempFile($file) - { - $GLOBALS['_PEAR_Common_tempfiles'][] = $file; - } - - /** - * Create a PEAR_PackageFile_v* from a compresed Tar or Tgz file. - * @access public - * @param string contents of package.xml file - * @param int package state (one of PEAR_VALIDATE_* constants) - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @using Archive_Tar to extract the files - * @using fromPackageFile() to load the package after the package.xml - * file is extracted. - */ - function &fromTgzFile($file, $state) - { - if (!class_exists('Archive_Tar')) { - require_once 'Archive/Tar.php'; - } - - $tar = new Archive_Tar($file); - if ($this->_debug <= 1) { - $tar->pushErrorHandling(PEAR_ERROR_RETURN); - } - - $content = $tar->listContent(); - if ($this->_debug <= 1) { - $tar->popErrorHandling(); - } - - if (!is_array($content)) { - if (is_string($file) && strlen($file < 255) && - (!file_exists($file) || !@is_file($file))) { - $ret = PEAR::raiseError("could not open file \"$file\""); - return $ret; - } - - $file = realpath($file); - $ret = PEAR::raiseError("Could not get contents of package \"$file\"". - '. Invalid tgz file.'); - return $ret; - } - - if (!count($content) && !@is_file($file)) { - $ret = PEAR::raiseError("could not open file \"$file\""); - return $ret; - } - - $xml = null; - $origfile = $file; - foreach ($content as $file) { - $name = $file['filename']; - if ($name == 'package2.xml') { // allow a .tgz to distribute both versions - $xml = $name; - break; - } - - if ($name == 'package.xml') { - $xml = $name; - break; - } elseif (preg_match('/package.xml$/', $name, $match)) { - $xml = $name; - break; - } - } - - $tmpdir = System::mktemp('-t "' . $this->_config->get('temp_dir') . '" -d pear'); - if ($tmpdir === false) { - $ret = PEAR::raiseError("there was a problem with getting the configured temp directory"); - return $ret; - } - - PEAR_PackageFile::addTempFile($tmpdir); - - $this->_extractErrors(); - PEAR::staticPushErrorHandling(PEAR_ERROR_CALLBACK, array($this, '_extractErrors')); - - if (!$xml || !$tar->extractList(array($xml), $tmpdir)) { - $extra = implode("\n", $this->_extractErrors()); - if ($extra) { - $extra = ' ' . $extra; - } - - PEAR::staticPopErrorHandling(); - $ret = PEAR::raiseError('could not extract the package.xml file from "' . - $origfile . '"' . $extra); - return $ret; - } - - PEAR::staticPopErrorHandling(); - $ret = &PEAR_PackageFile::fromPackageFile("$tmpdir/$xml", $state, $origfile); - return $ret; - } - - /** - * helper callback for extracting Archive_Tar errors - * - * @param PEAR_Error|null $err - * @return array - * @access private - */ - function _extractErrors($err = null) - { - static $errors = array(); - if ($err === null) { - $e = $errors; - $errors = array(); - return $e; - } - $errors[] = $err->getMessage(); - } - - /** - * Create a PEAR_PackageFile_v* from a package.xml file. - * - * @access public - * @param string $descfile name of package xml file - * @param int $state package state (one of PEAR_VALIDATE_* constants) - * @param string|false $archive name of the archive this package.xml came - * from, if any - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @uses PEAR_PackageFile::fromXmlString to create the oject after the - * XML is loaded from the package.xml file. - */ - function &fromPackageFile($descfile, $state, $archive = false) - { - $fp = false; - if (is_string($descfile) && strlen($descfile) < 255 && - ( - !file_exists($descfile) || !is_file($descfile) || !is_readable($descfile) - || (!$fp = @fopen($descfile, 'r')) - ) - ) { - $a = PEAR::raiseError("Unable to open $descfile"); - return $a; - } - - // read the whole thing so we only get one cdata callback - // for each block of cdata - fclose($fp); - $data = file_get_contents($descfile); - $ret = &PEAR_PackageFile::fromXmlString($data, $state, $descfile, $archive); - return $ret; - } - - /** - * Create a PEAR_PackageFile_v* from a .tgz archive or package.xml file. - * - * This method is able to extract information about a package from a .tgz - * archive or from a XML package definition file. - * - * @access public - * @param string $info file name - * @param int $state package state (one of PEAR_VALIDATE_* constants) - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @uses fromPackageFile() if the file appears to be XML - * @uses fromTgzFile() to load all non-XML files - */ - function &fromAnyFile($info, $state) - { - if (is_dir($info)) { - $dir_name = realpath($info); - if (file_exists($dir_name . '/package.xml')) { - $info = PEAR_PackageFile::fromPackageFile($dir_name . '/package.xml', $state); - } elseif (file_exists($dir_name . '/package2.xml')) { - $info = PEAR_PackageFile::fromPackageFile($dir_name . '/package2.xml', $state); - } else { - $info = PEAR::raiseError("No package definition found in '$info' directory"); - } - - return $info; - } - - $fp = false; - if (is_string($info) && strlen($info) < 255 && - (file_exists($info) || ($fp = @fopen($info, 'r'))) - ) { - - if ($fp) { - fclose($fp); - } - - $tmp = substr($info, -4); - if ($tmp == '.xml') { - $info = &PEAR_PackageFile::fromPackageFile($info, $state); - } elseif ($tmp == '.tar' || $tmp == '.tgz') { - $info = &PEAR_PackageFile::fromTgzFile($info, $state); - } else { - $fp = fopen($info, 'r'); - $test = fread($fp, 5); - fclose($fp); - if ($test == ' - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: v1.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * needed for PEAR_VALIDATE_* constants - */ -require_once 'PEAR/Validate.php'; -require_once 'System.php'; -require_once 'PEAR/PackageFile/v2.php'; -/** - * This class converts a PEAR_PackageFile_v1 object into any output format. - * - * Supported output formats include array, XML string, and a PEAR_PackageFile_v2 - * object, for converting package.xml 1.0 into package.xml 2.0 with no sweat. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Generator_v1 -{ - /** - * @var PEAR_PackageFile_v1 - */ - var $_packagefile; - function PEAR_PackageFile_Generator_v1(&$packagefile) - { - $this->_packagefile = &$packagefile; - } - - function getPackagerVersion() - { - return '1.9.4'; - } - - /** - * @param PEAR_Packager - * @param bool if true, a .tgz is written, otherwise a .tar is written - * @param string|null directory in which to save the .tgz - * @return string|PEAR_Error location of package or error object - */ - function toTgz(&$packager, $compress = true, $where = null) - { - require_once 'Archive/Tar.php'; - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: "' . $where . '" could' . - ' not be created'); - } - if (file_exists($where . DIRECTORY_SEPARATOR . 'package.xml') && - !is_file($where . DIRECTORY_SEPARATOR . 'package.xml')) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: unable to save package.xml as' . - ' "' . $where . DIRECTORY_SEPARATOR . 'package.xml"'); - } - if (!$this->_packagefile->validate(PEAR_VALIDATE_PACKAGING)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: invalid package file'); - } - $pkginfo = $this->_packagefile->getArray(); - $ext = $compress ? '.tgz' : '.tar'; - $pkgver = $pkginfo['package'] . '-' . $pkginfo['version']; - $dest_package = getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext; - if (file_exists(getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext) && - !is_file(getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: cannot create tgz file "' . - getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext . '"'); - } - if ($pkgfile = $this->_packagefile->getPackageFile()) { - $pkgdir = dirname(realpath($pkgfile)); - $pkgfile = basename($pkgfile); - } else { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: package file object must ' . - 'be created from a real file'); - } - // {{{ Create the package file list - $filelist = array(); - $i = 0; - - foreach ($this->_packagefile->getFilelist() as $fname => $atts) { - $file = $pkgdir . DIRECTORY_SEPARATOR . $fname; - if (!file_exists($file)) { - return PEAR::raiseError("File does not exist: $fname"); - } else { - $filelist[$i++] = $file; - if (!isset($atts['md5sum'])) { - $this->_packagefile->setFileAttribute($fname, 'md5sum', md5_file($file)); - } - $packager->log(2, "Adding file $fname"); - } - } - // }}} - $packagexml = $this->toPackageFile($where, PEAR_VALIDATE_PACKAGING, 'package.xml', true); - if ($packagexml) { - $tar = new Archive_Tar($dest_package, $compress); - $tar->setErrorHandling(PEAR_ERROR_RETURN); // XXX Don't print errors - // ----- Creates with the package.xml file - $ok = $tar->createModify(array($packagexml), '', $where); - if (PEAR::isError($ok)) { - return $ok; - } elseif (!$ok) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: tarball creation failed'); - } - // ----- Add the content of the package - if (!$tar->addModify($filelist, $pkgver, $pkgdir)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: tarball creation failed'); - } - return $dest_package; - } - } - - /** - * @param string|null directory to place the package.xml in, or null for a temporary dir - * @param int one of the PEAR_VALIDATE_* constants - * @param string name of the generated file - * @param bool if true, then no analysis will be performed on role="php" files - * @return string|PEAR_Error path to the created file on success - */ - function toPackageFile($where = null, $state = PEAR_VALIDATE_NORMAL, $name = 'package.xml', - $nofilechecking = false) - { - if (!$this->_packagefile->validate($state, $nofilechecking)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: invalid package.xml', - null, null, null, $this->_packagefile->getValidationWarnings()); - } - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: "' . $where . '" could' . - ' not be created'); - } - $newpkgfile = $where . DIRECTORY_SEPARATOR . $name; - $np = @fopen($newpkgfile, 'wb'); - if (!$np) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: unable to save ' . - "$name as $newpkgfile"); - } - fwrite($np, $this->toXml($state, true)); - fclose($np); - return $newpkgfile; - } - - /** - * fix both XML encoding to be UTF8, and replace standard XML entities < > " & ' - * - * @param string $string - * @return string - * @access private - */ - function _fixXmlEncoding($string) - { - if (version_compare(phpversion(), '5.0.0', 'lt')) { - $string = utf8_encode($string); - } - return strtr($string, array( - '&' => '&', - '>' => '>', - '<' => '<', - '"' => '"', - '\'' => ''' )); - } - - /** - * Return an XML document based on the package info (as returned - * by the PEAR_Common::infoFrom* methods). - * - * @return string XML data - */ - function toXml($state = PEAR_VALIDATE_NORMAL, $nofilevalidation = false) - { - $this->_packagefile->setDate(date('Y-m-d')); - if (!$this->_packagefile->validate($state, $nofilevalidation)) { - return false; - } - $pkginfo = $this->_packagefile->getArray(); - static $maint_map = array( - "handle" => "user", - "name" => "name", - "email" => "email", - "role" => "role", - ); - $ret = "\n"; - $ret .= "\n"; - $ret .= "\n" . -" $pkginfo[package]"; - if (isset($pkginfo['extends'])) { - $ret .= "\n$pkginfo[extends]"; - } - $ret .= - "\n ".$this->_fixXmlEncoding($pkginfo['summary'])."\n" . -" ".trim($this->_fixXmlEncoding($pkginfo['description']))."\n \n" . -" \n"; - foreach ($pkginfo['maintainers'] as $maint) { - $ret .= " \n"; - foreach ($maint_map as $idx => $elm) { - $ret .= " <$elm>"; - $ret .= $this->_fixXmlEncoding($maint[$idx]); - $ret .= "\n"; - } - $ret .= " \n"; - } - $ret .= " \n"; - $ret .= $this->_makeReleaseXml($pkginfo, false, $state); - if (isset($pkginfo['changelog']) && count($pkginfo['changelog']) > 0) { - $ret .= " \n"; - foreach ($pkginfo['changelog'] as $oldrelease) { - $ret .= $this->_makeReleaseXml($oldrelease, true); - } - $ret .= " \n"; - } - $ret .= "\n"; - return $ret; - } - - // }}} - // {{{ _makeReleaseXml() - - /** - * Generate part of an XML description with release information. - * - * @param array $pkginfo array with release information - * @param bool $changelog whether the result will be in a changelog element - * - * @return string XML data - * - * @access private - */ - function _makeReleaseXml($pkginfo, $changelog = false, $state = PEAR_VALIDATE_NORMAL) - { - // XXX QUOTE ENTITIES IN PCDATA, OR EMBED IN CDATA BLOCKS!! - $indent = $changelog ? " " : ""; - $ret = "$indent \n"; - if (!empty($pkginfo['version'])) { - $ret .= "$indent $pkginfo[version]\n"; - } - if (!empty($pkginfo['release_date'])) { - $ret .= "$indent $pkginfo[release_date]\n"; - } - if (!empty($pkginfo['release_license'])) { - $ret .= "$indent $pkginfo[release_license]\n"; - } - if (!empty($pkginfo['release_state'])) { - $ret .= "$indent $pkginfo[release_state]\n"; - } - if (!empty($pkginfo['release_notes'])) { - $ret .= "$indent ".trim($this->_fixXmlEncoding($pkginfo['release_notes'])) - ."\n$indent \n"; - } - if (!empty($pkginfo['release_warnings'])) { - $ret .= "$indent ".$this->_fixXmlEncoding($pkginfo['release_warnings'])."\n"; - } - if (isset($pkginfo['release_deps']) && sizeof($pkginfo['release_deps']) > 0) { - $ret .= "$indent \n"; - foreach ($pkginfo['release_deps'] as $dep) { - $ret .= "$indent _fixXmlEncoding($c['name']) . "\""; - if (isset($c['default'])) { - $ret .= " default=\"" . $this->_fixXmlEncoding($c['default']) . "\""; - } - $ret .= " prompt=\"" . $this->_fixXmlEncoding($c['prompt']) . "\""; - $ret .= "/>\n"; - } - $ret .= "$indent \n"; - } - if (isset($pkginfo['provides'])) { - foreach ($pkginfo['provides'] as $key => $what) { - $ret .= "$indent recursiveXmlFilelist($pkginfo['filelist']); - } else { - foreach ($pkginfo['filelist'] as $file => $fa) { - if (!isset($fa['role'])) { - $fa['role'] = ''; - } - $ret .= "$indent _fixXmlEncoding($fa['baseinstalldir']) . '"'; - } - if (isset($fa['md5sum'])) { - $ret .= " md5sum=\"$fa[md5sum]\""; - } - if (isset($fa['platform'])) { - $ret .= " platform=\"$fa[platform]\""; - } - if (!empty($fa['install-as'])) { - $ret .= ' install-as="' . - $this->_fixXmlEncoding($fa['install-as']) . '"'; - } - $ret .= ' name="' . $this->_fixXmlEncoding($file) . '"'; - if (empty($fa['replacements'])) { - $ret .= "/>\n"; - } else { - $ret .= ">\n"; - foreach ($fa['replacements'] as $r) { - $ret .= "$indent $v) { - $ret .= " $k=\"" . $this->_fixXmlEncoding($v) .'"'; - } - $ret .= "/>\n"; - } - $ret .= "$indent \n"; - } - } - } - $ret .= "$indent \n"; - } - $ret .= "$indent \n"; - return $ret; - } - - /** - * @param array - * @access protected - */ - function recursiveXmlFilelist($list) - { - $this->_dirs = array(); - foreach ($list as $file => $attributes) { - $this->_addDir($this->_dirs, explode('/', dirname($file)), $file, $attributes); - } - return $this->_formatDir($this->_dirs); - } - - /** - * @param array - * @param array - * @param string|null - * @param array|null - * @access private - */ - function _addDir(&$dirs, $dir, $file = null, $attributes = null) - { - if ($dir == array() || $dir == array('.')) { - $dirs['files'][basename($file)] = $attributes; - return; - } - $curdir = array_shift($dir); - if (!isset($dirs['dirs'][$curdir])) { - $dirs['dirs'][$curdir] = array(); - } - $this->_addDir($dirs['dirs'][$curdir], $dir, $file, $attributes); - } - - /** - * @param array - * @param string - * @param string - * @access private - */ - function _formatDir($dirs, $indent = '', $curdir = '') - { - $ret = ''; - if (!count($dirs)) { - return ''; - } - if (isset($dirs['dirs'])) { - uksort($dirs['dirs'], 'strnatcasecmp'); - foreach ($dirs['dirs'] as $dir => $contents) { - $usedir = "$curdir/$dir"; - $ret .= "$indent \n"; - $ret .= $this->_formatDir($contents, "$indent ", $usedir); - $ret .= "$indent \n"; - } - } - if (isset($dirs['files'])) { - uksort($dirs['files'], 'strnatcasecmp'); - foreach ($dirs['files'] as $file => $attribs) { - $ret .= $this->_formatFile($file, $attribs, $indent); - } - } - return $ret; - } - - /** - * @param string - * @param array - * @param string - * @access private - */ - function _formatFile($file, $attributes, $indent) - { - $ret = "$indent _fixXmlEncoding($attributes['baseinstalldir']) . '"'; - } - if (isset($attributes['md5sum'])) { - $ret .= " md5sum=\"$attributes[md5sum]\""; - } - if (isset($attributes['platform'])) { - $ret .= " platform=\"$attributes[platform]\""; - } - if (!empty($attributes['install-as'])) { - $ret .= ' install-as="' . - $this->_fixXmlEncoding($attributes['install-as']) . '"'; - } - $ret .= ' name="' . $this->_fixXmlEncoding($file) . '"'; - if (empty($attributes['replacements'])) { - $ret .= "/>\n"; - } else { - $ret .= ">\n"; - foreach ($attributes['replacements'] as $r) { - $ret .= "$indent $v) { - $ret .= " $k=\"" . $this->_fixXmlEncoding($v) .'"'; - } - $ret .= "/>\n"; - } - $ret .= "$indent \n"; - } - return $ret; - } - - // {{{ _unIndent() - - /** - * Unindent given string (?) - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } - } - return $data; - } - - /** - * @return array - */ - function dependenciesToV2() - { - $arr = array(); - $this->_convertDependencies2_0($arr); - return $arr['dependencies']; - } - - /** - * Convert a package.xml version 1.0 into version 2.0 - * - * Note that this does a basic conversion, to allow more advanced - * features like bundles and multiple releases - * @param string the classname to instantiate and return. This must be - * PEAR_PackageFile_v2 or a descendant - * @param boolean if true, only valid, deterministic package.xml 1.0 as defined by the - * strictest parameters will be converted - * @return PEAR_PackageFile_v2|PEAR_Error - */ - function &toV2($class = 'PEAR_PackageFile_v2', $strict = false) - { - if ($strict) { - if (!$this->_packagefile->validate()) { - $a = PEAR::raiseError('invalid package.xml version 1.0 cannot be converted' . - ' to version 2.0', null, null, null, - $this->_packagefile->getValidationWarnings(true)); - return $a; - } - } - - $arr = array( - 'attribs' => array( - 'version' => '2.0', - 'xmlns' => 'http://pear.php.net/dtd/package-2.0', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => "http://pear.php.net/dtd/tasks-1.0\n" . -"http://pear.php.net/dtd/tasks-1.0.xsd\n" . -"http://pear.php.net/dtd/package-2.0\n" . -'http://pear.php.net/dtd/package-2.0.xsd', - ), - 'name' => $this->_packagefile->getPackage(), - 'channel' => 'pear.php.net', - ); - $arr['summary'] = $this->_packagefile->getSummary(); - $arr['description'] = $this->_packagefile->getDescription(); - $maintainers = $this->_packagefile->getMaintainers(); - foreach ($maintainers as $maintainer) { - if ($maintainer['role'] != 'lead') { - continue; - } - $new = array( - 'name' => $maintainer['name'], - 'user' => $maintainer['handle'], - 'email' => $maintainer['email'], - 'active' => 'yes', - ); - $arr['lead'][] = $new; - } - - if (!isset($arr['lead'])) { // some people... you know? - $arr['lead'] = array( - 'name' => 'unknown', - 'user' => 'unknown', - 'email' => 'noleadmaintainer@example.com', - 'active' => 'no', - ); - } - - if (count($arr['lead']) == 1) { - $arr['lead'] = $arr['lead'][0]; - } - - foreach ($maintainers as $maintainer) { - if ($maintainer['role'] == 'lead') { - continue; - } - $new = array( - 'name' => $maintainer['name'], - 'user' => $maintainer['handle'], - 'email' => $maintainer['email'], - 'active' => 'yes', - ); - $arr[$maintainer['role']][] = $new; - } - - if (isset($arr['developer']) && count($arr['developer']) == 1) { - $arr['developer'] = $arr['developer'][0]; - } - - if (isset($arr['contributor']) && count($arr['contributor']) == 1) { - $arr['contributor'] = $arr['contributor'][0]; - } - - if (isset($arr['helper']) && count($arr['helper']) == 1) { - $arr['helper'] = $arr['helper'][0]; - } - - $arr['date'] = $this->_packagefile->getDate(); - $arr['version'] = - array( - 'release' => $this->_packagefile->getVersion(), - 'api' => $this->_packagefile->getVersion(), - ); - $arr['stability'] = - array( - 'release' => $this->_packagefile->getState(), - 'api' => $this->_packagefile->getState(), - ); - $licensemap = - array( - 'php' => 'http://www.php.net/license', - 'php license' => 'http://www.php.net/license', - 'lgpl' => 'http://www.gnu.org/copyleft/lesser.html', - 'bsd' => 'http://www.opensource.org/licenses/bsd-license.php', - 'bsd style' => 'http://www.opensource.org/licenses/bsd-license.php', - 'bsd-style' => 'http://www.opensource.org/licenses/bsd-license.php', - 'mit' => 'http://www.opensource.org/licenses/mit-license.php', - 'gpl' => 'http://www.gnu.org/copyleft/gpl.html', - 'apache' => 'http://www.opensource.org/licenses/apache2.0.php' - ); - - if (isset($licensemap[strtolower($this->_packagefile->getLicense())])) { - $arr['license'] = array( - 'attribs' => array('uri' => - $licensemap[strtolower($this->_packagefile->getLicense())]), - '_content' => $this->_packagefile->getLicense() - ); - } else { - // don't use bogus uri - $arr['license'] = $this->_packagefile->getLicense(); - } - - $arr['notes'] = $this->_packagefile->getNotes(); - $temp = array(); - $arr['contents'] = $this->_convertFilelist2_0($temp); - $this->_convertDependencies2_0($arr); - $release = ($this->_packagefile->getConfigureOptions() || $this->_isExtension) ? - 'extsrcrelease' : 'phprelease'; - if ($release == 'extsrcrelease') { - $arr['channel'] = 'pecl.php.net'; - $arr['providesextension'] = $arr['name']; // assumption - } - - $arr[$release] = array(); - if ($this->_packagefile->getConfigureOptions()) { - $arr[$release]['configureoption'] = $this->_packagefile->getConfigureOptions(); - foreach ($arr[$release]['configureoption'] as $i => $opt) { - $arr[$release]['configureoption'][$i] = array('attribs' => $opt); - } - if (count($arr[$release]['configureoption']) == 1) { - $arr[$release]['configureoption'] = $arr[$release]['configureoption'][0]; - } - } - - $this->_convertRelease2_0($arr[$release], $temp); - if ($release == 'extsrcrelease' && count($arr[$release]) > 1) { - // multiple extsrcrelease tags added in PEAR 1.4.1 - $arr['dependencies']['required']['pearinstaller']['min'] = '1.4.1'; - } - - if ($cl = $this->_packagefile->getChangelog()) { - foreach ($cl as $release) { - $rel = array(); - $rel['version'] = - array( - 'release' => $release['version'], - 'api' => $release['version'], - ); - if (!isset($release['release_state'])) { - $release['release_state'] = 'stable'; - } - - $rel['stability'] = - array( - 'release' => $release['release_state'], - 'api' => $release['release_state'], - ); - if (isset($release['release_date'])) { - $rel['date'] = $release['release_date']; - } else { - $rel['date'] = date('Y-m-d'); - } - - if (isset($release['release_license'])) { - if (isset($licensemap[strtolower($release['release_license'])])) { - $uri = $licensemap[strtolower($release['release_license'])]; - } else { - $uri = 'http://www.example.com'; - } - $rel['license'] = array( - 'attribs' => array('uri' => $uri), - '_content' => $release['release_license'] - ); - } else { - $rel['license'] = $arr['license']; - } - - if (!isset($release['release_notes'])) { - $release['release_notes'] = 'no release notes'; - } - - $rel['notes'] = $release['release_notes']; - $arr['changelog']['release'][] = $rel; - } - } - - $ret = new $class; - $ret->setConfig($this->_packagefile->_config); - if (isset($this->_packagefile->_logger) && is_object($this->_packagefile->_logger)) { - $ret->setLogger($this->_packagefile->_logger); - } - - $ret->fromArray($arr); - return $ret; - } - - /** - * @param array - * @param bool - * @access private - */ - function _convertDependencies2_0(&$release, $internal = false) - { - $peardep = array('pearinstaller' => - array('min' => '1.4.0b1')); // this is a lot safer - $required = $optional = array(); - $release['dependencies'] = array('required' => array()); - if ($this->_packagefile->hasDeps()) { - foreach ($this->_packagefile->getDeps() as $dep) { - if (!isset($dep['optional']) || $dep['optional'] == 'no') { - $required[] = $dep; - } else { - $optional[] = $dep; - } - } - foreach (array('required', 'optional') as $arr) { - $deps = array(); - foreach ($$arr as $dep) { - // organize deps by dependency type and name - if (!isset($deps[$dep['type']])) { - $deps[$dep['type']] = array(); - } - if (isset($dep['name'])) { - $deps[$dep['type']][$dep['name']][] = $dep; - } else { - $deps[$dep['type']][] = $dep; - } - } - do { - if (isset($deps['php'])) { - $php = array(); - if (count($deps['php']) > 1) { - $php = $this->_processPhpDeps($deps['php']); - } else { - if (!isset($deps['php'][0])) { - list($key, $blah) = each ($deps['php']); // stupid buggy versions - $deps['php'] = array($blah[0]); - } - $php = $this->_processDep($deps['php'][0]); - if (!$php) { - break; // poor mans throw - } - } - $release['dependencies'][$arr]['php'] = $php; - } - } while (false); - do { - if (isset($deps['pkg'])) { - $pkg = array(); - $pkg = $this->_processMultipleDepsName($deps['pkg']); - if (!$pkg) { - break; // poor mans throw - } - $release['dependencies'][$arr]['package'] = $pkg; - } - } while (false); - do { - if (isset($deps['ext'])) { - $pkg = array(); - $pkg = $this->_processMultipleDepsName($deps['ext']); - $release['dependencies'][$arr]['extension'] = $pkg; - } - } while (false); - // skip sapi - it's not supported so nobody will have used it - // skip os - it's not supported in 1.0 - } - } - if (isset($release['dependencies']['required'])) { - $release['dependencies']['required'] = - array_merge($peardep, $release['dependencies']['required']); - } else { - $release['dependencies']['required'] = $peardep; - } - if (!isset($release['dependencies']['required']['php'])) { - $release['dependencies']['required']['php'] = - array('min' => '4.0.0'); - } - $order = array(); - $bewm = $release['dependencies']['required']; - $order['php'] = $bewm['php']; - $order['pearinstaller'] = $bewm['pearinstaller']; - isset($bewm['package']) ? $order['package'] = $bewm['package'] :0; - isset($bewm['extension']) ? $order['extension'] = $bewm['extension'] :0; - $release['dependencies']['required'] = $order; - } - - /** - * @param array - * @access private - */ - function _convertFilelist2_0(&$package) - { - $ret = array('dir' => - array( - 'attribs' => array('name' => '/'), - 'file' => array() - ) - ); - $package['platform'] = - $package['install-as'] = array(); - $this->_isExtension = false; - foreach ($this->_packagefile->getFilelist() as $name => $file) { - $file['name'] = $name; - if (isset($file['role']) && $file['role'] == 'src') { - $this->_isExtension = true; - } - if (isset($file['replacements'])) { - $repl = $file['replacements']; - unset($file['replacements']); - } else { - unset($repl); - } - if (isset($file['install-as'])) { - $package['install-as'][$name] = $file['install-as']; - unset($file['install-as']); - } - if (isset($file['platform'])) { - $package['platform'][$name] = $file['platform']; - unset($file['platform']); - } - $file = array('attribs' => $file); - if (isset($repl)) { - foreach ($repl as $replace ) { - $file['tasks:replace'][] = array('attribs' => $replace); - } - if (count($repl) == 1) { - $file['tasks:replace'] = $file['tasks:replace'][0]; - } - } - $ret['dir']['file'][] = $file; - } - return $ret; - } - - /** - * Post-process special files with install-as/platform attributes and - * make the release tag. - * - * This complex method follows this work-flow to create the release tags: - * - *
-     * - if any install-as/platform exist, create a generic release and fill it with
-     *   o  tags for 
-     *   o  tags for 
-     *   o  tags for 
-     *   o  tags for 
-     * - create a release for each platform encountered and fill with
-     *   o  tags for 
-     *   o  tags for 
-     *   o  tags for 
-     *   o  tags for 
-     *   o  tags for 
-     *   o  tags for 
-     *   o  tags for 
-     * 
- * - * It does this by accessing the $package parameter, which contains an array with - * indices: - * - * - platform: mapping of file => OS the file should be installed on - * - install-as: mapping of file => installed name - * - osmap: mapping of OS => list of files that should be installed - * on that OS - * - notosmap: mapping of OS => list of files that should not be - * installed on that OS - * - * @param array - * @param array - * @access private - */ - function _convertRelease2_0(&$release, $package) - { - //- if any install-as/platform exist, create a generic release and fill it with - if (count($package['platform']) || count($package['install-as'])) { - $generic = array(); - $genericIgnore = array(); - foreach ($package['install-as'] as $file => $as) { - //o tags for - if (!isset($package['platform'][$file])) { - $generic[] = $file; - continue; - } - //o tags for - if (isset($package['platform'][$file]) && - $package['platform'][$file]{0} == '!') { - $generic[] = $file; - continue; - } - //o tags for - if (isset($package['platform'][$file]) && - $package['platform'][$file]{0} != '!') { - $genericIgnore[] = $file; - continue; - } - } - foreach ($package['platform'] as $file => $platform) { - if (isset($package['install-as'][$file])) { - continue; - } - if ($platform{0} != '!') { - //o tags for - $genericIgnore[] = $file; - } - } - if (count($package['platform'])) { - $oses = $notplatform = $platform = array(); - foreach ($package['platform'] as $file => $os) { - // get a list of oses - if ($os{0} == '!') { - if (isset($oses[substr($os, 1)])) { - continue; - } - $oses[substr($os, 1)] = count($oses); - } else { - if (isset($oses[$os])) { - continue; - } - $oses[$os] = count($oses); - } - } - //- create a release for each platform encountered and fill with - foreach ($oses as $os => $releaseNum) { - $release[$releaseNum]['installconditions']['os']['name'] = $os; - $release[$releaseNum]['filelist'] = array('install' => array(), - 'ignore' => array()); - foreach ($package['install-as'] as $file => $as) { - //o tags for - if (!isset($package['platform'][$file])) { - $release[$releaseNum]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $as, - ), - ); - continue; - } - //o tags for - // - if (isset($package['platform'][$file]) && - $package['platform'][$file] == $os) { - $release[$releaseNum]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $as, - ), - ); - continue; - } - //o tags for - // - if (isset($package['platform'][$file]) && - $package['platform'][$file] != "!$os" && - $package['platform'][$file]{0} == '!') { - $release[$releaseNum]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $as, - ), - ); - continue; - } - //o tags for - // - if (isset($package['platform'][$file]) && - $package['platform'][$file] == "!$os") { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - continue; - } - //o tags for - // - if (isset($package['platform'][$file]) && - $package['platform'][$file]{0} != '!' && - $package['platform'][$file] != $os) { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - continue; - } - } - foreach ($package['platform'] as $file => $platform) { - if (isset($package['install-as'][$file])) { - continue; - } - //o tags for - if ($platform == "!$os") { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - continue; - } - //o tags for - if ($platform{0} != '!' && $platform != $os) { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - } - } - if (!count($release[$releaseNum]['filelist']['install'])) { - unset($release[$releaseNum]['filelist']['install']); - } - if (!count($release[$releaseNum]['filelist']['ignore'])) { - unset($release[$releaseNum]['filelist']['ignore']); - } - } - if (count($generic) || count($genericIgnore)) { - $release[count($oses)] = array(); - if (count($generic)) { - foreach ($generic as $file) { - if (isset($package['install-as'][$file])) { - $installas = $package['install-as'][$file]; - } else { - $installas = $file; - } - $release[count($oses)]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $installas, - ) - ); - } - } - if (count($genericIgnore)) { - foreach ($genericIgnore as $file) { - $release[count($oses)]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ) - ); - } - } - } - // cleanup - foreach ($release as $i => $rel) { - if (isset($rel['filelist']['install']) && - count($rel['filelist']['install']) == 1) { - $release[$i]['filelist']['install'] = - $release[$i]['filelist']['install'][0]; - } - if (isset($rel['filelist']['ignore']) && - count($rel['filelist']['ignore']) == 1) { - $release[$i]['filelist']['ignore'] = - $release[$i]['filelist']['ignore'][0]; - } - } - if (count($release) == 1) { - $release = $release[0]; - } - } else { - // no platform atts, but some install-as atts - foreach ($package['install-as'] as $file => $value) { - $release['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $value - ) - ); - } - if (count($release['filelist']['install']) == 1) { - $release['filelist']['install'] = $release['filelist']['install'][0]; - } - } - } - } - - /** - * @param array - * @return array - * @access private - */ - function _processDep($dep) - { - if ($dep['type'] == 'php') { - if ($dep['rel'] == 'has') { - // come on - everyone has php! - return false; - } - } - $php = array(); - if ($dep['type'] != 'php') { - $php['name'] = $dep['name']; - if ($dep['type'] == 'pkg') { - $php['channel'] = 'pear.php.net'; - } - } - switch ($dep['rel']) { - case 'gt' : - $php['min'] = $dep['version']; - $php['exclude'] = $dep['version']; - break; - case 'ge' : - if (!isset($dep['version'])) { - if ($dep['type'] == 'php') { - if (isset($dep['name'])) { - $dep['version'] = $dep['name']; - } - } - } - $php['min'] = $dep['version']; - break; - case 'lt' : - $php['max'] = $dep['version']; - $php['exclude'] = $dep['version']; - break; - case 'le' : - $php['max'] = $dep['version']; - break; - case 'eq' : - $php['min'] = $dep['version']; - $php['max'] = $dep['version']; - break; - case 'ne' : - $php['exclude'] = $dep['version']; - break; - case 'not' : - $php['conflicts'] = 'yes'; - break; - } - return $php; - } - - /** - * @param array - * @return array - */ - function _processPhpDeps($deps) - { - $test = array(); - foreach ($deps as $dep) { - $test[] = $this->_processDep($dep); - } - $min = array(); - $max = array(); - foreach ($test as $dep) { - if (!$dep) { - continue; - } - if (isset($dep['min'])) { - $min[$dep['min']] = count($min); - } - if (isset($dep['max'])) { - $max[$dep['max']] = count($max); - } - } - if (count($min) > 0) { - uksort($min, 'version_compare'); - } - if (count($max) > 0) { - uksort($max, 'version_compare'); - } - if (count($min)) { - // get the highest minimum - $min = array_pop($a = array_flip($min)); - } else { - $min = false; - } - if (count($max)) { - // get the lowest maximum - $max = array_shift($a = array_flip($max)); - } else { - $max = false; - } - if ($min) { - $php['min'] = $min; - } - if ($max) { - $php['max'] = $max; - } - $exclude = array(); - foreach ($test as $dep) { - if (!isset($dep['exclude'])) { - continue; - } - $exclude[] = $dep['exclude']; - } - if (count($exclude)) { - $php['exclude'] = $exclude; - } - return $php; - } - - /** - * process multiple dependencies that have a name, like package deps - * @param array - * @return array - * @access private - */ - function _processMultipleDepsName($deps) - { - $ret = $tests = array(); - foreach ($deps as $name => $dep) { - foreach ($dep as $d) { - $tests[$name][] = $this->_processDep($d); - } - } - - foreach ($tests as $name => $test) { - $max = $min = $php = array(); - $php['name'] = $name; - foreach ($test as $dep) { - if (!$dep) { - continue; - } - if (isset($dep['channel'])) { - $php['channel'] = 'pear.php.net'; - } - if (isset($dep['conflicts']) && $dep['conflicts'] == 'yes') { - $php['conflicts'] = 'yes'; - } - if (isset($dep['min'])) { - $min[$dep['min']] = count($min); - } - if (isset($dep['max'])) { - $max[$dep['max']] = count($max); - } - } - if (count($min) > 0) { - uksort($min, 'version_compare'); - } - if (count($max) > 0) { - uksort($max, 'version_compare'); - } - if (count($min)) { - // get the highest minimum - $min = array_pop($a = array_flip($min)); - } else { - $min = false; - } - if (count($max)) { - // get the lowest maximum - $max = array_shift($a = array_flip($max)); - } else { - $max = false; - } - if ($min) { - $php['min'] = $min; - } - if ($max) { - $php['max'] = $max; - } - $exclude = array(); - foreach ($test as $dep) { - if (!isset($dep['exclude'])) { - continue; - } - $exclude[] = $dep['exclude']; - } - if (count($exclude)) { - $php['exclude'] = $exclude; - } - $ret[] = $php; - } - return $ret; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/PackageFile/Generator/v2.php b/3rdparty/PEAR/PackageFile/Generator/v2.php deleted file mode 100644 index 8250e0ac4d027a85d3776ff6244b8a5958c30f57..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile/Generator/v2.php +++ /dev/null @@ -1,893 +0,0 @@ - - * @author Stephan Schmidt (original XML_Serializer code) - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: v2.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * file/dir manipulation routines - */ -require_once 'System.php'; -require_once 'XML/Util.php'; - -/** - * This class converts a PEAR_PackageFile_v2 object into any output format. - * - * Supported output formats include array, XML string (using S. Schmidt's - * XML_Serializer, slightly customized) - * @category pear - * @package PEAR - * @author Greg Beaver - * @author Stephan Schmidt (original XML_Serializer code) - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Generator_v2 -{ - /** - * default options for the serialization - * @access private - * @var array $_defaultOptions - */ - var $_defaultOptions = array( - 'indent' => ' ', // string used for indentation - 'linebreak' => "\n", // string used for newlines - 'typeHints' => false, // automatically add type hin attributes - 'addDecl' => true, // add an XML declaration - 'defaultTagName' => 'XML_Serializer_Tag', // tag used for indexed arrays or invalid names - 'classAsTagName' => false, // use classname for objects in indexed arrays - 'keyAttribute' => '_originalKey', // attribute where original key is stored - 'typeAttribute' => '_type', // attribute for type (only if typeHints => true) - 'classAttribute' => '_class', // attribute for class of objects (only if typeHints => true) - 'scalarAsAttributes' => false, // scalar values (strings, ints,..) will be serialized as attribute - 'prependAttributes' => '', // prepend string for attributes - 'indentAttributes' => false, // indent the attributes, if set to '_auto', it will indent attributes so they all start at the same column - 'mode' => 'simplexml', // use 'simplexml' to use parent name as tagname if transforming an indexed array - 'addDoctype' => false, // add a doctype declaration - 'doctype' => null, // supply a string or an array with id and uri ({@see XML_Util::getDoctypeDeclaration()} - 'rootName' => 'package', // name of the root tag - 'rootAttributes' => array( - 'version' => '2.0', - 'xmlns' => 'http://pear.php.net/dtd/package-2.0', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => 'http://pear.php.net/dtd/tasks-1.0 -http://pear.php.net/dtd/tasks-1.0.xsd -http://pear.php.net/dtd/package-2.0 -http://pear.php.net/dtd/package-2.0.xsd', - ), // attributes of the root tag - 'attributesArray' => 'attribs', // all values in this key will be treated as attributes - 'contentName' => '_content', // this value will be used directly as content, instead of creating a new tag, may only be used in conjuction with attributesArray - 'beautifyFilelist' => false, - 'encoding' => 'UTF-8', - ); - - /** - * options for the serialization - * @access private - * @var array $options - */ - var $options = array(); - - /** - * current tag depth - * @var integer $_tagDepth - */ - var $_tagDepth = 0; - - /** - * serilialized representation of the data - * @var string $_serializedData - */ - var $_serializedData = null; - /** - * @var PEAR_PackageFile_v2 - */ - var $_packagefile; - /** - * @param PEAR_PackageFile_v2 - */ - function PEAR_PackageFile_Generator_v2(&$packagefile) - { - $this->_packagefile = &$packagefile; - if (isset($this->_packagefile->encoding)) { - $this->_defaultOptions['encoding'] = $this->_packagefile->encoding; - } - } - - /** - * @return string - */ - function getPackagerVersion() - { - return '1.9.4'; - } - - /** - * @param PEAR_Packager - * @param bool generate a .tgz or a .tar - * @param string|null temporary directory to package in - */ - function toTgz(&$packager, $compress = true, $where = null) - { - $a = null; - return $this->toTgz2($packager, $a, $compress, $where); - } - - /** - * Package up both a package.xml and package2.xml for the same release - * @param PEAR_Packager - * @param PEAR_PackageFile_v1 - * @param bool generate a .tgz or a .tar - * @param string|null temporary directory to package in - */ - function toTgz2(&$packager, &$pf1, $compress = true, $where = null) - { - require_once 'Archive/Tar.php'; - if (!$this->_packagefile->isEquivalent($pf1)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: "' . - basename($pf1->getPackageFile()) . - '" is not equivalent to "' . basename($this->_packagefile->getPackageFile()) - . '"'); - } - - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: "' . $where . '" could' . - ' not be created'); - } - - $file = $where . DIRECTORY_SEPARATOR . 'package.xml'; - if (file_exists($file) && !is_file($file)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: unable to save package.xml as' . - ' "' . $file .'"'); - } - - if (!$this->_packagefile->validate(PEAR_VALIDATE_PACKAGING)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: invalid package.xml'); - } - - $ext = $compress ? '.tgz' : '.tar'; - $pkgver = $this->_packagefile->getPackage() . '-' . $this->_packagefile->getVersion(); - $dest_package = getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext; - if (file_exists($dest_package) && !is_file($dest_package)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: cannot create tgz file "' . - $dest_package . '"'); - } - - $pkgfile = $this->_packagefile->getPackageFile(); - if (!$pkgfile) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: package file object must ' . - 'be created from a real file'); - } - - $pkgdir = dirname(realpath($pkgfile)); - $pkgfile = basename($pkgfile); - - // {{{ Create the package file list - $filelist = array(); - $i = 0; - $this->_packagefile->flattenFilelist(); - $contents = $this->_packagefile->getContents(); - if (isset($contents['bundledpackage'])) { // bundles of packages - $contents = $contents['bundledpackage']; - if (!isset($contents[0])) { - $contents = array($contents); - } - - $packageDir = $where; - foreach ($contents as $i => $package) { - $fname = $package; - $file = $pkgdir . DIRECTORY_SEPARATOR . $fname; - if (!file_exists($file)) { - return $packager->raiseError("File does not exist: $fname"); - } - - $tfile = $packageDir . DIRECTORY_SEPARATOR . $fname; - System::mkdir(array('-p', dirname($tfile))); - copy($file, $tfile); - $filelist[$i++] = $tfile; - $packager->log(2, "Adding package $fname"); - } - } else { // normal packages - $contents = $contents['dir']['file']; - if (!isset($contents[0])) { - $contents = array($contents); - } - - $packageDir = $where; - foreach ($contents as $i => $file) { - $fname = $file['attribs']['name']; - $atts = $file['attribs']; - $orig = $file; - $file = $pkgdir . DIRECTORY_SEPARATOR . $fname; - if (!file_exists($file)) { - return $packager->raiseError("File does not exist: $fname"); - } - - $origperms = fileperms($file); - $tfile = $packageDir . DIRECTORY_SEPARATOR . $fname; - unset($orig['attribs']); - if (count($orig)) { // file with tasks - // run any package-time tasks - $contents = file_get_contents($file); - foreach ($orig as $tag => $raw) { - $tag = str_replace( - array($this->_packagefile->getTasksNs() . ':', '-'), - array('', '_'), $tag); - $task = "PEAR_Task_$tag"; - $task = &new $task($this->_packagefile->_config, - $this->_packagefile->_logger, - PEAR_TASK_PACKAGE); - $task->init($raw, $atts, null); - $res = $task->startSession($this->_packagefile, $contents, $tfile); - if (!$res) { - continue; // skip this task - } - - if (PEAR::isError($res)) { - return $res; - } - - $contents = $res; // save changes - System::mkdir(array('-p', dirname($tfile))); - $wp = fopen($tfile, "wb"); - fwrite($wp, $contents); - fclose($wp); - } - } - - if (!file_exists($tfile)) { - System::mkdir(array('-p', dirname($tfile))); - copy($file, $tfile); - } - - chmod($tfile, $origperms); - $filelist[$i++] = $tfile; - $this->_packagefile->setFileAttribute($fname, 'md5sum', md5_file($tfile), $i - 1); - $packager->log(2, "Adding file $fname"); - } - } - // }}} - - $name = $pf1 !== null ? 'package2.xml' : 'package.xml'; - $packagexml = $this->toPackageFile($where, PEAR_VALIDATE_PACKAGING, $name); - if ($packagexml) { - $tar = new Archive_Tar($dest_package, $compress); - $tar->setErrorHandling(PEAR_ERROR_RETURN); // XXX Don't print errors - // ----- Creates with the package.xml file - $ok = $tar->createModify(array($packagexml), '', $where); - if (PEAR::isError($ok)) { - return $packager->raiseError($ok); - } elseif (!$ok) { - return $packager->raiseError('PEAR_Packagefile_v2::toTgz(): adding ' . $name . - ' failed'); - } - - // ----- Add the content of the package - if (!$tar->addModify($filelist, $pkgver, $where)) { - return $packager->raiseError( - 'PEAR_Packagefile_v2::toTgz(): tarball creation failed'); - } - - // add the package.xml version 1.0 - if ($pf1 !== null) { - $pfgen = &$pf1->getDefaultGenerator(); - $packagexml1 = $pfgen->toPackageFile($where, PEAR_VALIDATE_PACKAGING, 'package.xml', true); - if (!$tar->addModify(array($packagexml1), '', $where)) { - return $packager->raiseError( - 'PEAR_Packagefile_v2::toTgz(): adding package.xml failed'); - } - } - - return $dest_package; - } - } - - function toPackageFile($where = null, $state = PEAR_VALIDATE_NORMAL, $name = 'package.xml') - { - if (!$this->_packagefile->validate($state)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: invalid package.xml', - null, null, null, $this->_packagefile->getValidationWarnings()); - } - - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: "' . $where . '" could' . - ' not be created'); - } - - $newpkgfile = $where . DIRECTORY_SEPARATOR . $name; - $np = @fopen($newpkgfile, 'wb'); - if (!$np) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: unable to save ' . - "$name as $newpkgfile"); - } - fwrite($np, $this->toXml($state)); - fclose($np); - return $newpkgfile; - } - - function &toV2() - { - return $this->_packagefile; - } - - /** - * Return an XML document based on the package info (as returned - * by the PEAR_Common::infoFrom* methods). - * - * @return string XML data - */ - function toXml($state = PEAR_VALIDATE_NORMAL, $options = array()) - { - $this->_packagefile->setDate(date('Y-m-d')); - $this->_packagefile->setTime(date('H:i:s')); - if (!$this->_packagefile->validate($state)) { - return false; - } - - if (is_array($options)) { - $this->options = array_merge($this->_defaultOptions, $options); - } else { - $this->options = $this->_defaultOptions; - } - - $arr = $this->_packagefile->getArray(); - if (isset($arr['filelist'])) { - unset($arr['filelist']); - } - - if (isset($arr['_lastversion'])) { - unset($arr['_lastversion']); - } - - // Fix the notes a little bit - if (isset($arr['notes'])) { - // This trims out the indenting, needs fixing - $arr['notes'] = "\n" . trim($arr['notes']) . "\n"; - } - - if (isset($arr['changelog']) && !empty($arr['changelog'])) { - // Fix for inconsistency how the array is filled depending on the changelog release amount - if (!isset($arr['changelog']['release'][0])) { - $release = $arr['changelog']['release']; - unset($arr['changelog']['release']); - - $arr['changelog']['release'] = array(); - $arr['changelog']['release'][0] = $release; - } - - foreach (array_keys($arr['changelog']['release']) as $key) { - $c =& $arr['changelog']['release'][$key]; - if (isset($c['notes'])) { - // This trims out the indenting, needs fixing - $c['notes'] = "\n" . trim($c['notes']) . "\n"; - } - } - } - - if ($state ^ PEAR_VALIDATE_PACKAGING && !isset($arr['bundle'])) { - $use = $this->_recursiveXmlFilelist($arr['contents']['dir']['file']); - unset($arr['contents']['dir']['file']); - if (isset($use['dir'])) { - $arr['contents']['dir']['dir'] = $use['dir']; - } - if (isset($use['file'])) { - $arr['contents']['dir']['file'] = $use['file']; - } - $this->options['beautifyFilelist'] = true; - } - - $arr['attribs']['packagerversion'] = '1.9.4'; - if ($this->serialize($arr, $options)) { - return $this->_serializedData . "\n"; - } - - return false; - } - - - function _recursiveXmlFilelist($list) - { - $dirs = array(); - if (isset($list['attribs'])) { - $file = $list['attribs']['name']; - unset($list['attribs']['name']); - $attributes = $list['attribs']; - $this->_addDir($dirs, explode('/', dirname($file)), $file, $attributes); - } else { - foreach ($list as $a) { - $file = $a['attribs']['name']; - $attributes = $a['attribs']; - unset($a['attribs']); - $this->_addDir($dirs, explode('/', dirname($file)), $file, $attributes, $a); - } - } - $this->_formatDir($dirs); - $this->_deFormat($dirs); - return $dirs; - } - - function _addDir(&$dirs, $dir, $file = null, $attributes = null, $tasks = null) - { - if (!$tasks) { - $tasks = array(); - } - if ($dir == array() || $dir == array('.')) { - $dirs['file'][basename($file)] = $tasks; - $attributes['name'] = basename($file); - $dirs['file'][basename($file)]['attribs'] = $attributes; - return; - } - $curdir = array_shift($dir); - if (!isset($dirs['dir'][$curdir])) { - $dirs['dir'][$curdir] = array(); - } - $this->_addDir($dirs['dir'][$curdir], $dir, $file, $attributes, $tasks); - } - - function _formatDir(&$dirs) - { - if (!count($dirs)) { - return array(); - } - $newdirs = array(); - if (isset($dirs['dir'])) { - $newdirs['dir'] = $dirs['dir']; - } - if (isset($dirs['file'])) { - $newdirs['file'] = $dirs['file']; - } - $dirs = $newdirs; - if (isset($dirs['dir'])) { - uksort($dirs['dir'], 'strnatcasecmp'); - foreach ($dirs['dir'] as $dir => $contents) { - $this->_formatDir($dirs['dir'][$dir]); - } - } - if (isset($dirs['file'])) { - uksort($dirs['file'], 'strnatcasecmp'); - }; - } - - function _deFormat(&$dirs) - { - if (!count($dirs)) { - return array(); - } - $newdirs = array(); - if (isset($dirs['dir'])) { - foreach ($dirs['dir'] as $dir => $contents) { - $newdir = array(); - $newdir['attribs']['name'] = $dir; - $this->_deFormat($contents); - foreach ($contents as $tag => $val) { - $newdir[$tag] = $val; - } - $newdirs['dir'][] = $newdir; - } - if (count($newdirs['dir']) == 1) { - $newdirs['dir'] = $newdirs['dir'][0]; - } - } - if (isset($dirs['file'])) { - foreach ($dirs['file'] as $name => $file) { - $newdirs['file'][] = $file; - } - if (count($newdirs['file']) == 1) { - $newdirs['file'] = $newdirs['file'][0]; - } - } - $dirs = $newdirs; - } - - /** - * reset all options to default options - * - * @access public - * @see setOption(), XML_Unserializer() - */ - function resetOptions() - { - $this->options = $this->_defaultOptions; - } - - /** - * set an option - * - * You can use this method if you do not want to set all options in the constructor - * - * @access public - * @see resetOption(), XML_Serializer() - */ - function setOption($name, $value) - { - $this->options[$name] = $value; - } - - /** - * sets several options at once - * - * You can use this method if you do not want to set all options in the constructor - * - * @access public - * @see resetOption(), XML_Unserializer(), setOption() - */ - function setOptions($options) - { - $this->options = array_merge($this->options, $options); - } - - /** - * serialize data - * - * @access public - * @param mixed $data data to serialize - * @return boolean true on success, pear error on failure - */ - function serialize($data, $options = null) - { - // if options have been specified, use them instead - // of the previously defined ones - if (is_array($options)) { - $optionsBak = $this->options; - if (isset($options['overrideOptions']) && $options['overrideOptions'] == true) { - $this->options = array_merge($this->_defaultOptions, $options); - } else { - $this->options = array_merge($this->options, $options); - } - } else { - $optionsBak = null; - } - - // start depth is zero - $this->_tagDepth = 0; - $this->_serializedData = ''; - // serialize an array - if (is_array($data)) { - $tagName = isset($this->options['rootName']) ? $this->options['rootName'] : 'array'; - $this->_serializedData .= $this->_serializeArray($data, $tagName, $this->options['rootAttributes']); - } - - // add doctype declaration - if ($this->options['addDoctype'] === true) { - $this->_serializedData = XML_Util::getDoctypeDeclaration($tagName, $this->options['doctype']) - . $this->options['linebreak'] - . $this->_serializedData; - } - - // build xml declaration - if ($this->options['addDecl']) { - $atts = array(); - $encoding = isset($this->options['encoding']) ? $this->options['encoding'] : null; - $this->_serializedData = XML_Util::getXMLDeclaration('1.0', $encoding) - . $this->options['linebreak'] - . $this->_serializedData; - } - - - if ($optionsBak !== null) { - $this->options = $optionsBak; - } - - return true; - } - - /** - * get the result of the serialization - * - * @access public - * @return string serialized XML - */ - function getSerializedData() - { - if ($this->_serializedData === null) { - return $this->raiseError('No serialized data available. Use XML_Serializer::serialize() first.', XML_SERIALIZER_ERROR_NO_SERIALIZATION); - } - return $this->_serializedData; - } - - /** - * serialize any value - * - * This method checks for the type of the value and calls the appropriate method - * - * @access private - * @param mixed $value - * @param string $tagName - * @param array $attributes - * @return string - */ - function _serializeValue($value, $tagName = null, $attributes = array()) - { - if (is_array($value)) { - $xml = $this->_serializeArray($value, $tagName, $attributes); - } elseif (is_object($value)) { - $xml = $this->_serializeObject($value, $tagName); - } else { - $tag = array( - 'qname' => $tagName, - 'attributes' => $attributes, - 'content' => $value - ); - $xml = $this->_createXMLTag($tag); - } - return $xml; - } - - /** - * serialize an array - * - * @access private - * @param array $array array to serialize - * @param string $tagName name of the root tag - * @param array $attributes attributes for the root tag - * @return string $string serialized data - * @uses XML_Util::isValidName() to check, whether key has to be substituted - */ - function _serializeArray(&$array, $tagName = null, $attributes = array()) - { - $_content = null; - - /** - * check for special attributes - */ - if ($this->options['attributesArray'] !== null) { - if (isset($array[$this->options['attributesArray']])) { - $attributes = $array[$this->options['attributesArray']]; - unset($array[$this->options['attributesArray']]); - } - /** - * check for special content - */ - if ($this->options['contentName'] !== null) { - if (isset($array[$this->options['contentName']])) { - $_content = $array[$this->options['contentName']]; - unset($array[$this->options['contentName']]); - } - } - } - - /* - * if mode is set to simpleXML, check whether - * the array is associative or indexed - */ - if (is_array($array) && $this->options['mode'] == 'simplexml') { - $indexed = true; - if (!count($array)) { - $indexed = false; - } - foreach ($array as $key => $val) { - if (!is_int($key)) { - $indexed = false; - break; - } - } - - if ($indexed && $this->options['mode'] == 'simplexml') { - $string = ''; - foreach ($array as $key => $val) { - if ($this->options['beautifyFilelist'] && $tagName == 'dir') { - if (!isset($this->_curdir)) { - $this->_curdir = ''; - } - $savedir = $this->_curdir; - if (isset($val['attribs'])) { - if ($val['attribs']['name'] == '/') { - $this->_curdir = '/'; - } else { - if ($this->_curdir == '/') { - $this->_curdir = ''; - } - $this->_curdir .= '/' . $val['attribs']['name']; - } - } - } - $string .= $this->_serializeValue( $val, $tagName, $attributes); - if ($this->options['beautifyFilelist'] && $tagName == 'dir') { - $string .= ' '; - if (empty($savedir)) { - unset($this->_curdir); - } else { - $this->_curdir = $savedir; - } - } - - $string .= $this->options['linebreak']; - // do indentation - if ($this->options['indent'] !== null && $this->_tagDepth > 0) { - $string .= str_repeat($this->options['indent'], $this->_tagDepth); - } - } - return rtrim($string); - } - } - - if ($this->options['scalarAsAttributes'] === true) { - foreach ($array as $key => $value) { - if (is_scalar($value) && (XML_Util::isValidName($key) === true)) { - unset($array[$key]); - $attributes[$this->options['prependAttributes'].$key] = $value; - } - } - } - - // check for empty array => create empty tag - if (empty($array)) { - $tag = array( - 'qname' => $tagName, - 'content' => $_content, - 'attributes' => $attributes - ); - - } else { - $this->_tagDepth++; - $tmp = $this->options['linebreak']; - foreach ($array as $key => $value) { - // do indentation - if ($this->options['indent'] !== null && $this->_tagDepth > 0) { - $tmp .= str_repeat($this->options['indent'], $this->_tagDepth); - } - - // copy key - $origKey = $key; - // key cannot be used as tagname => use default tag - $valid = XML_Util::isValidName($key); - if (PEAR::isError($valid)) { - if ($this->options['classAsTagName'] && is_object($value)) { - $key = get_class($value); - } else { - $key = $this->options['defaultTagName']; - } - } - $atts = array(); - if ($this->options['typeHints'] === true) { - $atts[$this->options['typeAttribute']] = gettype($value); - if ($key !== $origKey) { - $atts[$this->options['keyAttribute']] = (string)$origKey; - } - - } - if ($this->options['beautifyFilelist'] && $key == 'dir') { - if (!isset($this->_curdir)) { - $this->_curdir = ''; - } - $savedir = $this->_curdir; - if (isset($value['attribs'])) { - if ($value['attribs']['name'] == '/') { - $this->_curdir = '/'; - } else { - $this->_curdir .= '/' . $value['attribs']['name']; - } - } - } - - if (is_string($value) && $value && ($value{strlen($value) - 1} == "\n")) { - $value .= str_repeat($this->options['indent'], $this->_tagDepth); - } - $tmp .= $this->_createXMLTag(array( - 'qname' => $key, - 'attributes' => $atts, - 'content' => $value ) - ); - if ($this->options['beautifyFilelist'] && $key == 'dir') { - if (isset($value['attribs'])) { - $tmp .= ' '; - if (empty($savedir)) { - unset($this->_curdir); - } else { - $this->_curdir = $savedir; - } - } - } - $tmp .= $this->options['linebreak']; - } - - $this->_tagDepth--; - if ($this->options['indent']!==null && $this->_tagDepth>0) { - $tmp .= str_repeat($this->options['indent'], $this->_tagDepth); - } - - if (trim($tmp) === '') { - $tmp = null; - } - - $tag = array( - 'qname' => $tagName, - 'content' => $tmp, - 'attributes' => $attributes - ); - } - if ($this->options['typeHints'] === true) { - if (!isset($tag['attributes'][$this->options['typeAttribute']])) { - $tag['attributes'][$this->options['typeAttribute']] = 'array'; - } - } - - $string = $this->_createXMLTag($tag, false); - return $string; - } - - /** - * create a tag from an array - * this method awaits an array in the following format - * array( - * 'qname' => $tagName, - * 'attributes' => array(), - * 'content' => $content, // optional - * 'namespace' => $namespace // optional - * 'namespaceUri' => $namespaceUri // optional - * ) - * - * @access private - * @param array $tag tag definition - * @param boolean $replaceEntities whether to replace XML entities in content or not - * @return string $string XML tag - */ - function _createXMLTag($tag, $replaceEntities = true) - { - if ($this->options['indentAttributes'] !== false) { - $multiline = true; - $indent = str_repeat($this->options['indent'], $this->_tagDepth); - - if ($this->options['indentAttributes'] == '_auto') { - $indent .= str_repeat(' ', (strlen($tag['qname'])+2)); - - } else { - $indent .= $this->options['indentAttributes']; - } - } else { - $indent = $multiline = false; - } - - if (is_array($tag['content'])) { - if (empty($tag['content'])) { - $tag['content'] = ''; - } - } elseif(is_scalar($tag['content']) && (string)$tag['content'] == '') { - $tag['content'] = ''; - } - - if (is_scalar($tag['content']) || is_null($tag['content'])) { - if ($this->options['encoding'] == 'UTF-8' && - version_compare(phpversion(), '5.0.0', 'lt') - ) { - $tag['content'] = utf8_encode($tag['content']); - } - - if ($replaceEntities === true) { - $replaceEntities = XML_UTIL_ENTITIES_XML; - } - - $tag = XML_Util::createTagFromArray($tag, $replaceEntities, $multiline, $indent, $this->options['linebreak']); - } elseif (is_array($tag['content'])) { - $tag = $this->_serializeArray($tag['content'], $tag['qname'], $tag['attributes']); - } elseif (is_object($tag['content'])) { - $tag = $this->_serializeObject($tag['content'], $tag['qname'], $tag['attributes']); - } elseif (is_resource($tag['content'])) { - settype($tag['content'], 'string'); - $tag = XML_Util::createTagFromArray($tag, $replaceEntities); - } - return $tag; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/PackageFile/Parser/v1.php b/3rdparty/PEAR/PackageFile/Parser/v1.php deleted file mode 100644 index 23395dc757a230e68b7273adc376fa444a82738e..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile/Parser/v1.php +++ /dev/null @@ -1,459 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: v1.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * package.xml abstraction class - */ -require_once 'PEAR/PackageFile/v1.php'; -/** - * Parser for package.xml version 1.0 - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: @PEAR-VER@ - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Parser_v1 -{ - var $_registry; - var $_config; - var $_logger; - /** - * BC hack to allow PEAR_Common::infoFromString() to sort of - * work with the version 2.0 format - there's no filelist though - * @param PEAR_PackageFile_v2 - */ - function fromV2($packagefile) - { - $info = $packagefile->getArray(true); - $ret = new PEAR_PackageFile_v1; - $ret->fromArray($info['old']); - } - - function setConfig(&$c) - { - $this->_config = &$c; - $this->_registry = &$c->getRegistry(); - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - - /** - * @param string contents of package.xml file, version 1.0 - * @return bool success of parsing - */ - function &parse($data, $file, $archive = false) - { - if (!extension_loaded('xml')) { - return PEAR::raiseError('Cannot create xml parser for parsing package.xml, no xml extension'); - } - $xp = xml_parser_create(); - if (!$xp) { - $a = &PEAR::raiseError('Cannot create xml parser for parsing package.xml'); - return $a; - } - xml_set_object($xp, $this); - xml_set_element_handler($xp, '_element_start_1_0', '_element_end_1_0'); - xml_set_character_data_handler($xp, '_pkginfo_cdata_1_0'); - xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, false); - - $this->element_stack = array(); - $this->_packageInfo = array('provides' => array()); - $this->current_element = false; - unset($this->dir_install); - $this->_packageInfo['filelist'] = array(); - $this->filelist =& $this->_packageInfo['filelist']; - $this->dir_names = array(); - $this->in_changelog = false; - $this->d_i = 0; - $this->cdata = ''; - $this->_isValid = true; - - if (!xml_parse($xp, $data, 1)) { - $code = xml_get_error_code($xp); - $line = xml_get_current_line_number($xp); - xml_parser_free($xp); - $a = &PEAR::raiseError(sprintf("XML error: %s at line %d", - $str = xml_error_string($code), $line), 2); - return $a; - } - - xml_parser_free($xp); - - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->_config); - if (isset($this->_logger)) { - $pf->setLogger($this->_logger); - } - $pf->setPackagefile($file, $archive); - $pf->fromArray($this->_packageInfo); - return $pf; - } - // {{{ _unIndent() - - /** - * Unindent given string - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } elseif (trim(substr($line, 0, $indent_len))) { - $data .= ltrim($line); - } - } - return $data; - } - - // Support for package DTD v1.0: - // {{{ _element_start_1_0() - - /** - * XML parser callback for ending elements. Used for version 1.0 - * packages. - * - * @param resource $xp XML parser resource - * @param string $name name of ending element - * - * @return void - * - * @access private - */ - function _element_start_1_0($xp, $name, $attribs) - { - array_push($this->element_stack, $name); - $this->current_element = $name; - $spos = sizeof($this->element_stack) - 2; - $this->prev_element = ($spos >= 0) ? $this->element_stack[$spos] : ''; - $this->current_attributes = $attribs; - $this->cdata = ''; - switch ($name) { - case 'dir': - if ($this->in_changelog) { - break; - } - if (array_key_exists('name', $attribs) && $attribs['name'] != '/') { - $attribs['name'] = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), - $attribs['name']); - if (strrpos($attribs['name'], '/') === strlen($attribs['name']) - 1) { - $attribs['name'] = substr($attribs['name'], 0, - strlen($attribs['name']) - 1); - } - if (strpos($attribs['name'], '/') === 0) { - $attribs['name'] = substr($attribs['name'], 1); - } - $this->dir_names[] = $attribs['name']; - } - if (isset($attribs['baseinstalldir'])) { - $this->dir_install = $attribs['baseinstalldir']; - } - if (isset($attribs['role'])) { - $this->dir_role = $attribs['role']; - } - break; - case 'file': - if ($this->in_changelog) { - break; - } - if (isset($attribs['name'])) { - $path = ''; - if (count($this->dir_names)) { - foreach ($this->dir_names as $dir) { - $path .= $dir . '/'; - } - } - $path .= preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), - $attribs['name']); - unset($attribs['name']); - $this->current_path = $path; - $this->filelist[$path] = $attribs; - // Set the baseinstalldir only if the file don't have this attrib - if (!isset($this->filelist[$path]['baseinstalldir']) && - isset($this->dir_install)) - { - $this->filelist[$path]['baseinstalldir'] = $this->dir_install; - } - // Set the Role - if (!isset($this->filelist[$path]['role']) && isset($this->dir_role)) { - $this->filelist[$path]['role'] = $this->dir_role; - } - } - break; - case 'replace': - if (!$this->in_changelog) { - $this->filelist[$this->current_path]['replacements'][] = $attribs; - } - break; - case 'maintainers': - $this->_packageInfo['maintainers'] = array(); - $this->m_i = 0; // maintainers array index - break; - case 'maintainer': - // compatibility check - if (!isset($this->_packageInfo['maintainers'])) { - $this->_packageInfo['maintainers'] = array(); - $this->m_i = 0; - } - $this->_packageInfo['maintainers'][$this->m_i] = array(); - $this->current_maintainer =& $this->_packageInfo['maintainers'][$this->m_i]; - break; - case 'changelog': - $this->_packageInfo['changelog'] = array(); - $this->c_i = 0; // changelog array index - $this->in_changelog = true; - break; - case 'release': - if ($this->in_changelog) { - $this->_packageInfo['changelog'][$this->c_i] = array(); - $this->current_release = &$this->_packageInfo['changelog'][$this->c_i]; - } else { - $this->current_release = &$this->_packageInfo; - } - break; - case 'deps': - if (!$this->in_changelog) { - $this->_packageInfo['release_deps'] = array(); - } - break; - case 'dep': - // dependencies array index - if (!$this->in_changelog) { - $this->d_i++; - isset($attribs['type']) ? ($attribs['type'] = strtolower($attribs['type'])) : false; - $this->_packageInfo['release_deps'][$this->d_i] = $attribs; - } - break; - case 'configureoptions': - if (!$this->in_changelog) { - $this->_packageInfo['configure_options'] = array(); - } - break; - case 'configureoption': - if (!$this->in_changelog) { - $this->_packageInfo['configure_options'][] = $attribs; - } - break; - case 'provides': - if (empty($attribs['type']) || empty($attribs['name'])) { - break; - } - $attribs['explicit'] = true; - $this->_packageInfo['provides']["$attribs[type];$attribs[name]"] = $attribs; - break; - case 'package' : - if (isset($attribs['version'])) { - $this->_packageInfo['xsdversion'] = trim($attribs['version']); - } else { - $this->_packageInfo['xsdversion'] = '1.0'; - } - if (isset($attribs['packagerversion'])) { - $this->_packageInfo['packagerversion'] = $attribs['packagerversion']; - } - break; - } - } - - // }}} - // {{{ _element_end_1_0() - - /** - * XML parser callback for ending elements. Used for version 1.0 - * packages. - * - * @param resource $xp XML parser resource - * @param string $name name of ending element - * - * @return void - * - * @access private - */ - function _element_end_1_0($xp, $name) - { - $data = trim($this->cdata); - switch ($name) { - case 'name': - switch ($this->prev_element) { - case 'package': - $this->_packageInfo['package'] = $data; - break; - case 'maintainer': - $this->current_maintainer['name'] = $data; - break; - } - break; - case 'extends' : - $this->_packageInfo['extends'] = $data; - break; - case 'summary': - $this->_packageInfo['summary'] = $data; - break; - case 'description': - $data = $this->_unIndent($this->cdata); - $this->_packageInfo['description'] = $data; - break; - case 'user': - $this->current_maintainer['handle'] = $data; - break; - case 'email': - $this->current_maintainer['email'] = $data; - break; - case 'role': - $this->current_maintainer['role'] = $data; - break; - case 'version': - if ($this->in_changelog) { - $this->current_release['version'] = $data; - } else { - $this->_packageInfo['version'] = $data; - } - break; - case 'date': - if ($this->in_changelog) { - $this->current_release['release_date'] = $data; - } else { - $this->_packageInfo['release_date'] = $data; - } - break; - case 'notes': - // try to "de-indent" release notes in case someone - // has been over-indenting their xml ;-) - // Trim only on the right side - $data = rtrim($this->_unIndent($this->cdata)); - if ($this->in_changelog) { - $this->current_release['release_notes'] = $data; - } else { - $this->_packageInfo['release_notes'] = $data; - } - break; - case 'warnings': - if ($this->in_changelog) { - $this->current_release['release_warnings'] = $data; - } else { - $this->_packageInfo['release_warnings'] = $data; - } - break; - case 'state': - if ($this->in_changelog) { - $this->current_release['release_state'] = $data; - } else { - $this->_packageInfo['release_state'] = $data; - } - break; - case 'license': - if ($this->in_changelog) { - $this->current_release['release_license'] = $data; - } else { - $this->_packageInfo['release_license'] = $data; - } - break; - case 'dep': - if ($data && !$this->in_changelog) { - $this->_packageInfo['release_deps'][$this->d_i]['name'] = $data; - } - break; - case 'dir': - if ($this->in_changelog) { - break; - } - array_pop($this->dir_names); - break; - case 'file': - if ($this->in_changelog) { - break; - } - if ($data) { - $path = ''; - if (count($this->dir_names)) { - foreach ($this->dir_names as $dir) { - $path .= $dir . '/'; - } - } - $path .= $data; - $this->filelist[$path] = $this->current_attributes; - // Set the baseinstalldir only if the file don't have this attrib - if (!isset($this->filelist[$path]['baseinstalldir']) && - isset($this->dir_install)) - { - $this->filelist[$path]['baseinstalldir'] = $this->dir_install; - } - // Set the Role - if (!isset($this->filelist[$path]['role']) && isset($this->dir_role)) { - $this->filelist[$path]['role'] = $this->dir_role; - } - } - break; - case 'maintainer': - if (empty($this->_packageInfo['maintainers'][$this->m_i]['role'])) { - $this->_packageInfo['maintainers'][$this->m_i]['role'] = 'lead'; - } - $this->m_i++; - break; - case 'release': - if ($this->in_changelog) { - $this->c_i++; - } - break; - case 'changelog': - $this->in_changelog = false; - break; - } - array_pop($this->element_stack); - $spos = sizeof($this->element_stack) - 1; - $this->current_element = ($spos > 0) ? $this->element_stack[$spos] : ''; - $this->cdata = ''; - } - - // }}} - // {{{ _pkginfo_cdata_1_0() - - /** - * XML parser callback for character data. Used for version 1.0 - * packages. - * - * @param resource $xp XML parser resource - * @param string $name character data - * - * @return void - * - * @access private - */ - function _pkginfo_cdata_1_0($xp, $data) - { - if (isset($this->cdata)) { - $this->cdata .= $data; - } - } - - // }}} -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/PackageFile/Parser/v2.php b/3rdparty/PEAR/PackageFile/Parser/v2.php deleted file mode 100644 index a3ba7063f2b481549a2e7a66a3fd0f078e9affaa..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile/Parser/v2.php +++ /dev/null @@ -1,113 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: v2.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * base xml parser class - */ -require_once 'PEAR/XMLParser.php'; -require_once 'PEAR/PackageFile/v2.php'; -/** - * Parser for package.xml version 2.0 - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: @PEAR-VER@ - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Parser_v2 extends PEAR_XMLParser -{ - var $_config; - var $_logger; - var $_registry; - - function setConfig(&$c) - { - $this->_config = &$c; - $this->_registry = &$c->getRegistry(); - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - /** - * Unindent given string - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } else { - $data .= $line . "\n"; - } - } - return $data; - } - - /** - * post-process data - * - * @param string $data - * @param string $element element name - */ - function postProcess($data, $element) - { - if ($element == 'notes') { - return trim($this->_unIndent($data)); - } - return trim($data); - } - - /** - * @param string - * @param string file name of the package.xml - * @param string|false name of the archive this package.xml came from, if any - * @param string class name to instantiate and return. This must be PEAR_PackageFile_v2 or - * a subclass - * @return PEAR_PackageFile_v2 - */ - function &parse($data, $file, $archive = false, $class = 'PEAR_PackageFile_v2') - { - if (PEAR::isError($err = parent::parse($data, $file))) { - return $err; - } - - $ret = new $class; - $ret->encoding = $this->encoding; - $ret->setConfig($this->_config); - if (isset($this->_logger)) { - $ret->setLogger($this->_logger); - } - - $ret->fromArray($this->_unserializedData); - $ret->setPackagefile($file, $archive); - return $ret; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/PackageFile/v1.php b/3rdparty/PEAR/PackageFile/v1.php deleted file mode 100644 index 43e346bcdac9adabe0d17e39953a06150d376341..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile/v1.php +++ /dev/null @@ -1,1612 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: v1.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * For error handling - */ -require_once 'PEAR/ErrorStack.php'; - -/** - * Error code if parsing is attempted with no xml extension - */ -define('PEAR_PACKAGEFILE_ERROR_NO_XML_EXT', 3); - -/** - * Error code if creating the xml parser resource fails - */ -define('PEAR_PACKAGEFILE_ERROR_CANT_MAKE_PARSER', 4); - -/** - * Error code used for all sax xml parsing errors - */ -define('PEAR_PACKAGEFILE_ERROR_PARSER_ERROR', 5); - -/** - * Error code used when there is no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_NAME', 6); - -/** - * Error code when a package name is not valid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_NAME', 7); - -/** - * Error code used when no summary is parsed - */ -define('PEAR_PACKAGEFILE_ERROR_NO_SUMMARY', 8); - -/** - * Error code for summaries that are more than 1 line - */ -define('PEAR_PACKAGEFILE_ERROR_MULTILINE_SUMMARY', 9); - -/** - * Error code used when no description is present - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DESCRIPTION', 10); - -/** - * Error code used when no license is present - */ -define('PEAR_PACKAGEFILE_ERROR_NO_LICENSE', 11); - -/** - * Error code used when a version number is not present - */ -define('PEAR_PACKAGEFILE_ERROR_NO_VERSION', 12); - -/** - * Error code used when a version number is invalid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_VERSION', 13); - -/** - * Error code when release state is missing - */ -define('PEAR_PACKAGEFILE_ERROR_NO_STATE', 14); - -/** - * Error code when release state is invalid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_STATE', 15); - -/** - * Error code when release state is missing - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DATE', 16); - -/** - * Error code when release state is invalid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DATE', 17); - -/** - * Error code when no release notes are found - */ -define('PEAR_PACKAGEFILE_ERROR_NO_NOTES', 18); - -/** - * Error code when no maintainers are found - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTAINERS', 19); - -/** - * Error code when a maintainer has no handle - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTHANDLE', 20); - -/** - * Error code when a maintainer has no handle - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTROLE', 21); - -/** - * Error code when a maintainer has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTNAME', 22); - -/** - * Error code when a maintainer has no email - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTEMAIL', 23); - -/** - * Error code when a maintainer has no handle - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_MAINTROLE', 24); - -/** - * Error code when a dependency is not a PHP dependency, but has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPNAME', 25); - -/** - * Error code when a dependency has no type (pkg, php, etc.) - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPTYPE', 26); - -/** - * Error code when a dependency has no relation (lt, ge, has, etc.) - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPREL', 27); - -/** - * Error code when a dependency is not a 'has' relation, but has no version - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPVERSION', 28); - -/** - * Error code when a dependency has an invalid relation - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPREL', 29); - -/** - * Error code when a dependency has an invalid type - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPTYPE', 30); - -/** - * Error code when a dependency has an invalid optional option - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPOPTIONAL', 31); - -/** - * Error code when a dependency is a pkg dependency, and has an invalid package name - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPNAME', 32); - -/** - * Error code when a dependency has a channel="foo" attribute, and foo is not a registered channel - */ -define('PEAR_PACKAGEFILE_ERROR_UNKNOWN_DEPCHANNEL', 33); - -/** - * Error code when rel="has" and version attribute is present. - */ -define('PEAR_PACKAGEFILE_ERROR_DEPVERSION_IGNORED', 34); - -/** - * Error code when type="php" and dependency name is present - */ -define('PEAR_PACKAGEFILE_ERROR_DEPNAME_IGNORED', 35); - -/** - * Error code when a configure option has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_CONFNAME', 36); - -/** - * Error code when a configure option has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_CONFPROMPT', 37); - -/** - * Error code when a file in the filelist has an invalid role - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_FILEROLE', 38); - -/** - * Error code when a file in the filelist has no role - */ -define('PEAR_PACKAGEFILE_ERROR_NO_FILEROLE', 39); - -/** - * Error code when analyzing a php source file that has parse errors - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE', 40); - -/** - * Error code when analyzing a php source file reveals a source element - * without a package name prefix - */ -define('PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX', 41); - -/** - * Error code when an unknown channel is specified - */ -define('PEAR_PACKAGEFILE_ERROR_UNKNOWN_CHANNEL', 42); - -/** - * Error code when no files are found in the filelist - */ -define('PEAR_PACKAGEFILE_ERROR_NO_FILES', 43); - -/** - * Error code when a file is not valid php according to _analyzeSourceCode() - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_FILE', 44); - -/** - * Error code when the channel validator returns an error or warning - */ -define('PEAR_PACKAGEFILE_ERROR_CHANNELVAL', 45); - -/** - * Error code when a php5 package is packaged in php4 (analysis doesn't work) - */ -define('PEAR_PACKAGEFILE_ERROR_PHP5', 46); - -/** - * Error code when a file is listed in package.xml but does not exist - */ -define('PEAR_PACKAGEFILE_ERROR_FILE_NOTFOUND', 47); - -/** - * Error code when a - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_v1 -{ - /** - * @access private - * @var PEAR_ErrorStack - * @access private - */ - var $_stack; - - /** - * A registry object, used to access the package name validation regex for non-standard channels - * @var PEAR_Registry - * @access private - */ - var $_registry; - - /** - * An object that contains a log method that matches PEAR_Common::log's signature - * @var object - * @access private - */ - var $_logger; - - /** - * Parsed package information - * @var array - * @access private - */ - var $_packageInfo; - - /** - * path to package.xml - * @var string - * @access private - */ - var $_packageFile; - - /** - * path to package .tgz or false if this is a local/extracted package.xml - * @var string - * @access private - */ - var $_archiveFile; - - /** - * @var int - * @access private - */ - var $_isValid = 0; - - /** - * Determines whether this packagefile was initialized only with partial package info - * - * If this package file was constructed via parsing REST, it will only contain - * - * - package name - * - channel name - * - dependencies - * @var boolean - * @access private - */ - var $_incomplete = true; - - /** - * @param bool determines whether to return a PEAR_Error object, or use the PEAR_ErrorStack - * @param string Name of Error Stack class to use. - */ - function PEAR_PackageFile_v1() - { - $this->_stack = &new PEAR_ErrorStack('PEAR_PackageFile_v1'); - $this->_stack->setErrorMessageTemplate($this->_getErrorMessage()); - $this->_isValid = 0; - } - - function installBinary($installer) - { - return false; - } - - function isExtension($name) - { - return false; - } - - function setConfig(&$config) - { - $this->_config = &$config; - $this->_registry = &$config->getRegistry(); - } - - function setRequestedGroup() - { - // placeholder - } - - /** - * For saving in the registry. - * - * Set the last version that was installed - * @param string - */ - function setLastInstalledVersion($version) - { - $this->_packageInfo['_lastversion'] = $version; - } - - /** - * @return string|false - */ - function getLastInstalledVersion() - { - if (isset($this->_packageInfo['_lastversion'])) { - return $this->_packageInfo['_lastversion']; - } - return false; - } - - function getInstalledBinary() - { - return false; - } - - function listPostinstallScripts() - { - return false; - } - - function initPostinstallScripts() - { - return false; - } - - function setLogger(&$logger) - { - if ($logger && (!is_object($logger) || !method_exists($logger, 'log'))) { - return PEAR::raiseError('Logger must be compatible with PEAR_Common::log'); - } - $this->_logger = &$logger; - } - - function setPackagefile($file, $archive = false) - { - $this->_packageFile = $file; - $this->_archiveFile = $archive ? $archive : $file; - } - - function getPackageFile() - { - return isset($this->_packageFile) ? $this->_packageFile : false; - } - - function getPackageType() - { - return 'php'; - } - - function getArchiveFile() - { - return $this->_archiveFile; - } - - function packageInfo($field) - { - if (!is_string($field) || empty($field) || - !isset($this->_packageInfo[$field])) { - return false; - } - return $this->_packageInfo[$field]; - } - - function setDirtree($path) - { - if (!isset($this->_packageInfo['dirtree'])) { - $this->_packageInfo['dirtree'] = array(); - } - $this->_packageInfo['dirtree'][$path] = true; - } - - function getDirtree() - { - if (isset($this->_packageInfo['dirtree']) && count($this->_packageInfo['dirtree'])) { - return $this->_packageInfo['dirtree']; - } - return false; - } - - function resetDirtree() - { - unset($this->_packageInfo['dirtree']); - } - - function fromArray($pinfo) - { - $this->_incomplete = false; - $this->_packageInfo = $pinfo; - } - - function isIncomplete() - { - return $this->_incomplete; - } - - function getChannel() - { - return 'pear.php.net'; - } - - function getUri() - { - return false; - } - - function getTime() - { - return false; - } - - function getExtends() - { - if (isset($this->_packageInfo['extends'])) { - return $this->_packageInfo['extends']; - } - return false; - } - - /** - * @return array - */ - function toArray() - { - if (!$this->validate(PEAR_VALIDATE_NORMAL)) { - return false; - } - return $this->getArray(); - } - - function getArray() - { - return $this->_packageInfo; - } - - function getName() - { - return $this->getPackage(); - } - - function getPackage() - { - if (isset($this->_packageInfo['package'])) { - return $this->_packageInfo['package']; - } - return false; - } - - /** - * WARNING - don't use this unless you know what you are doing - */ - function setRawPackage($package) - { - $this->_packageInfo['package'] = $package; - } - - function setPackage($package) - { - $this->_packageInfo['package'] = $package; - $this->_isValid = false; - } - - function getVersion() - { - if (isset($this->_packageInfo['version'])) { - return $this->_packageInfo['version']; - } - return false; - } - - function setVersion($version) - { - $this->_packageInfo['version'] = $version; - $this->_isValid = false; - } - - function clearMaintainers() - { - unset($this->_packageInfo['maintainers']); - } - - function getMaintainers() - { - if (isset($this->_packageInfo['maintainers'])) { - return $this->_packageInfo['maintainers']; - } - return false; - } - - /** - * Adds a new maintainer - no checking of duplicates is performed, use - * updatemaintainer for that purpose. - */ - function addMaintainer($role, $handle, $name, $email) - { - $this->_packageInfo['maintainers'][] = - array('handle' => $handle, 'role' => $role, 'email' => $email, 'name' => $name); - $this->_isValid = false; - } - - function updateMaintainer($role, $handle, $name, $email) - { - $found = false; - if (!isset($this->_packageInfo['maintainers']) || - !is_array($this->_packageInfo['maintainers'])) { - return $this->addMaintainer($role, $handle, $name, $email); - } - foreach ($this->_packageInfo['maintainers'] as $i => $maintainer) { - if ($maintainer['handle'] == $handle) { - $found = $i; - break; - } - } - if ($found !== false) { - unset($this->_packageInfo['maintainers'][$found]); - $this->_packageInfo['maintainers'] = - array_values($this->_packageInfo['maintainers']); - } - $this->addMaintainer($role, $handle, $name, $email); - } - - function deleteMaintainer($handle) - { - $found = false; - foreach ($this->_packageInfo['maintainers'] as $i => $maintainer) { - if ($maintainer['handle'] == $handle) { - $found = $i; - break; - } - } - if ($found !== false) { - unset($this->_packageInfo['maintainers'][$found]); - $this->_packageInfo['maintainers'] = - array_values($this->_packageInfo['maintainers']); - return true; - } - return false; - } - - function getState() - { - if (isset($this->_packageInfo['release_state'])) { - return $this->_packageInfo['release_state']; - } - return false; - } - - function setRawState($state) - { - $this->_packageInfo['release_state'] = $state; - } - - function setState($state) - { - $this->_packageInfo['release_state'] = $state; - $this->_isValid = false; - } - - function getDate() - { - if (isset($this->_packageInfo['release_date'])) { - return $this->_packageInfo['release_date']; - } - return false; - } - - function setDate($date) - { - $this->_packageInfo['release_date'] = $date; - $this->_isValid = false; - } - - function getLicense() - { - if (isset($this->_packageInfo['release_license'])) { - return $this->_packageInfo['release_license']; - } - return false; - } - - function setLicense($date) - { - $this->_packageInfo['release_license'] = $date; - $this->_isValid = false; - } - - function getSummary() - { - if (isset($this->_packageInfo['summary'])) { - return $this->_packageInfo['summary']; - } - return false; - } - - function setSummary($summary) - { - $this->_packageInfo['summary'] = $summary; - $this->_isValid = false; - } - - function getDescription() - { - if (isset($this->_packageInfo['description'])) { - return $this->_packageInfo['description']; - } - return false; - } - - function setDescription($desc) - { - $this->_packageInfo['description'] = $desc; - $this->_isValid = false; - } - - function getNotes() - { - if (isset($this->_packageInfo['release_notes'])) { - return $this->_packageInfo['release_notes']; - } - return false; - } - - function setNotes($notes) - { - $this->_packageInfo['release_notes'] = $notes; - $this->_isValid = false; - } - - function getDeps() - { - if (isset($this->_packageInfo['release_deps'])) { - return $this->_packageInfo['release_deps']; - } - return false; - } - - /** - * Reset dependencies prior to adding new ones - */ - function clearDeps() - { - unset($this->_packageInfo['release_deps']); - } - - function addPhpDep($version, $rel) - { - $this->_isValid = false; - $this->_packageInfo['release_deps'][] = - array('type' => 'php', - 'rel' => $rel, - 'version' => $version); - } - - function addPackageDep($name, $version, $rel, $optional = 'no') - { - $this->_isValid = false; - $dep = - array('type' => 'pkg', - 'name' => $name, - 'rel' => $rel, - 'optional' => $optional); - if ($rel != 'has' && $rel != 'not') { - $dep['version'] = $version; - } - $this->_packageInfo['release_deps'][] = $dep; - } - - function addExtensionDep($name, $version, $rel, $optional = 'no') - { - $this->_isValid = false; - $this->_packageInfo['release_deps'][] = - array('type' => 'ext', - 'name' => $name, - 'rel' => $rel, - 'version' => $version, - 'optional' => $optional); - } - - /** - * WARNING - do not use this function directly unless you know what you're doing - */ - function setDeps($deps) - { - $this->_packageInfo['release_deps'] = $deps; - } - - function hasDeps() - { - return isset($this->_packageInfo['release_deps']) && - count($this->_packageInfo['release_deps']); - } - - function getDependencyGroup($group) - { - return false; - } - - function isCompatible($pf) - { - return false; - } - - function isSubpackageOf($p) - { - return $p->isSubpackage($this); - } - - function isSubpackage($p) - { - return false; - } - - function dependsOn($package, $channel) - { - if (strtolower($channel) != 'pear.php.net') { - return false; - } - if (!($deps = $this->getDeps())) { - return false; - } - foreach ($deps as $dep) { - if ($dep['type'] != 'pkg') { - continue; - } - if (strtolower($dep['name']) == strtolower($package)) { - return true; - } - } - return false; - } - - function getConfigureOptions() - { - if (isset($this->_packageInfo['configure_options'])) { - return $this->_packageInfo['configure_options']; - } - return false; - } - - function hasConfigureOptions() - { - return isset($this->_packageInfo['configure_options']) && - count($this->_packageInfo['configure_options']); - } - - function addConfigureOption($name, $prompt, $default = false) - { - $o = array('name' => $name, 'prompt' => $prompt); - if ($default !== false) { - $o['default'] = $default; - } - if (!isset($this->_packageInfo['configure_options'])) { - $this->_packageInfo['configure_options'] = array(); - } - $this->_packageInfo['configure_options'][] = $o; - } - - function clearConfigureOptions() - { - unset($this->_packageInfo['configure_options']); - } - - function getProvides() - { - if (isset($this->_packageInfo['provides'])) { - return $this->_packageInfo['provides']; - } - return false; - } - - function getProvidesExtension() - { - return false; - } - - function addFile($dir, $file, $attrs) - { - $dir = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), $dir); - if ($dir == '/' || $dir == '') { - $dir = ''; - } else { - $dir .= '/'; - } - $file = $dir . $file; - $file = preg_replace('![\\/]+!', '/', $file); - $this->_packageInfo['filelist'][$file] = $attrs; - } - - function getInstallationFilelist() - { - return $this->getFilelist(); - } - - function getFilelist() - { - if (isset($this->_packageInfo['filelist'])) { - return $this->_packageInfo['filelist']; - } - return false; - } - - function setFileAttribute($file, $attr, $value) - { - $this->_packageInfo['filelist'][$file][$attr] = $value; - } - - function resetFilelist() - { - $this->_packageInfo['filelist'] = array(); - } - - function setInstalledAs($file, $path) - { - if ($path) { - return $this->_packageInfo['filelist'][$file]['installed_as'] = $path; - } - unset($this->_packageInfo['filelist'][$file]['installed_as']); - } - - function installedFile($file, $atts) - { - if (isset($this->_packageInfo['filelist'][$file])) { - $this->_packageInfo['filelist'][$file] = - array_merge($this->_packageInfo['filelist'][$file], $atts); - } else { - $this->_packageInfo['filelist'][$file] = $atts; - } - } - - function getChangelog() - { - if (isset($this->_packageInfo['changelog'])) { - return $this->_packageInfo['changelog']; - } - return false; - } - - function getPackagexmlVersion() - { - return '1.0'; - } - - /** - * Wrapper to {@link PEAR_ErrorStack::getErrors()} - * @param boolean determines whether to purge the error stack after retrieving - * @return array - */ - function getValidationWarnings($purge = true) - { - return $this->_stack->getErrors($purge); - } - - // }}} - /** - * Validation error. Also marks the object contents as invalid - * @param error code - * @param array error information - * @access private - */ - function _validateError($code, $params = array()) - { - $this->_stack->push($code, 'error', $params, false, false, debug_backtrace()); - $this->_isValid = false; - } - - /** - * Validation warning. Does not mark the object contents invalid. - * @param error code - * @param array error information - * @access private - */ - function _validateWarning($code, $params = array()) - { - $this->_stack->push($code, 'warning', $params, false, false, debug_backtrace()); - } - - /** - * @param integer error code - * @access protected - */ - function _getErrorMessage() - { - return array( - PEAR_PACKAGEFILE_ERROR_NO_NAME => - 'Missing Package Name', - PEAR_PACKAGEFILE_ERROR_NO_SUMMARY => - 'No summary found', - PEAR_PACKAGEFILE_ERROR_MULTILINE_SUMMARY => - 'Summary should be on one line', - PEAR_PACKAGEFILE_ERROR_NO_DESCRIPTION => - 'Missing description', - PEAR_PACKAGEFILE_ERROR_NO_LICENSE => - 'Missing license', - PEAR_PACKAGEFILE_ERROR_NO_VERSION => - 'No release version found', - PEAR_PACKAGEFILE_ERROR_NO_STATE => - 'No release state found', - PEAR_PACKAGEFILE_ERROR_NO_DATE => - 'No release date found', - PEAR_PACKAGEFILE_ERROR_NO_NOTES => - 'No release notes found', - PEAR_PACKAGEFILE_ERROR_NO_LEAD => - 'Package must have at least one lead maintainer', - PEAR_PACKAGEFILE_ERROR_NO_MAINTAINERS => - 'No maintainers found, at least one must be defined', - PEAR_PACKAGEFILE_ERROR_NO_MAINTHANDLE => - 'Maintainer %index% has no handle (user ID at channel server)', - PEAR_PACKAGEFILE_ERROR_NO_MAINTROLE => - 'Maintainer %index% has no role', - PEAR_PACKAGEFILE_ERROR_NO_MAINTNAME => - 'Maintainer %index% has no name', - PEAR_PACKAGEFILE_ERROR_NO_MAINTEMAIL => - 'Maintainer %index% has no email', - PEAR_PACKAGEFILE_ERROR_NO_DEPNAME => - 'Dependency %index% is not a php dependency, and has no name', - PEAR_PACKAGEFILE_ERROR_NO_DEPREL => - 'Dependency %index% has no relation (rel)', - PEAR_PACKAGEFILE_ERROR_NO_DEPTYPE => - 'Dependency %index% has no type', - PEAR_PACKAGEFILE_ERROR_DEPNAME_IGNORED => - 'PHP Dependency %index% has a name attribute of "%name%" which will be' . - ' ignored!', - PEAR_PACKAGEFILE_ERROR_NO_DEPVERSION => - 'Dependency %index% is not a rel="has" or rel="not" dependency, ' . - 'and has no version', - PEAR_PACKAGEFILE_ERROR_NO_DEPPHPVERSION => - 'Dependency %index% is a type="php" dependency, ' . - 'and has no version', - PEAR_PACKAGEFILE_ERROR_DEPVERSION_IGNORED => - 'Dependency %index% is a rel="%rel%" dependency, versioning is ignored', - PEAR_PACKAGEFILE_ERROR_INVALID_DEPOPTIONAL => - 'Dependency %index% has invalid optional value "%opt%", should be yes or no', - PEAR_PACKAGEFILE_PHP_NO_NOT => - 'Dependency %index%: php dependencies cannot use "not" rel, use "ne"' . - ' to exclude specific versions', - PEAR_PACKAGEFILE_ERROR_NO_CONFNAME => - 'Configure Option %index% has no name', - PEAR_PACKAGEFILE_ERROR_NO_CONFPROMPT => - 'Configure Option %index% has no prompt', - PEAR_PACKAGEFILE_ERROR_NO_FILES => - 'No files in section of package.xml', - PEAR_PACKAGEFILE_ERROR_NO_FILEROLE => - 'File "%file%" has no role, expecting one of "%roles%"', - PEAR_PACKAGEFILE_ERROR_INVALID_FILEROLE => - 'File "%file%" has invalid role "%role%", expecting one of "%roles%"', - PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME => - 'File "%file%" cannot start with ".", cannot package or install', - PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE => - 'Parser error: invalid PHP found in file "%file%"', - PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX => - 'in %file%: %type% "%name%" not prefixed with package name "%package%"', - PEAR_PACKAGEFILE_ERROR_INVALID_FILE => - 'Parser error: invalid PHP file "%file%"', - PEAR_PACKAGEFILE_ERROR_CHANNELVAL => - 'Channel validator error: field "%field%" - %reason%', - PEAR_PACKAGEFILE_ERROR_PHP5 => - 'Error, PHP5 token encountered in %file%, analysis should be in PHP5', - PEAR_PACKAGEFILE_ERROR_FILE_NOTFOUND => - 'File "%file%" in package.xml does not exist', - PEAR_PACKAGEFILE_ERROR_NON_ISO_CHARS => - 'Package.xml contains non-ISO-8859-1 characters, and may not validate', - ); - } - - /** - * Validate XML package definition file. - * - * @access public - * @return boolean - */ - function validate($state = PEAR_VALIDATE_NORMAL, $nofilechecking = false) - { - if (($this->_isValid & $state) == $state) { - return true; - } - $this->_isValid = true; - $info = $this->_packageInfo; - if (empty($info['package'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_NAME); - $this->_packageName = $pn = 'unknown'; - } else { - $this->_packageName = $pn = $info['package']; - } - - if (empty($info['summary'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_SUMMARY); - } elseif (strpos(trim($info['summary']), "\n") !== false) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_MULTILINE_SUMMARY, - array('summary' => $info['summary'])); - } - if (empty($info['description'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DESCRIPTION); - } - if (empty($info['release_license'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_LICENSE); - } - if (empty($info['version'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_VERSION); - } - if (empty($info['release_state'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_STATE); - } - if (empty($info['release_date'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DATE); - } - if (empty($info['release_notes'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_NOTES); - } - if (empty($info['maintainers'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTAINERS); - } else { - $haslead = false; - $i = 1; - foreach ($info['maintainers'] as $m) { - if (empty($m['handle'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTHANDLE, - array('index' => $i)); - } - if (empty($m['role'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTROLE, - array('index' => $i, 'roles' => PEAR_Common::getUserRoles())); - } elseif ($m['role'] == 'lead') { - $haslead = true; - } - if (empty($m['name'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTNAME, - array('index' => $i)); - } - if (empty($m['email'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTEMAIL, - array('index' => $i)); - } - $i++; - } - if (!$haslead) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_LEAD); - } - } - if (!empty($info['release_deps'])) { - $i = 1; - foreach ($info['release_deps'] as $d) { - if (!isset($d['type']) || empty($d['type'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPTYPE, - array('index' => $i, 'types' => PEAR_Common::getDependencyTypes())); - continue; - } - if (!isset($d['rel']) || empty($d['rel'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPREL, - array('index' => $i, 'rels' => PEAR_Common::getDependencyRelations())); - continue; - } - if (!empty($d['optional'])) { - if (!in_array($d['optional'], array('yes', 'no'))) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_DEPOPTIONAL, - array('index' => $i, 'opt' => $d['optional'])); - } - } - if ($d['rel'] != 'has' && $d['rel'] != 'not' && empty($d['version'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPVERSION, - array('index' => $i)); - } elseif (($d['rel'] == 'has' || $d['rel'] == 'not') && !empty($d['version'])) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_DEPVERSION_IGNORED, - array('index' => $i, 'rel' => $d['rel'])); - } - if ($d['type'] == 'php' && !empty($d['name'])) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_DEPNAME_IGNORED, - array('index' => $i, 'name' => $d['name'])); - } elseif ($d['type'] != 'php' && empty($d['name'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPNAME, - array('index' => $i)); - } - if ($d['type'] == 'php' && empty($d['version'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPPHPVERSION, - array('index' => $i)); - } - if (($d['rel'] == 'not') && ($d['type'] == 'php')) { - $this->_validateError(PEAR_PACKAGEFILE_PHP_NO_NOT, - array('index' => $i)); - } - $i++; - } - } - if (!empty($info['configure_options'])) { - $i = 1; - foreach ($info['configure_options'] as $c) { - if (empty($c['name'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_CONFNAME, - array('index' => $i)); - } - if (empty($c['prompt'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_CONFPROMPT, - array('index' => $i)); - } - $i++; - } - } - if (empty($info['filelist'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_FILES); - $errors[] = 'no files'; - } else { - foreach ($info['filelist'] as $file => $fa) { - if (empty($fa['role'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_FILEROLE, - array('file' => $file, 'roles' => PEAR_Common::getFileRoles())); - continue; - } elseif (!in_array($fa['role'], PEAR_Common::getFileRoles())) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILEROLE, - array('file' => $file, 'role' => $fa['role'], 'roles' => PEAR_Common::getFileRoles())); - } - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', str_replace('\\', '/', $file))) { - // file contains .. parent directory or . cur directory references - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME, - array('file' => $file)); - } - if (isset($fa['install-as']) && - preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $fa['install-as']))) { - // install-as contains .. parent directory or . cur directory references - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME, - array('file' => $file . ' [installed as ' . $fa['install-as'] . ']')); - } - if (isset($fa['baseinstalldir']) && - preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $fa['baseinstalldir']))) { - // install-as contains .. parent directory or . cur directory references - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME, - array('file' => $file . ' [baseinstalldir ' . $fa['baseinstalldir'] . ']')); - } - } - } - if (isset($this->_registry) && $this->_isValid) { - $chan = $this->_registry->getChannel('pear.php.net'); - if (PEAR::isError($chan)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_CHANNELVAL, $chan->getMessage()); - return $this->_isValid = 0; - } - $validator = $chan->getValidationObject(); - $validator->setPackageFile($this); - $validator->validate($state); - $failures = $validator->getFailures(); - foreach ($failures['errors'] as $error) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_CHANNELVAL, $error); - } - foreach ($failures['warnings'] as $warning) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_CHANNELVAL, $warning); - } - } - if ($this->_isValid && $state == PEAR_VALIDATE_PACKAGING && !$nofilechecking) { - if ($this->_analyzePhpFiles()) { - $this->_isValid = true; - } - } - if ($this->_isValid) { - return $this->_isValid = $state; - } - return $this->_isValid = 0; - } - - function _analyzePhpFiles() - { - if (!$this->_isValid) { - return false; - } - if (!isset($this->_packageFile)) { - return false; - } - $dir_prefix = dirname($this->_packageFile); - $common = new PEAR_Common; - $log = isset($this->_logger) ? array(&$this->_logger, 'log') : - array($common, 'log'); - $info = $this->getFilelist(); - foreach ($info as $file => $fa) { - if (!file_exists($dir_prefix . DIRECTORY_SEPARATOR . $file)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_FILE_NOTFOUND, - array('file' => realpath($dir_prefix) . DIRECTORY_SEPARATOR . $file)); - continue; - } - if ($fa['role'] == 'php' && $dir_prefix) { - call_user_func_array($log, array(1, "Analyzing $file")); - $srcinfo = $this->_analyzeSourceCode($dir_prefix . DIRECTORY_SEPARATOR . $file); - if ($srcinfo) { - $this->_buildProvidesArray($srcinfo); - } - } - } - $this->_packageName = $pn = $this->getPackage(); - $pnl = strlen($pn); - if (isset($this->_packageInfo['provides'])) { - foreach ((array) $this->_packageInfo['provides'] as $key => $what) { - if (isset($what['explicit'])) { - // skip conformance checks if the provides entry is - // specified in the package.xml file - continue; - } - extract($what); - if ($type == 'class') { - if (!strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX, - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn)); - } elseif ($type == 'function') { - if (strstr($name, '::') || !strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX, - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn)); - } - } - } - return $this->_isValid; - } - - /** - * Get the default xml generator object - * - * @return PEAR_PackageFile_Generator_v1 - */ - function &getDefaultGenerator() - { - if (!class_exists('PEAR_PackageFile_Generator_v1')) { - require_once 'PEAR/PackageFile/Generator/v1.php'; - } - $a = &new PEAR_PackageFile_Generator_v1($this); - return $a; - } - - /** - * Get the contents of a file listed within the package.xml - * @param string - * @return string - */ - function getFileContents($file) - { - if ($this->_archiveFile == $this->_packageFile) { // unpacked - $dir = dirname($this->_packageFile); - $file = $dir . DIRECTORY_SEPARATOR . $file; - $file = str_replace(array('/', '\\'), - array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR), $file); - if (file_exists($file) && is_readable($file)) { - return implode('', file($file)); - } - } else { // tgz - if (!class_exists('Archive_Tar')) { - require_once 'Archive/Tar.php'; - } - $tar = &new Archive_Tar($this->_archiveFile); - $tar->pushErrorHandling(PEAR_ERROR_RETURN); - if ($file != 'package.xml' && $file != 'package2.xml') { - $file = $this->getPackage() . '-' . $this->getVersion() . '/' . $file; - } - $file = $tar->extractInString($file); - $tar->popErrorHandling(); - if (PEAR::isError($file)) { - return PEAR::raiseError("Cannot locate file '$file' in archive"); - } - return $file; - } - } - - // {{{ analyzeSourceCode() - /** - * Analyze the source code of the given PHP file - * - * @param string Filename of the PHP file - * @return mixed - * @access private - */ - function _analyzeSourceCode($file) - { - if (!function_exists("token_get_all")) { - return false; - } - if (!defined('T_DOC_COMMENT')) { - define('T_DOC_COMMENT', T_COMMENT); - } - if (!defined('T_INTERFACE')) { - define('T_INTERFACE', -1); - } - if (!defined('T_IMPLEMENTS')) { - define('T_IMPLEMENTS', -1); - } - if (!$fp = @fopen($file, "r")) { - return false; - } - fclose($fp); - $contents = file_get_contents($file); - $tokens = token_get_all($contents); -/* - for ($i = 0; $i < sizeof($tokens); $i++) { - @list($token, $data) = $tokens[$i]; - if (is_string($token)) { - var_dump($token); - } else { - print token_name($token) . ' '; - var_dump(rtrim($data)); - } - } -*/ - $look_for = 0; - $paren_level = 0; - $bracket_level = 0; - $brace_level = 0; - $lastphpdoc = ''; - $current_class = ''; - $current_interface = ''; - $current_class_level = -1; - $current_function = ''; - $current_function_level = -1; - $declared_classes = array(); - $declared_interfaces = array(); - $declared_functions = array(); - $declared_methods = array(); - $used_classes = array(); - $used_functions = array(); - $extends = array(); - $implements = array(); - $nodeps = array(); - $inquote = false; - $interface = false; - for ($i = 0; $i < sizeof($tokens); $i++) { - if (is_array($tokens[$i])) { - list($token, $data) = $tokens[$i]; - } else { - $token = $tokens[$i]; - $data = ''; - } - if ($inquote) { - if ($token != '"' && $token != T_END_HEREDOC) { - continue; - } else { - $inquote = false; - continue; - } - } - switch ($token) { - case T_WHITESPACE : - continue; - case ';': - if ($interface) { - $current_function = ''; - $current_function_level = -1; - } - break; - case '"': - case T_START_HEREDOC: - $inquote = true; - break; - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case '{': $brace_level++; continue 2; - case '}': - $brace_level--; - if ($current_class_level == $brace_level) { - $current_class = ''; - $current_class_level = -1; - } - if ($current_function_level == $brace_level) { - $current_function = ''; - $current_function_level = -1; - } - continue 2; - case '[': $bracket_level++; continue 2; - case ']': $bracket_level--; continue 2; - case '(': $paren_level++; continue 2; - case ')': $paren_level--; continue 2; - case T_INTERFACE: - $interface = true; - case T_CLASS: - if (($current_class_level != -1) || ($current_function_level != -1)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE, - array('file' => $file)); - return false; - } - case T_FUNCTION: - case T_NEW: - case T_EXTENDS: - case T_IMPLEMENTS: - $look_for = $token; - continue 2; - case T_STRING: - if (version_compare(zend_version(), '2.0', '<')) { - if (in_array(strtolower($data), - array('public', 'private', 'protected', 'abstract', - 'interface', 'implements', 'throw') - )) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_PHP5, - array($file)); - } - } - if ($look_for == T_CLASS) { - $current_class = $data; - $current_class_level = $brace_level; - $declared_classes[] = $current_class; - } elseif ($look_for == T_INTERFACE) { - $current_interface = $data; - $current_class_level = $brace_level; - $declared_interfaces[] = $current_interface; - } elseif ($look_for == T_IMPLEMENTS) { - $implements[$current_class] = $data; - } elseif ($look_for == T_EXTENDS) { - $extends[$current_class] = $data; - } elseif ($look_for == T_FUNCTION) { - if ($current_class) { - $current_function = "$current_class::$data"; - $declared_methods[$current_class][] = $data; - } elseif ($current_interface) { - $current_function = "$current_interface::$data"; - $declared_methods[$current_interface][] = $data; - } else { - $current_function = $data; - $declared_functions[] = $current_function; - } - $current_function_level = $brace_level; - $m = array(); - } elseif ($look_for == T_NEW) { - $used_classes[$data] = true; - } - $look_for = 0; - continue 2; - case T_VARIABLE: - $look_for = 0; - continue 2; - case T_DOC_COMMENT: - case T_COMMENT: - if (preg_match('!^/\*\*\s!', $data)) { - $lastphpdoc = $data; - if (preg_match_all('/@nodep\s+(\S+)/', $lastphpdoc, $m)) { - $nodeps = array_merge($nodeps, $m[1]); - } - } - continue 2; - case T_DOUBLE_COLON: - if (!($tokens[$i - 1][0] == T_WHITESPACE || $tokens[$i - 1][0] == T_STRING)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE, - array('file' => $file)); - return false; - } - $class = $tokens[$i - 1][1]; - if (strtolower($class) != 'parent') { - $used_classes[$class] = true; - } - continue 2; - } - } - return array( - "source_file" => $file, - "declared_classes" => $declared_classes, - "declared_interfaces" => $declared_interfaces, - "declared_methods" => $declared_methods, - "declared_functions" => $declared_functions, - "used_classes" => array_diff(array_keys($used_classes), $nodeps), - "inheritance" => $extends, - "implements" => $implements, - ); - } - - /** - * Build a "provides" array from data returned by - * analyzeSourceCode(). The format of the built array is like - * this: - * - * array( - * 'class;MyClass' => 'array('type' => 'class', 'name' => 'MyClass'), - * ... - * ) - * - * - * @param array $srcinfo array with information about a source file - * as returned by the analyzeSourceCode() method. - * - * @return void - * - * @access private - * - */ - function _buildProvidesArray($srcinfo) - { - if (!$this->_isValid) { - return false; - } - $file = basename($srcinfo['source_file']); - $pn = $this->getPackage(); - $pnl = strlen($pn); - foreach ($srcinfo['declared_classes'] as $class) { - $key = "class;$class"; - if (isset($this->_packageInfo['provides'][$key])) { - continue; - } - $this->_packageInfo['provides'][$key] = - array('file'=> $file, 'type' => 'class', 'name' => $class); - if (isset($srcinfo['inheritance'][$class])) { - $this->_packageInfo['provides'][$key]['extends'] = - $srcinfo['inheritance'][$class]; - } - } - foreach ($srcinfo['declared_methods'] as $class => $methods) { - foreach ($methods as $method) { - $function = "$class::$method"; - $key = "function;$function"; - if ($method{0} == '_' || !strcasecmp($method, $class) || - isset($this->_packageInfo['provides'][$key])) { - continue; - } - $this->_packageInfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - foreach ($srcinfo['declared_functions'] as $function) { - $key = "function;$function"; - if ($function{0} == '_' || isset($this->_packageInfo['provides'][$key])) { - continue; - } - if (!strstr($function, '::') && strncasecmp($function, $pn, $pnl)) { - $warnings[] = "in1 " . $file . ": function \"$function\" not prefixed with package name \"$pn\""; - } - $this->_packageInfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - // }}} -} -?> diff --git a/3rdparty/PEAR/PackageFile/v2.php b/3rdparty/PEAR/PackageFile/v2.php deleted file mode 100644 index 1ca412dc8cdb74781d7575e67fe00480864a57f1..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile/v2.php +++ /dev/null @@ -1,2049 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: v2.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * For error handling - */ -require_once 'PEAR/ErrorStack.php'; -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_v2 -{ - - /** - * Parsed package information - * @var array - * @access private - */ - var $_packageInfo = array(); - - /** - * path to package .tgz or false if this is a local/extracted package.xml - * @var string|false - * @access private - */ - var $_archiveFile; - - /** - * path to package .xml or false if this is an abstract parsed-from-string xml - * @var string|false - * @access private - */ - var $_packageFile; - - /** - * This is used by file analysis routines to log progress information - * @var PEAR_Common - * @access protected - */ - var $_logger; - - /** - * This is set to the highest validation level that has been validated - * - * If the package.xml is invalid or unknown, this is set to 0. If - * normal validation has occurred, this is set to PEAR_VALIDATE_NORMAL. If - * downloading/installation validation has occurred it is set to PEAR_VALIDATE_DOWNLOADING - * or INSTALLING, and so on up to PEAR_VALIDATE_PACKAGING. This allows validation - * "caching" to occur, which is particularly important for package validation, so - * that PHP files are not validated twice - * @var int - * @access private - */ - var $_isValid = 0; - - /** - * True if the filelist has been validated - * @param bool - */ - var $_filesValid = false; - - /** - * @var PEAR_Registry - * @access protected - */ - var $_registry; - - /** - * @var PEAR_Config - * @access protected - */ - var $_config; - - /** - * Optional Dependency group requested for installation - * @var string - * @access private - */ - var $_requestedGroup = false; - - /** - * @var PEAR_ErrorStack - * @access protected - */ - var $_stack; - - /** - * Namespace prefix used for tasks in this package.xml - use tasks: whenever possible - */ - var $_tasksNs; - - /** - * Determines whether this packagefile was initialized only with partial package info - * - * If this package file was constructed via parsing REST, it will only contain - * - * - package name - * - channel name - * - dependencies - * @var boolean - * @access private - */ - var $_incomplete = true; - - /** - * @var PEAR_PackageFile_v2_Validator - */ - var $_v2Validator; - - /** - * The constructor merely sets up the private error stack - */ - function PEAR_PackageFile_v2() - { - $this->_stack = new PEAR_ErrorStack('PEAR_PackageFile_v2', false, null); - $this->_isValid = false; - } - - /** - * To make unit-testing easier - * @param PEAR_Frontend_* - * @param array options - * @param PEAR_Config - * @return PEAR_Downloader - * @access protected - */ - function &getPEARDownloader(&$i, $o, &$c) - { - $z = &new PEAR_Downloader($i, $o, $c); - return $z; - } - - /** - * To make unit-testing easier - * @param PEAR_Config - * @param array options - * @param array package name as returned from {@link PEAR_Registry::parsePackageName()} - * @param int PEAR_VALIDATE_* constant - * @return PEAR_Dependency2 - * @access protected - */ - function &getPEARDependency2(&$c, $o, $p, $s = PEAR_VALIDATE_INSTALLING) - { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - $z = &new PEAR_Dependency2($c, $o, $p, $s); - return $z; - } - - function getInstalledBinary() - { - return isset($this->_packageInfo['#binarypackage']) ? $this->_packageInfo['#binarypackage'] : - false; - } - - /** - * Installation of source package has failed, attempt to download and install the - * binary version of this package. - * @param PEAR_Installer - * @return array|false - */ - function installBinary(&$installer) - { - if (!OS_WINDOWS) { - $a = false; - return $a; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $releasetype = $this->getPackageType() . 'release'; - if (!is_array($installer->getInstallPackages())) { - $a = false; - return $a; - } - foreach ($installer->getInstallPackages() as $p) { - if ($p->isExtension($this->_packageInfo['providesextension'])) { - if ($p->getPackageType() != 'extsrc' && $p->getPackageType() != 'zendextsrc') { - $a = false; - return $a; // the user probably downloaded it separately - } - } - } - if (isset($this->_packageInfo[$releasetype]['binarypackage'])) { - $installer->log(0, 'Attempting to download binary version of extension "' . - $this->_packageInfo['providesextension'] . '"'); - $params = $this->_packageInfo[$releasetype]['binarypackage']; - if (!is_array($params) || !isset($params[0])) { - $params = array($params); - } - if (isset($this->_packageInfo['channel'])) { - foreach ($params as $i => $param) { - $params[$i] = array('channel' => $this->_packageInfo['channel'], - 'package' => $param, 'version' => $this->getVersion()); - } - } - $dl = &$this->getPEARDownloader($installer->ui, $installer->getOptions(), - $installer->config); - $verbose = $dl->config->get('verbose'); - $dl->config->set('verbose', -1); - foreach ($params as $param) { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $ret = $dl->download(array($param)); - PEAR::popErrorHandling(); - if (is_array($ret) && count($ret)) { - break; - } - } - $dl->config->set('verbose', $verbose); - if (is_array($ret)) { - if (count($ret) == 1) { - $pf = $ret[0]->getPackageFile(); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $installer->install($ret[0]); - PEAR::popErrorHandling(); - if (is_array($err)) { - $this->_packageInfo['#binarypackage'] = $ret[0]->getPackage(); - // "install" self, so all dependencies will work transparently - $this->_registry->addPackage2($this); - $installer->log(0, 'Download and install of binary extension "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pf->getChannel(), - 'package' => $pf->getPackage()), true) . '" successful'); - $a = array($ret[0], $err); - return $a; - } - $installer->log(0, 'Download and install of binary extension "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pf->getChannel(), - 'package' => $pf->getPackage()), true) . '" failed'); - } - } - } - } - $a = false; - return $a; - } - - /** - * @return string|false Extension name - */ - function getProvidesExtension() - { - if (in_array($this->getPackageType(), - array('extsrc', 'extbin', 'zendextsrc', 'zendextbin'))) { - if (isset($this->_packageInfo['providesextension'])) { - return $this->_packageInfo['providesextension']; - } - } - return false; - } - - /** - * @param string Extension name - * @return bool - */ - function isExtension($extension) - { - if (in_array($this->getPackageType(), - array('extsrc', 'extbin', 'zendextsrc', 'zendextbin'))) { - return $this->_packageInfo['providesextension'] == $extension; - } - return false; - } - - /** - * Tests whether every part of the package.xml 1.0 is represented in - * this package.xml 2.0 - * @param PEAR_PackageFile_v1 - * @return bool - */ - function isEquivalent($pf1) - { - if (!$pf1) { - return true; - } - if ($this->getPackageType() == 'bundle') { - return false; - } - $this->_stack->getErrors(true); - if (!$pf1->validate(PEAR_VALIDATE_NORMAL)) { - return false; - } - $pass = true; - if ($pf1->getPackage() != $this->getPackage()) { - $this->_differentPackage($pf1->getPackage()); - $pass = false; - } - if ($pf1->getVersion() != $this->getVersion()) { - $this->_differentVersion($pf1->getVersion()); - $pass = false; - } - if (trim($pf1->getSummary()) != $this->getSummary()) { - $this->_differentSummary($pf1->getSummary()); - $pass = false; - } - if (preg_replace('/\s+/', '', $pf1->getDescription()) != - preg_replace('/\s+/', '', $this->getDescription())) { - $this->_differentDescription($pf1->getDescription()); - $pass = false; - } - if ($pf1->getState() != $this->getState()) { - $this->_differentState($pf1->getState()); - $pass = false; - } - if (!strstr(preg_replace('/\s+/', '', $this->getNotes()), - preg_replace('/\s+/', '', $pf1->getNotes()))) { - $this->_differentNotes($pf1->getNotes()); - $pass = false; - } - $mymaintainers = $this->getMaintainers(); - $yourmaintainers = $pf1->getMaintainers(); - for ($i1 = 0; $i1 < count($yourmaintainers); $i1++) { - $reset = false; - for ($i2 = 0; $i2 < count($mymaintainers); $i2++) { - if ($mymaintainers[$i2]['handle'] == $yourmaintainers[$i1]['handle']) { - if ($mymaintainers[$i2]['role'] != $yourmaintainers[$i1]['role']) { - $this->_differentRole($mymaintainers[$i2]['handle'], - $yourmaintainers[$i1]['role'], $mymaintainers[$i2]['role']); - $pass = false; - } - if ($mymaintainers[$i2]['email'] != $yourmaintainers[$i1]['email']) { - $this->_differentEmail($mymaintainers[$i2]['handle'], - $yourmaintainers[$i1]['email'], $mymaintainers[$i2]['email']); - $pass = false; - } - if ($mymaintainers[$i2]['name'] != $yourmaintainers[$i1]['name']) { - $this->_differentName($mymaintainers[$i2]['handle'], - $yourmaintainers[$i1]['name'], $mymaintainers[$i2]['name']); - $pass = false; - } - unset($mymaintainers[$i2]); - $mymaintainers = array_values($mymaintainers); - unset($yourmaintainers[$i1]); - $yourmaintainers = array_values($yourmaintainers); - $reset = true; - break; - } - } - if ($reset) { - $i1 = -1; - } - } - $this->_unmatchedMaintainers($mymaintainers, $yourmaintainers); - $filelist = $this->getFilelist(); - foreach ($pf1->getFilelist() as $file => $atts) { - if (!isset($filelist[$file])) { - $this->_missingFile($file); - $pass = false; - } - } - return $pass; - } - - function _differentPackage($package) - { - $this->_stack->push(__FUNCTION__, 'error', array('package' => $package, - 'self' => $this->getPackage()), - 'package.xml 1.0 package "%package%" does not match "%self%"'); - } - - function _differentVersion($version) - { - $this->_stack->push(__FUNCTION__, 'error', array('version' => $version, - 'self' => $this->getVersion()), - 'package.xml 1.0 version "%version%" does not match "%self%"'); - } - - function _differentState($state) - { - $this->_stack->push(__FUNCTION__, 'error', array('state' => $state, - 'self' => $this->getState()), - 'package.xml 1.0 state "%state%" does not match "%self%"'); - } - - function _differentRole($handle, $role, $selfrole) - { - $this->_stack->push(__FUNCTION__, 'error', array('handle' => $handle, - 'role' => $role, 'self' => $selfrole), - 'package.xml 1.0 maintainer "%handle%" role "%role%" does not match "%self%"'); - } - - function _differentEmail($handle, $email, $selfemail) - { - $this->_stack->push(__FUNCTION__, 'error', array('handle' => $handle, - 'email' => $email, 'self' => $selfemail), - 'package.xml 1.0 maintainer "%handle%" email "%email%" does not match "%self%"'); - } - - function _differentName($handle, $name, $selfname) - { - $this->_stack->push(__FUNCTION__, 'error', array('handle' => $handle, - 'name' => $name, 'self' => $selfname), - 'package.xml 1.0 maintainer "%handle%" name "%name%" does not match "%self%"'); - } - - function _unmatchedMaintainers($my, $yours) - { - if ($my) { - array_walk($my, create_function('&$i, $k', '$i = $i["handle"];')); - $this->_stack->push(__FUNCTION__, 'error', array('handles' => $my), - 'package.xml 2.0 has unmatched extra maintainers "%handles%"'); - } - if ($yours) { - array_walk($yours, create_function('&$i, $k', '$i = $i["handle"];')); - $this->_stack->push(__FUNCTION__, 'error', array('handles' => $yours), - 'package.xml 1.0 has unmatched extra maintainers "%handles%"'); - } - } - - function _differentNotes($notes) - { - $truncnotes = strlen($notes) < 25 ? $notes : substr($notes, 0, 24) . '...'; - $truncmynotes = strlen($this->getNotes()) < 25 ? $this->getNotes() : - substr($this->getNotes(), 0, 24) . '...'; - $this->_stack->push(__FUNCTION__, 'error', array('notes' => $truncnotes, - 'self' => $truncmynotes), - 'package.xml 1.0 release notes "%notes%" do not match "%self%"'); - } - - function _differentSummary($summary) - { - $truncsummary = strlen($summary) < 25 ? $summary : substr($summary, 0, 24) . '...'; - $truncmysummary = strlen($this->getsummary()) < 25 ? $this->getSummary() : - substr($this->getsummary(), 0, 24) . '...'; - $this->_stack->push(__FUNCTION__, 'error', array('summary' => $truncsummary, - 'self' => $truncmysummary), - 'package.xml 1.0 summary "%summary%" does not match "%self%"'); - } - - function _differentDescription($description) - { - $truncdescription = trim(strlen($description) < 25 ? $description : substr($description, 0, 24) . '...'); - $truncmydescription = trim(strlen($this->getDescription()) < 25 ? $this->getDescription() : - substr($this->getdescription(), 0, 24) . '...'); - $this->_stack->push(__FUNCTION__, 'error', array('description' => $truncdescription, - 'self' => $truncmydescription), - 'package.xml 1.0 description "%description%" does not match "%self%"'); - } - - function _missingFile($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'package.xml 1.0 file "%file%" is not present in '); - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawState($state) - { - if (!isset($this->_packageInfo['stability'])) { - $this->_packageInfo['stability'] = array(); - } - $this->_packageInfo['stability']['release'] = $state; - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawCompatible($compatible) - { - $this->_packageInfo['compatible'] = $compatible; - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawPackage($package) - { - $this->_packageInfo['name'] = $package; - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawChannel($channel) - { - $this->_packageInfo['channel'] = $channel; - } - - function setRequestedGroup($group) - { - $this->_requestedGroup = $group; - } - - function getRequestedGroup() - { - if (isset($this->_requestedGroup)) { - return $this->_requestedGroup; - } - return false; - } - - /** - * For saving in the registry. - * - * Set the last version that was installed - * @param string - */ - function setLastInstalledVersion($version) - { - $this->_packageInfo['_lastversion'] = $version; - } - - /** - * @return string|false - */ - function getLastInstalledVersion() - { - if (isset($this->_packageInfo['_lastversion'])) { - return $this->_packageInfo['_lastversion']; - } - return false; - } - - /** - * Determines whether this package.xml has post-install scripts or not - * @return array|false - */ - function listPostinstallScripts() - { - $filelist = $this->getFilelist(); - $contents = $this->getContents(); - $contents = $contents['dir']['file']; - if (!is_array($contents) || !isset($contents[0])) { - $contents = array($contents); - } - $taskfiles = array(); - foreach ($contents as $file) { - $atts = $file['attribs']; - unset($file['attribs']); - if (count($file)) { - $taskfiles[$atts['name']] = $file; - } - } - $common = new PEAR_Common; - $common->debug = $this->_config->get('verbose'); - $this->_scripts = array(); - $ret = array(); - foreach ($taskfiles as $name => $tasks) { - if (!isset($filelist[$name])) { - // ignored files will not be in the filelist - continue; - } - $atts = $filelist[$name]; - foreach ($tasks as $tag => $raw) { - $task = $this->getTask($tag); - $task = &new $task($this->_config, $common, PEAR_TASK_INSTALL); - if ($task->isScript()) { - $ret[] = $filelist[$name]['installed_as']; - } - } - } - if (count($ret)) { - return $ret; - } - return false; - } - - /** - * Initialize post-install scripts for running - * - * This method can be used to detect post-install scripts, as the return value - * indicates whether any exist - * @return bool - */ - function initPostinstallScripts() - { - $filelist = $this->getFilelist(); - $contents = $this->getContents(); - $contents = $contents['dir']['file']; - if (!is_array($contents) || !isset($contents[0])) { - $contents = array($contents); - } - $taskfiles = array(); - foreach ($contents as $file) { - $atts = $file['attribs']; - unset($file['attribs']); - if (count($file)) { - $taskfiles[$atts['name']] = $file; - } - } - $common = new PEAR_Common; - $common->debug = $this->_config->get('verbose'); - $this->_scripts = array(); - foreach ($taskfiles as $name => $tasks) { - if (!isset($filelist[$name])) { - // file was not installed due to installconditions - continue; - } - $atts = $filelist[$name]; - foreach ($tasks as $tag => $raw) { - $taskname = $this->getTask($tag); - $task = &new $taskname($this->_config, $common, PEAR_TASK_INSTALL); - if (!$task->isScript()) { - continue; // scripts are only handled after installation - } - $lastversion = isset($this->_packageInfo['_lastversion']) ? - $this->_packageInfo['_lastversion'] : null; - $task->init($raw, $atts, $lastversion); - $res = $task->startSession($this, $atts['installed_as']); - if (!$res) { - continue; // skip this file - } - if (PEAR::isError($res)) { - return $res; - } - $assign = &$task; - $this->_scripts[] = &$assign; - } - } - if (count($this->_scripts)) { - return true; - } - return false; - } - - function runPostinstallScripts() - { - if ($this->initPostinstallScripts()) { - $ui = &PEAR_Frontend::singleton(); - if ($ui) { - $ui->runPostinstallScripts($this->_scripts, $this); - } - } - } - - - /** - * Convert a recursive set of and tags into a single tag with - * tags. - */ - function flattenFilelist() - { - if (isset($this->_packageInfo['bundle'])) { - return; - } - $filelist = array(); - if (isset($this->_packageInfo['contents']['dir']['dir'])) { - $this->_getFlattenedFilelist($filelist, $this->_packageInfo['contents']['dir']); - if (!isset($filelist[1])) { - $filelist = $filelist[0]; - } - $this->_packageInfo['contents']['dir']['file'] = $filelist; - unset($this->_packageInfo['contents']['dir']['dir']); - } else { - // else already flattened but check for baseinstalldir propagation - if (isset($this->_packageInfo['contents']['dir']['attribs']['baseinstalldir'])) { - if (isset($this->_packageInfo['contents']['dir']['file'][0])) { - foreach ($this->_packageInfo['contents']['dir']['file'] as $i => $file) { - if (isset($file['attribs']['baseinstalldir'])) { - continue; - } - $this->_packageInfo['contents']['dir']['file'][$i]['attribs']['baseinstalldir'] - = $this->_packageInfo['contents']['dir']['attribs']['baseinstalldir']; - } - } else { - if (!isset($this->_packageInfo['contents']['dir']['file']['attribs']['baseinstalldir'])) { - $this->_packageInfo['contents']['dir']['file']['attribs']['baseinstalldir'] - = $this->_packageInfo['contents']['dir']['attribs']['baseinstalldir']; - } - } - } - } - } - - /** - * @param array the final flattened file list - * @param array the current directory being processed - * @param string|false any recursively inherited baeinstalldir attribute - * @param string private recursion variable - * @return array - * @access protected - */ - function _getFlattenedFilelist(&$files, $dir, $baseinstall = false, $path = '') - { - if (isset($dir['attribs']) && isset($dir['attribs']['baseinstalldir'])) { - $baseinstall = $dir['attribs']['baseinstalldir']; - } - if (isset($dir['dir'])) { - if (!isset($dir['dir'][0])) { - $dir['dir'] = array($dir['dir']); - } - foreach ($dir['dir'] as $subdir) { - if (!isset($subdir['attribs']) || !isset($subdir['attribs']['name'])) { - $name = '*unknown*'; - } else { - $name = $subdir['attribs']['name']; - } - $newpath = empty($path) ? $name : - $path . '/' . $name; - $this->_getFlattenedFilelist($files, $subdir, - $baseinstall, $newpath); - } - } - if (isset($dir['file'])) { - if (!isset($dir['file'][0])) { - $dir['file'] = array($dir['file']); - } - foreach ($dir['file'] as $file) { - $attrs = $file['attribs']; - $name = $attrs['name']; - if ($baseinstall && !isset($attrs['baseinstalldir'])) { - $attrs['baseinstalldir'] = $baseinstall; - } - $attrs['name'] = empty($path) ? $name : $path . '/' . $name; - $attrs['name'] = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), - $attrs['name']); - $file['attribs'] = $attrs; - $files[] = $file; - } - } - } - - function setConfig(&$config) - { - $this->_config = &$config; - $this->_registry = &$config->getRegistry(); - } - - function setLogger(&$logger) - { - if (!is_object($logger) || !method_exists($logger, 'log')) { - return PEAR::raiseError('Logger must be compatible with PEAR_Common::log'); - } - $this->_logger = &$logger; - } - - /** - * WARNING - do not use this function directly unless you know what you're doing - */ - function setDeps($deps) - { - $this->_packageInfo['dependencies'] = $deps; - } - - /** - * WARNING - do not use this function directly unless you know what you're doing - */ - function setCompatible($compat) - { - $this->_packageInfo['compatible'] = $compat; - } - - function setPackagefile($file, $archive = false) - { - $this->_packageFile = $file; - $this->_archiveFile = $archive ? $archive : $file; - } - - /** - * Wrapper to {@link PEAR_ErrorStack::getErrors()} - * @param boolean determines whether to purge the error stack after retrieving - * @return array - */ - function getValidationWarnings($purge = true) - { - return $this->_stack->getErrors($purge); - } - - function getPackageFile() - { - return $this->_packageFile; - } - - function getArchiveFile() - { - return $this->_archiveFile; - } - - - /** - * Directly set the array that defines this packagefile - * - * WARNING: no validation. This should only be performed by internal methods - * inside PEAR or by inputting an array saved from an existing PEAR_PackageFile_v2 - * @param array - */ - function fromArray($pinfo) - { - unset($pinfo['old']); - unset($pinfo['xsdversion']); - // If the changelog isn't an array then it was passed in as an empty tag - if (isset($pinfo['changelog']) && !is_array($pinfo['changelog'])) { - unset($pinfo['changelog']); - } - $this->_incomplete = false; - $this->_packageInfo = $pinfo; - } - - function isIncomplete() - { - return $this->_incomplete; - } - - /** - * @return array - */ - function toArray($forreg = false) - { - if (!$this->validate(PEAR_VALIDATE_NORMAL)) { - return false; - } - return $this->getArray($forreg); - } - - function getArray($forReg = false) - { - if ($forReg) { - $arr = $this->_packageInfo; - $arr['old'] = array(); - $arr['old']['version'] = $this->getVersion(); - $arr['old']['release_date'] = $this->getDate(); - $arr['old']['release_state'] = $this->getState(); - $arr['old']['release_license'] = $this->getLicense(); - $arr['old']['release_notes'] = $this->getNotes(); - $arr['old']['release_deps'] = $this->getDeps(); - $arr['old']['maintainers'] = $this->getMaintainers(); - $arr['xsdversion'] = '2.0'; - return $arr; - } else { - $info = $this->_packageInfo; - unset($info['dirtree']); - if (isset($info['_lastversion'])) { - unset($info['_lastversion']); - } - if (isset($info['#binarypackage'])) { - unset($info['#binarypackage']); - } - return $info; - } - } - - function packageInfo($field) - { - $arr = $this->getArray(true); - if ($field == 'state') { - return $arr['stability']['release']; - } - if ($field == 'api-version') { - return $arr['version']['api']; - } - if ($field == 'api-state') { - return $arr['stability']['api']; - } - if (isset($arr['old'][$field])) { - if (!is_string($arr['old'][$field])) { - return null; - } - return $arr['old'][$field]; - } - if (isset($arr[$field])) { - if (!is_string($arr[$field])) { - return null; - } - return $arr[$field]; - } - return null; - } - - function getName() - { - return $this->getPackage(); - } - - function getPackage() - { - if (isset($this->_packageInfo['name'])) { - return $this->_packageInfo['name']; - } - return false; - } - - function getChannel() - { - if (isset($this->_packageInfo['uri'])) { - return '__uri'; - } - if (isset($this->_packageInfo['channel'])) { - return strtolower($this->_packageInfo['channel']); - } - return false; - } - - function getUri() - { - if (isset($this->_packageInfo['uri'])) { - return $this->_packageInfo['uri']; - } - return false; - } - - function getExtends() - { - if (isset($this->_packageInfo['extends'])) { - return $this->_packageInfo['extends']; - } - return false; - } - - function getSummary() - { - if (isset($this->_packageInfo['summary'])) { - return $this->_packageInfo['summary']; - } - return false; - } - - function getDescription() - { - if (isset($this->_packageInfo['description'])) { - return $this->_packageInfo['description']; - } - return false; - } - - function getMaintainers($raw = false) - { - if (!isset($this->_packageInfo['lead'])) { - return false; - } - if ($raw) { - $ret = array('lead' => $this->_packageInfo['lead']); - (isset($this->_packageInfo['developer'])) ? - $ret['developer'] = $this->_packageInfo['developer'] :null; - (isset($this->_packageInfo['contributor'])) ? - $ret['contributor'] = $this->_packageInfo['contributor'] :null; - (isset($this->_packageInfo['helper'])) ? - $ret['helper'] = $this->_packageInfo['helper'] :null; - return $ret; - } else { - $ret = array(); - $leads = isset($this->_packageInfo['lead'][0]) ? $this->_packageInfo['lead'] : - array($this->_packageInfo['lead']); - foreach ($leads as $lead) { - $s = $lead; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'lead'; - $ret[] = $s; - } - if (isset($this->_packageInfo['developer'])) { - $leads = isset($this->_packageInfo['developer'][0]) ? - $this->_packageInfo['developer'] : - array($this->_packageInfo['developer']); - foreach ($leads as $maintainer) { - $s = $maintainer; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'developer'; - $ret[] = $s; - } - } - if (isset($this->_packageInfo['contributor'])) { - $leads = isset($this->_packageInfo['contributor'][0]) ? - $this->_packageInfo['contributor'] : - array($this->_packageInfo['contributor']); - foreach ($leads as $maintainer) { - $s = $maintainer; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'contributor'; - $ret[] = $s; - } - } - if (isset($this->_packageInfo['helper'])) { - $leads = isset($this->_packageInfo['helper'][0]) ? - $this->_packageInfo['helper'] : - array($this->_packageInfo['helper']); - foreach ($leads as $maintainer) { - $s = $maintainer; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'helper'; - $ret[] = $s; - } - } - return $ret; - } - return false; - } - - function getLeads() - { - if (isset($this->_packageInfo['lead'])) { - return $this->_packageInfo['lead']; - } - return false; - } - - function getDevelopers() - { - if (isset($this->_packageInfo['developer'])) { - return $this->_packageInfo['developer']; - } - return false; - } - - function getContributors() - { - if (isset($this->_packageInfo['contributor'])) { - return $this->_packageInfo['contributor']; - } - return false; - } - - function getHelpers() - { - if (isset($this->_packageInfo['helper'])) { - return $this->_packageInfo['helper']; - } - return false; - } - - function setDate($date) - { - if (!isset($this->_packageInfo['date'])) { - // ensure that the extends tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', - 'zendextbinrelease', 'bundle', 'changelog'), array(), 'date'); - } - $this->_packageInfo['date'] = $date; - $this->_isValid = 0; - } - - function setTime($time) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['time'])) { - // ensure that the time tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', - 'zendextbinrelease', 'bundle', 'changelog'), $time, 'time'); - } - $this->_packageInfo['time'] = $time; - } - - function getDate() - { - if (isset($this->_packageInfo['date'])) { - return $this->_packageInfo['date']; - } - return false; - } - - function getTime() - { - if (isset($this->_packageInfo['time'])) { - return $this->_packageInfo['time']; - } - return false; - } - - /** - * @param package|api version category to return - */ - function getVersion($key = 'release') - { - if (isset($this->_packageInfo['version'][$key])) { - return $this->_packageInfo['version'][$key]; - } - return false; - } - - function getStability() - { - if (isset($this->_packageInfo['stability'])) { - return $this->_packageInfo['stability']; - } - return false; - } - - function getState($key = 'release') - { - if (isset($this->_packageInfo['stability'][$key])) { - return $this->_packageInfo['stability'][$key]; - } - return false; - } - - function getLicense($raw = false) - { - if (isset($this->_packageInfo['license'])) { - if ($raw) { - return $this->_packageInfo['license']; - } - if (is_array($this->_packageInfo['license'])) { - return $this->_packageInfo['license']['_content']; - } else { - return $this->_packageInfo['license']; - } - } - return false; - } - - function getLicenseLocation() - { - if (!isset($this->_packageInfo['license']) || !is_array($this->_packageInfo['license'])) { - return false; - } - return $this->_packageInfo['license']['attribs']; - } - - function getNotes() - { - if (isset($this->_packageInfo['notes'])) { - return $this->_packageInfo['notes']; - } - return false; - } - - /** - * Return the tag contents, if any - * @return array|false - */ - function getUsesrole() - { - if (isset($this->_packageInfo['usesrole'])) { - return $this->_packageInfo['usesrole']; - } - return false; - } - - /** - * Return the tag contents, if any - * @return array|false - */ - function getUsestask() - { - if (isset($this->_packageInfo['usestask'])) { - return $this->_packageInfo['usestask']; - } - return false; - } - - /** - * This should only be used to retrieve filenames and install attributes - */ - function getFilelist($preserve = false) - { - if (isset($this->_packageInfo['filelist']) && !$preserve) { - return $this->_packageInfo['filelist']; - } - $this->flattenFilelist(); - if ($contents = $this->getContents()) { - $ret = array(); - if (!isset($contents['dir'])) { - return false; - } - if (!isset($contents['dir']['file'][0])) { - $contents['dir']['file'] = array($contents['dir']['file']); - } - foreach ($contents['dir']['file'] as $file) { - $name = $file['attribs']['name']; - if (!$preserve) { - $file = $file['attribs']; - } - $ret[$name] = $file; - } - if (!$preserve) { - $this->_packageInfo['filelist'] = $ret; - } - return $ret; - } - return false; - } - - /** - * Return configure options array, if any - * - * @return array|false - */ - function getConfigureOptions() - { - if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') { - return false; - } - - $releases = $this->getReleases(); - if (isset($releases[0])) { - $releases = $releases[0]; - } - - if (isset($releases['configureoption'])) { - if (!isset($releases['configureoption'][0])) { - $releases['configureoption'] = array($releases['configureoption']); - } - - for ($i = 0; $i < count($releases['configureoption']); $i++) { - $releases['configureoption'][$i] = $releases['configureoption'][$i]['attribs']; - } - - return $releases['configureoption']; - } - - return false; - } - - /** - * This is only used at install-time, after all serialization - * is over. - */ - function resetFilelist() - { - $this->_packageInfo['filelist'] = array(); - } - - /** - * Retrieve a list of files that should be installed on this computer - * @return array - */ - function getInstallationFilelist($forfilecheck = false) - { - $contents = $this->getFilelist(true); - if (isset($contents['dir']['attribs']['baseinstalldir'])) { - $base = $contents['dir']['attribs']['baseinstalldir']; - } - if (isset($this->_packageInfo['bundle'])) { - return PEAR::raiseError( - 'Exception: bundles should be handled in download code only'); - } - $release = $this->getReleases(); - if ($release) { - if (!isset($release[0])) { - if (!isset($release['installconditions']) && !isset($release['filelist'])) { - if ($forfilecheck) { - return $this->getFilelist(); - } - return $contents; - } - $release = array($release); - } - $depchecker = &$this->getPEARDependency2($this->_config, array(), - array('channel' => $this->getChannel(), 'package' => $this->getPackage()), - PEAR_VALIDATE_INSTALLING); - foreach ($release as $instance) { - if (isset($instance['installconditions'])) { - $installconditions = $instance['installconditions']; - if (is_array($installconditions)) { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($installconditions as $type => $conditions) { - if (!isset($conditions[0])) { - $conditions = array($conditions); - } - foreach ($conditions as $condition) { - $ret = $depchecker->{"validate{$type}Dependency"}($condition); - if (PEAR::isError($ret)) { - PEAR::popErrorHandling(); - continue 3; // skip this release - } - } - } - PEAR::popErrorHandling(); - } - } - // this is the release to use - if (isset($instance['filelist'])) { - // ignore files - if (isset($instance['filelist']['ignore'])) { - $ignore = isset($instance['filelist']['ignore'][0]) ? - $instance['filelist']['ignore'] : - array($instance['filelist']['ignore']); - foreach ($ignore as $ig) { - unset ($contents[$ig['attribs']['name']]); - } - } - // install files as this name - if (isset($instance['filelist']['install'])) { - $installas = isset($instance['filelist']['install'][0]) ? - $instance['filelist']['install'] : - array($instance['filelist']['install']); - foreach ($installas as $as) { - $contents[$as['attribs']['name']]['attribs']['install-as'] = - $as['attribs']['as']; - } - } - } - if ($forfilecheck) { - foreach ($contents as $file => $attrs) { - $contents[$file] = $attrs['attribs']; - } - } - return $contents; - } - } else { // simple release - no installconditions or install-as - if ($forfilecheck) { - return $this->getFilelist(); - } - return $contents; - } - // no releases matched - return PEAR::raiseError('No releases in package.xml matched the existing operating ' . - 'system, extensions installed, or architecture, cannot install'); - } - - /** - * This is only used at install-time, after all serialization - * is over. - * @param string file name - * @param string installed path - */ - function setInstalledAs($file, $path) - { - if ($path) { - return $this->_packageInfo['filelist'][$file]['installed_as'] = $path; - } - unset($this->_packageInfo['filelist'][$file]['installed_as']); - } - - function getInstalledLocation($file) - { - if (isset($this->_packageInfo['filelist'][$file]['installed_as'])) { - return $this->_packageInfo['filelist'][$file]['installed_as']; - } - return false; - } - - /** - * This is only used at install-time, after all serialization - * is over. - */ - function installedFile($file, $atts) - { - if (isset($this->_packageInfo['filelist'][$file])) { - $this->_packageInfo['filelist'][$file] = - array_merge($this->_packageInfo['filelist'][$file], $atts['attribs']); - } else { - $this->_packageInfo['filelist'][$file] = $atts['attribs']; - } - } - - /** - * Retrieve the contents tag - */ - function getContents() - { - if (isset($this->_packageInfo['contents'])) { - return $this->_packageInfo['contents']; - } - return false; - } - - /** - * @param string full path to file - * @param string attribute name - * @param string attribute value - * @param int risky but fast - use this to choose a file based on its position in the list - * of files. Index is zero-based like PHP arrays. - * @return bool success of operation - */ - function setFileAttribute($filename, $attr, $value, $index = false) - { - $this->_isValid = 0; - if (in_array($attr, array('role', 'name', 'baseinstalldir'))) { - $this->_filesValid = false; - } - if ($index !== false && - isset($this->_packageInfo['contents']['dir']['file'][$index]['attribs'])) { - $this->_packageInfo['contents']['dir']['file'][$index]['attribs'][$attr] = $value; - return true; - } - if (!isset($this->_packageInfo['contents']['dir']['file'])) { - return false; - } - $files = $this->_packageInfo['contents']['dir']['file']; - if (!isset($files[0])) { - $files = array($files); - $ind = false; - } else { - $ind = true; - } - foreach ($files as $i => $file) { - if (isset($file['attribs'])) { - if ($file['attribs']['name'] == $filename) { - if ($ind) { - $this->_packageInfo['contents']['dir']['file'][$i]['attribs'][$attr] = $value; - } else { - $this->_packageInfo['contents']['dir']['file']['attribs'][$attr] = $value; - } - return true; - } - } - } - return false; - } - - function setDirtree($path) - { - if (!isset($this->_packageInfo['dirtree'])) { - $this->_packageInfo['dirtree'] = array(); - } - $this->_packageInfo['dirtree'][$path] = true; - } - - function getDirtree() - { - if (isset($this->_packageInfo['dirtree']) && count($this->_packageInfo['dirtree'])) { - return $this->_packageInfo['dirtree']; - } - return false; - } - - function resetDirtree() - { - unset($this->_packageInfo['dirtree']); - } - - /** - * Determines whether this package claims it is compatible with the version of - * the package that has a recommended version dependency - * @param PEAR_PackageFile_v2|PEAR_PackageFile_v1|PEAR_Downloader_Package - * @return boolean - */ - function isCompatible($pf) - { - if (!isset($this->_packageInfo['compatible'])) { - return false; - } - if (!isset($this->_packageInfo['channel'])) { - return false; - } - $me = $pf->getVersion(); - $compatible = $this->_packageInfo['compatible']; - if (!isset($compatible[0])) { - $compatible = array($compatible); - } - $found = false; - foreach ($compatible as $info) { - if (strtolower($info['name']) == strtolower($pf->getPackage())) { - if (strtolower($info['channel']) == strtolower($pf->getChannel())) { - $found = true; - break; - } - } - } - if (!$found) { - return false; - } - if (isset($info['exclude'])) { - if (!isset($info['exclude'][0])) { - $info['exclude'] = array($info['exclude']); - } - foreach ($info['exclude'] as $exclude) { - if (version_compare($me, $exclude, '==')) { - return false; - } - } - } - if (version_compare($me, $info['min'], '>=') && version_compare($me, $info['max'], '<=')) { - return true; - } - return false; - } - - /** - * @return array|false - */ - function getCompatible() - { - if (isset($this->_packageInfo['compatible'])) { - return $this->_packageInfo['compatible']; - } - return false; - } - - function getDependencies() - { - if (isset($this->_packageInfo['dependencies'])) { - return $this->_packageInfo['dependencies']; - } - return false; - } - - function isSubpackageOf($p) - { - return $p->isSubpackage($this); - } - - /** - * Determines whether the passed in package is a subpackage of this package. - * - * No version checking is done, only name verification. - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return bool - */ - function isSubpackage($p) - { - $sub = array(); - if (isset($this->_packageInfo['dependencies']['required']['subpackage'])) { - $sub = $this->_packageInfo['dependencies']['required']['subpackage']; - if (!isset($sub[0])) { - $sub = array($sub); - } - } - if (isset($this->_packageInfo['dependencies']['optional']['subpackage'])) { - $sub1 = $this->_packageInfo['dependencies']['optional']['subpackage']; - if (!isset($sub1[0])) { - $sub1 = array($sub1); - } - $sub = array_merge($sub, $sub1); - } - if (isset($this->_packageInfo['dependencies']['group'])) { - $group = $this->_packageInfo['dependencies']['group']; - if (!isset($group[0])) { - $group = array($group); - } - foreach ($group as $deps) { - if (isset($deps['subpackage'])) { - $sub2 = $deps['subpackage']; - if (!isset($sub2[0])) { - $sub2 = array($sub2); - } - $sub = array_merge($sub, $sub2); - } - } - } - foreach ($sub as $dep) { - if (strtolower($dep['name']) == strtolower($p->getPackage())) { - if (isset($dep['channel'])) { - if (strtolower($dep['channel']) == strtolower($p->getChannel())) { - return true; - } - } else { - if ($dep['uri'] == $p->getURI()) { - return true; - } - } - } - } - return false; - } - - function dependsOn($package, $channel) - { - if (!($deps = $this->getDependencies())) { - return false; - } - foreach (array('package', 'subpackage') as $type) { - foreach (array('required', 'optional') as $needed) { - if (isset($deps[$needed][$type])) { - if (!isset($deps[$needed][$type][0])) { - $deps[$needed][$type] = array($deps[$needed][$type]); - } - foreach ($deps[$needed][$type] as $dep) { - $depchannel = isset($dep['channel']) ? $dep['channel'] : '__uri'; - if (strtolower($dep['name']) == strtolower($package) && - $depchannel == $channel) { - return true; - } - } - } - } - if (isset($deps['group'])) { - if (!isset($deps['group'][0])) { - $dep['group'] = array($deps['group']); - } - foreach ($deps['group'] as $group) { - if (isset($group[$type])) { - if (!is_array($group[$type])) { - $group[$type] = array($group[$type]); - } - foreach ($group[$type] as $dep) { - $depchannel = isset($dep['channel']) ? $dep['channel'] : '__uri'; - if (strtolower($dep['name']) == strtolower($package) && - $depchannel == $channel) { - return true; - } - } - } - } - } - } - return false; - } - - /** - * Get the contents of a dependency group - * @param string - * @return array|false - */ - function getDependencyGroup($name) - { - $name = strtolower($name); - if (!isset($this->_packageInfo['dependencies']['group'])) { - return false; - } - $groups = $this->_packageInfo['dependencies']['group']; - if (!isset($groups[0])) { - $groups = array($groups); - } - foreach ($groups as $group) { - if (strtolower($group['attribs']['name']) == $name) { - return $group; - } - } - return false; - } - - /** - * Retrieve a partial package.xml 1.0 representation of dependencies - * - * a very limited representation of dependencies is returned by this method. - * The tag for excluding certain versions of a dependency is - * completely ignored. In addition, dependency groups are ignored, with the - * assumption that all dependencies in dependency groups are also listed in - * the optional group that work with all dependency groups - * @param boolean return package.xml 2.0 tag - * @return array|false - */ - function getDeps($raw = false, $nopearinstaller = false) - { - if (isset($this->_packageInfo['dependencies'])) { - if ($raw) { - return $this->_packageInfo['dependencies']; - } - $ret = array(); - $map = array( - 'php' => 'php', - 'package' => 'pkg', - 'subpackage' => 'pkg', - 'extension' => 'ext', - 'os' => 'os', - 'pearinstaller' => 'pkg', - ); - foreach (array('required', 'optional') as $type) { - $optional = ($type == 'optional') ? 'yes' : 'no'; - if (!isset($this->_packageInfo['dependencies'][$type]) - || empty($this->_packageInfo['dependencies'][$type])) { - continue; - } - foreach ($this->_packageInfo['dependencies'][$type] as $dtype => $deps) { - if ($dtype == 'pearinstaller' && $nopearinstaller) { - continue; - } - if (!isset($deps[0])) { - $deps = array($deps); - } - foreach ($deps as $dep) { - if (!isset($map[$dtype])) { - // no support for arch type - continue; - } - if ($dtype == 'pearinstaller') { - $dep['name'] = 'PEAR'; - $dep['channel'] = 'pear.php.net'; - } - $s = array('type' => $map[$dtype]); - if (isset($dep['channel'])) { - $s['channel'] = $dep['channel']; - } - if (isset($dep['uri'])) { - $s['uri'] = $dep['uri']; - } - if (isset($dep['name'])) { - $s['name'] = $dep['name']; - } - if (isset($dep['conflicts'])) { - $s['rel'] = 'not'; - } else { - if (!isset($dep['min']) && - !isset($dep['max'])) { - $s['rel'] = 'has'; - $s['optional'] = $optional; - } elseif (isset($dep['min']) && - isset($dep['max'])) { - $s['rel'] = 'ge'; - $s1 = $s; - $s1['rel'] = 'le'; - $s['version'] = $dep['min']; - $s1['version'] = $dep['max']; - if (isset($dep['channel'])) { - $s1['channel'] = $dep['channel']; - } - if ($dtype != 'php') { - $s['name'] = $dep['name']; - $s1['name'] = $dep['name']; - } - $s['optional'] = $optional; - $s1['optional'] = $optional; - $ret[] = $s1; - } elseif (isset($dep['min'])) { - if (isset($dep['exclude']) && - $dep['exclude'] == $dep['min']) { - $s['rel'] = 'gt'; - } else { - $s['rel'] = 'ge'; - } - $s['version'] = $dep['min']; - $s['optional'] = $optional; - if ($dtype != 'php') { - $s['name'] = $dep['name']; - } - } elseif (isset($dep['max'])) { - if (isset($dep['exclude']) && - $dep['exclude'] == $dep['max']) { - $s['rel'] = 'lt'; - } else { - $s['rel'] = 'le'; - } - $s['version'] = $dep['max']; - $s['optional'] = $optional; - if ($dtype != 'php') { - $s['name'] = $dep['name']; - } - } - } - $ret[] = $s; - } - } - } - if (count($ret)) { - return $ret; - } - } - return false; - } - - /** - * @return php|extsrc|extbin|zendextsrc|zendextbin|bundle|false - */ - function getPackageType() - { - if (isset($this->_packageInfo['phprelease'])) { - return 'php'; - } - if (isset($this->_packageInfo['extsrcrelease'])) { - return 'extsrc'; - } - if (isset($this->_packageInfo['extbinrelease'])) { - return 'extbin'; - } - if (isset($this->_packageInfo['zendextsrcrelease'])) { - return 'zendextsrc'; - } - if (isset($this->_packageInfo['zendextbinrelease'])) { - return 'zendextbin'; - } - if (isset($this->_packageInfo['bundle'])) { - return 'bundle'; - } - return false; - } - - /** - * @return array|false - */ - function getReleases() - { - $type = $this->getPackageType(); - if ($type != 'bundle') { - $type .= 'release'; - } - if ($this->getPackageType() && isset($this->_packageInfo[$type])) { - return $this->_packageInfo[$type]; - } - return false; - } - - /** - * @return array - */ - function getChangelog() - { - if (isset($this->_packageInfo['changelog'])) { - return $this->_packageInfo['changelog']; - } - return false; - } - - function hasDeps() - { - return isset($this->_packageInfo['dependencies']); - } - - function getPackagexmlVersion() - { - if (isset($this->_packageInfo['zendextsrcrelease'])) { - return '2.1'; - } - if (isset($this->_packageInfo['zendextbinrelease'])) { - return '2.1'; - } - return '2.0'; - } - - /** - * @return array|false - */ - function getSourcePackage() - { - if (isset($this->_packageInfo['extbinrelease']) || - isset($this->_packageInfo['zendextbinrelease'])) { - return array('channel' => $this->_packageInfo['srcchannel'], - 'package' => $this->_packageInfo['srcpackage']); - } - return false; - } - - function getBundledPackages() - { - if (isset($this->_packageInfo['bundle'])) { - return $this->_packageInfo['contents']['bundledpackage']; - } - return false; - } - - function getLastModified() - { - if (isset($this->_packageInfo['_lastmodified'])) { - return $this->_packageInfo['_lastmodified']; - } - return false; - } - - /** - * Get the contents of a file listed within the package.xml - * @param string - * @return string - */ - function getFileContents($file) - { - if ($this->_archiveFile == $this->_packageFile) { // unpacked - $dir = dirname($this->_packageFile); - $file = $dir . DIRECTORY_SEPARATOR . $file; - $file = str_replace(array('/', '\\'), - array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR), $file); - if (file_exists($file) && is_readable($file)) { - return implode('', file($file)); - } - } else { // tgz - $tar = &new Archive_Tar($this->_archiveFile); - $tar->pushErrorHandling(PEAR_ERROR_RETURN); - if ($file != 'package.xml' && $file != 'package2.xml') { - $file = $this->getPackage() . '-' . $this->getVersion() . '/' . $file; - } - $file = $tar->extractInString($file); - $tar->popErrorHandling(); - if (PEAR::isError($file)) { - return PEAR::raiseError("Cannot locate file '$file' in archive"); - } - return $file; - } - } - - function &getRW() - { - if (!class_exists('PEAR_PackageFile_v2_rw')) { - require_once 'PEAR/PackageFile/v2/rw.php'; - } - $a = new PEAR_PackageFile_v2_rw; - foreach (get_object_vars($this) as $name => $unused) { - if (!isset($this->$name)) { - continue; - } - if ($name == '_config' || $name == '_logger'|| $name == '_registry' || - $name == '_stack') { - $a->$name = &$this->$name; - } else { - $a->$name = $this->$name; - } - } - return $a; - } - - function &getDefaultGenerator() - { - if (!class_exists('PEAR_PackageFile_Generator_v2')) { - require_once 'PEAR/PackageFile/Generator/v2.php'; - } - $a = &new PEAR_PackageFile_Generator_v2($this); - return $a; - } - - function analyzeSourceCode($file, $string = false) - { - if (!isset($this->_v2Validator) || - !is_a($this->_v2Validator, 'PEAR_PackageFile_v2_Validator')) { - if (!class_exists('PEAR_PackageFile_v2_Validator')) { - require_once 'PEAR/PackageFile/v2/Validator.php'; - } - $this->_v2Validator = new PEAR_PackageFile_v2_Validator; - } - return $this->_v2Validator->analyzeSourceCode($file, $string); - } - - function validate($state = PEAR_VALIDATE_NORMAL) - { - if (!isset($this->_packageInfo) || !is_array($this->_packageInfo)) { - return false; - } - if (!isset($this->_v2Validator) || - !is_a($this->_v2Validator, 'PEAR_PackageFile_v2_Validator')) { - if (!class_exists('PEAR_PackageFile_v2_Validator')) { - require_once 'PEAR/PackageFile/v2/Validator.php'; - } - $this->_v2Validator = new PEAR_PackageFile_v2_Validator; - } - if (isset($this->_packageInfo['xsdversion'])) { - unset($this->_packageInfo['xsdversion']); - } - return $this->_v2Validator->validate($this, $state); - } - - function getTasksNs() - { - if (!isset($this->_tasksNs)) { - if (isset($this->_packageInfo['attribs'])) { - foreach ($this->_packageInfo['attribs'] as $name => $value) { - if ($value == 'http://pear.php.net/dtd/tasks-1.0') { - $this->_tasksNs = str_replace('xmlns:', '', $name); - break; - } - } - } - } - return $this->_tasksNs; - } - - /** - * Determine whether a task name is a valid task. Custom tasks may be defined - * using subdirectories by putting a "-" in the name, as in - * - * Note that this method will auto-load the task class file and test for the existence - * of the name with "-" replaced by "_" as in PEAR/Task/mycustom/task.php makes class - * PEAR_Task_mycustom_task - * @param string - * @return boolean - */ - function getTask($task) - { - $this->getTasksNs(); - // transform all '-' to '/' and 'tasks:' to '' so tasks:replace becomes replace - $task = str_replace(array($this->_tasksNs . ':', '-'), array('', ' '), $task); - $taskfile = str_replace(' ', '/', ucwords($task)); - $task = str_replace(array(' ', '/'), '_', ucwords($task)); - if (class_exists("PEAR_Task_$task")) { - return "PEAR_Task_$task"; - } - $fp = @fopen("PEAR/Task/$taskfile.php", 'r', true); - if ($fp) { - fclose($fp); - require_once "PEAR/Task/$taskfile.php"; - return "PEAR_Task_$task"; - } - return false; - } - - /** - * Key-friendly array_splice - * @param tagname to splice a value in before - * @param mixed the value to splice in - * @param string the new tag name - */ - function _ksplice($array, $key, $value, $newkey) - { - $offset = array_search($key, array_keys($array)); - $after = array_slice($array, $offset); - $before = array_slice($array, 0, $offset); - $before[$newkey] = $value; - return array_merge($before, $after); - } - - /** - * @param array a list of possible keys, in the order they may occur - * @param mixed contents of the new package.xml tag - * @param string tag name - * @access private - */ - function _insertBefore($array, $keys, $contents, $newkey) - { - foreach ($keys as $key) { - if (isset($array[$key])) { - return $array = $this->_ksplice($array, $key, $contents, $newkey); - } - } - $array[$newkey] = $contents; - return $array; - } - - /** - * @param subsection of {@link $_packageInfo} - * @param array|string tag contents - * @param array format: - *
-     * array(
-     *   tagname => array(list of tag names that follow this one),
-     *   childtagname => array(list of child tag names that follow this one),
-     * )
-     * 
- * - * This allows construction of nested tags - * @access private - */ - function _mergeTag($manip, $contents, $order) - { - if (count($order)) { - foreach ($order as $tag => $curorder) { - if (!isset($manip[$tag])) { - // ensure that the tag is set up - $manip = $this->_insertBefore($manip, $curorder, array(), $tag); - } - if (count($order) > 1) { - $manip[$tag] = $this->_mergeTag($manip[$tag], $contents, array_slice($order, 1)); - return $manip; - } - } - } else { - return $manip; - } - if (is_array($manip[$tag]) && !empty($manip[$tag]) && isset($manip[$tag][0])) { - $manip[$tag][] = $contents; - } else { - if (!count($manip[$tag])) { - $manip[$tag] = $contents; - } else { - $manip[$tag] = array($manip[$tag]); - $manip[$tag][] = $contents; - } - } - return $manip; - } -} -?> diff --git a/3rdparty/PEAR/PackageFile/v2/Validator.php b/3rdparty/PEAR/PackageFile/v2/Validator.php deleted file mode 100644 index 33c8eee38767722f71710e79751557008b1539ec..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile/v2/Validator.php +++ /dev/null @@ -1,2154 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Validator.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a8 - */ -/** - * Private validation class used by PEAR_PackageFile_v2 - do not use directly, its - * sole purpose is to split up the PEAR/PackageFile/v2.php file to make it smaller - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a8 - * @access private - */ -class PEAR_PackageFile_v2_Validator -{ - /** - * @var array - */ - var $_packageInfo; - /** - * @var PEAR_PackageFile_v2 - */ - var $_pf; - /** - * @var PEAR_ErrorStack - */ - var $_stack; - /** - * @var int - */ - var $_isValid = 0; - /** - * @var int - */ - var $_filesValid = 0; - /** - * @var int - */ - var $_curState = 0; - /** - * @param PEAR_PackageFile_v2 - * @param int - */ - function validate(&$pf, $state = PEAR_VALIDATE_NORMAL) - { - $this->_pf = &$pf; - $this->_curState = $state; - $this->_packageInfo = $this->_pf->getArray(); - $this->_isValid = $this->_pf->_isValid; - $this->_filesValid = $this->_pf->_filesValid; - $this->_stack = &$pf->_stack; - $this->_stack->getErrors(true); - if (($this->_isValid & $state) == $state) { - return true; - } - if (!isset($this->_packageInfo) || !is_array($this->_packageInfo)) { - return false; - } - if (!isset($this->_packageInfo['attribs']['version']) || - ($this->_packageInfo['attribs']['version'] != '2.0' && - $this->_packageInfo['attribs']['version'] != '2.1') - ) { - $this->_noPackageVersion(); - } - $structure = - array( - 'name', - 'channel|uri', - '*extends', // can't be multiple, but this works fine - 'summary', - 'description', - '+lead', // these all need content checks - '*developer', - '*contributor', - '*helper', - 'date', - '*time', - 'version', - 'stability', - 'license->?uri->?filesource', - 'notes', - 'contents', //special validation needed - '*compatible', - 'dependencies', //special validation needed - '*usesrole', - '*usestask', // reserve these for 1.4.0a1 to implement - // this will allow a package.xml to gracefully say it - // needs a certain package installed in order to implement a role or task - '*providesextension', - '*srcpackage|*srcuri', - '+phprelease|+extsrcrelease|+extbinrelease|' . - '+zendextsrcrelease|+zendextbinrelease|bundle', //special validation needed - '*changelog', - ); - $test = $this->_packageInfo; - if (isset($test['dependencies']) && - isset($test['dependencies']['required']) && - isset($test['dependencies']['required']['pearinstaller']) && - isset($test['dependencies']['required']['pearinstaller']['min']) && - version_compare('1.9.4', - $test['dependencies']['required']['pearinstaller']['min'], '<') - ) { - $this->_pearVersionTooLow($test['dependencies']['required']['pearinstaller']['min']); - return false; - } - // ignore post-installation array fields - if (array_key_exists('filelist', $test)) { - unset($test['filelist']); - } - if (array_key_exists('_lastmodified', $test)) { - unset($test['_lastmodified']); - } - if (array_key_exists('#binarypackage', $test)) { - unset($test['#binarypackage']); - } - if (array_key_exists('old', $test)) { - unset($test['old']); - } - if (array_key_exists('_lastversion', $test)) { - unset($test['_lastversion']); - } - if (!$this->_stupidSchemaValidate($structure, $test, '')) { - return false; - } - if (empty($this->_packageInfo['name'])) { - $this->_tagCannotBeEmpty('name'); - } - $test = isset($this->_packageInfo['uri']) ? 'uri' :'channel'; - if (empty($this->_packageInfo[$test])) { - $this->_tagCannotBeEmpty($test); - } - if (is_array($this->_packageInfo['license']) && - (!isset($this->_packageInfo['license']['_content']) || - empty($this->_packageInfo['license']['_content']))) { - $this->_tagCannotBeEmpty('license'); - } elseif (empty($this->_packageInfo['license'])) { - $this->_tagCannotBeEmpty('license'); - } - if (empty($this->_packageInfo['summary'])) { - $this->_tagCannotBeEmpty('summary'); - } - if (empty($this->_packageInfo['description'])) { - $this->_tagCannotBeEmpty('description'); - } - if (empty($this->_packageInfo['date'])) { - $this->_tagCannotBeEmpty('date'); - } - if (empty($this->_packageInfo['notes'])) { - $this->_tagCannotBeEmpty('notes'); - } - if (isset($this->_packageInfo['time']) && empty($this->_packageInfo['time'])) { - $this->_tagCannotBeEmpty('time'); - } - if (isset($this->_packageInfo['dependencies'])) { - $this->_validateDependencies(); - } - if (isset($this->_packageInfo['compatible'])) { - $this->_validateCompatible(); - } - if (!isset($this->_packageInfo['bundle'])) { - if (empty($this->_packageInfo['contents'])) { - $this->_tagCannotBeEmpty('contents'); - } - if (!isset($this->_packageInfo['contents']['dir'])) { - $this->_filelistMustContainDir('contents'); - return false; - } - if (isset($this->_packageInfo['contents']['file'])) { - $this->_filelistCannotContainFile('contents'); - return false; - } - } - $this->_validateMaintainers(); - $this->_validateStabilityVersion(); - $fail = false; - if (array_key_exists('usesrole', $this->_packageInfo)) { - $roles = $this->_packageInfo['usesrole']; - if (!is_array($roles) || !isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if (!isset($role['role'])) { - $this->_usesroletaskMustHaveRoleTask('usesrole', 'role'); - $fail = true; - } else { - if (!isset($role['channel'])) { - if (!isset($role['uri'])) { - $this->_usesroletaskMustHaveChannelOrUri($role['role'], 'usesrole'); - $fail = true; - } - } elseif (!isset($role['package'])) { - $this->_usesroletaskMustHavePackage($role['role'], 'usesrole'); - $fail = true; - } - } - } - } - if (array_key_exists('usestask', $this->_packageInfo)) { - $roles = $this->_packageInfo['usestask']; - if (!is_array($roles) || !isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if (!isset($role['task'])) { - $this->_usesroletaskMustHaveRoleTask('usestask', 'task'); - $fail = true; - } else { - if (!isset($role['channel'])) { - if (!isset($role['uri'])) { - $this->_usesroletaskMustHaveChannelOrUri($role['task'], 'usestask'); - $fail = true; - } - } elseif (!isset($role['package'])) { - $this->_usesroletaskMustHavePackage($role['task'], 'usestask'); - $fail = true; - } - } - } - } - - if ($fail) { - return false; - } - - $list = $this->_packageInfo['contents']; - if (isset($list['dir']) && is_array($list['dir']) && isset($list['dir'][0])) { - $this->_multipleToplevelDirNotAllowed(); - return $this->_isValid = 0; - } - - $this->_validateFilelist(); - $this->_validateRelease(); - if (!$this->_stack->hasErrors()) { - $chan = $this->_pf->_registry->getChannel($this->_pf->getChannel(), true); - if (PEAR::isError($chan)) { - $this->_unknownChannel($this->_pf->getChannel()); - } else { - $valpack = $chan->getValidationPackage(); - // for channel validator packages, always use the default PEAR validator. - // otherwise, they can't be installed or packaged - $validator = $chan->getValidationObject($this->_pf->getPackage()); - if (!$validator) { - $this->_stack->push(__FUNCTION__, 'error', - array('channel' => $chan->getName(), - 'package' => $this->_pf->getPackage(), - 'name' => $valpack['_content'], - 'version' => $valpack['attribs']['version']), - 'package "%channel%/%package%" cannot be properly validated without ' . - 'validation package "%channel%/%name%-%version%"'); - return $this->_isValid = 0; - } - $validator->setPackageFile($this->_pf); - $validator->validate($state); - $failures = $validator->getFailures(); - foreach ($failures['errors'] as $error) { - $this->_stack->push(__FUNCTION__, 'error', $error, - 'Channel validator error: field "%field%" - %reason%'); - } - foreach ($failures['warnings'] as $warning) { - $this->_stack->push(__FUNCTION__, 'warning', $warning, - 'Channel validator warning: field "%field%" - %reason%'); - } - } - } - - $this->_pf->_isValid = $this->_isValid = !$this->_stack->hasErrors('error'); - if ($this->_isValid && $state == PEAR_VALIDATE_PACKAGING && !$this->_filesValid) { - if ($this->_pf->getPackageType() == 'bundle') { - if ($this->_analyzeBundledPackages()) { - $this->_filesValid = $this->_pf->_filesValid = true; - } else { - $this->_pf->_isValid = $this->_isValid = 0; - } - } else { - if (!$this->_analyzePhpFiles()) { - $this->_pf->_isValid = $this->_isValid = 0; - } else { - $this->_filesValid = $this->_pf->_filesValid = true; - } - } - } - - if ($this->_isValid) { - return $this->_pf->_isValid = $this->_isValid = $state; - } - - return $this->_pf->_isValid = $this->_isValid = 0; - } - - function _stupidSchemaValidate($structure, $xml, $root) - { - if (!is_array($xml)) { - $xml = array(); - } - $keys = array_keys($xml); - reset($keys); - $key = current($keys); - while ($key == 'attribs' || $key == '_contents') { - $key = next($keys); - } - $unfoundtags = $optionaltags = array(); - $ret = true; - $mismatch = false; - foreach ($structure as $struc) { - if ($key) { - $tag = $xml[$key]; - } - $test = $this->_processStructure($struc); - if (isset($test['choices'])) { - $loose = true; - foreach ($test['choices'] as $choice) { - if ($key == $choice['tag']) { - $key = next($keys); - while ($key == 'attribs' || $key == '_contents') { - $key = next($keys); - } - $unfoundtags = $optionaltags = array(); - $mismatch = false; - if ($key && $key != $choice['tag'] && isset($choice['multiple'])) { - $unfoundtags[] = $choice['tag']; - $optionaltags[] = $choice['tag']; - if ($key) { - $mismatch = true; - } - } - $ret &= $this->_processAttribs($choice, $tag, $root); - continue 2; - } else { - $unfoundtags[] = $choice['tag']; - $mismatch = true; - } - if (!isset($choice['multiple']) || $choice['multiple'] != '*') { - $loose = false; - } else { - $optionaltags[] = $choice['tag']; - } - } - if (!$loose) { - $this->_invalidTagOrder($unfoundtags, $key, $root); - return false; - } - } else { - if ($key != $test['tag']) { - if (isset($test['multiple']) && $test['multiple'] != '*') { - $unfoundtags[] = $test['tag']; - $this->_invalidTagOrder($unfoundtags, $key, $root); - return false; - } else { - if ($key) { - $mismatch = true; - } - $unfoundtags[] = $test['tag']; - $optionaltags[] = $test['tag']; - } - if (!isset($test['multiple'])) { - $this->_invalidTagOrder($unfoundtags, $key, $root); - return false; - } - continue; - } else { - $unfoundtags = $optionaltags = array(); - $mismatch = false; - } - $key = next($keys); - while ($key == 'attribs' || $key == '_contents') { - $key = next($keys); - } - if ($key && $key != $test['tag'] && isset($test['multiple'])) { - $unfoundtags[] = $test['tag']; - $optionaltags[] = $test['tag']; - $mismatch = true; - } - $ret &= $this->_processAttribs($test, $tag, $root); - continue; - } - } - if (!$mismatch && count($optionaltags)) { - // don't error out on any optional tags - $unfoundtags = array_diff($unfoundtags, $optionaltags); - } - if (count($unfoundtags)) { - $this->_invalidTagOrder($unfoundtags, $key, $root); - } elseif ($key) { - // unknown tags - $this->_invalidTagOrder('*no tags allowed here*', $key, $root); - while ($key = next($keys)) { - $this->_invalidTagOrder('*no tags allowed here*', $key, $root); - } - } - return $ret; - } - - function _processAttribs($choice, $tag, $context) - { - if (isset($choice['attribs'])) { - if (!is_array($tag)) { - $tag = array($tag); - } - $tags = $tag; - if (!isset($tags[0])) { - $tags = array($tags); - } - $ret = true; - foreach ($tags as $i => $tag) { - if (!is_array($tag) || !isset($tag['attribs'])) { - foreach ($choice['attribs'] as $attrib) { - if ($attrib{0} != '?') { - $ret &= $this->_tagHasNoAttribs($choice['tag'], - $context); - continue 2; - } - } - } - foreach ($choice['attribs'] as $attrib) { - if ($attrib{0} != '?') { - if (!isset($tag['attribs'][$attrib])) { - $ret &= $this->_tagMissingAttribute($choice['tag'], - $attrib, $context); - } - } - } - } - return $ret; - } - return true; - } - - function _processStructure($key) - { - $ret = array(); - if (count($pieces = explode('|', $key)) > 1) { - $ret['choices'] = array(); - foreach ($pieces as $piece) { - $ret['choices'][] = $this->_processStructure($piece); - } - return $ret; - } - $multi = $key{0}; - if ($multi == '+' || $multi == '*') { - $ret['multiple'] = $key{0}; - $key = substr($key, 1); - } - if (count($attrs = explode('->', $key)) > 1) { - $ret['tag'] = array_shift($attrs); - $ret['attribs'] = $attrs; - } else { - $ret['tag'] = $key; - } - return $ret; - } - - function _validateStabilityVersion() - { - $structure = array('release', 'api'); - $a = $this->_stupidSchemaValidate($structure, $this->_packageInfo['version'], ''); - $a &= $this->_stupidSchemaValidate($structure, $this->_packageInfo['stability'], ''); - if ($a) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $this->_packageInfo['version']['release'])) { - $this->_invalidVersion('release', $this->_packageInfo['version']['release']); - } - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $this->_packageInfo['version']['api'])) { - $this->_invalidVersion('api', $this->_packageInfo['version']['api']); - } - if (!in_array($this->_packageInfo['stability']['release'], - array('snapshot', 'devel', 'alpha', 'beta', 'stable'))) { - $this->_invalidState('release', $this->_packageInfo['stability']['release']); - } - if (!in_array($this->_packageInfo['stability']['api'], - array('devel', 'alpha', 'beta', 'stable'))) { - $this->_invalidState('api', $this->_packageInfo['stability']['api']); - } - } - } - - function _validateMaintainers() - { - $structure = - array( - 'name', - 'user', - 'email', - 'active', - ); - foreach (array('lead', 'developer', 'contributor', 'helper') as $type) { - if (!isset($this->_packageInfo[$type])) { - continue; - } - if (isset($this->_packageInfo[$type][0])) { - foreach ($this->_packageInfo[$type] as $lead) { - $this->_stupidSchemaValidate($structure, $lead, '<' . $type . '>'); - } - } else { - $this->_stupidSchemaValidate($structure, $this->_packageInfo[$type], - '<' . $type . '>'); - } - } - } - - function _validatePhpDep($dep, $installcondition = false) - { - $structure = array( - 'min', - '*max', - '*exclude', - ); - $type = $installcondition ? '' : ''; - $this->_stupidSchemaValidate($structure, $dep, $type); - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/', - $dep['min'])) { - $this->_invalidVersion($type . '', $dep['min']); - } - } - if (isset($dep['max'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/', - $dep['max'])) { - $this->_invalidVersion($type . '', $dep['max']); - } - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (!preg_match( - '/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/', - $exclude)) { - $this->_invalidVersion($type . '', $exclude); - } - } - } - } - - function _validatePearinstallerDep($dep) - { - $structure = array( - 'min', - '*max', - '*recommended', - '*exclude', - ); - $this->_stupidSchemaValidate($structure, $dep, ''); - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['min'])) { - $this->_invalidVersion('', - $dep['min']); - } - } - if (isset($dep['max'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['max'])) { - $this->_invalidVersion('', - $dep['max']); - } - } - if (isset($dep['recommended'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['recommended'])) { - $this->_invalidVersion('', - $dep['recommended']); - } - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $exclude)) { - $this->_invalidVersion('', - $exclude); - } - } - } - } - - function _validatePackageDep($dep, $group, $type = '') - { - if (isset($dep['uri'])) { - if (isset($dep['conflicts'])) { - $structure = array( - 'name', - 'uri', - 'conflicts', - '*providesextension', - ); - } else { - $structure = array( - 'name', - 'uri', - '*providesextension', - ); - } - } else { - if (isset($dep['conflicts'])) { - $structure = array( - 'name', - 'channel', - '*min', - '*max', - '*exclude', - 'conflicts', - '*providesextension', - ); - } else { - $structure = array( - 'name', - 'channel', - '*min', - '*max', - '*recommended', - '*exclude', - '*nodefault', - '*providesextension', - ); - } - } - if (isset($dep['name'])) { - $type .= '' . $dep['name'] . ''; - } - $this->_stupidSchemaValidate($structure, $dep, '' . $group . $type); - if (isset($dep['uri']) && (isset($dep['min']) || isset($dep['max']) || - isset($dep['recommended']) || isset($dep['exclude']))) { - $this->_uriDepsCannotHaveVersioning('' . $group . $type); - } - if (isset($dep['channel']) && strtolower($dep['channel']) == '__uri') { - $this->_DepchannelCannotBeUri('' . $group . $type); - } - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['min'])) { - $this->_invalidVersion('' . $group . $type . '', $dep['min']); - } - } - if (isset($dep['max'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['max'])) { - $this->_invalidVersion('' . $group . $type . '', $dep['max']); - } - } - if (isset($dep['recommended'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['recommended'])) { - $this->_invalidVersion('' . $group . $type . '', - $dep['recommended']); - } - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $exclude)) { - $this->_invalidVersion('' . $group . $type . '', - $exclude); - } - } - } - } - - function _validateSubpackageDep($dep, $group) - { - $this->_validatePackageDep($dep, $group, ''); - if (isset($dep['providesextension'])) { - $this->_subpackageCannotProvideExtension(isset($dep['name']) ? $dep['name'] : ''); - } - if (isset($dep['conflicts'])) { - $this->_subpackagesCannotConflict(isset($dep['name']) ? $dep['name'] : ''); - } - } - - function _validateExtensionDep($dep, $group = false, $installcondition = false) - { - if (isset($dep['conflicts'])) { - $structure = array( - 'name', - '*min', - '*max', - '*exclude', - 'conflicts', - ); - } else { - $structure = array( - 'name', - '*min', - '*max', - '*recommended', - '*exclude', - ); - } - if ($installcondition) { - $type = ''; - } else { - $type = '' . $group . ''; - } - if (isset($dep['name'])) { - $type .= '' . $dep['name'] . ''; - } - $this->_stupidSchemaValidate($structure, $dep, $type); - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['min'])) { - $this->_invalidVersion(substr($type, 1) . '_invalidVersion(substr($type, 1) . '_invalidVersion(substr($type, 1) . '_invalidVersion(substr($type, 1) . '' : ''; - if ($this->_stupidSchemaValidate($structure, $dep, $type)) { - if ($dep['name'] == '*') { - if (array_key_exists('conflicts', $dep)) { - $this->_cannotConflictWithAllOs($type); - } - } - } - } - - function _validateArchDep($dep, $installcondition = false) - { - $structure = array( - 'pattern', - '*conflicts', - ); - $type = $installcondition ? '' : ''; - $this->_stupidSchemaValidate($structure, $dep, $type); - } - - function _validateInstallConditions($cond, $release) - { - $structure = array( - '*php', - '*extension', - '*os', - '*arch', - ); - if (!$this->_stupidSchemaValidate($structure, - $cond, $release)) { - return false; - } - foreach (array('php', 'extension', 'os', 'arch') as $type) { - if (isset($cond[$type])) { - $iter = $cond[$type]; - if (!is_array($iter) || !isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - if ($type == 'extension') { - $this->{"_validate{$type}Dep"}($package, false, true); - } else { - $this->{"_validate{$type}Dep"}($package, true); - } - } - } - } - } - - function _validateDependencies() - { - $structure = array( - 'required', - '*optional', - '*group->name->hint' - ); - if (!$this->_stupidSchemaValidate($structure, - $this->_packageInfo['dependencies'], '')) { - return false; - } - foreach (array('required', 'optional') as $simpledep) { - if (isset($this->_packageInfo['dependencies'][$simpledep])) { - if ($simpledep == 'optional') { - $structure = array( - '*package', - '*subpackage', - '*extension', - ); - } else { - $structure = array( - 'php', - 'pearinstaller', - '*package', - '*subpackage', - '*extension', - '*os', - '*arch', - ); - } - if ($this->_stupidSchemaValidate($structure, - $this->_packageInfo['dependencies'][$simpledep], - "<$simpledep>")) { - foreach (array('package', 'subpackage', 'extension') as $type) { - if (isset($this->_packageInfo['dependencies'][$simpledep][$type])) { - $iter = $this->_packageInfo['dependencies'][$simpledep][$type]; - if (!isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - if ($type != 'extension') { - if (isset($package['uri'])) { - if (isset($package['channel'])) { - $this->_UrlOrChannel($type, - $package['name']); - } - } else { - if (!isset($package['channel'])) { - $this->_NoChannel($type, $package['name']); - } - } - } - $this->{"_validate{$type}Dep"}($package, "<$simpledep>"); - } - } - } - if ($simpledep == 'optional') { - continue; - } - foreach (array('php', 'pearinstaller', 'os', 'arch') as $type) { - if (isset($this->_packageInfo['dependencies'][$simpledep][$type])) { - $iter = $this->_packageInfo['dependencies'][$simpledep][$type]; - if (!isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - $this->{"_validate{$type}Dep"}($package); - } - } - } - } - } - } - if (isset($this->_packageInfo['dependencies']['group'])) { - $groups = $this->_packageInfo['dependencies']['group']; - if (!isset($groups[0])) { - $groups = array($groups); - } - $structure = array( - '*package', - '*subpackage', - '*extension', - ); - foreach ($groups as $group) { - if ($this->_stupidSchemaValidate($structure, $group, '')) { - if (!PEAR_Validate::validGroupName($group['attribs']['name'])) { - $this->_invalidDepGroupName($group['attribs']['name']); - } - foreach (array('package', 'subpackage', 'extension') as $type) { - if (isset($group[$type])) { - $iter = $group[$type]; - if (!isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - if ($type != 'extension') { - if (isset($package['uri'])) { - if (isset($package['channel'])) { - $this->_UrlOrChannelGroup($type, - $package['name'], - $group['name']); - } - } else { - if (!isset($package['channel'])) { - $this->_NoChannelGroup($type, - $package['name'], - $group['name']); - } - } - } - $this->{"_validate{$type}Dep"}($package, ''); - } - } - } - } - } - } - } - - function _validateCompatible() - { - $compat = $this->_packageInfo['compatible']; - if (!isset($compat[0])) { - $compat = array($compat); - } - $required = array('name', 'channel', 'min', 'max', '*exclude'); - foreach ($compat as $package) { - $type = ''; - if (is_array($package) && array_key_exists('name', $package)) { - $type .= '' . $package['name'] . ''; - } - $this->_stupidSchemaValidate($required, $package, $type); - if (is_array($package) && array_key_exists('min', $package)) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $package['min'])) { - $this->_invalidVersion(substr($type, 1) . '_invalidVersion(substr($type, 1) . '_invalidVersion(substr($type, 1) . '_NoBundledPackages(); - } - if (!is_array($list['bundledpackage']) || !isset($list['bundledpackage'][0])) { - return $this->_AtLeast2BundledPackages(); - } - foreach ($list['bundledpackage'] as $package) { - if (!is_string($package)) { - $this->_bundledPackagesMustBeFilename(); - } - } - } - - function _validateFilelist($list = false, $allowignore = false, $dirs = '') - { - $iscontents = false; - if (!$list) { - $iscontents = true; - $list = $this->_packageInfo['contents']; - if (isset($this->_packageInfo['bundle'])) { - return $this->_validateBundle($list); - } - } - if ($allowignore) { - $struc = array( - '*install->name->as', - '*ignore->name' - ); - } else { - $struc = array( - '*dir->name->?baseinstalldir', - '*file->name->role->?baseinstalldir->?md5sum' - ); - if (isset($list['dir']) && isset($list['file'])) { - // stave off validation errors without requiring a set order. - $_old = $list; - if (isset($list['attribs'])) { - $list = array('attribs' => $_old['attribs']); - } - $list['dir'] = $_old['dir']; - $list['file'] = $_old['file']; - } - } - if (!isset($list['attribs']) || !isset($list['attribs']['name'])) { - $unknown = $allowignore ? '' : ''; - $dirname = $iscontents ? '' : $unknown; - } else { - $dirname = ''; - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $list['attribs']['name']))) { - // file contains .. parent directory or . cur directory - $this->_invalidDirName($list['attribs']['name']); - } - } - $res = $this->_stupidSchemaValidate($struc, $list, $dirname); - if ($allowignore && $res) { - $ignored_or_installed = array(); - $this->_pf->getFilelist(); - $fcontents = $this->_pf->getContents(); - $filelist = array(); - if (!isset($fcontents['dir']['file'][0])) { - $fcontents['dir']['file'] = array($fcontents['dir']['file']); - } - foreach ($fcontents['dir']['file'] as $file) { - $filelist[$file['attribs']['name']] = true; - } - if (isset($list['install'])) { - if (!isset($list['install'][0])) { - $list['install'] = array($list['install']); - } - foreach ($list['install'] as $file) { - if (!isset($filelist[$file['attribs']['name']])) { - $this->_notInContents($file['attribs']['name'], 'install'); - continue; - } - if (array_key_exists($file['attribs']['name'], $ignored_or_installed)) { - $this->_multipleInstallAs($file['attribs']['name']); - } - if (!isset($ignored_or_installed[$file['attribs']['name']])) { - $ignored_or_installed[$file['attribs']['name']] = array(); - } - $ignored_or_installed[$file['attribs']['name']][] = 1; - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $file['attribs']['as']))) { - // file contains .. parent directory or . cur directory references - $this->_invalidFileInstallAs($file['attribs']['name'], - $file['attribs']['as']); - } - } - } - if (isset($list['ignore'])) { - if (!isset($list['ignore'][0])) { - $list['ignore'] = array($list['ignore']); - } - foreach ($list['ignore'] as $file) { - if (!isset($filelist[$file['attribs']['name']])) { - $this->_notInContents($file['attribs']['name'], 'ignore'); - continue; - } - if (array_key_exists($file['attribs']['name'], $ignored_or_installed)) { - $this->_ignoreAndInstallAs($file['attribs']['name']); - } - } - } - } - if (!$allowignore && isset($list['file'])) { - if (is_string($list['file'])) { - $this->_oldStyleFileNotAllowed(); - return false; - } - if (!isset($list['file'][0])) { - // single file - $list['file'] = array($list['file']); - } - foreach ($list['file'] as $i => $file) - { - if (isset($file['attribs']) && isset($file['attribs']['name'])) { - if ($file['attribs']['name']{0} == '.' && - $file['attribs']['name']{1} == '/') { - // name is something like "./doc/whatever.txt" - $this->_invalidFileName($file['attribs']['name'], $dirname); - } - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $file['attribs']['name']))) { - // file contains .. parent directory or . cur directory - $this->_invalidFileName($file['attribs']['name'], $dirname); - } - } - if (isset($file['attribs']) && isset($file['attribs']['role'])) { - if (!$this->_validateRole($file['attribs']['role'])) { - if (isset($this->_packageInfo['usesrole'])) { - $roles = $this->_packageInfo['usesrole']; - if (!isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if ($role['role'] = $file['attribs']['role']) { - $msg = 'This package contains role "%role%" and requires ' . - 'package "%package%" to be used'; - if (isset($role['uri'])) { - $params = array('role' => $role['role'], - 'package' => $role['uri']); - } else { - $params = array('role' => $role['role'], - 'package' => $this->_pf->_registry-> - parsedPackageNameToString(array('package' => - $role['package'], 'channel' => $role['channel']), - true)); - } - $this->_stack->push('_mustInstallRole', 'error', $params, $msg); - } - } - } - $this->_invalidFileRole($file['attribs']['name'], - $dirname, $file['attribs']['role']); - } - } - if (!isset($file['attribs'])) { - continue; - } - $save = $file['attribs']; - if ($dirs) { - $save['name'] = $dirs . '/' . $save['name']; - } - unset($file['attribs']); - if (count($file) && $this->_curState != PEAR_VALIDATE_DOWNLOADING) { // has tasks - foreach ($file as $task => $value) { - if ($tagClass = $this->_pf->getTask($task)) { - if (!is_array($value) || !isset($value[0])) { - $value = array($value); - } - foreach ($value as $v) { - $ret = call_user_func(array($tagClass, 'validateXml'), - $this->_pf, $v, $this->_pf->_config, $save); - if (is_array($ret)) { - $this->_invalidTask($task, $ret, isset($save['name']) ? - $save['name'] : ''); - } - } - } else { - if (isset($this->_packageInfo['usestask'])) { - $roles = $this->_packageInfo['usestask']; - if (!isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if ($role['task'] = $task) { - $msg = 'This package contains task "%task%" and requires ' . - 'package "%package%" to be used'; - if (isset($role['uri'])) { - $params = array('task' => $role['task'], - 'package' => $role['uri']); - } else { - $params = array('task' => $role['task'], - 'package' => $this->_pf->_registry-> - parsedPackageNameToString(array('package' => - $role['package'], 'channel' => $role['channel']), - true)); - } - $this->_stack->push('_mustInstallTask', 'error', - $params, $msg); - } - } - } - $this->_unknownTask($task, $save['name']); - } - } - } - } - } - if (isset($list['ignore'])) { - if (!$allowignore) { - $this->_ignoreNotAllowed('ignore'); - } - } - if (isset($list['install'])) { - if (!$allowignore) { - $this->_ignoreNotAllowed('install'); - } - } - if (isset($list['file'])) { - if ($allowignore) { - $this->_fileNotAllowed('file'); - } - } - if (isset($list['dir'])) { - if ($allowignore) { - $this->_fileNotAllowed('dir'); - } else { - if (!isset($list['dir'][0])) { - $list['dir'] = array($list['dir']); - } - foreach ($list['dir'] as $dir) { - if (isset($dir['attribs']) && isset($dir['attribs']['name'])) { - if ($dir['attribs']['name'] == '/' || - !isset($this->_packageInfo['contents']['dir']['dir'])) { - // always use nothing if the filelist has already been flattened - $newdirs = ''; - } elseif ($dirs == '') { - $newdirs = $dir['attribs']['name']; - } else { - $newdirs = $dirs . '/' . $dir['attribs']['name']; - } - } else { - $newdirs = $dirs; - } - $this->_validateFilelist($dir, $allowignore, $newdirs); - } - } - } - } - - function _validateRelease() - { - if (isset($this->_packageInfo['phprelease'])) { - $release = 'phprelease'; - if (isset($this->_packageInfo['providesextension'])) { - $this->_cannotProvideExtension($release); - } - if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) { - $this->_cannotHaveSrcpackage($release); - } - $releases = $this->_packageInfo['phprelease']; - if (!is_array($releases)) { - return true; - } - if (!isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*filelist', - ), $rel, ''); - } - } - foreach (array('', 'zend') as $prefix) { - $releasetype = $prefix . 'extsrcrelease'; - if (isset($this->_packageInfo[$releasetype])) { - $release = $releasetype; - if (!isset($this->_packageInfo['providesextension'])) { - $this->_mustProvideExtension($release); - } - if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) { - $this->_cannotHaveSrcpackage($release); - } - $releases = $this->_packageInfo[$releasetype]; - if (!is_array($releases)) { - return true; - } - if (!isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*configureoption->name->prompt->?default', - '*binarypackage', - '*filelist', - ), $rel, '<' . $releasetype . '>'); - if (isset($rel['binarypackage'])) { - if (!is_array($rel['binarypackage']) || !isset($rel['binarypackage'][0])) { - $rel['binarypackage'] = array($rel['binarypackage']); - } - foreach ($rel['binarypackage'] as $bin) { - if (!is_string($bin)) { - $this->_binaryPackageMustBePackagename(); - } - } - } - } - } - $releasetype = 'extbinrelease'; - if (isset($this->_packageInfo[$releasetype])) { - $release = $releasetype; - if (!isset($this->_packageInfo['providesextension'])) { - $this->_mustProvideExtension($release); - } - if (isset($this->_packageInfo['channel']) && - !isset($this->_packageInfo['srcpackage'])) { - $this->_mustSrcPackage($release); - } - if (isset($this->_packageInfo['uri']) && !isset($this->_packageInfo['srcuri'])) { - $this->_mustSrcuri($release); - } - $releases = $this->_packageInfo[$releasetype]; - if (!is_array($releases)) { - return true; - } - if (!isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*filelist', - ), $rel, '<' . $releasetype . '>'); - } - } - } - if (isset($this->_packageInfo['bundle'])) { - $release = 'bundle'; - if (isset($this->_packageInfo['providesextension'])) { - $this->_cannotProvideExtension($release); - } - if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) { - $this->_cannotHaveSrcpackage($release); - } - $releases = $this->_packageInfo['bundle']; - if (!is_array($releases) || !isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*filelist', - ), $rel, ''); - } - } - foreach ($releases as $rel) { - if (is_array($rel) && array_key_exists('installconditions', $rel)) { - $this->_validateInstallConditions($rel['installconditions'], - "<$release>"); - } - if (is_array($rel) && array_key_exists('filelist', $rel)) { - if ($rel['filelist']) { - - $this->_validateFilelist($rel['filelist'], true); - } - } - } - } - - /** - * This is here to allow role extension through plugins - * @param string - */ - function _validateRole($role) - { - return in_array($role, PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType())); - } - - function _pearVersionTooLow($version) - { - $this->_stack->push(__FUNCTION__, 'error', - array('version' => $version), - 'This package.xml requires PEAR version %version% to parse properly, we are ' . - 'version 1.9.4'); - } - - function _invalidTagOrder($oktags, $actual, $root) - { - $this->_stack->push(__FUNCTION__, 'error', - array('oktags' => $oktags, 'actual' => $actual, 'root' => $root), - 'Invalid tag order in %root%, found <%actual%> expected one of "%oktags%"'); - } - - function _ignoreNotAllowed($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '<%type%> is not allowed inside global , only inside ' . - '//, use and only'); - } - - function _fileNotAllowed($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '<%type%> is not allowed inside release , only inside ' . - ', use and only'); - } - - function _oldStyleFileNotAllowed() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'Old-style name is not allowed. Use' . - ''); - } - - function _tagMissingAttribute($tag, $attr, $context) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag, - 'attribute' => $attr, 'context' => $context), - 'tag <%tag%> in context "%context%" has no attribute "%attribute%"'); - } - - function _tagHasNoAttribs($tag, $context) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag, - 'context' => $context), - 'tag <%tag%> has no attributes in context "%context%"'); - } - - function _invalidInternalStructure() - { - $this->_stack->push(__FUNCTION__, 'exception', array(), - 'internal array was not generated by compatible parser, or extreme parser error, cannot continue'); - } - - function _invalidFileRole($file, $dir, $role) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'file' => $file, 'dir' => $dir, 'role' => $role, - 'roles' => PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType())), - 'File "%file%" in directory "%dir%" has invalid role "%role%", should be one of %roles%'); - } - - function _invalidFileName($file, $dir) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'file' => $file), - 'File "%file%" in directory "%dir%" cannot begin with "./" or contain ".."'); - } - - function _invalidFileInstallAs($file, $as) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'file' => $file, 'as' => $as), - 'File "%file%" cannot contain "./" or contain ".."'); - } - - function _invalidDirName($dir) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'dir' => $file), - 'Directory "%dir%" cannot begin with "./" or contain ".."'); - } - - function _filelistCannotContainFile($filelist) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $filelist), - '<%tag%> can only contain , contains . Use ' . - ' as the first dir element'); - } - - function _filelistMustContainDir($filelist) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $filelist), - '<%tag%> must contain . Use as the ' . - 'first dir element'); - } - - function _tagCannotBeEmpty($tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag), - '<%tag%> cannot be empty (<%tag%/>)'); - } - - function _UrlOrChannel($type, $name) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name), - 'Required dependency <%type%> "%name%" can have either url OR ' . - 'channel attributes, and not both'); - } - - function _NoChannel($type, $name) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name), - 'Required dependency <%type%> "%name%" must have either url OR ' . - 'channel attributes'); - } - - function _UrlOrChannelGroup($type, $name, $group) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name, 'group' => $group), - 'Group "%group%" dependency <%type%> "%name%" can have either url OR ' . - 'channel attributes, and not both'); - } - - function _NoChannelGroup($type, $name, $group) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name, 'group' => $group), - 'Group "%group%" dependency <%type%> "%name%" must have either url OR ' . - 'channel attributes'); - } - - function _unknownChannel($channel) - { - $this->_stack->push(__FUNCTION__, 'error', array('channel' => $channel), - 'Unknown channel "%channel%"'); - } - - function _noPackageVersion() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'package.xml tag has no version attribute, or version is not 2.0'); - } - - function _NoBundledPackages() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'No tag was found in , required for bundle packages'); - } - - function _AtLeast2BundledPackages() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'At least 2 packages must be bundled in a bundle package'); - } - - function _ChannelOrUri($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Bundled package "%name%" can have either a uri or a channel, not both'); - } - - function _noChildTag($child, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('child' => $child, 'tag' => $tag), - 'Tag <%tag%> is missing child tag <%child%>'); - } - - function _invalidVersion($type, $value) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, 'value' => $value), - 'Version type <%type%> is not a valid version (%value%)'); - } - - function _invalidState($type, $value) - { - $states = array('stable', 'beta', 'alpha', 'devel'); - if ($type != 'api') { - $states[] = 'snapshot'; - } - if (strtolower($value) == 'rc') { - $this->_stack->push(__FUNCTION__, 'error', - array('version' => $this->_packageInfo['version']['release']), - 'RC is not a state, it is a version postfix, try %version%RC1, stability beta'); - } - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, 'value' => $value, - 'types' => $states), - 'Stability type <%type%> is not a valid stability (%value%), must be one of ' . - '%types%'); - } - - function _invalidTask($task, $ret, $file) - { - switch ($ret[0]) { - case PEAR_TASK_ERROR_MISSING_ATTRIB : - $info = array('attrib' => $ret[1], 'task' => $task, 'file' => $file); - $msg = 'task <%task%> is missing attribute "%attrib%" in file %file%'; - break; - case PEAR_TASK_ERROR_NOATTRIBS : - $info = array('task' => $task, 'file' => $file); - $msg = 'task <%task%> has no attributes in file %file%'; - break; - case PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE : - $info = array('attrib' => $ret[1], 'values' => $ret[3], - 'was' => $ret[2], 'task' => $task, 'file' => $file); - $msg = 'task <%task%> attribute "%attrib%" has the wrong value "%was%" '. - 'in file %file%, expecting one of "%values%"'; - break; - case PEAR_TASK_ERROR_INVALID : - $info = array('reason' => $ret[1], 'task' => $task, 'file' => $file); - $msg = 'task <%task%> in file %file% is invalid because of "%reason%"'; - break; - } - $this->_stack->push(__FUNCTION__, 'error', $info, $msg); - } - - function _unknownTask($task, $file) - { - $this->_stack->push(__FUNCTION__, 'error', array('task' => $task, 'file' => $file), - 'Unknown task "%task%" passed in file '); - } - - function _subpackageCannotProvideExtension($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Subpackage dependency "%name%" cannot use , ' . - 'only package dependencies can use this tag'); - } - - function _subpackagesCannotConflict($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Subpackage dependency "%name%" cannot use , ' . - 'only package dependencies can use this tag'); - } - - function _cannotProvideExtension($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<%release%> packages cannot use , only extbinrelease, extsrcrelease, zendextsrcrelease, and zendextbinrelease can provide a PHP extension'); - } - - function _mustProvideExtension($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<%release%> packages must use to indicate which PHP extension is provided'); - } - - function _cannotHaveSrcpackage($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<%release%> packages cannot specify a source code package, only extension binaries may use the tag'); - } - - function _mustSrcPackage($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '/ packages must specify a source code package with '); - } - - function _mustSrcuri($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '/ packages must specify a source code package with '); - } - - function _uriDepsCannotHaveVersioning($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '%type%: dependencies with a tag cannot have any versioning information'); - } - - function _conflictingDepsCannotHaveVersioning($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '%type%: conflicting dependencies cannot have versioning info, use to ' . - 'exclude specific versions of a dependency'); - } - - function _DepchannelCannotBeUri($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '%type%: channel cannot be __uri, this is a pseudo-channel reserved for uri ' . - 'dependencies only'); - } - - function _bundledPackagesMustBeFilename() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - ' tags must contain only the filename of a package release ' . - 'in the bundle'); - } - - function _binaryPackageMustBePackagename() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - ' tags must contain the name of a package that is ' . - 'a compiled version of this extsrc/zendextsrc package'); - } - - function _fileNotFound($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'File "%file%" in package.xml does not exist'); - } - - function _notInContents($file, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file, 'tag' => $tag), - '<%tag% name="%file%"> is invalid, file is not in '); - } - - function _cannotValidateNoPathSet() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'Cannot validate files, no path to package file is set (use setPackageFile())'); - } - - function _usesroletaskMustHaveChannelOrUri($role, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('role' => $role, 'tag' => $tag), - '<%tag%> for role "%role%" must contain either , or and '); - } - - function _usesroletaskMustHavePackage($role, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('role' => $role, 'tag' => $tag), - '<%tag%> for role "%role%" must contain '); - } - - function _usesroletaskMustHaveRoleTask($tag, $type) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag, 'type' => $type), - '<%tag%> must contain <%type%> defining the %type% to be used'); - } - - function _cannotConflictWithAllOs($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag), - '%tag% cannot conflict with all OSes'); - } - - function _invalidDepGroupName($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Invalid dependency group name "%name%"'); - } - - function _multipleToplevelDirNotAllowed() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'Multiple top-level tags are not allowed. Enclose them ' . - 'in a '); - } - - function _multipleInstallAs($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Only one tag is allowed for file "%file%"'); - } - - function _ignoreAndInstallAs($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Cannot have both and tags for file "%file%"'); - } - - function _analyzeBundledPackages() - { - if (!$this->_isValid) { - return false; - } - if (!$this->_pf->getPackageType() == 'bundle') { - return false; - } - if (!isset($this->_pf->_packageFile)) { - return false; - } - $dir_prefix = dirname($this->_pf->_packageFile); - $common = new PEAR_Common; - $log = isset($this->_pf->_logger) ? array(&$this->_pf->_logger, 'log') : - array($common, 'log'); - $info = $this->_pf->getContents(); - $info = $info['bundledpackage']; - if (!is_array($info)) { - $info = array($info); - } - $pkg = &new PEAR_PackageFile($this->_pf->_config); - foreach ($info as $package) { - if (!file_exists($dir_prefix . DIRECTORY_SEPARATOR . $package)) { - $this->_fileNotFound($dir_prefix . DIRECTORY_SEPARATOR . $package); - $this->_isValid = 0; - continue; - } - call_user_func_array($log, array(1, "Analyzing bundled package $package")); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $ret = $pkg->fromAnyFile($dir_prefix . DIRECTORY_SEPARATOR . $package, - PEAR_VALIDATE_NORMAL); - PEAR::popErrorHandling(); - if (PEAR::isError($ret)) { - call_user_func_array($log, array(0, "ERROR: package $package is not a valid " . - 'package')); - $inf = $ret->getUserInfo(); - if (is_array($inf)) { - foreach ($inf as $err) { - call_user_func_array($log, array(1, $err['message'])); - } - } - return false; - } - } - return true; - } - - function _analyzePhpFiles() - { - if (!$this->_isValid) { - return false; - } - if (!isset($this->_pf->_packageFile)) { - $this->_cannotValidateNoPathSet(); - return false; - } - $dir_prefix = dirname($this->_pf->_packageFile); - $common = new PEAR_Common; - $log = isset($this->_pf->_logger) ? array(&$this->_pf->_logger, 'log') : - array(&$common, 'log'); - $info = $this->_pf->getContents(); - if (!$info || !isset($info['dir']['file'])) { - $this->_tagCannotBeEmpty('contents>_fileNotFound($dir_prefix . DIRECTORY_SEPARATOR . $file); - $this->_isValid = 0; - continue; - } - if (in_array($fa['role'], PEAR_Installer_Role::getPhpRoles()) && $dir_prefix) { - call_user_func_array($log, array(1, "Analyzing $file")); - $srcinfo = $this->analyzeSourceCode($dir_prefix . DIRECTORY_SEPARATOR . $file); - if ($srcinfo) { - $provides = array_merge($provides, $this->_buildProvidesArray($srcinfo)); - } - } - } - $this->_packageName = $pn = $this->_pf->getPackage(); - $pnl = strlen($pn); - foreach ($provides as $key => $what) { - if (isset($what['explicit']) || !$what) { - // skip conformance checks if the provides entry is - // specified in the package.xml file - continue; - } - extract($what); - if ($type == 'class') { - if (!strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_stack->push(__FUNCTION__, 'warning', - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn), - 'in %file%: %type% "%name%" not prefixed with package name "%package%"'); - } elseif ($type == 'function') { - if (strstr($name, '::') || !strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_stack->push(__FUNCTION__, 'warning', - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn), - 'in %file%: %type% "%name%" not prefixed with package name "%package%"'); - } - } - return $this->_isValid; - } - - /** - * Analyze the source code of the given PHP file - * - * @param string Filename of the PHP file - * @param boolean whether to analyze $file as the file contents - * @return mixed - */ - function analyzeSourceCode($file, $string = false) - { - if (!function_exists("token_get_all")) { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Parser error: token_get_all() function must exist to analyze source code, PHP may have been compiled with --disable-tokenizer'); - return false; - } - - if (!defined('T_DOC_COMMENT')) { - define('T_DOC_COMMENT', T_COMMENT); - } - - if (!defined('T_INTERFACE')) { - define('T_INTERFACE', -1); - } - - if (!defined('T_IMPLEMENTS')) { - define('T_IMPLEMENTS', -1); - } - - if ($string) { - $contents = $file; - } else { - if (!$fp = @fopen($file, "r")) { - return false; - } - fclose($fp); - $contents = file_get_contents($file); - } - - // Silence this function so we can catch PHP Warnings and show our own custom message - $tokens = @token_get_all($contents); - if (isset($php_errormsg)) { - if (isset($this->_stack)) { - $pn = $this->_pf->getPackage(); - $this->_stack->push(__FUNCTION__, 'warning', - array('file' => $file, 'package' => $pn), - 'in %file%: Could not process file for unkown reasons,' . - ' possibly a PHP parse error in %file% from %package%'); - } - } -/* - for ($i = 0; $i < sizeof($tokens); $i++) { - @list($token, $data) = $tokens[$i]; - if (is_string($token)) { - var_dump($token); - } else { - print token_name($token) . ' '; - var_dump(rtrim($data)); - } - } -*/ - $look_for = 0; - $paren_level = 0; - $bracket_level = 0; - $brace_level = 0; - $lastphpdoc = ''; - $current_class = ''; - $current_interface = ''; - $current_class_level = -1; - $current_function = ''; - $current_function_level = -1; - $declared_classes = array(); - $declared_interfaces = array(); - $declared_functions = array(); - $declared_methods = array(); - $used_classes = array(); - $used_functions = array(); - $extends = array(); - $implements = array(); - $nodeps = array(); - $inquote = false; - $interface = false; - for ($i = 0; $i < sizeof($tokens); $i++) { - if (is_array($tokens[$i])) { - list($token, $data) = $tokens[$i]; - } else { - $token = $tokens[$i]; - $data = ''; - } - - if ($inquote) { - if ($token != '"' && $token != T_END_HEREDOC) { - continue; - } else { - $inquote = false; - continue; - } - } - - switch ($token) { - case T_WHITESPACE : - continue; - case ';': - if ($interface) { - $current_function = ''; - $current_function_level = -1; - } - break; - case '"': - case T_START_HEREDOC: - $inquote = true; - break; - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case '{': $brace_level++; continue 2; - case '}': - $brace_level--; - if ($current_class_level == $brace_level) { - $current_class = ''; - $current_class_level = -1; - } - if ($current_function_level == $brace_level) { - $current_function = ''; - $current_function_level = -1; - } - continue 2; - case '[': $bracket_level++; continue 2; - case ']': $bracket_level--; continue 2; - case '(': $paren_level++; continue 2; - case ')': $paren_level--; continue 2; - case T_INTERFACE: - $interface = true; - case T_CLASS: - if (($current_class_level != -1) || ($current_function_level != -1)) { - if (isset($this->_stack)) { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Parser error: invalid PHP found in file "%file%"'); - } else { - PEAR::raiseError("Parser error: invalid PHP found in file \"$file\"", - PEAR_COMMON_ERROR_INVALIDPHP); - } - - return false; - } - case T_FUNCTION: - case T_NEW: - case T_EXTENDS: - case T_IMPLEMENTS: - $look_for = $token; - continue 2; - case T_STRING: - if (version_compare(zend_version(), '2.0', '<')) { - if (in_array(strtolower($data), - array('public', 'private', 'protected', 'abstract', - 'interface', 'implements', 'throw') - ) - ) { - if (isset($this->_stack)) { - $this->_stack->push(__FUNCTION__, 'warning', array( - 'file' => $file), - 'Error, PHP5 token encountered in %file%,' . - ' analysis should be in PHP5'); - } else { - PEAR::raiseError('Error: PHP5 token encountered in ' . $file . - 'packaging should be done in PHP 5'); - return false; - } - } - } - - if ($look_for == T_CLASS) { - $current_class = $data; - $current_class_level = $brace_level; - $declared_classes[] = $current_class; - } elseif ($look_for == T_INTERFACE) { - $current_interface = $data; - $current_class_level = $brace_level; - $declared_interfaces[] = $current_interface; - } elseif ($look_for == T_IMPLEMENTS) { - $implements[$current_class] = $data; - } elseif ($look_for == T_EXTENDS) { - $extends[$current_class] = $data; - } elseif ($look_for == T_FUNCTION) { - if ($current_class) { - $current_function = "$current_class::$data"; - $declared_methods[$current_class][] = $data; - } elseif ($current_interface) { - $current_function = "$current_interface::$data"; - $declared_methods[$current_interface][] = $data; - } else { - $current_function = $data; - $declared_functions[] = $current_function; - } - - $current_function_level = $brace_level; - $m = array(); - } elseif ($look_for == T_NEW) { - $used_classes[$data] = true; - } - - $look_for = 0; - continue 2; - case T_VARIABLE: - $look_for = 0; - continue 2; - case T_DOC_COMMENT: - case T_COMMENT: - if (preg_match('!^/\*\*\s!', $data)) { - $lastphpdoc = $data; - if (preg_match_all('/@nodep\s+(\S+)/', $lastphpdoc, $m)) { - $nodeps = array_merge($nodeps, $m[1]); - } - } - continue 2; - case T_DOUBLE_COLON: - $token = $tokens[$i - 1][0]; - if (!($token == T_WHITESPACE || $token == T_STRING || $token == T_STATIC)) { - if (isset($this->_stack)) { - $this->_stack->push(__FUNCTION__, 'warning', array('file' => $file), - 'Parser error: invalid PHP found in file "%file%"'); - } else { - PEAR::raiseError("Parser error: invalid PHP found in file \"$file\"", - PEAR_COMMON_ERROR_INVALIDPHP); - } - - return false; - } - - $class = $tokens[$i - 1][1]; - if (strtolower($class) != 'parent') { - $used_classes[$class] = true; - } - - continue 2; - } - } - - return array( - "source_file" => $file, - "declared_classes" => $declared_classes, - "declared_interfaces" => $declared_interfaces, - "declared_methods" => $declared_methods, - "declared_functions" => $declared_functions, - "used_classes" => array_diff(array_keys($used_classes), $nodeps), - "inheritance" => $extends, - "implements" => $implements, - ); - } - - /** - * Build a "provides" array from data returned by - * analyzeSourceCode(). The format of the built array is like - * this: - * - * array( - * 'class;MyClass' => 'array('type' => 'class', 'name' => 'MyClass'), - * ... - * ) - * - * - * @param array $srcinfo array with information about a source file - * as returned by the analyzeSourceCode() method. - * - * @return void - * - * @access private - * - */ - function _buildProvidesArray($srcinfo) - { - if (!$this->_isValid) { - return array(); - } - - $providesret = array(); - $file = basename($srcinfo['source_file']); - $pn = isset($this->_pf) ? $this->_pf->getPackage() : ''; - $pnl = strlen($pn); - foreach ($srcinfo['declared_classes'] as $class) { - $key = "class;$class"; - if (isset($providesret[$key])) { - continue; - } - - $providesret[$key] = - array('file'=> $file, 'type' => 'class', 'name' => $class); - if (isset($srcinfo['inheritance'][$class])) { - $providesret[$key]['extends'] = - $srcinfo['inheritance'][$class]; - } - } - - foreach ($srcinfo['declared_methods'] as $class => $methods) { - foreach ($methods as $method) { - $function = "$class::$method"; - $key = "function;$function"; - if ($method{0} == '_' || !strcasecmp($method, $class) || - isset($providesret[$key])) { - continue; - } - - $providesret[$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - foreach ($srcinfo['declared_functions'] as $function) { - $key = "function;$function"; - if ($function{0} == '_' || isset($providesret[$key])) { - continue; - } - - if (!strstr($function, '::') && strncasecmp($function, $pn, $pnl)) { - $warnings[] = "in1 " . $file . ": function \"$function\" not prefixed with package name \"$pn\""; - } - - $providesret[$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - - return $providesret; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/PackageFile/v2/rw.php b/3rdparty/PEAR/PackageFile/v2/rw.php deleted file mode 100644 index 58f76c55947c8419242ea72041f364e25e9c0764..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/PackageFile/v2/rw.php +++ /dev/null @@ -1,1604 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: rw.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a8 - */ -/** - * For base class - */ -require_once 'PEAR/PackageFile/v2.php'; -/** - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a8 - */ -class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2 -{ - /** - * @param string Extension name - * @return bool success of operation - */ - function setProvidesExtension($extension) - { - if (in_array($this->getPackageType(), - array('extsrc', 'extbin', 'zendextsrc', 'zendextbin'))) { - if (!isset($this->_packageInfo['providesextension'])) { - // ensure that the channel tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('usesrole', 'usestask', 'srcpackage', 'srcuri', 'phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), - $extension, 'providesextension'); - } - $this->_packageInfo['providesextension'] = $extension; - return true; - } - return false; - } - - function setPackage($package) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['attribs'])) { - $this->_packageInfo = array_merge(array('attribs' => array( - 'version' => '2.0', - 'xmlns' => 'http://pear.php.net/dtd/package-2.0', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => 'http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.0 - http://pear.php.net/dtd/package-2.0.xsd', - )), $this->_packageInfo); - } - if (!isset($this->_packageInfo['name'])) { - return $this->_packageInfo = array_merge(array('name' => $package), - $this->_packageInfo); - } - $this->_packageInfo['name'] = $package; - } - - /** - * set this as a package.xml version 2.1 - * @access private - */ - function _setPackageVersion2_1() - { - $info = array( - 'version' => '2.1', - 'xmlns' => 'http://pear.php.net/dtd/package-2.1', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => 'http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.1 - http://pear.php.net/dtd/package-2.1.xsd', - ); - if (!isset($this->_packageInfo['attribs'])) { - $this->_packageInfo = array_merge(array('attribs' => $info), $this->_packageInfo); - } else { - $this->_packageInfo['attribs'] = $info; - } - } - - function setUri($uri) - { - unset($this->_packageInfo['channel']); - $this->_isValid = 0; - if (!isset($this->_packageInfo['uri'])) { - // ensure that the uri tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('extends', 'summary', 'description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $uri, 'uri'); - } - $this->_packageInfo['uri'] = $uri; - } - - function setChannel($channel) - { - unset($this->_packageInfo['uri']); - $this->_isValid = 0; - if (!isset($this->_packageInfo['channel'])) { - // ensure that the channel tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('extends', 'summary', 'description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $channel, 'channel'); - } - $this->_packageInfo['channel'] = $channel; - } - - function setExtends($extends) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['extends'])) { - // ensure that the extends tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('summary', 'description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $extends, 'extends'); - } - $this->_packageInfo['extends'] = $extends; - } - - function setSummary($summary) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['summary'])) { - // ensure that the summary tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $summary, 'summary'); - } - $this->_packageInfo['summary'] = $summary; - } - - function setDescription($desc) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['description'])) { - // ensure that the description tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $desc, 'description'); - } - $this->_packageInfo['description'] = $desc; - } - - /** - * Adds a new maintainer - no checking of duplicates is performed, use - * updatemaintainer for that purpose. - */ - function addMaintainer($role, $handle, $name, $email, $active = 'yes') - { - if (!in_array($role, array('lead', 'developer', 'contributor', 'helper'))) { - return false; - } - if (isset($this->_packageInfo[$role])) { - if (!isset($this->_packageInfo[$role][0])) { - $this->_packageInfo[$role] = array($this->_packageInfo[$role]); - } - $this->_packageInfo[$role][] = - array( - 'name' => $name, - 'user' => $handle, - 'email' => $email, - 'active' => $active, - ); - } else { - $testarr = array('lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', - 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'); - foreach (array('lead', 'developer', 'contributor', 'helper') as $testrole) { - array_shift($testarr); - if ($role == $testrole) { - break; - } - } - if (!isset($this->_packageInfo[$role])) { - // ensure that the extends tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, $testarr, - array(), $role); - } - $this->_packageInfo[$role] = - array( - 'name' => $name, - 'user' => $handle, - 'email' => $email, - 'active' => $active, - ); - } - $this->_isValid = 0; - } - - function updateMaintainer($newrole, $handle, $name, $email, $active = 'yes') - { - $found = false; - foreach (array('lead', 'developer', 'contributor', 'helper') as $role) { - if (!isset($this->_packageInfo[$role])) { - continue; - } - $info = $this->_packageInfo[$role]; - if (!isset($info[0])) { - if ($info['user'] == $handle) { - $found = true; - break; - } - } - foreach ($info as $i => $maintainer) { - if ($maintainer['user'] == $handle) { - $found = $i; - break 2; - } - } - } - if ($found === false) { - return $this->addMaintainer($newrole, $handle, $name, $email, $active); - } - if ($found !== false) { - if ($found === true) { - unset($this->_packageInfo[$role]); - } else { - unset($this->_packageInfo[$role][$found]); - $this->_packageInfo[$role] = array_values($this->_packageInfo[$role]); - } - } - $this->addMaintainer($newrole, $handle, $name, $email, $active); - $this->_isValid = 0; - } - - function deleteMaintainer($handle) - { - $found = false; - foreach (array('lead', 'developer', 'contributor', 'helper') as $role) { - if (!isset($this->_packageInfo[$role])) { - continue; - } - if (!isset($this->_packageInfo[$role][0])) { - $this->_packageInfo[$role] = array($this->_packageInfo[$role]); - } - foreach ($this->_packageInfo[$role] as $i => $maintainer) { - if ($maintainer['user'] == $handle) { - $found = $i; - break; - } - } - if ($found !== false) { - unset($this->_packageInfo[$role][$found]); - if (!count($this->_packageInfo[$role]) && $role == 'lead') { - $this->_isValid = 0; - } - if (!count($this->_packageInfo[$role])) { - unset($this->_packageInfo[$role]); - return true; - } - $this->_packageInfo[$role] = - array_values($this->_packageInfo[$role]); - if (count($this->_packageInfo[$role]) == 1) { - $this->_packageInfo[$role] = $this->_packageInfo[$role][0]; - } - return true; - } - if (count($this->_packageInfo[$role]) == 1) { - $this->_packageInfo[$role] = $this->_packageInfo[$role][0]; - } - } - return false; - } - - function setReleaseVersion($version) - { - if (isset($this->_packageInfo['version']) && - isset($this->_packageInfo['version']['release'])) { - unset($this->_packageInfo['version']['release']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $version, array( - 'version' => array('stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'release' => array('api'))); - $this->_isValid = 0; - } - - function setAPIVersion($version) - { - if (isset($this->_packageInfo['version']) && - isset($this->_packageInfo['version']['api'])) { - unset($this->_packageInfo['version']['api']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $version, array( - 'version' => array('stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'api' => array())); - $this->_isValid = 0; - } - - /** - * snapshot|devel|alpha|beta|stable - */ - function setReleaseStability($state) - { - if (isset($this->_packageInfo['stability']) && - isset($this->_packageInfo['stability']['release'])) { - unset($this->_packageInfo['stability']['release']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $state, array( - 'stability' => array('license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'release' => array('api'))); - $this->_isValid = 0; - } - - /** - * @param devel|alpha|beta|stable - */ - function setAPIStability($state) - { - if (isset($this->_packageInfo['stability']) && - isset($this->_packageInfo['stability']['api'])) { - unset($this->_packageInfo['stability']['api']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $state, array( - 'stability' => array('license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'api' => array())); - $this->_isValid = 0; - } - - function setLicense($license, $uri = false, $filesource = false) - { - if (!isset($this->_packageInfo['license'])) { - // ensure that the license tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), 0, 'license'); - } - if ($uri || $filesource) { - $attribs = array(); - if ($uri) { - $attribs['uri'] = $uri; - } - $uri = true; // for test below - if ($filesource) { - $attribs['filesource'] = $filesource; - } - } - $license = $uri ? array('attribs' => $attribs, '_content' => $license) : $license; - $this->_packageInfo['license'] = $license; - $this->_isValid = 0; - } - - function setNotes($notes) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['notes'])) { - // ensure that the notes tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $notes, 'notes'); - } - $this->_packageInfo['notes'] = $notes; - } - - /** - * This is only used at install-time, after all serialization - * is over. - * @param string file name - * @param string installed path - */ - function setInstalledAs($file, $path) - { - if ($path) { - return $this->_packageInfo['filelist'][$file]['installed_as'] = $path; - } - unset($this->_packageInfo['filelist'][$file]['installed_as']); - } - - /** - * This is only used at install-time, after all serialization - * is over. - */ - function installedFile($file, $atts) - { - if (isset($this->_packageInfo['filelist'][$file])) { - $this->_packageInfo['filelist'][$file] = - array_merge($this->_packageInfo['filelist'][$file], $atts['attribs']); - } else { - $this->_packageInfo['filelist'][$file] = $atts['attribs']; - } - } - - /** - * Reset the listing of package contents - * @param string base installation dir for the whole package, if any - */ - function clearContents($baseinstall = false) - { - $this->_filesValid = false; - $this->_isValid = 0; - if (!isset($this->_packageInfo['contents'])) { - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', - 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), array(), 'contents'); - } - if ($this->getPackageType() != 'bundle') { - $this->_packageInfo['contents'] = - array('dir' => array('attribs' => array('name' => '/'))); - if ($baseinstall) { - $this->_packageInfo['contents']['dir']['attribs']['baseinstalldir'] = $baseinstall; - } - } else { - $this->_packageInfo['contents'] = array('bundledpackage' => array()); - } - } - - /** - * @param string relative path of the bundled package. - */ - function addBundledPackage($path) - { - if ($this->getPackageType() != 'bundle') { - return false; - } - $this->_filesValid = false; - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $path, array( - 'contents' => array('compatible', 'dependencies', 'providesextension', - 'usesrole', 'usestask', 'srcpackage', 'srcuri', 'phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), - 'bundledpackage' => array())); - } - - /** - * @param string file name - * @param PEAR_Task_Common a read/write task - */ - function addTaskToFile($filename, $task) - { - if (!method_exists($task, 'getXml')) { - return false; - } - if (!method_exists($task, 'getName')) { - return false; - } - if (!method_exists($task, 'validate')) { - return false; - } - if (!$task->validate()) { - return false; - } - if (!isset($this->_packageInfo['contents']['dir']['file'])) { - return false; - } - $this->getTasksNs(); // discover the tasks namespace if not done already - $files = $this->_packageInfo['contents']['dir']['file']; - if (!isset($files[0])) { - $files = array($files); - $ind = false; - } else { - $ind = true; - } - foreach ($files as $i => $file) { - if (isset($file['attribs'])) { - if ($file['attribs']['name'] == $filename) { - if ($ind) { - $t = isset($this->_packageInfo['contents']['dir']['file'][$i] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()]) ? - $this->_packageInfo['contents']['dir']['file'][$i] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()] : false; - if ($t && !isset($t[0])) { - $this->_packageInfo['contents']['dir']['file'][$i] - [$this->_tasksNs . ':' . $task->getName()] = array($t); - } - $this->_packageInfo['contents']['dir']['file'][$i][$this->_tasksNs . - ':' . $task->getName()][] = $task->getXml(); - } else { - $t = isset($this->_packageInfo['contents']['dir']['file'] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()]) ? $this->_packageInfo['contents']['dir']['file'] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()] : false; - if ($t && !isset($t[0])) { - $this->_packageInfo['contents']['dir']['file'] - [$this->_tasksNs . ':' . $task->getName()] = array($t); - } - $this->_packageInfo['contents']['dir']['file'][$this->_tasksNs . - ':' . $task->getName()][] = $task->getXml(); - } - return true; - } - } - } - return false; - } - - /** - * @param string path to the file - * @param string filename - * @param array extra attributes - */ - function addFile($dir, $file, $attrs) - { - if ($this->getPackageType() == 'bundle') { - return false; - } - $this->_filesValid = false; - $this->_isValid = 0; - $dir = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), $dir); - if ($dir == '/' || $dir == '') { - $dir = ''; - } else { - $dir .= '/'; - } - $attrs['name'] = $dir . $file; - if (!isset($this->_packageInfo['contents'])) { - // ensure that the contents tag is set up - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('compatible', 'dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', - 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), array(), 'contents'); - } - if (isset($this->_packageInfo['contents']['dir']['file'])) { - if (!isset($this->_packageInfo['contents']['dir']['file'][0])) { - $this->_packageInfo['contents']['dir']['file'] = - array($this->_packageInfo['contents']['dir']['file']); - } - $this->_packageInfo['contents']['dir']['file'][]['attribs'] = $attrs; - } else { - $this->_packageInfo['contents']['dir']['file']['attribs'] = $attrs; - } - } - - /** - * @param string Dependent package name - * @param string Dependent package's channel name - * @param string minimum version of specified package that this release is guaranteed to be - * compatible with - * @param string maximum version of specified package that this release is guaranteed to be - * compatible with - * @param string versions of specified package that this release is not compatible with - */ - function addCompatiblePackage($name, $channel, $min, $max, $exclude = false) - { - $this->_isValid = 0; - $set = array( - 'name' => $name, - 'channel' => $channel, - 'min' => $min, - 'max' => $max, - ); - if ($exclude) { - $set['exclude'] = $exclude; - } - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array( - 'compatible' => array('dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog') - )); - } - - /** - * Removes the tag entirely - */ - function resetUsesrole() - { - if (isset($this->_packageInfo['usesrole'])) { - unset($this->_packageInfo['usesrole']); - } - } - - /** - * @param string - * @param string package name or uri - * @param string channel name if non-uri - */ - function addUsesrole($role, $packageOrUri, $channel = false) { - $set = array('role' => $role); - if ($channel) { - $set['package'] = $packageOrUri; - $set['channel'] = $channel; - } else { - $set['uri'] = $packageOrUri; - } - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array( - 'usesrole' => array('usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog') - )); - } - - /** - * Removes the tag entirely - */ - function resetUsestask() - { - if (isset($this->_packageInfo['usestask'])) { - unset($this->_packageInfo['usestask']); - } - } - - - /** - * @param string - * @param string package name or uri - * @param string channel name if non-uri - */ - function addUsestask($task, $packageOrUri, $channel = false) { - $set = array('task' => $task); - if ($channel) { - $set['package'] = $packageOrUri; - $set['channel'] = $channel; - } else { - $set['uri'] = $packageOrUri; - } - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array( - 'usestask' => array('srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog') - )); - } - - /** - * Remove all compatible tags - */ - function clearCompatible() - { - unset($this->_packageInfo['compatible']); - } - - /** - * Reset dependencies prior to adding new ones - */ - function clearDeps() - { - if (!isset($this->_packageInfo['dependencies'])) { - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, array(), - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'))); - } - $this->_packageInfo['dependencies'] = array(); - } - - /** - * @param string minimum PHP version allowed - * @param string maximum PHP version allowed - * @param array $exclude incompatible PHP versions - */ - function setPhpDep($min, $max = false, $exclude = false) - { - $this->_isValid = 0; - $dep = - array( - 'min' => $min, - ); - if ($max) { - $dep['max'] = $max; - } - if ($exclude) { - if (count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if (isset($this->_packageInfo['dependencies']['required']['php'])) { - $this->_stack->push(__FUNCTION__, 'warning', array('dep' => - $this->_packageInfo['dependencies']['required']['php']), - 'warning: PHP dependency already exists, overwriting'); - unset($this->_packageInfo['dependencies']['required']['php']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'php' => array('pearinstaller', 'package', 'subpackage', 'extension', 'os', 'arch') - )); - return true; - } - - /** - * @param string minimum allowed PEAR installer version - * @param string maximum allowed PEAR installer version - * @param string recommended PEAR installer version - * @param array incompatible version of the PEAR installer - */ - function setPearinstallerDep($min, $max = false, $recommended = false, $exclude = false) - { - $this->_isValid = 0; - $dep = - array( - 'min' => $min, - ); - if ($max) { - $dep['max'] = $max; - } - if ($recommended) { - $dep['recommended'] = $recommended; - } - if ($exclude) { - if (count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if (isset($this->_packageInfo['dependencies']['required']['pearinstaller'])) { - $this->_stack->push(__FUNCTION__, 'warning', array('dep' => - $this->_packageInfo['dependencies']['required']['pearinstaller']), - 'warning: PEAR Installer dependency already exists, overwriting'); - unset($this->_packageInfo['dependencies']['required']['pearinstaller']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'pearinstaller' => array('package', 'subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * Mark a package as conflicting with this package - * @param string package name - * @param string package channel - * @param string extension this package provides, if any - * @param string|false minimum version required - * @param string|false maximum version allowed - * @param array|false versions to exclude from installation - */ - function addConflictingPackageDepWithChannel($name, $channel, - $providesextension = false, $min = false, $max = false, $exclude = false) - { - $this->_isValid = 0; - $dep = $this->_constructDep($name, $channel, false, $min, $max, false, - $exclude, $providesextension, false, true); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * Mark a package as conflicting with this package - * @param string package name - * @param string package channel - * @param string extension this package provides, if any - */ - function addConflictingPackageDepWithUri($name, $uri, $providesextension = false) - { - $this->_isValid = 0; - $dep = - array( - 'name' => $name, - 'uri' => $uri, - 'conflicts' => '', - ); - if ($providesextension) { - $dep['providesextension'] = $providesextension; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - function addDependencyGroup($name, $hint) - { - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, - array('attribs' => array('name' => $name, 'hint' => $hint)), - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'group' => array(), - )); - } - - /** - * @param string package name - * @param string|false channel name, false if this is a uri - * @param string|false uri name, false if this is a channel - * @param string|false minimum version required - * @param string|false maximum version allowed - * @param string|false recommended installation version - * @param array|false versions to exclude from installation - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @param bool if true, tells the installer to negate this dependency (conflicts) - * @return array - * @access private - */ - function _constructDep($name, $channel, $uri, $min, $max, $recommended, $exclude, - $providesextension = false, $nodefault = false, - $conflicts = false) - { - $dep = - array( - 'name' => $name, - ); - if ($channel) { - $dep['channel'] = $channel; - } elseif ($uri) { - $dep['uri'] = $uri; - } - if ($min) { - $dep['min'] = $min; - } - if ($max) { - $dep['max'] = $max; - } - if ($recommended) { - $dep['recommended'] = $recommended; - } - if ($exclude) { - if (is_array($exclude) && count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if ($conflicts) { - $dep['conflicts'] = ''; - } - if ($nodefault) { - $dep['nodefault'] = ''; - } - if ($providesextension) { - $dep['providesextension'] = $providesextension; - } - return $dep; - } - - /** - * @param package|subpackage - * @param string group name - * @param string package name - * @param string package channel - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array|false optional excluded versions - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @return bool false if the dependency group has not been initialized with - * {@link addDependencyGroup()}, or a subpackage is added with - * a providesextension - */ - function addGroupPackageDepWithChannel($type, $groupname, $name, $channel, $min = false, - $max = false, $recommended = false, $exclude = false, - $providesextension = false, $nodefault = false) - { - if ($type == 'subpackage' && $providesextension) { - return false; // subpackages must be php packages - } - $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude, - $providesextension, $nodefault); - return $this->_addGroupDependency($type, $dep, $groupname); - } - - /** - * @param package|subpackage - * @param string group name - * @param string package name - * @param string package uri - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @return bool false if the dependency group has not been initialized with - * {@link addDependencyGroup()} - */ - function addGroupPackageDepWithURI($type, $groupname, $name, $uri, $providesextension = false, - $nodefault = false) - { - if ($type == 'subpackage' && $providesextension) { - return false; // subpackages must be php packages - } - $dep = $this->_constructDep($name, false, $uri, false, false, false, false, - $providesextension, $nodefault); - return $this->_addGroupDependency($type, $dep, $groupname); - } - - /** - * @param string group name (must be pre-existing) - * @param string extension name - * @param string minimum version allowed - * @param string maximum version allowed - * @param string recommended version - * @param array incompatible versions - */ - function addGroupExtensionDep($groupname, $name, $min = false, $max = false, - $recommended = false, $exclude = false) - { - $this->_isValid = 0; - $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude); - return $this->_addGroupDependency('extension', $dep, $groupname); - } - - /** - * @param package|subpackage|extension - * @param array dependency contents - * @param string name of the dependency group to add this to - * @return boolean - * @access private - */ - function _addGroupDependency($type, $dep, $groupname) - { - $arr = array('subpackage', 'extension'); - if ($type != 'package') { - array_shift($arr); - } - if ($type == 'extension') { - array_shift($arr); - } - if (!isset($this->_packageInfo['dependencies']['group'])) { - return false; - } else { - if (!isset($this->_packageInfo['dependencies']['group'][0])) { - if ($this->_packageInfo['dependencies']['group']['attribs']['name'] == $groupname) { - $this->_packageInfo['dependencies']['group'] = $this->_mergeTag( - $this->_packageInfo['dependencies']['group'], $dep, - array( - $type => $arr - )); - $this->_isValid = 0; - return true; - } else { - return false; - } - } else { - foreach ($this->_packageInfo['dependencies']['group'] as $i => $group) { - if ($group['attribs']['name'] == $groupname) { - $this->_packageInfo['dependencies']['group'][$i] = $this->_mergeTag( - $this->_packageInfo['dependencies']['group'][$i], $dep, - array( - $type => $arr - )); - $this->_isValid = 0; - return true; - } - } - return false; - } - } - } - - /** - * @param optional|required - * @param string package name - * @param string package channel - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @param array|false optional excluded versions - */ - function addPackageDepWithChannel($type, $name, $channel, $min = false, $max = false, - $recommended = false, $exclude = false, - $providesextension = false, $nodefault = false) - { - if (!in_array($type, array('optional', 'required'), true)) { - $type = 'required'; - } - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude, - $providesextension, $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * @param optional|required - * @param string name of the package - * @param string uri of the package - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - */ - function addPackageDepWithUri($type, $name, $uri, $providesextension = false, - $nodefault = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, false, $uri, false, false, false, false, - $providesextension, $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * @param optional|required optional, required - * @param string package name - * @param string package channel - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array incompatible versions - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - */ - function addSubpackageDepWithChannel($type, $name, $channel, $min = false, $max = false, - $recommended = false, $exclude = false, - $nodefault = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude, - $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'subpackage' => array('extension', 'os', 'arch') - )); - } - - /** - * @param optional|required optional, required - * @param string package name - * @param string package uri for download - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - */ - function addSubpackageDepWithUri($type, $name, $uri, $nodefault = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, false, $uri, false, false, false, false, $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'subpackage' => array('extension', 'os', 'arch') - )); - } - - /** - * @param optional|required optional, required - * @param string extension name - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array incompatible versions - */ - function addExtensionDep($type, $name, $min = false, $max = false, $recommended = false, - $exclude = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'extension' => array('os', 'arch') - )); - } - - /** - * @param string Operating system name - * @param boolean true if this package cannot be installed on this OS - */ - function addOsDep($name, $conflicts = false) - { - $this->_isValid = 0; - $dep = array('name' => $name); - if ($conflicts) { - $dep['conflicts'] = ''; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'os' => array('arch') - )); - } - - /** - * @param string Architecture matching pattern - * @param boolean true if this package cannot be installed on this architecture - */ - function addArchDep($pattern, $conflicts = false) - { - $this->_isValid = 0; - $dep = array('pattern' => $pattern); - if ($conflicts) { - $dep['conflicts'] = ''; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'arch' => array() - )); - } - - /** - * Set the kind of package, and erase all release tags - * - * - a php package is a PEAR-style package - * - an extbin package is a PECL-style extension binary - * - an extsrc package is a PECL-style source for a binary - * - an zendextbin package is a PECL-style zend extension binary - * - an zendextsrc package is a PECL-style source for a zend extension binary - * - a bundle package is a collection of other pre-packaged packages - * @param php|extbin|extsrc|zendextsrc|zendextbin|bundle - * @return bool success - */ - function setPackageType($type) - { - $this->_isValid = 0; - if (!in_array($type, array('php', 'extbin', 'extsrc', 'zendextsrc', - 'zendextbin', 'bundle'))) { - return false; - } - - if (in_array($type, array('zendextsrc', 'zendextbin'))) { - $this->_setPackageVersion2_1(); - } - - if ($type != 'bundle') { - $type .= 'release'; - } - - foreach (array('phprelease', 'extbinrelease', 'extsrcrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle') as $test) { - unset($this->_packageInfo[$test]); - } - - if (!isset($this->_packageInfo[$type])) { - // ensure that the release tag is set up - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('changelog'), - array(), $type); - } - - $this->_packageInfo[$type] = array(); - return true; - } - - /** - * @return bool true if package type is set up - */ - function addRelease() - { - if ($type = $this->getPackageType()) { - if ($type != 'bundle') { - $type .= 'release'; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, array(), - array($type => array('changelog'))); - return true; - } - return false; - } - - /** - * Get the current release tag in order to add to it - * @param bool returns only releases that have installcondition if true - * @return array|null - */ - function &_getCurrentRelease($strict = true) - { - if ($p = $this->getPackageType()) { - if ($strict) { - if ($p == 'extsrc' || $p == 'zendextsrc') { - $a = null; - return $a; - } - } - if ($p != 'bundle') { - $p .= 'release'; - } - if (isset($this->_packageInfo[$p][0])) { - return $this->_packageInfo[$p][count($this->_packageInfo[$p]) - 1]; - } else { - return $this->_packageInfo[$p]; - } - } else { - $a = null; - return $a; - } - } - - /** - * Add a file to the current release that should be installed under a different name - * @param string path to file - * @param string name the file should be installed as - */ - function addInstallAs($path, $as) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $r = $this->_mergeTag($r, array('attribs' => array('name' => $path, 'as' => $as)), - array( - 'filelist' => array(), - 'install' => array('ignore') - )); - } - - /** - * Add a file to the current release that should be ignored - * @param string path to file - * @return bool success of operation - */ - function addIgnore($path) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $r = $this->_mergeTag($r, array('attribs' => array('name' => $path)), - array( - 'filelist' => array(), - 'ignore' => array() - )); - } - - /** - * Add an extension binary package for this extension source code release - * - * Note that the package must be from the same channel as the extension source package - * @param string - */ - function addBinarypackage($package) - { - if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') { - return false; - } - $r = &$this->_getCurrentRelease(false); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $r = $this->_mergeTag($r, $package, - array( - 'binarypackage' => array('filelist'), - )); - } - - /** - * Add a configureoption to an extension source package - * @param string - * @param string - * @param string - */ - function addConfigureOption($name, $prompt, $default = null) - { - if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') { - return false; - } - - $r = &$this->_getCurrentRelease(false); - if ($r === null) { - return false; - } - - $opt = array('attribs' => array('name' => $name, 'prompt' => $prompt)); - if ($default !== null) { - $opt['attribs']['default'] = $default; - } - - $this->_isValid = 0; - $r = $this->_mergeTag($r, $opt, - array( - 'configureoption' => array('binarypackage', 'filelist'), - )); - } - - /** - * Set an installation condition based on php version for the current release set - * @param string minimum version - * @param string maximum version - * @param false|array incompatible versions of PHP - */ - function setPhpInstallCondition($min, $max, $exclude = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - if (isset($r['installconditions']['php'])) { - unset($r['installconditions']['php']); - } - $dep = array('min' => $min, 'max' => $max); - if ($exclude) { - if (is_array($exclude) && count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'php' => array('extension', 'os', 'arch') - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'php' => array('extension', 'os', 'arch') - )); - } - } - - /** - * @param optional|required optional, required - * @param string extension name - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array incompatible versions - */ - function addExtensionInstallCondition($name, $min = false, $max = false, $recommended = false, - $exclude = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude); - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'extension' => array('os', 'arch') - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'extension' => array('os', 'arch') - )); - } - } - - /** - * Set an installation condition based on operating system for the current release set - * @param string OS name - * @param bool whether this OS is incompatible with the current release - */ - function setOsInstallCondition($name, $conflicts = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - if (isset($r['installconditions']['os'])) { - unset($r['installconditions']['os']); - } - $dep = array('name' => $name); - if ($conflicts) { - $dep['conflicts'] = ''; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'os' => array('arch') - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'os' => array('arch') - )); - } - } - - /** - * Set an installation condition based on architecture for the current release set - * @param string architecture pattern - * @param bool whether this arch is incompatible with the current release - */ - function setArchInstallCondition($pattern, $conflicts = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - if (isset($r['installconditions']['arch'])) { - unset($r['installconditions']['arch']); - } - $dep = array('pattern' => $pattern); - if ($conflicts) { - $dep['conflicts'] = ''; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'arch' => array() - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'arch' => array() - )); - } - } - - /** - * For extension binary releases, this is used to specify either the - * static URI to a source package, or the package name and channel of the extsrc/zendextsrc - * package it is based on. - * @param string Package name, or full URI to source package (extsrc/zendextsrc type) - */ - function setSourcePackage($packageOrUri) - { - $this->_isValid = 0; - if (isset($this->_packageInfo['channel'])) { - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), - $packageOrUri, 'srcpackage'); - } else { - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), $packageOrUri, 'srcuri'); - } - } - - /** - * Generate a valid change log entry from the current package.xml - * @param string|false - */ - function generateChangeLogEntry($notes = false) - { - return array( - 'version' => - array( - 'release' => $this->getVersion('release'), - 'api' => $this->getVersion('api'), - ), - 'stability' => - $this->getStability(), - 'date' => $this->getDate(), - 'license' => $this->getLicense(true), - 'notes' => $notes ? $notes : $this->getNotes() - ); - } - - /** - * @param string release version to set change log notes for - * @param array output of {@link generateChangeLogEntry()} - */ - function setChangelogEntry($releaseversion, $contents) - { - if (!isset($this->_packageInfo['changelog'])) { - $this->_packageInfo['changelog']['release'] = $contents; - return; - } - if (!isset($this->_packageInfo['changelog']['release'][0])) { - if ($this->_packageInfo['changelog']['release']['version']['release'] == $releaseversion) { - $this->_packageInfo['changelog']['release'] = array( - $this->_packageInfo['changelog']['release']); - } else { - $this->_packageInfo['changelog']['release'] = array( - $this->_packageInfo['changelog']['release']); - return $this->_packageInfo['changelog']['release'][] = $contents; - } - } - foreach($this->_packageInfo['changelog']['release'] as $index => $changelog) { - if (isset($changelog['version']) && - strnatcasecmp($changelog['version']['release'], $releaseversion) == 0) { - $curlog = $index; - } - } - if (isset($curlog)) { - $this->_packageInfo['changelog']['release'][$curlog] = $contents; - } else { - $this->_packageInfo['changelog']['release'][] = $contents; - } - } - - /** - * Remove the changelog entirely - */ - function clearChangeLog() - { - unset($this->_packageInfo['changelog']); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Packager.php b/3rdparty/PEAR/Packager.php deleted file mode 100644 index 8995a167fccda9b45e16b4270a3b38f8e38fe483..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Packager.php +++ /dev/null @@ -1,201 +0,0 @@ - - * @author Tomas V. V. Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Packager.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Common.php'; -require_once 'PEAR/PackageFile.php'; -require_once 'System.php'; - -/** - * Administration class used to make a PEAR release tarball. - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Packager extends PEAR_Common -{ - /** - * @var PEAR_Registry - */ - var $_registry; - - function package($pkgfile = null, $compress = true, $pkg2 = null) - { - // {{{ validate supplied package.xml file - if (empty($pkgfile)) { - $pkgfile = 'package.xml'; - } - - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pkg = &new PEAR_PackageFile($this->config, $this->debug); - $pf = &$pkg->fromPackageFile($pkgfile, PEAR_VALIDATE_NORMAL); - $main = &$pf; - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf)) { - if (is_array($pf->getUserInfo())) { - foreach ($pf->getUserInfo() as $error) { - $this->log(0, 'Error: ' . $error['message']); - } - } - - $this->log(0, $pf->getMessage()); - return $this->raiseError("Cannot package, errors in package file"); - } - - foreach ($pf->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - - // }}} - if ($pkg2) { - $this->log(0, 'Attempting to process the second package file'); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pf2 = &$pkg->fromPackageFile($pkg2, PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf2)) { - if (is_array($pf2->getUserInfo())) { - foreach ($pf2->getUserInfo() as $error) { - $this->log(0, 'Error: ' . $error['message']); - } - } - $this->log(0, $pf2->getMessage()); - return $this->raiseError("Cannot package, errors in second package file"); - } - - foreach ($pf2->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - - if ($pf2->getPackagexmlVersion() == '2.0' || - $pf2->getPackagexmlVersion() == '2.1' - ) { - $main = &$pf2; - $other = &$pf; - } else { - $main = &$pf; - $other = &$pf2; - } - - if ($main->getPackagexmlVersion() != '2.0' && - $main->getPackagexmlVersion() != '2.1') { - return PEAR::raiseError('Error: cannot package two package.xml version 1.0, can ' . - 'only package together a package.xml 1.0 and package.xml 2.0'); - } - - if ($other->getPackagexmlVersion() != '1.0') { - return PEAR::raiseError('Error: cannot package two package.xml version 2.0, can ' . - 'only package together a package.xml 1.0 and package.xml 2.0'); - } - } - - $main->setLogger($this); - if (!$main->validate(PEAR_VALIDATE_PACKAGING)) { - foreach ($main->getValidationWarnings() as $warning) { - $this->log(0, 'Error: ' . $warning['message']); - } - return $this->raiseError("Cannot package, errors in package"); - } - - foreach ($main->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - - if ($pkg2) { - $other->setLogger($this); - $a = false; - if (!$other->validate(PEAR_VALIDATE_NORMAL) || $a = !$main->isEquivalent($other)) { - foreach ($other->getValidationWarnings() as $warning) { - $this->log(0, 'Error: ' . $warning['message']); - } - - foreach ($main->getValidationWarnings() as $warning) { - $this->log(0, 'Error: ' . $warning['message']); - } - - if ($a) { - return $this->raiseError('The two package.xml files are not equivalent!'); - } - - return $this->raiseError("Cannot package, errors in package"); - } - - foreach ($other->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - - $gen = &$main->getDefaultGenerator(); - $tgzfile = $gen->toTgz2($this, $other, $compress); - if (PEAR::isError($tgzfile)) { - return $tgzfile; - } - - $dest_package = basename($tgzfile); - $pkgdir = dirname($pkgfile); - - // TAR the Package ------------------------------------------- - $this->log(1, "Package $dest_package done"); - if (file_exists("$pkgdir/CVS/Root")) { - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $pf->getVersion()); - $cvstag = "RELEASE_$cvsversion"; - $this->log(1, 'Tag the released code with "pear cvstag ' . - $main->getPackageFile() . '"'); - $this->log(1, "(or set the CVS tag $cvstag by hand)"); - } elseif (file_exists("$pkgdir/.svn")) { - $svnversion = preg_replace('/[^a-z0-9]/i', '.', $pf->getVersion()); - $svntag = $pf->getName() . "-$svnversion"; - $this->log(1, 'Tag the released code with "pear svntag ' . - $main->getPackageFile() . '"'); - $this->log(1, "(or set the SVN tag $svntag by hand)"); - } - } else { // this branch is executed for single packagefile packaging - $gen = &$pf->getDefaultGenerator(); - $tgzfile = $gen->toTgz($this, $compress); - if (PEAR::isError($tgzfile)) { - $this->log(0, $tgzfile->getMessage()); - return $this->raiseError("Cannot package, errors in package"); - } - - $dest_package = basename($tgzfile); - $pkgdir = dirname($pkgfile); - - // TAR the Package ------------------------------------------- - $this->log(1, "Package $dest_package done"); - if (file_exists("$pkgdir/CVS/Root")) { - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $pf->getVersion()); - $cvstag = "RELEASE_$cvsversion"; - $this->log(1, "Tag the released code with `pear cvstag $pkgfile'"); - $this->log(1, "(or set the CVS tag $cvstag by hand)"); - } elseif (file_exists("$pkgdir/.svn")) { - $svnversion = preg_replace('/[^a-z0-9]/i', '.', $pf->getVersion()); - $svntag = $pf->getName() . "-$svnversion"; - $this->log(1, "Tag the released code with `pear svntag $pkgfile'"); - $this->log(1, "(or set the SVN tag $svntag by hand)"); - } - } - - return $dest_package; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/REST.php b/3rdparty/PEAR/REST.php deleted file mode 100644 index 34a804f2bde4c295ed692f2fa71d324cfdf0c165..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/REST.php +++ /dev/null @@ -1,483 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: REST.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * For downloading xml files - */ -require_once 'PEAR.php'; -require_once 'PEAR/XMLParser.php'; - -/** - * Intelligently retrieve data, following hyperlinks if necessary, and re-directing - * as well - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_REST -{ - var $config; - var $_options; - - function PEAR_REST(&$config, $options = array()) - { - $this->config = &$config; - $this->_options = $options; - } - - /** - * Retrieve REST data, but always retrieve the local cache if it is available. - * - * This is useful for elements that should never change, such as information on a particular - * release - * @param string full URL to this resource - * @param array|false contents of the accept-encoding header - * @param boolean if true, xml will be returned as a string, otherwise, xml will be - * parsed using PEAR_XMLParser - * @return string|array - */ - function retrieveCacheFirst($url, $accept = false, $forcestring = false, $channel = false) - { - $cachefile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cachefile'; - - if (file_exists($cachefile)) { - return unserialize(implode('', file($cachefile))); - } - - return $this->retrieveData($url, $accept, $forcestring, $channel); - } - - /** - * Retrieve a remote REST resource - * @param string full URL to this resource - * @param array|false contents of the accept-encoding header - * @param boolean if true, xml will be returned as a string, otherwise, xml will be - * parsed using PEAR_XMLParser - * @return string|array - */ - function retrieveData($url, $accept = false, $forcestring = false, $channel = false) - { - $cacheId = $this->getCacheId($url); - if ($ret = $this->useLocalCache($url, $cacheId)) { - return $ret; - } - - $file = $trieddownload = false; - if (!isset($this->_options['offline'])) { - $trieddownload = true; - $file = $this->downloadHttp($url, $cacheId ? $cacheId['lastChange'] : false, $accept, $channel); - } - - if (PEAR::isError($file)) { - if ($file->getCode() !== -9276) { - return $file; - } - - $trieddownload = false; - $file = false; // use local copy if available on socket connect error - } - - if (!$file) { - $ret = $this->getCache($url); - if (!PEAR::isError($ret) && $trieddownload) { - // reset the age of the cache if the server says it was unmodified - $result = $this->saveCache($url, $ret, null, true, $cacheId); - if (PEAR::isError($result)) { - return PEAR::raiseError($result->getMessage()); - } - } - - return $ret; - } - - if (is_array($file)) { - $headers = $file[2]; - $lastmodified = $file[1]; - $content = $file[0]; - } else { - $headers = array(); - $lastmodified = false; - $content = $file; - } - - if ($forcestring) { - $result = $this->saveCache($url, $content, $lastmodified, false, $cacheId); - if (PEAR::isError($result)) { - return PEAR::raiseError($result->getMessage()); - } - - return $content; - } - - if (isset($headers['content-type'])) { - switch ($headers['content-type']) { - case 'text/xml' : - case 'application/xml' : - case 'text/plain' : - if ($headers['content-type'] === 'text/plain') { - $check = substr($content, 0, 5); - if ($check !== 'parse($content); - PEAR::popErrorHandling(); - if (PEAR::isError($err)) { - return PEAR::raiseError('Invalid xml downloaded from "' . $url . '": ' . - $err->getMessage()); - } - $content = $parser->getData(); - case 'text/html' : - default : - // use it as a string - } - } else { - // assume XML - $parser = new PEAR_XMLParser; - $parser->parse($content); - $content = $parser->getData(); - } - - $result = $this->saveCache($url, $content, $lastmodified, false, $cacheId); - if (PEAR::isError($result)) { - return PEAR::raiseError($result->getMessage()); - } - - return $content; - } - - function useLocalCache($url, $cacheid = null) - { - if ($cacheid === null) { - $cacheidfile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cacheid'; - if (!file_exists($cacheidfile)) { - return false; - } - - $cacheid = unserialize(implode('', file($cacheidfile))); - } - - $cachettl = $this->config->get('cache_ttl'); - // If cache is newer than $cachettl seconds, we use the cache! - if (time() - $cacheid['age'] < $cachettl) { - return $this->getCache($url); - } - - return false; - } - - function getCacheId($url) - { - $cacheidfile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cacheid'; - - if (!file_exists($cacheidfile)) { - return false; - } - - $ret = unserialize(implode('', file($cacheidfile))); - return $ret; - } - - function getCache($url) - { - $cachefile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cachefile'; - - if (!file_exists($cachefile)) { - return PEAR::raiseError('No cached content available for "' . $url . '"'); - } - - return unserialize(implode('', file($cachefile))); - } - - /** - * @param string full URL to REST resource - * @param string original contents of the REST resource - * @param array HTTP Last-Modified and ETag headers - * @param bool if true, then the cache id file should be regenerated to - * trigger a new time-to-live value - */ - function saveCache($url, $contents, $lastmodified, $nochange = false, $cacheid = null) - { - $cache_dir = $this->config->get('cache_dir'); - $d = $cache_dir . DIRECTORY_SEPARATOR . md5($url); - $cacheidfile = $d . 'rest.cacheid'; - $cachefile = $d . 'rest.cachefile'; - - if (!is_dir($cache_dir)) { - if (System::mkdir(array('-p', $cache_dir)) === false) { - return PEAR::raiseError("The value of config option cache_dir ($cache_dir) is not a directory and attempts to create the directory failed."); - } - } - - if ($cacheid === null && $nochange) { - $cacheid = unserialize(implode('', file($cacheidfile))); - } - - $idData = serialize(array( - 'age' => time(), - 'lastChange' => ($nochange ? $cacheid['lastChange'] : $lastmodified), - )); - - $result = $this->saveCacheFile($cacheidfile, $idData); - if (PEAR::isError($result)) { - return $result; - } elseif ($nochange) { - return true; - } - - $result = $this->saveCacheFile($cachefile, serialize($contents)); - if (PEAR::isError($result)) { - if (file_exists($cacheidfile)) { - @unlink($cacheidfile); - } - - return $result; - } - - return true; - } - - function saveCacheFile($file, $contents) - { - $len = strlen($contents); - - $cachefile_fp = @fopen($file, 'xb'); // x is the O_CREAT|O_EXCL mode - if ($cachefile_fp !== false) { // create file - if (fwrite($cachefile_fp, $contents, $len) < $len) { - fclose($cachefile_fp); - return PEAR::raiseError("Could not write $file."); - } - } else { // update file - $cachefile_lstat = lstat($file); - $cachefile_fp = @fopen($file, 'wb'); - if (!$cachefile_fp) { - return PEAR::raiseError("Could not open $file for writing."); - } - - $cachefile_fstat = fstat($cachefile_fp); - if ( - $cachefile_lstat['mode'] == $cachefile_fstat['mode'] && - $cachefile_lstat['ino'] == $cachefile_fstat['ino'] && - $cachefile_lstat['dev'] == $cachefile_fstat['dev'] && - $cachefile_fstat['nlink'] === 1 - ) { - if (fwrite($cachefile_fp, $contents, $len) < $len) { - fclose($cachefile_fp); - return PEAR::raiseError("Could not write $file."); - } - } else { - fclose($cachefile_fp); - $link = function_exists('readlink') ? readlink($file) : $file; - return PEAR::raiseError('SECURITY ERROR: Will not write to ' . $file . ' as it is symlinked to ' . $link . ' - Possible symlink attack'); - } - } - - fclose($cachefile_fp); - return true; - } - - /** - * Efficiently Download a file through HTTP. Returns downloaded file as a string in-memory - * This is best used for small files - * - * If an HTTP proxy has been configured (http_proxy PEAR_Config - * setting), the proxy will be used. - * - * @param string $url the URL to download - * @param string $save_dir directory to save file in - * @param false|string|array $lastmodified header values to check against for caching - * use false to return the header values from this download - * @param false|array $accept Accept headers to send - * @return string|array Returns the contents of the downloaded file or a PEAR - * error on failure. If the error is caused by - * socket-related errors, the error object will - * have the fsockopen error code available through - * getCode(). If caching is requested, then return the header - * values. - * - * @access public - */ - function downloadHttp($url, $lastmodified = null, $accept = false, $channel = false) - { - static $redirect = 0; - // always reset , so we are clean case of error - $wasredirect = $redirect; - $redirect = 0; - - $info = parse_url($url); - if (!isset($info['scheme']) || !in_array($info['scheme'], array('http', 'https'))) { - return PEAR::raiseError('Cannot download non-http URL "' . $url . '"'); - } - - if (!isset($info['host'])) { - return PEAR::raiseError('Cannot download from non-URL "' . $url . '"'); - } - - $host = isset($info['host']) ? $info['host'] : null; - $port = isset($info['port']) ? $info['port'] : null; - $path = isset($info['path']) ? $info['path'] : null; - $schema = (isset($info['scheme']) && $info['scheme'] == 'https') ? 'https' : 'http'; - - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($this->config->get('http_proxy')&& - $proxy = parse_url($this->config->get('http_proxy')) - ) { - $proxy_host = isset($proxy['host']) ? $proxy['host'] : null; - if ($schema === 'https') { - $proxy_host = 'ssl://' . $proxy_host; - } - - $proxy_port = isset($proxy['port']) ? $proxy['port'] : 8080; - $proxy_user = isset($proxy['user']) ? urldecode($proxy['user']) : null; - $proxy_pass = isset($proxy['pass']) ? urldecode($proxy['pass']) : null; - $proxy_schema = (isset($proxy['scheme']) && $proxy['scheme'] == 'https') ? 'https' : 'http'; - } - - if (empty($port)) { - $port = (isset($info['scheme']) && $info['scheme'] == 'https') ? 443 : 80; - } - - if (isset($proxy['host'])) { - $request = "GET $url HTTP/1.1\r\n"; - } else { - $request = "GET $path HTTP/1.1\r\n"; - } - - $request .= "Host: $host\r\n"; - $ifmodifiedsince = ''; - if (is_array($lastmodified)) { - if (isset($lastmodified['Last-Modified'])) { - $ifmodifiedsince = 'If-Modified-Since: ' . $lastmodified['Last-Modified'] . "\r\n"; - } - - if (isset($lastmodified['ETag'])) { - $ifmodifiedsince .= "If-None-Match: $lastmodified[ETag]\r\n"; - } - } else { - $ifmodifiedsince = ($lastmodified ? "If-Modified-Since: $lastmodified\r\n" : ''); - } - - $request .= $ifmodifiedsince . - "User-Agent: PEAR/1.9.4/PHP/" . PHP_VERSION . "\r\n"; - - $username = $this->config->get('username', null, $channel); - $password = $this->config->get('password', null, $channel); - - if ($username && $password) { - $tmp = base64_encode("$username:$password"); - $request .= "Authorization: Basic $tmp\r\n"; - } - - if ($proxy_host != '' && $proxy_user != '') { - $request .= 'Proxy-Authorization: Basic ' . - base64_encode($proxy_user . ':' . $proxy_pass) . "\r\n"; - } - - if ($accept) { - $request .= 'Accept: ' . implode(', ', $accept) . "\r\n"; - } - - $request .= "Accept-Encoding:\r\n"; - $request .= "Connection: close\r\n"; - $request .= "\r\n"; - - if ($proxy_host != '') { - $fp = @fsockopen($proxy_host, $proxy_port, $errno, $errstr, 15); - if (!$fp) { - return PEAR::raiseError("Connection to `$proxy_host:$proxy_port' failed: $errstr", -9276); - } - } else { - if ($schema === 'https') { - $host = 'ssl://' . $host; - } - - $fp = @fsockopen($host, $port, $errno, $errstr); - if (!$fp) { - return PEAR::raiseError("Connection to `$host:$port' failed: $errstr", $errno); - } - } - - fwrite($fp, $request); - - $headers = array(); - $reply = 0; - while ($line = trim(fgets($fp, 1024))) { - if (preg_match('/^([^:]+):\s+(.*)\s*\\z/', $line, $matches)) { - $headers[strtolower($matches[1])] = trim($matches[2]); - } elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) { - $reply = (int)$matches[1]; - if ($reply == 304 && ($lastmodified || ($lastmodified === false))) { - return false; - } - - if (!in_array($reply, array(200, 301, 302, 303, 305, 307))) { - return PEAR::raiseError("File $schema://$host:$port$path not valid (received: $line)"); - } - } - } - - if ($reply != 200) { - if (!isset($headers['location'])) { - return PEAR::raiseError("File $schema://$host:$port$path not valid (redirected but no location)"); - } - - if ($wasredirect > 4) { - return PEAR::raiseError("File $schema://$host:$port$path not valid (redirection looped more than 5 times)"); - } - - $redirect = $wasredirect + 1; - return $this->downloadHttp($headers['location'], $lastmodified, $accept, $channel); - } - - $length = isset($headers['content-length']) ? $headers['content-length'] : -1; - - $data = ''; - while ($chunk = @fread($fp, 8192)) { - $data .= $chunk; - } - fclose($fp); - - if ($lastmodified === false || $lastmodified) { - if (isset($headers['etag'])) { - $lastmodified = array('ETag' => $headers['etag']); - } - - if (isset($headers['last-modified'])) { - if (is_array($lastmodified)) { - $lastmodified['Last-Modified'] = $headers['last-modified']; - } else { - $lastmodified = $headers['last-modified']; - } - } - - return array($data, $lastmodified, $headers); - } - - return $data; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/REST/10.php b/3rdparty/PEAR/REST/10.php deleted file mode 100644 index 6ded7aeace379c5b6d028d515f28b6d1cd28e88c..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/REST/10.php +++ /dev/null @@ -1,871 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: 10.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a12 - */ - -/** - * For downloading REST xml/txt files - */ -require_once 'PEAR/REST.php'; - -/** - * Implement REST 1.0 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a12 - */ -class PEAR_REST_10 -{ - /** - * @var PEAR_REST - */ - var $_rest; - function PEAR_REST_10($config, $options = array()) - { - $this->_rest = &new PEAR_REST($config, $options); - } - - /** - * Retrieve information about a remote package to be downloaded from a REST server - * - * @param string $base The uri to prepend to all REST calls - * @param array $packageinfo an array of format: - *
-     *  array(
-     *   'package' => 'packagename',
-     *   'channel' => 'channelname',
-     *  ['state' => 'alpha' (or valid state),]
-     *  -or-
-     *  ['version' => '1.whatever']
-     * 
- * @param string $prefstate Current preferred_state config variable value - * @param bool $installed the installed version of this package to compare against - * @return array|false|PEAR_Error see {@link _returnDownloadURL()} - */ - function getDownloadURL($base, $packageinfo, $prefstate, $installed, $channel = false) - { - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - - $channel = $packageinfo['channel']; - $package = $packageinfo['package']; - $state = isset($packageinfo['state']) ? $packageinfo['state'] : null; - $version = isset($packageinfo['version']) ? $packageinfo['version'] : null; - $restFile = $base . 'r/' . strtolower($package) . '/allreleases.xml'; - - $info = $this->_rest->retrieveData($restFile, false, false, $channel); - if (PEAR::isError($info)) { - return PEAR::raiseError('No releases available for package "' . - $channel . '/' . $package . '"'); - } - - if (!isset($info['r'])) { - return false; - } - - $release = $found = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - - if (isset($state)) { - // try our preferred state first - if ($release['s'] == $state) { - $found = true; - break; - } - // see if there is something newer and more stable - // bug #7221 - if (in_array($release['s'], $this->betterStates($state), true)) { - $found = true; - break; - } - } elseif (isset($version)) { - if ($release['v'] == $version) { - $found = true; - break; - } - } else { - if (in_array($release['s'], $states)) { - $found = true; - break; - } - } - } - - return $this->_returnDownloadURL($base, $package, $release, $info, $found, false, $channel); - } - - function getDepDownloadURL($base, $xsdversion, $dependency, $deppackage, - $prefstate = 'stable', $installed = false, $channel = false) - { - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - - $channel = $dependency['channel']; - $package = $dependency['name']; - $state = isset($dependency['state']) ? $dependency['state'] : null; - $version = isset($dependency['version']) ? $dependency['version'] : null; - $restFile = $base . 'r/' . strtolower($package) . '/allreleases.xml'; - - $info = $this->_rest->retrieveData($restFile, false, false, $channel); - if (PEAR::isError($info)) { - return PEAR::raiseError('Package "' . $deppackage['channel'] . '/' . $deppackage['package'] - . '" dependency "' . $channel . '/' . $package . '" has no releases'); - } - - if (!is_array($info) || !isset($info['r'])) { - return false; - } - - $exclude = array(); - $min = $max = $recommended = false; - if ($xsdversion == '1.0') { - switch ($dependency['rel']) { - case 'ge' : - $min = $dependency['version']; - break; - case 'gt' : - $min = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'eq' : - $recommended = $dependency['version']; - break; - case 'lt' : - $max = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'le' : - $max = $dependency['version']; - break; - case 'ne' : - $exclude = array($dependency['version']); - break; - } - } else { - $min = isset($dependency['min']) ? $dependency['min'] : false; - $max = isset($dependency['max']) ? $dependency['max'] : false; - $recommended = isset($dependency['recommended']) ? - $dependency['recommended'] : false; - if (isset($dependency['exclude'])) { - if (!isset($dependency['exclude'][0])) { - $exclude = array($dependency['exclude']); - } - } - } - $release = $found = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - if (in_array($release['v'], $exclude)) { // skip excluded versions - continue; - } - // allow newer releases to say "I'm OK with the dependent package" - if ($xsdversion == '2.0' && isset($release['co'])) { - if (!is_array($release['co']) || !isset($release['co'][0])) { - $release['co'] = array($release['co']); - } - foreach ($release['co'] as $entry) { - if (isset($entry['x']) && !is_array($entry['x'])) { - $entry['x'] = array($entry['x']); - } elseif (!isset($entry['x'])) { - $entry['x'] = array(); - } - if ($entry['c'] == $deppackage['channel'] && - strtolower($entry['p']) == strtolower($deppackage['package']) && - version_compare($deppackage['version'], $entry['min'], '>=') && - version_compare($deppackage['version'], $entry['max'], '<=') && - !in_array($release['v'], $entry['x'])) { - $recommended = $release['v']; - break; - } - } - } - if ($recommended) { - if ($release['v'] != $recommended) { // if we want a specific - // version, then skip all others - continue; - } else { - if (!in_array($release['s'], $states)) { - // the stability is too low, but we must return the - // recommended version if possible - return $this->_returnDownloadURL($base, $package, $release, $info, true, false, $channel); - } - } - } - if ($min && version_compare($release['v'], $min, 'lt')) { // skip too old versions - continue; - } - if ($max && version_compare($release['v'], $max, 'gt')) { // skip too new versions - continue; - } - if ($installed && version_compare($release['v'], $installed, '<')) { - continue; - } - if (in_array($release['s'], $states)) { // if in the preferred state... - $found = true; // ... then use it - break; - } - } - return $this->_returnDownloadURL($base, $package, $release, $info, $found, false, $channel); - } - - /** - * Take raw data and return the array needed for processing a download URL - * - * @param string $base REST base uri - * @param string $package Package name - * @param array $release an array of format array('v' => version, 's' => state) - * describing the release to download - * @param array $info list of all releases as defined by allreleases.xml - * @param bool|null $found determines whether the release was found or this is the next - * best alternative. If null, then versions were skipped because - * of PHP dependency - * @return array|PEAR_Error - * @access private - */ - function _returnDownloadURL($base, $package, $release, $info, $found, $phpversion = false, $channel = false) - { - if (!$found) { - $release = $info['r'][0]; - } - - $packageLower = strtolower($package); - $pinfo = $this->_rest->retrieveCacheFirst($base . 'p/' . $packageLower . '/' . - 'info.xml', false, false, $channel); - if (PEAR::isError($pinfo)) { - return PEAR::raiseError('Package "' . $package . - '" does not have REST info xml available'); - } - - $releaseinfo = $this->_rest->retrieveCacheFirst($base . 'r/' . $packageLower . '/' . - $release['v'] . '.xml', false, false, $channel); - if (PEAR::isError($releaseinfo)) { - return PEAR::raiseError('Package "' . $package . '" Version "' . $release['v'] . - '" does not have REST xml available'); - } - - $packagexml = $this->_rest->retrieveCacheFirst($base . 'r/' . $packageLower . '/' . - 'deps.' . $release['v'] . '.txt', false, true, $channel); - if (PEAR::isError($packagexml)) { - return PEAR::raiseError('Package "' . $package . '" Version "' . $release['v'] . - '" does not have REST dependency information available'); - } - - $packagexml = unserialize($packagexml); - if (!$packagexml) { - $packagexml = array(); - } - - $allinfo = $this->_rest->retrieveData($base . 'r/' . $packageLower . - '/allreleases.xml', false, false, $channel); - if (PEAR::isError($allinfo)) { - return $allinfo; - } - - if (!is_array($allinfo['r']) || !isset($allinfo['r'][0])) { - $allinfo['r'] = array($allinfo['r']); - } - - $compatible = false; - foreach ($allinfo['r'] as $release) { - if ($release['v'] != $releaseinfo['v']) { - continue; - } - - if (!isset($release['co'])) { - break; - } - - $compatible = array(); - if (!is_array($release['co']) || !isset($release['co'][0])) { - $release['co'] = array($release['co']); - } - - foreach ($release['co'] as $entry) { - $comp = array(); - $comp['name'] = $entry['p']; - $comp['channel'] = $entry['c']; - $comp['min'] = $entry['min']; - $comp['max'] = $entry['max']; - if (isset($entry['x']) && !is_array($entry['x'])) { - $comp['exclude'] = $entry['x']; - } - - $compatible[] = $comp; - } - - if (count($compatible) == 1) { - $compatible = $compatible[0]; - } - - break; - } - - $deprecated = false; - if (isset($pinfo['dc']) && isset($pinfo['dp'])) { - if (is_array($pinfo['dp'])) { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp']['_content'])); - } else { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp'])); - } - } - - $return = array( - 'version' => $releaseinfo['v'], - 'info' => $packagexml, - 'package' => $releaseinfo['p']['_content'], - 'stability' => $releaseinfo['st'], - 'compatible' => $compatible, - 'deprecated' => $deprecated, - ); - - if ($found) { - $return['url'] = $releaseinfo['g']; - return $return; - } - - $return['php'] = $phpversion; - return $return; - } - - function listPackages($base, $channel = false) - { - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return array(); - } - - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - - return $packagelist['p']; - } - - /** - * List all categories of a REST server - * - * @param string $base base URL of the server - * @return array of categorynames - */ - function listCategories($base, $channel = false) - { - $categories = array(); - - // c/categories.xml does not exist; - // check for every package its category manually - // This is SLOOOWWWW : /// - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - - if (!is_array($packagelist) || !isset($packagelist['p'])) { - $ret = array(); - return $ret; - } - - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($packagelist['p'] as $package) { - $inf = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml', false, false, $channel); - if (PEAR::isError($inf)) { - PEAR::popErrorHandling(); - return $inf; - } - $cat = $inf['ca']['_content']; - if (!isset($categories[$cat])) { - $categories[$cat] = $inf['ca']; - } - } - - return array_values($categories); - } - - /** - * List a category of a REST server - * - * @param string $base base URL of the server - * @param string $category name of the category - * @param boolean $info also download full package info - * @return array of packagenames - */ - function listCategory($base, $category, $info = false, $channel = false) - { - // gives '404 Not Found' error when category doesn't exist - $packagelist = $this->_rest->retrieveData($base.'c/'.urlencode($category).'/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return array(); - } - - if (!is_array($packagelist['p']) || - !isset($packagelist['p'][0])) { // only 1 pkg - $packagelist = array($packagelist['p']); - } else { - $packagelist = $packagelist['p']; - } - - if ($info == true) { - // get individual package info - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($packagelist as $i => $packageitem) { - $url = sprintf('%s'.'r/%s/latest.txt', - $base, - strtolower($packageitem['_content'])); - $version = $this->_rest->retrieveData($url, false, false, $channel); - if (PEAR::isError($version)) { - break; // skipit - } - $url = sprintf('%s'.'r/%s/%s.xml', - $base, - strtolower($packageitem['_content']), - $version); - $info = $this->_rest->retrieveData($url, false, false, $channel); - if (PEAR::isError($info)) { - break; // skipit - } - $packagelist[$i]['info'] = $info; - } - PEAR::popErrorHandling(); - } - - return $packagelist; - } - - - function listAll($base, $dostable, $basic = true, $searchpackage = false, $searchsummary = false, $channel = false) - { - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - if ($this->_rest->config->get('verbose') > 0) { - $ui = &PEAR_Frontend::singleton(); - $ui->log('Retrieving data...0%', true); - } - $ret = array(); - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return $ret; - } - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - - // only search-packagename = quicksearch ! - if ($searchpackage && (!$searchsummary || empty($searchpackage))) { - $newpackagelist = array(); - foreach ($packagelist['p'] as $package) { - if (!empty($searchpackage) && stristr($package, $searchpackage) !== false) { - $newpackagelist[] = $package; - } - } - $packagelist['p'] = $newpackagelist; - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $next = .1; - foreach ($packagelist['p'] as $progress => $package) { - if ($this->_rest->config->get('verbose') > 0) { - if ($progress / count($packagelist['p']) >= $next) { - if ($next == .5) { - $ui->log('50%', false); - } else { - $ui->log('.', false); - } - $next += .1; - } - } - - if ($basic) { // remote-list command - if ($dostable) { - $latest = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/stable.txt', false, false, $channel); - } else { - $latest = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/latest.txt', false, false, $channel); - } - if (PEAR::isError($latest)) { - $latest = false; - } - $info = array('stable' => $latest); - } else { // list-all command - $inf = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml', false, false, $channel); - if (PEAR::isError($inf)) { - PEAR::popErrorHandling(); - return $inf; - } - if ($searchpackage) { - $found = (!empty($searchpackage) && stristr($package, $searchpackage) !== false); - if (!$found && !(isset($searchsummary) && !empty($searchsummary) - && (stristr($inf['s'], $searchsummary) !== false - || stristr($inf['d'], $searchsummary) !== false))) - { - continue; - }; - } - $releases = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases.xml', false, false, $channel); - if (PEAR::isError($releases)) { - continue; - } - if (!isset($releases['r'][0])) { - $releases['r'] = array($releases['r']); - } - unset($latest); - unset($unstable); - unset($stable); - unset($state); - foreach ($releases['r'] as $release) { - if (!isset($latest)) { - if ($dostable && $release['s'] == 'stable') { - $latest = $release['v']; - $state = 'stable'; - } - if (!$dostable) { - $latest = $release['v']; - $state = $release['s']; - } - } - if (!isset($stable) && $release['s'] == 'stable') { - $stable = $release['v']; - if (!isset($unstable)) { - $unstable = $stable; - } - } - if (!isset($unstable) && $release['s'] != 'stable') { - $latest = $unstable = $release['v']; - $state = $release['s']; - } - if (isset($latest) && !isset($state)) { - $state = $release['s']; - } - if (isset($latest) && isset($stable) && isset($unstable)) { - break; - } - } - $deps = array(); - if (!isset($unstable)) { - $unstable = false; - $state = 'stable'; - if (isset($stable)) { - $latest = $unstable = $stable; - } - } else { - $latest = $unstable; - } - if (!isset($latest)) { - $latest = false; - } - if ($latest) { - $d = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/deps.' . - $latest . '.txt', false, false, $channel); - if (!PEAR::isError($d)) { - $d = unserialize($d); - if ($d) { - if (isset($d['required'])) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - if (!isset($pf)) { - $pf = new PEAR_PackageFile_v2; - } - $pf->setDeps($d); - $tdeps = $pf->getDeps(); - } else { - $tdeps = $d; - } - foreach ($tdeps as $dep) { - if ($dep['type'] !== 'pkg') { - continue; - } - $deps[] = $dep; - } - } - } - } - if (!isset($stable)) { - $stable = '-n/a-'; - } - if (!$searchpackage) { - $info = array('stable' => $latest, 'summary' => $inf['s'], 'description' => - $inf['d'], 'deps' => $deps, 'category' => $inf['ca']['_content'], - 'unstable' => $unstable, 'state' => $state); - } else { - $info = array('stable' => $stable, 'summary' => $inf['s'], 'description' => - $inf['d'], 'deps' => $deps, 'category' => $inf['ca']['_content'], - 'unstable' => $unstable, 'state' => $state); - } - } - $ret[$package] = $info; - } - PEAR::popErrorHandling(); - return $ret; - } - - function listLatestUpgrades($base, $pref_state, $installed, $channel, &$reg) - { - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - - $ret = array(); - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return $ret; - } - - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - - foreach ($packagelist['p'] as $package) { - if (!isset($installed[strtolower($package)])) { - continue; - } - - $inst_version = $reg->packageInfo($package, 'version', $channel); - $inst_state = $reg->packageInfo($package, 'release_state', $channel); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases.xml', false, false, $channel); - PEAR::popErrorHandling(); - if (PEAR::isError($info)) { - continue; // no remote releases - } - - if (!isset($info['r'])) { - continue; - } - - $release = $found = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - - // $info['r'] is sorted by version number - usort($info['r'], array($this, '_sortReleasesByVersionNumber')); - foreach ($info['r'] as $release) { - if ($inst_version && version_compare($release['v'], $inst_version, '<=')) { - // not newer than the one installed - break; - } - - // new version > installed version - if (!$pref_state) { - // every state is a good state - $found = true; - break; - } else { - $new_state = $release['s']; - // if new state >= installed state: go - if (in_array($new_state, $this->betterStates($inst_state, true))) { - $found = true; - break; - } else { - // only allow to lower the state of package, - // if new state >= preferred state: go - if (in_array($new_state, $this->betterStates($pref_state, true))) { - $found = true; - break; - } - } - } - } - - if (!$found) { - continue; - } - - $relinfo = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/' . - $release['v'] . '.xml', false, false, $channel); - if (PEAR::isError($relinfo)) { - return $relinfo; - } - - $ret[$package] = array( - 'version' => $release['v'], - 'state' => $release['s'], - 'filesize' => $relinfo['f'], - ); - } - - return $ret; - } - - function packageInfo($base, $package, $channel = false) - { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pinfo = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml', false, false, $channel); - if (PEAR::isError($pinfo)) { - PEAR::popErrorHandling(); - return PEAR::raiseError('Unknown package: "' . $package . '" in channel "' . $channel . '"' . "\n". 'Debug: ' . - $pinfo->getMessage()); - } - - $releases = array(); - $allreleases = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases.xml', false, false, $channel); - if (!PEAR::isError($allreleases)) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - - if (!is_array($allreleases['r']) || !isset($allreleases['r'][0])) { - $allreleases['r'] = array($allreleases['r']); - } - - $pf = new PEAR_PackageFile_v2; - foreach ($allreleases['r'] as $release) { - $ds = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/deps.' . - $release['v'] . '.txt', false, false, $channel); - if (PEAR::isError($ds)) { - continue; - } - - if (!isset($latest)) { - $latest = $release['v']; - } - - $pf->setDeps(unserialize($ds)); - $ds = $pf->getDeps(); - $info = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) - . '/' . $release['v'] . '.xml', false, false, $channel); - - if (PEAR::isError($info)) { - continue; - } - - $releases[$release['v']] = array( - 'doneby' => $info['m'], - 'license' => $info['l'], - 'summary' => $info['s'], - 'description' => $info['d'], - 'releasedate' => $info['da'], - 'releasenotes' => $info['n'], - 'state' => $release['s'], - 'deps' => $ds ? $ds : array(), - ); - } - } else { - $latest = ''; - } - - PEAR::popErrorHandling(); - if (isset($pinfo['dc']) && isset($pinfo['dp'])) { - if (is_array($pinfo['dp'])) { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp']['_content'])); - } else { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp'])); - } - } else { - $deprecated = false; - } - - if (!isset($latest)) { - $latest = ''; - } - - return array( - 'name' => $pinfo['n'], - 'channel' => $pinfo['c'], - 'category' => $pinfo['ca']['_content'], - 'stable' => $latest, - 'license' => $pinfo['l'], - 'summary' => $pinfo['s'], - 'description' => $pinfo['d'], - 'releases' => $releases, - 'deprecated' => $deprecated, - ); - } - - /** - * Return an array containing all of the states that are more stable than - * or equal to the passed in state - * - * @param string Release state - * @param boolean Determines whether to include $state in the list - * @return false|array False if $state is not a valid release state - */ - function betterStates($state, $include = false) - { - static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - $i = array_search($state, $states); - if ($i === false) { - return false; - } - - if ($include) { - $i--; - } - - return array_slice($states, $i + 1); - } - - /** - * Sort releases by version number - * - * @access private - */ - function _sortReleasesByVersionNumber($a, $b) - { - if (version_compare($a['v'], $b['v'], '=')) { - return 0; - } - - if (version_compare($a['v'], $b['v'], '>')) { - return -1; - } - - if (version_compare($a['v'], $b['v'], '<')) { - return 1; - } - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/REST/11.php b/3rdparty/PEAR/REST/11.php deleted file mode 100644 index 831cfccdb7555ef9ff52fc65b2211927eb3ab019..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/REST/11.php +++ /dev/null @@ -1,341 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: 11.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.3 - */ - -/** - * For downloading REST xml/txt files - */ -require_once 'PEAR/REST.php'; - -/** - * Implement REST 1.1 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.3 - */ -class PEAR_REST_11 -{ - /** - * @var PEAR_REST - */ - var $_rest; - - function PEAR_REST_11($config, $options = array()) - { - $this->_rest = &new PEAR_REST($config, $options); - } - - function listAll($base, $dostable, $basic = true, $searchpackage = false, $searchsummary = false, $channel = false) - { - $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false, false, $channel); - if (PEAR::isError($categorylist)) { - return $categorylist; - } - - $ret = array(); - if (!is_array($categorylist['c']) || !isset($categorylist['c'][0])) { - $categorylist['c'] = array($categorylist['c']); - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - - foreach ($categorylist['c'] as $progress => $category) { - $category = $category['_content']; - $packagesinfo = $this->_rest->retrieveData($base . - 'c/' . urlencode($category) . '/packagesinfo.xml', false, false, $channel); - - if (PEAR::isError($packagesinfo)) { - continue; - } - - if (!is_array($packagesinfo) || !isset($packagesinfo['pi'])) { - continue; - } - - if (!is_array($packagesinfo['pi']) || !isset($packagesinfo['pi'][0])) { - $packagesinfo['pi'] = array($packagesinfo['pi']); - } - - foreach ($packagesinfo['pi'] as $packageinfo) { - if (empty($packageinfo)) { - continue; - } - - $info = $packageinfo['p']; - $package = $info['n']; - $releases = isset($packageinfo['a']) ? $packageinfo['a'] : false; - unset($latest); - unset($unstable); - unset($stable); - unset($state); - - if ($releases) { - if (!isset($releases['r'][0])) { - $releases['r'] = array($releases['r']); - } - - foreach ($releases['r'] as $release) { - if (!isset($latest)) { - if ($dostable && $release['s'] == 'stable') { - $latest = $release['v']; - $state = 'stable'; - } - if (!$dostable) { - $latest = $release['v']; - $state = $release['s']; - } - } - - if (!isset($stable) && $release['s'] == 'stable') { - $stable = $release['v']; - if (!isset($unstable)) { - $unstable = $stable; - } - } - - if (!isset($unstable) && $release['s'] != 'stable') { - $unstable = $release['v']; - $state = $release['s']; - } - - if (isset($latest) && !isset($state)) { - $state = $release['s']; - } - - if (isset($latest) && isset($stable) && isset($unstable)) { - break; - } - } - } - - if ($basic) { // remote-list command - if (!isset($latest)) { - $latest = false; - } - - if ($dostable) { - // $state is not set if there are no releases - if (isset($state) && $state == 'stable') { - $ret[$package] = array('stable' => $latest); - } else { - $ret[$package] = array('stable' => '-n/a-'); - } - } else { - $ret[$package] = array('stable' => $latest); - } - - continue; - } - - // list-all command - if (!isset($unstable)) { - $unstable = false; - $state = 'stable'; - if (isset($stable)) { - $latest = $unstable = $stable; - } - } else { - $latest = $unstable; - } - - if (!isset($latest)) { - $latest = false; - } - - $deps = array(); - if ($latest && isset($packageinfo['deps'])) { - if (!is_array($packageinfo['deps']) || - !isset($packageinfo['deps'][0]) - ) { - $packageinfo['deps'] = array($packageinfo['deps']); - } - - $d = false; - foreach ($packageinfo['deps'] as $dep) { - if ($dep['v'] == $latest) { - $d = unserialize($dep['d']); - } - } - - if ($d) { - if (isset($d['required'])) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - - if (!isset($pf)) { - $pf = new PEAR_PackageFile_v2; - } - - $pf->setDeps($d); - $tdeps = $pf->getDeps(); - } else { - $tdeps = $d; - } - - foreach ($tdeps as $dep) { - if ($dep['type'] !== 'pkg') { - continue; - } - - $deps[] = $dep; - } - } - } - - $info = array( - 'stable' => $latest, - 'summary' => $info['s'], - 'description' => $info['d'], - 'deps' => $deps, - 'category' => $info['ca']['_content'], - 'unstable' => $unstable, - 'state' => $state - ); - $ret[$package] = $info; - } - } - - PEAR::popErrorHandling(); - return $ret; - } - - /** - * List all categories of a REST server - * - * @param string $base base URL of the server - * @return array of categorynames - */ - function listCategories($base, $channel = false) - { - $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false, false, $channel); - if (PEAR::isError($categorylist)) { - return $categorylist; - } - - if (!is_array($categorylist) || !isset($categorylist['c'])) { - return array(); - } - - if (isset($categorylist['c']['_content'])) { - // only 1 category - $categorylist['c'] = array($categorylist['c']); - } - - return $categorylist['c']; - } - - /** - * List packages in a category of a REST server - * - * @param string $base base URL of the server - * @param string $category name of the category - * @param boolean $info also download full package info - * @return array of packagenames - */ - function listCategory($base, $category, $info = false, $channel = false) - { - if ($info == false) { - $url = '%s'.'c/%s/packages.xml'; - } else { - $url = '%s'.'c/%s/packagesinfo.xml'; - } - $url = sprintf($url, - $base, - urlencode($category)); - - // gives '404 Not Found' error when category doesn't exist - $packagelist = $this->_rest->retrieveData($url, false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - if (!is_array($packagelist)) { - return array(); - } - - if ($info == false) { - if (!isset($packagelist['p'])) { - return array(); - } - if (!is_array($packagelist['p']) || - !isset($packagelist['p'][0])) { // only 1 pkg - $packagelist = array($packagelist['p']); - } else { - $packagelist = $packagelist['p']; - } - return $packagelist; - } - - // info == true - if (!isset($packagelist['pi'])) { - return array(); - } - - if (!is_array($packagelist['pi']) || - !isset($packagelist['pi'][0])) { // only 1 pkg - $packagelist_pre = array($packagelist['pi']); - } else { - $packagelist_pre = $packagelist['pi']; - } - - $packagelist = array(); - foreach ($packagelist_pre as $i => $item) { - // compatibility with r/.xml - if (isset($item['a']['r'][0])) { - // multiple releases - $item['p']['v'] = $item['a']['r'][0]['v']; - $item['p']['st'] = $item['a']['r'][0]['s']; - } elseif (isset($item['a'])) { - // first and only release - $item['p']['v'] = $item['a']['r']['v']; - $item['p']['st'] = $item['a']['r']['s']; - } - - $packagelist[$i] = array('attribs' => $item['p']['r'], - '_content' => $item['p']['n'], - 'info' => $item['p']); - } - - return $packagelist; - } - - /** - * Return an array containing all of the states that are more stable than - * or equal to the passed in state - * - * @param string Release state - * @param boolean Determines whether to include $state in the list - * @return false|array False if $state is not a valid release state - */ - function betterStates($state, $include = false) - { - static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - $i = array_search($state, $states); - if ($i === false) { - return false; - } - if ($include) { - $i--; - } - return array_slice($states, $i + 1); - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/REST/13.php b/3rdparty/PEAR/REST/13.php deleted file mode 100644 index 722ae0de30fc97a1677310130a9c6ba505304ca4..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/REST/13.php +++ /dev/null @@ -1,299 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: 13.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a12 - */ - -/** - * For downloading REST xml/txt files - */ -require_once 'PEAR/REST.php'; -require_once 'PEAR/REST/10.php'; - -/** - * Implement REST 1.3 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a12 - */ -class PEAR_REST_13 extends PEAR_REST_10 -{ - /** - * Retrieve information about a remote package to be downloaded from a REST server - * - * This is smart enough to resolve the minimum PHP version dependency prior to download - * @param string $base The uri to prepend to all REST calls - * @param array $packageinfo an array of format: - *
-     *  array(
-     *   'package' => 'packagename',
-     *   'channel' => 'channelname',
-     *  ['state' => 'alpha' (or valid state),]
-     *  -or-
-     *  ['version' => '1.whatever']
-     * 
- * @param string $prefstate Current preferred_state config variable value - * @param bool $installed the installed version of this package to compare against - * @return array|false|PEAR_Error see {@link _returnDownloadURL()} - */ - function getDownloadURL($base, $packageinfo, $prefstate, $installed, $channel = false) - { - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - - $channel = $packageinfo['channel']; - $package = $packageinfo['package']; - $state = isset($packageinfo['state']) ? $packageinfo['state'] : null; - $version = isset($packageinfo['version']) ? $packageinfo['version'] : null; - $restFile = $base . 'r/' . strtolower($package) . '/allreleases2.xml'; - - $info = $this->_rest->retrieveData($restFile, false, false, $channel); - if (PEAR::isError($info)) { - return PEAR::raiseError('No releases available for package "' . - $channel . '/' . $package . '"'); - } - - if (!isset($info['r'])) { - return false; - } - - $release = $found = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - - $skippedphp = false; - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - - if (isset($state)) { - // try our preferred state first - if ($release['s'] == $state) { - if (!isset($version) && version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - - // see if there is something newer and more stable - // bug #7221 - if (in_array($release['s'], $this->betterStates($state), true)) { - if (!isset($version) && version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - } elseif (isset($version)) { - if ($release['v'] == $version) { - if (!isset($this->_rest->_options['force']) && - !isset($version) && - version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - } else { - if (in_array($release['s'], $states)) { - if (version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - } - } - - if (!$found && $skippedphp) { - $found = null; - } - - return $this->_returnDownloadURL($base, $package, $release, $info, $found, $skippedphp, $channel); - } - - function getDepDownloadURL($base, $xsdversion, $dependency, $deppackage, - $prefstate = 'stable', $installed = false, $channel = false) - { - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - - $channel = $dependency['channel']; - $package = $dependency['name']; - $state = isset($dependency['state']) ? $dependency['state'] : null; - $version = isset($dependency['version']) ? $dependency['version'] : null; - $restFile = $base . 'r/' . strtolower($package) .'/allreleases2.xml'; - - $info = $this->_rest->retrieveData($restFile, false, false, $channel); - if (PEAR::isError($info)) { - return PEAR::raiseError('Package "' . $deppackage['channel'] . '/' . $deppackage['package'] - . '" dependency "' . $channel . '/' . $package . '" has no releases'); - } - - if (!is_array($info) || !isset($info['r'])) { - return false; - } - - $exclude = array(); - $min = $max = $recommended = false; - if ($xsdversion == '1.0') { - $pinfo['package'] = $dependency['name']; - $pinfo['channel'] = 'pear.php.net'; // this is always true - don't change this - switch ($dependency['rel']) { - case 'ge' : - $min = $dependency['version']; - break; - case 'gt' : - $min = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'eq' : - $recommended = $dependency['version']; - break; - case 'lt' : - $max = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'le' : - $max = $dependency['version']; - break; - case 'ne' : - $exclude = array($dependency['version']); - break; - } - } else { - $pinfo['package'] = $dependency['name']; - $min = isset($dependency['min']) ? $dependency['min'] : false; - $max = isset($dependency['max']) ? $dependency['max'] : false; - $recommended = isset($dependency['recommended']) ? - $dependency['recommended'] : false; - if (isset($dependency['exclude'])) { - if (!isset($dependency['exclude'][0])) { - $exclude = array($dependency['exclude']); - } - } - } - - $skippedphp = $found = $release = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - - if (in_array($release['v'], $exclude)) { // skip excluded versions - continue; - } - - // allow newer releases to say "I'm OK with the dependent package" - if ($xsdversion == '2.0' && isset($release['co'])) { - if (!is_array($release['co']) || !isset($release['co'][0])) { - $release['co'] = array($release['co']); - } - - foreach ($release['co'] as $entry) { - if (isset($entry['x']) && !is_array($entry['x'])) { - $entry['x'] = array($entry['x']); - } elseif (!isset($entry['x'])) { - $entry['x'] = array(); - } - - if ($entry['c'] == $deppackage['channel'] && - strtolower($entry['p']) == strtolower($deppackage['package']) && - version_compare($deppackage['version'], $entry['min'], '>=') && - version_compare($deppackage['version'], $entry['max'], '<=') && - !in_array($release['v'], $entry['x'])) { - if (version_compare($release['m'], phpversion(), '>')) { - // skip dependency releases that require a PHP version - // newer than our PHP version - $skippedphp = $release; - continue; - } - - $recommended = $release['v']; - break; - } - } - } - - if ($recommended) { - if ($release['v'] != $recommended) { // if we want a specific - // version, then skip all others - continue; - } - - if (!in_array($release['s'], $states)) { - // the stability is too low, but we must return the - // recommended version if possible - return $this->_returnDownloadURL($base, $package, $release, $info, true, false, $channel); - } - } - - if ($min && version_compare($release['v'], $min, 'lt')) { // skip too old versions - continue; - } - - if ($max && version_compare($release['v'], $max, 'gt')) { // skip too new versions - continue; - } - - if ($installed && version_compare($release['v'], $installed, '<')) { - continue; - } - - if (in_array($release['s'], $states)) { // if in the preferred state... - if (version_compare($release['m'], phpversion(), '>')) { - // skip dependency releases that require a PHP version - // newer than our PHP version - $skippedphp = $release; - continue; - } - - $found = true; // ... then use it - break; - } - } - - if (!$found && $skippedphp) { - $found = null; - } - - return $this->_returnDownloadURL($base, $package, $release, $info, $found, $skippedphp, $channel); - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Registry.php b/3rdparty/PEAR/Registry.php deleted file mode 100644 index 35e17db495298ff69fbc0b7f8d4e563d0f4c5d0f..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Registry.php +++ /dev/null @@ -1,2395 +0,0 @@ - - * @author Tomas V. V. Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Registry.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * for PEAR_Error - */ -require_once 'PEAR.php'; -require_once 'PEAR/DependencyDB.php'; - -define('PEAR_REGISTRY_ERROR_LOCK', -2); -define('PEAR_REGISTRY_ERROR_FORMAT', -3); -define('PEAR_REGISTRY_ERROR_FILE', -4); -define('PEAR_REGISTRY_ERROR_CONFLICT', -5); -define('PEAR_REGISTRY_ERROR_CHANNEL_FILE', -6); - -/** - * Administration class used to maintain the installed package database. - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V. V. Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Registry extends PEAR -{ - /** - * File containing all channel information. - * @var string - */ - var $channels = ''; - - /** Directory where registry files are stored. - * @var string - */ - var $statedir = ''; - - /** File where the file map is stored - * @var string - */ - var $filemap = ''; - - /** Directory where registry files for channels are stored. - * @var string - */ - var $channelsdir = ''; - - /** Name of file used for locking the registry - * @var string - */ - var $lockfile = ''; - - /** File descriptor used during locking - * @var resource - */ - var $lock_fp = null; - - /** Mode used during locking - * @var int - */ - var $lock_mode = 0; // XXX UNUSED - - /** Cache of package information. Structure: - * array( - * 'package' => array('id' => ... ), - * ... ) - * @var array - */ - var $pkginfo_cache = array(); - - /** Cache of file map. Structure: - * array( '/path/to/file' => 'package', ... ) - * @var array - */ - var $filemap_cache = array(); - - /** - * @var false|PEAR_ChannelFile - */ - var $_pearChannel; - - /** - * @var false|PEAR_ChannelFile - */ - var $_peclChannel; - - /** - * @var false|PEAR_ChannelFile - */ - var $_docChannel; - - /** - * @var PEAR_DependencyDB - */ - var $_dependencyDB; - - /** - * @var PEAR_Config - */ - var $_config; - - /** - * PEAR_Registry constructor. - * - * @param string (optional) PEAR install directory (for .php files) - * @param PEAR_ChannelFile PEAR_ChannelFile object representing the PEAR channel, if - * default values are not desired. Only used the very first time a PEAR - * repository is initialized - * @param PEAR_ChannelFile PEAR_ChannelFile object representing the PECL channel, if - * default values are not desired. Only used the very first time a PEAR - * repository is initialized - * - * @access public - */ - function PEAR_Registry($pear_install_dir = PEAR_INSTALL_DIR, $pear_channel = false, - $pecl_channel = false) - { - parent::PEAR(); - $this->setInstallDir($pear_install_dir); - $this->_pearChannel = $pear_channel; - $this->_peclChannel = $pecl_channel; - $this->_config = false; - } - - function setInstallDir($pear_install_dir = PEAR_INSTALL_DIR) - { - $ds = DIRECTORY_SEPARATOR; - $this->install_dir = $pear_install_dir; - $this->channelsdir = $pear_install_dir.$ds.'.channels'; - $this->statedir = $pear_install_dir.$ds.'.registry'; - $this->filemap = $pear_install_dir.$ds.'.filemap'; - $this->lockfile = $pear_install_dir.$ds.'.lock'; - } - - function hasWriteAccess() - { - if (!file_exists($this->install_dir)) { - $dir = $this->install_dir; - while ($dir && $dir != '.') { - $olddir = $dir; - $dir = dirname($dir); - if ($dir != '.' && file_exists($dir)) { - if (is_writeable($dir)) { - return true; - } - - return false; - } - - if ($dir == $olddir) { // this can happen in safe mode - return @is_writable($dir); - } - } - - return false; - } - - return is_writeable($this->install_dir); - } - - function setConfig(&$config, $resetInstallDir = true) - { - $this->_config = &$config; - if ($resetInstallDir) { - $this->setInstallDir($config->get('php_dir')); - } - } - - function _initializeChannelDirs() - { - static $running = false; - if (!$running) { - $running = true; - $ds = DIRECTORY_SEPARATOR; - if (!is_dir($this->channelsdir) || - !file_exists($this->channelsdir . $ds . 'pear.php.net.reg') || - !file_exists($this->channelsdir . $ds . 'pecl.php.net.reg') || - !file_exists($this->channelsdir . $ds . 'doc.php.net.reg') || - !file_exists($this->channelsdir . $ds . '__uri.reg')) { - if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg')) { - $pear_channel = $this->_pearChannel; - if (!is_a($pear_channel, 'PEAR_ChannelFile') || !$pear_channel->validate()) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $pear_channel = new PEAR_ChannelFile; - $pear_channel->setAlias('pear'); - $pear_channel->setServer('pear.php.net'); - $pear_channel->setSummary('PHP Extension and Application Repository'); - $pear_channel->setDefaultPEARProtocols(); - $pear_channel->setBaseURL('REST1.0', 'http://pear.php.net/rest/'); - $pear_channel->setBaseURL('REST1.1', 'http://pear.php.net/rest/'); - $pear_channel->setBaseURL('REST1.3', 'http://pear.php.net/rest/'); - //$pear_channel->setBaseURL('REST1.4', 'http://pear.php.net/rest/'); - } else { - $pear_channel->setServer('pear.php.net'); - $pear_channel->setAlias('pear'); - } - - $pear_channel->validate(); - $this->_addChannel($pear_channel); - } - - if (!file_exists($this->channelsdir . $ds . 'pecl.php.net.reg')) { - $pecl_channel = $this->_peclChannel; - if (!is_a($pecl_channel, 'PEAR_ChannelFile') || !$pecl_channel->validate()) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $pecl_channel = new PEAR_ChannelFile; - $pecl_channel->setAlias('pecl'); - $pecl_channel->setServer('pecl.php.net'); - $pecl_channel->setSummary('PHP Extension Community Library'); - $pecl_channel->setDefaultPEARProtocols(); - $pecl_channel->setBaseURL('REST1.0', 'http://pecl.php.net/rest/'); - $pecl_channel->setBaseURL('REST1.1', 'http://pecl.php.net/rest/'); - $pecl_channel->setValidationPackage('PEAR_Validator_PECL', '1.0'); - } else { - $pecl_channel->setServer('pecl.php.net'); - $pecl_channel->setAlias('pecl'); - } - - $pecl_channel->validate(); - $this->_addChannel($pecl_channel); - } - - if (!file_exists($this->channelsdir . $ds . 'doc.php.net.reg')) { - $doc_channel = $this->_docChannel; - if (!is_a($doc_channel, 'PEAR_ChannelFile') || !$doc_channel->validate()) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $doc_channel = new PEAR_ChannelFile; - $doc_channel->setAlias('phpdocs'); - $doc_channel->setServer('doc.php.net'); - $doc_channel->setSummary('PHP Documentation Team'); - $doc_channel->setDefaultPEARProtocols(); - $doc_channel->setBaseURL('REST1.0', 'http://doc.php.net/rest/'); - $doc_channel->setBaseURL('REST1.1', 'http://doc.php.net/rest/'); - $doc_channel->setBaseURL('REST1.3', 'http://doc.php.net/rest/'); - } else { - $doc_channel->setServer('doc.php.net'); - $doc_channel->setAlias('doc'); - } - - $doc_channel->validate(); - $this->_addChannel($doc_channel); - } - - if (!file_exists($this->channelsdir . $ds . '__uri.reg')) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $private = new PEAR_ChannelFile; - $private->setName('__uri'); - $private->setDefaultPEARProtocols(); - $private->setBaseURL('REST1.0', '****'); - $private->setSummary('Pseudo-channel for static packages'); - $this->_addChannel($private); - } - $this->_rebuildFileMap(); - } - - $running = false; - } - } - - function _initializeDirs() - { - $ds = DIRECTORY_SEPARATOR; - // XXX Compatibility code should be removed in the future - // rename all registry files if any to lowercase - if (!OS_WINDOWS && file_exists($this->statedir) && is_dir($this->statedir) && - $handle = opendir($this->statedir)) { - $dest = $this->statedir . $ds; - while (false !== ($file = readdir($handle))) { - if (preg_match('/^.*[A-Z].*\.reg\\z/', $file)) { - rename($dest . $file, $dest . strtolower($file)); - } - } - closedir($handle); - } - - $this->_initializeChannelDirs(); - if (!file_exists($this->filemap)) { - $this->_rebuildFileMap(); - } - $this->_initializeDepDB(); - } - - function _initializeDepDB() - { - if (!isset($this->_dependencyDB)) { - static $initializing = false; - if (!$initializing) { - $initializing = true; - if (!$this->_config) { // never used? - $file = OS_WINDOWS ? 'pear.ini' : '.pearrc'; - $this->_config = &new PEAR_Config($this->statedir . DIRECTORY_SEPARATOR . - $file); - $this->_config->setRegistry($this); - $this->_config->set('php_dir', $this->install_dir); - } - - $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->_config); - if (PEAR::isError($this->_dependencyDB)) { - // attempt to recover by removing the dep db - if (file_exists($this->_config->get('php_dir', null, 'pear.php.net') . - DIRECTORY_SEPARATOR . '.depdb')) { - @unlink($this->_config->get('php_dir', null, 'pear.php.net') . - DIRECTORY_SEPARATOR . '.depdb'); - } - - $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->_config); - if (PEAR::isError($this->_dependencyDB)) { - echo $this->_dependencyDB->getMessage(); - echo 'Unrecoverable error'; - exit(1); - } - } - - $initializing = false; - } - } - } - - /** - * PEAR_Registry destructor. Makes sure no locks are forgotten. - * - * @access private - */ - function _PEAR_Registry() - { - parent::_PEAR(); - if (is_resource($this->lock_fp)) { - $this->_unlock(); - } - } - - /** - * Make sure the directory where we keep registry files exists. - * - * @return bool TRUE if directory exists, FALSE if it could not be - * created - * - * @access private - */ - function _assertStateDir($channel = false) - { - if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') { - return $this->_assertChannelStateDir($channel); - } - - static $init = false; - if (!file_exists($this->statedir)) { - if (!$this->hasWriteAccess()) { - return false; - } - - require_once 'System.php'; - if (!System::mkdir(array('-p', $this->statedir))) { - return $this->raiseError("could not create directory '{$this->statedir}'"); - } - $init = true; - } elseif (!is_dir($this->statedir)) { - return $this->raiseError('Cannot create directory ' . $this->statedir . ', ' . - 'it already exists and is not a directory'); - } - - $ds = DIRECTORY_SEPARATOR; - if (!file_exists($this->channelsdir)) { - if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg') || - !file_exists($this->channelsdir . $ds . 'pecl.php.net.reg') || - !file_exists($this->channelsdir . $ds . 'doc.php.net.reg') || - !file_exists($this->channelsdir . $ds . '__uri.reg')) { - $init = true; - } - } elseif (!is_dir($this->channelsdir)) { - return $this->raiseError('Cannot create directory ' . $this->channelsdir . ', ' . - 'it already exists and is not a directory'); - } - - if ($init) { - static $running = false; - if (!$running) { - $running = true; - $this->_initializeDirs(); - $running = false; - $init = false; - } - } else { - $this->_initializeDepDB(); - } - - return true; - } - - /** - * Make sure the directory where we keep registry files exists for a non-standard channel. - * - * @param string channel name - * @return bool TRUE if directory exists, FALSE if it could not be - * created - * - * @access private - */ - function _assertChannelStateDir($channel) - { - $ds = DIRECTORY_SEPARATOR; - if (!$channel || $this->_getChannelFromAlias($channel) == 'pear.php.net') { - if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg')) { - $this->_initializeChannelDirs(); - } - return $this->_assertStateDir($channel); - } - - $channelDir = $this->_channelDirectoryName($channel); - if (!is_dir($this->channelsdir) || - !file_exists($this->channelsdir . $ds . 'pear.php.net.reg')) { - $this->_initializeChannelDirs(); - } - - if (!file_exists($channelDir)) { - if (!$this->hasWriteAccess()) { - return false; - } - - require_once 'System.php'; - if (!System::mkdir(array('-p', $channelDir))) { - return $this->raiseError("could not create directory '" . $channelDir . - "'"); - } - } elseif (!is_dir($channelDir)) { - return $this->raiseError("could not create directory '" . $channelDir . - "', already exists and is not a directory"); - } - - return true; - } - - /** - * Make sure the directory where we keep registry files for channels exists - * - * @return bool TRUE if directory exists, FALSE if it could not be - * created - * - * @access private - */ - function _assertChannelDir() - { - if (!file_exists($this->channelsdir)) { - if (!$this->hasWriteAccess()) { - return false; - } - - require_once 'System.php'; - if (!System::mkdir(array('-p', $this->channelsdir))) { - return $this->raiseError("could not create directory '{$this->channelsdir}'"); - } - } elseif (!is_dir($this->channelsdir)) { - return $this->raiseError("could not create directory '{$this->channelsdir}" . - "', it already exists and is not a directory"); - } - - if (!file_exists($this->channelsdir . DIRECTORY_SEPARATOR . '.alias')) { - if (!$this->hasWriteAccess()) { - return false; - } - - require_once 'System.php'; - if (!System::mkdir(array('-p', $this->channelsdir . DIRECTORY_SEPARATOR . '.alias'))) { - return $this->raiseError("could not create directory '{$this->channelsdir}/.alias'"); - } - } elseif (!is_dir($this->channelsdir . DIRECTORY_SEPARATOR . '.alias')) { - return $this->raiseError("could not create directory '{$this->channelsdir}" . - "/.alias', it already exists and is not a directory"); - } - - return true; - } - - /** - * Get the name of the file where data for a given package is stored. - * - * @param string channel name, or false if this is a PEAR package - * @param string package name - * - * @return string registry file name - * - * @access public - */ - function _packageFileName($package, $channel = false) - { - if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') { - return $this->_channelDirectoryName($channel) . DIRECTORY_SEPARATOR . - strtolower($package) . '.reg'; - } - - return $this->statedir . DIRECTORY_SEPARATOR . strtolower($package) . '.reg'; - } - - /** - * Get the name of the file where data for a given channel is stored. - * @param string channel name - * @return string registry file name - */ - function _channelFileName($channel, $noaliases = false) - { - if (!$noaliases) { - if (file_exists($this->_getChannelAliasFileName($channel))) { - $channel = implode('', file($this->_getChannelAliasFileName($channel))); - } - } - return $this->channelsdir . DIRECTORY_SEPARATOR . str_replace('/', '_', - strtolower($channel)) . '.reg'; - } - - /** - * @param string - * @return string - */ - function _getChannelAliasFileName($alias) - { - return $this->channelsdir . DIRECTORY_SEPARATOR . '.alias' . - DIRECTORY_SEPARATOR . str_replace('/', '_', strtolower($alias)) . '.txt'; - } - - /** - * Get the name of a channel from its alias - */ - function _getChannelFromAlias($channel) - { - if (!$this->_channelExists($channel)) { - if ($channel == 'pear.php.net') { - return 'pear.php.net'; - } - - if ($channel == 'pecl.php.net') { - return 'pecl.php.net'; - } - - if ($channel == 'doc.php.net') { - return 'doc.php.net'; - } - - if ($channel == '__uri') { - return '__uri'; - } - - return false; - } - - $channel = strtolower($channel); - if (file_exists($this->_getChannelAliasFileName($channel))) { - // translate an alias to an actual channel - return implode('', file($this->_getChannelAliasFileName($channel))); - } - - return $channel; - } - - /** - * Get the alias of a channel from its alias or its name - */ - function _getAlias($channel) - { - if (!$this->_channelExists($channel)) { - if ($channel == 'pear.php.net') { - return 'pear'; - } - - if ($channel == 'pecl.php.net') { - return 'pecl'; - } - - if ($channel == 'doc.php.net') { - return 'phpdocs'; - } - - return false; - } - - $channel = $this->_getChannel($channel); - if (PEAR::isError($channel)) { - return $channel; - } - - return $channel->getAlias(); - } - - /** - * Get the name of the file where data for a given package is stored. - * - * @param string channel name, or false if this is a PEAR package - * @param string package name - * - * @return string registry file name - * - * @access public - */ - function _channelDirectoryName($channel) - { - if (!$channel || $this->_getChannelFromAlias($channel) == 'pear.php.net') { - return $this->statedir; - } - - $ch = $this->_getChannelFromAlias($channel); - if (!$ch) { - $ch = $channel; - } - - return $this->statedir . DIRECTORY_SEPARATOR . strtolower('.channel.' . - str_replace('/', '_', $ch)); - } - - function _openPackageFile($package, $mode, $channel = false) - { - if (!$this->_assertStateDir($channel)) { - return null; - } - - if (!in_array($mode, array('r', 'rb')) && !$this->hasWriteAccess()) { - return null; - } - - $file = $this->_packageFileName($package, $channel); - if (!file_exists($file) && $mode == 'r' || $mode == 'rb') { - return null; - } - - $fp = @fopen($file, $mode); - if (!$fp) { - return null; - } - - return $fp; - } - - function _closePackageFile($fp) - { - fclose($fp); - } - - function _openChannelFile($channel, $mode) - { - if (!$this->_assertChannelDir()) { - return null; - } - - if (!in_array($mode, array('r', 'rb')) && !$this->hasWriteAccess()) { - return null; - } - - $file = $this->_channelFileName($channel); - if (!file_exists($file) && $mode == 'r' || $mode == 'rb') { - return null; - } - - $fp = @fopen($file, $mode); - if (!$fp) { - return null; - } - - return $fp; - } - - function _closeChannelFile($fp) - { - fclose($fp); - } - - function _rebuildFileMap() - { - if (!class_exists('PEAR_Installer_Role')) { - require_once 'PEAR/Installer/Role.php'; - } - - $channels = $this->_listAllPackages(); - $files = array(); - foreach ($channels as $channel => $packages) { - foreach ($packages as $package) { - $version = $this->_packageInfo($package, 'version', $channel); - $filelist = $this->_packageInfo($package, 'filelist', $channel); - if (!is_array($filelist)) { - continue; - } - - foreach ($filelist as $name => $attrs) { - if (isset($attrs['attribs'])) { - $attrs = $attrs['attribs']; - } - - // it is possible for conflicting packages in different channels to - // conflict with data files/doc files - if ($name == 'dirtree') { - continue; - } - - if (isset($attrs['role']) && !in_array($attrs['role'], - PEAR_Installer_Role::getInstallableRoles())) { - // these are not installed - continue; - } - - if (isset($attrs['role']) && !in_array($attrs['role'], - PEAR_Installer_Role::getBaseinstallRoles())) { - $attrs['baseinstalldir'] = $package; - } - - if (isset($attrs['baseinstalldir'])) { - $file = $attrs['baseinstalldir'].DIRECTORY_SEPARATOR.$name; - } else { - $file = $name; - } - - $file = preg_replace(',^/+,', '', $file); - if ($channel != 'pear.php.net') { - if (!isset($files[$attrs['role']])) { - $files[$attrs['role']] = array(); - } - $files[$attrs['role']][$file] = array(strtolower($channel), - strtolower($package)); - } else { - if (!isset($files[$attrs['role']])) { - $files[$attrs['role']] = array(); - } - $files[$attrs['role']][$file] = strtolower($package); - } - } - } - } - - - $this->_assertStateDir(); - if (!$this->hasWriteAccess()) { - return false; - } - - $fp = @fopen($this->filemap, 'wb'); - if (!$fp) { - return false; - } - - $this->filemap_cache = $files; - fwrite($fp, serialize($files)); - fclose($fp); - return true; - } - - function _readFileMap() - { - if (!file_exists($this->filemap)) { - return array(); - } - - $fp = @fopen($this->filemap, 'r'); - if (!$fp) { - return $this->raiseError('PEAR_Registry: could not open filemap "' . $this->filemap . '"', PEAR_REGISTRY_ERROR_FILE, null, null, $php_errormsg); - } - - clearstatcache(); - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - $fsize = filesize($this->filemap); - fclose($fp); - $data = file_get_contents($this->filemap); - set_magic_quotes_runtime($rt); - $tmp = unserialize($data); - if (!$tmp && $fsize > 7) { - return $this->raiseError('PEAR_Registry: invalid filemap data', PEAR_REGISTRY_ERROR_FORMAT, null, null, $data); - } - - $this->filemap_cache = $tmp; - return true; - } - - /** - * Lock the registry. - * - * @param integer lock mode, one of LOCK_EX, LOCK_SH or LOCK_UN. - * See flock manual for more information. - * - * @return bool TRUE on success, FALSE if locking failed, or a - * PEAR error if some other error occurs (such as the - * lock file not being writable). - * - * @access private - */ - function _lock($mode = LOCK_EX) - { - if (stristr(php_uname(), 'Windows 9')) { - return true; - } - - if ($mode != LOCK_UN && is_resource($this->lock_fp)) { - // XXX does not check type of lock (LOCK_SH/LOCK_EX) - return true; - } - - if (!$this->_assertStateDir()) { - if ($mode == LOCK_EX) { - return $this->raiseError('Registry directory is not writeable by the current user'); - } - - return true; - } - - $open_mode = 'w'; - // XXX People reported problems with LOCK_SH and 'w' - if ($mode === LOCK_SH || $mode === LOCK_UN) { - if (!file_exists($this->lockfile)) { - touch($this->lockfile); - } - $open_mode = 'r'; - } - - if (!is_resource($this->lock_fp)) { - $this->lock_fp = @fopen($this->lockfile, $open_mode); - } - - if (!is_resource($this->lock_fp)) { - $this->lock_fp = null; - return $this->raiseError("could not create lock file" . - (isset($php_errormsg) ? ": " . $php_errormsg : "")); - } - - if (!(int)flock($this->lock_fp, $mode)) { - switch ($mode) { - case LOCK_SH: $str = 'shared'; break; - case LOCK_EX: $str = 'exclusive'; break; - case LOCK_UN: $str = 'unlock'; break; - default: $str = 'unknown'; break; - } - - //is resource at this point, close it on error. - fclose($this->lock_fp); - $this->lock_fp = null; - return $this->raiseError("could not acquire $str lock ($this->lockfile)", - PEAR_REGISTRY_ERROR_LOCK); - } - - return true; - } - - function _unlock() - { - $ret = $this->_lock(LOCK_UN); - if (is_resource($this->lock_fp)) { - fclose($this->lock_fp); - } - - $this->lock_fp = null; - return $ret; - } - - function _packageExists($package, $channel = false) - { - return file_exists($this->_packageFileName($package, $channel)); - } - - /** - * Determine whether a channel exists in the registry - * - * @param string Channel name - * @param bool if true, then aliases will be ignored - * @return boolean - */ - function _channelExists($channel, $noaliases = false) - { - $a = file_exists($this->_channelFileName($channel, $noaliases)); - if (!$a && $channel == 'pear.php.net') { - return true; - } - - if (!$a && $channel == 'pecl.php.net') { - return true; - } - - if (!$a && $channel == 'doc.php.net') { - return true; - } - - return $a; - } - - /** - * Determine whether a mirror exists within the deafult channel in the registry - * - * @param string Channel name - * @param string Mirror name - * - * @return boolean - */ - function _mirrorExists($channel, $mirror) - { - $data = $this->_channelInfo($channel); - if (!isset($data['servers']['mirror'])) { - return false; - } - - foreach ($data['servers']['mirror'] as $m) { - if ($m['attribs']['host'] == $mirror) { - return true; - } - } - - return false; - } - - /** - * @param PEAR_ChannelFile Channel object - * @param donotuse - * @param string Last-Modified HTTP tag from remote request - * @return boolean|PEAR_Error True on creation, false if it already exists - */ - function _addChannel($channel, $update = false, $lastmodified = false) - { - if (!is_a($channel, 'PEAR_ChannelFile')) { - return false; - } - - if (!$channel->validate()) { - return false; - } - - if (file_exists($this->_channelFileName($channel->getName()))) { - if (!$update) { - return false; - } - - $checker = $this->_getChannel($channel->getName()); - if (PEAR::isError($checker)) { - return $checker; - } - - if ($channel->getAlias() != $checker->getAlias()) { - if (file_exists($this->_getChannelAliasFileName($checker->getAlias()))) { - @unlink($this->_getChannelAliasFileName($checker->getAlias())); - } - } - } else { - if ($update && !in_array($channel->getName(), array('pear.php.net', 'pecl.php.net', 'doc.php.net'))) { - return false; - } - } - - $ret = $this->_assertChannelDir(); - if (PEAR::isError($ret)) { - return $ret; - } - - $ret = $this->_assertChannelStateDir($channel->getName()); - if (PEAR::isError($ret)) { - return $ret; - } - - if ($channel->getAlias() != $channel->getName()) { - if (file_exists($this->_getChannelAliasFileName($channel->getAlias())) && - $this->_getChannelFromAlias($channel->getAlias()) != $channel->getName()) { - $channel->setAlias($channel->getName()); - } - - if (!$this->hasWriteAccess()) { - return false; - } - - $fp = @fopen($this->_getChannelAliasFileName($channel->getAlias()), 'w'); - if (!$fp) { - return false; - } - - fwrite($fp, $channel->getName()); - fclose($fp); - } - - if (!$this->hasWriteAccess()) { - return false; - } - - $fp = @fopen($this->_channelFileName($channel->getName()), 'wb'); - if (!$fp) { - return false; - } - - $info = $channel->toArray(); - if ($lastmodified) { - $info['_lastmodified'] = $lastmodified; - } else { - $info['_lastmodified'] = date('r'); - } - - fwrite($fp, serialize($info)); - fclose($fp); - return true; - } - - /** - * Deletion fails if there are any packages installed from the channel - * @param string|PEAR_ChannelFile channel name - * @return boolean|PEAR_Error True on deletion, false if it doesn't exist - */ - function _deleteChannel($channel) - { - if (!is_string($channel)) { - if (!is_a($channel, 'PEAR_ChannelFile')) { - return false; - } - - if (!$channel->validate()) { - return false; - } - $channel = $channel->getName(); - } - - if ($this->_getChannelFromAlias($channel) == '__uri') { - return false; - } - - if ($this->_getChannelFromAlias($channel) == 'pecl.php.net') { - return false; - } - - if ($this->_getChannelFromAlias($channel) == 'doc.php.net') { - return false; - } - - if (!$this->_channelExists($channel)) { - return false; - } - - if (!$channel || $this->_getChannelFromAlias($channel) == 'pear.php.net') { - return false; - } - - $channel = $this->_getChannelFromAlias($channel); - if ($channel == 'pear.php.net') { - return false; - } - - $test = $this->_listChannelPackages($channel); - if (count($test)) { - return false; - } - - $test = @rmdir($this->_channelDirectoryName($channel)); - if (!$test) { - return false; - } - - $file = $this->_getChannelAliasFileName($this->_getAlias($channel)); - if (file_exists($file)) { - $test = @unlink($file); - if (!$test) { - return false; - } - } - - $file = $this->_channelFileName($channel); - $ret = true; - if (file_exists($file)) { - $ret = @unlink($file); - } - - return $ret; - } - - /** - * Determine whether a channel exists in the registry - * @param string Channel Alias - * @return boolean - */ - function _isChannelAlias($alias) - { - return file_exists($this->_getChannelAliasFileName($alias)); - } - - /** - * @param string|null - * @param string|null - * @param string|null - * @return array|null - * @access private - */ - function _packageInfo($package = null, $key = null, $channel = 'pear.php.net') - { - if ($package === null) { - if ($channel === null) { - $channels = $this->_listChannels(); - $ret = array(); - foreach ($channels as $channel) { - $channel = strtolower($channel); - $ret[$channel] = array(); - $packages = $this->_listPackages($channel); - foreach ($packages as $package) { - $ret[$channel][] = $this->_packageInfo($package, null, $channel); - } - } - - return $ret; - } - - $ps = $this->_listPackages($channel); - if (!count($ps)) { - return array(); - } - return array_map(array(&$this, '_packageInfo'), - $ps, array_fill(0, count($ps), null), - array_fill(0, count($ps), $channel)); - } - - $fp = $this->_openPackageFile($package, 'r', $channel); - if ($fp === null) { - return null; - } - - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - clearstatcache(); - $this->_closePackageFile($fp); - $data = file_get_contents($this->_packageFileName($package, $channel)); - set_magic_quotes_runtime($rt); - $data = unserialize($data); - if ($key === null) { - return $data; - } - - // compatibility for package.xml version 2.0 - if (isset($data['old'][$key])) { - return $data['old'][$key]; - } - - if (isset($data[$key])) { - return $data[$key]; - } - - return null; - } - - /** - * @param string Channel name - * @param bool whether to strictly retrieve info of channels, not just aliases - * @return array|null - */ - function _channelInfo($channel, $noaliases = false) - { - if (!$this->_channelExists($channel, $noaliases)) { - return null; - } - - $fp = $this->_openChannelFile($channel, 'r'); - if ($fp === null) { - return null; - } - - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - clearstatcache(); - $this->_closeChannelFile($fp); - $data = file_get_contents($this->_channelFileName($channel)); - set_magic_quotes_runtime($rt); - $data = unserialize($data); - return $data; - } - - function _listChannels() - { - $channellist = array(); - if (!file_exists($this->channelsdir) || !is_dir($this->channelsdir)) { - return array('pear.php.net', 'pecl.php.net', 'doc.php.net', '__uri'); - } - - $dp = opendir($this->channelsdir); - while ($ent = readdir($dp)) { - if ($ent{0} == '.' || substr($ent, -4) != '.reg') { - continue; - } - - if ($ent == '__uri.reg') { - $channellist[] = '__uri'; - continue; - } - - $channellist[] = str_replace('_', '/', substr($ent, 0, -4)); - } - - closedir($dp); - if (!in_array('pear.php.net', $channellist)) { - $channellist[] = 'pear.php.net'; - } - - if (!in_array('pecl.php.net', $channellist)) { - $channellist[] = 'pecl.php.net'; - } - - if (!in_array('doc.php.net', $channellist)) { - $channellist[] = 'doc.php.net'; - } - - - if (!in_array('__uri', $channellist)) { - $channellist[] = '__uri'; - } - - natsort($channellist); - return $channellist; - } - - function _listPackages($channel = false) - { - if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') { - return $this->_listChannelPackages($channel); - } - - if (!file_exists($this->statedir) || !is_dir($this->statedir)) { - return array(); - } - - $pkglist = array(); - $dp = opendir($this->statedir); - if (!$dp) { - return $pkglist; - } - - while ($ent = readdir($dp)) { - if ($ent{0} == '.' || substr($ent, -4) != '.reg') { - continue; - } - - $pkglist[] = substr($ent, 0, -4); - } - closedir($dp); - return $pkglist; - } - - function _listChannelPackages($channel) - { - $pkglist = array(); - if (!file_exists($this->_channelDirectoryName($channel)) || - !is_dir($this->_channelDirectoryName($channel))) { - return array(); - } - - $dp = opendir($this->_channelDirectoryName($channel)); - if (!$dp) { - return $pkglist; - } - - while ($ent = readdir($dp)) { - if ($ent{0} == '.' || substr($ent, -4) != '.reg') { - continue; - } - $pkglist[] = substr($ent, 0, -4); - } - - closedir($dp); - return $pkglist; - } - - function _listAllPackages() - { - $ret = array(); - foreach ($this->_listChannels() as $channel) { - $ret[$channel] = $this->_listPackages($channel); - } - - return $ret; - } - - /** - * Add an installed package to the registry - * @param string package name - * @param array package info (parsed by PEAR_Common::infoFrom*() methods) - * @return bool success of saving - * @access private - */ - function _addPackage($package, $info) - { - if ($this->_packageExists($package)) { - return false; - } - - $fp = $this->_openPackageFile($package, 'wb'); - if ($fp === null) { - return false; - } - - $info['_lastmodified'] = time(); - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - if (isset($info['filelist'])) { - $this->_rebuildFileMap(); - } - - return true; - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return bool - * @access private - */ - function _addPackage2($info) - { - if (!is_a($info, 'PEAR_PackageFile_v1') && !is_a($info, 'PEAR_PackageFile_v2')) { - return false; - } - - if (!$info->validate()) { - if (class_exists('PEAR_Common')) { - $ui = PEAR_Frontend::singleton(); - if ($ui) { - foreach ($info->getValidationWarnings() as $err) { - $ui->log($err['message'], true); - } - } - } - return false; - } - - $channel = $info->getChannel(); - $package = $info->getPackage(); - $save = $info; - if ($this->_packageExists($package, $channel)) { - return false; - } - - if (!$this->_channelExists($channel, true)) { - return false; - } - - $info = $info->toArray(true); - if (!$info) { - return false; - } - - $fp = $this->_openPackageFile($package, 'wb', $channel); - if ($fp === null) { - return false; - } - - $info['_lastmodified'] = time(); - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - $this->_rebuildFileMap(); - return true; - } - - /** - * @param string Package name - * @param array parsed package.xml 1.0 - * @param bool this parameter is only here for BC. Don't use it. - * @access private - */ - function _updatePackage($package, $info, $merge = true) - { - $oldinfo = $this->_packageInfo($package); - if (empty($oldinfo)) { - return false; - } - - $fp = $this->_openPackageFile($package, 'w'); - if ($fp === null) { - return false; - } - - if (is_object($info)) { - $info = $info->toArray(); - } - $info['_lastmodified'] = time(); - - $newinfo = $info; - if ($merge) { - $info = array_merge($oldinfo, $info); - } else { - $diff = $info; - } - - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - if (isset($newinfo['filelist'])) { - $this->_rebuildFileMap(); - } - - return true; - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return bool - * @access private - */ - function _updatePackage2($info) - { - if (!$this->_packageExists($info->getPackage(), $info->getChannel())) { - return false; - } - - $fp = $this->_openPackageFile($info->getPackage(), 'w', $info->getChannel()); - if ($fp === null) { - return false; - } - - $save = $info; - $info = $save->getArray(true); - $info['_lastmodified'] = time(); - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - $this->_rebuildFileMap(); - return true; - } - - /** - * @param string Package name - * @param string Channel name - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2|null - * @access private - */ - function &_getPackage($package, $channel = 'pear.php.net') - { - $info = $this->_packageInfo($package, null, $channel); - if ($info === null) { - return $info; - } - - $a = $this->_config; - if (!$a) { - $this->_config = &new PEAR_Config; - $this->_config->set('php_dir', $this->statedir); - } - - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - - $pkg = &new PEAR_PackageFile($this->_config); - $pf = &$pkg->fromArray($info); - return $pf; - } - - /** - * @param string channel name - * @param bool whether to strictly retrieve channel names - * @return PEAR_ChannelFile|PEAR_Error - * @access private - */ - function &_getChannel($channel, $noaliases = false) - { - $ch = false; - if ($this->_channelExists($channel, $noaliases)) { - $chinfo = $this->_channelInfo($channel, $noaliases); - if ($chinfo) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $ch = &PEAR_ChannelFile::fromArrayWithErrors($chinfo); - } - } - - if ($ch) { - if ($ch->validate()) { - return $ch; - } - - foreach ($ch->getErrors(true) as $err) { - $message = $err['message'] . "\n"; - } - - $ch = PEAR::raiseError($message); - return $ch; - } - - if ($this->_getChannelFromAlias($channel) == 'pear.php.net') { - // the registry is not properly set up, so use defaults - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $pear_channel = new PEAR_ChannelFile; - $pear_channel->setServer('pear.php.net'); - $pear_channel->setAlias('pear'); - $pear_channel->setSummary('PHP Extension and Application Repository'); - $pear_channel->setDefaultPEARProtocols(); - $pear_channel->setBaseURL('REST1.0', 'http://pear.php.net/rest/'); - $pear_channel->setBaseURL('REST1.1', 'http://pear.php.net/rest/'); - $pear_channel->setBaseURL('REST1.3', 'http://pear.php.net/rest/'); - return $pear_channel; - } - - if ($this->_getChannelFromAlias($channel) == 'pecl.php.net') { - // the registry is not properly set up, so use defaults - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $pear_channel = new PEAR_ChannelFile; - $pear_channel->setServer('pecl.php.net'); - $pear_channel->setAlias('pecl'); - $pear_channel->setSummary('PHP Extension Community Library'); - $pear_channel->setDefaultPEARProtocols(); - $pear_channel->setBaseURL('REST1.0', 'http://pecl.php.net/rest/'); - $pear_channel->setBaseURL('REST1.1', 'http://pecl.php.net/rest/'); - $pear_channel->setValidationPackage('PEAR_Validator_PECL', '1.0'); - return $pear_channel; - } - - if ($this->_getChannelFromAlias($channel) == 'doc.php.net') { - // the registry is not properly set up, so use defaults - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $doc_channel = new PEAR_ChannelFile; - $doc_channel->setServer('doc.php.net'); - $doc_channel->setAlias('phpdocs'); - $doc_channel->setSummary('PHP Documentation Team'); - $doc_channel->setDefaultPEARProtocols(); - $doc_channel->setBaseURL('REST1.0', 'http://doc.php.net/rest/'); - $doc_channel->setBaseURL('REST1.1', 'http://doc.php.net/rest/'); - $doc_channel->setBaseURL('REST1.3', 'http://doc.php.net/rest/'); - return $doc_channel; - } - - - if ($this->_getChannelFromAlias($channel) == '__uri') { - // the registry is not properly set up, so use defaults - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - - $private = new PEAR_ChannelFile; - $private->setName('__uri'); - $private->setDefaultPEARProtocols(); - $private->setBaseURL('REST1.0', '****'); - $private->setSummary('Pseudo-channel for static packages'); - return $private; - } - - return $ch; - } - - /** - * @param string Package name - * @param string Channel name - * @return bool - */ - function packageExists($package, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_packageExists($package, $channel); - $this->_unlock(); - return $ret; - } - - // }}} - - // {{{ channelExists() - - /** - * @param string channel name - * @param bool if true, then aliases will be ignored - * @return bool - */ - function channelExists($channel, $noaliases = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_channelExists($channel, $noaliases); - $this->_unlock(); - return $ret; - } - - // }}} - - /** - * @param string channel name mirror is in - * @param string mirror name - * - * @return bool - */ - function mirrorExists($channel, $mirror) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - - $ret = $this->_mirrorExists($channel, $mirror); - $this->_unlock(); - return $ret; - } - - // {{{ isAlias() - - /** - * Determines whether the parameter is an alias of a channel - * @param string - * @return bool - */ - function isAlias($alias) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_isChannelAlias($alias); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ packageInfo() - - /** - * @param string|null - * @param string|null - * @param string - * @return array|null - */ - function packageInfo($package = null, $key = null, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_packageInfo($package, $key, $channel); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ channelInfo() - - /** - * Retrieve a raw array of channel data. - * - * Do not use this, instead use {@link getChannel()} for normal - * operations. Array structure is undefined in this method - * @param string channel name - * @param bool whether to strictly retrieve information only on non-aliases - * @return array|null|PEAR_Error - */ - function channelInfo($channel = null, $noaliases = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_channelInfo($channel, $noaliases); - $this->_unlock(); - return $ret; - } - - // }}} - - /** - * @param string - */ - function channelName($channel) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_getChannelFromAlias($channel); - $this->_unlock(); - return $ret; - } - - /** - * @param string - */ - function channelAlias($channel) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_getAlias($channel); - $this->_unlock(); - return $ret; - } - // {{{ listPackages() - - function listPackages($channel = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_listPackages($channel); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ listAllPackages() - - function listAllPackages() - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_listAllPackages(); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ listChannel() - - function listChannels() - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_listChannels(); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ addPackage() - - /** - * Add an installed package to the registry - * @param string|PEAR_PackageFile_v1|PEAR_PackageFile_v2 package name or object - * that will be passed to {@link addPackage2()} - * @param array package info (parsed by PEAR_Common::infoFrom*() methods) - * @return bool success of saving - */ - function addPackage($package, $info) - { - if (is_object($info)) { - return $this->addPackage2($info); - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_addPackage($package, $info); - $this->_unlock(); - if ($ret) { - if (!class_exists('PEAR_PackageFile_v1')) { - require_once 'PEAR/PackageFile/v1.php'; - } - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->_config); - $pf->fromArray($info); - $this->_dependencyDB->uninstallPackage($pf); - $this->_dependencyDB->installPackage($pf); - } - return $ret; - } - - // }}} - // {{{ addPackage2() - - function addPackage2($info) - { - if (!is_object($info)) { - return $this->addPackage($info['package'], $info); - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_addPackage2($info); - $this->_unlock(); - if ($ret) { - $this->_dependencyDB->uninstallPackage($info); - $this->_dependencyDB->installPackage($info); - } - return $ret; - } - - // }}} - // {{{ updateChannel() - - /** - * For future expandibility purposes, separate this - * @param PEAR_ChannelFile - */ - function updateChannel($channel, $lastmodified = null) - { - if ($channel->getName() == '__uri') { - return false; - } - return $this->addChannel($channel, $lastmodified, true); - } - - // }}} - // {{{ deleteChannel() - - /** - * Deletion fails if there are any packages installed from the channel - * @param string|PEAR_ChannelFile channel name - * @return boolean|PEAR_Error True on deletion, false if it doesn't exist - */ - function deleteChannel($channel) - { - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - - $ret = $this->_deleteChannel($channel); - $this->_unlock(); - if ($ret && is_a($this->_config, 'PEAR_Config')) { - $this->_config->setChannels($this->listChannels()); - } - - return $ret; - } - - // }}} - // {{{ addChannel() - - /** - * @param PEAR_ChannelFile Channel object - * @param string Last-Modified header from HTTP for caching - * @return boolean|PEAR_Error True on creation, false if it already exists - */ - function addChannel($channel, $lastmodified = false, $update = false) - { - if (!is_a($channel, 'PEAR_ChannelFile') || !$channel->validate()) { - return false; - } - - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - - $ret = $this->_addChannel($channel, $update, $lastmodified); - $this->_unlock(); - if (!$update && $ret && is_a($this->_config, 'PEAR_Config')) { - $this->_config->setChannels($this->listChannels()); - } - - return $ret; - } - - // }}} - // {{{ deletePackage() - - function deletePackage($package, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - - $file = $this->_packageFileName($package, $channel); - $ret = file_exists($file) ? @unlink($file) : false; - $this->_rebuildFileMap(); - $this->_unlock(); - $p = array('channel' => $channel, 'package' => $package); - $this->_dependencyDB->uninstallPackage($p); - return $ret; - } - - // }}} - // {{{ updatePackage() - - function updatePackage($package, $info, $merge = true) - { - if (is_object($info)) { - return $this->updatePackage2($info, $merge); - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_updatePackage($package, $info, $merge); - $this->_unlock(); - if ($ret) { - if (!class_exists('PEAR_PackageFile_v1')) { - require_once 'PEAR/PackageFile/v1.php'; - } - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->_config); - $pf->fromArray($this->packageInfo($package)); - $this->_dependencyDB->uninstallPackage($pf); - $this->_dependencyDB->installPackage($pf); - } - return $ret; - } - - // }}} - // {{{ updatePackage2() - - function updatePackage2($info) - { - - if (!is_object($info)) { - return $this->updatePackage($info['package'], $info, $merge); - } - - if (!$info->validate(PEAR_VALIDATE_DOWNLOADING)) { - return false; - } - - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - - $ret = $this->_updatePackage2($info); - $this->_unlock(); - if ($ret) { - $this->_dependencyDB->uninstallPackage($info); - $this->_dependencyDB->installPackage($info); - } - - return $ret; - } - - // }}} - // {{{ getChannel() - /** - * @param string channel name - * @param bool whether to strictly return raw channels (no aliases) - * @return PEAR_ChannelFile|PEAR_Error - */ - function &getChannel($channel, $noaliases = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = &$this->_getChannel($channel, $noaliases); - $this->_unlock(); - if (!$ret) { - return PEAR::raiseError('Unknown channel: ' . $channel); - } - return $ret; - } - - // }}} - // {{{ getPackage() - /** - * @param string package name - * @param string channel name - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2|null - */ - function &getPackage($package, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $pf = &$this->_getPackage($package, $channel); - $this->_unlock(); - return $pf; - } - - // }}} - - /** - * Get PEAR_PackageFile_v[1/2] objects representing the contents of - * a dependency group that are installed. - * - * This is used at uninstall-time - * @param array - * @return array|false - */ - function getInstalledGroup($group) - { - $ret = array(); - if (isset($group['package'])) { - if (!isset($group['package'][0])) { - $group['package'] = array($group['package']); - } - foreach ($group['package'] as $package) { - $depchannel = isset($package['channel']) ? $package['channel'] : '__uri'; - $p = &$this->getPackage($package['name'], $depchannel); - if ($p) { - $save = &$p; - $ret[] = &$save; - } - } - } - if (isset($group['subpackage'])) { - if (!isset($group['subpackage'][0])) { - $group['subpackage'] = array($group['subpackage']); - } - foreach ($group['subpackage'] as $package) { - $depchannel = isset($package['channel']) ? $package['channel'] : '__uri'; - $p = &$this->getPackage($package['name'], $depchannel); - if ($p) { - $save = &$p; - $ret[] = &$save; - } - } - } - if (!count($ret)) { - return false; - } - return $ret; - } - - // {{{ getChannelValidator() - /** - * @param string channel name - * @return PEAR_Validate|false - */ - function &getChannelValidator($channel) - { - $chan = $this->getChannel($channel); - if (PEAR::isError($chan)) { - return $chan; - } - $val = $chan->getValidationObject(); - return $val; - } - // }}} - // {{{ getChannels() - /** - * @param string channel name - * @return array an array of PEAR_ChannelFile objects representing every installed channel - */ - function &getChannels() - { - $ret = array(); - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - foreach ($this->_listChannels() as $channel) { - $e = &$this->_getChannel($channel); - if (!$e || PEAR::isError($e)) { - continue; - } - $ret[] = $e; - } - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ checkFileMap() - - /** - * Test whether a file or set of files belongs to a package. - * - * If an array is passed in - * @param string|array file path, absolute or relative to the pear - * install dir - * @param string|array name of PEAR package or array('package' => name, 'channel' => - * channel) of a package that will be ignored - * @param string API version - 1.1 will exclude any files belonging to a package - * @param array private recursion variable - * @return array|false which package and channel the file belongs to, or an empty - * string if the file does not belong to an installed package, - * or belongs to the second parameter's package - */ - function checkFileMap($path, $package = false, $api = '1.0', $attrs = false) - { - if (is_array($path)) { - static $notempty; - if (empty($notempty)) { - if (!class_exists('PEAR_Installer_Role')) { - require_once 'PEAR/Installer/Role.php'; - } - $notempty = create_function('$a','return !empty($a);'); - } - $package = is_array($package) ? array(strtolower($package[0]), strtolower($package[1])) - : strtolower($package); - $pkgs = array(); - foreach ($path as $name => $attrs) { - if (is_array($attrs)) { - if (isset($attrs['install-as'])) { - $name = $attrs['install-as']; - } - if (!in_array($attrs['role'], PEAR_Installer_Role::getInstallableRoles())) { - // these are not installed - continue; - } - if (!in_array($attrs['role'], PEAR_Installer_Role::getBaseinstallRoles())) { - $attrs['baseinstalldir'] = is_array($package) ? $package[1] : $package; - } - if (isset($attrs['baseinstalldir'])) { - $name = $attrs['baseinstalldir'] . DIRECTORY_SEPARATOR . $name; - } - } - $pkgs[$name] = $this->checkFileMap($name, $package, $api, $attrs); - if (PEAR::isError($pkgs[$name])) { - return $pkgs[$name]; - } - } - return array_filter($pkgs, $notempty); - } - if (empty($this->filemap_cache)) { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $err = $this->_readFileMap(); - $this->_unlock(); - if (PEAR::isError($err)) { - return $err; - } - } - if (!$attrs) { - $attrs = array('role' => 'php'); // any old call would be for PHP role only - } - if (isset($this->filemap_cache[$attrs['role']][$path])) { - if ($api >= '1.1' && $this->filemap_cache[$attrs['role']][$path] == $package) { - return false; - } - return $this->filemap_cache[$attrs['role']][$path]; - } - $l = strlen($this->install_dir); - if (substr($path, 0, $l) == $this->install_dir) { - $path = preg_replace('!^'.DIRECTORY_SEPARATOR.'+!', '', substr($path, $l)); - } - if (isset($this->filemap_cache[$attrs['role']][$path])) { - if ($api >= '1.1' && $this->filemap_cache[$attrs['role']][$path] == $package) { - return false; - } - return $this->filemap_cache[$attrs['role']][$path]; - } - return false; - } - - // }}} - // {{{ flush() - /** - * Force a reload of the filemap - * @since 1.5.0RC3 - */ - function flushFileMap() - { - $this->filemap_cache = null; - clearstatcache(); // ensure that the next read gets the full, current filemap - } - - // }}} - // {{{ apiVersion() - /** - * Get the expected API version. Channels API is version 1.1, as it is backwards - * compatible with 1.0 - * @return string - */ - function apiVersion() - { - return '1.1'; - } - // }}} - - - /** - * Parse a package name, or validate a parsed package name array - * @param string|array pass in an array of format - * array( - * 'package' => 'pname', - * ['channel' => 'channame',] - * ['version' => 'version',] - * ['state' => 'state',] - * ['group' => 'groupname']) - * or a string of format - * [channel://][channame/]pname[-version|-state][/group=groupname] - * @return array|PEAR_Error - */ - function parsePackageName($param, $defaultchannel = 'pear.php.net') - { - $saveparam = $param; - if (is_array($param)) { - // convert to string for error messages - $saveparam = $this->parsedPackageNameToString($param); - // process the array - if (!isset($param['package'])) { - return PEAR::raiseError('parsePackageName(): array $param ' . - 'must contain a valid package name in index "param"', - 'package', null, null, $param); - } - if (!isset($param['uri'])) { - if (!isset($param['channel'])) { - $param['channel'] = $defaultchannel; - } - } else { - $param['channel'] = '__uri'; - } - } else { - $components = @parse_url((string) $param); - if (isset($components['scheme'])) { - if ($components['scheme'] == 'http') { - // uri package - $param = array('uri' => $param, 'channel' => '__uri'); - } elseif($components['scheme'] != 'channel') { - return PEAR::raiseError('parsePackageName(): only channel:// uris may ' . - 'be downloaded, not "' . $param . '"', 'invalid', null, null, $param); - } - } - if (!isset($components['path'])) { - return PEAR::raiseError('parsePackageName(): array $param ' . - 'must contain a valid package name in "' . $param . '"', - 'package', null, null, $param); - } - if (isset($components['host'])) { - // remove the leading "/" - $components['path'] = substr($components['path'], 1); - } - if (!isset($components['scheme'])) { - if (strpos($components['path'], '/') !== false) { - if ($components['path']{0} == '/') { - return PEAR::raiseError('parsePackageName(): this is not ' . - 'a package name, it begins with "/" in "' . $param . '"', - 'invalid', null, null, $param); - } - $parts = explode('/', $components['path']); - $components['host'] = array_shift($parts); - if (count($parts) > 1) { - $components['path'] = array_pop($parts); - $components['host'] .= '/' . implode('/', $parts); - } else { - $components['path'] = implode('/', $parts); - } - } else { - $components['host'] = $defaultchannel; - } - } else { - if (strpos($components['path'], '/')) { - $parts = explode('/', $components['path']); - $components['path'] = array_pop($parts); - $components['host'] .= '/' . implode('/', $parts); - } - } - - if (is_array($param)) { - $param['package'] = $components['path']; - } else { - $param = array( - 'package' => $components['path'] - ); - if (isset($components['host'])) { - $param['channel'] = $components['host']; - } - } - if (isset($components['fragment'])) { - $param['group'] = $components['fragment']; - } - if (isset($components['user'])) { - $param['user'] = $components['user']; - } - if (isset($components['pass'])) { - $param['pass'] = $components['pass']; - } - if (isset($components['query'])) { - parse_str($components['query'], $param['opts']); - } - // check for extension - $pathinfo = pathinfo($param['package']); - if (isset($pathinfo['extension']) && - in_array(strtolower($pathinfo['extension']), array('tgz', 'tar'))) { - $param['extension'] = $pathinfo['extension']; - $param['package'] = substr($pathinfo['basename'], 0, - strlen($pathinfo['basename']) - 4); - } - // check for version - if (strpos($param['package'], '-')) { - $test = explode('-', $param['package']); - if (count($test) != 2) { - return PEAR::raiseError('parsePackageName(): only one version/state ' . - 'delimiter "-" is allowed in "' . $saveparam . '"', - 'version', null, null, $param); - } - list($param['package'], $param['version']) = $test; - } - } - // validation - $info = $this->channelExists($param['channel']); - if (PEAR::isError($info)) { - return $info; - } - if (!$info) { - return PEAR::raiseError('unknown channel "' . $param['channel'] . - '" in "' . $saveparam . '"', 'channel', null, null, $param); - } - $chan = $this->getChannel($param['channel']); - if (PEAR::isError($chan)) { - return $chan; - } - if (!$chan) { - return PEAR::raiseError("Exception: corrupt registry, could not " . - "retrieve channel " . $param['channel'] . " information", - 'registry', null, null, $param); - } - $param['channel'] = $chan->getName(); - $validate = $chan->getValidationObject(); - $vpackage = $chan->getValidationPackage(); - // validate package name - if (!$validate->validPackageName($param['package'], $vpackage['_content'])) { - return PEAR::raiseError('parsePackageName(): invalid package name "' . - $param['package'] . '" in "' . $saveparam . '"', - 'package', null, null, $param); - } - if (isset($param['group'])) { - if (!PEAR_Validate::validGroupName($param['group'])) { - return PEAR::raiseError('parsePackageName(): dependency group "' . $param['group'] . - '" is not a valid group name in "' . $saveparam . '"', 'group', null, null, - $param); - } - } - if (isset($param['state'])) { - if (!in_array(strtolower($param['state']), $validate->getValidStates())) { - return PEAR::raiseError('parsePackageName(): state "' . $param['state'] - . '" is not a valid state in "' . $saveparam . '"', - 'state', null, null, $param); - } - } - if (isset($param['version'])) { - if (isset($param['state'])) { - return PEAR::raiseError('parsePackageName(): cannot contain both ' . - 'a version and a stability (state) in "' . $saveparam . '"', - 'version/state', null, null, $param); - } - // check whether version is actually a state - if (in_array(strtolower($param['version']), $validate->getValidStates())) { - $param['state'] = strtolower($param['version']); - unset($param['version']); - } else { - if (!$validate->validVersion($param['version'])) { - return PEAR::raiseError('parsePackageName(): "' . $param['version'] . - '" is neither a valid version nor a valid state in "' . - $saveparam . '"', 'version/state', null, null, $param); - } - } - } - return $param; - } - - /** - * @param array - * @return string - */ - function parsedPackageNameToString($parsed, $brief = false) - { - if (is_string($parsed)) { - return $parsed; - } - if (is_object($parsed)) { - $p = $parsed; - $parsed = array( - 'package' => $p->getPackage(), - 'channel' => $p->getChannel(), - 'version' => $p->getVersion(), - ); - } - if (isset($parsed['uri'])) { - return $parsed['uri']; - } - if ($brief) { - if ($channel = $this->channelAlias($parsed['channel'])) { - return $channel . '/' . $parsed['package']; - } - } - $upass = ''; - if (isset($parsed['user'])) { - $upass = $parsed['user']; - if (isset($parsed['pass'])) { - $upass .= ':' . $parsed['pass']; - } - $upass = "$upass@"; - } - $ret = 'channel://' . $upass . $parsed['channel'] . '/' . $parsed['package']; - if (isset($parsed['version']) || isset($parsed['state'])) { - $ver = isset($parsed['version']) ? $parsed['version'] : ''; - $ver .= isset($parsed['state']) ? $parsed['state'] : ''; - $ret .= '-' . $ver; - } - if (isset($parsed['extension'])) { - $ret .= '.' . $parsed['extension']; - } - if (isset($parsed['opts'])) { - $ret .= '?'; - foreach ($parsed['opts'] as $name => $value) { - $parsed['opts'][$name] = "$name=$value"; - } - $ret .= implode('&', $parsed['opts']); - } - if (isset($parsed['group'])) { - $ret .= '#' . $parsed['group']; - } - return $ret; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Remote.php b/3rdparty/PEAR/Remote.php deleted file mode 100644 index 7b1e314f903af685e4481fdd8289ede22ccdb8f9..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Remote.php +++ /dev/null @@ -1,394 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Remote.php,v 1.50 2004/06/08 18:03:46 cellog Exp $ - -require_once 'PEAR.php'; -require_once 'PEAR/Config.php'; - -/** - * This is a class for doing remote operations against the central - * PEAR database. - * - * @nodep XML_RPC_Value - * @nodep XML_RPC_Message - * @nodep XML_RPC_Client - */ -class PEAR_Remote extends PEAR -{ - // {{{ properties - - var $config = null; - var $cache = null; - - // }}} - - // {{{ PEAR_Remote(config_object) - - function PEAR_Remote(&$config) - { - $this->PEAR(); - $this->config = &$config; - } - - // }}} - - // {{{ getCache() - - - function getCache($args) - { - $id = md5(serialize($args)); - $cachedir = $this->config->get('cache_dir'); - $filename = $cachedir . DIRECTORY_SEPARATOR . 'xmlrpc_cache_' . $id; - if (!file_exists($filename)) { - return null; - }; - - $fp = fopen($filename, 'rb'); - if (!$fp) { - return null; - } - $content = fread($fp, filesize($filename)); - fclose($fp); - $result = array( - 'age' => time() - filemtime($filename), - 'lastChange' => filemtime($filename), - 'content' => unserialize($content), - ); - return $result; - } - - // }}} - - // {{{ saveCache() - - function saveCache($args, $data) - { - $id = md5(serialize($args)); - $cachedir = $this->config->get('cache_dir'); - if (!file_exists($cachedir)) { - System::mkdir(array('-p', $cachedir)); - } - $filename = $cachedir.'/xmlrpc_cache_'.$id; - - $fp = @fopen($filename, "wb"); - if ($fp) { - fwrite($fp, serialize($data)); - fclose($fp); - }; - } - - // }}} - - // {{{ call(method, [args...]) - - function call($method) - { - $_args = $args = func_get_args(); - - $this->cache = $this->getCache($args); - $cachettl = $this->config->get('cache_ttl'); - // If cache is newer than $cachettl seconds, we use the cache! - if ($this->cache !== null && $this->cache['age'] < $cachettl) { - return $this->cache['content']; - }; - - if (extension_loaded("xmlrpc")) { - $result = call_user_func_array(array(&$this, 'call_epi'), $args); - if (!PEAR::isError($result)) { - $this->saveCache($_args, $result); - }; - return $result; - } - if (!@include_once("XML/RPC.php")) { - return $this->raiseError("For this remote PEAR operation you need to install the XML_RPC package"); - } - array_shift($args); - $server_host = $this->config->get('master_server'); - $username = $this->config->get('username'); - $password = $this->config->get('password'); - $eargs = array(); - foreach($args as $arg) $eargs[] = $this->_encode($arg); - $f = new XML_RPC_Message($method, $eargs); - if ($this->cache !== null) { - $maxAge = '?maxAge='.$this->cache['lastChange']; - } else { - $maxAge = ''; - }; - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($proxy = parse_url($this->config->get('http_proxy'))) { - $proxy_host = @$proxy['host']; - $proxy_port = @$proxy['port']; - $proxy_user = @urldecode(@$proxy['user']); - $proxy_pass = @urldecode(@$proxy['pass']); - } - $c = new XML_RPC_Client('/xmlrpc.php'.$maxAge, $server_host, 80, $proxy_host, $proxy_port, $proxy_user, $proxy_pass); - if ($username && $password) { - $c->setCredentials($username, $password); - } - if ($this->config->get('verbose') >= 3) { - $c->setDebug(1); - } - $r = $c->send($f); - if (!$r) { - return $this->raiseError("XML_RPC send failed"); - } - $v = $r->value(); - if ($e = $r->faultCode()) { - if ($e == $GLOBALS['XML_RPC_err']['http_error'] && strstr($r->faultString(), '304 Not Modified') !== false) { - return $this->cache['content']; - } - return $this->raiseError($r->faultString(), $e); - } - - $result = XML_RPC_decode($v); - $this->saveCache($_args, $result); - return $result; - } - - // }}} - - // {{{ call_epi(method, [args...]) - - function call_epi($method) - { - do { - if (extension_loaded("xmlrpc")) { - break; - } - if (OS_WINDOWS) { - $ext = 'dll'; - } elseif (PHP_OS == 'HP-UX') { - $ext = 'sl'; - } elseif (PHP_OS == 'AIX') { - $ext = 'a'; - } else { - $ext = 'so'; - } - $ext = OS_WINDOWS ? 'dll' : 'so'; - @dl("xmlrpc-epi.$ext"); - if (extension_loaded("xmlrpc")) { - break; - } - @dl("xmlrpc.$ext"); - if (extension_loaded("xmlrpc")) { - break; - } - return $this->raiseError("unable to load xmlrpc extension"); - } while (false); - $params = func_get_args(); - array_shift($params); - $method = str_replace("_", ".", $method); - $request = xmlrpc_encode_request($method, $params); - $server_host = $this->config->get("master_server"); - if (empty($server_host)) { - return $this->raiseError("PEAR_Remote::call: no master_server configured"); - } - $server_port = 80; - if ($http_proxy = $this->config->get('http_proxy')) { - $proxy = parse_url($http_proxy); - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - $proxy_host = @$proxy['host']; - $proxy_port = @$proxy['port']; - $proxy_user = @urldecode(@$proxy['user']); - $proxy_pass = @urldecode(@$proxy['pass']); - $fp = @fsockopen($proxy_host, $proxy_port); - $use_proxy = true; - } else { - $use_proxy = false; - $fp = @fsockopen($server_host, $server_port); - } - if (!$fp && $http_proxy) { - return $this->raiseError("PEAR_Remote::call: fsockopen(`$proxy_host', $proxy_port) failed"); - } elseif (!$fp) { - return $this->raiseError("PEAR_Remote::call: fsockopen(`$server_host', $server_port) failed"); - } - $len = strlen($request); - $req_headers = "Host: $server_host:$server_port\r\n" . - "Content-type: text/xml\r\n" . - "Content-length: $len\r\n"; - $username = $this->config->get('username'); - $password = $this->config->get('password'); - if ($username && $password) { - $req_headers .= "Cookie: PEAR_USER=$username; PEAR_PW=$password\r\n"; - $tmp = base64_encode("$username:$password"); - $req_headers .= "Authorization: Basic $tmp\r\n"; - } - if ($this->cache !== null) { - $maxAge = '?maxAge='.$this->cache['lastChange']; - } else { - $maxAge = ''; - }; - - if ($use_proxy && $proxy_host != '' && $proxy_user != '') { - $req_headers .= 'Proxy-Authorization: Basic ' - .base64_encode($proxy_user.':'.$proxy_pass) - ."\r\n"; - } - - if ($this->config->get('verbose') > 3) { - print "XMLRPC REQUEST HEADERS:\n"; - var_dump($req_headers); - print "XMLRPC REQUEST BODY:\n"; - var_dump($request); - } - - if ($use_proxy && $proxy_host != '') { - $post_string = "POST http://".$server_host; - if ($proxy_port > '') { - $post_string .= ':'.$server_port; - } - } else { - $post_string = "POST "; - } - - fwrite($fp, ($post_string."/xmlrpc.php$maxAge HTTP/1.0\r\n$req_headers\r\n$request")); - $response = ''; - $line1 = fgets($fp, 2048); - if (!preg_match('!^HTTP/[0-9\.]+ (\d+) (.*)!', $line1, $matches)) { - return $this->raiseError("PEAR_Remote: invalid HTTP response from XML-RPC server"); - } - switch ($matches[1]) { - case "200": // OK - break; - case "304": // Not Modified - return $this->cache['content']; - case "401": // Unauthorized - if ($username && $password) { - return $this->raiseError("PEAR_Remote: authorization failed", 401); - } else { - return $this->raiseError("PEAR_Remote: authorization required, please log in first", 401); - } - default: - return $this->raiseError("PEAR_Remote: unexpected HTTP response", (int)$matches[1], null, null, "$matches[1] $matches[2]"); - } - while (trim(fgets($fp, 2048)) != ''); // skip rest of headers - while ($chunk = fread($fp, 10240)) { - $response .= $chunk; - } - fclose($fp); - if ($this->config->get('verbose') > 3) { - print "XMLRPC RESPONSE:\n"; - var_dump($response); - } - $ret = xmlrpc_decode($response); - if (is_array($ret) && isset($ret['__PEAR_TYPE__'])) { - if ($ret['__PEAR_TYPE__'] == 'error') { - if (isset($ret['__PEAR_CLASS__'])) { - $class = $ret['__PEAR_CLASS__']; - } else { - $class = "PEAR_Error"; - } - if ($ret['code'] === '') $ret['code'] = null; - if ($ret['message'] === '') $ret['message'] = null; - if ($ret['userinfo'] === '') $ret['userinfo'] = null; - if (strtolower($class) == 'db_error') { - $ret = $this->raiseError(PEAR::errorMessage($ret['code']), - $ret['code'], null, null, - $ret['userinfo']); - } else { - $ret = $this->raiseError($ret['message'], $ret['code'], - null, null, $ret['userinfo']); - } - } - } elseif (is_array($ret) && sizeof($ret) == 1 && isset($ret[0]) - && is_array($ret[0]) && - !empty($ret[0]['faultString']) && - !empty($ret[0]['faultCode'])) { - extract($ret[0]); - $faultString = "XML-RPC Server Fault: " . - str_replace("\n", " ", $faultString); - return $this->raiseError($faultString, $faultCode); - } - return $ret; - } - - // }}} - - // {{{ _encode - - // a slightly extended version of XML_RPC_encode - function _encode($php_val) - { - global $XML_RPC_Boolean, $XML_RPC_Int, $XML_RPC_Double; - global $XML_RPC_String, $XML_RPC_Array, $XML_RPC_Struct; - - $type = gettype($php_val); - $xmlrpcval = new XML_RPC_Value; - - switch($type) { - case "array": - reset($php_val); - $firstkey = key($php_val); - end($php_val); - $lastkey = key($php_val); - if ($firstkey === 0 && is_int($lastkey) && - ($lastkey + 1) == count($php_val)) { - $is_continuous = true; - reset($php_val); - $size = count($php_val); - for ($expect = 0; $expect < $size; $expect++, next($php_val)) { - if (key($php_val) !== $expect) { - $is_continuous = false; - break; - } - } - if ($is_continuous) { - reset($php_val); - $arr = array(); - while (list($k, $v) = each($php_val)) { - $arr[$k] = $this->_encode($v); - } - $xmlrpcval->addArray($arr); - break; - } - } - // fall though if not numerical and continuous - case "object": - $arr = array(); - while (list($k, $v) = each($php_val)) { - $arr[$k] = $this->_encode($v); - } - $xmlrpcval->addStruct($arr); - break; - case "integer": - $xmlrpcval->addScalar($php_val, $XML_RPC_Int); - break; - case "double": - $xmlrpcval->addScalar($php_val, $XML_RPC_Double); - break; - case "string": - case "NULL": - $xmlrpcval->addScalar($php_val, $XML_RPC_String); - break; - case "boolean": - $xmlrpcval->addScalar($php_val, $XML_RPC_Boolean); - break; - case "unknown type": - default: - return null; - } - return $xmlrpcval; - } - - // }}} - -} - -?> diff --git a/3rdparty/PEAR/RunTest.php b/3rdparty/PEAR/RunTest.php deleted file mode 100644 index 5182490697015f3954aa05c924a80f6f58c47ed3..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/RunTest.php +++ /dev/null @@ -1,968 +0,0 @@ - - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: RunTest.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.3.3 - */ - -/** - * for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Config.php'; - -define('DETAILED', 1); -putenv("PHP_PEAR_RUNTESTS=1"); - -/** - * Simplified version of PHP's test suite - * - * Try it with: - * - * $ php -r 'include "../PEAR/RunTest.php"; $t=new PEAR_RunTest; $o=$t->run("./pear_system.phpt");print_r($o);' - * - * - * @category pear - * @package PEAR - * @author Tomas V.V.Cox - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.3.3 - */ -class PEAR_RunTest -{ - var $_headers = array(); - var $_logger; - var $_options; - var $_php; - var $tests_count; - var $xdebug_loaded; - /** - * Saved value of php executable, used to reset $_php when we - * have a test that uses cgi - * - * @var unknown_type - */ - var $_savephp; - var $ini_overwrites = array( - 'output_handler=', - 'open_basedir=', - 'safe_mode=0', - 'disable_functions=', - 'output_buffering=Off', - 'display_errors=1', - 'log_errors=0', - 'html_errors=0', - 'track_errors=1', - 'report_memleaks=0', - 'report_zend_debug=0', - 'docref_root=', - 'docref_ext=.html', - 'error_prepend_string=', - 'error_append_string=', - 'auto_prepend_file=', - 'auto_append_file=', - 'magic_quotes_runtime=0', - 'xdebug.default_enable=0', - 'allow_url_fopen=1', - ); - - /** - * An object that supports the PEAR_Common->log() signature, or null - * @param PEAR_Common|null - */ - function PEAR_RunTest($logger = null, $options = array()) - { - if (!defined('E_DEPRECATED')) { - define('E_DEPRECATED', 0); - } - if (!defined('E_STRICT')) { - define('E_STRICT', 0); - } - $this->ini_overwrites[] = 'error_reporting=' . (E_ALL & ~(E_DEPRECATED | E_STRICT)); - if (is_null($logger)) { - require_once 'PEAR/Common.php'; - $logger = new PEAR_Common; - } - $this->_logger = $logger; - $this->_options = $options; - - $conf = &PEAR_Config::singleton(); - $this->_php = $conf->get('php_bin'); - } - - /** - * Taken from php-src/run-tests.php - * - * @param string $commandline command name - * @param array $env - * @param string $stdin standard input to pass to the command - * @return unknown - */ - function system_with_timeout($commandline, $env = null, $stdin = null) - { - $data = ''; - if (version_compare(phpversion(), '5.0.0', '<')) { - $proc = proc_open($commandline, array( - 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - 2 => array('pipe', 'w') - ), $pipes); - } else { - $proc = proc_open($commandline, array( - 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - 2 => array('pipe', 'w') - ), $pipes, null, $env, array('suppress_errors' => true)); - } - - if (!$proc) { - return false; - } - - if (is_string($stdin)) { - fwrite($pipes[0], $stdin); - } - fclose($pipes[0]); - - while (true) { - /* hide errors from interrupted syscalls */ - $r = $pipes; - $e = $w = null; - $n = @stream_select($r, $w, $e, 60); - - if ($n === 0) { - /* timed out */ - $data .= "\n ** ERROR: process timed out **\n"; - proc_terminate($proc); - return array(1234567890, $data); - } else if ($n > 0) { - $line = fread($pipes[1], 8192); - if (strlen($line) == 0) { - /* EOF */ - break; - } - $data .= $line; - } - } - if (function_exists('proc_get_status')) { - $stat = proc_get_status($proc); - if ($stat['signaled']) { - $data .= "\nTermsig=".$stat['stopsig']; - } - } - $code = proc_close($proc); - if (function_exists('proc_get_status')) { - $code = $stat['exitcode']; - } - return array($code, $data); - } - - /** - * Turns a PHP INI string into an array - * - * Turns -d "include_path=/foo/bar" into this: - * array( - * 'include_path' => array( - * 'operator' => '-d', - * 'value' => '/foo/bar', - * ) - * ) - * Works both with quotes and without - * - * @param string an PHP INI string, -d "include_path=/foo/bar" - * @return array - */ - function iniString2array($ini_string) - { - if (!$ini_string) { - return array(); - } - $split = preg_split('/[\s]|=/', $ini_string, -1, PREG_SPLIT_NO_EMPTY); - $key = $split[1][0] == '"' ? substr($split[1], 1) : $split[1]; - $value = $split[2][strlen($split[2]) - 1] == '"' ? substr($split[2], 0, -1) : $split[2]; - // FIXME review if this is really the struct to go with - $array = array($key => array('operator' => $split[0], 'value' => $value)); - return $array; - } - - function settings2array($settings, $ini_settings) - { - foreach ($settings as $setting) { - if (strpos($setting, '=') !== false) { - $setting = explode('=', $setting, 2); - $name = trim(strtolower($setting[0])); - $value = trim($setting[1]); - $ini_settings[$name] = $value; - } - } - return $ini_settings; - } - - function settings2params($ini_settings) - { - $settings = ''; - foreach ($ini_settings as $name => $value) { - if (is_array($value)) { - $operator = $value['operator']; - $value = $value['value']; - } else { - $operator = '-d'; - } - $value = addslashes($value); - $settings .= " $operator \"$name=$value\""; - } - return $settings; - } - - function _preparePhpBin($php, $file, $ini_settings) - { - $file = escapeshellarg($file); - // This was fixed in php 5.3 and is not needed after that - if (OS_WINDOWS && version_compare(PHP_VERSION, '5.3', '<')) { - $cmd = '"'.escapeshellarg($php).' '.$ini_settings.' -f ' . $file .'"'; - } else { - $cmd = $php . $ini_settings . ' -f ' . $file; - } - - return $cmd; - } - - function runPHPUnit($file, $ini_settings = '') - { - if (!file_exists($file) && file_exists(getcwd() . DIRECTORY_SEPARATOR . $file)) { - $file = realpath(getcwd() . DIRECTORY_SEPARATOR . $file); - } elseif (file_exists($file)) { - $file = realpath($file); - } - - $cmd = $this->_preparePhpBin($this->_php, $file, $ini_settings); - if (isset($this->_logger)) { - $this->_logger->log(2, 'Running command "' . $cmd . '"'); - } - - $savedir = getcwd(); // in case the test moves us around - chdir(dirname($file)); - echo `$cmd`; - chdir($savedir); - return 'PASSED'; // we have no way of knowing this information so assume passing - } - - /** - * Runs an individual test case. - * - * @param string The filename of the test - * @param array|string INI settings to be applied to the test run - * @param integer Number what the current running test is of the - * whole test suite being runned. - * - * @return string|object Returns PASSED, WARNED, FAILED depending on how the - * test came out. - * PEAR Error when the tester it self fails - */ - function run($file, $ini_settings = array(), $test_number = 1) - { - if (isset($this->_savephp)) { - $this->_php = $this->_savephp; - unset($this->_savephp); - } - if (empty($this->_options['cgi'])) { - // try to see if php-cgi is in the path - $res = $this->system_with_timeout('php-cgi -v'); - if (false !== $res && !(is_array($res) && in_array($res[0], array(-1, 127)))) { - $this->_options['cgi'] = 'php-cgi'; - } - } - if (1 < $len = strlen($this->tests_count)) { - $test_number = str_pad($test_number, $len, ' ', STR_PAD_LEFT); - $test_nr = "[$test_number/$this->tests_count] "; - } else { - $test_nr = ''; - } - - $file = realpath($file); - $section_text = $this->_readFile($file); - if (PEAR::isError($section_text)) { - return $section_text; - } - - if (isset($section_text['POST_RAW']) && isset($section_text['UPLOAD'])) { - return PEAR::raiseError("Cannot contain both POST_RAW and UPLOAD in test file: $file"); - } - - $cwd = getcwd(); - - $pass_options = ''; - if (!empty($this->_options['ini'])) { - $pass_options = $this->_options['ini']; - } - - if (is_string($ini_settings)) { - $ini_settings = $this->iniString2array($ini_settings); - } - - $ini_settings = $this->settings2array($this->ini_overwrites, $ini_settings); - if ($section_text['INI']) { - if (strpos($section_text['INI'], '{PWD}') !== false) { - $section_text['INI'] = str_replace('{PWD}', dirname($file), $section_text['INI']); - } - $ini = preg_split( "/[\n\r]+/", $section_text['INI']); - $ini_settings = $this->settings2array($ini, $ini_settings); - } - $ini_settings = $this->settings2params($ini_settings); - $shortname = str_replace($cwd . DIRECTORY_SEPARATOR, '', $file); - - $tested = trim($section_text['TEST']); - $tested.= !isset($this->_options['simple']) ? "[$shortname]" : ' '; - - if (!empty($section_text['POST']) || !empty($section_text['POST_RAW']) || - !empty($section_text['UPLOAD']) || !empty($section_text['GET']) || - !empty($section_text['COOKIE']) || !empty($section_text['EXPECTHEADERS'])) { - if (empty($this->_options['cgi'])) { - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "SKIP $test_nr$tested (reason: --cgi option needed for this test, type 'pear help run-tests')"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' # skip --cgi option needed for this test, "pear help run-tests" for info'); - } - return 'SKIPPED'; - } - $this->_savephp = $this->_php; - $this->_php = $this->_options['cgi']; - } - - $temp_dir = realpath(dirname($file)); - $main_file_name = basename($file, 'phpt'); - $diff_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'diff'; - $log_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'log'; - $exp_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'exp'; - $output_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'out'; - $memcheck_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'mem'; - $temp_file = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'php'; - $temp_skipif = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'skip.php'; - $temp_clean = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'clean.php'; - $tmp_post = $temp_dir . DIRECTORY_SEPARATOR . uniqid('phpt.'); - - // unlink old test results - $this->_cleanupOldFiles($file); - - // Check if test should be skipped. - $res = $this->_runSkipIf($section_text, $temp_skipif, $tested, $ini_settings); - if (count($res) != 2) { - return $res; - } - $info = $res['info']; - $warn = $res['warn']; - - // We've satisfied the preconditions - run the test! - if (isset($this->_options['coverage']) && $this->xdebug_loaded) { - $xdebug_file = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'xdebug'; - $text = "\n" . 'function coverage_shutdown() {' . - "\n" . ' $xdebug = var_export(xdebug_get_code_coverage(), true);'; - if (!function_exists('file_put_contents')) { - $text .= "\n" . ' $fh = fopen(\'' . $xdebug_file . '\', "wb");' . - "\n" . ' if ($fh !== false) {' . - "\n" . ' fwrite($fh, $xdebug);' . - "\n" . ' fclose($fh);' . - "\n" . ' }'; - } else { - $text .= "\n" . ' file_put_contents(\'' . $xdebug_file . '\', $xdebug);'; - } - - // Workaround for http://pear.php.net/bugs/bug.php?id=17292 - $lines = explode("\n", $section_text['FILE']); - $numLines = count($lines); - $namespace = ''; - $coverage_shutdown = 'coverage_shutdown'; - - if ( - substr($lines[0], 0, 2) == 'save_text($temp_file, "save_text($temp_file, $section_text['FILE']); - } - - $args = $section_text['ARGS'] ? ' -- '.$section_text['ARGS'] : ''; - $cmd = $this->_preparePhpBin($this->_php, $temp_file, $ini_settings); - $cmd.= "$args 2>&1"; - if (isset($this->_logger)) { - $this->_logger->log(2, 'Running command "' . $cmd . '"'); - } - - // Reset environment from any previous test. - $env = $this->_resetEnv($section_text, $temp_file); - - $section_text = $this->_processUpload($section_text, $file); - if (PEAR::isError($section_text)) { - return $section_text; - } - - if (array_key_exists('POST_RAW', $section_text) && !empty($section_text['POST_RAW'])) { - $post = trim($section_text['POST_RAW']); - $raw_lines = explode("\n", $post); - - $request = ''; - $started = false; - foreach ($raw_lines as $i => $line) { - if (empty($env['CONTENT_TYPE']) && - preg_match('/^Content-Type:(.*)/i', $line, $res)) { - $env['CONTENT_TYPE'] = trim(str_replace("\r", '', $res[1])); - continue; - } - if ($started) { - $request .= "\n"; - } - $started = true; - $request .= $line; - } - - $env['CONTENT_LENGTH'] = strlen($request); - $env['REQUEST_METHOD'] = 'POST'; - - $this->save_text($tmp_post, $request); - $cmd = "$this->_php$pass_options$ini_settings \"$temp_file\" 2>&1 < $tmp_post"; - } elseif (array_key_exists('POST', $section_text) && !empty($section_text['POST'])) { - $post = trim($section_text['POST']); - $this->save_text($tmp_post, $post); - $content_length = strlen($post); - - $env['REQUEST_METHOD'] = 'POST'; - $env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; - $env['CONTENT_LENGTH'] = $content_length; - - $cmd = "$this->_php$pass_options$ini_settings \"$temp_file\" 2>&1 < $tmp_post"; - } else { - $env['REQUEST_METHOD'] = 'GET'; - $env['CONTENT_TYPE'] = ''; - $env['CONTENT_LENGTH'] = ''; - } - - if (OS_WINDOWS && isset($section_text['RETURNS'])) { - ob_start(); - system($cmd, $return_value); - $out = ob_get_contents(); - ob_end_clean(); - $section_text['RETURNS'] = (int) trim($section_text['RETURNS']); - $returnfail = ($return_value != $section_text['RETURNS']); - } else { - $returnfail = false; - $stdin = isset($section_text['STDIN']) ? $section_text['STDIN'] : null; - $out = $this->system_with_timeout($cmd, $env, $stdin); - $return_value = $out[0]; - $out = $out[1]; - } - - $output = preg_replace('/\r\n/', "\n", trim($out)); - - if (isset($tmp_post) && realpath($tmp_post) && file_exists($tmp_post)) { - @unlink(realpath($tmp_post)); - } - chdir($cwd); // in case the test moves us around - - $this->_testCleanup($section_text, $temp_clean); - - /* when using CGI, strip the headers from the output */ - $output = $this->_stripHeadersCGI($output); - - if (isset($section_text['EXPECTHEADERS'])) { - $testheaders = $this->_processHeaders($section_text['EXPECTHEADERS']); - $missing = array_diff_assoc($testheaders, $this->_headers); - $changed = ''; - foreach ($missing as $header => $value) { - if (isset($this->_headers[$header])) { - $changed .= "-$header: $value\n+$header: "; - $changed .= $this->_headers[$header]; - } else { - $changed .= "-$header: $value\n"; - } - } - if ($missing) { - // tack on failed headers to output: - $output .= "\n====EXPECTHEADERS FAILURE====:\n$changed"; - } - } - // Does the output match what is expected? - do { - if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) { - if (isset($section_text['EXPECTF'])) { - $wanted = trim($section_text['EXPECTF']); - } else { - $wanted = trim($section_text['EXPECTREGEX']); - } - $wanted_re = preg_replace('/\r\n/', "\n", $wanted); - if (isset($section_text['EXPECTF'])) { - $wanted_re = preg_quote($wanted_re, '/'); - // Stick to basics - $wanted_re = str_replace("%s", ".+?", $wanted_re); //not greedy - $wanted_re = str_replace("%i", "[+\-]?[0-9]+", $wanted_re); - $wanted_re = str_replace("%d", "[0-9]+", $wanted_re); - $wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re); - $wanted_re = str_replace("%f", "[+\-]?\.?[0-9]+\.?[0-9]*(E-?[0-9]+)?", $wanted_re); - $wanted_re = str_replace("%c", ".", $wanted_re); - // %f allows two points "-.0.0" but that is the best *simple* expression - } - - /* DEBUG YOUR REGEX HERE - var_dump($wanted_re); - print(str_repeat('=', 80) . "\n"); - var_dump($output); - */ - if (!$returnfail && preg_match("/^$wanted_re\$/s", $output)) { - if (file_exists($temp_file)) { - unlink($temp_file); - } - if (array_key_exists('FAIL', $section_text)) { - break; - } - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "PASS $test_nr$tested$info"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' - ' . $tested); - } - return 'PASSED'; - } - } else { - if (isset($section_text['EXPECTFILE'])) { - $f = $temp_dir . '/' . trim($section_text['EXPECTFILE']); - if (!($fp = @fopen($f, 'rb'))) { - return PEAR::raiseError('--EXPECTFILE-- section file ' . - $f . ' not found'); - } - fclose($fp); - $section_text['EXPECT'] = file_get_contents($f); - } - - if (isset($section_text['EXPECT'])) { - $wanted = preg_replace('/\r\n/', "\n", trim($section_text['EXPECT'])); - } else { - $wanted = ''; - } - - // compare and leave on success - if (!$returnfail && 0 == strcmp($output, $wanted)) { - if (file_exists($temp_file)) { - unlink($temp_file); - } - if (array_key_exists('FAIL', $section_text)) { - break; - } - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "PASS $test_nr$tested$info"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' - ' . $tested); - } - return 'PASSED'; - } - } - } while (false); - - if (array_key_exists('FAIL', $section_text)) { - // we expect a particular failure - // this is only used for testing PEAR_RunTest - $expectf = isset($section_text['EXPECTF']) ? $wanted_re : null; - $faildiff = $this->generate_diff($wanted, $output, null, $expectf); - $faildiff = preg_replace('/\r/', '', $faildiff); - $wanted = preg_replace('/\r/', '', trim($section_text['FAIL'])); - if ($faildiff == $wanted) { - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "PASS $test_nr$tested$info"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' - ' . $tested); - } - return 'PASSED'; - } - unset($section_text['EXPECTF']); - $output = $faildiff; - if (isset($section_text['RETURNS'])) { - return PEAR::raiseError('Cannot have both RETURNS and FAIL in the same test: ' . - $file); - } - } - - // Test failed so we need to report details. - $txt = $warn ? 'WARN ' : 'FAIL '; - $this->_logger->log(0, $txt . $test_nr . $tested . $info); - - // write .exp - $res = $this->_writeLog($exp_filename, $wanted); - if (PEAR::isError($res)) { - return $res; - } - - // write .out - $res = $this->_writeLog($output_filename, $output); - if (PEAR::isError($res)) { - return $res; - } - - // write .diff - $returns = isset($section_text['RETURNS']) ? - array(trim($section_text['RETURNS']), $return_value) : null; - $expectf = isset($section_text['EXPECTF']) ? $wanted_re : null; - $data = $this->generate_diff($wanted, $output, $returns, $expectf); - $res = $this->_writeLog($diff_filename, $data); - if (PEAR::isError($res)) { - return $res; - } - - // write .log - $data = " ----- EXPECTED OUTPUT -$wanted ----- ACTUAL OUTPUT -$output ----- FAILED -"; - - if ($returnfail) { - $data .= " ----- EXPECTED RETURN -$section_text[RETURNS] ----- ACTUAL RETURN -$return_value -"; - } - - $res = $this->_writeLog($log_filename, $data); - if (PEAR::isError($res)) { - return $res; - } - - if (isset($this->_options['tapoutput'])) { - $wanted = explode("\n", $wanted); - $wanted = "# Expected output:\n#\n#" . implode("\n#", $wanted); - $output = explode("\n", $output); - $output = "#\n#\n# Actual output:\n#\n#" . implode("\n#", $output); - return array($wanted . $output . 'not ok', ' - ' . $tested); - } - return $warn ? 'WARNED' : 'FAILED'; - } - - function generate_diff($wanted, $output, $rvalue, $wanted_re) - { - $w = explode("\n", $wanted); - $o = explode("\n", $output); - $wr = explode("\n", $wanted_re); - $w1 = array_diff_assoc($w, $o); - $o1 = array_diff_assoc($o, $w); - $o2 = $w2 = array(); - foreach ($w1 as $idx => $val) { - if (!$wanted_re || !isset($wr[$idx]) || !isset($o1[$idx]) || - !preg_match('/^' . $wr[$idx] . '\\z/', $o1[$idx])) { - $w2[sprintf("%03d<", $idx)] = sprintf("%03d- ", $idx + 1) . $val; - } - } - foreach ($o1 as $idx => $val) { - if (!$wanted_re || !isset($wr[$idx]) || - !preg_match('/^' . $wr[$idx] . '\\z/', $val)) { - $o2[sprintf("%03d>", $idx)] = sprintf("%03d+ ", $idx + 1) . $val; - } - } - $diff = array_merge($w2, $o2); - ksort($diff); - $extra = $rvalue ? "##EXPECTED: $rvalue[0]\r\n##RETURNED: $rvalue[1]" : ''; - return implode("\r\n", $diff) . $extra; - } - - // Write the given text to a temporary file, and return the filename. - function save_text($filename, $text) - { - if (!$fp = fopen($filename, 'w')) { - return PEAR::raiseError("Cannot open file '" . $filename . "' (save_text)"); - } - fwrite($fp, $text); - fclose($fp); - if (1 < DETAILED) echo " -FILE $filename {{{ -$text -}}} -"; - } - - function _cleanupOldFiles($file) - { - $temp_dir = realpath(dirname($file)); - $mainFileName = basename($file, 'phpt'); - $diff_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'diff'; - $log_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'log'; - $exp_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'exp'; - $output_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'out'; - $memcheck_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'mem'; - $temp_file = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'php'; - $temp_skipif = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'skip.php'; - $temp_clean = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'clean.php'; - $tmp_post = $temp_dir . DIRECTORY_SEPARATOR . uniqid('phpt.'); - - // unlink old test results - @unlink($diff_filename); - @unlink($log_filename); - @unlink($exp_filename); - @unlink($output_filename); - @unlink($memcheck_filename); - @unlink($temp_file); - @unlink($temp_skipif); - @unlink($tmp_post); - @unlink($temp_clean); - } - - function _runSkipIf($section_text, $temp_skipif, $tested, $ini_settings) - { - $info = ''; - $warn = false; - if (array_key_exists('SKIPIF', $section_text) && trim($section_text['SKIPIF'])) { - $this->save_text($temp_skipif, $section_text['SKIPIF']); - $output = $this->system_with_timeout("$this->_php$ini_settings -f \"$temp_skipif\""); - $output = $output[1]; - $loutput = ltrim($output); - unlink($temp_skipif); - if (!strncasecmp('skip', $loutput, 4)) { - $skipreason = "SKIP $tested"; - if (preg_match('/^\s*skip\s*(.+)\s*/i', $output, $m)) { - $skipreason .= '(reason: ' . $m[1] . ')'; - } - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, $skipreason); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' # skip ' . $reason); - } - return 'SKIPPED'; - } - - if (!strncasecmp('info', $loutput, 4) - && preg_match('/^\s*info\s*(.+)\s*/i', $output, $m)) { - $info = " (info: $m[1])"; - } - - if (!strncasecmp('warn', $loutput, 4) - && preg_match('/^\s*warn\s*(.+)\s*/i', $output, $m)) { - $warn = true; /* only if there is a reason */ - $info = " (warn: $m[1])"; - } - } - - return array('warn' => $warn, 'info' => $info); - } - - function _stripHeadersCGI($output) - { - $this->headers = array(); - if (!empty($this->_options['cgi']) && - $this->_php == $this->_options['cgi'] && - preg_match("/^(.*?)(?:\n\n(.*)|\\z)/s", $output, $match)) { - $output = isset($match[2]) ? trim($match[2]) : ''; - $this->_headers = $this->_processHeaders($match[1]); - } - - return $output; - } - - /** - * Return an array that can be used with array_diff() to compare headers - * - * @param string $text - */ - function _processHeaders($text) - { - $headers = array(); - $rh = preg_split("/[\n\r]+/", $text); - foreach ($rh as $line) { - if (strpos($line, ':')!== false) { - $line = explode(':', $line, 2); - $headers[trim($line[0])] = trim($line[1]); - } - } - return $headers; - } - - function _readFile($file) - { - // Load the sections of the test file. - $section_text = array( - 'TEST' => '(unnamed test)', - 'SKIPIF' => '', - 'GET' => '', - 'COOKIE' => '', - 'POST' => '', - 'ARGS' => '', - 'INI' => '', - 'CLEAN' => '', - ); - - if (!is_file($file) || !$fp = fopen($file, "r")) { - return PEAR::raiseError("Cannot open test file: $file"); - } - - $section = ''; - while (!feof($fp)) { - $line = fgets($fp); - - // Match the beginning of a section. - if (preg_match('/^--([_A-Z]+)--/', $line, $r)) { - $section = $r[1]; - $section_text[$section] = ''; - continue; - } elseif (empty($section)) { - fclose($fp); - return PEAR::raiseError("Invalid sections formats in test file: $file"); - } - - // Add to the section text. - $section_text[$section] .= $line; - } - fclose($fp); - - return $section_text; - } - - function _writeLog($logname, $data) - { - if (!$log = fopen($logname, 'w')) { - return PEAR::raiseError("Cannot create test log - $logname"); - } - fwrite($log, $data); - fclose($log); - } - - function _resetEnv($section_text, $temp_file) - { - $env = $_ENV; - $env['REDIRECT_STATUS'] = ''; - $env['QUERY_STRING'] = ''; - $env['PATH_TRANSLATED'] = ''; - $env['SCRIPT_FILENAME'] = ''; - $env['REQUEST_METHOD'] = ''; - $env['CONTENT_TYPE'] = ''; - $env['CONTENT_LENGTH'] = ''; - if (!empty($section_text['ENV'])) { - if (strpos($section_text['ENV'], '{PWD}') !== false) { - $section_text['ENV'] = str_replace('{PWD}', dirname($temp_file), $section_text['ENV']); - } - foreach (explode("\n", trim($section_text['ENV'])) as $e) { - $e = explode('=', trim($e), 2); - if (!empty($e[0]) && isset($e[1])) { - $env[$e[0]] = $e[1]; - } - } - } - if (array_key_exists('GET', $section_text)) { - $env['QUERY_STRING'] = trim($section_text['GET']); - } else { - $env['QUERY_STRING'] = ''; - } - if (array_key_exists('COOKIE', $section_text)) { - $env['HTTP_COOKIE'] = trim($section_text['COOKIE']); - } else { - $env['HTTP_COOKIE'] = ''; - } - $env['REDIRECT_STATUS'] = '1'; - $env['PATH_TRANSLATED'] = $temp_file; - $env['SCRIPT_FILENAME'] = $temp_file; - - return $env; - } - - function _processUpload($section_text, $file) - { - if (array_key_exists('UPLOAD', $section_text) && !empty($section_text['UPLOAD'])) { - $upload_files = trim($section_text['UPLOAD']); - $upload_files = explode("\n", $upload_files); - - $request = "Content-Type: multipart/form-data; boundary=---------------------------20896060251896012921717172737\n" . - "-----------------------------20896060251896012921717172737\n"; - foreach ($upload_files as $fileinfo) { - $fileinfo = explode('=', $fileinfo); - if (count($fileinfo) != 2) { - return PEAR::raiseError("Invalid UPLOAD section in test file: $file"); - } - if (!realpath(dirname($file) . '/' . $fileinfo[1])) { - return PEAR::raiseError("File for upload does not exist: $fileinfo[1] " . - "in test file: $file"); - } - $file_contents = file_get_contents(dirname($file) . '/' . $fileinfo[1]); - $fileinfo[1] = basename($fileinfo[1]); - $request .= "Content-Disposition: form-data; name=\"$fileinfo[0]\"; filename=\"$fileinfo[1]\"\n"; - $request .= "Content-Type: text/plain\n\n"; - $request .= $file_contents . "\n" . - "-----------------------------20896060251896012921717172737\n"; - } - - if (array_key_exists('POST', $section_text) && !empty($section_text['POST'])) { - // encode POST raw - $post = trim($section_text['POST']); - $post = explode('&', $post); - foreach ($post as $i => $post_info) { - $post_info = explode('=', $post_info); - if (count($post_info) != 2) { - return PEAR::raiseError("Invalid POST data in test file: $file"); - } - $post_info[0] = rawurldecode($post_info[0]); - $post_info[1] = rawurldecode($post_info[1]); - $post[$i] = $post_info; - } - foreach ($post as $post_info) { - $request .= "Content-Disposition: form-data; name=\"$post_info[0]\"\n\n"; - $request .= $post_info[1] . "\n" . - "-----------------------------20896060251896012921717172737\n"; - } - unset($section_text['POST']); - } - $section_text['POST_RAW'] = $request; - } - - return $section_text; - } - - function _testCleanup($section_text, $temp_clean) - { - if ($section_text['CLEAN']) { - // perform test cleanup - $this->save_text($temp_clean, $section_text['CLEAN']); - $output = $this->system_with_timeout("$this->_php $temp_clean 2>&1"); - if (strlen($output[1])) { - echo "BORKED --CLEAN-- section! output:\n", $output[1]; - } - if (file_exists($temp_clean)) { - unlink($temp_clean); - } - } - } -} diff --git a/3rdparty/PEAR/Task/Common.php b/3rdparty/PEAR/Task/Common.php deleted file mode 100644 index 5b99c2e434795e143e4c2c7af905de902b15be1d..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Common.php +++ /dev/null @@ -1,202 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Common.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/**#@+ - * Error codes for task validation routines - */ -define('PEAR_TASK_ERROR_NOATTRIBS', 1); -define('PEAR_TASK_ERROR_MISSING_ATTRIB', 2); -define('PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE', 3); -define('PEAR_TASK_ERROR_INVALID', 4); -/**#@-*/ -define('PEAR_TASK_PACKAGE', 1); -define('PEAR_TASK_INSTALL', 2); -define('PEAR_TASK_PACKAGEANDINSTALL', 3); -/** - * A task is an operation that manipulates the contents of a file. - * - * Simple tasks operate on 1 file. Multiple tasks are executed after all files have been - * processed and installed, and are designed to operate on all files containing the task. - * The Post-install script task simply takes advantage of the fact that it will be run - * after installation, replace is a simple task. - * - * Combining tasks is possible, but ordering is significant. - * - * - * - * - * - * - * This will first replace any instance of @data-dir@ in the test.php file - * with the path to the current data directory. Then, it will include the - * test.php file and run the script it contains to configure the package post-installation. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - * @abstract - */ -class PEAR_Task_Common -{ - /** - * Valid types for this version are 'simple' and 'multiple' - * - * - simple tasks operate on the contents of a file and write out changes to disk - * - multiple tasks operate on the contents of many files and write out the - * changes directly to disk - * - * Child task classes must override this property. - * @access protected - */ - var $type = 'simple'; - /** - * Determines which install phase this task is executed under - */ - var $phase = PEAR_TASK_INSTALL; - /** - * @access protected - */ - var $config; - /** - * @access protected - */ - var $registry; - /** - * @access protected - */ - var $logger; - /** - * @access protected - */ - var $installphase; - /** - * @param PEAR_Config - * @param PEAR_Common - */ - function PEAR_Task_Common(&$config, &$logger, $phase) - { - $this->config = &$config; - $this->registry = &$config->getRegistry(); - $this->logger = &$logger; - $this->installphase = $phase; - if ($this->type == 'multiple') { - $GLOBALS['_PEAR_TASK_POSTINSTANCES'][get_class($this)][] = &$this; - } - } - - /** - * Validate the basic contents of a task tag. - * @param PEAR_PackageFile_v2 - * @param array - * @param PEAR_Config - * @param array the entire parsed tag - * @return true|array On error, return an array in format: - * array(PEAR_TASK_ERROR_???[, param1][, param2][, ...]) - * - * For PEAR_TASK_ERROR_MISSING_ATTRIB, pass the attribute name in - * For PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, pass the attribute name and an array - * of legal values in - * @static - * @abstract - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param array attributes from the tag containing this task - * @param string|null last installed version of this package - * @abstract - */ - function init($xml, $fileAttributes, $lastVersion) - { - } - - /** - * Begin a task processing session. All multiple tasks will be processed after each file - * has been successfully installed, all simple tasks should perform their task here and - * return any errors using the custom throwError() method to allow forward compatibility - * - * This method MUST NOT write out any changes to disk - * @param PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - * @abstract - */ - function startSession($pkg, $contents, $dest) - { - } - - /** - * This method is used to process each of the tasks for a particular multiple class - * type. Simple tasks need not implement this method. - * @param array an array of tasks - * @access protected - * @static - * @abstract - */ - function run($tasks) - { - } - - /** - * @static - * @final - */ - function hasPostinstallTasks() - { - return isset($GLOBALS['_PEAR_TASK_POSTINSTANCES']); - } - - /** - * @static - * @final - */ - function runPostinstallTasks() - { - foreach ($GLOBALS['_PEAR_TASK_POSTINSTANCES'] as $class => $tasks) { - $err = call_user_func(array($class, 'run'), - $GLOBALS['_PEAR_TASK_POSTINSTANCES'][$class]); - if ($err) { - return PEAR_Task_Common::throwError($err); - } - } - unset($GLOBALS['_PEAR_TASK_POSTINSTANCES']); - } - - /** - * Determines whether a role is a script - * @return bool - */ - function isScript() - { - return $this->type == 'script'; - } - - function throwError($msg, $code = -1) - { - include_once 'PEAR.php'; - return PEAR::raiseError($msg, $code); - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Postinstallscript.php b/3rdparty/PEAR/Task/Postinstallscript.php deleted file mode 100644 index e43ecca4b3db0aed7ebb1e17dd674d59cd8c1961..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Postinstallscript.php +++ /dev/null @@ -1,323 +0,0 @@ - - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Postinstallscript.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the postinstallscript file task. - * - * Note that post-install scripts are handled separately from installation, by the - * "pear run-scripts" command - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Postinstallscript extends PEAR_Task_Common -{ - var $type = 'script'; - var $_class; - var $_params; - var $_obj; - /** - * - * @var PEAR_PackageFile_v2 - */ - var $_pkg; - var $_contents; - var $phase = PEAR_TASK_INSTALL; - - /** - * Validate the raw xml at parsing-time. - * - * This also attempts to validate the script to make sure it meets the criteria - * for a post-install script - * @param PEAR_PackageFile_v2 - * @param array The XML contents of the tag - * @param PEAR_Config - * @param array the entire parsed tag - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if ($fileXml['role'] != 'php') { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must be role="php"'); - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $file = $pkg->getFileContents($fileXml['name']); - if (PEAR::isError($file)) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" is not valid: ' . - $file->getMessage()); - } elseif ($file === null) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" could not be retrieved for processing!'); - } else { - $analysis = $pkg->analyzeSourceCode($file, true); - if (!$analysis) { - PEAR::popErrorHandling(); - $warnings = ''; - foreach ($pkg->getValidationWarnings() as $warn) { - $warnings .= $warn['message'] . "\n"; - } - return array(PEAR_TASK_ERROR_INVALID, 'Analysis of post-install script "' . - $fileXml['name'] . '" failed: ' . $warnings); - } - if (count($analysis['declared_classes']) != 1) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must declare exactly 1 class'); - } - $class = $analysis['declared_classes'][0]; - if ($class != str_replace(array('/', '.php'), array('_', ''), - $fileXml['name']) . '_postinstall') { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" class "' . $class . '" must be named "' . - str_replace(array('/', '.php'), array('_', ''), - $fileXml['name']) . '_postinstall"'); - } - if (!isset($analysis['declared_methods'][$class])) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must declare methods init() and run()'); - } - $methods = array('init' => 0, 'run' => 1); - foreach ($analysis['declared_methods'][$class] as $method) { - if (isset($methods[$method])) { - unset($methods[$method]); - } - } - if (count($methods)) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must declare methods init() and run()'); - } - } - PEAR::popErrorHandling(); - $definedparams = array(); - $tasksNamespace = $pkg->getTasksNs() . ':'; - if (!isset($xml[$tasksNamespace . 'paramgroup']) && isset($xml['paramgroup'])) { - // in order to support the older betas, which did not expect internal tags - // to also use the namespace - $tasksNamespace = ''; - } - if (isset($xml[$tasksNamespace . 'paramgroup'])) { - $params = $xml[$tasksNamespace . 'paramgroup']; - if (!is_array($params) || !isset($params[0])) { - $params = array($params); - } - foreach ($params as $param) { - if (!isset($param[$tasksNamespace . 'id'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must have ' . - 'an ' . $tasksNamespace . 'id> tag'); - } - if (isset($param[$tasksNamespace . 'name'])) { - if (!in_array($param[$tasksNamespace . 'name'], $definedparams)) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" parameter "' . $param[$tasksNamespace . 'name'] . - '" has not been previously defined'); - } - if (!isset($param[$tasksNamespace . 'conditiontype'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . - 'conditiontype> tag containing either "=", ' . - '"!=", or "preg_match"'); - } - if (!in_array($param[$tasksNamespace . 'conditiontype'], - array('=', '!=', 'preg_match'))) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . - 'conditiontype> tag containing either "=", ' . - '"!=", or "preg_match"'); - } - if (!isset($param[$tasksNamespace . 'value'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . - 'value> tag containing expected parameter value'); - } - } - if (isset($param[$tasksNamespace . 'instructions'])) { - if (!is_string($param[$tasksNamespace . 'instructions'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" ' . $tasksNamespace . 'instructions> must be simple text'); - } - } - if (!isset($param[$tasksNamespace . 'param'])) { - continue; // is no longer required - } - $subparams = $param[$tasksNamespace . 'param']; - if (!is_array($subparams) || !isset($subparams[0])) { - $subparams = array($subparams); - } - foreach ($subparams as $subparam) { - if (!isset($subparam[$tasksNamespace . 'name'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter for ' . - $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . '" must have ' . - 'a ' . $tasksNamespace . 'name> tag'); - } - if (!preg_match('/[a-zA-Z0-9]+/', - $subparam[$tasksNamespace . 'name'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter "' . - $subparam[$tasksNamespace . 'name'] . - '" for ' . $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . - '" is not a valid name. Must contain only alphanumeric characters'); - } - if (!isset($subparam[$tasksNamespace . 'prompt'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter "' . - $subparam[$tasksNamespace . 'name'] . - '" for ' . $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . 'prompt> tag'); - } - if (!isset($subparam[$tasksNamespace . 'type'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter "' . - $subparam[$tasksNamespace . 'name'] . - '" for ' . $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . 'type> tag'); - } - $definedparams[] = $param[$tasksNamespace . 'id'] . '::' . - $subparam[$tasksNamespace . 'name']; - } - } - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param array attributes from the tag containing this task - * @param string|null last installed version of this package, if any (useful for upgrades) - */ - function init($xml, $fileattribs, $lastversion) - { - $this->_class = str_replace('/', '_', $fileattribs['name']); - $this->_filename = $fileattribs['name']; - $this->_class = str_replace ('.php', '', $this->_class) . '_postinstall'; - $this->_params = $xml; - $this->_lastversion = $lastversion; - } - - /** - * Strip the tasks: namespace from internal params - * - * @access private - */ - function _stripNamespace($params = null) - { - if ($params === null) { - $params = array(); - if (!is_array($this->_params)) { - return; - } - foreach ($this->_params as $i => $param) { - if (is_array($param)) { - $param = $this->_stripNamespace($param); - } - $params[str_replace($this->_pkg->getTasksNs() . ':', '', $i)] = $param; - } - $this->_params = $params; - } else { - $newparams = array(); - foreach ($params as $i => $param) { - if (is_array($param)) { - $param = $this->_stripNamespace($param); - } - $newparams[str_replace($this->_pkg->getTasksNs() . ':', '', $i)] = $param; - } - return $newparams; - } - } - - /** - * Unlike other tasks, the installed file name is passed in instead of the file contents, - * because this task is handled post-installation - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file name - * @return bool|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError) - */ - function startSession($pkg, $contents) - { - if ($this->installphase != PEAR_TASK_INSTALL) { - return false; - } - // remove the tasks: namespace if present - $this->_pkg = $pkg; - $this->_stripNamespace(); - $this->logger->log(0, 'Including external post-installation script "' . - $contents . '" - any errors are in this script'); - include_once $contents; - if (class_exists($this->_class)) { - $this->logger->log(0, 'Inclusion succeeded'); - } else { - return $this->throwError('init of post-install script class "' . $this->_class - . '" failed'); - } - $this->_obj = new $this->_class; - $this->logger->log(1, 'running post-install script "' . $this->_class . '->init()"'); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $res = $this->_obj->init($this->config, $pkg, $this->_lastversion); - PEAR::popErrorHandling(); - if ($res) { - $this->logger->log(0, 'init succeeded'); - } else { - return $this->throwError('init of post-install script "' . $this->_class . - '->init()" failed'); - } - $this->_contents = $contents; - return true; - } - - /** - * No longer used - * @see PEAR_PackageFile_v2::runPostinstallScripts() - * @param array an array of tasks - * @param string install or upgrade - * @access protected - * @static - */ - function run() - { - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Postinstallscript/rw.php b/3rdparty/PEAR/Task/Postinstallscript/rw.php deleted file mode 100644 index 8f358bf22bc7b8f488e037ee2dcdd0e32d6dc65f..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Postinstallscript/rw.php +++ /dev/null @@ -1,169 +0,0 @@ - - read/write version - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: rw.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Postinstallscript.php'; -/** - * Abstracts the postinstallscript file task xml. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Postinstallscript_rw extends PEAR_Task_Postinstallscript -{ - /** - * parent package file object - * - * @var PEAR_PackageFile_v2_rw - */ - var $_pkg; - /** - * Enter description here... - * - * @param PEAR_PackageFile_v2_rw $pkg - * @param PEAR_Config $config - * @param PEAR_Frontend $logger - * @param array $fileXml - * @return PEAR_Task_Postinstallscript_rw - */ - function PEAR_Task_Postinstallscript_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return $this->validateXml($this->_pkg, $this->_params, $this->config, $this->_contents); - } - - function getName() - { - return 'postinstallscript'; - } - - /** - * add a simple to the post-install script - * - * Order is significant, so call this method in the same - * sequence the users should see the paramgroups. The $params - * parameter should either be the result of a call to {@link getParam()} - * or an array of calls to getParam(). - * - * Use {@link addConditionTypeGroup()} to add a containing - * a tag - * @param string $id id as seen by the script - * @param array|false $params array of getParam() calls, or false for no params - * @param string|false $instructions - */ - function addParamGroup($id, $params = false, $instructions = false) - { - if ($params && isset($params[0]) && !isset($params[1])) { - $params = $params[0]; - } - $stuff = - array( - $this->_pkg->getTasksNs() . ':id' => $id, - ); - if ($instructions) { - $stuff[$this->_pkg->getTasksNs() . ':instructions'] = $instructions; - } - if ($params) { - $stuff[$this->_pkg->getTasksNs() . ':param'] = $params; - } - $this->_params[$this->_pkg->getTasksNs() . ':paramgroup'][] = $stuff; - } - - /** - * add a complex to the post-install script with conditions - * - * This inserts a with - * - * Order is significant, so call this method in the same - * sequence the users should see the paramgroups. The $params - * parameter should either be the result of a call to {@link getParam()} - * or an array of calls to getParam(). - * - * Use {@link addParamGroup()} to add a simple - * - * @param string $id id as seen by the script - * @param string $oldgroup id of the section referenced by - * - * @param string $param name of the from the older section referenced - * by - * @param string $value value to match of the parameter - * @param string $conditiontype one of '=', '!=', 'preg_match' - * @param array|false $params array of getParam() calls, or false for no params - * @param string|false $instructions - */ - function addConditionTypeGroup($id, $oldgroup, $param, $value, $conditiontype = '=', - $params = false, $instructions = false) - { - if ($params && isset($params[0]) && !isset($params[1])) { - $params = $params[0]; - } - $stuff = array( - $this->_pkg->getTasksNs() . ':id' => $id, - ); - if ($instructions) { - $stuff[$this->_pkg->getTasksNs() . ':instructions'] = $instructions; - } - $stuff[$this->_pkg->getTasksNs() . ':name'] = $oldgroup . '::' . $param; - $stuff[$this->_pkg->getTasksNs() . ':conditiontype'] = $conditiontype; - $stuff[$this->_pkg->getTasksNs() . ':value'] = $value; - if ($params) { - $stuff[$this->_pkg->getTasksNs() . ':param'] = $params; - } - $this->_params[$this->_pkg->getTasksNs() . ':paramgroup'][] = $stuff; - } - - function getXml() - { - return $this->_params; - } - - /** - * Use to set up a param tag for use in creating a paramgroup - * @static - */ - function getParam($name, $prompt, $type = 'string', $default = null) - { - if ($default !== null) { - return - array( - $this->_pkg->getTasksNs() . ':name' => $name, - $this->_pkg->getTasksNs() . ':prompt' => $prompt, - $this->_pkg->getTasksNs() . ':type' => $type, - $this->_pkg->getTasksNs() . ':default' => $default - ); - } - return - array( - $this->_pkg->getTasksNs() . ':name' => $name, - $this->_pkg->getTasksNs() . ':prompt' => $prompt, - $this->_pkg->getTasksNs() . ':type' => $type, - ); - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Replace.php b/3rdparty/PEAR/Task/Replace.php deleted file mode 100644 index 376df64df65c9e48c99904e63d6412d55a797925..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Replace.php +++ /dev/null @@ -1,176 +0,0 @@ - - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Replace.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the replace file task. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Replace extends PEAR_Task_Common -{ - var $type = 'simple'; - var $phase = PEAR_TASK_PACKAGEANDINSTALL; - var $_replacements; - - /** - * Validate the raw xml at parsing-time. - * @param PEAR_PackageFile_v2 - * @param array raw, parsed xml - * @param PEAR_Config - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if (!isset($xml['attribs'])) { - return array(PEAR_TASK_ERROR_NOATTRIBS); - } - if (!isset($xml['attribs']['type'])) { - return array(PEAR_TASK_ERROR_MISSING_ATTRIB, 'type'); - } - if (!isset($xml['attribs']['to'])) { - return array(PEAR_TASK_ERROR_MISSING_ATTRIB, 'to'); - } - if (!isset($xml['attribs']['from'])) { - return array(PEAR_TASK_ERROR_MISSING_ATTRIB, 'from'); - } - if ($xml['attribs']['type'] == 'pear-config') { - if (!in_array($xml['attribs']['to'], $config->getKeys())) { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'to', $xml['attribs']['to'], - $config->getKeys()); - } - } elseif ($xml['attribs']['type'] == 'php-const') { - if (defined($xml['attribs']['to'])) { - return true; - } else { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'to', $xml['attribs']['to'], - array('valid PHP constant')); - } - } elseif ($xml['attribs']['type'] == 'package-info') { - if (in_array($xml['attribs']['to'], - array('name', 'summary', 'channel', 'notes', 'extends', 'description', - 'release_notes', 'license', 'release-license', 'license-uri', - 'version', 'api-version', 'state', 'api-state', 'release_date', - 'date', 'time'))) { - return true; - } else { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'to', $xml['attribs']['to'], - array('name', 'summary', 'channel', 'notes', 'extends', 'description', - 'release_notes', 'license', 'release-license', 'license-uri', - 'version', 'api-version', 'state', 'api-state', 'release_date', - 'date', 'time')); - } - } else { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'type', $xml['attribs']['type'], - array('pear-config', 'package-info', 'php-const')); - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param unused - */ - function init($xml, $attribs) - { - $this->_replacements = isset($xml['attribs']) ? array($xml) : $xml; - } - - /** - * Do a package.xml 1.0 replacement, with additional package-info fields available - * - * See validateXml() source for the complete list of allowed fields - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - */ - function startSession($pkg, $contents, $dest) - { - $subst_from = $subst_to = array(); - foreach ($this->_replacements as $a) { - $a = $a['attribs']; - $to = ''; - if ($a['type'] == 'pear-config') { - if ($this->installphase == PEAR_TASK_PACKAGE) { - return false; - } - if ($a['to'] == 'master_server') { - $chan = $this->registry->getChannel($pkg->getChannel()); - if (!PEAR::isError($chan)) { - $to = $chan->getServer(); - } else { - $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]"); - return false; - } - } else { - if ($this->config->isDefinedLayer('ftp')) { - // try the remote config file first - $to = $this->config->get($a['to'], 'ftp', $pkg->getChannel()); - if (is_null($to)) { - // then default to local - $to = $this->config->get($a['to'], null, $pkg->getChannel()); - } - } else { - $to = $this->config->get($a['to'], null, $pkg->getChannel()); - } - } - if (is_null($to)) { - $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]"); - return false; - } - } elseif ($a['type'] == 'php-const') { - if ($this->installphase == PEAR_TASK_PACKAGE) { - return false; - } - if (defined($a['to'])) { - $to = constant($a['to']); - } else { - $this->logger->log(0, "$dest: invalid php-const replacement: $a[to]"); - return false; - } - } else { - if ($t = $pkg->packageInfo($a['to'])) { - $to = $t; - } else { - $this->logger->log(0, "$dest: invalid package-info replacement: $a[to]"); - return false; - } - } - if (!is_null($to)) { - $subst_from[] = $a['from']; - $subst_to[] = $to; - } - } - $this->logger->log(3, "doing " . sizeof($subst_from) . - " substitution(s) for $dest"); - if (sizeof($subst_from)) { - $contents = str_replace($subst_from, $subst_to, $contents); - } - return $contents; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Replace/rw.php b/3rdparty/PEAR/Task/Replace/rw.php deleted file mode 100644 index 32dad58629746623b2bf932a7cd866a2a3f10cb5..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Replace/rw.php +++ /dev/null @@ -1,61 +0,0 @@ - - read/write version - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: rw.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Replace.php'; -/** - * Abstracts the replace task xml. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Replace_rw extends PEAR_Task_Replace -{ - function PEAR_Task_Replace_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return $this->validateXml($this->_pkg, $this->_params, $this->config, $this->_contents); - } - - function setInfo($from, $to, $type) - { - $this->_params = array('attribs' => array('from' => $from, 'to' => $to, 'type' => $type)); - } - - function getName() - { - return 'replace'; - } - - function getXml() - { - return $this->_params; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Unixeol.php b/3rdparty/PEAR/Task/Unixeol.php deleted file mode 100644 index 89ca81be349c45e7e5d94de2b8fc4ff65d4b9773..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Unixeol.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Unixeol.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the unix line endings file task. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Unixeol extends PEAR_Task_Common -{ - var $type = 'simple'; - var $phase = PEAR_TASK_PACKAGE; - var $_replacements; - - /** - * Validate the raw xml at parsing-time. - * @param PEAR_PackageFile_v2 - * @param array raw, parsed xml - * @param PEAR_Config - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if ($xml != '') { - return array(PEAR_TASK_ERROR_INVALID, 'no attributes allowed'); - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param unused - */ - function init($xml, $attribs) - { - } - - /** - * Replace all line endings with line endings customized for the current OS - * - * See validateXml() source for the complete list of allowed fields - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - */ - function startSession($pkg, $contents, $dest) - { - $this->logger->log(3, "replacing all line endings with \\n in $dest"); - return preg_replace("/\r\n|\n\r|\r|\n/", "\n", $contents); - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Unixeol/rw.php b/3rdparty/PEAR/Task/Unixeol/rw.php deleted file mode 100644 index b2ae5fa5cbd7437fb05f0deba3363dfbf028088f..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Unixeol/rw.php +++ /dev/null @@ -1,56 +0,0 @@ - - read/write version - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: rw.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Unixeol.php'; -/** - * Abstracts the unixeol task xml. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Unixeol_rw extends PEAR_Task_Unixeol -{ - function PEAR_Task_Unixeol_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return true; - } - - function getName() - { - return 'unixeol'; - } - - function getXml() - { - return ''; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Windowseol.php b/3rdparty/PEAR/Task/Windowseol.php deleted file mode 100644 index 8ba4171159faccaaccdbc641d4a7e9555c50de20..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Windowseol.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Windowseol.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the windows line endsings file task. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Windowseol extends PEAR_Task_Common -{ - var $type = 'simple'; - var $phase = PEAR_TASK_PACKAGE; - var $_replacements; - - /** - * Validate the raw xml at parsing-time. - * @param PEAR_PackageFile_v2 - * @param array raw, parsed xml - * @param PEAR_Config - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if ($xml != '') { - return array(PEAR_TASK_ERROR_INVALID, 'no attributes allowed'); - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param unused - */ - function init($xml, $attribs) - { - } - - /** - * Replace all line endings with windows line endings - * - * See validateXml() source for the complete list of allowed fields - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - */ - function startSession($pkg, $contents, $dest) - { - $this->logger->log(3, "replacing all line endings with \\r\\n in $dest"); - return preg_replace("/\r\n|\n\r|\r|\n/", "\r\n", $contents); - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Task/Windowseol/rw.php b/3rdparty/PEAR/Task/Windowseol/rw.php deleted file mode 100644 index f0f1149c83ec58678c9ee10032852af875d7f765..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Task/Windowseol/rw.php +++ /dev/null @@ -1,56 +0,0 @@ - - read/write version - * - * PHP versions 4 and 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: rw.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Windowseol.php'; -/** - * Abstracts the windowseol task xml. - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Windowseol_rw extends PEAR_Task_Windowseol -{ - function PEAR_Task_Windowseol_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return true; - } - - function getName() - { - return 'windowseol'; - } - - function getXml() - { - return ''; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/Validate.php b/3rdparty/PEAR/Validate.php deleted file mode 100644 index 176560bc2377c1edd4293a2465ec9b57586ad35a..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Validate.php +++ /dev/null @@ -1,629 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Validate.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/**#@+ - * Constants for install stage - */ -define('PEAR_VALIDATE_INSTALLING', 1); -define('PEAR_VALIDATE_UNINSTALLING', 2); // this is not bit-mapped like the others -define('PEAR_VALIDATE_NORMAL', 3); -define('PEAR_VALIDATE_DOWNLOADING', 4); // this is not bit-mapped like the others -define('PEAR_VALIDATE_PACKAGING', 7); -/**#@-*/ -require_once 'PEAR/Common.php'; -require_once 'PEAR/Validator/PECL.php'; - -/** - * Validation class for package.xml - channel-level advanced validation - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Validate -{ - var $packageregex = _PEAR_COMMON_PACKAGE_NAME_PREG; - /** - * @var PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - var $_packagexml; - /** - * @var int one of the PEAR_VALIDATE_* constants - */ - var $_state = PEAR_VALIDATE_NORMAL; - /** - * Format: ('error' => array('field' => name, 'reason' => reason), 'warning' => same) - * @var array - * @access private - */ - var $_failures = array('error' => array(), 'warning' => array()); - - /** - * Override this method to handle validation of normal package names - * @param string - * @return bool - * @access protected - */ - function _validPackageName($name) - { - return (bool) preg_match('/^' . $this->packageregex . '\\z/', $name); - } - - /** - * @param string package name to validate - * @param string name of channel-specific validation package - * @final - */ - function validPackageName($name, $validatepackagename = false) - { - if ($validatepackagename) { - if (strtolower($name) == strtolower($validatepackagename)) { - return (bool) preg_match('/^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*\\z/', $name); - } - } - return $this->_validPackageName($name); - } - - /** - * This validates a bundle name, and bundle names must conform - * to the PEAR naming convention, so the method is final and static. - * @param string - * @final - * @static - */ - function validGroupName($name) - { - return (bool) preg_match('/^' . _PEAR_COMMON_PACKAGE_NAME_PREG . '\\z/', $name); - } - - /** - * Determine whether $state represents a valid stability level - * @param string - * @return bool - * @static - * @final - */ - function validState($state) - { - return in_array($state, array('snapshot', 'devel', 'alpha', 'beta', 'stable')); - } - - /** - * Get a list of valid stability levels - * @return array - * @static - * @final - */ - function getValidStates() - { - return array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - } - - /** - * Determine whether a version is a properly formatted version number that can be used - * by version_compare - * @param string - * @return bool - * @static - * @final - */ - function validVersion($ver) - { - return (bool) preg_match(PEAR_COMMON_PACKAGE_VERSION_PREG, $ver); - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - function setPackageFile(&$pf) - { - $this->_packagexml = &$pf; - } - - /** - * @access private - */ - function _addFailure($field, $reason) - { - $this->_failures['errors'][] = array('field' => $field, 'reason' => $reason); - } - - /** - * @access private - */ - function _addWarning($field, $reason) - { - $this->_failures['warnings'][] = array('field' => $field, 'reason' => $reason); - } - - function getFailures() - { - $failures = $this->_failures; - $this->_failures = array('warnings' => array(), 'errors' => array()); - return $failures; - } - - /** - * @param int one of the PEAR_VALIDATE_* constants - */ - function validate($state = null) - { - if (!isset($this->_packagexml)) { - return false; - } - if ($state !== null) { - $this->_state = $state; - } - $this->_failures = array('warnings' => array(), 'errors' => array()); - $this->validatePackageName(); - $this->validateVersion(); - $this->validateMaintainers(); - $this->validateDate(); - $this->validateSummary(); - $this->validateDescription(); - $this->validateLicense(); - $this->validateNotes(); - if ($this->_packagexml->getPackagexmlVersion() == '1.0') { - $this->validateState(); - $this->validateFilelist(); - } elseif ($this->_packagexml->getPackagexmlVersion() == '2.0' || - $this->_packagexml->getPackagexmlVersion() == '2.1') { - $this->validateTime(); - $this->validateStability(); - $this->validateDeps(); - $this->validateMainFilelist(); - $this->validateReleaseFilelist(); - //$this->validateGlobalTasks(); - $this->validateChangelog(); - } - return !((bool) count($this->_failures['errors'])); - } - - /** - * @access protected - */ - function validatePackageName() - { - if ($this->_state == PEAR_VALIDATE_PACKAGING || - $this->_state == PEAR_VALIDATE_NORMAL) { - if (($this->_packagexml->getPackagexmlVersion() == '2.0' || - $this->_packagexml->getPackagexmlVersion() == '2.1') && - $this->_packagexml->getExtends()) { - $version = $this->_packagexml->getVersion() . ''; - $name = $this->_packagexml->getPackage(); - $test = array_shift($a = explode('.', $version)); - if ($test == '0') { - return true; - } - $vlen = strlen($test); - $majver = substr($name, strlen($name) - $vlen); - while ($majver && !is_numeric($majver{0})) { - $majver = substr($majver, 1); - } - if ($majver != $test) { - $this->_addWarning('package', "package $name extends package " . - $this->_packagexml->getExtends() . ' and so the name should ' . - 'have a postfix equal to the major version like "' . - $this->_packagexml->getExtends() . $test . '"'); - return true; - } elseif (substr($name, 0, strlen($name) - $vlen) != - $this->_packagexml->getExtends()) { - $this->_addWarning('package', "package $name extends package " . - $this->_packagexml->getExtends() . ' and so the name must ' . - 'be an extension like "' . $this->_packagexml->getExtends() . - $test . '"'); - return true; - } - } - } - if (!$this->validPackageName($this->_packagexml->getPackage())) { - $this->_addFailure('name', 'package name "' . - $this->_packagexml->getPackage() . '" is invalid'); - return false; - } - } - - /** - * @access protected - */ - function validateVersion() - { - if ($this->_state != PEAR_VALIDATE_PACKAGING) { - if (!$this->validVersion($this->_packagexml->getVersion())) { - $this->_addFailure('version', - 'Invalid version number "' . $this->_packagexml->getVersion() . '"'); - } - return false; - } - $version = $this->_packagexml->getVersion(); - $versioncomponents = explode('.', $version); - if (count($versioncomponents) != 3) { - $this->_addWarning('version', - 'A version number should have 3 decimals (x.y.z)'); - return true; - } - $name = $this->_packagexml->getPackage(); - // version must be based upon state - switch ($this->_packagexml->getState()) { - case 'snapshot' : - return true; - case 'devel' : - if ($versioncomponents[0] . 'a' == '0a') { - return true; - } - if ($versioncomponents[0] == 0) { - $versioncomponents[0] = '0'; - $this->_addWarning('version', - 'version "' . $version . '" should be "' . - implode('.' ,$versioncomponents) . '"'); - } else { - $this->_addWarning('version', - 'packages with devel stability must be < version 1.0.0'); - } - return true; - break; - case 'alpha' : - case 'beta' : - // check for a package that extends a package, - // like Foo and Foo2 - if ($this->_state == PEAR_VALIDATE_PACKAGING) { - if (substr($versioncomponents[2], 1, 2) == 'rc') { - $this->_addFailure('version', 'Release Candidate versions ' . - 'must have capital RC, not lower-case rc'); - return false; - } - } - if (!$this->_packagexml->getExtends()) { - if ($versioncomponents[0] == '1') { - if ($versioncomponents[2]{0} == '0') { - if ($versioncomponents[2] == '0') { - // version 1.*.0000 - $this->_addWarning('version', - 'version 1.' . $versioncomponents[1] . - '.0 probably should not be alpha or beta'); - return true; - } elseif (strlen($versioncomponents[2]) > 1) { - // version 1.*.0RC1 or 1.*.0beta24 etc. - return true; - } else { - // version 1.*.0 - $this->_addWarning('version', - 'version 1.' . $versioncomponents[1] . - '.0 probably should not be alpha or beta'); - return true; - } - } else { - $this->_addWarning('version', - 'bugfix versions (1.3.x where x > 0) probably should ' . - 'not be alpha or beta'); - return true; - } - } elseif ($versioncomponents[0] != '0') { - $this->_addWarning('version', - 'major versions greater than 1 are not allowed for packages ' . - 'without an tag or an identical postfix (foo2 v2.0.0)'); - return true; - } - if ($versioncomponents[0] . 'a' == '0a') { - return true; - } - if ($versioncomponents[0] == 0) { - $versioncomponents[0] = '0'; - $this->_addWarning('version', - 'version "' . $version . '" should be "' . - implode('.' ,$versioncomponents) . '"'); - } - } else { - $vlen = strlen($versioncomponents[0] . ''); - $majver = substr($name, strlen($name) - $vlen); - while ($majver && !is_numeric($majver{0})) { - $majver = substr($majver, 1); - } - if (($versioncomponents[0] != 0) && $majver != $versioncomponents[0]) { - $this->_addWarning('version', 'first version number "' . - $versioncomponents[0] . '" must match the postfix of ' . - 'package name "' . $name . '" (' . - $majver . ')'); - return true; - } - if ($versioncomponents[0] == $majver) { - if ($versioncomponents[2]{0} == '0') { - if ($versioncomponents[2] == '0') { - // version 2.*.0000 - $this->_addWarning('version', - "version $majver." . $versioncomponents[1] . - '.0 probably should not be alpha or beta'); - return false; - } elseif (strlen($versioncomponents[2]) > 1) { - // version 2.*.0RC1 or 2.*.0beta24 etc. - return true; - } else { - // version 2.*.0 - $this->_addWarning('version', - "version $majver." . $versioncomponents[1] . - '.0 cannot be alpha or beta'); - return true; - } - } else { - $this->_addWarning('version', - "bugfix versions ($majver.x.y where y > 0) should " . - 'not be alpha or beta'); - return true; - } - } elseif ($versioncomponents[0] != '0') { - $this->_addWarning('version', - "only versions 0.x.y and $majver.x.y are allowed for alpha/beta releases"); - return true; - } - if ($versioncomponents[0] . 'a' == '0a') { - return true; - } - if ($versioncomponents[0] == 0) { - $versioncomponents[0] = '0'; - $this->_addWarning('version', - 'version "' . $version . '" should be "' . - implode('.' ,$versioncomponents) . '"'); - } - } - return true; - break; - case 'stable' : - if ($versioncomponents[0] == '0') { - $this->_addWarning('version', 'versions less than 1.0.0 cannot ' . - 'be stable'); - return true; - } - if (!is_numeric($versioncomponents[2])) { - if (preg_match('/\d+(rc|a|alpha|b|beta)\d*/i', - $versioncomponents[2])) { - $this->_addWarning('version', 'version "' . $version . '" or any ' . - 'RC/beta/alpha version cannot be stable'); - return true; - } - } - // check for a package that extends a package, - // like Foo and Foo2 - if ($this->_packagexml->getExtends()) { - $vlen = strlen($versioncomponents[0] . ''); - $majver = substr($name, strlen($name) - $vlen); - while ($majver && !is_numeric($majver{0})) { - $majver = substr($majver, 1); - } - if (($versioncomponents[0] != 0) && $majver != $versioncomponents[0]) { - $this->_addWarning('version', 'first version number "' . - $versioncomponents[0] . '" must match the postfix of ' . - 'package name "' . $name . '" (' . - $majver . ')'); - return true; - } - } elseif ($versioncomponents[0] > 1) { - $this->_addWarning('version', 'major version x in x.y.z may not be greater than ' . - '1 for any package that does not have an tag'); - } - return true; - break; - default : - return false; - break; - } - } - - /** - * @access protected - */ - function validateMaintainers() - { - // maintainers can only be truly validated server-side for most channels - // but allow this customization for those who wish it - return true; - } - - /** - * @access protected - */ - function validateDate() - { - if ($this->_state == PEAR_VALIDATE_NORMAL || - $this->_state == PEAR_VALIDATE_PACKAGING) { - - if (!preg_match('/(\d\d\d\d)\-(\d\d)\-(\d\d)/', - $this->_packagexml->getDate(), $res) || - count($res) < 4 - || !checkdate($res[2], $res[3], $res[1]) - ) { - $this->_addFailure('date', 'invalid release date "' . - $this->_packagexml->getDate() . '"'); - return false; - } - - if ($this->_state == PEAR_VALIDATE_PACKAGING && - $this->_packagexml->getDate() != date('Y-m-d')) { - $this->_addWarning('date', 'Release Date "' . - $this->_packagexml->getDate() . '" is not today'); - } - } - return true; - } - - /** - * @access protected - */ - function validateTime() - { - if (!$this->_packagexml->getTime()) { - // default of no time value set - return true; - } - - // packager automatically sets time, so only validate if pear validate is called - if ($this->_state = PEAR_VALIDATE_NORMAL) { - if (!preg_match('/\d\d:\d\d:\d\d/', - $this->_packagexml->getTime())) { - $this->_addFailure('time', 'invalid release time "' . - $this->_packagexml->getTime() . '"'); - return false; - } - - $result = preg_match('|\d{2}\:\d{2}\:\d{2}|', $this->_packagexml->getTime(), $matches); - if ($result === false || empty($matches)) { - $this->_addFailure('time', 'invalid release time "' . - $this->_packagexml->getTime() . '"'); - return false; - } - } - - return true; - } - - /** - * @access protected - */ - function validateState() - { - // this is the closest to "final" php4 can get - if (!PEAR_Validate::validState($this->_packagexml->getState())) { - if (strtolower($this->_packagexml->getState() == 'rc')) { - $this->_addFailure('state', 'RC is not a state, it is a version ' . - 'postfix, use ' . $this->_packagexml->getVersion() . 'RC1, state beta'); - } - $this->_addFailure('state', 'invalid release state "' . - $this->_packagexml->getState() . '", must be one of: ' . - implode(', ', PEAR_Validate::getValidStates())); - return false; - } - return true; - } - - /** - * @access protected - */ - function validateStability() - { - $ret = true; - $packagestability = $this->_packagexml->getState(); - $apistability = $this->_packagexml->getState('api'); - if (!PEAR_Validate::validState($packagestability)) { - $this->_addFailure('state', 'invalid release stability "' . - $this->_packagexml->getState() . '", must be one of: ' . - implode(', ', PEAR_Validate::getValidStates())); - $ret = false; - } - $apistates = PEAR_Validate::getValidStates(); - array_shift($apistates); // snapshot is not allowed - if (!in_array($apistability, $apistates)) { - $this->_addFailure('state', 'invalid API stability "' . - $this->_packagexml->getState('api') . '", must be one of: ' . - implode(', ', $apistates)); - $ret = false; - } - return $ret; - } - - /** - * @access protected - */ - function validateSummary() - { - return true; - } - - /** - * @access protected - */ - function validateDescription() - { - return true; - } - - /** - * @access protected - */ - function validateLicense() - { - return true; - } - - /** - * @access protected - */ - function validateNotes() - { - return true; - } - - /** - * for package.xml 2.0 only - channels can't use package.xml 1.0 - * @access protected - */ - function validateDependencies() - { - return true; - } - - /** - * for package.xml 1.0 only - * @access private - */ - function _validateFilelist() - { - return true; // placeholder for now - } - - /** - * for package.xml 2.0 only - * @access protected - */ - function validateMainFilelist() - { - return true; // placeholder for now - } - - /** - * for package.xml 2.0 only - * @access protected - */ - function validateReleaseFilelist() - { - return true; // placeholder for now - } - - /** - * @access protected - */ - function validateChangelog() - { - return true; - } - - /** - * @access protected - */ - function validateFilelist() - { - return true; - } - - /** - * @access protected - */ - function validateDeps() - { - return true; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR/Validator/PECL.php b/3rdparty/PEAR/Validator/PECL.php deleted file mode 100644 index 89b951f7b67c64fe80b647b9cc7f6a9554ee535d..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/Validator/PECL.php +++ /dev/null @@ -1,63 +0,0 @@ - - * @copyright 1997-2006 The PHP Group - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: PECL.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a5 - */ -/** - * This is the parent class for all validators - */ -require_once 'PEAR/Validate.php'; -/** - * Channel Validator for the pecl.php.net channel - * @category pear - * @package PEAR - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a5 - */ -class PEAR_Validator_PECL extends PEAR_Validate -{ - function validateVersion() - { - if ($this->_state == PEAR_VALIDATE_PACKAGING) { - $version = $this->_packagexml->getVersion(); - $versioncomponents = explode('.', $version); - $last = array_pop($versioncomponents); - if (substr($last, 1, 2) == 'rc') { - $this->_addFailure('version', 'Release Candidate versions must have ' . - 'upper-case RC, not lower-case rc'); - return false; - } - } - return true; - } - - function validatePackageName() - { - $ret = parent::validatePackageName(); - if ($this->_packagexml->getPackageType() == 'extsrc' || - $this->_packagexml->getPackageType() == 'zendextsrc') { - if (strtolower($this->_packagexml->getPackage()) != - strtolower($this->_packagexml->getProvidesExtension())) { - $this->_addWarning('providesextension', 'package name "' . - $this->_packagexml->getPackage() . '" is different from extension name "' . - $this->_packagexml->getProvidesExtension() . '"'); - } - } - return $ret; - } -} -?> \ No newline at end of file diff --git a/3rdparty/PEAR/XMLParser.php b/3rdparty/PEAR/XMLParser.php deleted file mode 100644 index 7f091c16fadba71c35552ea4774277403a6b6f94..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR/XMLParser.php +++ /dev/null @@ -1,253 +0,0 @@ - - * @author Stephan Schmidt (original XML_Unserializer code) - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version CVS: $Id: XMLParser.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Parser for any xml file - * @category pear - * @package PEAR - * @author Greg Beaver - * @author Stephan Schmidt (original XML_Unserializer code) - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_XMLParser -{ - /** - * unserilialized data - * @var string $_serializedData - */ - var $_unserializedData = null; - - /** - * name of the root tag - * @var string $_root - */ - var $_root = null; - - /** - * stack for all data that is found - * @var array $_dataStack - */ - var $_dataStack = array(); - - /** - * stack for all values that are generated - * @var array $_valStack - */ - var $_valStack = array(); - - /** - * current tag depth - * @var int $_depth - */ - var $_depth = 0; - - /** - * The XML encoding to use - * @var string $encoding - */ - var $encoding = 'ISO-8859-1'; - - /** - * @return array - */ - function getData() - { - return $this->_unserializedData; - } - - /** - * @param string xml content - * @return true|PEAR_Error - */ - function parse($data) - { - if (!extension_loaded('xml')) { - include_once 'PEAR.php'; - return PEAR::raiseError("XML Extension not found", 1); - } - $this->_dataStack = $this->_valStack = array(); - $this->_depth = 0; - - if ( - strpos($data, 'encoding="UTF-8"') - || strpos($data, 'encoding="utf-8"') - || strpos($data, "encoding='UTF-8'") - || strpos($data, "encoding='utf-8'") - ) { - $this->encoding = 'UTF-8'; - } - - if (version_compare(phpversion(), '5.0.0', 'lt') && $this->encoding == 'UTF-8') { - $data = utf8_decode($data); - $this->encoding = 'ISO-8859-1'; - } - - $xp = xml_parser_create($this->encoding); - xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, 0); - xml_set_object($xp, $this); - xml_set_element_handler($xp, 'startHandler', 'endHandler'); - xml_set_character_data_handler($xp, 'cdataHandler'); - if (!xml_parse($xp, $data)) { - $msg = xml_error_string(xml_get_error_code($xp)); - $line = xml_get_current_line_number($xp); - xml_parser_free($xp); - include_once 'PEAR.php'; - return PEAR::raiseError("XML Error: '$msg' on line '$line'", 2); - } - xml_parser_free($xp); - return true; - } - - /** - * Start element handler for XML parser - * - * @access private - * @param object $parser XML parser object - * @param string $element XML element - * @param array $attribs attributes of XML tag - * @return void - */ - function startHandler($parser, $element, $attribs) - { - $this->_depth++; - $this->_dataStack[$this->_depth] = null; - - $val = array( - 'name' => $element, - 'value' => null, - 'type' => 'string', - 'childrenKeys' => array(), - 'aggregKeys' => array() - ); - - if (count($attribs) > 0) { - $val['children'] = array(); - $val['type'] = 'array'; - $val['children']['attribs'] = $attribs; - } - - array_push($this->_valStack, $val); - } - - /** - * post-process data - * - * @param string $data - * @param string $element element name - */ - function postProcess($data, $element) - { - return trim($data); - } - - /** - * End element handler for XML parser - * - * @access private - * @param object XML parser object - * @param string - * @return void - */ - function endHandler($parser, $element) - { - $value = array_pop($this->_valStack); - $data = $this->postProcess($this->_dataStack[$this->_depth], $element); - - // adjust type of the value - switch (strtolower($value['type'])) { - // unserialize an array - case 'array': - if ($data !== '') { - $value['children']['_content'] = $data; - } - - $value['value'] = isset($value['children']) ? $value['children'] : array(); - break; - - /* - * unserialize a null value - */ - case 'null': - $data = null; - break; - - /* - * unserialize any scalar value - */ - default: - settype($data, $value['type']); - $value['value'] = $data; - break; - } - - $parent = array_pop($this->_valStack); - if ($parent === null) { - $this->_unserializedData = &$value['value']; - $this->_root = &$value['name']; - return true; - } - - // parent has to be an array - if (!isset($parent['children']) || !is_array($parent['children'])) { - $parent['children'] = array(); - if ($parent['type'] != 'array') { - $parent['type'] = 'array'; - } - } - - if (!empty($value['name'])) { - // there already has been a tag with this name - if (in_array($value['name'], $parent['childrenKeys'])) { - // no aggregate has been created for this tag - if (!in_array($value['name'], $parent['aggregKeys'])) { - if (isset($parent['children'][$value['name']])) { - $parent['children'][$value['name']] = array($parent['children'][$value['name']]); - } else { - $parent['children'][$value['name']] = array(); - } - array_push($parent['aggregKeys'], $value['name']); - } - array_push($parent['children'][$value['name']], $value['value']); - } else { - $parent['children'][$value['name']] = &$value['value']; - array_push($parent['childrenKeys'], $value['name']); - } - } else { - array_push($parent['children'],$value['value']); - } - array_push($this->_valStack, $parent); - - $this->_depth--; - } - - /** - * Handler for character data - * - * @access private - * @param object XML parser object - * @param string CDATA - * @return void - */ - function cdataHandler($parser, $cdata) - { - $this->_dataStack[$this->_depth] .= $cdata; - } -} \ No newline at end of file diff --git a/3rdparty/PEAR5.php b/3rdparty/PEAR5.php deleted file mode 100644 index 428606780b7bf322bbf8bf2379da80d1340cb86b..0000000000000000000000000000000000000000 --- a/3rdparty/PEAR5.php +++ /dev/null @@ -1,33 +0,0 @@ - array( - * '{DAV:}displayname' => null, - * ), - * 424 => array( - * '{DAV:}owner' => null, - * ) - * ) - * - * In this example it was forbidden to update {DAV:}displayname. - * (403 Forbidden), which in turn also caused {DAV:}owner to fail - * (424 Failed Dependency) because the request needs to be atomic. - * - * @param string $calendarId - * @param array $mutations - * @return bool|array - */ - public function updateCalendar($calendarId, array $mutations) { - - return false; - - } - - /** - * Delete a calendar and all it's objects - * - * @param string $calendarId - * @return void - */ - abstract function deleteCalendar($calendarId); - - /** - * Returns all calendar objects within a calendar. - * - * Every item contains an array with the following keys: - * * id - unique identifier which will be used for subsequent updates - * * calendardata - The iCalendar-compatible calendar data - * * uri - a unique key which will be used to construct the uri. This can be any arbitrary string. - * * lastmodified - a timestamp of the last modification time - * * etag - An arbitrary string, surrounded by double-quotes. (e.g.: - * ' "abcdef"') - * * calendarid - The calendarid as it was passed to this function. - * * size - The size of the calendar objects, in bytes. - * - * Note that the etag is optional, but it's highly encouraged to return for - * speed reasons. - * - * The calendardata is also optional. If it's not returned - * 'getCalendarObject' will be called later, which *is* expected to return - * calendardata. - * - * If neither etag or size are specified, the calendardata will be - * used/fetched to determine these numbers. If both are specified the - * amount of times this is needed is reduced by a great degree. - * - * @param string $calendarId - * @return array - */ - abstract function getCalendarObjects($calendarId); - - /** - * Returns information from a single calendar object, based on it's object - * uri. - * - * The returned array must have the same keys as getCalendarObjects. The - * 'calendardata' object is required here though, while it's not required - * for getCalendarObjects. - * - * @param string $calendarId - * @param string $objectUri - * @return array - */ - abstract function getCalendarObject($calendarId,$objectUri); - - /** - * Creates a new calendar object. - * - * @param string $calendarId - * @param string $objectUri - * @param string $calendarData - * @return void - */ - abstract function createCalendarObject($calendarId,$objectUri,$calendarData); - - /** - * Updates an existing calendarobject, based on it's uri. - * - * @param string $calendarId - * @param string $objectUri - * @param string $calendarData - * @return void - */ - abstract function updateCalendarObject($calendarId,$objectUri,$calendarData); - - /** - * Deletes an existing calendar object. - * - * @param string $calendarId - * @param string $objectUri - * @return void - */ - abstract function deleteCalendarObject($calendarId,$objectUri); - -} diff --git a/3rdparty/Sabre/CalDAV/Backend/PDO.php b/3rdparty/Sabre/CalDAV/Backend/PDO.php deleted file mode 100755 index ddacf940c74fa12e21ff389e06604325c55bf3ba..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Backend/PDO.php +++ /dev/null @@ -1,396 +0,0 @@ - 'displayname', - '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'description', - '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => 'timezone', - '{http://apple.com/ns/ical/}calendar-order' => 'calendarorder', - '{http://apple.com/ns/ical/}calendar-color' => 'calendarcolor', - ); - - /** - * Creates the backend - * - * @param PDO $pdo - * @param string $calendarTableName - * @param string $calendarObjectTableName - */ - public function __construct(PDO $pdo, $calendarTableName = 'calendars', $calendarObjectTableName = 'calendarobjects') { - - $this->pdo = $pdo; - $this->calendarTableName = $calendarTableName; - $this->calendarObjectTableName = $calendarObjectTableName; - - } - - /** - * Returns a list of calendars for a principal. - * - * Every project is an array with the following keys: - * * id, a unique id that will be used by other functions to modify the - * calendar. This can be the same as the uri or a database key. - * * uri, which the basename of the uri with which the calendar is - * accessed. - * * principaluri. The owner of the calendar. Almost always the same as - * principalUri passed to this method. - * - * Furthermore it can contain webdav properties in clark notation. A very - * common one is '{DAV:}displayname'. - * - * @param string $principalUri - * @return array - */ - public function getCalendarsForUser($principalUri) { - - $fields = array_values($this->propertyMap); - $fields[] = 'id'; - $fields[] = 'uri'; - $fields[] = 'ctag'; - $fields[] = 'components'; - $fields[] = 'principaluri'; - - // Making fields a comma-delimited list - $fields = implode(', ', $fields); - $stmt = $this->pdo->prepare("SELECT " . $fields . " FROM ".$this->calendarTableName." WHERE principaluri = ? ORDER BY calendarorder ASC"); - $stmt->execute(array($principalUri)); - - $calendars = array(); - while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { - - $components = array(); - if ($row['components']) { - $components = explode(',',$row['components']); - } - - $calendar = array( - 'id' => $row['id'], - 'uri' => $row['uri'], - 'principaluri' => $row['principaluri'], - '{' . Sabre_CalDAV_Plugin::NS_CALENDARSERVER . '}getctag' => $row['ctag']?$row['ctag']:'0', - '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet($components), - ); - - - foreach($this->propertyMap as $xmlName=>$dbName) { - $calendar[$xmlName] = $row[$dbName]; - } - - $calendars[] = $calendar; - - } - - return $calendars; - - } - - /** - * Creates a new calendar for a principal. - * - * If the creation was a success, an id must be returned that can be used to reference - * this calendar in other methods, such as updateCalendar - * - * @param string $principalUri - * @param string $calendarUri - * @param array $properties - * @return string - */ - public function createCalendar($principalUri, $calendarUri, array $properties) { - - $fieldNames = array( - 'principaluri', - 'uri', - 'ctag', - ); - $values = array( - ':principaluri' => $principalUri, - ':uri' => $calendarUri, - ':ctag' => 1, - ); - - // Default value - $sccs = '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set'; - $fieldNames[] = 'components'; - if (!isset($properties[$sccs])) { - $values[':components'] = 'VEVENT,VTODO'; - } else { - if (!($properties[$sccs] instanceof Sabre_CalDAV_Property_SupportedCalendarComponentSet)) { - throw new Sabre_DAV_Exception('The ' . $sccs . ' property must be of type: Sabre_CalDAV_Property_SupportedCalendarComponentSet'); - } - $values[':components'] = implode(',',$properties[$sccs]->getValue()); - } - - foreach($this->propertyMap as $xmlName=>$dbName) { - if (isset($properties[$xmlName])) { - - $values[':' . $dbName] = $properties[$xmlName]; - $fieldNames[] = $dbName; - } - } - - $stmt = $this->pdo->prepare("INSERT INTO ".$this->calendarTableName." (".implode(', ', $fieldNames).") VALUES (".implode(', ',array_keys($values)).")"); - $stmt->execute($values); - - return $this->pdo->lastInsertId(); - - } - - /** - * Updates properties for a calendar. - * - * The mutations array uses the propertyName in clark-notation as key, - * and the array value for the property value. In the case a property - * should be deleted, the property value will be null. - * - * This method must be atomic. If one property cannot be changed, the - * entire operation must fail. - * - * If the operation was successful, true can be returned. - * If the operation failed, false can be returned. - * - * Deletion of a non-existent property is always successful. - * - * Lastly, it is optional to return detailed information about any - * failures. In this case an array should be returned with the following - * structure: - * - * array( - * 403 => array( - * '{DAV:}displayname' => null, - * ), - * 424 => array( - * '{DAV:}owner' => null, - * ) - * ) - * - * In this example it was forbidden to update {DAV:}displayname. - * (403 Forbidden), which in turn also caused {DAV:}owner to fail - * (424 Failed Dependency) because the request needs to be atomic. - * - * @param string $calendarId - * @param array $mutations - * @return bool|array - */ - public function updateCalendar($calendarId, array $mutations) { - - $newValues = array(); - $result = array( - 200 => array(), // Ok - 403 => array(), // Forbidden - 424 => array(), // Failed Dependency - ); - - $hasError = false; - - foreach($mutations as $propertyName=>$propertyValue) { - - // We don't know about this property. - if (!isset($this->propertyMap[$propertyName])) { - $hasError = true; - $result[403][$propertyName] = null; - unset($mutations[$propertyName]); - continue; - } - - $fieldName = $this->propertyMap[$propertyName]; - $newValues[$fieldName] = $propertyValue; - - } - - // If there were any errors we need to fail the request - if ($hasError) { - // Properties has the remaining properties - foreach($mutations as $propertyName=>$propertyValue) { - $result[424][$propertyName] = null; - } - - // Removing unused statuscodes for cleanliness - foreach($result as $status=>$properties) { - if (is_array($properties) && count($properties)===0) unset($result[$status]); - } - - return $result; - - } - - // Success - - // Now we're generating the sql query. - $valuesSql = array(); - foreach($newValues as $fieldName=>$value) { - $valuesSql[] = $fieldName . ' = ?'; - } - $valuesSql[] = 'ctag = ctag + 1'; - - $stmt = $this->pdo->prepare("UPDATE " . $this->calendarTableName . " SET " . implode(', ',$valuesSql) . " WHERE id = ?"); - $newValues['id'] = $calendarId; - $stmt->execute(array_values($newValues)); - - return true; - - } - - /** - * Delete a calendar and all it's objects - * - * @param string $calendarId - * @return void - */ - public function deleteCalendar($calendarId) { - - $stmt = $this->pdo->prepare('DELETE FROM '.$this->calendarObjectTableName.' WHERE calendarid = ?'); - $stmt->execute(array($calendarId)); - - $stmt = $this->pdo->prepare('DELETE FROM '.$this->calendarTableName.' WHERE id = ?'); - $stmt->execute(array($calendarId)); - - } - - /** - * Returns all calendar objects within a calendar. - * - * Every item contains an array with the following keys: - * * id - unique identifier which will be used for subsequent updates - * * calendardata - The iCalendar-compatible calendar data - * * uri - a unique key which will be used to construct the uri. This can be any arbitrary string. - * * lastmodified - a timestamp of the last modification time - * * etag - An arbitrary string, surrounded by double-quotes. (e.g.: - * ' "abcdef"') - * * calendarid - The calendarid as it was passed to this function. - * * size - The size of the calendar objects, in bytes. - * - * Note that the etag is optional, but it's highly encouraged to return for - * speed reasons. - * - * The calendardata is also optional. If it's not returned - * 'getCalendarObject' will be called later, which *is* expected to return - * calendardata. - * - * If neither etag or size are specified, the calendardata will be - * used/fetched to determine these numbers. If both are specified the - * amount of times this is needed is reduced by a great degree. - * - * @param string $calendarId - * @return array - */ - public function getCalendarObjects($calendarId) { - - $stmt = $this->pdo->prepare('SELECT * FROM '.$this->calendarObjectTableName.' WHERE calendarid = ?'); - $stmt->execute(array($calendarId)); - return $stmt->fetchAll(); - - } - - /** - * Returns information from a single calendar object, based on it's object - * uri. - * - * The returned array must have the same keys as getCalendarObjects. The - * 'calendardata' object is required here though, while it's not required - * for getCalendarObjects. - * - * @param string $calendarId - * @param string $objectUri - * @return array - */ - public function getCalendarObject($calendarId,$objectUri) { - - $stmt = $this->pdo->prepare('SELECT * FROM '.$this->calendarObjectTableName.' WHERE calendarid = ? AND uri = ?'); - $stmt->execute(array($calendarId, $objectUri)); - return $stmt->fetch(); - - } - - /** - * Creates a new calendar object. - * - * @param string $calendarId - * @param string $objectUri - * @param string $calendarData - * @return void - */ - public function createCalendarObject($calendarId,$objectUri,$calendarData) { - - $stmt = $this->pdo->prepare('INSERT INTO '.$this->calendarObjectTableName.' (calendarid, uri, calendardata, lastmodified) VALUES (?,?,?,?)'); - $stmt->execute(array($calendarId,$objectUri,$calendarData,time())); - $stmt = $this->pdo->prepare('UPDATE '.$this->calendarTableName.' SET ctag = ctag + 1 WHERE id = ?'); - $stmt->execute(array($calendarId)); - - } - - /** - * Updates an existing calendarobject, based on it's uri. - * - * @param string $calendarId - * @param string $objectUri - * @param string $calendarData - * @return void - */ - public function updateCalendarObject($calendarId,$objectUri,$calendarData) { - - $stmt = $this->pdo->prepare('UPDATE '.$this->calendarObjectTableName.' SET calendardata = ?, lastmodified = ? WHERE calendarid = ? AND uri = ?'); - $stmt->execute(array($calendarData,time(),$calendarId,$objectUri)); - $stmt = $this->pdo->prepare('UPDATE '.$this->calendarTableName.' SET ctag = ctag + 1 WHERE id = ?'); - $stmt->execute(array($calendarId)); - - } - - /** - * Deletes an existing calendar object. - * - * @param string $calendarId - * @param string $objectUri - * @return void - */ - public function deleteCalendarObject($calendarId,$objectUri) { - - $stmt = $this->pdo->prepare('DELETE FROM '.$this->calendarObjectTableName.' WHERE calendarid = ? AND uri = ?'); - $stmt->execute(array($calendarId,$objectUri)); - $stmt = $this->pdo->prepare('UPDATE '. $this->calendarTableName .' SET ctag = ctag + 1 WHERE id = ?'); - $stmt->execute(array($calendarId)); - - } - - -} diff --git a/3rdparty/Sabre/CalDAV/Calendar.php b/3rdparty/Sabre/CalDAV/Calendar.php deleted file mode 100755 index 623df2dd1b8951cb9d6730f9b6849265dcf1f159..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Calendar.php +++ /dev/null @@ -1,343 +0,0 @@ -caldavBackend = $caldavBackend; - $this->principalBackend = $principalBackend; - $this->calendarInfo = $calendarInfo; - - - } - - /** - * Returns the name of the calendar - * - * @return string - */ - public function getName() { - - return $this->calendarInfo['uri']; - - } - - /** - * Updates properties such as the display name and description - * - * @param array $mutations - * @return array - */ - public function updateProperties($mutations) { - - return $this->caldavBackend->updateCalendar($this->calendarInfo['id'],$mutations); - - } - - /** - * Returns the list of properties - * - * @param array $requestedProperties - * @return array - */ - public function getProperties($requestedProperties) { - - $response = array(); - - foreach($requestedProperties as $prop) switch($prop) { - - case '{urn:ietf:params:xml:ns:caldav}supported-calendar-data' : - $response[$prop] = new Sabre_CalDAV_Property_SupportedCalendarData(); - break; - case '{urn:ietf:params:xml:ns:caldav}supported-collation-set' : - $response[$prop] = new Sabre_CalDAV_Property_SupportedCollationSet(); - break; - case '{DAV:}owner' : - $response[$prop] = new Sabre_DAVACL_Property_Principal(Sabre_DAVACL_Property_Principal::HREF,$this->calendarInfo['principaluri']); - break; - default : - if (isset($this->calendarInfo[$prop])) $response[$prop] = $this->calendarInfo[$prop]; - break; - - } - return $response; - - } - - /** - * Returns a calendar object - * - * The contained calendar objects are for example Events or Todo's. - * - * @param string $name - * @return Sabre_DAV_ICalendarObject - */ - public function getChild($name) { - - $obj = $this->caldavBackend->getCalendarObject($this->calendarInfo['id'],$name); - if (!$obj) throw new Sabre_DAV_Exception_NotFound('Calendar object not found'); - return new Sabre_CalDAV_CalendarObject($this->caldavBackend,$this->calendarInfo,$obj); - - } - - /** - * Returns the full list of calendar objects - * - * @return array - */ - public function getChildren() { - - $objs = $this->caldavBackend->getCalendarObjects($this->calendarInfo['id']); - $children = array(); - foreach($objs as $obj) { - $children[] = new Sabre_CalDAV_CalendarObject($this->caldavBackend,$this->calendarInfo,$obj); - } - return $children; - - } - - /** - * Checks if a child-node exists. - * - * @param string $name - * @return bool - */ - public function childExists($name) { - - $obj = $this->caldavBackend->getCalendarObject($this->calendarInfo['id'],$name); - if (!$obj) - return false; - else - return true; - - } - - /** - * Creates a new directory - * - * We actually block this, as subdirectories are not allowed in calendars. - * - * @param string $name - * @return void - */ - public function createDirectory($name) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Creating collections in calendar objects is not allowed'); - - } - - /** - * Creates a new file - * - * The contents of the new file must be a valid ICalendar string. - * - * @param string $name - * @param resource $calendarData - * @return string|null - */ - public function createFile($name,$calendarData = null) { - - if (is_resource($calendarData)) { - $calendarData = stream_get_contents($calendarData); - } - return $this->caldavBackend->createCalendarObject($this->calendarInfo['id'],$name,$calendarData); - - } - - /** - * Deletes the calendar. - * - * @return void - */ - public function delete() { - - $this->caldavBackend->deleteCalendar($this->calendarInfo['id']); - - } - - /** - * Renames the calendar. Note that most calendars use the - * {DAV:}displayname to display a name to display a name. - * - * @param string $newName - * @return void - */ - public function setName($newName) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Renaming calendars is not yet supported'); - - } - - /** - * Returns the last modification date as a unix timestamp. - * - * @return void - */ - public function getLastModified() { - - return null; - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->calendarInfo['principaluri']; - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->calendarInfo['principaluri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->calendarInfo['principaluri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->calendarInfo['principaluri'] . '/calendar-proxy-write', - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->calendarInfo['principaluri'] . '/calendar-proxy-write', - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->calendarInfo['principaluri'] . '/calendar-proxy-read', - 'protected' => true, - ), - array( - 'privilege' => '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}read-free-busy', - 'principal' => '{DAV:}authenticated', - 'protected' => true, - ), - - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Changing ACL is not yet supported'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - $default = Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet(); - - // We need to inject 'read-free-busy' in the tree, aggregated under - // {DAV:}read. - foreach($default['aggregates'] as &$agg) { - - if ($agg['privilege'] !== '{DAV:}read') continue; - - $agg['aggregates'][] = array( - 'privilege' => '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}read-free-busy', - ); - - } - return $default; - - } - -} diff --git a/3rdparty/Sabre/CalDAV/CalendarObject.php b/3rdparty/Sabre/CalDAV/CalendarObject.php deleted file mode 100755 index 72f0a578d16a554b847354867c608ca732b8f72e..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/CalendarObject.php +++ /dev/null @@ -1,273 +0,0 @@ -caldavBackend = $caldavBackend; - - if (!isset($objectData['calendarid'])) { - throw new InvalidArgumentException('The objectData argument must contain a \'calendarid\' property'); - } - if (!isset($objectData['uri'])) { - throw new InvalidArgumentException('The objectData argument must contain an \'uri\' property'); - } - - $this->calendarInfo = $calendarInfo; - $this->objectData = $objectData; - - } - - /** - * Returns the uri for this object - * - * @return string - */ - public function getName() { - - return $this->objectData['uri']; - - } - - /** - * Returns the ICalendar-formatted object - * - * @return string - */ - public function get() { - - // Pre-populating the 'calendardata' is optional, if we don't have it - // already we fetch it from the backend. - if (!isset($this->objectData['calendardata'])) { - $this->objectData = $this->caldavBackend->getCalendarObject($this->objectData['calendarid'], $this->objectData['uri']); - } - return $this->objectData['calendardata']; - - } - - /** - * Updates the ICalendar-formatted object - * - * @param string $calendarData - * @return void - */ - public function put($calendarData) { - - if (is_resource($calendarData)) { - $calendarData = stream_get_contents($calendarData); - } - $etag = $this->caldavBackend->updateCalendarObject($this->calendarInfo['id'],$this->objectData['uri'],$calendarData); - $this->objectData['calendardata'] = $calendarData; - $this->objectData['etag'] = $etag; - - return $etag; - - } - - /** - * Deletes the calendar object - * - * @return void - */ - public function delete() { - - $this->caldavBackend->deleteCalendarObject($this->calendarInfo['id'],$this->objectData['uri']); - - } - - /** - * Returns the mime content-type - * - * @return string - */ - public function getContentType() { - - return 'text/calendar'; - - } - - /** - * Returns an ETag for this object. - * - * The ETag is an arbitrary string, but MUST be surrounded by double-quotes. - * - * @return string - */ - public function getETag() { - - if (isset($this->objectData['etag'])) { - return $this->objectData['etag']; - } else { - return '"' . md5($this->get()). '"'; - } - - } - - /** - * Returns the last modification date as a unix timestamp - * - * @return time - */ - public function getLastModified() { - - return $this->objectData['lastmodified']; - - } - - /** - * Returns the size of this object in bytes - * - * @return int - */ - public function getSize() { - - if (array_key_exists('size',$this->objectData)) { - return $this->objectData['size']; - } else { - return strlen($this->get()); - } - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->calendarInfo['principaluri']; - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->calendarInfo['principaluri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->calendarInfo['principaluri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->calendarInfo['principaluri'] . '/calendar-proxy-write', - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->calendarInfo['principaluri'] . '/calendar-proxy-write', - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->calendarInfo['principaluri'] . '/calendar-proxy-read', - 'protected' => true, - ), - - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Changing ACL is not yet supported'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - return null; - - } - -} - diff --git a/3rdparty/Sabre/CalDAV/CalendarQueryParser.php b/3rdparty/Sabre/CalDAV/CalendarQueryParser.php deleted file mode 100755 index bd0d343382f8b684b396e6addcc445e1dbbbaae1..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/CalendarQueryParser.php +++ /dev/null @@ -1,296 +0,0 @@ -dom = $dom; - - $this->xpath = new DOMXPath($dom); - $this->xpath->registerNameSpace('cal',Sabre_CalDAV_Plugin::NS_CALDAV); - $this->xpath->registerNameSpace('dav','urn:DAV'); - - } - - /** - * Parses the request. - * - * @return void - */ - public function parse() { - - $filterNode = null; - - $filter = $this->xpath->query('/cal:calendar-query/cal:filter'); - if ($filter->length !== 1) { - throw new Sabre_DAV_Exception_BadRequest('Only one filter element is allowed'); - } - - $compFilters = $this->parseCompFilters($filter->item(0)); - if (count($compFilters)!==1) { - throw new Sabre_DAV_Exception_BadRequest('There must be exactly 1 top-level comp-filter.'); - } - - $this->filters = $compFilters[0]; - $this->requestedProperties = array_keys(Sabre_DAV_XMLUtil::parseProperties($this->dom->firstChild)); - - $expand = $this->xpath->query('/cal:calendar-query/dav:prop/cal:calendar-data/cal:expand'); - if ($expand->length>0) { - $this->expand = $this->parseExpand($expand->item(0)); - } - - - } - - /** - * Parses all the 'comp-filter' elements from a node - * - * @param DOMElement $parentNode - * @return array - */ - protected function parseCompFilters(DOMElement $parentNode) { - - $compFilterNodes = $this->xpath->query('cal:comp-filter', $parentNode); - $result = array(); - - for($ii=0; $ii < $compFilterNodes->length; $ii++) { - - $compFilterNode = $compFilterNodes->item($ii); - - $compFilter = array(); - $compFilter['name'] = $compFilterNode->getAttribute('name'); - $compFilter['is-not-defined'] = $this->xpath->query('cal:is-not-defined', $compFilterNode)->length>0; - $compFilter['comp-filters'] = $this->parseCompFilters($compFilterNode); - $compFilter['prop-filters'] = $this->parsePropFilters($compFilterNode); - $compFilter['time-range'] = $this->parseTimeRange($compFilterNode); - - if ($compFilter['time-range'] && !in_array($compFilter['name'],array( - 'VEVENT', - 'VTODO', - 'VJOURNAL', - 'VFREEBUSY', - 'VALARM', - ))) { - throw new Sabre_DAV_Exception_BadRequest('The time-range filter is not defined for the ' . $compFilter['name'] . ' component'); - }; - - $result[] = $compFilter; - - } - - return $result; - - } - - /** - * Parses all the prop-filter elements from a node - * - * @param DOMElement $parentNode - * @return array - */ - protected function parsePropFilters(DOMElement $parentNode) { - - $propFilterNodes = $this->xpath->query('cal:prop-filter', $parentNode); - $result = array(); - - for ($ii=0; $ii < $propFilterNodes->length; $ii++) { - - $propFilterNode = $propFilterNodes->item($ii); - $propFilter = array(); - $propFilter['name'] = $propFilterNode->getAttribute('name'); - $propFilter['is-not-defined'] = $this->xpath->query('cal:is-not-defined', $propFilterNode)->length>0; - $propFilter['param-filters'] = $this->parseParamFilters($propFilterNode); - $propFilter['text-match'] = $this->parseTextMatch($propFilterNode); - $propFilter['time-range'] = $this->parseTimeRange($propFilterNode); - - $result[] = $propFilter; - - } - - return $result; - - } - - /** - * Parses the param-filter element - * - * @param DOMElement $parentNode - * @return array - */ - protected function parseParamFilters(DOMElement $parentNode) { - - $paramFilterNodes = $this->xpath->query('cal:param-filter', $parentNode); - $result = array(); - - for($ii=0;$ii<$paramFilterNodes->length;$ii++) { - - $paramFilterNode = $paramFilterNodes->item($ii); - $paramFilter = array(); - $paramFilter['name'] = $paramFilterNode->getAttribute('name'); - $paramFilter['is-not-defined'] = $this->xpath->query('cal:is-not-defined', $paramFilterNode)->length>0; - $paramFilter['text-match'] = $this->parseTextMatch($paramFilterNode); - - $result[] = $paramFilter; - - } - - return $result; - - } - - /** - * Parses the text-match element - * - * @param DOMElement $parentNode - * @return array|null - */ - protected function parseTextMatch(DOMElement $parentNode) { - - $textMatchNodes = $this->xpath->query('cal:text-match', $parentNode); - - if ($textMatchNodes->length === 0) - return null; - - $textMatchNode = $textMatchNodes->item(0); - $negateCondition = $textMatchNode->getAttribute('negate-condition'); - $negateCondition = $negateCondition==='yes'; - $collation = $textMatchNode->getAttribute('collation'); - if (!$collation) $collation = 'i;ascii-casemap'; - - return array( - 'negate-condition' => $negateCondition, - 'collation' => $collation, - 'value' => $textMatchNode->nodeValue - ); - - } - - /** - * Parses the time-range element - * - * @param DOMElement $parentNode - * @return array|null - */ - protected function parseTimeRange(DOMElement $parentNode) { - - $timeRangeNodes = $this->xpath->query('cal:time-range', $parentNode); - if ($timeRangeNodes->length === 0) { - return null; - } - - $timeRangeNode = $timeRangeNodes->item(0); - - if ($start = $timeRangeNode->getAttribute('start')) { - $start = Sabre_VObject_DateTimeParser::parseDateTime($start); - } else { - $start = null; - } - if ($end = $timeRangeNode->getAttribute('end')) { - $end = Sabre_VObject_DateTimeParser::parseDateTime($end); - } else { - $end = null; - } - - if (!is_null($start) && !is_null($end) && $end <= $start) { - throw new Sabre_DAV_Exception_BadRequest('The end-date must be larger than the start-date in the time-range filter'); - } - - return array( - 'start' => $start, - 'end' => $end, - ); - - } - - /** - * Parses the CALDAV:expand element - * - * @param DOMElement $parentNode - * @return void - */ - protected function parseExpand(DOMElement $parentNode) { - - $start = $parentNode->getAttribute('start'); - if(!$start) { - throw new Sabre_DAV_Exception_BadRequest('The "start" attribute is required for the CALDAV:expand element'); - } - $start = Sabre_VObject_DateTimeParser::parseDateTime($start); - - $end = $parentNode->getAttribute('end'); - if(!$end) { - throw new Sabre_DAV_Exception_BadRequest('The "end" attribute is required for the CALDAV:expand element'); - } - $end = Sabre_VObject_DateTimeParser::parseDateTime($end); - - if ($end <= $start) { - throw new Sabre_DAV_Exception_BadRequest('The end-date must be larger than the start-date in the expand element.'); - } - - return array( - 'start' => $start, - 'end' => $end, - ); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/CalendarQueryValidator.php b/3rdparty/Sabre/CalDAV/CalendarQueryValidator.php deleted file mode 100755 index 8f674840e8780e441fac72019cb36396627fc855..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/CalendarQueryValidator.php +++ /dev/null @@ -1,370 +0,0 @@ -name !== $filters['name']) { - return false; - } - - return - $this->validateCompFilters($vObject, $filters['comp-filters']) && - $this->validatePropFilters($vObject, $filters['prop-filters']); - - - } - - /** - * This method checks the validity of comp-filters. - * - * A list of comp-filters needs to be specified. Also the parent of the - * component we're checking should be specified, not the component to check - * itself. - * - * @param Sabre_VObject_Component $parent - * @param array $filters - * @return bool - */ - protected function validateCompFilters(Sabre_VObject_Component $parent, array $filters) { - - foreach($filters as $filter) { - - $isDefined = isset($parent->$filter['name']); - - if ($filter['is-not-defined']) { - - if ($isDefined) { - return false; - } else { - continue; - } - - } - if (!$isDefined) { - return false; - } - - if ($filter['time-range']) { - foreach($parent->$filter['name'] as $subComponent) { - if ($this->validateTimeRange($subComponent, $filter['time-range']['start'], $filter['time-range']['end'])) { - continue 2; - } - } - return false; - } - - if (!$filter['comp-filters'] && !$filter['prop-filters']) { - continue; - } - - // If there are sub-filters, we need to find at least one component - // for which the subfilters hold true. - foreach($parent->$filter['name'] as $subComponent) { - - if ( - $this->validateCompFilters($subComponent, $filter['comp-filters']) && - $this->validatePropFilters($subComponent, $filter['prop-filters'])) { - // We had a match, so this comp-filter succeeds - continue 2; - } - - } - - // If we got here it means there were sub-comp-filters or - // sub-prop-filters and there was no match. This means this filter - // needs to return false. - return false; - - } - - // If we got here it means we got through all comp-filters alive so the - // filters were all true. - return true; - - } - - /** - * This method checks the validity of prop-filters. - * - * A list of prop-filters needs to be specified. Also the parent of the - * property we're checking should be specified, not the property to check - * itself. - * - * @param Sabre_VObject_Component $parent - * @param array $filters - * @return bool - */ - protected function validatePropFilters(Sabre_VObject_Component $parent, array $filters) { - - foreach($filters as $filter) { - - $isDefined = isset($parent->$filter['name']); - - if ($filter['is-not-defined']) { - - if ($isDefined) { - return false; - } else { - continue; - } - - } - if (!$isDefined) { - return false; - } - - if ($filter['time-range']) { - foreach($parent->$filter['name'] as $subComponent) { - if ($this->validateTimeRange($subComponent, $filter['time-range']['start'], $filter['time-range']['end'])) { - continue 2; - } - } - return false; - } - - if (!$filter['param-filters'] && !$filter['text-match']) { - continue; - } - - // If there are sub-filters, we need to find at least one property - // for which the subfilters hold true. - foreach($parent->$filter['name'] as $subComponent) { - - if( - $this->validateParamFilters($subComponent, $filter['param-filters']) && - (!$filter['text-match'] || $this->validateTextMatch($subComponent, $filter['text-match'])) - ) { - // We had a match, so this prop-filter succeeds - continue 2; - } - - } - - // If we got here it means there were sub-param-filters or - // text-match filters and there was no match. This means the - // filter needs to return false. - return false; - - } - - // If we got here it means we got through all prop-filters alive so the - // filters were all true. - return true; - - } - - /** - * This method checks the validity of param-filters. - * - * A list of param-filters needs to be specified. Also the parent of the - * parameter we're checking should be specified, not the parameter to check - * itself. - * - * @param Sabre_VObject_Property $parent - * @param array $filters - * @return bool - */ - protected function validateParamFilters(Sabre_VObject_Property $parent, array $filters) { - - foreach($filters as $filter) { - - $isDefined = isset($parent[$filter['name']]); - - if ($filter['is-not-defined']) { - - if ($isDefined) { - return false; - } else { - continue; - } - - } - if (!$isDefined) { - return false; - } - - if (!$filter['text-match']) { - continue; - } - - // If there are sub-filters, we need to find at least one parameter - // for which the subfilters hold true. - foreach($parent[$filter['name']] as $subParam) { - - if($this->validateTextMatch($subParam,$filter['text-match'])) { - // We had a match, so this param-filter succeeds - continue 2; - } - - } - - // If we got here it means there was a text-match filter and there - // were no matches. This means the filter needs to return false. - return false; - - } - - // If we got here it means we got through all param-filters alive so the - // filters were all true. - return true; - - } - - /** - * This method checks the validity of a text-match. - * - * A single text-match should be specified as well as the specific property - * or parameter we need to validate. - * - * @param Sabre_VObject_Node $parent - * @param array $textMatch - * @return bool - */ - protected function validateTextMatch(Sabre_VObject_Node $parent, array $textMatch) { - - $value = (string)$parent; - - $isMatching = Sabre_DAV_StringUtil::textMatch($value, $textMatch['value'], $textMatch['collation']); - - return ($textMatch['negate-condition'] xor $isMatching); - - } - - /** - * Validates if a component matches the given time range. - * - * This is all based on the rules specified in rfc4791, which are quite - * complex. - * - * @param Sabre_VObject_Node $component - * @param DateTime $start - * @param DateTime $end - * @return bool - */ - protected function validateTimeRange(Sabre_VObject_Node $component, $start, $end) { - - if (is_null($start)) { - $start = new DateTime('1900-01-01'); - } - if (is_null($end)) { - $end = new DateTime('3000-01-01'); - } - - switch($component->name) { - - case 'VEVENT' : - case 'VTODO' : - case 'VJOURNAL' : - - return $component->isInTimeRange($start, $end); - - case 'VALARM' : - - // If the valarm is wrapped in a recurring event, we need to - // expand the recursions, and validate each. - // - // Our datamodel doesn't easily allow us to do this straight - // in the VALARM component code, so this is a hack, and an - // expensive one too. - if ($component->parent->name === 'VEVENT' && $component->parent->RRULE) { - - // Fire up the iterator! - $it = new Sabre_VObject_RecurrenceIterator($component->parent->parent, (string)$component->parent->UID); - while($it->valid()) { - $expandedEvent = $it->getEventObject(); - - // We need to check from these expanded alarms, which - // one is the first to trigger. Based on this, we can - // determine if we can 'give up' expanding events. - $firstAlarm = null; - if ($expandedEvent->VALARM !== null) { - foreach($expandedEvent->VALARM as $expandedAlarm) { - - $effectiveTrigger = $expandedAlarm->getEffectiveTriggerTime(); - if ($expandedAlarm->isInTimeRange($start, $end)) { - return true; - } - - if ((string)$expandedAlarm->TRIGGER['VALUE'] === 'DATE-TIME') { - // This is an alarm with a non-relative trigger - // time, likely created by a buggy client. The - // implication is that every alarm in this - // recurring event trigger at the exact same - // time. It doesn't make sense to traverse - // further. - } else { - // We store the first alarm as a means to - // figure out when we can stop traversing. - if (!$firstAlarm || $effectiveTrigger < $firstAlarm) { - $firstAlarm = $effectiveTrigger; - } - } - } - } - if (is_null($firstAlarm)) { - // No alarm was found. - // - // Or technically: No alarm that will change for - // every instance of the recurrence was found, - // which means we can assume there was no match. - return false; - } - if ($firstAlarm > $end) { - return false; - } - $it->next(); - } - return false; - } else { - return $component->isInTimeRange($start, $end); - } - - case 'VFREEBUSY' : - throw new Sabre_DAV_Exception_NotImplemented('time-range filters are currently not supported on ' . $component->name . ' components'); - - case 'COMPLETED' : - case 'CREATED' : - case 'DTEND' : - case 'DTSTAMP' : - case 'DTSTART' : - case 'DUE' : - case 'LAST-MODIFIED' : - return ($start <= $component->getDateTime() && $end >= $component->getDateTime()); - - - - default : - throw new Sabre_DAV_Exception_BadRequest('You cannot create a time-range filter on a ' . $component->name . ' component'); - - } - - } - -} diff --git a/3rdparty/Sabre/CalDAV/CalendarRootNode.php b/3rdparty/Sabre/CalDAV/CalendarRootNode.php deleted file mode 100755 index 3907913cc78600afc38698ddb42ba3d30cffeed7..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/CalendarRootNode.php +++ /dev/null @@ -1,75 +0,0 @@ -caldavBackend = $caldavBackend; - - } - - /** - * Returns the nodename - * - * We're overriding this, because the default will be the 'principalPrefix', - * and we want it to be Sabre_CalDAV_Plugin::CALENDAR_ROOT - * - * @return string - */ - public function getName() { - - return Sabre_CalDAV_Plugin::CALENDAR_ROOT; - - } - - /** - * This method returns a node for a principal. - * - * The passed array contains principal information, and is guaranteed to - * at least contain a uri item. Other properties may or may not be - * supplied by the authentication backend. - * - * @param array $principal - * @return Sabre_DAV_INode - */ - public function getChildForPrincipal(array $principal) { - - return new Sabre_CalDAV_UserCalendars($this->principalBackend, $this->caldavBackend, $principal['uri']); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/ICSExportPlugin.php b/3rdparty/Sabre/CalDAV/ICSExportPlugin.php deleted file mode 100755 index ec42b406b2f172c7289a00ba7975fc35f59fa877..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/ICSExportPlugin.php +++ /dev/null @@ -1,139 +0,0 @@ -server = $server; - $this->server->subscribeEvent('beforeMethod',array($this,'beforeMethod'), 90); - - } - - /** - * 'beforeMethod' event handles. This event handles intercepts GET requests ending - * with ?export - * - * @param string $method - * @param string $uri - * @return bool - */ - public function beforeMethod($method, $uri) { - - if ($method!='GET') return; - if ($this->server->httpRequest->getQueryString()!='export') return; - - // splitting uri - list($uri) = explode('?',$uri,2); - - $node = $this->server->tree->getNodeForPath($uri); - - if (!($node instanceof Sabre_CalDAV_Calendar)) return; - - // Checking ACL, if available. - if ($aclPlugin = $this->server->getPlugin('acl')) { - $aclPlugin->checkPrivileges($uri, '{DAV:}read'); - } - - $this->server->httpResponse->setHeader('Content-Type','text/calendar'); - $this->server->httpResponse->sendStatus(200); - - $nodes = $this->server->getPropertiesForPath($uri, array( - '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}calendar-data', - ),1); - - $this->server->httpResponse->sendBody($this->generateICS($nodes)); - - // Returning false to break the event chain - return false; - - } - - /** - * Merges all calendar objects, and builds one big ics export - * - * @param array $nodes - * @return string - */ - public function generateICS(array $nodes) { - - $calendar = new Sabre_VObject_Component('vcalendar'); - $calendar->version = '2.0'; - if (Sabre_DAV_Server::$exposeVersion) { - $calendar->prodid = '-//SabreDAV//SabreDAV ' . Sabre_DAV_Version::VERSION . '//EN'; - } else { - $calendar->prodid = '-//SabreDAV//SabreDAV//EN'; - } - $calendar->calscale = 'GREGORIAN'; - - $collectedTimezones = array(); - - $timezones = array(); - $objects = array(); - - foreach($nodes as $node) { - - if (!isset($node[200]['{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}calendar-data'])) { - continue; - } - $nodeData = $node[200]['{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}calendar-data']; - - $nodeComp = Sabre_VObject_Reader::read($nodeData); - - foreach($nodeComp->children() as $child) { - - switch($child->name) { - case 'VEVENT' : - case 'VTODO' : - case 'VJOURNAL' : - $objects[] = $child; - break; - - // VTIMEZONE is special, because we need to filter out the duplicates - case 'VTIMEZONE' : - // Naively just checking tzid. - if (in_array((string)$child->TZID, $collectedTimezones)) continue; - - $timezones[] = $child; - $collectedTimezones[] = $child->TZID; - break; - - } - - } - - } - - foreach($timezones as $tz) $calendar->add($tz); - foreach($objects as $obj) $calendar->add($obj); - - return $calendar->serialize(); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/ICalendar.php b/3rdparty/Sabre/CalDAV/ICalendar.php deleted file mode 100755 index 15d51ebcf79a2b7552257ac4b7c1d5e42596461a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/ICalendar.php +++ /dev/null @@ -1,18 +0,0 @@ -imipHandler = $imipHandler; - - } - - /** - * Use this method to tell the server this plugin defines additional - * HTTP methods. - * - * This method is passed a uri. It should only return HTTP methods that are - * available for the specified uri. - * - * @param string $uri - * @return array - */ - public function getHTTPMethods($uri) { - - // The MKCALENDAR is only available on unmapped uri's, whose - // parents extend IExtendedCollection - list($parent, $name) = Sabre_DAV_URLUtil::splitPath($uri); - - $node = $this->server->tree->getNodeForPath($parent); - - if ($node instanceof Sabre_DAV_IExtendedCollection) { - try { - $node->getChild($name); - } catch (Sabre_DAV_Exception_NotFound $e) { - return array('MKCALENDAR'); - } - } - return array(); - - } - - /** - * Returns a list of features for the DAV: HTTP header. - * - * @return array - */ - public function getFeatures() { - - return array('calendar-access', 'calendar-proxy'); - - } - - /** - * Returns a plugin name. - * - * Using this name other plugins will be able to access other plugins - * using Sabre_DAV_Server::getPlugin - * - * @return string - */ - public function getPluginName() { - - return 'caldav'; - - } - - /** - * Returns a list of reports this plugin supports. - * - * This will be used in the {DAV:}supported-report-set property. - * Note that you still need to subscribe to the 'report' event to actually - * implement them - * - * @param string $uri - * @return array - */ - public function getSupportedReportSet($uri) { - - $node = $this->server->tree->getNodeForPath($uri); - - $reports = array(); - if ($node instanceof Sabre_CalDAV_ICalendar || $node instanceof Sabre_CalDAV_ICalendarObject) { - $reports[] = '{' . self::NS_CALDAV . '}calendar-multiget'; - $reports[] = '{' . self::NS_CALDAV . '}calendar-query'; - } - if ($node instanceof Sabre_CalDAV_ICalendar) { - $reports[] = '{' . self::NS_CALDAV . '}free-busy-query'; - } - return $reports; - - } - - /** - * Initializes the plugin - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - $this->server = $server; - - $server->subscribeEvent('unknownMethod',array($this,'unknownMethod')); - //$server->subscribeEvent('unknownMethod',array($this,'unknownMethod2'),1000); - $server->subscribeEvent('report',array($this,'report')); - $server->subscribeEvent('beforeGetProperties',array($this,'beforeGetProperties')); - $server->subscribeEvent('onHTMLActionsPanel', array($this,'htmlActionsPanel')); - $server->subscribeEvent('onBrowserPostAction', array($this,'browserPostAction')); - $server->subscribeEvent('beforeWriteContent', array($this, 'beforeWriteContent')); - $server->subscribeEvent('beforeCreateFile', array($this, 'beforeCreateFile')); - - $server->xmlNamespaces[self::NS_CALDAV] = 'cal'; - $server->xmlNamespaces[self::NS_CALENDARSERVER] = 'cs'; - - $server->propertyMap['{' . self::NS_CALDAV . '}supported-calendar-component-set'] = 'Sabre_CalDAV_Property_SupportedCalendarComponentSet'; - - $server->resourceTypeMapping['Sabre_CalDAV_ICalendar'] = '{urn:ietf:params:xml:ns:caldav}calendar'; - $server->resourceTypeMapping['Sabre_CalDAV_Schedule_IOutbox'] = '{urn:ietf:params:xml:ns:caldav}schedule-outbox'; - $server->resourceTypeMapping['Sabre_CalDAV_Principal_ProxyRead'] = '{http://calendarserver.org/ns/}calendar-proxy-read'; - $server->resourceTypeMapping['Sabre_CalDAV_Principal_ProxyWrite'] = '{http://calendarserver.org/ns/}calendar-proxy-write'; - - array_push($server->protectedProperties, - - '{' . self::NS_CALDAV . '}supported-calendar-component-set', - '{' . self::NS_CALDAV . '}supported-calendar-data', - '{' . self::NS_CALDAV . '}max-resource-size', - '{' . self::NS_CALDAV . '}min-date-time', - '{' . self::NS_CALDAV . '}max-date-time', - '{' . self::NS_CALDAV . '}max-instances', - '{' . self::NS_CALDAV . '}max-attendees-per-instance', - '{' . self::NS_CALDAV . '}calendar-home-set', - '{' . self::NS_CALDAV . '}supported-collation-set', - '{' . self::NS_CALDAV . '}calendar-data', - - // scheduling extension - '{' . self::NS_CALDAV . '}schedule-inbox-URL', - '{' . self::NS_CALDAV . '}schedule-outbox-URL', - '{' . self::NS_CALDAV . '}calendar-user-address-set', - '{' . self::NS_CALDAV . '}calendar-user-type', - - // CalendarServer extensions - '{' . self::NS_CALENDARSERVER . '}getctag', - '{' . self::NS_CALENDARSERVER . '}calendar-proxy-read-for', - '{' . self::NS_CALENDARSERVER . '}calendar-proxy-write-for' - - ); - } - - /** - * This function handles support for the MKCALENDAR method - * - * @param string $method - * @param string $uri - * @return bool - */ - public function unknownMethod($method, $uri) { - - switch ($method) { - case 'MKCALENDAR' : - $this->httpMkCalendar($uri); - // false is returned to stop the propagation of the - // unknownMethod event. - return false; - case 'POST' : - // Checking if we're talking to an outbox - try { - $node = $this->server->tree->getNodeForPath($uri); - } catch (Sabre_DAV_Exception_NotFound $e) { - return; - } - if (!$node instanceof Sabre_CalDAV_Schedule_IOutbox) - return; - - $this->outboxRequest($node); - return false; - - } - - } - - /** - * This functions handles REPORT requests specific to CalDAV - * - * @param string $reportName - * @param DOMNode $dom - * @return bool - */ - public function report($reportName,$dom) { - - switch($reportName) { - case '{'.self::NS_CALDAV.'}calendar-multiget' : - $this->calendarMultiGetReport($dom); - return false; - case '{'.self::NS_CALDAV.'}calendar-query' : - $this->calendarQueryReport($dom); - return false; - case '{'.self::NS_CALDAV.'}free-busy-query' : - $this->freeBusyQueryReport($dom); - return false; - - } - - - } - - /** - * This function handles the MKCALENDAR HTTP method, which creates - * a new calendar. - * - * @param string $uri - * @return void - */ - public function httpMkCalendar($uri) { - - // Due to unforgivable bugs in iCal, we're completely disabling MKCALENDAR support - // for clients matching iCal in the user agent - //$ua = $this->server->httpRequest->getHeader('User-Agent'); - //if (strpos($ua,'iCal/')!==false) { - // throw new Sabre_DAV_Exception_Forbidden('iCal has major bugs in it\'s RFC3744 support. Therefore we are left with no other choice but disabling this feature.'); - //} - - $body = $this->server->httpRequest->getBody(true); - $properties = array(); - - if ($body) { - - $dom = Sabre_DAV_XMLUtil::loadDOMDocument($body); - - foreach($dom->firstChild->childNodes as $child) { - - if (Sabre_DAV_XMLUtil::toClarkNotation($child)!=='{DAV:}set') continue; - foreach(Sabre_DAV_XMLUtil::parseProperties($child,$this->server->propertyMap) as $k=>$prop) { - $properties[$k] = $prop; - } - - } - } - - $resourceType = array('{DAV:}collection','{urn:ietf:params:xml:ns:caldav}calendar'); - - $this->server->createCollection($uri,$resourceType,$properties); - - $this->server->httpResponse->sendStatus(201); - $this->server->httpResponse->setHeader('Content-Length',0); - } - - /** - * beforeGetProperties - * - * This method handler is invoked before any after properties for a - * resource are fetched. This allows us to add in any CalDAV specific - * properties. - * - * @param string $path - * @param Sabre_DAV_INode $node - * @param array $requestedProperties - * @param array $returnedProperties - * @return void - */ - public function beforeGetProperties($path, Sabre_DAV_INode $node, &$requestedProperties, &$returnedProperties) { - - if ($node instanceof Sabre_DAVACL_IPrincipal) { - - // calendar-home-set property - $calHome = '{' . self::NS_CALDAV . '}calendar-home-set'; - if (in_array($calHome,$requestedProperties)) { - $principalId = $node->getName(); - $calendarHomePath = self::CALENDAR_ROOT . '/' . $principalId . '/'; - unset($requestedProperties[$calHome]); - $returnedProperties[200][$calHome] = new Sabre_DAV_Property_Href($calendarHomePath); - } - - // schedule-outbox-URL property - $scheduleProp = '{' . self::NS_CALDAV . '}schedule-outbox-URL'; - if (in_array($scheduleProp,$requestedProperties)) { - $principalId = $node->getName(); - $outboxPath = self::CALENDAR_ROOT . '/' . $principalId . '/outbox'; - unset($requestedProperties[$scheduleProp]); - $returnedProperties[200][$scheduleProp] = new Sabre_DAV_Property_Href($outboxPath); - } - - // calendar-user-address-set property - $calProp = '{' . self::NS_CALDAV . '}calendar-user-address-set'; - if (in_array($calProp,$requestedProperties)) { - - $addresses = $node->getAlternateUriSet(); - $addresses[] = $this->server->getBaseUri() . $node->getPrincipalUrl(); - unset($requestedProperties[$calProp]); - $returnedProperties[200][$calProp] = new Sabre_DAV_Property_HrefList($addresses, false); - - } - - // These two properties are shortcuts for ical to easily find - // other principals this principal has access to. - $propRead = '{' . self::NS_CALENDARSERVER . '}calendar-proxy-read-for'; - $propWrite = '{' . self::NS_CALENDARSERVER . '}calendar-proxy-write-for'; - if (in_array($propRead,$requestedProperties) || in_array($propWrite,$requestedProperties)) { - - $membership = $node->getGroupMembership(); - $readList = array(); - $writeList = array(); - - foreach($membership as $group) { - - $groupNode = $this->server->tree->getNodeForPath($group); - - // If the node is either ap proxy-read or proxy-write - // group, we grab the parent principal and add it to the - // list. - if ($groupNode instanceof Sabre_CalDAV_Principal_ProxyRead) { - list($readList[]) = Sabre_DAV_URLUtil::splitPath($group); - } - if ($groupNode instanceof Sabre_CalDAV_Principal_ProxyWrite) { - list($writeList[]) = Sabre_DAV_URLUtil::splitPath($group); - } - - } - if (in_array($propRead,$requestedProperties)) { - unset($requestedProperties[$propRead]); - $returnedProperties[200][$propRead] = new Sabre_DAV_Property_HrefList($readList); - } - if (in_array($propWrite,$requestedProperties)) { - unset($requestedProperties[$propWrite]); - $returnedProperties[200][$propWrite] = new Sabre_DAV_Property_HrefList($writeList); - } - - } - - } // instanceof IPrincipal - - - if ($node instanceof Sabre_CalDAV_ICalendarObject) { - // The calendar-data property is not supposed to be a 'real' - // property, but in large chunks of the spec it does act as such. - // Therefore we simply expose it as a property. - $calDataProp = '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}calendar-data'; - if (in_array($calDataProp, $requestedProperties)) { - unset($requestedProperties[$calDataProp]); - $val = $node->get(); - if (is_resource($val)) - $val = stream_get_contents($val); - - // Taking out \r to not screw up the xml output - $returnedProperties[200][$calDataProp] = str_replace("\r","", $val); - - } - } - - } - - /** - * This function handles the calendar-multiget REPORT. - * - * This report is used by the client to fetch the content of a series - * of urls. Effectively avoiding a lot of redundant requests. - * - * @param DOMNode $dom - * @return void - */ - public function calendarMultiGetReport($dom) { - - $properties = array_keys(Sabre_DAV_XMLUtil::parseProperties($dom->firstChild)); - $hrefElems = $dom->getElementsByTagNameNS('urn:DAV','href'); - - $xpath = new DOMXPath($dom); - $xpath->registerNameSpace('cal',Sabre_CalDAV_Plugin::NS_CALDAV); - $xpath->registerNameSpace('dav','urn:DAV'); - - $expand = $xpath->query('/cal:calendar-multiget/dav:prop/cal:calendar-data/cal:expand'); - if ($expand->length>0) { - $expandElem = $expand->item(0); - $start = $expandElem->getAttribute('start'); - $end = $expandElem->getAttribute('end'); - if(!$start || !$end) { - throw new Sabre_DAV_Exception_BadRequest('The "start" and "end" attributes are required for the CALDAV:expand element'); - } - $start = Sabre_VObject_DateTimeParser::parseDateTime($start); - $end = Sabre_VObject_DateTimeParser::parseDateTime($end); - - if ($end <= $start) { - throw new Sabre_DAV_Exception_BadRequest('The end-date must be larger than the start-date in the expand element.'); - } - - $expand = true; - - } else { - - $expand = false; - - } - - foreach($hrefElems as $elem) { - $uri = $this->server->calculateUri($elem->nodeValue); - list($objProps) = $this->server->getPropertiesForPath($uri,$properties); - - if ($expand && isset($objProps[200]['{' . self::NS_CALDAV . '}calendar-data'])) { - $vObject = Sabre_VObject_Reader::read($objProps[200]['{' . self::NS_CALDAV . '}calendar-data']); - $vObject->expand($start, $end); - $objProps[200]['{' . self::NS_CALDAV . '}calendar-data'] = $vObject->serialize(); - } - - $propertyList[]=$objProps; - - } - - $this->server->httpResponse->sendStatus(207); - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->sendBody($this->server->generateMultiStatus($propertyList)); - - } - - /** - * This function handles the calendar-query REPORT - * - * This report is used by clients to request calendar objects based on - * complex conditions. - * - * @param DOMNode $dom - * @return void - */ - public function calendarQueryReport($dom) { - - $parser = new Sabre_CalDAV_CalendarQueryParser($dom); - $parser->parse(); - - $requestedCalendarData = true; - $requestedProperties = $parser->requestedProperties; - - if (!in_array('{urn:ietf:params:xml:ns:caldav}calendar-data', $requestedProperties)) { - - // We always retrieve calendar-data, as we need it for filtering. - $requestedProperties[] = '{urn:ietf:params:xml:ns:caldav}calendar-data'; - - // If calendar-data wasn't explicitly requested, we need to remove - // it after processing. - $requestedCalendarData = false; - } - - // These are the list of nodes that potentially match the requirement - $candidateNodes = $this->server->getPropertiesForPath( - $this->server->getRequestUri(), - $requestedProperties, - $this->server->getHTTPDepth(0) - ); - - $verifiedNodes = array(); - - $validator = new Sabre_CalDAV_CalendarQueryValidator(); - - foreach($candidateNodes as $node) { - - // If the node didn't have a calendar-data property, it must not be a calendar object - if (!isset($node[200]['{urn:ietf:params:xml:ns:caldav}calendar-data'])) - continue; - - $vObject = Sabre_VObject_Reader::read($node[200]['{urn:ietf:params:xml:ns:caldav}calendar-data']); - if ($validator->validate($vObject,$parser->filters)) { - - if (!$requestedCalendarData) { - unset($node[200]['{urn:ietf:params:xml:ns:caldav}calendar-data']); - } - if ($parser->expand) { - $vObject->expand($parser->expand['start'], $parser->expand['end']); - $node[200]['{' . self::NS_CALDAV . '}calendar-data'] = $vObject->serialize(); - } - $verifiedNodes[] = $node; - } - - } - - $this->server->httpResponse->sendStatus(207); - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->sendBody($this->server->generateMultiStatus($verifiedNodes)); - - } - - /** - * This method is responsible for parsing the request and generating the - * response for the CALDAV:free-busy-query REPORT. - * - * @param DOMNode $dom - * @return void - */ - protected function freeBusyQueryReport(DOMNode $dom) { - - $start = null; - $end = null; - - foreach($dom->firstChild->childNodes as $childNode) { - - $clark = Sabre_DAV_XMLUtil::toClarkNotation($childNode); - if ($clark == '{' . self::NS_CALDAV . '}time-range') { - $start = $childNode->getAttribute('start'); - $end = $childNode->getAttribute('end'); - break; - } - - } - if ($start) { - $start = Sabre_VObject_DateTimeParser::parseDateTime($start); - } - if ($end) { - $end = Sabre_VObject_DateTimeParser::parseDateTime($end); - } - - if (!$start && !$end) { - throw new Sabre_DAV_Exception_BadRequest('The freebusy report must have a time-range filter'); - } - $acl = $this->server->getPlugin('acl'); - - if (!$acl) { - throw new Sabre_DAV_Exception('The ACL plugin must be loaded for free-busy queries to work'); - } - $uri = $this->server->getRequestUri(); - $acl->checkPrivileges($uri,'{' . self::NS_CALDAV . '}read-free-busy'); - - $calendar = $this->server->tree->getNodeForPath($uri); - if (!$calendar instanceof Sabre_CalDAV_ICalendar) { - throw new Sabre_DAV_Exception_NotImplemented('The free-busy-query REPORT is only implemented on calendars'); - } - - $objects = array_map(function($child) { - $obj = $child->get(); - if (is_resource($obj)) { - $obj = stream_get_contents($obj); - } - return $obj; - }, $calendar->getChildren()); - - $generator = new Sabre_VObject_FreeBusyGenerator(); - $generator->setObjects($objects); - $generator->setTimeRange($start, $end); - $result = $generator->getResult(); - $result = $result->serialize(); - - $this->server->httpResponse->sendStatus(200); - $this->server->httpResponse->setHeader('Content-Type', 'text/calendar'); - $this->server->httpResponse->setHeader('Content-Length', strlen($result)); - $this->server->httpResponse->sendBody($result); - - } - - /** - * This method is triggered before a file gets updated with new content. - * - * This plugin uses this method to ensure that CalDAV objects receive - * valid calendar data. - * - * @param string $path - * @param Sabre_DAV_IFile $node - * @param resource $data - * @return void - */ - public function beforeWriteContent($path, Sabre_DAV_IFile $node, &$data) { - - if (!$node instanceof Sabre_CalDAV_ICalendarObject) - return; - - $this->validateICalendar($data); - - } - - /** - * This method is triggered before a new file is created. - * - * This plugin uses this method to ensure that newly created calendar - * objects contain valid calendar data. - * - * @param string $path - * @param resource $data - * @param Sabre_DAV_ICollection $parentNode - * @return void - */ - public function beforeCreateFile($path, &$data, Sabre_DAV_ICollection $parentNode) { - - if (!$parentNode instanceof Sabre_CalDAV_Calendar) - return; - - $this->validateICalendar($data); - - } - - /** - * Checks if the submitted iCalendar data is in fact, valid. - * - * An exception is thrown if it's not. - * - * @param resource|string $data - * @return void - */ - protected function validateICalendar(&$data) { - - // If it's a stream, we convert it to a string first. - if (is_resource($data)) { - $data = stream_get_contents($data); - } - - // Converting the data to unicode, if needed. - $data = Sabre_DAV_StringUtil::ensureUTF8($data); - - try { - - $vobj = Sabre_VObject_Reader::read($data); - - } catch (Sabre_VObject_ParseException $e) { - - throw new Sabre_DAV_Exception_UnsupportedMediaType('This resource only supports valid iCalendar 2.0 data. Parse error: ' . $e->getMessage()); - - } - - if ($vobj->name !== 'VCALENDAR') { - throw new Sabre_DAV_Exception_UnsupportedMediaType('This collection can only support iCalendar objects.'); - } - - $foundType = null; - $foundUID = null; - foreach($vobj->getComponents() as $component) { - switch($component->name) { - case 'VTIMEZONE' : - continue 2; - case 'VEVENT' : - case 'VTODO' : - case 'VJOURNAL' : - if (is_null($foundType)) { - $foundType = $component->name; - if (!isset($component->UID)) { - throw new Sabre_DAV_Exception_BadRequest('Every ' . $component->name . ' component must have an UID'); - } - $foundUID = (string)$component->UID; - } else { - if ($foundType !== $component->name) { - throw new Sabre_DAV_Exception_BadRequest('A calendar object must only contain 1 component. We found a ' . $component->name . ' as well as a ' . $foundType); - } - if ($foundUID !== (string)$component->UID) { - throw new Sabre_DAV_Exception_BadRequest('Every ' . $component->name . ' in this object must have identical UIDs'); - } - } - break; - default : - throw new Sabre_DAV_Exception_BadRequest('You are not allowed to create components of type: ' . $component->name . ' here'); - - } - } - if (!$foundType) - throw new Sabre_DAV_Exception_BadRequest('iCalendar object must contain at least 1 of VEVENT, VTODO or VJOURNAL'); - - } - - /** - * This method handles POST requests to the schedule-outbox - * - * @param Sabre_CalDAV_Schedule_IOutbox $outboxNode - * @return void - */ - public function outboxRequest(Sabre_CalDAV_Schedule_IOutbox $outboxNode) { - - $originator = $this->server->httpRequest->getHeader('Originator'); - $recipients = $this->server->httpRequest->getHeader('Recipient'); - - if (!$originator) { - throw new Sabre_DAV_Exception_BadRequest('The Originator: header must be specified when making POST requests'); - } - if (!$recipients) { - throw new Sabre_DAV_Exception_BadRequest('The Recipient: header must be specified when making POST requests'); - } - - if (!preg_match('/^mailto:(.*)@(.*)$/i', $originator)) { - throw new Sabre_DAV_Exception_BadRequest('Originator must start with mailto: and must be valid email address'); - } - $originator = substr($originator,7); - - $recipients = explode(',',$recipients); - foreach($recipients as $k=>$recipient) { - - $recipient = trim($recipient); - if (!preg_match('/^mailto:(.*)@(.*)$/i', $recipient)) { - throw new Sabre_DAV_Exception_BadRequest('Recipients must start with mailto: and must be valid email address'); - } - $recipient = substr($recipient, 7); - $recipients[$k] = $recipient; - } - - // We need to make sure that 'originator' matches one of the email - // addresses of the selected principal. - $principal = $outboxNode->getOwner(); - $props = $this->server->getProperties($principal,array( - '{' . self::NS_CALDAV . '}calendar-user-address-set', - )); - - $addresses = array(); - if (isset($props['{' . self::NS_CALDAV . '}calendar-user-address-set'])) { - $addresses = $props['{' . self::NS_CALDAV . '}calendar-user-address-set']->getHrefs(); - } - - if (!in_array('mailto:' . $originator, $addresses)) { - throw new Sabre_DAV_Exception_Forbidden('The addresses specified in the Originator header did not match any addresses in the owners calendar-user-address-set header'); - } - - try { - $vObject = Sabre_VObject_Reader::read($this->server->httpRequest->getBody(true)); - } catch (Sabre_VObject_ParseException $e) { - throw new Sabre_DAV_Exception_BadRequest('The request body must be a valid iCalendar object. Parse error: ' . $e->getMessage()); - } - - // Checking for the object type - $componentType = null; - foreach($vObject->getComponents() as $component) { - if ($component->name !== 'VTIMEZONE') { - $componentType = $component->name; - break; - } - } - if (is_null($componentType)) { - throw new Sabre_DAV_Exception_BadRequest('We expected at least one VTODO, VJOURNAL, VFREEBUSY or VEVENT component'); - } - - // Validating the METHOD - $method = strtoupper((string)$vObject->METHOD); - if (!$method) { - throw new Sabre_DAV_Exception_BadRequest('A METHOD property must be specified in iTIP messages'); - } - - if (in_array($method, array('REQUEST','REPLY','ADD','CANCEL')) && $componentType==='VEVENT') { - $result = $this->iMIPMessage($originator, $recipients, $vObject); - $this->server->httpResponse->sendStatus(200); - $this->server->httpResponse->setHeader('Content-Type','application/xml'); - $this->server->httpResponse->sendBody($this->generateScheduleResponse($result)); - } else { - throw new Sabre_DAV_Exception_NotImplemented('This iTIP method is currently not implemented'); - } - - } - - /** - * Sends an iMIP message by email. - * - * This method must return an array with status codes per recipient. - * This should look something like: - * - * array( - * 'user1@example.org' => '2.0;Success' - * ) - * - * Formatting for this status code can be found at: - * https://tools.ietf.org/html/rfc5545#section-3.8.8.3 - * - * A list of valid status codes can be found at: - * https://tools.ietf.org/html/rfc5546#section-3.6 - * - * @param string $originator - * @param array $recipients - * @param Sabre_VObject_Component $vObject - * @return array - */ - protected function iMIPMessage($originator, array $recipients, Sabre_VObject_Component $vObject) { - - if (!$this->imipHandler) { - $resultStatus = '5.2;This server does not support this operation'; - } else { - $this->imipHandler->sendMessage($originator, $recipients, $vObject); - $resultStatus = '2.0;Success'; - } - - $result = array(); - foreach($recipients as $recipient) { - $result[$recipient] = $resultStatus; - } - - return $result; - - - } - - /** - * Generates a schedule-response XML body - * - * The recipients array is a key->value list, containing email addresses - * and iTip status codes. See the iMIPMessage method for a description of - * the value. - * - * @param array $recipients - * @return string - */ - public function generateScheduleResponse(array $recipients) { - - $dom = new DOMDocument('1.0','utf-8'); - $dom->formatOutput = true; - $xscheduleResponse = $dom->createElement('cal:schedule-response'); - $dom->appendChild($xscheduleResponse); - - foreach($this->server->xmlNamespaces as $namespace=>$prefix) { - - $xscheduleResponse->setAttribute('xmlns:' . $prefix, $namespace); - - } - - foreach($recipients as $recipient=>$status) { - $xresponse = $dom->createElement('cal:response'); - - $xrecipient = $dom->createElement('cal:recipient'); - $xrecipient->appendChild($dom->createTextNode($recipient)); - $xresponse->appendChild($xrecipient); - - $xrequestStatus = $dom->createElement('cal:request-status'); - $xrequestStatus->appendChild($dom->createTextNode($status)); - $xresponse->appendChild($xrequestStatus); - - $xscheduleResponse->appendChild($xresponse); - - } - - return $dom->saveXML(); - - } - - /** - * This method is used to generate HTML output for the - * Sabre_DAV_Browser_Plugin. This allows us to generate an interface users - * can use to create new calendars. - * - * @param Sabre_DAV_INode $node - * @param string $output - * @return bool - */ - public function htmlActionsPanel(Sabre_DAV_INode $node, &$output) { - - if (!$node instanceof Sabre_CalDAV_UserCalendars) - return; - - $output.= '
-

Create new calendar

- -
-
- -
- '; - - return false; - - } - - /** - * This method allows us to intercept the 'mkcalendar' sabreAction. This - * action enables the user to create new calendars from the browser plugin. - * - * @param string $uri - * @param string $action - * @param array $postVars - * @return bool - */ - public function browserPostAction($uri, $action, array $postVars) { - - if ($action!=='mkcalendar') - return; - - $resourceType = array('{DAV:}collection','{urn:ietf:params:xml:ns:caldav}calendar'); - $properties = array(); - if (isset($postVars['{DAV:}displayname'])) { - $properties['{DAV:}displayname'] = $postVars['{DAV:}displayname']; - } - $this->server->createCollection($uri . '/' . $postVars['name'],$resourceType,$properties); - return false; - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Principal/Collection.php b/3rdparty/Sabre/CalDAV/Principal/Collection.php deleted file mode 100755 index abbefa5567a4c9f939fe7a9ce5faba22c749695b..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Principal/Collection.php +++ /dev/null @@ -1,31 +0,0 @@ -principalBackend, $principalInfo); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Principal/ProxyRead.php b/3rdparty/Sabre/CalDAV/Principal/ProxyRead.php deleted file mode 100755 index 4b3f035634a795f82ac33460ba9ccbf570b1a415..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Principal/ProxyRead.php +++ /dev/null @@ -1,178 +0,0 @@ -principalInfo = $principalInfo; - $this->principalBackend = $principalBackend; - - } - - /** - * Returns this principals name. - * - * @return string - */ - public function getName() { - - return 'calendar-proxy-read'; - - } - - /** - * Returns the last modification time - * - * @return null - */ - public function getLastModified() { - - return null; - - } - - /** - * Deletes the current node - * - * @throws Sabre_DAV_Exception_Forbidden - * @return void - */ - public function delete() { - - throw new Sabre_DAV_Exception_Forbidden('Permission denied to delete node'); - - } - - /** - * Renames the node - * - * @throws Sabre_DAV_Exception_Forbidden - * @param string $name The new name - * @return void - */ - public function setName($name) { - - throw new Sabre_DAV_Exception_Forbidden('Permission denied to rename file'); - - } - - - /** - * Returns a list of alternative urls for a principal - * - * This can for example be an email address, or ldap url. - * - * @return array - */ - public function getAlternateUriSet() { - - return array(); - - } - - /** - * Returns the full principal url - * - * @return string - */ - public function getPrincipalUrl() { - - return $this->principalInfo['uri'] . '/' . $this->getName(); - - } - - /** - * Returns the list of group members - * - * If this principal is a group, this function should return - * all member principal uri's for the group. - * - * @return array - */ - public function getGroupMemberSet() { - - return $this->principalBackend->getGroupMemberSet($this->getPrincipalUrl()); - - } - - /** - * Returns the list of groups this principal is member of - * - * If this principal is a member of a (list of) groups, this function - * should return a list of principal uri's for it's members. - * - * @return array - */ - public function getGroupMembership() { - - return $this->principalBackend->getGroupMembership($this->getPrincipalUrl()); - - } - - /** - * Sets a list of group members - * - * If this principal is a group, this method sets all the group members. - * The list of members is always overwritten, never appended to. - * - * This method should throw an exception if the members could not be set. - * - * @param array $principals - * @return void - */ - public function setGroupMemberSet(array $principals) { - - $this->principalBackend->setGroupMemberSet($this->getPrincipalUrl(), $principals); - - } - - /** - * Returns the displayname - * - * This should be a human readable name for the principal. - * If none is available, return the nodename. - * - * @return string - */ - public function getDisplayName() { - - return $this->getName(); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Principal/ProxyWrite.php b/3rdparty/Sabre/CalDAV/Principal/ProxyWrite.php deleted file mode 100755 index dd0c2e86edd70e5b8e7ef43bb3d0374482021d04..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Principal/ProxyWrite.php +++ /dev/null @@ -1,178 +0,0 @@ -principalInfo = $principalInfo; - $this->principalBackend = $principalBackend; - - } - - /** - * Returns this principals name. - * - * @return string - */ - public function getName() { - - return 'calendar-proxy-write'; - - } - - /** - * Returns the last modification time - * - * @return null - */ - public function getLastModified() { - - return null; - - } - - /** - * Deletes the current node - * - * @throws Sabre_DAV_Exception_Forbidden - * @return void - */ - public function delete() { - - throw new Sabre_DAV_Exception_Forbidden('Permission denied to delete node'); - - } - - /** - * Renames the node - * - * @throws Sabre_DAV_Exception_Forbidden - * @param string $name The new name - * @return void - */ - public function setName($name) { - - throw new Sabre_DAV_Exception_Forbidden('Permission denied to rename file'); - - } - - - /** - * Returns a list of alternative urls for a principal - * - * This can for example be an email address, or ldap url. - * - * @return array - */ - public function getAlternateUriSet() { - - return array(); - - } - - /** - * Returns the full principal url - * - * @return string - */ - public function getPrincipalUrl() { - - return $this->principalInfo['uri'] . '/' . $this->getName(); - - } - - /** - * Returns the list of group members - * - * If this principal is a group, this function should return - * all member principal uri's for the group. - * - * @return array - */ - public function getGroupMemberSet() { - - return $this->principalBackend->getGroupMemberSet($this->getPrincipalUrl()); - - } - - /** - * Returns the list of groups this principal is member of - * - * If this principal is a member of a (list of) groups, this function - * should return a list of principal uri's for it's members. - * - * @return array - */ - public function getGroupMembership() { - - return $this->principalBackend->getGroupMembership($this->getPrincipalUrl()); - - } - - /** - * Sets a list of group members - * - * If this principal is a group, this method sets all the group members. - * The list of members is always overwritten, never appended to. - * - * This method should throw an exception if the members could not be set. - * - * @param array $principals - * @return void - */ - public function setGroupMemberSet(array $principals) { - - $this->principalBackend->setGroupMemberSet($this->getPrincipalUrl(), $principals); - - } - - /** - * Returns the displayname - * - * This should be a human readable name for the principal. - * If none is available, return the nodename. - * - * @return string - */ - public function getDisplayName() { - - return $this->getName(); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Principal/User.php b/3rdparty/Sabre/CalDAV/Principal/User.php deleted file mode 100755 index 8453b877a73da3762382110378cf38aa91aeb65b..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Principal/User.php +++ /dev/null @@ -1,132 +0,0 @@ -principalBackend->getPrincipalByPath($this->getPrincipalURL() . '/' . $name); - if (!$principal) { - throw new Sabre_DAV_Exception_NotFound('Node with name ' . $name . ' was not found'); - } - if ($name === 'calendar-proxy-read') - return new Sabre_CalDAV_Principal_ProxyRead($this->principalBackend, $this->principalProperties); - - if ($name === 'calendar-proxy-write') - return new Sabre_CalDAV_Principal_ProxyWrite($this->principalBackend, $this->principalProperties); - - throw new Sabre_DAV_Exception_NotFound('Node with name ' . $name . ' was not found'); - - } - - /** - * Returns an array with all the child nodes - * - * @return Sabre_DAV_INode[] - */ - public function getChildren() { - - $r = array(); - if ($this->principalBackend->getPrincipalByPath($this->getPrincipalURL() . '/calendar-proxy-read')) { - $r[] = new Sabre_CalDAV_Principal_ProxyRead($this->principalBackend, $this->principalProperties); - } - if ($this->principalBackend->getPrincipalByPath($this->getPrincipalURL() . '/calendar-proxy-write')) { - $r[] = new Sabre_CalDAV_Principal_ProxyWrite($this->principalBackend, $this->principalProperties); - } - - return $r; - - } - - /** - * Returns whether or not the child node exists - * - * @param string $name - * @return bool - */ - public function childExists($name) { - - try { - $this->getChild($name); - return true; - } catch (Sabre_DAV_Exception_NotFound $e) { - return false; - } - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - $acl = parent::getACL(); - $acl[] = array( - 'privilege' => '{DAV:}read', - 'principal' => $this->principalProperties['uri'] . '/calendar-proxy-read', - 'protected' => true, - ); - $acl[] = array( - 'privilege' => '{DAV:}read', - 'principal' => $this->principalProperties['uri'] . '/calendar-proxy-write', - 'protected' => true, - ); - return $acl; - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Property/SupportedCalendarComponentSet.php b/3rdparty/Sabre/CalDAV/Property/SupportedCalendarComponentSet.php deleted file mode 100755 index 2ea078d7dac03cbe8e241690739ad7c02bb17676..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Property/SupportedCalendarComponentSet.php +++ /dev/null @@ -1,85 +0,0 @@ -components = $components; - - } - - /** - * Returns the list of supported components - * - * @return array - */ - public function getValue() { - - return $this->components; - - } - - /** - * Serializes the property in a DOMDocument - * - * @param Sabre_DAV_Server $server - * @param DOMElement $node - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $node) { - - $doc = $node->ownerDocument; - foreach($this->components as $component) { - - $xcomp = $doc->createElement('cal:comp'); - $xcomp->setAttribute('name',$component); - $node->appendChild($xcomp); - - } - - } - - /** - * Unserializes the DOMElement back into a Property class. - * - * @param DOMElement $node - * @return Sabre_CalDAV_Property_SupportedCalendarComponentSet - */ - static function unserialize(DOMElement $node) { - - $components = array(); - foreach($node->childNodes as $childNode) { - if (Sabre_DAV_XMLUtil::toClarkNotation($childNode)==='{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}comp') { - $components[] = $childNode->getAttribute('name'); - } - } - return new self($components); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Property/SupportedCalendarData.php b/3rdparty/Sabre/CalDAV/Property/SupportedCalendarData.php deleted file mode 100755 index 1d848dd5cf68acaa05977a0292297a559dff316a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Property/SupportedCalendarData.php +++ /dev/null @@ -1,38 +0,0 @@ -ownerDocument; - - $prefix = isset($server->xmlNamespaces[Sabre_CalDAV_Plugin::NS_CALDAV])?$server->xmlNamespaces[Sabre_CalDAV_Plugin::NS_CALDAV]:'cal'; - - $caldata = $doc->createElement($prefix . ':calendar-data'); - $caldata->setAttribute('content-type','text/calendar'); - $caldata->setAttribute('version','2.0'); - - $node->appendChild($caldata); - } - -} diff --git a/3rdparty/Sabre/CalDAV/Property/SupportedCollationSet.php b/3rdparty/Sabre/CalDAV/Property/SupportedCollationSet.php deleted file mode 100755 index 24e84d4c17d99815fba07ec9d540787f74f68e71..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Property/SupportedCollationSet.php +++ /dev/null @@ -1,44 +0,0 @@ -ownerDocument; - - $prefix = $node->lookupPrefix('urn:ietf:params:xml:ns:caldav'); - if (!$prefix) $prefix = 'cal'; - - $node->appendChild( - $doc->createElement($prefix . ':supported-collation','i;ascii-casemap') - ); - $node->appendChild( - $doc->createElement($prefix . ':supported-collation','i;octet') - ); - $node->appendChild( - $doc->createElement($prefix . ':supported-collation','i;unicode-casemap') - ); - - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Schedule/IMip.php b/3rdparty/Sabre/CalDAV/Schedule/IMip.php deleted file mode 100755 index 37e75fcc4a71c2626922319fef90a971ce6a4460..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Schedule/IMip.php +++ /dev/null @@ -1,104 +0,0 @@ -senderEmail = $senderEmail; - - } - - /** - * Sends one or more iTip messages through email. - * - * @param string $originator - * @param array $recipients - * @param Sabre_VObject_Component $vObject - * @return void - */ - public function sendMessage($originator, array $recipients, Sabre_VObject_Component $vObject) { - - foreach($recipients as $recipient) { - - $to = $recipient; - $replyTo = $originator; - $subject = 'SabreDAV iTIP message'; - - switch(strtoupper($vObject->METHOD)) { - case 'REPLY' : - $subject = 'Response for: ' . $vObject->VEVENT->SUMMARY; - break; - case 'REQUEST' : - $subject = 'Invitation for: ' .$vObject->VEVENT->SUMMARY; - break; - case 'CANCEL' : - $subject = 'Cancelled event: ' . $vObject->VEVENT->SUMMARY; - break; - } - - $headers = array(); - $headers[] = 'Reply-To: ' . $replyTo; - $headers[] = 'From: ' . $this->senderEmail; - $headers[] = 'Content-Type: text/calendar; method=' . (string)$vObject->method . '; charset=utf-8'; - if (Sabre_DAV_Server::$exposeVersion) { - $headers[] = 'X-Sabre-Version: ' . Sabre_DAV_Version::VERSION . '-' . Sabre_DAV_Version::STABILITY; - } - - $vcalBody = $vObject->serialize(); - - $this->mail($to, $subject, $vcalBody, $headers); - - } - - } - - /** - * This function is reponsible for sending the actual email. - * - * @param string $to Recipient email address - * @param string $subject Subject of the email - * @param string $body iCalendar body - * @param array $headers List of headers - * @return void - */ - protected function mail($to, $subject, $body, array $headers) { - - mail($to, $subject, $body, implode("\r\n", $headers)); - - } - - -} - -?> diff --git a/3rdparty/Sabre/CalDAV/Schedule/IOutbox.php b/3rdparty/Sabre/CalDAV/Schedule/IOutbox.php deleted file mode 100755 index 46d77514bc048ba965fa091a84bd19233c5404f4..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Schedule/IOutbox.php +++ /dev/null @@ -1,16 +0,0 @@ -principalUri = $principalUri; - - } - - /** - * Returns the name of the node. - * - * This is used to generate the url. - * - * @return string - */ - public function getName() { - - return 'outbox'; - - } - - /** - * Returns an array with all the child nodes - * - * @return Sabre_DAV_INode[] - */ - public function getChildren() { - - return array(); - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->principalUri; - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}schedule-query-freebusy', - 'principal' => $this->getOwner(), - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->getOwner(), - 'protected' => true, - ), - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('You\'re not allowed to update the ACL'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - $default = Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet(); - $default['aggregates'][] = array( - 'privilege' => '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}schedule-query-freebusy', - ); - - return $default; - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Server.php b/3rdparty/Sabre/CalDAV/Server.php deleted file mode 100755 index 325e3d80a7fd081065ab216dd528c0b3927c966e..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Server.php +++ /dev/null @@ -1,68 +0,0 @@ -authRealm); - $this->addPlugin($authPlugin); - - $aclPlugin = new Sabre_DAVACL_Plugin(); - $this->addPlugin($aclPlugin); - - $caldavPlugin = new Sabre_CalDAV_Plugin(); - $this->addPlugin($caldavPlugin); - - } - -} diff --git a/3rdparty/Sabre/CalDAV/UserCalendars.php b/3rdparty/Sabre/CalDAV/UserCalendars.php deleted file mode 100755 index b8d3f0573fa4c9c2b43084b1a63937aaf137b33f..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/UserCalendars.php +++ /dev/null @@ -1,298 +0,0 @@ -principalBackend = $principalBackend; - $this->caldavBackend = $caldavBackend; - $this->principalInfo = $principalBackend->getPrincipalByPath($userUri); - - } - - /** - * Returns the name of this object - * - * @return string - */ - public function getName() { - - list(,$name) = Sabre_DAV_URLUtil::splitPath($this->principalInfo['uri']); - return $name; - - } - - /** - * Updates the name of this object - * - * @param string $name - * @return void - */ - public function setName($name) { - - throw new Sabre_DAV_Exception_Forbidden(); - - } - - /** - * Deletes this object - * - * @return void - */ - public function delete() { - - throw new Sabre_DAV_Exception_Forbidden(); - - } - - /** - * Returns the last modification date - * - * @return int - */ - public function getLastModified() { - - return null; - - } - - /** - * Creates a new file under this object. - * - * This is currently not allowed - * - * @param string $filename - * @param resource $data - * @return void - */ - public function createFile($filename, $data=null) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Creating new files in this collection is not supported'); - - } - - /** - * Creates a new directory under this object. - * - * This is currently not allowed. - * - * @param string $filename - * @return void - */ - public function createDirectory($filename) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Creating new collections in this collection is not supported'); - - } - - /** - * Returns a single calendar, by name - * - * @param string $name - * @todo needs optimizing - * @return Sabre_CalDAV_Calendar - */ - public function getChild($name) { - - foreach($this->getChildren() as $child) { - if ($name==$child->getName()) - return $child; - - } - throw new Sabre_DAV_Exception_NotFound('Calendar with name \'' . $name . '\' could not be found'); - - } - - /** - * Checks if a calendar exists. - * - * @param string $name - * @todo needs optimizing - * @return bool - */ - public function childExists($name) { - - foreach($this->getChildren() as $child) { - if ($name==$child->getName()) - return true; - - } - return false; - - } - - /** - * Returns a list of calendars - * - * @return array - */ - public function getChildren() { - - $calendars = $this->caldavBackend->getCalendarsForUser($this->principalInfo['uri']); - $objs = array(); - foreach($calendars as $calendar) { - $objs[] = new Sabre_CalDAV_Calendar($this->principalBackend, $this->caldavBackend, $calendar); - } - $objs[] = new Sabre_CalDAV_Schedule_Outbox($this->principalInfo['uri']); - return $objs; - - } - - /** - * Creates a new calendar - * - * @param string $name - * @param array $resourceType - * @param array $properties - * @return void - */ - public function createExtendedCollection($name, array $resourceType, array $properties) { - - if (!in_array('{urn:ietf:params:xml:ns:caldav}calendar',$resourceType) || count($resourceType)!==2) { - throw new Sabre_DAV_Exception_InvalidResourceType('Unknown resourceType for this collection'); - } - $this->caldavBackend->createCalendar($this->principalInfo['uri'], $name, $properties); - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->principalInfo['uri']; - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->principalInfo['uri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->principalInfo['uri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->principalInfo['uri'] . '/calendar-proxy-write', - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->principalInfo['uri'] . '/calendar-proxy-write', - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->principalInfo['uri'] . '/calendar-proxy-read', - 'protected' => true, - ), - - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Changing ACL is not yet supported'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - return null; - - } - -} diff --git a/3rdparty/Sabre/CalDAV/Version.php b/3rdparty/Sabre/CalDAV/Version.php deleted file mode 100755 index ace9901c0895669cfa71e9faf4b0ff157f6f2df0..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CalDAV/Version.php +++ /dev/null @@ -1,24 +0,0 @@ -carddavBackend = $carddavBackend; - $this->addressBookInfo = $addressBookInfo; - - } - - /** - * Returns the name of the addressbook - * - * @return string - */ - public function getName() { - - return $this->addressBookInfo['uri']; - - } - - /** - * Returns a card - * - * @param string $name - * @return Sabre_DAV_Card - */ - public function getChild($name) { - - $obj = $this->carddavBackend->getCard($this->addressBookInfo['id'],$name); - if (!$obj) throw new Sabre_DAV_Exception_NotFound('Card not found'); - return new Sabre_CardDAV_Card($this->carddavBackend,$this->addressBookInfo,$obj); - - } - - /** - * Returns the full list of cards - * - * @return array - */ - public function getChildren() { - - $objs = $this->carddavBackend->getCards($this->addressBookInfo['id']); - $children = array(); - foreach($objs as $obj) { - $children[] = new Sabre_CardDAV_Card($this->carddavBackend,$this->addressBookInfo,$obj); - } - return $children; - - } - - /** - * Creates a new directory - * - * We actually block this, as subdirectories are not allowed in addressbooks. - * - * @param string $name - * @return void - */ - public function createDirectory($name) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Creating collections in addressbooks is not allowed'); - - } - - /** - * Creates a new file - * - * The contents of the new file must be a valid VCARD. - * - * This method may return an ETag. - * - * @param string $name - * @param resource $vcardData - * @return void|null - */ - public function createFile($name,$vcardData = null) { - - if (is_resource($vcardData)) { - $vcardData = stream_get_contents($vcardData); - } - // Converting to UTF-8, if needed - $vcardData = Sabre_DAV_StringUtil::ensureUTF8($vcardData); - - return $this->carddavBackend->createCard($this->addressBookInfo['id'],$name,$vcardData); - - } - - /** - * Deletes the entire addressbook. - * - * @return void - */ - public function delete() { - - $this->carddavBackend->deleteAddressBook($this->addressBookInfo['id']); - - } - - /** - * Renames the addressbook - * - * @param string $newName - * @return void - */ - public function setName($newName) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Renaming addressbooks is not yet supported'); - - } - - /** - * Returns the last modification date as a unix timestamp. - * - * @return void - */ - public function getLastModified() { - - return null; - - } - - /** - * Updates properties on this node, - * - * The properties array uses the propertyName in clark-notation as key, - * and the array value for the property value. In the case a property - * should be deleted, the property value will be null. - * - * This method must be atomic. If one property cannot be changed, the - * entire operation must fail. - * - * If the operation was successful, true can be returned. - * If the operation failed, false can be returned. - * - * Deletion of a non-existent property is always successful. - * - * Lastly, it is optional to return detailed information about any - * failures. In this case an array should be returned with the following - * structure: - * - * array( - * 403 => array( - * '{DAV:}displayname' => null, - * ), - * 424 => array( - * '{DAV:}owner' => null, - * ) - * ) - * - * In this example it was forbidden to update {DAV:}displayname. - * (403 Forbidden), which in turn also caused {DAV:}owner to fail - * (424 Failed Dependency) because the request needs to be atomic. - * - * @param array $mutations - * @return bool|array - */ - public function updateProperties($mutations) { - - return $this->carddavBackend->updateAddressBook($this->addressBookInfo['id'], $mutations); - - } - - /** - * Returns a list of properties for this nodes. - * - * The properties list is a list of propertynames the client requested, - * encoded in clark-notation {xmlnamespace}tagname - * - * If the array is empty, it means 'all properties' were requested. - * - * @param array $properties - * @return array - */ - public function getProperties($properties) { - - $response = array(); - foreach($properties as $propertyName) { - - if (isset($this->addressBookInfo[$propertyName])) { - - $response[$propertyName] = $this->addressBookInfo[$propertyName]; - - } - - } - - return $response; - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->addressBookInfo['principaluri']; - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->addressBookInfo['principaluri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->addressBookInfo['principaluri'], - 'protected' => true, - ), - - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Changing ACL is not yet supported'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - return null; - - } - -} diff --git a/3rdparty/Sabre/CardDAV/AddressBookQueryParser.php b/3rdparty/Sabre/CardDAV/AddressBookQueryParser.php deleted file mode 100755 index 46bb8ff18dd48847ae94bec334d605a96b021962..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/AddressBookQueryParser.php +++ /dev/null @@ -1,219 +0,0 @@ -dom = $dom; - - $this->xpath = new DOMXPath($dom); - $this->xpath->registerNameSpace('card',Sabre_CardDAV_Plugin::NS_CARDDAV); - - } - - /** - * Parses the request. - * - * @return void - */ - public function parse() { - - $filterNode = null; - - $limit = $this->xpath->evaluate('number(/card:addressbook-query/card:limit/card:nresults)'); - if (is_nan($limit)) $limit = null; - - $filter = $this->xpath->query('/card:addressbook-query/card:filter'); - - // According to the CardDAV spec there needs to be exactly 1 filter - // element. However, KDE 4.8.2 contains a bug that will encode 0 filter - // elements, so this is a workaround for that. - // - // See: https://bugs.kde.org/show_bug.cgi?id=300047 - if ($filter->length === 0) { - $test = null; - $filter = null; - } elseif ($filter->length === 1) { - $filter = $filter->item(0); - $test = $this->xpath->evaluate('string(@test)', $filter); - } else { - throw new Sabre_DAV_Exception_BadRequest('Only one filter element is allowed'); - } - - if (!$test) $test = self::TEST_ANYOF; - if ($test !== self::TEST_ANYOF && $test !== self::TEST_ALLOF) { - throw new Sabre_DAV_Exception_BadRequest('The test attribute must either hold "anyof" or "allof"'); - } - - $propFilters = array(); - - $propFilterNodes = $this->xpath->query('card:prop-filter', $filter); - for($ii=0; $ii < $propFilterNodes->length; $ii++) { - - $propFilters[] = $this->parsePropFilterNode($propFilterNodes->item($ii)); - - - } - - $this->filters = $propFilters; - $this->limit = $limit; - $this->requestedProperties = array_keys(Sabre_DAV_XMLUtil::parseProperties($this->dom->firstChild)); - $this->test = $test; - - } - - /** - * Parses the prop-filter xml element - * - * @param DOMElement $propFilterNode - * @return array - */ - protected function parsePropFilterNode(DOMElement $propFilterNode) { - - $propFilter = array(); - $propFilter['name'] = $propFilterNode->getAttribute('name'); - $propFilter['test'] = $propFilterNode->getAttribute('test'); - if (!$propFilter['test']) $propFilter['test'] = 'anyof'; - - $propFilter['is-not-defined'] = $this->xpath->query('card:is-not-defined', $propFilterNode)->length>0; - - $paramFilterNodes = $this->xpath->query('card:param-filter', $propFilterNode); - - $propFilter['param-filters'] = array(); - - - for($ii=0;$ii<$paramFilterNodes->length;$ii++) { - - $propFilter['param-filters'][] = $this->parseParamFilterNode($paramFilterNodes->item($ii)); - - } - $propFilter['text-matches'] = array(); - $textMatchNodes = $this->xpath->query('card:text-match', $propFilterNode); - - for($ii=0;$ii<$textMatchNodes->length;$ii++) { - - $propFilter['text-matches'][] = $this->parseTextMatchNode($textMatchNodes->item($ii)); - - } - - return $propFilter; - - } - - /** - * Parses the param-filter element - * - * @param DOMElement $paramFilterNode - * @return array - */ - public function parseParamFilterNode(DOMElement $paramFilterNode) { - - $paramFilter = array(); - $paramFilter['name'] = $paramFilterNode->getAttribute('name'); - $paramFilter['is-not-defined'] = $this->xpath->query('card:is-not-defined', $paramFilterNode)->length>0; - $paramFilter['text-match'] = null; - - $textMatch = $this->xpath->query('card:text-match', $paramFilterNode); - if ($textMatch->length>0) { - $paramFilter['text-match'] = $this->parseTextMatchNode($textMatch->item(0)); - } - - return $paramFilter; - - } - - /** - * Text match - * - * @param DOMElement $textMatchNode - * @return array - */ - public function parseTextMatchNode(DOMElement $textMatchNode) { - - $matchType = $textMatchNode->getAttribute('match-type'); - if (!$matchType) $matchType = 'contains'; - - if (!in_array($matchType, array('contains', 'equals', 'starts-with', 'ends-with'))) { - throw new Sabre_DAV_Exception_BadRequest('Unknown match-type: ' . $matchType); - } - - $negateCondition = $textMatchNode->getAttribute('negate-condition'); - $negateCondition = $negateCondition==='yes'; - $collation = $textMatchNode->getAttribute('collation'); - if (!$collation) $collation = 'i;unicode-casemap'; - - return array( - 'negate-condition' => $negateCondition, - 'collation' => $collation, - 'match-type' => $matchType, - 'value' => $textMatchNode->nodeValue - ); - - - } - -} diff --git a/3rdparty/Sabre/CardDAV/AddressBookRoot.php b/3rdparty/Sabre/CardDAV/AddressBookRoot.php deleted file mode 100755 index 9d37b15f08e2ea04942ed1ffbff4152b50f5b007..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/AddressBookRoot.php +++ /dev/null @@ -1,78 +0,0 @@ -carddavBackend = $carddavBackend; - parent::__construct($principalBackend, $principalPrefix); - - } - - /** - * Returns the name of the node - * - * @return string - */ - public function getName() { - - return Sabre_CardDAV_Plugin::ADDRESSBOOK_ROOT; - - } - - /** - * This method returns a node for a principal. - * - * The passed array contains principal information, and is guaranteed to - * at least contain a uri item. Other properties may or may not be - * supplied by the authentication backend. - * - * @param array $principal - * @return Sabre_DAV_INode - */ - public function getChildForPrincipal(array $principal) { - - return new Sabre_CardDAV_UserAddressBooks($this->carddavBackend, $principal['uri']); - - } - -} diff --git a/3rdparty/Sabre/CardDAV/Backend/Abstract.php b/3rdparty/Sabre/CardDAV/Backend/Abstract.php deleted file mode 100755 index e4806b7161f10a5a0f77ada0c8f907009866555d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/Backend/Abstract.php +++ /dev/null @@ -1,166 +0,0 @@ -pdo = $pdo; - $this->addressBooksTableName = $addressBooksTableName; - $this->cardsTableName = $cardsTableName; - - } - - /** - * Returns the list of addressbooks for a specific user. - * - * @param string $principalUri - * @return array - */ - public function getAddressBooksForUser($principalUri) { - - $stmt = $this->pdo->prepare('SELECT id, uri, displayname, principaluri, description, ctag FROM '.$this->addressBooksTableName.' WHERE principaluri = ?'); - $stmt->execute(array($principalUri)); - - $addressBooks = array(); - - foreach($stmt->fetchAll() as $row) { - - $addressBooks[] = array( - 'id' => $row['id'], - 'uri' => $row['uri'], - 'principaluri' => $row['principaluri'], - '{DAV:}displayname' => $row['displayname'], - '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' => $row['description'], - '{http://calendarserver.org/ns/}getctag' => $row['ctag'], - '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}supported-address-data' => - new Sabre_CardDAV_Property_SupportedAddressData(), - ); - - } - - return $addressBooks; - - } - - - /** - * Updates an addressbook's properties - * - * See Sabre_DAV_IProperties for a description of the mutations array, as - * well as the return value. - * - * @param mixed $addressBookId - * @param array $mutations - * @see Sabre_DAV_IProperties::updateProperties - * @return bool|array - */ - public function updateAddressBook($addressBookId, array $mutations) { - - $updates = array(); - - foreach($mutations as $property=>$newValue) { - - switch($property) { - case '{DAV:}displayname' : - $updates['displayname'] = $newValue; - break; - case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' : - $updates['description'] = $newValue; - break; - default : - // If any unsupported values were being updated, we must - // let the entire request fail. - return false; - } - - } - - // No values are being updated? - if (!$updates) { - return false; - } - - $query = 'UPDATE ' . $this->addressBooksTableName . ' SET ctag = ctag + 1 '; - foreach($updates as $key=>$value) { - $query.=', `' . $key . '` = :' . $key . ' '; - } - $query.=' WHERE id = :addressbookid'; - - $stmt = $this->pdo->prepare($query); - $updates['addressbookid'] = $addressBookId; - - $stmt->execute($updates); - - return true; - - } - - /** - * Creates a new address book - * - * @param string $principalUri - * @param string $url Just the 'basename' of the url. - * @param array $properties - * @return void - */ - public function createAddressBook($principalUri, $url, array $properties) { - - $values = array( - 'displayname' => null, - 'description' => null, - 'principaluri' => $principalUri, - 'uri' => $url, - ); - - foreach($properties as $property=>$newValue) { - - switch($property) { - case '{DAV:}displayname' : - $values['displayname'] = $newValue; - break; - case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' : - $values['description'] = $newValue; - break; - default : - throw new Sabre_DAV_Exception_BadRequest('Unknown property: ' . $property); - } - - } - - $query = 'INSERT INTO ' . $this->addressBooksTableName . ' (uri, displayname, description, principaluri, ctag) VALUES (:uri, :displayname, :description, :principaluri, 1)'; - $stmt = $this->pdo->prepare($query); - $stmt->execute($values); - - } - - /** - * Deletes an entire addressbook and all its contents - * - * @param int $addressBookId - * @return void - */ - public function deleteAddressBook($addressBookId) { - - $stmt = $this->pdo->prepare('DELETE FROM ' . $this->cardsTableName . ' WHERE addressbookid = ?'); - $stmt->execute(array($addressBookId)); - - $stmt = $this->pdo->prepare('DELETE FROM ' . $this->addressBooksTableName . ' WHERE id = ?'); - $stmt->execute(array($addressBookId)); - - } - - /** - * Returns all cards for a specific addressbook id. - * - * This method should return the following properties for each card: - * * carddata - raw vcard data - * * uri - Some unique url - * * lastmodified - A unix timestamp - * - * It's recommended to also return the following properties: - * * etag - A unique etag. This must change every time the card changes. - * * size - The size of the card in bytes. - * - * If these last two properties are provided, less time will be spent - * calculating them. If they are specified, you can also ommit carddata. - * This may speed up certain requests, especially with large cards. - * - * @param mixed $addressbookId - * @return array - */ - public function getCards($addressbookId) { - - $stmt = $this->pdo->prepare('SELECT id, carddata, uri, lastmodified FROM ' . $this->cardsTableName . ' WHERE addressbookid = ?'); - $stmt->execute(array($addressbookId)); - - return $stmt->fetchAll(PDO::FETCH_ASSOC); - - - } - - /** - * Returns a specfic card. - * - * The same set of properties must be returned as with getCards. The only - * exception is that 'carddata' is absolutely required. - * - * @param mixed $addressBookId - * @param string $cardUri - * @return array - */ - public function getCard($addressBookId, $cardUri) { - - $stmt = $this->pdo->prepare('SELECT id, carddata, uri, lastmodified FROM ' . $this->cardsTableName . ' WHERE addressbookid = ? AND uri = ? LIMIT 1'); - $stmt->execute(array($addressBookId, $cardUri)); - - $result = $stmt->fetchAll(PDO::FETCH_ASSOC); - - return (count($result)>0?$result[0]:false); - - } - - /** - * Creates a new card. - * - * The addressbook id will be passed as the first argument. This is the - * same id as it is returned from the getAddressbooksForUser method. - * - * The cardUri is a base uri, and doesn't include the full path. The - * cardData argument is the vcard body, and is passed as a string. - * - * It is possible to return an ETag from this method. This ETag is for the - * newly created resource, and must be enclosed with double quotes (that - * is, the string itself must contain the double quotes). - * - * You should only return the ETag if you store the carddata as-is. If a - * subsequent GET request on the same card does not have the same body, - * byte-by-byte and you did return an ETag here, clients tend to get - * confused. - * - * If you don't return an ETag, you can just return null. - * - * @param mixed $addressBookId - * @param string $cardUri - * @param string $cardData - * @return string|null - */ - public function createCard($addressBookId, $cardUri, $cardData) { - - $stmt = $this->pdo->prepare('INSERT INTO ' . $this->cardsTableName . ' (carddata, uri, lastmodified, addressbookid) VALUES (?, ?, ?, ?)'); - - $result = $stmt->execute(array($cardData, $cardUri, time(), $addressBookId)); - - $stmt2 = $this->pdo->prepare('UPDATE ' . $this->addressBooksTableName . ' SET ctag = ctag + 1 WHERE id = ?'); - $stmt2->execute(array($addressBookId)); - - return '"' . md5($cardData) . '"'; - - } - - /** - * Updates a card. - * - * The addressbook id will be passed as the first argument. This is the - * same id as it is returned from the getAddressbooksForUser method. - * - * The cardUri is a base uri, and doesn't include the full path. The - * cardData argument is the vcard body, and is passed as a string. - * - * It is possible to return an ETag from this method. This ETag should - * match that of the updated resource, and must be enclosed with double - * quotes (that is: the string itself must contain the actual quotes). - * - * You should only return the ETag if you store the carddata as-is. If a - * subsequent GET request on the same card does not have the same body, - * byte-by-byte and you did return an ETag here, clients tend to get - * confused. - * - * If you don't return an ETag, you can just return null. - * - * @param mixed $addressBookId - * @param string $cardUri - * @param string $cardData - * @return string|null - */ - public function updateCard($addressBookId, $cardUri, $cardData) { - - $stmt = $this->pdo->prepare('UPDATE ' . $this->cardsTableName . ' SET carddata = ?, lastmodified = ? WHERE uri = ? AND addressbookid =?'); - $stmt->execute(array($cardData, time(), $cardUri, $addressBookId)); - - $stmt2 = $this->pdo->prepare('UPDATE ' . $this->addressBooksTableName . ' SET ctag = ctag + 1 WHERE id = ?'); - $stmt2->execute(array($addressBookId)); - - return '"' . md5($cardData) . '"'; - - } - - /** - * Deletes a card - * - * @param mixed $addressBookId - * @param string $cardUri - * @return bool - */ - public function deleteCard($addressBookId, $cardUri) { - - $stmt = $this->pdo->prepare('DELETE FROM ' . $this->cardsTableName . ' WHERE addressbookid = ? AND uri = ?'); - $stmt->execute(array($addressBookId, $cardUri)); - - $stmt2 = $this->pdo->prepare('UPDATE ' . $this->addressBooksTableName . ' SET ctag = ctag + 1 WHERE id = ?'); - $stmt2->execute(array($addressBookId)); - - return $stmt->rowCount()===1; - - } -} diff --git a/3rdparty/Sabre/CardDAV/Card.php b/3rdparty/Sabre/CardDAV/Card.php deleted file mode 100755 index d7c663338375ac8b068851c574d49b45a49a75b7..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/Card.php +++ /dev/null @@ -1,250 +0,0 @@ -carddavBackend = $carddavBackend; - $this->addressBookInfo = $addressBookInfo; - $this->cardData = $cardData; - - } - - /** - * Returns the uri for this object - * - * @return string - */ - public function getName() { - - return $this->cardData['uri']; - - } - - /** - * Returns the VCard-formatted object - * - * @return string - */ - public function get() { - - // Pre-populating 'carddata' is optional. If we don't yet have it - // already, we fetch it from the backend. - if (!isset($this->cardData['carddata'])) { - $this->cardData = $this->carddavBackend->getCard($this->addressBookInfo['id'], $this->cardData['uri']); - } - return $this->cardData['carddata']; - - } - - /** - * Updates the VCard-formatted object - * - * @param string $cardData - * @return void - */ - public function put($cardData) { - - if (is_resource($cardData)) - $cardData = stream_get_contents($cardData); - - // Converting to UTF-8, if needed - $cardData = Sabre_DAV_StringUtil::ensureUTF8($cardData); - - $etag = $this->carddavBackend->updateCard($this->addressBookInfo['id'],$this->cardData['uri'],$cardData); - $this->cardData['carddata'] = $cardData; - $this->cardData['etag'] = $etag; - - return $etag; - - } - - /** - * Deletes the card - * - * @return void - */ - public function delete() { - - $this->carddavBackend->deleteCard($this->addressBookInfo['id'],$this->cardData['uri']); - - } - - /** - * Returns the mime content-type - * - * @return string - */ - public function getContentType() { - - return 'text/x-vcard'; - - } - - /** - * Returns an ETag for this object - * - * @return string - */ - public function getETag() { - - if (isset($this->cardData['etag'])) { - return $this->cardData['etag']; - } else { - return '"' . md5($this->get()) . '"'; - } - - } - - /** - * Returns the last modification date as a unix timestamp - * - * @return time - */ - public function getLastModified() { - - return isset($this->cardData['lastmodified'])?$this->cardData['lastmodified']:null; - - } - - /** - * Returns the size of this object in bytes - * - * @return int - */ - public function getSize() { - - if (array_key_exists('size', $this->cardData)) { - return $this->cardData['size']; - } else { - return strlen($this->get()); - } - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->addressBookInfo['principaluri']; - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->addressBookInfo['principaluri'], - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->addressBookInfo['principaluri'], - 'protected' => true, - ), - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Changing ACL is not yet supported'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - return null; - - } - -} - diff --git a/3rdparty/Sabre/CardDAV/IAddressBook.php b/3rdparty/Sabre/CardDAV/IAddressBook.php deleted file mode 100755 index 2bc275bcf743b9ca19377527f3cc655ffa461935..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/IAddressBook.php +++ /dev/null @@ -1,18 +0,0 @@ -subscribeEvent('beforeGetProperties', array($this, 'beforeGetProperties')); - $server->subscribeEvent('updateProperties', array($this, 'updateProperties')); - $server->subscribeEvent('report', array($this,'report')); - $server->subscribeEvent('onHTMLActionsPanel', array($this,'htmlActionsPanel')); - $server->subscribeEvent('onBrowserPostAction', array($this,'browserPostAction')); - $server->subscribeEvent('beforeWriteContent', array($this, 'beforeWriteContent')); - $server->subscribeEvent('beforeCreateFile', array($this, 'beforeCreateFile')); - - /* Namespaces */ - $server->xmlNamespaces[self::NS_CARDDAV] = 'card'; - - /* Mapping Interfaces to {DAV:}resourcetype values */ - $server->resourceTypeMapping['Sabre_CardDAV_IAddressBook'] = '{' . self::NS_CARDDAV . '}addressbook'; - $server->resourceTypeMapping['Sabre_CardDAV_IDirectory'] = '{' . self::NS_CARDDAV . '}directory'; - - /* Adding properties that may never be changed */ - $server->protectedProperties[] = '{' . self::NS_CARDDAV . '}supported-address-data'; - $server->protectedProperties[] = '{' . self::NS_CARDDAV . '}max-resource-size'; - $server->protectedProperties[] = '{' . self::NS_CARDDAV . '}addressbook-home-set'; - $server->protectedProperties[] = '{' . self::NS_CARDDAV . '}supported-collation-set'; - - $server->propertyMap['{http://calendarserver.org/ns/}me-card'] = 'Sabre_DAV_Property_Href'; - - $this->server = $server; - - } - - /** - * Returns a list of supported features. - * - * This is used in the DAV: header in the OPTIONS and PROPFIND requests. - * - * @return array - */ - public function getFeatures() { - - return array('addressbook'); - - } - - /** - * Returns a list of reports this plugin supports. - * - * This will be used in the {DAV:}supported-report-set property. - * Note that you still need to subscribe to the 'report' event to actually - * implement them - * - * @param string $uri - * @return array - */ - public function getSupportedReportSet($uri) { - - $node = $this->server->tree->getNodeForPath($uri); - if ($node instanceof Sabre_CardDAV_IAddressBook || $node instanceof Sabre_CardDAV_ICard) { - return array( - '{' . self::NS_CARDDAV . '}addressbook-multiget', - '{' . self::NS_CARDDAV . '}addressbook-query', - ); - } - return array(); - - } - - - /** - * Adds all CardDAV-specific properties - * - * @param string $path - * @param Sabre_DAV_INode $node - * @param array $requestedProperties - * @param array $returnedProperties - * @return void - */ - public function beforeGetProperties($path, Sabre_DAV_INode $node, array &$requestedProperties, array &$returnedProperties) { - - if ($node instanceof Sabre_DAVACL_IPrincipal) { - - // calendar-home-set property - $addHome = '{' . self::NS_CARDDAV . '}addressbook-home-set'; - if (in_array($addHome,$requestedProperties)) { - $principalId = $node->getName(); - $addressbookHomePath = self::ADDRESSBOOK_ROOT . '/' . $principalId . '/'; - unset($requestedProperties[array_search($addHome, $requestedProperties)]); - $returnedProperties[200][$addHome] = new Sabre_DAV_Property_Href($addressbookHomePath); - } - - $directories = '{' . self::NS_CARDDAV . '}directory-gateway'; - if ($this->directories && in_array($directories, $requestedProperties)) { - unset($requestedProperties[array_search($directories, $requestedProperties)]); - $returnedProperties[200][$directories] = new Sabre_DAV_Property_HrefList($this->directories); - } - - } - - if ($node instanceof Sabre_CardDAV_ICard) { - - // The address-data property is not supposed to be a 'real' - // property, but in large chunks of the spec it does act as such. - // Therefore we simply expose it as a property. - $addressDataProp = '{' . self::NS_CARDDAV . '}address-data'; - if (in_array($addressDataProp, $requestedProperties)) { - unset($requestedProperties[$addressDataProp]); - $val = $node->get(); - if (is_resource($val)) - $val = stream_get_contents($val); - - // Taking out \r to not screw up the xml output - //$returnedProperties[200][$addressDataProp] = str_replace("\r","", $val); - // The stripping of \r breaks the Mail App in OSX Mountain Lion - // this is fixed in master, but not backported. /Tanghus - $returnedProperties[200][$addressDataProp] = $val; - - } - } - - if ($node instanceof Sabre_CardDAV_UserAddressBooks) { - - $meCardProp = '{http://calendarserver.org/ns/}me-card'; - if (in_array($meCardProp, $requestedProperties)) { - - $props = $this->server->getProperties($node->getOwner(), array('{http://sabredav.org/ns}vcard-url')); - if (isset($props['{http://sabredav.org/ns}vcard-url'])) { - - $returnedProperties[200][$meCardProp] = new Sabre_DAV_Property_Href( - $props['{http://sabredav.org/ns}vcard-url'] - ); - $pos = array_search($meCardProp, $requestedProperties); - unset($requestedProperties[$pos]); - - } - - } - - } - - } - - /** - * This event is triggered when a PROPPATCH method is executed - * - * @param array $mutations - * @param array $result - * @param Sabre_DAV_INode $node - * @return void - */ - public function updateProperties(&$mutations, &$result, $node) { - - if (!$node instanceof Sabre_CardDAV_UserAddressBooks) { - return true; - } - - $meCard = '{http://calendarserver.org/ns/}me-card'; - - // The only property we care about - if (!isset($mutations[$meCard])) - return true; - - $value = $mutations[$meCard]; - unset($mutations[$meCard]); - - if ($value instanceof Sabre_DAV_Property_IHref) { - $value = $value->getHref(); - $value = $this->server->calculateUri($value); - } elseif (!is_null($value)) { - $result[400][$meCard] = null; - return false; - } - - $innerResult = $this->server->updateProperties( - $node->getOwner(), - array( - '{http://sabredav.org/ns}vcard-url' => $value, - ) - ); - - $closureResult = false; - foreach($innerResult as $status => $props) { - if (is_array($props) && array_key_exists('{http://sabredav.org/ns}vcard-url', $props)) { - $result[$status][$meCard] = null; - $closureResult = ($status>=200 && $status<300); - } - - } - - return $result; - - } - - /** - * This functions handles REPORT requests specific to CardDAV - * - * @param string $reportName - * @param DOMNode $dom - * @return bool - */ - public function report($reportName,$dom) { - - switch($reportName) { - case '{'.self::NS_CARDDAV.'}addressbook-multiget' : - $this->addressbookMultiGetReport($dom); - return false; - case '{'.self::NS_CARDDAV.'}addressbook-query' : - $this->addressBookQueryReport($dom); - return false; - default : - return; - - } - - - } - - /** - * This function handles the addressbook-multiget REPORT. - * - * This report is used by the client to fetch the content of a series - * of urls. Effectively avoiding a lot of redundant requests. - * - * @param DOMNode $dom - * @return void - */ - public function addressbookMultiGetReport($dom) { - - $properties = array_keys(Sabre_DAV_XMLUtil::parseProperties($dom->firstChild)); - - $hrefElems = $dom->getElementsByTagNameNS('urn:DAV','href'); - $propertyList = array(); - - foreach($hrefElems as $elem) { - - $uri = $this->server->calculateUri($elem->nodeValue); - list($propertyList[]) = $this->server->getPropertiesForPath($uri,$properties); - - } - - $this->server->httpResponse->sendStatus(207); - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->sendBody($this->server->generateMultiStatus($propertyList)); - - } - - /** - * This method is triggered before a file gets updated with new content. - * - * This plugin uses this method to ensure that Card nodes receive valid - * vcard data. - * - * @param string $path - * @param Sabre_DAV_IFile $node - * @param resource $data - * @return void - */ - public function beforeWriteContent($path, Sabre_DAV_IFile $node, &$data) { - - if (!$node instanceof Sabre_CardDAV_ICard) - return; - - $this->validateVCard($data); - - } - - /** - * This method is triggered before a new file is created. - * - * This plugin uses this method to ensure that Card nodes receive valid - * vcard data. - * - * @param string $path - * @param resource $data - * @param Sabre_DAV_ICollection $parentNode - * @return void - */ - public function beforeCreateFile($path, &$data, Sabre_DAV_ICollection $parentNode) { - - if (!$parentNode instanceof Sabre_CardDAV_IAddressBook) - return; - - $this->validateVCard($data); - - } - - /** - * Checks if the submitted iCalendar data is in fact, valid. - * - * An exception is thrown if it's not. - * - * @param resource|string $data - * @return void - */ - protected function validateVCard(&$data) { - - // If it's a stream, we convert it to a string first. - if (is_resource($data)) { - $data = stream_get_contents($data); - } - - // Converting the data to unicode, if needed. - $data = Sabre_DAV_StringUtil::ensureUTF8($data); - - try { - - $vobj = Sabre_VObject_Reader::read($data); - - } catch (Sabre_VObject_ParseException $e) { - - throw new Sabre_DAV_Exception_UnsupportedMediaType('This resource only supports valid vcard data. Parse error: ' . $e->getMessage()); - - } - - if ($vobj->name !== 'VCARD') { - throw new Sabre_DAV_Exception_UnsupportedMediaType('This collection can only support vcard objects.'); - } - - } - - - /** - * This function handles the addressbook-query REPORT - * - * This report is used by the client to filter an addressbook based on a - * complex query. - * - * @param DOMNode $dom - * @return void - */ - protected function addressbookQueryReport($dom) { - - $query = new Sabre_CardDAV_AddressBookQueryParser($dom); - $query->parse(); - - $depth = $this->server->getHTTPDepth(0); - - if ($depth==0) { - $candidateNodes = array( - $this->server->tree->getNodeForPath($this->server->getRequestUri()) - ); - } else { - $candidateNodes = $this->server->tree->getChildren($this->server->getRequestUri()); - } - - $validNodes = array(); - foreach($candidateNodes as $node) { - - if (!$node instanceof Sabre_CardDAV_ICard) - continue; - - $blob = $node->get(); - if (is_resource($blob)) { - $blob = stream_get_contents($blob); - } - - if (!$this->validateFilters($blob, $query->filters, $query->test)) { - continue; - } - - $validNodes[] = $node; - - if ($query->limit && $query->limit <= count($validNodes)) { - // We hit the maximum number of items, we can stop now. - break; - } - - } - - $result = array(); - foreach($validNodes as $validNode) { - - if ($depth==0) { - $href = $this->server->getRequestUri(); - } else { - $href = $this->server->getRequestUri() . '/' . $validNode->getName(); - } - - list($result[]) = $this->server->getPropertiesForPath($href, $query->requestedProperties, 0); - - } - - $this->server->httpResponse->sendStatus(207); - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->sendBody($this->server->generateMultiStatus($result)); - - } - - /** - * Validates if a vcard makes it throught a list of filters. - * - * @param string $vcardData - * @param array $filters - * @param string $test anyof or allof (which means OR or AND) - * @return bool - */ - public function validateFilters($vcardData, array $filters, $test) { - - $vcard = Sabre_VObject_Reader::read($vcardData); - - if (!$filters) return true; - - foreach($filters as $filter) { - - $isDefined = isset($vcard->{$filter['name']}); - if ($filter['is-not-defined']) { - if ($isDefined) { - $success = false; - } else { - $success = true; - } - } elseif ((!$filter['param-filters'] && !$filter['text-matches']) || !$isDefined) { - - // We only need to check for existence - $success = $isDefined; - - } else { - - $vProperties = $vcard->select($filter['name']); - - $results = array(); - if ($filter['param-filters']) { - $results[] = $this->validateParamFilters($vProperties, $filter['param-filters'], $filter['test']); - } - if ($filter['text-matches']) { - $texts = array(); - foreach($vProperties as $vProperty) - $texts[] = $vProperty->value; - - $results[] = $this->validateTextMatches($texts, $filter['text-matches'], $filter['test']); - } - - if (count($results)===1) { - $success = $results[0]; - } else { - if ($filter['test'] === 'anyof') { - $success = $results[0] || $results[1]; - } else { - $success = $results[0] && $results[1]; - } - } - - } // else - - // There are two conditions where we can already determine whether - // or not this filter succeeds. - if ($test==='anyof' && $success) { - return true; - } - if ($test==='allof' && !$success) { - return false; - } - - } // foreach - - // If we got all the way here, it means we haven't been able to - // determine early if the test failed or not. - // - // This implies for 'anyof' that the test failed, and for 'allof' that - // we succeeded. Sounds weird, but makes sense. - return $test==='allof'; - - } - - /** - * Validates if a param-filter can be applied to a specific property. - * - * @todo currently we're only validating the first parameter of the passed - * property. Any subsequence parameters with the same name are - * ignored. - * @param array $vProperties - * @param array $filters - * @param string $test - * @return bool - */ - protected function validateParamFilters(array $vProperties, array $filters, $test) { - - foreach($filters as $filter) { - - $isDefined = false; - foreach($vProperties as $vProperty) { - $isDefined = isset($vProperty[$filter['name']]); - if ($isDefined) break; - } - - if ($filter['is-not-defined']) { - if ($isDefined) { - $success = false; - } else { - $success = true; - } - - // If there's no text-match, we can just check for existence - } elseif (!$filter['text-match'] || !$isDefined) { - - $success = $isDefined; - - } else { - - $success = false; - foreach($vProperties as $vProperty) { - // If we got all the way here, we'll need to validate the - // text-match filter. - $success = Sabre_DAV_StringUtil::textMatch($vProperty[$filter['name']]->value, $filter['text-match']['value'], $filter['text-match']['collation'], $filter['text-match']['match-type']); - if ($success) break; - } - if ($filter['text-match']['negate-condition']) { - $success = !$success; - } - - } // else - - // There are two conditions where we can already determine whether - // or not this filter succeeds. - if ($test==='anyof' && $success) { - return true; - } - if ($test==='allof' && !$success) { - return false; - } - - } - - // If we got all the way here, it means we haven't been able to - // determine early if the test failed or not. - // - // This implies for 'anyof' that the test failed, and for 'allof' that - // we succeeded. Sounds weird, but makes sense. - return $test==='allof'; - - } - - /** - * Validates if a text-filter can be applied to a specific property. - * - * @param array $texts - * @param array $filters - * @param string $test - * @return bool - */ - protected function validateTextMatches(array $texts, array $filters, $test) { - - foreach($filters as $filter) { - - $success = false; - foreach($texts as $haystack) { - $success = Sabre_DAV_StringUtil::textMatch($haystack, $filter['value'], $filter['collation'], $filter['match-type']); - - // Breaking on the first match - if ($success) break; - } - if ($filter['negate-condition']) { - $success = !$success; - } - - if ($success && $test==='anyof') - return true; - - if (!$success && $test=='allof') - return false; - - - } - - // If we got all the way here, it means we haven't been able to - // determine early if the test failed or not. - // - // This implies for 'anyof' that the test failed, and for 'allof' that - // we succeeded. Sounds weird, but makes sense. - return $test==='allof'; - - } - - /** - * This method is used to generate HTML output for the - * Sabre_DAV_Browser_Plugin. This allows us to generate an interface users - * can use to create new calendars. - * - * @param Sabre_DAV_INode $node - * @param string $output - * @return bool - */ - public function htmlActionsPanel(Sabre_DAV_INode $node, &$output) { - - if (!$node instanceof Sabre_CardDAV_UserAddressBooks) - return; - - $output.= '
-

Create new address book

- -
-
- -
- '; - - return false; - - } - - /** - * This method allows us to intercept the 'mkcalendar' sabreAction. This - * action enables the user to create new calendars from the browser plugin. - * - * @param string $uri - * @param string $action - * @param array $postVars - * @return bool - */ - public function browserPostAction($uri, $action, array $postVars) { - - if ($action!=='mkaddressbook') - return; - - $resourceType = array('{DAV:}collection','{urn:ietf:params:xml:ns:carddav}addressbook'); - $properties = array(); - if (isset($postVars['{DAV:}displayname'])) { - $properties['{DAV:}displayname'] = $postVars['{DAV:}displayname']; - } - $this->server->createCollection($uri . '/' . $postVars['name'],$resourceType,$properties); - return false; - - } - -} diff --git a/3rdparty/Sabre/CardDAV/Property/SupportedAddressData.php b/3rdparty/Sabre/CardDAV/Property/SupportedAddressData.php deleted file mode 100755 index 36d9306e7aabd1ce55525922ce7e574a0acc640d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/Property/SupportedAddressData.php +++ /dev/null @@ -1,69 +0,0 @@ - 'text/vcard', 'version' => '3.0'), - array('contentType' => 'text/vcard', 'version' => '4.0'), - ); - } - - $this->supportedData = $supportedData; - - } - - /** - * Serializes the property in a DOMDocument - * - * @param Sabre_DAV_Server $server - * @param DOMElement $node - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $node) { - - $doc = $node->ownerDocument; - - $prefix = - isset($server->xmlNamespaces[Sabre_CardDAV_Plugin::NS_CARDDAV]) ? - $server->xmlNamespaces[Sabre_CardDAV_Plugin::NS_CARDDAV] : - 'card'; - - foreach($this->supportedData as $supported) { - - $caldata = $doc->createElementNS(Sabre_CardDAV_Plugin::NS_CARDDAV, $prefix . ':address-data-type'); - $caldata->setAttribute('content-type',$supported['contentType']); - $caldata->setAttribute('version',$supported['version']); - $node->appendChild($caldata); - - } - - } - -} diff --git a/3rdparty/Sabre/CardDAV/UserAddressBooks.php b/3rdparty/Sabre/CardDAV/UserAddressBooks.php deleted file mode 100755 index 3f11fb11238ba6274c2dbed7fc19bf9e27c3f290..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/UserAddressBooks.php +++ /dev/null @@ -1,257 +0,0 @@ -carddavBackend = $carddavBackend; - $this->principalUri = $principalUri; - - } - - /** - * Returns the name of this object - * - * @return string - */ - public function getName() { - - list(,$name) = Sabre_DAV_URLUtil::splitPath($this->principalUri); - return $name; - - } - - /** - * Updates the name of this object - * - * @param string $name - * @return void - */ - public function setName($name) { - - throw new Sabre_DAV_Exception_MethodNotAllowed(); - - } - - /** - * Deletes this object - * - * @return void - */ - public function delete() { - - throw new Sabre_DAV_Exception_MethodNotAllowed(); - - } - - /** - * Returns the last modification date - * - * @return int - */ - public function getLastModified() { - - return null; - - } - - /** - * Creates a new file under this object. - * - * This is currently not allowed - * - * @param string $filename - * @param resource $data - * @return void - */ - public function createFile($filename, $data=null) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Creating new files in this collection is not supported'); - - } - - /** - * Creates a new directory under this object. - * - * This is currently not allowed. - * - * @param string $filename - * @return void - */ - public function createDirectory($filename) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Creating new collections in this collection is not supported'); - - } - - /** - * Returns a single calendar, by name - * - * @param string $name - * @todo needs optimizing - * @return Sabre_CardDAV_AddressBook - */ - public function getChild($name) { - - foreach($this->getChildren() as $child) { - if ($name==$child->getName()) - return $child; - - } - throw new Sabre_DAV_Exception_NotFound('Addressbook with name \'' . $name . '\' could not be found'); - - } - - /** - * Returns a list of addressbooks - * - * @return array - */ - public function getChildren() { - - $addressbooks = $this->carddavBackend->getAddressbooksForUser($this->principalUri); - $objs = array(); - foreach($addressbooks as $addressbook) { - $objs[] = new Sabre_CardDAV_AddressBook($this->carddavBackend, $addressbook); - } - return $objs; - - } - - /** - * Creates a new addressbook - * - * @param string $name - * @param array $resourceType - * @param array $properties - * @return void - */ - public function createExtendedCollection($name, array $resourceType, array $properties) { - - if (!in_array('{'.Sabre_CardDAV_Plugin::NS_CARDDAV.'}addressbook',$resourceType) || count($resourceType)!==2) { - throw new Sabre_DAV_Exception_InvalidResourceType('Unknown resourceType for this collection'); - } - $this->carddavBackend->createAddressBook($this->principalUri, $name, $properties); - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->principalUri; - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->principalUri, - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $this->principalUri, - 'protected' => true, - ), - - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Changing ACL is not yet supported'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - return null; - - } - -} diff --git a/3rdparty/Sabre/CardDAV/Version.php b/3rdparty/Sabre/CardDAV/Version.php deleted file mode 100755 index d0623f0d3e8658b89f747e619ad5547655d4ed93..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/CardDAV/Version.php +++ /dev/null @@ -1,26 +0,0 @@ -currentUser; - } - - - /** - * Authenticates the user based on the current request. - * - * If authentication is successful, true must be returned. - * If authentication fails, an exception must be thrown. - * - * @param Sabre_DAV_Server $server - * @param string $realm - * @throws Sabre_DAV_Exception_NotAuthenticated - * @return bool - */ - public function authenticate(Sabre_DAV_Server $server, $realm) { - - $auth = new Sabre_HTTP_BasicAuth(); - $auth->setHTTPRequest($server->httpRequest); - $auth->setHTTPResponse($server->httpResponse); - $auth->setRealm($realm); - $userpass = $auth->getUserPass(); - if (!$userpass) { - $auth->requireLogin(); - throw new Sabre_DAV_Exception_NotAuthenticated('No basic authentication headers were found'); - } - - // Authenticates the user - if (!$this->validateUserPass($userpass[0],$userpass[1])) { - $auth->requireLogin(); - throw new Sabre_DAV_Exception_NotAuthenticated('Username or password does not match'); - } - $this->currentUser = $userpass[0]; - return true; - } - - -} - diff --git a/3rdparty/Sabre/DAV/Auth/Backend/AbstractDigest.php b/3rdparty/Sabre/DAV/Auth/Backend/AbstractDigest.php deleted file mode 100755 index 9833928b9769c33257b46cb217f46f837d835e79..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Auth/Backend/AbstractDigest.php +++ /dev/null @@ -1,98 +0,0 @@ -setHTTPRequest($server->httpRequest); - $digest->setHTTPResponse($server->httpResponse); - - $digest->setRealm($realm); - $digest->init(); - - $username = $digest->getUsername(); - - // No username was given - if (!$username) { - $digest->requireLogin(); - throw new Sabre_DAV_Exception_NotAuthenticated('No digest authentication headers were found'); - } - - $hash = $this->getDigestHash($realm, $username); - // If this was false, the user account didn't exist - if ($hash===false || is_null($hash)) { - $digest->requireLogin(); - throw new Sabre_DAV_Exception_NotAuthenticated('The supplied username was not on file'); - } - if (!is_string($hash)) { - throw new Sabre_DAV_Exception('The returned value from getDigestHash must be a string or null'); - } - - // If this was false, the password or part of the hash was incorrect. - if (!$digest->validateA1($hash)) { - $digest->requireLogin(); - throw new Sabre_DAV_Exception_NotAuthenticated('Incorrect username'); - } - - $this->currentUser = $username; - return true; - - } - - /** - * Returns the currently logged in username. - * - * @return string|null - */ - public function getCurrentUser() { - - return $this->currentUser; - - } - -} diff --git a/3rdparty/Sabre/DAV/Auth/Backend/Apache.php b/3rdparty/Sabre/DAV/Auth/Backend/Apache.php deleted file mode 100755 index d4294ea4d86dcaf87247acdbd966ce315f876b6f..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Auth/Backend/Apache.php +++ /dev/null @@ -1,62 +0,0 @@ -httpRequest->getRawServerValue('REMOTE_USER'); - if (is_null($remoteUser)) { - throw new Sabre_DAV_Exception('We did not receive the $_SERVER[REMOTE_USER] property. This means that apache might have been misconfigured'); - } - - $this->remoteUser = $remoteUser; - return true; - - } - - /** - * Returns information about the currently logged in user. - * - * If nobody is currently logged in, this method should return null. - * - * @return array|null - */ - public function getCurrentUser() { - - return $this->remoteUser; - - } - -} - diff --git a/3rdparty/Sabre/DAV/Auth/Backend/File.php b/3rdparty/Sabre/DAV/Auth/Backend/File.php deleted file mode 100755 index de308d64a6728c69be916c6d39362080d004db1f..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Auth/Backend/File.php +++ /dev/null @@ -1,75 +0,0 @@ -loadFile($filename); - - } - - /** - * Loads an htdigest-formatted file. This method can be called multiple times if - * more than 1 file is used. - * - * @param string $filename - * @return void - */ - public function loadFile($filename) { - - foreach(file($filename,FILE_IGNORE_NEW_LINES) as $line) { - - if (substr_count($line, ":") !== 2) - throw new Sabre_DAV_Exception('Malformed htdigest file. Every line should contain 2 colons'); - - list($username,$realm,$A1) = explode(':',$line); - - if (!preg_match('/^[a-zA-Z0-9]{32}$/', $A1)) - throw new Sabre_DAV_Exception('Malformed htdigest file. Invalid md5 hash'); - - $this->users[$realm . ':' . $username] = $A1; - - } - - } - - /** - * Returns a users' information - * - * @param string $realm - * @param string $username - * @return string - */ - public function getDigestHash($realm, $username) { - - return isset($this->users[$realm . ':' . $username])?$this->users[$realm . ':' . $username]:false; - - } - -} diff --git a/3rdparty/Sabre/DAV/Auth/Backend/PDO.php b/3rdparty/Sabre/DAV/Auth/Backend/PDO.php deleted file mode 100755 index eac18a23fbbfb3bb46180ec3cb5d0cbd02601dc5..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Auth/Backend/PDO.php +++ /dev/null @@ -1,65 +0,0 @@ -pdo = $pdo; - $this->tableName = $tableName; - - } - - /** - * Returns the digest hash for a user. - * - * @param string $realm - * @param string $username - * @return string|null - */ - public function getDigestHash($realm,$username) { - - $stmt = $this->pdo->prepare('SELECT username, digesta1 FROM '.$this->tableName.' WHERE username = ?'); - $stmt->execute(array($username)); - $result = $stmt->fetchAll(); - - if (!count($result)) return; - - return $result[0]['digesta1']; - - } - -} diff --git a/3rdparty/Sabre/DAV/Auth/IBackend.php b/3rdparty/Sabre/DAV/Auth/IBackend.php deleted file mode 100755 index 5be5d1bc93d7807a9a9eecd8b87100c19be30d5e..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Auth/IBackend.php +++ /dev/null @@ -1,36 +0,0 @@ -authBackend = $authBackend; - $this->realm = $realm; - - } - - /** - * Initializes the plugin. This function is automatically called by the server - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - $this->server = $server; - $this->server->subscribeEvent('beforeMethod',array($this,'beforeMethod'),10); - - } - - /** - * Returns a plugin name. - * - * Using this name other plugins will be able to access other plugins - * using Sabre_DAV_Server::getPlugin - * - * @return string - */ - public function getPluginName() { - - return 'auth'; - - } - - /** - * Returns the current users' principal uri. - * - * If nobody is logged in, this will return null. - * - * @return string|null - */ - public function getCurrentUser() { - - $userInfo = $this->authBackend->getCurrentUser(); - if (!$userInfo) return null; - - return $userInfo; - - } - - /** - * This method is called before any HTTP method and forces users to be authenticated - * - * @param string $method - * @param string $uri - * @throws Sabre_DAV_Exception_NotAuthenticated - * @return bool - */ - public function beforeMethod($method, $uri) { - - $this->authBackend->authenticate($this->server,$this->realm); - - } - -} diff --git a/3rdparty/Sabre/DAV/Browser/GuessContentType.php b/3rdparty/Sabre/DAV/Browser/GuessContentType.php deleted file mode 100755 index b6c00d461cb95e3ac778d5810b94a439b26d99c9..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Browser/GuessContentType.php +++ /dev/null @@ -1,97 +0,0 @@ - 'image/jpeg', - 'gif' => 'image/gif', - 'png' => 'image/png', - - // groupware - 'ics' => 'text/calendar', - 'vcf' => 'text/x-vcard', - - // text - 'txt' => 'text/plain', - - ); - - /** - * Initializes the plugin - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - // Using a relatively low priority (200) to allow other extensions - // to set the content-type first. - $server->subscribeEvent('afterGetProperties',array($this,'afterGetProperties'),200); - - } - - /** - * Handler for teh afterGetProperties event - * - * @param string $path - * @param array $properties - * @return void - */ - public function afterGetProperties($path, &$properties) { - - if (array_key_exists('{DAV:}getcontenttype', $properties[404])) { - - list(, $fileName) = Sabre_DAV_URLUtil::splitPath($path); - $contentType = $this->getContentType($fileName); - - if ($contentType) { - $properties[200]['{DAV:}getcontenttype'] = $contentType; - unset($properties[404]['{DAV:}getcontenttype']); - } - - } - - } - - /** - * Simple method to return the contenttype - * - * @param string $fileName - * @return string - */ - protected function getContentType($fileName) { - - // Just grabbing the extension - $extension = strtolower(substr($fileName,strrpos($fileName,'.')+1)); - if (isset($this->extensionMap[$extension])) - return $this->extensionMap[$extension]; - - } - -} diff --git a/3rdparty/Sabre/DAV/Browser/MapGetToPropFind.php b/3rdparty/Sabre/DAV/Browser/MapGetToPropFind.php deleted file mode 100755 index 1588488764133f951cf103fad141763de653154e..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Browser/MapGetToPropFind.php +++ /dev/null @@ -1,55 +0,0 @@ -server = $server; - $this->server->subscribeEvent('beforeMethod',array($this,'httpGetInterceptor')); - } - - /** - * This method intercepts GET requests to non-files, and changes it into an HTTP PROPFIND request - * - * @param string $method - * @param string $uri - * @return bool - */ - public function httpGetInterceptor($method, $uri) { - - if ($method!='GET') return true; - - $node = $this->server->tree->getNodeForPath($uri); - if ($node instanceof Sabre_DAV_IFile) return; - - $this->server->invokeMethod('PROPFIND',$uri); - return false; - - } - -} diff --git a/3rdparty/Sabre/DAV/Browser/Plugin.php b/3rdparty/Sabre/DAV/Browser/Plugin.php deleted file mode 100755 index 09bbdd2ae021e013c83c85bcbbc77f9cfb8a6ace..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Browser/Plugin.php +++ /dev/null @@ -1,489 +0,0 @@ - 'icons/file', - 'Sabre_DAV_ICollection' => 'icons/collection', - 'Sabre_DAVACL_IPrincipal' => 'icons/principal', - 'Sabre_CalDAV_ICalendar' => 'icons/calendar', - 'Sabre_CardDAV_IAddressBook' => 'icons/addressbook', - 'Sabre_CardDAV_ICard' => 'icons/card', - ); - - /** - * The file extension used for all icons - * - * @var string - */ - public $iconExtension = '.png'; - - /** - * reference to server class - * - * @var Sabre_DAV_Server - */ - protected $server; - - /** - * enablePost turns on the 'actions' panel, which allows people to create - * folders and upload files straight from a browser. - * - * @var bool - */ - protected $enablePost = true; - - /** - * By default the browser plugin will generate a favicon and other images. - * To turn this off, set this property to false. - * - * @var bool - */ - protected $enableAssets = true; - - /** - * Creates the object. - * - * By default it will allow file creation and uploads. - * Specify the first argument as false to disable this - * - * @param bool $enablePost - * @param bool $enableAssets - */ - public function __construct($enablePost=true, $enableAssets = true) { - - $this->enablePost = $enablePost; - $this->enableAssets = $enableAssets; - - } - - /** - * Initializes the plugin and subscribes to events - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - $this->server = $server; - $this->server->subscribeEvent('beforeMethod',array($this,'httpGetInterceptor')); - $this->server->subscribeEvent('onHTMLActionsPanel', array($this, 'htmlActionsPanel'),200); - if ($this->enablePost) $this->server->subscribeEvent('unknownMethod',array($this,'httpPOSTHandler')); - } - - /** - * This method intercepts GET requests to collections and returns the html - * - * @param string $method - * @param string $uri - * @return bool - */ - public function httpGetInterceptor($method, $uri) { - - if ($method !== 'GET') return true; - - // We're not using straight-up $_GET, because we want everything to be - // unit testable. - $getVars = array(); - parse_str($this->server->httpRequest->getQueryString(), $getVars); - - if (isset($getVars['sabreAction']) && $getVars['sabreAction'] === 'asset' && isset($getVars['assetName'])) { - $this->serveAsset($getVars['assetName']); - return false; - } - - try { - $node = $this->server->tree->getNodeForPath($uri); - } catch (Sabre_DAV_Exception_NotFound $e) { - // We're simply stopping when the file isn't found to not interfere - // with other plugins. - return; - } - if ($node instanceof Sabre_DAV_IFile) - return; - - $this->server->httpResponse->sendStatus(200); - $this->server->httpResponse->setHeader('Content-Type','text/html; charset=utf-8'); - - $this->server->httpResponse->sendBody( - $this->generateDirectoryIndex($uri) - ); - - return false; - - } - - /** - * Handles POST requests for tree operations. - * - * @param string $method - * @param string $uri - * @return bool - */ - public function httpPOSTHandler($method, $uri) { - - if ($method!='POST') return; - $contentType = $this->server->httpRequest->getHeader('Content-Type'); - list($contentType) = explode(';', $contentType); - if ($contentType !== 'application/x-www-form-urlencoded' && - $contentType !== 'multipart/form-data') { - return; - } - $postVars = $this->server->httpRequest->getPostVars(); - - if (!isset($postVars['sabreAction'])) - return; - - if ($this->server->broadcastEvent('onBrowserPostAction', array($uri, $postVars['sabreAction'], $postVars))) { - - switch($postVars['sabreAction']) { - - case 'mkcol' : - if (isset($postVars['name']) && trim($postVars['name'])) { - // Using basename() because we won't allow slashes - list(, $folderName) = Sabre_DAV_URLUtil::splitPath(trim($postVars['name'])); - $this->server->createDirectory($uri . '/' . $folderName); - } - break; - case 'put' : - if ($_FILES) $file = current($_FILES); - else break; - - list(, $newName) = Sabre_DAV_URLUtil::splitPath(trim($file['name'])); - if (isset($postVars['name']) && trim($postVars['name'])) - $newName = trim($postVars['name']); - - // Making sure we only have a 'basename' component - list(, $newName) = Sabre_DAV_URLUtil::splitPath($newName); - - if (is_uploaded_file($file['tmp_name'])) { - $this->server->createFile($uri . '/' . $newName, fopen($file['tmp_name'],'r')); - } - break; - - } - - } - $this->server->httpResponse->setHeader('Location',$this->server->httpRequest->getUri()); - $this->server->httpResponse->sendStatus(302); - return false; - - } - - /** - * Escapes a string for html. - * - * @param string $value - * @return string - */ - public function escapeHTML($value) { - - return htmlspecialchars($value,ENT_QUOTES,'UTF-8'); - - } - - /** - * Generates the html directory index for a given url - * - * @param string $path - * @return string - */ - public function generateDirectoryIndex($path) { - - $version = ''; - if (Sabre_DAV_Server::$exposeVersion) { - $version = Sabre_DAV_Version::VERSION ."-". Sabre_DAV_Version::STABILITY; - } - - $html = " - - Index for " . $this->escapeHTML($path) . "/ - SabreDAV " . $version . " - - "; - - if ($this->enableAssets) { - $html.=''; - } - - $html .= " - -

Index for " . $this->escapeHTML($path) . "/

- - - "; - - $files = $this->server->getPropertiesForPath($path,array( - '{DAV:}displayname', - '{DAV:}resourcetype', - '{DAV:}getcontenttype', - '{DAV:}getcontentlength', - '{DAV:}getlastmodified', - ),1); - - $parent = $this->server->tree->getNodeForPath($path); - - - if ($path) { - - list($parentUri) = Sabre_DAV_URLUtil::splitPath($path); - $fullPath = Sabre_DAV_URLUtil::encodePath($this->server->getBaseUri() . $parentUri); - - $icon = $this->enableAssets?'Parent':''; - $html.= " - - - - - - "; - - } - - foreach($files as $file) { - - // This is the current directory, we can skip it - if (rtrim($file['href'],'/')==$path) continue; - - list(, $name) = Sabre_DAV_URLUtil::splitPath($file['href']); - - $type = null; - - - if (isset($file[200]['{DAV:}resourcetype'])) { - $type = $file[200]['{DAV:}resourcetype']->getValue(); - - // resourcetype can have multiple values - if (!is_array($type)) $type = array($type); - - foreach($type as $k=>$v) { - - // Some name mapping is preferred - switch($v) { - case '{DAV:}collection' : - $type[$k] = 'Collection'; - break; - case '{DAV:}principal' : - $type[$k] = 'Principal'; - break; - case '{urn:ietf:params:xml:ns:carddav}addressbook' : - $type[$k] = 'Addressbook'; - break; - case '{urn:ietf:params:xml:ns:caldav}calendar' : - $type[$k] = 'Calendar'; - break; - case '{urn:ietf:params:xml:ns:caldav}schedule-inbox' : - $type[$k] = 'Schedule Inbox'; - break; - case '{urn:ietf:params:xml:ns:caldav}schedule-outbox' : - $type[$k] = 'Schedule Outbox'; - break; - case '{http://calendarserver.org/ns/}calendar-proxy-read' : - $type[$k] = 'Proxy-Read'; - break; - case '{http://calendarserver.org/ns/}calendar-proxy-write' : - $type[$k] = 'Proxy-Write'; - break; - } - - } - $type = implode(', ', $type); - } - - // If no resourcetype was found, we attempt to use - // the contenttype property - if (!$type && isset($file[200]['{DAV:}getcontenttype'])) { - $type = $file[200]['{DAV:}getcontenttype']; - } - if (!$type) $type = 'Unknown'; - - $size = isset($file[200]['{DAV:}getcontentlength'])?(int)$file[200]['{DAV:}getcontentlength']:''; - $lastmodified = isset($file[200]['{DAV:}getlastmodified'])?$file[200]['{DAV:}getlastmodified']->getTime()->format(DateTime::ATOM):''; - - $fullPath = Sabre_DAV_URLUtil::encodePath('/' . trim($this->server->getBaseUri() . ($path?$path . '/':'') . $name,'/')); - - $displayName = isset($file[200]['{DAV:}displayname'])?$file[200]['{DAV:}displayname']:$name; - - $displayName = $this->escapeHTML($displayName); - $type = $this->escapeHTML($type); - - $icon = ''; - - if ($this->enableAssets) { - $node = $parent->getChild($name); - foreach(array_reverse($this->iconMap) as $class=>$iconName) { - - if ($node instanceof $class) { - $icon = ''; - break; - } - - - } - - } - - $html.= " - - - - - - "; - - } - - $html.= ""; - - $output = ''; - - if ($this->enablePost) { - $this->server->broadcastEvent('onHTMLActionsPanel',array($parent, &$output)); - } - - $html.=$output; - - $html.= "
NameTypeSizeLast modified

$icon..[parent]
$icon{$displayName}{$type}{$size}{$lastmodified}

-
Generated by SabreDAV " . $version . " (c)2007-2012 http://code.google.com/p/sabredav/
- - "; - - return $html; - - } - - /** - * This method is used to generate the 'actions panel' output for - * collections. - * - * This specifically generates the interfaces for creating new files, and - * creating new directories. - * - * @param Sabre_DAV_INode $node - * @param mixed $output - * @return void - */ - public function htmlActionsPanel(Sabre_DAV_INode $node, &$output) { - - if (!$node instanceof Sabre_DAV_ICollection) - return; - - // We also know fairly certain that if an object is a non-extended - // SimpleCollection, we won't need to show the panel either. - if (get_class($node)==='Sabre_DAV_SimpleCollection') - return; - - $output.= '
-

Create new folder

- - Name:
- -
-
-

Upload file

- - Name (optional):
- File:
- -
- '; - - } - - /** - * This method takes a path/name of an asset and turns it into url - * suiteable for http access. - * - * @param string $assetName - * @return string - */ - protected function getAssetUrl($assetName) { - - return $this->server->getBaseUri() . '?sabreAction=asset&assetName=' . urlencode($assetName); - - } - - /** - * This method returns a local pathname to an asset. - * - * @param string $assetName - * @return string - */ - protected function getLocalAssetPath($assetName) { - - // Making sure people aren't trying to escape from the base path. - $assetSplit = explode('/', $assetName); - if (in_array('..',$assetSplit)) { - throw new Sabre_DAV_Exception('Incorrect asset path'); - } - $path = __DIR__ . '/assets/' . $assetName; - return $path; - - } - - /** - * This method reads an asset from disk and generates a full http response. - * - * @param string $assetName - * @return void - */ - protected function serveAsset($assetName) { - - $assetPath = $this->getLocalAssetPath($assetName); - if (!file_exists($assetPath)) { - throw new Sabre_DAV_Exception_NotFound('Could not find an asset with this name'); - } - // Rudimentary mime type detection - switch(strtolower(substr($assetPath,strpos($assetPath,'.')+1))) { - - case 'ico' : - $mime = 'image/vnd.microsoft.icon'; - break; - - case 'png' : - $mime = 'image/png'; - break; - - default: - $mime = 'application/octet-stream'; - break; - - } - - $this->server->httpResponse->setHeader('Content-Type', $mime); - $this->server->httpResponse->setHeader('Content-Length', filesize($assetPath)); - $this->server->httpResponse->setHeader('Cache-Control', 'public, max-age=1209600'); - $this->server->httpResponse->sendStatus(200); - $this->server->httpResponse->sendBody(fopen($assetPath,'r')); - - } - -} diff --git a/3rdparty/Sabre/DAV/Browser/assets/favicon.ico b/3rdparty/Sabre/DAV/Browser/assets/favicon.ico deleted file mode 100755 index 2b2c10a22cc7a57c4dc5d7156f184448f2bee92b..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/favicon.ico and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Browser/assets/icons/addressbook.png b/3rdparty/Sabre/DAV/Browser/assets/icons/addressbook.png deleted file mode 100755 index c9acc84172dad59708b6b298b310b8d29eeeb671..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/icons/addressbook.png and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Browser/assets/icons/calendar.png b/3rdparty/Sabre/DAV/Browser/assets/icons/calendar.png deleted file mode 100755 index 3ecd6a800a01b77ec8b53fd2ac2c1ad9be035fc0..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/icons/calendar.png and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Browser/assets/icons/card.png b/3rdparty/Sabre/DAV/Browser/assets/icons/card.png deleted file mode 100755 index 2ce954866d853edb737a7e281de221f7846846f6..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/icons/card.png and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Browser/assets/icons/collection.png b/3rdparty/Sabre/DAV/Browser/assets/icons/collection.png deleted file mode 100755 index 156fa64fd50f15d9e838326d42d68feba2c23c3b..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/icons/collection.png and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Browser/assets/icons/file.png b/3rdparty/Sabre/DAV/Browser/assets/icons/file.png deleted file mode 100755 index 3b98551cec3a863ab120a52cf21debad6cab6748..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/icons/file.png and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Browser/assets/icons/parent.png b/3rdparty/Sabre/DAV/Browser/assets/icons/parent.png deleted file mode 100755 index 156fa64fd50f15d9e838326d42d68feba2c23c3b..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/icons/parent.png and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Browser/assets/icons/principal.png b/3rdparty/Sabre/DAV/Browser/assets/icons/principal.png deleted file mode 100755 index f8988f828e61bb1894c3ea5b848f95aac84beaa3..0000000000000000000000000000000000000000 Binary files a/3rdparty/Sabre/DAV/Browser/assets/icons/principal.png and /dev/null differ diff --git a/3rdparty/Sabre/DAV/Client.php b/3rdparty/Sabre/DAV/Client.php deleted file mode 100755 index 9a428765e904bc8e5e92b05d7f4299890e7f150d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Client.php +++ /dev/null @@ -1,492 +0,0 @@ -$validSetting = $settings[$validSetting]; - } - } - - if (isset($settings['authType'])) { - $this->authType = $settings['authType']; - } else { - $this->authType = self::AUTH_BASIC | self::AUTH_DIGEST; - } - - $this->propertyMap['{DAV:}resourcetype'] = 'Sabre_DAV_Property_ResourceType'; - - } - - /** - * Does a PROPFIND request - * - * The list of requested properties must be specified as an array, in clark - * notation. - * - * The returned array will contain a list of filenames as keys, and - * properties as values. - * - * The properties array will contain the list of properties. Only properties - * that are actually returned from the server (without error) will be - * returned, anything else is discarded. - * - * Depth should be either 0 or 1. A depth of 1 will cause a request to be - * made to the server to also return all child resources. - * - * @param string $url - * @param array $properties - * @param int $depth - * @return array - */ - public function propFind($url, array $properties, $depth = 0) { - - $body = '' . "\n"; - $body.= '' . "\n"; - $body.= ' ' . "\n"; - - foreach($properties as $property) { - - list( - $namespace, - $elementName - ) = Sabre_DAV_XMLUtil::parseClarkNotation($property); - - if ($namespace === 'DAV:') { - $body.=' ' . "\n"; - } else { - $body.=" \n"; - } - - } - - $body.= ' ' . "\n"; - $body.= ''; - - $response = $this->request('PROPFIND', $url, $body, array( - 'Depth' => $depth, - 'Content-Type' => 'application/xml' - )); - - $result = $this->parseMultiStatus($response['body']); - - // If depth was 0, we only return the top item - if ($depth===0) { - reset($result); - $result = current($result); - return $result[200]; - } - - $newResult = array(); - foreach($result as $href => $statusList) { - - $newResult[$href] = $statusList[200]; - - } - - return $newResult; - - } - - /** - * Updates a list of properties on the server - * - * The list of properties must have clark-notation properties for the keys, - * and the actual (string) value for the value. If the value is null, an - * attempt is made to delete the property. - * - * @todo Must be building the request using the DOM, and does not yet - * support complex properties. - * @param string $url - * @param array $properties - * @return void - */ - public function propPatch($url, array $properties) { - - $body = '' . "\n"; - $body.= '' . "\n"; - - foreach($properties as $propName => $propValue) { - - list( - $namespace, - $elementName - ) = Sabre_DAV_XMLUtil::parseClarkNotation($propName); - - if ($propValue === null) { - - $body.="\n"; - - if ($namespace === 'DAV:') { - $body.=' ' . "\n"; - } else { - $body.=" \n"; - } - - $body.="\n"; - - } else { - - $body.="\n"; - if ($namespace === 'DAV:') { - $body.=' '; - } else { - $body.=" "; - } - // Shitty.. i know - $body.=htmlspecialchars($propValue, ENT_NOQUOTES, 'UTF-8'); - if ($namespace === 'DAV:') { - $body.='' . "\n"; - } else { - $body.="\n"; - } - $body.="\n"; - - } - - } - - $body.= ''; - - $this->request('PROPPATCH', $url, $body, array( - 'Content-Type' => 'application/xml' - )); - - } - - /** - * Performs an HTTP options request - * - * This method returns all the features from the 'DAV:' header as an array. - * If there was no DAV header, or no contents this method will return an - * empty array. - * - * @return array - */ - public function options() { - - $result = $this->request('OPTIONS'); - if (!isset($result['headers']['dav'])) { - return array(); - } - - $features = explode(',', $result['headers']['dav']); - foreach($features as &$v) { - $v = trim($v); - } - return $features; - - } - - /** - * Performs an actual HTTP request, and returns the result. - * - * If the specified url is relative, it will be expanded based on the base - * url. - * - * The returned array contains 3 keys: - * * body - the response body - * * httpCode - a HTTP code (200, 404, etc) - * * headers - a list of response http headers. The header names have - * been lowercased. - * - * @param string $method - * @param string $url - * @param string $body - * @param array $headers - * @return array - */ - public function request($method, $url = '', $body = null, $headers = array()) { - - $url = $this->getAbsoluteUrl($url); - - $curlSettings = array( - CURLOPT_RETURNTRANSFER => true, - // Return headers as part of the response - CURLOPT_HEADER => true, - CURLOPT_POSTFIELDS => $body, - // Automatically follow redirects - CURLOPT_FOLLOWLOCATION => true, - CURLOPT_MAXREDIRS => 5, - ); - - switch ($method) { - case 'HEAD' : - - // do not read body with HEAD requests (this is neccessary because cURL does not ignore the body with HEAD - // requests when the Content-Length header is given - which in turn is perfectly valid according to HTTP - // specs...) cURL does unfortunately return an error in this case ("transfer closed transfer closed with - // ... bytes remaining to read") this can be circumvented by explicitly telling cURL to ignore the - // response body - $curlSettings[CURLOPT_NOBODY] = true; - $curlSettings[CURLOPT_CUSTOMREQUEST] = 'HEAD'; - break; - - default: - $curlSettings[CURLOPT_CUSTOMREQUEST] = $method; - break; - - } - - // Adding HTTP headers - $nHeaders = array(); - foreach($headers as $key=>$value) { - - $nHeaders[] = $key . ': ' . $value; - - } - $curlSettings[CURLOPT_HTTPHEADER] = $nHeaders; - - if ($this->proxy) { - $curlSettings[CURLOPT_PROXY] = $this->proxy; - } - - if ($this->userName && $this->authType) { - $curlType = 0; - if ($this->authType & self::AUTH_BASIC) { - $curlType |= CURLAUTH_BASIC; - } - if ($this->authType & self::AUTH_DIGEST) { - $curlType |= CURLAUTH_DIGEST; - } - $curlSettings[CURLOPT_HTTPAUTH] = $curlType; - $curlSettings[CURLOPT_USERPWD] = $this->userName . ':' . $this->password; - } - - list( - $response, - $curlInfo, - $curlErrNo, - $curlError - ) = $this->curlRequest($url, $curlSettings); - - $headerBlob = substr($response, 0, $curlInfo['header_size']); - $response = substr($response, $curlInfo['header_size']); - - // In the case of 100 Continue, or redirects we'll have multiple lists - // of headers for each separate HTTP response. We can easily split this - // because they are separated by \r\n\r\n - $headerBlob = explode("\r\n\r\n", trim($headerBlob, "\r\n")); - - // We only care about the last set of headers - $headerBlob = $headerBlob[count($headerBlob)-1]; - - // Splitting headers - $headerBlob = explode("\r\n", $headerBlob); - - $headers = array(); - foreach($headerBlob as $header) { - $parts = explode(':', $header, 2); - if (count($parts)==2) { - $headers[strtolower(trim($parts[0]))] = trim($parts[1]); - } - } - - $response = array( - 'body' => $response, - 'statusCode' => $curlInfo['http_code'], - 'headers' => $headers - ); - - if ($curlErrNo) { - throw new Sabre_DAV_Exception('[CURL] Error while making request: ' . $curlError . ' (error code: ' . $curlErrNo . ')'); - } - - if ($response['statusCode']>=400) { - switch ($response['statusCode']) { - case 404: - throw new Sabre_DAV_Exception_NotFound('Resource ' . $url . ' not found.'); - break; - - default: - throw new Sabre_DAV_Exception('HTTP error response. (errorcode ' . $response['statusCode'] . ')'); - } - } - - return $response; - - } - - /** - * Wrapper for all curl functions. - * - * The only reason this was split out in a separate method, is so it - * becomes easier to unittest. - * - * @param string $url - * @param array $settings - * @return array - */ - protected function curlRequest($url, $settings) { - - $curl = curl_init($url); - curl_setopt_array($curl, $settings); - - return array( - curl_exec($curl), - curl_getinfo($curl), - curl_errno($curl), - curl_error($curl) - ); - - } - - /** - * Returns the full url based on the given url (which may be relative). All - * urls are expanded based on the base url as given by the server. - * - * @param string $url - * @return string - */ - protected function getAbsoluteUrl($url) { - - // If the url starts with http:// or https://, the url is already absolute. - if (preg_match('/^http(s?):\/\//', $url)) { - return $url; - } - - // If the url starts with a slash, we must calculate the url based off - // the root of the base url. - if (strpos($url,'/') === 0) { - $parts = parse_url($this->baseUri); - return $parts['scheme'] . '://' . $parts['host'] . (isset($parts['port'])?':' . $parts['port']:'') . $url; - } - - // Otherwise... - return $this->baseUri . $url; - - } - - /** - * Parses a WebDAV multistatus response body - * - * This method returns an array with the following structure - * - * array( - * 'url/to/resource' => array( - * '200' => array( - * '{DAV:}property1' => 'value1', - * '{DAV:}property2' => 'value2', - * ), - * '404' => array( - * '{DAV:}property1' => null, - * '{DAV:}property2' => null, - * ), - * ) - * 'url/to/resource2' => array( - * .. etc .. - * ) - * ) - * - * - * @param string $body xml body - * @return array - */ - public function parseMultiStatus($body) { - - $body = Sabre_DAV_XMLUtil::convertDAVNamespace($body); - - $responseXML = simplexml_load_string($body, null, LIBXML_NOBLANKS | LIBXML_NOCDATA); - if ($responseXML===false) { - throw new InvalidArgumentException('The passed data is not valid XML'); - } - - $responseXML->registerXPathNamespace('d', 'urn:DAV'); - - $propResult = array(); - - foreach($responseXML->xpath('d:response') as $response) { - $response->registerXPathNamespace('d', 'urn:DAV'); - $href = $response->xpath('d:href'); - $href = (string)$href[0]; - - $properties = array(); - - foreach($response->xpath('d:propstat') as $propStat) { - - $propStat->registerXPathNamespace('d', 'urn:DAV'); - $status = $propStat->xpath('d:status'); - list($httpVersion, $statusCode, $message) = explode(' ', (string)$status[0],3); - - $properties[$statusCode] = Sabre_DAV_XMLUtil::parseProperties(dom_import_simplexml($propStat), $this->propertyMap); - - } - - $propResult[$href] = $properties; - - } - - return $propResult; - - } - -} diff --git a/3rdparty/Sabre/DAV/Collection.php b/3rdparty/Sabre/DAV/Collection.php deleted file mode 100755 index 776c22531b2485bdcabb5c47a9ae2efec75bdd1a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Collection.php +++ /dev/null @@ -1,106 +0,0 @@ -getChildren() as $child) { - - if ($child->getName()==$name) return $child; - - } - throw new Sabre_DAV_Exception_NotFound('File not found: ' . $name); - - } - - /** - * Checks is a child-node exists. - * - * It is generally a good idea to try and override this. Usually it can be optimized. - * - * @param string $name - * @return bool - */ - public function childExists($name) { - - try { - - $this->getChild($name); - return true; - - } catch(Sabre_DAV_Exception_NotFound $e) { - - return false; - - } - - } - - /** - * Creates a new file in the directory - * - * Data will either be supplied as a stream resource, or in certain cases - * as a string. Keep in mind that you may have to support either. - * - * After succesful creation of the file, you may choose to return the ETag - * of the new file here. - * - * The returned ETag must be surrounded by double-quotes (The quotes should - * be part of the actual string). - * - * If you cannot accurately determine the ETag, you should not return it. - * If you don't store the file exactly as-is (you're transforming it - * somehow) you should also not return an ETag. - * - * This means that if a subsequent GET to this new file does not exactly - * return the same contents of what was submitted here, you are strongly - * recommended to omit the ETag. - * - * @param string $name Name of the file - * @param resource|string $data Initial payload - * @return null|string - */ - public function createFile($name, $data = null) { - - throw new Sabre_DAV_Exception_Forbidden('Permission denied to create file (filename ' . $name . ')'); - - } - - /** - * Creates a new subdirectory - * - * @param string $name - * @throws Sabre_DAV_Exception_Forbidden - * @return void - */ - public function createDirectory($name) { - - throw new Sabre_DAV_Exception_Forbidden('Permission denied to create directory'); - - } - - -} - diff --git a/3rdparty/Sabre/DAV/Directory.php b/3rdparty/Sabre/DAV/Directory.php deleted file mode 100755 index 6db8febc02e900ceba08c74370bbffa7968fd46b..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Directory.php +++ /dev/null @@ -1,17 +0,0 @@ -lock) { - $error = $errorNode->ownerDocument->createElementNS('DAV:','d:no-conflicting-lock'); - $errorNode->appendChild($error); - if (!is_object($this->lock)) var_dump($this->lock); - $error->appendChild($errorNode->ownerDocument->createElementNS('DAV:','d:href',$this->lock->uri)); - } - - } - -} diff --git a/3rdparty/Sabre/DAV/Exception/FileNotFound.php b/3rdparty/Sabre/DAV/Exception/FileNotFound.php deleted file mode 100755 index d76e400c93b111b64fdd15369a8fecdf8fec197a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Exception/FileNotFound.php +++ /dev/null @@ -1,19 +0,0 @@ -ownerDocument->createElementNS('DAV:','d:valid-resourcetype'); - $errorNode->appendChild($error); - - } - -} diff --git a/3rdparty/Sabre/DAV/Exception/LockTokenMatchesRequestUri.php b/3rdparty/Sabre/DAV/Exception/LockTokenMatchesRequestUri.php deleted file mode 100755 index 80ab7aff65ae80dcdc3afb480ae57e60bc1923b6..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Exception/LockTokenMatchesRequestUri.php +++ /dev/null @@ -1,39 +0,0 @@ -message = 'The locktoken supplied does not match any locks on this entity'; - - } - - /** - * This method allows the exception to include additional information into the WebDAV error response - * - * @param Sabre_DAV_Server $server - * @param DOMElement $errorNode - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $errorNode) { - - $error = $errorNode->ownerDocument->createElementNS('DAV:','d:lock-token-matches-request-uri'); - $errorNode->appendChild($error); - - } - -} diff --git a/3rdparty/Sabre/DAV/Exception/Locked.php b/3rdparty/Sabre/DAV/Exception/Locked.php deleted file mode 100755 index 976365ac1f84d6c263d71019edbfa5bfc05e23f7..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Exception/Locked.php +++ /dev/null @@ -1,67 +0,0 @@ -lock = $lock; - - } - - /** - * Returns the HTTP statuscode for this exception - * - * @return int - */ - public function getHTTPCode() { - - return 423; - - } - - /** - * This method allows the exception to include additional information into the WebDAV error response - * - * @param Sabre_DAV_Server $server - * @param DOMElement $errorNode - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $errorNode) { - - if ($this->lock) { - $error = $errorNode->ownerDocument->createElementNS('DAV:','d:lock-token-submitted'); - $errorNode->appendChild($error); - if (!is_object($this->lock)) var_dump($this->lock); - $error->appendChild($errorNode->ownerDocument->createElementNS('DAV:','d:href',$this->lock->uri)); - } - - } - -} - diff --git a/3rdparty/Sabre/DAV/Exception/MethodNotAllowed.php b/3rdparty/Sabre/DAV/Exception/MethodNotAllowed.php deleted file mode 100755 index 318757515054be2edb704216e563b8bb98929857..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Exception/MethodNotAllowed.php +++ /dev/null @@ -1,45 +0,0 @@ -getAllowedMethods($server->getRequestUri()); - - return array( - 'Allow' => strtoupper(implode(', ',$methods)), - ); - - } - -} diff --git a/3rdparty/Sabre/DAV/Exception/NotAuthenticated.php b/3rdparty/Sabre/DAV/Exception/NotAuthenticated.php deleted file mode 100755 index 87ca624429f4240c1ef324a51d210b591f427f18..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Exception/NotAuthenticated.php +++ /dev/null @@ -1,28 +0,0 @@ -header = $header; - - } - - /** - * Returns the HTTP statuscode for this exception - * - * @return int - */ - public function getHTTPCode() { - - return 412; - - } - - /** - * This method allows the exception to include additional information into the WebDAV error response - * - * @param Sabre_DAV_Server $server - * @param DOMElement $errorNode - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $errorNode) { - - if ($this->header) { - $prop = $errorNode->ownerDocument->createElement('s:header'); - $prop->nodeValue = $this->header; - $errorNode->appendChild($prop); - } - - } - -} diff --git a/3rdparty/Sabre/DAV/Exception/ReportNotImplemented.php b/3rdparty/Sabre/DAV/Exception/ReportNotImplemented.php deleted file mode 100755 index e86800f30381b9baf877e39d74c0c3a75b561598..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Exception/ReportNotImplemented.php +++ /dev/null @@ -1,30 +0,0 @@ -ownerDocument->createElementNS('DAV:','d:supported-report'); - $errorNode->appendChild($error); - - } - -} diff --git a/3rdparty/Sabre/DAV/Exception/RequestedRangeNotSatisfiable.php b/3rdparty/Sabre/DAV/Exception/RequestedRangeNotSatisfiable.php deleted file mode 100755 index 29ee3654a7e776b44316769244a308154d7651de..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Exception/RequestedRangeNotSatisfiable.php +++ /dev/null @@ -1,29 +0,0 @@ -path . '/' . $name; - file_put_contents($newPath,$data); - - } - - /** - * Creates a new subdirectory - * - * @param string $name - * @return void - */ - public function createDirectory($name) { - - $newPath = $this->path . '/' . $name; - mkdir($newPath); - - } - - /** - * Returns a specific child node, referenced by its name - * - * @param string $name - * @throws Sabre_DAV_Exception_NotFound - * @return Sabre_DAV_INode - */ - public function getChild($name) { - - $path = $this->path . '/' . $name; - - if (!file_exists($path)) throw new Sabre_DAV_Exception_NotFound('File with name ' . $path . ' could not be located'); - - if (is_dir($path)) { - - return new Sabre_DAV_FS_Directory($path); - - } else { - - return new Sabre_DAV_FS_File($path); - - } - - } - - /** - * Returns an array with all the child nodes - * - * @return Sabre_DAV_INode[] - */ - public function getChildren() { - - $nodes = array(); - foreach(scandir($this->path) as $node) if($node!='.' && $node!='..') $nodes[] = $this->getChild($node); - return $nodes; - - } - - /** - * Checks if a child exists. - * - * @param string $name - * @return bool - */ - public function childExists($name) { - - $path = $this->path . '/' . $name; - return file_exists($path); - - } - - /** - * Deletes all files in this directory, and then itself - * - * @return void - */ - public function delete() { - - foreach($this->getChildren() as $child) $child->delete(); - rmdir($this->path); - - } - - /** - * Returns available diskspace information - * - * @return array - */ - public function getQuotaInfo() { - - return array( - disk_total_space($this->path)-disk_free_space($this->path), - disk_free_space($this->path) - ); - - } - -} - diff --git a/3rdparty/Sabre/DAV/FS/File.php b/3rdparty/Sabre/DAV/FS/File.php deleted file mode 100755 index 6a8039fe303afbbf98364db93df3cf0c8bca987f..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/FS/File.php +++ /dev/null @@ -1,89 +0,0 @@ -path,$data); - - } - - /** - * Returns the data - * - * @return string - */ - public function get() { - - return fopen($this->path,'r'); - - } - - /** - * Delete the current file - * - * @return void - */ - public function delete() { - - unlink($this->path); - - } - - /** - * Returns the size of the node, in bytes - * - * @return int - */ - public function getSize() { - - return filesize($this->path); - - } - - /** - * Returns the ETag for a file - * - * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. - * The ETag is an arbitrary string, but MUST be surrounded by double-quotes. - * - * Return null if the ETag can not effectively be determined - * - * @return mixed - */ - public function getETag() { - - return null; - - } - - /** - * Returns the mime-type for a file - * - * If null is returned, we'll assume application/octet-stream - * - * @return mixed - */ - public function getContentType() { - - return null; - - } - -} - diff --git a/3rdparty/Sabre/DAV/FS/Node.php b/3rdparty/Sabre/DAV/FS/Node.php deleted file mode 100755 index 1283e9d0fdcb70c2bfc91eaaeb1bc024665ff086..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/FS/Node.php +++ /dev/null @@ -1,80 +0,0 @@ -path = $path; - - } - - - - /** - * Returns the name of the node - * - * @return string - */ - public function getName() { - - list(, $name) = Sabre_DAV_URLUtil::splitPath($this->path); - return $name; - - } - - /** - * Renames the node - * - * @param string $name The new name - * @return void - */ - public function setName($name) { - - list($parentPath, ) = Sabre_DAV_URLUtil::splitPath($this->path); - list(, $newName) = Sabre_DAV_URLUtil::splitPath($name); - - $newPath = $parentPath . '/' . $newName; - rename($this->path,$newPath); - - $this->path = $newPath; - - } - - - - /** - * Returns the last modification time, as a unix timestamp - * - * @return int - */ - public function getLastModified() { - - return filemtime($this->path); - - } - -} - diff --git a/3rdparty/Sabre/DAV/FSExt/Directory.php b/3rdparty/Sabre/DAV/FSExt/Directory.php deleted file mode 100755 index 540057183b30380c24e8395ab6def0a792a06ff6..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/FSExt/Directory.php +++ /dev/null @@ -1,154 +0,0 @@ -path . '/' . $name; - file_put_contents($newPath,$data); - - return '"' . md5_file($newPath) . '"'; - - } - - /** - * Creates a new subdirectory - * - * @param string $name - * @return void - */ - public function createDirectory($name) { - - // We're not allowing dots - if ($name=='.' || $name=='..') throw new Sabre_DAV_Exception_Forbidden('Permission denied to . and ..'); - $newPath = $this->path . '/' . $name; - mkdir($newPath); - - } - - /** - * Returns a specific child node, referenced by its name - * - * @param string $name - * @throws Sabre_DAV_Exception_NotFound - * @return Sabre_DAV_INode - */ - public function getChild($name) { - - $path = $this->path . '/' . $name; - - if (!file_exists($path)) throw new Sabre_DAV_Exception_NotFound('File could not be located'); - if ($name=='.' || $name=='..') throw new Sabre_DAV_Exception_Forbidden('Permission denied to . and ..'); - - if (is_dir($path)) { - - return new Sabre_DAV_FSExt_Directory($path); - - } else { - - return new Sabre_DAV_FSExt_File($path); - - } - - } - - /** - * Checks if a child exists. - * - * @param string $name - * @return bool - */ - public function childExists($name) { - - if ($name=='.' || $name=='..') - throw new Sabre_DAV_Exception_Forbidden('Permission denied to . and ..'); - - $path = $this->path . '/' . $name; - return file_exists($path); - - } - - /** - * Returns an array with all the child nodes - * - * @return Sabre_DAV_INode[] - */ - public function getChildren() { - - $nodes = array(); - foreach(scandir($this->path) as $node) if($node!='.' && $node!='..' && $node!='.sabredav') $nodes[] = $this->getChild($node); - return $nodes; - - } - - /** - * Deletes all files in this directory, and then itself - * - * @return bool - */ - public function delete() { - - // Deleting all children - foreach($this->getChildren() as $child) $child->delete(); - - // Removing resource info, if its still around - if (file_exists($this->path . '/.sabredav')) unlink($this->path . '/.sabredav'); - - // Removing the directory itself - rmdir($this->path); - - return parent::delete(); - - } - - /** - * Returns available diskspace information - * - * @return array - */ - public function getQuotaInfo() { - - return array( - disk_total_space($this->path)-disk_free_space($this->path), - disk_free_space($this->path) - ); - - } - -} - diff --git a/3rdparty/Sabre/DAV/FSExt/File.php b/3rdparty/Sabre/DAV/FSExt/File.php deleted file mode 100755 index b93ce5aee2108bfbdb5bebf3a3a6619b7eda458b..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/FSExt/File.php +++ /dev/null @@ -1,93 +0,0 @@ -path,$data); - return '"' . md5_file($this->path) . '"'; - - } - - /** - * Returns the data - * - * @return string - */ - public function get() { - - return fopen($this->path,'r'); - - } - - /** - * Delete the current file - * - * @return bool - */ - public function delete() { - - unlink($this->path); - return parent::delete(); - - } - - /** - * Returns the ETag for a file - * - * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. - * The ETag is an arbitrary string, but MUST be surrounded by double-quotes. - * - * Return null if the ETag can not effectively be determined - * - * @return string|null - */ - public function getETag() { - - return '"' . md5_file($this->path). '"'; - - } - - /** - * Returns the mime-type for a file - * - * If null is returned, we'll assume application/octet-stream - * - * @return string|null - */ - public function getContentType() { - - return null; - - } - - /** - * Returns the size of the file, in bytes - * - * @return int - */ - public function getSize() { - - return filesize($this->path); - - } - -} - diff --git a/3rdparty/Sabre/DAV/FSExt/Node.php b/3rdparty/Sabre/DAV/FSExt/Node.php deleted file mode 100755 index 68ca06beb7e0930c40a20f75907baec4b1b58944..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/FSExt/Node.php +++ /dev/null @@ -1,212 +0,0 @@ -getResourceData(); - - foreach($properties as $propertyName=>$propertyValue) { - - // If it was null, we need to delete the property - if (is_null($propertyValue)) { - if (isset($resourceData['properties'][$propertyName])) { - unset($resourceData['properties'][$propertyName]); - } - } else { - $resourceData['properties'][$propertyName] = $propertyValue; - } - - } - - $this->putResourceData($resourceData); - return true; - } - - /** - * Returns a list of properties for this nodes.; - * - * The properties list is a list of propertynames the client requested, encoded as xmlnamespace#tagName, for example: http://www.example.org/namespace#author - * If the array is empty, all properties should be returned - * - * @param array $properties - * @return array - */ - function getProperties($properties) { - - $resourceData = $this->getResourceData(); - - // if the array was empty, we need to return everything - if (!$properties) return $resourceData['properties']; - - $props = array(); - foreach($properties as $property) { - if (isset($resourceData['properties'][$property])) $props[$property] = $resourceData['properties'][$property]; - } - - return $props; - - } - - /** - * Returns the path to the resource file - * - * @return string - */ - protected function getResourceInfoPath() { - - list($parentDir) = Sabre_DAV_URLUtil::splitPath($this->path); - return $parentDir . '/.sabredav'; - - } - - /** - * Returns all the stored resource information - * - * @return array - */ - protected function getResourceData() { - - $path = $this->getResourceInfoPath(); - if (!file_exists($path)) return array('properties' => array()); - - // opening up the file, and creating a shared lock - $handle = fopen($path,'r'); - flock($handle,LOCK_SH); - $data = ''; - - // Reading data until the eof - while(!feof($handle)) { - $data.=fread($handle,8192); - } - - // We're all good - fclose($handle); - - // Unserializing and checking if the resource file contains data for this file - $data = unserialize($data); - if (!isset($data[$this->getName()])) { - return array('properties' => array()); - } - - $data = $data[$this->getName()]; - if (!isset($data['properties'])) $data['properties'] = array(); - return $data; - - } - - /** - * Updates the resource information - * - * @param array $newData - * @return void - */ - protected function putResourceData(array $newData) { - - $path = $this->getResourceInfoPath(); - - // opening up the file, and creating a shared lock - $handle = fopen($path,'a+'); - flock($handle,LOCK_EX); - $data = ''; - - rewind($handle); - - // Reading data until the eof - while(!feof($handle)) { - $data.=fread($handle,8192); - } - - // Unserializing and checking if the resource file contains data for this file - $data = unserialize($data); - $data[$this->getName()] = $newData; - ftruncate($handle,0); - rewind($handle); - - fwrite($handle,serialize($data)); - fclose($handle); - - } - - /** - * Renames the node - * - * @param string $name The new name - * @return void - */ - public function setName($name) { - - list($parentPath, ) = Sabre_DAV_URLUtil::splitPath($this->path); - list(, $newName) = Sabre_DAV_URLUtil::splitPath($name); - $newPath = $parentPath . '/' . $newName; - - // We're deleting the existing resourcedata, and recreating it - // for the new path. - $resourceData = $this->getResourceData(); - $this->deleteResourceData(); - - rename($this->path,$newPath); - $this->path = $newPath; - $this->putResourceData($resourceData); - - - } - - /** - * @return bool - */ - public function deleteResourceData() { - - // When we're deleting this node, we also need to delete any resource information - $path = $this->getResourceInfoPath(); - if (!file_exists($path)) return true; - - // opening up the file, and creating a shared lock - $handle = fopen($path,'a+'); - flock($handle,LOCK_EX); - $data = ''; - - rewind($handle); - - // Reading data until the eof - while(!feof($handle)) { - $data.=fread($handle,8192); - } - - // Unserializing and checking if the resource file contains data for this file - $data = unserialize($data); - if (isset($data[$this->getName()])) unset($data[$this->getName()]); - ftruncate($handle,0); - rewind($handle); - fwrite($handle,serialize($data)); - fclose($handle); - - return true; - } - - public function delete() { - - return $this->deleteResourceData(); - - } - -} - diff --git a/3rdparty/Sabre/DAV/File.php b/3rdparty/Sabre/DAV/File.php deleted file mode 100755 index 3126bd8d364b6c5fdd27ee8fec8fea4b90a48f9c..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/File.php +++ /dev/null @@ -1,85 +0,0 @@ - array( - * '{DAV:}displayname' => null, - * ), - * 424 => array( - * '{DAV:}owner' => null, - * ) - * ) - * - * In this example it was forbidden to update {DAV:}displayname. - * (403 Forbidden), which in turn also caused {DAV:}owner to fail - * (424 Failed Dependency) because the request needs to be atomic. - * - * @param array $mutations - * @return bool|array - */ - function updateProperties($mutations); - - /** - * Returns a list of properties for this nodes. - * - * The properties list is a list of propertynames the client requested, - * encoded in clark-notation {xmlnamespace}tagname - * - * If the array is empty, it means 'all properties' were requested. - * - * @param array $properties - * @return void - */ - function getProperties($properties); - -} - diff --git a/3rdparty/Sabre/DAV/IQuota.php b/3rdparty/Sabre/DAV/IQuota.php deleted file mode 100755 index 3fe4c4eced4bd4e58b15408a3192d38c08a33850..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/IQuota.php +++ /dev/null @@ -1,27 +0,0 @@ -dataDir = $dataDir; - - } - - protected function getFileNameForUri($uri) { - - return $this->dataDir . '/sabredav_' . md5($uri) . '.locks'; - - } - - - /** - * Returns a list of Sabre_DAV_Locks_LockInfo objects - * - * This method should return all the locks for a particular uri, including - * locks that might be set on a parent uri. - * - * If returnChildLocks is set to true, this method should also look for - * any locks in the subtree of the uri for locks. - * - * @param string $uri - * @param bool $returnChildLocks - * @return array - */ - public function getLocks($uri, $returnChildLocks) { - - $lockList = array(); - $currentPath = ''; - - foreach(explode('/',$uri) as $uriPart) { - - // weird algorithm that can probably be improved, but we're traversing the path top down - if ($currentPath) $currentPath.='/'; - $currentPath.=$uriPart; - - $uriLocks = $this->getData($currentPath); - - foreach($uriLocks as $uriLock) { - - // Unless we're on the leaf of the uri-tree we should ignore locks with depth 0 - if($uri==$currentPath || $uriLock->depth!=0) { - $uriLock->uri = $currentPath; - $lockList[] = $uriLock; - } - - } - - } - - // Checking if we can remove any of these locks - foreach($lockList as $k=>$lock) { - if (time() > $lock->timeout + $lock->created) unset($lockList[$k]); - } - return $lockList; - - } - - /** - * Locks a uri - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function lock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { - - // We're making the lock timeout 30 minutes - $lockInfo->timeout = 1800; - $lockInfo->created = time(); - - $locks = $this->getLocks($uri,false); - foreach($locks as $k=>$lock) { - if ($lock->token == $lockInfo->token) unset($locks[$k]); - } - $locks[] = $lockInfo; - $this->putData($uri,$locks); - return true; - - } - - /** - * Removes a lock from a uri - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function unlock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { - - $locks = $this->getLocks($uri,false); - foreach($locks as $k=>$lock) { - - if ($lock->token == $lockInfo->token) { - - unset($locks[$k]); - $this->putData($uri,$locks); - return true; - - } - } - return false; - - } - - /** - * Returns the stored data for a uri - * - * @param string $uri - * @return array - */ - protected function getData($uri) { - - $path = $this->getFilenameForUri($uri); - if (!file_exists($path)) return array(); - - // opening up the file, and creating a shared lock - $handle = fopen($path,'r'); - flock($handle,LOCK_SH); - $data = ''; - - // Reading data until the eof - while(!feof($handle)) { - $data.=fread($handle,8192); - } - - // We're all good - fclose($handle); - - // Unserializing and checking if the resource file contains data for this file - $data = unserialize($data); - if (!$data) return array(); - return $data; - - } - - /** - * Updates the lock information - * - * @param string $uri - * @param array $newData - * @return void - */ - protected function putData($uri,array $newData) { - - $path = $this->getFileNameForUri($uri); - - // opening up the file, and creating a shared lock - $handle = fopen($path,'a+'); - flock($handle,LOCK_EX); - ftruncate($handle,0); - rewind($handle); - - fwrite($handle,serialize($newData)); - fclose($handle); - - } - -} - diff --git a/3rdparty/Sabre/DAV/Locks/Backend/File.php b/3rdparty/Sabre/DAV/Locks/Backend/File.php deleted file mode 100755 index c33f963514bef4e4ca66546479d03d9a72240e77..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Locks/Backend/File.php +++ /dev/null @@ -1,181 +0,0 @@ -locksFile = $locksFile; - - } - - /** - * Returns a list of Sabre_DAV_Locks_LockInfo objects - * - * This method should return all the locks for a particular uri, including - * locks that might be set on a parent uri. - * - * If returnChildLocks is set to true, this method should also look for - * any locks in the subtree of the uri for locks. - * - * @param string $uri - * @param bool $returnChildLocks - * @return array - */ - public function getLocks($uri, $returnChildLocks) { - - $newLocks = array(); - - $locks = $this->getData(); - - foreach($locks as $lock) { - - if ($lock->uri === $uri || - //deep locks on parents - ($lock->depth!=0 && strpos($uri, $lock->uri . '/')===0) || - - // locks on children - ($returnChildLocks && (strpos($lock->uri, $uri . '/')===0)) ) { - - $newLocks[] = $lock; - - } - - } - - // Checking if we can remove any of these locks - foreach($newLocks as $k=>$lock) { - if (time() > $lock->timeout + $lock->created) unset($newLocks[$k]); - } - return $newLocks; - - } - - /** - * Locks a uri - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function lock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) { - - // We're making the lock timeout 30 minutes - $lockInfo->timeout = 1800; - $lockInfo->created = time(); - $lockInfo->uri = $uri; - - $locks = $this->getData(); - - foreach($locks as $k=>$lock) { - if ( - ($lock->token == $lockInfo->token) || - (time() > $lock->timeout + $lock->created) - ) { - unset($locks[$k]); - } - } - $locks[] = $lockInfo; - $this->putData($locks); - return true; - - } - - /** - * Removes a lock from a uri - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function unlock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) { - - $locks = $this->getData(); - foreach($locks as $k=>$lock) { - - if ($lock->token == $lockInfo->token) { - - unset($locks[$k]); - $this->putData($locks); - return true; - - } - } - return false; - - } - - /** - * Loads the lockdata from the filesystem. - * - * @return array - */ - protected function getData() { - - if (!file_exists($this->locksFile)) return array(); - - // opening up the file, and creating a shared lock - $handle = fopen($this->locksFile,'r'); - flock($handle,LOCK_SH); - - // Reading data until the eof - $data = stream_get_contents($handle); - - // We're all good - fclose($handle); - - // Unserializing and checking if the resource file contains data for this file - $data = unserialize($data); - if (!$data) return array(); - return $data; - - } - - /** - * Saves the lockdata - * - * @param array $newData - * @return void - */ - protected function putData(array $newData) { - - // opening up the file, and creating an exclusive lock - $handle = fopen($this->locksFile,'a+'); - flock($handle,LOCK_EX); - - // We can only truncate and rewind once the lock is acquired. - ftruncate($handle,0); - rewind($handle); - - fwrite($handle,serialize($newData)); - fclose($handle); - - } - -} - diff --git a/3rdparty/Sabre/DAV/Locks/Backend/PDO.php b/3rdparty/Sabre/DAV/Locks/Backend/PDO.php deleted file mode 100755 index acce80638ecb63c508c096a8e95d7b34d124a96d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Locks/Backend/PDO.php +++ /dev/null @@ -1,165 +0,0 @@ -pdo = $pdo; - $this->tableName = $tableName; - - } - - /** - * Returns a list of Sabre_DAV_Locks_LockInfo objects - * - * This method should return all the locks for a particular uri, including - * locks that might be set on a parent uri. - * - * If returnChildLocks is set to true, this method should also look for - * any locks in the subtree of the uri for locks. - * - * @param string $uri - * @param bool $returnChildLocks - * @return array - */ - public function getLocks($uri, $returnChildLocks) { - - // NOTE: the following 10 lines or so could be easily replaced by - // pure sql. MySQL's non-standard string concatenation prevents us - // from doing this though. - $query = 'SELECT owner, token, timeout, created, scope, depth, uri FROM '.$this->tableName.' WHERE ((created + timeout) > CAST(? AS UNSIGNED INTEGER)) AND ((uri = ?)'; - $params = array(time(),$uri); - - // We need to check locks for every part in the uri. - $uriParts = explode('/',$uri); - - // We already covered the last part of the uri - array_pop($uriParts); - - $currentPath=''; - - foreach($uriParts as $part) { - - if ($currentPath) $currentPath.='/'; - $currentPath.=$part; - - $query.=' OR (depth!=0 AND uri = ?)'; - $params[] = $currentPath; - - } - - if ($returnChildLocks) { - - $query.=' OR (uri LIKE ?)'; - $params[] = $uri . '/%'; - - } - $query.=')'; - - $stmt = $this->pdo->prepare($query); - $stmt->execute($params); - $result = $stmt->fetchAll(); - - $lockList = array(); - foreach($result as $row) { - - $lockInfo = new Sabre_DAV_Locks_LockInfo(); - $lockInfo->owner = $row['owner']; - $lockInfo->token = $row['token']; - $lockInfo->timeout = $row['timeout']; - $lockInfo->created = $row['created']; - $lockInfo->scope = $row['scope']; - $lockInfo->depth = $row['depth']; - $lockInfo->uri = $row['uri']; - $lockList[] = $lockInfo; - - } - - return $lockList; - - } - - /** - * Locks a uri - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function lock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { - - // We're making the lock timeout 30 minutes - $lockInfo->timeout = 30*60; - $lockInfo->created = time(); - $lockInfo->uri = $uri; - - $locks = $this->getLocks($uri,false); - $exists = false; - foreach($locks as $lock) { - if ($lock->token == $lockInfo->token) $exists = true; - } - - if ($exists) { - $stmt = $this->pdo->prepare('UPDATE '.$this->tableName.' SET owner = ?, timeout = ?, scope = ?, depth = ?, uri = ?, created = ? WHERE token = ?'); - $stmt->execute(array($lockInfo->owner,$lockInfo->timeout,$lockInfo->scope,$lockInfo->depth,$uri,$lockInfo->created,$lockInfo->token)); - } else { - $stmt = $this->pdo->prepare('INSERT INTO '.$this->tableName.' (owner,timeout,scope,depth,uri,created,token) VALUES (?,?,?,?,?,?,?)'); - $stmt->execute(array($lockInfo->owner,$lockInfo->timeout,$lockInfo->scope,$lockInfo->depth,$uri,$lockInfo->created,$lockInfo->token)); - } - - return true; - - } - - - - /** - * Removes a lock from a uri - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function unlock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { - - $stmt = $this->pdo->prepare('DELETE FROM '.$this->tableName.' WHERE uri = ? AND token = ?'); - $stmt->execute(array($uri,$lockInfo->token)); - - return $stmt->rowCount()===1; - - } - -} - diff --git a/3rdparty/Sabre/DAV/Locks/LockInfo.php b/3rdparty/Sabre/DAV/Locks/LockInfo.php deleted file mode 100755 index 9df014a4281a8b192f59f85c1d50d27793fb6e3a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Locks/LockInfo.php +++ /dev/null @@ -1,81 +0,0 @@ -addPlugin($lockPlugin); - * - * @package Sabre - * @subpackage DAV - * @copyright Copyright (C) 2007-2012 Rooftop Solutions. All rights reserved. - * @author Evert Pot (http://www.rooftopsolutions.nl/) - * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License - */ -class Sabre_DAV_Locks_Plugin extends Sabre_DAV_ServerPlugin { - - /** - * locksBackend - * - * @var Sabre_DAV_Locks_Backend_Abstract - */ - private $locksBackend; - - /** - * server - * - * @var Sabre_DAV_Server - */ - private $server; - - /** - * __construct - * - * @param Sabre_DAV_Locks_Backend_Abstract $locksBackend - */ - public function __construct(Sabre_DAV_Locks_Backend_Abstract $locksBackend = null) { - - $this->locksBackend = $locksBackend; - - } - - /** - * Initializes the plugin - * - * This method is automatically called by the Server class after addPlugin. - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - $this->server = $server; - $server->subscribeEvent('unknownMethod',array($this,'unknownMethod')); - $server->subscribeEvent('beforeMethod',array($this,'beforeMethod'),50); - $server->subscribeEvent('afterGetProperties',array($this,'afterGetProperties')); - - } - - /** - * Returns a plugin name. - * - * Using this name other plugins will be able to access other plugins - * using Sabre_DAV_Server::getPlugin - * - * @return string - */ - public function getPluginName() { - - return 'locks'; - - } - - /** - * This method is called by the Server if the user used an HTTP method - * the server didn't recognize. - * - * This plugin intercepts the LOCK and UNLOCK methods. - * - * @param string $method - * @param string $uri - * @return bool - */ - public function unknownMethod($method, $uri) { - - switch($method) { - - case 'LOCK' : $this->httpLock($uri); return false; - case 'UNLOCK' : $this->httpUnlock($uri); return false; - - } - - } - - /** - * This method is called after most properties have been found - * it allows us to add in any Lock-related properties - * - * @param string $path - * @param array $newProperties - * @return bool - */ - public function afterGetProperties($path, &$newProperties) { - - foreach($newProperties[404] as $propName=>$discard) { - - switch($propName) { - - case '{DAV:}supportedlock' : - $val = false; - if ($this->locksBackend) $val = true; - $newProperties[200][$propName] = new Sabre_DAV_Property_SupportedLock($val); - unset($newProperties[404][$propName]); - break; - - case '{DAV:}lockdiscovery' : - $newProperties[200][$propName] = new Sabre_DAV_Property_LockDiscovery($this->getLocks($path)); - unset($newProperties[404][$propName]); - break; - - } - - - } - return true; - - } - - - /** - * This method is called before the logic for any HTTP method is - * handled. - * - * This plugin uses that feature to intercept access to locked resources. - * - * @param string $method - * @param string $uri - * @return bool - */ - public function beforeMethod($method, $uri) { - - switch($method) { - - case 'DELETE' : - $lastLock = null; - if (!$this->validateLock($uri,$lastLock, true)) - throw new Sabre_DAV_Exception_Locked($lastLock); - break; - case 'MKCOL' : - case 'PROPPATCH' : - case 'PUT' : - $lastLock = null; - if (!$this->validateLock($uri,$lastLock)) - throw new Sabre_DAV_Exception_Locked($lastLock); - break; - case 'MOVE' : - $lastLock = null; - if (!$this->validateLock(array( - $uri, - $this->server->calculateUri($this->server->httpRequest->getHeader('Destination')), - ),$lastLock, true)) - throw new Sabre_DAV_Exception_Locked($lastLock); - break; - case 'COPY' : - $lastLock = null; - if (!$this->validateLock( - $this->server->calculateUri($this->server->httpRequest->getHeader('Destination')), - $lastLock, true)) - throw new Sabre_DAV_Exception_Locked($lastLock); - break; - } - - return true; - - } - - /** - * Use this method to tell the server this plugin defines additional - * HTTP methods. - * - * This method is passed a uri. It should only return HTTP methods that are - * available for the specified uri. - * - * @param string $uri - * @return array - */ - public function getHTTPMethods($uri) { - - if ($this->locksBackend) - return array('LOCK','UNLOCK'); - - return array(); - - } - - /** - * Returns a list of features for the HTTP OPTIONS Dav: header. - * - * In this case this is only the number 2. The 2 in the Dav: header - * indicates the server supports locks. - * - * @return array - */ - public function getFeatures() { - - return array(2); - - } - - /** - * Returns all lock information on a particular uri - * - * This function should return an array with Sabre_DAV_Locks_LockInfo objects. If there are no locks on a file, return an empty array. - * - * Additionally there is also the possibility of locks on parent nodes, so we'll need to traverse every part of the tree - * If the $returnChildLocks argument is set to true, we'll also traverse all the children of the object - * for any possible locks and return those as well. - * - * @param string $uri - * @param bool $returnChildLocks - * @return array - */ - public function getLocks($uri, $returnChildLocks = false) { - - $lockList = array(); - - if ($this->locksBackend) - $lockList = array_merge($lockList,$this->locksBackend->getLocks($uri, $returnChildLocks)); - - return $lockList; - - } - - /** - * Locks an uri - * - * The WebDAV lock request can be operated to either create a new lock on a file, or to refresh an existing lock - * If a new lock is created, a full XML body should be supplied, containing information about the lock such as the type - * of lock (shared or exclusive) and the owner of the lock - * - * If a lock is to be refreshed, no body should be supplied and there should be a valid If header containing the lock - * - * Additionally, a lock can be requested for a non-existent file. In these case we're obligated to create an empty file as per RFC4918:S7.3 - * - * @param string $uri - * @return void - */ - protected function httpLock($uri) { - - $lastLock = null; - if (!$this->validateLock($uri,$lastLock)) { - - // If the existing lock was an exclusive lock, we need to fail - if (!$lastLock || $lastLock->scope == Sabre_DAV_Locks_LockInfo::EXCLUSIVE) { - //var_dump($lastLock); - throw new Sabre_DAV_Exception_ConflictingLock($lastLock); - } - - } - - if ($body = $this->server->httpRequest->getBody(true)) { - // This is a new lock request - $lockInfo = $this->parseLockRequest($body); - $lockInfo->depth = $this->server->getHTTPDepth(); - $lockInfo->uri = $uri; - if($lastLock && $lockInfo->scope != Sabre_DAV_Locks_LockInfo::SHARED) throw new Sabre_DAV_Exception_ConflictingLock($lastLock); - - } elseif ($lastLock) { - - // This must have been a lock refresh - $lockInfo = $lastLock; - - // The resource could have been locked through another uri. - if ($uri!=$lockInfo->uri) $uri = $lockInfo->uri; - - } else { - - // There was neither a lock refresh nor a new lock request - throw new Sabre_DAV_Exception_BadRequest('An xml body is required for lock requests'); - - } - - if ($timeout = $this->getTimeoutHeader()) $lockInfo->timeout = $timeout; - - $newFile = false; - - // If we got this far.. we should go check if this node actually exists. If this is not the case, we need to create it first - try { - $this->server->tree->getNodeForPath($uri); - - // We need to call the beforeWriteContent event for RFC3744 - // Edit: looks like this is not used, and causing problems now. - // - // See Issue 222 - // $this->server->broadcastEvent('beforeWriteContent',array($uri)); - - } catch (Sabre_DAV_Exception_NotFound $e) { - - // It didn't, lets create it - $this->server->createFile($uri,fopen('php://memory','r')); - $newFile = true; - - } - - $this->lockNode($uri,$lockInfo); - - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->setHeader('Lock-Token','token . '>'); - $this->server->httpResponse->sendStatus($newFile?201:200); - $this->server->httpResponse->sendBody($this->generateLockResponse($lockInfo)); - - } - - /** - * Unlocks a uri - * - * This WebDAV method allows you to remove a lock from a node. The client should provide a valid locktoken through the Lock-token http header - * The server should return 204 (No content) on success - * - * @param string $uri - * @return void - */ - protected function httpUnlock($uri) { - - $lockToken = $this->server->httpRequest->getHeader('Lock-Token'); - - // If the locktoken header is not supplied, we need to throw a bad request exception - if (!$lockToken) throw new Sabre_DAV_Exception_BadRequest('No lock token was supplied'); - - $locks = $this->getLocks($uri); - - // Windows sometimes forgets to include < and > in the Lock-Token - // header - if ($lockToken[0]!=='<') $lockToken = '<' . $lockToken . '>'; - - foreach($locks as $lock) { - - if ('token . '>' == $lockToken) { - - $this->unlockNode($uri,$lock); - $this->server->httpResponse->setHeader('Content-Length','0'); - $this->server->httpResponse->sendStatus(204); - return; - - } - - } - - // If we got here, it means the locktoken was invalid - throw new Sabre_DAV_Exception_LockTokenMatchesRequestUri(); - - } - - /** - * Locks a uri - * - * All the locking information is supplied in the lockInfo object. The object has a suggested timeout, but this can be safely ignored - * It is important that if the existing timeout is ignored, the property is overwritten, as this needs to be sent back to the client - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function lockNode($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { - - if (!$this->server->broadcastEvent('beforeLock',array($uri,$lockInfo))) return; - - if ($this->locksBackend) return $this->locksBackend->lock($uri,$lockInfo); - throw new Sabre_DAV_Exception_MethodNotAllowed('Locking support is not enabled for this resource. No Locking backend was found so if you didn\'t expect this error, please check your configuration.'); - - } - - /** - * Unlocks a uri - * - * This method removes a lock from a uri. It is assumed all the supplied information is correct and verified - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return bool - */ - public function unlockNode($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { - - if (!$this->server->broadcastEvent('beforeUnlock',array($uri,$lockInfo))) return; - if ($this->locksBackend) return $this->locksBackend->unlock($uri,$lockInfo); - - } - - - /** - * Returns the contents of the HTTP Timeout header. - * - * The method formats the header into an integer. - * - * @return int - */ - public function getTimeoutHeader() { - - $header = $this->server->httpRequest->getHeader('Timeout'); - - if ($header) { - - if (stripos($header,'second-')===0) $header = (int)(substr($header,7)); - else if (strtolower($header)=='infinite') $header=Sabre_DAV_Locks_LockInfo::TIMEOUT_INFINITE; - else throw new Sabre_DAV_Exception_BadRequest('Invalid HTTP timeout header'); - - } else { - - $header = 0; - - } - - return $header; - - } - - /** - * Generates the response for successful LOCK requests - * - * @param Sabre_DAV_Locks_LockInfo $lockInfo - * @return string - */ - protected function generateLockResponse(Sabre_DAV_Locks_LockInfo $lockInfo) { - - $dom = new DOMDocument('1.0','utf-8'); - $dom->formatOutput = true; - - $prop = $dom->createElementNS('DAV:','d:prop'); - $dom->appendChild($prop); - - $lockDiscovery = $dom->createElementNS('DAV:','d:lockdiscovery'); - $prop->appendChild($lockDiscovery); - - $lockObj = new Sabre_DAV_Property_LockDiscovery(array($lockInfo),true); - $lockObj->serialize($this->server,$lockDiscovery); - - return $dom->saveXML(); - - } - - /** - * validateLock should be called when a write operation is about to happen - * It will check if the requested url is locked, and see if the correct lock tokens are passed - * - * @param mixed $urls List of relevant urls. Can be an array, a string or nothing at all for the current request uri - * @param mixed $lastLock This variable will be populated with the last checked lock object (Sabre_DAV_Locks_LockInfo) - * @param bool $checkChildLocks If set to true, this function will also look for any locks set on child resources of the supplied urls. This is needed for for example deletion of entire trees. - * @return bool - */ - protected function validateLock($urls = null,&$lastLock = null, $checkChildLocks = false) { - - if (is_null($urls)) { - $urls = array($this->server->getRequestUri()); - } elseif (is_string($urls)) { - $urls = array($urls); - } elseif (!is_array($urls)) { - throw new Sabre_DAV_Exception('The urls parameter should either be null, a string or an array'); - } - - $conditions = $this->getIfConditions(); - - // We're going to loop through the urls and make sure all lock conditions are satisfied - foreach($urls as $url) { - - $locks = $this->getLocks($url, $checkChildLocks); - - // If there were no conditions, but there were locks, we fail - if (!$conditions && $locks) { - reset($locks); - $lastLock = current($locks); - return false; - } - - // If there were no locks or conditions, we go to the next url - if (!$locks && !$conditions) continue; - - foreach($conditions as $condition) { - - if (!$condition['uri']) { - $conditionUri = $this->server->getRequestUri(); - } else { - $conditionUri = $this->server->calculateUri($condition['uri']); - } - - // If the condition has a url, and it isn't part of the affected url at all, check the next condition - if ($conditionUri && strpos($url,$conditionUri)!==0) continue; - - // The tokens array contians arrays with 2 elements. 0=true/false for normal/not condition, 1=locktoken - // At least 1 condition has to be satisfied - foreach($condition['tokens'] as $conditionToken) { - - $etagValid = true; - $lockValid = true; - - // key 2 can contain an etag - if ($conditionToken[2]) { - - $uri = $conditionUri?$conditionUri:$this->server->getRequestUri(); - $node = $this->server->tree->getNodeForPath($uri); - $etagValid = $node->getETag()==$conditionToken[2]; - - } - - // key 1 can contain a lock token - if ($conditionToken[1]) { - - $lockValid = false; - // Match all the locks - foreach($locks as $lockIndex=>$lock) { - - $lockToken = 'opaquelocktoken:' . $lock->token; - - // Checking NOT - if (!$conditionToken[0] && $lockToken != $conditionToken[1]) { - - // Condition valid, onto the next - $lockValid = true; - break; - } - if ($conditionToken[0] && $lockToken == $conditionToken[1]) { - - $lastLock = $lock; - // Condition valid and lock matched - unset($locks[$lockIndex]); - $lockValid = true; - break; - - } - - } - - } - - // If, after checking both etags and locks they are stil valid, - // we can continue with the next condition. - if ($etagValid && $lockValid) continue 2; - } - // No conditions matched, so we fail - throw new Sabre_DAV_Exception_PreconditionFailed('The tokens provided in the if header did not match','If'); - } - - // Conditions were met, we'll also need to check if all the locks are gone - if (count($locks)) { - - reset($locks); - - // There's still locks, we fail - $lastLock = current($locks); - return false; - - } - - - } - - // We got here, this means every condition was satisfied - return true; - - } - - /** - * This method is created to extract information from the WebDAV HTTP 'If:' header - * - * The If header can be quite complex, and has a bunch of features. We're using a regex to extract all relevant information - * The function will return an array, containing structs with the following keys - * - * * uri - the uri the condition applies to. If this is returned as an - * empty string, this implies it's referring to the request url. - * * tokens - The lock token. another 2 dimensional array containing 2 elements (0 = true/false.. If this is a negative condition its set to false, 1 = the actual token) - * * etag - an etag, if supplied - * - * @return array - */ - public function getIfConditions() { - - $header = $this->server->httpRequest->getHeader('If'); - if (!$header) return array(); - - $matches = array(); - - $regex = '/(?:\<(?P.*?)\>\s)?\((?PNot\s)?(?:\<(?P[^\>]*)\>)?(?:\s?)(?:\[(?P[^\]]*)\])?\)/im'; - preg_match_all($regex,$header,$matches,PREG_SET_ORDER); - - $conditions = array(); - - foreach($matches as $match) { - - $condition = array( - 'uri' => $match['uri'], - 'tokens' => array( - array($match['not']?0:1,$match['token'],isset($match['etag'])?$match['etag']:'') - ), - ); - - if (!$condition['uri'] && count($conditions)) $conditions[count($conditions)-1]['tokens'][] = array( - $match['not']?0:1, - $match['token'], - isset($match['etag'])?$match['etag']:'' - ); - else { - $conditions[] = $condition; - } - - } - - return $conditions; - - } - - /** - * Parses a webdav lock xml body, and returns a new Sabre_DAV_Locks_LockInfo object - * - * @param string $body - * @return Sabre_DAV_Locks_LockInfo - */ - protected function parseLockRequest($body) { - - $xml = simplexml_load_string($body,null,LIBXML_NOWARNING); - $xml->registerXPathNamespace('d','DAV:'); - $lockInfo = new Sabre_DAV_Locks_LockInfo(); - - $children = $xml->children("DAV:"); - $lockInfo->owner = (string)$children->owner; - - $lockInfo->token = Sabre_DAV_UUIDUtil::getUUID(); - $lockInfo->scope = count($xml->xpath('d:lockscope/d:exclusive'))>0?Sabre_DAV_Locks_LockInfo::EXCLUSIVE:Sabre_DAV_Locks_LockInfo::SHARED; - - return $lockInfo; - - } - - -} diff --git a/3rdparty/Sabre/DAV/Mount/Plugin.php b/3rdparty/Sabre/DAV/Mount/Plugin.php deleted file mode 100755 index b37a90ae9939a1315e438a4bd55d5687e12cc28b..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Mount/Plugin.php +++ /dev/null @@ -1,80 +0,0 @@ -server = $server; - $this->server->subscribeEvent('beforeMethod',array($this,'beforeMethod'), 90); - - } - - /** - * 'beforeMethod' event handles. This event handles intercepts GET requests ending - * with ?mount - * - * @param string $method - * @param string $uri - * @return bool - */ - public function beforeMethod($method, $uri) { - - if ($method!='GET') return; - if ($this->server->httpRequest->getQueryString()!='mount') return; - - $currentUri = $this->server->httpRequest->getAbsoluteUri(); - - // Stripping off everything after the ? - list($currentUri) = explode('?',$currentUri); - - $this->davMount($currentUri); - - // Returning false to break the event chain - return false; - - } - - /** - * Generates the davmount response - * - * @param string $uri absolute uri - * @return void - */ - public function davMount($uri) { - - $this->server->httpResponse->sendStatus(200); - $this->server->httpResponse->setHeader('Content-Type','application/davmount+xml'); - ob_start(); - echo '', "\n"; - echo "\n"; - echo " ", htmlspecialchars($uri, ENT_NOQUOTES, 'UTF-8'), "\n"; - echo ""; - $this->server->httpResponse->sendBody(ob_get_clean()); - - } - - -} diff --git a/3rdparty/Sabre/DAV/Node.php b/3rdparty/Sabre/DAV/Node.php deleted file mode 100755 index 070b7176afdf6ea09e47ba2c2084799028656d79..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Node.php +++ /dev/null @@ -1,55 +0,0 @@ -rootNode = $rootNode; - - } - - /** - * Returns the INode object for the requested path - * - * @param string $path - * @return Sabre_DAV_INode - */ - public function getNodeForPath($path) { - - $path = trim($path,'/'); - if (isset($this->cache[$path])) return $this->cache[$path]; - - //if (!$path || $path=='.') return $this->rootNode; - $currentNode = $this->rootNode; - - // We're splitting up the path variable into folder/subfolder components and traverse to the correct node.. - foreach(explode('/',$path) as $pathPart) { - - // If this part of the path is just a dot, it actually means we can skip it - if ($pathPart=='.' || $pathPart=='') continue; - - if (!($currentNode instanceof Sabre_DAV_ICollection)) - throw new Sabre_DAV_Exception_NotFound('Could not find node at path: ' . $path); - - $currentNode = $currentNode->getChild($pathPart); - - } - - $this->cache[$path] = $currentNode; - return $currentNode; - - } - - /** - * This function allows you to check if a node exists. - * - * @param string $path - * @return bool - */ - public function nodeExists($path) { - - try { - - // The root always exists - if ($path==='') return true; - - list($parent, $base) = Sabre_DAV_URLUtil::splitPath($path); - - $parentNode = $this->getNodeForPath($parent); - if (!$parentNode instanceof Sabre_DAV_ICollection) return false; - return $parentNode->childExists($base); - - } catch (Sabre_DAV_Exception_NotFound $e) { - - return false; - - } - - } - - /** - * Returns a list of childnodes for a given path. - * - * @param string $path - * @return array - */ - public function getChildren($path) { - - $node = $this->getNodeForPath($path); - $children = $node->getChildren(); - foreach($children as $child) { - - $this->cache[trim($path,'/') . '/' . $child->getName()] = $child; - - } - return $children; - - } - - /** - * This method is called with every tree update - * - * Examples of tree updates are: - * * node deletions - * * node creations - * * copy - * * move - * * renaming nodes - * - * If Tree classes implement a form of caching, this will allow - * them to make sure caches will be expired. - * - * If a path is passed, it is assumed that the entire subtree is dirty - * - * @param string $path - * @return void - */ - public function markDirty($path) { - - // We don't care enough about sub-paths - // flushing the entire cache - $path = trim($path,'/'); - foreach($this->cache as $nodePath=>$node) { - if ($nodePath == $path || strpos($nodePath,$path.'/')===0) - unset($this->cache[$nodePath]); - - } - - } - -} - diff --git a/3rdparty/Sabre/DAV/Property.php b/3rdparty/Sabre/DAV/Property.php deleted file mode 100755 index 1cfada3236c5500a64e4c343d0437db7f22dbb76..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property.php +++ /dev/null @@ -1,25 +0,0 @@ -time = $time; - } elseif (is_int($time) || ctype_digit($time)) { - $this->time = new DateTime('@' . $time); - } else { - $this->time = new DateTime($time); - } - - // Setting timezone to UTC - $this->time->setTimezone(new DateTimeZone('UTC')); - - } - - /** - * serialize - * - * @param Sabre_DAV_Server $server - * @param DOMElement $prop - * @return void - */ - public function serialize(Sabre_DAV_Server $server, DOMElement $prop) { - - $doc = $prop->ownerDocument; - $prop->setAttribute('xmlns:b','urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/'); - $prop->setAttribute('b:dt','dateTime.rfc1123'); - $prop->nodeValue = Sabre_HTTP_Util::toHTTPDate($this->time); - - } - - /** - * getTime - * - * @return DateTime - */ - public function getTime() { - - return $this->time; - - } - -} - diff --git a/3rdparty/Sabre/DAV/Property/Href.php b/3rdparty/Sabre/DAV/Property/Href.php deleted file mode 100755 index dac564f24d70745d18f88970fc494267bb9081c7..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/Href.php +++ /dev/null @@ -1,91 +0,0 @@ -href = $href; - $this->autoPrefix = $autoPrefix; - - } - - /** - * Returns the uri - * - * @return string - */ - public function getHref() { - - return $this->href; - - } - - /** - * Serializes this property. - * - * It will additionally prepend the href property with the server's base uri. - * - * @param Sabre_DAV_Server $server - * @param DOMElement $dom - * @return void - */ - public function serialize(Sabre_DAV_Server $server, DOMElement $dom) { - - $prefix = $server->xmlNamespaces['DAV:']; - - $elem = $dom->ownerDocument->createElement($prefix . ':href'); - $elem->nodeValue = ($this->autoPrefix?$server->getBaseUri():'') . $this->href; - $dom->appendChild($elem); - - } - - /** - * Unserializes this property from a DOM Element - * - * This method returns an instance of this class. - * It will only decode {DAV:}href values. For non-compatible elements null will be returned. - * - * @param DOMElement $dom - * @return Sabre_DAV_Property_Href - */ - static function unserialize(DOMElement $dom) { - - if (Sabre_DAV_XMLUtil::toClarkNotation($dom->firstChild)==='{DAV:}href') { - return new self($dom->firstChild->textContent,false); - } - - } - -} diff --git a/3rdparty/Sabre/DAV/Property/HrefList.php b/3rdparty/Sabre/DAV/Property/HrefList.php deleted file mode 100755 index 7a52272e8859fe9c6e17fb71a590c4678d6a4525..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/HrefList.php +++ /dev/null @@ -1,96 +0,0 @@ -hrefs = $hrefs; - $this->autoPrefix = $autoPrefix; - - } - - /** - * Returns the uris - * - * @return array - */ - public function getHrefs() { - - return $this->hrefs; - - } - - /** - * Serializes this property. - * - * It will additionally prepend the href property with the server's base uri. - * - * @param Sabre_DAV_Server $server - * @param DOMElement $dom - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $dom) { - - $prefix = $server->xmlNamespaces['DAV:']; - - foreach($this->hrefs as $href) { - $elem = $dom->ownerDocument->createElement($prefix . ':href'); - $elem->nodeValue = ($this->autoPrefix?$server->getBaseUri():'') . $href; - $dom->appendChild($elem); - } - - } - - /** - * Unserializes this property from a DOM Element - * - * This method returns an instance of this class. - * It will only decode {DAV:}href values. - * - * @param DOMElement $dom - * @return Sabre_DAV_Property_Href - */ - static function unserialize(DOMElement $dom) { - - $hrefs = array(); - foreach($dom->childNodes as $child) { - if (Sabre_DAV_XMLUtil::toClarkNotation($child)==='{DAV:}href') { - $hrefs[] = $child->textContent; - } - } - return new self($hrefs, false); - - } - -} diff --git a/3rdparty/Sabre/DAV/Property/IHref.php b/3rdparty/Sabre/DAV/Property/IHref.php deleted file mode 100755 index 5c0409064cb3d69ecc3812a14f5cf3a5454ed34d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/IHref.php +++ /dev/null @@ -1,25 +0,0 @@ -locks = $locks; - $this->revealLockToken = $revealLockToken; - - } - - /** - * serialize - * - * @param Sabre_DAV_Server $server - * @param DOMElement $prop - * @return void - */ - public function serialize(Sabre_DAV_Server $server, DOMElement $prop) { - - $doc = $prop->ownerDocument; - - foreach($this->locks as $lock) { - - $activeLock = $doc->createElementNS('DAV:','d:activelock'); - $prop->appendChild($activeLock); - - $lockScope = $doc->createElementNS('DAV:','d:lockscope'); - $activeLock->appendChild($lockScope); - - $lockScope->appendChild($doc->createElementNS('DAV:','d:' . ($lock->scope==Sabre_DAV_Locks_LockInfo::EXCLUSIVE?'exclusive':'shared'))); - - $lockType = $doc->createElementNS('DAV:','d:locktype'); - $activeLock->appendChild($lockType); - - $lockType->appendChild($doc->createElementNS('DAV:','d:write')); - - /* {DAV:}lockroot */ - if (!self::$hideLockRoot) { - $lockRoot = $doc->createElementNS('DAV:','d:lockroot'); - $activeLock->appendChild($lockRoot); - $href = $doc->createElementNS('DAV:','d:href'); - $href->appendChild($doc->createTextNode($server->getBaseUri() . $lock->uri)); - $lockRoot->appendChild($href); - } - - $activeLock->appendChild($doc->createElementNS('DAV:','d:depth',($lock->depth == Sabre_DAV_Server::DEPTH_INFINITY?'infinity':$lock->depth))); - $activeLock->appendChild($doc->createElementNS('DAV:','d:timeout','Second-' . $lock->timeout)); - - if ($this->revealLockToken) { - $lockToken = $doc->createElementNS('DAV:','d:locktoken'); - $activeLock->appendChild($lockToken); - $lockToken->appendChild($doc->createElementNS('DAV:','d:href','opaquelocktoken:' . $lock->token)); - } - - $activeLock->appendChild($doc->createElementNS('DAV:','d:owner',$lock->owner)); - - } - - } - -} - diff --git a/3rdparty/Sabre/DAV/Property/ResourceType.php b/3rdparty/Sabre/DAV/Property/ResourceType.php deleted file mode 100755 index f6269611e54d1b2ecc4134f2104e74cb2f6a9997..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/ResourceType.php +++ /dev/null @@ -1,125 +0,0 @@ -resourceType = array(); - elseif ($resourceType === Sabre_DAV_Server::NODE_DIRECTORY) - $this->resourceType = array('{DAV:}collection'); - elseif (is_array($resourceType)) - $this->resourceType = $resourceType; - else - $this->resourceType = array($resourceType); - - } - - /** - * serialize - * - * @param Sabre_DAV_Server $server - * @param DOMElement $prop - * @return void - */ - public function serialize(Sabre_DAV_Server $server, DOMElement $prop) { - - $propName = null; - $rt = $this->resourceType; - - foreach($rt as $resourceType) { - if (preg_match('/^{([^}]*)}(.*)$/',$resourceType,$propName)) { - - if (isset($server->xmlNamespaces[$propName[1]])) { - $prop->appendChild($prop->ownerDocument->createElement($server->xmlNamespaces[$propName[1]] . ':' . $propName[2])); - } else { - $prop->appendChild($prop->ownerDocument->createElementNS($propName[1],'custom:' . $propName[2])); - } - - } - } - - } - - /** - * Returns the values in clark-notation - * - * For example array('{DAV:}collection') - * - * @return array - */ - public function getValue() { - - return $this->resourceType; - - } - - /** - * Checks if the principal contains a certain value - * - * @param string $type - * @return bool - */ - public function is($type) { - - return in_array($type, $this->resourceType); - - } - - /** - * Adds a resourcetype value to this property - * - * @param string $type - * @return void - */ - public function add($type) { - - $this->resourceType[] = $type; - $this->resourceType = array_unique($this->resourceType); - - } - - /** - * Unserializes a DOM element into a ResourceType property. - * - * @param DOMElement $dom - * @return Sabre_DAV_Property_ResourceType - */ - static public function unserialize(DOMElement $dom) { - - $value = array(); - foreach($dom->childNodes as $child) { - - $value[] = Sabre_DAV_XMLUtil::toClarkNotation($child); - - } - - return new self($value); - - } - -} diff --git a/3rdparty/Sabre/DAV/Property/Response.php b/3rdparty/Sabre/DAV/Property/Response.php deleted file mode 100755 index 88afbcfb26d4e6d8b96f27e6b6e6d2978e81ed3d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/Response.php +++ /dev/null @@ -1,155 +0,0 @@ -href = $href; - $this->responseProperties = $responseProperties; - - } - - /** - * Returns the url - * - * @return string - */ - public function getHref() { - - return $this->href; - - } - - /** - * Returns the property list - * - * @return array - */ - public function getResponseProperties() { - - return $this->responseProperties; - - } - - /** - * serialize - * - * @param Sabre_DAV_Server $server - * @param DOMElement $dom - * @return void - */ - public function serialize(Sabre_DAV_Server $server, DOMElement $dom) { - - $document = $dom->ownerDocument; - $properties = $this->responseProperties; - - $xresponse = $document->createElement('d:response'); - $dom->appendChild($xresponse); - - $uri = Sabre_DAV_URLUtil::encodePath($this->href); - - // Adding the baseurl to the beginning of the url - $uri = $server->getBaseUri() . $uri; - - $xresponse->appendChild($document->createElement('d:href',$uri)); - - // The properties variable is an array containing properties, grouped by - // HTTP status - foreach($properties as $httpStatus=>$propertyGroup) { - - // The 'href' is also in this array, and it's special cased. - // We will ignore it - if ($httpStatus=='href') continue; - - // If there are no properties in this group, we can also just carry on - if (!count($propertyGroup)) continue; - - $xpropstat = $document->createElement('d:propstat'); - $xresponse->appendChild($xpropstat); - - $xprop = $document->createElement('d:prop'); - $xpropstat->appendChild($xprop); - - $nsList = $server->xmlNamespaces; - - foreach($propertyGroup as $propertyName=>$propertyValue) { - - $propName = null; - preg_match('/^{([^}]*)}(.*)$/',$propertyName,$propName); - - // special case for empty namespaces - if ($propName[1]=='') { - - $currentProperty = $document->createElement($propName[2]); - $xprop->appendChild($currentProperty); - $currentProperty->setAttribute('xmlns',''); - - } else { - - if (!isset($nsList[$propName[1]])) { - $nsList[$propName[1]] = 'x' . count($nsList); - } - - // If the namespace was defined in the top-level xml namespaces, it means - // there was already a namespace declaration, and we don't have to worry about it. - if (isset($server->xmlNamespaces[$propName[1]])) { - $currentProperty = $document->createElement($nsList[$propName[1]] . ':' . $propName[2]); - } else { - $currentProperty = $document->createElementNS($propName[1],$nsList[$propName[1]].':' . $propName[2]); - } - $xprop->appendChild($currentProperty); - - } - - if (is_scalar($propertyValue)) { - $text = $document->createTextNode($propertyValue); - $currentProperty->appendChild($text); - } elseif ($propertyValue instanceof Sabre_DAV_Property) { - $propertyValue->serialize($server,$currentProperty); - } elseif (!is_null($propertyValue)) { - throw new Sabre_DAV_Exception('Unknown property value type: ' . gettype($propertyValue) . ' for property: ' . $propertyName); - } - - } - - $xpropstat->appendChild($document->createElement('d:status',$server->httpResponse->getStatusMessage($httpStatus))); - - } - - } - -} diff --git a/3rdparty/Sabre/DAV/Property/ResponseList.php b/3rdparty/Sabre/DAV/Property/ResponseList.php deleted file mode 100755 index cae923afbf9d542110623023d9e87ddd98be9452..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/ResponseList.php +++ /dev/null @@ -1,57 +0,0 @@ -responses = $responses; - - } - - /** - * serialize - * - * @param Sabre_DAV_Server $server - * @param DOMElement $dom - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $dom) { - - foreach($this->responses as $response) { - $response->serialize($server, $dom); - } - - } - -} diff --git a/3rdparty/Sabre/DAV/Property/SupportedLock.php b/3rdparty/Sabre/DAV/Property/SupportedLock.php deleted file mode 100755 index 4e3aaf23a1a6229fbc24224509238ff320534e6d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/SupportedLock.php +++ /dev/null @@ -1,76 +0,0 @@ -supportsLocks = $supportsLocks; - - } - - /** - * serialize - * - * @param Sabre_DAV_Server $server - * @param DOMElement $prop - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $prop) { - - $doc = $prop->ownerDocument; - - if (!$this->supportsLocks) return null; - - $lockEntry1 = $doc->createElementNS('DAV:','d:lockentry'); - $lockEntry2 = $doc->createElementNS('DAV:','d:lockentry'); - - $prop->appendChild($lockEntry1); - $prop->appendChild($lockEntry2); - - $lockScope1 = $doc->createElementNS('DAV:','d:lockscope'); - $lockScope2 = $doc->createElementNS('DAV:','d:lockscope'); - $lockType1 = $doc->createElementNS('DAV:','d:locktype'); - $lockType2 = $doc->createElementNS('DAV:','d:locktype'); - - $lockEntry1->appendChild($lockScope1); - $lockEntry1->appendChild($lockType1); - $lockEntry2->appendChild($lockScope2); - $lockEntry2->appendChild($lockType2); - - $lockScope1->appendChild($doc->createElementNS('DAV:','d:exclusive')); - $lockScope2->appendChild($doc->createElementNS('DAV:','d:shared')); - - $lockType1->appendChild($doc->createElementNS('DAV:','d:write')); - $lockType2->appendChild($doc->createElementNS('DAV:','d:write')); - - //$frag->appendXML(''); - //$frag->appendXML(''); - - } - -} - diff --git a/3rdparty/Sabre/DAV/Property/SupportedReportSet.php b/3rdparty/Sabre/DAV/Property/SupportedReportSet.php deleted file mode 100755 index e62699f3b5a7fc3f1fbe16b5d0cd8d8f3178546d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Property/SupportedReportSet.php +++ /dev/null @@ -1,109 +0,0 @@ -addReport($reports); - - } - - /** - * Adds a report to this property - * - * The report must be a string in clark-notation. - * Multiple reports can be specified as an array. - * - * @param mixed $report - * @return void - */ - public function addReport($report) { - - if (!is_array($report)) $report = array($report); - - foreach($report as $r) { - - if (!preg_match('/^{([^}]*)}(.*)$/',$r)) - throw new Sabre_DAV_Exception('Reportname must be in clark-notation'); - - $this->reports[] = $r; - - } - - } - - /** - * Returns the list of supported reports - * - * @return array - */ - public function getValue() { - - return $this->reports; - - } - - /** - * Serializes the node - * - * @param Sabre_DAV_Server $server - * @param DOMElement $prop - * @return void - */ - public function serialize(Sabre_DAV_Server $server, DOMElement $prop) { - - foreach($this->reports as $reportName) { - - $supportedReport = $prop->ownerDocument->createElement('d:supported-report'); - $prop->appendChild($supportedReport); - - $report = $prop->ownerDocument->createElement('d:report'); - $supportedReport->appendChild($report); - - preg_match('/^{([^}]*)}(.*)$/',$reportName,$matches); - - list(, $namespace, $element) = $matches; - - $prefix = isset($server->xmlNamespaces[$namespace])?$server->xmlNamespaces[$namespace]:null; - - if ($prefix) { - $report->appendChild($prop->ownerDocument->createElement($prefix . ':' . $element)); - } else { - $report->appendChild($prop->ownerDocument->createElementNS($namespace, 'x:' . $element)); - } - - } - - } - -} diff --git a/3rdparty/Sabre/DAV/Server.php b/3rdparty/Sabre/DAV/Server.php deleted file mode 100755 index 0dfac8b0c711fdb8f7b8e60e2d89c23389aa976f..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Server.php +++ /dev/null @@ -1,2006 +0,0 @@ - 'd', - 'http://sabredav.org/ns' => 's', - ); - - /** - * The propertymap can be used to map properties from - * requests to property classes. - * - * @var array - */ - public $propertyMap = array( - '{DAV:}resourcetype' => 'Sabre_DAV_Property_ResourceType', - ); - - public $protectedProperties = array( - // RFC4918 - '{DAV:}getcontentlength', - '{DAV:}getetag', - '{DAV:}getlastmodified', - '{DAV:}lockdiscovery', - '{DAV:}resourcetype', - '{DAV:}supportedlock', - - // RFC4331 - '{DAV:}quota-available-bytes', - '{DAV:}quota-used-bytes', - - // RFC3744 - '{DAV:}supported-privilege-set', - '{DAV:}current-user-privilege-set', - '{DAV:}acl', - '{DAV:}acl-restrictions', - '{DAV:}inherited-acl-set', - - ); - - /** - * This is a flag that allow or not showing file, line and code - * of the exception in the returned XML - * - * @var bool - */ - public $debugExceptions = false; - - /** - * This property allows you to automatically add the 'resourcetype' value - * based on a node's classname or interface. - * - * The preset ensures that {DAV:}collection is automaticlly added for nodes - * implementing Sabre_DAV_ICollection. - * - * @var array - */ - public $resourceTypeMapping = array( - 'Sabre_DAV_ICollection' => '{DAV:}collection', - ); - - /** - * If this setting is turned off, SabreDAV's version number will be hidden - * from various places. - * - * Some people feel this is a good security measure. - * - * @var bool - */ - static public $exposeVersion = true; - - /** - * Sets up the server - * - * If a Sabre_DAV_Tree object is passed as an argument, it will - * use it as the directory tree. If a Sabre_DAV_INode is passed, it - * will create a Sabre_DAV_ObjectTree and use the node as the root. - * - * If nothing is passed, a Sabre_DAV_SimpleCollection is created in - * a Sabre_DAV_ObjectTree. - * - * If an array is passed, we automatically create a root node, and use - * the nodes in the array as top-level children. - * - * @param Sabre_DAV_Tree|Sabre_DAV_INode|null $treeOrNode The tree object - */ - public function __construct($treeOrNode = null) { - - if ($treeOrNode instanceof Sabre_DAV_Tree) { - $this->tree = $treeOrNode; - } elseif ($treeOrNode instanceof Sabre_DAV_INode) { - $this->tree = new Sabre_DAV_ObjectTree($treeOrNode); - } elseif (is_array($treeOrNode)) { - - // If it's an array, a list of nodes was passed, and we need to - // create the root node. - foreach($treeOrNode as $node) { - if (!($node instanceof Sabre_DAV_INode)) { - throw new Sabre_DAV_Exception('Invalid argument passed to constructor. If you\'re passing an array, all the values must implement Sabre_DAV_INode'); - } - } - - $root = new Sabre_DAV_SimpleCollection('root', $treeOrNode); - $this->tree = new Sabre_DAV_ObjectTree($root); - - } elseif (is_null($treeOrNode)) { - $root = new Sabre_DAV_SimpleCollection('root'); - $this->tree = new Sabre_DAV_ObjectTree($root); - } else { - throw new Sabre_DAV_Exception('Invalid argument passed to constructor. Argument must either be an instance of Sabre_DAV_Tree, Sabre_DAV_INode, an array or null'); - } - $this->httpResponse = new Sabre_HTTP_Response(); - $this->httpRequest = new Sabre_HTTP_Request(); - - } - - /** - * Starts the DAV Server - * - * @return void - */ - public function exec() { - - try { - - $this->invokeMethod($this->httpRequest->getMethod(), $this->getRequestUri()); - - } catch (Exception $e) { - - $DOM = new DOMDocument('1.0','utf-8'); - $DOM->formatOutput = true; - - $error = $DOM->createElementNS('DAV:','d:error'); - $error->setAttribute('xmlns:s',self::NS_SABREDAV); - $DOM->appendChild($error); - - $error->appendChild($DOM->createElement('s:exception',get_class($e))); - $error->appendChild($DOM->createElement('s:message',$e->getMessage())); - if ($this->debugExceptions) { - $error->appendChild($DOM->createElement('s:file',$e->getFile())); - $error->appendChild($DOM->createElement('s:line',$e->getLine())); - $error->appendChild($DOM->createElement('s:code',$e->getCode())); - $error->appendChild($DOM->createElement('s:stacktrace',$e->getTraceAsString())); - - } - if (self::$exposeVersion) { - $error->appendChild($DOM->createElement('s:sabredav-version',Sabre_DAV_Version::VERSION)); - } - - if($e instanceof Sabre_DAV_Exception) { - - $httpCode = $e->getHTTPCode(); - $e->serialize($this,$error); - $headers = $e->getHTTPHeaders($this); - - } else { - - $httpCode = 500; - $headers = array(); - - } - $headers['Content-Type'] = 'application/xml; charset=utf-8'; - - $this->httpResponse->sendStatus($httpCode); - $this->httpResponse->setHeaders($headers); - $this->httpResponse->sendBody($DOM->saveXML()); - - } - - } - - /** - * Sets the base server uri - * - * @param string $uri - * @return void - */ - public function setBaseUri($uri) { - - // If the baseUri does not end with a slash, we must add it - if ($uri[strlen($uri)-1]!=='/') - $uri.='/'; - - $this->baseUri = $uri; - - } - - /** - * Returns the base responding uri - * - * @return string - */ - public function getBaseUri() { - - if (is_null($this->baseUri)) $this->baseUri = $this->guessBaseUri(); - return $this->baseUri; - - } - - /** - * This method attempts to detect the base uri. - * Only the PATH_INFO variable is considered. - * - * If this variable is not set, the root (/) is assumed. - * - * @return string - */ - public function guessBaseUri() { - - $pathInfo = $this->httpRequest->getRawServerValue('PATH_INFO'); - $uri = $this->httpRequest->getRawServerValue('REQUEST_URI'); - - // If PATH_INFO is found, we can assume it's accurate. - if (!empty($pathInfo)) { - - // We need to make sure we ignore the QUERY_STRING part - if ($pos = strpos($uri,'?')) - $uri = substr($uri,0,$pos); - - // PATH_INFO is only set for urls, such as: /example.php/path - // in that case PATH_INFO contains '/path'. - // Note that REQUEST_URI is percent encoded, while PATH_INFO is - // not, Therefore they are only comparable if we first decode - // REQUEST_INFO as well. - $decodedUri = Sabre_DAV_URLUtil::decodePath($uri); - - // A simple sanity check: - if(substr($decodedUri,strlen($decodedUri)-strlen($pathInfo))===$pathInfo) { - $baseUri = substr($decodedUri,0,strlen($decodedUri)-strlen($pathInfo)); - return rtrim($baseUri,'/') . '/'; - } - - throw new Sabre_DAV_Exception('The REQUEST_URI ('. $uri . ') did not end with the contents of PATH_INFO (' . $pathInfo . '). This server might be misconfigured.'); - - } - - // The last fallback is that we're just going to assume the server root. - return '/'; - - } - - /** - * Adds a plugin to the server - * - * For more information, console the documentation of Sabre_DAV_ServerPlugin - * - * @param Sabre_DAV_ServerPlugin $plugin - * @return void - */ - public function addPlugin(Sabre_DAV_ServerPlugin $plugin) { - - $this->plugins[$plugin->getPluginName()] = $plugin; - $plugin->initialize($this); - - } - - /** - * Returns an initialized plugin by it's name. - * - * This function returns null if the plugin was not found. - * - * @param string $name - * @return Sabre_DAV_ServerPlugin - */ - public function getPlugin($name) { - - if (isset($this->plugins[$name])) - return $this->plugins[$name]; - - // This is a fallback and deprecated. - foreach($this->plugins as $plugin) { - if (get_class($plugin)===$name) return $plugin; - } - - return null; - - } - - /** - * Returns all plugins - * - * @return array - */ - public function getPlugins() { - - return $this->plugins; - - } - - - /** - * Subscribe to an event. - * - * When the event is triggered, we'll call all the specified callbacks. - * It is possible to control the order of the callbacks through the - * priority argument. - * - * This is for example used to make sure that the authentication plugin - * is triggered before anything else. If it's not needed to change this - * number, it is recommended to ommit. - * - * @param string $event - * @param callback $callback - * @param int $priority - * @return void - */ - public function subscribeEvent($event, $callback, $priority = 100) { - - if (!isset($this->eventSubscriptions[$event])) { - $this->eventSubscriptions[$event] = array(); - } - while(isset($this->eventSubscriptions[$event][$priority])) $priority++; - $this->eventSubscriptions[$event][$priority] = $callback; - ksort($this->eventSubscriptions[$event]); - - } - - /** - * Broadcasts an event - * - * This method will call all subscribers. If one of the subscribers returns false, the process stops. - * - * The arguments parameter will be sent to all subscribers - * - * @param string $eventName - * @param array $arguments - * @return bool - */ - public function broadcastEvent($eventName,$arguments = array()) { - - if (isset($this->eventSubscriptions[$eventName])) { - - foreach($this->eventSubscriptions[$eventName] as $subscriber) { - - $result = call_user_func_array($subscriber,$arguments); - if ($result===false) return false; - - } - - } - - return true; - - } - - /** - * Handles a http request, and execute a method based on its name - * - * @param string $method - * @param string $uri - * @return void - */ - public function invokeMethod($method, $uri) { - - $method = strtoupper($method); - - if (!$this->broadcastEvent('beforeMethod',array($method, $uri))) return; - - // Make sure this is a HTTP method we support - $internalMethods = array( - 'OPTIONS', - 'GET', - 'HEAD', - 'DELETE', - 'PROPFIND', - 'MKCOL', - 'PUT', - 'PROPPATCH', - 'COPY', - 'MOVE', - 'REPORT' - ); - - if (in_array($method,$internalMethods)) { - - call_user_func(array($this,'http' . $method), $uri); - - } else { - - if ($this->broadcastEvent('unknownMethod',array($method, $uri))) { - // Unsupported method - throw new Sabre_DAV_Exception_NotImplemented('There was no handler found for this "' . $method . '" method'); - } - - } - - } - - // {{{ HTTP Method implementations - - /** - * HTTP OPTIONS - * - * @param string $uri - * @return void - */ - protected function httpOptions($uri) { - - $methods = $this->getAllowedMethods($uri); - - $this->httpResponse->setHeader('Allow',strtoupper(implode(', ',$methods))); - $features = array('1','3', 'extended-mkcol'); - - foreach($this->plugins as $plugin) $features = array_merge($features,$plugin->getFeatures()); - - $this->httpResponse->setHeader('DAV',implode(', ',$features)); - $this->httpResponse->setHeader('MS-Author-Via','DAV'); - $this->httpResponse->setHeader('Accept-Ranges','bytes'); - if (self::$exposeVersion) { - $this->httpResponse->setHeader('X-Sabre-Version',Sabre_DAV_Version::VERSION); - } - $this->httpResponse->setHeader('Content-Length',0); - $this->httpResponse->sendStatus(200); - - } - - /** - * HTTP GET - * - * This method simply fetches the contents of a uri, like normal - * - * @param string $uri - * @return bool - */ - protected function httpGet($uri) { - - $node = $this->tree->getNodeForPath($uri,0); - - if (!$this->checkPreconditions(true)) return false; - - if (!($node instanceof Sabre_DAV_IFile)) throw new Sabre_DAV_Exception_NotImplemented('GET is only implemented on File objects'); - $body = $node->get(); - - // Converting string into stream, if needed. - if (is_string($body)) { - $stream = fopen('php://temp','r+'); - fwrite($stream,$body); - rewind($stream); - $body = $stream; - } - - /* - * TODO: getetag, getlastmodified, getsize should also be used using - * this method - */ - $httpHeaders = $this->getHTTPHeaders($uri); - - /* ContentType needs to get a default, because many webservers will otherwise - * default to text/html, and we don't want this for security reasons. - */ - if (!isset($httpHeaders['Content-Type'])) { - $httpHeaders['Content-Type'] = 'application/octet-stream'; - } - - - if (isset($httpHeaders['Content-Length'])) { - - $nodeSize = $httpHeaders['Content-Length']; - - // Need to unset Content-Length, because we'll handle that during figuring out the range - unset($httpHeaders['Content-Length']); - - } else { - $nodeSize = null; - } - - $this->httpResponse->setHeaders($httpHeaders); - - $range = $this->getHTTPRange(); - $ifRange = $this->httpRequest->getHeader('If-Range'); - $ignoreRangeHeader = false; - - // If ifRange is set, and range is specified, we first need to check - // the precondition. - if ($nodeSize && $range && $ifRange) { - - // if IfRange is parsable as a date we'll treat it as a DateTime - // otherwise, we must treat it as an etag. - try { - $ifRangeDate = new DateTime($ifRange); - - // It's a date. We must check if the entity is modified since - // the specified date. - if (!isset($httpHeaders['Last-Modified'])) $ignoreRangeHeader = true; - else { - $modified = new DateTime($httpHeaders['Last-Modified']); - if($modified > $ifRangeDate) $ignoreRangeHeader = true; - } - - } catch (Exception $e) { - - // It's an entity. We can do a simple comparison. - if (!isset($httpHeaders['ETag'])) $ignoreRangeHeader = true; - elseif ($httpHeaders['ETag']!==$ifRange) $ignoreRangeHeader = true; - } - } - - // We're only going to support HTTP ranges if the backend provided a filesize - if (!$ignoreRangeHeader && $nodeSize && $range) { - - // Determining the exact byte offsets - if (!is_null($range[0])) { - - $start = $range[0]; - $end = $range[1]?$range[1]:$nodeSize-1; - if($start >= $nodeSize) - throw new Sabre_DAV_Exception_RequestedRangeNotSatisfiable('The start offset (' . $range[0] . ') exceeded the size of the entity (' . $nodeSize . ')'); - - if($end < $start) throw new Sabre_DAV_Exception_RequestedRangeNotSatisfiable('The end offset (' . $range[1] . ') is lower than the start offset (' . $range[0] . ')'); - if($end >= $nodeSize) $end = $nodeSize-1; - - } else { - - $start = $nodeSize-$range[1]; - $end = $nodeSize-1; - - if ($start<0) $start = 0; - - } - - // New read/write stream - $newStream = fopen('php://temp','r+'); - - stream_copy_to_stream($body, $newStream, $end-$start+1, $start); - rewind($newStream); - - $this->httpResponse->setHeader('Content-Length', $end-$start+1); - $this->httpResponse->setHeader('Content-Range','bytes ' . $start . '-' . $end . '/' . $nodeSize); - $this->httpResponse->sendStatus(206); - $this->httpResponse->sendBody($newStream); - - - } else { - - if ($nodeSize) $this->httpResponse->setHeader('Content-Length',$nodeSize); - $this->httpResponse->sendStatus(200); - $this->httpResponse->sendBody($body); - - } - - } - - /** - * HTTP HEAD - * - * This method is normally used to take a peak at a url, and only get the HTTP response headers, without the body - * This is used by clients to determine if a remote file was changed, so they can use a local cached version, instead of downloading it again - * - * @param string $uri - * @return void - */ - protected function httpHead($uri) { - - $node = $this->tree->getNodeForPath($uri); - /* This information is only collection for File objects. - * Ideally we want to throw 405 Method Not Allowed for every - * non-file, but MS Office does not like this - */ - if ($node instanceof Sabre_DAV_IFile) { - $headers = $this->getHTTPHeaders($this->getRequestUri()); - if (!isset($headers['Content-Type'])) { - $headers['Content-Type'] = 'application/octet-stream'; - } - $this->httpResponse->setHeaders($headers); - } - $this->httpResponse->sendStatus(200); - - } - - /** - * HTTP Delete - * - * The HTTP delete method, deletes a given uri - * - * @param string $uri - * @return void - */ - protected function httpDelete($uri) { - - if (!$this->broadcastEvent('beforeUnbind',array($uri))) return; - $this->tree->delete($uri); - $this->broadcastEvent('afterUnbind',array($uri)); - - $this->httpResponse->sendStatus(204); - $this->httpResponse->setHeader('Content-Length','0'); - - } - - - /** - * WebDAV PROPFIND - * - * This WebDAV method requests information about an uri resource, or a list of resources - * If a client wants to receive the properties for a single resource it will add an HTTP Depth: header with a 0 value - * If the value is 1, it means that it also expects a list of sub-resources (e.g.: files in a directory) - * - * The request body contains an XML data structure that has a list of properties the client understands - * The response body is also an xml document, containing information about every uri resource and the requested properties - * - * It has to return a HTTP 207 Multi-status status code - * - * @param string $uri - * @return void - */ - protected function httpPropfind($uri) { - - // $xml = new Sabre_DAV_XMLReader(file_get_contents('php://input')); - $requestedProperties = $this->parsePropfindRequest($this->httpRequest->getBody(true)); - - $depth = $this->getHTTPDepth(1); - // The only two options for the depth of a propfind is 0 or 1 - if ($depth!=0) $depth = 1; - - $newProperties = $this->getPropertiesForPath($uri,$requestedProperties,$depth); - - // This is a multi-status response - $this->httpResponse->sendStatus(207); - $this->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - - // Normally this header is only needed for OPTIONS responses, however.. - // iCal seems to also depend on these being set for PROPFIND. Since - // this is not harmful, we'll add it. - $features = array('1','3', 'extended-mkcol'); - foreach($this->plugins as $plugin) $features = array_merge($features,$plugin->getFeatures()); - $this->httpResponse->setHeader('DAV',implode(', ',$features)); - - $data = $this->generateMultiStatus($newProperties); - $this->httpResponse->sendBody($data); - - } - - /** - * WebDAV PROPPATCH - * - * This method is called to update properties on a Node. The request is an XML body with all the mutations. - * In this XML body it is specified which properties should be set/updated and/or deleted - * - * @param string $uri - * @return void - */ - protected function httpPropPatch($uri) { - - $newProperties = $this->parsePropPatchRequest($this->httpRequest->getBody(true)); - - $result = $this->updateProperties($uri, $newProperties); - - $this->httpResponse->sendStatus(207); - $this->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - - $this->httpResponse->sendBody( - $this->generateMultiStatus(array($result)) - ); - - } - - /** - * HTTP PUT method - * - * This HTTP method updates a file, or creates a new one. - * - * If a new resource was created, a 201 Created status code should be returned. If an existing resource is updated, it's a 204 No Content - * - * @param string $uri - * @return bool - */ - protected function httpPut($uri) { - - $body = $this->httpRequest->getBody(); - - // Intercepting Content-Range - if ($this->httpRequest->getHeader('Content-Range')) { - /** - Content-Range is dangerous for PUT requests: PUT per definition - stores a full resource. draft-ietf-httpbis-p2-semantics-15 says - in section 7.6: - An origin server SHOULD reject any PUT request that contains a - Content-Range header field, since it might be misinterpreted as - partial content (or might be partial content that is being mistakenly - PUT as a full representation). Partial content updates are possible - by targeting a separately identified resource with state that - overlaps a portion of the larger resource, or by using a different - method that has been specifically defined for partial updates (for - example, the PATCH method defined in [RFC5789]). - This clarifies RFC2616 section 9.6: - The recipient of the entity MUST NOT ignore any Content-* - (e.g. Content-Range) headers that it does not understand or implement - and MUST return a 501 (Not Implemented) response in such cases. - OTOH is a PUT request with a Content-Range currently the only way to - continue an aborted upload request and is supported by curl, mod_dav, - Tomcat and others. Since some clients do use this feature which results - in unexpected behaviour (cf PEAR::HTTP_WebDAV_Client 1.0.1), we reject - all PUT requests with a Content-Range for now. - */ - - throw new Sabre_DAV_Exception_NotImplemented('PUT with Content-Range is not allowed.'); - } - - // Intercepting the Finder problem - if (($expected = $this->httpRequest->getHeader('X-Expected-Entity-Length')) && $expected > 0) { - - /** - Many webservers will not cooperate well with Finder PUT requests, - because it uses 'Chunked' transfer encoding for the request body. - - The symptom of this problem is that Finder sends files to the - server, but they arrive as 0-length files in PHP. - - If we don't do anything, the user might think they are uploading - files successfully, but they end up empty on the server. Instead, - we throw back an error if we detect this. - - The reason Finder uses Chunked, is because it thinks the files - might change as it's being uploaded, and therefore the - Content-Length can vary. - - Instead it sends the X-Expected-Entity-Length header with the size - of the file at the very start of the request. If this header is set, - but we don't get a request body we will fail the request to - protect the end-user. - */ - - // Only reading first byte - $firstByte = fread($body,1); - if (strlen($firstByte)!==1) { - throw new Sabre_DAV_Exception_Forbidden('This server is not compatible with OS/X finder. Consider using a different WebDAV client or webserver.'); - } - - // The body needs to stay intact, so we copy everything to a - // temporary stream. - - $newBody = fopen('php://temp','r+'); - fwrite($newBody,$firstByte); - stream_copy_to_stream($body, $newBody); - rewind($newBody); - - $body = $newBody; - - } - - if ($this->tree->nodeExists($uri)) { - - $node = $this->tree->getNodeForPath($uri); - - // Checking If-None-Match and related headers. - if (!$this->checkPreconditions()) return; - - // If the node is a collection, we'll deny it - if (!($node instanceof Sabre_DAV_IFile)) throw new Sabre_DAV_Exception_Conflict('PUT is not allowed on non-files.'); - if (!$this->broadcastEvent('beforeWriteContent',array($uri, $node, &$body))) return false; - - $etag = $node->put($body); - - $this->broadcastEvent('afterWriteContent',array($uri, $node)); - - $this->httpResponse->setHeader('Content-Length','0'); - if ($etag) $this->httpResponse->setHeader('ETag',$etag); - $this->httpResponse->sendStatus(204); - - } else { - - $etag = null; - // If we got here, the resource didn't exist yet. - if (!$this->createFile($this->getRequestUri(),$body,$etag)) { - // For one reason or another the file was not created. - return; - } - - $this->httpResponse->setHeader('Content-Length','0'); - if ($etag) $this->httpResponse->setHeader('ETag', $etag); - $this->httpResponse->sendStatus(201); - - } - - } - - - /** - * WebDAV MKCOL - * - * The MKCOL method is used to create a new collection (directory) on the server - * - * @param string $uri - * @return void - */ - protected function httpMkcol($uri) { - - $requestBody = $this->httpRequest->getBody(true); - - if ($requestBody) { - - $contentType = $this->httpRequest->getHeader('Content-Type'); - if (strpos($contentType,'application/xml')!==0 && strpos($contentType,'text/xml')!==0) { - - // We must throw 415 for unsupported mkcol bodies - throw new Sabre_DAV_Exception_UnsupportedMediaType('The request body for the MKCOL request must have an xml Content-Type'); - - } - - $dom = Sabre_DAV_XMLUtil::loadDOMDocument($requestBody); - if (Sabre_DAV_XMLUtil::toClarkNotation($dom->firstChild)!=='{DAV:}mkcol') { - - // We must throw 415 for unsupported mkcol bodies - throw new Sabre_DAV_Exception_UnsupportedMediaType('The request body for the MKCOL request must be a {DAV:}mkcol request construct.'); - - } - - $properties = array(); - foreach($dom->firstChild->childNodes as $childNode) { - - if (Sabre_DAV_XMLUtil::toClarkNotation($childNode)!=='{DAV:}set') continue; - $properties = array_merge($properties, Sabre_DAV_XMLUtil::parseProperties($childNode, $this->propertyMap)); - - } - if (!isset($properties['{DAV:}resourcetype'])) - throw new Sabre_DAV_Exception_BadRequest('The mkcol request must include a {DAV:}resourcetype property'); - - $resourceType = $properties['{DAV:}resourcetype']->getValue(); - unset($properties['{DAV:}resourcetype']); - - } else { - - $properties = array(); - $resourceType = array('{DAV:}collection'); - - } - - $result = $this->createCollection($uri, $resourceType, $properties); - - if (is_array($result)) { - $this->httpResponse->sendStatus(207); - $this->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - - $this->httpResponse->sendBody( - $this->generateMultiStatus(array($result)) - ); - - } else { - $this->httpResponse->setHeader('Content-Length','0'); - $this->httpResponse->sendStatus(201); - } - - } - - /** - * WebDAV HTTP MOVE method - * - * This method moves one uri to a different uri. A lot of the actual request processing is done in getCopyMoveInfo - * - * @param string $uri - * @return void - */ - protected function httpMove($uri) { - - $moveInfo = $this->getCopyAndMoveInfo(); - - // If the destination is part of the source tree, we must fail - if ($moveInfo['destination']==$uri) - throw new Sabre_DAV_Exception_Forbidden('Source and destination uri are identical.'); - - if ($moveInfo['destinationExists']) { - - if (!$this->broadcastEvent('beforeUnbind',array($moveInfo['destination']))) return false; - $this->tree->delete($moveInfo['destination']); - $this->broadcastEvent('afterUnbind',array($moveInfo['destination'])); - - } - - if (!$this->broadcastEvent('beforeUnbind',array($uri))) return false; - if (!$this->broadcastEvent('beforeBind',array($moveInfo['destination']))) return false; - $this->tree->move($uri,$moveInfo['destination']); - $this->broadcastEvent('afterUnbind',array($uri)); - $this->broadcastEvent('afterBind',array($moveInfo['destination'])); - - // If a resource was overwritten we should send a 204, otherwise a 201 - $this->httpResponse->setHeader('Content-Length','0'); - $this->httpResponse->sendStatus($moveInfo['destinationExists']?204:201); - - } - - /** - * WebDAV HTTP COPY method - * - * This method copies one uri to a different uri, and works much like the MOVE request - * A lot of the actual request processing is done in getCopyMoveInfo - * - * @param string $uri - * @return bool - */ - protected function httpCopy($uri) { - - $copyInfo = $this->getCopyAndMoveInfo(); - // If the destination is part of the source tree, we must fail - if ($copyInfo['destination']==$uri) - throw new Sabre_DAV_Exception_Forbidden('Source and destination uri are identical.'); - - if ($copyInfo['destinationExists']) { - if (!$this->broadcastEvent('beforeUnbind',array($copyInfo['destination']))) return false; - $this->tree->delete($copyInfo['destination']); - - } - if (!$this->broadcastEvent('beforeBind',array($copyInfo['destination']))) return false; - $this->tree->copy($uri,$copyInfo['destination']); - $this->broadcastEvent('afterBind',array($copyInfo['destination'])); - - // If a resource was overwritten we should send a 204, otherwise a 201 - $this->httpResponse->setHeader('Content-Length','0'); - $this->httpResponse->sendStatus($copyInfo['destinationExists']?204:201); - - } - - - - /** - * HTTP REPORT method implementation - * - * Although the REPORT method is not part of the standard WebDAV spec (it's from rfc3253) - * It's used in a lot of extensions, so it made sense to implement it into the core. - * - * @param string $uri - * @return void - */ - protected function httpReport($uri) { - - $body = $this->httpRequest->getBody(true); - $dom = Sabre_DAV_XMLUtil::loadDOMDocument($body); - - $reportName = Sabre_DAV_XMLUtil::toClarkNotation($dom->firstChild); - - if ($this->broadcastEvent('report',array($reportName,$dom, $uri))) { - - // If broadcastEvent returned true, it means the report was not supported - throw new Sabre_DAV_Exception_ReportNotImplemented(); - - } - - } - - // }}} - // {{{ HTTP/WebDAV protocol helpers - - /** - * Returns an array with all the supported HTTP methods for a specific uri. - * - * @param string $uri - * @return array - */ - public function getAllowedMethods($uri) { - - $methods = array( - 'OPTIONS', - 'GET', - 'HEAD', - 'DELETE', - 'PROPFIND', - 'PUT', - 'PROPPATCH', - 'COPY', - 'MOVE', - 'REPORT' - ); - - // The MKCOL is only allowed on an unmapped uri - try { - $this->tree->getNodeForPath($uri); - } catch (Sabre_DAV_Exception_NotFound $e) { - $methods[] = 'MKCOL'; - } - - // We're also checking if any of the plugins register any new methods - foreach($this->plugins as $plugin) $methods = array_merge($methods, $plugin->getHTTPMethods($uri)); - array_unique($methods); - - return $methods; - - } - - /** - * Gets the uri for the request, keeping the base uri into consideration - * - * @return string - */ - public function getRequestUri() { - - return $this->calculateUri($this->httpRequest->getUri()); - - } - - /** - * Calculates the uri for a request, making sure that the base uri is stripped out - * - * @param string $uri - * @throws Sabre_DAV_Exception_Forbidden A permission denied exception is thrown whenever there was an attempt to supply a uri outside of the base uri - * @return string - */ - public function calculateUri($uri) { - - if ($uri[0]!='/' && strpos($uri,'://')) { - - $uri = parse_url($uri,PHP_URL_PATH); - - } - - $uri = str_replace('//','/',$uri); - - if (strpos($uri,$this->getBaseUri())===0) { - - return trim(Sabre_DAV_URLUtil::decodePath(substr($uri,strlen($this->getBaseUri()))),'/'); - - // A special case, if the baseUri was accessed without a trailing - // slash, we'll accept it as well. - } elseif ($uri.'/' === $this->getBaseUri()) { - - return ''; - - } else { - - throw new Sabre_DAV_Exception_Forbidden('Requested uri (' . $uri . ') is out of base uri (' . $this->getBaseUri() . ')'); - - } - - } - - /** - * Returns the HTTP depth header - * - * This method returns the contents of the HTTP depth request header. If the depth header was 'infinity' it will return the Sabre_DAV_Server::DEPTH_INFINITY object - * It is possible to supply a default depth value, which is used when the depth header has invalid content, or is completely non-existent - * - * @param mixed $default - * @return int - */ - public function getHTTPDepth($default = self::DEPTH_INFINITY) { - - // If its not set, we'll grab the default - $depth = $this->httpRequest->getHeader('Depth'); - - if (is_null($depth)) return $default; - - if ($depth == 'infinity') return self::DEPTH_INFINITY; - - - // If its an unknown value. we'll grab the default - if (!ctype_digit($depth)) return $default; - - return (int)$depth; - - } - - /** - * Returns the HTTP range header - * - * This method returns null if there is no well-formed HTTP range request - * header or array($start, $end). - * - * The first number is the offset of the first byte in the range. - * The second number is the offset of the last byte in the range. - * - * If the second offset is null, it should be treated as the offset of the last byte of the entity - * If the first offset is null, the second offset should be used to retrieve the last x bytes of the entity - * - * @return array|null - */ - public function getHTTPRange() { - - $range = $this->httpRequest->getHeader('range'); - if (is_null($range)) return null; - - // Matching "Range: bytes=1234-5678: both numbers are optional - - if (!preg_match('/^bytes=([0-9]*)-([0-9]*)$/i',$range,$matches)) return null; - - if ($matches[1]==='' && $matches[2]==='') return null; - - return array( - $matches[1]!==''?$matches[1]:null, - $matches[2]!==''?$matches[2]:null, - ); - - } - - - /** - * Returns information about Copy and Move requests - * - * This function is created to help getting information about the source and the destination for the - * WebDAV MOVE and COPY HTTP request. It also validates a lot of information and throws proper exceptions - * - * The returned value is an array with the following keys: - * * destination - Destination path - * * destinationExists - Whether or not the destination is an existing url (and should therefore be overwritten) - * - * @return array - */ - public function getCopyAndMoveInfo() { - - // Collecting the relevant HTTP headers - if (!$this->httpRequest->getHeader('Destination')) throw new Sabre_DAV_Exception_BadRequest('The destination header was not supplied'); - $destination = $this->calculateUri($this->httpRequest->getHeader('Destination')); - $overwrite = $this->httpRequest->getHeader('Overwrite'); - if (!$overwrite) $overwrite = 'T'; - if (strtoupper($overwrite)=='T') $overwrite = true; - elseif (strtoupper($overwrite)=='F') $overwrite = false; - // We need to throw a bad request exception, if the header was invalid - else throw new Sabre_DAV_Exception_BadRequest('The HTTP Overwrite header should be either T or F'); - - list($destinationDir) = Sabre_DAV_URLUtil::splitPath($destination); - - try { - $destinationParent = $this->tree->getNodeForPath($destinationDir); - if (!($destinationParent instanceof Sabre_DAV_ICollection)) throw new Sabre_DAV_Exception_UnsupportedMediaType('The destination node is not a collection'); - } catch (Sabre_DAV_Exception_NotFound $e) { - - // If the destination parent node is not found, we throw a 409 - throw new Sabre_DAV_Exception_Conflict('The destination node is not found'); - } - - try { - - $destinationNode = $this->tree->getNodeForPath($destination); - - // If this succeeded, it means the destination already exists - // we'll need to throw precondition failed in case overwrite is false - if (!$overwrite) throw new Sabre_DAV_Exception_PreconditionFailed('The destination node already exists, and the overwrite header is set to false','Overwrite'); - - } catch (Sabre_DAV_Exception_NotFound $e) { - - // Destination didn't exist, we're all good - $destinationNode = false; - - - - } - - // These are the three relevant properties we need to return - return array( - 'destination' => $destination, - 'destinationExists' => $destinationNode==true, - 'destinationNode' => $destinationNode, - ); - - } - - /** - * Returns a list of properties for a path - * - * This is a simplified version getPropertiesForPath. - * if you aren't interested in status codes, but you just - * want to have a flat list of properties. Use this method. - * - * @param string $path - * @param array $propertyNames - */ - public function getProperties($path, $propertyNames) { - - $result = $this->getPropertiesForPath($path,$propertyNames,0); - return $result[0][200]; - - } - - /** - * A kid-friendly way to fetch properties for a node's children. - * - * The returned array will be indexed by the path of the of child node. - * Only properties that are actually found will be returned. - * - * The parent node will not be returned. - * - * @param string $path - * @param array $propertyNames - * @return array - */ - public function getPropertiesForChildren($path, $propertyNames) { - - $result = array(); - foreach($this->getPropertiesForPath($path,$propertyNames,1) as $k=>$row) { - - // Skipping the parent path - if ($k === 0) continue; - - $result[$row['href']] = $row[200]; - - } - return $result; - - } - - /** - * Returns a list of HTTP headers for a particular resource - * - * The generated http headers are based on properties provided by the - * resource. The method basically provides a simple mapping between - * DAV property and HTTP header. - * - * The headers are intended to be used for HEAD and GET requests. - * - * @param string $path - * @return array - */ - public function getHTTPHeaders($path) { - - $propertyMap = array( - '{DAV:}getcontenttype' => 'Content-Type', - '{DAV:}getcontentlength' => 'Content-Length', - '{DAV:}getlastmodified' => 'Last-Modified', - '{DAV:}getetag' => 'ETag', - ); - - $properties = $this->getProperties($path,array_keys($propertyMap)); - - $headers = array(); - foreach($propertyMap as $property=>$header) { - if (!isset($properties[$property])) continue; - - if (is_scalar($properties[$property])) { - $headers[$header] = $properties[$property]; - - // GetLastModified gets special cased - } elseif ($properties[$property] instanceof Sabre_DAV_Property_GetLastModified) { - $headers[$header] = Sabre_HTTP_Util::toHTTPDate($properties[$property]->getTime()); - } - - } - - return $headers; - - } - - /** - * Returns a list of properties for a given path - * - * The path that should be supplied should have the baseUrl stripped out - * The list of properties should be supplied in Clark notation. If the list is empty - * 'allprops' is assumed. - * - * If a depth of 1 is requested child elements will also be returned. - * - * @param string $path - * @param array $propertyNames - * @param int $depth - * @return array - */ - public function getPropertiesForPath($path, $propertyNames = array(), $depth = 0) { - - if ($depth!=0) $depth = 1; - - $returnPropertyList = array(); - - $parentNode = $this->tree->getNodeForPath($path); - $nodes = array( - $path => $parentNode - ); - if ($depth==1 && $parentNode instanceof Sabre_DAV_ICollection) { - foreach($this->tree->getChildren($path) as $childNode) - $nodes[$path . '/' . $childNode->getName()] = $childNode; - } - - // If the propertyNames array is empty, it means all properties are requested. - // We shouldn't actually return everything we know though, and only return a - // sensible list. - $allProperties = count($propertyNames)==0; - - foreach($nodes as $myPath=>$node) { - - $currentPropertyNames = $propertyNames; - - $newProperties = array( - '200' => array(), - '404' => array(), - ); - - if ($allProperties) { - // Default list of propertyNames, when all properties were requested. - $currentPropertyNames = array( - '{DAV:}getlastmodified', - '{DAV:}getcontentlength', - '{DAV:}resourcetype', - '{DAV:}quota-used-bytes', - '{DAV:}quota-available-bytes', - '{DAV:}getetag', - '{DAV:}getcontenttype', - ); - } - - // If the resourceType was not part of the list, we manually add it - // and mark it for removal. We need to know the resourcetype in order - // to make certain decisions about the entry. - // WebDAV dictates we should add a / and the end of href's for collections - $removeRT = false; - if (!in_array('{DAV:}resourcetype',$currentPropertyNames)) { - $currentPropertyNames[] = '{DAV:}resourcetype'; - $removeRT = true; - } - - $result = $this->broadcastEvent('beforeGetProperties',array($myPath, $node, &$currentPropertyNames, &$newProperties)); - // If this method explicitly returned false, we must ignore this - // node as it is inaccessible. - if ($result===false) continue; - - if (count($currentPropertyNames) > 0) { - - if ($node instanceof Sabre_DAV_IProperties) - $newProperties['200'] = $newProperties[200] + $node->getProperties($currentPropertyNames); - - } - - - foreach($currentPropertyNames as $prop) { - - if (isset($newProperties[200][$prop])) continue; - - switch($prop) { - case '{DAV:}getlastmodified' : if ($node->getLastModified()) $newProperties[200][$prop] = new Sabre_DAV_Property_GetLastModified($node->getLastModified()); break; - case '{DAV:}getcontentlength' : - if ($node instanceof Sabre_DAV_IFile) { - $size = $node->getSize(); - if (!is_null($size)) { - $newProperties[200][$prop] = (int)$node->getSize(); - } - } - break; - case '{DAV:}quota-used-bytes' : - if ($node instanceof Sabre_DAV_IQuota) { - $quotaInfo = $node->getQuotaInfo(); - $newProperties[200][$prop] = $quotaInfo[0]; - } - break; - case '{DAV:}quota-available-bytes' : - if ($node instanceof Sabre_DAV_IQuota) { - $quotaInfo = $node->getQuotaInfo(); - $newProperties[200][$prop] = $quotaInfo[1]; - } - break; - case '{DAV:}getetag' : if ($node instanceof Sabre_DAV_IFile && $etag = $node->getETag()) $newProperties[200][$prop] = $etag; break; - case '{DAV:}getcontenttype' : if ($node instanceof Sabre_DAV_IFile && $ct = $node->getContentType()) $newProperties[200][$prop] = $ct; break; - case '{DAV:}supported-report-set' : - $reports = array(); - foreach($this->plugins as $plugin) { - $reports = array_merge($reports, $plugin->getSupportedReportSet($myPath)); - } - $newProperties[200][$prop] = new Sabre_DAV_Property_SupportedReportSet($reports); - break; - case '{DAV:}resourcetype' : - $newProperties[200]['{DAV:}resourcetype'] = new Sabre_DAV_Property_ResourceType(); - foreach($this->resourceTypeMapping as $className => $resourceType) { - if ($node instanceof $className) $newProperties[200]['{DAV:}resourcetype']->add($resourceType); - } - break; - - } - - // If we were unable to find the property, we will list it as 404. - if (!$allProperties && !isset($newProperties[200][$prop])) $newProperties[404][$prop] = null; - - } - - $this->broadcastEvent('afterGetProperties',array(trim($myPath,'/'),&$newProperties)); - - $newProperties['href'] = trim($myPath,'/'); - - // Its is a WebDAV recommendation to add a trailing slash to collectionnames. - // Apple's iCal also requires a trailing slash for principals (rfc 3744). - // Therefore we add a trailing / for any non-file. This might need adjustments - // if we find there are other edge cases. - if ($myPath!='' && isset($newProperties[200]['{DAV:}resourcetype']) && count($newProperties[200]['{DAV:}resourcetype']->getValue())>0) $newProperties['href'] .='/'; - - // If the resourcetype property was manually added to the requested property list, - // we will remove it again. - if ($removeRT) unset($newProperties[200]['{DAV:}resourcetype']); - - $returnPropertyList[] = $newProperties; - - } - - return $returnPropertyList; - - } - - /** - * This method is invoked by sub-systems creating a new file. - * - * Currently this is done by HTTP PUT and HTTP LOCK (in the Locks_Plugin). - * It was important to get this done through a centralized function, - * allowing plugins to intercept this using the beforeCreateFile event. - * - * This method will return true if the file was actually created - * - * @param string $uri - * @param resource $data - * @param string $etag - * @return bool - */ - public function createFile($uri,$data, &$etag = null) { - - list($dir,$name) = Sabre_DAV_URLUtil::splitPath($uri); - - if (!$this->broadcastEvent('beforeBind',array($uri))) return false; - - $parent = $this->tree->getNodeForPath($dir); - - if (!$this->broadcastEvent('beforeCreateFile',array($uri, &$data, $parent))) return false; - - $etag = $parent->createFile($name,$data); - $this->tree->markDirty($dir); - - $this->broadcastEvent('afterBind',array($uri)); - $this->broadcastEvent('afterCreateFile',array($uri, $parent)); - - return true; - } - - /** - * This method is invoked by sub-systems creating a new directory. - * - * @param string $uri - * @return void - */ - public function createDirectory($uri) { - - $this->createCollection($uri,array('{DAV:}collection'),array()); - - } - - /** - * Use this method to create a new collection - * - * The {DAV:}resourcetype is specified using the resourceType array. - * At the very least it must contain {DAV:}collection. - * - * The properties array can contain a list of additional properties. - * - * @param string $uri The new uri - * @param array $resourceType The resourceType(s) - * @param array $properties A list of properties - * @return array|null - */ - public function createCollection($uri, array $resourceType, array $properties) { - - list($parentUri,$newName) = Sabre_DAV_URLUtil::splitPath($uri); - - // Making sure {DAV:}collection was specified as resourceType - if (!in_array('{DAV:}collection', $resourceType)) { - throw new Sabre_DAV_Exception_InvalidResourceType('The resourceType for this collection must at least include {DAV:}collection'); - } - - - // Making sure the parent exists - try { - - $parent = $this->tree->getNodeForPath($parentUri); - - } catch (Sabre_DAV_Exception_NotFound $e) { - - throw new Sabre_DAV_Exception_Conflict('Parent node does not exist'); - - } - - // Making sure the parent is a collection - if (!$parent instanceof Sabre_DAV_ICollection) { - throw new Sabre_DAV_Exception_Conflict('Parent node is not a collection'); - } - - - - // Making sure the child does not already exist - try { - $parent->getChild($newName); - - // If we got here.. it means there's already a node on that url, and we need to throw a 405 - throw new Sabre_DAV_Exception_MethodNotAllowed('The resource you tried to create already exists'); - - } catch (Sabre_DAV_Exception_NotFound $e) { - // This is correct - } - - - if (!$this->broadcastEvent('beforeBind',array($uri))) return; - - // There are 2 modes of operation. The standard collection - // creates the directory, and then updates properties - // the extended collection can create it directly. - if ($parent instanceof Sabre_DAV_IExtendedCollection) { - - $parent->createExtendedCollection($newName, $resourceType, $properties); - - } else { - - // No special resourcetypes are supported - if (count($resourceType)>1) { - throw new Sabre_DAV_Exception_InvalidResourceType('The {DAV:}resourcetype you specified is not supported here.'); - } - - $parent->createDirectory($newName); - $rollBack = false; - $exception = null; - $errorResult = null; - - if (count($properties)>0) { - - try { - - $errorResult = $this->updateProperties($uri, $properties); - if (!isset($errorResult[200])) { - $rollBack = true; - } - - } catch (Sabre_DAV_Exception $e) { - - $rollBack = true; - $exception = $e; - - } - - } - - if ($rollBack) { - if (!$this->broadcastEvent('beforeUnbind',array($uri))) return; - $this->tree->delete($uri); - - // Re-throwing exception - if ($exception) throw $exception; - - return $errorResult; - } - - } - $this->tree->markDirty($parentUri); - $this->broadcastEvent('afterBind',array($uri)); - - } - - /** - * This method updates a resource's properties - * - * The properties array must be a list of properties. Array-keys are - * property names in clarknotation, array-values are it's values. - * If a property must be deleted, the value should be null. - * - * Note that this request should either completely succeed, or - * completely fail. - * - * The response is an array with statuscodes for keys, which in turn - * contain arrays with propertynames. This response can be used - * to generate a multistatus body. - * - * @param string $uri - * @param array $properties - * @return array - */ - public function updateProperties($uri, array $properties) { - - // we'll start by grabbing the node, this will throw the appropriate - // exceptions if it doesn't. - $node = $this->tree->getNodeForPath($uri); - - $result = array( - 200 => array(), - 403 => array(), - 424 => array(), - ); - $remainingProperties = $properties; - $hasError = false; - - // Running through all properties to make sure none of them are protected - if (!$hasError) foreach($properties as $propertyName => $value) { - if(in_array($propertyName, $this->protectedProperties)) { - $result[403][$propertyName] = null; - unset($remainingProperties[$propertyName]); - $hasError = true; - } - } - - if (!$hasError) { - // Allowing plugins to take care of property updating - $hasError = !$this->broadcastEvent('updateProperties',array( - &$remainingProperties, - &$result, - $node - )); - } - - // If the node is not an instance of Sabre_DAV_IProperties, every - // property is 403 Forbidden - if (!$hasError && count($remainingProperties) && !($node instanceof Sabre_DAV_IProperties)) { - $hasError = true; - foreach($properties as $propertyName=> $value) { - $result[403][$propertyName] = null; - } - $remainingProperties = array(); - } - - // Only if there were no errors we may attempt to update the resource - if (!$hasError) { - - if (count($remainingProperties)>0) { - - $updateResult = $node->updateProperties($remainingProperties); - - if ($updateResult===true) { - // success - foreach($remainingProperties as $propertyName=>$value) { - $result[200][$propertyName] = null; - } - - } elseif ($updateResult===false) { - // The node failed to update the properties for an - // unknown reason - foreach($remainingProperties as $propertyName=>$value) { - $result[403][$propertyName] = null; - } - - } elseif (is_array($updateResult)) { - - // The node has detailed update information - // We need to merge the results with the earlier results. - foreach($updateResult as $status => $props) { - if (is_array($props)) { - if (!isset($result[$status])) - $result[$status] = array(); - - $result[$status] = array_merge($result[$status], $updateResult[$status]); - } - } - - } else { - throw new Sabre_DAV_Exception('Invalid result from updateProperties'); - } - $remainingProperties = array(); - } - - } - - foreach($remainingProperties as $propertyName=>$value) { - // if there are remaining properties, it must mean - // there's a dependency failure - $result[424][$propertyName] = null; - } - - // Removing empty array values - foreach($result as $status=>$props) { - - if (count($props)===0) unset($result[$status]); - - } - $result['href'] = $uri; - return $result; - - } - - /** - * This method checks the main HTTP preconditions. - * - * Currently these are: - * * If-Match - * * If-None-Match - * * If-Modified-Since - * * If-Unmodified-Since - * - * The method will return true if all preconditions are met - * The method will return false, or throw an exception if preconditions - * failed. If false is returned the operation should be aborted, and - * the appropriate HTTP response headers are already set. - * - * Normally this method will throw 412 Precondition Failed for failures - * related to If-None-Match, If-Match and If-Unmodified Since. It will - * set the status to 304 Not Modified for If-Modified_since. - * - * If the $handleAsGET argument is set to true, it will also return 304 - * Not Modified for failure of the If-None-Match precondition. This is the - * desired behaviour for HTTP GET and HTTP HEAD requests. - * - * @param bool $handleAsGET - * @return bool - */ - public function checkPreconditions($handleAsGET = false) { - - $uri = $this->getRequestUri(); - $node = null; - $lastMod = null; - $etag = null; - - if ($ifMatch = $this->httpRequest->getHeader('If-Match')) { - - // If-Match contains an entity tag. Only if the entity-tag - // matches we are allowed to make the request succeed. - // If the entity-tag is '*' we are only allowed to make the - // request succeed if a resource exists at that url. - try { - $node = $this->tree->getNodeForPath($uri); - } catch (Sabre_DAV_Exception_NotFound $e) { - throw new Sabre_DAV_Exception_PreconditionFailed('An If-Match header was specified and the resource did not exist','If-Match'); - } - - // Only need to check entity tags if they are not * - if ($ifMatch!=='*') { - - // There can be multiple etags - $ifMatch = explode(',',$ifMatch); - $haveMatch = false; - foreach($ifMatch as $ifMatchItem) { - - // Stripping any extra spaces - $ifMatchItem = trim($ifMatchItem,' '); - - $etag = $node->getETag(); - if ($etag===$ifMatchItem) { - $haveMatch = true; - } else { - // Evolution has a bug where it sometimes prepends the " - // with a \. This is our workaround. - if (str_replace('\\"','"', $ifMatchItem) === $etag) { - $haveMatch = true; - } - } - - } - if (!$haveMatch) { - throw new Sabre_DAV_Exception_PreconditionFailed('An If-Match header was specified, but none of the specified the ETags matched.','If-Match'); - } - } - } - - if ($ifNoneMatch = $this->httpRequest->getHeader('If-None-Match')) { - - // The If-None-Match header contains an etag. - // Only if the ETag does not match the current ETag, the request will succeed - // The header can also contain *, in which case the request - // will only succeed if the entity does not exist at all. - $nodeExists = true; - if (!$node) { - try { - $node = $this->tree->getNodeForPath($uri); - } catch (Sabre_DAV_Exception_NotFound $e) { - $nodeExists = false; - } - } - if ($nodeExists) { - $haveMatch = false; - if ($ifNoneMatch==='*') $haveMatch = true; - else { - - // There might be multiple etags - $ifNoneMatch = explode(',', $ifNoneMatch); - $etag = $node->getETag(); - - foreach($ifNoneMatch as $ifNoneMatchItem) { - - // Stripping any extra spaces - $ifNoneMatchItem = trim($ifNoneMatchItem,' '); - - if ($etag===$ifNoneMatchItem) $haveMatch = true; - - } - - } - - if ($haveMatch) { - if ($handleAsGET) { - $this->httpResponse->sendStatus(304); - return false; - } else { - throw new Sabre_DAV_Exception_PreconditionFailed('An If-None-Match header was specified, but the ETag matched (or * was specified).','If-None-Match'); - } - } - } - - } - - if (!$ifNoneMatch && ($ifModifiedSince = $this->httpRequest->getHeader('If-Modified-Since'))) { - - // The If-Modified-Since header contains a date. We - // will only return the entity if it has been changed since - // that date. If it hasn't been changed, we return a 304 - // header - // Note that this header only has to be checked if there was no If-None-Match header - // as per the HTTP spec. - $date = Sabre_HTTP_Util::parseHTTPDate($ifModifiedSince); - - if ($date) { - if (is_null($node)) { - $node = $this->tree->getNodeForPath($uri); - } - $lastMod = $node->getLastModified(); - if ($lastMod) { - $lastMod = new DateTime('@' . $lastMod); - if ($lastMod <= $date) { - $this->httpResponse->sendStatus(304); - $this->httpResponse->setHeader('Last-Modified', Sabre_HTTP_Util::toHTTPDate($lastMod)); - return false; - } - } - } - } - - if ($ifUnmodifiedSince = $this->httpRequest->getHeader('If-Unmodified-Since')) { - - // The If-Unmodified-Since will allow allow the request if the - // entity has not changed since the specified date. - $date = Sabre_HTTP_Util::parseHTTPDate($ifUnmodifiedSince); - - // We must only check the date if it's valid - if ($date) { - if (is_null($node)) { - $node = $this->tree->getNodeForPath($uri); - } - $lastMod = $node->getLastModified(); - if ($lastMod) { - $lastMod = new DateTime('@' . $lastMod); - if ($lastMod > $date) { - throw new Sabre_DAV_Exception_PreconditionFailed('An If-Unmodified-Since header was specified, but the entity has been changed since the specified date.','If-Unmodified-Since'); - } - } - } - - } - return true; - - } - - // }}} - // {{{ XML Readers & Writers - - - /** - * Generates a WebDAV propfind response body based on a list of nodes - * - * @param array $fileProperties The list with nodes - * @return string - */ - public function generateMultiStatus(array $fileProperties) { - - $dom = new DOMDocument('1.0','utf-8'); - //$dom->formatOutput = true; - $multiStatus = $dom->createElement('d:multistatus'); - $dom->appendChild($multiStatus); - - // Adding in default namespaces - foreach($this->xmlNamespaces as $namespace=>$prefix) { - - $multiStatus->setAttribute('xmlns:' . $prefix,$namespace); - - } - - foreach($fileProperties as $entry) { - - $href = $entry['href']; - unset($entry['href']); - - $response = new Sabre_DAV_Property_Response($href,$entry); - $response->serialize($this,$multiStatus); - - } - - return $dom->saveXML(); - - } - - /** - * This method parses a PropPatch request - * - * PropPatch changes the properties for a resource. This method - * returns a list of properties. - * - * The keys in the returned array contain the property name (e.g.: {DAV:}displayname, - * and the value contains the property value. If a property is to be removed the value - * will be null. - * - * @param string $body xml body - * @return array list of properties in need of updating or deletion - */ - public function parsePropPatchRequest($body) { - - //We'll need to change the DAV namespace declaration to something else in order to make it parsable - $dom = Sabre_DAV_XMLUtil::loadDOMDocument($body); - - $newProperties = array(); - - foreach($dom->firstChild->childNodes as $child) { - - if ($child->nodeType !== XML_ELEMENT_NODE) continue; - - $operation = Sabre_DAV_XMLUtil::toClarkNotation($child); - - if ($operation!=='{DAV:}set' && $operation!=='{DAV:}remove') continue; - - $innerProperties = Sabre_DAV_XMLUtil::parseProperties($child, $this->propertyMap); - - foreach($innerProperties as $propertyName=>$propertyValue) { - - if ($operation==='{DAV:}remove') { - $propertyValue = null; - } - - $newProperties[$propertyName] = $propertyValue; - - } - - } - - return $newProperties; - - } - - /** - * This method parses the PROPFIND request and returns its information - * - * This will either be a list of properties, or an empty array; in which case - * an {DAV:}allprop was requested. - * - * @param string $body - * @return array - */ - public function parsePropFindRequest($body) { - - // If the propfind body was empty, it means IE is requesting 'all' properties - if (!$body) return array(); - - $dom = Sabre_DAV_XMLUtil::loadDOMDocument($body); - $elem = $dom->getElementsByTagNameNS('urn:DAV','propfind')->item(0); - return array_keys(Sabre_DAV_XMLUtil::parseProperties($elem)); - - } - - // }}} - -} - diff --git a/3rdparty/Sabre/DAV/ServerPlugin.php b/3rdparty/Sabre/DAV/ServerPlugin.php deleted file mode 100755 index 131863d13fbf3a9823282d0b9aebb5b7c4e9a760..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/ServerPlugin.php +++ /dev/null @@ -1,90 +0,0 @@ -name = $name; - foreach($children as $child) { - - if (!($child instanceof Sabre_DAV_INode)) throw new Sabre_DAV_Exception('Only instances of Sabre_DAV_INode are allowed to be passed in the children argument'); - $this->addChild($child); - - } - - } - - /** - * Adds a new childnode to this collection - * - * @param Sabre_DAV_INode $child - * @return void - */ - public function addChild(Sabre_DAV_INode $child) { - - $this->children[$child->getName()] = $child; - - } - - /** - * Returns the name of the collection - * - * @return string - */ - public function getName() { - - return $this->name; - - } - - /** - * Returns a child object, by its name. - * - * This method makes use of the getChildren method to grab all the child nodes, and compares the name. - * Generally its wise to override this, as this can usually be optimized - * - * @param string $name - * @throws Sabre_DAV_Exception_NotFound - * @return Sabre_DAV_INode - */ - public function getChild($name) { - - if (isset($this->children[$name])) return $this->children[$name]; - throw new Sabre_DAV_Exception_NotFound('File not found: ' . $name . ' in \'' . $this->getName() . '\''); - - } - - /** - * Returns a list of children for this collection - * - * @return array - */ - public function getChildren() { - - return array_values($this->children); - - } - - -} - diff --git a/3rdparty/Sabre/DAV/SimpleDirectory.php b/3rdparty/Sabre/DAV/SimpleDirectory.php deleted file mode 100755 index 621222ebc53a6dbfc4e3b89f1b58288cee7652bc..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/SimpleDirectory.php +++ /dev/null @@ -1,21 +0,0 @@ -name = $name; - $this->contents = $contents; - $this->mimeType = $mimeType; - - } - - /** - * Returns the node name for this file. - * - * This name is used to construct the url. - * - * @return string - */ - public function getName() { - - return $this->name; - - } - - /** - * Returns the data - * - * This method may either return a string or a readable stream resource - * - * @return mixed - */ - public function get() { - - return $this->contents; - - } - - /** - * Returns the size of the file, in bytes. - * - * @return int - */ - public function getSize() { - - return strlen($this->contents); - - } - - /** - * Returns the ETag for a file - * - * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. - * The ETag is an arbitrary string, but MUST be surrounded by double-quotes. - * - * Return null if the ETag can not effectively be determined - * @return string - */ - public function getETag() { - - return '"' . md5($this->contents) . '"'; - - } - - /** - * Returns the mime-type for a file - * - * If null is returned, we'll assume application/octet-stream - * @return string - */ - public function getContentType() { - - return $this->mimeType; - - } - -} diff --git a/3rdparty/Sabre/DAV/StringUtil.php b/3rdparty/Sabre/DAV/StringUtil.php deleted file mode 100755 index b126a94c82579b7b7602324632c8b368e7d275da..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/StringUtil.php +++ /dev/null @@ -1,91 +0,0 @@ -dataDir = $dataDir; - - } - - /** - * Initialize the plugin - * - * This is called automatically be the Server class after this plugin is - * added with Sabre_DAV_Server::addPlugin() - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - $this->server = $server; - $server->subscribeEvent('beforeMethod',array($this,'beforeMethod')); - $server->subscribeEvent('beforeCreateFile',array($this,'beforeCreateFile')); - - } - - /** - * This method is called before any HTTP method handler - * - * This method intercepts any GET, DELETE, PUT and PROPFIND calls to - * filenames that are known to match the 'temporary file' regex. - * - * @param string $method - * @param string $uri - * @return bool - */ - public function beforeMethod($method, $uri) { - - if (!$tempLocation = $this->isTempFile($uri)) - return true; - - switch($method) { - case 'GET' : - return $this->httpGet($tempLocation); - case 'PUT' : - return $this->httpPut($tempLocation); - case 'PROPFIND' : - return $this->httpPropfind($tempLocation, $uri); - case 'DELETE' : - return $this->httpDelete($tempLocation); - } - return true; - - } - - /** - * This method is invoked if some subsystem creates a new file. - * - * This is used to deal with HTTP LOCK requests which create a new - * file. - * - * @param string $uri - * @param resource $data - * @return bool - */ - public function beforeCreateFile($uri,$data) { - - if ($tempPath = $this->isTempFile($uri)) { - - $hR = $this->server->httpResponse; - $hR->setHeader('X-Sabre-Temp','true'); - file_put_contents($tempPath,$data); - return false; - } - return true; - - } - - /** - * This method will check if the url matches the temporary file pattern - * if it does, it will return an path based on $this->dataDir for the - * temporary file storage. - * - * @param string $path - * @return boolean|string - */ - protected function isTempFile($path) { - - // We're only interested in the basename. - list(, $tempPath) = Sabre_DAV_URLUtil::splitPath($path); - - foreach($this->temporaryFilePatterns as $tempFile) { - - if (preg_match($tempFile,$tempPath)) { - return $this->getDataDir() . '/sabredav_' . md5($path) . '.tempfile'; - } - - } - - return false; - - } - - - /** - * This method handles the GET method for temporary files. - * If the file doesn't exist, it will return false which will kick in - * the regular system for the GET method. - * - * @param string $tempLocation - * @return bool - */ - public function httpGet($tempLocation) { - - if (!file_exists($tempLocation)) return true; - - $hR = $this->server->httpResponse; - $hR->setHeader('Content-Type','application/octet-stream'); - $hR->setHeader('Content-Length',filesize($tempLocation)); - $hR->setHeader('X-Sabre-Temp','true'); - $hR->sendStatus(200); - $hR->sendBody(fopen($tempLocation,'r')); - return false; - - } - - /** - * This method handles the PUT method. - * - * @param string $tempLocation - * @return bool - */ - public function httpPut($tempLocation) { - - $hR = $this->server->httpResponse; - $hR->setHeader('X-Sabre-Temp','true'); - - $newFile = !file_exists($tempLocation); - - if (!$newFile && ($this->server->httpRequest->getHeader('If-None-Match'))) { - throw new Sabre_DAV_Exception_PreconditionFailed('The resource already exists, and an If-None-Match header was supplied'); - } - - file_put_contents($tempLocation,$this->server->httpRequest->getBody()); - $hR->sendStatus($newFile?201:200); - return false; - - } - - /** - * This method handles the DELETE method. - * - * If the file didn't exist, it will return false, which will make the - * standard HTTP DELETE handler kick in. - * - * @param string $tempLocation - * @return bool - */ - public function httpDelete($tempLocation) { - - if (!file_exists($tempLocation)) return true; - - unlink($tempLocation); - $hR = $this->server->httpResponse; - $hR->setHeader('X-Sabre-Temp','true'); - $hR->sendStatus(204); - return false; - - } - - /** - * This method handles the PROPFIND method. - * - * It's a very lazy method, it won't bother checking the request body - * for which properties were requested, and just sends back a default - * set of properties. - * - * @param string $tempLocation - * @param string $uri - * @return bool - */ - public function httpPropfind($tempLocation, $uri) { - - if (!file_exists($tempLocation)) return true; - - $hR = $this->server->httpResponse; - $hR->setHeader('X-Sabre-Temp','true'); - $hR->sendStatus(207); - $hR->setHeader('Content-Type','application/xml; charset=utf-8'); - - $this->server->parsePropFindRequest($this->server->httpRequest->getBody(true)); - - $properties = array( - 'href' => $uri, - 200 => array( - '{DAV:}getlastmodified' => new Sabre_DAV_Property_GetLastModified(filemtime($tempLocation)), - '{DAV:}getcontentlength' => filesize($tempLocation), - '{DAV:}resourcetype' => new Sabre_DAV_Property_ResourceType(null), - '{'.Sabre_DAV_Server::NS_SABREDAV.'}tempFile' => true, - - ), - ); - - $data = $this->server->generateMultiStatus(array($properties)); - $hR->sendBody($data); - return false; - - } - - - /** - * This method returns the directory where the temporary files should be stored. - * - * @return string - */ - protected function getDataDir() - { - return $this->dataDir; - } -} diff --git a/3rdparty/Sabre/DAV/Tree.php b/3rdparty/Sabre/DAV/Tree.php deleted file mode 100755 index 502163941555d209837c3dee0c59b76981d72ab4..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Tree.php +++ /dev/null @@ -1,193 +0,0 @@ -getNodeForPath($path); - return true; - - } catch (Sabre_DAV_Exception_NotFound $e) { - - return false; - - } - - } - - /** - * Copies a file from path to another - * - * @param string $sourcePath The source location - * @param string $destinationPath The full destination path - * @return void - */ - public function copy($sourcePath, $destinationPath) { - - $sourceNode = $this->getNodeForPath($sourcePath); - - // grab the dirname and basename components - list($destinationDir, $destinationName) = Sabre_DAV_URLUtil::splitPath($destinationPath); - - $destinationParent = $this->getNodeForPath($destinationDir); - $this->copyNode($sourceNode,$destinationParent,$destinationName); - - $this->markDirty($destinationDir); - - } - - /** - * Moves a file from one location to another - * - * @param string $sourcePath The path to the file which should be moved - * @param string $destinationPath The full destination path, so not just the destination parent node - * @return int - */ - public function move($sourcePath, $destinationPath) { - - list($sourceDir, $sourceName) = Sabre_DAV_URLUtil::splitPath($sourcePath); - list($destinationDir, $destinationName) = Sabre_DAV_URLUtil::splitPath($destinationPath); - - if ($sourceDir===$destinationDir) { - $renameable = $this->getNodeForPath($sourcePath); - $renameable->setName($destinationName); - } else { - $this->copy($sourcePath,$destinationPath); - $this->getNodeForPath($sourcePath)->delete(); - } - $this->markDirty($sourceDir); - $this->markDirty($destinationDir); - - } - - /** - * Deletes a node from the tree - * - * @param string $path - * @return void - */ - public function delete($path) { - - $node = $this->getNodeForPath($path); - $node->delete(); - - list($parent) = Sabre_DAV_URLUtil::splitPath($path); - $this->markDirty($parent); - - } - - /** - * Returns a list of childnodes for a given path. - * - * @param string $path - * @return array - */ - public function getChildren($path) { - - $node = $this->getNodeForPath($path); - return $node->getChildren(); - - } - - /** - * This method is called with every tree update - * - * Examples of tree updates are: - * * node deletions - * * node creations - * * copy - * * move - * * renaming nodes - * - * If Tree classes implement a form of caching, this will allow - * them to make sure caches will be expired. - * - * If a path is passed, it is assumed that the entire subtree is dirty - * - * @param string $path - * @return void - */ - public function markDirty($path) { - - - } - - /** - * copyNode - * - * @param Sabre_DAV_INode $source - * @param Sabre_DAV_ICollection $destinationParent - * @param string $destinationName - * @return void - */ - protected function copyNode(Sabre_DAV_INode $source,Sabre_DAV_ICollection $destinationParent,$destinationName = null) { - - if (!$destinationName) $destinationName = $source->getName(); - - if ($source instanceof Sabre_DAV_IFile) { - - $data = $source->get(); - - // If the body was a string, we need to convert it to a stream - if (is_string($data)) { - $stream = fopen('php://temp','r+'); - fwrite($stream,$data); - rewind($stream); - $data = $stream; - } - $destinationParent->createFile($destinationName,$data); - $destination = $destinationParent->getChild($destinationName); - - } elseif ($source instanceof Sabre_DAV_ICollection) { - - $destinationParent->createDirectory($destinationName); - - $destination = $destinationParent->getChild($destinationName); - foreach($source->getChildren() as $child) { - - $this->copyNode($child,$destination); - - } - - } - if ($source instanceof Sabre_DAV_IProperties && $destination instanceof Sabre_DAV_IProperties) { - - $props = $source->getProperties(array()); - $destination->updateProperties($props); - - } - - } - -} - diff --git a/3rdparty/Sabre/DAV/Tree/Filesystem.php b/3rdparty/Sabre/DAV/Tree/Filesystem.php deleted file mode 100755 index 40580ae366fe235173661769fd408461e976e999..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/Tree/Filesystem.php +++ /dev/null @@ -1,123 +0,0 @@ -basePath = $basePath; - - } - - /** - * Returns a new node for the given path - * - * @param string $path - * @return Sabre_DAV_FS_Node - */ - public function getNodeForPath($path) { - - $realPath = $this->getRealPath($path); - if (!file_exists($realPath)) throw new Sabre_DAV_Exception_NotFound('File at location ' . $realPath . ' not found'); - if (is_dir($realPath)) { - return new Sabre_DAV_FS_Directory($realPath); - } else { - return new Sabre_DAV_FS_File($realPath); - } - - } - - /** - * Returns the real filesystem path for a webdav url. - * - * @param string $publicPath - * @return string - */ - protected function getRealPath($publicPath) { - - return rtrim($this->basePath,'/') . '/' . trim($publicPath,'/'); - - } - - /** - * Copies a file or directory. - * - * This method must work recursively and delete the destination - * if it exists - * - * @param string $source - * @param string $destination - * @return void - */ - public function copy($source,$destination) { - - $source = $this->getRealPath($source); - $destination = $this->getRealPath($destination); - $this->realCopy($source,$destination); - - } - - /** - * Used by self::copy - * - * @param string $source - * @param string $destination - * @return void - */ - protected function realCopy($source,$destination) { - - if (is_file($source)) { - copy($source,$destination); - } else { - mkdir($destination); - foreach(scandir($source) as $subnode) { - - if ($subnode=='.' || $subnode=='..') continue; - $this->realCopy($source.'/'.$subnode,$destination.'/'.$subnode); - - } - } - - } - - /** - * Moves a file or directory recursively. - * - * If the destination exists, delete it first. - * - * @param string $source - * @param string $destination - * @return void - */ - public function move($source,$destination) { - - $source = $this->getRealPath($source); - $destination = $this->getRealPath($destination); - rename($source,$destination); - - } - -} - diff --git a/3rdparty/Sabre/DAV/URLUtil.php b/3rdparty/Sabre/DAV/URLUtil.php deleted file mode 100755 index 794665a44f68b0ef8fe9d8c7a15adc6841405fe3..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/URLUtil.php +++ /dev/null @@ -1,121 +0,0 @@ - - * will be returned as: - * {http://www.example.org}myelem - * - * This format is used throughout the SabreDAV sourcecode. - * Elements encoded with the urn:DAV namespace will - * be returned as if they were in the DAV: namespace. This is to avoid - * compatibility problems. - * - * This function will return null if a nodetype other than an Element is passed. - * - * @param DOMNode $dom - * @return string - */ - static function toClarkNotation(DOMNode $dom) { - - if ($dom->nodeType !== XML_ELEMENT_NODE) return null; - - // Mapping back to the real namespace, in case it was dav - if ($dom->namespaceURI=='urn:DAV') $ns = 'DAV:'; else $ns = $dom->namespaceURI; - - // Mapping to clark notation - return '{' . $ns . '}' . $dom->localName; - - } - - /** - * Parses a clark-notation string, and returns the namespace and element - * name components. - * - * If the string was invalid, it will throw an InvalidArgumentException. - * - * @param string $str - * @throws InvalidArgumentException - * @return array - */ - static function parseClarkNotation($str) { - - if (!preg_match('/^{([^}]*)}(.*)$/',$str,$matches)) { - throw new InvalidArgumentException('\'' . $str . '\' is not a valid clark-notation formatted string'); - } - - return array( - $matches[1], - $matches[2] - ); - - } - - /** - * This method takes an XML document (as string) and converts all instances of the - * DAV: namespace to urn:DAV - * - * This is unfortunately needed, because the DAV: namespace violates the xml namespaces - * spec, and causes the DOM to throw errors - * - * @param string $xmlDocument - * @return array|string|null - */ - static function convertDAVNamespace($xmlDocument) { - - // This is used to map the DAV: namespace to urn:DAV. This is needed, because the DAV: - // namespace is actually a violation of the XML namespaces specification, and will cause errors - return preg_replace("/xmlns(:[A-Za-z0-9_]*)?=(\"|\')DAV:(\\2)/","xmlns\\1=\\2urn:DAV\\2",$xmlDocument); - - } - - /** - * This method provides a generic way to load a DOMDocument for WebDAV use. - * - * This method throws a Sabre_DAV_Exception_BadRequest exception for any xml errors. - * It does not preserve whitespace, and it converts the DAV: namespace to urn:DAV. - * - * @param string $xml - * @throws Sabre_DAV_Exception_BadRequest - * @return DOMDocument - */ - static function loadDOMDocument($xml) { - - if (empty($xml)) - throw new Sabre_DAV_Exception_BadRequest('Empty XML document sent'); - - // The BitKinex client sends xml documents as UTF-16. PHP 5.3.1 (and presumably lower) - // does not support this, so we must intercept this and convert to UTF-8. - if (substr($xml,0,12) === "\x3c\x00\x3f\x00\x78\x00\x6d\x00\x6c\x00\x20\x00") { - - // Note: the preceeding byte sequence is "]*)encoding="UTF-16"([^>]*)>|u','',$xml); - - } - - // Retaining old error setting - $oldErrorSetting = libxml_use_internal_errors(true); - - // Clearing any previous errors - libxml_clear_errors(); - - $dom = new DOMDocument(); - $dom->loadXML(self::convertDAVNamespace($xml),LIBXML_NOWARNING | LIBXML_NOERROR); - - // We don't generally care about any whitespace - $dom->preserveWhiteSpace = false; - - if ($error = libxml_get_last_error()) { - libxml_clear_errors(); - throw new Sabre_DAV_Exception_BadRequest('The request body had an invalid XML body. (message: ' . $error->message . ', errorcode: ' . $error->code . ', line: ' . $error->line . ')'); - } - - // Restoring old mechanism for error handling - if ($oldErrorSetting===false) libxml_use_internal_errors(false); - - return $dom; - - } - - /** - * Parses all WebDAV properties out of a DOM Element - * - * Generally WebDAV properties are enclosed in {DAV:}prop elements. This - * method helps by going through all these and pulling out the actual - * propertynames, making them array keys and making the property values, - * well.. the array values. - * - * If no value was given (self-closing element) null will be used as the - * value. This is used in for example PROPFIND requests. - * - * Complex values are supported through the propertyMap argument. The - * propertyMap should have the clark-notation properties as it's keys, and - * classnames as values. - * - * When any of these properties are found, the unserialize() method will be - * (statically) called. The result of this method is used as the value. - * - * @param DOMElement $parentNode - * @param array $propertyMap - * @return array - */ - static function parseProperties(DOMElement $parentNode, array $propertyMap = array()) { - - $propList = array(); - foreach($parentNode->childNodes as $propNode) { - - if (Sabre_DAV_XMLUtil::toClarkNotation($propNode)!=='{DAV:}prop') continue; - - foreach($propNode->childNodes as $propNodeData) { - - /* If there are no elements in here, we actually get 1 text node, this special case is dedicated to netdrive */ - if ($propNodeData->nodeType != XML_ELEMENT_NODE) continue; - - $propertyName = Sabre_DAV_XMLUtil::toClarkNotation($propNodeData); - if (isset($propertyMap[$propertyName])) { - $propList[$propertyName] = call_user_func(array($propertyMap[$propertyName],'unserialize'),$propNodeData); - } else { - $propList[$propertyName] = $propNodeData->textContent; - } - } - - - } - return $propList; - - } - -} diff --git a/3rdparty/Sabre/DAV/includes.php b/3rdparty/Sabre/DAV/includes.php deleted file mode 100755 index 6a4890677ea2bdad500410eae9e47ee89f6b914e..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAV/includes.php +++ /dev/null @@ -1,97 +0,0 @@ -principalPrefix = $principalPrefix; - $this->principalBackend = $principalBackend; - - } - - /** - * This method returns a node for a principal. - * - * The passed array contains principal information, and is guaranteed to - * at least contain a uri item. Other properties may or may not be - * supplied by the authentication backend. - * - * @param array $principalInfo - * @return Sabre_DAVACL_IPrincipal - */ - abstract function getChildForPrincipal(array $principalInfo); - - /** - * Returns the name of this collection. - * - * @return string - */ - public function getName() { - - list(,$name) = Sabre_DAV_URLUtil::splitPath($this->principalPrefix); - return $name; - - } - - /** - * Return the list of users - * - * @return array - */ - public function getChildren() { - - if ($this->disableListing) - throw new Sabre_DAV_Exception_MethodNotAllowed('Listing members of this collection is disabled'); - - $children = array(); - foreach($this->principalBackend->getPrincipalsByPrefix($this->principalPrefix) as $principalInfo) { - - $children[] = $this->getChildForPrincipal($principalInfo); - - - } - return $children; - - } - - /** - * Returns a child object, by its name. - * - * @param string $name - * @throws Sabre_DAV_Exception_NotFound - * @return Sabre_DAV_IPrincipal - */ - public function getChild($name) { - - $principalInfo = $this->principalBackend->getPrincipalByPath($this->principalPrefix . '/' . $name); - if (!$principalInfo) throw new Sabre_DAV_Exception_NotFound('Principal with name ' . $name . ' not found'); - return $this->getChildForPrincipal($principalInfo); - - } - - /** - * This method is used to search for principals matching a set of - * properties. - * - * This search is specifically used by RFC3744's principal-property-search - * REPORT. You should at least allow searching on - * http://sabredav.org/ns}email-address. - * - * The actual search should be a unicode-non-case-sensitive search. The - * keys in searchProperties are the WebDAV property names, while the values - * are the property values to search on. - * - * If multiple properties are being searched on, the search should be - * AND'ed. - * - * This method should simply return a list of 'child names', which may be - * used to call $this->getChild in the future. - * - * @param array $searchProperties - * @return array - */ - public function searchPrincipals(array $searchProperties) { - - $result = $this->principalBackend->searchPrincipals($this->principalPrefix, $searchProperties); - $r = array(); - - foreach($result as $row) { - list(, $r[]) = Sabre_DAV_URLUtil::splitPath($row); - } - - return $r; - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Exception/AceConflict.php b/3rdparty/Sabre/DAVACL/Exception/AceConflict.php deleted file mode 100755 index 4b9f93b003631770b295bcd0937db863d2971383..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Exception/AceConflict.php +++ /dev/null @@ -1,32 +0,0 @@ -ownerDocument; - - $np = $doc->createElementNS('DAV:','d:no-ace-conflict'); - $errorNode->appendChild($np); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Exception/NeedPrivileges.php b/3rdparty/Sabre/DAVACL/Exception/NeedPrivileges.php deleted file mode 100755 index 9b055dd9709ec8a9db6df77c98c9523fec426f52..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Exception/NeedPrivileges.php +++ /dev/null @@ -1,81 +0,0 @@ -uri = $uri; - $this->privileges = $privileges; - - parent::__construct('User did not have the required privileges (' . implode(',', $privileges) . ') for path "' . $uri . '"'); - - } - - /** - * Adds in extra information in the xml response. - * - * This method adds the {DAV:}need-privileges element as defined in rfc3744 - * - * @param Sabre_DAV_Server $server - * @param DOMElement $errorNode - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $errorNode) { - - $doc = $errorNode->ownerDocument; - - $np = $doc->createElementNS('DAV:','d:need-privileges'); - $errorNode->appendChild($np); - - foreach($this->privileges as $privilege) { - - $resource = $doc->createElementNS('DAV:','d:resource'); - $np->appendChild($resource); - - $resource->appendChild($doc->createElementNS('DAV:','d:href',$server->getBaseUri() . $this->uri)); - - $priv = $doc->createElementNS('DAV:','d:privilege'); - $resource->appendChild($priv); - - preg_match('/^{([^}]*)}(.*)$/',$privilege,$privilegeParts); - $priv->appendChild($doc->createElementNS($privilegeParts[1],'d:' . $privilegeParts[2])); - - - } - - } - -} - diff --git a/3rdparty/Sabre/DAVACL/Exception/NoAbstract.php b/3rdparty/Sabre/DAVACL/Exception/NoAbstract.php deleted file mode 100755 index f44e3e32281719878e0aa9819272fafaf09ff4f1..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Exception/NoAbstract.php +++ /dev/null @@ -1,32 +0,0 @@ -ownerDocument; - - $np = $doc->createElementNS('DAV:','d:no-abstract'); - $errorNode->appendChild($np); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Exception/NotRecognizedPrincipal.php b/3rdparty/Sabre/DAVACL/Exception/NotRecognizedPrincipal.php deleted file mode 100755 index 8d1e38ca1b470d84d9ce38182bf02507c423b114..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Exception/NotRecognizedPrincipal.php +++ /dev/null @@ -1,32 +0,0 @@ -ownerDocument; - - $np = $doc->createElementNS('DAV:','d:recognized-principal'); - $errorNode->appendChild($np); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Exception/NotSupportedPrivilege.php b/3rdparty/Sabre/DAVACL/Exception/NotSupportedPrivilege.php deleted file mode 100755 index 3b5d012d7fa25f35d7a5b8e6ad5a6dea005238cb..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Exception/NotSupportedPrivilege.php +++ /dev/null @@ -1,32 +0,0 @@ -ownerDocument; - - $np = $doc->createElementNS('DAV:','d:not-supported-privilege'); - $errorNode->appendChild($np); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/IACL.php b/3rdparty/Sabre/DAVACL/IACL.php deleted file mode 100755 index 003e69934834a3b4ef0780b51c723ab486120d40..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/IACL.php +++ /dev/null @@ -1,73 +0,0 @@ - array( - * '{DAV:}prop1' => null, - * ), - * 201 => array( - * '{DAV:}prop2' => null, - * ), - * 403 => array( - * '{DAV:}prop3' => null, - * ), - * 424 => array( - * '{DAV:}prop4' => null, - * ), - * ); - * - * In this previous example prop1 was successfully updated or deleted, and - * prop2 was succesfully created. - * - * prop3 failed to update due to '403 Forbidden' and because of this prop4 - * also could not be updated with '424 Failed dependency'. - * - * This last example was actually incorrect. While 200 and 201 could appear - * in 1 response, if there's any error (403) the other properties should - * always fail with 423 (failed dependency). - * - * But anyway, if you don't want to scratch your head over this, just - * return true or false. - * - * @param string $path - * @param array $mutations - * @return array|bool - */ - function updatePrincipal($path, $mutations); - - /** - * This method is used to search for principals matching a set of - * properties. - * - * This search is specifically used by RFC3744's principal-property-search - * REPORT. You should at least allow searching on - * http://sabredav.org/ns}email-address. - * - * The actual search should be a unicode-non-case-sensitive search. The - * keys in searchProperties are the WebDAV property names, while the values - * are the property values to search on. - * - * If multiple properties are being searched on, the search should be - * AND'ed. - * - * This method should simply return an array with full principal uri's. - * - * If somebody attempted to search on a property the backend does not - * support, you should simply return 0 results. - * - * You can also just return 0 results if you choose to not support - * searching at all, but keep in mind that this may stop certain features - * from working. - * - * @param string $prefixPath - * @param array $searchProperties - * @return array - */ - function searchPrincipals($prefixPath, array $searchProperties); - - /** - * Returns the list of members for a group-principal - * - * @param string $principal - * @return array - */ - function getGroupMemberSet($principal); - - /** - * Returns the list of groups a principal is a member of - * - * @param string $principal - * @return array - */ - function getGroupMembership($principal); - - /** - * Updates the list of group members for a group principal. - * - * The principals should be passed as a list of uri's. - * - * @param string $principal - * @param array $members - * @return void - */ - function setGroupMemberSet($principal, array $members); - -} diff --git a/3rdparty/Sabre/DAVACL/Plugin.php b/3rdparty/Sabre/DAVACL/Plugin.php deleted file mode 100755 index 5c828c6d97be4f0cfc1273303daacc2284c432b6..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Plugin.php +++ /dev/null @@ -1,1348 +0,0 @@ - 'Display name', - '{http://sabredav.org/ns}email-address' => 'Email address', - ); - - /** - * Any principal uri's added here, will automatically be added to the list - * of ACL's. They will effectively receive {DAV:}all privileges, as a - * protected privilege. - * - * @var array - */ - public $adminPrincipals = array(); - - /** - * Returns a list of features added by this plugin. - * - * This list is used in the response of a HTTP OPTIONS request. - * - * @return array - */ - public function getFeatures() { - - return array('access-control'); - - } - - /** - * Returns a list of available methods for a given url - * - * @param string $uri - * @return array - */ - public function getMethods($uri) { - - return array('ACL'); - - } - - /** - * Returns a plugin name. - * - * Using this name other plugins will be able to access other plugins - * using Sabre_DAV_Server::getPlugin - * - * @return string - */ - public function getPluginName() { - - return 'acl'; - - } - - /** - * Returns a list of reports this plugin supports. - * - * This will be used in the {DAV:}supported-report-set property. - * Note that you still need to subscribe to the 'report' event to actually - * implement them - * - * @param string $uri - * @return array - */ - public function getSupportedReportSet($uri) { - - return array( - '{DAV:}expand-property', - '{DAV:}principal-property-search', - '{DAV:}principal-search-property-set', - ); - - } - - - /** - * Checks if the current user has the specified privilege(s). - * - * You can specify a single privilege, or a list of privileges. - * This method will throw an exception if the privilege is not available - * and return true otherwise. - * - * @param string $uri - * @param array|string $privileges - * @param int $recursion - * @param bool $throwExceptions if set to false, this method won't through exceptions. - * @throws Sabre_DAVACL_Exception_NeedPrivileges - * @return bool - */ - public function checkPrivileges($uri, $privileges, $recursion = self::R_PARENT, $throwExceptions = true) { - - if (!is_array($privileges)) $privileges = array($privileges); - - $acl = $this->getCurrentUserPrivilegeSet($uri); - - if (is_null($acl)) { - if ($this->allowAccessToNodesWithoutACL) { - return true; - } else { - if ($throwExceptions) - throw new Sabre_DAVACL_Exception_NeedPrivileges($uri,$privileges); - else - return false; - - } - } - - $failed = array(); - foreach($privileges as $priv) { - - if (!in_array($priv, $acl)) { - $failed[] = $priv; - } - - } - - if ($failed) { - if ($throwExceptions) - throw new Sabre_DAVACL_Exception_NeedPrivileges($uri,$failed); - else - return false; - } - return true; - - } - - /** - * Returns the standard users' principal. - * - * This is one authorative principal url for the current user. - * This method will return null if the user wasn't logged in. - * - * @return string|null - */ - public function getCurrentUserPrincipal() { - - $authPlugin = $this->server->getPlugin('auth'); - if (is_null($authPlugin)) return null; - - $userName = $authPlugin->getCurrentUser(); - if (!$userName) return null; - - return $this->defaultUsernamePath . '/' . $userName; - - } - - /** - * Returns a list of principals that's associated to the current - * user, either directly or through group membership. - * - * @return array - */ - public function getCurrentUserPrincipals() { - - $currentUser = $this->getCurrentUserPrincipal(); - - if (is_null($currentUser)) return array(); - - $check = array($currentUser); - $principals = array($currentUser); - - while(count($check)) { - - $principal = array_shift($check); - - $node = $this->server->tree->getNodeForPath($principal); - if ($node instanceof Sabre_DAVACL_IPrincipal) { - foreach($node->getGroupMembership() as $groupMember) { - - if (!in_array($groupMember, $principals)) { - - $check[] = $groupMember; - $principals[] = $groupMember; - - } - - } - - } - - } - - return $principals; - - } - - /** - * Returns the supported privilege structure for this ACL plugin. - * - * See RFC3744 for more details. Currently we default on a simple, - * standard structure. - * - * You can either get the list of privileges by a uri (path) or by - * specifying a Node. - * - * @param string|Sabre_DAV_INode $node - * @return array - */ - public function getSupportedPrivilegeSet($node) { - - if (is_string($node)) { - $node = $this->server->tree->getNodeForPath($node); - } - - if ($node instanceof Sabre_DAVACL_IACL) { - $result = $node->getSupportedPrivilegeSet(); - - if ($result) - return $result; - } - - return self::getDefaultSupportedPrivilegeSet(); - - } - - /** - * Returns a fairly standard set of privileges, which may be useful for - * other systems to use as a basis. - * - * @return array - */ - static function getDefaultSupportedPrivilegeSet() { - - return array( - 'privilege' => '{DAV:}all', - 'abstract' => true, - 'aggregates' => array( - array( - 'privilege' => '{DAV:}read', - 'aggregates' => array( - array( - 'privilege' => '{DAV:}read-acl', - 'abstract' => true, - ), - array( - 'privilege' => '{DAV:}read-current-user-privilege-set', - 'abstract' => true, - ), - ), - ), // {DAV:}read - array( - 'privilege' => '{DAV:}write', - 'aggregates' => array( - array( - 'privilege' => '{DAV:}write-acl', - 'abstract' => true, - ), - array( - 'privilege' => '{DAV:}write-properties', - 'abstract' => true, - ), - array( - 'privilege' => '{DAV:}write-content', - 'abstract' => true, - ), - array( - 'privilege' => '{DAV:}bind', - 'abstract' => true, - ), - array( - 'privilege' => '{DAV:}unbind', - 'abstract' => true, - ), - array( - 'privilege' => '{DAV:}unlock', - 'abstract' => true, - ), - ), - ), // {DAV:}write - ), - ); // {DAV:}all - - } - - /** - * Returns the supported privilege set as a flat list - * - * This is much easier to parse. - * - * The returned list will be index by privilege name. - * The value is a struct containing the following properties: - * - aggregates - * - abstract - * - concrete - * - * @param string|Sabre_DAV_INode $node - * @return array - */ - final public function getFlatPrivilegeSet($node) { - - $privs = $this->getSupportedPrivilegeSet($node); - - $flat = array(); - $this->getFPSTraverse($privs, null, $flat); - - return $flat; - - } - - /** - * Traverses the privilege set tree for reordering - * - * This function is solely used by getFlatPrivilegeSet, and would have been - * a closure if it wasn't for the fact I need to support PHP 5.2. - * - * @param array $priv - * @param $concrete - * @param array $flat - * @return void - */ - final private function getFPSTraverse($priv, $concrete, &$flat) { - - $myPriv = array( - 'privilege' => $priv['privilege'], - 'abstract' => isset($priv['abstract']) && $priv['abstract'], - 'aggregates' => array(), - 'concrete' => isset($priv['abstract']) && $priv['abstract']?$concrete:$priv['privilege'], - ); - - if (isset($priv['aggregates'])) - foreach($priv['aggregates'] as $subPriv) $myPriv['aggregates'][] = $subPriv['privilege']; - - $flat[$priv['privilege']] = $myPriv; - - if (isset($priv['aggregates'])) { - - foreach($priv['aggregates'] as $subPriv) { - - $this->getFPSTraverse($subPriv, $myPriv['concrete'], $flat); - - } - - } - - } - - /** - * Returns the full ACL list. - * - * Either a uri or a Sabre_DAV_INode may be passed. - * - * null will be returned if the node doesn't support ACLs. - * - * @param string|Sabre_DAV_INode $node - * @return array - */ - public function getACL($node) { - - if (is_string($node)) { - $node = $this->server->tree->getNodeForPath($node); - } - if (!$node instanceof Sabre_DAVACL_IACL) { - return null; - } - $acl = $node->getACL(); - foreach($this->adminPrincipals as $adminPrincipal) { - $acl[] = array( - 'principal' => $adminPrincipal, - 'privilege' => '{DAV:}all', - 'protected' => true, - ); - } - return $acl; - - } - - /** - * Returns a list of privileges the current user has - * on a particular node. - * - * Either a uri or a Sabre_DAV_INode may be passed. - * - * null will be returned if the node doesn't support ACLs. - * - * @param string|Sabre_DAV_INode $node - * @return array - */ - public function getCurrentUserPrivilegeSet($node) { - - if (is_string($node)) { - $node = $this->server->tree->getNodeForPath($node); - } - - $acl = $this->getACL($node); - - if (is_null($acl)) return null; - - $principals = $this->getCurrentUserPrincipals(); - - $collected = array(); - - foreach($acl as $ace) { - - $principal = $ace['principal']; - - switch($principal) { - - case '{DAV:}owner' : - $owner = $node->getOwner(); - if ($owner && in_array($owner, $principals)) { - $collected[] = $ace; - } - break; - - - // 'all' matches for every user - case '{DAV:}all' : - - // 'authenticated' matched for every user that's logged in. - // Since it's not possible to use ACL while not being logged - // in, this is also always true. - case '{DAV:}authenticated' : - $collected[] = $ace; - break; - - // 'unauthenticated' can never occur either, so we simply - // ignore these. - case '{DAV:}unauthenticated' : - break; - - default : - if (in_array($ace['principal'], $principals)) { - $collected[] = $ace; - } - break; - - } - - - - } - - // Now we deduct all aggregated privileges. - $flat = $this->getFlatPrivilegeSet($node); - - $collected2 = array(); - while(count($collected)) { - - $current = array_pop($collected); - $collected2[] = $current['privilege']; - - foreach($flat[$current['privilege']]['aggregates'] as $subPriv) { - $collected2[] = $subPriv; - $collected[] = $flat[$subPriv]; - } - - } - - return array_values(array_unique($collected2)); - - } - - /** - * Principal property search - * - * This method can search for principals matching certain values in - * properties. - * - * This method will return a list of properties for the matched properties. - * - * @param array $searchProperties The properties to search on. This is a - * key-value list. The keys are property - * names, and the values the strings to - * match them on. - * @param array $requestedProperties This is the list of properties to - * return for every match. - * @param string $collectionUri The principal collection to search on. - * If this is ommitted, the standard - * principal collection-set will be used. - * @return array This method returns an array structure similar to - * Sabre_DAV_Server::getPropertiesForPath. Returned - * properties are index by a HTTP status code. - * - */ - public function principalSearch(array $searchProperties, array $requestedProperties, $collectionUri = null) { - - if (!is_null($collectionUri)) { - $uris = array($collectionUri); - } else { - $uris = $this->principalCollectionSet; - } - - $lookupResults = array(); - foreach($uris as $uri) { - - $principalCollection = $this->server->tree->getNodeForPath($uri); - if (!$principalCollection instanceof Sabre_DAVACL_AbstractPrincipalCollection) { - // Not a principal collection, we're simply going to ignore - // this. - continue; - } - - $results = $principalCollection->searchPrincipals($searchProperties); - foreach($results as $result) { - $lookupResults[] = rtrim($uri,'/') . '/' . $result; - } - - } - - $matches = array(); - - foreach($lookupResults as $lookupResult) { - - list($matches[]) = $this->server->getPropertiesForPath($lookupResult, $requestedProperties, 0); - - } - - return $matches; - - } - - /** - * Sets up the plugin - * - * This method is automatically called by the server class. - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - $this->server = $server; - $server->subscribeEvent('beforeGetProperties',array($this,'beforeGetProperties')); - - $server->subscribeEvent('beforeMethod', array($this,'beforeMethod'),20); - $server->subscribeEvent('beforeBind', array($this,'beforeBind'),20); - $server->subscribeEvent('beforeUnbind', array($this,'beforeUnbind'),20); - $server->subscribeEvent('updateProperties',array($this,'updateProperties')); - $server->subscribeEvent('beforeUnlock', array($this,'beforeUnlock'),20); - $server->subscribeEvent('report',array($this,'report')); - $server->subscribeEvent('unknownMethod', array($this, 'unknownMethod')); - - array_push($server->protectedProperties, - '{DAV:}alternate-URI-set', - '{DAV:}principal-URL', - '{DAV:}group-membership', - '{DAV:}principal-collection-set', - '{DAV:}current-user-principal', - '{DAV:}supported-privilege-set', - '{DAV:}current-user-privilege-set', - '{DAV:}acl', - '{DAV:}acl-restrictions', - '{DAV:}inherited-acl-set', - '{DAV:}owner', - '{DAV:}group' - ); - - // Automatically mapping nodes implementing IPrincipal to the - // {DAV:}principal resourcetype. - $server->resourceTypeMapping['Sabre_DAVACL_IPrincipal'] = '{DAV:}principal'; - - // Mapping the group-member-set property to the HrefList property - // class. - $server->propertyMap['{DAV:}group-member-set'] = 'Sabre_DAV_Property_HrefList'; - - } - - - /* {{{ Event handlers */ - - /** - * Triggered before any method is handled - * - * @param string $method - * @param string $uri - * @return void - */ - public function beforeMethod($method, $uri) { - - $exists = $this->server->tree->nodeExists($uri); - - // If the node doesn't exists, none of these checks apply - if (!$exists) return; - - switch($method) { - - case 'GET' : - case 'HEAD' : - case 'OPTIONS' : - // For these 3 we only need to know if the node is readable. - $this->checkPrivileges($uri,'{DAV:}read'); - break; - - case 'PUT' : - case 'LOCK' : - case 'UNLOCK' : - // This method requires the write-content priv if the node - // already exists, and bind on the parent if the node is being - // created. - // The bind privilege is handled in the beforeBind event. - $this->checkPrivileges($uri,'{DAV:}write-content'); - break; - - - case 'PROPPATCH' : - $this->checkPrivileges($uri,'{DAV:}write-properties'); - break; - - case 'ACL' : - $this->checkPrivileges($uri,'{DAV:}write-acl'); - break; - - case 'COPY' : - case 'MOVE' : - // Copy requires read privileges on the entire source tree. - // If the target exists write-content normally needs to be - // checked, however, we're deleting the node beforehand and - // creating a new one after, so this is handled by the - // beforeUnbind event. - // - // The creation of the new node is handled by the beforeBind - // event. - // - // If MOVE is used beforeUnbind will also be used to check if - // the sourcenode can be deleted. - $this->checkPrivileges($uri,'{DAV:}read',self::R_RECURSIVE); - - break; - - } - - } - - /** - * Triggered before a new node is created. - * - * This allows us to check permissions for any operation that creates a - * new node, such as PUT, MKCOL, MKCALENDAR, LOCK, COPY and MOVE. - * - * @param string $uri - * @return void - */ - public function beforeBind($uri) { - - list($parentUri,$nodeName) = Sabre_DAV_URLUtil::splitPath($uri); - $this->checkPrivileges($parentUri,'{DAV:}bind'); - - } - - /** - * Triggered before a node is deleted - * - * This allows us to check permissions for any operation that will delete - * an existing node. - * - * @param string $uri - * @return void - */ - public function beforeUnbind($uri) { - - list($parentUri,$nodeName) = Sabre_DAV_URLUtil::splitPath($uri); - $this->checkPrivileges($parentUri,'{DAV:}unbind',self::R_RECURSIVEPARENTS); - - } - - /** - * Triggered before a node is unlocked. - * - * @param string $uri - * @param Sabre_DAV_Locks_LockInfo $lock - * @TODO: not yet implemented - * @return void - */ - public function beforeUnlock($uri, Sabre_DAV_Locks_LockInfo $lock) { - - - } - - /** - * Triggered before properties are looked up in specific nodes. - * - * @param string $uri - * @param Sabre_DAV_INode $node - * @param array $requestedProperties - * @param array $returnedProperties - * @TODO really should be broken into multiple methods, or even a class. - * @return void - */ - public function beforeGetProperties($uri, Sabre_DAV_INode $node, &$requestedProperties, &$returnedProperties) { - - // Checking the read permission - if (!$this->checkPrivileges($uri,'{DAV:}read',self::R_PARENT,false)) { - - // User is not allowed to read properties - if ($this->hideNodesFromListings) { - return false; - } - - // Marking all requested properties as '403'. - foreach($requestedProperties as $key=>$requestedProperty) { - unset($requestedProperties[$key]); - $returnedProperties[403][$requestedProperty] = null; - } - return; - - } - - /* Adding principal properties */ - if ($node instanceof Sabre_DAVACL_IPrincipal) { - - if (false !== ($index = array_search('{DAV:}alternate-URI-set', $requestedProperties))) { - - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}alternate-URI-set'] = new Sabre_DAV_Property_HrefList($node->getAlternateUriSet()); - - } - if (false !== ($index = array_search('{DAV:}principal-URL', $requestedProperties))) { - - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}principal-URL'] = new Sabre_DAV_Property_Href($node->getPrincipalUrl() . '/'); - - } - if (false !== ($index = array_search('{DAV:}group-member-set', $requestedProperties))) { - - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}group-member-set'] = new Sabre_DAV_Property_HrefList($node->getGroupMemberSet()); - - } - if (false !== ($index = array_search('{DAV:}group-membership', $requestedProperties))) { - - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}group-membership'] = new Sabre_DAV_Property_HrefList($node->getGroupMembership()); - - } - - if (false !== ($index = array_search('{DAV:}displayname', $requestedProperties))) { - - $returnedProperties[200]['{DAV:}displayname'] = $node->getDisplayName(); - - } - - } - if (false !== ($index = array_search('{DAV:}principal-collection-set', $requestedProperties))) { - - unset($requestedProperties[$index]); - $val = $this->principalCollectionSet; - // Ensuring all collections end with a slash - foreach($val as $k=>$v) $val[$k] = $v . '/'; - $returnedProperties[200]['{DAV:}principal-collection-set'] = new Sabre_DAV_Property_HrefList($val); - - } - if (false !== ($index = array_search('{DAV:}current-user-principal', $requestedProperties))) { - - unset($requestedProperties[$index]); - if ($url = $this->getCurrentUserPrincipal()) { - $returnedProperties[200]['{DAV:}current-user-principal'] = new Sabre_DAVACL_Property_Principal(Sabre_DAVACL_Property_Principal::HREF, $url . '/'); - } else { - $returnedProperties[200]['{DAV:}current-user-principal'] = new Sabre_DAVACL_Property_Principal(Sabre_DAVACL_Property_Principal::UNAUTHENTICATED); - } - - } - if (false !== ($index = array_search('{DAV:}supported-privilege-set', $requestedProperties))) { - - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}supported-privilege-set'] = new Sabre_DAVACL_Property_SupportedPrivilegeSet($this->getSupportedPrivilegeSet($node)); - - } - if (false !== ($index = array_search('{DAV:}current-user-privilege-set', $requestedProperties))) { - - if (!$this->checkPrivileges($uri, '{DAV:}read-current-user-privilege-set', self::R_PARENT, false)) { - $returnedProperties[403]['{DAV:}current-user-privilege-set'] = null; - unset($requestedProperties[$index]); - } else { - $val = $this->getCurrentUserPrivilegeSet($node); - if (!is_null($val)) { - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}current-user-privilege-set'] = new Sabre_DAVACL_Property_CurrentUserPrivilegeSet($val); - } - } - - } - - /* The ACL property contains all the permissions */ - if (false !== ($index = array_search('{DAV:}acl', $requestedProperties))) { - - if (!$this->checkPrivileges($uri, '{DAV:}read-acl', self::R_PARENT, false)) { - - unset($requestedProperties[$index]); - $returnedProperties[403]['{DAV:}acl'] = null; - - } else { - - $acl = $this->getACL($node); - if (!is_null($acl)) { - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}acl'] = new Sabre_DAVACL_Property_Acl($this->getACL($node)); - } - - } - - } - - /* The acl-restrictions property contains information on how privileges - * must behave. - */ - if (false !== ($index = array_search('{DAV:}acl-restrictions', $requestedProperties))) { - unset($requestedProperties[$index]); - $returnedProperties[200]['{DAV:}acl-restrictions'] = new Sabre_DAVACL_Property_AclRestrictions(); - } - - } - - /** - * This method intercepts PROPPATCH methods and make sure the - * group-member-set is updated correctly. - * - * @param array $propertyDelta - * @param array $result - * @param Sabre_DAV_INode $node - * @return bool - */ - public function updateProperties(&$propertyDelta, &$result, Sabre_DAV_INode $node) { - - if (!array_key_exists('{DAV:}group-member-set', $propertyDelta)) - return; - - if (is_null($propertyDelta['{DAV:}group-member-set'])) { - $memberSet = array(); - } elseif ($propertyDelta['{DAV:}group-member-set'] instanceof Sabre_DAV_Property_HrefList) { - $memberSet = $propertyDelta['{DAV:}group-member-set']->getHrefs(); - } else { - throw new Sabre_DAV_Exception('The group-member-set property MUST be an instance of Sabre_DAV_Property_HrefList or null'); - } - - if (!($node instanceof Sabre_DAVACL_IPrincipal)) { - $result[403]['{DAV:}group-member-set'] = null; - unset($propertyDelta['{DAV:}group-member-set']); - - // Returning false will stop the updateProperties process - return false; - } - - $node->setGroupMemberSet($memberSet); - - $result[200]['{DAV:}group-member-set'] = null; - unset($propertyDelta['{DAV:}group-member-set']); - - } - - /** - * This method handels HTTP REPORT requests - * - * @param string $reportName - * @param DOMNode $dom - * @return bool - */ - public function report($reportName, $dom) { - - switch($reportName) { - - case '{DAV:}principal-property-search' : - $this->principalPropertySearchReport($dom); - return false; - case '{DAV:}principal-search-property-set' : - $this->principalSearchPropertySetReport($dom); - return false; - case '{DAV:}expand-property' : - $this->expandPropertyReport($dom); - return false; - - } - - } - - /** - * This event is triggered for any HTTP method that is not known by the - * webserver. - * - * @param string $method - * @param string $uri - * @return bool - */ - public function unknownMethod($method, $uri) { - - if ($method!=='ACL') return; - - $this->httpACL($uri); - return false; - - } - - /** - * This method is responsible for handling the 'ACL' event. - * - * @param string $uri - * @return void - */ - public function httpACL($uri) { - - $body = $this->server->httpRequest->getBody(true); - $dom = Sabre_DAV_XMLUtil::loadDOMDocument($body); - - $newAcl = - Sabre_DAVACL_Property_Acl::unserialize($dom->firstChild) - ->getPrivileges(); - - // Normalizing urls - foreach($newAcl as $k=>$newAce) { - $newAcl[$k]['principal'] = $this->server->calculateUri($newAce['principal']); - } - - $node = $this->server->tree->getNodeForPath($uri); - - if (!($node instanceof Sabre_DAVACL_IACL)) { - throw new Sabre_DAV_Exception_MethodNotAllowed('This node does not support the ACL method'); - } - - $oldAcl = $this->getACL($node); - - $supportedPrivileges = $this->getFlatPrivilegeSet($node); - - /* Checking if protected principals from the existing principal set are - not overwritten. */ - foreach($oldAcl as $oldAce) { - - if (!isset($oldAce['protected']) || !$oldAce['protected']) continue; - - $found = false; - foreach($newAcl as $newAce) { - if ( - $newAce['privilege'] === $oldAce['privilege'] && - $newAce['principal'] === $oldAce['principal'] && - $newAce['protected'] - ) - $found = true; - } - - if (!$found) - throw new Sabre_DAVACL_Exception_AceConflict('This resource contained a protected {DAV:}ace, but this privilege did not occur in the ACL request'); - - } - - foreach($newAcl as $newAce) { - - // Do we recognize the privilege - if (!isset($supportedPrivileges[$newAce['privilege']])) { - throw new Sabre_DAVACL_Exception_NotSupportedPrivilege('The privilege you specified (' . $newAce['privilege'] . ') is not recognized by this server'); - } - - if ($supportedPrivileges[$newAce['privilege']]['abstract']) { - throw new Sabre_DAVACL_Exception_NoAbstract('The privilege you specified (' . $newAce['privilege'] . ') is an abstract privilege'); - } - - // Looking up the principal - try { - $principal = $this->server->tree->getNodeForPath($newAce['principal']); - } catch (Sabre_DAV_Exception_NotFound $e) { - throw new Sabre_DAVACL_Exception_NotRecognizedPrincipal('The specified principal (' . $newAce['principal'] . ') does not exist'); - } - if (!($principal instanceof Sabre_DAVACL_IPrincipal)) { - throw new Sabre_DAVACL_Exception_NotRecognizedPrincipal('The specified uri (' . $newAce['principal'] . ') is not a principal'); - } - - } - $node->setACL($newAcl); - - } - - /* }}} */ - - /* Reports {{{ */ - - /** - * The expand-property report is defined in RFC3253 section 3-8. - * - * This report is very similar to a standard PROPFIND. The difference is - * that it has the additional ability to look at properties containing a - * {DAV:}href element, follow that property and grab additional elements - * there. - * - * Other rfc's, such as ACL rely on this report, so it made sense to put - * it in this plugin. - * - * @param DOMElement $dom - * @return void - */ - protected function expandPropertyReport($dom) { - - $requestedProperties = $this->parseExpandPropertyReportRequest($dom->firstChild->firstChild); - $depth = $this->server->getHTTPDepth(0); - $requestUri = $this->server->getRequestUri(); - - $result = $this->expandProperties($requestUri,$requestedProperties,$depth); - - $dom = new DOMDocument('1.0','utf-8'); - $dom->formatOutput = true; - $multiStatus = $dom->createElement('d:multistatus'); - $dom->appendChild($multiStatus); - - // Adding in default namespaces - foreach($this->server->xmlNamespaces as $namespace=>$prefix) { - - $multiStatus->setAttribute('xmlns:' . $prefix,$namespace); - - } - - foreach($result as $response) { - $response->serialize($this->server, $multiStatus); - } - - $xml = $dom->saveXML(); - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->sendStatus(207); - $this->server->httpResponse->sendBody($xml); - - } - - /** - * This method is used by expandPropertyReport to parse - * out the entire HTTP request. - * - * @param DOMElement $node - * @return array - */ - protected function parseExpandPropertyReportRequest($node) { - - $requestedProperties = array(); - do { - - if (Sabre_DAV_XMLUtil::toClarkNotation($node)!=='{DAV:}property') continue; - - if ($node->firstChild) { - - $children = $this->parseExpandPropertyReportRequest($node->firstChild); - - } else { - - $children = array(); - - } - - $namespace = $node->getAttribute('namespace'); - if (!$namespace) $namespace = 'DAV:'; - - $propName = '{'.$namespace.'}' . $node->getAttribute('name'); - $requestedProperties[$propName] = $children; - - } while ($node = $node->nextSibling); - - return $requestedProperties; - - } - - /** - * This method expands all the properties and returns - * a list with property values - * - * @param array $path - * @param array $requestedProperties the list of required properties - * @param int $depth - * @return array - */ - protected function expandProperties($path, array $requestedProperties, $depth) { - - $foundProperties = $this->server->getPropertiesForPath($path, array_keys($requestedProperties), $depth); - - $result = array(); - - foreach($foundProperties as $node) { - - foreach($requestedProperties as $propertyName=>$childRequestedProperties) { - - // We're only traversing if sub-properties were requested - if(count($childRequestedProperties)===0) continue; - - // We only have to do the expansion if the property was found - // and it contains an href element. - if (!array_key_exists($propertyName,$node[200])) continue; - - if ($node[200][$propertyName] instanceof Sabre_DAV_Property_IHref) { - $hrefs = array($node[200][$propertyName]->getHref()); - } elseif ($node[200][$propertyName] instanceof Sabre_DAV_Property_HrefList) { - $hrefs = $node[200][$propertyName]->getHrefs(); - } - - $childProps = array(); - foreach($hrefs as $href) { - $childProps = array_merge($childProps, $this->expandProperties($href, $childRequestedProperties, 0)); - } - $node[200][$propertyName] = new Sabre_DAV_Property_ResponseList($childProps); - - } - $result[] = new Sabre_DAV_Property_Response($path, $node); - - } - - return $result; - - } - - /** - * principalSearchPropertySetReport - * - * This method responsible for handing the - * {DAV:}principal-search-property-set report. This report returns a list - * of properties the client may search on, using the - * {DAV:}principal-property-search report. - * - * @param DOMDocument $dom - * @return void - */ - protected function principalSearchPropertySetReport(DOMDocument $dom) { - - $httpDepth = $this->server->getHTTPDepth(0); - if ($httpDepth!==0) { - throw new Sabre_DAV_Exception_BadRequest('This report is only defined when Depth: 0'); - } - - if ($dom->firstChild->hasChildNodes()) - throw new Sabre_DAV_Exception_BadRequest('The principal-search-property-set report element is not allowed to have child elements'); - - $dom = new DOMDocument('1.0','utf-8'); - $dom->formatOutput = true; - $root = $dom->createElement('d:principal-search-property-set'); - $dom->appendChild($root); - // Adding in default namespaces - foreach($this->server->xmlNamespaces as $namespace=>$prefix) { - - $root->setAttribute('xmlns:' . $prefix,$namespace); - - } - - $nsList = $this->server->xmlNamespaces; - - foreach($this->principalSearchPropertySet as $propertyName=>$description) { - - $psp = $dom->createElement('d:principal-search-property'); - $root->appendChild($psp); - - $prop = $dom->createElement('d:prop'); - $psp->appendChild($prop); - - $propName = null; - preg_match('/^{([^}]*)}(.*)$/',$propertyName,$propName); - - $currentProperty = $dom->createElement($nsList[$propName[1]] . ':' . $propName[2]); - $prop->appendChild($currentProperty); - - $descriptionElem = $dom->createElement('d:description'); - $descriptionElem->setAttribute('xml:lang','en'); - $descriptionElem->appendChild($dom->createTextNode($description)); - $psp->appendChild($descriptionElem); - - - } - - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->sendStatus(200); - $this->server->httpResponse->sendBody($dom->saveXML()); - - } - - /** - * principalPropertySearchReport - * - * This method is responsible for handing the - * {DAV:}principal-property-search report. This report can be used for - * clients to search for groups of principals, based on the value of one - * or more properties. - * - * @param DOMDocument $dom - * @return void - */ - protected function principalPropertySearchReport(DOMDocument $dom) { - - list($searchProperties, $requestedProperties, $applyToPrincipalCollectionSet) = $this->parsePrincipalPropertySearchReportRequest($dom); - - $uri = null; - if (!$applyToPrincipalCollectionSet) { - $uri = $this->server->getRequestUri(); - } - $result = $this->principalSearch($searchProperties, $requestedProperties, $uri); - - $xml = $this->server->generateMultiStatus($result); - $this->server->httpResponse->setHeader('Content-Type','application/xml; charset=utf-8'); - $this->server->httpResponse->sendStatus(207); - $this->server->httpResponse->sendBody($xml); - - } - - /** - * parsePrincipalPropertySearchReportRequest - * - * This method parses the request body from a - * {DAV:}principal-property-search report. - * - * This method returns an array with two elements: - * 1. an array with properties to search on, and their values - * 2. a list of propertyvalues that should be returned for the request. - * - * @param DOMDocument $dom - * @return array - */ - protected function parsePrincipalPropertySearchReportRequest($dom) { - - $httpDepth = $this->server->getHTTPDepth(0); - if ($httpDepth!==0) { - throw new Sabre_DAV_Exception_BadRequest('This report is only defined when Depth: 0'); - } - - $searchProperties = array(); - - $applyToPrincipalCollectionSet = false; - - // Parsing the search request - foreach($dom->firstChild->childNodes as $searchNode) { - - if (Sabre_DAV_XMLUtil::toClarkNotation($searchNode) == '{DAV:}apply-to-principal-collection-set') { - $applyToPrincipalCollectionSet = true; - } - - if (Sabre_DAV_XMLUtil::toClarkNotation($searchNode)!=='{DAV:}property-search') - continue; - - $propertyName = null; - $propertyValue = null; - - foreach($searchNode->childNodes as $childNode) { - - switch(Sabre_DAV_XMLUtil::toClarkNotation($childNode)) { - - case '{DAV:}prop' : - $property = Sabre_DAV_XMLUtil::parseProperties($searchNode); - reset($property); - $propertyName = key($property); - break; - - case '{DAV:}match' : - $propertyValue = $childNode->textContent; - break; - - } - - - } - - if (is_null($propertyName) || is_null($propertyValue)) - throw new Sabre_DAV_Exception_BadRequest('Invalid search request. propertyname: ' . $propertyName . '. propertvvalue: ' . $propertyValue); - - $searchProperties[$propertyName] = $propertyValue; - - } - - return array($searchProperties, array_keys(Sabre_DAV_XMLUtil::parseProperties($dom->firstChild)), $applyToPrincipalCollectionSet); - - } - - - /* }}} */ - -} diff --git a/3rdparty/Sabre/DAVACL/Principal.php b/3rdparty/Sabre/DAVACL/Principal.php deleted file mode 100755 index 51c6658afd64ce3c626682208389965a1ddce361..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Principal.php +++ /dev/null @@ -1,279 +0,0 @@ -principalBackend = $principalBackend; - $this->principalProperties = $principalProperties; - - } - - /** - * Returns the full principal url - * - * @return string - */ - public function getPrincipalUrl() { - - return $this->principalProperties['uri']; - - } - - /** - * Returns a list of alternative urls for a principal - * - * This can for example be an email address, or ldap url. - * - * @return array - */ - public function getAlternateUriSet() { - - $uris = array(); - if (isset($this->principalProperties['{DAV:}alternate-URI-set'])) { - - $uris = $this->principalProperties['{DAV:}alternate-URI-set']; - - } - - if (isset($this->principalProperties['{http://sabredav.org/ns}email-address'])) { - $uris[] = 'mailto:' . $this->principalProperties['{http://sabredav.org/ns}email-address']; - } - - return array_unique($uris); - - } - - /** - * Returns the list of group members - * - * If this principal is a group, this function should return - * all member principal uri's for the group. - * - * @return array - */ - public function getGroupMemberSet() { - - return $this->principalBackend->getGroupMemberSet($this->principalProperties['uri']); - - } - - /** - * Returns the list of groups this principal is member of - * - * If this principal is a member of a (list of) groups, this function - * should return a list of principal uri's for it's members. - * - * @return array - */ - public function getGroupMembership() { - - return $this->principalBackend->getGroupMemberShip($this->principalProperties['uri']); - - } - - - /** - * Sets a list of group members - * - * If this principal is a group, this method sets all the group members. - * The list of members is always overwritten, never appended to. - * - * This method should throw an exception if the members could not be set. - * - * @param array $groupMembers - * @return void - */ - public function setGroupMemberSet(array $groupMembers) { - - $this->principalBackend->setGroupMemberSet($this->principalProperties['uri'], $groupMembers); - - } - - - /** - * Returns this principals name. - * - * @return string - */ - public function getName() { - - $uri = $this->principalProperties['uri']; - list(, $name) = Sabre_DAV_URLUtil::splitPath($uri); - return $name; - - } - - /** - * Returns the name of the user - * - * @return string - */ - public function getDisplayName() { - - if (isset($this->principalProperties['{DAV:}displayname'])) { - return $this->principalProperties['{DAV:}displayname']; - } else { - return $this->getName(); - } - - } - - /** - * Returns a list of properties - * - * @param array $requestedProperties - * @return array - */ - public function getProperties($requestedProperties) { - - $newProperties = array(); - foreach($requestedProperties as $propName) { - - if (isset($this->principalProperties[$propName])) { - $newProperties[$propName] = $this->principalProperties[$propName]; - } - - } - - return $newProperties; - - } - - /** - * Updates this principals properties. - * - * @param array $mutations - * @see Sabre_DAV_IProperties::updateProperties - * @return bool|array - */ - public function updateProperties($mutations) { - - return $this->principalBackend->updatePrincipal($this->principalProperties['uri'], $mutations); - - } - - /** - * Returns the owner principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getOwner() { - - return $this->principalProperties['uri']; - - - } - - /** - * Returns a group principal - * - * This must be a url to a principal, or null if there's no owner - * - * @return string|null - */ - public function getGroup() { - - return null; - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $this->getPrincipalUrl(), - 'protected' => true, - ), - ); - - } - - /** - * Updates the ACL - * - * This method will receive a list of new ACE's. - * - * @param array $acl - * @return void - */ - public function setACL(array $acl) { - - throw new Sabre_DAV_Exception_MethodNotAllowed('Updating ACLs is not allowed here'); - - } - - /** - * Returns the list of supported privileges for this node. - * - * The returned data structure is a list of nested privileges. - * See Sabre_DAVACL_Plugin::getDefaultSupportedPrivilegeSet for a simple - * standard structure. - * - * If null is returned from this method, the default privilege set is used, - * which is fine for most common usecases. - * - * @return array|null - */ - public function getSupportedPrivilegeSet() { - - return null; - - } - -} diff --git a/3rdparty/Sabre/DAVACL/PrincipalBackend/PDO.php b/3rdparty/Sabre/DAVACL/PrincipalBackend/PDO.php deleted file mode 100755 index a76b4a9d7279dcaf47e7286eb718c237b6ca4d5a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/PrincipalBackend/PDO.php +++ /dev/null @@ -1,427 +0,0 @@ - array( - 'dbField' => 'displayname', - ), - - /** - * This property is actually used by the CardDAV plugin, where it gets - * mapped to {http://calendarserver.orgi/ns/}me-card. - * - * The reason we don't straight-up use that property, is because - * me-card is defined as a property on the users' addressbook - * collection. - */ - '{http://sabredav.org/ns}vcard-url' => array( - 'dbField' => 'vcardurl', - ), - /** - * This is the users' primary email-address. - */ - '{http://sabredav.org/ns}email-address' => array( - 'dbField' => 'email', - ), - ); - - /** - * Sets up the backend. - * - * @param PDO $pdo - * @param string $tableName - * @param string $groupMembersTableName - */ - public function __construct(PDO $pdo, $tableName = 'principals', $groupMembersTableName = 'groupmembers') { - - $this->pdo = $pdo; - $this->tableName = $tableName; - $this->groupMembersTableName = $groupMembersTableName; - - } - - - /** - * Returns a list of principals based on a prefix. - * - * This prefix will often contain something like 'principals'. You are only - * expected to return principals that are in this base path. - * - * You are expected to return at least a 'uri' for every user, you can - * return any additional properties if you wish so. Common properties are: - * {DAV:}displayname - * {http://sabredav.org/ns}email-address - This is a custom SabreDAV - * field that's actualy injected in a number of other properties. If - * you have an email address, use this property. - * - * @param string $prefixPath - * @return array - */ - public function getPrincipalsByPrefix($prefixPath) { - - $fields = array( - 'uri', - ); - - foreach($this->fieldMap as $key=>$value) { - $fields[] = $value['dbField']; - } - $result = $this->pdo->query('SELECT '.implode(',', $fields).' FROM '. $this->tableName); - - $principals = array(); - - while($row = $result->fetch(PDO::FETCH_ASSOC)) { - - // Checking if the principal is in the prefix - list($rowPrefix) = Sabre_DAV_URLUtil::splitPath($row['uri']); - if ($rowPrefix !== $prefixPath) continue; - - $principal = array( - 'uri' => $row['uri'], - ); - foreach($this->fieldMap as $key=>$value) { - if ($row[$value['dbField']]) { - $principal[$key] = $row[$value['dbField']]; - } - } - $principals[] = $principal; - - } - - return $principals; - - } - - /** - * Returns a specific principal, specified by it's path. - * The returned structure should be the exact same as from - * getPrincipalsByPrefix. - * - * @param string $path - * @return array - */ - public function getPrincipalByPath($path) { - - $fields = array( - 'id', - 'uri', - ); - - foreach($this->fieldMap as $key=>$value) { - $fields[] = $value['dbField']; - } - $stmt = $this->pdo->prepare('SELECT '.implode(',', $fields).' FROM '. $this->tableName . ' WHERE uri = ?'); - $stmt->execute(array($path)); - - $row = $stmt->fetch(PDO::FETCH_ASSOC); - if (!$row) return; - - $principal = array( - 'id' => $row['id'], - 'uri' => $row['uri'], - ); - foreach($this->fieldMap as $key=>$value) { - if ($row[$value['dbField']]) { - $principal[$key] = $row[$value['dbField']]; - } - } - return $principal; - - } - - /** - * Updates one ore more webdav properties on a principal. - * - * The list of mutations is supplied as an array. Each key in the array is - * a propertyname, such as {DAV:}displayname. - * - * Each value is the actual value to be updated. If a value is null, it - * must be deleted. - * - * This method should be atomic. It must either completely succeed, or - * completely fail. Success and failure can simply be returned as 'true' or - * 'false'. - * - * It is also possible to return detailed failure information. In that case - * an array such as this should be returned: - * - * array( - * 200 => array( - * '{DAV:}prop1' => null, - * ), - * 201 => array( - * '{DAV:}prop2' => null, - * ), - * 403 => array( - * '{DAV:}prop3' => null, - * ), - * 424 => array( - * '{DAV:}prop4' => null, - * ), - * ); - * - * In this previous example prop1 was successfully updated or deleted, and - * prop2 was succesfully created. - * - * prop3 failed to update due to '403 Forbidden' and because of this prop4 - * also could not be updated with '424 Failed dependency'. - * - * This last example was actually incorrect. While 200 and 201 could appear - * in 1 response, if there's any error (403) the other properties should - * always fail with 423 (failed dependency). - * - * But anyway, if you don't want to scratch your head over this, just - * return true or false. - * - * @param string $path - * @param array $mutations - * @return array|bool - */ - public function updatePrincipal($path, $mutations) { - - $updateAble = array(); - foreach($mutations as $key=>$value) { - - // We are not aware of this field, we must fail. - if (!isset($this->fieldMap[$key])) { - - $response = array( - 403 => array( - $key => null, - ), - 424 => array(), - ); - - // Adding the rest to the response as a 424 - foreach($mutations as $subKey=>$subValue) { - if ($subKey !== $key) { - $response[424][$subKey] = null; - } - } - return $response; - } - - $updateAble[$this->fieldMap[$key]['dbField']] = $value; - - } - - // No fields to update - $query = "UPDATE " . $this->tableName . " SET "; - - $first = true; - foreach($updateAble as $key => $value) { - if (!$first) { - $query.= ', '; - } - $first = false; - $query.= "$key = :$key "; - } - $query.='WHERE uri = :uri'; - $stmt = $this->pdo->prepare($query); - $updateAble['uri'] = $path; - $stmt->execute($updateAble); - - return true; - - } - - /** - * This method is used to search for principals matching a set of - * properties. - * - * This search is specifically used by RFC3744's principal-property-search - * REPORT. You should at least allow searching on - * http://sabredav.org/ns}email-address. - * - * The actual search should be a unicode-non-case-sensitive search. The - * keys in searchProperties are the WebDAV property names, while the values - * are the property values to search on. - * - * If multiple properties are being searched on, the search should be - * AND'ed. - * - * This method should simply return an array with full principal uri's. - * - * If somebody attempted to search on a property the backend does not - * support, you should simply return 0 results. - * - * You can also just return 0 results if you choose to not support - * searching at all, but keep in mind that this may stop certain features - * from working. - * - * @param string $prefixPath - * @param array $searchProperties - * @return array - */ - public function searchPrincipals($prefixPath, array $searchProperties) { - - $query = 'SELECT uri FROM ' . $this->tableName . ' WHERE 1=1 '; - $values = array(); - foreach($searchProperties as $property => $value) { - - switch($property) { - - case '{DAV:}displayname' : - $query.=' AND displayname LIKE ?'; - $values[] = '%' . $value . '%'; - break; - case '{http://sabredav.org/ns}email-address' : - $query.=' AND email LIKE ?'; - $values[] = '%' . $value . '%'; - break; - default : - // Unsupported property - return array(); - - } - - } - $stmt = $this->pdo->prepare($query); - $stmt->execute($values); - - $principals = array(); - while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { - - // Checking if the principal is in the prefix - list($rowPrefix) = Sabre_DAV_URLUtil::splitPath($row['uri']); - if ($rowPrefix !== $prefixPath) continue; - - $principals[] = $row['uri']; - - } - - return $principals; - - } - - /** - * Returns the list of members for a group-principal - * - * @param string $principal - * @return array - */ - public function getGroupMemberSet($principal) { - - $principal = $this->getPrincipalByPath($principal); - if (!$principal) throw new Sabre_DAV_Exception('Principal not found'); - - $stmt = $this->pdo->prepare('SELECT principals.uri as uri FROM '.$this->groupMembersTableName.' AS groupmembers LEFT JOIN '.$this->tableName.' AS principals ON groupmembers.member_id = principals.id WHERE groupmembers.principal_id = ?'); - $stmt->execute(array($principal['id'])); - - $result = array(); - while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { - $result[] = $row['uri']; - } - return $result; - - } - - /** - * Returns the list of groups a principal is a member of - * - * @param string $principal - * @return array - */ - public function getGroupMembership($principal) { - - $principal = $this->getPrincipalByPath($principal); - if (!$principal) throw new Sabre_DAV_Exception('Principal not found'); - - $stmt = $this->pdo->prepare('SELECT principals.uri as uri FROM '.$this->groupMembersTableName.' AS groupmembers LEFT JOIN '.$this->tableName.' AS principals ON groupmembers.principal_id = principals.id WHERE groupmembers.member_id = ?'); - $stmt->execute(array($principal['id'])); - - $result = array(); - while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { - $result[] = $row['uri']; - } - return $result; - - } - - /** - * Updates the list of group members for a group principal. - * - * The principals should be passed as a list of uri's. - * - * @param string $principal - * @param array $members - * @return void - */ - public function setGroupMemberSet($principal, array $members) { - - // Grabbing the list of principal id's. - $stmt = $this->pdo->prepare('SELECT id, uri FROM '.$this->tableName.' WHERE uri IN (? ' . str_repeat(', ? ', count($members)) . ');'); - $stmt->execute(array_merge(array($principal), $members)); - - $memberIds = array(); - $principalId = null; - - while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { - if ($row['uri'] == $principal) { - $principalId = $row['id']; - } else { - $memberIds[] = $row['id']; - } - } - if (!$principalId) throw new Sabre_DAV_Exception('Principal not found'); - - // Wiping out old members - $stmt = $this->pdo->prepare('DELETE FROM '.$this->groupMembersTableName.' WHERE principal_id = ?;'); - $stmt->execute(array($principalId)); - - foreach($memberIds as $memberId) { - - $stmt = $this->pdo->prepare('INSERT INTO '.$this->groupMembersTableName.' (principal_id, member_id) VALUES (?, ?);'); - $stmt->execute(array($principalId, $memberId)); - - } - - } - -} diff --git a/3rdparty/Sabre/DAVACL/PrincipalCollection.php b/3rdparty/Sabre/DAVACL/PrincipalCollection.php deleted file mode 100755 index c3e4cb83f23c4d004b15c884f0a5253a70c5fbf1..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/PrincipalCollection.php +++ /dev/null @@ -1,35 +0,0 @@ -principalBackend, $principal); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Property/Acl.php b/3rdparty/Sabre/DAVACL/Property/Acl.php deleted file mode 100755 index 05e1a690b3cb23c1fdb3ba05ce19b18aa41f9fd7..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Property/Acl.php +++ /dev/null @@ -1,209 +0,0 @@ -privileges = $privileges; - $this->prefixBaseUrl = $prefixBaseUrl; - - } - - /** - * Returns the list of privileges for this property - * - * @return array - */ - public function getPrivileges() { - - return $this->privileges; - - } - - /** - * Serializes the property into a DOMElement - * - * @param Sabre_DAV_Server $server - * @param DOMElement $node - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $node) { - - $doc = $node->ownerDocument; - foreach($this->privileges as $ace) { - - $this->serializeAce($doc, $node, $ace, $server); - - } - - } - - /** - * Unserializes the {DAV:}acl xml element. - * - * @param DOMElement $dom - * @return Sabre_DAVACL_Property_Acl - */ - static public function unserialize(DOMElement $dom) { - - $privileges = array(); - $xaces = $dom->getElementsByTagNameNS('urn:DAV','ace'); - for($ii=0; $ii < $xaces->length; $ii++) { - - $xace = $xaces->item($ii); - $principal = $xace->getElementsByTagNameNS('urn:DAV','principal'); - if ($principal->length !== 1) { - throw new Sabre_DAV_Exception_BadRequest('Each {DAV:}ace element must have one {DAV:}principal element'); - } - $principal = Sabre_DAVACL_Property_Principal::unserialize($principal->item(0)); - - switch($principal->getType()) { - case Sabre_DAVACL_Property_Principal::HREF : - $principal = $principal->getHref(); - break; - case Sabre_DAVACL_Property_Principal::AUTHENTICATED : - $principal = '{DAV:}authenticated'; - break; - case Sabre_DAVACL_Property_Principal::UNAUTHENTICATED : - $principal = '{DAV:}unauthenticated'; - break; - case Sabre_DAVACL_Property_Principal::ALL : - $principal = '{DAV:}all'; - break; - - } - - $protected = false; - - if ($xace->getElementsByTagNameNS('urn:DAV','protected')->length > 0) { - $protected = true; - } - - $grants = $xace->getElementsByTagNameNS('urn:DAV','grant'); - if ($grants->length < 1) { - throw new Sabre_DAV_Exception_NotImplemented('Every {DAV:}ace element must have a {DAV:}grant element. {DAV:}deny is not yet supported'); - } - $grant = $grants->item(0); - - $xprivs = $grant->getElementsByTagNameNS('urn:DAV','privilege'); - for($jj=0; $jj<$xprivs->length; $jj++) { - - $xpriv = $xprivs->item($jj); - - $privilegeName = null; - - for ($kk=0;$kk<$xpriv->childNodes->length;$kk++) { - - $childNode = $xpriv->childNodes->item($kk); - if ($t = Sabre_DAV_XMLUtil::toClarkNotation($childNode)) { - $privilegeName = $t; - break; - } - } - if (is_null($privilegeName)) { - throw new Sabre_DAV_Exception_BadRequest('{DAV:}privilege elements must have a privilege element contained within them.'); - } - - $privileges[] = array( - 'principal' => $principal, - 'protected' => $protected, - 'privilege' => $privilegeName, - ); - - } - - } - - return new self($privileges); - - } - - /** - * Serializes a single access control entry. - * - * @param DOMDocument $doc - * @param DOMElement $node - * @param array $ace - * @param Sabre_DAV_Server $server - * @return void - */ - private function serializeAce($doc,$node,$ace, $server) { - - $xace = $doc->createElementNS('DAV:','d:ace'); - $node->appendChild($xace); - - $principal = $doc->createElementNS('DAV:','d:principal'); - $xace->appendChild($principal); - switch($ace['principal']) { - case '{DAV:}authenticated' : - $principal->appendChild($doc->createElementNS('DAV:','d:authenticated')); - break; - case '{DAV:}unauthenticated' : - $principal->appendChild($doc->createElementNS('DAV:','d:unauthenticated')); - break; - case '{DAV:}all' : - $principal->appendChild($doc->createElementNS('DAV:','d:all')); - break; - default: - $principal->appendChild($doc->createElementNS('DAV:','d:href',($this->prefixBaseUrl?$server->getBaseUri():'') . $ace['principal'] . '/')); - } - - $grant = $doc->createElementNS('DAV:','d:grant'); - $xace->appendChild($grant); - - $privParts = null; - - preg_match('/^{([^}]*)}(.*)$/',$ace['privilege'],$privParts); - - $xprivilege = $doc->createElementNS('DAV:','d:privilege'); - $grant->appendChild($xprivilege); - - $xprivilege->appendChild($doc->createElementNS($privParts[1],'d:'.$privParts[2])); - - if (isset($ace['protected']) && $ace['protected']) - $xace->appendChild($doc->createElement('d:protected')); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Property/AclRestrictions.php b/3rdparty/Sabre/DAVACL/Property/AclRestrictions.php deleted file mode 100755 index a8b054956ddc705eb1e6b01c9610199ae02199d7..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Property/AclRestrictions.php +++ /dev/null @@ -1,32 +0,0 @@ -ownerDocument; - - $elem->appendChild($doc->createElementNS('DAV:','d:grant-only')); - $elem->appendChild($doc->createElementNS('DAV:','d:no-invert')); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Property/CurrentUserPrivilegeSet.php b/3rdparty/Sabre/DAVACL/Property/CurrentUserPrivilegeSet.php deleted file mode 100755 index 94a29640615ecdb4229d8a8971b8811edb33933e..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Property/CurrentUserPrivilegeSet.php +++ /dev/null @@ -1,75 +0,0 @@ -privileges = $privileges; - - } - - /** - * Serializes the property in the DOM - * - * @param Sabre_DAV_Server $server - * @param DOMElement $node - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $node) { - - $doc = $node->ownerDocument; - foreach($this->privileges as $privName) { - - $this->serializePriv($doc,$node,$privName); - - } - - } - - /** - * Serializes one privilege - * - * @param DOMDocument $doc - * @param DOMElement $node - * @param string $privName - * @return void - */ - protected function serializePriv($doc,$node,$privName) { - - $xp = $doc->createElementNS('DAV:','d:privilege'); - $node->appendChild($xp); - - $privParts = null; - preg_match('/^{([^}]*)}(.*)$/',$privName,$privParts); - - $xp->appendChild($doc->createElementNS($privParts[1],'d:'.$privParts[2])); - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Property/Principal.php b/3rdparty/Sabre/DAVACL/Property/Principal.php deleted file mode 100755 index c36328a58e0b877086d43bb34f02050f5a0a1c8e..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Property/Principal.php +++ /dev/null @@ -1,160 +0,0 @@ -type = $type; - - if ($type===self::HREF && is_null($href)) { - throw new Sabre_DAV_Exception('The href argument must be specified for the HREF principal type.'); - } - $this->href = $href; - - } - - /** - * Returns the principal type - * - * @return int - */ - public function getType() { - - return $this->type; - - } - - /** - * Returns the principal uri. - * - * @return string - */ - public function getHref() { - - return $this->href; - - } - - /** - * Serializes the property into a DOMElement. - * - * @param Sabre_DAV_Server $server - * @param DOMElement $node - * @return void - */ - public function serialize(Sabre_DAV_Server $server, DOMElement $node) { - - $prefix = $server->xmlNamespaces['DAV:']; - switch($this->type) { - - case self::UNAUTHENTICATED : - $node->appendChild( - $node->ownerDocument->createElement($prefix . ':unauthenticated') - ); - break; - case self::AUTHENTICATED : - $node->appendChild( - $node->ownerDocument->createElement($prefix . ':authenticated') - ); - break; - case self::HREF : - $href = $node->ownerDocument->createElement($prefix . ':href'); - $href->nodeValue = $server->getBaseUri() . $this->href; - $node->appendChild($href); - break; - - } - - } - - /** - * Deserializes a DOM element into a property object. - * - * @param DOMElement $dom - * @return Sabre_DAV_Property_Principal - */ - static public function unserialize(DOMElement $dom) { - - $parent = $dom->firstChild; - while(!Sabre_DAV_XMLUtil::toClarkNotation($parent)) { - $parent = $parent->nextSibling; - } - - switch(Sabre_DAV_XMLUtil::toClarkNotation($parent)) { - - case '{DAV:}unauthenticated' : - return new self(self::UNAUTHENTICATED); - case '{DAV:}authenticated' : - return new self(self::AUTHENTICATED); - case '{DAV:}href': - return new self(self::HREF, $parent->textContent); - case '{DAV:}all': - return new self(self::ALL); - default : - throw new Sabre_DAV_Exception_BadRequest('Unexpected element (' . Sabre_DAV_XMLUtil::toClarkNotation($parent) . '). Could not deserialize'); - - } - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Property/SupportedPrivilegeSet.php b/3rdparty/Sabre/DAVACL/Property/SupportedPrivilegeSet.php deleted file mode 100755 index 276d57ae0938fca6cde2f195a2cbbece0ed1c8df..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Property/SupportedPrivilegeSet.php +++ /dev/null @@ -1,92 +0,0 @@ -privileges = $privileges; - - } - - /** - * Serializes the property into a domdocument. - * - * @param Sabre_DAV_Server $server - * @param DOMElement $node - * @return void - */ - public function serialize(Sabre_DAV_Server $server,DOMElement $node) { - - $doc = $node->ownerDocument; - $this->serializePriv($doc, $node, $this->privileges); - - } - - /** - * Serializes a property - * - * This is a recursive function. - * - * @param DOMDocument $doc - * @param DOMElement $node - * @param array $privilege - * @return void - */ - private function serializePriv($doc,$node,$privilege) { - - $xsp = $doc->createElementNS('DAV:','d:supported-privilege'); - $node->appendChild($xsp); - - $xp = $doc->createElementNS('DAV:','d:privilege'); - $xsp->appendChild($xp); - - $privParts = null; - preg_match('/^{([^}]*)}(.*)$/',$privilege['privilege'],$privParts); - - $xp->appendChild($doc->createElementNS($privParts[1],'d:'.$privParts[2])); - - if (isset($privilege['abstract']) && $privilege['abstract']) { - $xsp->appendChild($doc->createElementNS('DAV:','d:abstract')); - } - - if (isset($privilege['description'])) { - $xsp->appendChild($doc->createElementNS('DAV:','d:description',$privilege['description'])); - } - - if (isset($privilege['aggregates'])) { - foreach($privilege['aggregates'] as $subPrivilege) { - $this->serializePriv($doc,$xsp,$subPrivilege); - } - } - - } - -} diff --git a/3rdparty/Sabre/DAVACL/Version.php b/3rdparty/Sabre/DAVACL/Version.php deleted file mode 100755 index 9950f748741b150087c6504afb6a65df5a005aef..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/DAVACL/Version.php +++ /dev/null @@ -1,24 +0,0 @@ -httpRequest->getHeader('Authorization'); - $authHeader = explode(' ',$authHeader); - - if ($authHeader[0]!='AWS' || !isset($authHeader[1])) { - $this->errorCode = self::ERR_NOAWSHEADER; - return false; - } - - list($this->accessKey,$this->signature) = explode(':',$authHeader[1]); - - return true; - - } - - /** - * Returns the username for the request - * - * @return string - */ - public function getAccessKey() { - - return $this->accessKey; - - } - - /** - * Validates the signature based on the secretKey - * - * @param string $secretKey - * @return bool - */ - public function validate($secretKey) { - - $contentMD5 = $this->httpRequest->getHeader('Content-MD5'); - - if ($contentMD5) { - // We need to validate the integrity of the request - $body = $this->httpRequest->getBody(true); - $this->httpRequest->setBody($body,true); - - if ($contentMD5!=base64_encode(md5($body,true))) { - // content-md5 header did not match md5 signature of body - $this->errorCode = self::ERR_MD5CHECKSUMWRONG; - return false; - } - - } - - if (!$requestDate = $this->httpRequest->getHeader('x-amz-date')) - $requestDate = $this->httpRequest->getHeader('Date'); - - if (!$this->validateRFC2616Date($requestDate)) - return false; - - $amzHeaders = $this->getAmzHeaders(); - - $signature = base64_encode( - $this->hmacsha1($secretKey, - $this->httpRequest->getMethod() . "\n" . - $contentMD5 . "\n" . - $this->httpRequest->getHeader('Content-type') . "\n" . - $requestDate . "\n" . - $amzHeaders . - $this->httpRequest->getURI() - ) - ); - - if ($this->signature != $signature) { - - $this->errorCode = self::ERR_INVALIDSIGNATURE; - return false; - - } - - return true; - - } - - - /** - * Returns an HTTP 401 header, forcing login - * - * This should be called when username and password are incorrect, or not supplied at all - * - * @return void - */ - public function requireLogin() { - - $this->httpResponse->setHeader('WWW-Authenticate','AWS'); - $this->httpResponse->sendStatus(401); - - } - - /** - * Makes sure the supplied value is a valid RFC2616 date. - * - * If we would just use strtotime to get a valid timestamp, we have no way of checking if a - * user just supplied the word 'now' for the date header. - * - * This function also makes sure the Date header is within 15 minutes of the operating - * system date, to prevent replay attacks. - * - * @param string $dateHeader - * @return bool - */ - protected function validateRFC2616Date($dateHeader) { - - $date = Sabre_HTTP_Util::parseHTTPDate($dateHeader); - - // Unknown format - if (!$date) { - $this->errorCode = self::ERR_INVALIDDATEFORMAT; - return false; - } - - $min = new DateTime('-15 minutes'); - $max = new DateTime('+15 minutes'); - - // We allow 15 minutes around the current date/time - if ($date > $max || $date < $min) { - $this->errorCode = self::ERR_REQUESTTIMESKEWED; - return false; - } - - return $date; - - } - - /** - * Returns a list of AMZ headers - * - * @return string - */ - protected function getAmzHeaders() { - - $amzHeaders = array(); - $headers = $this->httpRequest->getHeaders(); - foreach($headers as $headerName => $headerValue) { - if (strpos(strtolower($headerName),'x-amz-')===0) { - $amzHeaders[strtolower($headerName)] = str_replace(array("\r\n"),array(' '),$headerValue) . "\n"; - } - } - ksort($amzHeaders); - - $headerStr = ''; - foreach($amzHeaders as $h=>$v) { - $headerStr.=$h.':'.$v; - } - - return $headerStr; - - } - - /** - * Generates an HMAC-SHA1 signature - * - * @param string $key - * @param string $message - * @return string - */ - private function hmacsha1($key, $message) { - - $blocksize=64; - if (strlen($key)>$blocksize) - $key=pack('H*', sha1($key)); - $key=str_pad($key,$blocksize,chr(0x00)); - $ipad=str_repeat(chr(0x36),$blocksize); - $opad=str_repeat(chr(0x5c),$blocksize); - $hmac = pack('H*',sha1(($key^$opad).pack('H*',sha1(($key^$ipad).$message)))); - return $hmac; - - } - -} diff --git a/3rdparty/Sabre/HTTP/AbstractAuth.php b/3rdparty/Sabre/HTTP/AbstractAuth.php deleted file mode 100755 index 3bccabcd1c17833aded522cc77214f84175337f3..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/HTTP/AbstractAuth.php +++ /dev/null @@ -1,111 +0,0 @@ -httpResponse = new Sabre_HTTP_Response(); - $this->httpRequest = new Sabre_HTTP_Request(); - - } - - /** - * Sets an alternative HTTP response object - * - * @param Sabre_HTTP_Response $response - * @return void - */ - public function setHTTPResponse(Sabre_HTTP_Response $response) { - - $this->httpResponse = $response; - - } - - /** - * Sets an alternative HTTP request object - * - * @param Sabre_HTTP_Request $request - * @return void - */ - public function setHTTPRequest(Sabre_HTTP_Request $request) { - - $this->httpRequest = $request; - - } - - - /** - * Sets the realm - * - * The realm is often displayed in authentication dialog boxes - * Commonly an application name displayed here - * - * @param string $realm - * @return void - */ - public function setRealm($realm) { - - $this->realm = $realm; - - } - - /** - * Returns the realm - * - * @return string - */ - public function getRealm() { - - return $this->realm; - - } - - /** - * Returns an HTTP 401 header, forcing login - * - * This should be called when username and password are incorrect, or not supplied at all - * - * @return void - */ - abstract public function requireLogin(); - -} diff --git a/3rdparty/Sabre/HTTP/BasicAuth.php b/3rdparty/Sabre/HTTP/BasicAuth.php deleted file mode 100755 index f90ed24f5d80c8622a1d806607be31d2771cc1bd..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/HTTP/BasicAuth.php +++ /dev/null @@ -1,67 +0,0 @@ -httpRequest->getRawServerValue('PHP_AUTH_USER')) && ($pass = $this->httpRequest->getRawServerValue('PHP_AUTH_PW'))) { - - return array($user,$pass); - - } - - // Most other webservers - $auth = $this->httpRequest->getHeader('Authorization'); - - // Apache could prefix environment variables with REDIRECT_ when urls - // are passed through mod_rewrite - if (!$auth) { - $auth = $this->httpRequest->getRawServerValue('REDIRECT_HTTP_AUTHORIZATION'); - } - - if (!$auth) return false; - - if (strpos(strtolower($auth),'basic')!==0) return false; - - return explode(':', base64_decode(substr($auth, 6)),2); - - } - - /** - * Returns an HTTP 401 header, forcing login - * - * This should be called when username and password are incorrect, or not supplied at all - * - * @return void - */ - public function requireLogin() { - - $this->httpResponse->setHeader('WWW-Authenticate','Basic realm="' . $this->realm . '"'); - $this->httpResponse->sendStatus(401); - - } - -} diff --git a/3rdparty/Sabre/HTTP/DigestAuth.php b/3rdparty/Sabre/HTTP/DigestAuth.php deleted file mode 100755 index ee7f05c08ed848d61945d938200de5908bb6929d..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/HTTP/DigestAuth.php +++ /dev/null @@ -1,240 +0,0 @@ -nonce = uniqid(); - $this->opaque = md5($this->realm); - parent::__construct(); - - } - - /** - * Gathers all information from the headers - * - * This method needs to be called prior to anything else. - * - * @return void - */ - public function init() { - - $digest = $this->getDigest(); - $this->digestParts = $this->parseDigest($digest); - - } - - /** - * Sets the quality of protection value. - * - * Possible values are: - * Sabre_HTTP_DigestAuth::QOP_AUTH - * Sabre_HTTP_DigestAuth::QOP_AUTHINT - * - * Multiple values can be specified using logical OR. - * - * QOP_AUTHINT ensures integrity of the request body, but this is not - * supported by most HTTP clients. QOP_AUTHINT also requires the entire - * request body to be md5'ed, which can put strains on CPU and memory. - * - * @param int $qop - * @return void - */ - public function setQOP($qop) { - - $this->qop = $qop; - - } - - /** - * Validates the user. - * - * The A1 parameter should be md5($username . ':' . $realm . ':' . $password); - * - * @param string $A1 - * @return bool - */ - public function validateA1($A1) { - - $this->A1 = $A1; - return $this->validate(); - - } - - /** - * Validates authentication through a password. The actual password must be provided here. - * It is strongly recommended not store the password in plain-text and use validateA1 instead. - * - * @param string $password - * @return bool - */ - public function validatePassword($password) { - - $this->A1 = md5($this->digestParts['username'] . ':' . $this->realm . ':' . $password); - return $this->validate(); - - } - - /** - * Returns the username for the request - * - * @return string - */ - public function getUsername() { - - return $this->digestParts['username']; - - } - - /** - * Validates the digest challenge - * - * @return bool - */ - protected function validate() { - - $A2 = $this->httpRequest->getMethod() . ':' . $this->digestParts['uri']; - - if ($this->digestParts['qop']=='auth-int') { - // Making sure we support this qop value - if (!($this->qop & self::QOP_AUTHINT)) return false; - // We need to add an md5 of the entire request body to the A2 part of the hash - $body = $this->httpRequest->getBody(true); - $this->httpRequest->setBody($body,true); - $A2 .= ':' . md5($body); - } else { - - // We need to make sure we support this qop value - if (!($this->qop & self::QOP_AUTH)) return false; - } - - $A2 = md5($A2); - - $validResponse = md5("{$this->A1}:{$this->digestParts['nonce']}:{$this->digestParts['nc']}:{$this->digestParts['cnonce']}:{$this->digestParts['qop']}:{$A2}"); - - return $this->digestParts['response']==$validResponse; - - - } - - /** - * Returns an HTTP 401 header, forcing login - * - * This should be called when username and password are incorrect, or not supplied at all - * - * @return void - */ - public function requireLogin() { - - $qop = ''; - switch($this->qop) { - case self::QOP_AUTH : $qop = 'auth'; break; - case self::QOP_AUTHINT : $qop = 'auth-int'; break; - case self::QOP_AUTH | self::QOP_AUTHINT : $qop = 'auth,auth-int'; break; - } - - $this->httpResponse->setHeader('WWW-Authenticate','Digest realm="' . $this->realm . '",qop="'.$qop.'",nonce="' . $this->nonce . '",opaque="' . $this->opaque . '"'); - $this->httpResponse->sendStatus(401); - - } - - - /** - * This method returns the full digest string. - * - * It should be compatibile with mod_php format and other webservers. - * - * If the header could not be found, null will be returned - * - * @return mixed - */ - public function getDigest() { - - // mod_php - $digest = $this->httpRequest->getRawServerValue('PHP_AUTH_DIGEST'); - if ($digest) return $digest; - - // most other servers - $digest = $this->httpRequest->getHeader('Authorization'); - - // Apache could prefix environment variables with REDIRECT_ when urls - // are passed through mod_rewrite - if (!$digest) { - $digest = $this->httpRequest->getRawServerValue('REDIRECT_HTTP_AUTHORIZATION'); - } - - if ($digest && strpos(strtolower($digest),'digest')===0) { - return substr($digest,7); - } else { - return null; - } - - } - - - /** - * Parses the different pieces of the digest string into an array. - * - * This method returns false if an incomplete digest was supplied - * - * @param string $digest - * @return mixed - */ - protected function parseDigest($digest) { - - // protect against missing data - $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1); - $data = array(); - - preg_match_all('@(\w+)=(?:(?:")([^"]+)"|([^\s,$]+))@', $digest, $matches, PREG_SET_ORDER); - - foreach ($matches as $m) { - $data[$m[1]] = $m[2] ? $m[2] : $m[3]; - unset($needed_parts[$m[1]]); - } - - return $needed_parts ? false : $data; - - } - -} diff --git a/3rdparty/Sabre/HTTP/Request.php b/3rdparty/Sabre/HTTP/Request.php deleted file mode 100755 index 4746ef777047e06b4b3c3ec0dd01267c749f7460..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/HTTP/Request.php +++ /dev/null @@ -1,268 +0,0 @@ -_SERVER = $serverData; - else $this->_SERVER =& $_SERVER; - - if ($postData) $this->_POST = $postData; - else $this->_POST =& $_POST; - - } - - /** - * Returns the value for a specific http header. - * - * This method returns null if the header did not exist. - * - * @param string $name - * @return string - */ - public function getHeader($name) { - - $name = strtoupper(str_replace(array('-'),array('_'),$name)); - if (isset($this->_SERVER['HTTP_' . $name])) { - return $this->_SERVER['HTTP_' . $name]; - } - - // There's a few headers that seem to end up in the top-level - // server array. - switch($name) { - case 'CONTENT_TYPE' : - case 'CONTENT_LENGTH' : - if (isset($this->_SERVER[$name])) { - return $this->_SERVER[$name]; - } - break; - - } - return; - - } - - /** - * Returns all (known) HTTP headers. - * - * All headers are converted to lower-case, and additionally all underscores - * are automatically converted to dashes - * - * @return array - */ - public function getHeaders() { - - $hdrs = array(); - foreach($this->_SERVER as $key=>$value) { - - switch($key) { - case 'CONTENT_LENGTH' : - case 'CONTENT_TYPE' : - $hdrs[strtolower(str_replace('_','-',$key))] = $value; - break; - default : - if (strpos($key,'HTTP_')===0) { - $hdrs[substr(strtolower(str_replace('_','-',$key)),5)] = $value; - } - break; - } - - } - - return $hdrs; - - } - - /** - * Returns the HTTP request method - * - * This is for example POST or GET - * - * @return string - */ - public function getMethod() { - - return $this->_SERVER['REQUEST_METHOD']; - - } - - /** - * Returns the requested uri - * - * @return string - */ - public function getUri() { - - return $this->_SERVER['REQUEST_URI']; - - } - - /** - * Will return protocol + the hostname + the uri - * - * @return string - */ - public function getAbsoluteUri() { - - // Checking if the request was made through HTTPS. The last in line is for IIS - $protocol = isset($this->_SERVER['HTTPS']) && ($this->_SERVER['HTTPS']) && ($this->_SERVER['HTTPS']!='off'); - return ($protocol?'https':'http') . '://' . $this->getHeader('Host') . $this->getUri(); - - } - - /** - * Returns everything after the ? from the current url - * - * @return string - */ - public function getQueryString() { - - return isset($this->_SERVER['QUERY_STRING'])?$this->_SERVER['QUERY_STRING']:''; - - } - - /** - * Returns the HTTP request body body - * - * This method returns a readable stream resource. - * If the asString parameter is set to true, a string is sent instead. - * - * @param bool asString - * @return resource - */ - public function getBody($asString = false) { - - if (is_null($this->body)) { - if (!is_null(self::$defaultInputStream)) { - $this->body = self::$defaultInputStream; - } else { - $this->body = fopen('php://input','r'); - self::$defaultInputStream = $this->body; - } - } - if ($asString) { - $body = stream_get_contents($this->body); - return $body; - } else { - return $this->body; - } - - } - - /** - * Sets the contents of the HTTP request body - * - * This method can either accept a string, or a readable stream resource. - * - * If the setAsDefaultInputStream is set to true, it means for this run of the - * script the supplied body will be used instead of php://input. - * - * @param mixed $body - * @param bool $setAsDefaultInputStream - * @return void - */ - public function setBody($body,$setAsDefaultInputStream = false) { - - if(is_resource($body)) { - $this->body = $body; - } else { - - $stream = fopen('php://temp','r+'); - fputs($stream,$body); - rewind($stream); - // String is assumed - $this->body = $stream; - } - if ($setAsDefaultInputStream) { - self::$defaultInputStream = $this->body; - } - - } - - /** - * Returns PHP's _POST variable. - * - * The reason this is in a method is so it can be subclassed and - * overridden. - * - * @return array - */ - public function getPostVars() { - - return $this->_POST; - - } - - /** - * Returns a specific item from the _SERVER array. - * - * Do not rely on this feature, it is for internal use only. - * - * @param string $field - * @return string - */ - public function getRawServerValue($field) { - - return isset($this->_SERVER[$field])?$this->_SERVER[$field]:null; - - } - -} - diff --git a/3rdparty/Sabre/HTTP/Response.php b/3rdparty/Sabre/HTTP/Response.php deleted file mode 100755 index ffe9bda2082d5fd65395038fae36cfa179da0062..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/HTTP/Response.php +++ /dev/null @@ -1,157 +0,0 @@ - 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authorative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-Status', // RFC 4918 - 208 => 'Already Reported', // RFC 5842 - 226 => 'IM Used', // RFC 3229 - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 306 => 'Reserved', - 307 => 'Temporary Redirect', - 400 => 'Bad request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - 418 => 'I\'m a teapot', // RFC 2324 - 422 => 'Unprocessable Entity', // RFC 4918 - 423 => 'Locked', // RFC 4918 - 424 => 'Failed Dependency', // RFC 4918 - 426 => 'Upgrade required', - 428 => 'Precondition required', // draft-nottingham-http-new-status - 429 => 'Too Many Requests', // draft-nottingham-http-new-status - 431 => 'Request Header Fields Too Large', // draft-nottingham-http-new-status - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version not supported', - 506 => 'Variant Also Negotiates', - 507 => 'Insufficient Storage', // RFC 4918 - 508 => 'Loop Detected', // RFC 5842 - 509 => 'Bandwidth Limit Exceeded', // non-standard - 510 => 'Not extended', - 511 => 'Network Authentication Required', // draft-nottingham-http-new-status - ); - - return 'HTTP/1.1 ' . $code . ' ' . $msg[$code]; - - } - - /** - * Sends an HTTP status header to the client - * - * @param int $code HTTP status code - * @return bool - */ - public function sendStatus($code) { - - if (!headers_sent()) - return header($this->getStatusMessage($code)); - else return false; - - } - - /** - * Sets an HTTP header for the response - * - * @param string $name - * @param string $value - * @param bool $replace - * @return bool - */ - public function setHeader($name, $value, $replace = true) { - - $value = str_replace(array("\r","\n"),array('\r','\n'),$value); - if (!headers_sent()) - return header($name . ': ' . $value, $replace); - else return false; - - } - - /** - * Sets a bunch of HTTP Headers - * - * headersnames are specified as keys, value in the array value - * - * @param array $headers - * @return void - */ - public function setHeaders(array $headers) { - - foreach($headers as $key=>$value) - $this->setHeader($key, $value); - - } - - /** - * Sends the entire response body - * - * This method can accept either an open filestream, or a string. - * - * @param mixed $body - * @return void - */ - public function sendBody($body) { - - if (is_resource($body)) { - - fpassthru($body); - - } else { - - // We assume a string - echo $body; - - } - - } - -} diff --git a/3rdparty/Sabre/HTTP/Util.php b/3rdparty/Sabre/HTTP/Util.php deleted file mode 100755 index 67bdd489e1e5f654c4d9c41d34292bcbfefe0c39..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/HTTP/Util.php +++ /dev/null @@ -1,82 +0,0 @@ -= 0) - return new DateTime('@' . $realDate, new DateTimeZone('UTC')); - - } - - /** - * Transforms a DateTime object to HTTP's most common date format. - * - * We're serializing it as the RFC 1123 date, which, for HTTP must be - * specified as GMT. - * - * @param DateTime $dateTime - * @return string - */ - static function toHTTPDate(DateTime $dateTime) { - - // We need to clone it, as we don't want to affect the existing - // DateTime. - $dateTime = clone $dateTime; - $dateTime->setTimeZone(new DateTimeZone('GMT')); - return $dateTime->format('D, d M Y H:i:s \G\M\T'); - - } - -} diff --git a/3rdparty/Sabre/HTTP/Version.php b/3rdparty/Sabre/HTTP/Version.php deleted file mode 100755 index e6b4f7e53589964fd2db22be2f43ad62d771689f..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/HTTP/Version.php +++ /dev/null @@ -1,24 +0,0 @@ - 'Sabre_VObject_Component_VCalendar', - 'VEVENT' => 'Sabre_VObject_Component_VEvent', - 'VTODO' => 'Sabre_VObject_Component_VTodo', - 'VJOURNAL' => 'Sabre_VObject_Component_VJournal', - 'VALARM' => 'Sabre_VObject_Component_VAlarm', - ); - - /** - * Creates the new component by name, but in addition will also see if - * there's a class mapped to the property name. - * - * @param string $name - * @param string $value - * @return Sabre_VObject_Component - */ - static public function create($name, $value = null) { - - $name = strtoupper($name); - - if (isset(self::$classMap[$name])) { - return new self::$classMap[$name]($name, $value); - } else { - return new self($name, $value); - } - - } - - /** - * Creates a new component. - * - * By default this object will iterate over its own children, but this can - * be overridden with the iterator argument - * - * @param string $name - * @param Sabre_VObject_ElementList $iterator - */ - public function __construct($name, Sabre_VObject_ElementList $iterator = null) { - - $this->name = strtoupper($name); - if (!is_null($iterator)) $this->iterator = $iterator; - - } - - /** - * Turns the object back into a serialized blob. - * - * @return string - */ - public function serialize() { - - $str = "BEGIN:" . $this->name . "\r\n"; - - /** - * Gives a component a 'score' for sorting purposes. - * - * This is solely used by the childrenSort method. - * - * A higher score means the item will be higher in the list - * - * @param Sabre_VObject_Node $n - * @return int - */ - $sortScore = function($n) { - - if ($n instanceof Sabre_VObject_Component) { - // We want to encode VTIMEZONE first, this is a personal - // preference. - if ($n->name === 'VTIMEZONE') { - return 1; - } else { - return 0; - } - } else { - // VCARD version 4.0 wants the VERSION property to appear first - if ($n->name === 'VERSION') { - return 3; - } else { - return 2; - } - } - - }; - - usort($this->children, function($a, $b) use ($sortScore) { - - $sA = $sortScore($a); - $sB = $sortScore($b); - - if ($sA === $sB) return 0; - - return ($sA > $sB) ? -1 : 1; - - }); - - foreach($this->children as $child) $str.=$child->serialize(); - $str.= "END:" . $this->name . "\r\n"; - - return $str; - - } - - /** - * Adds a new component or element - * - * You can call this method with the following syntaxes: - * - * add(Sabre_VObject_Element $element) - * add(string $name, $value) - * - * The first version adds an Element - * The second adds a property as a string. - * - * @param mixed $item - * @param mixed $itemValue - * @return void - */ - public function add($item, $itemValue = null) { - - if ($item instanceof Sabre_VObject_Element) { - if (!is_null($itemValue)) { - throw new InvalidArgumentException('The second argument must not be specified, when passing a VObject'); - } - $item->parent = $this; - $this->children[] = $item; - } elseif(is_string($item)) { - - if (!is_scalar($itemValue)) { - throw new InvalidArgumentException('The second argument must be scalar'); - } - $item = Sabre_VObject_Property::create($item,$itemValue); - $item->parent = $this; - $this->children[] = $item; - - } else { - - throw new InvalidArgumentException('The first argument must either be a Sabre_VObject_Element or a string'); - - } - - } - - /** - * Returns an iterable list of children - * - * @return Sabre_VObject_ElementList - */ - public function children() { - - return new Sabre_VObject_ElementList($this->children); - - } - - /** - * Returns an array with elements that match the specified name. - * - * This function is also aware of MIME-Directory groups (as they appear in - * vcards). This means that if a property is grouped as "HOME.EMAIL", it - * will also be returned when searching for just "EMAIL". If you want to - * search for a property in a specific group, you can select on the entire - * string ("HOME.EMAIL"). If you want to search on a specific property that - * has not been assigned a group, specify ".EMAIL". - * - * Keys are retained from the 'children' array, which may be confusing in - * certain cases. - * - * @param string $name - * @return array - */ - public function select($name) { - - $group = null; - $name = strtoupper($name); - if (strpos($name,'.')!==false) { - list($group,$name) = explode('.', $name, 2); - } - - $result = array(); - foreach($this->children as $key=>$child) { - - if ( - strtoupper($child->name) === $name && - (is_null($group) || ( $child instanceof Sabre_VObject_Property && strtoupper($child->group) === $group)) - ) { - - $result[$key] = $child; - - } - } - - reset($result); - return $result; - - } - - /** - * This method only returns a list of sub-components. Properties are - * ignored. - * - * @return array - */ - public function getComponents() { - - $result = array(); - foreach($this->children as $child) { - if ($child instanceof Sabre_VObject_Component) { - $result[] = $child; - } - } - - return $result; - - } - - /* Magic property accessors {{{ */ - - /** - * Using 'get' you will either get a property or component, - * - * If there were no child-elements found with the specified name, - * null is returned. - * - * @param string $name - * @return Sabre_VObject_Property - */ - public function __get($name) { - - $matches = $this->select($name); - if (count($matches)===0) { - return null; - } else { - $firstMatch = current($matches); - /** @var $firstMatch Sabre_VObject_Property */ - $firstMatch->setIterator(new Sabre_VObject_ElementList(array_values($matches))); - return $firstMatch; - } - - } - - /** - * This method checks if a sub-element with the specified name exists. - * - * @param string $name - * @return bool - */ - public function __isset($name) { - - $matches = $this->select($name); - return count($matches)>0; - - } - - /** - * Using the setter method you can add properties or subcomponents - * - * You can either pass a Sabre_VObject_Component, Sabre_VObject_Property - * object, or a string to automatically create a Property. - * - * If the item already exists, it will be removed. If you want to add - * a new item with the same name, always use the add() method. - * - * @param string $name - * @param mixed $value - * @return void - */ - public function __set($name, $value) { - - $matches = $this->select($name); - $overWrite = count($matches)?key($matches):null; - - if ($value instanceof Sabre_VObject_Component || $value instanceof Sabre_VObject_Property) { - $value->parent = $this; - if (!is_null($overWrite)) { - $this->children[$overWrite] = $value; - } else { - $this->children[] = $value; - } - } elseif (is_scalar($value)) { - $property = Sabre_VObject_Property::create($name,$value); - $property->parent = $this; - if (!is_null($overWrite)) { - $this->children[$overWrite] = $property; - } else { - $this->children[] = $property; - } - } else { - throw new InvalidArgumentException('You must pass a Sabre_VObject_Component, Sabre_VObject_Property or scalar type'); - } - - } - - /** - * Removes all properties and components within this component. - * - * @param string $name - * @return void - */ - public function __unset($name) { - - $matches = $this->select($name); - foreach($matches as $k=>$child) { - - unset($this->children[$k]); - $child->parent = null; - - } - - } - - /* }}} */ - - /** - * This method is automatically called when the object is cloned. - * Specifically, this will ensure all child elements are also cloned. - * - * @return void - */ - public function __clone() { - - foreach($this->children as $key=>$child) { - $this->children[$key] = clone $child; - $this->children[$key]->parent = $this; - } - - } - -} diff --git a/3rdparty/Sabre/VObject/Component/VAlarm.php b/3rdparty/Sabre/VObject/Component/VAlarm.php deleted file mode 100755 index ebb4a9b18f69962a0446a6f4dece59ea2db1605a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Component/VAlarm.php +++ /dev/null @@ -1,102 +0,0 @@ -TRIGGER; - if(!isset($trigger['VALUE']) || strtoupper($trigger['VALUE']) === 'DURATION') { - $triggerDuration = Sabre_VObject_DateTimeParser::parseDuration($this->TRIGGER); - $related = (isset($trigger['RELATED']) && strtoupper($trigger['RELATED']) == 'END') ? 'END' : 'START'; - - $parentComponent = $this->parent; - if ($related === 'START') { - $effectiveTrigger = clone $parentComponent->DTSTART->getDateTime(); - $effectiveTrigger->add($triggerDuration); - } else { - if ($parentComponent->name === 'VTODO') { - $endProp = 'DUE'; - } elseif ($parentComponent->name === 'VEVENT') { - $endProp = 'DTEND'; - } else { - throw new Sabre_DAV_Exception('time-range filters on VALARM components are only supported when they are a child of VTODO or VEVENT'); - } - - if (isset($parentComponent->$endProp)) { - $effectiveTrigger = clone $parentComponent->$endProp->getDateTime(); - $effectiveTrigger->add($triggerDuration); - } elseif (isset($parentComponent->DURATION)) { - $effectiveTrigger = clone $parentComponent->DTSTART->getDateTime(); - $duration = Sabre_VObject_DateTimeParser::parseDuration($parentComponent->DURATION); - $effectiveTrigger->add($duration); - $effectiveTrigger->add($triggerDuration); - } else { - $effectiveTrigger = clone $parentComponent->DTSTART->getDateTime(); - $effectiveTrigger->add($triggerDuration); - } - } - } else { - $effectiveTrigger = $trigger->getDateTime(); - } - return $effectiveTrigger; - - } - - /** - * Returns true or false depending on if the event falls in the specified - * time-range. This is used for filtering purposes. - * - * The rules used to determine if an event falls within the specified - * time-range is based on the CalDAV specification. - * - * @param DateTime $start - * @param DateTime $end - * @return bool - */ - public function isInTimeRange(DateTime $start, DateTime $end) { - - $effectiveTrigger = $this->getEffectiveTriggerTime(); - - if (isset($this->DURATION)) { - $duration = Sabre_VObject_DateTimeParser::parseDuration($this->DURATION); - $repeat = (string)$this->repeat; - if (!$repeat) { - $repeat = 1; - } - - $period = new DatePeriod($effectiveTrigger, $duration, (int)$repeat); - - foreach($period as $occurrence) { - - if ($start <= $occurrence && $end > $occurrence) { - return true; - } - } - return false; - } else { - return ($start <= $effectiveTrigger && $end > $effectiveTrigger); - } - - } - -} - -?> diff --git a/3rdparty/Sabre/VObject/Component/VCalendar.php b/3rdparty/Sabre/VObject/Component/VCalendar.php deleted file mode 100755 index f3be29afdbb492c16b7fe28f0e04888c3291fd43..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Component/VCalendar.php +++ /dev/null @@ -1,133 +0,0 @@ -children as $component) { - - if (!$component instanceof Sabre_VObject_Component) - continue; - - if (isset($component->{'RECURRENCE-ID'})) - continue; - - if ($componentName && $component->name !== strtoupper($componentName)) - continue; - - if ($component->name === 'VTIMEZONE') - continue; - - $components[] = $component; - - } - - return $components; - - } - - /** - * If this calendar object, has events with recurrence rules, this method - * can be used to expand the event into multiple sub-events. - * - * Each event will be stripped from it's recurrence information, and only - * the instances of the event in the specified timerange will be left - * alone. - * - * In addition, this method will cause timezone information to be stripped, - * and normalized to UTC. - * - * This method will alter the VCalendar. This cannot be reversed. - * - * This functionality is specifically used by the CalDAV standard. It is - * possible for clients to request expand events, if they are rather simple - * clients and do not have the possibility to calculate recurrences. - * - * @param DateTime $start - * @param DateTime $end - * @return void - */ - public function expand(DateTime $start, DateTime $end) { - - $newEvents = array(); - - foreach($this->select('VEVENT') as $key=>$vevent) { - - if (isset($vevent->{'RECURRENCE-ID'})) { - unset($this->children[$key]); - continue; - } - - - if (!$vevent->rrule) { - unset($this->children[$key]); - if ($vevent->isInTimeRange($start, $end)) { - $newEvents[] = $vevent; - } - continue; - } - - $uid = (string)$vevent->uid; - if (!$uid) { - throw new LogicException('Event did not have a UID!'); - } - - $it = new Sabre_VObject_RecurrenceIterator($this, $vevent->uid); - $it->fastForward($start); - - while($it->valid() && $it->getDTStart() < $end) { - - if ($it->getDTEnd() > $start) { - - $newEvents[] = $it->getEventObject(); - - } - $it->next(); - - } - unset($this->children[$key]); - - } - - foreach($newEvents as $newEvent) { - - foreach($newEvent->children as $child) { - if ($child instanceof Sabre_VObject_Property_DateTime && - $child->getDateType() == Sabre_VObject_Property_DateTime::LOCALTZ) { - $child->setDateTime($child->getDateTime(),Sabre_VObject_Property_DateTime::UTC); - } - } - - $this->add($newEvent); - - } - - // Removing all VTIMEZONE components - unset($this->VTIMEZONE); - - } - -} - diff --git a/3rdparty/Sabre/VObject/Component/VEvent.php b/3rdparty/Sabre/VObject/Component/VEvent.php deleted file mode 100755 index d6b910874d0af8afb76bbfc8bab326995083d2e9..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Component/VEvent.php +++ /dev/null @@ -1,71 +0,0 @@ -RRULE) { - $it = new Sabre_VObject_RecurrenceIterator($this); - $it->fastForward($start); - - // We fast-forwarded to a spot where the end-time of the - // recurrence instance exceeded the start of the requested - // time-range. - // - // If the starttime of the recurrence did not exceed the - // end of the time range as well, we have a match. - return ($it->getDTStart() < $end && $it->getDTEnd() > $start); - - } - - $effectiveStart = $this->DTSTART->getDateTime(); - if (isset($this->DTEND)) { - - // The DTEND property is considered non inclusive. So for a 3 day - // event in july, dtstart and dtend would have to be July 1st and - // July 4th respectively. - // - // See: - // http://tools.ietf.org/html/rfc5545#page-54 - $effectiveEnd = $this->DTEND->getDateTime(); - - } elseif (isset($this->DURATION)) { - $effectiveEnd = clone $effectiveStart; - $effectiveEnd->add( Sabre_VObject_DateTimeParser::parseDuration($this->DURATION) ); - } elseif ($this->DTSTART->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $effectiveEnd = clone $effectiveStart; - $effectiveEnd->modify('+1 day'); - } else { - $effectiveEnd = clone $effectiveStart; - } - return ( - ($start <= $effectiveEnd) && ($end > $effectiveStart) - ); - - } - -} - -?> diff --git a/3rdparty/Sabre/VObject/Component/VJournal.php b/3rdparty/Sabre/VObject/Component/VJournal.php deleted file mode 100755 index 22b3ec921e5a1b6e67dbdb0253ba5d6fece53cb8..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Component/VJournal.php +++ /dev/null @@ -1,46 +0,0 @@ -DTSTART)?$this->DTSTART->getDateTime():null; - if ($dtstart) { - $effectiveEnd = clone $dtstart; - if ($this->DTSTART->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $effectiveEnd->modify('+1 day'); - } - - return ($start <= $effectiveEnd && $end > $dtstart); - - } - return false; - - - } - -} - -?> diff --git a/3rdparty/Sabre/VObject/Component/VTodo.php b/3rdparty/Sabre/VObject/Component/VTodo.php deleted file mode 100755 index 79d06298d7f864ea5953f51f714906c3119feef8..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Component/VTodo.php +++ /dev/null @@ -1,68 +0,0 @@ -DTSTART)?$this->DTSTART->getDateTime():null; - $duration = isset($this->DURATION)?Sabre_VObject_DateTimeParser::parseDuration($this->DURATION):null; - $due = isset($this->DUE)?$this->DUE->getDateTime():null; - $completed = isset($this->COMPLETED)?$this->COMPLETED->getDateTime():null; - $created = isset($this->CREATED)?$this->CREATED->getDateTime():null; - - if ($dtstart) { - if ($duration) { - $effectiveEnd = clone $dtstart; - $effectiveEnd->add($duration); - return $start <= $effectiveEnd && $end > $dtstart; - } elseif ($due) { - return - ($start < $due || $start <= $dtstart) && - ($end > $dtstart || $end >= $due); - } else { - return $start <= $dtstart && $end > $dtstart; - } - } - if ($due) { - return ($start < $due && $end >= $due); - } - if ($completed && $created) { - return - ($start <= $created || $start <= $completed) && - ($end >= $created || $end >= $completed); - } - if ($completed) { - return ($start <= $completed && $end >= $completed); - } - if ($created) { - return ($end > $created); - } - return true; - - } - -} - -?> diff --git a/3rdparty/Sabre/VObject/DateTimeParser.php b/3rdparty/Sabre/VObject/DateTimeParser.php deleted file mode 100755 index 23a4bb69916cca390f4d697acb0c93f72756e1ab..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/DateTimeParser.php +++ /dev/null @@ -1,181 +0,0 @@ -setTimeZone(new DateTimeZone('UTC')); - return $date; - - } - - /** - * Parses an iCalendar (rfc5545) formatted date and returns a DateTime object - * - * @param string $date - * @return DateTime - */ - static public function parseDate($date) { - - // Format is YYYYMMDD - $result = preg_match('/^([1-3][0-9]{3})([0-1][0-9])([0-3][0-9])$/',$date,$matches); - - if (!$result) { - throw new Sabre_DAV_Exception_BadRequest('The supplied iCalendar date value is incorrect: ' . $date); - } - - $date = new DateTime($matches[1] . '-' . $matches[2] . '-' . $matches[3], new DateTimeZone('UTC')); - return $date; - - } - - /** - * Parses an iCalendar (RFC5545) formatted duration value. - * - * This method will either return a DateTimeInterval object, or a string - * suitable for strtotime or DateTime::modify. - * - * @param string $duration - * @param bool $asString - * @return DateInterval|string - */ - static public function parseDuration($duration, $asString = false) { - - $result = preg_match('/^(?P\+|-)?P((?P\d+)W)?((?P\d+)D)?(T((?P\d+)H)?((?P\d+)M)?((?P\d+)S)?)?$/', $duration, $matches); - if (!$result) { - throw new Sabre_DAV_Exception_BadRequest('The supplied iCalendar duration value is incorrect: ' . $duration); - } - - if (!$asString) { - $invert = false; - if ($matches['plusminus']==='-') { - $invert = true; - } - - - $parts = array( - 'week', - 'day', - 'hour', - 'minute', - 'second', - ); - foreach($parts as $part) { - $matches[$part] = isset($matches[$part])&&$matches[$part]?(int)$matches[$part]:0; - } - - - // We need to re-construct the $duration string, because weeks and - // days are not supported by DateInterval in the same string. - $duration = 'P'; - $days = $matches['day']; - if ($matches['week']) { - $days+=$matches['week']*7; - } - if ($days) - $duration.=$days . 'D'; - - if ($matches['minute'] || $matches['second'] || $matches['hour']) { - $duration.='T'; - - if ($matches['hour']) - $duration.=$matches['hour'].'H'; - - if ($matches['minute']) - $duration.=$matches['minute'].'M'; - - if ($matches['second']) - $duration.=$matches['second'].'S'; - - } - - if ($duration==='P') { - $duration = 'PT0S'; - } - $iv = new DateInterval($duration); - if ($invert) $iv->invert = true; - - return $iv; - - } - - - - $parts = array( - 'week', - 'day', - 'hour', - 'minute', - 'second', - ); - - $newDur = ''; - foreach($parts as $part) { - if (isset($matches[$part]) && $matches[$part]) { - $newDur.=' '.$matches[$part] . ' ' . $part . 's'; - } - } - - $newDur = ($matches['plusminus']==='-'?'-':'+') . trim($newDur); - if ($newDur === '+') { $newDur = '+0 seconds'; }; - return $newDur; - - } - - /** - * Parses either a Date or DateTime, or Duration value. - * - * @param string $date - * @param DateTimeZone|string $referenceTZ - * @return DateTime|DateInterval - */ - static public function parse($date, $referenceTZ = null) { - - if ($date[0]==='P' || ($date[0]==='-' && $date[1]==='P')) { - return self::parseDuration($date); - } elseif (strlen($date)===8) { - return self::parseDate($date); - } else { - return self::parseDateTime($date, $referenceTZ); - } - - } - - -} diff --git a/3rdparty/Sabre/VObject/Element.php b/3rdparty/Sabre/VObject/Element.php deleted file mode 100755 index e20ff0b353c4491cd166ccad47a39c16a7f46c4f..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Element.php +++ /dev/null @@ -1,16 +0,0 @@ -vevent where there's multiple VEVENT objects. - * - * @package Sabre - * @subpackage VObject - * @copyright Copyright (C) 2007-2012 Rooftop Solutions. All rights reserved. - * @author Evert Pot (http://www.rooftopsolutions.nl/) - * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License - */ -class Sabre_VObject_ElementList implements Iterator, Countable, ArrayAccess { - - /** - * Inner elements - * - * @var array - */ - protected $elements = array(); - - /** - * Creates the element list. - * - * @param array $elements - */ - public function __construct(array $elements) { - - $this->elements = $elements; - - } - - /* {{{ Iterator interface */ - - /** - * Current position - * - * @var int - */ - private $key = 0; - - /** - * Returns current item in iteration - * - * @return Sabre_VObject_Element - */ - public function current() { - - return $this->elements[$this->key]; - - } - - /** - * To the next item in the iterator - * - * @return void - */ - public function next() { - - $this->key++; - - } - - /** - * Returns the current iterator key - * - * @return int - */ - public function key() { - - return $this->key; - - } - - /** - * Returns true if the current position in the iterator is a valid one - * - * @return bool - */ - public function valid() { - - return isset($this->elements[$this->key]); - - } - - /** - * Rewinds the iterator - * - * @return void - */ - public function rewind() { - - $this->key = 0; - - } - - /* }}} */ - - /* {{{ Countable interface */ - - /** - * Returns the number of elements - * - * @return int - */ - public function count() { - - return count($this->elements); - - } - - /* }}} */ - - /* {{{ ArrayAccess Interface */ - - - /** - * Checks if an item exists through ArrayAccess. - * - * @param int $offset - * @return bool - */ - public function offsetExists($offset) { - - return isset($this->elements[$offset]); - - } - - /** - * Gets an item through ArrayAccess. - * - * @param int $offset - * @return mixed - */ - public function offsetGet($offset) { - - return $this->elements[$offset]; - - } - - /** - * Sets an item through ArrayAccess. - * - * @param int $offset - * @param mixed $value - * @return void - */ - public function offsetSet($offset,$value) { - - throw new LogicException('You can not add new objects to an ElementList'); - - } - - /** - * Sets an item through ArrayAccess. - * - * This method just forwards the request to the inner iterator - * - * @param int $offset - * @return void - */ - public function offsetUnset($offset) { - - throw new LogicException('You can not remove objects from an ElementList'); - - } - - /* }}} */ - -} diff --git a/3rdparty/Sabre/VObject/FreeBusyGenerator.php b/3rdparty/Sabre/VObject/FreeBusyGenerator.php deleted file mode 100755 index 1c96a64a004b6a7055c0568f80903c122de6d9dd..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/FreeBusyGenerator.php +++ /dev/null @@ -1,297 +0,0 @@ -baseObject = $vcalendar; - - } - - /** - * Sets the input objects - * - * Every object must either be a string or a Sabre_VObject_Component. - * - * @param array $objects - * @return void - */ - public function setObjects(array $objects) { - - $this->objects = array(); - foreach($objects as $object) { - - if (is_string($object)) { - $this->objects[] = Sabre_VObject_Reader::read($object); - } elseif ($object instanceof Sabre_VObject_Component) { - $this->objects[] = $object; - } else { - throw new InvalidArgumentException('You can only pass strings or Sabre_VObject_Component arguments to setObjects'); - } - - } - - } - - /** - * Sets the time range - * - * Any freebusy object falling outside of this time range will be ignored. - * - * @param DateTime $start - * @param DateTime $end - * @return void - */ - public function setTimeRange(DateTime $start = null, DateTime $end = null) { - - $this->start = $start; - $this->end = $end; - - } - - /** - * Parses the input data and returns a correct VFREEBUSY object, wrapped in - * a VCALENDAR. - * - * @return Sabre_VObject_Component - */ - public function getResult() { - - $busyTimes = array(); - - foreach($this->objects as $object) { - - foreach($object->getBaseComponents() as $component) { - - switch($component->name) { - - case 'VEVENT' : - - $FBTYPE = 'BUSY'; - if (isset($component->TRANSP) && (strtoupper($component->TRANSP) === 'TRANSPARENT')) { - break; - } - if (isset($component->STATUS)) { - $status = strtoupper($component->STATUS); - if ($status==='CANCELLED') { - break; - } - if ($status==='TENTATIVE') { - $FBTYPE = 'BUSY-TENTATIVE'; - } - } - - $times = array(); - - if ($component->RRULE) { - - $iterator = new Sabre_VObject_RecurrenceIterator($object, (string)$component->uid); - if ($this->start) { - $iterator->fastForward($this->start); - } - - $maxRecurrences = 200; - - while($iterator->valid() && --$maxRecurrences) { - - $startTime = $iterator->getDTStart(); - if ($this->end && $startTime > $this->end) { - break; - } - $times[] = array( - $iterator->getDTStart(), - $iterator->getDTEnd(), - ); - - $iterator->next(); - - } - - } else { - - $startTime = $component->DTSTART->getDateTime(); - if ($this->end && $startTime > $this->end) { - break; - } - $endTime = null; - if (isset($component->DTEND)) { - $endTime = $component->DTEND->getDateTime(); - } elseif (isset($component->DURATION)) { - $duration = Sabre_VObject_DateTimeParser::parseDuration((string)$component->DURATION); - $endTime = clone $startTime; - $endTime->add($duration); - } elseif ($component->DTSTART->getDateType() === Sabre_VObject_Property_DateTime::DATE) { - $endTime = clone $startTime; - $endTime->modify('+1 day'); - } else { - // The event had no duration (0 seconds) - break; - } - - $times[] = array($startTime, $endTime); - - } - - foreach($times as $time) { - - if ($this->end && $time[0] > $this->end) break; - if ($this->start && $time[1] < $this->start) break; - - $busyTimes[] = array( - $time[0], - $time[1], - $FBTYPE, - ); - } - break; - - case 'VFREEBUSY' : - foreach($component->FREEBUSY as $freebusy) { - - $fbType = isset($freebusy['FBTYPE'])?strtoupper($freebusy['FBTYPE']):'BUSY'; - - // Skipping intervals marked as 'free' - if ($fbType==='FREE') - continue; - - $values = explode(',', $freebusy); - foreach($values as $value) { - list($startTime, $endTime) = explode('/', $value); - $startTime = Sabre_VObject_DateTimeParser::parseDateTime($startTime); - - if (substr($endTime,0,1)==='P' || substr($endTime,0,2)==='-P') { - $duration = Sabre_VObject_DateTimeParser::parseDuration($endTime); - $endTime = clone $startTime; - $endTime->add($duration); - } else { - $endTime = Sabre_VObject_DateTimeParser::parseDateTime($endTime); - } - - if($this->start && $this->start > $endTime) continue; - if($this->end && $this->end < $startTime) continue; - $busyTimes[] = array( - $startTime, - $endTime, - $fbType - ); - - } - - - } - break; - - - - } - - - } - - } - - if ($this->baseObject) { - $calendar = $this->baseObject; - } else { - $calendar = new Sabre_VObject_Component('VCALENDAR'); - $calendar->version = '2.0'; - if (Sabre_DAV_Server::$exposeVersion) { - $calendar->prodid = '-//SabreDAV//Sabre VObject ' . Sabre_VObject_Version::VERSION . '//EN'; - } else { - $calendar->prodid = '-//SabreDAV//Sabre VObject//EN'; - } - $calendar->calscale = 'GREGORIAN'; - } - - $vfreebusy = new Sabre_VObject_Component('VFREEBUSY'); - $calendar->add($vfreebusy); - - if ($this->start) { - $dtstart = new Sabre_VObject_Property_DateTime('DTSTART'); - $dtstart->setDateTime($this->start,Sabre_VObject_Property_DateTime::UTC); - $vfreebusy->add($dtstart); - } - if ($this->end) { - $dtend = new Sabre_VObject_Property_DateTime('DTEND'); - $dtend->setDateTime($this->start,Sabre_VObject_Property_DateTime::UTC); - $vfreebusy->add($dtend); - } - $dtstamp = new Sabre_VObject_Property_DateTime('DTSTAMP'); - $dtstamp->setDateTime(new DateTime('now'), Sabre_VObject_Property_DateTime::UTC); - $vfreebusy->add($dtstamp); - - foreach($busyTimes as $busyTime) { - - $busyTime[0]->setTimeZone(new DateTimeZone('UTC')); - $busyTime[1]->setTimeZone(new DateTimeZone('UTC')); - - $prop = new Sabre_VObject_Property( - 'FREEBUSY', - $busyTime[0]->format('Ymd\\THis\\Z') . '/' . $busyTime[1]->format('Ymd\\THis\\Z') - ); - $prop['FBTYPE'] = $busyTime[2]; - $vfreebusy->add($prop); - - } - - return $calendar; - - } - -} - diff --git a/3rdparty/Sabre/VObject/Node.php b/3rdparty/Sabre/VObject/Node.php deleted file mode 100755 index d89e01b56c69e60904bbdc9496611951128b618a..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Node.php +++ /dev/null @@ -1,149 +0,0 @@ -iterator)) - return $this->iterator; - - return new Sabre_VObject_ElementList(array($this)); - - } - - /** - * Sets the overridden iterator - * - * Note that this is not actually part of the iterator interface - * - * @param Sabre_VObject_ElementList $iterator - * @return void - */ - public function setIterator(Sabre_VObject_ElementList $iterator) { - - $this->iterator = $iterator; - - } - - /* }}} */ - - /* {{{ Countable interface */ - - /** - * Returns the number of elements - * - * @return int - */ - public function count() { - - $it = $this->getIterator(); - return $it->count(); - - } - - /* }}} */ - - /* {{{ ArrayAccess Interface */ - - - /** - * Checks if an item exists through ArrayAccess. - * - * This method just forwards the request to the inner iterator - * - * @param int $offset - * @return bool - */ - public function offsetExists($offset) { - - $iterator = $this->getIterator(); - return $iterator->offsetExists($offset); - - } - - /** - * Gets an item through ArrayAccess. - * - * This method just forwards the request to the inner iterator - * - * @param int $offset - * @return mixed - */ - public function offsetGet($offset) { - - $iterator = $this->getIterator(); - return $iterator->offsetGet($offset); - - } - - /** - * Sets an item through ArrayAccess. - * - * This method just forwards the request to the inner iterator - * - * @param int $offset - * @param mixed $value - * @return void - */ - public function offsetSet($offset,$value) { - - $iterator = $this->getIterator(); - return $iterator->offsetSet($offset,$value); - - } - - /** - * Sets an item through ArrayAccess. - * - * This method just forwards the request to the inner iterator - * - * @param int $offset - * @return void - */ - public function offsetUnset($offset) { - - $iterator = $this->getIterator(); - return $iterator->offsetUnset($offset); - - } - - /* }}} */ - -} diff --git a/3rdparty/Sabre/VObject/Parameter.php b/3rdparty/Sabre/VObject/Parameter.php deleted file mode 100755 index 2e39af5f78ab1788067335f7b3f703845e26f4e8..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Parameter.php +++ /dev/null @@ -1,84 +0,0 @@ -name = strtoupper($name); - $this->value = $value; - - } - - /** - * Turns the object back into a serialized blob. - * - * @return string - */ - public function serialize() { - - if (is_null($this->value)) { - return $this->name; - } - $src = array( - '\\', - "\n", - ';', - ',', - ); - $out = array( - '\\\\', - '\n', - '\;', - '\,', - ); - - return $this->name . '=' . str_replace($src, $out, $this->value); - - } - - /** - * Called when this object is being cast to a string - * - * @return string - */ - public function __toString() { - - return $this->value; - - } - -} diff --git a/3rdparty/Sabre/VObject/ParseException.php b/3rdparty/Sabre/VObject/ParseException.php deleted file mode 100755 index 1b5e95bf16e49b5184b5fc089ec063457c5d3bab..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/ParseException.php +++ /dev/null @@ -1,12 +0,0 @@ - 'Sabre_VObject_Property_DateTime', - 'CREATED' => 'Sabre_VObject_Property_DateTime', - 'DTEND' => 'Sabre_VObject_Property_DateTime', - 'DTSTAMP' => 'Sabre_VObject_Property_DateTime', - 'DTSTART' => 'Sabre_VObject_Property_DateTime', - 'DUE' => 'Sabre_VObject_Property_DateTime', - 'EXDATE' => 'Sabre_VObject_Property_MultiDateTime', - 'LAST-MODIFIED' => 'Sabre_VObject_Property_DateTime', - 'RECURRENCE-ID' => 'Sabre_VObject_Property_DateTime', - 'TRIGGER' => 'Sabre_VObject_Property_DateTime', - ); - - /** - * Creates the new property by name, but in addition will also see if - * there's a class mapped to the property name. - * - * @param string $name - * @param string $value - * @return void - */ - static public function create($name, $value = null) { - - $name = strtoupper($name); - $shortName = $name; - $group = null; - if (strpos($shortName,'.')!==false) { - list($group, $shortName) = explode('.', $shortName); - } - - if (isset(self::$classMap[$shortName])) { - return new self::$classMap[$shortName]($name, $value); - } else { - return new self($name, $value); - } - - } - - /** - * Creates a new property object - * - * By default this object will iterate over its own children, but this can - * be overridden with the iterator argument - * - * @param string $name - * @param string $value - * @param Sabre_VObject_ElementList $iterator - */ - public function __construct($name, $value = null, $iterator = null) { - - $name = strtoupper($name); - $group = null; - if (strpos($name,'.')!==false) { - list($group, $name) = explode('.', $name); - } - $this->name = $name; - $this->group = $group; - if (!is_null($iterator)) $this->iterator = $iterator; - $this->setValue($value); - - } - - - - /** - * Updates the internal value - * - * @param string $value - * @return void - */ - public function setValue($value) { - - $this->value = $value; - - } - - /** - * Turns the object back into a serialized blob. - * - * @return string - */ - public function serialize() { - - $str = $this->name; - if ($this->group) $str = $this->group . '.' . $this->name; - - if (count($this->parameters)) { - foreach($this->parameters as $param) { - - $str.=';' . $param->serialize(); - - } - } - $src = array( - '\\', - "\n", - ); - $out = array( - '\\\\', - '\n', - ); - $str.=':' . str_replace($src, $out, $this->value); - - $out = ''; - while(strlen($str)>0) { - if (strlen($str)>75) { - $out.= mb_strcut($str,0,75,'utf-8') . "\r\n"; - $str = ' ' . mb_strcut($str,75,strlen($str),'utf-8'); - } else { - $out.=$str . "\r\n"; - $str=''; - break; - } - } - - return $out; - - } - - /** - * Adds a new componenten or element - * - * You can call this method with the following syntaxes: - * - * add(Sabre_VObject_Parameter $element) - * add(string $name, $value) - * - * The first version adds an Parameter - * The second adds a property as a string. - * - * @param mixed $item - * @param mixed $itemValue - * @return void - */ - public function add($item, $itemValue = null) { - - if ($item instanceof Sabre_VObject_Parameter) { - if (!is_null($itemValue)) { - throw new InvalidArgumentException('The second argument must not be specified, when passing a VObject'); - } - $item->parent = $this; - $this->parameters[] = $item; - } elseif(is_string($item)) { - - if (!is_scalar($itemValue) && !is_null($itemValue)) { - throw new InvalidArgumentException('The second argument must be scalar'); - } - $parameter = new Sabre_VObject_Parameter($item,$itemValue); - $parameter->parent = $this; - $this->parameters[] = $parameter; - - } else { - - throw new InvalidArgumentException('The first argument must either be a Sabre_VObject_Element or a string'); - - } - - } - - /* ArrayAccess interface {{{ */ - - /** - * Checks if an array element exists - * - * @param mixed $name - * @return bool - */ - public function offsetExists($name) { - - if (is_int($name)) return parent::offsetExists($name); - - $name = strtoupper($name); - - foreach($this->parameters as $parameter) { - if ($parameter->name == $name) return true; - } - return false; - - } - - /** - * Returns a parameter, or parameter list. - * - * @param string $name - * @return Sabre_VObject_Element - */ - public function offsetGet($name) { - - if (is_int($name)) return parent::offsetGet($name); - $name = strtoupper($name); - - $result = array(); - foreach($this->parameters as $parameter) { - if ($parameter->name == $name) - $result[] = $parameter; - } - - if (count($result)===0) { - return null; - } elseif (count($result)===1) { - return $result[0]; - } else { - $result[0]->setIterator(new Sabre_VObject_ElementList($result)); - return $result[0]; - } - - } - - /** - * Creates a new parameter - * - * @param string $name - * @param mixed $value - * @return void - */ - public function offsetSet($name, $value) { - - if (is_int($name)) return parent::offsetSet($name, $value); - - if (is_scalar($value)) { - if (!is_string($name)) - throw new InvalidArgumentException('A parameter name must be specified. This means you cannot use the $array[]="string" to add parameters.'); - - $this->offsetUnset($name); - $parameter = new Sabre_VObject_Parameter($name, $value); - $parameter->parent = $this; - $this->parameters[] = $parameter; - - } elseif ($value instanceof Sabre_VObject_Parameter) { - if (!is_null($name)) - throw new InvalidArgumentException('Don\'t specify a parameter name if you\'re passing a Sabre_VObject_Parameter. Add using $array[]=$parameterObject.'); - - $value->parent = $this; - $this->parameters[] = $value; - } else { - throw new InvalidArgumentException('You can only add parameters to the property object'); - } - - } - - /** - * Removes one or more parameters with the specified name - * - * @param string $name - * @return void - */ - public function offsetUnset($name) { - - if (is_int($name)) return parent::offsetUnset($name); - $name = strtoupper($name); - - foreach($this->parameters as $key=>$parameter) { - if ($parameter->name == $name) { - $parameter->parent = null; - unset($this->parameters[$key]); - } - - } - - } - - /* }}} */ - - /** - * Called when this object is being cast to a string - * - * @return string - */ - public function __toString() { - - return (string)$this->value; - - } - - /** - * This method is automatically called when the object is cloned. - * Specifically, this will ensure all child elements are also cloned. - * - * @return void - */ - public function __clone() { - - foreach($this->parameters as $key=>$child) { - $this->parameters[$key] = clone $child; - $this->parameters[$key]->parent = $this; - } - - } - -} diff --git a/3rdparty/Sabre/VObject/Property/DateTime.php b/3rdparty/Sabre/VObject/Property/DateTime.php deleted file mode 100755 index fe2372caa81cade8eb1aa149ea923e7fd62206dc..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Property/DateTime.php +++ /dev/null @@ -1,260 +0,0 @@ -setValue($dt->format('Ymd\\THis')); - $this->offsetUnset('VALUE'); - $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATE-TIME'); - break; - case self::UTC : - $dt->setTimeZone(new DateTimeZone('UTC')); - $this->setValue($dt->format('Ymd\\THis\\Z')); - $this->offsetUnset('VALUE'); - $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATE-TIME'); - break; - case self::LOCALTZ : - $this->setValue($dt->format('Ymd\\THis')); - $this->offsetUnset('VALUE'); - $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATE-TIME'); - $this->offsetSet('TZID', $dt->getTimeZone()->getName()); - break; - case self::DATE : - $this->setValue($dt->format('Ymd')); - $this->offsetUnset('VALUE'); - $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATE'); - break; - default : - throw new InvalidArgumentException('You must pass a valid dateType constant'); - - } - $this->dateTime = $dt; - $this->dateType = $dateType; - - } - - /** - * Returns the current DateTime value. - * - * If no value was set, this method returns null. - * - * @return DateTime|null - */ - public function getDateTime() { - - if ($this->dateTime) - return $this->dateTime; - - list( - $this->dateType, - $this->dateTime - ) = self::parseData($this->value, $this); - return $this->dateTime; - - } - - /** - * Returns the type of Date format. - * - * This method returns one of the format constants. If no date was set, - * this method will return null. - * - * @return int|null - */ - public function getDateType() { - - if ($this->dateType) - return $this->dateType; - - list( - $this->dateType, - $this->dateTime, - ) = self::parseData($this->value, $this); - return $this->dateType; - - } - - /** - * Parses the internal data structure to figure out what the current date - * and time is. - * - * The returned array contains two elements: - * 1. A 'DateType' constant (as defined on this class), or null. - * 2. A DateTime object (or null) - * - * @param string|null $propertyValue The string to parse (yymmdd or - * ymmddThhmmss, etc..) - * @param Sabre_VObject_Property|null $property The instance of the - * property we're parsing. - * @return array - */ - static public function parseData($propertyValue, Sabre_VObject_Property $property = null) { - - if (is_null($propertyValue)) { - return array(null, null); - } - - $date = '(?P[1-2][0-9]{3})(?P[0-1][0-9])(?P[0-3][0-9])'; - $time = '(?P[0-2][0-9])(?P[0-5][0-9])(?P[0-5][0-9])'; - $regex = "/^$date(T$time(?PZ)?)?$/"; - - if (!preg_match($regex, $propertyValue, $matches)) { - throw new InvalidArgumentException($propertyValue . ' is not a valid DateTime or Date string'); - } - - if (!isset($matches['hour'])) { - // Date-only - return array( - self::DATE, - new DateTime($matches['year'] . '-' . $matches['month'] . '-' . $matches['date'] . ' 00:00:00'), - ); - } - - $dateStr = - $matches['year'] .'-' . - $matches['month'] . '-' . - $matches['date'] . ' ' . - $matches['hour'] . ':' . - $matches['minute'] . ':' . - $matches['second']; - - if (isset($matches['isutc'])) { - $dt = new DateTime($dateStr,new DateTimeZone('UTC')); - $dt->setTimeZone(new DateTimeZone('UTC')); - return array( - self::UTC, - $dt - ); - } - - // Finding the timezone. - $tzid = $property['TZID']; - if (!$tzid) { - return array( - self::LOCAL, - new DateTime($dateStr) - ); - } - - try { - // tzid an Olson identifier? - $tz = new DateTimeZone($tzid->value); - } catch (Exception $e) { - - // Not an Olson id, we're going to try to find the information - // through the time zone name map. - $newtzid = Sabre_VObject_WindowsTimezoneMap::lookup($tzid->value); - if (is_null($newtzid)) { - - // Not a well known time zone name either, we're going to try - // to find the information through the VTIMEZONE object. - - // First we find the root object - $root = $property; - while($root->parent) { - $root = $root->parent; - } - - if (isset($root->VTIMEZONE)) { - foreach($root->VTIMEZONE as $vtimezone) { - if (((string)$vtimezone->TZID) == $tzid) { - if (isset($vtimezone->{'X-LIC-LOCATION'})) { - $newtzid = (string)$vtimezone->{'X-LIC-LOCATION'}; - } else { - // No libical location specified. As a last resort we could - // try matching $vtimezone's DST rules against all known - // time zones returned by DateTimeZone::list* - - // TODO - } - } - } - } - } - - try { - $tz = new DateTimeZone($newtzid); - } catch (Exception $e) { - // If all else fails, we use the default PHP timezone - $tz = new DateTimeZone(date_default_timezone_get()); - } - } - $dt = new DateTime($dateStr, $tz); - $dt->setTimeZone($tz); - - return array( - self::LOCALTZ, - $dt - ); - - } - -} diff --git a/3rdparty/Sabre/VObject/Property/MultiDateTime.php b/3rdparty/Sabre/VObject/Property/MultiDateTime.php deleted file mode 100755 index ae53ab6a6173a87922c90f8a5bb129ab8a341d92..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Property/MultiDateTime.php +++ /dev/null @@ -1,166 +0,0 @@ -offsetUnset('VALUE'); - $this->offsetUnset('TZID'); - switch($dateType) { - - case Sabre_VObject_Property_DateTime::LOCAL : - $val = array(); - foreach($dt as $i) { - $val[] = $i->format('Ymd\\THis'); - } - $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATE-TIME'); - break; - case Sabre_VObject_Property_DateTime::UTC : - $val = array(); - foreach($dt as $i) { - $i->setTimeZone(new DateTimeZone('UTC')); - $val[] = $i->format('Ymd\\THis\\Z'); - } - $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATE-TIME'); - break; - case Sabre_VObject_Property_DateTime::LOCALTZ : - $val = array(); - foreach($dt as $i) { - $val[] = $i->format('Ymd\\THis'); - } - $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATE-TIME'); - $this->offsetSet('TZID', $dt[0]->getTimeZone()->getName()); - break; - case Sabre_VObject_Property_DateTime::DATE : - $val = array(); - foreach($dt as $i) { - $val[] = $i->format('Ymd'); - } - $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATE'); - break; - default : - throw new InvalidArgumentException('You must pass a valid dateType constant'); - - } - $this->dateTimes = $dt; - $this->dateType = $dateType; - - } - - /** - * Returns the current DateTime value. - * - * If no value was set, this method returns null. - * - * @return array|null - */ - public function getDateTimes() { - - if ($this->dateTimes) - return $this->dateTimes; - - $dts = array(); - - if (!$this->value) { - $this->dateTimes = null; - $this->dateType = null; - return null; - } - - foreach(explode(',',$this->value) as $val) { - list( - $type, - $dt - ) = Sabre_VObject_Property_DateTime::parseData($val, $this); - $dts[] = $dt; - $this->dateType = $type; - } - $this->dateTimes = $dts; - return $this->dateTimes; - - } - - /** - * Returns the type of Date format. - * - * This method returns one of the format constants. If no date was set, - * this method will return null. - * - * @return int|null - */ - public function getDateType() { - - if ($this->dateType) - return $this->dateType; - - if (!$this->value) { - $this->dateTimes = null; - $this->dateType = null; - return null; - } - - $dts = array(); - foreach(explode(',',$this->value) as $val) { - list( - $type, - $dt - ) = Sabre_VObject_Property_DateTime::parseData($val, $this); - $dts[] = $dt; - $this->dateType = $type; - } - $this->dateTimes = $dts; - return $this->dateType; - - } - -} diff --git a/3rdparty/Sabre/VObject/Reader.php b/3rdparty/Sabre/VObject/Reader.php deleted file mode 100755 index eea73fa3dcee68163a42e9703a748feb783007fb..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Reader.php +++ /dev/null @@ -1,183 +0,0 @@ -add(self::readLine($lines)); - - $nextLine = current($lines); - - if ($nextLine===false) - throw new Sabre_VObject_ParseException('Invalid VObject. Document ended prematurely.'); - - } - - // Checking component name of the 'END:' line. - if (substr($nextLine,4)!==$obj->name) { - throw new Sabre_VObject_ParseException('Invalid VObject, expected: "END:' . $obj->name . '" got: "' . $nextLine . '"'); - } - next($lines); - - return $obj; - - } - - // Properties - //$result = preg_match('/(?P[A-Z0-9-]+)(?:;(?P^(?([^:^\"]|\"([^\"]*)\")*))?"; - $regex = "/^(?P$token)$parameters:(?P.*)$/i"; - - $result = preg_match($regex,$line,$matches); - - if (!$result) { - throw new Sabre_VObject_ParseException('Invalid VObject, line ' . ($lineNr+1) . ' did not follow the icalendar/vcard format'); - } - - $propertyName = strtoupper($matches['name']); - $propertyValue = preg_replace_callback('#(\\\\(\\\\|N|n|;|,))#',function($matches) { - if ($matches[2]==='n' || $matches[2]==='N') { - return "\n"; - } else { - return $matches[2]; - } - }, $matches['value']); - - $obj = Sabre_VObject_Property::create($propertyName, $propertyValue); - - if ($matches['parameters']) { - - foreach(self::readParameters($matches['parameters']) as $param) { - $obj->add($param); - } - - } - - return $obj; - - - } - - /** - * Reads a parameter list from a property - * - * This method returns an array of Sabre_VObject_Parameter - * - * @param string $parameters - * @return array - */ - static private function readParameters($parameters) { - - $token = '[A-Z0-9-]+'; - - $paramValue = '(?P[^\"^;]*|"[^"]*")'; - - $regex = "/(?<=^|;)(?P$token)(=$paramValue(?=$|;))?/i"; - preg_match_all($regex, $parameters, $matches, PREG_SET_ORDER); - - $params = array(); - foreach($matches as $match) { - - $value = isset($match['paramValue'])?$match['paramValue']:null; - - if (isset($value[0])) { - // Stripping quotes, if needed - if ($value[0] === '"') $value = substr($value,1,strlen($value)-2); - } else { - $value = ''; - } - - $value = preg_replace_callback('#(\\\\(\\\\|N|n|;|,))#',function($matches) { - if ($matches[2]==='n' || $matches[2]==='N') { - return "\n"; - } else { - return $matches[2]; - } - }, $value); - - $params[] = new Sabre_VObject_Parameter($match['paramName'], $value); - - } - - return $params; - - } - - -} diff --git a/3rdparty/Sabre/VObject/RecurrenceIterator.php b/3rdparty/Sabre/VObject/RecurrenceIterator.php deleted file mode 100755 index 740270dd8f0794719b5086ddc6919a14c4b04238..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/RecurrenceIterator.php +++ /dev/null @@ -1,1043 +0,0 @@ - 0, - 'MO' => 1, - 'TU' => 2, - 'WE' => 3, - 'TH' => 4, - 'FR' => 5, - 'SA' => 6, - ); - - /** - * Mappings between the day number and english day name. - * - * @var array - */ - private $dayNames = array( - 0 => 'Sunday', - 1 => 'Monday', - 2 => 'Tuesday', - 3 => 'Wednesday', - 4 => 'Thursday', - 5 => 'Friday', - 6 => 'Saturday', - ); - - /** - * If the current iteration of the event is an overriden event, this - * property will hold the VObject - * - * @var Sabre_Component_VObject - */ - private $currentOverriddenEvent; - - /** - * This property may contain the date of the next not-overridden event. - * This date is calculated sometimes a bit early, before overridden events - * are evaluated. - * - * @var DateTime - */ - private $nextDate; - - /** - * Creates the iterator - * - * You should pass a VCALENDAR component, as well as the UID of the event - * we're going to traverse. - * - * @param Sabre_VObject_Component $vcal - * @param string|null $uid - */ - public function __construct(Sabre_VObject_Component $vcal, $uid=null) { - - if (is_null($uid)) { - if ($vcal->name === 'VCALENDAR') { - throw new InvalidArgumentException('If you pass a VCALENDAR object, you must pass a uid argument as well'); - } - $components = array($vcal); - $uid = (string)$vcal->uid; - } else { - $components = $vcal->select('VEVENT'); - } - foreach($components as $component) { - if ((string)$component->uid == $uid) { - if (isset($component->{'RECURRENCE-ID'})) { - $this->overriddenEvents[$component->DTSTART->getDateTime()->getTimeStamp()] = $component; - $this->overriddenDates[] = $component->{'RECURRENCE-ID'}->getDateTime(); - } else { - $this->baseEvent = $component; - } - } - } - if (!$this->baseEvent) { - throw new InvalidArgumentException('Could not find a base event with uid: ' . $uid); - } - - $this->startDate = clone $this->baseEvent->DTSTART->getDateTime(); - - $this->endDate = null; - if (isset($this->baseEvent->DTEND)) { - $this->endDate = clone $this->baseEvent->DTEND->getDateTime(); - } else { - $this->endDate = clone $this->startDate; - if (isset($this->baseEvent->DURATION)) { - $this->endDate->add(Sabre_VObject_DateTimeParser::parse($this->baseEvent->DURATION->value)); - } elseif ($this->baseEvent->DTSTART->getDateType()===Sabre_VObject_Property_DateTime::DATE) { - $this->endDate->modify('+1 day'); - } - } - $this->currentDate = clone $this->startDate; - - $rrule = (string)$this->baseEvent->RRULE; - - $parts = explode(';', $rrule); - - foreach($parts as $part) { - - list($key, $value) = explode('=', $part, 2); - - switch(strtoupper($key)) { - - case 'FREQ' : - if (!in_array( - strtolower($value), - array('secondly','minutely','hourly','daily','weekly','monthly','yearly') - )) { - throw new InvalidArgumentException('Unknown value for FREQ=' . strtoupper($value)); - - } - $this->frequency = strtolower($value); - break; - - case 'UNTIL' : - $this->until = Sabre_VObject_DateTimeParser::parse($value); - break; - - case 'COUNT' : - $this->count = (int)$value; - break; - - case 'INTERVAL' : - $this->interval = (int)$value; - break; - - case 'BYSECOND' : - $this->bySecond = explode(',', $value); - break; - - case 'BYMINUTE' : - $this->byMinute = explode(',', $value); - break; - - case 'BYHOUR' : - $this->byHour = explode(',', $value); - break; - - case 'BYDAY' : - $this->byDay = explode(',', strtoupper($value)); - break; - - case 'BYMONTHDAY' : - $this->byMonthDay = explode(',', $value); - break; - - case 'BYYEARDAY' : - $this->byYearDay = explode(',', $value); - break; - - case 'BYWEEKNO' : - $this->byWeekNo = explode(',', $value); - break; - - case 'BYMONTH' : - $this->byMonth = explode(',', $value); - break; - - case 'BYSETPOS' : - $this->bySetPos = explode(',', $value); - break; - - case 'WKST' : - $this->weekStart = strtoupper($value); - break; - - } - - } - - // Parsing exception dates - if (isset($this->baseEvent->EXDATE)) { - foreach($this->baseEvent->EXDATE as $exDate) { - - foreach(explode(',', (string)$exDate) as $exceptionDate) { - - $this->exceptionDates[] = - Sabre_VObject_DateTimeParser::parse($exceptionDate, $this->startDate->getTimeZone()); - - } - - } - - } - - } - - /** - * Returns the current item in the list - * - * @return DateTime - */ - public function current() { - - if (!$this->valid()) return null; - return clone $this->currentDate; - - } - - /** - * This method returns the startdate for the current iteration of the - * event. - * - * @return DateTime - */ - public function getDtStart() { - - if (!$this->valid()) return null; - return clone $this->currentDate; - - } - - /** - * This method returns the enddate for the current iteration of the - * event. - * - * @return DateTime - */ - public function getDtEnd() { - - if (!$this->valid()) return null; - $dtEnd = clone $this->currentDate; - $dtEnd->add( $this->startDate->diff( $this->endDate ) ); - return clone $dtEnd; - - } - - /** - * Returns a VEVENT object with the updated start and end date. - * - * Any recurrence information is removed, and this function may return an - * 'overridden' event instead. - * - * This method always returns a cloned instance. - * - * @return void - */ - public function getEventObject() { - - if ($this->currentOverriddenEvent) { - return clone $this->currentOverriddenEvent; - } - $event = clone $this->baseEvent; - unset($event->RRULE); - unset($event->EXDATE); - unset($event->RDATE); - unset($event->EXRULE); - - $event->DTSTART->setDateTime($this->getDTStart(), $event->DTSTART->getDateType()); - if (isset($event->DTEND)) { - $event->DTEND->setDateTime($this->getDtEnd(), $event->DTSTART->getDateType()); - } - if ($this->counter > 0) { - $event->{'RECURRENCE-ID'} = (string)$event->DTSTART; - } - - return $event; - - } - - /** - * Returns the current item number - * - * @return int - */ - public function key() { - - return $this->counter; - - } - - /** - * Whether or not there is a 'next item' - * - * @return bool - */ - public function valid() { - - if (!is_null($this->count)) { - return $this->counter < $this->count; - } - if (!is_null($this->until)) { - return $this->currentDate <= $this->until; - } - return true; - - } - - /** - * Resets the iterator - * - * @return void - */ - public function rewind() { - - $this->currentDate = clone $this->startDate; - $this->counter = 0; - - } - - /** - * This method allows you to quickly go to the next occurrence after the - * specified date. - * - * Note that this checks the current 'endDate', not the 'stardDate'. This - * means that if you forward to January 1st, the iterator will stop at the - * first event that ends *after* January 1st. - * - * @param DateTime $dt - * @return void - */ - public function fastForward(DateTime $dt) { - - while($this->valid() && $this->getDTEnd() <= $dt) { - $this->next(); - } - - } - - /** - * Goes on to the next iteration - * - * @return void - */ - public function next() { - - /* - if (!is_null($this->count) && $this->counter >= $this->count) { - $this->currentDate = null; - }*/ - - - $previousStamp = $this->currentDate->getTimeStamp(); - - while(true) { - - $this->currentOverriddenEvent = null; - - // If we have a next date 'stored', we use that - if ($this->nextDate) { - $this->currentDate = $this->nextDate; - $currentStamp = $this->currentDate->getTimeStamp(); - $this->nextDate = null; - } else { - - // Otherwise, we calculate it - switch($this->frequency) { - - case 'daily' : - $this->nextDaily(); - break; - - case 'weekly' : - $this->nextWeekly(); - break; - - case 'monthly' : - $this->nextMonthly(); - break; - - case 'yearly' : - $this->nextYearly(); - break; - - } - $currentStamp = $this->currentDate->getTimeStamp(); - - // Checking exception dates - foreach($this->exceptionDates as $exceptionDate) { - if ($this->currentDate == $exceptionDate) { - $this->counter++; - continue 2; - } - } - foreach($this->overriddenDates as $overriddenDate) { - if ($this->currentDate == $overriddenDate) { - continue 2; - } - } - - } - - // Checking overriden events - foreach($this->overriddenEvents as $index=>$event) { - if ($index > $previousStamp && $index <= $currentStamp) { - - // We're moving the 'next date' aside, for later use. - $this->nextDate = clone $this->currentDate; - - $this->currentDate = $event->DTSTART->getDateTime(); - $this->currentOverriddenEvent = $event; - - break; - } - } - - break; - - } - - /* - if (!is_null($this->until)) { - if($this->currentDate > $this->until) { - $this->currentDate = null; - } - }*/ - - $this->counter++; - - } - - /** - * Does the processing for advancing the iterator for daily frequency. - * - * @return void - */ - protected function nextDaily() { - - if (!$this->byDay) { - $this->currentDate->modify('+' . $this->interval . ' days'); - return; - } - - $recurrenceDays = array(); - foreach($this->byDay as $byDay) { - - // The day may be preceeded with a positive (+n) or - // negative (-n) integer. However, this does not make - // sense in 'weekly' so we ignore it here. - $recurrenceDays[] = $this->dayMap[substr($byDay,-2)]; - - } - - do { - - $this->currentDate->modify('+' . $this->interval . ' days'); - - // Current day of the week - $currentDay = $this->currentDate->format('w'); - - } while (!in_array($currentDay, $recurrenceDays)); - - } - - /** - * Does the processing for advancing the iterator for weekly frequency. - * - * @return void - */ - protected function nextWeekly() { - - if (!$this->byDay) { - $this->currentDate->modify('+' . $this->interval . ' weeks'); - return; - } - - $recurrenceDays = array(); - foreach($this->byDay as $byDay) { - - // The day may be preceeded with a positive (+n) or - // negative (-n) integer. However, this does not make - // sense in 'weekly' so we ignore it here. - $recurrenceDays[] = $this->dayMap[substr($byDay,-2)]; - - } - - // Current day of the week - $currentDay = $this->currentDate->format('w'); - - // First day of the week: - $firstDay = $this->dayMap[$this->weekStart]; - - $time = array( - $this->currentDate->format('H'), - $this->currentDate->format('i'), - $this->currentDate->format('s') - ); - - // Increasing the 'current day' until we find our next - // occurrence. - while(true) { - - $currentDay++; - - if ($currentDay>6) { - $currentDay = 0; - } - - // We need to roll over to the next week - if ($currentDay === $firstDay) { - $this->currentDate->modify('+' . $this->interval . ' weeks'); - - // We need to go to the first day of this week, but only if we - // are not already on this first day of this week. - if($this->currentDate->format('w') != $firstDay) { - $this->currentDate->modify('last ' . $this->dayNames[$this->dayMap[$this->weekStart]]); - $this->currentDate->setTime($time[0],$time[1],$time[2]); - } - } - - // We have a match - if (in_array($currentDay ,$recurrenceDays)) { - $this->currentDate->modify($this->dayNames[$currentDay]); - $this->currentDate->setTime($time[0],$time[1],$time[2]); - break; - } - - } - - } - - /** - * Does the processing for advancing the iterator for monthly frequency. - * - * @return void - */ - protected function nextMonthly() { - - $currentDayOfMonth = $this->currentDate->format('j'); - if (!$this->byMonthDay && !$this->byDay) { - - // If the current day is higher than the 28th, rollover can - // occur to the next month. We Must skip these invalid - // entries. - if ($currentDayOfMonth < 29) { - $this->currentDate->modify('+' . $this->interval . ' months'); - } else { - $increase = 0; - do { - $increase++; - $tempDate = clone $this->currentDate; - $tempDate->modify('+ ' . ($this->interval*$increase) . ' months'); - } while ($tempDate->format('j') != $currentDayOfMonth); - $this->currentDate = $tempDate; - } - return; - } - - while(true) { - - $occurrences = $this->getMonthlyOccurrences(); - - foreach($occurrences as $occurrence) { - - // The first occurrence thats higher than the current - // day of the month wins. - if ($occurrence > $currentDayOfMonth) { - break 2; - } - - } - - // If we made it all the way here, it means there were no - // valid occurrences, and we need to advance to the next - // month. - $this->currentDate->modify('first day of this month'); - $this->currentDate->modify('+ ' . $this->interval . ' months'); - - // This goes to 0 because we need to start counting at hte - // beginning. - $currentDayOfMonth = 0; - - } - - $this->currentDate->setDate($this->currentDate->format('Y'), $this->currentDate->format('n'), $occurrence); - - } - - /** - * Does the processing for advancing the iterator for yearly frequency. - * - * @return void - */ - protected function nextYearly() { - - $currentMonth = $this->currentDate->format('n'); - $currentYear = $this->currentDate->format('Y'); - $currentDayOfMonth = $this->currentDate->format('j'); - - // No sub-rules, so we just advance by year - if (!$this->byMonth) { - - // Unless it was a leap day! - if ($currentMonth==2 && $currentDayOfMonth==29) { - - $counter = 0; - do { - $counter++; - // Here we increase the year count by the interval, until - // we hit a date that's also in a leap year. - // - // We could just find the next interval that's dividable by - // 4, but that would ignore the rule that there's no leap - // year every year that's dividable by a 100, but not by - // 400. (1800, 1900, 2100). So we just rely on the datetime - // functions instead. - $nextDate = clone $this->currentDate; - $nextDate->modify('+ ' . ($this->interval*$counter) . ' years'); - } while ($nextDate->format('n')!=2); - $this->currentDate = $nextDate; - - return; - - } - - // The easiest form - $this->currentDate->modify('+' . $this->interval . ' years'); - return; - - } - - $currentMonth = $this->currentDate->format('n'); - $currentYear = $this->currentDate->format('Y'); - $currentDayOfMonth = $this->currentDate->format('j'); - - $advancedToNewMonth = false; - - // If we got a byDay or getMonthDay filter, we must first expand - // further. - if ($this->byDay || $this->byMonthDay) { - - while(true) { - - $occurrences = $this->getMonthlyOccurrences(); - - foreach($occurrences as $occurrence) { - - // The first occurrence that's higher than the current - // day of the month wins. - // If we advanced to the next month or year, the first - // occurence is always correct. - if ($occurrence > $currentDayOfMonth || $advancedToNewMonth) { - break 2; - } - - } - - // If we made it here, it means we need to advance to - // the next month or year. - $currentDayOfMonth = 1; - $advancedToNewMonth = true; - do { - - $currentMonth++; - if ($currentMonth>12) { - $currentYear+=$this->interval; - $currentMonth = 1; - } - } while (!in_array($currentMonth, $this->byMonth)); - - $this->currentDate->setDate($currentYear, $currentMonth, $currentDayOfMonth); - - } - - // If we made it here, it means we got a valid occurrence - $this->currentDate->setDate($currentYear, $currentMonth, $occurrence); - return; - - } else { - - // These are the 'byMonth' rules, if there are no byDay or - // byMonthDay sub-rules. - do { - - $currentMonth++; - if ($currentMonth>12) { - $currentYear+=$this->interval; - $currentMonth = 1; - } - } while (!in_array($currentMonth, $this->byMonth)); - $this->currentDate->setDate($currentYear, $currentMonth, $currentDayOfMonth); - - return; - - } - - } - - /** - * Returns all the occurrences for a monthly frequency with a 'byDay' or - * 'byMonthDay' expansion for the current month. - * - * The returned list is an array of integers with the day of month (1-31). - * - * @return array - */ - protected function getMonthlyOccurrences() { - - $startDate = clone $this->currentDate; - - $byDayResults = array(); - - // Our strategy is to simply go through the byDays, advance the date to - // that point and add it to the results. - if ($this->byDay) foreach($this->byDay as $day) { - - $dayName = $this->dayNames[$this->dayMap[substr($day,-2)]]; - - // Dayname will be something like 'wednesday'. Now we need to find - // all wednesdays in this month. - $dayHits = array(); - - $checkDate = clone $startDate; - $checkDate->modify('first day of this month'); - $checkDate->modify($dayName); - - do { - $dayHits[] = $checkDate->format('j'); - $checkDate->modify('next ' . $dayName); - } while ($checkDate->format('n') === $startDate->format('n')); - - // So now we have 'all wednesdays' for month. It is however - // possible that the user only really wanted the 1st, 2nd or last - // wednesday. - if (strlen($day)>2) { - $offset = (int)substr($day,0,-2); - - if ($offset>0) { - // It is possible that the day does not exist, such as a - // 5th or 6th wednesday of the month. - if (isset($dayHits[$offset-1])) { - $byDayResults[] = $dayHits[$offset-1]; - } - } else { - - // if it was negative we count from the end of the array - $byDayResults[] = $dayHits[count($dayHits) + $offset]; - } - } else { - // There was no counter (first, second, last wednesdays), so we - // just need to add the all to the list). - $byDayResults = array_merge($byDayResults, $dayHits); - - } - - } - - $byMonthDayResults = array(); - if ($this->byMonthDay) foreach($this->byMonthDay as $monthDay) { - - // Removing values that are out of range for this month - if ($monthDay > $startDate->format('t') || - $monthDay < 0-$startDate->format('t')) { - continue; - } - if ($monthDay>0) { - $byMonthDayResults[] = $monthDay; - } else { - // Negative values - $byMonthDayResults[] = $startDate->format('t') + 1 + $monthDay; - } - } - - // If there was just byDay or just byMonthDay, they just specify our - // (almost) final list. If both were provided, then byDay limits the - // list. - if ($this->byMonthDay && $this->byDay) { - $result = array_intersect($byMonthDayResults, $byDayResults); - } elseif ($this->byMonthDay) { - $result = $byMonthDayResults; - } else { - $result = $byDayResults; - } - $result = array_unique($result); - sort($result, SORT_NUMERIC); - - // The last thing that needs checking is the BYSETPOS. If it's set, it - // means only certain items in the set survive the filter. - if (!$this->bySetPos) { - return $result; - } - - $filteredResult = array(); - foreach($this->bySetPos as $setPos) { - - if ($setPos<0) { - $setPos = count($result)-($setPos+1); - } - if (isset($result[$setPos-1])) { - $filteredResult[] = $result[$setPos-1]; - } - } - - sort($filteredResult, SORT_NUMERIC); - return $filteredResult; - - } - - -} - diff --git a/3rdparty/Sabre/VObject/Version.php b/3rdparty/Sabre/VObject/Version.php deleted file mode 100755 index 9ee03d871181899be61043c38e056978d8d082f1..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/Version.php +++ /dev/null @@ -1,24 +0,0 @@ -'Australia/Darwin', - 'AUS Eastern Standard Time'=>'Australia/Sydney', - 'Afghanistan Standard Time'=>'Asia/Kabul', - 'Alaskan Standard Time'=>'America/Anchorage', - 'Arab Standard Time'=>'Asia/Riyadh', - 'Arabian Standard Time'=>'Asia/Dubai', - 'Arabic Standard Time'=>'Asia/Baghdad', - 'Argentina Standard Time'=>'America/Buenos_Aires', - 'Armenian Standard Time'=>'Asia/Yerevan', - 'Atlantic Standard Time'=>'America/Halifax', - 'Azerbaijan Standard Time'=>'Asia/Baku', - 'Azores Standard Time'=>'Atlantic/Azores', - 'Bangladesh Standard Time'=>'Asia/Dhaka', - 'Canada Central Standard Time'=>'America/Regina', - 'Cape Verde Standard Time'=>'Atlantic/Cape_Verde', - 'Caucasus Standard Time'=>'Asia/Yerevan', - 'Cen. Australia Standard Time'=>'Australia/Adelaide', - 'Central America Standard Time'=>'America/Guatemala', - 'Central Asia Standard Time'=>'Asia/Almaty', - 'Central Brazilian Standard Time'=>'America/Cuiaba', - 'Central Europe Standard Time'=>'Europe/Budapest', - 'Central European Standard Time'=>'Europe/Warsaw', - 'Central Pacific Standard Time'=>'Pacific/Guadalcanal', - 'Central Standard Time'=>'America/Chicago', - 'Central Standard Time (Mexico)'=>'America/Mexico_City', - 'China Standard Time'=>'Asia/Shanghai', - 'Dateline Standard Time'=>'Etc/GMT+12', - 'E. Africa Standard Time'=>'Africa/Nairobi', - 'E. Australia Standard Time'=>'Australia/Brisbane', - 'E. Europe Standard Time'=>'Europe/Minsk', - 'E. South America Standard Time'=>'America/Sao_Paulo', - 'Eastern Standard Time'=>'America/New_York', - 'Egypt Standard Time'=>'Africa/Cairo', - 'Ekaterinburg Standard Time'=>'Asia/Yekaterinburg', - 'FLE Standard Time'=>'Europe/Kiev', - 'Fiji Standard Time'=>'Pacific/Fiji', - 'GMT Standard Time'=>'Europe/London', - 'GTB Standard Time'=>'Europe/Istanbul', - 'Georgian Standard Time'=>'Asia/Tbilisi', - 'Greenland Standard Time'=>'America/Godthab', - 'Greenwich Standard Time'=>'Atlantic/Reykjavik', - 'Hawaiian Standard Time'=>'Pacific/Honolulu', - 'India Standard Time'=>'Asia/Calcutta', - 'Iran Standard Time'=>'Asia/Tehran', - 'Israel Standard Time'=>'Asia/Jerusalem', - 'Jordan Standard Time'=>'Asia/Amman', - 'Kamchatka Standard Time'=>'Asia/Kamchatka', - 'Korea Standard Time'=>'Asia/Seoul', - 'Magadan Standard Time'=>'Asia/Magadan', - 'Mauritius Standard Time'=>'Indian/Mauritius', - 'Mexico Standard Time'=>'America/Mexico_City', - 'Mexico Standard Time 2'=>'America/Chihuahua', - 'Mid-Atlantic Standard Time'=>'Etc/GMT+2', - 'Middle East Standard Time'=>'Asia/Beirut', - 'Montevideo Standard Time'=>'America/Montevideo', - 'Morocco Standard Time'=>'Africa/Casablanca', - 'Mountain Standard Time'=>'America/Denver', - 'Mountain Standard Time (Mexico)'=>'America/Chihuahua', - 'Myanmar Standard Time'=>'Asia/Rangoon', - 'N. Central Asia Standard Time'=>'Asia/Novosibirsk', - 'Namibia Standard Time'=>'Africa/Windhoek', - 'Nepal Standard Time'=>'Asia/Katmandu', - 'New Zealand Standard Time'=>'Pacific/Auckland', - 'Newfoundland Standard Time'=>'America/St_Johns', - 'North Asia East Standard Time'=>'Asia/Irkutsk', - 'North Asia Standard Time'=>'Asia/Krasnoyarsk', - 'Pacific SA Standard Time'=>'America/Santiago', - 'Pacific Standard Time'=>'America/Los_Angeles', - 'Pacific Standard Time (Mexico)'=>'America/Santa_Isabel', - 'Pakistan Standard Time'=>'Asia/Karachi', - 'Paraguay Standard Time'=>'America/Asuncion', - 'Romance Standard Time'=>'Europe/Paris', - 'Russian Standard Time'=>'Europe/Moscow', - 'SA Eastern Standard Time'=>'America/Cayenne', - 'SA Pacific Standard Time'=>'America/Bogota', - 'SA Western Standard Time'=>'America/La_Paz', - 'SE Asia Standard Time'=>'Asia/Bangkok', - 'Samoa Standard Time'=>'Pacific/Apia', - 'Singapore Standard Time'=>'Asia/Singapore', - 'South Africa Standard Time'=>'Africa/Johannesburg', - 'Sri Lanka Standard Time'=>'Asia/Colombo', - 'Syria Standard Time'=>'Asia/Damascus', - 'Taipei Standard Time'=>'Asia/Taipei', - 'Tasmania Standard Time'=>'Australia/Hobart', - 'Tokyo Standard Time'=>'Asia/Tokyo', - 'Tonga Standard Time'=>'Pacific/Tongatapu', - 'US Eastern Standard Time'=>'America/Indianapolis', - 'US Mountain Standard Time'=>'America/Phoenix', - 'UTC'=>'Etc/GMT', - 'UTC+12'=>'Etc/GMT-12', - 'UTC-02'=>'Etc/GMT+2', - 'UTC-11'=>'Etc/GMT+11', - 'Ulaanbaatar Standard Time'=>'Asia/Ulaanbaatar', - 'Venezuela Standard Time'=>'America/Caracas', - 'Vladivostok Standard Time'=>'Asia/Vladivostok', - 'W. Australia Standard Time'=>'Australia/Perth', - 'W. Central Africa Standard Time'=>'Africa/Lagos', - 'W. Europe Standard Time'=>'Europe/Berlin', - 'West Asia Standard Time'=>'Asia/Tashkent', - 'West Pacific Standard Time'=>'Pacific/Port_Moresby', - 'Yakutsk Standard Time'=>'Asia/Yakutsk', - ); - - static public function lookup($tzid) { - return isset(self::$map[$tzid]) ? self::$map[$tzid] : null; - } -} diff --git a/3rdparty/Sabre/VObject/includes.php b/3rdparty/Sabre/VObject/includes.php deleted file mode 100755 index 0177a8f1ba69089c467da2f6dbe67a14c2914fa6..0000000000000000000000000000000000000000 --- a/3rdparty/Sabre/VObject/includes.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: System.php 313024 2011-07-06 19:51:24Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR.php'; -require_once 'Console/Getopt.php'; - -$GLOBALS['_System_temp_files'] = array(); - -/** -* System offers cross plattform compatible system functions -* -* Static functions for different operations. Should work under -* Unix and Windows. The names and usage has been taken from its respectively -* GNU commands. The functions will return (bool) false on error and will -* trigger the error with the PHP trigger_error() function (you can silence -* the error by prefixing a '@' sign after the function call, but this -* is not recommended practice. Instead use an error handler with -* {@link set_error_handler()}). -* -* Documentation on this class you can find in: -* http://pear.php.net/manual/ -* -* Example usage: -* if (!@System::rm('-r file1 dir1')) { -* print "could not delete file1 or dir1"; -* } -* -* In case you need to to pass file names with spaces, -* pass the params as an array: -* -* System::rm(array('-r', $file1, $dir1)); -* -* @category pear -* @package System -* @author Tomas V.V. Cox -* @copyright 1997-2006 The PHP Group -* @license http://opensource.org/licenses/bsd-license.php New BSD License -* @version Release: 1.9.4 -* @link http://pear.php.net/package/PEAR -* @since Class available since Release 0.1 -* @static -*/ -class System -{ - /** - * returns the commandline arguments of a function - * - * @param string $argv the commandline - * @param string $short_options the allowed option short-tags - * @param string $long_options the allowed option long-tags - * @return array the given options and there values - * @static - * @access private - */ - function _parseArgs($argv, $short_options, $long_options = null) - { - if (!is_array($argv) && $argv !== null) { - // Find all items, quoted or otherwise - preg_match_all("/(?:[\"'])(.*?)(?:['\"])|([^\s]+)/", $argv, $av); - $argv = $av[1]; - foreach ($av[2] as $k => $a) { - if (empty($a)) { - continue; - } - $argv[$k] = trim($a) ; - } - } - return Console_Getopt::getopt2($argv, $short_options, $long_options); - } - - /** - * Output errors with PHP trigger_error(). You can silence the errors - * with prefixing a "@" sign to the function call: @System::mkdir(..); - * - * @param mixed $error a PEAR error or a string with the error message - * @return bool false - * @static - * @access private - */ - function raiseError($error) - { - if (PEAR::isError($error)) { - $error = $error->getMessage(); - } - trigger_error($error, E_USER_WARNING); - return false; - } - - /** - * Creates a nested array representing the structure of a directory - * - * System::_dirToStruct('dir1', 0) => - * Array - * ( - * [dirs] => Array - * ( - * [0] => dir1 - * ) - * - * [files] => Array - * ( - * [0] => dir1/file2 - * [1] => dir1/file3 - * ) - * ) - * @param string $sPath Name of the directory - * @param integer $maxinst max. deep of the lookup - * @param integer $aktinst starting deep of the lookup - * @param bool $silent if true, do not emit errors. - * @return array the structure of the dir - * @static - * @access private - */ - function _dirToStruct($sPath, $maxinst, $aktinst = 0, $silent = false) - { - $struct = array('dirs' => array(), 'files' => array()); - if (($dir = @opendir($sPath)) === false) { - if (!$silent) { - System::raiseError("Could not open dir $sPath"); - } - return $struct; // XXX could not open error - } - - $struct['dirs'][] = $sPath = realpath($sPath); // XXX don't add if '.' or '..' ? - $list = array(); - while (false !== ($file = readdir($dir))) { - if ($file != '.' && $file != '..') { - $list[] = $file; - } - } - - closedir($dir); - natsort($list); - if ($aktinst < $maxinst || $maxinst == 0) { - foreach ($list as $val) { - $path = $sPath . DIRECTORY_SEPARATOR . $val; - if (is_dir($path) && !is_link($path)) { - $tmp = System::_dirToStruct($path, $maxinst, $aktinst+1, $silent); - $struct = array_merge_recursive($struct, $tmp); - } else { - $struct['files'][] = $path; - } - } - } - - return $struct; - } - - /** - * Creates a nested array representing the structure of a directory and files - * - * @param array $files Array listing files and dirs - * @return array - * @static - * @see System::_dirToStruct() - */ - function _multipleToStruct($files) - { - $struct = array('dirs' => array(), 'files' => array()); - settype($files, 'array'); - foreach ($files as $file) { - if (is_dir($file) && !is_link($file)) { - $tmp = System::_dirToStruct($file, 0); - $struct = array_merge_recursive($tmp, $struct); - } else { - if (!in_array($file, $struct['files'])) { - $struct['files'][] = $file; - } - } - } - return $struct; - } - - /** - * The rm command for removing files. - * Supports multiple files and dirs and also recursive deletes - * - * @param string $args the arguments for rm - * @return mixed PEAR_Error or true for success - * @static - * @access public - */ - function rm($args) - { - $opts = System::_parseArgs($args, 'rf'); // "f" does nothing but I like it :-) - if (PEAR::isError($opts)) { - return System::raiseError($opts); - } - foreach ($opts[0] as $opt) { - if ($opt[0] == 'r') { - $do_recursive = true; - } - } - $ret = true; - if (isset($do_recursive)) { - $struct = System::_multipleToStruct($opts[1]); - foreach ($struct['files'] as $file) { - if (!@unlink($file)) { - $ret = false; - } - } - - rsort($struct['dirs']); - foreach ($struct['dirs'] as $dir) { - if (!@rmdir($dir)) { - $ret = false; - } - } - } else { - foreach ($opts[1] as $file) { - $delete = (is_dir($file)) ? 'rmdir' : 'unlink'; - if (!@$delete($file)) { - $ret = false; - } - } - } - return $ret; - } - - /** - * Make directories. - * - * The -p option will create parent directories - * @param string $args the name of the director(y|ies) to create - * @return bool True for success - * @static - * @access public - */ - function mkDir($args) - { - $opts = System::_parseArgs($args, 'pm:'); - if (PEAR::isError($opts)) { - return System::raiseError($opts); - } - - $mode = 0777; // default mode - foreach ($opts[0] as $opt) { - if ($opt[0] == 'p') { - $create_parents = true; - } elseif ($opt[0] == 'm') { - // if the mode is clearly an octal number (starts with 0) - // convert it to decimal - if (strlen($opt[1]) && $opt[1]{0} == '0') { - $opt[1] = octdec($opt[1]); - } else { - // convert to int - $opt[1] += 0; - } - $mode = $opt[1]; - } - } - - $ret = true; - if (isset($create_parents)) { - foreach ($opts[1] as $dir) { - $dirstack = array(); - while ((!file_exists($dir) || !is_dir($dir)) && - $dir != DIRECTORY_SEPARATOR) { - array_unshift($dirstack, $dir); - $dir = dirname($dir); - } - - while ($newdir = array_shift($dirstack)) { - if (!is_writeable(dirname($newdir))) { - $ret = false; - break; - } - - if (!mkdir($newdir, $mode)) { - $ret = false; - } - } - } - } else { - foreach($opts[1] as $dir) { - if ((@file_exists($dir) || !is_dir($dir)) && !mkdir($dir, $mode)) { - $ret = false; - } - } - } - - return $ret; - } - - /** - * Concatenate files - * - * Usage: - * 1) $var = System::cat('sample.txt test.txt'); - * 2) System::cat('sample.txt test.txt > final.txt'); - * 3) System::cat('sample.txt test.txt >> final.txt'); - * - * Note: as the class use fopen, urls should work also (test that) - * - * @param string $args the arguments - * @return boolean true on success - * @static - * @access public - */ - function &cat($args) - { - $ret = null; - $files = array(); - if (!is_array($args)) { - $args = preg_split('/\s+/', $args, -1, PREG_SPLIT_NO_EMPTY); - } - - $count_args = count($args); - for ($i = 0; $i < $count_args; $i++) { - if ($args[$i] == '>') { - $mode = 'wb'; - $outputfile = $args[$i+1]; - break; - } elseif ($args[$i] == '>>') { - $mode = 'ab+'; - $outputfile = $args[$i+1]; - break; - } else { - $files[] = $args[$i]; - } - } - $outputfd = false; - if (isset($mode)) { - if (!$outputfd = fopen($outputfile, $mode)) { - $err = System::raiseError("Could not open $outputfile"); - return $err; - } - $ret = true; - } - foreach ($files as $file) { - if (!$fd = fopen($file, 'r')) { - System::raiseError("Could not open $file"); - continue; - } - while ($cont = fread($fd, 2048)) { - if (is_resource($outputfd)) { - fwrite($outputfd, $cont); - } else { - $ret .= $cont; - } - } - fclose($fd); - } - if (is_resource($outputfd)) { - fclose($outputfd); - } - return $ret; - } - - /** - * Creates temporary files or directories. This function will remove - * the created files when the scripts finish its execution. - * - * Usage: - * 1) $tempfile = System::mktemp("prefix"); - * 2) $tempdir = System::mktemp("-d prefix"); - * 3) $tempfile = System::mktemp(); - * 4) $tempfile = System::mktemp("-t /var/tmp prefix"); - * - * prefix -> The string that will be prepended to the temp name - * (defaults to "tmp"). - * -d -> A temporary dir will be created instead of a file. - * -t -> The target dir where the temporary (file|dir) will be created. If - * this param is missing by default the env vars TMP on Windows or - * TMPDIR in Unix will be used. If these vars are also missing - * c:\windows\temp or /tmp will be used. - * - * @param string $args The arguments - * @return mixed the full path of the created (file|dir) or false - * @see System::tmpdir() - * @static - * @access public - */ - function mktemp($args = null) - { - static $first_time = true; - $opts = System::_parseArgs($args, 't:d'); - if (PEAR::isError($opts)) { - return System::raiseError($opts); - } - - foreach ($opts[0] as $opt) { - if ($opt[0] == 'd') { - $tmp_is_dir = true; - } elseif ($opt[0] == 't') { - $tmpdir = $opt[1]; - } - } - - $prefix = (isset($opts[1][0])) ? $opts[1][0] : 'tmp'; - if (!isset($tmpdir)) { - $tmpdir = System::tmpdir(); - } - - if (!System::mkDir(array('-p', $tmpdir))) { - return false; - } - - $tmp = tempnam($tmpdir, $prefix); - if (isset($tmp_is_dir)) { - unlink($tmp); // be careful possible race condition here - if (!mkdir($tmp, 0700)) { - return System::raiseError("Unable to create temporary directory $tmpdir"); - } - } - - $GLOBALS['_System_temp_files'][] = $tmp; - if (isset($tmp_is_dir)) { - //$GLOBALS['_System_temp_files'][] = dirname($tmp); - } - - if ($first_time) { - PEAR::registerShutdownFunc(array('System', '_removeTmpFiles')); - $first_time = false; - } - - return $tmp; - } - - /** - * Remove temporary files created my mkTemp. This function is executed - * at script shutdown time - * - * @static - * @access private - */ - function _removeTmpFiles() - { - if (count($GLOBALS['_System_temp_files'])) { - $delete = $GLOBALS['_System_temp_files']; - array_unshift($delete, '-r'); - System::rm($delete); - $GLOBALS['_System_temp_files'] = array(); - } - } - - /** - * Get the path of the temporal directory set in the system - * by looking in its environments variables. - * Note: php.ini-recommended removes the "E" from the variables_order setting, - * making unavaible the $_ENV array, that s why we do tests with _ENV - * - * @static - * @return string The temporary directory on the system - */ - function tmpdir() - { - if (OS_WINDOWS) { - if ($var = isset($_ENV['TMP']) ? $_ENV['TMP'] : getenv('TMP')) { - return $var; - } - if ($var = isset($_ENV['TEMP']) ? $_ENV['TEMP'] : getenv('TEMP')) { - return $var; - } - if ($var = isset($_ENV['USERPROFILE']) ? $_ENV['USERPROFILE'] : getenv('USERPROFILE')) { - return $var; - } - if ($var = isset($_ENV['windir']) ? $_ENV['windir'] : getenv('windir')) { - return $var; - } - return getenv('SystemRoot') . '\temp'; - } - if ($var = isset($_ENV['TMPDIR']) ? $_ENV['TMPDIR'] : getenv('TMPDIR')) { - return $var; - } - return realpath('/tmp'); - } - - /** - * The "which" command (show the full path of a command) - * - * @param string $program The command to search for - * @param mixed $fallback Value to return if $program is not found - * - * @return mixed A string with the full path or false if not found - * @static - * @author Stig Bakken - */ - function which($program, $fallback = false) - { - // enforce API - if (!is_string($program) || '' == $program) { - return $fallback; - } - - // full path given - if (basename($program) != $program) { - $path_elements[] = dirname($program); - $program = basename($program); - } else { - // Honor safe mode - if (!ini_get('safe_mode') || !$path = ini_get('safe_mode_exec_dir')) { - $path = getenv('PATH'); - if (!$path) { - $path = getenv('Path'); // some OSes are just stupid enough to do this - } - } - $path_elements = explode(PATH_SEPARATOR, $path); - } - - if (OS_WINDOWS) { - $exe_suffixes = getenv('PATHEXT') - ? explode(PATH_SEPARATOR, getenv('PATHEXT')) - : array('.exe','.bat','.cmd','.com'); - // allow passing a command.exe param - if (strpos($program, '.') !== false) { - array_unshift($exe_suffixes, ''); - } - // is_executable() is not available on windows for PHP4 - $pear_is_executable = (function_exists('is_executable')) ? 'is_executable' : 'is_file'; - } else { - $exe_suffixes = array(''); - $pear_is_executable = 'is_executable'; - } - - foreach ($exe_suffixes as $suff) { - foreach ($path_elements as $dir) { - $file = $dir . DIRECTORY_SEPARATOR . $program . $suff; - if (@$pear_is_executable($file)) { - return $file; - } - } - } - return $fallback; - } - - /** - * The "find" command - * - * Usage: - * - * System::find($dir); - * System::find("$dir -type d"); - * System::find("$dir -type f"); - * System::find("$dir -name *.php"); - * System::find("$dir -name *.php -name *.htm*"); - * System::find("$dir -maxdepth 1"); - * - * Params implmented: - * $dir -> Start the search at this directory - * -type d -> return only directories - * -type f -> return only files - * -maxdepth -> max depth of recursion - * -name -> search pattern (bash style). Multiple -name param allowed - * - * @param mixed Either array or string with the command line - * @return array Array of found files - * @static - * - */ - function find($args) - { - if (!is_array($args)) { - $args = preg_split('/\s+/', $args, -1, PREG_SPLIT_NO_EMPTY); - } - $dir = realpath(array_shift($args)); - if (!$dir) { - return array(); - } - $patterns = array(); - $depth = 0; - $do_files = $do_dirs = true; - $args_count = count($args); - for ($i = 0; $i < $args_count; $i++) { - switch ($args[$i]) { - case '-type': - if (in_array($args[$i+1], array('d', 'f'))) { - if ($args[$i+1] == 'd') { - $do_files = false; - } else { - $do_dirs = false; - } - } - $i++; - break; - case '-name': - $name = preg_quote($args[$i+1], '#'); - // our magic characters ? and * have just been escaped, - // so now we change the escaped versions to PCRE operators - $name = strtr($name, array('\?' => '.', '\*' => '.*')); - $patterns[] = '('.$name.')'; - $i++; - break; - case '-maxdepth': - $depth = $args[$i+1]; - break; - } - } - $path = System::_dirToStruct($dir, $depth, 0, true); - if ($do_files && $do_dirs) { - $files = array_merge($path['files'], $path['dirs']); - } elseif ($do_dirs) { - $files = $path['dirs']; - } else { - $files = $path['files']; - } - if (count($patterns)) { - $dsq = preg_quote(DIRECTORY_SEPARATOR, '#'); - $pattern = '#(^|'.$dsq.')'.implode('|', $patterns).'($|'.$dsq.')#'; - $ret = array(); - $files_count = count($files); - for ($i = 0; $i < $files_count; $i++) { - // only search in the part of the file below the current directory - $filepart = basename($files[$i]); - if (preg_match($pattern, $filepart)) { - $ret[] = $files[$i]; - } - } - return $ret; - } - return $files; - } -} \ No newline at end of file diff --git a/3rdparty/XML/Parser.php b/3rdparty/XML/Parser.php deleted file mode 100644 index 04dd348753d2949f7c08a45492c69ce9c30b262a..0000000000000000000000000000000000000000 --- a/3rdparty/XML/Parser.php +++ /dev/null @@ -1,754 +0,0 @@ - - * @author Tomas V.V.Cox - * @author Stephan Schmidt - * @copyright 2002-2008 The PHP Group - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version CVS: $Id: Parser.php 302733 2010-08-24 01:09:09Z clockwerx $ - * @link http://pear.php.net/package/XML_Parser - */ - -/** - * uses PEAR's error handling - */ -require_once 'PEAR.php'; - -/** - * resource could not be created - */ -define('XML_PARSER_ERROR_NO_RESOURCE', 200); - -/** - * unsupported mode - */ -define('XML_PARSER_ERROR_UNSUPPORTED_MODE', 201); - -/** - * invalid encoding was given - */ -define('XML_PARSER_ERROR_INVALID_ENCODING', 202); - -/** - * specified file could not be read - */ -define('XML_PARSER_ERROR_FILE_NOT_READABLE', 203); - -/** - * invalid input - */ -define('XML_PARSER_ERROR_INVALID_INPUT', 204); - -/** - * remote file cannot be retrieved in safe mode - */ -define('XML_PARSER_ERROR_REMOTE', 205); - -/** - * XML Parser class. - * - * This is an XML parser based on PHP's "xml" extension, - * based on the bundled expat library. - * - * Notes: - * - It requires PHP 4.0.4pl1 or greater - * - From revision 1.17, the function names used by the 'func' mode - * are in the format "xmltag_$elem", for example: use "xmltag_name" - * to handle the tags of your xml file. - * - different parsing modes - * - * @category XML - * @package XML_Parser - * @author Stig Bakken - * @author Tomas V.V.Cox - * @author Stephan Schmidt - * @copyright 2002-2008 The PHP Group - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/XML_Parser - * @todo create XML_Parser_Namespace to parse documents with namespaces - * @todo create XML_Parser_Pull - * @todo Tests that need to be made: - * - mixing character encodings - * - a test using all expat handlers - * - options (folding, output charset) - */ -class XML_Parser extends PEAR -{ - // {{{ properties - - /** - * XML parser handle - * - * @var resource - * @see xml_parser_create() - */ - var $parser; - - /** - * File handle if parsing from a file - * - * @var resource - */ - var $fp; - - /** - * Whether to do case folding - * - * If set to true, all tag and attribute names will - * be converted to UPPER CASE. - * - * @var boolean - */ - var $folding = true; - - /** - * Mode of operation, one of "event" or "func" - * - * @var string - */ - var $mode; - - /** - * Mapping from expat handler function to class method. - * - * @var array - */ - var $handler = array( - 'character_data_handler' => 'cdataHandler', - 'default_handler' => 'defaultHandler', - 'processing_instruction_handler' => 'piHandler', - 'unparsed_entity_decl_handler' => 'unparsedHandler', - 'notation_decl_handler' => 'notationHandler', - 'external_entity_ref_handler' => 'entityrefHandler' - ); - - /** - * source encoding - * - * @var string - */ - var $srcenc; - - /** - * target encoding - * - * @var string - */ - var $tgtenc; - - /** - * handler object - * - * @var object - */ - var $_handlerObj; - - /** - * valid encodings - * - * @var array - */ - var $_validEncodings = array('ISO-8859-1', 'UTF-8', 'US-ASCII'); - - // }}} - // {{{ php5 constructor - - /** - * PHP5 constructor - * - * @param string $srcenc source charset encoding, use NULL (default) to use - * whatever the document specifies - * @param string $mode how this parser object should work, "event" for - * startelement/endelement-type events, "func" - * to have it call functions named after elements - * @param string $tgtenc a valid target encoding - */ - function __construct($srcenc = null, $mode = 'event', $tgtenc = null) - { - $this->PEAR('XML_Parser_Error'); - - $this->mode = $mode; - $this->srcenc = $srcenc; - $this->tgtenc = $tgtenc; - } - // }}} - - /** - * Sets the mode of the parser. - * - * Possible modes are: - * - func - * - event - * - * You can set the mode using the second parameter - * in the constructor. - * - * This method is only needed, when switching to a new - * mode at a later point. - * - * @param string $mode mode, either 'func' or 'event' - * - * @return boolean|object true on success, PEAR_Error otherwise - * @access public - */ - function setMode($mode) - { - if ($mode != 'func' && $mode != 'event') { - $this->raiseError('Unsupported mode given', - XML_PARSER_ERROR_UNSUPPORTED_MODE); - } - - $this->mode = $mode; - return true; - } - - /** - * Sets the object, that will handle the XML events - * - * This allows you to create a handler object independent of the - * parser object that you are using and easily switch the underlying - * parser. - * - * If no object will be set, XML_Parser assumes that you - * extend this class and handle the events in $this. - * - * @param object &$obj object to handle the events - * - * @return boolean will always return true - * @access public - * @since v1.2.0beta3 - */ - function setHandlerObj(&$obj) - { - $this->_handlerObj = &$obj; - return true; - } - - /** - * Init the element handlers - * - * @return mixed - * @access private - */ - function _initHandlers() - { - if (!is_resource($this->parser)) { - return false; - } - - if (!is_object($this->_handlerObj)) { - $this->_handlerObj = &$this; - } - switch ($this->mode) { - - case 'func': - xml_set_object($this->parser, $this->_handlerObj); - xml_set_element_handler($this->parser, - array(&$this, 'funcStartHandler'), array(&$this, 'funcEndHandler')); - break; - - case 'event': - xml_set_object($this->parser, $this->_handlerObj); - xml_set_element_handler($this->parser, 'startHandler', 'endHandler'); - break; - default: - return $this->raiseError('Unsupported mode given', - XML_PARSER_ERROR_UNSUPPORTED_MODE); - break; - } - - /** - * set additional handlers for character data, entities, etc. - */ - foreach ($this->handler as $xml_func => $method) { - if (method_exists($this->_handlerObj, $method)) { - $xml_func = 'xml_set_' . $xml_func; - $xml_func($this->parser, $method); - } - } - } - - // {{{ _create() - - /** - * create the XML parser resource - * - * Has been moved from the constructor to avoid - * problems with object references. - * - * Furthermore it allows us returning an error - * if something fails. - * - * NOTE: uses '@' error suppresion in this method - * - * @return bool|PEAR_Error true on success, PEAR_Error otherwise - * @access private - * @see xml_parser_create - */ - function _create() - { - if ($this->srcenc === null) { - $xp = @xml_parser_create(); - } else { - $xp = @xml_parser_create($this->srcenc); - } - if (is_resource($xp)) { - if ($this->tgtenc !== null) { - if (!@xml_parser_set_option($xp, XML_OPTION_TARGET_ENCODING, - $this->tgtenc) - ) { - return $this->raiseError('invalid target encoding', - XML_PARSER_ERROR_INVALID_ENCODING); - } - } - $this->parser = $xp; - $result = $this->_initHandlers($this->mode); - if (PEAR::isError($result)) { - return $result; - } - xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, $this->folding); - return true; - } - if (!in_array(strtoupper($this->srcenc), $this->_validEncodings)) { - return $this->raiseError('invalid source encoding', - XML_PARSER_ERROR_INVALID_ENCODING); - } - return $this->raiseError('Unable to create XML parser resource.', - XML_PARSER_ERROR_NO_RESOURCE); - } - - // }}} - // {{{ reset() - - /** - * Reset the parser. - * - * This allows you to use one parser instance - * to parse multiple XML documents. - * - * @access public - * @return boolean|object true on success, PEAR_Error otherwise - */ - function reset() - { - $result = $this->_create(); - if (PEAR::isError($result)) { - return $result; - } - return true; - } - - // }}} - // {{{ setInputFile() - - /** - * Sets the input xml file to be parsed - * - * @param string $file Filename (full path) - * - * @return resource fopen handle of the given file - * @access public - * @throws XML_Parser_Error - * @see setInput(), setInputString(), parse() - */ - function setInputFile($file) - { - /** - * check, if file is a remote file - */ - if (preg_match('/^(http|ftp):\/\//i', substr($file, 0, 10))) { - if (!ini_get('allow_url_fopen')) { - return $this-> - raiseError('Remote files cannot be parsed, as safe mode is enabled.', - XML_PARSER_ERROR_REMOTE); - } - } - - $fp = @fopen($file, 'rb'); - if (is_resource($fp)) { - $this->fp = $fp; - return $fp; - } - return $this->raiseError('File could not be opened.', - XML_PARSER_ERROR_FILE_NOT_READABLE); - } - - // }}} - // {{{ setInputString() - - /** - * XML_Parser::setInputString() - * - * Sets the xml input from a string - * - * @param string $data a string containing the XML document - * - * @return null - */ - function setInputString($data) - { - $this->fp = $data; - return null; - } - - // }}} - // {{{ setInput() - - /** - * Sets the file handle to use with parse(). - * - * You should use setInputFile() or setInputString() if you - * pass a string - * - * @param mixed $fp Can be either a resource returned from fopen(), - * a URL, a local filename or a string. - * - * @return mixed - * @access public - * @see parse() - * @uses setInputString(), setInputFile() - */ - function setInput($fp) - { - if (is_resource($fp)) { - $this->fp = $fp; - return true; - } elseif (preg_match('/^[a-z]+:\/\//i', substr($fp, 0, 10))) { - // see if it's an absolute URL (has a scheme at the beginning) - return $this->setInputFile($fp); - } elseif (file_exists($fp)) { - // see if it's a local file - return $this->setInputFile($fp); - } else { - // it must be a string - $this->fp = $fp; - return true; - } - - return $this->raiseError('Illegal input format', - XML_PARSER_ERROR_INVALID_INPUT); - } - - // }}} - // {{{ parse() - - /** - * Central parsing function. - * - * @return bool|PEAR_Error returns true on success, or a PEAR_Error otherwise - * @access public - */ - function parse() - { - /** - * reset the parser - */ - $result = $this->reset(); - if (PEAR::isError($result)) { - return $result; - } - // if $this->fp was fopened previously - if (is_resource($this->fp)) { - - while ($data = fread($this->fp, 4096)) { - if (!$this->_parseString($data, feof($this->fp))) { - $error = &$this->raiseError(); - $this->free(); - return $error; - } - } - } else { - // otherwise, $this->fp must be a string - if (!$this->_parseString($this->fp, true)) { - $error = &$this->raiseError(); - $this->free(); - return $error; - } - } - $this->free(); - - return true; - } - - /** - * XML_Parser::_parseString() - * - * @param string $data data - * @param bool $eof end-of-file flag - * - * @return bool - * @access private - * @see parseString() - **/ - function _parseString($data, $eof = false) - { - return xml_parse($this->parser, $data, $eof); - } - - // }}} - // {{{ parseString() - - /** - * XML_Parser::parseString() - * - * Parses a string. - * - * @param string $data XML data - * @param boolean $eof If set and TRUE, data is the last piece - * of data sent in this parser - * - * @return bool|PEAR_Error true on success or a PEAR Error - * @throws XML_Parser_Error - * @see _parseString() - */ - function parseString($data, $eof = false) - { - if (!isset($this->parser) || !is_resource($this->parser)) { - $this->reset(); - } - - if (!$this->_parseString($data, $eof)) { - $error = &$this->raiseError(); - $this->free(); - return $error; - } - - if ($eof === true) { - $this->free(); - } - return true; - } - - /** - * XML_Parser::free() - * - * Free the internal resources associated with the parser - * - * @return null - **/ - function free() - { - if (isset($this->parser) && is_resource($this->parser)) { - xml_parser_free($this->parser); - unset( $this->parser ); - } - if (isset($this->fp) && is_resource($this->fp)) { - fclose($this->fp); - } - unset($this->fp); - return null; - } - - /** - * XML_Parser::raiseError() - * - * Throws a XML_Parser_Error - * - * @param string $msg the error message - * @param integer $ecode the error message code - * - * @return XML_Parser_Error reference to the error object - **/ - static function &raiseError($message = null, - $code = 0, - $mode = null, - $options = null, - $userinfo = null, - $error_class = null, - $skipmsg = false) - { - $msg = !is_null($msg) ? $msg : $this->parser; - $err = new XML_Parser_Error($msg, $ecode); - return parent::raiseError($err); - } - - // }}} - // {{{ funcStartHandler() - - /** - * derives and calls the Start Handler function - * - * @param mixed $xp ?? - * @param mixed $elem ?? - * @param mixed $attribs ?? - * - * @return void - */ - function funcStartHandler($xp, $elem, $attribs) - { - $func = 'xmltag_' . $elem; - $func = str_replace(array('.', '-', ':'), '_', $func); - if (method_exists($this->_handlerObj, $func)) { - call_user_func(array(&$this->_handlerObj, $func), $xp, $elem, $attribs); - } elseif (method_exists($this->_handlerObj, 'xmltag')) { - call_user_func(array(&$this->_handlerObj, 'xmltag'), - $xp, $elem, $attribs); - } - } - - // }}} - // {{{ funcEndHandler() - - /** - * derives and calls the End Handler function - * - * @param mixed $xp ?? - * @param mixed $elem ?? - * - * @return void - */ - function funcEndHandler($xp, $elem) - { - $func = 'xmltag_' . $elem . '_'; - $func = str_replace(array('.', '-', ':'), '_', $func); - if (method_exists($this->_handlerObj, $func)) { - call_user_func(array(&$this->_handlerObj, $func), $xp, $elem); - } elseif (method_exists($this->_handlerObj, 'xmltag_')) { - call_user_func(array(&$this->_handlerObj, 'xmltag_'), $xp, $elem); - } - } - - // }}} - // {{{ startHandler() - - /** - * abstract method signature for Start Handler - * - * @param mixed $xp ?? - * @param mixed $elem ?? - * @param mixed &$attribs ?? - * - * @return null - * @abstract - */ - function startHandler($xp, $elem, &$attribs) - { - return null; - } - - // }}} - // {{{ endHandler() - - /** - * abstract method signature for End Handler - * - * @param mixed $xp ?? - * @param mixed $elem ?? - * - * @return null - * @abstract - */ - function endHandler($xp, $elem) - { - return null; - } - - - // }}}me -} - -/** - * error class, replaces PEAR_Error - * - * An instance of this class will be returned - * if an error occurs inside XML_Parser. - * - * There are three advantages over using the standard PEAR_Error: - * - All messages will be prefixed - * - check for XML_Parser error, using is_a( $error, 'XML_Parser_Error' ) - * - messages can be generated from the xml_parser resource - * - * @category XML - * @package XML_Parser - * @author Stig Bakken - * @author Tomas V.V.Cox - * @author Stephan Schmidt - * @copyright 2002-2008 The PHP Group - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/XML_Parser - * @see PEAR_Error - */ -class XML_Parser_Error extends PEAR_Error -{ - // {{{ properties - - /** - * prefix for all messages - * - * @var string - */ - var $error_message_prefix = 'XML_Parser: '; - - // }}} - // {{{ constructor() - /** - * construct a new error instance - * - * You may either pass a message or an xml_parser resource as first - * parameter. If a resource has been passed, the last error that - * happened will be retrieved and returned. - * - * @param string|resource $msgorparser message or parser resource - * @param integer $code error code - * @param integer $mode error handling - * @param integer $level error level - * - * @access public - * @todo PEAR CS - can't meet 85char line limit without arg refactoring - */ - function XML_Parser_Error($msgorparser = 'unknown error', $code = 0, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE) - { - if (is_resource($msgorparser)) { - $code = xml_get_error_code($msgorparser); - $msgorparser = sprintf('%s at XML input line %d:%d', - xml_error_string($code), - xml_get_current_line_number($msgorparser), - xml_get_current_column_number($msgorparser)); - } - $this->PEAR_Error($msgorparser, $code, $mode, $level); - } - // }}} -} -?> diff --git a/3rdparty/XML/Parser/Simple.php b/3rdparty/XML/Parser/Simple.php deleted file mode 100644 index 9ed0abfc6cc045555d14e8305d9dcfb446695330..0000000000000000000000000000000000000000 --- a/3rdparty/XML/Parser/Simple.php +++ /dev/null @@ -1,326 +0,0 @@ - - * @copyright 2004-2008 Stephan Schmidt - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version CVS: $Id: Simple.php 265444 2008-08-24 21:48:21Z ashnazg $ - * @link http://pear.php.net/package/XML_Parser - */ - -/** - * built on XML_Parser - */ -require_once 'XML/Parser.php'; - -/** - * Simple XML parser class. - * - * This class is a simplified version of XML_Parser. - * In most XML applications the real action is executed, - * when a closing tag is found. - * - * XML_Parser_Simple allows you to just implement one callback - * for each tag that will receive the tag with its attributes - * and CData. - * - * - * require_once '../Parser/Simple.php'; - * - * class myParser extends XML_Parser_Simple - * { - * function myParser() - * { - * $this->XML_Parser_Simple(); - * } - * - * function handleElement($name, $attribs, $data) - * { - * printf('handle %s
', $name); - * } - * } - * - * $p = &new myParser(); - * - * $result = $p->setInputFile('myDoc.xml'); - * $result = $p->parse(); - *
- * - * @category XML - * @package XML_Parser - * @author Stephan Schmidt - * @copyright 2004-2008 The PHP Group - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/XML_Parser - */ -class XML_Parser_Simple extends XML_Parser -{ - /** - * element stack - * - * @access private - * @var array - */ - var $_elStack = array(); - - /** - * all character data - * - * @access private - * @var array - */ - var $_data = array(); - - /** - * element depth - * - * @access private - * @var integer - */ - var $_depth = 0; - - /** - * Mapping from expat handler function to class method. - * - * @var array - */ - var $handler = array( - 'default_handler' => 'defaultHandler', - 'processing_instruction_handler' => 'piHandler', - 'unparsed_entity_decl_handler' => 'unparsedHandler', - 'notation_decl_handler' => 'notationHandler', - 'external_entity_ref_handler' => 'entityrefHandler' - ); - - /** - * Creates an XML parser. - * - * This is needed for PHP4 compatibility, it will - * call the constructor, when a new instance is created. - * - * @param string $srcenc source charset encoding, use NULL (default) to use - * whatever the document specifies - * @param string $mode how this parser object should work, "event" for - * handleElement(), "func" to have it call functions - * named after elements (handleElement_$name()) - * @param string $tgtenc a valid target encoding - */ - function XML_Parser_Simple($srcenc = null, $mode = 'event', $tgtenc = null) - { - $this->XML_Parser($srcenc, $mode, $tgtenc); - } - - /** - * inits the handlers - * - * @return mixed - * @access private - */ - function _initHandlers() - { - if (!is_object($this->_handlerObj)) { - $this->_handlerObj = &$this; - } - - if ($this->mode != 'func' && $this->mode != 'event') { - return $this->raiseError('Unsupported mode given', - XML_PARSER_ERROR_UNSUPPORTED_MODE); - } - xml_set_object($this->parser, $this->_handlerObj); - - xml_set_element_handler($this->parser, array(&$this, 'startHandler'), - array(&$this, 'endHandler')); - xml_set_character_data_handler($this->parser, array(&$this, 'cdataHandler')); - - /** - * set additional handlers for character data, entities, etc. - */ - foreach ($this->handler as $xml_func => $method) { - if (method_exists($this->_handlerObj, $method)) { - $xml_func = 'xml_set_' . $xml_func; - $xml_func($this->parser, $method); - } - } - } - - /** - * Reset the parser. - * - * This allows you to use one parser instance - * to parse multiple XML documents. - * - * @access public - * @return boolean|object true on success, PEAR_Error otherwise - */ - function reset() - { - $this->_elStack = array(); - $this->_data = array(); - $this->_depth = 0; - - $result = $this->_create(); - if ($this->isError($result)) { - return $result; - } - return true; - } - - /** - * start handler - * - * Pushes attributes and tagname onto a stack - * - * @param resource $xp xml parser resource - * @param string $elem element name - * @param array &$attribs attributes - * - * @return mixed - * @access private - * @final - */ - function startHandler($xp, $elem, &$attribs) - { - array_push($this->_elStack, array( - 'name' => $elem, - 'attribs' => $attribs - )); - $this->_depth++; - $this->_data[$this->_depth] = ''; - } - - /** - * end handler - * - * Pulls attributes and tagname from a stack - * - * @param resource $xp xml parser resource - * @param string $elem element name - * - * @return mixed - * @access private - * @final - */ - function endHandler($xp, $elem) - { - $el = array_pop($this->_elStack); - $data = $this->_data[$this->_depth]; - $this->_depth--; - - switch ($this->mode) { - case 'event': - $this->_handlerObj->handleElement($el['name'], $el['attribs'], $data); - break; - case 'func': - $func = 'handleElement_' . $elem; - if (strchr($func, '.')) { - $func = str_replace('.', '_', $func); - } - if (method_exists($this->_handlerObj, $func)) { - call_user_func(array(&$this->_handlerObj, $func), - $el['name'], $el['attribs'], $data); - } - break; - } - } - - /** - * handle character data - * - * @param resource $xp xml parser resource - * @param string $data data - * - * @return void - * @access private - * @final - */ - function cdataHandler($xp, $data) - { - $this->_data[$this->_depth] .= $data; - } - - /** - * handle a tag - * - * Implement this in your parser - * - * @param string $name element name - * @param array $attribs attributes - * @param string $data character data - * - * @return void - * @access public - * @abstract - */ - function handleElement($name, $attribs, $data) - { - } - - /** - * get the current tag depth - * - * The root tag is in depth 0. - * - * @access public - * @return integer - */ - function getCurrentDepth() - { - return $this->_depth; - } - - /** - * add some string to the current ddata. - * - * This is commonly needed, when a document is parsed recursively. - * - * @param string $data data to add - * - * @return void - * @access public - */ - function addToData($data) - { - $this->_data[$this->_depth] .= $data; - } -} -?> diff --git a/3rdparty/aws-sdk/README.md b/3rdparty/aws-sdk/README.md deleted file mode 100644 index 7e55f76b3b2f8382cf296513169657531c2abb69..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# AWS SDK for PHP - -The AWS SDK for PHP enables developers to build solutions for Amazon Simple Storage Service (Amazon S3), -Amazon Elastic Compute Cloud (Amazon EC2), Amazon SimpleDB, and more. With the AWS SDK for PHP, developers -can get started in minutes with a single, downloadable package. - -The SDK features: - -* **AWS PHP Libraries:** Build PHP applications on top of APIs that take the complexity out of coding directly - against a web service interface. The toolkit provides APIs that hide much of the lower-level implementation. -* **Code Samples:** Practical examples for how to use the toolkit to build applications. -* **Documentation:** Complete SDK reference documentation with samples demonstrating how to use the SDK. -* **PEAR package:** The ability to install the AWS SDK for PHP as a PEAR package. -* **SDK Compatibility Test:** Includes both an HTML-based and a CLI-based SDK Compatibility Test that you can - run on your server to determine whether or not your PHP environment meets the minimum requirements. - -For more information about the AWS SDK for PHP, including a complete list of supported services, see -[aws.amazon.com/sdkforphp](http://aws.amazon.com/sdkforphp). - - -## Signing up for Amazon Web Services - -Before you can begin, you must sign up for each service you want to use. - -To sign up for a service: - -* Go to the home page for the service. You can find a list of services on - [aws.amazon.com/products](http://aws.amazon.com/products). -* Click the Sign Up button on the top right corner of the page. If you don't already have an AWS account, you - are prompted to create one as part of the sign up process. -* Follow the on-screen instructions. -* AWS sends you a confirmation e-mail after the sign-up process is complete. At any time, you can view your - current account activity and manage your account by going to [aws.amazon.com](http://aws.amazon.com) and - clicking "Your Account". - - -## Source -The source tree for includes the following files and directories: - -* `_compatibility_test` -- Includes both an HTML-based and a CLI-based SDK Compatibility Test that you can - run on your server to determine whether or not your PHP environment meets the minimum requirements. -* `_docs` -- Informational documents, the contents of which should be fairly self-explanatory. -* `_samples` -- Code samples that you can run out of the box. -* `extensions` -- Extra code that can be used to enhance usage of the SDK, but isn't a service class or a - third-party library. -* `lib` -- Contains any third-party libraries that the SDK depends on. The licenses for these projects will - always be Apache 2.0-compatible. -* `services` -- Contains the service-specific classes that communicate with AWS. These classes are always - prefixed with `Amazon`. -* `utilities` -- Contains any utility-type methods that the SDK uses. Includes extensions to built-in PHP - classes, as well as new functionality that is entirely custom. These classes are always prefixed with `CF`. -* `README` -- The document you're reading right now. -* `config-sample.inc.php` -- A sample configuration file that should be filled out and renamed to `config.inc.php`. -* `sdk.class.php` -- The SDK loader that you would include in your projects. Contains the base functionality - that the rest of the SDK depends on. - - -## Minimum Requirements in a nutshell - -* You are at least an intermediate-level PHP developer and have a basic understanding of object-oriented PHP. -* You have a valid AWS account, and you've already signed up for the services you want to use. -* The PHP interpreter, version 5.2 or newer. PHP 5.2.17 or 5.3.x is highly recommended for use with the AWS SDK for PHP. -* The cURL PHP extension (compiled with the [OpenSSL](http://openssl.org) libraries for HTTPS support). -* The ability to read from and write to the file system via [file_get_contents()](http://php.net/file_get_contents) and [file_put_contents()](http://php.net/file_put_contents). - -If you're not sure whether your PHP environment meets these requirements, run the -[SDK Compatibility Test](http://github.com/amazonwebservices/aws-sdk-for-php/tree/master/_compatibility_test/) script -included in the SDK download. - - -## Installation - -### Via GitHub - -[Git](http://git-scm.com) is an extremely fast, efficient, distributed version control system ideal for the -collaborative development of software. [GitHub](http://github.com/amazonwebservices) is the best way to -collaborate with others. Fork, send pull requests and manage all your public and private git repositories. -We believe that GitHub is the ideal service for working collaboratively with the open source PHP community. - -Git is primarily a command-line tool. GitHub provides instructions for installing Git on -[Mac OS X](http://help.github.com/mac-git-installation/), [Windows](http://help.github.com/win-git-installation/), -and [Linux](http://help.github.com/linux-git-installation/). If you're unfamiliar with Git, there are a variety -of resources on the net that will help you learn more: - -* [Git Immersion](http://gitimmersion.com) is a guided tour that walks through the fundamentals of Git, inspired - by the premise that to know a thing is to do it. -* The [PeepCode screencast on Git](https://peepcode.com/products/git) ($12) will teach you how to install and - use Git. You'll learn how to create a repository, use branches, and work with remote repositories. -* [Git Reference](http://gitref.org) is meant to be a quick reference for learning and remembering the most - important and commonly used Git commands. -* [Git Ready](http://gitready.com) provides a collection of Git tips and tricks. -* If you want to dig even further, I've [bookmarked other Git references](http://pinboard.in/u:skyzyx/t:git). - -If you're comfortable working with Git and/or GitHub, you can pull down the source code as follows: - - git clone git://github.com/amazonwebservices/aws-sdk-for-php.git AWSSDKforPHP - cd ./AWSSDKforPHP - -### Via PEAR - -[PEAR](http://pear.php.net) stands for the _PHP Extension and Application Repository_ and is a framework and -distribution system for reusable PHP components. It is the PHP equivalent to package management software such as -[MacPorts](http://macports.org) and [Homebrew](https://github.com/mxcl/homebrew) for Mac OS X, -[Yum](http://fedoraproject.org/wiki/Tools/yum) and [Apt](http://wiki.debian.org/Apt) for GNU/Linux, -[RubyGems](http://rubygems.org) for Ruby, [Easy Install](http://packages.python.org/distribute/easy_install.html) -for Python, [Maven](http://maven.apache.org) for Java, and [NPM](http://npm.mape.me) for Node.js. - -PEAR packages are very easy to install, and are available in your PHP environment path so that they are accessible -to any PHP project. PEAR packages are not specific to your project, but rather to the machine that they're -installed on. - -From the command-line, you can install the SDK with PEAR as follows: - - pear channel-discover pear.amazonwebservices.com - pear install aws/sdk - -You may need to use `sudo` for the above commands. Once the SDK has been installed via PEAR, you can load it into -your project with: - - require_once 'AWSSDKforPHP/sdk.class.php'; - -### Configuration - -1. Copy the contents of [config-sample.inc.php](https://github.com/amazonwebservices/aws-sdk-for-php/raw/master/config-sample.inc.php) - and add your credentials as instructed in the file. -2. Move your file to `~/.aws/sdk/config.inc.php`. -3. Make sure that `getenv('HOME')` points to your user directory. If not you'll need to set - `putenv('HOME=')`. - - -## Additional Information - -* AWS SDK for PHP: -* Documentation: -* License: -* Discuss: diff --git a/3rdparty/aws-sdk/_compatibility_test/README.md b/3rdparty/aws-sdk/_compatibility_test/README.md deleted file mode 100644 index 9e2f2d89409290e02856fc3473f9d160204bbe53..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_compatibility_test/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Compatibility Test - -## Via your web browser - -1. Upload `sdk_compatibility_test.php` to the web-accessible root of your website. -For example, if your website is `www.example.com`, upload it so that you can get -to it at `www.example.com/sdk_compatibility_test.php` - -2. Open your web browser and go to the page you just uploaded. - - -## Via the command line - -### Windows - -1. Upload `sdk_compatibility_test_cli.php` to your server via SFTP. - -2. SSH/RDP into the machine, and find the directory where you uploaded the test. - -3. Run the test, and review the results: - - php .\sdk_compatibility_test_cli.php - - -### Non-Windows (Mac or *nix) - -1. Upload `sdk_compatibility_test_cli.php` to your server via SFTP. - -2. SSH into the machine, and find the directory where you uploaded the test. - -3. Set the executable bit: - - chmod +x ./sdk_compatibility_test_cli.php - -4. Run the test, and review the results: - - ./sdk_compatibility_test_cli.php diff --git a/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility.inc.php b/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility.inc.php deleted file mode 100644 index c17ec33d72eab2584104b8378229737541452644..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility.inc.php +++ /dev/null @@ -1,75 +0,0 @@ -=')); -$simplexml_ok = extension_loaded('simplexml'); -$dom_ok = extension_loaded('dom'); -$json_ok = (extension_loaded('json') && function_exists('json_encode') && function_exists('json_decode')); -$spl_ok = extension_loaded('spl'); -$pcre_ok = extension_loaded('pcre'); -$curl_ok = false; -if (function_exists('curl_version')) -{ - $curl_version = curl_version(); - $curl_ok = (function_exists('curl_exec') && in_array('https', $curl_version['protocols'], true)); -} -$file_ok = (function_exists('file_get_contents') && function_exists('file_put_contents')); - -// Optional, but recommended -$openssl_ok = (extension_loaded('openssl') && function_exists('openssl_sign')); -$zlib_ok = extension_loaded('zlib'); - -// Optional -$apc_ok = extension_loaded('apc'); -$xcache_ok = extension_loaded('xcache'); -$memcached_ok = extension_loaded('memcached'); -$memcache_ok = extension_loaded('memcache'); -$mc_ok = ($memcache_ok || $memcached_ok); -$pdo_ok = extension_loaded('pdo'); -$pdo_sqlite_ok = extension_loaded('pdo_sqlite'); -$sqlite2_ok = extension_loaded('sqlite'); -$sqlite3_ok = extension_loaded('sqlite3'); -$sqlite_ok = ($pdo_ok && $pdo_sqlite_ok && ($sqlite2_ok || $sqlite3_ok)); - -// Other -$int64_ok = (PHP_INT_MAX === 9223372036854775807); -$ini_memory_limit = get_ini('memory_limit'); -$ini_open_basedir = get_ini('open_basedir'); -$ini_safe_mode = get_ini('safe_mode'); -$ini_zend_enable_gc = get_ini('zend.enable_gc'); - -if ($php_ok && $int64_ok && $curl_ok && $simplexml_ok && $dom_ok && $spl_ok && $json_ok && $pcre_ok && $file_ok && $openssl_ok && $zlib_ok && ($apc_ok || $xcache_ok || $mc_ok || $sqlite_ok)) -{ - $compatiblity = REQUIREMENTS_ALL_MET; -} -elseif ($php_ok && $curl_ok && $simplexml_ok && $dom_ok && $spl_ok && $json_ok && $pcre_ok && $file_ok) -{ - $compatiblity = REQUIREMENTS_MIN_MET; -} -else -{ - $compatiblity = REQUIREMENTS_NOT_MET; -} - -function get_ini($config) -{ - $cfg_value = ini_get($config); - - if ($cfg_value === false || $cfg_value === '' || $cfg_value === 0) - { - return false; - } - elseif ($cfg_value === true || $cfg_value === '1' || $cfg_value === 1) - { - return true; - } -} - -function is_windows() -{ - return strtolower(substr(PHP_OS, 0, 3)) === 'win'; -} diff --git a/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility_test.php b/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility_test.php deleted file mode 100644 index b36a38ab35eaefecdb2e76e3f88164ec2977b290..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility_test.php +++ /dev/null @@ -1,789 +0,0 @@ - - - - -AWS SDK for PHP: Environment Compatibility Test - - - - - - - - - - -
-
- -
-

SDK Compatibility Test

- -

Minimum Requirements

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestShould BeWhat You Have
PHP5.2 or newer
cURL7.15.0 or newer, with SSL
SimpleXMLEnabled
DOMEnabled
SPLEnabled
JSONEnabled
PCREEnabled
File System Read/WriteEnabled
- -

Optional Extensions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestWould Like To BeWhat You Have
OpenSSLEnabled
ZlibEnabled
APCEnabled
XCacheEnabled
MemcacheEnabled
MemcachedEnabled
PDOEnabled
PDO-SQLiteEnabled
SQLite 2Enabled
SQLite 3Enabled
- -

Settings for php.ini

- - - - - - - - - - - - - - - - - - - - - - - - - -
TestWould Like To BeWhat You Have
open_basediroff
safe_modeoff
zend.enable_gcon
- -

Other

- - - - - - - - - - - - - - - -
TestWould Like To BeWhat You Have
Architecture64-bit - (why?) -
- -
-
- - -
-

Bottom Line: Yes, you can!

-

Your PHP environment is ready to go, and can take advantage of all possible features!

-
-
-

What's Next?

-

You can download the latest version of the AWS SDK for PHP and install it by following the instructions. Also, check out our library of screencasts and tutorials.

-

Take the time to read "Getting Started" to make sure you're prepared to use the AWS SDK for PHP. No seriously, read it.

-
- -
-

Bottom Line: Yes, you can!

-

Your PHP environment is ready to go! There are a couple of minor features that you won't be able to take advantage of, but nothing that's a show-stopper.

-
-
-

What's Next?

-

You can download the latest version of the AWS SDK for PHP and install it by following the instructions. Also, check out our library of screencasts and tutorials.

-

Take the time to read "Getting Started" to make sure you're prepared to use the AWS SDK for PHP. No seriously, read it.

-
- -
-

Bottom Line: We're sorry…

-

Your PHP environment does not support the minimum requirements for the AWS SDK for PHP.

-
-
-

What's Next?

-

If you're using a shared hosting plan, it may be a good idea to contact your web host and ask them to install a more recent version of PHP and relevant extensions.

-

If you have control over your PHP environment, we recommended that you upgrade your PHP environment. Check out the "Set Up Your Environment" section of the Getting Started Guide for more information.

-
- - - = REQUIREMENTS_MIN_MET): ?> -
-

Recommended settings for config.inc.php

-

Based on your particular server configuration, the following settings are recommended.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Configuration SettingRecommended Value
default_cache_configapcxcacheAny valid, server-writable file system path
certificate_authoritytrueLoading...
-
-
- - -
-

Give me the details!

- = REQUIREMENTS_MIN_MET): ?> -
    -
  1. Your environment meets the minimum requirements for using the AWS SDK for PHP!
  2. - - -
  3. You're still running PHP . The PHP 5.2 family is no longer supported by the PHP team, and future versions of the AWS SDK for PHP will require PHP 5.3 or newer.
  4. - - - -
  5. The OpenSSL extension is installed. This will allow you to use CloudFront Private URLs and decrypt Microsoft® Windows® instance passwords.
  6. - - - -
  7. The Zlib extension is installed. The SDK will request gzipped data whenever possible.
  8. - - - -
  9. You're running on a 32-bit system. This means that PHP does not correctly handle files larger than 2GB (this is a well-known PHP issue). For more information, please see: PHP filesize: Return values.
  10. - -
  11. Note that PHP on Microsoft® Windows® does not support 64-bit integers at all, even if both the hardware and PHP are 64-bit.
  12. - - - - -
  13. You have open_basedir or safe_mode enabled in your php.ini file. Sometimes PHP behaves strangely when these settings are enabled. Disable them if you can.
  14. - - - -
  15. The PHP garbage collector (available in PHP 5.3+) is not enabled in your php.ini file. Enabling zend.enable_gc will provide better memory management in the PHP core.
  16. - - - The file system'; } - if ($apc_ok) { $storage_types[] = 'APC'; } - if ($xcache_ok) { $storage_types[] = 'XCache'; } - if ($sqlite_ok && $sqlite3_ok) { $storage_types[] = 'SQLite 3'; } - elseif ($sqlite_ok && $sqlite2_ok) { $storage_types[] = 'SQLite 2'; } - if ($memcached_ok) { $storage_types[] = 'Memcached'; } - elseif ($memcache_ok) { $storage_types[] = 'Memcache'; } - ?> -
  17. Storage types available for response caching:
  18. -
- - -

NOTE: You're missing the OpenSSL extension, which means that you won't be able to take advantage of CloudFront Private URLs or decrypt Microsoft® Windows® instance passwords. You're also missing the Zlib extension, which means that the SDK will be unable to request gzipped data from Amazon and you won't be able to take advantage of compression with the response caching feature.

- -

NOTE: You're missing the Zlib extension, which means that the SDK will be unable to request gzipped data from Amazon and you won't be able to take advantage of compression with the response caching feature.

- -

NOTE: You're missing the OpenSSL extension, which means that you won't be able to take advantage of CloudFront Private URLs or decrypt Microsoft® Windows® instance passwords.

- - - -
    - -
  1. PHP: You are running an unsupported version of PHP.
  2. - - - -
  3. cURL: The cURL extension is not available. Without cURL, the SDK cannot connect to — or authenticate with — Amazon's services.
  4. - - - -
  5. SimpleXML: The SimpleXML extension is not available. Without SimpleXML, the SDK cannot parse the XML responses from Amazon's services.
  6. - - - -
  7. DOM: The DOM extension is not available. Without DOM, the SDK cannot transliterate JSON responses from Amazon's services into the common SimpleXML-based pattern used throughout the SDK.
  8. - - - -
  9. SPL: Standard PHP Library support is not available. Without SPL support, the SDK cannot autoload the required PHP classes.
  10. - - - -
  11. JSON: JSON support is not available. AWS leverages JSON heavily in many of its services.
  12. - - - -
  13. PCRE: Your PHP installation doesn't support Perl-Compatible Regular Expressions (PCRE). Without PCRE, the SDK cannot do any filtering via regular expressions.
  14. - - - -
  15. File System Read/Write: The file_get_contents() and/or file_put_contents() functions have been disabled. Without them, the SDK cannot read from, or write to, the file system.
  16. - -
- -
- -
-

NOTE: Passing this test does not guarantee that the AWS SDK for PHP will run on your web server — it only ensures that the requirements have been addressed.

-
-
- -
- - - - - - - diff --git a/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility_test_cli.php b/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility_test_cli.php deleted file mode 100755 index a6632d897876e17924a85bb3a4ee5c3d0d7b5afe..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_compatibility_test/sdk_compatibility_test_cli.php +++ /dev/null @@ -1,186 +0,0 @@ -#! /usr/bin/env php -= REQUIREMENTS_MIN_MET) -{ - echo success('Your environment meets the minimum requirements for using the AWS SDK for PHP!') . PHP_EOL . PHP_EOL; - if (version_compare(PHP_VERSION, '5.3.0') < 0) { echo '* You\'re still running PHP ' . PHP_VERSION . '. The PHP 5.2 family is no longer supported' . PHP_EOL . ' by the PHP team, and future versions of the AWS SDK for PHP will *require*' . PHP_EOL . ' PHP 5.3 or newer.' . PHP_EOL . PHP_EOL; } - if ($openssl_ok) { echo '* The OpenSSL extension is installed. This will allow you to use CloudFront' . PHP_EOL . ' Private URLs and decrypt Windows instance passwords.' . PHP_EOL . PHP_EOL; } - if ($zlib_ok) { echo '* The Zlib extension is installed. The SDK will request gzipped data' . PHP_EOL . ' whenever possible.' . PHP_EOL . PHP_EOL; } - if (!$int64_ok) { echo '* You\'re running on a 32-bit system. This means that PHP does not correctly' . PHP_EOL . ' handle files larger than 2GB (this is a well-known PHP issue).' . PHP_EOL . PHP_EOL; } - if (!$int64_ok && is_windows()) { echo '* Note that PHP on Microsoft(R) Windows(R) does not support 64-bit integers' . PHP_EOL . ' at all, even if both the hardware and PHP are 64-bit. http://j.mp/php64win' . PHP_EOL . PHP_EOL; } - - if ($ini_open_basedir || $ini_safe_mode) { echo '* You have open_basedir or safe_mode enabled in your php.ini file. Sometimes' . PHP_EOL . ' PHP behaves strangely when these settings are enabled. Disable them if you can.' . PHP_EOL . PHP_EOL; } - if (!$ini_zend_enable_gc) { echo '* The PHP garbage collector (available in PHP 5.3+) is not enabled in your' . PHP_EOL . ' php.ini file. Enabling zend.enable_gc will provide better memory management' . PHP_EOL . ' in the PHP core.' . PHP_EOL . PHP_EOL; } - - $storage_types = array(); - if ($file_ok) { $storage_types[] = 'The file system'; } - if ($apc_ok) { $storage_types[] = 'APC'; } - if ($xcache_ok) { $storage_types[] = 'XCache'; } - if ($sqlite_ok && $sqlite3_ok) { $storage_types[] = 'SQLite 3'; } - elseif ($sqlite_ok && $sqlite2_ok) { $storage_types[] = 'SQLite 2'; } - if ($memcached_ok) { $storage_types[] = 'Memcached'; } - elseif ($memcache_ok) { $storage_types[] = 'Memcache'; } - echo '* Storage types available for response caching:' . PHP_EOL . ' ' . implode(', ', $storage_types) . PHP_EOL . PHP_EOL; - - if (!$openssl_ok) { echo '* You\'re missing the OpenSSL extension, which means that you won\'t be able' . PHP_EOL . ' to take advantage of CloudFront Private URLs or Windows password decryption.' . PHP_EOL . PHP_EOL; } - if (!$zlib_ok) { echo '* You\'re missing the Zlib extension, which means that the SDK will be unable' . PHP_EOL . ' to request gzipped data from Amazon and you won\'t be able to take advantage' . PHP_EOL . ' of compression with the response caching feature.' . PHP_EOL . PHP_EOL; } -} -else -{ - if (!$php_ok) { echo '* ' . failure('PHP:') . ' You are running an unsupported version of PHP.' . PHP_EOL . PHP_EOL; } - if (!$curl_ok) { echo '* ' . failure('cURL:') . ' The cURL extension is not available. Without cURL, the SDK cannot' . PHP_EOL . ' connect to -- or authenticate with -- Amazon\'s services.' . PHP_EOL . PHP_EOL; } - if (!$simplexml_ok) { echo '* ' . failure('SimpleXML:') . ': The SimpleXML extension is not available. Without SimpleXML,' . PHP_EOL . ' the SDK cannot parse the XML responses from Amazon\'s services.' . PHP_EOL . PHP_EOL; } - if (!$dom_ok) { echo '* ' . failure('DOM:') . ': The DOM extension is not available. Without DOM, the SDK' . PHP_EOL . ' Without DOM, the SDK cannot transliterate JSON responses from Amazon\'s' . PHP_EOL . ' services into the common SimpleXML-based pattern used throughout the SDK.' . PHP_EOL . PHP_EOL; } - if (!$spl_ok) { echo '* ' . failure('SPL:') . ' Standard PHP Library support is not available. Without SPL support,' . PHP_EOL . ' the SDK cannot autoload the required PHP classes.' . PHP_EOL . PHP_EOL; } - if (!$json_ok) { echo '* ' . failure('JSON:') . ' JSON support is not available. AWS leverages JSON heavily in many' . PHP_EOL . ' of its services.' . PHP_EOL . PHP_EOL; } - if (!$pcre_ok) { echo '* ' . failure('PCRE:') . ' Your PHP installation doesn\'t support Perl-Compatible Regular' . PHP_EOL . ' Expressions (PCRE). Without PCRE, the SDK cannot do any filtering via' . PHP_EOL . ' regular expressions.' . PHP_EOL . PHP_EOL; } - if (!$file_ok) { echo '* ' . failure('File System Read/Write:') . ' The file_get_contents() and/or file_put_contents()' . PHP_EOL . ' functions have been disabled. Without them, the SDK cannot read from,' . PHP_EOL . ' or write to, the file system.' . PHP_EOL . PHP_EOL; } -} - -echo '----------------------------------------' . PHP_EOL; -echo PHP_EOL; - -if ($compatiblity === REQUIREMENTS_ALL_MET) -{ - echo success('Bottom Line: Yes, you can!') . PHP_EOL; - echo PHP_EOL; - echo 'Your PHP environment is ready to go, and can take advantage of all possible features!' . PHP_EOL; - - echo PHP_EOL; - echo info('Recommended settings for config.inc.php') . PHP_EOL; - echo PHP_EOL; - - echo "CFCredentials::set(array(" . PHP_EOL; - echo " '@default' => array(" . PHP_EOL; - echo " 'key' => 'aws-key'," . PHP_EOL; - echo " 'secret' => 'aws-secret'," . PHP_EOL; - echo " 'default_cache_config' => "; - if ($apc_ok) echo success('\'apc\''); - elseif ($xcache_ok) echo success('\'xcache\''); - elseif ($file_ok) echo success('\'/path/to/cache/folder\''); - echo "," . PHP_EOL; - echo " 'certificate_authority' => " . success($ssl_result ? 'true' : 'false') . PHP_EOL; - echo " )" . PHP_EOL; - echo "));" . PHP_EOL; -} -elseif ($compatiblity === REQUIREMENTS_MIN_MET) -{ - echo success('Bottom Line: Yes, you can!') . PHP_EOL; - echo PHP_EOL; - echo 'Your PHP environment is ready to go! There are a couple of minor features that' . PHP_EOL . 'you won\'t be able to take advantage of, but nothing that\'s a show-stopper.' . PHP_EOL; - - echo PHP_EOL; - echo info('Recommended settings for config.inc.php') . PHP_EOL; - echo PHP_EOL; - - echo "CFCredentials::set(array(" . PHP_EOL; - echo " '@default' => array(" . PHP_EOL; - echo " 'key' => 'aws-key'," . PHP_EOL; - echo " 'secret' => 'aws-secret'," . PHP_EOL; - echo " 'default_cache_config' => "; - if ($apc_ok) echo success('\'apc\''); - elseif ($xcache_ok) echo success('\'xcache\''); - elseif ($file_ok) echo success('\'/path/to/cache/folder\''); - echo "," . PHP_EOL; - echo " 'certificate_authority' => " . ($ssl_result ? 'false' : 'true') . PHP_EOL; - echo " )" . PHP_EOL; - echo "));" . PHP_EOL; -} -else -{ - echo failure('Bottom Line: We\'re sorry...') . PHP_EOL; - echo 'Your PHP environment does not support the minimum requirements for the ' . PHP_EOL . 'AWS SDK for PHP.' . PHP_EOL; -} - -echo PHP_EOL; diff --git a/3rdparty/aws-sdk/_docs/CHANGELOG.md b/3rdparty/aws-sdk/_docs/CHANGELOG.md deleted file mode 100644 index 52db66f4f6f929813487b052e56a015fa74850de..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/CHANGELOG.md +++ /dev/null @@ -1,1405 +0,0 @@ -# Changelog: 1.5.6.2 "Gershwin" -Code name for Apple's never-released successor to the never-released Copeland. - -Launched Tuesday, May 29th, 2012. - -## Services -### AmazonDynamoDB -- **Fixed:** STS credentials were not always being cached correctly. - ----- - -# Changelog: 1.5.6.1 "Gershwin" -Code name for Apple's never-released successor to the never-released Copeland. - -Launched Tuesday, May 24th, 2012. - -## Services -### AmazonDynamoDB -- **Fixed:** STS credentials were not always being cached correctly. - ----- - -# Changelog: 1.5.6 "Gershwin" -Code name for Apple's never-released successor to the never-released Copeland. - -Launched Tuesday, May 15th, 2012. - -## Services -### AmazonSES -- **New:** Support for domain verification has been added to the SDK, which enables customers to verify an entire email domain. -- **New:** Requests to this service are now signed with Signature V4. - ----- - -# Changelog: 1.5.5 "Fishhead" -Code name for the Apple II File Mangement Utility. - -Launched Wednesday, May 9, 2012. - -## Services -### AmazonCloudFormation -* **New:** Requests to this service are now signed with Signature V4. - -### AmazonCloudFront -* **New:** Updated the supported API version to `2012-03-15`. - -### AmazonDynamoDB -* **New:** Support for the US West (Northern California), US West (Oregon), Asia Pacific "Southeast" (Signapore) endpoints have been added. - -### AmazonElasticBeanstalk -* **New:** Support for the new Asia Pacific "Northeast" (Japan) endpoint has been added. - -### AmazonStorageGateway -* **New:** Support for the AWS Storage Gateway service has been added to the SDK. - ---- - -# Changelog: 1.5.4 "Enterprise" -Code name for Mac OS X Server 1.0 (Rhapsody CR1). - -Launched Thursday, April 19, 2012. - -## Bug fixes and enhancements -* [PHP SDK Bug - Memory leak](https://forums.aws.amazon.com/thread.jspa?threadID=72310) -* [Does update_object work in 1.5.3?](https://forums.aws.amazon.com/thread.jspa?threadID=89297) -* [The value of CURLOPT_SSL_VERIFYHOST](https://forums.aws.amazon.com/thread.jspa?threadID=86186) -* [PHP SDK BUG: s3.class.php Line 2396 on 1.5.2](https://forums.aws.amazon.com/thread.jspa?threadID=86779) -* [first create_bucket(), then get_bucket_list()](https://forums.aws.amazon.com/thread.jspa?messageID=318885) -* [Issue with AmazonS3::get_object_list() max-keys](https://forums.aws.amazon.com/thread.jspa?threadID=85878) -* [Correct the "Bottom line" minimum requirements check](https://github.com/amazonwebservices/aws-sdk-for-php/pull/23) -* [S3 PHP SDK: copy_object() fails to update the header](http://stackoverflow.com/questions/7677837/s3-php-sdk-copy-object-fails-to-update-the-header) -* [Adds the following utility methods to simplexml.class.php](https://github.com/amazonwebservices/aws-sdk-for-php/pull/22) -* [Adding the ability to name a 'rule' for Object Expiration (suggested tweak)](https://forums.aws.amazon.com/thread.jspa?messageID=328023) - -## Runtime -* **New:** Support for Signature Version 4 has been added to the SDK. Signature Version 4 is now the default authentication method for AWS Identity and Access Management, AWS Security Token Service and Amazon CloudSearch. - -## Services -### AmazonCloudFront -* **New:** Support for a Minimum TTL of zero has been added to the SDK. - -### AmazonCloudSearch -* **New:** Support for Amazon CloudSearch has been added to the SDK. This includes only the Configuration API. - -### AmazonDynamoDB -* **New:** Support for BatchWriteItem API has been added to the SDK. -* **New:** Support for the European (Ireland) endpoint has been added. -* **New:** Support for the Asia Pacific "Northeast" (Tokyo) endpoint has been added. -* **New:** Amazon DynamoDB Session Handler has been added to the SDK. -* **New:** A simplified interface for adding attributes has been added to the SDK. - -### AmazonEC2 -* **New:** The new "m1.medium" instance type is now supported. -* **New:** Amazon EBS support for Volume Status and Volume Attributes have been added to the SDK. -* **New:** Amazon EBS support for Conversion Tasks has been added to the SDK. -* **New:** Amazon EC2 support for the Report Instance Status feature has been added to the SDK. -* **New:** Amazon VPC support for Network Interfaces has been added to the SDK. -* **Fixed:** Various parameter fixes have been applied. - -### AmazonIAM -* **New:** Support for Password Policies and the ability to change passwords has been added to the SDK. - -### AmazonS3 -* **New:** Support for pre-signed URLs using temporary credentials has been added to the SDK. -* **New:** Support for setting a custom name to Lifecycle (i.e., Object Expiration) rules has been added to the SDK. -* **New:** Support for pre-signed URLs with https has been added to the SDK. -* **Fixed:** Resolved an issue where setting a custom XML parsing class was not being respected. -* **Fixed:** Resolved an issue where the `get_object_list()` method would return an incorrect number of entries. -* **Fixed:** Resolved an issue where `update_object()` was attempting to COPY instead of REPLACE. -* **Fixed:** Resolved an issue stemming from using path-style URLs, `create_bucket()` + `list_bucket()` and the EU-West region. -* **Fixed:** Resolved an issue where XML responses were not being parsed consistently. -* **Fixed:** Resolved an issue where Private Streaming URLs contained a double-encoded signature. -* **Fixed:** The `Expect: 100-continue` HTTP header is now only sent during `create_object()` and `upload_part()` requests. - -## Utilities -### CFRuntime -* **Fixed:** Resolved an issue where `CURLOPT_SSL_VERIFYHOST` was not set strictly enough. -* **Fixed:** The `Expect: 100-continue` HTTP header is no longer set on every request. - -### CFSimpleXML -* **New:** Support for `matches()`, `starts_with()` and `ends_with()` methods have been added to the SDK. (Thanks [Wil Moore III](https://github.com/wilmoore)!) - -## Compatibility Test -* **New:** SDK Compatibility Test pages are marked up as to not be indexed by search engines. (Thanks [Eric Caron](http://www.ericcaron.com)!) -* **Fixed:** Duplicate code between the CLI and web versions of the SDK has been refactored. (Thanks [Jimmy Berry](https://github.com/boombatower)!) - ---- - -# Changelog: 1.5.3 "Darwin" -UNIX foundation upon which Mac OS X, Apple TV, and iOS are based. - -Launched Wednesday, Tuesday, February 21, 2012. - -## Bug fixes and enhancements -* [Fixing Issue with set_distribution_config](https://github.com/amazonwebservices/aws-sdk-for-php/pull/20) - -## Services -### AmazonCloudFront -* **Fixed:** Resolved an issue where the `set_distribution_config()` method could fail to satisfy an API constraint when using a custom origin server. (Thanks [zoxa](https://github.com/zoxa)!) - -### AmazonSWF -* **New:** Support for the new Amazon Simple Workflow Service has been added to the SDK. - ----- - -# Changelog: 1.5.2 "Copland" -Code name for Apple's never-released successor to System 7. - -Launched Wednesday, Febraury 1, 2012. - -## Bug fixes and enhancements -* [SSL Cert on PHP SDK 1.5.0.1 ](https://forums.aws.amazon.com/thread.jspa?threadID=84947) -* [Stream Wrapper need a buffer !](https://forums.aws.amazon.com/thread.jspa?threadID=85436) -* [Fixing Issue with set_distribution_config](https://github.com/amazonwebservices/aws-sdk-for-php/pull/20) -* [[Bug] SDK Autoloader Interferes with PHPExcel Autoloader](https://forums.aws.amazon.com/thread.jspa?threadID=85239) -* [get_object query does not always return the same content type](https://forums.aws.amazon.com/thread.jspa?threadID=84148) -* [AWSSDKforPHP/authentication/swift_transport_esmtp_signature_handler.class.p ](https://forums.aws.amazon.com/thread.jspa?threadID=85087) - -## Runtime -* **New:** Updated the CA Root Certificates file to version 1.81. -* **Fixed:** Resolved an issue in the autoloader where the matching logic was too aggressive in certain cases, causing subsequent autoloaders to never trigger. - -## Services -### AmazonAS -* **New:** Support for Auto Scaling Resource Tagging has been added to the SDK. - -### AmazonS3 -* **Fixed:** Resolved an issue where `delete_all_objects()` and `delete_all_object_versions()` was being limited to 1000 items. -* **Fixed:** Resolved an issue where `delete_bucket()` would fail to delete a bucket with the "force" option enabled if the bucket contained more than 1000 items. -* **Fixed:** Resolved an issue where JSON documents stored in Amazon S3 would be parsed into a native PHP object when retrieved. - -## Utilities -### S3StreamWrapper -* **New:** Support for multiple stream wrappers (e.g., one per region) has been added to the SDK. -* **Fixed:** Writes to Amazon S3 are now buffered, resolving issues with pushing more than 8k of data at a time. - -### CFJSON -* **Fixed:** The JSON-to-XML conversion code is now substantially more robust and better handles encoded characters. - -### CacheCore -* **Changed:** Formerly, attempting to cache to a file system location that didn't exist or was not writable by the PHP process would fail silently. This behavior has been changed to throw a `CacheFile_Exception`. - ----- - -# Changelog: 1.5.1 "Blue" -Code name for Macintosh System 7. - -Launched Wednesday, January 18, 2012. - -## Bug fixes and enhancements -* [Documentation patch](https://github.com/amazonwebservices/aws-sdk-for-php/pull/13) -* [Removed duplicate comment line.](https://github.com/amazonwebservices/aws-sdk-for-php/pull/17) -* [CFRuntime credentials handling issue](https://forums.aws.amazon.com/thread.jspa?messageID=310388) -* [PHP 5.2 bug in AWS SDK for PHP 1.5.x](https://forums.aws.amazon.com/thread.jspa?messageID=311543) -* [[Bug] Custom Curl Opts Lost During Retry](https://forums.aws.amazon.com/thread.jspa?threadID=84835) -* [json_last_error doesn't exist before php v 5.3.0](https://github.com/amazonwebservices/aws-sdk-for-php/pull/12) -* [XML still being parsed when use_cache_flow is false](https://github.com/amazonwebservices/aws-sdk-for-php/pull/15) -* [Bug ssl_verification option not respected for AmazonS3 ](https://forums.aws.amazon.com/thread.jspa?threadID=83710) -* [[Bug] Compatibility test for Garbage Collector enabled should use ini_get](https://forums.aws.amazon.com/thread.jspa?threadID=84156) - -## Runtime -* **Fixed:** Corrected an issue where calling `AmazonS3->get_object()` would continue to parse the content if caching was being leveraged. (Thanks [Eric Caron](http://www.ericcaron.com)!) -* **Fixed:** The autoloader now returns `false` for any class it doesn't match, allowing subsequent autoloaders to catch the class name. (Thanks [Eric Caron](http://www.ericcaron.com)!) -* **Fixed:** An issue that caused CloudWatch to fail to decompress gzipped data correctly has been resolved. -* **Fixed:** Resolved an issue with passing explicit credentials without requiring a config file or a `CFCredentials` declaration. -* **Fixed:** Resolved an issue which causes custom cURL options to be unset from the payload when retrying. - -## Services -### AmazonAS -* **New:** Support for Amazon SNS notifications and Tagging have been added to the SDK. - -### AmazonCloudFront -* **Fixed:** Resolved an issue with disabling SSL verification. -* **Fixed:** Resolved an issue where `AmazonCloudFront` were throwing warnings in `E_STRICT` mode. - -### AmazonCloudWatch -* **Fixed:** Resolved an issue with decompressing gzipped data. - -### AmazonDynamoDB -* **New:** Support for Amazon DynamoDB has been added to the SDK. -* **New:** Amazon DynamoDB requires a default cache configuration to be set in the credential set, otherwise it will not function properly. - -### AmazonS3 -* **Fixed:** Resolved an issue with disabling SSL verification. -* **Fixed:** Resolved multiple documentation issues. (Thanks [Aizat Faiz](http://aizatto.com) and [Jason Ardell](http://ardell.posterous.com/)!) -* **Fixed:** Resolved an issue where `AmazonS3` were throwing warnings in `E_STRICT` mode. - -### AmazonSNS -* **New:** Support for Short Messaging Service (SMS) endpoints has been added to the SDK. -* **New:** Support for Subscription Attributes has been added to the SDK. - -## Utilities -### CFJSON -* **Fixed:** Support for the handling of JSON nulls in PHP 5.2 has been improved. (Thanks [David Chan](http://www.chandeeland.org)!) - -## Compatibility Test -* **Fixed:** The SDK compatibility test now uses `ini_get()` instead of `get_cfg_var()` and `get_cfg_ini()` for more accurate test results. - - ----- - -# Changelog: 1.5 "Allegro" -Code name for Mac OS 8.5. - -Launched Wednesday, December 14, 2011 - -## Credentials -* !! BACKWARDS-INCOMPATIBLE CHANGE !! - The function signature of all service constructors has changed. Instead of passing a key and secret as the first and second parameters, the constructor now accepts a hash (associative array) containing `key` and `secret` keys. Please see the API reference documentation - -## Runtime -* !! BACKWARDS-INCOMPATIBLE CHANGE !! - The function signature of all service constructors has changed. Instead of passing a key and secret as the first and second parameters, the constructor now accepts a hash (associative array) containing `key` and `secret` keys. If you are explicitly passing a key and secret to the constructor, you will need to change your code. If you are simply inheriting your default credentials from a config file, you don't need to make any changes beyond upgrading your config file to the new 1.5 format. Please see the API reference documentation for more information. -* !! BACKWARDS-INCOMPATIBLE CHANGE !! - The method by which the `config.inc.php` file maintains its list of credentials has been re-factored and updated to support managing multiple sets of credentials in a single location (e.g., development, staging, production). -* !! BACKWARDS-INCOMPATIBLE CHANGE !! - The `init()` method has been renamed to `factory()` to better reflect what it actually does. -* !! BACKWARDS-INCOMPATIBLE CHANGE !! - The `adjust_offset()` method has been removed. Instead, please ensure that the machine's time is set correctly using an [NTP server](https://secure.wikimedia.org/wikipedia/en/wiki/Network_Time_Protocol). -* !! BACKWARDS-INCOMPATIBLE CHANGE !! - In version 1.4 we enabled a mode where -- for services that supported it -- a set of temporary credentials were fetched and cached before the first request. This functionality has been reverted. The use of short-term credentials must be explicitly enabled by instantiating the `AmazonSTS` class and passing those credentials into the service constructor. -* **New:** Improved the user directory lookup for the config file. -* **Changed:** Made `set_region()` an alias of `set_hostname()`. - -## Services -### AmazonAS -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` - -### AmazonCloudFormation -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` -* **New:** Support for cost estimation of CloudFormation templates has been added to the SDK. - -### AmazonCloudWatch -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` - -### AmazonEC2 -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` -* **New:** Support for 24x7 Reserved Instances has been added to the SDK. For more information, please see [New Amazon EC2 Reserved Instance Options Now Available](https://aws.amazon.com/about-aws/whats-new/2011/12/01/New-Amazon-EC2-Reserved-Instances-Options-Now-Available/). -* **New:** Support for VPC Spot Instances has been added to the SDK. For more information, please see [Announcing Amazon EC2 Spot Integration with Amazon VPC](https://aws.amazon.com/about-aws/whats-new/2011/10/11/announcing-amazon-ec2-spot-integration-with-amazon-vpc/). -* **New:** Support for VPC Everywhere has been added to the SDK. For more information, please see [Amazon VPC Generally Available in Multiple AZs in All Regions](https://aws.amazon.com/about-aws/whats-new/2011/08/03/Announcing-VPC-GA/). -* **New:** Instance Type-related constants have been added to the SDK: `INSTANCE_MICRO`, `INSTANCE_SMALL`, `INSTANCE_LARGE`, `INSTANCE_XLARGE`, `INSTANCE_HIGH_MEM_XLARGE`, `INSTANCE_HIGH_MEM_2XLARGE`, `INSTANCE_HIGH_MEM_4XLARGE`, `INSTANCE_HIGH_CPU_MEDIUM`, `INSTANCE_HIGH_CPU_XLARGE`, `INSTANCE_CLUSTER_4XLARGE`, `INSTANCE_CLUSTER_8XLARGE`, `INSTANCE_CLUSTER_GPU_XLARGE`. - -### AmazonElastiCache -* **New:** Support for US-West 1 (California), EU-West (Ireland), Asia Pacific Southeast (Singapore), and Asia Pacific Northeast (Tokyo) regions has been added to the SDK. For more information, please see [Amazon ElastiCache is now available in four additional AWS Regions and as a CloudFormation template](https://aws.amazon.com/about-aws/whats-new/2011/12/05/amazon-elasticache-new-regions/). -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO` - -### AmazonElasticBeanstalk -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA` - -### AmazonELB -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` -* **New:** Support for ELBs running in VPC has been added to the SDK. For more information, please see [Announcing Elastic Load Balancing in Amazon VPC](https://aws.amazon.com/about-aws/whats-new/2011/11/21/announcing-elastic-load-balancing-in-amazon-vpc/). - -### AmazonEMR -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` -* **New:** Support for EMR AMI Versioning, new Hadoop and Pig versions, and EMR running in VPC has been added to the SDK. For more information, please see [Amazon Elastic MapReduce Announces Support for New Hadoop and Pig Versions, AMI Versioning, and Amazon VPC](https://aws.amazon.com/about-aws/whats-new/2011/12/11/amazon-elastic-mapreduce-ami-versioning-vpc/). - -### AmazonIAM -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA` - -### AmazonImportExport -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA` - -### AmazonRDS -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` - -### AmazonS3 -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` -* **New:** Support for an S3 Stream Wrapper has been added to the SDK. This enables users to read/write to Amazon S3 as though it were the local file system. -**Fixed:** The `get_object()` method no longer attempts to parse XML/JSON content. -**Fixed:** Simplified S3 region logic. Now uses fully-qualified domain names across the board. - -### AmazonSES -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA` - -### AmazonSDB -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` - -### AmazonSNS -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` - -### AmazonSQS -* **New:** Support for the South American (São Paulo) region has been added to the SDK. -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA`, `REGION_CALIFORNIA`, `REGION_OREGON`, `REGION_IRELAND`, `REGION_SINGAPORE`, `REGION_TOKYO`, `REGION_SAO_PAULO` - -### AmazonSTS -* **New:** Plain english aliases have been added to the SDK: `REGION_VIRGINA` - - ----- - -# Changelog: 1.4.8 "Zanarkand" - - -Launched Wednesday, December 7, 2011 - -## Services -### AmazonCloudFront -* **Fixed:** Merged in a pull request contributed by Ben Lumley: - -### AmazonEC2 -* **Fixed:** Resolved an issue where `set_region()` was not setting the correct endpoint for the region. - -### AmazonS3 -* **New:** Support for S3-side multi-object delete has been added to the SDK as the `delete_objects()` method. The implementations of `delete_all_objects()` and `delete_all_object_versions()` have been updated to use this new functionality. -* **Changed:** XML and JSON responses from `get_object()` are no longer parsed. The raw XML and JSON string content is now returned. - - ----- - -# Changelog: 1.4.7 "Yuna" - - -Launched Wednesday, November 9, 2011 - -## Service Classes -### AmazonAS -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - -### AmazonCloudFormation -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - -### AmazonCloudWatch -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. -* **New:** Support for the US GovCloud region has been added to the SDK. - -### AmazonEC2 -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. -* **New:** Support for the US GovCloud region has been added to the SDK. - -### AmazonELB -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - -### AmazonEMR -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - -### AmazonIAM -* **New:** Support for the US GovCloud region has been added to the SDK. - -### AmazonRDS -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - -### AmazonS3 -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. -* **Fixed:** Resolved an issue where certain bits of metadata were not maintained during a copy operation. -* **Fixed:** Resolved an issue where an unsuccessful lookup of an existing content-type would throw a warning. -* **Fixed:** Resolved an issue where an exception would be thrown when a filesize lookup was attempted on an object that didn't exist. - -### AmazonSDB -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - -### AmazonSNS -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - -### AmazonSQS -* **New:** Support for the US-West 2 (Oregon) region has been added to the SDK. - - ----- - -# Changelog: 1.4.6 "Xezat" - - -Launched Thursday, November 3, 2011 - -## Service Classes -### AmazonIAM -* **New:** Support for a virtual MFA device. A virtual MFA device uses a software application that can generate six-digit authentication codes that are Open AuTHentication Time-based One-Time Password (OATHTOTP)-compatible. The software application can run on any mobile hardware device, including a smartphone. - - ----- - -# Changelog: 1.4.5 "Weiss" - - -Launched Friday, October 21, 2011 - -## Service Classes -### AmazonSQS -* **New:** Support for delayed queues and batch operations has been added to the SDK. - - ----- - -# Changelog: 1.4.4 "Vaan" - - -Launched Tuesday, October 12, 2011 - -## Runtime -* **Fixed:** Resolved an issue where a segmentation fault is triggererd when there are multiple autoloaders in the stack and one of them doesn't return a value. - -## Service Classes -### AmazonS3 -* **New:** Support for server-side encryption has been added to the SDK. - - ----- - -# Changelog: 1.4.3 "Ultros" - - -Launched Friday, September 30, 2011 - -## Service Classes -### AmazonCloudFormation -* **New:** Support for new features in CloudFormation have been added to the SDK. - -### AmazonS3 -* **Fixed:** Setting the default cache configuration no longer causes authentication errors in `AmazonS3`. - - ----- - -# Changelog: 1.4.2.1 "Tiamat, Part II" - - -Launched Wednesday, September 7, 2011 - -## Utility Classes -### RequestCore -* **Fixed:** RequestCore has updated the `cacert.pem` file from Mozilla. This update revokes trust from the DigiNotar and Staat der Nederlanden root certificates. - - ----- - -# Changelog: 1.4.2 "Tiamat" - - -Launched Thursday, September 1, 2011 - -## Service Classes -### AmazonEC2 -* **Fixed:** Requests made to Amazon EC2 now use the correct API version (2011-07-15). - -### AmazonELB -* **New:** A pre-defined set of ciphers may now be used for SSL termination at the Elastic Load Balancer. -* **New:** Application servers can now accept secure communication from the corresponding Elastic Load Balancer. -* **New:** In cases where HTTPS is required for all traffic entering the back-end server, Elastic Load Balancing can now perform health checks using HTTPS. -* **New:** White list of public keys can now be associated with back-end servers. Elastic Load Balancing authenticates back-end servers with the public keys in the white list and communicates only with back-end servers that pass this authentication check. - -## Utility Classes -### RequestCore -* **Fixed:** RequestCore has updated the `cacert.pem` file from Mozilla. This update revokes trust from the DigiNotar root certificate. - - ----- - -# Changelog: 1.4.1 "Sephiroth" - - -Launched Tuesday, August 23, 2011 - -## Service Classes -### AmazonElastiCache -* **New:** Support for Amazon ElastiCache has been added to the SDK. - -### AmazonEMR -* **New:** Support for Hadoop Bootstrap Actions has been added to the SDK. -* **New:** Support for Amazon Elastic MapReduce on Spot Instances has been added to the SDK. -* **New:** Support for Termination Protection has been added to the SDK. -* **Changed:** For the add_instance_groups() method, the $instance_groups and $job_flow_id parameters have been reversed. - -## Utility Classes -### CFHadoopBootstrap -* **New:** The `CFHadoopBootstrap` class has been added to the SDK. Simplifies the process of working with Hadoop system and daemon configurations in Amazon EMR. -* **New:** This class extends from the `CFHadoopBase` class. - - ----- - -# Changelog: 1.4 "Rikku" - - -Launched Wednesday, August 3, 2011 - -## Bug fixes and enhancements - -## Service Classes -### AmazonEC2 -* **New:** Support for Session-Based Authentication (SBA) leveraging Amazon Secure Token Service (STS) has been added to the SDK. - -### AmazonS3 -* **New:** Support for Session-Based Authentication (SBA) leveraging Amazon Secure Token Service (STS) has been added to the SDK. - -### AmazonSNS -* **New:** Support for Session-Based Authentication (SBA) leveraging Amazon Secure Token Service (STS) has been added to the SDK. - -### AmazonSQS -* **New:** Support for Session-Based Authentication (SBA) leveraging Amazon Secure Token Service (STS) has been added to the SDK. - -### AmazonSTS -* **New:** Support for the Amazon Secure Token Service (STS) has been added to the SDK. - -## Utility Classes -### CFRuntime -* **New:** The following anonymous datapoints are now collected in aggregate so that we can make more informed decisions about future SDK features: `memory_limit`, `date.timezone`, `open_basedir`, `safe_mode`, `zend.enable_gc`. - -## Compatibility Test -* **New:** Support for verifying the installed SSL certificate has been added to the compatibility test. -* **New:** Support for verifying the status of `open_basedir` and `safe_mode` has been added to the compatibility test. -* **New:** Support for verifying the status of the PHP 5.3 garbage collector has been added to the compatibility test. -* **New:** The compatibility test now recommends optimal values for the `AWS_CERTIFICATE_AUTHORITY` and `AWS_DEFAULT_CACHE_CONFIG` configuration options based on the system's configuration. - - ----- - -# Changelog: 1.3.7 "Quistis" - - -Launched Monday, July 25, 2011 - -## Bug fixes and enhancements -* Addressed minor bug fixes reported via the feedback form in the API Reference. - -## Service Classes -### AmazonAS -* **Changed:** Introduced backwards-incompatible changes to the put_scheduled_update_group_action() method. - - ----- - -# Changelog: 1.3.6 "Penelo" - - -Launched Tuesday, July 12, 2011 - -## Bug fixes and enhancements -* [[Bug Report] rawurlencode error when using SES and curlopts](https://forums.aws.amazon.com/thread.jspa?threadID=68484) - -## Service Classes -### AmazonCloudFormation -* **New:** Support for the `list_stacks()` method has been added to the SDK. - -### AmazonElasticBeanstalk -* **New:** Support for the `swap_environment_cnames()` method has been added to the SDK. - -### AmazonS3 -* **Fixed:** Additional information about maximum open connections has been added to the `create_mpu_object()` method. - -## Compatibility Test -* **New:** Now tests whether the system is 64- or 32-bit. - - ----- - -# Changelog: 1.3.5 "Occuria" - - -Launched Tuesday, June 21, 2011 - -## Service Classes -### AmazonS3 -* **New:** Support for S3 copy part has been added to the SDK. - - ----- - -# Changelog: 1.3.4 "Nero" - - -Launched Tuesday, June 7, 2011 - -## Bug fixes and enhancements -* [Bug in PHP SDK](https://forums.aws.amazon.com/thread.jspa?threadID=67502) -* [cURL error: SSL certificate problem (60) with aws-sdk-for-php 1.3.3](https://forums.aws.amazon.com/thread.jspa?threadID=68349) - - -## Service Classes -### AmazonEC2 -* **New:** Support for Local Availability Zone Pricing has been added to the SDK. - -### AmazonELB -* **New:** Elastic Load Balancing provides a special Amazon EC2 security group that you can use to ensure that a back-end Amazon EC2 instance receives traffic only from its load balancer. - -### AmazonRDS -* **New:** Support for Oracle databases has been added to the SDK. - - -## Utility Classes -### CFArray -* **New:** Added the init() method which simplifies the process of instantiating and chaining a class. -* **New:** Added support for associative arrays to `each()`, `map()` and `filter()`. - -### CFRequest -* **New:** Now supports the `AWS_CERTIFICATE_AUTHORITY` configuration option. - - ----- - -# Changelog: 1.3.3 "Moogle" - - -Launched Tuesday, May 10, 2011 - -## Bug fixes and enhancements -* [Bug in AmazonCloudFront::get_private_object_url](https://forums.aws.amazon.com/thread.jspa?threadID=64004) -* [SDK 1.3.2 - Call to undefined function json_last_error()](https://forums.aws.amazon.com/thread.jspa?threadID=64767) -* [CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir](https://forums.aws.amazon.com/thread.jspa?threadID=61333) - - -## Service Classes -### AmazonCloudFront -* **Fixed:** Resolved an issue where the expires value for `get_private_object_url()` only accepted a string instead of a string or integer. - -### AmazonCloudWatch -* **New:** Support for CloudWatch custom user metrics has been added to the SDK. - - -## Extensions -### S3BrowserUpload -* **New:** Added the `S3BrowserUpload` class to the SDK. This class assists in generating the correct HTML/XHTML markup for uploading files to S3 via an HTML
element. - - -## Utility Classes -### CFArray -* **New:** Added the `init()` method which simplifies the process of instantiating and chaining a class. - -### CFHadoopBase -* **New:** The `CFHadoopBase` class has been extracted out of `CFHadoopStep` as a shared library. - -### CFHadoopStep -* **New:** The `CFHadoopBase` class has been extracted out of `CFHadoopStep` as a shared library. -* **New:** This class now extends from the `CFHadoopBase` class. - -### CFJSON -* **Fixed:** Resolved an issue where a PHP 5.3-specific function was being used. - -### CFPolicy -* **New:** Added the init() method which simplifies the process of instantiating and chaining a class. - -### CFSimpleXML -* **New:** Added the init() method which simplifies the process of instantiating and chaining a class. - -### RequestCore -* **Fixed:** Improvements to running in PHP environments with open_basedir enabled. -* **Fixed:** RequestCore now uses an up-to-date `cacert.pem` file from Mozilla instead of the Certificate Authority that libcurl or libopenssl was compiled with, which should resolve certain issues with making SSL connections to AWS services. - - ----- - -# Changelog: 1.3.2 "Luna" - - -Launched Tuesday, April 5, 2011 - -## New Features & Highlights (Summary) -* Support for Dedicated Instances within a Virtual Private Cloud on single-tenant hardware has been added to the SDK. -* Bug fixes and enhancements: - * [AmazonCloudWatch get_metric_statistics returns gzipped body](https://forums.aws.amazon.com/thread.jspa?threadID=62625) - - -## Service Classes -### AmazonCloudWatch -* **Fixed:** Worked around an issue where when CloudWatch sends back `Content-Encoding: gzip`, it really means `deflate`. When CloudWatch sends back `Content-Encoding: deflate`, it really means the data isn't encoded at all. - -### AmazonEC2 -* **New:** Support for Dedicated Instances within a Virtual Private Cloud on single-tenant hardware has been added to the SDK. - - ----- - -# Changelog: 1.3.1 "Kraken" - - -Launched Friday, March 25, 2011 - -## New Features & Highlights (Summary) -* Fixed issues with Signature v3 authentication (SES). -* Added gzip decoding. -* Added support for converting data to more alternate formats. -* Bug fixes and enhancements: - * [Cannot send email](https://forums.aws.amazon.com/thread.jspa?threadID=62833) - * [AmazonCloudWatch get_metric_statistics returns gzipped body](https://forums.aws.amazon.com/thread.jspa?threadID=62625) - - -## Utility Classes -### CFArray -* **New:** The `to_json()` and `to_yaml()` methoda have been added to the class. - -### CFGzipDecode -* **New:** Handles a variety of primary and edge cases around gzip/deflate decoding in PHP. - -### CFRuntime -* **New:** Gzip decoding has been added to the SDK. -* **Fixed:** The previous release contained a regression in the Signature v3 support that affected AmazonSES. This has been resolved. -* **Fixed:** Completed support for Signature v3 over HTTP connections. - -### CFSimpleXML -* **New:** The `to_stdClass()` and `to_yaml()` methoda have been added to the class. - - ----- - -# Changelog: 1.3 "Jecht" - - -Launched Tuesday, March 15, 2011 - -## New Features & Highlights (Summary) -* Support for VPC Internet Access has been added to the SDK. -* Bug fixes and enhancements: - * [AmazonEC2::register_image issue](https://forums.aws.amazon.com/thread.jspa?threadID=52499) - * [Automatic Parseing of XML objects](https://forums.aws.amazon.com/thread.jspa?threadID=61882) - -## Service Classes -### AmazonEC2 -* **New:** Support for VPC Internet Access has been added to the SDK. -* **Fixed:** The `$image_location` parameter in the `register_image()` method is no longer required. This is a backwards-incompatible change. - -### AmazonS3 -* **Fixed:** Resolved an issue in `get_object()` where using the `lastmodified` and `etag` parameters required both to be set before taking effect. They can now be set independently from each other. - - -## Utility classes -### CFArray -* **Changed:** The `reduce()` method has been renamed to `filter()`. `reduce()` is now simply an alias for `filter()`. - -### CFJSON -* **New:** Simplifies the task of normalizing XML and JSON responses as `CFSimpleXML` objects. - -### CFRuntime -* **New:** Preliminary support for Signature v3 over HTTP has been added to the SDK. This is useful for debugging Signature v3 issues over non-HTTPS connections. -* **Changed:** Classes that use the shared authentication method (i.e., NOT `AmazonS3` or `AmazonCloudFront`) will automatically convert JSON service responses into a `CFSimpleXML` object. -* **Changed:** Formerly, the SDK would attempt to sniff the content to determine the type. Now, the SDK will check the HTTP response headers for `text/xml`, `application/xml` or `application/json` to determine whether or not to parse the content. If the HTTP response headers are not available, the SDK will still attempt content sniffing. - -### CFSimpleXML -* **New:** The `to_json()` method has been added to the class. - -### CFUtilities -* **New:** The `is_json()` method has been added to the class. - - ----- - -# Changelog: 1.2.6 "Ifrit" - - -Launched Wednesday, March 2, 2011 - -## New Features & Highlights (Summary) -* **New:** Support for the new Asia Pacific "Northeast" (Japan) endpoint has been added for all relevant services. -* **New:** Support for registering callback functions for read/write streams has been added to the SDK. Includes a runnable sample. -* **Fixed:** Improvements to avoid triggering warnings when PHP is in Safe Mode. - - -## Service Classes -### AmazonAS -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonCloudFormation -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonCloudWatch -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonEC2 -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonELB -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonRDS -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonS3 -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. -* **New:** Added support for `ap-northeast-1` as a location constraint when creating a new bucket. - -### AmazonSDB -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonSNS -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -### AmazonSQS -* **New:** Added a new _class_ constant: `REGION_APAC_NE1`. - -## Utility classes -### CFRuntime -* **New:** Support for registering callback functions for read/write streams has been added to the SDK. -* **New:** Future-proofed for future regional endpoints. - -### RequestCore -* **New:** Support for registering callback functions for read/write streams has been added to the SDK. -* **Fixed:** Improvements to avoid triggering warnings when PHP is in Safe Mode. - -## Samples -* **New:** A sample demonstrating how to add a command-line progress bar for S3 transfers has been added to the SDK. - - ----- - -# Changelog: 1.2.5 "Heidegger" - - -Launched Thursday, February 24, 2011 - -## New Features & Highlights (Summary) -* Support for AWS CloudFormation has been added to the SDK. -* Bug fixes and enhancements: - * [PHP API change_content_type() broken](https://forums.aws.amazon.com/thread.jspa?threadID=59532) - * [Bug setting OriginAccessIdentity for a Cloudfront distribution config](https://forums.aws.amazon.com/thread.jspa?threadID=60989) - -## Service Classes -### AmazonCloudFormation -* **New:** Support for AWS CloudFormation has been added to the SDK. - -### AmazonCloudFront -* **Fixed:** Issues around `update_xml_config()` have been resolved. - -### AmazonS3 -* **Fixed:** Issues around `change_content_type()` have been resolved. - - ----- - -# Changelog: 1.2.4 "Goltanna" - - -Launched Wednesday, February 16, 2011 - -## New Features & Highlights (Summary) -* Support for IAM account aliases and server certificates has been added to the SDK. -* Support for Amazon S3 Website Configuration has been added to the SDK. -* Documentation updates for Amazon RDS and AWS Import/Export. -* Updated all documentation blocks to adhere to the PHPDoc format. This enables a greater number of tools to take advantage of the SDK documentation. -* Rolled out a major update to the SDK API Reference. - -## Service Classes -### AmazonIAM -* **New:** Support for IAM account aliases and server certificates has been added to the SDK. - -### AmazonImportExport -* **New:** Documentation has been updated to note the new US West region support. - -### AmazonRDS -* **New:** Documentation has been updated to note the new support for MySQL 5.5. - -### AmazonS3 -* **New:** Support for Amazon S3 Website Configuration has been added to the SDK. - - ----- - -# Changelog: 1.2.3 "Fayth" - - -Launched Tuesday, January 25, 2010 - -## New Features & Highlights (Summary) -* Support for Amazon Simple Email Service has been added to the SDK. - -## Service Classes -### AmazonSES -* **New:** Support for Amazon Simple Email Service has been added to the SDK. - - ----- - -# Changelog: 1.2.2 "Esper" - - -Launched Tuesday, January 18, 2011 - -## New Features & Highlights (Summary) -* Support for Amazon Elastic Beanstalk has been added to the SDK. -* Bug fixes and enhancements: - * [AWS PHP S3 Library is not working out of the box](https://forums.aws.amazon.com/thread.jspa?threadID=55174) - * [Problem with create_mpu_object() and streaming_read_callback() in S3](https://forums.aws.amazon.com/thread.jspa?threadID=54541) - * [Integrated Uranium235's GitHub contributions](https://github.com/Uranium235/aws-sdk-for-php/compare/Streaming) - -## Service Classes -### AmazonElasticBeanstalk -* **New:** Support for AWS Elastic Beanstalk has been added to the SDK. - -### AmazonS3 -* **Fixed:** Major improvements to transferring data over streams. - -## Utility classes -###RequestCore -* **New:** Upgraded to version 1.4. -* **Fixed:** Major improvements to transferring data over streams. - - ----- - -# Changelog: 1.2.1 "Dio" - - -Launched Friday, January 14, 2011 - - -## New Features & Highlights (Summary) -* Support for S3 Response Headers has been added to the SDK. -* Bug fixes and enhancements: - * [copy_object failed between regions](https://forums.aws.amazon.com/thread.jspa?threadID=56893) - * [Possible S3 bug with multiple buckets?](https://forums.aws.amazon.com/thread.jspa?threadID=56561) - -## Service Classes -### AmazonS3 -* **New:** Support for S3 Response Headers has been added to the SDK. -* **New:** Documentation for Amazon S3 has been updated to include large object support details. -* **New:** The `abort_multipart_uploads_by_date()` method has been added to the SDK, which aborts multipart uploads that were initiated before a specific date. -* **Fixed:** Resolved an issue where the resource prefix wasn't being reset correctly. - -## Utility classes -### CFArray -* **New:** Instantiating the class without passing an array will use an empty array instead. -* **New:** Added the `compress()` method which removes null values from the array. -* **New:** Added the `reindex()` method which reindexes all array elements starting at zero. - -## Compatibility Test -* **New:** The command-line compatibility test now color-codes the responses. - - ----- - -# Changelog: 1.2 "Cloud" - - -Launched Friday, December 3, 2010 - - -## New Features & Highlights (Summary) -* Support for Amazon AutoScaling, Amazon Elastic MapReduce, and Amazon Import/Export Service has been added to the SDK. -* Support for metric alarms has been added to Amazon CloudWatch. -* Support for batch deletion has been added to Amazon SimpleDB. -* Bug fixes and enhancements: - * [EU Region DNS problem](https://forums.aws.amazon.com/thread.jspa?threadID=53028) - * [[SimpleDB] Conditional PUT](https://forums.aws.amazon.com/thread.jspa?threadID=55884) - * [Suggestions for the PHP SDK](https://forums.aws.amazon.com/thread.jspa?threadID=55210) - * [Updating a distribution config](https://forums.aws.amazon.com/thread.jspa?threadID=54888) - * [Problem with curlopt parameter in S3](https://forums.aws.amazon.com/thread.jspa?threadID=54532) - * [AmazonS3::get_object_list() doesn't consider max-keys option](https://forums.aws.amazon.com/thread.jspa?threadID=55169) - -## Base/Runtime class -* **New:** Added support for an alternate approach to instantiating classes which allows for method chaining (PHP 5.3+). -* **Changed:** Moved `CHANGELOG.md`, `CONTRIBUTORS.md`, `LICENSE.md` and `NOTICE.md` into a new `_docs` folder. -* **Changed:** Renamed the `samples` directory to `_samples`. -* **Changed:** Changed the permissions for the SDK files from `0755` to `0644`. -* **Fixed:** Resolved an issue where attempting to merge cURL options would fail. - -## Service Classes -### AmazonAS -* **New:** Support for the Amazon AutoScaling Service has been added to the SDK. - -### AmazonCloudFront -* **Fixed:** Resolved an issue where the incorrect formatting of an XML element prevented the ability to update the list of trusted signers. - -### AmazonCloudWatch -* **New:** Support for the Amazon CloudWatch `2010-08-01` service release expands Amazon's cloud monitoring offerings with custom alarms. -* **Changed:** The changes made to the `get_metric_statistics()` method are backwards-incompatible with the previous release. The `Namespace` and `Period` parameters are now required and the parameter order has changed. - -### AmazonEMR -* **New:** Support for the Amazon Elastic MapReduce Service has been added to the SDK. - -### AmazonImportExport -* **New:** Support for the Amazon Import/Export Service has been added to the SDK. - -### AmazonS3 -* **Fixed:** Resolved an issue in the `create_bucket()` method that caused the regional endpoint to be reset to US-Standard. -* **Fixed:** Resolved an issue in the `get_object_list()` method where the `max-keys` parameter was ignored. - -### AmazonSDB -* **New:** Support for `BatchDeleteAttributes` has been added to the SDK. -* **Fixed:** Resolved an issue where the `Expected` condition was not respected by `put_attributes()` or `delete_attributes()`. - - -## Utility classes -### CFComplexType -* **New:** You can now assign a `member` parameter to prefix all list identifiers. -* **Changed:** The `option_group()` method is now `public` instead of `private`. -* **Changed:** Rewrote the `to_query_string()` method to avoid the use of PHP's `http_build_query()` function because it uses `urlencode()` internally instead of `rawurlencode()`. - -### CFHadoopStep -* **New:** Simplifies the process of working with Hadoop steps in Amazon EMR. - -### CFManifest -* **New:** Simplifies the process of constructing YAML manifest documents for Amazon Import/Export Service. - -### CFStepConfig -* **New:** Simplifies the process of working with step configuration in Amazon EMR. - - -## Third-party Libraries -### CacheCore -* **Changed:** The `generate_timestamp()` method is now `protected` instead of `private`. - - ----- - -# Changelog: 1.1 "Barret" - - -Launched Wednesday, November 10, 2010 - - -## New Features & Highlights (Summary) -* Support for Amazon ELB, Amazon RDS and Amazon VPC has been added to the SDK. -* Support for the Amazon S3 multipart upload feature has been added to the SDK. This feature enables developers upload large objects in a series of requests for improved upload reliability. -* Support for the Amazon CloudFront custom origin (2010-11-01 release) feature has been added to the SDK. This feature enables developers to use custom domains as sources for Amazon CloudFront distributions. -* The `AmazonS3` class now supports reading from and writing to open file resources in addition to the already-supported file system paths. -* You can now seek to a specific byte-position within a file or file resource and begin streaming from that point when uploading or downloading objects. -* The methods `get_bucket_filesize()`, `get_object_list()`, `delete_all_objects()` and `delete_all_object_versions()` are no longer limited to 1000 entries and will work correctly for all entries. -* Requests that have errors at the cURL level now throw exceptions containing the error message and error code returned by cURL. -* Bug fixes and enhancements: - * [Bug in Samples](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52748) - * [EU Region DNS problem](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=53028) - * [AmazonS3 get_bucket_object_count](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52976) - * [S3: get_object_list() fatal error](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=53418) - * [S3 get_object_metadata() problems](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=54244) - * [Bug in authenticate in sdk.class.php](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=53117) - * [How to use Prefix with "get_object_list"?](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52987) - * [SignatureDoesNotMatch with utf-8 in SimpleDB](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52798) - * [Suggestion for the PHP SDK concerning streaming](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52787) - * [get_bucket_filesize only returns filesize for first 1000 objects](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=53786) - - -## Base/Runtime class -* **Changed:** Port numbers other than 80 and 443 are now part of the signature. -* **Changed:** When putting UTF-8 characters via HTTP `POST`, a `SignatureDoesNotMatch` error would be returned. This was resolved by specifying the character set in the `Content-Type` header. - - -## Service Classes -### AmazonCloudFront -* **New:** Support for the Amazon CloudFront non-S3 origin feature (2010-11-01 release) has been added to the SDK. This feature enables developers to use non-S3 domains as sources for Amazon CloudFront distributions. - -### AmazonEC2 -* **New:** Support for Amazon Virtual Private Cloud has been added to the SDK. - -### AmazonELB -* **New:** Support for Amazon Elastic Load Balancing Service has been added to the SDK. - -### AmazonIAM -* **Fixed:** Removed `set_region()` as IAM only supports a single endpoint. - -### AmazonRDS -* **New:** Support for Amazon Relational Database Service has been added to the SDK. - -### AmazonS3 -* **New:** Support for the Amazon S3 multipart upload feature has been added to the SDK. This feature enables developers upload large objects in a series of requests for improved upload reliability. -* **New:** The `fileUpload` and `fileDownload` options now support reading from and writing to open file resources in addition to the already-supported file system paths. -* **Fixed:** In Amazon S3, requests directly to the eu-west endpoint must use the path-style URI. The set_region() method now takes this into account. -* **Fixed:** As of version 1.0.1, CFSimpleXML extends SimpleXMLIterator instead of SimpleXMLElement. This prevented the `__call()` magic method from firing when `get_object_list()` was used. -* **Fixed:** The `preauth` option for the `get_object_list()` method has been removed from the documentation as it is not supported. -* **Fixed:** The methods `get_bucket_filesize()`, `get_object_list()`, `delete_all_objects()` and `delete_all_object_versions()` are no longer limited to 1000 entries and will work correctly for all entries. -* **Fixed:** Using `delete_bucket()` to force-delete a bucket now works correctly for buckets with more than 1000 versions. -* **Fixed:** The response from the `get_object_metadata()` method now includes all supported HTTP headers, including metadata stored in `x-amz-meta-` headers. -* **Fixed:** Previously, if the `get_object_metadata()` method was called on a non-existant object, metadata for the alphabetically-next object would be returned. - -### AmazonSQS -* **New:** The `get_queue_arn()` method has been added to the `AmazonSQS` class, which converts a queue URI to a queue ARN. - - -## Utility classes -### CFSimpleXML -* **New:** Added `to_string()` and `to_array()` methods. - - -## Third-party Libraries -### RequestCore -* **New:** Upgraded to version 1.3. -* **New:** Added `set_seek_position()` for seeking to a byte-position in a file or file resource before starting an upload. -* **New:** Added support for reading from and writing to open file resources. -* **Fixed:** Improved the reporting for cURL errors. - - -## Compatibility Test -* **Fixed:** Fixed the links to the Getting Started Guide. - - ----- - -# Changelog: 1.0.1 "Aeris" - - -Launched Tuesday, October 12, 2010 - - -## New Features & Highlights (Summary) -* Improved support for running XPath queries against the service response bodies. -* Added support for request retries and exponential backoff. -* Added support for HTTP request/response header logging. -* Bug fixes and enhancements: - * [Bug in Samples](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52748) - * [Can't set ACL on object using the SDK](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52305) - * [Range requests for S3 - status codes 200, 206](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52738) - * [S3 change_storage_redundancy() function clears public-read ACL](http://developer.amazonwebservices.com/connect/thread.jspa?threadID=52652) - - -## Base/Runtime class -* **New:** Added support for request retries and exponential backoff for all `500` and `503` HTTP status codes. -* **New:** Added the `enable_debug_mode()` method to enable HTTP request/response header logging to `STDERR`. - - -## Service Classes -### AmazonS3 -* **Fixed:** Lots of tweaks to the documentation. -* **Fixed:** The `change_content_type()`, `change_storage_redundancy()`, `set_object_acl()`, and `update_object()` methods now respect the existing content-type, storage redundancy, and ACL settings when updating. -* **New:** Added the `get_object_metadata()` method has been added as a singular interface for obtaining all available metadata for an object. - - -## Utility Classes -### CFArray -* **New:** Added the `each()` method which accepts a callback function to execute for each entry in the array. Works similarly to [jQuery's each()](http://api.jquery.com/each). -* **New:** Added the `map()` method which accepts a callback function to execute for each entry in the array. Works similarly to [jQuery's map()](http://api.jquery.com/map). -* **New:** Added the `reduce()` method which accepts a callback function to execute for each entry in the array. Works similarly to [DomCrawler reduce()](http://github.com/symfony/symfony/blob/master/src/Symfony/Component/DomCrawler/Crawler.php) from the [Symfony 2](http://symfony-reloaded.org) Preview Release. -* **New:** Added the `first()` and `last()` methods to return the first and last nodes in the array, respectively. - -### CFInfo -* **New:** Retrieves information about the current installation of the AWS SDK for PHP. - -### CFSimpleXML -* **New:** Added the `query()` method, which allows for XPath queries while the results are wrapped in a `CFArray` response. -* **New:** Added the `parent()` method, which allows for traversing back up the document tree. -* **New:** Added the `stringify()` method, which typecasts the value as a string. -* **New:** Added the `is()` and `contains()` methods, which allow for testing whether the XML value is or contains a given value, respectively. -* **Changed:** Now extends the `SimpleXMLIterator` class, which in-turn extends the `SimpleXMLElement` class. This adds new iterator methods to the `CFSimpleXML` class. - - -## Third-party Libraries -### CacheCore -* **New:** Upgraded to version 1.2. -* **New:** Added a static `init` method that allows for chainable cache initialization (5.3+). - -### RequestCore -* **New:** Added `206` as a successful status code (i.e., Range GET). - - -## Compatibility Test -* **Fixed:** Some of the links in the compatibility test were missing. These have been fixed. - - ----- - -# Changelog: AWS SDK for PHP 1.0 - -Launched Tuesday, September 28, 2010 - -This is a complete list of changes since we forked from the CloudFusion 2.5.x trunk build. - - -## New Features & Highlights (Summary) -* The new file to include is `sdk.class.php` rather than `cloudfusion.class.php`. -* Because of the increased reliance on [JSON](http://json.org) across AWS services, the minimum supported version is now PHP 5.2 ([Released in November 2006](http://www.php.net/ChangeLog-5.php#5.2.0); Justified by these [WordPress usage statistics](http://wpdevel.wordpress.com/2010/07/09/suggest-topics-for-the-july-15-2010-dev/comment-page-1/#comment-8542) and the fact that [PHP 5.2 has been end-of-life'd](http://www.php.net/archive/2010.php#id2010-07-22-1) in favor of 5.3). -* Up-to-date service support for [EC2](http://aws.amazon.com/ec2), [S3](http://aws.amazon.com/s3), [SQS](http://aws.amazon.com/sqs), [SimpleDB](http://aws.amazon.com/simpledb), [CloudWatch](http://aws.amazon.com/cloudwatch), and [CloudFront](http://aws.amazon.com/cloudfront). -* Added service support for [SNS](http://aws.amazon.com/sns). -* Limited testing for third-party API-compatible services such as [Eucalyptus](http://open.eucalyptus.com), [Walrus](http://open.eucalyptus.com) and [Google Storage](http://sandbox.google.com/storage). -* Improved the consistency of setting complex data types across services. (Required some backwards-incompatible changes.) -* Added new APIs and syntactic sugar for SimpleXML responses, batch requests and response caching. -* Moved away from _global_ constants in favor of _class_ constants. -* Minor, but notable improvements to the monkey patching support. -* Added a complete list of bug fix and patch contributors. Give credit where credit is due. ;) - -**Note: ALL backwards-incompatible changes are noted below. Please review the changes if you are upgrading.** We're making a small number of backwards-incompatible changes in order to improve the consistency across services. We're making these changes _now_ so that we can ensure that future versions will always be backwards-compatible with the next major version change. - - -## File structure -The package file structure has been refined in a few ways: - -* All service-specific classes are inside the `/services/` directory. -* All utility-specific classes are inside the `/utilities/` directory. -* All third-party classes are inside the `/lib/` directory. - - -## Base/Runtime class -* **Fixed:** Resolved issues: [#206](http://code.google.com/p/tarzan-aws/issues/detail?id=206). -* **New:** The following global constants have been added: `CFRUNTIME_NAME`, `CFRUNTIME_VERSION`, `CFRUNTIME_BUILD`, `CFRUNTIME_URL`, and `CFRUNTIME_USERAGENT` -* **New:** Now supports camelCase versions of the snake_case method names. (e.g. `getObjectList()` will get translated to `get_object_list()` behind the scenes.) -* **New:** Added `set_resource_prefix()` and `allow_hostname_override()` (in addition to `set_hostname()`) to support third-party, API-compatible services. -* **New:** Added new caching APIs: `cache()` and `delete_cache()`, which work differently from the methods they replace. See docs for more information. -* **New:** Added new batch request APIs, `batch()` and `CFBatchRequest` which are intended to replace the old `returnCurlHandle` optional parameter. -* **New:** Will look for the `config.inc.php` file first in the same directory (`./config.inc.php`), and then fallback to `~/.aws/sdk/config.inc.php`. -* **Changed:** Renamed the `CloudFusion` base class to `CFRuntime`. -* **Changed:** `CloudFusion_Exception` has been renamed as `CFRuntime_Exception`. -* **Changed:** Renamed the `CloudFusion::$enable_ssl` property to `CFRuntime::$use_ssl`. -* **Changed:** Renamed the `CloudFusion::$set_proxy` property to `CFRuntime::$proxy`. -* **Changed:** `CFRuntime::disable_ssl()` no longer takes any parameters. Once SSL is off, it is always off for that class instance. -* **Changed:** All date-related constants are now class constants of the `CFUtilities` class (e.g. `CFUtilities::DATE_FORMAT_ISO8601`). - * Use `CFUtilities::konst()` if you're extending classes and need to do something such as `$this->util::DATE_FORMAT_ISO8601` but keep getting the `T_PAAMAYIM_NEKUDOTAYIMM` error. -* **Changed:** All `x-cloudfusion-` and `x-tarzan-` HTTP headers are now `x-aws-`. -* **Changed:** `CloudFusion::autoloader()` is now in its own separate class: `CFLoader::autoloader()`. This prevents it from being incorrectly inherited by extending classes. -* **Changed:** `RequestCore`, `ResponseCore` and `SimpleXMLElement` are now extended by `CFRequest`, `CFResponse` and `CFSimpleXML`, respectively. These new classes are now used by default. -* **Changed:** Changes to monkey patching: - * You must now extend `CFRequest` instead of `RequestCore`, and then pass that class name to `set_request_class()`. - * You must now extend `CFResponse` instead of `ResponseCore`, and then pass that class name to `set_response_class()`. - * You can now monkey patch `CFSimpleXML` (extended from `SimpleXMLElement`) with `set_parser_class()`. - * You can now monkey patch `CFBatchRequest` with `set_batch_class()`. - * No changes for monkey patching `CFUtilities` with `set_utilities_class()`. -* **Removed:** Removed ALL existing _global_ constants and replaced them with _class_ constants. -* **Removed:** Removed `cache_response()` and `delete_cache_response()`. - - -## Service classes - -### AmazonCloudFront -* **Fixed:** Resolved issues: [#124](http://code.google.com/p/tarzan-aws/issues/detail?id=124), [#225](http://code.google.com/p/tarzan-aws/issues/detail?id=225), [#229](http://code.google.com/p/tarzan-aws/issues/detail?id=229), [#232](http://code.google.com/p/tarzan-aws/issues/detail?id=232), [#239](http://code.google.com/p/tarzan-aws/issues/detail?id=239). -* **Fixed:** Fixed an issue where `AmazonCloudFront` sent a `RequestCore` user agent in requests. -* **New:** Class is now up-to-date with the [2010-07-15](http://docs.amazonwebservices.com/AmazonCloudFront/2010-07-15/APIReference/) API release. -* **New:** Added _class_ constants for deployment states: `STATE_INPROGRESS` and `STATE_DEPLOYED`. -* **New:** Now supports streaming distributions. -* **New:** Now supports HTTPS (as well as HTTPS-only) access. -* **New:** Now supports Origin Access Identities. Added `create_oai()`, `list_oais()`, `get_oai()`, `delete_oai()`, `generate_oai_xml()` and `update_oai_xml()`. -* **New:** Now supports private (signed) URLs. Added `get_private_object_url()`. -* **New:** Now supports default root objects. -* **New:** Now supports invalidation. -* **New:** Added `get_distribution_list()`, `get_streaming_distribution_list()` and `get_oai_list()` which return simplified arrays of identifiers. -* **Changed:** Replaced all of the remaining `CDN_*` constants with _class_ constants. - -### AmazonCloudWatch -* **New:** Added new _class_ constants: `DEFAULT_URL`, `REGION_US_E1`, `REGION_US_W1`, `REGION_EU_W1`, and `REGION_APAC_SE1`. -* **New:** Now supports the _Northern California_, _European_ and _Asia-Pacific_ regions. -* **New:** The _global_ `CW_DEFAULT_URL` constant has been replaced by `AmazonCloudFront::DEFAULT_URL`. - -### AmazonEC2 -* **Fixed:** Resolved issues: [#124](http://code.google.com/p/tarzan-aws/issues/detail?id=124), [#131](http://code.google.com/p/tarzan-aws/issues/detail?id=131), [#138](http://code.google.com/p/tarzan-aws/issues/detail?id=138), [#139](http://code.google.com/p/tarzan-aws/issues/detail?id=139), [#154](http://code.google.com/p/tarzan-aws/issues/detail?id=154), [#173](http://code.google.com/p/tarzan-aws/issues/detail?id=173), [#200](http://code.google.com/p/tarzan-aws/issues/detail?id=200), [#233](http://code.google.com/p/tarzan-aws/issues/detail?id=233). -* **New:** Class is now up-to-date with the [2010-06-15](http://docs.amazonwebservices.com/AWSEC2/2010-06-15/APIReference/) API release. -* **New:** Now supports [Paid AMIs](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=865&categoryID=87). -* **New:** Now supports [Multiple instance types](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=992&categoryID=87). -* **New:** Now supports [Elastic IPs](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1344&categoryID=87). -* **New:** Now supports [Availability Zones](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1344&categoryID=87). -* **New:** Now supports [Elastic Block Store](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1665&categoryID=87). -* **New:** Now supports [Windows instances](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1765&categoryID=87). -* **New:** Now supports the [European region](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1926&categoryID=87). -* **New:** Now supports the _Northern California_ and _Asia-Pacific_ regions. -* **New:** Now supports [Reserved instances](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2213&categoryID=87). -* **New:** Now supports [Shared snapshots](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2843&categoryID=87). -* **New:** Now supports [EBS AMIs](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3105&categoryID=87). -* **New:** Now supports [Spot instances](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3215&categoryID=87). -* **New:** Now supports [Cluster Compute Instances](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3965&categoryID=87). -* **New:** Now supports [Placement Groups](http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3965&categoryID=87). -* **New:** Added new _class_ constants for regions: `REGION_US_E1`, `REGION_US_W1`, `REGION_EU_W1`, `REGION_APAC_SE1`. -* **New:** Added new _class_ constants for run-state codes: `STATE_PENDING`, `STATE_RUNNING`, `STATE_SHUTTING_DOWN`, `STATE_TERMINATED`, `STATE_STOPPING`, `STATE_STOPPED`. -* **New:** Added support for decrypting the Administrator password for Microsoft Windows instances. -* **New:** Instead of needing to pass `Parameter.0`, `Parameter.1`, ...`Parameter.n` individually to certain methods, you can now reliably pass a string for a single value or an indexed array for a list of values. -* **New:** Limited tested has been done with the Eucalyptus EC2-clone. -* **Changed:** The `$account_id` parameter has been removed from the constructor. -* **Changed:** The _global_ `EC2_LOCATION_US` and `EC2_LOCATION_EU` constants have been replaced. -* **Changed:** The `set_locale()` method has been renamed to `set_region()`. It accepts any of the region constants. - -### AmazonIAM -* **New:** Up-to-date with the [2010-03-31](http://docs.amazonwebservices.com/sns/2010-03-31/api/) API release. - -### AmazonS3 -* **Fixed:** Resolved issues: [#31](http://code.google.com/p/tarzan-aws/issues/detail?id=31), [#72](http://code.google.com/p/tarzan-aws/issues/detail?id=72), [#123](http://code.google.com/p/tarzan-aws/issues/detail?id=123), [#156](http://code.google.com/p/tarzan-aws/issues/detail?id=156), [#199](http://code.google.com/p/tarzan-aws/issues/detail?id=199), [#201](http://code.google.com/p/tarzan-aws/issues/detail?id=201), [#203](http://code.google.com/p/tarzan-aws/issues/detail?id=203), [#207](http://code.google.com/p/tarzan-aws/issues/detail?id=207), [#208](http://code.google.com/p/tarzan-aws/issues/detail?id=208), [#209](http://code.google.com/p/tarzan-aws/issues/detail?id=209), [#210](http://code.google.com/p/tarzan-aws/issues/detail?id=210), [#212](http://code.google.com/p/tarzan-aws/issues/detail?id=212), [#216](http://code.google.com/p/tarzan-aws/issues/detail?id=216), [#217](http://code.google.com/p/tarzan-aws/issues/detail?id=217), [#226](http://code.google.com/p/tarzan-aws/issues/detail?id=226), [#228](http://code.google.com/p/tarzan-aws/issues/detail?id=228), [#234](http://code.google.com/p/tarzan-aws/issues/detail?id=234), [#235](http://code.google.com/p/tarzan-aws/issues/detail?id=235). -* **Fixed:** Fixed an issue where `AmazonS3` sent a `RequestCore` user agent in requests. -* **New:** Now supports the _Northern California_ and _Asia-Pacific_ regions. -* **New:** Now supports the new _EU (Ireland)_ REST endpoint. -* **New:** Now supports MFA Delete. -* **New:** Now supports Conditional Copy. -* **New:** Now supports Reduced Redundancy Storage (RRS). Added `change_storage_redundancy()`. -* **New:** Now supports Object Versioning. Added `enable_versioning()`, `disable_versioning`, `get_versioning_status()`, and `list_bucket_object_versions()`. -* **New:** Now supports Bucket Policies. Added `set_bucket_policy()`, `get_bucket_policy()`, and `delete_bucket_policy()`. -* **New:** Now supports Bucket Notifications. Added `create_bucket_notification()`, `get_bucket_notifications()`, and `delete_bucket_notification()`. -* **New:** Added _class_ constants for regions: `REGION_US_E1`, `REGION_US_W1`, `REGION_EU_W1`, `REGION_APAC_SE1`. -* **New:** Added _class_ constants for storage types: `STORAGE_STANDARD` and `STORAGE_REDUCED`. -* **New:** Enhanced `create_object()` with the ability to upload a file from the file system. -* **New:** Enhanced `get_object()` with the ability to download a file to the file system. -* **New:** Enhanced `get_bucket_list()` and `get_object_list()` with performance improvements. -* **New:** Enhanced all GET operations with the ability to generate pre-authenticated URLs. This is the same feature as `get_object_url()` has had, applied to all GET operations. -* **New:** Limited testing with Walrus, the Eucalyptus S3-clone. -* **New:** Limited testing with Google Storage. -* **Changed:** Replaced all of the remaining `S3_*` constants with _class_ constants: `self::ACL_*`, `self::GRANT_*`, `self::USERS_*`, and `self::PCRE_ALL`. -* **Changed:** Changed the function signature for `create_object()`. The filename is now passed as the second parameter, while the remaining options are now passed as the third parameter. This behavior now matches all of the other object-related methods. -* **Changed:** Changed the function signature for `head_object()`, `delete_object()`, and `get_object_acl()`. The methods now accept optional parameters as the third parameter instead of simply `returnCurlHandle`. -* **Changed:** Changed the function signature for `get_object_url()` and `get_torrent_url()`. Instead of passing a number of seconds until the URL expires, you now pass a string that `strtotime()` understands (including `60 seconds`). -* **Changed:** Changed the function signature for `get_object_url()`. Instead of passing a boolean value for `$torrent`, the last parameter is now an `$opt` variable which allows you to set `torrent` and `method` parameters. -* **Changed:** Changed how `returnCurlHandle` is used. Instead of passing `true` as the last parameter to most methods, you now need to explicitly set `array('returnCurlHandle' => true)`. This behavior is consistent with the implementation in other classes. -* **Changed:** Optional parameter names changed in `list_objects()`: `maxKeys` is now `max-keys`. -* **Changed:** `get_bucket_locale()` is now called `get_bucket_region()`, and returns the response body as a _string_ for easier comparison with class constants. -* **Changed:** `get_bucket_size()` is now called `get_bucket_object_count()`. Everything else about it is identical. -* **Changed:** `head_bucket()` is now called `get_bucket_headers()`. Everything else about it is identical. -* **Changed:** `head_object()` is now called `get_object_headers()`. Everything else about it is identical. -* **Changed:** `create_bucket()` has two backward-incompatible changes: - * Method now **requires** the region (formerly _locale_) to be set. - * Method takes an `$acl` parameter so that the ACL can be set directly when creating a new bucket. -* **Changed:** Bucket names are now validated. Creating a new bucket now requires the more stringent DNS-valid guidelines, while the process of reading existing buckets follows the looser path-style guidelines. This change also means that the reading of path-style bucket names is now supported, when previously they weren’t. -* **Removed:** Removed `store_remote_file()` because its intended usage repeatedly confused users, and had potential for misuse. If you were using it to upload from the local file system, you should be using `create_object` instead. -* **Removed:** Removed `copy_bucket()`, `replace_bucket()`, `duplicate_object()`, `move_object()`, and `rename_object()` because only a small number of users used them, and they weren't very robust anyway. -* **Removed:** Removed `get_bucket()` because it was just an alias for `list_objects()` anyway. Use the latter from now on -- it's identical. - -### AmazonSDB -* **Fixed:** Resolved issues: [#205](http://code.google.com/p/tarzan-aws/issues/detail?id=205). -* **New:** Class is now up-to-date with the [2009-04-15](http://docs.amazonwebservices.com/AmazonSimpleDB/2009-04-15/DeveloperGuide/) API release. -* **Changed:** Changed the function signatures for `get_attributes()` and `delete_attributes()` to improve consistency. - -### AmazonSNS -* **New:** Up-to-date with the [2010-03-31](http://docs.amazonwebservices.com/sns/2010-03-31/api/) API release. - -### AmazonSQS -* **Fixed:** Resolved issues: [#137](http://code.google.com/p/tarzan-aws/issues/detail?id=137), [#213](http://code.google.com/p/tarzan-aws/issues/detail?id=213), [#219](http://code.google.com/p/tarzan-aws/issues/detail?id=219), [#220](http://code.google.com/p/tarzan-aws/issues/detail?id=220), [#221](http://code.google.com/p/tarzan-aws/issues/detail?id=221), [#222](http://code.google.com/p/tarzan-aws/issues/detail?id=222). -* **Fixed:** In CloudFusion 2.5, neither `add_permission()` nor `remove_permission()` were functional. They are now working. -* **New:** Now supports the _Northern California_ and _Asia-Pacific_ regions. -* **New:** Now supports the new _US-East (N. Virginia)_ endpoint. -* **New:** Now supports the new _EU (Ireland)_ endpoint. -* **New:** Added new _class_ constants for regions: `REGION_US_E1`, `REGION_US_W1`, `REGION_EU_W1`, and `REGION_APAC_SE1`. -* **Changed:** Because we now support multiple region endpoints, queue names alone are no longer sufficient for referencing your queues. As such, you must now use a full-queue URL instead of just the queue name. -* **Changed:** The _global_ `SQS_LOCATION_US` and `SQS_LOCATION_EU` constants have been replaced. -* **Changed:** Renamed `set_locale()` as `set_region()`. It accepts any of the region constants. -* **Changed:** Changed the function signature for `list_queues()`. See the updated API reference. -* **Changed:** Changed the function signature for `set_queue_attributes()`. See the updated API reference. -* **Changed:** Changed how `returnCurlHandle` is used. Instead of passing `true` as the last parameter to most methods, you now need to explicitly set `array('returnCurlHandle' => true)`. This behavior is consistent with the implementation in other classes. -* **Changed:** Function signature changed in `get_queue_attributes()`. The `$attribute_name` parameter is now passed as a value in the `$opt` parameter. - -### AmazonSQSQueue -* **Removed:** `AmazonSQSQueue` was a simple wrapper around the AmazonSDB class. It generally failed as an object-centric approach to working with SQS, and as such, has been eliminated. Use the `AmazonSQS` class instead. - - -## Utility Classes -### CFArray -* **New:** Extends `ArrayObject`. -* **New:** Simplified typecasting of SimpleXML nodes to native types (e.g. integers, strings). - -### CFBatchRequest -* **New:** Provides a higher-level API for executing batch requests. - -### CFComplexType -* **New:** Used internally by several classes to handle various complex data-types (e.g. single or multiple values, `Key.x.Subkey.y.Value` combinations). -* **New:** Introduces a way to convert between JSON, YAML, and the PHP equivalent of Lists and Maps (nested associative arrays). - -### CFRequest -* **New:** Sets some project-specific settings and passes them to the lower-level RequestCore. - -### CFResponse -* **New:** No additional changes from the base `ResponseCore` class. - -### CFPolicy -* **New:** Used for constructing Base64-encoded, JSON policy documents to be passed around to other methods. - -### CFSimpleXML -* **New:** Extends `SimpleXMLElement`. -* **New:** Simplified node retrieval. All SimpleXML-based objects (e.g. `$response->body`) now have magic methods that allow you to quickly retrieve nodes with the same name - * e.g. `$response->body->Name()` will return an array of all SimpleXML nodes that match the `//Name` XPath expression. - -### CFUtilities -* **Fixed:** `to_query_string()` now explicitly passes a `&` character to `http_build_query()` to avoid configuration issues with MAMP/WAMP/XAMP installations. -* **Fixed:** `convert_response_to_array()` has been fixed to correctly return an all-array response under both PHP 5.2 and 5.3. Previously, PHP 5.3 returned a mix of `array`s and `stdClass` objects. -* **New:** Added `konst()` to retrieve the value of a class constant, while avoiding the `T_PAAMAYIM_NEKUDOTAYIM` error. Misspelled because `const` is a reserved word. -* **New:** Added `is_base64()` to determine whether or not a string is Base64-encoded data. -* **New:** Added `decode_uhex()` to decode `\uXXXX` entities back into their unicode equivalents. -* **Changed:** Changed `size_readable()`. Now supports units up to exabytes. -* **Changed:** Moved the `DATE_FORMAT_*` _global_ constants into this class as _class_ constants. -* **Removed:** Removed `json_encode_php51()` now that the minimum required version is PHP 5.2 (which includes the JSON extension by default). -* **Removed:** Removed `hex_to_base64()`. - - -## Third-party Libraries -### CacheCore -* **New:** Upgraded to version 1.1.1. -* **New:** Now supports both the [memcache](http://php.net/memcache) extension, but also the newer, faster [memcached](http://php.net/memcached) extension. Prefers `memcached` if both are installed. -* **Deprecated:** Support for MySQL and PostgreSQL as storage mechanisms has been **deprecated**. Since they're using PDO, they'll continue to function (as we're maintaining SQLite support via PDO), but we recommend migrating to using APC, XCache, Memcache or SQLite if you'd like to continue using response caching. -* New BSD licensed -* - -### RequestCore -* **New:** Upgraded to version 1.2. -* **New:** Now supports streaming up and down. -* **New:** Now supports "rolling" requests for better scalability. -* New BSD licensed -* diff --git a/3rdparty/aws-sdk/_docs/CONTRIBUTORS.md b/3rdparty/aws-sdk/_docs/CONTRIBUTORS.md deleted file mode 100644 index 3523bf6723ca677fd035b008d78e6a60b12ce7da..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/CONTRIBUTORS.md +++ /dev/null @@ -1,64 +0,0 @@ -# Contributors - -## AWS SDK for PHP Contributors - -Contributions were provided under the Apache 2.0 License, as appropriate. - -The following people have provided ideas, support and bug fixes: - -* [arech8](http://developer.amazonwebservices.com/connect/profile.jspa?userID=154435) (bug fixes) -* [Aizat Faiz](http://aizatto.com) (bug fixes) -* [Ben Lumley](http://github.com/benlumley) (bug fixes) -* [David Chan](http://www.chandeeland.org) (bug fixes) -* [Eric Caron](http://www.ericcaron.com) (bug fixes) -* [Jason Ardell](http://ardell.posterous.com/) (bug fixes) -* [Jeremy Archuleta](http://code.google.com/u/jeremy.archuleta/) (bug fixes) -* [Jimmy Berry](http://blog.boombatower.com/) (bug fixes, patches) -* [Paul Voegler](mailto:voegler@gmx.de) (bug fixes, bug reports, patches) -* [Peter Bowen](http://github.com/pzb) (feedback, bug reports) -* [zoxa](https://github.com/zoxa) (bug fixes) - - -## CloudFusion/CacheCore/RequestCore Contributors - -Contributions were provided under the New BSD License, as appropriate. - -The following people have provided ideas, support and bug fixes: - -* [Aaron Collegeman](http://blog.aaroncollegeman.com) (bug fixes) -* [Alex Schenkel](http://code.google.com/u/alex.schenkel/) (bug fixes) -* [Andrzej Bednarczyk](http://kreo-consulting.com) (bug fixes) -* [bprater](http://code.google.com/u/bprater/) (bug fixes) -* [castoware](http://code.google.com/u/castoware/) (bug fixes) -* [Chris Chen](http://github.com/chrischen) (bug fixes, patches, support) -* [Chris Mytton](http://hecticjeff.net) (bug fixes) -* [evgen.dm](http://code.google.com/u/evgen.dm/) (bug fixes) -* [gafitescu](http://code.google.com/u/gafitescu/) (bug fixes) -* [Gary Richardson](http://code.google.com/u/gary.richardson/) (bug fixes) -* [Gil Hildebrand](http://squidoo.com) (bug fixes) -* [Guilherme Blanco](http://blog.bisna.com) (bug fixes) -* [hammjazz](http://code.google.com/u/hammjazz/) (bug fixes) -* [HelloBunty](http://code.google.com/u/HelloBunty/) (bug fixes) -* [inputrequired](http://code.google.com/u/inputrequired/) (bug fixes) -* [Ivo Beckers](http://infopractica.nl) (bug fixes) -* [Jason Litka](http://jasonlitka.com) (bug fixes, patches) -* [Jeremy Archuleta](http://code.google.com/u/jeremy.archuleta/) (bug fixes) -* [John Beales](http://johnbeales.com) (bug fixes) -* [John Parker](http://code.google.com/u/john3parker/) (bug fixes) -* [Jon Cianciullo](http://code.google.com/u/jon.cianciullo/) (bug fixes) -* [kris0476](http://code.google.com/u/kris0476/) (bug fixes) -* [Matt Terenzio](http://jour.nali.st/blog) (bug fixes, patches) -* [Mike Jetter](http://mbjetter.com) (bug fixes) -* [Morten Blinksbjerg Nielsen](http://mbn.dk) (bug fixes) -* [nathell](http://code.google.com/u/nathell/) (bug fixes) -* [nickgsuperstar](http://code.google.com/u/nickgsuperstar/) (bug fixes) -* [ofpichon](http://code.google.com/u/ofpichon/) (bug fixes) -* [Otavio Ferreira](http://otaviofff.me) (bug fixes) -* [Paul Voegler](mailto:voegler@gmx.de) (bug fixes, bug reports, patches) -* [Steve Brozosky](http://code.google.com/u/@UBZWSlJVBxhHXAN1/) (bug fixes) -* [Steve Chu](http://stevechu.org) (bug fixes) -* [tommusic](http://code.google.com/u/tommusic/) (bug fixes) -* [Tyler Hall](http://clickontyler.com) (bug fixes) -* [webcentrica.co.uk](http://code.google.com/u/@VhBQQldUBBBEXAF1/) (bug fixes) -* [worden341](http://github.com/worden341) (bug fixes) -* [yakkyjunk](http://code.google.com/u/yakkyjunk/) (bug fixes) diff --git a/3rdparty/aws-sdk/_docs/DYNAMODBSESSIONHANDLER.html b/3rdparty/aws-sdk/_docs/DYNAMODBSESSIONHANDLER.html deleted file mode 100644 index 8b1545db50a5ec3ec34005d0ede0fd87dea5bc91..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/DYNAMODBSESSIONHANDLER.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - README - - - -

DynamoDB Session Handler

-

The DynamoDB Session Handler is a custom session handler for PHP that allows Amazon DynamoDB to be used as a session store while still using PHP’s native session functions.

- -

What issues does this address?

-

The native PHP session handler stores sessions on the local file system. This is unreliable in distributed web applications, because the user may be routed to servers that do not contain the session data. To solve this problem, PHP developers have implemented custom solutions for storing user session data using databases, shared file systems, Memcache servers, tamper-proof cookies, etc., by taking advantage of the interface provided by PHP via the session_set_save_handler() function. Unfortunately, most of these solutions require a lot of configuration or prior knowledge about the storage mechanism in order to setup. Some of them also require the provisioning or management of additional servers.

- -

Proposed solution

-

The DynamoDB Session Handler uses Amazon DynamoDB as a session store, which alleviates many of the problems with existing solutions. There are no additional servers to manage, and there is very little configuration required. The Amazon DynamoDB is also fundamentally designed for low latency (the data is even stored on SSDs), so the performance impact is much smaller when compared to other databases. Since the Session Handler is designed to be a drop in replacement for the default PHP session handler, it also implements session locking in a familiar way.

- -

How do I use it?

-

The first step is to instantiate the Amazon DynamoDB client and register the session handler.

-
require_once 'AWSSDKforPHP/sdk.class.php';
-
-// Instantiate the Amazon DynamoDB client.
-// REMEMBER: You need to set 'default_cache_config' in your config.inc.php.
-$dynamodb = new AmazonDynamoDB();
-
-// Register the DynamoDB Session Handler.
-$handler = $dynamodb->register_session_handler(array(
-    'table_name' => 'my-sessions-table'
-));
-

Before you can use the session handler, you need to create a table to store the sessions in. This can be done through the AWS Console for Amazon DynamoDB, or using the session handler class (which you must configure with the table name like in the example above).

-
// Create a table for session storage with default settings.
-$handler->create_sessions_table();
-

If you create the table via the AWS Console, you need to make sure the primary key is a string. By default the DynamoDB Session Handler looks for a key named "id", so if you name the key something else, you will need to specify that when you configure the session handler (see the Configuration section below).

-

Once the session handler is registered with a valid table, you can write to (and read from) the session using the standard $_SESSION superglobal.

-
// Start the session. This will acquire a lock if session locking is enabled.
-session_start();
-
-// Alter the session data.
-$_SESSION['username'] = 'jeremy';
-$_SESSION['role'] = 'admin';
-
-// Close and write to the session.
-// REMEMBER: You should close the session ASAP to release the session lock.
-session_write_close();
- -

Removing expired sessions

-

The session handler ties into PHP's native session garbage collection functionality, so expired sessions will be deleted periodically and automatically based on how you configure PHP to do the garbage collection. See the PHP manual for the following PHP INI settings: session.gc_probability, session.gc_divisor, and session.gc_maxlifetime. You may also manually call the DynamoDBSessionHandler::garbage_collect() to clean up the expired sessions.

- -

Configuring the DynamoDB Session Handler

-

You may configure the behavior of the session handler using a the following settings:

-
-
table_name
-
The name of the DynamoDB table in which to store sessions.
- -
hash_key
-
The name of the primary hash key in the DynamoDB sessions table.
- -
session_lifetime
-
The lifetime of an inactive session before it should be garbage collected. If 0 is used, then the actual lifetime value that will be used is ini_get('session.gc_maxlifetime').
- -
consistent_reads
-
Whether or not the session handler should do consistent reads from DynamoDB.
- -
session_locking
-
Whether or not the session handler should do session locking (see the Session locking section for more information).
- -
max_lock_wait_time
-
Maximum time, in seconds, that the session handler should take to acquire a lock before giving up. Only used if session_locking is true.
- -
min_lock_retry_utime
-
Minimum time, in microseconds, that the session handler should wait to retry acquiring a lock. Only used if session_locking is true.
- -
max_lock_retry_utime
-
Maximum time, in microseconds, that the session handler should wait to retry acquiring a lock. Only used if session_locking is true.
-
- -

To configure the Session Handle, you must pass the configuration data into the constructor. (Note: The values used below are actually the default settings.)

-
$dynamodb = new AmazonDynamoDB();
-$handler = $dynamodb->register_session_handler(array(
-    'table_name'           => 'sessions',
-    'hash_key'             => 'id',
-    'session_lifetime'     => 0,
-    'consistent_reads'     => true,
-    'session_locking'      => true,
-    'max_lock_wait_time'   => 15,
-    'min_lock_retry_utime' => 5000,
-    'max_lock_retry_utime' => 50000,
-));
- -

Session locking

-

The default session handler for PHP locks sessions using a pessimistic locking algorithm. If a request (process) opens a session for reading using the session_start() function, it first acquires a lock. The lock is closed when that request writes back to the session, either when the request is complete, or via the session_write_close() function. Since the DynamoDB Session Handler is meant to be a drop in replacement for the default session handler, it also implements the same locking scheme. However, this can be slow, undesirable, and costly when multiple, simultaneous requests from the same user occur, particularly with ajax requests or HTML iframes. In some cases, you may not want or need the session to be locked. After evaluating whether or not your application actually requires session locking, you may turn off locking when you configure the session handler by setting session_locking to false.

- -

Pricing

-

Aside from nominal data storage and data transfer fees, the costs associated with using Amazon DynamoDB are calculated based on provisioned throughput capacity and item size (see the Amazon DynamoDB pricing details). Throughput is measured in units of Read Capacity and Write Capacity. Ultimately, the throughput and costs required for your sessions table is going to be based on your website traffic, but the following is a list of the capacity units required for each session-related operation:

-
    -
  • Reading via session_start() -

    With locking enabled: 1 unit of Write Capacity + 1 unit of Write Capacity for each time it must retry acquiring the lock

    -

    With locking disabed: 1 unit of Read Capacity (or 0.5 units of Read Capacity if consistent reads are disabled)

    -
  • -
  • Writing via session_write_close() -

    1 unit of Write Capacity

    -
  • -
  • Deleting via session_destroy() -

    1 unit of Write Capacity

    -
  • -
  • Garbage Collecting via DyanamoDBSessionHandler::garbage_collect() -

    0.5 units of Read Capacity per KB of data in the sessions table + 1 unit of Write Capacity per expired item

    -
  • -
- -

More information

-

For more information on the Amazon DynamoDB service please visit the Amazon DynamoDB homepage.

- - - diff --git a/3rdparty/aws-sdk/_docs/KNOWNISSUES.md b/3rdparty/aws-sdk/_docs/KNOWNISSUES.md deleted file mode 100644 index 9773c3932b8b618eebfa6afe506d62850c98d554..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/KNOWNISSUES.md +++ /dev/null @@ -1,65 +0,0 @@ -# Known Issues - -## 2GB limit for 32-bit stacks; all Windows stacks. - -Because PHP's integer type is signed and many platforms use 32-bit integers, the AWS SDK for PHP does not correctly -handle files larger than 2GB on a 32-bit stack (where "stack" includes CPU, OS, web server, and PHP binary). This is a -[well-known PHP issue]. In the case of Microsoft® Windows®, there are no official builds of PHP that support 64-bit -integers. - -The recommended solution is to use a 64-bit Linux stack, such as the [64-bit Amazon Linux AMI] with the latest version of -PHP installed. - -For more information, please see: [PHP filesize: Return values]. A workaround is suggested in -`AmazonS3::create_mpu_object()` [with files bigger than 2GB]. - - [well-known PHP issue]: http://www.google.com/search?q=php+2gb+32-bit - [64-bit Amazon Linux AMI]: http://aws.amazon.com/amazon-linux-ami/ - [PHP filesize: Return values]: http://docs.php.net/manual/en/function.filesize.php#refsect1-function.filesize-returnvalues - [with files bigger than 2GB]: https://forums.aws.amazon.com/thread.jspa?messageID=215487#215487 - - -## Amazon S3 Buckets containing periods - -Amazon S3's SSL certificate covers domains that match `*.s3.amazonaws.com`. When buckets (e.g., `my-bucket`) are accessed -using DNS-style addressing (e.g., `my-bucket.s3.amazonaws.com`), those SSL/HTTPS connections are covered by the certificate. - -However, when a bucket name contains one or more periods (e.g., `s3.my-domain.com`) and is accessed using DNS-style -addressing (e.g., `s3.my-domain.com.s3.amazonaws.com`), that SSL/HTTPS connection will fail because the certificate -doesn't match. - -The most secure workaround is to change the bucket name to one that does not contain periods. Less secure workarounds -are to use `disable_ssl()` or `disable_ssl_verification()`. Because of the security implications, calling either of -these methods will throw a warning. You can avoid the warning by adjusting your `error_reporting()` settings. - - -## Expiring request signatures - -When leveraging `AmazonS3::create_mpu_object()`, it's possible that later parts of the multipart upload will fail if -the upload takes more than 15 minutes. - - -## Too many open file connections - -When leveraging `AmazonS3::create_mpu_object()`, it's possible that the SDK will attempt to open too many file resources -at once. Because the file connection limit is not available to the PHP environment, the SDK is unable to automatically -adjust the number of connections it attempts to open. - -A workaround is to increase the part size so that fewer file connections are opened. - - -## Exceptionally large batch requests - -When leveraging the batch request feature to execute multiple requests in parallel, it's possible that the SDK will -throw a fatal exception if a particular batch pool is exceptionally large and a service gets overloaded with requests. - -This seems to be most common when attempting to send a large number of emails with the SES service. - - -## Long-running processes using SSL leak memory - -When making requests with the SDK over SSL during long-running processes, there will be a gradual memory leak that can -eventually cause a crash. The leak occurs within the PHP bindings for cURL when attempting to verify the peer during an -SSL handshake. See for details about the bug. - -A workaround is to disable SSL for requests executed in long-running processes. diff --git a/3rdparty/aws-sdk/_docs/LICENSE.md b/3rdparty/aws-sdk/_docs/LICENSE.md deleted file mode 100644 index 853ab3bae8e9ae0d118b911020db8f4aa08fd016..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/LICENSE.md +++ /dev/null @@ -1,151 +0,0 @@ -# Apache License -Version 2.0, January 2004 - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - -## 1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 -through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the -License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled -by, or are under common control with that entity. For the purposes of this definition, "control" means -(i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract -or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software -source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, -including but not limited to compiled object code, generated documentation, and conversions to other media -types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, -as indicated by a copyright notice that is included in or attached to the work (an example is provided in the -Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) -the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, -as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not -include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work -and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any -modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to -Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to -submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of -electronic, verbal, or written communication sent to the Licensor or its representatives, including but not -limited to communication on electronic mailing lists, source code control systems, and issue tracking systems -that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but -excluding communication that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been -received by Licensor and subsequently incorporated within the Work. - - -## 2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare -Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - - -## 3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent -license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such -license applies only to those patent claims licensable by such Contributor that are necessarily infringed by -their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such -Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim -or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work -constitutes direct or contributory patent infringement, then any patent licenses granted to You under this -License for that Work shall terminate as of the date such litigation is filed. - - -## 4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without -modifications, and in Source or Object form, provided that You meet the following conditions: - - 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and - - 2. You must cause any modified files to carry prominent notices stating that You changed the files; and - - 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, - trademark, and attribution notices from the Source form of the Work, excluding those notices that do - not pertain to any part of the Derivative Works; and - - 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that - You distribute must include a readable copy of the attribution notices contained within such NOTICE - file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed as part of the Derivative Works; within - the Source form or documentation, if provided along with the Derivative Works; or, within a display - generated by the Derivative Works, if and wherever such third-party notices normally appear. The - contents of the NOTICE file are for informational purposes only and do not modify the License. You may - add Your own attribution notices within Derivative Works that You distribute, alongside or as an - addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be - construed as modifying the License. - -You may add Your own copyright statement to Your modifications and may provide additional or different license -terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative -Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the -conditions stated in this License. - - -## 5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by -You to the Licensor shall be under the terms and conditions of this License, without any additional terms or -conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate -license agreement you may have executed with Licensor regarding such Contributions. - - -## 6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, service marks, or product names of -the Licensor, except as required for reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - - -## 7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor -provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express -or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, -MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - - -## 8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless -required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any -Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential -damages of any character arising as a result of this License or out of the use or inability to use the Work -(including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has been advised of the possibility -of such damages. - - -## 9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, -acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole -responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold -each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. - - -END OF TERMS AND CONDITIONS diff --git a/3rdparty/aws-sdk/_docs/NOTICE.md b/3rdparty/aws-sdk/_docs/NOTICE.md deleted file mode 100644 index 780c2e4c9d59e8fd45bc0f3f093a8034280a394e..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/NOTICE.md +++ /dev/null @@ -1,444 +0,0 @@ -# AWS SDK for PHP - -Based on [CloudFusion](http://getcloudfusion.com). Includes other third-party software. - -See below for complete copyright and licensing notices. - - -## AWS SDK for PHP - - - -Copyright 2010-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"). -You may not use this file except in compliance with the License. -A copy of the License is located at - - - -or in the "license" file accompanying this file. This file is distributed -on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -express or implied. See the License for the specific language governing -permissions and limitations under the License. - - -## CloudFusion - - - -* Copyright 2005-2010 [Ryan Parman](http://ryanparman.com) -* Copyright 2007-2010 [Foleeo Inc.](http://warpshare.com) -* Copyright 2007-2010 "CONTRIBUTORS" (see [CONTRIBUTORS.md](CONTRIBUTORS.md) for a list) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the organization nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, -OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - - - -## CacheCore - - - -* Copyright 2007-2010 [Ryan Parman](http://ryanparman.com) -* Copyright 2007-2010 [Foleeo Inc.](http://warpshare.com) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the organization nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, -OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - - - -## RequestCore - - - -* Copyright 2007-2010 [Ryan Parman](http://ryanparman.com) -* Copyright 2007-2010 [Foleeo Inc.](http://warpshare.com) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the organization nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, -OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - - - -## SimplePie - - - -* Copyright 2004-2010 [Ryan Parman](http://ryanparman.com) -* Copyright 2005-2010 [Geoffrey Sneddon](http://gsnedders.com) -* Copyright 2008-2011 [Ryan McCue](http://ryanmccue.info) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the organization nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, -OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - - - -## Reqwest - - - -* Copyright 2011 [Dustin Diaz](http://dustindiaz.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - - -## Human readable file sizes - - - -* Copyright 2004-2010 [Aidan Lister](http://aidanlister.com) -* Copyright 2007-2010 [Ryan Parman](http://ryanparman.com) - -Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. The name "PHP" must not be used to endorse or promote products - derived from this software without prior written permission. For - written permission, please contact group@php.net. - - 4. Products derived from this software may not be called "PHP", nor - may "PHP" appear in their name, without prior written permission - from group@php.net. You may indicate that your software works in - conjunction with PHP by saying "Foo for PHP" instead of calling - it "PHP Foo" or "phpfoo" - - 5. The PHP Group may publish revised and/or new versions of the - license from time to time. Each version will be given a - distinguishing version number. - Once covered code has been published under a particular version - of the license, you may always continue to use it under the terms - of that version. You may also choose to use such covered code - under the terms of any subsequent version of the license - published by the PHP Group. No one other than the PHP Group has - the right to modify the terms applicable to covered code created - under this License. - - 6. Redistributions of any form whatsoever must retain the following - acknowledgment: - "This product includes PHP software, freely available from - ". - -THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND -ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP -DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. - - - - -## Snippets from PHP.net documentation - -* `CFUtilities::is_base64()` - Copyright 2008 "debug" - -Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. The name "PHP" must not be used to endorse or promote products - derived from this software without prior written permission. For - written permission, please contact group@php.net. - - 4. Products derived from this software may not be called "PHP", nor - may "PHP" appear in their name, without prior written permission - from group@php.net. You may indicate that your software works in - conjunction with PHP by saying "Foo for PHP" instead of calling - it "PHP Foo" or "phpfoo" - - 5. The PHP Group may publish revised and/or new versions of the - license from time to time. Each version will be given a - distinguishing version number. - Once covered code has been published under a particular version - of the license, you may always continue to use it under the terms - of that version. You may also choose to use such covered code - under the terms of any subsequent version of the license - published by the PHP Group. No one other than the PHP Group has - the right to modify the terms applicable to covered code created - under this License. - - 6. Redistributions of any form whatsoever must retain the following - acknowledgment: - "This product includes PHP software, freely available from - ". - -THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND -ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP -DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. - - - - -## phunction PHP framework - - - -* Copyright 2010 [Alix Axel](mailto:alix-axel@users.sf.net) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - - -## Symfony YAML Component - - - -Copyright 2008-2009 [Fabien Potencier](http://fabien.potencier.org) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - - -## PEAR Console_ProgressBar - - - -Copyright 2003-2007 [Stefan Walk](http://pear.php.net/user/et) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - - -## Mozilla Certificate Authority - -* -* - -The contents of this file are subject to the Mozilla Public License Version -1.1 (the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at -http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the Netscape security libraries. - -The Initial Developer of the Original Code is Netscape Communications -Corporation. Portions created by the Initial Developer are Copyright -(C) 1994-2000 the Initial Developer. All Rights Reserved. - - - - -## array-to-domdocument - - - -* Copyright 2010-2011 [Omer Hassan](https://code.google.com/u/113495690012051782542/) -* Portions copyright 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - diff --git a/3rdparty/aws-sdk/_docs/STREAMWRAPPER_README.html b/3rdparty/aws-sdk/_docs/STREAMWRAPPER_README.html deleted file mode 100644 index 5d91068aa23a53efe2caa65dfe50915ad9a3c294..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/STREAMWRAPPER_README.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - README - - - -

S3 Stream Wrapper

-

The S3 Stream Wrapper is a stream wrapper interface for PHP that provides access to Amazon S3 using PHP’s standard File System API functions.

- -

What issues does this address?

-

There are a large number of existing applications, code snippets and other bits of PHP that are designed to read and write from the local file system as part of their normal operations. Many of these apps could benefit from moving into the cloud, but doing so would require rewriting a substantial amount of code.

-

What if we could simplify this process so that the updates required to make an existing application cloud-backed would be very minimal?

- -

Proposed solution

-

PHP provides an interface for solving this exact kind of problem, called the Stream Wrapper interface. By writing a class that implements this interface and registering it as a handler we can reduce both the amount of rewriting that needs to be done for existing applications, as well as substantially lower the learning curve for reading and writing from Amazon S3.

- -

How do I use it?

-

After including the AWS SDK for PHP in your project, use the AmazonS3::register_stream_wrapper() method to register s3:// as a supported stream wrapper for Amazon S3. It's that simple. Amazon S3 file patterns take the following form: s3://bucket/object.

- -
require_once 'AWSSDKforPHP/sdk.class.php';
-
-$s3 = new AmazonS3();
-$s3->register_stream_wrapper();
-
-$directory = 's3://my-new-bucket';
-$filename = $directory . '/put.txt';
-$contents = '';
-
-if (mkdir($directory))
-{
-    if (file_put_contents($filename, 'This is some sample data.'))
-    {
-        $handle = fopen($filename, 'rb+');
-        $contents = stream_get_contents($handle);
-        fclose($handle);
-    }
-
-    rmdir($directory);
-}
-
-echo $contents;
- -

You may also pass a different protocol name as a parameter to AmazonS3::register_stream_wrapper() if you want to use something besides s3://. Using this technique you can create more than one stream wrapper with different configurations (e.g. for different regions). To do that you just need to create separate instances of the AmazonS3 class, configure them, and then register a stream wrapper for each of them with different protocol names.

- -
require_once 'AWSSDKforPHP/sdk.class.php';
-
-$s3east = new AmazonS3();
-$s3east->set_region(AmazonS3::REGION_US_E1);
-$s3east->register_stream_wrapper('s3east');
-mkdir('s3east://my-easterly-bucket');
-
-$s3west = new AmazonS3();
-$s3west->set_region(AmazonS3::REGION_US_W1);
-$s3west->register_stream_wrapper('s3west');
-mkdir('s3west://my-westerly-bucket');
- -

Tests and usage examples

-

We are also including tests written in the PHPT format. Not only do these tests show how the software can be used, but any tests submitted back to us should be in this format. These tests will likely fail for you unless you change the bucket names to be globally unique across S3. You can run the tests with pear.

-
cd S3StreamWrapper/tests;
-pear run-tests;
-

If you have PHPUnit 3.6+ and Xdebug installed, you can generate a code coverage report as follows:

-
cd S3StreamWrapper/tests && \
-phpunit --colors --coverage-html ./_coverage_report . && \
-open ./_coverage_report/index.html;
- -

Notes and Known Issues

-
    -
  • stream_lock() and stream_cast() are not currently implemented, and likely won't be.

  • -
  • Strangely touch() doesn’t seem to work. I think this is because of an issue with my implementation of url_stat(), but I can’t find any information on the magical combination of parameters that will make this work.

  • -
  • Using fopen() will always open in rb+ mode. Amazon S3 as a service doesn’t support anything else.

  • -
  • Because of the way that PHP interacts with the StreamWrapper interface, it’s difficult to optimize for batch requests under the hood. If you need to push or pull data from several objects, you may find that using batch requests with the standard interface has better latency.

  • -
  • rmdir() does not do a force-delete, so you will need to iterate over the files to delete them one-by-one.

  • -
  • realpath(), glob(), chmod(), chown(), chgrp(), tempnam() and a few other functions don’t support the StreamWrapper interface at the PHP-level because they're designed to work with the (no/low-latency) local file system.

  • -
  • Support for ftruncate() does not exist in any current release of PHP, but is implemented on the PHP trunk for a future release. http://bugs.php.net/53888.

  • -
  • Since Amazon S3 doesn’t support appending data, it is best to avoid functions that expect or rely on that functionality (e.g. fputcsv()).

  • -
- -

Successfully tested with

- - -

Known issues with

- - -

A future version may provide S3-specific implementations of some of these functions (e.g., s3chmod(), s3glob(), s3touch()).

- - diff --git a/3rdparty/aws-sdk/_docs/WHERE_IS_THE_API_REFERENCE.md b/3rdparty/aws-sdk/_docs/WHERE_IS_THE_API_REFERENCE.md deleted file mode 100644 index 7ad235576b47d397578e9737eea3cee8fe9011d2..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/_docs/WHERE_IS_THE_API_REFERENCE.md +++ /dev/null @@ -1,2 +0,0 @@ -You can find the API Reference at: -http://docs.amazonwebservices.com/AWSSDKforPHP/latest/ diff --git a/3rdparty/aws-sdk/authentication/signable.interface.php b/3rdparty/aws-sdk/authentication/signable.interface.php deleted file mode 100644 index 5316d16a8156a47b2be2741df3517c0992e53fd0..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/authentication/signable.interface.php +++ /dev/null @@ -1,48 +0,0 @@ - class. - * - * @param string $endpoint (Required) The endpoint to direct the request to. - * @param string $operation (Required) The operation to execute as a result of this request. - * @param array $payload (Required) The options to use as part of the payload in the request. - * @param CFCredential $credentials (Required) The credentials to use for signing and making requests. - * @return void - */ - public function __construct($endpoint, $operation, $payload, CFCredential $credentials) - { - parent::__construct($endpoint, $operation, $payload, $credentials); - } - - /** - * Generates a cURL handle with all of the required authentication bits set. - * - * @return resource A cURL handle ready for executing. - */ - public function authenticate() - { - // Determine signing values - $current_time = time(); - $date = gmdate(CFUtilities::DATE_FORMAT_RFC2616, $current_time); - $timestamp = gmdate(CFUtilities::DATE_FORMAT_ISO8601, $current_time); - $query = array(); - - // Do we have an authentication token? - if ($this->auth_token) - { - $headers['X-Amz-Security-Token'] = $this->auth_token; - $query['SecurityToken'] = $this->auth_token; - } - - // Only add it if it exists. - if ($this->api_version) - { - $query['Version'] = $this->api_version; - } - - $query['Action'] = $this->operation; - $query['AWSAccessKeyId'] = $this->key; - $query['SignatureMethod'] = 'HmacSHA256'; - $query['SignatureVersion'] = 2; - $query['Timestamp'] = $timestamp; - - // Merge in any options that were passed in - if (is_array($this->payload)) - { - $query = array_merge($query, $this->payload); - } - - // Do a case-sensitive, natural order sort on the array keys. - uksort($query, 'strcmp'); - - // Create the string that needs to be hashed. - $canonical_query_string = $this->util->to_signable_string($query); - - // Remove the default scheme from the domain. - $domain = str_replace(array('http://', 'https://'), '', $this->endpoint); - - // Parse our request. - $parsed_url = parse_url('http://' . $domain); - - // Set the proper host header. - if (isset($parsed_url['port']) && (integer) $parsed_url['port'] !== 80 && (integer) $parsed_url['port'] !== 443) - { - $host_header = strtolower($parsed_url['host']) . ':' . $parsed_url['port']; - } - else - { - $host_header = strtolower($parsed_url['host']); - } - - // Set the proper request URI. - $request_uri = isset($parsed_url['path']) ? $parsed_url['path'] : '/'; - - // Prepare the string to sign - $this->string_to_sign = "POST\n$host_header\n$request_uri\n$canonical_query_string"; - - // Hash the AWS secret key and generate a signature for the request. - $query['Signature'] = base64_encode(hash_hmac('sha256', $this->string_to_sign, $this->secret_key, true)); - - // Generate the querystring from $query - $this->querystring = $this->util->to_query_string($query); - - // Gather information to pass along to other classes. - $helpers = array( - 'utilities' => $this->utilities_class, - 'request' => $this->request_class, - 'response' => $this->response_class, - ); - - // Compose the request. - $request_url = ($this->use_ssl ? 'https://' : 'http://') . $domain; - $request_url .= !isset($parsed_url['path']) ? '/' : ''; - - // Instantiate the request class - $request = new $this->request_class($request_url, $this->proxy, $helpers, $this->credentials); - $request->set_method('POST'); - $request->set_body($this->querystring); - $headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'; - - // Pass along registered stream callbacks - if ($this->registered_streaming_read_callback) - { - $request->register_streaming_read_callback($this->registered_streaming_read_callback); - } - - if ($this->registered_streaming_write_callback) - { - $request->register_streaming_write_callback($this->registered_streaming_write_callback); - } - - // Sort headers - uksort($headers, 'strnatcasecmp'); - - // Add headers to request and compute the string to sign - foreach ($headers as $header_key => $header_value) - { - // Strip linebreaks from header values as they're illegal and can allow for security issues - $header_value = str_replace(array("\r", "\n"), '', $header_value); - - // Add the header if it has a value - if ($header_value !== '') - { - $request->add_header($header_key, $header_value); - } - } - - return $request; - } -} diff --git a/3rdparty/aws-sdk/authentication/signature_v3json.class.php b/3rdparty/aws-sdk/authentication/signature_v3json.class.php deleted file mode 100644 index d07f554d1f74790ecd693a1e74e5fbde291bc2a7..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/authentication/signature_v3json.class.php +++ /dev/null @@ -1,235 +0,0 @@ - class. - * - * @param string $endpoint (Required) The endpoint to direct the request to. - * @param string $operation (Required) The operation to execute as a result of this request. - * @param array $payload (Required) The options to use as part of the payload in the request. - * @param CFCredential $credentials (Required) The credentials to use for signing and making requests. - * @return void - */ - public function __construct($endpoint, $operation, $payload, CFCredential $credentials) - { - parent::__construct($endpoint, $operation, $payload, $credentials); - } - - /** - * Generates a cURL handle with all of the required authentication bits set. - * - * @return resource A cURL handle ready for executing. - */ - public function authenticate() - { - // Determine signing values - $current_time = time(); - $date = gmdate(CFUtilities::DATE_FORMAT_RFC2616, $current_time); - $timestamp = gmdate(CFUtilities::DATE_FORMAT_ISO8601, $current_time); - $nonce = $this->util->generate_guid(); - $curlopts = array(); - $signed_headers = array(); - $return_curl_handle = false; - $x_amz_target = null; - $query = array('body' => $this->payload); - - // Do we have an authentication token? - if ($this->auth_token) - { - $headers['X-Amz-Security-Token'] = $this->auth_token; - $query['SecurityToken'] = $this->auth_token; - } - - // Manage the key-value pairs that are used in the query. - if (stripos($this->operation, 'x-amz-target') !== false) - { - $x_amz_target = trim(str_ireplace('x-amz-target:', '', $this->operation)); - } - else - { - $query['Action'] = $this->operation; - } - - // Only add it if it exists. - if ($this->api_version) - { - $query['Version'] = $this->api_version; - } - - $curlopts = array(); - - // Set custom CURLOPT settings - if (is_array($this->payload) && isset($this->payload['curlopts'])) - { - $curlopts = $this->payload['curlopts']; - unset($this->payload['curlopts']); - } - - // Merge in any options that were passed in - if (is_array($this->payload)) - { - $query = array_merge($query, $this->payload); - } - - $return_curl_handle = isset($query['returnCurlHandle']) ? $query['returnCurlHandle'] : false; - unset($query['returnCurlHandle']); - - // Do a case-sensitive, natural order sort on the array keys. - uksort($query, 'strcmp'); - - // Normalize JSON input - if (isset($query['body']) && $query['body'] === '[]') - { - $query['body'] = '{}'; - } - - // Create the string that needs to be hashed. - $canonical_query_string = $this->util->encode_signature2($query['body']); - - // Remove the default scheme from the domain. - $domain = str_replace(array('http://', 'https://'), '', $this->endpoint); - - // Parse our request. - $parsed_url = parse_url('http://' . $domain); - - // Set the proper host header. - if (isset($parsed_url['port']) && (integer) $parsed_url['port'] !== 80 && (integer) $parsed_url['port'] !== 443) - { - $host_header = strtolower($parsed_url['host']) . ':' . $parsed_url['port']; - } - else - { - $host_header = strtolower($parsed_url['host']); - } - - // Set the proper request URI. - $request_uri = isset($parsed_url['path']) ? $parsed_url['path'] : '/'; - - // Generate the querystring from $query - $this->querystring = $this->util->to_query_string($query); - - // Gather information to pass along to other classes. - $helpers = array( - 'utilities' => $this->utilities_class, - 'request' => $this->request_class, - 'response' => $this->response_class, - ); - - // Compose the request. - $request_url = ($this->use_ssl ? 'https://' : 'http://') . $domain; - $request_url .= !isset($parsed_url['path']) ? '/' : ''; - - // Instantiate the request class - $request = new $this->request_class($request_url, $this->proxy, $helpers, $this->credentials); - $request->set_method('POST'); - //$request->set_body($this->querystring); - //$headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'; - - // Signing using X-Amz-Target is handled differently. - $headers['X-Amz-Target'] = $x_amz_target; - $headers['Content-Type'] = 'application/x-amz-json-1.0'; - $request->set_body($query['body']); - $this->querystring = $query['body']; - - // Pass along registered stream callbacks - if ($this->registered_streaming_read_callback) - { - $request->register_streaming_read_callback($this->registered_streaming_read_callback); - } - - if ($this->registered_streaming_write_callback) - { - $request->register_streaming_write_callback($this->registered_streaming_write_callback); - } - - // Add authentication headers - // $headers['X-Amz-Nonce'] = $nonce; - $headers['Date'] = $date; - $headers['Content-Length'] = strlen($this->querystring); - $headers['Content-MD5'] = $this->util->hex_to_base64(md5($this->querystring)); - $headers['Host'] = $host_header; - - // Sort headers - uksort($headers, 'strnatcasecmp'); - - // Prepare the string to sign (HTTP) - $this->string_to_sign = "POST\n$request_uri\n\n"; - - // Add headers to request and compute the string to sign - foreach ($headers as $header_key => $header_value) - { - // Strip linebreaks from header values as they're illegal and can allow for security issues - $header_value = str_replace(array("\r", "\n"), '', $header_value); - - // Add the header if it has a value - if ($header_value !== '') - { - $request->add_header($header_key, $header_value); - } - - // Generate the string to sign - if ( - substr(strtolower($header_key), 0, 8) === 'content-' || - strtolower($header_key) === 'date' || - strtolower($header_key) === 'expires' || - strtolower($header_key) === 'host' || - substr(strtolower($header_key), 0, 6) === 'x-amz-' - ) - { - $this->string_to_sign .= strtolower($header_key) . ':' . $header_value . "\n"; - $signed_headers[] = $header_key; - } - } - - $this->string_to_sign .= "\n"; - - if (isset($query['body']) && $query['body'] !== '') - { - $this->string_to_sign .= $query['body']; - } - - // Convert from string-to-sign to bytes-to-sign - $bytes_to_sign = hash('sha256', $this->string_to_sign, true); - - // Hash the AWS secret key and generate a signature for the request. - $signature = base64_encode(hash_hmac('sha256', $bytes_to_sign, $this->secret_key, true)); - - $headers['X-Amzn-Authorization'] = 'AWS3' - . ' AWSAccessKeyId=' . $this->key - . ',Algorithm=HmacSHA256' - . ',SignedHeaders=' . implode(';', $signed_headers) - . ',Signature=' . $signature; - - $request->add_header('X-Amzn-Authorization', $headers['X-Amzn-Authorization']); - $request->request_headers = $headers; - - return $request; - } -} diff --git a/3rdparty/aws-sdk/authentication/signature_v3query.class.php b/3rdparty/aws-sdk/authentication/signature_v3query.class.php deleted file mode 100644 index 04565f928ed73fee1c93ee3aa5bf580da542aeb4..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/authentication/signature_v3query.class.php +++ /dev/null @@ -1,192 +0,0 @@ - class. - * - * @param string $endpoint (Required) The endpoint to direct the request to. - * @param string $operation (Required) The operation to execute as a result of this request. - * @param array $payload (Required) The options to use as part of the payload in the request. - * @param CFCredential $credentials (Required) The credentials to use for signing and making requests. - * @return void - */ - public function __construct($endpoint, $operation, $payload, CFCredential $credentials) - { - parent::__construct($endpoint, $operation, $payload, $credentials); - } - - /** - * Generates a cURL handle with all of the required authentication bits set. - * - * @return resource A cURL handle ready for executing. - */ - public function authenticate() - { - // Determine signing values - $current_time = time(); - $date = gmdate(CFUtilities::DATE_FORMAT_RFC2616, $current_time); - $timestamp = gmdate(CFUtilities::DATE_FORMAT_ISO8601, $current_time); - $nonce = $this->util->generate_guid(); - $curlopts = array(); - $signed_headers = array(); - - // Do we have an authentication token? - if ($this->auth_token) - { - $headers['X-Amz-Security-Token'] = $this->auth_token; - $query['SecurityToken'] = $this->auth_token; - } - - $query['Action'] = $this->operation; - $query['Version'] = $this->api_version; - - // Set custom CURLOPT settings - if (is_array($this->payload) && isset($this->payload['curlopts'])) - { - $curlopts = $this->payload['curlopts']; - unset($this->payload['curlopts']); - } - - // Merge in any options that were passed in - if (is_array($this->payload)) - { - $query = array_merge($query, $this->payload); - } - - $return_curl_handle = isset($query['returnCurlHandle']) ? $query['returnCurlHandle'] : false; - unset($query['returnCurlHandle']); - - // Do a case-sensitive, natural order sort on the array keys. - uksort($query, 'strcmp'); - $canonical_query_string = $this->util->to_signable_string($query); - - // Remove the default scheme from the domain. - $domain = str_replace(array('http://', 'https://'), '', $this->endpoint); - - // Parse our request. - $parsed_url = parse_url('http://' . $domain); - - // Set the proper host header. - if (isset($parsed_url['port']) && (integer) $parsed_url['port'] !== 80 && (integer) $parsed_url['port'] !== 443) - { - $host_header = strtolower($parsed_url['host']) . ':' . $parsed_url['port']; - } - else - { - $host_header = strtolower($parsed_url['host']); - } - - // Set the proper request URI. - $request_uri = isset($parsed_url['path']) ? $parsed_url['path'] : '/'; - - // Generate the querystring from $query - $this->querystring = $this->util->to_query_string($query); - - // Gather information to pass along to other classes. - $helpers = array( - 'utilities' => $this->utilities_class, - 'request' => $this->request_class, - 'response' => $this->response_class, - ); - - // Compose the request. - $request_url = ($this->use_ssl ? 'https://' : 'http://') . $domain; - $request_url .= !isset($parsed_url['path']) ? '/' : ''; - - // Instantiate the request class - $request = new $this->request_class($request_url, $this->proxy, $helpers, $this->credentials); - $request->set_method('POST'); - $request->set_body($this->querystring); - $headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'; - - // Pass along registered stream callbacks - if ($this->registered_streaming_read_callback) - { - $request->register_streaming_read_callback($this->registered_streaming_read_callback); - } - - if ($this->registered_streaming_write_callback) - { - $request->register_streaming_write_callback($this->registered_streaming_write_callback); - } - - // Add authentication headers - $headers['X-Amz-Nonce'] = $nonce; - $headers['Date'] = $date; - $headers['Content-Length'] = strlen($this->querystring); - $headers['Content-MD5'] = $this->util->hex_to_base64(md5($this->querystring)); - $headers['Host'] = $host_header; - - // Sort headers - uksort($headers, 'strnatcasecmp'); - - // Prepare the string to sign (HTTPS) - $this->string_to_sign = $date . $nonce; - - // Add headers to request and compute the string to sign - foreach ($headers as $header_key => $header_value) - { - // Strip linebreaks from header values as they're illegal and can allow for security issues - $header_value = str_replace(array("\r", "\n"), '', $header_value); - - // Add the header if it has a value - if ($header_value !== '') - { - $request->add_header($header_key, $header_value); - } - - // Generate the string to sign - if ( - substr(strtolower($header_key), 0, 8) === 'content-' || - strtolower($header_key) === 'date' || - strtolower($header_key) === 'expires' || - strtolower($header_key) === 'host' || - substr(strtolower($header_key), 0, 6) === 'x-amz-' - ) - { - $signed_headers[] = $header_key; - } - } - - // Hash the AWS secret key and generate a signature for the request. - $signature = base64_encode(hash_hmac('sha256', $this->string_to_sign, $this->secret_key, true)); - - $headers['X-Amzn-Authorization'] = 'AWS3-HTTPS' - . ' AWSAccessKeyId=' . $this->key - . ',Algorithm=HmacSHA256' - . ',SignedHeaders=' . implode(';', $signed_headers) - . ',Signature=' . $signature; - - $request->add_header('X-Amzn-Authorization', $headers['X-Amzn-Authorization']); - $request->request_headers = $headers; - - return $request; - } -} diff --git a/3rdparty/aws-sdk/authentication/signature_v4json.class.php b/3rdparty/aws-sdk/authentication/signature_v4json.class.php deleted file mode 100644 index d3ab07ad8bf403183884a19f82a0f080810b9d3c..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/authentication/signature_v4json.class.php +++ /dev/null @@ -1,353 +0,0 @@ - class. - * - * @param string $endpoint (Required) The endpoint to direct the request to. - * @param string $operation (Required) The operation to execute as a result of this request. - * @param array $payload (Required) The options to use as part of the payload in the request. - * @param CFCredential $credentials (Required) The credentials to use for signing and making requests. - * @return void - */ - public function __construct($endpoint, $operation, $payload, CFCredential $credentials) - { - parent::__construct($endpoint, $operation, $payload, $credentials); - } - - /** - * Generates a cURL handle with all of the required authentication bits set. - * - * @return resource A cURL handle ready for executing. - */ - public function authenticate() - { - // Determine signing values - $current_time = time(); - $timestamp = gmdate(CFUtilities::DATE_FORMAT_SIGV4, $current_time); - - // Initialize - $x_amz_target = null; - - $this->headers = array(); - $this->signed_headers = array(); - $this->canonical_headers = array(); - $this->query = array(); - - // Prepare JSON structure - $decoded = json_decode($this->payload, true); - $data = (array) (is_array($decoded) ? $decoded : $this->payload); - unset($data['curlopts']); - unset($data['returnCurlHandle']); - $this->body = json_encode($data); - if ($this->body === '' || $this->body === '[]') - { - $this->body = '{}'; - } - - // Do we have an authentication token? - if ($this->auth_token) - { - $this->headers['X-Amz-Security-Token'] = $this->auth_token; - $this->query['SecurityToken'] = $this->auth_token; - } - - // Manage the key-value pairs that are used in the query. - if (stripos($this->operation, 'x-amz-target') !== false) - { - $x_amz_target = trim(str_ireplace('x-amz-target:', '', $this->operation)); - } - else - { - $this->query['Action'] = $this->operation; - } - - // Only add it if it exists. - if ($this->api_version) - { - $this->query['Version'] = $this->api_version; - } - - // Do a case-sensitive, natural order sort on the array keys. - uksort($this->query, 'strcmp'); - - // Remove the default scheme from the domain. - $domain = str_replace(array('http://', 'https://'), '', $this->endpoint); - - // Parse our request. - $parsed_url = parse_url('http://' . $domain); - - // Set the proper host header. - if (isset($parsed_url['port']) && (integer) $parsed_url['port'] !== 80 && (integer) $parsed_url['port'] !== 443) - { - $host_header = strtolower($parsed_url['host']) . ':' . $parsed_url['port']; - } - else - { - $host_header = strtolower($parsed_url['host']); - } - - // Generate the querystring from $this->query - $this->querystring = $this->util->to_query_string($this->query); - - // Gather information to pass along to other classes. - $helpers = array( - 'utilities' => $this->utilities_class, - 'request' => $this->request_class, - 'response' => $this->response_class, - ); - - // Compose the request. - $request_url = ($this->use_ssl ? 'https://' : 'http://') . $domain; - $request_url .= !isset($parsed_url['path']) ? '/' : ''; - - // Instantiate the request class - $request = new $this->request_class($request_url, $this->proxy, $helpers, $this->credentials); - $request->set_method('POST'); - $request->set_body($this->body); - $this->querystring = $this->body; - $this->headers['Content-Type'] = 'application/x-amz-json-1.1'; - $this->headers['X-Amz-Target'] = $x_amz_target; - - // Pass along registered stream callbacks - if ($this->registered_streaming_read_callback) - { - $request->register_streaming_read_callback($this->registered_streaming_read_callback); - } - - if ($this->registered_streaming_write_callback) - { - $request->register_streaming_write_callback($this->registered_streaming_write_callback); - } - - // Add authentication headers - $this->headers['X-Amz-Date'] = $timestamp; - $this->headers['Content-Length'] = strlen($this->querystring); - $this->headers['Host'] = $host_header; - - // Sort headers - uksort($this->headers, 'strnatcasecmp'); - - // Add headers to request and compute the string to sign - foreach ($this->headers as $header_key => $header_value) - { - // Strip linebreaks from header values as they're illegal and can allow for security issues - $header_value = str_replace(array("\r", "\n"), '', $header_value); - - $request->add_header($header_key, $header_value); - $this->canonical_headers[] = strtolower($header_key) . ':' . $header_value; - - $this->signed_headers[] = strtolower($header_key); - } - - $this->headers['Authorization'] = $this->authorization($timestamp); - $request->add_header('Authorization', $this->headers['Authorization']); - $request->request_headers = $this->headers; - - return $request; - } - - /** - * Generates the authorization string to use for the request. - * - * @param string $datetime (Required) The current timestamp. - * @return string The authorization string. - */ - protected function authorization($datetime) - { - $access_key_id = $this->key; - - $parts = array(); - $parts[] = "AWS4-HMAC-SHA256 Credential=${access_key_id}/" . $this->credential_string($datetime); - $parts[] = 'SignedHeaders=' . implode(';', $this->signed_headers); - $parts[] = 'Signature=' . $this->hex16($this->signature($datetime)); - - return implode(',', $parts); - } - - /** - * Calculate the signature. - * - * @param string $datetime (Required) The current timestamp. - * @return string The signature. - */ - protected function signature($datetime) - { - $k_date = $this->hmac('AWS4' . $this->secret_key, substr($datetime, 0, 8)); - $k_region = $this->hmac($k_date, $this->region()); - $k_service = $this->hmac($k_region, $this->service()); - $k_credentials = $this->hmac($k_service, 'aws4_request'); - $signature = $this->hmac($k_credentials, $this->string_to_sign($datetime)); - - return $signature; - } - - /** - * Calculate the string to sign. - * - * @param string $datetime (Required) The current timestamp. - * @return string The string to sign. - */ - protected function string_to_sign($datetime) - { - $parts = array(); - $parts[] = 'AWS4-HMAC-SHA256'; - $parts[] = $datetime; - $parts[] = $this->credential_string($datetime); - $parts[] = $this->hex16($this->hash($this->canonical_request())); - - $this->string_to_sign = implode("\n", $parts); - - return $this->string_to_sign; - } - - /** - * Generates the credential string to use for signing. - * - * @param string $datetime (Required) The current timestamp. - * @return string The credential string. - */ - protected function credential_string($datetime) - { - $parts = array(); - $parts[] = substr($datetime, 0, 8); - $parts[] = $this->region(); - $parts[] = $this->service(); - $parts[] = 'aws4_request'; - - return implode('/', $parts); - } - - /** - * Calculate the canonical request. - * - * @return string The canonical request. - */ - protected function canonical_request() - { - $parts = array(); - $parts[] = 'POST'; - $parts[] = $this->canonical_uri(); - $parts[] = ''; // $parts[] = $this->canonical_querystring(); - $parts[] = implode("\n", $this->canonical_headers) . "\n"; - $parts[] = implode(';', $this->signed_headers); - $parts[] = $this->hex16($this->hash($this->body)); - - $this->canonical_request = implode("\n", $parts); - - return $this->canonical_request; - } - - /** - * The region ID to use in the signature. - * - * @return return The region ID. - */ - protected function region() - { - $pieces = explode('.', $this->endpoint); - - // Handle cases with single/no region (i.e. service.region.amazonaws.com vs. service.amazonaws.com) - if (count($pieces < 4)) - { - return 'us-east-1'; - } - - return $pieces[1]; - } - - /** - * The service ID to use in the signature. - * - * @return return The service ID. - */ - protected function service() - { - $pieces = explode('.', $this->endpoint); - return $pieces[0]; - } - - /** - * The request URI path. - * - * @return string The request URI path. - */ - protected function canonical_uri() - { - return '/'; - } - - /** - * The canonical query string. - * - * @return string The canonical query string. - */ - protected function canonical_querystring() - { - if (!isset($this->canonical_querystring)) - { - $this->canonical_querystring = $this->util->to_signable_string($this->query); - } - - return $this->canonical_querystring; - } - - /** - * Hex16-pack the data. - * - * @param string $value (Required) The data to hex16 pack. - * @return string The hex16-packed data. - */ - protected function hex16($value) - { - $result = unpack('H*', $value); - return reset($result); - } - - /** - * Applies HMAC SHA-256 encryption to the string, salted by the key. - * - * @return string Raw HMAC SHA-256 hashed string. - */ - protected function hmac($key, $string) - { - return hash_hmac('sha256', $string, $key, true); - } - - /** - * SHA-256 hashes the string. - * - * @return string Raw SHA-256 hashed string. - */ - protected function hash($string) - { - return hash('sha256', $string, true); - } -} diff --git a/3rdparty/aws-sdk/authentication/signature_v4query.class.php b/3rdparty/aws-sdk/authentication/signature_v4query.class.php deleted file mode 100644 index bd5a3fbf5b577fca62c75be50b7450e914ca7cd1..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/authentication/signature_v4query.class.php +++ /dev/null @@ -1,345 +0,0 @@ - class. - * - * @param string $endpoint (Required) The endpoint to direct the request to. - * @param string $operation (Required) The operation to execute as a result of this request. - * @param array $payload (Required) The options to use as part of the payload in the request. - * @param CFCredential $credentials (Required) The credentials to use for signing and making requests. - * @return void - */ - public function __construct($endpoint, $operation, $payload, CFCredential $credentials) - { - parent::__construct($endpoint, $operation, $payload, $credentials); - } - - /** - * Generates a cURL handle with all of the required authentication bits set. - * - * @return resource A cURL handle ready for executing. - */ - public function authenticate() - { - // Determine signing values - $current_time = time(); - $timestamp = gmdate(CFUtilities::DATE_FORMAT_SIGV4, $current_time); - - // Initialize - $x_amz_target = null; - - $this->headers = array(); - $this->signed_headers = array(); - $this->canonical_headers = array(); - $this->query = array('body' => is_array($this->payload) ? $this->payload : array()); - - // Do we have an authentication token? - if ($this->auth_token) - { - $this->headers['X-Amz-Security-Token'] = $this->auth_token; - $this->query['body']['SecurityToken'] = $this->auth_token; - } - - // Manage the key-value pairs that are used in the query. - if (stripos($this->operation, 'x-amz-target') !== false) - { - $x_amz_target = trim(str_ireplace('x-amz-target:', '', $this->operation)); - } - else - { - $this->query['body']['Action'] = $this->operation; - } - - // Only add it if it exists. - if ($this->api_version) - { - $this->query['body']['Version'] = $this->api_version; - } - - // Do a case-sensitive, natural order sort on the array keys. - uksort($this->query['body'], 'strcmp'); - - // Remove the default scheme from the domain. - $domain = str_replace(array('http://', 'https://'), '', $this->endpoint); - - // Parse our request. - $parsed_url = parse_url('http://' . $domain); - - // Set the proper host header. - if (isset($parsed_url['port']) && (integer) $parsed_url['port'] !== 80 && (integer) $parsed_url['port'] !== 443) - { - $host_header = strtolower($parsed_url['host']) . ':' . $parsed_url['port']; - } - else - { - $host_header = strtolower($parsed_url['host']); - } - - // Generate the querystring from $this->query - $this->querystring = $this->util->to_query_string($this->query); - - // Gather information to pass along to other classes. - $helpers = array( - 'utilities' => $this->utilities_class, - 'request' => $this->request_class, - 'response' => $this->response_class, - ); - - // Compose the request. - $request_url = ($this->use_ssl ? 'https://' : 'http://') . $domain; - $request_url .= !isset($parsed_url['path']) ? '/' : ''; - - // Instantiate the request class - $request = new $this->request_class($request_url, $this->proxy, $helpers, $this->credentials); - $request->set_method('POST'); - $request->set_body($this->canonical_querystring()); - $this->querystring = $this->canonical_querystring(); - - $this->headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'; - $this->headers['X-Amz-Target'] = $x_amz_target; - - // Pass along registered stream callbacks - if ($this->registered_streaming_read_callback) - { - $request->register_streaming_read_callback($this->registered_streaming_read_callback); - } - - if ($this->registered_streaming_write_callback) - { - $request->register_streaming_write_callback($this->registered_streaming_write_callback); - } - - // Add authentication headers - $this->headers['X-Amz-Date'] = $timestamp; - $this->headers['Content-Length'] = strlen($this->querystring); - $this->headers['Content-MD5'] = $this->util->hex_to_base64(md5($this->querystring)); - $this->headers['Host'] = $host_header; - - // Sort headers - uksort($this->headers, 'strnatcasecmp'); - - // Add headers to request and compute the string to sign - foreach ($this->headers as $header_key => $header_value) - { - // Strip linebreaks from header values as they're illegal and can allow for security issues - $header_value = str_replace(array("\r", "\n"), '', $header_value); - - $request->add_header($header_key, $header_value); - $this->canonical_headers[] = strtolower($header_key) . ':' . $header_value; - - $this->signed_headers[] = strtolower($header_key); - } - - $this->headers['Authorization'] = $this->authorization($timestamp); - - $request->add_header('Authorization', $this->headers['Authorization']); - $request->request_headers = $this->headers; - - return $request; - } - - /** - * Generates the authorization string to use for the request. - * - * @param string $datetime (Required) The current timestamp. - * @return string The authorization string. - */ - protected function authorization($datetime) - { - $access_key_id = $this->key; - - $parts = array(); - $parts[] = "AWS4-HMAC-SHA256 Credential=${access_key_id}/" . $this->credential_string($datetime); - $parts[] = 'SignedHeaders=' . implode(';', $this->signed_headers); - $parts[] = 'Signature=' . $this->hex16($this->signature($datetime)); - - return implode(',', $parts); - } - - /** - * Calculate the signature. - * - * @param string $datetime (Required) The current timestamp. - * @return string The signature. - */ - protected function signature($datetime) - { - $k_date = $this->hmac('AWS4' . $this->secret_key, substr($datetime, 0, 8)); - $k_region = $this->hmac($k_date, $this->region()); - $k_service = $this->hmac($k_region, $this->service()); - $k_credentials = $this->hmac($k_service, 'aws4_request'); - $signature = $this->hmac($k_credentials, $this->string_to_sign($datetime)); - - return $signature; - } - - /** - * Calculate the string to sign. - * - * @param string $datetime (Required) The current timestamp. - * @return string The string to sign. - */ - protected function string_to_sign($datetime) - { - $parts = array(); - $parts[] = 'AWS4-HMAC-SHA256'; - $parts[] = $datetime; - $parts[] = $this->credential_string($datetime); - $parts[] = $this->hex16($this->hash($this->canonical_request())); - - $this->string_to_sign = implode("\n", $parts); - - return $this->string_to_sign; - } - - /** - * Generates the credential string to use for signing. - * - * @param string $datetime (Required) The current timestamp. - * @return string The credential string. - */ - protected function credential_string($datetime) - { - $parts = array(); - $parts[] = substr($datetime, 0, 8); - $parts[] = $this->region(); - $parts[] = $this->service(); - $parts[] = 'aws4_request'; - - return implode('/', $parts); - } - - /** - * Calculate the canonical request. - * - * @return string The canonical request. - */ - protected function canonical_request() - { - $parts = array(); - $parts[] = 'POST'; - $parts[] = $this->canonical_uri(); - $parts[] = ''; // $parts[] = $this->canonical_querystring(); - $parts[] = implode("\n", $this->canonical_headers) . "\n"; - $parts[] = implode(';', $this->signed_headers); - $parts[] = $this->hex16($this->hash($this->canonical_querystring())); - - $this->canonical_request = implode("\n", $parts); - - return $this->canonical_request; - } - - /** - * The region ID to use in the signature. - * - * @return return The region ID. - */ - protected function region() - { - $pieces = explode('.', $this->endpoint); - - // Handle cases with single/no region (i.e. service.region.amazonaws.com vs. service.amazonaws.com) - if (count($pieces < 4)) - { - return 'us-east-1'; - } - - return $pieces[1]; - } - - /** - * The service ID to use in the signature. - * - * @return return The service ID. - */ - protected function service() - { - $pieces = explode('.', $this->endpoint); - return ($pieces[0] === 'email') ? 'ses' : $pieces[0]; - } - - /** - * The request URI path. - * - * @return string The request URI path. - */ - protected function canonical_uri() - { - return '/'; - } - - /** - * The canonical query string. - * - * @return string The canonical query string. - */ - protected function canonical_querystring() - { - if (!isset($this->canonical_querystring)) - { - $this->canonical_querystring = $this->util->to_signable_string($this->query['body']); - } - - return $this->canonical_querystring; - } - - /** - * Hex16-pack the data. - * - * @param string $value (Required) The data to hex16 pack. - * @return string The hex16-packed data. - */ - protected function hex16($value) - { - $result = unpack('H*', $value); - return reset($result); - } - - /** - * Applies HMAC SHA-256 encryption to the string, salted by the key. - * - * @return string Raw HMAC SHA-256 hashed string. - */ - protected function hmac($key, $string) - { - return hash_hmac('sha256', $string, $key, true); - } - - /** - * SHA-256 hashes the string. - * - * @return string Raw SHA-256 hashed string. - */ - protected function hash($string) - { - return hash('sha256', $string, true); - } -} diff --git a/3rdparty/aws-sdk/authentication/signer.abstract.php b/3rdparty/aws-sdk/authentication/signer.abstract.php deleted file mode 100644 index f6bf7912f7bd54ce01e5cfd322dd8a81e4b492ca..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/authentication/signer.abstract.php +++ /dev/null @@ -1,68 +0,0 @@ -endpoint = $endpoint; - $this->operation = $operation; - $this->payload = $payload; - $this->credentials = $credentials; - } -} diff --git a/3rdparty/aws-sdk/lib/cachecore/LICENSE b/3rdparty/aws-sdk/lib/cachecore/LICENSE deleted file mode 100755 index 49b38bd620ac6d804660351a60b6e37e80a691ac..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2006-2010 Ryan Parman, Foleeo Inc., and contributors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. - - * Neither the name of Ryan Parman, Foleeo Inc. nor the names of its contributors may be used to - endorse or promote products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS -AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/3rdparty/aws-sdk/lib/cachecore/README b/3rdparty/aws-sdk/lib/cachecore/README deleted file mode 100755 index 07e00267cbb850f01b82b8737d7526deadf5cef9..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/README +++ /dev/null @@ -1 +0,0 @@ -A simple caching system for PHP5 that provides a single interface for a variety of storage types. diff --git a/3rdparty/aws-sdk/lib/cachecore/_sql/README b/3rdparty/aws-sdk/lib/cachecore/_sql/README deleted file mode 100755 index e25d53d1208c725d433f444dfd584ada1ec154a6..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/_sql/README +++ /dev/null @@ -1,5 +0,0 @@ -The .sql files in this directory contain the code to create the tables for database caching. - -If you're not using database caching, you can safely ignore these. - -If you ARE using database caching, simply load the correct *.sql file into your database to set up the required tables. diff --git a/3rdparty/aws-sdk/lib/cachecore/_sql/mysql.sql b/3rdparty/aws-sdk/lib/cachecore/_sql/mysql.sql deleted file mode 100755 index 2efee3a732f95f2b9e259058d3894b4b123d42a7..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/_sql/mysql.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE `cache` ( - `id` char(40) NOT NULL default '', - `expires` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, - `data` longtext, - PRIMARY KEY (`id`), - UNIQUE KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 \ No newline at end of file diff --git a/3rdparty/aws-sdk/lib/cachecore/_sql/pgsql.sql b/3rdparty/aws-sdk/lib/cachecore/_sql/pgsql.sql deleted file mode 100755 index f2bdd86a528899c6c9772be56e6a20d39ff920e1..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/_sql/pgsql.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE "cache" ( - expires timestamp without time zone NOT NULL, - id character(40) NOT NULL, - data text NOT NULL -) -WITH (OIDS=TRUE); \ No newline at end of file diff --git a/3rdparty/aws-sdk/lib/cachecore/_sql/sqlite3.sql b/3rdparty/aws-sdk/lib/cachecore/_sql/sqlite3.sql deleted file mode 100755 index 590f45e4ff1c328fc1e5ab2ecd800688dc077175..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/_sql/sqlite3.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE TABLE cache (id TEXT, expires NUMERIC, data BLOB); -CREATE UNIQUE INDEX idx ON cache(id ASC); \ No newline at end of file diff --git a/3rdparty/aws-sdk/lib/cachecore/cacheapc.class.php b/3rdparty/aws-sdk/lib/cachecore/cacheapc.class.php deleted file mode 100755 index 59f5e88f397c0af8657477a34d0736f70ce0ea9e..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/cacheapc.class.php +++ /dev/null @@ -1,126 +0,0 @@ -. Adheres - * to the ICacheCore interface. - * - * @version 2012.04.17 - * @copyright 2006-2012 Ryan Parman - * @copyright 2006-2010 Foleeo, Inc. - * @copyright 2012 Amazon.com, Inc. or its affiliates. - * @copyright 2008-2010 Contributors - * @license http://opensource.org/licenses/bsd-license.php Simplified BSD License - * @link http://github.com/skyzyx/cachecore CacheCore - * @link http://getcloudfusion.com CloudFusion - * @link http://php.net/apc APC - */ -class CacheAPC extends CacheCore implements ICacheCore -{ - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of this class. - * - * @param string $name (Required) A name to uniquely identify the cache object. - * @param string $location (Optional) The location to store the cache object in. This may vary by cache method. The default value is NULL. - * @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0. - * @param boolean $gzip (Optional) Whether data should be gzipped before being stored. The default value is true. - * @return object Reference to the cache object. - */ - public function __construct($name, $location = null, $expires = 0, $gzip = true) - { - parent::__construct($name, null, $expires, $gzip); - $this->id = $this->name; - } - - /** - * Creates a new cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function create($data) - { - $data = serialize($data); - $data = $this->gzip ? gzcompress($data) : $data; - - return apc_add($this->id, $data, $this->expires); - } - - /** - * Reads a cache. - * - * @return mixed Either the content of the cache object, or boolean `false`. - */ - public function read() - { - if ($data = apc_fetch($this->id)) - { - $data = $this->gzip ? gzuncompress($data) : $data; - return unserialize($data); - } - - return false; - } - - /** - * Updates an existing cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function update($data) - { - $data = serialize($data); - $data = $this->gzip ? gzcompress($data) : $data; - - return apc_store($this->id, $data, $this->expires); - } - - /** - * Deletes a cache. - * - * @return boolean Whether the operation was successful. - */ - public function delete() - { - return apc_delete($this->id); - } - - /** - * Implemented here, but always returns `false`. APC manages its own expirations. - * - * @return boolean Whether the cache is expired or not. - */ - public function is_expired() - { - return false; - } - - /** - * Implemented here, but always returns `false`. APC manages its own expirations. - * - * @return mixed Either the Unix time stamp of the cache creation, or boolean `false`. - */ - public function timestamp() - { - return false; - } - - /** - * Implemented here, but always returns `false`. APC manages its own expirations. - * - * @return boolean Whether the operation was successful. - */ - public function reset() - { - return false; - } -} - - -/*%******************************************************************************************%*/ -// EXCEPTIONS - -class CacheAPC_Exception extends CacheCore_Exception {} diff --git a/3rdparty/aws-sdk/lib/cachecore/cachecore.class.php b/3rdparty/aws-sdk/lib/cachecore/cachecore.class.php deleted file mode 100755 index 1670d31640865d425384235eeef5f469c4d3884b..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/cachecore.class.php +++ /dev/null @@ -1,160 +0,0 @@ -name = $name; - $this->location = $location; - $this->expires = $expires; - $this->gzip = $gzip; - - return $this; - } - - /** - * Allows for chaining from the constructor. Requires PHP 5.3 or newer. - * - * @param string $name (Required) A name to uniquely identify the cache object. - * @param string $location (Optional) The location to store the cache object in. This may vary by cache method. The default value is NULL. - * @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0. - * @param boolean $gzip (Optional) Whether data should be gzipped before being stored. The default value is true. - * @return object Reference to the cache object. - */ - public static function init($name, $location = null, $expires = 0, $gzip = true) - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) - { - throw new Exception('PHP 5.3 or newer is required to use CacheCore::init().'); - } - - $self = get_called_class(); - return new $self($name, $location, $expires, $gzip); - } - - /** - * Set the number of seconds until a cache expires. - * - * @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0. - * @return $this - */ - public function expire_in($seconds) - { - $this->expires = $seconds; - return $this; - } - - /** - * Provides a simple, straightforward cache-logic mechanism. Useful for non-complex response caches. - * - * @param string|function $callback (Required) The name of the function to fire when we need to fetch new data to cache. - * @param array params (Optional) Parameters to pass into the callback function, as an array. - * @return array The cached data being requested. - */ - public function response_manager($callback, $params = null) - { - // Automatically handle $params values. - $params = is_array($params) ? $params : array($params); - - if ($data = $this->read()) - { - if ($this->is_expired()) - { - if ($data = call_user_func_array($callback, $params)) - { - $this->update($data); - } - else - { - $this->reset(); - $data = $this->read(); - } - } - } - else - { - if ($data = call_user_func_array($callback, $params)) - { - $this->create($data); - } - } - - return $data; - } -} - - -/*%******************************************************************************************%*/ -// CORE DEPENDENCIES - -// Include the ICacheCore interface. -if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'icachecore.interface.php')) -{ - include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'icachecore.interface.php'; -} - - -/*%******************************************************************************************%*/ -// EXCEPTIONS - -class CacheCore_Exception extends Exception {} diff --git a/3rdparty/aws-sdk/lib/cachecore/cachefile.class.php b/3rdparty/aws-sdk/lib/cachecore/cachefile.class.php deleted file mode 100755 index 3df240151fbb786921737b14793e582c8b1dba46..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/cachefile.class.php +++ /dev/null @@ -1,189 +0,0 @@ -. Adheres - * to the ICacheCore interface. - * - * @version 2012.04.17 - * @copyright 2006-2012 Ryan Parman - * @copyright 2006-2010 Foleeo, Inc. - * @copyright 2012 Amazon.com, Inc. or its affiliates. - * @copyright 2008-2010 Contributors - * @license http://opensource.org/licenses/bsd-license.php Simplified BSD License - * @link http://github.com/skyzyx/cachecore CacheCore - * @link http://getcloudfusion.com CloudFusion - */ -class CacheFile extends CacheCore implements ICacheCore -{ - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of this class. - * - * @param string $name (Required) A name to uniquely identify the cache object. - * @param string $location (Optional) The location to store the cache object in. This may vary by cache method. The default value is NULL. - * @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0. - * @param boolean $gzip (Optional) Whether data should be gzipped before being stored. The default value is true. - * @return object Reference to the cache object. - */ - public function __construct($name, $location = null, $expires = 0, $gzip = true) - { - parent::__construct($name, $location, $expires, $gzip); - $this->id = $this->location . '/' . $this->name . '.cache'; - } - - /** - * Creates a new cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function create($data) - { - if (file_exists($this->id)) - { - return false; - } - elseif (realpath($this->location) && file_exists($this->location) && is_writeable($this->location)) - { - $data = serialize($data); - $data = $this->gzip ? gzcompress($data) : $data; - - return (bool) file_put_contents($this->id, $data); - } - elseif (realpath($this->location) && file_exists($this->location)) - { - throw new CacheFile_Exception('The file system location "' . $this->location . '" is not writable. Check the file system permissions for this directory.'); - } - else - { - throw new CacheFile_Exception('The file system location "' . $this->location . '" does not exist. Create the directory, or double-check any relative paths that may have been set.'); - } - - return false; - } - - /** - * Reads a cache. - * - * @return mixed Either the content of the cache object, or boolean `false`. - */ - public function read() - { - if (file_exists($this->id) && is_readable($this->id)) - { - $data = file_get_contents($this->id); - $data = $this->gzip ? gzuncompress($data) : $data; - $data = unserialize($data); - - if ($data === false) - { - /* - This should only happen when someone changes the gzip settings and there is - existing data or someone has been mucking about in the cache folder manually. - Delete the bad entry since the file cache doesn't clean up after itself and - then return false so fresh data will be retrieved. - */ - $this->delete(); - return false; - } - - return $data; - } - - return false; - } - - /** - * Updates an existing cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function update($data) - { - if (file_exists($this->id) && is_writeable($this->id)) - { - $data = serialize($data); - $data = $this->gzip ? gzcompress($data) : $data; - - return (bool) file_put_contents($this->id, $data); - } - else - { - throw new CacheFile_Exception('The file system location is not writeable. Check your file system permissions and ensure that the cache directory exists.'); - } - - return false; - } - - /** - * Deletes a cache. - * - * @return boolean Whether the operation was successful. - */ - public function delete() - { - if (file_exists($this->id)) - { - return unlink($this->id); - } - - return false; - } - - /** - * Checks whether the cache object is expired or not. - * - * @return boolean Whether the cache is expired or not. - */ - public function is_expired() - { - if ($this->timestamp() + $this->expires < time()) - { - return true; - } - - return false; - } - - /** - * Retrieves the timestamp of the cache. - * - * @return mixed Either the Unix time stamp of the cache creation, or boolean `false`. - */ - public function timestamp() - { - clearstatcache(); - - if (file_exists($this->id)) - { - $this->timestamp = filemtime($this->id); - return $this->timestamp; - } - - return false; - } - - /** - * Resets the freshness of the cache. - * - * @return boolean Whether the operation was successful. - */ - public function reset() - { - if (file_exists($this->id)) - { - return touch($this->id); - } - - return false; - } -} - - -/*%******************************************************************************************%*/ -// EXCEPTIONS - -class CacheFile_Exception extends CacheCore_Exception {} diff --git a/3rdparty/aws-sdk/lib/cachecore/cachemc.class.php b/3rdparty/aws-sdk/lib/cachecore/cachemc.class.php deleted file mode 100755 index 5b0f8a93061f43b292067154849c3d3f33081b0c..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/cachemc.class.php +++ /dev/null @@ -1,183 +0,0 @@ -. Adheres - * to the ICacheCore interface. - * - * @version 2012.04.17 - * @copyright 2006-2012 Ryan Parman - * @copyright 2006-2010 Foleeo, Inc. - * @copyright 2012 Amazon.com, Inc. or its affiliates. - * @copyright 2008-2010 Contributors - * @license http://opensource.org/licenses/bsd-license.php Simplified BSD License - * @link http://github.com/skyzyx/cachecore CacheCore - * @link http://getcloudfusion.com CloudFusion - * @link http://php.net/memcache Memcache - * @link http://php.net/memcached Memcached - */ -class CacheMC extends CacheCore implements ICacheCore -{ - /** - * Holds the Memcache object. - */ - var $memcache = null; - - /** - * Whether the Memcached extension is being used (as opposed to Memcache). - */ - var $is_memcached = false; - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of this class. - * - * @param string $name (Required) A name to uniquely identify the cache object. - * @param string $location (Optional) The location to store the cache object in. This may vary by cache method. The default value is NULL. - * @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0. - * @param boolean $gzip (Optional) Whether data should be gzipped before being stored. The default value is true. - * @return object Reference to the cache object. - */ - public function __construct($name, $location = null, $expires = 0, $gzip = true) - { - parent::__construct($name, null, $expires, $gzip); - $this->id = $this->name; - - // Prefer Memcached over Memcache. - if (class_exists('Memcached')) - { - $this->memcache = new Memcached(); - $this->is_memcached = true; - } - elseif (class_exists('Memcache')) - { - $this->memcache = new Memcache(); - } - else - { - return false; - } - - // Enable compression, if available - if ($this->gzip) - { - if ($this->is_memcached) - { - $this->memcache->setOption(Memcached::OPT_COMPRESSION, true); - } - else - { - $this->gzip = MEMCACHE_COMPRESSED; - } - } - - // Process Memcached servers. - if (isset($location) && sizeof($location) > 0) - { - foreach ($location as $loc) - { - if (isset($loc['port']) && !empty($loc['port'])) - { - $this->memcache->addServer($loc['host'], $loc['port']); - } - else - { - $this->memcache->addServer($loc['host'], 11211); - } - } - } - - return $this; - } - - /** - * Creates a new cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function create($data) - { - if ($this->is_memcached) - { - return $this->memcache->set($this->id, $data, $this->expires); - } - return $this->memcache->set($this->id, $data, $this->gzip, $this->expires); - } - - /** - * Reads a cache. - * - * @return mixed Either the content of the cache object, or boolean `false`. - */ - public function read() - { - if ($this->is_memcached) - { - return $this->memcache->get($this->id); - } - return $this->memcache->get($this->id, $this->gzip); - } - - /** - * Updates an existing cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function update($data) - { - if ($this->is_memcached) - { - return $this->memcache->replace($this->id, $data, $this->expires); - } - return $this->memcache->replace($this->id, $data, $this->gzip, $this->expires); - } - - /** - * Deletes a cache. - * - * @return boolean Whether the operation was successful. - */ - public function delete() - { - return $this->memcache->delete($this->id); - } - - /** - * Implemented here, but always returns `false`. Memcache manages its own expirations. - * - * @return boolean Whether the cache is expired or not. - */ - public function is_expired() - { - return false; - } - - /** - * Implemented here, but always returns `false`. Memcache manages its own expirations. - * - * @return mixed Either the Unix time stamp of the cache creation, or boolean `false`. - */ - public function timestamp() - { - return false; - } - - /** - * Implemented here, but always returns `false`. Memcache manages its own expirations. - * - * @return boolean Whether the operation was successful. - */ - public function reset() - { - return false; - } -} - - -/*%******************************************************************************************%*/ -// EXCEPTIONS - -class CacheMC_Exception extends CacheCore_Exception {} diff --git a/3rdparty/aws-sdk/lib/cachecore/cachepdo.class.php b/3rdparty/aws-sdk/lib/cachecore/cachepdo.class.php deleted file mode 100755 index 5716021d8fc5dc0856237274692a72a9d563bb58..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/cachepdo.class.php +++ /dev/null @@ -1,297 +0,0 @@ -. Adheres - * to the ICacheCore interface. - * - * @version 2012.04.17 - * @copyright 2006-2012 Ryan Parman - * @copyright 2006-2010 Foleeo, Inc. - * @copyright 2012 Amazon.com, Inc. or its affiliates. - * @copyright 2008-2010 Contributors - * @license http://opensource.org/licenses/bsd-license.php Simplified BSD License - * @link http://github.com/skyzyx/cachecore CacheCore - * @link http://getcloudfusion.com CloudFusion - * @link http://php.net/pdo PDO - */ -class CachePDO extends CacheCore implements ICacheCore -{ - /** - * Reference to the PDO connection object. - */ - var $pdo = null; - - /** - * Holds the parsed URL components. - */ - var $dsn = null; - - /** - * Holds the PDO-friendly version of the connection string. - */ - var $dsn_string = null; - - /** - * Holds the prepared statement for creating an entry. - */ - var $create = null; - - /** - * Holds the prepared statement for reading an entry. - */ - var $read = null; - - /** - * Holds the prepared statement for updating an entry. - */ - var $update = null; - - /** - * Holds the prepared statement for resetting the expiry of an entry. - */ - var $reset = null; - - /** - * Holds the prepared statement for deleting an entry. - */ - var $delete = null; - - /** - * Holds the response of the read so we only need to fetch it once instead of doing - * multiple queries. - */ - var $store_read = null; - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of this class. - * - * Tested with [MySQL 5.0.x](http://mysql.com), [PostgreSQL](http://postgresql.com), and - * [SQLite 3.x](http://sqlite.org). SQLite 2.x is assumed to work. No other PDO-supported databases have - * been tested (e.g. Oracle, Microsoft SQL Server, IBM DB2, ODBC, Sybase, Firebird). Feel free to send - * patches for additional database support. - * - * See for more information. - * - * @param string $name (Required) A name to uniquely identify the cache object. - * @param string $location (Optional) The location to store the cache object in. This may vary by cache method. The default value is NULL. - * @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0. - * @param boolean $gzip (Optional) Whether data should be gzipped before being stored. The default value is true. - * @return object Reference to the cache object. - */ - public function __construct($name, $location = null, $expires = 0, $gzip = true) - { - // Make sure the name is no longer than 40 characters. - $name = sha1($name); - - // Call parent constructor and set id. - parent::__construct($name, $location, $expires, $gzip); - $this->id = $this->name; - $options = array(); - - // Check if the location contains :// (e.g. mysql://user:pass@hostname:port/table) - if (stripos($location, '://') === false) - { - // No? Just pass it through. - $this->dsn = parse_url($location); - $this->dsn_string = $location; - } - else - { - // Yes? Parse and set the DSN - $this->dsn = parse_url($location); - $this->dsn_string = $this->dsn['scheme'] . ':host=' . $this->dsn['host'] . ((isset($this->dsn['port'])) ? ';port=' . $this->dsn['port'] : '') . ';dbname=' . substr($this->dsn['path'], 1); - } - - // Make sure that user/pass are defined. - $user = isset($this->dsn['user']) ? $this->dsn['user'] : null; - $pass = isset($this->dsn['pass']) ? $this->dsn['pass'] : null; - - // Set persistence for databases that support it. - switch ($this->dsn['scheme']) - { - case 'mysql': // MySQL - case 'pgsql': // PostgreSQL - $options[PDO::ATTR_PERSISTENT] = true; - break; - } - - // Instantiate a new PDO object with a persistent connection. - $this->pdo = new PDO($this->dsn_string, $user, $pass, $options); - - // Define prepared statements for improved performance. - $this->create = $this->pdo->prepare("INSERT INTO cache (id, expires, data) VALUES (:id, :expires, :data)"); - $this->read = $this->pdo->prepare("SELECT id, expires, data FROM cache WHERE id = :id"); - $this->reset = $this->pdo->prepare("UPDATE cache SET expires = :expires WHERE id = :id"); - $this->delete = $this->pdo->prepare("DELETE FROM cache WHERE id = :id"); - } - - /** - * Creates a new cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function create($data) - { - $data = serialize($data); - $data = $this->gzip ? gzcompress($data) : $data; - - $this->create->bindParam(':id', $this->id); - $this->create->bindParam(':data', $data); - $this->create->bindParam(':expires', $this->generate_timestamp()); - - return (bool) $this->create->execute(); - } - - /** - * Reads a cache. - * - * @return mixed Either the content of the cache object, or boolean `false`. - */ - public function read() - { - if (!$this->store_read) - { - $this->read->bindParam(':id', $this->id); - $this->read->execute(); - $this->store_read = $this->read->fetch(PDO::FETCH_ASSOC); - } - - if ($this->store_read) - { - $data = $this->store_read['data']; - $data = $this->gzip ? gzuncompress($data) : $data; - - return unserialize($data); - } - - return false; - } - - /** - * Updates an existing cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function update($data) - { - $this->delete(); - return $this->create($data); - } - - /** - * Deletes a cache. - * - * @return boolean Whether the operation was successful. - */ - public function delete() - { - $this->delete->bindParam(':id', $this->id); - return $this->delete->execute(); - } - - /** - * Checks whether the cache object is expired or not. - * - * @return boolean Whether the cache is expired or not. - */ - public function is_expired() - { - if ($this->timestamp() + $this->expires < time()) - { - return true; - } - - return false; - } - - /** - * Retrieves the timestamp of the cache. - * - * @return mixed Either the Unix time stamp of the cache creation, or boolean `false`. - */ - public function timestamp() - { - if (!$this->store_read) - { - $this->read->bindParam(':id', $this->id); - $this->read->execute(); - $this->store_read = $this->read->fetch(PDO::FETCH_ASSOC); - } - - if ($this->store_read) - { - $value = $this->store_read['expires']; - - // If 'expires' isn't yet an integer, convert it into one. - if (!is_numeric($value)) - { - $value = strtotime($value); - } - - $this->timestamp = date('U', $value); - return $this->timestamp; - } - - return false; - } - - /** - * Resets the freshness of the cache. - * - * @return boolean Whether the operation was successful. - */ - public function reset() - { - $this->reset->bindParam(':id', $this->id); - $this->reset->bindParam(':expires', $this->generate_timestamp()); - return (bool) $this->reset->execute(); - } - - /** - * Returns a list of supported PDO database drivers. Identical to . - * - * @return array The list of supported database drivers. - * @link http://php.net/pdo.getavailabledrivers PHP Method - */ - public function get_drivers() - { - return PDO::getAvailableDrivers(); - } - - /** - * Returns a timestamp value apropriate to the current database type. - * - * @return mixed Timestamp for MySQL and PostgreSQL, integer value for SQLite. - */ - protected function generate_timestamp() - { - // Define 'expires' settings differently. - switch ($this->dsn['scheme']) - { - // These support timestamps. - case 'mysql': // MySQL - case 'pgsql': // PostgreSQL - $expires = date(DATE_FORMAT_MYSQL, time()); - break; - - // These support integers. - case 'sqlite': // SQLite 3 - case 'sqlite2': // SQLite 2 - $expires = time(); - break; - } - - return $expires; - } -} - - -/*%******************************************************************************************%*/ -// EXCEPTIONS - -class CachePDO_Exception extends CacheCore_Exception {} diff --git a/3rdparty/aws-sdk/lib/cachecore/cachexcache.class.php b/3rdparty/aws-sdk/lib/cachecore/cachexcache.class.php deleted file mode 100755 index a0f279aaea3d979363bc7ae4e87368dfec547f54..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/cachexcache.class.php +++ /dev/null @@ -1,129 +0,0 @@ -. Adheres - * to the ICacheCore interface. - * - * @version 2012.04.17 - * @copyright 2006-2012 Ryan Parman - * @copyright 2006-2010 Foleeo, Inc. - * @copyright 2012 Amazon.com, Inc. or its affiliates. - * @copyright 2008-2010 Contributors - * @license http://opensource.org/licenses/bsd-license.php Simplified BSD License - * @link http://github.com/skyzyx/cachecore CacheCore - * @link http://getcloudfusion.com CloudFusion - * @link http://xcache.lighttpd.net XCache - */ -class CacheXCache extends CacheCore implements ICacheCore -{ - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of this class. - * - * @param string $name (Required) A name to uniquely identify the cache object. - * @param string $location (Optional) The location to store the cache object in. This may vary by cache method. The default value is NULL. - * @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0. - * @param boolean $gzip (Optional) Whether data should be gzipped before being stored. The default value is true. - * @return object Reference to the cache object. - */ - public function __construct($name, $location = null, $expires = 0, $gzip = true) - { - parent::__construct($name, null, $expires, $gzip); - $this->id = $this->name; - } - - /** - * Creates a new cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function create($data) - { - $data = serialize($data); - $data = $this->gzip ? gzcompress($data) : $data; - - return xcache_set($this->id, $data, $this->expires); - } - - /** - * Reads a cache. - * - * @return mixed Either the content of the cache object, or boolean `false`. - */ - public function read() - { - if ($data = xcache_get($this->id)) - { - $data = $this->gzip ? gzuncompress($data) : $data; - return unserialize($data); - } - - return false; - } - - /** - * Updates an existing cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function update($data) - { - $data = serialize($data); - $data = $this->gzip ? gzcompress($data) : $data; - - return xcache_set($this->id, $data, $this->expires); - } - - /** - * Deletes a cache. - * - * @return boolean Whether the operation was successful. - */ - public function delete() - { - return xcache_unset($this->id); - } - - /** - * Defined here, but always returns false. XCache manages it's own expirations. It's worth - * mentioning that if the server is configured for a long xcache.var_gc_interval then it IS - * possible for expired data to remain in the var cache, though it is not possible to access - * it. - * - * @return boolean Whether the cache is expired or not. - */ - public function is_expired() - { - return false; - } - - /** - * Implemented here, but always returns `false`. XCache manages its own expirations. - * - * @return mixed Either the Unix time stamp of the cache creation, or boolean `false`. - */ - public function timestamp() - { - return false; - } - - /** - * Implemented here, but always returns `false`. XCache manages its own expirations. - * - * @return boolean Whether the operation was successful. - */ - public function reset() - { - return false; - } -} - - -/*%******************************************************************************************%*/ -// EXCEPTIONS - -class CacheXCache_Exception extends CacheCore_Exception {} diff --git a/3rdparty/aws-sdk/lib/cachecore/icachecore.interface.php b/3rdparty/aws-sdk/lib/cachecore/icachecore.interface.php deleted file mode 100755 index 8d49f5bf4920f1a9def8cb6499f8a5d2a53ff80a..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/cachecore/icachecore.interface.php +++ /dev/null @@ -1,66 +0,0 @@ - class. - * - * @version 2009.03.22 - * @copyright 2006-2010 Ryan Parman - * @copyright 2006-2010 Foleeo, Inc. - * @copyright 2008-2010 Contributors - * @license http://opensource.org/licenses/bsd-license.php Simplified BSD License - * @link http://github.com/skyzyx/cachecore CacheCore - * @link http://getcloudfusion.com CloudFusion - */ -interface ICacheCore -{ - /** - * Creates a new cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function create($data); - - /** - * Reads a cache. - * - * @return mixed Either the content of the cache object, or boolean `false`. - */ - public function read(); - - /** - * Updates an existing cache. - * - * @param mixed $data (Required) The data to cache. - * @return boolean Whether the operation was successful. - */ - public function update($data); - - /** - * Deletes a cache. - * - * @return boolean Whether the operation was successful. - */ - public function delete(); - - /** - * Checks whether the cache object is expired or not. - * - * @return boolean Whether the cache is expired or not. - */ - public function is_expired(); - - /** - * Retrieves the timestamp of the cache. - * - * @return mixed Either the Unix time stamp of the cache creation, or boolean `false`. - */ - public function timestamp(); - - /** - * Resets the freshness of the cache. - * - * @return boolean Whether the operation was successful. - */ - public function reset(); -} diff --git a/3rdparty/aws-sdk/lib/dom/ArrayToDOMDocument.php b/3rdparty/aws-sdk/lib/dom/ArrayToDOMDocument.php deleted file mode 100644 index 06ad502eebb76ebebb41e18cb3cf06449e7e9d03..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/dom/ArrayToDOMDocument.php +++ /dev/null @@ -1,181 +0,0 @@ -appendChild(self::createDOMElement($source, $rootTagName, $document)); - - return $document; - } - - /** - * @param array $source - * @param string $rootTagName - * @param bool $formatOutput - * @return string - */ - public static function arrayToXMLString(array $source, $rootTagName = 'root', $formatOutput = true) - { - $document = self::arrayToDOMDocument($source, $rootTagName); - $document->formatOutput = $formatOutput; - - return $document->saveXML(); - } - - /** - * @param DOMDocument $document - * @return array - */ - public static function domDocumentToArray(DOMDocument $document) - { - return self::createArray($document->documentElement); - } - - /** - * @param string $xmlString - * @return array - */ - public static function xmlStringToArray($xmlString) - { - $document = new DOMDocument(); - - return $document->loadXML($xmlString) ? self::domDocumentToArray($document) : array(); - } - - /** - * @param mixed $source - * @param string $tagName - * @param DOMDocument $document - * @return DOMNode - */ - private static function createDOMElement($source, $tagName, DOMDocument $document) - { - if (!is_array($source)) - { - $element = $document->createElement($tagName); - $element->appendChild($document->createCDATASection($source)); - - return $element; - } - - $element = $document->createElement($tagName); - - foreach ($source as $key => $value) - { - if (is_string($key) && !is_numeric($key)) - { - if ($key === self::ATTRIBUTES) - { - foreach ($value as $attributeName => $attributeValue) - { - $element->setAttribute($attributeName, $attributeValue); - } - } - elseif ($key === self::CONTENT) - { - $element->appendChild($document->createCDATASection($value)); - } - elseif (is_string($value) && !is_numeric($value)) - { - $element->appendChild(self::createDOMElement($value, $key, $document)); - } - elseif (is_array($value) && count($value)) - { - $keyNode = $document->createElement($key); - - foreach ($value as $elementKey => $elementValue) - { - if (is_string($elementKey) && !is_numeric($elementKey)) - { - $keyNode->appendChild(self::createDOMElement($elementValue, $elementKey, $document)); - } - else - { - $element->appendChild(self::createDOMElement($elementValue, $key, $document)); - } - } - - if ($keyNode->hasChildNodes()) - { - $element->appendChild($keyNode); - } - } - else - { - if (is_bool($value)) - { - $value = $value ? 'true' : 'false'; - } - - $element->appendChild(self::createDOMElement($value, $key, $document)); - } - } - else - { - $element->appendChild(self::createDOMElement($value, $tagName, $document)); - } - } - - return $element; - } - - /** - * @param DOMNode $domNode - * @return array - */ - private static function createArray(DOMNode $domNode) - { - $array = array(); - - for ($i = 0; $i < $domNode->childNodes->length; $i++) - { - $item = $domNode->childNodes->item($i); - - if ($item->nodeType === XML_ELEMENT_NODE) - { - $arrayElement = array(); - - for ($attributeIndex = 0; !is_null($attribute = $item->attributes->item($attributeIndex)); $attributeIndex++) - { - if ($attribute->nodeType === XML_ATTRIBUTE_NODE) - { - $arrayElement[self::ATTRIBUTES][$attribute->nodeName] = $attribute->nodeValue; - } - } - - $children = self::createArray($item); - - if (is_array($children)) - { - $arrayElement = array_merge($arrayElement, $children); - } - else - { - $arrayElement[self::CONTENT] = $children; - } - - $array[$item->nodeName][] = $arrayElement; - } - elseif ($item->nodeType === XML_CDATA_SECTION_NODE || ($item->nodeType === XML_TEXT_NODE && trim($item->nodeValue) !== '')) - { - return $item->nodeValue; - } - } - - return $array; - } -} diff --git a/3rdparty/aws-sdk/lib/requestcore/LICENSE b/3rdparty/aws-sdk/lib/requestcore/LICENSE deleted file mode 100755 index 49b38bd620ac6d804660351a60b6e37e80a691ac..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/requestcore/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2006-2010 Ryan Parman, Foleeo Inc., and contributors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. - - * Neither the name of Ryan Parman, Foleeo Inc. nor the names of its contributors may be used to - endorse or promote products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS -AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/3rdparty/aws-sdk/lib/requestcore/README.md b/3rdparty/aws-sdk/lib/requestcore/README.md deleted file mode 100755 index 373ea4dccadd39c3ad0dd4e08a67ab7f4848977b..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/requestcore/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# RequestCore - -RequestCore is a lightweight cURL-based HTTP request/response class that leverages MultiCurl for parallel requests. - -### PEAR HTTP_Request? - -RequestCore was written as a replacement for [PEAR HTTP_Request](http://pear.php.net/http_request/). While PEAR HTTP_Request is full-featured and heavy, RequestCore features only the essentials and is very lightweight. It also leverages the batch request support in cURL's `curl_multi_exec()` to enable multi-threaded requests that fire in parallel. - -### Reference and Download - -You can find the class reference at . You can get the code from . - -### License and Copyright - -This code is Copyright (c) 2008-2010, Ryan Parman. However, I'm licensing this code for others to use under the [Simplified BSD license](http://www.opensource.org/licenses/bsd-license.php). diff --git a/3rdparty/aws-sdk/lib/requestcore/cacert.pem b/3rdparty/aws-sdk/lib/requestcore/cacert.pem deleted file mode 100755 index 80bff62fd2729fe315c2df39985f3752cee17b3b..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/requestcore/cacert.pem +++ /dev/null @@ -1,3390 +0,0 @@ -## -## ca-bundle.crt -- Bundle of CA Root Certificates -## -## Certificate data from Mozilla as of: Wed Jan 18 00:04:16 2012 -## -## This is a bundle of X.509 certificates of public Certificate Authorities -## (CA). These were automatically extracted from Mozilla's root certificates -## file (certdata.txt). This file can be found in the mozilla source tree: -## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 -## -## It contains the certificates in PEM format and therefore -## can be directly used with curl / libcurl / php_curl, or with -## an Apache+mod_ssl webserver for SSL client authentication. -## Just configure this file as the SSLCACertificateFile. -## - -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is the Netscape security libraries. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1994-2000 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** -# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.81 $ $Date: 2012/01/17 22:02:37 $ - -GTE CyberTrust Global Root -========================== ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg -Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG -A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz -MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL -Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 -IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u -sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql -HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID -AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW -M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF -NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- - -Thawte Server CA -================ ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs -dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE -AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j -b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV -BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u -c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG -A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 -ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl -/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 -1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR -MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J -GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ -GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- - -Thawte Premium Server CA -======================== ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs -dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE -AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl -ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT -AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU -VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 -aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ -cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 -aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh -Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ -qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm -SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf -8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t -UCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- - -Equifax Secure CA -================= ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE -ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 -MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT -B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB -nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR -fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW -8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG -A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE -CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG -A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS -spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB -Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 -zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB -BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 -70+sB3c4 ------END CERTIFICATE----- - -Digital Signature Trust Co. Global CA 1 -======================================= ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE -ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy -MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs -IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE -NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i -o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo -BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 -dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw -IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY -MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM -BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB -ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq -kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4 -RbyhkwS7hp86W0N6w4pl ------END CERTIFICATE----- - -Digital Signature Trust Co. Global CA 3 -======================================= ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE -ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy -MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs -IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD -VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS -xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo -BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 -dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw -IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY -MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM -BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB -AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi -up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1 -mPnHfxsb1gYgAlihw6ID ------END CERTIFICATE----- - -Verisign Class 3 Public Primary Certification Authority -======================================================= ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx -FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 -IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow -XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz -IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA -A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 -f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol -hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA -TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah -WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf -Tqj/ZA1k ------END CERTIFICATE----- - -Verisign Class 3 Public Primary Certification Authority - G2 -============================================================ ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT -MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz -dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT -MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz -dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO -FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 -lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB -MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT -1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD -Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 ------END CERTIFICATE----- - -GlobalSign Root CA -================== ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx -GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds -b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV -BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD -VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa -DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc -THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb -Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP -c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX -gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF -AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj -Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG -j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH -hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC -X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -GlobalSign Root CA - R2 -======================= ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv -YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh -bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT -aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln -bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 -ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp -s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN -S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL -TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C -ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i -YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN -BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp -9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu -01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 -9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- - -ValiCert Class 1 VA -=================== ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp -b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh -bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy -MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 -d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg -UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 -LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA -A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi -GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm -DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG -lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX -icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP -Orf1LXLI ------END CERTIFICATE----- - -ValiCert Class 2 VA -=================== ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp -b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh -bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw -MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 -d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg -UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 -LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA -A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC -CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf -ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ -SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV -UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 -W9ViH0Pd ------END CERTIFICATE----- - -RSA Root Certificate 1 -====================== ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp -b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh -bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw -MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 -d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg -UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 -LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA -A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td -3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H -BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs -3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF -V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r -on+jjBXu ------END CERTIFICATE----- - -Verisign Class 3 Public Primary Certification Authority - G3 -============================================================ ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy -dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 -EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc -cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw -EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj -055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA -ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f -j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 -xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa -t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- - -Verisign Class 4 Public Primary Certification Authority - G3 -============================================================ ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy -dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS -tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM -8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW -Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX -Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA -j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt -mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm -fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd -RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG -UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== ------END CERTIFICATE----- - -Entrust.net Secure Server CA -============================ ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV -BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg -cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl -ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG -A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi -eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p -dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ -aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 -gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw -ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw -CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l -dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw -NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow -HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA -BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN -Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 -n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- - -Entrust.net Premium 2048 Secure Server CA -========================================= ------BEGIN CERTIFICATE----- -MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u -ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp -bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx -NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 -d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u -ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL -Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr -hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW -nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi -VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC -AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER -gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B -AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo -oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS -o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z -2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX -OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ== ------END CERTIFICATE----- - -Baltimore CyberTrust Root -========================= ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE -ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li -ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC -SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs -dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME -uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB -UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C -G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 -XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr -l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI -VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB -BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh -cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 -hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa -Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H -RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- - -Equifax Secure Global eBusiness CA -================================== ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT -RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp -bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx -HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds -b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV -PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN -qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn -hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j -BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs -MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN -I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY -NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- - -Equifax Secure eBusiness CA 1 -============================= ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT -RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB -LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE -ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz -IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ -1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a -IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk -MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW -Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF -AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 -lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ -KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- - -Equifax Secure eBusiness CA 2 -============================= ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE -ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y -MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT -DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB -nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn -2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5 -BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG -A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx -JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG -A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e -uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB -Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1 -jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia -78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm -V+GRMOrN ------END CERTIFICATE----- - -AddTrust Low-Value Services Root -================================ ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU -cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw -CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO -ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 -54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr -oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 -Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui -GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w -HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD -AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT -RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw -HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt -ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph -iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr -mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj -ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- - -AddTrust External Root -====================== ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD -VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw -NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU -cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg -Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 -+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw -Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo -aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy -2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 -7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL -VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk -VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl -j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 -e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u -G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- - -AddTrust Public Services Root -============================= ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU -cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ -BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l -dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu -nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i -d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG -Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw -HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G -A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G -A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 -JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL -+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao -GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 -Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H -EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= ------END CERTIFICATE----- - -AddTrust Qualified Certificates Root -==================================== ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU -cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx -CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ -IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx -64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 -KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o -L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR -wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU -MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE -BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y -azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD -ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG -GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze -RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB -iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= ------END CERTIFICATE----- - -Entrust Root Certification Authority -==================================== ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV -BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw -b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG -A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 -MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu -MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu -Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz -A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww -Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 -j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN -rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw -DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 -MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH -hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM -Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa -v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS -W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 -tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- - -RSA Security 2048 v3 -==================== ------BEGIN CERTIFICATE----- -MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK -ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy -MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb -BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 -Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb -WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH -KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP -+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ -MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E -FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY -v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj -0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj -VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 -nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA -pKnXwiJPZ9d37CAFYd4= ------END CERTIFICATE----- - -GeoTrust Global CA -================== ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw -MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j -LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo -BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet -8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc -T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU -vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk -DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q -zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 -d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 -mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p -XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm -Mw== ------END CERTIFICATE----- - -GeoTrust Global CA 2 -==================== ------BEGIN CERTIFICATE----- -MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw -MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j -LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ -NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k -LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA -Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b -HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH -K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 -srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh -ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL -OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC -x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF -H4z1Ir+rzoPz4iIprn2DQKi6bA== ------END CERTIFICATE----- - -GeoTrust Universal CA -===================== ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 -MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu -Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t -JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e -RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs -7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d -8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V -qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga -Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB -Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu -KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 -ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 -XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB -hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 -qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL -oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK -xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF -KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 -DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK -xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU -p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI -P/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- - -GeoTrust Universal CA 2 -======================= ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 -MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg -SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 -DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 -j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q -JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a -QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 -WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP -20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn -ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC -SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG -8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 -+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E -BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ -4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ -mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq -A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg -Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP -pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d -FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp -gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm -X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- - -America Online Root Certification Authority 1 -============================================= ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT -QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG -A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg -T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG -v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z -DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh -sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP -8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T -AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z -o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf -GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF -VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft -3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g -Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- - -America Online Root Certification Authority 2 -============================================= ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT -QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG -A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg -T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en -fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 -f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO -qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN -RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 -gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn -6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid -FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 -Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj -B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op -aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY -T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p -+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg -JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy -zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO -ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh -1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf -GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff -Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP -cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= ------END CERTIFICATE----- - -Visa eCommerce Root -=================== ------BEGIN CERTIFICATE----- -MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG -EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug -QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 -WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm -VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv -bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL -F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b -RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 -TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI -/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs -GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG -MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc -CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW -YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz -zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu -YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt -398znM/jra6O1I7mT1GvFpLgXPYHDw== ------END CERTIFICATE----- - -Certum Root CA -============== ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK -ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla -Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u -by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x -wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL -kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ -89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K -Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P -NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ -GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg -GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ -0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS -qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- - -Comodo AAA Services root -======================== ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS -R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg -TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw -MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl -c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV -BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG -C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs -i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW -Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH -Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK -Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f -BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl -cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz -LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm -7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z -8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C -12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- - -Comodo Secure Services root -=========================== ------BEGIN CERTIFICATE----- -MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS -R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg -TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw -MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu -Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi -BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP -9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc -rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC -oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V -p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E -FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w -gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj -YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm -aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm -4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj -Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL -DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw -pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H -RR3B7Hzs/Sk= ------END CERTIFICATE----- - -Comodo Trusted Services root -============================ ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS -R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg -TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw -MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h -bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw -IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 -3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y -/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 -juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS -ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud -DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp -ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl -cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw -uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 -pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA -BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l -R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O -9y5Xt5hwXsjEeLBi ------END CERTIFICATE----- - -QuoVadis Root CA -================ ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE -ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz -MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp -cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD -EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk -J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL -F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL -YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen -AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w -PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y -ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 -MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj -YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs -ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW -Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu -BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw -FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 -tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo -fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul -LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x -gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi -5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi -5nrQNiOKSnQ2+Q== ------END CERTIFICATE----- - -QuoVadis Root CA 2 -================== ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT -EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx -ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 -XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk -lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB -lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy -lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt -66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn -wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh -D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy -BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie -J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud -DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU -a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv -Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 -UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm -VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK -+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW -IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 -WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X -f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II -4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 -VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- - -QuoVadis Root CA 3 -================== ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT -EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx -OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg -DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij -KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K -DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv -BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp -p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 -nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX -MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM -Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz -uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT -BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj -YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB -BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD -VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 -ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE -AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV -qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s -hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z -POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 -Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp -8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC -bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu -g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p -vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr -qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- - -Security Communication Root CA -============================== ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP -U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw -HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP -U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw -8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM -DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX -5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd -DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 -JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw -DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g -0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a -mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ -s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ -6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi -FL39vmwLAw== ------END CERTIFICATE----- - -Sonera Class 2 Root CA -====================== ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG -U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw -NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh -IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 -/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT -dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG -f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P -tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH -nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT -XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt -0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI -cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph -Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx -EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH -llpwrN9M ------END CERTIFICATE----- - -Staat der Nederlanden Root CA -============================= ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE -ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g -Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w -HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh -bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt -vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P -jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca -C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth -vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 -22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV -HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v -dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN -BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR -EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw -MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y -nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR -iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== ------END CERTIFICATE----- - -TDC Internet Root CA -==================== ------BEGIN CERTIFICATE----- -MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE -ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx -NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu -ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j -xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL -znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc -5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 -otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI -AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM -VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM -MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC -AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe -UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G -CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m -gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ -2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb -O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU -Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l ------END CERTIFICATE----- - -TDC OCES Root CA -================ ------BEGIN CERTIFICATE----- -MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE -ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5 -MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH -nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0 -zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV -iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde -dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO -3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB -5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k -ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm -cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp -Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x -LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM -MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm -aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy -MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647 -+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6 -NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4 -A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc -A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9 -AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1 -AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw== ------END CERTIFICATE----- - -UTN DATACorp SGC Root CA -======================== ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE -BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl -IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ -BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa -MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w -HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy -dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys -raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo -wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA -9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv -33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud -DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 -BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD -LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 -DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 -I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx -EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP -DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- - -UTN USERFirst Hardware Root CA -============================== ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE -BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl -IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd -BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx -OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 -eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz -ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI -wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd -tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 -i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf -Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw -gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF -lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF -UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF -BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW -XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 -lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn -iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 -nfhmqA== ------END CERTIFICATE----- - -Camerfirma Chambers of Commerce Root -==================================== ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe -QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i -ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx -NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp -cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn -MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC -AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU -xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH -NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW -DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV -d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud -EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v -cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P -AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh -bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD -VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi -fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD -L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN -UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n -ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 -erfutGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- - -Camerfirma Global Chambersign Root -================================== ------BEGIN CERTIFICATE----- -MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe -QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i -ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx -NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt -YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg -MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw -ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J -1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O -by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl -6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c -8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ -BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j -aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B -Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj -aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y -ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh -bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA -PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y -gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ -PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 -IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes -t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== ------END CERTIFICATE----- - -NetLock Notary (Class A) Root -============================= ------BEGIN CERTIFICATE----- -MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI -EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 -dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j -ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX -DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH -EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD -VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz -cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM -D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ -z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC -/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 -tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 -4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG -A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC -Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv -bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu -IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn -LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 -ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz -IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh -IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu -b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh -bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg -Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp -bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 -ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP -ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB -CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr -KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM -8CgHrTwXZoi1/baI ------END CERTIFICATE----- - -NetLock Business (Class B) Root -=============================== ------BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT -CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV -BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg -VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD -VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv -bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg -VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB -iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S -o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr -1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV -HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ -RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh -dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 -ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv -c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg -YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz -Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA -bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl -IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 -YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj -cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM -43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR -stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI ------END CERTIFICATE----- - -NetLock Express (Class C) Root -============================== ------BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT -CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV -BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD -KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ -BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 -dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j -ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB -jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z -W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 -euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw -DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN -RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn -YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB -IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i -aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 -ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y -emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k -IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ -UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg -YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 -xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW -gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== ------END CERTIFICATE----- - -XRamp Global CA Root -==================== ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE -BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj -dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx -HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg -U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu -IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx -foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE -zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs -AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry -xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud -EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap -oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC -AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc -/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n -nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz -8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- - -Go Daddy Class 2 CA -=================== ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY -VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG -A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g -RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD -ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv -2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 -qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j -YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY -vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O -BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o -atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu -MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim -PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt -I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI -Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b -vZ8= ------END CERTIFICATE----- - -Starfield Class 2 CA -==================== ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc -U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo -MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG -A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG -SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY -bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ -JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm -epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN -F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF -MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f -hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo -bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g -QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs -afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM -PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD -KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 -QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- - -StartCom Certification Authority -================================ ------BEGIN CERTIFICATE----- -MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN -U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu -ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 -NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk -LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg -U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y -o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ -Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d -eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt -2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z -6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ -osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ -untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc -UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT -37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE -FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 -Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj -YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH -AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw -Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg -U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 -LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl -cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh -cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT -dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC -AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh -3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm -vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk -fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 -fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ -EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq -yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl -1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ -lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro -g14= ------END CERTIFICATE----- - -Taiwan GRCA -=========== ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG -EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X -DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv -dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN -w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 -BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O -1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO -htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov -J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 -Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t -B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB -O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 -lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV -HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 -09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj -Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 -Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU -D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz -DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk -Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk -7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ -CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy -+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS ------END CERTIFICATE----- - -Firmaprofesional Root CA -======================== ------BEGIN CERTIFICATE----- -MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT -GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp -Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA -ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL -MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT -OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2 -ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V -j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH -lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf -3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8 -NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww -KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG -AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD -ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq -u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf -wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm -7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG -VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA= ------END CERTIFICATE----- - -Wells Fargo Root CA -=================== ------BEGIN CERTIFICATE----- -MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV -BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN -MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl -bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv -MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX -x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3 -E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5 -OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j -sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj -YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF -BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD -ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv -m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R -OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx -x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023 -tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= ------END CERTIFICATE----- - -Swisscom Root CA 1 -================== ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG -EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy -dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 -MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln -aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC -IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM -MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF -NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe -AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC -b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn -7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN -cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp -WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 -haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY -MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw -HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j -BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 -MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn -jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ -MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H -VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl -vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl -OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 -1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq -nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy -x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW -NY6E0F/6MBr1mmz0DlP5OlvRHA== ------END CERTIFICATE----- - -DigiCert Assured ID Root CA -=========================== ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw -IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx -MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL -ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO -9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy -UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW -/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy -oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf -GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF -66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq -hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc -EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn -SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i -8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- - -DigiCert Global Root CA -======================= ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw -HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw -MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 -dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn -TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 -BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H -4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y -7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB -o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm -8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF -BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr -EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt -tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 -UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- - -DigiCert High Assurance EV Root CA -================================== ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw -KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw -MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ -MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu -Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t -Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS -OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 -MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ -NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe -h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB -Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY -JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ -V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp -myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK -mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K ------END CERTIFICATE----- - -Certplus Class 2 Primary CA -=========================== ------BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE -BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN -OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy -dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR -5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ -Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO -YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e -e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME -CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ -YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t -L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD -P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R -TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ -7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW -//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 -l7+ijrRU ------END CERTIFICATE----- - -DST Root CA X3 -============== ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK -ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X -DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 -cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT -rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 -UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy -xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d -utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ -MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug -dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE -GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw -RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS -fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - -DST ACES CA X6 -============== ------BEGIN CERTIFICATE----- -MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG -EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT -MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha -MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE -CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI -DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa -pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow -GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy -MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu -Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy -dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU -CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 -5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t -Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq -nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs -vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 -oKfN5XozNmr6mis= ------END CERTIFICATE----- - -TURKTRUST Certificate Services Provider Root 1 -============================================== ------BEGIN CERTIFICATE----- -MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF -bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP -MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 -acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx -MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg -U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB -TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC -aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX -yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i -Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ -8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 -W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME -BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 -sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE -q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy -B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY -nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H ------END CERTIFICATE----- - -TURKTRUST Certificate Services Provider Root 2 -============================================== ------BEGIN CERTIFICATE----- -MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF -bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP -MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg -QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN -MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr -dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G -A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls -acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe -LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI -x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g -QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr -5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB -AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G -A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt -Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 -Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ -hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P -9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 -UrbnBEI= ------END CERTIFICATE----- - -SwissSign Gold CA - G2 -====================== ------BEGIN CERTIFICATE----- -MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw -EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN -MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp -c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq -t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C -jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg -vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF -ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR -AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend -jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO -peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR -7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi -GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 -OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov -L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm -5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr -44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf -Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m -Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp -mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk -vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf -KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br -NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj -viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ ------END CERTIFICATE----- - -SwissSign Silver CA - G2 -======================== ------BEGIN CERTIFICATE----- -MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT -BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X -DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 -aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG -9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 -N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm -+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH -6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu -MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h -qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 -FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs -ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc -celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X -CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB -tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 -cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P -4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F -kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L -3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx -/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa -DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP -e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu -WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ -DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub -DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority -======================================== ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx -CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ -cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN -b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 -nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge -RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt -tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI -hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K -Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN -NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa -Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG -1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- - -thawte Primary Root CA -====================== ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 -MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg -SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv -KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT -FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs -oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ -1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc -q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K -aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p -afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF -AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE -uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 -jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH -z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G5 -============================================================ ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln -biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh -dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz -j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD -Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ -Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r -fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv -Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG -SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ -X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE -KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC -Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE -ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- - -SecureTrust CA -============== ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG -EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy -dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe -BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX -OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t -DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH -GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b -01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH -ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj -aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ -KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu -SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf -mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ -nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -Secure Global CA -================ ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG -EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH -bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg -MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg -Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx -YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ -bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g -8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV -HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi -0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud -EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn -oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA -MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ -OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn -CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 -3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - -COMODO Certification Authority -============================== ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE -BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG -A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb -MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD -T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH -+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww -xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV -4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA -1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI -rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k -b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC -AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP -OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc -IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN -+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== ------END CERTIFICATE----- - -Network Solutions Certificate Authority -======================================= ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG -EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr -IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx -MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu -MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx -jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT -aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT -crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc -/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB -AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv -bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA -A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q -4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ -GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv -wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD -ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey ------END CERTIFICATE----- - -WellsSecure Public Root Certificate Authority -============================================= ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM -F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw -NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN -MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl -bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD -VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 -iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 -i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 -bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB -K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB -AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu -cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm -lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB -i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww -GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI -K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 -bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj -qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es -E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ -tylv2G0xffX8oRAHh84vWdw+WNs= ------END CERTIFICATE----- - -COMODO ECC Certification Authority -================================== ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC -R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE -ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix -GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo -b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X -4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni -wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG -FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA -U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- - -IGC/A -===== ------BEGIN CERTIFICATE----- -MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD -VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE -Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy -MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI -EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT -STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 -TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW -So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy -HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd -frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ -tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB -egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC -iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK -q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q -MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg -Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI -lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF -0mBWWg== ------END CERTIFICATE----- - -Security Communication EV RootCA1 -================================= ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc -U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh -dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE -BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl -Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO -/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX -WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z -ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 -bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK -9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm -iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG -Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW -mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW -T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- - -OISTE WISeKey Global Root GA CA -=============================== ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE -BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG -A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH -bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD -VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw -IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 -IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 -Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg -Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD -d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ -/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R -LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ -KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm -MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 -+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY -okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= ------END CERTIFICATE----- - -Microsec e-Szigno Root CA -========================= ------BEGIN CERTIFICATE----- -MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE -BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL -EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 -MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz -dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT -GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG -d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N -oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc -QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ -PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb -MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG -IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD -VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 -LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A -dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn -AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA -4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg -AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA -egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 -Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO -PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv -c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h -cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw -IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT -WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV -MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER -MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp -Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal -HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT -nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE -aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a -86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK -yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB -S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= ------END CERTIFICATE----- - -Certigna -======== ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw -EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 -MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI -Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q -XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH -GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p -ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg -DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf -Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ -tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ -BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J -SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA -hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ -ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu -PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY -1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. -====================================== ------BEGIN CERTIFICATE----- -MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT -AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg -LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w -HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ -U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh -IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN -yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU -2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 -4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP -2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm -8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf -HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa -Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK -5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b -czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g -ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF -BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug -cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf -AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX -EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v -/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 -MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 -3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk -eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f -/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h -RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU -Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== ------END CERTIFICATE----- - -TC TrustCenter Class 2 CA II -============================ ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC -REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy -IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw -MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 -c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE -AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw -IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 -xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ -Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u -SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB -7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 -Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU -cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i -SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G -dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ -KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj -TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP -JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk -vQ== ------END CERTIFICATE----- - -TC TrustCenter Class 3 CA II -============================ ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC -REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy -IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw -MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 -c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE -AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W -yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo -6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ -uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk -2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB -7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 -Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU -cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i -SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE -O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 -yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 -IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal -092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc -5A== ------END CERTIFICATE----- - -TC TrustCenter Universal CA I -============================= ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC -REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy -IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN -MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg -VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw -JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC -qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv -xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw -ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O -gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j -BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG -1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy -vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 -ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT -ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a -7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY ------END CERTIFICATE----- - -Deutsche Telekom Root CA 2 -========================== ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT -RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG -A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 -MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G -A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS -b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 -bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI -KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY -AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK -Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV -jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV -HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr -E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy -zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 -rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G -dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- - -ComSign Secured CA -================== ------BEGIN CERTIFICATE----- -MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE -AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w -NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD -QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs -49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH -7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB -kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 -9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw -AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t -U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA -j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC -AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a -BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp -FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP -51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz -OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== ------END CERTIFICATE----- - -Cybertrust Global Root -====================== ------BEGIN CERTIFICATE----- -MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li -ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 -MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD -ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW -0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL -AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin -89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT -8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 -MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G -A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO -lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi -5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 -hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T -X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW -WL1WMRJOEcgh4LMRkWXbtKaIOM5V ------END CERTIFICATE----- - -ePKI Root Certification Authority -================================= ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG -EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg -Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx -MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq -MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs -IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi -lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv -qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX -12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O -WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ -ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao -lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ -vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi -Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi -MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 -1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq -KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV -xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP -NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r -GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE -xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx -gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy -sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD -BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 -============================================================================================================================= ------BEGIN CERTIFICATE----- -MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH -DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q -aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry -b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV -BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg -S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 -MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl -IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF -n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl -IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft -dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl -cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO -Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 -xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR -6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL -hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd -BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 -N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT -y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh -LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M -dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= ------END CERTIFICATE----- - -Buypass Class 2 CA 1 -==================== ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU -QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 -MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh -c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M -cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 -0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 -0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R -uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P -AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV -1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt -7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 -fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w -wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho ------END CERTIFICATE----- - -Buypass Class 3 CA 1 -==================== ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU -QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 -MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh -c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx -ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 -n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia -AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c -1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P -AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 -pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA -EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 -htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj -el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 ------END CERTIFICATE----- - -EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 -========================================================================== ------BEGIN CERTIFICATE----- -MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF -bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg -QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe -Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p -ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt -IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by -X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b -gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr -eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ -TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy -Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn -uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI -qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm -ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 -Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB -/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW -Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t -FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm -zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k -XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT -bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU -RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK -1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt -2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ -Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 -AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT ------END CERTIFICATE----- - -certSIGN ROOT CA -================ ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD -VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa -Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE -CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I -JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH -rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 -ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD -0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 -AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B -Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB -AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 -SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 -x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt -vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz -TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -CNNIC ROOT -========== ------BEGIN CERTIFICATE----- -MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE -ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw -OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD -o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz -VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT -VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or -czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK -y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC -wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S -lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 -Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM -O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 -BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 -G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m -mxE= ------END CERTIFICATE----- - -ApplicationCA - Japanese Government -=================================== ------BEGIN CERTIFICATE----- -MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT -SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw -MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl -cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 -fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN -wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE -jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu -nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU -WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV -BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD -vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs -o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g -/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD -io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW -dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL -rosot4LKGAfmt1t06SAZf7IbiVQ= ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority - G3 -============================================= ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz -NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo -YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT -LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j -K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE -c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C -IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu -dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr -2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 -cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE -Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s -t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt ------END CERTIFICATE----- - -thawte Primary Root CA - G2 -=========================== ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC -VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu -IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg -Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV -MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG -b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt -IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS -LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 -8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU -mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN -G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K -rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- - -thawte Primary Root CA - G3 -=========================== ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w -ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD -VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG -A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At -P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC -+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY -7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW -vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ -KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK -A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC -8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm -er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority - G2 -============================================= ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 -OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl -b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG -BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc -KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ -EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m -ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 -npaqBA+K ------END CERTIFICATE----- - -VeriSign Universal Root Certification Authority -=============================================== ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u -IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj -1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP -MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 -9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I -AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR -tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G -CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O -a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 -Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx -Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx -P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P -wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 -mJO37M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G4 -============================================================ ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC -VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 -b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz -ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU -cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo -b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 -IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 -Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz -rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw -HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u -Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD -A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx -AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE----- - -NetLock Arany (Class Gold) Főtanúsítvány -============================================ ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G -A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 -dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB -cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx -MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO -ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 -c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu -0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw -/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk -H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw -fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 -neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW -qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta -YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna -NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu -dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -Staat der Nederlanden Root CA - G2 -================================== ------BEGIN CERTIFICATE----- -MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC -TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l -ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ -5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn -vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj -CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil -e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR -OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI -CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 -48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi -trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 -qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB -AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC -ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA -A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz -+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj -f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN -kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk -CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF -URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb -CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h -oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV -IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm -66+KAQ== ------END CERTIFICATE----- - -CA Disig -======== ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK -QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw -MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz -bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm -GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD -Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo -hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt -ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w -gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P -AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz -aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff -ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa -BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t -WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 -mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ -CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K -ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA -4Z7CRneC9VkGjCFMhwnN5ag= ------END CERTIFICATE----- - -Juur-SK -======= ------BEGIN CERTIFICATE----- -MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA -c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw -DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG -SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy -aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf -TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC -+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw -UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa -Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF -MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD -HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh -AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA -cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr -AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw -cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE -FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G -A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo -ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL -abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 -IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh -Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 -yyqcjg== ------END CERTIFICATE----- - -Hongkong Post Root CA 1 -======================= ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT -DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx -NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n -IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 -ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr -auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh -qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY -V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV -HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i -h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio -l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei -IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps -T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT -c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== ------END CERTIFICATE----- - -SecureSign RootCA11 -=================== ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi -SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS -b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw -KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 -cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL -TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO -wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq -g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP -O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA -bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX -t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh -OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r -bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ -Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 -y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 -lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -ACEDICOM Root -============= ------BEGIN CERTIFICATE----- -MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD -T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 -MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG -A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk -WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD -YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew -MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb -m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk -HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT -xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 -3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 -2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq -TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz -4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU -9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv -bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg -aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP -eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk -zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 -ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI -KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq -nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE -I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp -MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o -tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== ------END CERTIFICATE----- - -Verisign Class 3 Public Primary Certification Authority -======================================================= ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx -FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 -IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow -XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz -IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA -A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 -f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol -hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky -CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX -bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ -D/xwzoiQ ------END CERTIFICATE----- - -Microsec e-Szigno Root CA 2009 -============================== ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER -MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv -c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE -BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt -U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA -fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG -0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA -pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm -1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC -AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf -QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE -FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o -lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX -I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 -yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi -LXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi -=================================================== ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG -EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz -ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 -MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 -cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u -aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY -8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y -jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI -JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk -9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD -AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG -SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d -F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq -D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 -Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq -fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX ------END CERTIFICATE----- - -GlobalSign Root CA - R3 -======================= ------BEGIN CERTIFICATE----- -MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv -YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh -bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT -aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln -bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt -iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ -0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 -rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl -OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 -xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 -lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 -EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E -bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 -YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r -kpeDMdmztcpHWD9f ------END CERTIFICATE----- - -TC TrustCenter Universal CA III -=============================== ------BEGIN CERTIFICATE----- -MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC -REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy -IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe -Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU -QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex -KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt -QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO -juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut -CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1 -M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G -A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA -g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+ -KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK -BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV -CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq -woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== ------END CERTIFICATE----- - -Autoridad de Certificacion Firmaprofesional CIF A62634068 -========================================================= ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA -BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw -QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB -NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD -Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P -B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY -7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH -ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI -plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX -MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX -LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK -bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU -vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud -EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH -DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA -bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx -ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx -51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk -R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP -T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f -Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl -osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR -crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR -saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD -KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi -6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -Izenpe.com -========== ------BEGIN CERTIFICATE----- -MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG -EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz -MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu -QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ -03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK -ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU -+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC -PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT -OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK -F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK -0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ -0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB -leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID -AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ -SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG -NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx -MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O -BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l -Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga -kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q -hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs -g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 -aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 -nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC -ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo -Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z -WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== ------END CERTIFICATE----- - -Chambers of Commerce Root - 2008 -================================ ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy -Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl -ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF -EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl -cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA -XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj -h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ -ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk -NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g -D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 -lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ -0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 -EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI -G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ -BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh -bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh -bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC -CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH -AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 -wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH -3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU -RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 -M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 -YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF -9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK -zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG -nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ ------END CERTIFICATE----- - -Global Chambersign Root - 2008 -============================== ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx -NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg -Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ -QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf -VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf -XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 -ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB -/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA -TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M -H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe -Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF -HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB -AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT -BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE -BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm -aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm -aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp -1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 -dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG -/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 -ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s -dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg -9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH -foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du -qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr -P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq -c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- - -Go Daddy Root Certificate Authority - G2 -======================================== ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu -MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 -MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G -A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq -9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD -+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd -fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl -NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 -BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac -vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r -5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV -N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 ------END CERTIFICATE----- - -Starfield Root Certificate Authority - G2 -========================================= ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s -b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 -eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw -DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg -VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB -dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv -W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs -bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk -N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf -ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU -JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol -TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx -4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw -F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ -c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- - -Starfield Services Root Certificate Authority - G2 -================================================== ------BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s -b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl -IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT -dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 -h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa -hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP -LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB -rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG -SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP -E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy -xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd -iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza -YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 ------END CERTIFICATE----- - -AffirmTrust Commercial -====================== ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw -MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly -bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb -DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV -C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 -BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww -MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV -HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG -hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi -qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv -0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh -sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= ------END CERTIFICATE----- - -AffirmTrust Networking -====================== ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw -MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly -bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE -Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI -dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 -/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb -h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV -HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu -UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 -12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 -WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 -/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= ------END CERTIFICATE----- - -AffirmTrust Premium -=================== ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy -OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy -dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn -BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV -5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs -+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd -GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R -p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI -S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 -6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 -/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo -+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv -MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg -Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC -6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S -L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK -+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV -BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg -IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 -g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb -zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== ------END CERTIFICATE----- - -AffirmTrust Premium ECC -======================= ------BEGIN CERTIFICATE----- -MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV -BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx -MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U -cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ -N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW -BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK -BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X -57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM -eQ== ------END CERTIFICATE----- - -Certum Trusted Network CA -========================= ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK -ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy -MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU -ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC -l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J -J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 -fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 -cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB -Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw -DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj -jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 -mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj -Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -Certinomis - Autorité Racine -============================= ------BEGIN CERTIFICATE----- -MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK -Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg -LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG -A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw -JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa -wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly -Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw -2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N -jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q -c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC -lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb -xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g -530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna -4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G -A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ -KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x -WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva -R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 -nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B -CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv -JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE -qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b -WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE -wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ -vgt2Fl43N+bYdJeimUV5 ------END CERTIFICATE----- - -Root CA Generalitat Valenciana -============================== ------BEGIN CERTIFICATE----- -MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE -ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 -IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 -WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE -CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 -F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B -ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ -D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte -JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB -AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n -dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB -ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl -AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA -YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy -AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA -aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt -AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA -YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu -AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA -OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 -dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV -BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G -A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S -b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh -TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz -Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 -NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH -iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt -+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= ------END CERTIFICATE----- - -A-Trust-nQual-03 -================ ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE -Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy -a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R -dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw -RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 -ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 -c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA -zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n -yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE -SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 -iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V -cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV -eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 -ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr -sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd -JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS -mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 -ahq97BvIxYSazQ== ------END CERTIFICATE----- - -TWCA Root Certification Authority -================================= ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ -VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG -EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB -IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx -QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC -oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP -4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r -y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG -9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC -mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW -QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY -T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny -Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -Security Communication RootCA2 -============================== ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc -U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh -dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC -SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy -aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ -+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R -3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV -spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K -EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 -QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB -CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj -u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk -3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q -tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 -mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -EC-ACC -====== ------BEGIN CERTIFICATE----- -MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE -BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w -ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD -VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE -CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT -BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 -MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt -SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl -Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh -cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK -w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT -ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 -HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a -E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw -0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD -VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 -Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l -dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ -lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa -Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe -l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 -E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D -5EI= ------END CERTIFICATE----- - -Hellenic Academic and Research Institutions RootCA 2011 -======================================================= ------BEGIN CERTIFICATE----- -MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT -O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y -aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z -IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT -AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z -IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo -IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI -1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa -71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u -8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH -3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ -MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 -MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu -b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt -XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 -TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD -/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N -7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 ------END CERTIFICATE----- diff --git a/3rdparty/aws-sdk/lib/requestcore/requestcore.class.php b/3rdparty/aws-sdk/lib/requestcore/requestcore.class.php deleted file mode 100755 index 087694f08cd1fa60dcef1e4a46b372edfeffe704..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/requestcore/requestcore.class.php +++ /dev/null @@ -1,1028 +0,0 @@ -). - */ - public $request_class = 'RequestCore'; - - /** - * The default class to use for HTTP Responses (defaults to ). - */ - public $response_class = 'ResponseCore'; - - /** - * Default useragent string to use. - */ - public $useragent = 'RequestCore/1.4.4'; - - /** - * File to read from while streaming up. - */ - public $read_file = null; - - /** - * The resource to read from while streaming up. - */ - public $read_stream = null; - - /** - * The size of the stream to read from. - */ - public $read_stream_size = null; - - /** - * The length already read from the stream. - */ - public $read_stream_read = 0; - - /** - * File to write to while streaming down. - */ - public $write_file = null; - - /** - * The resource to write to while streaming down. - */ - public $write_stream = null; - - /** - * Stores the intended starting seek position. - */ - public $seek_position = null; - - /** - * The location of the cacert.pem file to use. - */ - public $cacert_location = false; - - /** - * The state of SSL certificate verification. - */ - public $ssl_verification = true; - - /** - * The user-defined callback function to call when a stream is read from. - */ - public $registered_streaming_read_callback = null; - - /** - * The user-defined callback function to call when a stream is written to. - */ - public $registered_streaming_write_callback = null; - - - /*%******************************************************************************************%*/ - // CONSTANTS - - /** - * GET HTTP Method - */ - const HTTP_GET = 'GET'; - - /** - * POST HTTP Method - */ - const HTTP_POST = 'POST'; - - /** - * PUT HTTP Method - */ - const HTTP_PUT = 'PUT'; - - /** - * DELETE HTTP Method - */ - const HTTP_DELETE = 'DELETE'; - - /** - * HEAD HTTP Method - */ - const HTTP_HEAD = 'HEAD'; - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR/DESTRUCTOR - - /** - * Constructs a new instance of this class. - * - * @param string $url (Optional) The URL to request or service endpoint to query. - * @param string $proxy (Optional) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` - * @param array $helpers (Optional) An associative array of classnames to use for request, and response functionality. Gets passed in automatically by the calling class. - * @return $this A reference to the current instance. - */ - public function __construct($url = null, $proxy = null, $helpers = null) - { - // Set some default values. - $this->request_url = $url; - $this->method = self::HTTP_GET; - $this->request_headers = array(); - $this->request_body = ''; - - // Set a new Request class if one was set. - if (isset($helpers['request']) && !empty($helpers['request'])) - { - $this->request_class = $helpers['request']; - } - - // Set a new Request class if one was set. - if (isset($helpers['response']) && !empty($helpers['response'])) - { - $this->response_class = $helpers['response']; - } - - if ($proxy) - { - $this->set_proxy($proxy); - } - - return $this; - } - - /** - * Destructs the instance. Closes opened file handles. - * - * @return $this A reference to the current instance. - */ - public function __destruct() - { - if (isset($this->read_file) && isset($this->read_stream)) - { - fclose($this->read_stream); - } - - if (isset($this->write_file) && isset($this->write_stream)) - { - fclose($this->write_stream); - } - - return $this; - } - - - /*%******************************************************************************************%*/ - // REQUEST METHODS - - /** - * Sets the credentials to use for authentication. - * - * @param string $user (Required) The username to authenticate with. - * @param string $pass (Required) The password to authenticate with. - * @return $this A reference to the current instance. - */ - public function set_credentials($user, $pass) - { - $this->username = $user; - $this->password = $pass; - return $this; - } - - /** - * Adds a custom HTTP header to the cURL request. - * - * @param string $key (Required) The custom HTTP header to set. - * @param mixed $value (Required) The value to assign to the custom HTTP header. - * @return $this A reference to the current instance. - */ - public function add_header($key, $value) - { - $this->request_headers[$key] = $value; - return $this; - } - - /** - * Removes an HTTP header from the cURL request. - * - * @param string $key (Required) The custom HTTP header to set. - * @return $this A reference to the current instance. - */ - public function remove_header($key) - { - if (isset($this->request_headers[$key])) - { - unset($this->request_headers[$key]); - } - return $this; - } - - /** - * Set the method type for the request. - * - * @param string $method (Required) One of the following constants: , , , , . - * @return $this A reference to the current instance. - */ - public function set_method($method) - { - $this->method = strtoupper($method); - return $this; - } - - /** - * Sets a custom useragent string for the class. - * - * @param string $ua (Required) The useragent string to use. - * @return $this A reference to the current instance. - */ - public function set_useragent($ua) - { - $this->useragent = $ua; - return $this; - } - - /** - * Set the body to send in the request. - * - * @param string $body (Required) The textual content to send along in the body of the request. - * @return $this A reference to the current instance. - */ - public function set_body($body) - { - $this->request_body = $body; - return $this; - } - - /** - * Set the URL to make the request to. - * - * @param string $url (Required) The URL to make the request to. - * @return $this A reference to the current instance. - */ - public function set_request_url($url) - { - $this->request_url = $url; - return $this; - } - - /** - * Set additional CURLOPT settings. These will merge with the default settings, and override if - * there is a duplicate. - * - * @param array $curlopts (Optional) A set of key-value pairs that set `CURLOPT` options. These will merge with the existing CURLOPTs, and ones passed here will override the defaults. Keys should be the `CURLOPT_*` constants, not strings. - * @return $this A reference to the current instance. - */ - public function set_curlopts($curlopts) - { - $this->curlopts = $curlopts; - return $this; - } - - /** - * Sets the length in bytes to read from the stream while streaming up. - * - * @param integer $size (Required) The length in bytes to read from the stream. - * @return $this A reference to the current instance. - */ - public function set_read_stream_size($size) - { - $this->read_stream_size = $size; - - return $this; - } - - /** - * Sets the resource to read from while streaming up. Reads the stream from its current position until - * EOF or `$size` bytes have been read. If `$size` is not given it will be determined by and - * . - * - * @param resource $resource (Required) The readable resource to read from. - * @param integer $size (Optional) The size of the stream to read. - * @return $this A reference to the current instance. - */ - public function set_read_stream($resource, $size = null) - { - if (!isset($size) || $size < 0) - { - $stats = fstat($resource); - - if ($stats && $stats['size'] >= 0) - { - $position = ftell($resource); - - if ($position !== false && $position >= 0) - { - $size = $stats['size'] - $position; - } - } - } - - $this->read_stream = $resource; - - return $this->set_read_stream_size($size); - } - - /** - * Sets the file to read from while streaming up. - * - * @param string $location (Required) The readable location to read from. - * @return $this A reference to the current instance. - */ - public function set_read_file($location) - { - $this->read_file = $location; - $read_file_handle = fopen($location, 'r'); - - return $this->set_read_stream($read_file_handle); - } - - /** - * Sets the resource to write to while streaming down. - * - * @param resource $resource (Required) The writeable resource to write to. - * @return $this A reference to the current instance. - */ - public function set_write_stream($resource) - { - $this->write_stream = $resource; - - return $this; - } - - /** - * Sets the file to write to while streaming down. - * - * @param string $location (Required) The writeable location to write to. - * @return $this A reference to the current instance. - */ - public function set_write_file($location) - { - $this->write_file = $location; - $write_file_handle = fopen($location, 'w'); - - return $this->set_write_stream($write_file_handle); - } - - /** - * Set the proxy to use for making requests. - * - * @param string $proxy (Required) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` - * @return $this A reference to the current instance. - */ - public function set_proxy($proxy) - { - $proxy = parse_url($proxy); - $proxy['user'] = isset($proxy['user']) ? $proxy['user'] : null; - $proxy['pass'] = isset($proxy['pass']) ? $proxy['pass'] : null; - $proxy['port'] = isset($proxy['port']) ? $proxy['port'] : null; - $this->proxy = $proxy; - return $this; - } - - /** - * Set the intended starting seek position. - * - * @param integer $position (Required) The byte-position of the stream to begin reading from. - * @return $this A reference to the current instance. - */ - public function set_seek_position($position) - { - $this->seek_position = isset($position) ? (integer) $position : null; - - return $this; - } - - /** - * Register a callback function to execute whenever a data stream is read from using - * . - * - * The user-defined callback function should accept three arguments: - * - *
    - *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • - *
  • $file_handle - resource - Required - The file handle resource that represents the file on the local file system.
  • - *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • - *
- * - * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    - *
  • The name of a global function to execute, passed as a string.
  • - *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • - *
  • An anonymous function (PHP 5.3+).
- * @return $this A reference to the current instance. - */ - public function register_streaming_read_callback($callback) - { - $this->registered_streaming_read_callback = $callback; - - return $this; - } - - /** - * Register a callback function to execute whenever a data stream is written to using - * . - * - * The user-defined callback function should accept two arguments: - * - *
    - *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • - *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • - *
- * - * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    - *
  • The name of a global function to execute, passed as a string.
  • - *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • - *
  • An anonymous function (PHP 5.3+).
- * @return $this A reference to the current instance. - */ - public function register_streaming_write_callback($callback) - { - $this->registered_streaming_write_callback = $callback; - - return $this; - } - - - /*%******************************************************************************************%*/ - // PREPARE, SEND, AND PROCESS REQUEST - - /** - * A callback function that is invoked by cURL for streaming up. - * - * @param resource $curl_handle (Required) The cURL handle for the request. - * @param resource $file_handle (Required) The open file handle resource. - * @param integer $length (Required) The maximum number of bytes to read. - * @return binary Binary data from a stream. - */ - public function streaming_read_callback($curl_handle, $file_handle, $length) - { - // Once we've sent as much as we're supposed to send... - if ($this->read_stream_read >= $this->read_stream_size) - { - // Send EOF - return ''; - } - - // If we're at the beginning of an upload and need to seek... - if ($this->read_stream_read == 0 && isset($this->seek_position) && $this->seek_position !== ftell($this->read_stream)) - { - if (fseek($this->read_stream, $this->seek_position) !== 0) - { - throw new RequestCore_Exception('The stream does not support seeking and is either not at the requested position or the position is unknown.'); - } - } - - $read = fread($this->read_stream, min($this->read_stream_size - $this->read_stream_read, $length)); // Remaining upload data or cURL's requested chunk size - $this->read_stream_read += strlen($read); - - $out = $read === false ? '' : $read; - - // Execute callback function - if ($this->registered_streaming_read_callback) - { - call_user_func($this->registered_streaming_read_callback, $curl_handle, $file_handle, $out); - } - - return $out; - } - - /** - * A callback function that is invoked by cURL for streaming down. - * - * @param resource $curl_handle (Required) The cURL handle for the request. - * @param binary $data (Required) The data to write. - * @return integer The number of bytes written. - */ - public function streaming_write_callback($curl_handle, $data) - { - $length = strlen($data); - $written_total = 0; - $written_last = 0; - - while ($written_total < $length) - { - $written_last = fwrite($this->write_stream, substr($data, $written_total)); - - if ($written_last === false) - { - return $written_total; - } - - $written_total += $written_last; - } - - // Execute callback function - if ($this->registered_streaming_write_callback) - { - call_user_func($this->registered_streaming_write_callback, $curl_handle, $written_total); - } - - return $written_total; - } - - /** - * Prepares and adds the details of the cURL request. This can be passed along to a - * function. - * - * @return resource The handle for the cURL object. - */ - public function prep_request() - { - $curl_handle = curl_init(); - - // Set default options. - curl_setopt($curl_handle, CURLOPT_URL, $this->request_url); - curl_setopt($curl_handle, CURLOPT_FILETIME, true); - curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, false); - curl_setopt($curl_handle, CURLOPT_CLOSEPOLICY, CURLCLOSEPOLICY_LEAST_RECENTLY_USED); - curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 5); - curl_setopt($curl_handle, CURLOPT_HEADER, true); - curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curl_handle, CURLOPT_TIMEOUT, 5184000); - curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 120); - curl_setopt($curl_handle, CURLOPT_NOSIGNAL, true); - curl_setopt($curl_handle, CURLOPT_REFERER, $this->request_url); - curl_setopt($curl_handle, CURLOPT_USERAGENT, $this->useragent); - curl_setopt($curl_handle, CURLOPT_READFUNCTION, array($this, 'streaming_read_callback')); - - // Verification of the SSL cert - if ($this->ssl_verification) - { - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, true); - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 2); - } - else - { - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false); - } - - // chmod the file as 0755 - if ($this->cacert_location === true) - { - curl_setopt($curl_handle, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); - } - elseif (is_string($this->cacert_location)) - { - curl_setopt($curl_handle, CURLOPT_CAINFO, $this->cacert_location); - } - - // Debug mode - if ($this->debug_mode) - { - curl_setopt($curl_handle, CURLOPT_VERBOSE, true); - } - - // Handle open_basedir & safe mode - if (!ini_get('safe_mode') && !ini_get('open_basedir')) - { - curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true); - } - - // Enable a proxy connection if requested. - if ($this->proxy) - { - curl_setopt($curl_handle, CURLOPT_HTTPPROXYTUNNEL, true); - - $host = $this->proxy['host']; - $host .= ($this->proxy['port']) ? ':' . $this->proxy['port'] : ''; - curl_setopt($curl_handle, CURLOPT_PROXY, $host); - - if (isset($this->proxy['user']) && isset($this->proxy['pass'])) - { - curl_setopt($curl_handle, CURLOPT_PROXYUSERPWD, $this->proxy['user'] . ':' . $this->proxy['pass']); - } - } - - // Set credentials for HTTP Basic/Digest Authentication. - if ($this->username && $this->password) - { - curl_setopt($curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY); - curl_setopt($curl_handle, CURLOPT_USERPWD, $this->username . ':' . $this->password); - } - - // Handle the encoding if we can. - if (extension_loaded('zlib')) - { - curl_setopt($curl_handle, CURLOPT_ENCODING, 'gzip, deflate'); - } - - // Process custom headers - if (isset($this->request_headers) && count($this->request_headers)) - { - $temp_headers = array(); - - foreach ($this->request_headers as $k => $v) - { - $temp_headers[] = $k . ': ' . $v; - } - - curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $temp_headers); - } - - switch ($this->method) - { - case self::HTTP_PUT: - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'PUT'); - if (isset($this->read_stream)) - { - if (!isset($this->read_stream_size) || $this->read_stream_size < 0) - { - throw new RequestCore_Exception('The stream size for the streaming upload cannot be determined.'); - } - - curl_setopt($curl_handle, CURLOPT_INFILESIZE, $this->read_stream_size); - curl_setopt($curl_handle, CURLOPT_UPLOAD, true); - } - else - { - curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); - } - break; - - case self::HTTP_POST: - curl_setopt($curl_handle, CURLOPT_POST, true); - curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); - break; - - case self::HTTP_HEAD: - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, self::HTTP_HEAD); - curl_setopt($curl_handle, CURLOPT_NOBODY, 1); - break; - - default: // Assumed GET - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, $this->method); - if (isset($this->write_stream)) - { - curl_setopt($curl_handle, CURLOPT_WRITEFUNCTION, array($this, 'streaming_write_callback')); - curl_setopt($curl_handle, CURLOPT_HEADER, false); - } - else - { - curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); - } - break; - } - - // Merge in the CURLOPTs - if (isset($this->curlopts) && sizeof($this->curlopts) > 0) - { - foreach ($this->curlopts as $k => $v) - { - curl_setopt($curl_handle, $k, $v); - } - } - - return $curl_handle; - } - - /** - * Take the post-processed cURL data and break it down into useful header/body/info chunks. Uses the - * data stored in the `curl_handle` and `response` properties unless replacement data is passed in via - * parameters. - * - * @param resource $curl_handle (Optional) The reference to the already executed cURL request. - * @param string $response (Optional) The actual response content itself that needs to be parsed. - * @return ResponseCore A object containing a parsed HTTP response. - */ - public function process_response($curl_handle = null, $response = null) - { - // Accept a custom one if it's passed. - if ($curl_handle && $response) - { - $this->curl_handle = $curl_handle; - $this->response = $response; - } - - // As long as this came back as a valid resource... - if (is_resource($this->curl_handle)) - { - // Determine what's what. - $header_size = curl_getinfo($this->curl_handle, CURLINFO_HEADER_SIZE); - $this->response_headers = substr($this->response, 0, $header_size); - $this->response_body = substr($this->response, $header_size); - $this->response_code = curl_getinfo($this->curl_handle, CURLINFO_HTTP_CODE); - $this->response_info = curl_getinfo($this->curl_handle); - - // Parse out the headers - $this->response_headers = explode("\r\n\r\n", trim($this->response_headers)); - $this->response_headers = array_pop($this->response_headers); - $this->response_headers = explode("\r\n", $this->response_headers); - array_shift($this->response_headers); - - // Loop through and split up the headers. - $header_assoc = array(); - foreach ($this->response_headers as $header) - { - $kv = explode(': ', $header); - $header_assoc[strtolower($kv[0])] = $kv[1]; - } - - // Reset the headers to the appropriate property. - $this->response_headers = $header_assoc; - $this->response_headers['_info'] = $this->response_info; - $this->response_headers['_info']['method'] = $this->method; - - if ($curl_handle && $response) - { - return new $this->response_class($this->response_headers, $this->response_body, $this->response_code, $this->curl_handle); - } - } - - // Return false - return false; - } - - /** - * Sends the request, calling necessary utility functions to update built-in properties. - * - * @param boolean $parse (Optional) Whether to parse the response with ResponseCore or not. - * @return string The resulting unparsed data from the request. - */ - public function send_request($parse = false) - { - set_time_limit(0); - - $curl_handle = $this->prep_request(); - $this->response = curl_exec($curl_handle); - - if ($this->response === false) - { - throw new cURL_Exception('cURL resource: ' . (string) $curl_handle . '; cURL error: ' . curl_error($curl_handle) . ' (cURL error code ' . curl_errno($curl_handle) . '). See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.'); - } - - $parsed_response = $this->process_response($curl_handle, $this->response); - - curl_close($curl_handle); - - if ($parse) - { - return $parsed_response; - } - - return $this->response; - } - - /** - * Sends the request using , enabling parallel requests. Uses the "rolling" method. - * - * @param array $handles (Required) An indexed array of cURL handles to process simultaneously. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • callback - string|array - Optional - The string name of a function to pass the response data to. If this is a method, pass an array where the [0] index is the class and the [1] index is the method name.
  • - *
  • limit - integer - Optional - The number of simultaneous requests to make. This can be useful for scaling around slow server responses. Defaults to trusting cURLs judgement as to how many to use.
- * @return array Post-processed cURL responses. - */ - public function send_multi_request($handles, $opt = null) - { - set_time_limit(0); - - // Skip everything if there are no handles to process. - if (count($handles) === 0) return array(); - - if (!$opt) $opt = array(); - - // Initialize any missing options - $limit = isset($opt['limit']) ? $opt['limit'] : -1; - - // Initialize - $handle_list = $handles; - $http = new $this->request_class(); - $multi_handle = curl_multi_init(); - $handles_post = array(); - $added = count($handles); - $last_handle = null; - $count = 0; - $i = 0; - - // Loop through the cURL handles and add as many as it set by the limit parameter. - while ($i < $added) - { - if ($limit > 0 && $i >= $limit) break; - curl_multi_add_handle($multi_handle, array_shift($handles)); - $i++; - } - - do - { - $active = false; - - // Start executing and wait for a response. - while (($status = curl_multi_exec($multi_handle, $active)) === CURLM_CALL_MULTI_PERFORM) - { - // Start looking for possible responses immediately when we have to add more handles - if (count($handles) > 0) break; - } - - // Figure out which requests finished. - $to_process = array(); - - while ($done = curl_multi_info_read($multi_handle)) - { - // Since curl_errno() isn't reliable for handles that were in multirequests, we check the 'result' of the info read, which contains the curl error number, (listed here http://curl.haxx.se/libcurl/c/libcurl-errors.html ) - if ($done['result'] > 0) - { - throw new cURL_Multi_Exception('cURL resource: ' . (string) $done['handle'] . '; cURL error: ' . curl_error($done['handle']) . ' (cURL error code ' . $done['result'] . '). See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.'); - } - - // Because curl_multi_info_read() might return more than one message about a request, we check to see if this request is already in our array of completed requests - elseif (!isset($to_process[(int) $done['handle']])) - { - $to_process[(int) $done['handle']] = $done; - } - } - - // Actually deal with the request - foreach ($to_process as $pkey => $done) - { - $response = $http->process_response($done['handle'], curl_multi_getcontent($done['handle'])); - $key = array_search($done['handle'], $handle_list, true); - $handles_post[$key] = $response; - - if (count($handles) > 0) - { - curl_multi_add_handle($multi_handle, array_shift($handles)); - } - - curl_multi_remove_handle($multi_handle, $done['handle']); - curl_close($done['handle']); - } - } - while ($active || count($handles_post) < $added); - - curl_multi_close($multi_handle); - - ksort($handles_post, SORT_NUMERIC); - return $handles_post; - } - - - /*%******************************************************************************************%*/ - // RESPONSE METHODS - - /** - * Get the HTTP response headers from the request. - * - * @param string $header (Optional) A specific header value to return. Defaults to all headers. - * @return string|array All or selected header values. - */ - public function get_response_header($header = null) - { - if ($header) - { - return $this->response_headers[strtolower($header)]; - } - return $this->response_headers; - } - - /** - * Get the HTTP response body from the request. - * - * @return string The response body. - */ - public function get_response_body() - { - return $this->response_body; - } - - /** - * Get the HTTP response code from the request. - * - * @return string The HTTP response code. - */ - public function get_response_code() - { - return $this->response_code; - } -} - - -/** - * Container for all response-related methods. - */ -class ResponseCore -{ - /** - * Stores the HTTP header information. - */ - public $header; - - /** - * Stores the SimpleXML response. - */ - public $body; - - /** - * Stores the HTTP response code. - */ - public $status; - - /** - * Constructs a new instance of this class. - * - * @param array $header (Required) Associative array of HTTP headers (typically returned by ). - * @param string $body (Required) XML-formatted response from AWS. - * @param integer $status (Optional) HTTP response status code from the request. - * @return object Contains an `header` property (HTTP headers as an associative array), a or `body` property, and an `status` code. - */ - public function __construct($header, $body, $status = null) - { - $this->header = $header; - $this->body = $body; - $this->status = $status; - - return $this; - } - - /** - * Did we receive the status code we expected? - * - * @param integer|array $codes (Optional) The status code(s) to expect. Pass an for a single acceptable value, or an of integers for multiple acceptable values. - * @return boolean Whether we received the expected status code or not. - */ - public function isOK($codes = array(200, 201, 204, 206)) - { - if (is_array($codes)) - { - return in_array($this->status, $codes); - } - - return $this->status === $codes; - } -} - -class cURL_Exception extends Exception {} -class cURL_Multi_Exception extends cURL_Exception {} -class RequestCore_Exception extends Exception {} diff --git a/3rdparty/aws-sdk/lib/yaml/LICENSE b/3rdparty/aws-sdk/lib/yaml/LICENSE deleted file mode 100644 index 3cef853170eb7dfe46d7db3376a4d65154cc4615..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/yaml/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2008-2009 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/3rdparty/aws-sdk/lib/yaml/README.markdown b/3rdparty/aws-sdk/lib/yaml/README.markdown deleted file mode 100644 index e4f80cfbac4bd0ead6ab4ae3b94c6b5591cdd0af..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/yaml/README.markdown +++ /dev/null @@ -1,15 +0,0 @@ -Symfony YAML: A PHP library that speaks YAML -============================================ - -Symfony YAML is a PHP library that parses YAML strings and converts them to -PHP arrays. It can also converts PHP arrays to YAML strings. Its official -website is at http://components.symfony-project.org/yaml/. - -The documentation is to be found in the `doc/` directory. - -Symfony YAML is licensed under the MIT license (see LICENSE file). - -The Symfony YAML library is developed and maintained by the -[symfony](http://www.symfony-project.org/) project team. It has been extracted -from symfony to be used as a standalone library. Symfony YAML is part of the -[symfony components project](http://components.symfony-project.org/). diff --git a/3rdparty/aws-sdk/lib/yaml/lib/sfYaml.php b/3rdparty/aws-sdk/lib/yaml/lib/sfYaml.php deleted file mode 100644 index 1d89ccc973615e9d7f6b07ded11280d63c8dffe2..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/yaml/lib/sfYaml.php +++ /dev/null @@ -1,135 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * sfYaml offers convenience methods to load and dump YAML. - * - * @package symfony - * @subpackage yaml - * @author Fabien Potencier - * @version SVN: $Id: sfYaml.class.php 8988 2008-05-15 20:24:26Z fabien $ - */ -class sfYaml -{ - static protected - $spec = '1.2'; - - /** - * Sets the YAML specification version to use. - * - * @param string $version The YAML specification version - */ - static public function setSpecVersion($version) - { - if (!in_array($version, array('1.1', '1.2'))) - { - throw new InvalidArgumentException(sprintf('Version %s of the YAML specifications is not supported', $version)); - } - - self::$spec = $version; - } - - /** - * Gets the YAML specification version to use. - * - * @return string The YAML specification version - */ - static public function getSpecVersion() - { - return self::$spec; - } - - /** - * Loads YAML into a PHP array. - * - * The load method, when supplied with a YAML stream (string or file), - * will do its best to convert YAML in a file into a PHP array. - * - * Usage: - * - * $array = sfYaml::load('config.yml'); - * print_r($array); - * - * - * @param string $input Path of YAML file or string containing YAML - * - * @return array The YAML converted to a PHP array - * - * @throws InvalidArgumentException If the YAML is not valid - */ - public static function load($input) - { - $file = ''; - - // if input is a file, process it - if (strpos($input, "\n") === false && is_file($input)) - { - $file = $input; - - ob_start(); - $retval = include($input); - $content = ob_get_clean(); - - // if an array is returned by the config file assume it's in plain php form else in YAML - $input = is_array($retval) ? $retval : $content; - } - - // if an array is returned by the config file assume it's in plain php form else in YAML - if (is_array($input)) - { - return $input; - } - - require_once dirname(__FILE__).'/sfYamlParser.php'; - - $yaml = new sfYamlParser(); - - try - { - $ret = $yaml->parse($input); - } - catch (Exception $e) - { - throw new InvalidArgumentException(sprintf('Unable to parse %s: %s', $file ? sprintf('file "%s"', $file) : 'string', $e->getMessage())); - } - - return $ret; - } - - /** - * Dumps a PHP array to a YAML string. - * - * The dump method, when supplied with an array, will do its best - * to convert the array into friendly YAML. - * - * @param array $array PHP array - * @param integer $inline The level where you switch to inline YAML - * - * @return string A YAML string representing the original PHP array - */ - public static function dump($array, $inline = 2) - { - require_once dirname(__FILE__).'/sfYamlDumper.php'; - - $yaml = new sfYamlDumper(); - - return $yaml->dump($array, $inline); - } -} - -/** - * Wraps echo to automatically provide a newline. - * - * @param string $string The string to echo with new line - */ -function echoln($string) -{ - echo $string."\n"; -} diff --git a/3rdparty/aws-sdk/lib/yaml/lib/sfYamlDumper.php b/3rdparty/aws-sdk/lib/yaml/lib/sfYamlDumper.php deleted file mode 100644 index 0ada2b37d210986e6dadd7c40d2b4cf5b60d6564..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/yaml/lib/sfYamlDumper.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -require_once(dirname(__FILE__).'/sfYamlInline.php'); - -/** - * sfYamlDumper dumps PHP variables to YAML strings. - * - * @package symfony - * @subpackage yaml - * @author Fabien Potencier - * @version SVN: $Id: sfYamlDumper.class.php 10575 2008-08-01 13:08:42Z nicolas $ - */ -class sfYamlDumper -{ - /** - * Dumps a PHP value to YAML. - * - * @param mixed $input The PHP value - * @param integer $inline The level where you switch to inline YAML - * @param integer $indent The level o indentation indentation (used internally) - * - * @return string The YAML representation of the PHP value - */ - public function dump($input, $inline = 0, $indent = 0) - { - $output = ''; - $prefix = $indent ? str_repeat(' ', $indent) : ''; - - if ($inline <= 0 || !is_array($input) || empty($input)) - { - $output .= $prefix.sfYamlInline::dump($input); - } - else - { - $isAHash = array_keys($input) !== range(0, count($input) - 1); - - foreach ($input as $key => $value) - { - $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value); - - $output .= sprintf('%s%s%s%s', - $prefix, - $isAHash ? sfYamlInline::dump($key).':' : '-', - $willBeInlined ? ' ' : "\n", - $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + 2) - ).($willBeInlined ? "\n" : ''); - } - } - - return $output; - } -} diff --git a/3rdparty/aws-sdk/lib/yaml/lib/sfYamlInline.php b/3rdparty/aws-sdk/lib/yaml/lib/sfYamlInline.php deleted file mode 100644 index 66edb4f07ab04189879fafc7db17b8d9b9a2ad21..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/yaml/lib/sfYamlInline.php +++ /dev/null @@ -1,442 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -require_once dirname(__FILE__).'/sfYaml.php'; - -/** - * sfYamlInline implements a YAML parser/dumper for the YAML inline syntax. - * - * @package symfony - * @subpackage yaml - * @author Fabien Potencier - * @version SVN: $Id: sfYamlInline.class.php 16177 2009-03-11 08:32:48Z fabien $ - */ -class sfYamlInline -{ - const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\']*(?:\'\'[^\']*)*)\')'; - - /** - * Convert a YAML string to a PHP array. - * - * @param string $value A YAML string - * - * @return array A PHP array representing the YAML string - */ - static public function load($value) - { - $value = trim($value); - - if (0 == strlen($value)) - { - return ''; - } - - if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) - { - $mbEncoding = mb_internal_encoding(); - mb_internal_encoding('ASCII'); - } - - switch ($value[0]) - { - case '[': - $result = self::parseSequence($value); - break; - case '{': - $result = self::parseMapping($value); - break; - default: - $result = self::parseScalar($value); - } - - if (isset($mbEncoding)) - { - mb_internal_encoding($mbEncoding); - } - - return $result; - } - - /** - * Dumps a given PHP variable to a YAML string. - * - * @param mixed $value The PHP variable to convert - * - * @return string The YAML string representing the PHP array - */ - static public function dump($value) - { - if ('1.1' === sfYaml::getSpecVersion()) - { - $trueValues = array('true', 'on', '+', 'yes', 'y'); - $falseValues = array('false', 'off', '-', 'no', 'n'); - } - else - { - $trueValues = array('true'); - $falseValues = array('false'); - } - - switch (true) - { - case is_resource($value): - throw new InvalidArgumentException('Unable to dump PHP resources in a YAML file.'); - case is_object($value): - return '!!php/object:'.serialize($value); - case is_array($value): - return self::dumpArray($value); - case null === $value: - return 'null'; - case true === $value: - return 'true'; - case false === $value: - return 'false'; - case ctype_digit($value): - return is_string($value) ? "'$value'" : (int) $value; - case is_numeric($value): - return is_infinite($value) ? str_ireplace('INF', '.Inf', strval($value)) : (is_string($value) ? "'$value'" : $value); - case false !== strpos($value, "\n") || false !== strpos($value, "\r"): - return sprintf('"%s"', str_replace(array('"', "\n", "\r"), array('\\"', '\n', '\r'), $value)); - case preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ - ? | < > = ! % @ ` ]/x', $value): - return sprintf("'%s'", str_replace('\'', '\'\'', $value)); - case '' == $value: - return "''"; - case preg_match(self::getTimestampRegex(), $value): - return "'$value'"; - case in_array(strtolower($value), $trueValues): - return "'$value'"; - case in_array(strtolower($value), $falseValues): - return "'$value'"; - case in_array(strtolower($value), array('null', '~')): - return "'$value'"; - default: - return $value; - } - } - - /** - * Dumps a PHP array to a YAML string. - * - * @param array $value The PHP array to dump - * - * @return string The YAML string representing the PHP array - */ - static protected function dumpArray($value) - { - // array - $keys = array_keys($value); - if ( - (1 == count($keys) && '0' == $keys[0]) - || - (count($keys) > 1 && array_reduce($keys, create_function('$v,$w', 'return (integer) $v + $w;'), 0) == count($keys) * (count($keys) - 1) / 2)) - { - $output = array(); - foreach ($value as $val) - { - $output[] = self::dump($val); - } - - return sprintf('[%s]', implode(', ', $output)); - } - - // mapping - $output = array(); - foreach ($value as $key => $val) - { - $output[] = sprintf('%s: %s', self::dump($key), self::dump($val)); - } - - return sprintf('{ %s }', implode(', ', $output)); - } - - /** - * Parses a scalar to a YAML string. - * - * @param scalar $scalar - * @param string $delimiters - * @param array $stringDelimiter - * @param integer $i - * @param boolean $evaluate - * - * @return string A YAML string - */ - static public function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true) - { - if (in_array($scalar[$i], $stringDelimiters)) - { - // quoted scalar - $output = self::parseQuotedScalar($scalar, $i); - } - else - { - // "normal" string - if (!$delimiters) - { - $output = substr($scalar, $i); - $i += strlen($output); - - // remove comments - if (false !== $strpos = strpos($output, ' #')) - { - $output = rtrim(substr($output, 0, $strpos)); - } - } - else if (preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) - { - $output = $match[1]; - $i += strlen($output); - } - else - { - throw new InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', $scalar)); - } - - $output = $evaluate ? self::evaluateScalar($output) : $output; - } - - return $output; - } - - /** - * Parses a quoted scalar to YAML. - * - * @param string $scalar - * @param integer $i - * - * @return string A YAML string - */ - static protected function parseQuotedScalar($scalar, &$i) - { - if (!preg_match('/'.self::REGEX_QUOTED_STRING.'/A', substr($scalar, $i), $match)) - { - throw new InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i))); - } - - $output = substr($match[0], 1, strlen($match[0]) - 2); - - if ('"' == $scalar[$i]) - { - // evaluate the string - $output = str_replace(array('\\"', '\\n', '\\r'), array('"', "\n", "\r"), $output); - } - else - { - // unescape ' - $output = str_replace('\'\'', '\'', $output); - } - - $i += strlen($match[0]); - - return $output; - } - - /** - * Parses a sequence to a YAML string. - * - * @param string $sequence - * @param integer $i - * - * @return string A YAML string - */ - static protected function parseSequence($sequence, &$i = 0) - { - $output = array(); - $len = strlen($sequence); - $i += 1; - - // [foo, bar, ...] - while ($i < $len) - { - switch ($sequence[$i]) - { - case '[': - // nested sequence - $output[] = self::parseSequence($sequence, $i); - break; - case '{': - // nested mapping - $output[] = self::parseMapping($sequence, $i); - break; - case ']': - return $output; - case ',': - case ' ': - break; - default: - $isQuoted = in_array($sequence[$i], array('"', "'")); - $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i); - - if (!$isQuoted && false !== strpos($value, ': ')) - { - // embedded mapping? - try - { - $value = self::parseMapping('{'.$value.'}'); - } - catch (InvalidArgumentException $e) - { - // no, it's not - } - } - - $output[] = $value; - - --$i; - } - - ++$i; - } - - throw new InvalidArgumentException(sprintf('Malformed inline YAML string %s', $sequence)); - } - - /** - * Parses a mapping to a YAML string. - * - * @param string $mapping - * @param integer $i - * - * @return string A YAML string - */ - static protected function parseMapping($mapping, &$i = 0) - { - $output = array(); - $len = strlen($mapping); - $i += 1; - - // {foo: bar, bar:foo, ...} - while ($i < $len) - { - switch ($mapping[$i]) - { - case ' ': - case ',': - ++$i; - continue 2; - case '}': - return $output; - } - - // key - $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false); - - // value - $done = false; - while ($i < $len) - { - switch ($mapping[$i]) - { - case '[': - // nested sequence - $output[$key] = self::parseSequence($mapping, $i); - $done = true; - break; - case '{': - // nested mapping - $output[$key] = self::parseMapping($mapping, $i); - $done = true; - break; - case ':': - case ' ': - break; - default: - $output[$key] = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i); - $done = true; - --$i; - } - - ++$i; - - if ($done) - { - continue 2; - } - } - } - - throw new InvalidArgumentException(sprintf('Malformed inline YAML string %s', $mapping)); - } - - /** - * Evaluates scalars and replaces magic values. - * - * @param string $scalar - * - * @return string A YAML string - */ - static protected function evaluateScalar($scalar) - { - $scalar = trim($scalar); - - if ('1.1' === sfYaml::getSpecVersion()) - { - $trueValues = array('true', 'on', '+', 'yes', 'y'); - $falseValues = array('false', 'off', '-', 'no', 'n'); - } - else - { - $trueValues = array('true'); - $falseValues = array('false'); - } - - switch (true) - { - case 'null' == strtolower($scalar): - case '' == $scalar: - case '~' == $scalar: - return null; - case 0 === strpos($scalar, '!str'): - return (string) substr($scalar, 5); - case 0 === strpos($scalar, '! '): - return intval(self::parseScalar(substr($scalar, 2))); - case 0 === strpos($scalar, '!!php/object:'): - return unserialize(substr($scalar, 13)); - case ctype_digit($scalar): - $raw = $scalar; - $cast = intval($scalar); - return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw); - case in_array(strtolower($scalar), $trueValues): - return true; - case in_array(strtolower($scalar), $falseValues): - return false; - case is_numeric($scalar): - return '0x' == $scalar[0].$scalar[1] ? hexdec($scalar) : floatval($scalar); - case 0 == strcasecmp($scalar, '.inf'): - case 0 == strcasecmp($scalar, '.NaN'): - return -log(0); - case 0 == strcasecmp($scalar, '-.inf'): - return log(0); - case preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar): - return floatval(str_replace(',', '', $scalar)); - case preg_match(self::getTimestampRegex(), $scalar): - return strtotime($scalar); - default: - return (string) $scalar; - } - } - - static protected function getTimestampRegex() - { - return <<[0-9][0-9][0-9][0-9]) - -(?P[0-9][0-9]?) - -(?P[0-9][0-9]?) - (?:(?:[Tt]|[ \t]+) - (?P[0-9][0-9]?) - :(?P[0-9][0-9]) - :(?P[0-9][0-9]) - (?:\.(?P[0-9]*))? - (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) - (?::(?P[0-9][0-9]))?))?)? - $~x -EOF; - } -} diff --git a/3rdparty/aws-sdk/lib/yaml/lib/sfYamlParser.php b/3rdparty/aws-sdk/lib/yaml/lib/sfYamlParser.php deleted file mode 100644 index 4c56a56db07128299142e2206d252a1b727c5686..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/lib/yaml/lib/sfYamlParser.php +++ /dev/null @@ -1,612 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -require_once(dirname(__FILE__).'/sfYamlInline.php'); - -if (!defined('PREG_BAD_UTF8_OFFSET_ERROR')) -{ - define('PREG_BAD_UTF8_OFFSET_ERROR', 5); -} - -/** - * sfYamlParser parses YAML strings to convert them to PHP arrays. - * - * @package symfony - * @subpackage yaml - * @author Fabien Potencier - * @version SVN: $Id: sfYamlParser.class.php 10832 2008-08-13 07:46:08Z fabien $ - */ -class sfYamlParser -{ - protected - $offset = 0, - $lines = array(), - $currentLineNb = -1, - $currentLine = '', - $refs = array(); - - /** - * Constructor - * - * @param integer $offset The offset of YAML document (used for line numbers in error messages) - */ - public function __construct($offset = 0) - { - $this->offset = $offset; - } - - /** - * Parses a YAML string to a PHP value. - * - * @param string $value A YAML string - * - * @return mixed A PHP value - * - * @throws InvalidArgumentException If the YAML is not valid - */ - public function parse($value) - { - $value = str_replace("\t", ' ', $value); // Convert tabs to spaces. - - $this->currentLineNb = -1; - $this->currentLine = ''; - $this->lines = explode("\n", $this->cleanup($value)); - - if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) - { - $mbEncoding = mb_internal_encoding(); - mb_internal_encoding('ASCII'); - } - - $data = array(); - while ($this->moveToNextLine()) - { - if ($this->isCurrentLineEmpty()) - { - continue; - } - - // tab? - if (preg_match('#^\t+#', $this->currentLine)) - { - throw new InvalidArgumentException(sprintf('A YAML file cannot contain tabs as indentation at line %d (%s).', $this->getRealCurrentLineNb() + 1, $this->currentLine)); - } - - $isRef = $isInPlace = $isProcessed = false; - if (preg_match('#^\-((?P\s+)(?P.+?))?\s*$#', $this->currentLine, $values)) - { - if (isset($values['value']) && preg_match('#^&(?P[^ ]+) *(?P.*)#', $values['value'], $matches)) - { - $isRef = $matches['ref']; - $values['value'] = $matches['value']; - } - - // array - if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) - { - $c = $this->getRealCurrentLineNb() + 1; - $parser = new sfYamlParser($c); - $parser->refs =& $this->refs; - $data[] = $parser->parse($this->getNextEmbedBlock()); - } - else - { - if (isset($values['leadspaces']) - && ' ' == $values['leadspaces'] - && preg_match('#^(?P'.sfYamlInline::REGEX_QUOTED_STRING.'|[^ \'"\{].*?) *\:(\s+(?P.+?))?\s*$#', $values['value'], $matches)) - { - // this is a compact notation element, add to next block and parse - $c = $this->getRealCurrentLineNb(); - $parser = new sfYamlParser($c); - $parser->refs =& $this->refs; - - $block = $values['value']; - if (!$this->isNextLineIndented()) - { - $block .= "\n".$this->getNextEmbedBlock($this->getCurrentLineIndentation() + 2); - } - - $data[] = $parser->parse($block); - } - else - { - $data[] = $this->parseValue($values['value']); - } - } - } - else if (preg_match('#^(?P'.sfYamlInline::REGEX_QUOTED_STRING.'|[^ \'"].*?) *\:(\s+(?P.+?))?\s*$#', $this->currentLine, $values)) - { - $key = sfYamlInline::parseScalar($values['key']); - - if ('<<' === $key) - { - if (isset($values['value']) && '*' === substr($values['value'], 0, 1)) - { - $isInPlace = substr($values['value'], 1); - if (!array_key_exists($isInPlace, $this->refs)) - { - throw new InvalidArgumentException(sprintf('Reference "%s" does not exist at line %s (%s).', $isInPlace, $this->getRealCurrentLineNb() + 1, $this->currentLine)); - } - } - else - { - if (isset($values['value']) && $values['value'] !== '') - { - $value = $values['value']; - } - else - { - $value = $this->getNextEmbedBlock(); - } - $c = $this->getRealCurrentLineNb() + 1; - $parser = new sfYamlParser($c); - $parser->refs =& $this->refs; - $parsed = $parser->parse($value); - - $merged = array(); - if (!is_array($parsed)) - { - throw new InvalidArgumentException(sprintf("YAML merge keys used with a scalar value instead of an array at line %s (%s)", $this->getRealCurrentLineNb() + 1, $this->currentLine)); - } - else if (isset($parsed[0])) - { - // Numeric array, merge individual elements - foreach (array_reverse($parsed) as $parsedItem) - { - if (!is_array($parsedItem)) - { - throw new InvalidArgumentException(sprintf("Merge items must be arrays at line %s (%s).", $this->getRealCurrentLineNb() + 1, $parsedItem)); - } - $merged = array_merge($parsedItem, $merged); - } - } - else - { - // Associative array, merge - $merged = array_merge($merge, $parsed); - } - - $isProcessed = $merged; - } - } - else if (isset($values['value']) && preg_match('#^&(?P[^ ]+) *(?P.*)#', $values['value'], $matches)) - { - $isRef = $matches['ref']; - $values['value'] = $matches['value']; - } - - if ($isProcessed) - { - // Merge keys - $data = $isProcessed; - } - // hash - else if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) - { - // if next line is less indented or equal, then it means that the current value is null - if ($this->isNextLineIndented()) - { - $data[$key] = null; - } - else - { - $c = $this->getRealCurrentLineNb() + 1; - $parser = new sfYamlParser($c); - $parser->refs =& $this->refs; - $data[$key] = $parser->parse($this->getNextEmbedBlock()); - } - } - else - { - if ($isInPlace) - { - $data = $this->refs[$isInPlace]; - } - else - { - $data[$key] = $this->parseValue($values['value']); - } - } - } - else - { - // 1-liner followed by newline - if (2 == count($this->lines) && empty($this->lines[1])) - { - $value = sfYamlInline::load($this->lines[0]); - if (is_array($value)) - { - $first = reset($value); - if ('*' === substr($first, 0, 1)) - { - $data = array(); - foreach ($value as $alias) - { - $data[] = $this->refs[substr($alias, 1)]; - } - $value = $data; - } - } - - if (isset($mbEncoding)) - { - mb_internal_encoding($mbEncoding); - } - - return $value; - } - - switch (preg_last_error()) - { - case PREG_INTERNAL_ERROR: - $error = 'Internal PCRE error on line'; - break; - case PREG_BACKTRACK_LIMIT_ERROR: - $error = 'pcre.backtrack_limit reached on line'; - break; - case PREG_RECURSION_LIMIT_ERROR: - $error = 'pcre.recursion_limit reached on line'; - break; - case PREG_BAD_UTF8_ERROR: - $error = 'Malformed UTF-8 data on line'; - break; - case PREG_BAD_UTF8_OFFSET_ERROR: - $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point on line'; - break; - default: - $error = 'Unable to parse line'; - } - - throw new InvalidArgumentException(sprintf('%s %d (%s).', $error, $this->getRealCurrentLineNb() + 1, $this->currentLine)); - } - - if ($isRef) - { - $this->refs[$isRef] = end($data); - } - } - - if (isset($mbEncoding)) - { - mb_internal_encoding($mbEncoding); - } - - return empty($data) ? null : $data; - } - - /** - * Returns the current line number (takes the offset into account). - * - * @return integer The current line number - */ - protected function getRealCurrentLineNb() - { - return $this->currentLineNb + $this->offset; - } - - /** - * Returns the current line indentation. - * - * @return integer The current line indentation - */ - protected function getCurrentLineIndentation() - { - return strlen($this->currentLine) - strlen(ltrim($this->currentLine, ' ')); - } - - /** - * Returns the next embed block of YAML. - * - * @param integer $indentation The indent level at which the block is to be read, or null for default - * - * @return string A YAML string - */ - protected function getNextEmbedBlock($indentation = null) - { - $this->moveToNextLine(); - - if (null === $indentation) - { - $newIndent = $this->getCurrentLineIndentation(); - - if (!$this->isCurrentLineEmpty() && 0 == $newIndent) - { - throw new InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine)); - } - } - else - { - $newIndent = $indentation; - } - - $data = array(substr($this->currentLine, $newIndent)); - - while ($this->moveToNextLine()) - { - if ($this->isCurrentLineEmpty()) - { - if ($this->isCurrentLineBlank()) - { - $data[] = substr($this->currentLine, $newIndent); - } - - continue; - } - - $indent = $this->getCurrentLineIndentation(); - - if (preg_match('#^(?P *)$#', $this->currentLine, $match)) - { - // empty line - $data[] = $match['text']; - } - else if ($indent >= $newIndent) - { - $data[] = substr($this->currentLine, $newIndent); - } - else if (0 == $indent) - { - $this->moveToPreviousLine(); - - break; - } - else - { - throw new InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine)); - } - } - - return implode("\n", $data); - } - - /** - * Moves the parser to the next line. - */ - protected function moveToNextLine() - { - if ($this->currentLineNb >= count($this->lines) - 1) - { - return false; - } - - $this->currentLine = $this->lines[++$this->currentLineNb]; - - return true; - } - - /** - * Moves the parser to the previous line. - */ - protected function moveToPreviousLine() - { - $this->currentLine = $this->lines[--$this->currentLineNb]; - } - - /** - * Parses a YAML value. - * - * @param string $value A YAML value - * - * @return mixed A PHP value - */ - protected function parseValue($value) - { - if ('*' === substr($value, 0, 1)) - { - if (false !== $pos = strpos($value, '#')) - { - $value = substr($value, 1, $pos - 2); - } - else - { - $value = substr($value, 1); - } - - if (!array_key_exists($value, $this->refs)) - { - throw new InvalidArgumentException(sprintf('Reference "%s" does not exist (%s).', $value, $this->currentLine)); - } - return $this->refs[$value]; - } - - if (preg_match('/^(?P\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?$/', $value, $matches)) - { - $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : ''; - - return $this->parseFoldedScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), intval(abs($modifiers))); - } - else - { - return sfYamlInline::load($value); - } - } - - /** - * Parses a folded scalar. - * - * @param string $separator The separator that was used to begin this folded scalar (| or >) - * @param string $indicator The indicator that was used to begin this folded scalar (+ or -) - * @param integer $indentation The indentation that was used to begin this folded scalar - * - * @return string The text value - */ - protected function parseFoldedScalar($separator, $indicator = '', $indentation = 0) - { - $separator = '|' == $separator ? "\n" : ' '; - $text = ''; - - $notEOF = $this->moveToNextLine(); - - while ($notEOF && $this->isCurrentLineBlank()) - { - $text .= "\n"; - - $notEOF = $this->moveToNextLine(); - } - - if (!$notEOF) - { - return ''; - } - - if (!preg_match('#^(?P'.($indentation ? str_repeat(' ', $indentation) : ' +').')(?P.*)$#', $this->currentLine, $matches)) - { - $this->moveToPreviousLine(); - - return ''; - } - - $textIndent = $matches['indent']; - $previousIndent = 0; - - $text .= $matches['text'].$separator; - while ($this->currentLineNb + 1 < count($this->lines)) - { - $this->moveToNextLine(); - - if (preg_match('#^(?P {'.strlen($textIndent).',})(?P.+)$#', $this->currentLine, $matches)) - { - if (' ' == $separator && $previousIndent != $matches['indent']) - { - $text = substr($text, 0, -1)."\n"; - } - $previousIndent = $matches['indent']; - - $text .= str_repeat(' ', $diff = strlen($matches['indent']) - strlen($textIndent)).$matches['text'].($diff ? "\n" : $separator); - } - else if (preg_match('#^(?P *)$#', $this->currentLine, $matches)) - { - $text .= preg_replace('#^ {1,'.strlen($textIndent).'}#', '', $matches['text'])."\n"; - } - else - { - $this->moveToPreviousLine(); - - break; - } - } - - if (' ' == $separator) - { - // replace last separator by a newline - $text = preg_replace('/ (\n*)$/', "\n$1", $text); - } - - switch ($indicator) - { - case '': - $text = preg_replace('#\n+$#s', "\n", $text); - break; - case '+': - break; - case '-': - $text = preg_replace('#\n+$#s', '', $text); - break; - } - - return $text; - } - - /** - * Returns true if the next line is indented. - * - * @return Boolean Returns true if the next line is indented, false otherwise - */ - protected function isNextLineIndented() - { - $currentIndentation = $this->getCurrentLineIndentation(); - $notEOF = $this->moveToNextLine(); - - while ($notEOF && $this->isCurrentLineEmpty()) - { - $notEOF = $this->moveToNextLine(); - } - - if (false === $notEOF) - { - return false; - } - - $ret = false; - if ($this->getCurrentLineIndentation() <= $currentIndentation) - { - $ret = true; - } - - $this->moveToPreviousLine(); - - return $ret; - } - - /** - * Returns true if the current line is blank or if it is a comment line. - * - * @return Boolean Returns true if the current line is empty or if it is a comment line, false otherwise - */ - protected function isCurrentLineEmpty() - { - return $this->isCurrentLineBlank() || $this->isCurrentLineComment(); - } - - /** - * Returns true if the current line is blank. - * - * @return Boolean Returns true if the current line is blank, false otherwise - */ - protected function isCurrentLineBlank() - { - return '' == trim($this->currentLine, ' '); - } - - /** - * Returns true if the current line is a comment line. - * - * @return Boolean Returns true if the current line is a comment line, false otherwise - */ - protected function isCurrentLineComment() - { - //checking explicitly the first char of the trim is faster than loops or strpos - $ltrimmedLine = ltrim($this->currentLine, ' '); - return $ltrimmedLine[0] === '#'; - } - - /** - * Cleanups a YAML string to be parsed. - * - * @param string $value The input YAML string - * - * @return string A cleaned up YAML string - */ - protected function cleanup($value) - { - $value = str_replace(array("\r\n", "\r"), "\n", $value); - - if (!preg_match("#\n$#", $value)) - { - $value .= "\n"; - } - - // strip YAML header - $count = 0; - $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#s', '', $value, -1, $count); - $this->offset += $count; - - // remove leading comments and/or --- - $trimmedValue = preg_replace('#^((\#.*?\n)|(\-\-\-.*?\n))*#s', '', $value, -1, $count); - if ($count == 1) - { - // items have been removed, update the offset - $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); - $value = $trimmedValue; - } - - return $value; - } -} diff --git a/3rdparty/aws-sdk/sdk.class.php b/3rdparty/aws-sdk/sdk.class.php deleted file mode 100755 index 8dcb7bf252f55ed8c02122936fcf49937458241f..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/sdk.class.php +++ /dev/null @@ -1,1435 +0,0 @@ -). - */ - public $utilities_class = 'CFUtilities'; - - /** - * The default class to use for HTTP requests (defaults to ). - */ - public $request_class = 'CFRequest'; - - /** - * The default class to use for HTTP responses (defaults to ). - */ - public $response_class = 'CFResponse'; - - /** - * The default class to use for parsing XML (defaults to ). - */ - public $parser_class = 'CFSimpleXML'; - - /** - * The default class to use for handling batch requests (defaults to ). - */ - public $batch_class = 'CFBatchRequest'; - - /** - * The state of SSL/HTTPS use. - */ - public $use_ssl = true; - - /** - * The state of SSL certificate verification. - */ - public $ssl_verification = true; - - /** - * The proxy to use for connecting. - */ - public $proxy = null; - - /** - * The alternate hostname to use, if any. - */ - public $hostname = null; - - /** - * The state of the capability to override the hostname with . - */ - public $override_hostname = true; - - /** - * The alternate port number to use, if any. - */ - public $port_number = null; - - /** - * The alternate resource prefix to use, if any. - */ - public $resource_prefix = null; - - /** - * The state of cache flow usage. - */ - public $use_cache_flow = false; - - /** - * The caching class to use. - */ - public $cache_class = null; - - /** - * The caching location to use. - */ - public $cache_location = null; - - /** - * When the cache should be considered stale. - */ - public $cache_expires = null; - - /** - * The state of cache compression. - */ - public $cache_compress = null; - - /** - * The current instantiated cache object. - */ - public $cache_object = null; - - /** - * The current instantiated batch request object. - */ - public $batch_object = null; - - /** - * The internally instantiated batch request object. - */ - public $internal_batch_object = null; - - /** - * The state of batch flow usage. - */ - public $use_batch_flow = false; - - /** - * The state of the cache deletion setting. - */ - public $delete_cache = false; - - /** - * The state of the debug mode setting. - */ - public $debug_mode = false; - - /** - * The number of times to retry failed requests. - */ - public $max_retries = 3; - - /** - * The user-defined callback function to call when a stream is read from. - */ - public $registered_streaming_read_callback = null; - - /** - * The user-defined callback function to call when a stream is written to. - */ - public $registered_streaming_write_callback = null; - - /** - * The credentials to use for authentication. - */ - public $credentials = array(); - - /** - * The authentication class to use. - */ - public $auth_class = null; - - /** - * The operation to execute. - */ - public $operation = null; - - /** - * The payload to send. - */ - public $payload = array(); - - /** - * The string prefix to prepend to the operation name. - */ - public $operation_prefix = ''; - - /** - * The number of times a request has been retried. - */ - public $redirects = 0; - - /** - * The state of whether the response should be parsed or not. - */ - public $parse_the_response = true; - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * The constructor. This class should not be instantiated directly. Rather, a service-specific class - * should be instantiated. - * - * @param array $options (Optional) An associative array of parameters that can have the following keys:
    - *
  • certificate_authority - boolean - Optional - Determines which Cerificate Authority file to use. A value of boolean false will use the Certificate Authority file available on the system. A value of boolean true will use the Certificate Authority provided by the SDK. Passing a file system path to a Certificate Authority file (chmodded to 0755) will use that. Leave this set to false if you're not sure.
  • - *
  • credentials - string - Optional - The name of the credential set to use for authentication.
  • - *
  • default_cache_config - string - Optional - This option allows a preferred storage type to be configured for long-term caching. This can be changed later using the method. Valid values are: apc, xcache, or a file system path such as ./cache or /tmp/cache/.
  • - *
  • key - string - Optional - Your AWS key, or a session key. If blank, the default credential set will be used.
  • - *
  • secret - string - Optional - Your AWS secret key, or a session secret key. If blank, the default credential set will be used.
  • - *
  • token - string - Optional - An AWS session token.
- * @return void - */ - public function __construct(array $options = array()) - { - // Instantiate the utilities class. - $this->util = new $this->utilities_class(); - - // Determine the current service. - $this->service = get_class($this); - - // Create credentials based on the options - $instance_credentials = new CFCredential($options); - - // Retreive a credential set from config.inc.php if it exists - if (isset($options['credentials'])) - { - // Use a specific credential set and merge with the instance credentials - $this->credentials = CFCredentials::get($options['credentials']) - ->merge($instance_credentials); - } - else - { - try - { - // Use the default credential set and merge with the instance credentials - $this->credentials = CFCredentials::get(CFCredentials::DEFAULT_KEY) - ->merge($instance_credentials); - } - catch (CFCredentials_Exception $e) - { - if (isset($options['key']) && isset($options['secret'])) - { - // Only the instance credentials were provided - $this->credentials = $instance_credentials; - } - else - { - // No credentials provided in the config file or constructor - throw new CFCredentials_Exception('No credentials were provided to ' . $this->service . '.'); - } - } - } - - // Set internal credentials after they are resolved - $this->key = $this->credentials->key; - $this->secret_key = $this->credentials->secret; - $this->auth_token = $this->credentials->token; - - // Automatically enable whichever caching mechanism is set to default. - $this->set_cache_config($this->credentials->default_cache_config); - } - - /** - * Alternate approach to constructing a new instance. Supports chaining. - * - * @param array $options (Optional) An associative array of parameters that can have the following keys:
    - *
  • certificate_authority - boolean - Optional - Determines which Cerificate Authority file to use. A value of boolean false will use the Certificate Authority file available on the system. A value of boolean true will use the Certificate Authority provided by the SDK. Passing a file system path to a Certificate Authority file (chmodded to 0755) will use that. Leave this set to false if you're not sure.
  • - *
  • credentials - string - Optional - The name of the credential set to use for authentication.
  • - *
  • default_cache_config - string - Optional - This option allows a preferred storage type to be configured for long-term caching. This can be changed later using the method. Valid values are: apc, xcache, or a file system path such as ./cache or /tmp/cache/.
  • - *
  • key - string - Optional - Your AWS key, or a session key. If blank, the default credential set will be used.
  • - *
  • secret - string - Optional - Your AWS secret key, or a session secret key. If blank, the default credential set will be used.
  • - *
  • token - string - Optional - An AWS session token.
- * @return void - */ - public static function factory(array $options = array()) - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) - { - throw new Exception('PHP 5.3 or newer is required to instantiate a new class with CLASS::factory().'); - } - - $self = get_called_class(); - return new $self($options); - } - - - /*%******************************************************************************************%*/ - // MAGIC METHODS - - /** - * A magic method that allows `camelCase` method names to be translated into `snake_case` names. - * - * @param string $name (Required) The name of the method. - * @param array $arguments (Required) The arguments passed to the method. - * @return mixed The results of the intended method. - */ - public function __call($name, $arguments) - { - // Convert camelCase method calls to snake_case. - $method_name = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $name)); - - if (method_exists($this, $method_name)) - { - return call_user_func_array(array($this, $method_name), $arguments); - } - - throw new CFRuntime_Exception('The method ' . $name . '() is undefined. Attempted to map to ' . $method_name . '() which is also undefined. Error occurred'); - } - - - /*%******************************************************************************************%*/ - // SET CUSTOM SETTINGS - - /** - * Set the proxy settings to use. - * - * @param string $proxy (Required) Accepts proxy credentials in the following format: `proxy://user:pass@hostname:port` - * @return $this A reference to the current instance. - */ - public function set_proxy($proxy) - { - $this->proxy = $proxy; - return $this; - } - - /** - * Set the hostname to connect to. This is useful for alternate services that are API-compatible with - * AWS, but run from a different hostname. - * - * @param string $hostname (Required) The alternate hostname to use in place of the default one. Useful for mock or test applications living on different hostnames. - * @param integer $port_number (Optional) The alternate port number to use in place of the default one. Useful for mock or test applications living on different port numbers. - * @return $this A reference to the current instance. - */ - public function set_hostname($hostname, $port_number = null) - { - if ($this->override_hostname) - { - $this->hostname = $hostname; - - if ($port_number) - { - $this->port_number = $port_number; - $this->hostname .= ':' . (string) $this->port_number; - } - } - - return $this; - } - - /** - * Set the resource prefix to use. This method is useful for alternate services that are API-compatible - * with AWS. - * - * @param string $prefix (Required) An alternate prefix to prepend to the resource path. Useful for mock or test applications. - * @return $this A reference to the current instance. - */ - public function set_resource_prefix($prefix) - { - $this->resource_prefix = $prefix; - return $this; - } - - /** - * Disables any subsequent use of the method. - * - * @param boolean $override (Optional) Whether or not subsequent calls to should be obeyed. A `false` value disables the further effectiveness of . Defaults to `true`. - * @return $this A reference to the current instance. - */ - public function allow_hostname_override($override = true) - { - $this->override_hostname = $override; - return $this; - } - - /** - * Disables SSL/HTTPS connections for hosts that don't support them. Some services, however, still - * require SSL support. - * - * This method will throw a user warning when invoked, which can be hidden by changing your - * settings. - * - * @return $this A reference to the current instance. - */ - public function disable_ssl() - { - trigger_error('Disabling SSL connections is potentially unsafe and highly discouraged.', E_USER_WARNING); - $this->use_ssl = false; - return $this; - } - - /** - * Disables the verification of the SSL Certificate Authority. Doing so can enable an attacker to carry - * out a man-in-the-middle attack. - * - * https://secure.wikimedia.org/wikipedia/en/wiki/Man-in-the-middle_attack - * - * This method will throw a user warning when invoked, which can be hidden by changing your - * settings. - * - * @return $this A reference to the current instance. - */ - public function disable_ssl_verification($ssl_verification = false) - { - trigger_error('Disabling the verification of SSL certificates can lead to man-in-the-middle attacks. It is potentially unsafe and highly discouraged.', E_USER_WARNING); - $this->ssl_verification = $ssl_verification; - return $this; - } - - /** - * Enables HTTP request/response header logging to `STDERR`. - * - * @param boolean $enabled (Optional) Whether or not to enable debug mode. Defaults to `true`. - * @return $this A reference to the current instance. - */ - public function enable_debug_mode($enabled = true) - { - $this->debug_mode = $enabled; - return $this; - } - - /** - * Sets the maximum number of times to retry failed requests. - * - * @param integer $retries (Optional) The maximum number of times to retry failed requests. Defaults to `3`. - * @return $this A reference to the current instance. - */ - public function set_max_retries($retries = 3) - { - $this->max_retries = $retries; - return $this; - } - - /** - * Set the caching configuration to use for response caching. - * - * @param string $location (Required)

The location to store the cache object in. This may vary by cache method.

  • File - The local file system paths such as ./cache (relative) or /tmp/cache/ (absolute). The location must be server-writable.
  • APC - Pass in apc to use this lightweight cache. You must have the APC extension installed.
  • XCache - Pass in xcache to use this lightweight cache. You must have the XCache extension installed.
  • Memcached - Pass in an indexed array of associative arrays. Each associative array should have a host and a port value representing a Memcached server to connect to.
  • PDO - A URL-style string (e.g. pdo.mysql://user:pass@localhost/cache) or a standard DSN-style string (e.g. pdo.sqlite:/sqlite/cache.db). MUST be prefixed with pdo.. See CachePDO and PDO for more details.
- * @param boolean $gzip (Optional) Whether or not data should be gzipped before being stored. A value of `true` will compress the contents before caching them. A value of `false` will leave the contents uncompressed. Defaults to `true`. - * @return $this A reference to the current instance. - */ - public function set_cache_config($location, $gzip = true) - { - // If we have an array, we're probably passing in Memcached servers and ports. - if (is_array($location)) - { - $this->cache_class = 'CacheMC'; - } - else - { - // I would expect locations like `/tmp/cache`, `pdo.mysql://user:pass@hostname:port`, `pdo.sqlite:memory:`, and `apc`. - $type = strtolower(substr($location, 0, 3)); - switch ($type) - { - case 'apc': - $this->cache_class = 'CacheAPC'; - break; - - case 'xca': // First three letters of `xcache` - $this->cache_class = 'CacheXCache'; - break; - - case 'pdo': - $this->cache_class = 'CachePDO'; - $location = substr($location, 4); - break; - - default: - $this->cache_class = 'CacheFile'; - break; - } - } - - // Set the remaining cache information. - $this->cache_location = $location; - $this->cache_compress = $gzip; - - return $this; - } - - /** - * Register a callback function to execute whenever a data stream is read from using - * . - * - * The user-defined callback function should accept three arguments: - * - *
    - *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • - *
  • $file_handle - resource - Required - The file handle resource that represents the file on the local file system.
  • - *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • - *
- * - * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    - *
  • The name of a global function to execute, passed as a string.
  • - *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • - *
  • An anonymous function (PHP 5.3+).
- * @return $this A reference to the current instance. - */ - public function register_streaming_read_callback($callback) - { - $this->registered_streaming_read_callback = $callback; - return $this; - } - - /** - * Register a callback function to execute whenever a data stream is written to using - * . - * - * The user-defined callback function should accept two arguments: - * - *
    - *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • - *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • - *
- * - * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    - *
  • The name of a global function to execute, passed as a string.
  • - *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • - *
  • An anonymous function (PHP 5.3+).
- * @return $this A reference to the current instance. - */ - public function register_streaming_write_callback($callback) - { - $this->registered_streaming_write_callback = $callback; - return $this; - } - - /** - * Fetches and caches STS credentials. This is meant to be used by the constructor, and is not to be - * manually invoked. - * - * @param CacheCore $cache (Required) The a reference to the cache object that is being used to handle the caching. - * @param array $options (Required) The options that were passed into the constructor. - * @return mixed The data to be cached, or NULL. - */ - public function cache_sts_credentials($cache, $options) - { - $token = new AmazonSTS($options); - $response = $token->get_session_token(); - - if ($response->isOK()) - { - // Update the expiration - $expiration_time = strtotime((string) $response->body->GetSessionTokenResult->Credentials->Expiration); - $expiration_duration = round(($expiration_time - time()) * 0.85); - $cache->expire_in($expiration_duration); - - // Return the important data - return array( - 'key' => (string) $response->body->GetSessionTokenResult->Credentials->AccessKeyId, - 'secret' => (string) $response->body->GetSessionTokenResult->Credentials->SecretAccessKey, - 'token' => (string) $response->body->GetSessionTokenResult->Credentials->SessionToken, - 'expires' => (string) $response->body->GetSessionTokenResult->Credentials->Expiration, - ); - } - - return null; - } - - - /*%******************************************************************************************%*/ - // SET CUSTOM CLASSES - - /** - * Set a custom class for this functionality. Use this method when extending/overriding existing classes - * with new functionality. - * - * The replacement class must extend from . - * - * @param string $class (Optional) The name of the new class to use for this functionality. - * @return $this A reference to the current instance. - */ - public function set_utilities_class($class = 'CFUtilities') - { - $this->utilities_class = $class; - $this->util = new $this->utilities_class(); - return $this; - } - - /** - * Set a custom class for this functionality. Use this method when extending/overriding existing classes - * with new functionality. - * - * The replacement class must extend from . - * - * @param string $class (Optional) The name of the new class to use for this functionality. - * @param $this A reference to the current instance. - */ - public function set_request_class($class = 'CFRequest') - { - $this->request_class = $class; - return $this; - } - - /** - * Set a custom class for this functionality. Use this method when extending/overriding existing classes - * with new functionality. - * - * The replacement class must extend from . - * - * @param string $class (Optional) The name of the new class to use for this functionality. - * @return $this A reference to the current instance. - */ - public function set_response_class($class = 'CFResponse') - { - $this->response_class = $class; - return $this; - } - - /** - * Set a custom class for this functionality. Use this method when extending/overriding existing classes - * with new functionality. - * - * The replacement class must extend from . - * - * @param string $class (Optional) The name of the new class to use for this functionality. - * @return $this A reference to the current instance. - */ - public function set_parser_class($class = 'CFSimpleXML') - { - $this->parser_class = $class; - return $this; - } - - /** - * Set a custom class for this functionality. Use this method when extending/overriding existing classes - * with new functionality. - * - * The replacement class must extend from . - * - * @param string $class (Optional) The name of the new class to use for this functionality. - * @return $this A reference to the current instance. - */ - public function set_batch_class($class = 'CFBatchRequest') - { - $this->batch_class = $class; - return $this; - } - - - /*%******************************************************************************************%*/ - // AUTHENTICATION - - /** - * Default, shared method for authenticating a connection to AWS. - * - * @param string $operation (Required) Indicates the operation to perform. - * @param array $payload (Required) An associative array of parameters for authenticating. See the individual methods for allowed keys. - * @return CFResponse Object containing a parsed HTTP response. - */ - public function authenticate($operation, $payload) - { - $original_payload = $payload; - $method_arguments = func_get_args(); - $curlopts = array(); - $return_curl_handle = false; - - if (substr($operation, 0, strlen($this->operation_prefix)) !== $this->operation_prefix) - { - $operation = $this->operation_prefix . $operation; - } - - // Extract the custom CURLOPT settings from the payload - if (is_array($payload) && isset($payload['curlopts'])) - { - $curlopts = $payload['curlopts']; - unset($payload['curlopts']); - } - - // Determine whether the response or curl handle should be returned - if (is_array($payload) && isset($payload['returnCurlHandle'])) - { - $return_curl_handle = isset($payload['returnCurlHandle']) ? $payload['returnCurlHandle'] : false; - unset($payload['returnCurlHandle']); - } - - // Use the caching flow to determine if we need to do a round-trip to the server. - if ($this->use_cache_flow) - { - // Generate an identifier specific to this particular set of arguments. - $cache_id = $this->key . '_' . get_class($this) . '_' . $operation . '_' . sha1(serialize($method_arguments)); - - // Instantiate the appropriate caching object. - $this->cache_object = new $this->cache_class($cache_id, $this->cache_location, $this->cache_expires, $this->cache_compress); - - if ($this->delete_cache) - { - $this->use_cache_flow = false; - $this->delete_cache = false; - return $this->cache_object->delete(); - } - - // Invoke the cache callback function to determine whether to pull data from the cache or make a fresh request. - $data = $this->cache_object->response_manager(array($this, 'cache_callback'), $method_arguments); - - // Parse the XML body - $data = $this->parse_callback($data); - - // End! - return $data; - } - - /*%******************************************************************************************%*/ - - // Signer - $signer = new $this->auth_class($this->hostname, $operation, $payload, $this->credentials); - $signer->key = $this->key; - $signer->secret_key = $this->secret_key; - $signer->auth_token = $this->auth_token; - $signer->api_version = $this->api_version; - $signer->utilities_class = $this->utilities_class; - $signer->request_class = $this->request_class; - $signer->response_class = $this->response_class; - $signer->use_ssl = $this->use_ssl; - $signer->proxy = $this->proxy; - $signer->util = $this->util; - $signer->registered_streaming_read_callback = $this->registered_streaming_read_callback; - $signer->registered_streaming_write_callback = $this->registered_streaming_write_callback; - $request = $signer->authenticate(); - - // Update RequestCore settings - $request->request_class = $this->request_class; - $request->response_class = $this->response_class; - $request->ssl_verification = $this->ssl_verification; - - /*%******************************************************************************************%*/ - - // Debug mode - if ($this->debug_mode) - { - $request->debug_mode = $this->debug_mode; - } - - // Set custom CURLOPT settings - if (count($curlopts)) - { - $request->set_curlopts($curlopts); - } - - // Manage the (newer) batch request API or the (older) returnCurlHandle setting. - if ($this->use_batch_flow) - { - $handle = $request->prep_request(); - $this->batch_object->add($handle); - $this->use_batch_flow = false; - - return $handle; - } - elseif ($return_curl_handle) - { - return $request->prep_request(); - } - - // Send! - $request->send_request(); - - // Prepare the response. - $headers = $request->get_response_header(); - $headers['x-aws-stringtosign'] = $signer->string_to_sign; - - if (isset($signer->canonical_request)) - { - $headers['x-aws-canonicalrequest'] = $signer->canonical_request; - } - - $headers['x-aws-request-headers'] = $request->request_headers; - $headers['x-aws-body'] = $signer->querystring; - - $data = new $this->response_class($headers, ($this->parse_the_response === true) ? $this->parse_callback($request->get_response_body()) : $request->get_response_body(), $request->get_response_code()); - - // Was it Amazon's fault the request failed? Retry the request until we reach $max_retries. - if ( - (integer) $request->get_response_code() === 500 || // Internal Error (presumably transient) - (integer) $request->get_response_code() === 503) // Service Unavailable (presumably transient) - { - if ($this->redirects <= $this->max_retries) - { - // Exponential backoff - $delay = (integer) (pow(4, $this->redirects) * 100000); - usleep($delay); - $this->redirects++; - $data = $this->authenticate($operation, $original_payload); - } - } - - // DynamoDB has custom logic - elseif ( - (integer) $request->get_response_code() === 400 && - stripos((string) $request->get_response_body(), 'com.amazonaws.dynamodb.') !== false && ( - stripos((string) $request->get_response_body(), 'ProvisionedThroughputExceededException') !== false - ) - ) - { - if ($this->redirects === 0) - { - $this->redirects++; - $data = $this->authenticate($operation, $original_payload); - } - elseif ($this->redirects <= max($this->max_retries, 10)) - { - // Exponential backoff - $delay = (integer) (pow(2, ($this->redirects - 1)) * 50000); - usleep($delay); - $this->redirects++; - $data = $this->authenticate($operation, $original_payload); - } - } - - $this->redirects = 0; - return $data; - } - - - /*%******************************************************************************************%*/ - // BATCH REQUEST LAYER - - /** - * Specifies that the intended request should be queued for a later batch request. - * - * @param CFBatchRequest $queue (Optional) The instance to use for managing batch requests. If not available, it generates a new instance of . - * @return $this A reference to the current instance. - */ - public function batch(CFBatchRequest &$queue = null) - { - if ($queue) - { - $this->batch_object = $queue; - } - elseif ($this->internal_batch_object) - { - $this->batch_object = &$this->internal_batch_object; - } - else - { - $this->internal_batch_object = new $this->batch_class(); - $this->batch_object = &$this->internal_batch_object; - } - - $this->use_batch_flow = true; - - return $this; - } - - /** - * Executes the batch request queue by sending all queued requests. - * - * @param boolean $clear_after_send (Optional) Whether or not to clear the batch queue after sending a request. Defaults to `true`. Set this to `false` if you are caching batch responses and want to retrieve results later. - * @return array An array of objects. - */ - public function send($clear_after_send = true) - { - if ($this->use_batch_flow) - { - // When we send the request, disable batch flow. - $this->use_batch_flow = false; - - // If we're not caching, simply send the request. - if (!$this->use_cache_flow) - { - $response = $this->batch_object->send(); - $parsed_data = array_map(array($this, 'parse_callback'), $response); - $parsed_data = new CFArray($parsed_data); - - // Clear the queue - if ($clear_after_send) - { - $this->batch_object->queue = array(); - } - - return $parsed_data; - } - - // Generate an identifier specific to this particular set of arguments. - $cache_id = $this->key . '_' . get_class($this) . '_' . sha1(serialize($this->batch_object)); - - // Instantiate the appropriate caching object. - $this->cache_object = new $this->cache_class($cache_id, $this->cache_location, $this->cache_expires, $this->cache_compress); - - if ($this->delete_cache) - { - $this->use_cache_flow = false; - $this->delete_cache = false; - return $this->cache_object->delete(); - } - - // Invoke the cache callback function to determine whether to pull data from the cache or make a fresh request. - $data_set = $this->cache_object->response_manager(array($this, 'cache_callback_batch'), array($this->batch_object)); - $parsed_data = array_map(array($this, 'parse_callback'), $data_set); - $parsed_data = new CFArray($parsed_data); - - // Clear the queue - if ($clear_after_send) - { - $this->batch_object->queue = array(); - } - - // End! - return $parsed_data; - } - - // Load the class - $null = new CFBatchRequest(); - unset($null); - - throw new CFBatchRequest_Exception('You must use $object->batch()->send()'); - } - - /** - * Parses a response body into a PHP object if appropriate. - * - * @param CFResponse|string $response (Required) The object to parse, or an XML string that would otherwise be a response body. - * @param string $content_type (Optional) The content-type to use when determining how to parse the content. - * @return CFResponse|string A parsed object, or parsed XML. - */ - public function parse_callback($response, $headers = null) - { - // Bail out - if (!$this->parse_the_response) return $response; - - // Shorten this so we have a (mostly) single code path - if (isset($response->body)) - { - if (is_string($response->body)) - { - $body = $response->body; - } - else - { - return $response; - } - } - elseif (is_string($response)) - { - $body = $response; - } - else - { - return $response; - } - - // Decompress gzipped content - if (isset($headers['content-encoding'])) - { - switch (strtolower(trim($headers['content-encoding'], "\x09\x0A\x0D\x20"))) - { - case 'gzip': - case 'x-gzip': - $decoder = new CFGzipDecode($body); - if ($decoder->parse()) - { - $body = $decoder->data; - } - break; - - case 'deflate': - if (($uncompressed = gzuncompress($body)) !== false) - { - $body = $uncompressed; - } - elseif (($uncompressed = gzinflate($body)) !== false) - { - $body = $uncompressed; - } - break; - } - } - - // Look for XML cues - if ( - (isset($headers['content-type']) && ($headers['content-type'] === 'text/xml' || $headers['content-type'] === 'application/xml')) || // We know it's XML - (!isset($headers['content-type']) && (stripos($body, '') === 0) || preg_match('/^<(\w*) xmlns="http(s?):\/\/(\w*).amazon(aws)?.com/im', $body)) // Sniff for XML - ) - { - // Strip the default XML namespace to simplify XPath expressions - $body = str_replace("xmlns=", "ns=", $body); - - try { - // Parse the XML body - $body = new $this->parser_class($body); - } - catch (Exception $e) - { - throw new Parser_Exception($e->getMessage()); - } - } - // Look for JSON cues - elseif ( - (isset($headers['content-type']) && ($headers['content-type'] === 'application/json') || $headers['content-type'] === 'application/x-amz-json-1.0') || // We know it's JSON - (!isset($headers['content-type']) && $this->util->is_json($body)) // Sniff for JSON - ) - { - // Normalize JSON to a CFSimpleXML object - $body = CFJSON::to_xml($body, $this->parser_class); - } - - // Put the parsed data back where it goes - if (isset($response->body)) - { - $response->body = $body; - } - else - { - $response = $body; - } - - return $response; - } - - - /*%******************************************************************************************%*/ - // CACHING LAYER - - /** - * Specifies that the resulting object should be cached according to the settings from - * . - * - * @param string|integer $expires (Required) The time the cache is to expire. Accepts a number of seconds as an integer, or an amount of time, as a string, that is understood by (e.g. "1 hour"). - * @param $this A reference to the current instance. - * @return $this - */ - public function cache($expires) - { - // Die if they haven't used set_cache_config(). - if (!$this->cache_class) - { - throw new CFRuntime_Exception('Must call set_cache_config() before using cache()'); - } - - if (is_string($expires)) - { - $expires = strtotime($expires); - $this->cache_expires = $expires - time(); - } - elseif (is_int($expires)) - { - $this->cache_expires = $expires; - } - - $this->use_cache_flow = true; - - return $this; - } - - /** - * The callback function that is executed when the cache doesn't exist or has expired. The response of - * this method is cached. Accepts identical parameters as the method. Never call this - * method directly -- it is used internally by the caching system. - * - * @param string $operation (Required) Indicates the operation to perform. - * @param array $payload (Required) An associative array of parameters for authenticating. See the individual methods for allowed keys. - * @return CFResponse A parsed HTTP response. - */ - public function cache_callback($operation, $payload) - { - // Disable the cache flow since it's already been handled. - $this->use_cache_flow = false; - - // Make the request - $response = $this->authenticate($operation, $payload); - - // If this is an XML document, convert it back to a string. - if (isset($response->body) && ($response->body instanceof SimpleXMLElement)) - { - $response->body = $response->body->asXML(); - } - - return $response; - } - - /** - * Used for caching the results of a batch request. Never call this method directly; it is used - * internally by the caching system. - * - * @param CFBatchRequest $batch (Required) The batch request object to send. - * @return CFResponse A parsed HTTP response. - */ - public function cache_callback_batch(CFBatchRequest $batch) - { - return $batch->send(); - } - - /** - * Deletes a cached object using the specified cache storage type. - * - * @return boolean A value of `true` if cached object exists and is successfully deleted, otherwise `false`. - */ - public function delete_cache() - { - $this->use_cache_flow = true; - $this->delete_cache = true; - - return $this; - } -} - - -/** - * Contains the functionality for auto-loading service classes. - */ -class CFLoader -{ - /*%******************************************************************************************%*/ - // AUTO-LOADER - - /** - * Automatically load classes that aren't included. - * - * @param string $class (Required) The classname to load. - * @return boolean Whether or not the file was successfully loaded. - */ - public static function autoloader($class) - { - $path = dirname(__FILE__) . DIRECTORY_SEPARATOR; - - // Amazon SDK classes - if (strstr($class, 'Amazon')) - { - if (file_exists($require_this = $path . 'services' . DIRECTORY_SEPARATOR . str_ireplace('Amazon', '', strtolower($class)) . '.class.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - // Utility classes - elseif (strstr($class, 'CF')) - { - if (file_exists($require_this = $path . 'utilities' . DIRECTORY_SEPARATOR . str_ireplace('CF', '', strtolower($class)) . '.class.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - // Load CacheCore - elseif (strstr($class, 'Cache')) - { - if (file_exists($require_this = $path . 'lib' . DIRECTORY_SEPARATOR . 'cachecore' . DIRECTORY_SEPARATOR . strtolower($class) . '.class.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - // Load RequestCore - elseif (strstr($class, 'RequestCore') || strstr($class, 'ResponseCore')) - { - if (file_exists($require_this = $path . 'lib' . DIRECTORY_SEPARATOR . 'requestcore' . DIRECTORY_SEPARATOR . 'requestcore.class.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - // Load array-to-domdocument - elseif (strstr($class, 'Array2DOM')) - { - if (file_exists($require_this = $path . 'lib' . DIRECTORY_SEPARATOR . 'dom' . DIRECTORY_SEPARATOR . 'ArrayToDOMDocument.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - // Load Authentication Signers - elseif (strstr($class, 'Auth')) - { - if (file_exists($require_this = $path . 'authentication' . DIRECTORY_SEPARATOR . str_replace('auth', 'signature_', strtolower($class)) . '.class.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - // Load Signer interface - elseif ($class === 'Signer') - { - if (!interface_exists('Signable', false) && - file_exists($require_this = $path . 'authentication' . DIRECTORY_SEPARATOR . 'signable.interface.php')) - { - require_once $require_this; - } - - if (file_exists($require_this = $path . 'authentication' . DIRECTORY_SEPARATOR . 'signer.abstract.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - // Load Symfony YAML classes - elseif (strstr($class, 'sfYaml')) - { - if (file_exists($require_this = $path . 'lib' . DIRECTORY_SEPARATOR . 'yaml' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'sfYaml.php')) - { - require_once $require_this; - return true; - } - - return false; - } - - return false; - } -} - -// Register the autoloader. -spl_autoload_register(array('CFLoader', 'autoloader')); - -// Don't look for any configuration files, the Amazon S3 storage backend handles configuration - -// /*%******************************************************************************************%*/ -// // CONFIGURATION -// -// // Look for include file in the same directory (e.g. `./config.inc.php`). -// if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.inc.php')) -// { -// include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.inc.php'; -// } -// // Fallback to `~/.aws/sdk/config.inc.php` -// else -// { -// if (!isset($_ENV['HOME']) && isset($_SERVER['HOME'])) -// { -// $_ENV['HOME'] = $_SERVER['HOME']; -// } -// elseif (!isset($_ENV['HOME']) && !isset($_SERVER['HOME'])) -// { -// $_ENV['HOME'] = `cd ~ && pwd`; -// if (!$_ENV['HOME']) -// { -// switch (strtolower(PHP_OS)) -// { -// case 'darwin': -// $_ENV['HOME'] = '/Users/' . get_current_user(); -// break; -// -// case 'windows': -// case 'winnt': -// case 'win32': -// $_ENV['HOME'] = 'c:' . DIRECTORY_SEPARATOR . 'Documents and Settings' . DIRECTORY_SEPARATOR . get_current_user(); -// break; -// -// default: -// $_ENV['HOME'] = '/home/' . get_current_user(); -// break; -// } -// } -// } -// -// if (getenv('HOME') && file_exists(getenv('HOME') . DIRECTORY_SEPARATOR . '.aws' . DIRECTORY_SEPARATOR . 'sdk' . DIRECTORY_SEPARATOR . 'config.inc.php')) -// { -// include_once getenv('HOME') . DIRECTORY_SEPARATOR . '.aws' . DIRECTORY_SEPARATOR . 'sdk' . DIRECTORY_SEPARATOR . 'config.inc.php'; -// } -// } diff --git a/3rdparty/aws-sdk/services/s3.class.php b/3rdparty/aws-sdk/services/s3.class.php deleted file mode 100755 index 2e9e1cd52b18821eb0bc556a06e91e0d01b5e563..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/services/s3.class.php +++ /dev/null @@ -1,3979 +0,0 @@ - for more information. - * - * @version 2012.01.17 - * @license See the included NOTICE.md file for more information. - * @copyright See the included NOTICE.md file for more information. - * @link http://aws.amazon.com/s3/ Amazon Simple Storage Service - * @link http://aws.amazon.com/documentation/s3/ Amazon Simple Storage Service documentation - */ -class AmazonS3 extends CFRuntime -{ - /*%******************************************************************************************%*/ - // REGIONAL ENDPOINTS - - /** - * Specify the queue URL for the US-Standard (Northern Virginia & Washington State) Region. - */ - const REGION_US_E1 = 's3.amazonaws.com'; - - /** - * Specify the queue URL for the US-Standard (Northern Virginia & Washington State) Region. - */ - const REGION_VIRGINIA = self::REGION_US_E1; - - /** - * Specify the queue URL for the US-Standard (Northern Virginia & Washington State) Region. - */ - const REGION_US_STANDARD = self::REGION_US_E1; - - /** - * Specify the queue URL for the US-West 1 (Northern California) Region. - */ - const REGION_US_W1 = 's3-us-west-1.amazonaws.com'; - - /** - * Specify the queue URL for the US-West 1 (Northern California) Region. - */ - const REGION_CALIFORNIA = self::REGION_US_W1; - - /** - * Specify the queue URL for the US-West 2 (Oregon) Region. - */ - const REGION_US_W2 = 's3-us-west-2.amazonaws.com'; - - /** - * Specify the queue URL for the US-West 2 (Oregon) Region. - */ - const REGION_OREGON = self::REGION_US_W2; - - /** - * Specify the queue URL for the EU (Ireland) Region. - */ - const REGION_EU_W1 = 's3-eu-west-1.amazonaws.com'; - - /** - * Specify the queue URL for the EU (Ireland) Region. - */ - const REGION_IRELAND = self::REGION_EU_W1; - - /** - * Specify the queue URL for the Asia Pacific (Singapore) Region. - */ - const REGION_APAC_SE1 = 's3-ap-southeast-1.amazonaws.com'; - - /** - * Specify the queue URL for the Asia Pacific (Singapore) Region. - */ - const REGION_SINGAPORE = self::REGION_APAC_SE1; - - /** - * Specify the queue URL for the Asia Pacific (Japan) Region. - */ - const REGION_APAC_NE1 = 's3-ap-northeast-1.amazonaws.com'; - - /** - * Specify the queue URL for the Asia Pacific (Japan) Region. - */ - const REGION_TOKYO = self::REGION_APAC_NE1; - - /** - * Specify the queue URL for the South America (Sao Paulo) Region. - */ - const REGION_SA_E1 = 's3-sa-east-1.amazonaws.com'; - - /** - * Specify the queue URL for the South America (Sao Paulo) Region. - */ - const REGION_SAO_PAULO = self::REGION_SA_E1; - - /** - * Specify the queue URL for the United States GovCloud Region. - */ - const REGION_US_GOV1 = 's3-us-gov-west-1.amazonaws.com'; - - /** - * Specify the queue URL for the United States GovCloud FIPS 140-2 Region. - */ - const REGION_US_GOV1_FIPS = 's3-fips-us-gov-west-1.amazonaws.com'; - - /** - * The default endpoint. - */ - const DEFAULT_URL = self::REGION_US_E1; - - - /*%******************************************************************************************%*/ - // REGIONAL WEBSITE ENDPOINTS - - /** - * Specify the queue URL for the US-Standard (Northern Virginia & Washington State) Website Region. - */ - const REGION_US_E1_WEBSITE = 's3-website-us-east-1.amazonaws.com'; - - /** - * Specify the queue URL for the US-Standard (Northern Virginia & Washington State) Website Region. - */ - const REGION_VIRGINIA_WEBSITE = self::REGION_US_E1_WEBSITE; - - /** - * Specify the queue URL for the US-Standard (Northern Virginia & Washington State) Website Region. - */ - const REGION_US_STANDARD_WEBSITE = self::REGION_US_E1_WEBSITE; - - /** - * Specify the queue URL for the US-West 1 (Northern California) Website Region. - */ - const REGION_US_W1_WEBSITE = 's3-website-us-west-1.amazonaws.com'; - - /** - * Specify the queue URL for the US-West 1 (Northern California) Website Region. - */ - const REGION_CALIFORNIA_WEBSITE = self::REGION_US_W1_WEBSITE; - - /** - * Specify the queue URL for the US-West 2 (Oregon) Website Region. - */ - const REGION_US_W2_WEBSITE = 's3-website-us-west-2.amazonaws.com'; - - /** - * Specify the queue URL for the US-West 2 (Oregon) Website Region. - */ - const REGION_OREGON_WEBSITE = self::REGION_US_W2_WEBSITE; - - /** - * Specify the queue URL for the EU (Ireland) Website Region. - */ - const REGION_EU_W1_WEBSITE = 's3-website-eu-west-1.amazonaws.com'; - - /** - * Specify the queue URL for the EU (Ireland) Website Region. - */ - const REGION_IRELAND_WEBSITE = self::REGION_EU_W1_WEBSITE; - - /** - * Specify the queue URL for the Asia Pacific (Singapore) Website Region. - */ - const REGION_APAC_SE1_WEBSITE = 's3-website-ap-southeast-1.amazonaws.com'; - - /** - * Specify the queue URL for the Asia Pacific (Singapore) Website Region. - */ - const REGION_SINGAPORE_WEBSITE = self::REGION_APAC_SE1_WEBSITE; - - /** - * Specify the queue URL for the Asia Pacific (Japan) Website Region. - */ - const REGION_APAC_NE1_WEBSITE = 's3-website-ap-northeast-1.amazonaws.com'; - - /** - * Specify the queue URL for the Asia Pacific (Japan) Website Region. - */ - const REGION_TOKYO_WEBSITE = self::REGION_APAC_NE1_WEBSITE; - - /** - * Specify the queue URL for the South America (Sao Paulo) Website Region. - */ - const REGION_SA_E1_WEBSITE = 's3-website-sa-east-1.amazonaws.com'; - - /** - * Specify the queue URL for the South America (Sao Paulo) Website Region. - */ - const REGION_SAO_PAULO_WEBSITE = self::REGION_SA_E1_WEBSITE; - - /** - * Specify the queue URL for the United States GovCloud Website Region. - */ - const REGION_US_GOV1_WEBSITE = 's3-website-us-gov-west-1.amazonaws.com'; - - - /*%******************************************************************************************%*/ - // ACL - - /** - * ACL: Owner-only read/write. - */ - const ACL_PRIVATE = 'private'; - - /** - * ACL: Owner read/write, public read. - */ - const ACL_PUBLIC = 'public-read'; - - /** - * ACL: Public read/write. - */ - const ACL_OPEN = 'public-read-write'; - - /** - * ACL: Owner read/write, authenticated read. - */ - const ACL_AUTH_READ = 'authenticated-read'; - - /** - * ACL: Bucket owner read. - */ - const ACL_OWNER_READ = 'bucket-owner-read'; - - /** - * ACL: Bucket owner full control. - */ - const ACL_OWNER_FULL_CONTROL = 'bucket-owner-full-control'; - - - /*%******************************************************************************************%*/ - // GRANTS - - /** - * When applied to a bucket, grants permission to list the bucket. When applied to an object, this - * grants permission to read the object data and/or metadata. - */ - const GRANT_READ = 'READ'; - - /** - * When applied to a bucket, grants permission to create, overwrite, and delete any object in the - * bucket. This permission is not supported for objects. - */ - const GRANT_WRITE = 'WRITE'; - - /** - * Grants permission to read the ACL for the applicable bucket or object. The owner of a bucket or - * object always has this permission implicitly. - */ - const GRANT_READ_ACP = 'READ_ACP'; - - /** - * Gives permission to overwrite the ACP for the applicable bucket or object. The owner of a bucket - * or object always has this permission implicitly. Granting this permission is equivalent to granting - * FULL_CONTROL because the grant recipient can make any changes to the ACP. - */ - const GRANT_WRITE_ACP = 'WRITE_ACP'; - - /** - * Provides READ, WRITE, READ_ACP, and WRITE_ACP permissions. It does not convey additional rights and - * is provided only for convenience. - */ - const GRANT_FULL_CONTROL = 'FULL_CONTROL'; - - - /*%******************************************************************************************%*/ - // USERS - - /** - * The "AuthenticatedUsers" group for access control policies. - */ - const USERS_AUTH = 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'; - - /** - * The "AllUsers" group for access control policies. - */ - const USERS_ALL = 'http://acs.amazonaws.com/groups/global/AllUsers'; - - /** - * The "LogDelivery" group for access control policies. - */ - const USERS_LOGGING = 'http://acs.amazonaws.com/groups/s3/LogDelivery'; - - - /*%******************************************************************************************%*/ - // PATTERNS - - /** - * PCRE: Match all items - */ - const PCRE_ALL = '/.*/i'; - - - /*%******************************************************************************************%*/ - // STORAGE - - /** - * Standard storage redundancy. - */ - const STORAGE_STANDARD = 'STANDARD'; - - /** - * Reduced storage redundancy. - */ - const STORAGE_REDUCED = 'REDUCED_REDUNDANCY'; - - - /*%******************************************************************************************%*/ - // PROPERTIES - - /** - * The request URL. - */ - public $request_url; - - /** - * The virtual host setting. - */ - public $vhost; - - /** - * The base XML elements to use for access control policy methods. - */ - public $base_acp_xml; - - /** - * The base XML elements to use for creating buckets in regions. - */ - public $base_location_constraint; - - /** - * The base XML elements to use for logging methods. - */ - public $base_logging_xml; - - /** - * The base XML elements to use for notifications. - */ - public $base_notification_xml; - - /** - * The base XML elements to use for versioning. - */ - public $base_versioning_xml; - - /** - * The base XML elements to use for completing a multipart upload. - */ - public $complete_mpu_xml; - - /** - * The base XML elements to use for website support. - */ - public $website_config_xml; - - /** - * The base XML elements to use for multi-object delete support. - */ - public $multi_object_delete_xml; - - /** - * The base XML elements to use for object expiration support. - */ - public $object_expiration_xml; - - /** - * The DNS vs. Path-style setting. - */ - public $path_style = false; - - /** - * The state of whether the prefix change is temporary or permanent. - */ - public $temporary_prefix = false; - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of . - * - * @param array $options (Optional) An associative array of parameters that can have the following keys:
    - *
  • certificate_authority - boolean - Optional - Determines which Cerificate Authority file to use. A value of boolean false will use the Certificate Authority file available on the system. A value of boolean true will use the Certificate Authority provided by the SDK. Passing a file system path to a Certificate Authority file (chmodded to 0755) will use that. Leave this set to false if you're not sure.
  • - *
  • credentials - string - Optional - The name of the credential set to use for authentication.
  • - *
  • default_cache_config - string - Optional - This option allows a preferred storage type to be configured for long-term caching. This can be changed later using the method. Valid values are: apc, xcache, or a file system path such as ./cache or /tmp/cache/.
  • - *
  • key - string - Optional - Your AWS key, or a session key. If blank, the default credential set will be used.
  • - *
  • secret - string - Optional - Your AWS secret key, or a session secret key. If blank, the default credential set will be used.
  • - *
  • token - string - Optional - An AWS session token.
- * @return void - */ - public function __construct(array $options = array()) - { - $this->vhost = null; - $this->api_version = '2006-03-01'; - $this->hostname = self::DEFAULT_URL; - - $this->base_acp_xml = ''; - $this->base_location_constraint = ''; - $this->base_logging_xml = ''; - $this->base_notification_xml = ''; - $this->base_versioning_xml = ''; - $this->complete_mpu_xml = ''; - $this->website_config_xml = 'index.htmlerror.html'; - $this->multi_object_delete_xml = ''; - $this->object_expiration_xml = ''; - - parent::__construct($options); - } - - - /*%******************************************************************************************%*/ - // AUTHENTICATION - - /** - * Authenticates a connection to Amazon S3. Do not use directly unless implementing custom methods for - * this class. - * - * @param string $operation (Required) The name of the bucket to operate on (S3 Only). - * @param array $payload (Required) An associative array of parameters for authenticating. See inline comments for allowed keys. - * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_Authentication.html REST authentication - */ - public function authenticate($operation, $payload) - { - /* - * Overriding or extending this class? You can pass the following "magic" keys into $opt. - * - * ## verb, resource, sub_resource and query_string ## - * /?& - * GET /filename.txt?versions&prefix=abc&max-items=1 - * - * ## versionId, uploadId, partNumber, response-* ## - * These don't follow the same rules as above, in that the they needs to be signed, while - * other query_string values do not. - * - * ## curlopts ## - * These values get passed directly to the cURL methods in RequestCore. - * - * ## fileUpload, fileDownload, seekTo ## - * These are slightly modified and then passed to the cURL methods in RequestCore. - * - * ## headers ## - * $opt['headers'] is an array, whose keys are HTTP headers to be sent. - * - * ## body ## - * This is the request body that is sent to the server via PUT/POST. - * - * ## preauth ## - * This is a hook that tells authenticate() to generate a pre-authenticated URL. - * - * ## returnCurlHandle ## - * Tells authenticate() to return the cURL handle for the request instead of executing it. - */ - - // Rename variables (to overcome inheritence issues) - $bucket = $operation; - $opt = $payload; - - // Validate the S3 bucket name - if (!$this->validate_bucketname_support($bucket)) - { - // @codeCoverageIgnoreStart - throw new S3_Exception('S3 does not support "' . $bucket . '" as a valid bucket name. Review "Bucket Restrictions and Limitations" in the S3 Developer Guide for more information.'); - // @codeCoverageIgnoreEnd - } - - // Die if $opt isn't set. - if (!$opt) return false; - - $method_arguments = func_get_args(); - - // Use the caching flow to determine if we need to do a round-trip to the server. - if ($this->use_cache_flow) - { - // Generate an identifier specific to this particular set of arguments. - $cache_id = $this->key . '_' . get_class($this) . '_' . $bucket . '_' . sha1(serialize($method_arguments)); - - // Instantiate the appropriate caching object. - $this->cache_object = new $this->cache_class($cache_id, $this->cache_location, $this->cache_expires, $this->cache_compress); - - if ($this->delete_cache) - { - $this->use_cache_flow = false; - $this->delete_cache = false; - return $this->cache_object->delete(); - } - - // Invoke the cache callback function to determine whether to pull data from the cache or make a fresh request. - $data = $this->cache_object->response_manager(array($this, 'cache_callback'), $method_arguments); - - if ($this->parse_the_response) - { - // Parse the XML body - $data = $this->parse_callback($data); - } - - // End! - return $data; - } - - // If we haven't already set a resource prefix and the bucket name isn't DNS-valid... - if ((!$this->resource_prefix && !$this->validate_bucketname_create($bucket)) || $this->path_style) - { - // Fall back to the older path-style URI - $this->set_resource_prefix('/' . $bucket); - $this->temporary_prefix = true; - } - - // Determine hostname - $scheme = $this->use_ssl ? 'https://' : 'http://'; - if ($this->resource_prefix || $this->path_style) // Use bucket-in-path method. - { - $hostname = $this->hostname . $this->resource_prefix . (($bucket === '' || $this->resource_prefix === '/' . $bucket) ? '' : ('/' . $bucket)); - } - else - { - $hostname = $this->vhost ? $this->vhost : (($bucket === '') ? $this->hostname : ($bucket . '.') . $this->hostname); - } - - // Get the UTC timestamp in RFC 2616 format - $date = gmdate(CFUtilities::DATE_FORMAT_RFC2616, time()); - - // Storage for request parameters. - $resource = ''; - $sub_resource = ''; - $querystringparams = array(); - $signable_querystringparams = array(); - $string_to_sign = ''; - $headers = array( - 'Content-MD5' => '', - 'Content-Type' => 'application/x-www-form-urlencoded', - 'Date' => $date - ); - - /*%******************************************************************************************%*/ - - // Do we have an authentication token? - if ($this->auth_token) - { - $headers['X-Amz-Security-Token'] = $this->auth_token; - } - - // Handle specific resources - if (isset($opt['resource'])) - { - $resource .= $opt['resource']; - } - - // Merge query string values - if (isset($opt['query_string'])) - { - $querystringparams = array_merge($querystringparams, $opt['query_string']); - } - $query_string = $this->util->to_query_string($querystringparams); - - // Merge the signable query string values. Must be alphabetical. - $signable_list = array( - 'partNumber', - 'response-cache-control', - 'response-content-disposition', - 'response-content-encoding', - 'response-content-language', - 'response-content-type', - 'response-expires', - 'uploadId', - 'versionId' - ); - foreach ($signable_list as $item) - { - if (isset($opt[$item])) - { - $signable_querystringparams[$item] = $opt[$item]; - } - } - $signable_query_string = $this->util->to_query_string($signable_querystringparams); - - // Merge the HTTP headers - if (isset($opt['headers'])) - { - $headers = array_merge($headers, $opt['headers']); - } - - // Compile the URI to request - $conjunction = '?'; - $signable_resource = '/' . str_replace('%2F', '/', rawurlencode($resource)); - $non_signable_resource = ''; - - if (isset($opt['sub_resource'])) - { - $signable_resource .= $conjunction . rawurlencode($opt['sub_resource']); - $conjunction = '&'; - } - if ($signable_query_string !== '') - { - $signable_query_string = $conjunction . $signable_query_string; - $conjunction = '&'; - } - if ($query_string !== '') - { - $non_signable_resource .= $conjunction . $query_string; - $conjunction = '&'; - } - if (substr($hostname, -1) === substr($signable_resource, 0, 1)) - { - $signable_resource = ltrim($signable_resource, '/'); - } - - $this->request_url = $scheme . $hostname . $signable_resource . $signable_query_string . $non_signable_resource; - - if (isset($opt['location'])) - { - $this->request_url = $opt['location']; - } - - // Gather information to pass along to other classes. - $helpers = array( - 'utilities' => $this->utilities_class, - 'request' => $this->request_class, - 'response' => $this->response_class, - ); - - // Instantiate the request class - $request = new $this->request_class($this->request_url, $this->proxy, $helpers, $this->credentials); - - // Update RequestCore settings - $request->request_class = $this->request_class; - $request->response_class = $this->response_class; - $request->ssl_verification = $this->ssl_verification; - - // Pass along registered stream callbacks - if ($this->registered_streaming_read_callback) - { - $request->register_streaming_read_callback($this->registered_streaming_read_callback); - } - - if ($this->registered_streaming_write_callback) - { - $request->register_streaming_write_callback($this->registered_streaming_write_callback); - } - - // Streaming uploads - if (isset($opt['fileUpload'])) - { - if (is_resource($opt['fileUpload'])) - { - // Determine the length to read from the stream - $length = null; // From current position until EOF by default, size determined by set_read_stream() - - if (isset($headers['Content-Length'])) - { - $length = $headers['Content-Length']; - } - elseif (isset($opt['seekTo'])) - { - // Read from seekTo until EOF by default - $stats = fstat($opt['fileUpload']); - - if ($stats && $stats['size'] >= 0) - { - $length = $stats['size'] - (integer) $opt['seekTo']; - } - } - - $request->set_read_stream($opt['fileUpload'], $length); - - if ($headers['Content-Type'] === 'application/x-www-form-urlencoded') - { - $headers['Content-Type'] = 'application/octet-stream'; - } - } - else - { - $request->set_read_file($opt['fileUpload']); - - // Determine the length to read from the file - $length = $request->read_stream_size; // The file size by default - - if (isset($headers['Content-Length'])) - { - $length = $headers['Content-Length']; - } - elseif (isset($opt['seekTo']) && isset($length)) - { - // Read from seekTo until EOF by default - $length -= (integer) $opt['seekTo']; - } - - $request->set_read_stream_size($length); - - // Attempt to guess the correct mime-type - if ($headers['Content-Type'] === 'application/x-www-form-urlencoded') - { - $extension = explode('.', $opt['fileUpload']); - $extension = array_pop($extension); - $mime_type = CFMimeTypes::get_mimetype($extension); - $headers['Content-Type'] = $mime_type; - } - } - - $headers['Content-Length'] = $request->read_stream_size; - $headers['Content-MD5'] = ''; - } - - // Handle streaming file offsets - if (isset($opt['seekTo'])) - { - // Pass the seek position to RequestCore - $request->set_seek_position((integer) $opt['seekTo']); - } - - // Streaming downloads - if (isset($opt['fileDownload'])) - { - if (is_resource($opt['fileDownload'])) - { - $request->set_write_stream($opt['fileDownload']); - } - else - { - $request->set_write_file($opt['fileDownload']); - } - } - - $curlopts = array(); - - // Set custom CURLOPT settings - if (isset($opt['curlopts'])) - { - $curlopts = $opt['curlopts']; - } - - // Debug mode - if ($this->debug_mode) - { - $curlopts[CURLOPT_VERBOSE] = true; - } - - // Set the curl options. - if (count($curlopts)) - { - $request->set_curlopts($curlopts); - } - - // Do we have a verb? - if (isset($opt['verb'])) - { - $request->set_method($opt['verb']); - $string_to_sign .= $opt['verb'] . "\n"; - } - - // Add headers and content when we have a body - if (isset($opt['body'])) - { - $request->set_body($opt['body']); - $headers['Content-Length'] = strlen($opt['body']); - - if ($headers['Content-Type'] === 'application/x-www-form-urlencoded') - { - $headers['Content-Type'] = 'application/octet-stream'; - } - - if (!isset($opt['NoContentMD5']) || $opt['NoContentMD5'] !== true) - { - $headers['Content-MD5'] = $this->util->hex_to_base64(md5($opt['body'])); - } - } - - // Handle query-string authentication - if (isset($opt['preauth']) && (integer) $opt['preauth'] > 0) - { - unset($headers['Date']); - $headers['Content-Type'] = ''; - $headers['Expires'] = is_int($opt['preauth']) ? $opt['preauth'] : strtotime($opt['preauth']); - } - - // Sort headers - uksort($headers, 'strnatcasecmp'); - - // Add headers to request and compute the string to sign - foreach ($headers as $header_key => $header_value) - { - // Strip linebreaks from header values as they're illegal and can allow for security issues - $header_value = str_replace(array("\r", "\n"), '', $header_value); - - // Add the header if it has a value - if ($header_value !== '') - { - $request->add_header($header_key, $header_value); - } - - // Generate the string to sign - if ( - strtolower($header_key) === 'content-md5' || - strtolower($header_key) === 'content-type' || - strtolower($header_key) === 'date' || - (strtolower($header_key) === 'expires' && isset($opt['preauth']) && (integer) $opt['preauth'] > 0) - ) - { - $string_to_sign .= $header_value . "\n"; - } - elseif (substr(strtolower($header_key), 0, 6) === 'x-amz-') - { - $string_to_sign .= strtolower($header_key) . ':' . $header_value . "\n"; - } - } - - // Add the signable resource location - $string_to_sign .= ($this->resource_prefix ? $this->resource_prefix : ''); - $string_to_sign .= (($bucket === '' || $this->resource_prefix === '/' . $bucket) ? '' : ('/' . $bucket)) . $signable_resource . urldecode($signable_query_string); - - // Hash the AWS secret key and generate a signature for the request. - $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $this->secret_key, true)); - $request->add_header('Authorization', 'AWS ' . $this->key . ':' . $signature); - - // If we're generating a URL, return the URL to the calling method. - if (isset($opt['preauth']) && (integer) $opt['preauth'] > 0) - { - $query_params = array( - 'AWSAccessKeyId' => $this->key, - 'Expires' => $headers['Expires'], - 'Signature' => $signature, - ); - - // If using short-term credentials, add the token to the query string - if ($this->auth_token) - { - $query_params['x-amz-security-token'] = $this->auth_token; - } - - return $this->request_url . $conjunction . http_build_query($query_params, '', '&'); - } - elseif (isset($opt['preauth'])) - { - return $this->request_url; - } - - /*%******************************************************************************************%*/ - - // If our changes were temporary, reset them. - if ($this->temporary_prefix) - { - $this->temporary_prefix = false; - $this->resource_prefix = null; - } - - // Manage the (newer) batch request API or the (older) returnCurlHandle setting. - if ($this->use_batch_flow) - { - $handle = $request->prep_request(); - $this->batch_object->add($handle); - $this->use_batch_flow = false; - - return $handle; - } - elseif (isset($opt['returnCurlHandle']) && $opt['returnCurlHandle'] === true) - { - return $request->prep_request(); - } - - // Send! - $request->send_request(); - - // Prepare the response - $headers = $request->get_response_header(); - $headers['x-aws-request-url'] = $this->request_url; - $headers['x-aws-redirects'] = $this->redirects; - $headers['x-aws-stringtosign'] = $string_to_sign; - $headers['x-aws-requestheaders'] = $request->request_headers; - - // Did we have a request body? - if (isset($opt['body'])) - { - $headers['x-aws-requestbody'] = $opt['body']; - } - - $data = new $this->response_class($headers, $this->parse_callback($request->get_response_body()), $request->get_response_code()); - - // Did Amazon tell us to redirect? Typically happens for multiple rapid requests EU datacenters. - // @see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Redirects.html - // @codeCoverageIgnoreStart - if ((integer) $request->get_response_code() === 307) // Temporary redirect to new endpoint. - { - $this->redirects++; - $opt['location'] = $headers['location']; - $data = $this->authenticate($bucket, $opt); - } - - // Was it Amazon's fault the request failed? Retry the request until we reach $max_retries. - elseif ((integer) $request->get_response_code() === 500 || (integer) $request->get_response_code() === 503) - { - if ($this->redirects <= $this->max_retries) - { - // Exponential backoff - $delay = (integer) (pow(4, $this->redirects) * 100000); - usleep($delay); - $this->redirects++; - $data = $this->authenticate($bucket, $opt); - } - } - // @codeCoverageIgnoreEnd - - // Return! - $this->redirects = 0; - return $data; - } - - /** - * Validates whether or not the specified Amazon S3 bucket name is valid for DNS-style access. This - * method is leveraged by any method that creates buckets. - * - * @param string $bucket (Required) The name of the bucket to validate. - * @return boolean Whether or not the specified Amazon S3 bucket name is valid for DNS-style access. A value of true means that the bucket name is valid. A value of false means that the bucket name is invalid. - */ - public function validate_bucketname_create($bucket) - { - // list_buckets() uses this. Let it pass. - if ($bucket === '') return true; - - if ( - ($bucket === null || $bucket === false) || // Must not be null or false - preg_match('/[^(a-z0-9\-\.)]/', $bucket) || // Must be in the lowercase Roman alphabet, period or hyphen - !preg_match('/^([a-z]|\d)/', $bucket) || // Must start with a number or letter - !(strlen($bucket) >= 3 && strlen($bucket) <= 63) || // Must be between 3 and 63 characters long - (strpos($bucket, '..') !== false) || // Bucket names cannot contain two, adjacent periods - (strpos($bucket, '-.') !== false) || // Bucket names cannot contain dashes next to periods - (strpos($bucket, '.-') !== false) || // Bucket names cannot contain dashes next to periods - preg_match('/(-|\.)$/', $bucket) || // Bucket names should not end with a dash or period - preg_match('/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/', $bucket) // Must not be formatted as an IP address - ) return false; - - return true; - } - - /** - * Validates whether or not the specified Amazon S3 bucket name is valid for path-style access. This - * method is leveraged by any method that reads from buckets. - * - * @param string $bucket (Required) The name of the bucket to validate. - * @return boolean Whether or not the bucket name is valid. A value of true means that the bucket name is valid. A value of false means that the bucket name is invalid. - */ - public function validate_bucketname_support($bucket) - { - // list_buckets() uses this. Let it pass. - if ($bucket === '') return true; - - // Validate - if ( - ($bucket === null || $bucket === false) || // Must not be null or false - preg_match('/[^(a-z0-9_\-\.)]/i', $bucket) || // Must be in the Roman alphabet, period, hyphen or underscore - !preg_match('/^([a-z]|\d)/i', $bucket) || // Must start with a number or letter - !(strlen($bucket) >= 3 && strlen($bucket) <= 255) || // Must be between 3 and 255 characters long - preg_match('/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/', $bucket) // Must not be formatted as an IP address - ) return false; - - return true; - } - - /*%******************************************************************************************%*/ - // SETTERS - - /** - * Sets the region to use for subsequent Amazon S3 operations. This will also reset any prior use of - * . - * - * @param string $region (Required) The region to use for subsequent Amazon S3 operations. For a complete list of REGION constants, see the AmazonS3 Constants page in the API reference. - * @return $this A reference to the current instance. - */ - public function set_region($region) - { - // @codeCoverageIgnoreStart - $this->set_hostname($region); - - switch ($region) - { - case self::REGION_US_E1: // Northern Virginia - $this->enable_path_style(false); - break; - - case self::REGION_EU_W1: // Ireland - $this->enable_path_style(); // Always use path-style access for EU endpoint. - break; - - default: - $this->enable_path_style(false); - break; - - } - // @codeCoverageIgnoreEnd - - return $this; - } - - /** - * Sets the virtual host to use in place of the default `bucket.s3.amazonaws.com` domain. - * - * @param string $vhost (Required) The virtual host to use in place of the default `bucket.s3.amazonaws.com` domain. - * @return $this A reference to the current instance. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/VirtualHosting.html Virtual Hosting of Buckets - */ - public function set_vhost($vhost) - { - $this->vhost = $vhost; - return $this; - } - - /** - * Enables the use of the older path-style URI access for all requests. - * - * @param string $style (Optional) Whether or not to enable path-style URI access for all requests. The default value is true. - * @return $this A reference to the current instance. - */ - public function enable_path_style($style = true) - { - $this->path_style = $style; - return $this; - } - - - /*%******************************************************************************************%*/ - // BUCKET METHODS - - /** - * Creates an Amazon S3 bucket. - * - * Every object stored in Amazon S3 is contained in a bucket. Buckets partition the namespace of - * objects stored in Amazon S3 at the top level. in a bucket, any name can be used for objects. - * However, bucket names must be unique across all of Amazon S3. - * - * @param string $bucket (Required) The name of the bucket to create. - * @param string $region (Required) The preferred geographical location for the bucket. [Allowed values: `AmazonS3::REGION_US_E1 `, `AmazonS3::REGION_US_W1`, `AmazonS3::REGION_EU_W1`, `AmazonS3::REGION_APAC_SE1`, `AmazonS3::REGION_APAC_NE1`] - * @param string $acl (Optional) The ACL settings for the specified bucket. [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. The default value is . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/UsingBucket.html Working with Amazon S3 Buckets - */ - public function create_bucket($bucket, $region, $acl = self::ACL_PRIVATE, $opt = null) - { - // If the bucket contains uppercase letters... - if (preg_match('/[A-Z]/', $bucket)) - { - // Throw a warning - trigger_error('Since DNS-valid bucket names cannot contain uppercase characters, "' . $bucket . '" has been automatically converted to "' . strtolower($bucket) . '"', E_USER_WARNING); - - // Force the bucketname to lowercase - $bucket = strtolower($bucket); - } - - // Validate the S3 bucket name for creation - if (!$this->validate_bucketname_create($bucket)) - { - // @codeCoverageIgnoreStart - throw new S3_Exception('"' . $bucket . '" is not DNS-valid (i.e., .s3.amazonaws.com), and cannot be used as an S3 bucket name. Review "Bucket Restrictions and Limitations" in the S3 Developer Guide for more information.'); - // @codeCoverageIgnoreEnd - } - - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml', - 'x-amz-acl' => $acl - ); - - // Defaults - $this->set_region($region); // Also sets path-style - $xml = simplexml_load_string($this->base_location_constraint); - - switch ($region) - { - case self::REGION_US_E1: // Northern Virginia - $opt['body'] = ''; - break; - - case self::REGION_EU_W1: // Ireland - $xml->LocationConstraint = 'EU'; - $opt['body'] = $xml->asXML(); - break; - - default: - $xml->LocationConstraint = str_replace(array('s3-', '.amazonaws.com'), '', $region); - $opt['body'] = $xml->asXML(); - break; - } - - $response = $this->authenticate($bucket, $opt); - - // Make sure we're set back to DNS-style URLs - $this->enable_path_style(false); - - return $response; - } - - /** - * Gets the region in which the specified Amazon S3 bucket is located. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function get_bucket_region($bucket, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'location'; - - // Authenticate to S3 - $response = $this->authenticate($bucket, $opt); - - if ($response->isOK()) - { - // Handle body - $response->body = (string) $response->body; - } - - return $response; - } - - /** - * Gets the HTTP headers for the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function get_bucket_headers($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'HEAD'; - - return $this->authenticate($bucket, $opt); - } - - /** - * Deletes a bucket from an Amazon S3 account. A bucket must be empty before the bucket itself can be deleted. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param boolean $force (Optional) Whether to force-delete the bucket and all of its contents. The default value is false. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return mixed A object if the bucket was deleted successfully. Returns boolean false if otherwise. - */ - public function delete_bucket($bucket, $force = false, $opt = null) - { - // Set default value - $success = true; - - if ($force) - { - // Delete all of the items from the bucket. - $success = $this->delete_all_object_versions($bucket); - } - - // As long as we were successful... - if ($success) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'DELETE'; - - return $this->authenticate($bucket, $opt); - } - - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - /** - * Gets a list of all buckets contained in the caller's Amazon S3 account. - * - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function list_buckets($opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - - return $this->authenticate('', $opt); - } - - /** - * Gets the access control list (ACL) settings for the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAccessPolicy.html REST Access Control Policy - */ - public function get_bucket_acl($bucket, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'acl'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Sets the access control list (ACL) settings for the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $acl (Optional) The ACL settings for the specified bucket. [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. Alternatively, an array of associative arrays. Each associative array contains an `id` and a `permission` key. The default value is . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAccessPolicy.html REST Access Control Policy - */ - public function set_bucket_acl($bucket, $acl = self::ACL_PRIVATE, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'acl'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - // Make sure these are defined. - // @codeCoverageIgnoreStart - if (!$this->credentials->canonical_id || !$this->credentials->canonical_name) - { - // Fetch the data live. - $canonical = $this->get_canonical_user_id(); - $this->credentials->canonical_id = $canonical['id']; - $this->credentials->canonical_name = $canonical['display_name']; - } - // @codeCoverageIgnoreEnd - - if (is_array($acl)) - { - $opt['body'] = $this->generate_access_policy($this->credentials->canonical_id, $this->credentials->canonical_name, $acl); - } - else - { - $opt['body'] = ''; - $opt['headers']['x-amz-acl'] = $acl; - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - - /*%******************************************************************************************%*/ - // OBJECT METHODS - - /** - * Creates an Amazon S3 object. After an Amazon S3 bucket is created, objects can be stored in it. - * - * Each standard object can hold up to 5 GB of data. When an object is stored in Amazon S3, the data is streamed - * to multiple storage servers in multiple data centers. This ensures the data remains available in the - * event of internal network or hardware failure. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • body - string - Required; Conditional - The data to be stored in the object. Either this parameter or fileUpload must be specified.
  • - *
  • fileUpload - string|resource - Required; Conditional - The URL/path for the file to upload, or an open resource. Either this parameter or body is required.
  • - *
  • acl - string - Optional - The ACL settings for the specified object. [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. The default value is ACL_PRIVATE.
  • - *
  • contentType - string - Optional - The type of content that is being sent in the body. If a file is being uploaded via fileUpload as a file system path, it will attempt to determine the correct mime-type based on the file extension. The default value is application/octet-stream.
  • - *
  • encryption - string - Optional - The algorithm to use for encrypting the object. [Allowed values: AES256]
  • - *
  • headers - array - Optional - Standard HTTP headers to send along in the request. Accepts an associative array of key-value pairs.
  • - *
  • length - integer - Optional - The size of the object in bytes. For more information, see RFC 2616, section 14.13. The value can also be passed to the header option as Content-Length.
  • - *
  • meta - array - Optional - An associative array of key-value pairs. Represented by x-amz-meta-:. Any header starting with this prefix is considered user metadata. It will be stored with the object and returned when you retrieve the object. The total size of the HTTP request, not including the body, must be less than 4 KB.
  • - *
  • seekTo - integer - Optional - The starting position in bytes within the file/stream to upload from.
  • - *
  • storage - string - Optional - Whether to use Standard or Reduced Redundancy storage. [Allowed values: AmazonS3::STORAGE_STANDARD, AmazonS3::STORAGE_REDUCED]. The default value is STORAGE_STANDARD.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAccessPolicy.html REST Access Control Policy - */ - public function create_object($bucket, $filename, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'PUT'; - $opt['resource'] = $filename; - - // Handle content length. Can also be passed as an HTTP header. - if (isset($opt['length'])) - { - $opt['headers']['Content-Length'] = $opt['length']; - unset($opt['length']); - } - - // Handle content type. Can also be passed as an HTTP header. - if (isset($opt['contentType'])) - { - $opt['headers']['Content-Type'] = $opt['contentType']; - unset($opt['contentType']); - } - - // Handle Access Control Lists. Can also be passed as an HTTP header. - if (isset($opt['acl'])) - { - $opt['headers']['x-amz-acl'] = $opt['acl']; - unset($opt['acl']); - } - - // Handle storage settings. Can also be passed as an HTTP header. - if (isset($opt['storage'])) - { - $opt['headers']['x-amz-storage-class'] = $opt['storage']; - unset($opt['storage']); - } - - // Handle encryption settings. Can also be passed as an HTTP header. - if (isset($opt['encryption'])) - { - $opt['headers']['x-amz-server-side-encryption'] = $opt['encryption']; - unset($opt['encryption']); - } - - // Handle meta tags. Can also be passed as an HTTP header. - if (isset($opt['meta'])) - { - foreach ($opt['meta'] as $meta_key => $meta_value) - { - // e.g., `My Meta Header` is converted to `x-amz-meta-my-meta-header`. - $opt['headers']['x-amz-meta-' . strtolower(str_replace(' ', '-', $meta_key))] = $meta_value; - } - unset($opt['meta']); - } - - $opt['headers']['Expect'] = '100-continue'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Gets the contents of an Amazon S3 object in the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • etag - string - Optional - The ETag header passed in from a previous request. If specified, request LastModified option must be specified as well. Will trigger a 304 Not Modified status code if the file hasn't changed.
  • - *
  • fileDownload - string|resource - Optional - The file system location to download the file to, or an open file resource. Must be a server-writable location.
  • - *
  • headers - array - Optional - Standard HTTP headers to send along in the request. Accepts an associative array of key-value pairs.
  • - *
  • lastmodified - string - Optional - The LastModified header passed in from a previous request. If specified, request ETag option must be specified as well. Will trigger a 304 Not Modified status code if the file hasn't changed.
  • - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • range - string - Optional - The range of bytes to fetch from the object. Specify this parameter when downloading partial bits or completing incomplete object downloads. The specified range must be notated with a hyphen (e.g., 0-10485759). Defaults to the byte range of the complete Amazon S3 object.
  • - *
  • response - array - Optional - Allows adjustments to specific response headers. Pass an associative array where each key is one of the following: cache-control, content-disposition, content-encoding, content-language, content-type, expires. The expires value should use and be formatted with the DATE_RFC2822 constant.
  • - *
  • versionId - string - Optional - The version of the object to retrieve. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function get_object($bucket, $filename, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'GET'; - $opt['resource'] = $filename; - - if (!isset($opt['headers']) || !is_array($opt['headers'])) - { - $opt['headers'] = array(); - } - - if (isset($opt['lastmodified'])) - { - $opt['headers']['If-Modified-Since'] = $opt['lastmodified']; - } - - if (isset($opt['etag'])) - { - $opt['headers']['If-None-Match'] = $opt['etag']; - } - - // Partial content range - if (isset($opt['range'])) - { - $opt['headers']['Range'] = 'bytes=' . $opt['range']; - } - - // GET responses - if (isset($opt['response'])) - { - foreach ($opt['response'] as $key => $value) - { - $opt['response-' . $key] = $value; - unset($opt['response'][$key]); - } - } - - // Authenticate to S3 - $this->parse_the_response = false; - $response = $this->authenticate($bucket, $opt); - $this->parse_the_response = true; - - return $response; - } - - /** - * Gets the HTTP headers for the specified Amazon S3 object. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • versionId - string - Optional - The version of the object to retrieve. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
  • - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function get_object_headers($bucket, $filename, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'HEAD'; - $opt['resource'] = $filename; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Deletes an Amazon S3 object from the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • versionId - string - Optional - The version of the object to delete. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
  • - *
  • MFASerial - string - Optional - The serial number on the back of the Gemalto device. MFASerial and MFAToken must both be set for MFA to work.
  • - *
  • MFAToken - string - Optional - The current token displayed on the Gemalto device. MFASerial and MFAToken must both be set for MFA to work.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://aws.amazon.com/mfa/ Multi-Factor Authentication - */ - public function delete_object($bucket, $filename, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'DELETE'; - $opt['resource'] = $filename; - - // Enable MFA delete? - // @codeCoverageIgnoreStart - if (isset($opt['MFASerial']) && isset($opt['MFAToken'])) - { - $opt['headers'] = array( - 'x-amz-mfa' => ($opt['MFASerial'] . ' ' . $opt['MFAToken']) - ); - } - // @codeCoverageIgnoreEnd - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Deletes two or more specified Amazon S3 objects from the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • objects - array - Required - The object references to delete from the bucket.
      - *
    • key - string - Required - The name of the object (e.g., the "key") to delete. This should include the entire file path including all "subdirectories".
    • - *
    • version_id - string - Optional - If the object is versioned, include the version ID to delete.
    • - *
  • - *
  • quiet - boolean - Optional - Whether or not Amazon S3 should use "Quiet" mode for this operation. A value of true will enable Quiet mode. A value of false will use Verbose mode. The default value is false.
  • - *
  • MFASerial - string - Optional - The serial number on the back of the Gemalto device. MFASerial and MFAToken must both be set for MFA to work.
  • - *
  • MFAToken - string - Optional - The current token displayed on the Gemalto device. MFASerial and MFAToken must both be set for MFA to work.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://aws.amazon.com/mfa/ Multi-Factor Authentication - */ - public function delete_objects($bucket, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'POST'; - $opt['sub_resource'] = 'delete'; - $opt['body'] = ''; - - // Bail out - if (!isset($opt['objects']) || !is_array($opt['objects'])) - { - throw new S3_Exception('The ' . __FUNCTION__ . ' method requires the "objects" option to be set as an array.'); - } - - $xml = new SimpleXMLElement($this->multi_object_delete_xml); - - // Add the objects - foreach ($opt['objects'] as $object) - { - $xobject = $xml->addChild('Object'); - $xobject->addChild('Key', $object['key']); - - if (isset($object['version_id'])) - { - $xobject->addChild('VersionId', $object['version_id']); - } - } - - // Quiet mode? - if (isset($opt['quiet'])) - { - $quiet = 'false'; - if (is_bool($opt['quiet'])) // Boolean - { - $quiet = $opt['quiet'] ? 'true' : 'false'; - } - elseif (is_string($opt['quiet'])) // String - { - $quiet = ($opt['quiet'] === 'true') ? 'true' : 'false'; - } - - $xml->addChild('Quiet', $quiet); - } - - // Enable MFA delete? - // @codeCoverageIgnoreStart - if (isset($opt['MFASerial']) && isset($opt['MFAToken'])) - { - $opt['headers'] = array( - 'x-amz-mfa' => ($opt['MFASerial'] . ' ' . $opt['MFAToken']) - ); - } - // @codeCoverageIgnoreEnd - - $opt['body'] = $xml->asXML(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Gets a list of all Amazon S3 objects in the specified bucket. - * - * NOTE: This method is paginated, and will not return more than max-keys keys. If you want to retrieve a list of all keys, you will need to make multiple calls to this function using the marker option to specify the pagination offset (the key of the last processed key--lexically ordered) and the IsTruncated response key to detect when all results have been processed. See: the S3 REST documentation for get_bucket for more information. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • delimiter - string - Optional - Keys that contain the same string between the prefix and the first occurrence of the delimiter will be rolled up into a single result element in the CommonPrefixes collection.
  • - *
  • marker - string - Optional - Restricts the response to contain results that only occur alphabetically after the value of the marker.
  • - *
  • max-keys - string - Optional - The maximum number of results returned by the method call. The returned list will contain no more results than the specified value, but may return fewer. The default value is 1000.
  • - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • prefix - string - Optional - Restricts the response to contain results that begin only with the specified prefix.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function list_objects($bucket, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'GET'; - - foreach (array('delimiter', 'marker', 'max-keys', 'prefix') as $param) - { - if (isset($opt[$param])) - { - $opt['query_string'][$param] = $opt[$param]; - unset($opt[$param]); - } - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Copies an Amazon S3 object to a new location, whether in the same Amazon S3 region, bucket, or otherwise. - * - * @param array $source (Required) The bucket and file name to copy from. The following keys must be set:
    - *
  • bucket - string - Required - Specifies the name of the bucket containing the source object.
  • - *
  • filename - string - Required - Specifies the file name of the source object to copy.
- * @param array $dest (Required) The bucket and file name to copy to. The following keys must be set:
    - *
  • bucket - string - Required - Specifies the name of the bucket to copy the object to.
  • - *
  • filename - string - Required - Specifies the file name to copy the object to.
- * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • acl - string - Optional - The ACL settings for the specified object. [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. Alternatively, an array of associative arrays. Each associative array contains an id and a permission key. The default value is ACL_PRIVATE.
  • - *
  • encryption - string - Optional - The algorithm to use for encrypting the object. [Allowed values: AES256]
  • - *
  • storage - string - Optional - Whether to use Standard or Reduced Redundancy storage. [Allowed values: AmazonS3::STORAGE_STANDARD, AmazonS3::STORAGE_REDUCED]. The default value is STORAGE_STANDARD.
  • - *
  • versionId - string - Optional - The version of the object to copy. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
  • - *
  • ifMatch - string - Optional - The ETag header from a previous request. Copies the object if its entity tag (ETag) matches the specified tag; otherwise, the request returns a 412 HTTP status code error (precondition failed). Used in conjunction with ifUnmodifiedSince.
  • - *
  • ifUnmodifiedSince - string - Optional - The LastModified header from a previous request. Copies the object if it hasn't been modified since the specified time; otherwise, the request returns a 412 HTTP status code error (precondition failed). Used in conjunction with ifMatch.
  • - *
  • ifNoneMatch - string - Optional - The ETag header from a previous request. Copies the object if its entity tag (ETag) is different than the specified ETag; otherwise, the request returns a 412 HTTP status code error (failed condition). Used in conjunction with ifModifiedSince.
  • - *
  • ifModifiedSince - string - Optional - The LastModified header from a previous request. Copies the object if it has been modified since the specified time; otherwise, the request returns a 412 HTTP status code error (failed condition). Used in conjunction with ifNoneMatch.
  • - *
  • headers - array - Optional - Standard HTTP headers to send along in the request. Accepts an associative array of key-value pairs.
  • - *
  • meta - array - Optional - Associative array of key-value pairs. Represented by x-amz-meta-: Any header starting with this prefix is considered user metadata. It will be stored with the object and returned when you retrieve the object. The total size of the HTTP request, not including the body, must be less than 4 KB.
  • - *
  • metadataDirective - string - Optional - Accepts either COPY or REPLACE. You will likely never need to use this, as it manages itself with no issues.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/API/RESTObjectCOPY.html Copying Amazon S3 Objects - */ - public function copy_object($source, $dest, $opt = null) - { - if (!$opt) $opt = array(); - $batch = array(); - - // Add this to our request - $opt['verb'] = 'PUT'; - $opt['resource'] = $dest['filename']; - $opt['body'] = ''; - - // Handle copy source - if (isset($source['bucket']) && isset($source['filename'])) - { - $opt['headers']['x-amz-copy-source'] = '/' . $source['bucket'] . '/' . rawurlencode($source['filename']) - . (isset($opt['versionId']) ? ('?' . 'versionId=' . rawurlencode($opt['versionId'])) : ''); // Append the versionId to copy, if available - unset($opt['versionId']); - - // Determine if we need to lookup the pre-existing content-type. - if ( - (!$this->use_batch_flow && !isset($opt['returnCurlHandle'])) && - !in_array(strtolower('content-type'), array_map('strtolower', array_keys($opt['headers']))) - ) - { - $response = $this->get_object_headers($source['bucket'], $source['filename']); - if ($response->isOK()) - { - $opt['headers']['Content-Type'] = $response->header['content-type']; - } - } - } - - // Handle metadata directive - $opt['headers']['x-amz-metadata-directive'] = 'COPY'; - if ($source['bucket'] === $dest['bucket'] && $source['filename'] === $dest['filename']) - { - $opt['headers']['x-amz-metadata-directive'] = 'REPLACE'; - } - if (isset($opt['metadataDirective'])) - { - $opt['headers']['x-amz-metadata-directive'] = $opt['metadataDirective']; - unset($opt['metadataDirective']); - } - - // Handle Access Control Lists. Can also pass canned ACLs as an HTTP header. - if (isset($opt['acl']) && is_array($opt['acl'])) - { - $batch[] = $this->set_object_acl($dest['bucket'], $dest['filename'], $opt['acl'], array( - 'returnCurlHandle' => true - )); - unset($opt['acl']); - } - elseif (isset($opt['acl'])) - { - $opt['headers']['x-amz-acl'] = $opt['acl']; - unset($opt['acl']); - } - - // Handle storage settings. Can also be passed as an HTTP header. - if (isset($opt['storage'])) - { - $opt['headers']['x-amz-storage-class'] = $opt['storage']; - unset($opt['storage']); - } - - // Handle encryption settings. Can also be passed as an HTTP header. - if (isset($opt['encryption'])) - { - $opt['headers']['x-amz-server-side-encryption'] = $opt['encryption']; - unset($opt['encryption']); - } - - // Handle conditional-copy parameters - if (isset($opt['ifMatch'])) - { - $opt['headers']['x-amz-copy-source-if-match'] = $opt['ifMatch']; - unset($opt['ifMatch']); - } - if (isset($opt['ifNoneMatch'])) - { - $opt['headers']['x-amz-copy-source-if-none-match'] = $opt['ifNoneMatch']; - unset($opt['ifNoneMatch']); - } - if (isset($opt['ifUnmodifiedSince'])) - { - $opt['headers']['x-amz-copy-source-if-unmodified-since'] = $opt['ifUnmodifiedSince']; - unset($opt['ifUnmodifiedSince']); - } - if (isset($opt['ifModifiedSince'])) - { - $opt['headers']['x-amz-copy-source-if-modified-since'] = $opt['ifModifiedSince']; - unset($opt['ifModifiedSince']); - } - - // Handle meta tags. Can also be passed as an HTTP header. - if (isset($opt['meta'])) - { - foreach ($opt['meta'] as $meta_key => $meta_value) - { - // e.g., `My Meta Header` is converted to `x-amz-meta-my-meta-header`. - $opt['headers']['x-amz-meta-' . strtolower(str_replace(' ', '-', $meta_key))] = $meta_value; - } - unset($opt['meta']); - } - - // Authenticate to S3 - $response = $this->authenticate($dest['bucket'], $opt); - - // Attempt to reset ACLs - $http = new RequestCore(); - $http->send_multi_request($batch); - - return $response; - } - - /** - * Updates an Amazon S3 object with new headers or other metadata. To replace the content of the - * specified Amazon S3 object, call with the same bucket and file name parameters. - * - * @param string $bucket (Required) The name of the bucket that contains the source file. - * @param string $filename (Required) The source file name that you want to update. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • acl - string - Optional - The ACL settings for the specified object. [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. The default value is .
  • - *
  • headers - array - Optional - Standard HTTP headers to send along in the request. Accepts an associative array of key-value pairs.
  • - *
  • meta - array - Optional - An associative array of key-value pairs. Any header with the x-amz-meta- prefix is considered user metadata and is stored with the Amazon S3 object. It will be stored with the object and returned when you retrieve the object. The total size of the HTTP request, not including the body, must be less than 4 KB.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/API/RESTObjectCOPY.html Copying Amazon S3 Objects - */ - public function update_object($bucket, $filename, $opt = null) - { - if (!$opt) $opt = array(); - $opt['metadataDirective'] = 'REPLACE'; - - // Authenticate to S3 - return $this->copy_object( - array('bucket' => $bucket, 'filename' => $filename), - array('bucket' => $bucket, 'filename' => $filename), - $opt - ); - } - - - /*%******************************************************************************************%*/ - // ACCESS CONTROL LISTS - - /** - * Gets the access control list (ACL) settings for the specified Amazon S3 object. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • versionId - string - Optional - The version of the object to retrieve. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
  • - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAccessPolicy.html REST Access Control Policy - */ - public function get_object_acl($bucket, $filename, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['resource'] = $filename; - $opt['sub_resource'] = 'acl'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Sets the access control list (ACL) settings for the specified Amazon S3 object. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param string $acl (Optional) The ACL settings for the specified object. Accepts any of the following constants: [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. Alternatively, an array of associative arrays. Each associative array contains an id and a permission key. The default value is ACL_PRIVATE. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAccessPolicy.html REST Access Control Policy - */ - public function set_object_acl($bucket, $filename, $acl = self::ACL_PRIVATE, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['resource'] = $filename; - $opt['sub_resource'] = 'acl'; - - // Retrieve the original metadata - $metadata = $this->get_object_metadata($bucket, $filename); - if ($metadata && $metadata['ContentType']) - { - $opt['headers']['Content-Type'] = $metadata['ContentType']; - } - if ($metadata && $metadata['StorageClass']) - { - $opt['headers']['x-amz-storage-class'] = $metadata['StorageClass']; - } - - // Make sure these are defined. - // @codeCoverageIgnoreStart - if (!$this->credentials->canonical_id || !$this->credentials->canonical_name) - { - // Fetch the data live. - $canonical = $this->get_canonical_user_id(); - $this->credentials->canonical_id = $canonical['id']; - $this->credentials->canonical_name = $canonical['display_name']; - } - // @codeCoverageIgnoreEnd - - if (is_array($acl)) - { - $opt['body'] = $this->generate_access_policy($this->credentials->canonical_id, $this->credentials->canonical_name, $acl); - } - else - { - $opt['body'] = ''; - $opt['headers']['x-amz-acl'] = $acl; - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Generates the XML to be used for the Access Control Policy. - * - * @param string $canonical_id (Required) The canonical ID for the bucket owner. This is provided as the `id` return value from . - * @param string $canonical_name (Required) The canonical display name for the bucket owner. This is provided as the `display_name` value from . - * @param array $users (Optional) An array of associative arrays. Each associative array contains an `id` value and a `permission` value. - * @return string Access Control Policy XML. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_ACLs.html Access Control Lists - */ - public function generate_access_policy($canonical_id, $canonical_name, $users) - { - $xml = simplexml_load_string($this->base_acp_xml); - $owner = $xml->addChild('Owner'); - $owner->addChild('ID', $canonical_id); - $owner->addChild('DisplayName', $canonical_name); - $acl = $xml->addChild('AccessControlList'); - - foreach ($users as $user) - { - $grant = $acl->addChild('Grant'); - $grantee = $grant->addChild('Grantee'); - - switch ($user['id']) - { - // Authorized Users - case self::USERS_AUTH: - $grantee->addAttribute('xsi:type', 'Group', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('URI', self::USERS_AUTH); - break; - - // All Users - case self::USERS_ALL: - $grantee->addAttribute('xsi:type', 'Group', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('URI', self::USERS_ALL); - break; - - // The Logging User - case self::USERS_LOGGING: - $grantee->addAttribute('xsi:type', 'Group', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('URI', self::USERS_LOGGING); - break; - - // Email Address or Canonical Id - default: - if (strpos($user['id'], '@')) - { - $grantee->addAttribute('xsi:type', 'AmazonCustomerByEmail', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('EmailAddress', $user['id']); - } - else - { - // Assume Canonical Id - $grantee->addAttribute('xsi:type', 'CanonicalUser', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('ID', $user['id']); - } - break; - } - - $grant->addChild('Permission', $user['permission']); - } - - return $xml->asXML(); - } - - - /*%******************************************************************************************%*/ - // LOGGING METHODS - - /** - * Gets the access logs associated with the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. Pass a `null` value when using the method. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/ServerLogs.html Server Access Logging - */ - public function get_logs($bucket, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'logging'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Enables access logging for the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to enable logging for. Pass a `null` value when using the method. - * @param string $target_bucket (Required) The name of the bucket to store the logs in. - * @param string $target_prefix (Required) The prefix to give to the log file names. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • users - array - Optional - An array of associative arrays specifying any user to give access to. Each associative array contains an id and permission value.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/LoggingAPI.html Server Access Logging Configuration API - */ - public function enable_logging($bucket, $target_bucket, $target_prefix, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'logging'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - $xml = simplexml_load_string($this->base_logging_xml); - $LoggingEnabled = $xml->addChild('LoggingEnabled'); - $LoggingEnabled->addChild('TargetBucket', $target_bucket); - $LoggingEnabled->addChild('TargetPrefix', $target_prefix); - $TargetGrants = $LoggingEnabled->addChild('TargetGrants'); - - if (isset($opt['users']) && is_array($opt['users'])) - { - foreach ($opt['users'] as $user) - { - $grant = $TargetGrants->addChild('Grant'); - $grantee = $grant->addChild('Grantee'); - - switch ($user['id']) - { - // Authorized Users - case self::USERS_AUTH: - $grantee->addAttribute('xsi:type', 'Group', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('URI', self::USERS_AUTH); - break; - - // All Users - case self::USERS_ALL: - $grantee->addAttribute('xsi:type', 'Group', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('URI', self::USERS_ALL); - break; - - // The Logging User - case self::USERS_LOGGING: - $grantee->addAttribute('xsi:type', 'Group', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('URI', self::USERS_LOGGING); - break; - - // Email Address or Canonical Id - default: - if (strpos($user['id'], '@')) - { - $grantee->addAttribute('xsi:type', 'AmazonCustomerByEmail', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('EmailAddress', $user['id']); - } - else - { - // Assume Canonical Id - $grantee->addAttribute('xsi:type', 'CanonicalUser', 'http://www.w3.org/2001/XMLSchema-instance'); - $grantee->addChild('ID', $user['id']); - } - break; - } - - $grant->addChild('Permission', $user['permission']); - } - } - - $opt['body'] = $xml->asXML(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Disables access logging for the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. Pass `null` if using . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/LoggingAPI.html Server Access Logging Configuration API - */ - public function disable_logging($bucket, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'logging'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - $opt['body'] = $this->base_logging_xml; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - - /*%******************************************************************************************%*/ - // CONVENIENCE METHODS - - /** - * Gets whether or not the specified Amazon S3 bucket exists in Amazon S3. This includes buckets - * that do not belong to the caller. - * - * @param string $bucket (Required) The name of the bucket to use. - * @return boolean A value of true if the bucket exists, or a value of false if it does not. - */ - public function if_bucket_exists($bucket) - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - $header = $this->get_bucket_headers($bucket); - return (bool) $header->isOK(); - } - - /** - * Gets whether or not the specified Amazon S3 object exists in the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @return boolean A value of true if the object exists, or a value of false if it does not. - */ - public function if_object_exists($bucket, $filename) - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - $header = $this->get_object_headers($bucket, $filename); - - if ($header->isOK()) { return true; } - elseif ($header->status === 404) { return false; } - - // @codeCoverageIgnoreStart - return null; - // @codeCoverageIgnoreEnd - } - - /** - * Gets whether or not the specified Amazon S3 bucket has a bucket policy associated with it. - * - * @param string $bucket (Required) The name of the bucket to use. - * @return boolean A value of true if a bucket policy exists, or a value of false if one does not. - */ - public function if_bucket_policy_exists($bucket) - { - if ($this->use_batch_flow) - { - // @codeCoverageIgnoreStart - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - // @codeCoverageIgnoreEnd - } - - $response = $this->get_bucket_policy($bucket); - - if ($response->isOK()) { return true; } - elseif ($response->status === 404) { return false; } - - // @codeCoverageIgnoreStart - return null; - // @codeCoverageIgnoreEnd - } - - /** - * Gets the number of Amazon S3 objects in the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @return integer The number of Amazon S3 objects in the bucket. - */ - public function get_bucket_object_count($bucket) - { - if ($this->use_batch_flow) - { - // @codeCoverageIgnoreStart - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - // @codeCoverageIgnoreEnd - } - - return count($this->get_object_list($bucket)); - } - - /** - * Gets the cumulative file size of the contents of the Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param boolean $friendly_format (Optional) A value of true will format the return value to 2 decimal points using the largest possible unit (i.e., 3.42 GB). A value of false will format the return value as the raw number of bytes. - * @return integer|string The number of bytes as an integer, or the friendly format as a string. - */ - public function get_bucket_filesize($bucket, $friendly_format = false) - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - $filesize = 0; - $list = $this->list_objects($bucket); - - foreach ($list->body->Contents as $filename) - { - $filesize += (integer) $filename->Size; - } - - while ((string) $list->body->IsTruncated === 'true') - { - $body = (array) $list->body; - $list = $this->list_objects($bucket, array( - 'marker' => (string) end($body['Contents'])->Key - )); - - foreach ($list->body->Contents as $object) - { - $filesize += (integer) $object->Size; - } - } - - if ($friendly_format) - { - $filesize = $this->util->size_readable($filesize); - } - - return $filesize; - } - - /** - * Gets the file size of the specified Amazon S3 object. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param boolean $friendly_format (Optional) A value of true will format the return value to 2 decimal points using the largest possible unit (i.e., 3.42 GB). A value of false will format the return value as the raw number of bytes. - * @return integer|string The number of bytes as an integer, or the friendly format as a string. - */ - public function get_object_filesize($bucket, $filename, $friendly_format = false) - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - $object = $this->get_object_headers($bucket, $filename); - $filesize = (integer) $object->header['content-length']; - - if ($friendly_format) - { - $filesize = $this->util->size_readable($filesize); - } - - return $filesize; - } - - /** - * Changes the content type for an existing Amazon S3 object. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param string $contentType (Required) The content-type to apply to the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function change_content_type($bucket, $filename, $contentType, $opt = null) - { - if (!$opt) $opt = array(); - - // Retrieve the original metadata - $metadata = $this->get_object_metadata($bucket, $filename); - if ($metadata && $metadata['ACL']) - { - $opt['acl'] = $metadata['ACL']; - } - if ($metadata && $metadata['StorageClass']) - { - $opt['headers']['x-amz-storage-class'] = $metadata['StorageClass']; - } - - // Merge optional parameters - $opt = array_merge_recursive(array( - 'headers' => array( - 'Content-Type' => $contentType - ), - 'metadataDirective' => 'COPY' - ), $opt); - - return $this->copy_object( - array('bucket' => $bucket, 'filename' => $filename), - array('bucket' => $bucket, 'filename' => $filename), - $opt - ); - } - - /** - * Changes the storage redundancy for an existing object. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param string $storage (Required) The storage setting to apply to the object. [Allowed values: AmazonS3::STORAGE_STANDARD, AmazonS3::STORAGE_REDUCED] - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - *
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
- * @return CFResponse A object containing a parsed HTTP response. - */ - public function change_storage_redundancy($bucket, $filename, $storage, $opt = null) - { - if (!$opt) $opt = array(); - - // Retrieve the original metadata - $metadata = $this->get_object_metadata($bucket, $filename); - if ($metadata && $metadata['ACL']) - { - $opt['acl'] = $metadata['ACL']; - } - if ($metadata && $metadata['ContentType']) - { - $opt['headers']['Content-Type'] = $metadata['ContentType']; - } - - // Merge optional parameters - $opt = array_merge(array( - 'storage' => $storage, - 'metadataDirective' => 'COPY', - ), $opt); - - return $this->copy_object( - array('bucket' => $bucket, 'filename' => $filename), - array('bucket' => $bucket, 'filename' => $filename), - $opt - ); - } - - /** - * Gets a simplified list of bucket names on an Amazon S3 account. - * - * @param string $pcre (Optional) A Perl-Compatible Regular Expression (PCRE) to filter the bucket names against. - * @return array The list of matching bucket names. If there are no results, the method will return an empty array. - * @link http://php.net/pcre Regular Expressions (Perl-Compatible) - */ - public function get_bucket_list($pcre = null) - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - // Get a list of buckets. - $list = $this->list_buckets(); - if ($list = $list->body->query('descendant-or-self::Name')) - { - $list = $list->map_string($pcre); - return $list; - } - - // @codeCoverageIgnoreStart - return array(); - // @codeCoverageIgnoreEnd - } - - /** - * Gets a simplified list of Amazon S3 object file names contained in a bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    - *
  • delimiter - string - Optional - Keys that contain the same string between the prefix and the first occurrence of the delimiter will be rolled up into a single result element in the CommonPrefixes collection.
  • - *
  • marker - string - Optional - Restricts the response to contain results that only occur alphabetically after the value of the marker.
  • - *
  • max-keys - integer - Optional - The maximum number of results returned by the method call. The returned list will contain no more results than the specified value, but may return less. A value of zero is treated as if you did not specify max-keys.
  • - *
  • pcre - string - Optional - A Perl-Compatible Regular Expression (PCRE) to filter the names against. This is applied only AFTER any native Amazon S3 filtering from specified prefix, marker, max-keys, or delimiter values are applied.
  • - *
  • prefix - string - Optional - Restricts the response to contain results that begin only with the specified prefix.
  • - *
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • - * @return array The list of matching object names. If there are no results, the method will return an empty array. - * @link http://php.net/pcre Regular Expressions (Perl-Compatible) - */ - public function get_object_list($bucket, $opt = null) - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - if (!$opt) $opt = array(); - unset($opt['returnCurlHandle']); // This would cause problems - - // Set some default values - $pcre = isset($opt['pcre']) ? $opt['pcre'] : null; - $max_keys = (isset($opt['max-keys']) && is_int($opt['max-keys'])) ? $opt['max-keys'] : null; - $objects = array(); - - if (!$max_keys) - { - // No max-keys specified. Get everything. - do - { - $list = $this->list_objects($bucket, $opt); - if ($keys = $list->body->query('descendant-or-self::Key')->map_string($pcre)) - { - $objects = array_merge($objects, $keys); - } - - $body = (array) $list->body; - $opt = array_merge($opt, array( - 'marker' => (isset($body['Contents']) && is_array($body['Contents'])) ? - ((string) end($body['Contents'])->Key) : - ((string) $list->body->Contents->Key) - )); - } - while ((string) $list->body->IsTruncated === 'true'); - } - else - { - // Max-keys specified. Approximate number of loops and make the requests. - - $max_keys = $opt['max-keys']; - $loops = ceil($max_keys / 1000); - - do - { - $list = $this->list_objects($bucket, $opt); - $keys = $list->body->query('descendant-or-self::Key')->map_string($pcre); - - if ($count = count($keys)) - { - $objects = array_merge($objects, $keys); - - if ($count < 1000) - { - break; - } - } - - if ($max_keys > 1000) - { - $max_keys -= 1000; - } - - $body = (array) $list->body; - $opt = array_merge($opt, array( - 'max-keys' => $max_keys, - 'marker' => (isset($body['Contents']) && is_array($body['Contents'])) ? - ((string) end($body['Contents'])->Key) : - ((string) $list->body->Contents->Key) - )); - } - while (--$loops); - } - - return $objects; - } - - /** - * Deletes all Amazon S3 objects inside the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $pcre (Optional) A Perl-Compatible Regular Expression (PCRE) to filter the names against. The default value is . - * @return boolean A value of true means that all objects were successfully deleted. A value of false means that at least one object failed to delete. - * @link http://php.net/pcre Regular Expressions (Perl-Compatible) - */ - public function delete_all_objects($bucket, $pcre = self::PCRE_ALL) - { - // Collect all matches - $list = $this->get_object_list($bucket, array('pcre' => $pcre)); - - // As long as we have at least one match... - if (count($list) > 0) - { - $objects = array(); - - foreach ($list as $object) - { - $objects[] = array('key' => $object); - } - - $batch = new CFBatchRequest(); - $batch->use_credentials($this->credentials); - - foreach (array_chunk($objects, 1000) as $object_set) - { - $this->batch($batch)->delete_objects($bucket, array( - 'objects' => $object_set - )); - } - - $responses = $this->batch($batch)->send(); - $is_ok = true; - - foreach ($responses as $response) - { - if (!$response->isOK() || isset($response->body->Error)) - { - $is_ok = false; - } - } - - return $is_ok; - } - - // If there are no matches, return true - return true; - } - - /** - * Deletes all of the versions of all Amazon S3 objects inside the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $pcre (Optional) A Perl-Compatible Regular Expression (PCRE) to filter the names against. The default value is . - * @return boolean A value of true means that all object versions were successfully deleted. A value of false means that at least one object/version failed to delete. - * @link http://php.net/pcre Regular Expressions (Perl-Compatible) - */ - public function delete_all_object_versions($bucket, $pcre = null) - { - // Instantiate - $versions = $this->list_bucket_object_versions($bucket); - - // Gather all nodes together into a single array - if ($versions->body->DeleteMarker() && $versions->body->Version()) - { - $markers = array_merge($versions->body->DeleteMarker()->getArrayCopy(), $versions->body->Version()->getArrayCopy()); - } - elseif ($versions->body->DeleteMarker()) - { - $markers = $versions->body->DeleteMarker()->getArrayCopy(); - } - elseif ($versions->body->Version()) - { - $markers = $versions->body->Version()->getArrayCopy(); - } - else - { - $markers = array(); - } - - while ((string) $versions->body->IsTruncated === 'true') - { - $versions = $this->list_bucket_object_versions($bucket, array( - 'key-marker' => (string) $versions->body->NextKeyMarker - )); - - // Gather all nodes together into a single array - if ($versions->body->DeleteMarker() && $versions->body->Version()) - { - $markers = array_merge($markers, $versions->body->DeleteMarker()->getArrayCopy(), $versions->body->Version()->getArrayCopy()); - } - elseif ($versions->body->DeleteMarker()) - { - $markers = array_merge($markers, $versions->body->DeleteMarker()->getArrayCopy()); - } - elseif ($versions->body->Version()) - { - $markers = array_merge($markers, $versions->body->Version()->getArrayCopy()); - } - } - - $objects = array(); - - // Loop through markers - foreach ($markers as $marker) - { - if ($pcre) - { - if (preg_match($pcre, (string) $marker->Key)) - { - $xx = array('key' => (string) $marker->Key); - if ((string) $marker->VersionId !== 'null') - { - $xx['version_id'] = (string) $marker->VersionId; - } - $objects[] = $xx; - unset($xx); - } - } - else - { - $xx = array('key' => (string) $marker->Key); - if ((string) $marker->VersionId !== 'null') - { - $xx['version_id'] = (string) $marker->VersionId; - } - $objects[] = $xx; - unset($xx); - } - } - - $batch = new CFBatchRequest(); - $batch->use_credentials($this->credentials); - - foreach (array_chunk($objects, 1000) as $object_set) - { - $this->batch($batch)->delete_objects($bucket, array( - 'objects' => $object_set - )); - } - - $responses = $this->batch($batch)->send(); - $is_ok = true; - - foreach ($responses as $response) - { - if (!$response->isOK() || isset($response->body->Error)) - { - $is_ok = false; - } - } - - return $is_ok; - } - - /** - * Gets the collective metadata for the given Amazon S3 object. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the Amazon S3 object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • versionId - string - Optional - The version of the object to retrieve. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return mixed If the object exists, the method returns the collective metadata for the Amazon S3 object. If the object does not exist, the method returns boolean false. - */ - public function get_object_metadata($bucket, $filename, $opt = null) - { - $batch = new CFBatchRequest(); - $this->batch($batch)->get_object_acl($bucket, $filename); // Get ACL info - $this->batch($batch)->get_object_headers($bucket, $filename); // Get content-type - $this->batch($batch)->list_objects($bucket, array( // Get other metadata - 'max-keys' => 1, - 'prefix' => $filename - )); - $response = $this->batch($batch)->send(); - - // Fail if any requests were unsuccessful - if (!$response->areOK()) - { - return false; - } - - $data = array( - 'ACL' => array(), - 'ContentType' => null, - 'ETag' => null, - 'Headers' => null, - 'Key' => null, - 'LastModified' => null, - 'Owner' => array(), - 'Size' => null, - 'StorageClass' => null, - ); - - // Add the content type - $data['ContentType'] = (string) $response[1]->header['content-type']; - - // Add the other metadata (including storage type) - $contents = json_decode(json_encode($response[2]->body->query('descendant-or-self::Contents')->first()), true); - $data = array_merge($data, (is_array($contents) ? $contents : array())); - - // Add ACL info - $grants = $response[0]->body->query('descendant-or-self::Grant'); - $max = count($grants); - - // Add raw header info - $data['Headers'] = $response[1]->header; - foreach (array('_info', 'x-amz-id-2', 'x-amz-request-id', 'cneonction', 'server', 'content-length', 'content-type', 'etag') as $header) - { - unset($data['Headers'][$header]); - } - ksort($data['Headers']); - - if (count($grants) > 0) - { - foreach ($grants as $grant) - { - $dgrant = array( - 'id' => (string) $this->util->try_these(array('ID', 'URI'), $grant->Grantee), - 'permission' => (string) $grant->Permission - ); - - $data['ACL'][] = $dgrant; - } - } - - return $data; - } - - - /*%******************************************************************************************%*/ - // URLS - - /** - * Gets the web-accessible URL for the Amazon S3 object or generates a time-limited signed request for - * a private file. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the Amazon S3 object. - * @param integer|string $preauth (Optional) Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • https - boolean - Optional - Set to true if you would like the URL be in https mode. Otherwise, the default behavior is always to use http regardless of your SSL settings. - *
    • method - string - Optional - The HTTP method to use for the request. Defaults to a value of GET.
    • - *
    • response - array - Optional - Allows adjustments to specific response headers. Pass an associative array where each key is one of the following: cache-control, content-disposition, content-encoding, content-language, content-type, expires. The expires value should use and be formatted with the DATE_RFC2822 constant.
    • - *
    • torrent - boolean - Optional - A value of true will return a URL to a torrent of the Amazon S3 object. A value of false will return a non-torrent URL. Defaults to false.
    • - *
    • versionId - string - Optional - The version of the object. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return string The file URL, with authentication and/or torrent parameters if requested. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html Using Query String Authentication - */ - public function get_object_url($bucket, $filename, $preauth = 0, $opt = null) - { - // Add this to our request - if (!$opt) $opt = array(); - $opt['verb'] = isset($opt['method']) ? $opt['method'] : 'GET'; - $opt['resource'] = $filename; - $opt['preauth'] = $preauth; - - if (isset($opt['torrent']) && $opt['torrent']) - { - $opt['sub_resource'] = 'torrent'; - unset($opt['torrent']); - } - - // GET responses - if (isset($opt['response'])) - { - foreach ($opt['response'] as $key => $value) - { - $opt['response-' . $key] = $value; - unset($opt['response'][$key]); - } - } - - // Determine whether or not to use SSL - $use_ssl = isset($opt['https']) ? (bool) $opt['https'] : false; - unset($opt['https']); - $current_use_ssl_setting = $this->use_ssl; - - // Authenticate to S3 - $this->use_ssl = $use_ssl; - $response = $this->authenticate($bucket, $opt); - $this->use_ssl = $current_use_ssl_setting; - - return $response; - } - - /** - * Gets the web-accessible URL to a torrent of the Amazon S3 object. The Amazon S3 object's access - * control list settings (ACL) MUST be set to for a valid URL to be returned. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param integer|string $preauth (Optional) Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with . - * @return string The torrent URL, with authentication parameters if requested. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?S3TorrentRetrieve.html Using BitTorrent to Retrieve Objects Stored in Amazon S3 - */ - public function get_torrent_url($bucket, $filename, $preauth = 0) - { - return $this->get_object_url($bucket, $filename, $preauth, array( - 'torrent' => true - )); - } - - - /*%******************************************************************************************%*/ - // VERSIONING - - /** - * Enables versioning support for the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • MFASerial - string (Optional) The serial number on the back of the Gemalto device. MFASerial, MFAToken and MFAStatus must all be set for MFA to work.
    • - *
    • MFAToken - string (Optional) The current token displayed on the Gemalto device. MFASerial, MFAToken and MFAStatus must all be set for MFA to work.
    • - *
    • MFAStatus - string (Optional) The MFA Delete status. Can be Enabled or Disabled. MFASerial, MFAToken and MFAStatus must all be set for MFA to work.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://aws.amazon.com/mfa/ Multi-Factor Authentication - */ - public function enable_versioning($bucket, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'versioning'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - $xml = simplexml_load_string($this->base_versioning_xml); - $xml->addChild('Status', 'Enabled'); - - // Enable MFA delete? - // @codeCoverageIgnoreStart - if (isset($opt['MFASerial']) && isset($opt['MFAToken']) && isset($opt['MFAStatus'])) - { - $xml->addChild('MfaDelete', $opt['MFAStatus']); - $opt['headers']['x-amz-mfa'] = ($opt['MFASerial'] . ' ' . $opt['MFAToken']); - } - // @codeCoverageIgnoreEnd - - $opt['body'] = $xml->asXML(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Disables versioning support for the specified Amazon S3 bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • MFASerial - string - Optional - The serial number on the back of the Gemalto device. MFASerial, MFAToken and MFAStatus must all be set for MFA to work.
    • - *
    • MFAToken - string - Optional - The current token displayed on the Gemalto device. MFASerial, MFAToken and MFAStatus must all be set for MFA to work.
    • - *
    • MFAStatus - string - Optional - The MFA Delete status. Can be Enabled or Disabled. MFASerial, MFAToken and MFAStatus must all be set for MFA to work.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://aws.amazon.com/mfa/ Multi-Factor Authentication - */ - public function disable_versioning($bucket, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'versioning'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - $xml = simplexml_load_string($this->base_versioning_xml); - $xml->addChild('Status', 'Suspended'); - - // Enable MFA delete? - // @codeCoverageIgnoreStart - if (isset($opt['MFASerial']) && isset($opt['MFAToken']) && isset($opt['MFAStatus'])) - { - $xml->addChild('MfaDelete', $opt['MFAStatus']); - $opt['headers']['x-amz-mfa'] = ($opt['MFASerial'] . ' ' . $opt['MFAToken']); - } - // @codeCoverageIgnoreEnd - - $opt['body'] = $xml->asXML(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Gets an Amazon S3 bucket's versioning status. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function get_versioning_status($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'versioning'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Gets a list of all the versions of Amazon S3 objects in the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • delimiter - string - Optional - Unicode string parameter. Keys that contain the same string between the prefix and the first occurrence of the delimiter will be rolled up into a single result element in the CommonPrefixes collection.
    • - *
    • key-marker - string - Optional - Restricts the response to contain results that only occur alphabetically after the value of the key-marker.
    • - *
    • max-keys - string - Optional - Limits the number of results returned in response to your query. Will return no more than this number of results, but possibly less.
    • - *
    • prefix - string - Optional - Restricts the response to only contain results that begin with the specified prefix.
    • - *
    • version-id-marker - string - Optional - Restricts the response to contain results that only occur alphabetically after the value of the version-id-marker.
    • - *
    • preauth - integer|string - Optional - Specifies that a presigned URL for this request should be returned. May be passed as a number of seconds since UNIX Epoch, or any string compatible with .
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function list_bucket_object_versions($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'versions'; - - foreach (array('delimiter', 'key-marker', 'max-keys', 'prefix', 'version-id-marker') as $param) - { - if (isset($opt[$param])) - { - $opt['query_string'][$param] = $opt[$param]; - unset($opt[$param]); - } - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - - /*%******************************************************************************************%*/ - // BUCKET POLICIES - - /** - * Sets the policy sub-resource for the specified Amazon S3 bucket. The specified policy replaces any - * policy the bucket already has. - * - * To perform this operation, the caller must be authorized to set a policy for the bucket and have - * PutPolicy permissions. If the caller does not have PutPolicy permissions for the bucket, Amazon S3 - * returns a `403 Access Denied` error. If the caller has the correct permissions but has not been - * authorized by the bucket owner, Amazon S3 returns a `405 Method Not Allowed` error. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param CFPolicy $policy (Required) The JSON policy to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/AccessPolicyLanguage.html Appendix: The Access Policy Language - */ - public function set_bucket_policy($bucket, CFPolicy $policy, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'policy'; - $opt['body'] = $policy->get_json(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Gets the policy of the specified Amazon S3 bucket. - * - * To use this operation, the caller must have GetPolicy permissions for the specified bucket and must be - * the bucket owner. If the caller does not have GetPolicy permissions, this method will generate a - * `403 Access Denied` error. If the caller has the correct permissions but is not the bucket owner, this - * method will generate a `405 Method Not Allowed` error. If the bucket does not have a policy defined for - * it, this method will generate a `404 Policy Not Found` error. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function get_bucket_policy($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'policy'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Deletes the bucket policy for the specified Amazon S3 bucket. To delete the policy, the caller must - * be the bucket owner and have `DeletePolicy` permissions for the specified bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. If you do not have `DeletePolicy` permissions, Amazon S3 returns a `403 Access Denied` error. If you have the correct permissions, but are not the bucket owner, Amazon S3 returns a `405 Method Not Allowed` error. If the bucket doesn't have a policy, Amazon S3 returns a `204 No Content` error. - */ - public function delete_bucket_policy($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'DELETE'; - $opt['sub_resource'] = 'policy'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - - /*%******************************************************************************************%*/ - // BUCKET NOTIFICATIONS - - /** - * Enables notifications of specified events for an Amazon S3 bucket. Currently, the - * `s3:ReducedRedundancyLostObject` event is the only event supported for notifications. The - * `s3:ReducedRedundancyLostObject` event is triggered when Amazon S3 detects that it has lost all - * copies of an Amazon S3 object and can no longer service requests for that object. - * - * If the bucket owner and Amazon SNS topic owner are the same, the bucket owner has permission to - * publish notifications to the topic by default. Otherwise, the owner of the topic must create a - * policy to enable the bucket owner to publish to the topic. - * - * By default, only the bucket owner can configure notifications on a bucket. However, bucket owners - * can use bucket policies to grant permission to other users to set this configuration with the - * `s3:PutBucketNotification` permission. - * - * After a PUT operation is called to configure notifications on a bucket, Amazon S3 publishes a test - * notification to ensure that the topic exists and that the bucket owner has permission to publish - * to the specified topic. If the notification is successfully published to the SNS topic, the PUT - * operation updates the bucket configuration and returns the 200 OK responses with a - * `x-amz-sns-test-message-id` header containing the message ID of the test notification sent to topic. - * - * @param string $bucket (Required) The name of the bucket to create bucket notifications for. - * @param string $topic_arn (Required) The SNS topic ARN to send notifications to. - * @param string $event (Required) The event type to listen for. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/NotificationHowTo.html Setting Up Notification of Bucket Events - */ - public function create_bucket_notification($bucket, $topic_arn, $event, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'notification'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - $xml = simplexml_load_string($this->base_notification_xml); - $topic_config = $xml->addChild('TopicConfiguration'); - $topic_config->addChild('Topic', $topic_arn); - $topic_config->addChild('Event', $event); - - $opt['body'] = $xml->asXML(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Gets the notification configuration of a bucket. Currently, the `s3:ReducedRedundancyLostObject` event - * is the only event supported for notifications. The `s3:ReducedRedundancyLostObject` event is triggered - * when Amazon S3 detects that it has lost all replicas of a Reduced Redundancy Storage object and can no - * longer service requests for that object. - * - * If notifications are not enabled on the bucket, the operation returns an empty - * `NotificatonConfiguration` element. - * - * By default, you must be the bucket owner to read the notification configuration of a bucket. However, - * the bucket owner can use a bucket policy to grant permission to other users to read this configuration - * with the `s3:GetBucketNotification` permission. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/NotificationHowTo.html Setting Up Notification of Bucket Events - */ - public function get_bucket_notifications($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'notification'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Empties the list of SNS topics to send notifications to. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/NotificationHowTo.html Setting Up Notification of Bucket Events - */ - public function delete_bucket_notification($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'notification'; - $opt['body'] = $this->base_notification_xml; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - - /*%******************************************************************************************%*/ - // MULTIPART UPLOAD - - /** - * Calculates the correct values for sequentially reading a file for multipart upload. This method should - * be used in conjunction with . - * - * @param integer $filesize (Required) The size in bytes of the entire file. - * @param integer $part_size (Required) The size in bytes of the part of the file to send. - * @return array An array containing key-value pairs. The keys are `seekTo` and `length`. - */ - public function get_multipart_counts($filesize, $part_size) - { - $i = 0; - $sizecount = $filesize; - $values = array(); - - while ($sizecount > 0) - { - $sizecount -= $part_size; - $values[] = array( - 'seekTo' => ($part_size * $i), - 'length' => (($sizecount > 0) ? $part_size : ($sizecount + $part_size)), - ); - $i++; - } - - return $values; - } - - /** - * Initiates a multipart upload and returns an `UploadId`. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • acl - string - Optional - The ACL settings for the specified object. [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. The default value is ACL_PRIVATE.
    • - *
    • contentType - string - Optional - The type of content that is being sent. The default value is application/octet-stream.
    • - *
    • encryption - string - Optional - The algorithm to use for encrypting the object. [Allowed values: AES256]
    • - *
    • headers - array - Optional - Standard HTTP headers to send along in the request. Accepts an associative array of key-value pairs.
    • - *
    • meta - array - Optional - An associative array of key-value pairs. Any header starting with x-amz-meta-: is considered user metadata. It will be stored with the object and returned when you retrieve the object. The total size of the HTTP request, not including the body, must be less than 4 KB.
    • - *
    • storage - string - Optional - Whether to use Standard or Reduced Redundancy storage. [Allowed values: AmazonS3::STORAGE_STANDARD, AmazonS3::STORAGE_REDUCED]. The default value is STORAGE_STANDARD.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAccessPolicy.html REST Access Control Policy - */ - public function initiate_multipart_upload($bucket, $filename, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'POST'; - $opt['resource'] = $filename; - $opt['sub_resource'] = 'uploads'; - $opt['body'] = ''; - - // Handle content type. Can also be passed as an HTTP header. - if (isset($opt['contentType'])) - { - $opt['headers']['Content-Type'] = $opt['contentType']; - unset($opt['contentType']); - } - - // Set a default content type. - if (!isset($opt['headers']['Content-Type'])) - { - $opt['headers']['Content-Type'] = 'application/octet-stream'; - } - - // Handle Access Control Lists. Can also be passed as an HTTP header. - if (isset($opt['acl'])) - { - $opt['headers']['x-amz-acl'] = $opt['acl']; - unset($opt['acl']); - } - - // Handle storage settings. Can also be passed as an HTTP header. - if (isset($opt['storage'])) - { - $opt['headers']['x-amz-storage-class'] = $opt['storage']; - unset($opt['storage']); - } - - // Handle encryption settings. Can also be passed as an HTTP header. - if (isset($opt['encryption'])) - { - $opt['headers']['x-amz-server-side-encryption'] = $opt['encryption']; - unset($opt['encryption']); - } - - // Handle meta tags. Can also be passed as an HTTP header. - if (isset($opt['meta'])) - { - foreach ($opt['meta'] as $meta_key => $meta_value) - { - // e.g., `My Meta Header` is converted to `x-amz-meta-my-meta-header`. - $opt['headers']['x-amz-meta-' . strtolower(str_replace(' ', '-', $meta_key))] = $meta_value; - } - unset($opt['meta']); - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Uploads a single part of a multipart upload. The part size cannot be smaller than 5 MB - * or larger than 5 TB. A multipart upload can have no more than 10,000 parts. - * - * Amazon S3 charges for storage as well as requests to the service. Smaller part sizes (and more - * requests) allow for faster failures and better upload reliability. Larger part sizes (and fewer - * requests) costs slightly less but has lower upload reliability. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param string $upload_id (Required) The upload ID identifying the multipart upload whose parts are being listed. The upload ID is retrieved from a call to . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • fileUpload - string|resource - Required - The URL/path for the file to upload or an open resource.
    • - *
    • partNumber - integer - Required - The part number order of the multipart upload.
    • - *
    • expect - string - Optional - Specifies that the SDK not send the request body until it receives an acknowledgement. If the message is rejected based on the headers, the body of the message is not sent. For more information, see RFC 2616, section 14.20. The value can also be passed to the header option as Expect. [Allowed values: 100-continue]
    • - *
    • headers - array - Optional - Standard HTTP headers to send along in the request. Accepts an associative array of key-value pairs.
    • - *
    • length - integer - Optional - The size of the part in bytes. For more information, see RFC 2616, section 14.13. The value can also be passed to the header option as Content-Length.
    • - *
    • md5 - string - Optional - The base64 encoded 128-bit MD5 digest of the part data. This header can be used as a message integrity check to verify that the part data is the same data that was originally sent. Although it is optional, we recommend using this mechanism as an end-to-end integrity check. For more information, see RFC 1864. The value can also be passed to the header option as Content-MD5.
    • - *
    • seekTo - integer - Optional - The starting position in bytes for the piece of the file/stream to upload.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function upload_part($bucket, $filename, $upload_id, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'PUT'; - $opt['resource'] = $filename; - $opt['uploadId'] = $upload_id; - - if (!isset($opt['fileUpload']) || !isset($opt['partNumber'])) - { - throw new S3_Exception('The `fileUpload` and `partNumber` options are both required in ' . __FUNCTION__ . '().'); - } - - // Handle expectation. Can also be passed as an HTTP header. - if (isset($opt['expect'])) - { - $opt['headers']['Expect'] = $opt['expect']; - unset($opt['expect']); - } - - // Handle content length. Can also be passed as an HTTP header. - if (isset($opt['length'])) - { - $opt['headers']['Content-Length'] = $opt['length']; - unset($opt['length']); - } - - // Handle content md5. Can also be passed as an HTTP header. - if (isset($opt['md5'])) - { - $opt['headers']['Content-MD5'] = $opt['md5']; - unset($opt['md5']); - } - - $opt['headers']['Expect'] = '100-continue'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Lists the completed parts of an in-progress multipart upload. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param string $upload_id (Required) The upload ID identifying the multipart upload whose parts are being listed. The upload ID is retrieved from a call to . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • max-parts - integer - Optional - The maximum number of parts to return in the response body.
    • - *
    • part-number-marker - string - Optional - Restricts the response to contain results that only occur numerically after the value of the part-number-marker.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function list_parts($bucket, $filename, $upload_id, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'GET'; - $opt['resource'] = $filename; - $opt['uploadId'] = $upload_id; - $opt['query_string'] = array(); - - foreach (array('max-parts', 'part-number-marker') as $param) - { - if (isset($opt[$param])) - { - $opt['query_string'][$param] = $opt[$param]; - unset($opt[$param]); - } - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Aborts an in-progress multipart upload. This operation cannot be reversed. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param string $upload_id (Required) The upload ID identifying the multipart upload whose parts are being listed. The upload ID is retrieved from a call to . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function abort_multipart_upload($bucket, $filename, $upload_id, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'DELETE'; - $opt['resource'] = $filename; - $opt['uploadId'] = $upload_id; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Completes an in-progress multipart upload. A multipart upload is completed by describing the part - * numbers and corresponding ETag values in order, and submitting that data to Amazon S3 as an XML document. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param string $upload_id (Required) The upload ID identifying the multipart upload whose parts are being listed. The upload ID is retrieved from a call to . - * @param string|array|SimpleXMLElement|CFResponse $parts (Required) The completion XML document. This document can be provided in multiple ways; as a string of XML, as a object representing the XML document, as an indexed array of associative arrays where the keys are PartNumber and ETag, or as a object returned by . - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function complete_multipart_upload($bucket, $filename, $upload_id, $parts, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'POST'; - $opt['resource'] = $filename; - $opt['uploadId'] = $upload_id; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - // Disable Content-MD5 calculation for this operation - $opt['NoContentMD5'] = true; - - if (is_string($parts)) - { - // Assume it's the intended XML. - $opt['body'] = $parts; - } - elseif ($parts instanceof SimpleXMLElement) - { - // Assume it's a SimpleXMLElement object representing the XML. - $opt['body'] = $parts->asXML(); - } - elseif (is_array($parts) || $parts instanceof CFResponse) - { - $xml = simplexml_load_string($this->complete_mpu_xml); - - if (is_array($parts)) - { - // Generate the appropriate XML. - foreach ($parts as $node) - { - $part = $xml->addChild('Part'); - $part->addChild('PartNumber', $node['PartNumber']); - $part->addChild('ETag', $node['ETag']); - } - - } - elseif ($parts instanceof CFResponse) - { - // Assume it's a response from list_parts(). - foreach ($parts->body->Part as $node) - { - $part = $xml->addChild('Part'); - $part->addChild('PartNumber', (string) $node->PartNumber); - $part->addChild('ETag', (string) $node->ETag); - } - } - - $opt['body'] = $xml->asXML(); - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Lists the in-progress multipart uploads. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • delimiter - string - Optional - Keys that contain the same string between the prefix and the first occurrence of the delimiter will be rolled up into a single result element in the CommonPrefixes collection.
    • - *
    • key-marker - string - Optional - Restricts the response to contain results that only occur alphabetically after the value of the key-marker. If used in conjunction with upload-id-marker, the results will be filtered to include keys whose upload ID is alphabetically after the value of upload-id-marker.
    • - *
    • upload-id-marker - string - Optional - Restricts the response to contain results that only occur alphabetically after the value of the upload-id-marker. Must be used in conjunction with key-marker.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function list_multipart_uploads($bucket, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'uploads'; - - foreach (array('key-marker', 'max-uploads', 'upload-id-marker') as $param) - { - if (isset($opt[$param])) - { - $opt['query_string'][$param] = $opt[$param]; - unset($opt[$param]); - } - } - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Since Amazon S3's standard operation only supports copying objects that are smaller than - * 5 GB, the ability to copy large objects (greater than 5 GB) requires the use of "Multipart Copy". - * - * Copying large objects requires the developer to initiate a new multipart "upload", copy pieces of the - * large object (specifying a range of bytes up to 5 GB from the large source file), then complete the - * multipart "upload". - * - * NOTE: This is a synchronous operation, not an asynchronous operation, which means - * that Amazon S3 will not return a response for this operation until the copy has completed across the Amazon - * S3 server fleet. Copying objects within a single region will complete more quickly than copying objects - * across regions. The synchronous nature of this operation is different from other services where - * responses are typically returned immediately, even if the operation itself has not yet been completed on - * the server-side. - * - * @param array $source (Required) The bucket and file name to copy from. The following keys must be set:
      - *
    • bucket - string - Required - Specifies the name of the bucket containing the source object.
    • - *
    • filename - string - Required - Specifies the file name of the source object to copy.
    - * @param array $dest (Required) The bucket and file name to copy to. The following keys must be set:
      - *
    • bucket - string - Required - Specifies the name of the bucket to copy the object to.
    • - *
    • filename - string - Required - Specifies the file name to copy the object to.
    - * @param string $upload_id (Required) The upload ID identifying the multipart upload whose parts are being listed. The upload ID is retrieved from a call to . - * @param integer $part_number (Required) A part number uniquely identifies a part and defines its position within the destination object. When you complete a multipart upload, a complete object is created by concatenating parts in ascending order based on part number. If you copy a new part using the same part number as a previously copied/uploaded part, the previously written part is overwritten. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • ifMatch - string - Optional - The ETag header from a previous request. Copies the object if its entity tag (ETag) matches the specified tag; otherwise, the request returns a 412 HTTP status code error (precondition failed). Used in conjunction with ifUnmodifiedSince.
    • - *
    • ifUnmodifiedSince - string - Optional - The LastModified header from a previous request. Copies the object if it hasn't been modified since the specified time; otherwise, the request returns a 412 HTTP status code error (precondition failed). Used in conjunction with ifMatch.
    • - *
    • ifNoneMatch - string - Optional - The ETag header from a previous request. Copies the object if its entity tag (ETag) is different than the specified ETag; otherwise, the request returns a 412 HTTP status code error (failed condition). Used in conjunction with ifModifiedSince.
    • - *
    • ifModifiedSince - string - Optional - The LastModified header from a previous request. Copies the object if it has been modified since the specified time; otherwise, the request returns a 412 HTTP status code error (failed condition). Used in conjunction with ifNoneMatch.
    • - *
    • range - string - Optional - The range of bytes to copy from the object. Specify this parameter when copying partial bits. The specified range must be notated with a hyphen (e.g., 0-10485759). Defaults to the byte range of the complete Amazon S3 object.
    • - *
    • versionId - string - Optional - The version of the object to copy. Version IDs are returned in the x-amz-version-id header of any previous object-related request.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function copy_part($source, $dest, $upload_id, $part_number, $opt = null) - { - if (!$opt) $opt = array(); - - // Add this to our request - $opt['verb'] = 'PUT'; - $opt['resource'] = $dest['filename']; - $opt['uploadId'] = $upload_id; - $opt['partNumber'] = $part_number; - - // Handle copy source - if (isset($source['bucket']) && isset($source['filename'])) - { - $opt['headers']['x-amz-copy-source'] = '/' . $source['bucket'] . '/' . rawurlencode($source['filename']) - . (isset($opt['versionId']) ? ('?' . 'versionId=' . rawurlencode($opt['versionId'])) : ''); // Append the versionId to copy, if available - unset($opt['versionId']); - } - - // Handle conditional-copy parameters - if (isset($opt['ifMatch'])) - { - $opt['headers']['x-amz-copy-source-if-match'] = $opt['ifMatch']; - unset($opt['ifMatch']); - } - if (isset($opt['ifNoneMatch'])) - { - $opt['headers']['x-amz-copy-source-if-none-match'] = $opt['ifNoneMatch']; - unset($opt['ifNoneMatch']); - } - if (isset($opt['ifUnmodifiedSince'])) - { - $opt['headers']['x-amz-copy-source-if-unmodified-since'] = $opt['ifUnmodifiedSince']; - unset($opt['ifUnmodifiedSince']); - } - if (isset($opt['ifModifiedSince'])) - { - $opt['headers']['x-amz-copy-source-if-modified-since'] = $opt['ifModifiedSince']; - unset($opt['ifModifiedSince']); - } - - // Partial content range - if (isset($opt['range'])) - { - $opt['headers']['x-amz-copy-source-range'] = 'bytes=' . $opt['range']; - } - - // Authenticate to S3 - return $this->authenticate($dest['bucket'], $opt); - } - - /** - * Creates an Amazon S3 object using the multipart upload APIs. It is analogous to . - * - * While each individual part of a multipart upload can hold up to 5 GB of data, this method limits the - * part size to a maximum of 500 MB. The combined size of all parts can not exceed 5 TB of data. When an - * object is stored in Amazon S3, the data is streamed to multiple storage servers in multiple data - * centers. This ensures the data remains available in the event of internal network or hardware failure. - * - * Amazon S3 charges for storage as well as requests to the service. Smaller part sizes (and more - * requests) allow for faster failures and better upload reliability. Larger part sizes (and fewer - * requests) costs slightly less but has lower upload reliability. - * - * In certain cases with large objects, it's possible for this method to attempt to open more file system - * connections than allowed by the OS. In this case, either - * increase the number of connections - * allowed or increase the value of the partSize parameter to use a larger part size. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string $filename (Required) The file name for the object. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • fileUpload - string|resource - Required - The URL/path for the file to upload, or an open resource.
    • - *
    • acl - string - Optional - The ACL settings for the specified object. [Allowed values: AmazonS3::ACL_PRIVATE, AmazonS3::ACL_PUBLIC, AmazonS3::ACL_OPEN, AmazonS3::ACL_AUTH_READ, AmazonS3::ACL_OWNER_READ, AmazonS3::ACL_OWNER_FULL_CONTROL]. The default value is ACL_PRIVATE.
    • - *
    • contentType - string - Optional - The type of content that is being sent in the body. The default value is application/octet-stream.
    • - *
    • headers - array - Optional - Standard HTTP headers to send along in the request. Accepts an associative array of key-value pairs.
    • - *
    • length - integer - Optional - The size of the object in bytes. For more information, see RFC 2616, section 14.13. The value can also be passed to the header option as Content-Length.
    • - *
    • limit - integer - Optional - The maximum number of concurrent uploads done by cURL. Gets passed to CFBatchRequest.
    • - *
    • meta - array - Optional - An associative array of key-value pairs. Any header starting with x-amz-meta-: is considered user metadata. It will be stored with the object and returned when you retrieve the object. The total size of the HTTP request, not including the body, must be less than 4 KB.
    • - *
    • partSize - integer - Optional - The size of an individual part. The size may not be smaller than 5 MB or larger than 500 MB. The default value is 50 MB.
    • - *
    • seekTo - integer - Optional - The starting position in bytes for the first piece of the file/stream to upload.
    • - *
    • storage - string - Optional - Whether to use Standard or Reduced Redundancy storage. [Allowed values: AmazonS3::STORAGE_STANDARD, AmazonS3::STORAGE_REDUCED]. The default value is STORAGE_STANDARD.
    • - *
    • uploadId - string - Optional - An upload ID identifying an existing multipart upload to use. If this option is not set, one will be created automatically.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAccessPolicy.html REST Access Control Policy - */ - public function create_mpu_object($bucket, $filename, $opt = null) - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - if (!$opt) $opt = array(); - - // Handle content length. Can also be passed as an HTTP header. - if (isset($opt['length'])) - { - $opt['headers']['Content-Length'] = $opt['length']; - unset($opt['length']); - } - - if (!isset($opt['fileUpload'])) - { - throw new S3_Exception('The `fileUpload` option is required in ' . __FUNCTION__ . '().'); - } - elseif (is_resource($opt['fileUpload'])) - { - $opt['limit'] = 1; // We can only read from this one resource. - $upload_position = isset($opt['seekTo']) ? (integer) $opt['seekTo'] : ftell($opt['fileUpload']); - $upload_filesize = isset($opt['headers']['Content-Length']) ? (integer) $opt['headers']['Content-Length'] : null; - - if (!isset($upload_filesize) && $upload_position !== false) - { - $stats = fstat($opt['fileUpload']); - - if ($stats && $stats['size'] >= 0) - { - $upload_filesize = $stats['size'] - $upload_position; - } - } - } - else - { - $upload_position = isset($opt['seekTo']) ? (integer) $opt['seekTo'] : 0; - - if (isset($opt['headers']['Content-Length'])) - { - $upload_filesize = (integer) $opt['headers']['Content-Length']; - } - else - { - $upload_filesize = filesize($opt['fileUpload']); - - if ($upload_filesize !== false) - { - $upload_filesize -= $upload_position; - } - } - } - - if ($upload_position === false || !isset($upload_filesize) || $upload_filesize === false || $upload_filesize < 0) - { - throw new S3_Exception('The size of `fileUpload` cannot be determined in ' . __FUNCTION__ . '().'); - } - - // Handle part size - if (isset($opt['partSize'])) - { - // If less that 5 MB... - if ((integer) $opt['partSize'] < 5242880) - { - $opt['partSize'] = 5242880; // 5 MB - } - // If more than 500 MB... - elseif ((integer) $opt['partSize'] > 524288000) - { - $opt['partSize'] = 524288000; // 500 MB - } - } - else - { - $opt['partSize'] = 52428800; // 50 MB - } - - // If the upload size is smaller than the piece size, failover to create_object(). - if ($upload_filesize < $opt['partSize'] && !isset($opt['uploadId'])) - { - return $this->create_object($bucket, $filename, $opt); - } - - // Initiate multipart upload - if (isset($opt['uploadId'])) - { - $upload_id = $opt['uploadId']; - } - else - { - // Compose options for initiate_multipart_upload(). - $_opt = array(); - foreach (array('contentType', 'acl', 'storage', 'headers', 'meta') as $param) - { - if (isset($opt[$param])) - { - $_opt[$param] = $opt[$param]; - } - } - - $upload = $this->initiate_multipart_upload($bucket, $filename, $_opt); - if (!$upload->isOK()) - { - return $upload; - } - - // Fetch the UploadId - $upload_id = (string) $upload->body->UploadId; - } - - // Get the list of pieces - $pieces = $this->get_multipart_counts($upload_filesize, (integer) $opt['partSize']); - - // Queue batch requests - $batch = new CFBatchRequest(isset($opt['limit']) ? (integer) $opt['limit'] : null); - foreach ($pieces as $i => $piece) - { - $this->batch($batch)->upload_part($bucket, $filename, $upload_id, array( - 'expect' => '100-continue', - 'fileUpload' => $opt['fileUpload'], - 'partNumber' => ($i + 1), - 'seekTo' => $upload_position + (integer) $piece['seekTo'], - 'length' => (integer) $piece['length'], - )); - } - - // Send batch requests - $batch_responses = $this->batch($batch)->send(); - if (!$batch_responses->areOK()) - { - return $batch_responses; - } - - // Compose completion XML - $parts = array(); - foreach ($batch_responses as $i => $response) - { - $parts[] = array('PartNumber' => ($i + 1), 'ETag' => $response->header['etag']); - } - - return $this->complete_multipart_upload($bucket, $filename, $upload_id, $parts); - } - - /** - * Aborts all multipart uploads initiated before the specified date. This operation cannot be reversed. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param string|integer $when (Optional) The time and date to use for comparison. Accepts any value that understands. - * @return CFArray A containing a series of 0 or more objects, containing a parsed HTTP response. - */ - public function abort_multipart_uploads_by_date($bucket, $when = null) - { - if ($this->use_batch_flow) - { - // @codeCoverageIgnoreStart - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - // @codeCoverageIgnoreEnd - } - - $when = $when ? $when : time(); - $handles = array(); - $data = $this->list_multipart_uploads($bucket)->body; - $when = is_int($when) ? $when : strtotime($when); - - if (!($data instanceof CFSimpleXML)) - { - return false; - } - - $list = $data->query('descendant-or-self::Upload/Initiated'); - - if (count($list) > 0) - { - foreach ($list as $node) - { - if (strtotime((string) $node) < $when) - { - $q = new CFBatchRequest(); - $parent = $node->parent(); - - $upload_id = $parent - ->query('descendant-or-self::UploadId') - ->first() - ->to_string(); - - $filename = $parent - ->query('descendant-or-self::Key') - ->first() - ->to_string(); - - $handles[] = $this->abort_multipart_upload($bucket, $filename, $upload_id, array( - 'returnCurlHandle' => true - )); - } - } - - $http = new CFRequest(); - $responses = $http->send_multi_request($handles); - - if (is_array($responses) && count($responses) > 0) - { - return new CFArray($responses); - } - } - - return new CFArray(); - } - - - /*%******************************************************************************************%*/ - // WEBSITE CONFIGURATION - - /** - * Enables and configures an Amazon S3 website using the corresponding bucket as the content source. - * The website will have one default domain name associated with it, which is the bucket name. If you - * attempt to configure an Amazon S3 website for a bucket whose name is not compatible with DNS, - * Amazon S3 returns an InvalidBucketName error. For more information on bucket names and DNS, - * refer to Bucket Restrictions and Limitations. - * - * To visit the bucket as a website a new endpoint is created in the following pattern: - * http://<bucketName>.s3-website-<region>.amazonaws.com. This is a sample URL - * for a bucket called example-bucket in the us-east-1 region. - * (e.g., http://example-bucket.s3-website-us-east-1.amazonaws.com) - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • indexDocument - string - Optional - The file path to use as the root document. The default value is index.html.
    • - *
    • errorDocument - string - Optional - The file path to use as the error document. The default value is error.html.
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function create_website_config($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'website'; - - $xml = simplexml_load_string($this->website_config_xml); - if (isset($opt['indexDocument'])) - { - $xml->IndexDocument->Suffix = $opt['indexDocument']; - } - if (isset($opt['errorDocument'])) - { - $xml->ErrorDocument->Key = $opt['errorDocument']; - } - - $opt['body'] = $xml->asXML(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Retrieves the website configuration for a bucket. The contents of this response are identical to the - * content submitted by the user during the website creation operation. If a website configuration has - * never been set, Amazon S3 will return a 404 error. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function get_website_config($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'website'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - /** - * Removes the website configuration for a bucket. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function delete_website_config($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'DELETE'; - $opt['sub_resource'] = 'website'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - - /*%******************************************************************************************%*/ - // OBJECT EXPIRATION - - /** - * Enables the ability to specify an expiry period for objects when an object should be deleted, - * measured as number of days from creation time. Amazon S3 guarantees that the object will be - * deleted when the expiration time is passed. - * - * @param string $bucket (Required) The name of the bucket to use. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • rules - string - Required - The object expiration rule-sets to apply to the bucket.
        - *
      • x - array - Required - This represents a simple array index.
          - *
        • id - string - Optional - Unique identifier for the rule. The value cannot be longer than 255 characters. - *
        • prefix - string - Required - The Amazon S3 object prefix which targets the file(s) for expiration.
        • - *
        • expiration - array - Required - The container for the unit of measurement by which the expiration time is calculated.
            - *
          • days - integer - Required - The number of days until the targetted objects expire from the bucket.
          • - *
        • - *
        • enabled - boolean - Optional - Whether or not to enable this rule-set. A value of true enables the rule-set. A value of false disables the rule-set. The default value is true.
        • - *
      • - *
    • - *
    • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
    • - *
    • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.
    - * @return CFResponse A object containing a parsed HTTP response. - */ - public function create_object_expiration_config($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'PUT'; - $opt['sub_resource'] = 'lifecycle'; - $opt['headers'] = array( - 'Content-Type' => 'application/xml' - ); - - $xml = simplexml_load_string($this->object_expiration_xml, $this->parser_class); - - if (isset($opt['rules']) && is_array($opt['rules']) && count($opt['rules'])) - { - foreach ($opt['rules'] as $rule) - { - $xrule = $xml->addChild('Rule'); - - // ID - if (isset($rule['id'])) - { - if (strlen($rule['id']) > 255) - { - throw new S3_Exception('The "id" for a rule must not be more than 255 characters in the ' . __FUNCTION__ . ' method.'); - } - - $xrule->addChild('ID', $rule['id']); - } - - // Prefix - if (isset($rule['prefix'])) - { - $xrule->addChild('Prefix', $rule['prefix']); - } - else - { - throw new S3_Exception('Each rule requires a "prefix" in the ' . __FUNCTION__ . ' method.'); - } - - // Status - $enabled = 'Enabled'; - if (isset($rule['enabled'])) - { - if (is_bool($rule['enabled'])) // Boolean - { - $enabled = $rule['enabled'] ? 'Enabled' : 'Disabled'; - } - elseif (is_string($rule['enabled'])) // String - { - $enabled = (strtolower($rule['enabled']) === 'true') ? 'Enabled' : 'Disabled'; - } - - $xrule->addChild('Status', $enabled); - } - else - { - $xrule->addChild('Status', 'Enabled'); - } - - // Expiration - if (isset($rule['expiration'])) - { - $xexpiration = $xrule->addChild('Expiration'); - - if (isset($rule['expiration']['days'])) - { - $xexpiration->addChild('Days', $rule['expiration']['days']); - } - } - else - { - throw new S3_Exception('Each rule requires a "expiration" in the ' . __FUNCTION__ . ' method.'); - } - } - } - - $opt['body'] = $xml->asXML(); - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - public function get_object_expiration_config($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'GET'; - $opt['sub_resource'] = 'lifecycle'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - public function delete_object_expiration_config($bucket, $opt = null) - { - if (!$opt) $opt = array(); - $opt['verb'] = 'DELETE'; - $opt['sub_resource'] = 'lifecycle'; - - // Authenticate to S3 - return $this->authenticate($bucket, $opt); - } - - - /*%******************************************************************************************%*/ - // MISCELLANEOUS - - /** - * Gets the canonical user ID and display name from the Amazon S3 server. - * - * @return array An associative array containing the `id` and `display_name` values. - */ - public function get_canonical_user_id() - { - if ($this->use_batch_flow) - { - throw new S3_Exception(__FUNCTION__ . '() cannot be batch requested'); - } - - $id = $this->list_buckets(); - - return array( - 'id' => (string) $id->body->Owner->ID, - 'display_name' => (string) $id->body->Owner->DisplayName - ); - } - - /** - * Loads and registers the S3StreamWrapper class as a stream wrapper. - * - * @param string $protocol (Optional) The name of the protocol to register. - * @return boolean Whether or not the registration succeeded. - */ - public function register_stream_wrapper($protocol = 's3') - { - require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'extensions' - . DIRECTORY_SEPARATOR . 's3streamwrapper.class.php'; - - return S3StreamWrapper::register($this, $protocol); - } -} diff --git a/3rdparty/aws-sdk/utilities/array.class.php b/3rdparty/aws-sdk/utilities/array.class.php deleted file mode 100644 index dea673546f8be9c219919391f049f03289f931b3..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/array.class.php +++ /dev/null @@ -1,312 +0,0 @@ - object extends PHP's built-in object by providing convenience methods for - * rapidly manipulating array data. Specifically, the `CFArray` object is intended for working with - * and objects that are returned by AWS services. - * - * @version 2012.01.17 - * @license See the included NOTICE.md file for more information. - * @copyright See the included NOTICE.md file for more information. - * @link http://aws.amazon.com/php/ PHP Developer Center - * @link http://php.net/ArrayObject ArrayObject - */ -class CFArray extends ArrayObject -{ - /** - * Constructs a new instance of . - * - * @param mixed $input (Optional) The input parameter accepts an array or an Object. The default value is an empty array. - * @param integer $flags (Optional) Flags to control the behavior of the ArrayObject object. Defaults to . - * @param string $iterator_class (Optional) Specify the class that will be used for iteration of the object. is the default class used. - * @return mixed Either an array of matches, or a single element. - */ - public function __construct($input = array(), $flags = self::STD_PROP_LIST, $iterator_class = 'ArrayIterator') - { - // Provide a default value - $input = $input ? $input : array(); - - try { - return parent::__construct($input, $flags, $iterator_class); - } - catch (InvalidArgumentException $e) - { - throw new CFArray_Exception($e->getMessage()); - } - } - - /** - * Alternate approach to constructing a new instance. Supports chaining. - * - * @param mixed $input (Optional) The input parameter accepts an array or an Object. The default value is an empty array. - * @param integer $flags (Optional) Flags to control the behavior of the ArrayObject object. Defaults to . - * @param string $iterator_class (Optional) Specify the class that will be used for iteration of the object. is the default class used. - * @return mixed Either an array of matches, or a single element. - */ - public static function init($input = array(), $flags = self::STD_PROP_LIST, $iterator_class = 'ArrayIterator') - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) - { - throw new Exception('PHP 5.3 or newer is required to instantiate a new class with CLASS::init().'); - } - - $self = get_called_class(); - return new $self($input, $flags, $iterator_class); - } - - /** - * Handles how the object is rendered when cast as a string. - * - * @return string The word "Array". - */ - public function __toString() - { - return 'Array'; - } - - - /*%******************************************************************************************%*/ - // REFORMATTING - - /** - * Maps each element in the object as an integer. - * - * @return array The contents of the object mapped as integers. - */ - public function map_integer() - { - return array_map('intval', $this->getArrayCopy()); - } - - /** - * Maps each element in the CFArray object as a string. - * - * @param string $pcre (Optional) A Perl-Compatible Regular Expression (PCRE) to filter the names against. - * @return array The contents of the object mapped as strings. If there are no results, the method will return an empty array. - */ - public function map_string($pcre = null) - { - $list = array_map('strval', $this->getArrayCopy()); - $dlist = array(); - - if ($pcre) - { - foreach ($list as $item) - { - $dlist[] = preg_match($pcre, $item) ? $item : null; - } - - $list = array_values(array_filter($dlist)); - } - - return $list; - } - - - /*%******************************************************************************************%*/ - // CONFIRMATION - - /** - * Verifies that _all_ responses were successful. A single failed request will cause to return false. Equivalent to , except it applies to all responses. - * - * @return boolean Whether _all_ requests were successful or not. - */ - public function areOK() - { - $dlist = array(); - $list = $this->getArrayCopy(); - - foreach ($list as $response) - { - if ($response instanceof CFResponse) - { - $dlist[] = $response->isOK(); - } - } - - return (array_search(false, $dlist, true) !== false) ? false : true; - } - - - /*%******************************************************************************************%*/ - // ITERATING AND EXECUTING - - /** - * Iterates over a object, and executes a function for each matched element. - * - * The callback function takes three parameters:
      - *
    • $item - mixed - Optional - The individual node in the array.
    • - *
    • $key - mixed - Optional - The key for the array node.
    • - *
    • $bind - mixed - Optional - The variable that was passed into the $bind parameter.
    - * - * @param string|function $callback (Required) The callback function to execute. PHP 5.3 or newer can use an anonymous function. - * @param mixed $bind (Optional) A variable from the calling scope to pass-by-reference into the local scope of the callback function. - * @return CFArray The original object. - */ - public function each($callback, &$bind = null) - { - $items = $this->getArrayCopy(); - - foreach ($items as $key => &$item) - { - $callback($item, $key, $bind); - } - - return $this; - } - - /** - * Passes each element in the current object through a function, and produces a new object containing the return values. - * - * The callback function takes three parameters:
      - *
    • $item - mixed - Optional - The individual node in the array.
    • - *
    • $key - mixed - Optional - The key for the array node.
    • - *
    • $bind - mixed - Optional - The variable that was passed into the $bind parameter.
    - * - * @param string|function $callback (Required) The callback function to execute. PHP 5.3 or newer can use an anonymous function. - * @param mixed $bind (Optional) A variable from the calling scope to pass-by-reference into the local scope of the callback function. - * @return CFArray A new object containing the return values. - */ - public function map($callback, &$bind = null) - { - $items = $this->getArrayCopy(); - $collect = array(); - - foreach ($items as $key => &$item) - { - $collect[] = $callback($item, $key, $bind); - } - - return new CFArray($collect); - } - - /** - * Filters the list of nodes by passing each value in the current object through a function. The node will be removed if the function returns `false`. - * - * The callback function takes three parameters:
      - *
    • $item - mixed - Optional - The individual node in the array.
    • - *
    • $key - mixed - Optional - The key for the array node.
    • - *
    • $bind - mixed - Optional - The variable that was passed into the $bind parameter.
    - * - * @param string|function $callback (Required) The callback function to execute. PHP 5.3 or newer can use an anonymous function. - * @param mixed $bind (Optional) A variable from the calling scope to pass-by-reference into the local scope of the callback function. - * @return CFArray A new object containing the return values. - */ - public function filter($callback, &$bind = null) - { - $items = $this->getArrayCopy(); - $collect = array(); - - foreach ($items as $key => &$item) - { - if ($callback($item, $key, $bind) !== false) - { - $collect[] = $item; - } - } - - return new CFArray($collect); - } - - /** - * Alias for . This functionality was incorrectly named _reduce_ in earlier versions of the SDK. - * - * @param string|function $callback (Required) The callback function to execute. PHP 5.3 or newer can use an anonymous function. - * @param mixed $bind (Optional) A variable from the calling scope to pass-by-reference into the local scope of the callback function. - * @return CFArray A new object containing the return values. - */ - public function reduce($callback, &$bind = null) - { - return $this->filter($callback, $bind); - } - - - /*%******************************************************************************************%*/ - // TRAVERSAL - - /** - * Gets the first result in the array. - * - * @return mixed The first result in the object. Returns `false` if there are no items in the array. - */ - public function first() - { - $items = $this->getArrayCopy(); - return count($items) ? $items[0] : false; - } - - /** - * Gets the last result in the array. - * - * @return mixed The last result in the object. Returns `false` if there are no items in the array. - */ - public function last() - { - $items = $this->getArrayCopy(); - return count($items) ? end($items) : false; - } - - /** - * Removes all `null` values from an array. - * - * @return CFArray A new object containing the non-null values. - */ - public function compress() - { - return new CFArray(array_filter($this->getArrayCopy())); - } - - /** - * Reindexes the array, starting from zero. - * - * @return CFArray A new object with indexes starting at zero. - */ - public function reindex() - { - return new CFArray(array_values($this->getArrayCopy())); - } - - - /*%******************************************************************************************%*/ - // ALTERNATE FORMATS - - /** - * Gets the current XML node as a JSON string. - * - * @return string The current XML node as a JSON string. - */ - public function to_json() - { - return json_encode($this->getArrayCopy()); - } - - /** - * Gets the current XML node as a YAML string. - * - * @return string The current XML node as a YAML string. - */ - public function to_yaml() - { - return sfYaml::dump($this->getArrayCopy(), 5); - } -} - -class CFArray_Exception extends Exception {} diff --git a/3rdparty/aws-sdk/utilities/batchrequest.class.php b/3rdparty/aws-sdk/utilities/batchrequest.class.php deleted file mode 100644 index 978283471a40ced684b6006482d6a53219f76cf7..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/batchrequest.class.php +++ /dev/null @@ -1,126 +0,0 @@ -queue = array(); - $this->limit = $limit ? $limit : -1; - $this->credentials = new CFCredential(array()); - return $this; - } - - /** - * Sets the AWS credentials to use for the batch request. - * - * @param CFCredential $credentials (Required) The credentials to use for signing and making requests. - * @return $this A reference to the current instance. - */ - public function use_credentials(CFCredential $credentials) - { - $this->credentials = $credentials; - return $this; - } - - /** - * Adds a new cURL handle to the request queue. - * - * @param resource $handle (Required) A cURL resource to add to the queue. - * @return $this A reference to the current instance. - */ - public function add($handle) - { - $this->queue[] = $handle; - return $this; - } - - /** - * Executes the batch request queue. - * - * @param array $opt (DO NOT USE) Enabled for compatibility with the method this overrides, although any values passed will be ignored. - * @return array An indexed array of objects. - */ - public function send($opt = null) - { - $http = new $this->request_class(null, $this->proxy, null, $this->credentials); - - // Make the request - $response = $http->send_multi_request($this->queue, array( - 'limit' => $this->limit - )); - - return $response; - } -} diff --git a/3rdparty/aws-sdk/utilities/complextype.class.php b/3rdparty/aws-sdk/utilities/complextype.class.php deleted file mode 100644 index e0509b9e36870c2110f7c3b30c6f503b495fc3ba..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/complextype.class.php +++ /dev/null @@ -1,123 +0,0 @@ - function. - * @param string $member (Optional) The name of the "member" property that AWS uses for lists in certain services. Defaults to an empty string. - * @param string $default_key (Optional) The default key to use when the value for `$data` is a string. Defaults to an empty string. - * @return array The option group parameters to merge into another method's `$opt` parameter. - */ - public static function json($json, $member = '', $default_key = '') - { - return self::option_group(json_decode($json, true), $member, $default_key); - } - - /** - * Takes a YAML object, as a string, to convert to query string keys. - * - * @param string $yaml (Required) A YAML object. - * @param string $member (Optional) The name of the "member" property that AWS uses for lists in certain services. Defaults to an empty string. - * @param string $default_key (Optional) The default key to use when the value for `$data` is a string. Defaults to an empty string. - * @return array The option group parameters to merge into another method's `$opt` parameter. - */ - public static function yaml($yaml, $member = '', $default_key = '') - { - return self::option_group(sfYaml::load($yaml), $member, $default_key); - } - - /** - * Takes an associative array to convert to query string keys. - * - * @param array $map (Required) An associative array. - * @param string $member (Optional) The name of the "member" property that AWS uses for lists in certain services. Defaults to an empty string. - * @param string $default_key (Optional) The default key to use when the value for `$data` is a string. Defaults to an empty string. - * @return array The option group parameters to merge into another method's `$opt` parameter. - */ - public static function map($map, $member = '', $default_key = '') - { - return self::option_group($map, $member, $default_key); - } - - /** - * A protected method that is used by , and . - * - * @param string|array $data (Required) The data to iterate over. - * @param string $member (Optional) The name of the "member" property that AWS uses for lists in certain services. Defaults to an empty string. - * @param string $key (Optional) The default key to use when the value for `$data` is a string. Defaults to an empty string. - * @param array $out (Optional) INTERNAL ONLY. The array that contains the calculated values up to this point. - * @return array The option group parameters to merge into another method's `$opt` parameter. - */ - public static function option_group($data, $member = '', $key = '', &$out = array()) - { - $reset = $key; - - if (is_array($data)) - { - foreach ($data as $k => $v) - { - // Avoid 0-based indexes. - if (is_int($k)) - { - $k = $k + 1; - - if ($member !== '') - { - $key .= '.' . $member; - } - } - - $key .= ($key === '' ? $k : '.' . $k); - - if (is_array($v)) - { - self::option_group($v, $member, $key, $out); - } - elseif ($v instanceof CFStepConfig) - { - self::option_group($v->get_config(), $member, $key, $out); - } - else - { - $out[$key] = $v; - } - - $key = $reset; - } - } - else - { - $out[$key] = $data; - } - - return $out; - } -} diff --git a/3rdparty/aws-sdk/utilities/credential.class.php b/3rdparty/aws-sdk/utilities/credential.class.php deleted file mode 100644 index 05c0ffcf6d877a297e87cc85ab98983be3bdbd51..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/credential.class.php +++ /dev/null @@ -1,157 +0,0 @@ - class represents an individual credential set. - * - * @version 2011.11.15 - * @license See the included NOTICE.md file for more information. - * @copyright See the included NOTICE.md file for more information. - * @link http://aws.amazon.com/php/ PHP Developer Center - */ -class CFCredential implements ArrayAccess -{ - /** - * Stores the internal representation of the collection. - */ - private $collection; - - /** - * Default getter. Enables syntax such as $object->method->chained_method();. Also supports - * $object->key. Matching methods are prioritized over matching keys. - * - * @param string $name (Required) The name of the method to execute or key to retrieve. - * @return mixed The results of calling the function $name(), or the value of the key $object[$name]. - */ - public function __get($name) - { - return $this[$name]; - } - - /** - * Default setter. - * - * @param string $name (Required) The name of the method to execute. - * @param string $value (Required) The value to pass to the method. - * @return mixed The results of calling the function, $name. - */ - public function __set($name, $value) - { - $this[$name] = $value; - return $this; - } - - /** - * Create a clone of the object. - * - * @return CFCredential A clone of the current instance. - */ - public function __clone() - { - $this->collection = clone $this->collection; - } - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of the class. - */ - public function __construct($value = array()) - { - $this->collection = new ArrayObject($value, ArrayObject::ARRAY_AS_PROPS); - } - - /** - * Check whether or not a specific offset exists. - * - * @param integer $offset (Required) The location in the collection to verify the existence of. - * @return boolean A value of true indicates that the collection offset exists. A value of false indicates that it does not. - */ - public function offsetExists($offset) - { - return $this->collection->offsetExists($offset); - } - - /** - * Get the value for a specific offset. - * - * @param integer $offset (Required) The location in the collection to retrieve the value for. - * @return mixed The value of the collection offset. NULL is returned if the offset does not exist. - */ - public function offsetGet($offset) - { - if ($this->collection->offsetExists($offset)) - { - return $this->collection->offsetGet($offset); - } - - return null; - } - - /** - * Set the value for a specific offset. - * - * @param integer $offset (Required) The location in the collection to set a new value for. - * @param mixed $value (Required) The new value for the collection location. - * @return CFCredential A reference to the current collection. - */ - public function offsetSet($offset, $value) - { - $this->collection->offsetSet($offset, $value); - return $this; - } - - /** - * Unset the value for a specific offset. - * - * @param integer $offset (Required) The location in the collection to unset. - * @return CFCredential A reference to the current collection. - */ - public function offsetUnset($offset) - { - $this->collection->offsetUnset($offset); - return $this; - } - - /** - * Merge another instance of onto this one. - * - * @param CFCredential $credential (Required) Another instance of . - * @return CFCredential A reference to the current collection. - */ - public function merge(CFCredential $credential) - { - $merged = array_merge($this->to_array(), $credential->to_array()); - $this->collection->exchangeArray($merged); - return $this; - } - - /** - * Retrieves the data as a standard array. - * - * @return array The data as an array. - */ - public function to_array() - { - return $this->collection->getArrayCopy(); - } -} diff --git a/3rdparty/aws-sdk/utilities/credentials.class.php b/3rdparty/aws-sdk/utilities/credentials.class.php deleted file mode 100644 index 2504a081b23d34163c2073ef5f3aa72cbcb987f5..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/credentials.class.php +++ /dev/null @@ -1,125 +0,0 @@ - class enables developers to easily switch between multiple sets of credentials. - * - * @version 2011.11.15 - * @license See the included NOTICE.md file for more information. - * @copyright See the included NOTICE.md file for more information. - * @link http://aws.amazon.com/php/ PHP Developer Center - */ -class CFCredentials -{ - /** - * The key used to specify the default credential set - */ - const DEFAULT_KEY = '@default'; - - /** - * The key used to identify inherited credentials - */ - const INHERIT_KEY = '@inherit'; - - /** - * Stores the credentials - */ - protected static $credentials = array(); - - /** - * Prevents this class from being constructed - */ - final private function __construct() {} - - /** - * Stores the credentials for re-use. - * - * @param array $credential_sets (Required) The named credential sets that should be made available to the application. - * @return void - */ - public static function set(array $credential_sets) - { - // Make sure a default credential set is specified or can be inferred - if (count($credential_sets) === 1) - { - $credential_sets[self::DEFAULT_KEY] = reset($credential_sets); - } - elseif (!isset($credential_sets[self::DEFAULT_KEY])) - { - throw new CFCredentials_Exception('If more than one credential set is provided, a default credential set (identified by the key "' . self::DEFAULT_KEY . '") must be specified.'); - } - - // Resolve any @inherit tags - foreach ($credential_sets as $credential_name => &$credential_set) - { - if (is_array($credential_set)) - { - foreach ($credential_set as $credential_key => &$credential_value) - { - if ($credential_key === self::INHERIT_KEY) - { - if (!isset($credential_sets[$credential_value])) - { - throw new CFCredentials_Exception('The credential set, "' . $credential_value . '", does not exist and cannot be inherited.'); - } - - $credential_set = array_merge($credential_sets[$credential_value], $credential_set); - unset($credential_set[self::INHERIT_KEY]); - } - } - } - } - - // Normalize the value of the @default credential set - $default = $credential_sets[self::DEFAULT_KEY]; - if (is_string($default)) - { - if (!isset($credential_sets[$default])) - { - throw new CFCredentials_Exception('The credential set, "' . $default . '", does not exist and cannot be used as the default credential set.'); - } - - $credential_sets[self::DEFAULT_KEY] = $credential_sets[$default]; - } - - // Store the credentials - self::$credentials = $credential_sets; - } - - /** - * Retrieves the requested credentials from the internal credential store. - * - * @param string $credential_set (Optional) The name of the credential set to retrieve. The default value is set in DEFAULT_KEY. - * @return stdClass A stdClass object where the properties represent the keys that were provided. - */ - public static function get($credential_name = self::DEFAULT_KEY) - { - // Make sure the credential set exists - if (!isset(self::$credentials[$credential_name])) - { - throw new CFCredentials_Exception('The credential set, "' . $credential_name . '", does not exist and cannot be retrieved.'); - } - - // Return the credential set as an object - return new CFCredential(self::$credentials[$credential_name]); - } -} - -class CFCredentials_Exception extends Exception {} diff --git a/3rdparty/aws-sdk/utilities/gzipdecode.class.php b/3rdparty/aws-sdk/utilities/gzipdecode.class.php deleted file mode 100644 index f80822a70482aa8a13cf14a46d86b34f4ed59bb3..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/gzipdecode.class.php +++ /dev/null @@ -1,377 +0,0 @@ -compressed_data = $data; - $this->compressed_size = strlen($data); - } - - /** - * Decode the GZIP stream - * - * @access public - */ - public function parse() - { - if ($this->compressed_size >= $this->min_compressed_size) - { - // Check ID1, ID2, and CM - if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08") - { - return false; - } - - // Get the FLG (FLaGs) - $this->flags = ord($this->compressed_data[3]); - - // FLG bits above (1 << 4) are reserved - if ($this->flags > 0x1F) - { - return false; - } - - // Advance the pointer after the above - $this->position += 4; - - // MTIME - $mtime = substr($this->compressed_data, $this->position, 4); - // Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness - if (current(unpack('S', "\x00\x01")) === 1) - { - $mtime = strrev($mtime); - } - $this->MTIME = current(unpack('l', $mtime)); - $this->position += 4; - - // Get the XFL (eXtra FLags) - $this->XFL = ord($this->compressed_data[$this->position++]); - - // Get the OS (Operating System) - $this->OS = ord($this->compressed_data[$this->position++]); - - // Parse the FEXTRA - if ($this->flags & 4) - { - // Read subfield IDs - $this->SI1 = $this->compressed_data[$this->position++]; - $this->SI2 = $this->compressed_data[$this->position++]; - - // SI2 set to zero is reserved for future use - if ($this->SI2 === "\x00") - { - return false; - } - - // Get the length of the extra field - $len = current(unpack('v', substr($this->compressed_data, $this->position, 2))); - $position += 2; - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 4; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the extra field to the given data - $this->extra_field = substr($this->compressed_data, $this->position, $len); - $this->position += $len; - } - else - { - return false; - } - } - - // Parse the FNAME - if ($this->flags & 8) - { - // Get the length of the filename - $len = strcspn($this->compressed_data, "\x00", $this->position); - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 1; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the original filename to the given string - $this->filename = substr($this->compressed_data, $this->position, $len); - $this->position += $len + 1; - } - else - { - return false; - } - } - - // Parse the FCOMMENT - if ($this->flags & 16) - { - // Get the length of the comment - $len = strcspn($this->compressed_data, "\x00", $this->position); - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 1; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the original comment to the given string - $this->comment = substr($this->compressed_data, $this->position, $len); - $this->position += $len + 1; - } - else - { - return false; - } - } - - // Parse the FHCRC - if ($this->flags & 2) - { - // Check the length of the string is still valid - $this->min_compressed_size += $len + 2; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Read the CRC - $crc = current(unpack('v', substr($this->compressed_data, $this->position, 2))); - - // Check the CRC matches - if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc) - { - $this->position += 2; - } - else - { - return false; - } - } - else - { - return false; - } - } - - // Decompress the actual data - if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false) - { - return false; - } - else - { - $this->position = $this->compressed_size - 8; - } - - // Check CRC of data - $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4))); - $this->position += 4; - /*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc)) - { - return false; - }*/ - - // Check ISIZE of data - $isize = current(unpack('V', substr($this->compressed_data, $this->position, 4))); - $this->position += 4; - if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize)) - { - return false; - } - - // Wow, against all odds, we've actually got a valid gzip string - return true; - } - else - { - return false; - } - } -} diff --git a/3rdparty/aws-sdk/utilities/hadoopbase.class.php b/3rdparty/aws-sdk/utilities/hadoopbase.class.php deleted file mode 100644 index eb8bc5c3a811ff62c3809e123a00fa4dfbba4952..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/hadoopbase.class.php +++ /dev/null @@ -1,67 +0,0 @@ - object. - */ - public static function script_runner($script, $args = null) - { - if (!$args) $args = array(); - array_unshift($args, $script); - - return array( - 'Jar' => 's3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar', - 'Args' => $args - ); - } - - /** - * Prepares a Hive or Pig script before passing it to the script runner. - * - * @param string $type (Required) The type of script to run. [Allowed values: `hive`, `pig`]. - * @param array $args (Optional) An indexed array of arguments to pass to the script. - * @return array A standard array that is intended to be passed into a object. - * @link http://hive.apache.org Apache Hive - * @link http://pig.apache.org Apache Pig - */ - public static function hive_pig_script($type, $args = null) - { - if (!$args) $args = array(); - $args = is_array($args) ? $args : array($args); - $args = array_merge(array('--base-path', 's3://us-east-1.elasticmapreduce/libs/' . $type . '/'), $args); - - return self::script_runner('s3://us-east-1.elasticmapreduce/libs/' . $type . '/' . $type . '-script', $args); - } -} diff --git a/3rdparty/aws-sdk/utilities/hadoopbootstrap.class.php b/3rdparty/aws-sdk/utilities/hadoopbootstrap.class.php deleted file mode 100644 index baaa0c08d4b83fd10abd405f2dd02d88f71b99c8..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/hadoopbootstrap.class.php +++ /dev/null @@ -1,127 +0,0 @@ -true, the bootstrap action executes. - * @param array $args (Optional) An indexed array of arguments to pass to the script. - * @return array A configuration set to be provided when running a job flow. - */ - public static function run_if($condition, $args = null) - { - if (!$args) $args = array(); - $args = is_array($args) ? $args : array($args); - - return self::script_runner('s3://us-east-1.elasticmapreduce/bootstrap-actions/run-if', $args); - } - - /** - * Specify options to merge with Hadoop's default configuration. - * - * @param string $file (Required) The Hadoop configuration file to merge with. [Allowed values: CFHadoopBootstrap::CONFIG_SITE, CFHadoopBootstrap::CONFIG_DEFAULT, CFHadoopBootstrap::CONFIG_CORE, CFHadoopBootstrap::CONFIG_HDFS, CFHadoopBootstrap::CONFIG_MAPREDUCE] - * @param string|array $config (Required) This can either be an XML file in S3 (as s3://bucket/path), or an associative array of key-value pairs. - * @return array A configuration set to be provided when running a job flow. - */ - public static function configure($file, $config) - { - $args = array(); - $file_arg = '-' . $file; - - if (is_string($config)) - { - $args[] = $file_arg; - $args[] = $config; - } - elseif (is_array($config)) - { - foreach ($config as $key => $value) - { - $args[] = $file_arg; - $args[] = $key . '=' . $value; - } - } - - return self::script_runner('s3://us-east-1.elasticmapreduce/bootstrap-actions/configure-hadoop', $args); - } - - /** - * Create a new bootstrap action which lets you configure Hadoop's daemons. The options are written to - * the hadoop-user-env.sh file. - * - * @param string $daemon_type (Required) The Hadoop daemon to configure. - * @param array $opt (Optional) An associative array of parameters that can have the following keys:
      - *
    • HeapSize - integer - Optional - The requested heap size of the daemon, in megabytes.
    • - *
    • CLIOptions - string - Optional - Additional Java command line arguments to pass to the daemon.
    • - *
    • Replace - boolean - Optional - Whether or not the file should be replaced. A value of true will replace the existing configuration file. A value of false will append the options to the configuration file.
    - * @return array A configuration set to be provided when running a job flow. - */ - public static function daemon($daemon_type, $opt = null) - { - if (!$opt) $opt = array(); - $args = array(); - - foreach ($opt as $key => $value) - { - switch ($key) - { - case 'HeapSize': - $args[] = '--' . $daemon_type . '-heap-size=' . $value; - break; - case 'CLIOptions': - $args[] = '--' . $daemon_type . '-opts="' . $value . '"'; - break; - case 'Replace': - if ((is_string($value) && $value === 'true') || (is_bool($value) && $value === true)) - { - $args[] = '--replace'; - } - break; - } - } - - return self::script_runner('s3://us-east-1.elasticmapreduce/bootstrap-actions/configure-daemons', $args); - } -} diff --git a/3rdparty/aws-sdk/utilities/hadoopstep.class.php b/3rdparty/aws-sdk/utilities/hadoopstep.class.php deleted file mode 100644 index 2371e007489bee9a95d491bc2ccfcfd36bae1591..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/hadoopstep.class.php +++ /dev/null @@ -1,98 +0,0 @@ - object. - */ - public static function enable_debugging() - { - return self::script_runner('s3://us-east-1.elasticmapreduce/libs/state-pusher/0.1/fetch'); - } - - /** - * Step that installs Hive on your job flow. - * - * @return array A standard array that is intended to be passed into a object. - * @link http://hive.apache.org Apache Hive - */ - public static function install_hive() - { - return self::hive_pig_script('hive', '--install-hive'); - } - - /** - * Step that runs a Hive script on your job flow. - * - * @param string $script (Required) The script to run with `script-runner.jar`. - * @param array $args (Optional) An indexed array of arguments to pass to the script. - * @return array A standard array that is intended to be passed into a object. - * @link http://hive.apache.org Apache Hive - */ - public static function run_hive_script($script, $args = null) - { - if (!$args) $args = array(); - $args = is_array($args) ? $args : array($args); - $args = array_merge(array('--run-hive-script', '--args', '-f', $script), $args); - - return self::hive_pig_script('hive', $args); - } - - /** - * Step that installs Pig on your job flow. - * - * @return array A standard array that is intended to be passed into a object. - * @link http://pig.apache.org Apache Pig - */ - public static function install_pig() - { - return self::hive_pig_script('pig', '--install-pig'); - } - - /** - * Step that runs a Pig script on your job flow. - * - * @param string $script (Required) The script to run with `script-runner.jar`. - * @param array $args (Optional) An indexed array of arguments to pass to the script. - * @return array A standard array that is intended to be passed into a object. - * @link http://pig.apache.org Apache Pig - */ - public static function run_pig_script($script, $args = null) - { - if (!$args) $args = array(); - $args = is_array($args) ? $args : array($args); - $args = array_merge(array('--run-pig-script', '--args', '-f', $script), $args); - - return self::hive_pig_script('pig', $args); - } -} diff --git a/3rdparty/aws-sdk/utilities/info.class.php b/3rdparty/aws-sdk/utilities/info.class.php deleted file mode 100644 index 2ba289a5f01fee140439126bc035dbdd01e087b6..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/info.class.php +++ /dev/null @@ -1,69 +0,0 @@ -api_version; - unset($obj); - } - - return $collect; - } -} diff --git a/3rdparty/aws-sdk/utilities/json.class.php b/3rdparty/aws-sdk/utilities/json.class.php deleted file mode 100644 index dfa83839863fde03c895973c6da065f3930c452c..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/json.class.php +++ /dev/null @@ -1,89 +0,0 @@ -SimpleXMLElement. Has a default value of CFSimpleXML. - * @return CFSimpleXML An XML representation of the data. - */ - public static function to_xml($json, $parser = 'CFSimpleXML') - { - // If we haven't parsed the JSON, do it - if (!is_array($json)) - { - // Handle the case of JSON-encoded NULL value - if ($json === 'null') - { - $json = null; - } - else - { - $json = json_decode($json, true); - - if (function_exists('json_last_error')) - { - // Did we encounter an error? - switch (json_last_error()) - { - case JSON_ERROR_DEPTH: - throw new JSON_Exception('Maximum stack depth exceeded.'); - - case JSON_ERROR_CTRL_CHAR: - throw new JSON_Exception('Unexpected control character found.'); - - case JSON_ERROR_SYNTAX: - throw new JSON_Exception('Syntax error; Malformed JSON.'); - - case JSON_ERROR_STATE_MISMATCH: - throw new JSON_Exception('Invalid or malformed JSON.'); - } - } - // json_last_error() not available? - elseif ($json === null) - { - throw new JSON_Exception('Unknown JSON error. Be sure to validate your JSON and read the notes on http://php.net/json_decode.'); - } - } - } - - // Hand off for the recursive work - $string = Array2DOM::arrayToXMLString($json, 'rootElement', true); - - return simplexml_load_string($string, $parser, LIBXML_NOCDATA); - } -} - - -/** - * Default JSON Exception. - */ -class JSON_Exception extends Exception {} diff --git a/3rdparty/aws-sdk/utilities/manifest.class.php b/3rdparty/aws-sdk/utilities/manifest.class.php deleted file mode 100644 index 82410a328db5f00c8148190e616a1dc6ff6fd988..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/manifest.class.php +++ /dev/null @@ -1,54 +0,0 @@ - function. - * @return string A YAML manifest document. - */ - public static function json($json) - { - $map = json_decode($json, true); - return sfYaml::dump($map); - } - - /** - * Takes an associative array to convert to a YAML manifest. - * - * @param array $map (Required) An associative array. - * @return string A YAML manifest document. - */ - public static function map($map) - { - return sfYaml::dump($map); - } -} diff --git a/3rdparty/aws-sdk/utilities/mimetypes.class.php b/3rdparty/aws-sdk/utilities/mimetypes.class.php deleted file mode 100644 index 5fa23d3942a035aa16c64f09a2ba64ce42fd1421..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/mimetypes.class.php +++ /dev/null @@ -1,223 +0,0 @@ - 'video/3gpp', - 'ai' => 'application/postscript', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'asc' => 'text/plain', - 'atom' => 'application/atom+xml', - 'au' => 'audio/basic', - 'avi' => 'video/x-msvideo', - 'bcpio' => 'application/x-bcpio', - 'bin' => 'application/octet-stream', - 'bmp' => 'image/bmp', - 'cdf' => 'application/x-netcdf', - 'cgm' => 'image/cgm', - 'class' => 'application/octet-stream', - 'cpio' => 'application/x-cpio', - 'cpt' => 'application/mac-compactpro', - 'csh' => 'application/x-csh', - 'css' => 'text/css', - 'dcr' => 'application/x-director', - 'dif' => 'video/x-dv', - 'dir' => 'application/x-director', - 'djv' => 'image/vnd.djvu', - 'djvu' => 'image/vnd.djvu', - 'dll' => 'application/octet-stream', - 'dmg' => 'application/octet-stream', - 'dms' => 'application/octet-stream', - 'doc' => 'application/msword', - 'dtd' => 'application/xml-dtd', - 'dv' => 'video/x-dv', - 'dvi' => 'application/x-dvi', - 'dxr' => 'application/x-director', - 'eps' => 'application/postscript', - 'etx' => 'text/x-setext', - 'exe' => 'application/octet-stream', - 'ez' => 'application/andrew-inset', - 'flv' => 'video/x-flv', - 'gif' => 'image/gif', - 'gram' => 'application/srgs', - 'grxml' => 'application/srgs+xml', - 'gtar' => 'application/x-gtar', - 'gz' => 'application/x-gzip', - 'hdf' => 'application/x-hdf', - 'hqx' => 'application/mac-binhex40', - 'htm' => 'text/html', - 'html' => 'text/html', - 'ice' => 'x-conference/x-cooltalk', - 'ico' => 'image/x-icon', - 'ics' => 'text/calendar', - 'ief' => 'image/ief', - 'ifb' => 'text/calendar', - 'iges' => 'model/iges', - 'igs' => 'model/iges', - 'jnlp' => 'application/x-java-jnlp-file', - 'jp2' => 'image/jp2', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'js' => 'application/x-javascript', - 'kar' => 'audio/midi', - 'latex' => 'application/x-latex', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'm3u' => 'audio/x-mpegurl', - 'm4a' => 'audio/mp4a-latm', - 'm4p' => 'audio/mp4a-latm', - 'm4u' => 'video/vnd.mpegurl', - 'm4v' => 'video/x-m4v', - 'mac' => 'image/x-macpaint', - 'man' => 'application/x-troff-man', - 'mathml' => 'application/mathml+xml', - 'me' => 'application/x-troff-me', - 'mesh' => 'model/mesh', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mif' => 'application/vnd.mif', - 'mov' => 'video/quicktime', - 'movie' => 'video/x-sgi-movie', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mpe' => 'video/mpeg', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpga' => 'audio/mpeg', - 'ms' => 'application/x-troff-ms', - 'msh' => 'model/mesh', - 'mxu' => 'video/vnd.mpegurl', - 'nc' => 'application/x-netcdf', - 'oda' => 'application/oda', - 'ogg' => 'application/ogg', - 'ogv' => 'video/ogv', - 'pbm' => 'image/x-portable-bitmap', - 'pct' => 'image/pict', - 'pdb' => 'chemical/x-pdb', - 'pdf' => 'application/pdf', - 'pgm' => 'image/x-portable-graymap', - 'pgn' => 'application/x-chess-pgn', - 'pic' => 'image/pict', - 'pict' => 'image/pict', - 'png' => 'image/png', - 'pnm' => 'image/x-portable-anymap', - 'pnt' => 'image/x-macpaint', - 'pntg' => 'image/x-macpaint', - 'ppm' => 'image/x-portable-pixmap', - 'ppt' => 'application/vnd.ms-powerpoint', - 'ps' => 'application/postscript', - 'qt' => 'video/quicktime', - 'qti' => 'image/x-quicktime', - 'qtif' => 'image/x-quicktime', - 'ra' => 'audio/x-pn-realaudio', - 'ram' => 'audio/x-pn-realaudio', - 'ras' => 'image/x-cmu-raster', - 'rdf' => 'application/rdf+xml', - 'rgb' => 'image/x-rgb', - 'rm' => 'application/vnd.rn-realmedia', - 'roff' => 'application/x-troff', - 'rtf' => 'text/rtf', - 'rtx' => 'text/richtext', - 'sgm' => 'text/sgml', - 'sgml' => 'text/sgml', - 'sh' => 'application/x-sh', - 'shar' => 'application/x-shar', - 'silo' => 'model/mesh', - 'sit' => 'application/x-stuffit', - 'skd' => 'application/x-koan', - 'skm' => 'application/x-koan', - 'skp' => 'application/x-koan', - 'skt' => 'application/x-koan', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'snd' => 'audio/basic', - 'so' => 'application/octet-stream', - 'spl' => 'application/x-futuresplash', - 'src' => 'application/x-wais-source', - 'sv4cpio' => 'application/x-sv4cpio', - 'sv4crc' => 'application/x-sv4crc', - 'svg' => 'image/svg+xml', - 'swf' => 'application/x-shockwave-flash', - 't' => 'application/x-troff', - 'tar' => 'application/x-tar', - 'tcl' => 'application/x-tcl', - 'tex' => 'application/x-tex', - 'texi' => 'application/x-texinfo', - 'texinfo' => 'application/x-texinfo', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'tr' => 'application/x-troff', - 'tsv' => 'text/tab-separated-values', - 'txt' => 'text/plain', - 'ustar' => 'application/x-ustar', - 'vcd' => 'application/x-cdlink', - 'vrml' => 'model/vrml', - 'vxml' => 'application/voicexml+xml', - 'wav' => 'audio/x-wav', - 'wbmp' => 'image/vnd.wap.wbmp', - 'wbxml' => 'application/vnd.wap.wbxml', - 'webm' => 'video/webm', - 'wml' => 'text/vnd.wap.wml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'wmls' => 'text/vnd.wap.wmlscript', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'wmv' => 'video/x-ms-wmv', - 'wrl' => 'model/vrml', - 'xbm' => 'image/x-xbitmap', - 'xht' => 'application/xhtml+xml', - 'xhtml' => 'application/xhtml+xml', - 'xls' => 'application/vnd.ms-excel', - 'xml' => 'application/xml', - 'xpm' => 'image/x-xpixmap', - 'xsl' => 'application/xml', - 'xslt' => 'application/xslt+xml', - 'xul' => 'application/vnd.mozilla.xul+xml', - 'xwd' => 'image/x-xwindowdump', - 'xyz' => 'chemical/x-xyz', - 'zip' => 'application/zip', - ); - - /** - * Attempt to match the file extension to a known mime-type. - * - * @param string $ext (Required) The file extension to attempt to map. - * @return string The mime-type to use for the file extension. - */ - public static function get_mimetype($ext) - { - return (isset(self::$mime_types[$ext]) ? self::$mime_types[$ext] : 'application/octet-stream'); - } -} diff --git a/3rdparty/aws-sdk/utilities/policy.class.php b/3rdparty/aws-sdk/utilities/policy.class.php deleted file mode 100644 index 9c53fee0d72db5ddcc6700380981b88d729a8240..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/policy.class.php +++ /dev/null @@ -1,134 +0,0 @@ - (e.g. , ). - * @param string|array $policy (Required) The associative array representing the S3 policy to use, or a string of JSON content. - * @return $this A reference to the current instance. - * @link http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?HTTPPOSTForms.html S3 Policies - * @link http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?AccessPolicyLanguage.html Access Policy Language - */ - public function __construct($auth, $policy) - { - $this->auth = $auth; - - if (is_array($policy)) // We received an associative array... - { - $this->json_policy = json_encode($policy); - } - else // We received a valid, parseable JSON string... - { - $this->json_policy = json_encode(json_decode($policy, true)); - } - - return $this; - } - - /** - * Alternate approach to constructing a new instance. Supports chaining. - * - * @param CFRuntime $auth (Required) An instance of any authenticated AWS object that is an instance of (e.g. , ). - * @param string|array $policy (Required) The associative array representing the S3 policy to use, or a string of JSON content. - * @return $this A reference to the current instance. - */ - public static function init($auth, $policy) - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) - { - throw new Exception('PHP 5.3 or newer is required to instantiate a new class with CLASS::init().'); - } - - $self = get_called_class(); - return new $self($auth, $policy); - } - - /** - * Get the key from the authenticated instance. - * - * @return string The key from the authenticated instance. - */ - public function get_key() - { - return $this->auth->key; - } - - /** - * Base64-encodes the JSON string. - * - * @return string The Base64-encoded version of the JSON string. - */ - public function get_policy() - { - return base64_encode($this->json_policy); - } - - /** - * Gets the JSON string with the whitespace removed. - * - * @return string The JSON string without extraneous whitespace. - */ - public function get_json() - { - return $this->json_policy; - } - - /** - * Gets the JSON string with the whitespace removed. - * - * @return string The Base64-encoded, signed JSON string. - */ - public function get_policy_signature() - { - return base64_encode(hash_hmac('sha1', $this->get_policy(), $this->auth->secret_key)); - } - - /** - * Decode a policy that was returned from the service. - * - * @param string $response (Required) The policy returned by AWS that you want to decode into an object. - * @return string The Base64-encoded, signed JSON string. - */ - public static function decode_policy($response) - { - return json_decode(urldecode($response), true); - } -} diff --git a/3rdparty/aws-sdk/utilities/request.class.php b/3rdparty/aws-sdk/utilities/request.class.php deleted file mode 100644 index 8e049fb516984b9636b8a3b2b49b3212e3ecfd28..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/request.class.php +++ /dev/null @@ -1,70 +0,0 @@ -). - */ - public $request_class = 'CFRequest'; - - /** - * The default class to use for HTTP Responses (defaults to ). - */ - public $response_class = 'CFResponse'; - - /** - * The active credential set. - */ - public $credentials; - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR - - /** - * Constructs a new instance of this class. - * - * @param string $url (Optional) The URL to request or service endpoint to query. - * @param string $proxy (Optional) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` - * @param array $helpers (Optional) An associative array of classnames to use for request, and response functionality. Gets passed in automatically by the calling class. - * @param CFCredential $credentials (Required) The credentials to use for signing and making requests. - * @return $this A reference to the current instance. - */ - public function __construct($url = null, $proxy = null, $helpers = null, CFCredential $credentials = null) - { - parent::__construct($url, $proxy, $helpers); - - // Standard settings for all requests - $this->set_useragent(CFRUNTIME_USERAGENT); - $this->credentials = $credentials; - $this->cacert_location = ($this->credentials['certificate_authority'] ? $this->credentials['certificate_authority'] : false); - - return $this; - } -} diff --git a/3rdparty/aws-sdk/utilities/response.class.php b/3rdparty/aws-sdk/utilities/response.class.php deleted file mode 100644 index 740d55d5d945eaef7ca0c8897cd4d00e5b01b87c..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/response.class.php +++ /dev/null @@ -1,29 +0,0 @@ - element. - */ - public function __call($name, $arguments) - { - // Remap $this - $self = $this; - - // Re-base the XML - $self = new CFSimpleXML($self->asXML()); - - // Determine XPath query - $self->xpath_expression = 'descendant-or-self::' . $name; - - // Get the results and augment with CFArray - $results = $self->xpath($self->xpath_expression); - if (!count($results)) return false; - $results = new CFArray($results); - - // If an integer was passed, return only that result - if (isset($arguments[0]) && is_int($arguments[0])) - { - if (isset($results[$arguments[0]])) - { - return $results[$arguments[0]]; - } - - return false; - } - - return $results; - } - - /** - * Alternate approach to constructing a new instance. Supports chaining. - * - * @param string $data (Required) A well-formed XML string or the path or URL to an XML document if $data_is_url is true. - * @param integer $options (Optional) Used to specify additional LibXML parameters. The default value is 0. - * @param boolean $data_is_url (Optional) Specify a value of true to specify that data is a path or URL to an XML document instead of string data. The default value is false. - * @param string $ns (Optional) The XML namespace to return values for. - * @param boolean $is_prefix (Optional) (No description provided by PHP.net.) - * @return CFSimpleXML Creates a new element. - */ - public static function init($data, $options = 0, $data_is_url, $ns, $is_prefix = false) - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) - { - throw new Exception('PHP 5.3 or newer is required to instantiate a new class with CLASS::init().'); - } - - $self = get_called_class(); - return new $self($data, $options, $data_is_url, $ns, $is_prefix); - } - - - /*%******************************************************************************************%*/ - // TRAVERSAL - - /** - * Wraps the results of an XPath query in a object. - * - * @param string $expr (Required) The XPath expression to use to query the XML response. - * @return CFArray A object containing the results of the XPath query. - */ - public function query($expr) - { - return new CFArray($this->xpath($expr)); - } - - /** - * Gets the parent or a preferred ancestor of the current element. - * - * @param string $node (Optional) Name of the ancestor element to match and return. - * @return CFSimpleXML A object containing the requested node. - */ - public function parent($node = null) - { - if ($node) - { - $parents = $this->xpath('ancestor-or-self::' . $node); - } - else - { - $parents = $this->xpath('parent::*'); - } - - return $parents[0]; - } - - - /*%******************************************************************************************%*/ - // ALTERNATE FORMATS - - /** - * Gets the current XML node as a true string. - * - * @return string The current XML node as a true string. - */ - public function to_string() - { - return (string) $this; - } - - /** - * Gets the current XML node as , a child class of PHP's class. - * - * @return CFArray The current XML node as a object. - */ - public function to_array() - { - return new CFArray(json_decode(json_encode($this), true)); - } - - /** - * Gets the current XML node as a stdClass object. - * - * @return array The current XML node as a stdClass object. - */ - public function to_stdClass() - { - return json_decode(json_encode($this)); - } - - /** - * Gets the current XML node as a JSON string. - * - * @return string The current XML node as a JSON string. - */ - public function to_json() - { - return json_encode($this); - } - - /** - * Gets the current XML node as a YAML string. - * - * @return string The current XML node as a YAML string. - */ - public function to_yaml() - { - return sfYaml::dump(json_decode(json_encode($this), true), 5); - } - - - /*%******************************************************************************************%*/ - // COMPARISONS - - /** - * Whether or not the current node exactly matches the compared value. - * - * @param string $value (Required) The value to compare the current node to. - * @return boolean Whether or not the current node exactly matches the compared value. - */ - public function is($value) - { - return ((string) $this === $value); - } - - /** - * Whether or not the current node contains the compared value. - * - * @param string $value (Required) The value to use to determine whether it is contained within the node. - * @return boolean Whether or not the current node contains the compared value. - */ - public function contains($value) - { - return (stripos((string) $this, $value) !== false); - } - - /** - * Whether or not the current node matches the regular expression pattern. - * - * @param string $pattern (Required) The pattern to match the current node against. - * @return boolean Whether or not the current node matches the pattern. - */ - public function matches($pattern) - { - return (bool) preg_match($pattern, (string) $this); - } - - /** - * Whether or not the current node starts with the compared value. - * - * @param string $value (Required) The value to compare the current node to. - * @return boolean Whether or not the current node starts with the compared value. - */ - public function starts_with($value) - { - return $this->matches("@^$value@u"); - } - - /** - * Whether or not the current node ends with the compared value. - * - * @param string $value (Required) The value to compare the current node to. - * @return boolean Whether or not the current node ends with the compared value. - */ - public function ends_with($value) - { - return $this->matches("@$value$@u"); - } -} diff --git a/3rdparty/aws-sdk/utilities/stacktemplate.class.php b/3rdparty/aws-sdk/utilities/stacktemplate.class.php deleted file mode 100644 index 1e29ef340367fd81c29cb54255403d68aa2ad016..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/stacktemplate.class.php +++ /dev/null @@ -1,52 +0,0 @@ -strict JSON-specific formatting. - * @return string A JSON representation of the template. - */ - public static function json($template) - { - return json_encode(json_decode($template, true)); - } - - /** - * Converts an associative array (map) of the template into a JSON string. - * - * @param array $template (Required) An associative array that maps directly to its JSON counterpart. - * @return string A JSON representation of the template. - */ - public static function map($template) - { - return json_encode($template); - } -} diff --git a/3rdparty/aws-sdk/utilities/stepconfig.class.php b/3rdparty/aws-sdk/utilities/stepconfig.class.php deleted file mode 100644 index 71492995f44f80aa5b43b877917dd9e42a7a3ae1..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/stepconfig.class.php +++ /dev/null @@ -1,91 +0,0 @@ -config = $config; - } - - /** - * Constructs a new instance of this class, and allows chaining. - * - * @param array $config (Required) An associative array representing the Hadoop step configuration. - * @return $this A reference to the current instance. - */ - public static function init($config) - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) - { - throw new Exception('PHP 5.3 or newer is required to instantiate a new class with CLASS::init().'); - } - - $self = get_called_class(); - return new $self($config); - } - - /** - * Returns a JSON representation of the object when typecast as a string. - * - * @return string A JSON representation of the object. - * @link http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring PHP Magic Methods - */ - public function __toString() - { - return json_encode($this->config); - } - - /** - * Returns the configuration data. - * - * @return array The configuration data. - */ - public function get_config() - { - return $this->config; - } -} diff --git a/3rdparty/aws-sdk/utilities/utilities.class.php b/3rdparty/aws-sdk/utilities/utilities.class.php deleted file mode 100755 index d4d1120abff63f22ea9c1247cbd92e41a5b9f666..0000000000000000000000000000000000000000 --- a/3rdparty/aws-sdk/utilities/utilities.class.php +++ /dev/null @@ -1,399 +0,0 @@ -getConstant($const); - } - - /** - * Convert a HEX value to Base64. - * - * @param string $str (Required) Value to convert. - * @return string Base64-encoded string. - */ - public function hex_to_base64($str) - { - $raw = ''; - - for ($i = 0; $i < strlen($str); $i += 2) - { - $raw .= chr(hexdec(substr($str, $i, 2))); - } - - return base64_encode($raw); - } - - /** - * Convert an associative array into a query string. - * - * @param array $array (Required) Array to convert. - * @return string URL-friendly query string. - */ - public function to_query_string($array) - { - $temp = array(); - - foreach ($array as $key => $value) - { - if (is_string($key) && !is_array($value)) - { - $temp[] = rawurlencode($key) . '=' . rawurlencode($value); - } - } - - return implode('&', $temp); - } - - /** - * Convert an associative array into a sign-able string. - * - * @param array $array (Required) Array to convert. - * @return string URL-friendly sign-able string. - */ - public function to_signable_string($array) - { - $t = array(); - - foreach ($array as $k => $v) - { - $t[] = $this->encode_signature2($k) . '=' . $this->encode_signature2($v); - } - - return implode('&', $t); - } - - /** - * Encode the value according to RFC 3986. - * - * @param string $string (Required) String to convert. - * @return string URL-friendly sign-able string. - */ - public function encode_signature2($string) - { - $string = rawurlencode($string); - return str_replace('%7E', '~', $string); - } - - /** - * Convert a query string into an associative array. Multiple, identical keys will become an indexed array. - * - * @param string $qs (Required) Query string to convert. - * @return array Associative array of keys and values. - */ - public function query_to_array($qs) - { - $query = explode('&', $qs); - $data = array(); - - foreach ($query as $q) - { - $q = explode('=', $q); - - if (isset($data[$q[0]]) && is_array($data[$q[0]])) - { - $data[$q[0]][] = urldecode($q[1]); - } - else if (isset($data[$q[0]]) && !is_array($data[$q[0]])) - { - $data[$q[0]] = array($data[$q[0]]); - $data[$q[0]][] = urldecode($q[1]); - } - else - { - $data[urldecode($q[0])] = urldecode($q[1]); - } - } - return $data; - } - - /** - * Return human readable file sizes. - * - * @author Aidan Lister - * @author Ryan Parman - * @license http://www.php.net/license/3_01.txt PHP License - * @param integer $size (Required) Filesize in bytes. - * @param string $unit (Optional) The maximum unit to use. Defaults to the largest appropriate unit. - * @param string $default (Optional) The format for the return string. Defaults to `%01.2f %s`. - * @return string The human-readable file size. - * @link http://aidanlister.com/repos/v/function.size_readable.php Original Function - */ - public function size_readable($size, $unit = null, $default = null) - { - // Units - $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB'); - $mod = 1024; - $ii = count($sizes) - 1; - - // Max unit - $unit = array_search((string) $unit, $sizes); - if ($unit === null || $unit === false) - { - $unit = $ii; - } - - // Return string - if ($default === null) - { - $default = '%01.2f %s'; - } - - // Loop - $i = 0; - while ($unit != $i && $size >= 1024 && $i < $ii) - { - $size /= $mod; - $i++; - } - - return sprintf($default, $size, $sizes[$i]); - } - - /** - * Convert a number of seconds into Hours:Minutes:Seconds. - * - * @param integer $seconds (Required) The number of seconds to convert. - * @return string The formatted time. - */ - public function time_hms($seconds) - { - $time = ''; - - // First pass - $hours = (int) ($seconds / 3600); - $seconds = $seconds % 3600; - $minutes = (int) ($seconds / 60); - $seconds = $seconds % 60; - - // Cleanup - $time .= ($hours) ? $hours . ':' : ''; - $time .= ($minutes < 10 && $hours > 0) ? '0' . $minutes : $minutes; - $time .= ':'; - $time .= ($seconds < 10) ? '0' . $seconds : $seconds; - - return $time; - } - - /** - * Returns the first value that is set. Based on [Try.these()](http://api.prototypejs.org/language/Try/these/) from [Prototype](http://prototypejs.org). - * - * @param array $attrs (Required) The attributes to test, as strings. Intended for testing properties of the $base object, but also works with variables if you place an @ symbol at the beginning of the command. - * @param object $base (Optional) The base object to use, if any. - * @param mixed $default (Optional) What to return if there are no matches. Defaults to `null`. - * @return mixed Either a matching property of a given object, boolean `false`, or any other data type you might choose. - */ - public function try_these($attrs, $base = null, $default = null) - { - if ($base) - { - foreach ($attrs as $attr) - { - if (isset($base->$attr)) - { - return $base->$attr; - } - } - } - else - { - foreach ($attrs as $attr) - { - if (isset($attr)) - { - return $attr; - } - } - } - - return $default; - } - - /** - * Can be removed once all calls are updated. - * - * @deprecated Use instead. - * @param mixed $obj (Required) The PHP object to convert into a JSON string. - * @return string A JSON string. - */ - public function json_encode($obj) - { - return json_encode($obj); - } - - /** - * Converts a SimpleXML response to an array structure. - * - * @param ResponseCore $response (Required) A response value. - * @return array The response value as a standard, multi-dimensional array. - */ - public function convert_response_to_array(ResponseCore $response) - { - return json_decode(json_encode($response), true); - } - - /** - * Checks to see if a date stamp is ISO-8601 formatted, and if not, makes it so. - * - * @param string $datestamp (Required) A date stamp, or a string that can be parsed into a date stamp. - * @return string An ISO-8601 formatted date stamp. - */ - public function convert_date_to_iso8601($datestamp) - { - if (!preg_match('/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}((\+|-)\d{2}:\d{2}|Z)/m', $datestamp)) - { - return gmdate(self::DATE_FORMAT_ISO8601, strtotime($datestamp)); - } - - return $datestamp; - } - - /** - * Determines whether the data is Base64 encoded or not. - * - * @license http://us.php.net/manual/en/function.base64-decode.php#81425 PHP License - * @param string $s (Required) The string to test. - * @return boolean Whether the string is Base64 encoded or not. - */ - public function is_base64($s) - { - return (bool) preg_match('/^[a-zA-Z0-9\/\r\n+]*={0,2}$/', $s); - } - - /** - * Determines whether the data is a JSON string or not. - * - * @param string $s (Required) The string to test. - * @return boolean Whether the string is a valid JSON object or not. - */ - public function is_json($s) - { - return !!(json_decode($s) instanceof stdClass); - } - - /** - * Decodes `\uXXXX` entities into their real unicode character equivalents. - * - * @param string $s (Required) The string to decode. - * @return string The decoded string. - */ - public function decode_uhex($s) - { - preg_match_all('/\\\u([0-9a-f]{4})/i', $s, $matches); - $matches = $matches[count($matches) - 1]; - $map = array(); - - foreach ($matches as $match) - { - if (!isset($map[$match])) - { - $map['\u' . $match] = html_entity_decode('&#' . hexdec($match) . ';', ENT_NOQUOTES, 'UTF-8'); - } - } - - return str_replace(array_keys($map), $map, $s); - } - - /** - * Generates a random GUID. - * - * @author Alix Axel - * @license http://www.php.net/license/3_01.txt PHP License - * @return string A random GUID. - */ - public function generate_guid() - { - return sprintf( - '%04X%04X-%04X-%04X-%04X-%04X%04X%04X', - mt_rand(0, 65535), - mt_rand(0, 65535), - mt_rand(0, 65535), - mt_rand(16384, 20479), - mt_rand(32768, 49151), - mt_rand(0, 65535), - mt_rand(0, 65535), - mt_rand(0, 65535) - ); - } -} diff --git a/3rdparty/class.phpmailer.php b/3rdparty/class.phpmailer.php deleted file mode 100644 index af089d59789217ed3f5a7265791f54c0520650a4..0000000000000000000000000000000000000000 --- a/3rdparty/class.phpmailer.php +++ /dev/null @@ -1,2532 +0,0 @@ -exceptions = ($exceptions == true); - } - - /** - * Sets message type to HTML. - * @param bool $ishtml - * @return void - */ - public function IsHTML($ishtml = true) { - if ($ishtml) { - $this->ContentType = 'text/html'; - } else { - $this->ContentType = 'text/plain'; - } - } - - /** - * Sets Mailer to send message using SMTP. - * @return void - */ - public function IsSMTP() { - $this->Mailer = 'smtp'; - } - - /** - * Sets Mailer to send message using PHP mail() function. - * @return void - */ - public function IsMail() { - $this->Mailer = 'mail'; - } - - /** - * Sets Mailer to send message using the $Sendmail program. - * @return void - */ - public function IsSendmail() { - if (!stristr(ini_get('sendmail_path'), 'sendmail')) { - $this->Sendmail = '/var/qmail/bin/sendmail'; - } - $this->Mailer = 'sendmail'; - } - - /** - * Sets Mailer to send message using the qmail MTA. - * @return void - */ - public function IsQmail() { - if (stristr(ini_get('sendmail_path'), 'qmail')) { - $this->Sendmail = '/var/qmail/bin/sendmail'; - } - $this->Mailer = 'sendmail'; - } - - ///////////////////////////////////////////////// - // METHODS, RECIPIENTS - ///////////////////////////////////////////////// - - /** - * Adds a "To" address. - * @param string $address - * @param string $name - * @return boolean true on success, false if address already used - */ - public function AddAddress($address, $name = '') { - return $this->AddAnAddress('to', $address, $name); - } - - /** - * Adds a "Cc" address. - * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer. - * @param string $address - * @param string $name - * @return boolean true on success, false if address already used - */ - public function AddCC($address, $name = '') { - return $this->AddAnAddress('cc', $address, $name); - } - - /** - * Adds a "Bcc" address. - * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer. - * @param string $address - * @param string $name - * @return boolean true on success, false if address already used - */ - public function AddBCC($address, $name = '') { - return $this->AddAnAddress('bcc', $address, $name); - } - - /** - * Adds a "Reply-to" address. - * @param string $address - * @param string $name - * @return boolean - */ - public function AddReplyTo($address, $name = '') { - return $this->AddAnAddress('Reply-To', $address, $name); - } - - /** - * Adds an address to one of the recipient arrays - * Addresses that have been added already return false, but do not throw exceptions - * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo' - * @param string $address The email address to send to - * @param string $name - * @return boolean true on success, false if address already used or invalid in some way - * @access protected - */ - protected function AddAnAddress($kind, $address, $name = '') { - if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) { - $this->SetError($this->Lang('Invalid recipient array').': '.$kind); - if ($this->exceptions) { - throw new phpmailerException('Invalid recipient array: ' . $kind); - } - if ($this->SMTPDebug) { - echo $this->Lang('Invalid recipient array').': '.$kind; - } - return false; - } - $address = trim($address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - if (!self::ValidateAddress($address)) { - $this->SetError($this->Lang('invalid_address').': '. $address); - if ($this->exceptions) { - throw new phpmailerException($this->Lang('invalid_address').': '.$address); - } - if ($this->SMTPDebug) { - echo $this->Lang('invalid_address').': '.$address; - } - return false; - } - if ($kind != 'Reply-To') { - if (!isset($this->all_recipients[strtolower($address)])) { - array_push($this->$kind, array($address, $name)); - $this->all_recipients[strtolower($address)] = true; - return true; - } - } else { - if (!array_key_exists(strtolower($address), $this->ReplyTo)) { - $this->ReplyTo[strtolower($address)] = array($address, $name); - return true; - } - } - return false; -} - -/** - * Set the From and FromName properties - * @param string $address - * @param string $name - * @return boolean - */ - public function SetFrom($address, $name = '', $auto = 1) { - $address = trim($address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - if (!self::ValidateAddress($address)) { - $this->SetError($this->Lang('invalid_address').': '. $address); - if ($this->exceptions) { - throw new phpmailerException($this->Lang('invalid_address').': '.$address); - } - if ($this->SMTPDebug) { - echo $this->Lang('invalid_address').': '.$address; - } - return false; - } - $this->From = $address; - $this->FromName = $name; - if ($auto) { - if (empty($this->ReplyTo)) { - $this->AddAnAddress('Reply-To', $address, $name); - } - if (empty($this->Sender)) { - $this->Sender = $address; - } - } - return true; - } - - /** - * Check that a string looks roughly like an email address should - * Static so it can be used without instantiation - * Tries to use PHP built-in validator in the filter extension (from PHP 5.2), falls back to a reasonably competent regex validator - * Conforms approximately to RFC2822 - * @link http://www.hexillion.com/samples/#Regex Original pattern found here - * @param string $address The email address to check - * @return boolean - * @static - * @access public - */ - public static function ValidateAddress($address) { - if (function_exists('filter_var')) { //Introduced in PHP 5.2 - if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) { - return false; - } else { - return true; - } - } else { - return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address); - } - } - - ///////////////////////////////////////////////// - // METHODS, MAIL SENDING - ///////////////////////////////////////////////// - - /** - * Creates message and assigns Mailer. If the message is - * not sent successfully then it returns false. Use the ErrorInfo - * variable to view description of the error. - * @return bool - */ - public function Send() { - try { - if(!$this->PreSend()) return false; - return $this->PostSend(); - } catch (phpmailerException $e) { - $this->SentMIMEMessage = ''; - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - return false; - } - } - - protected function PreSend() { - try { - $mailHeader = ""; - if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { - throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL); - } - - // Set whether the message is multipart/alternative - if(!empty($this->AltBody)) { - $this->ContentType = 'multipart/alternative'; - } - - $this->error_count = 0; // reset errors - $this->SetMessageType(); - //Refuse to send an empty message - if (empty($this->Body)) { - throw new phpmailerException($this->Lang('empty_message'), self::STOP_CRITICAL); - } - - $this->MIMEHeader = $this->CreateHeader(); - $this->MIMEBody = $this->CreateBody(); - - // To capture the complete message when using mail(), create - // an extra header list which CreateHeader() doesn't fold in - if ($this->Mailer == 'mail') { - if (count($this->to) > 0) { - $mailHeader .= $this->AddrAppend("To", $this->to); - } else { - $mailHeader .= $this->HeaderLine("To", "undisclosed-recipients:;"); - } - $mailHeader .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader(trim($this->Subject)))); - // if(count($this->cc) > 0) { - // $mailHeader .= $this->AddrAppend("Cc", $this->cc); - // } - } - - // digitally sign with DKIM if enabled - if ($this->DKIM_domain && $this->DKIM_private) { - $header_dkim = $this->DKIM_Add($this->MIMEHeader, $this->EncodeHeader($this->SecureHeader($this->Subject)), $this->MIMEBody); - $this->MIMEHeader = str_replace("\r\n", "\n", $header_dkim) . $this->MIMEHeader; - } - - $this->SentMIMEMessage = sprintf("%s%s\r\n\r\n%s",$this->MIMEHeader,$mailHeader,$this->MIMEBody); - return true; - - } catch (phpmailerException $e) { - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - return false; - } - } - - protected function PostSend() { - try { - // Choose the mailer and send through it - switch($this->Mailer) { - case 'sendmail': - return $this->SendmailSend($this->MIMEHeader, $this->MIMEBody); - case 'smtp': - return $this->SmtpSend($this->MIMEHeader, $this->MIMEBody); - case 'mail': - return $this->MailSend($this->MIMEHeader, $this->MIMEBody); - default: - return $this->MailSend($this->MIMEHeader, $this->MIMEBody); - } - - } catch (phpmailerException $e) { - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - if ($this->SMTPDebug) { - echo $e->getMessage()."\n"; - } - return false; - } - } - - /** - * Sends mail using the $Sendmail program. - * @param string $header The message headers - * @param string $body The message body - * @access protected - * @return bool - */ - protected function SendmailSend($header, $body) { - if ($this->Sender != '') { - $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); - } else { - $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail)); - } - if ($this->SingleTo === true) { - foreach ($this->SingleToArray as $key => $val) { - if(!@$mail = popen($sendmail, 'w')) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - fputs($mail, "To: " . $val . "\n"); - fputs($mail, $header); - fputs($mail, $body); - $result = pclose($mail); - // implement call back function if it exists - $isSent = ($result == 0) ? 1 : 0; - $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); - if($result != 0) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - } else { - if(!@$mail = popen($sendmail, 'w')) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - fputs($mail, $header); - fputs($mail, $body); - $result = pclose($mail); - // implement call back function if it exists - $isSent = ($result == 0) ? 1 : 0; - $this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body); - if($result != 0) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - return true; - } - - /** - * Sends mail using the PHP mail() function. - * @param string $header The message headers - * @param string $body The message body - * @access protected - * @return bool - */ - protected function MailSend($header, $body) { - $toArr = array(); - foreach($this->to as $t) { - $toArr[] = $this->AddrFormat($t); - } - $to = implode(', ', $toArr); - - if (empty($this->Sender)) { - $params = "-oi "; - } else { - $params = sprintf("-oi -f %s", $this->Sender); - } - if ($this->Sender != '' and !ini_get('safe_mode')) { - $old_from = ini_get('sendmail_from'); - ini_set('sendmail_from', $this->Sender); - if ($this->SingleTo === true && count($toArr) > 1) { - foreach ($toArr as $key => $val) { - $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); - // implement call back function if it exists - $isSent = ($rt == 1) ? 1 : 0; - $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); - } - } else { - $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); - // implement call back function if it exists - $isSent = ($rt == 1) ? 1 : 0; - $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body); - } - } else { - if ($this->SingleTo === true && count($toArr) > 1) { - foreach ($toArr as $key => $val) { - $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); - // implement call back function if it exists - $isSent = ($rt == 1) ? 1 : 0; - $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); - } - } else { - $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); - // implement call back function if it exists - $isSent = ($rt == 1) ? 1 : 0; - $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body); - } - } - if (isset($old_from)) { - ini_set('sendmail_from', $old_from); - } - if(!$rt) { - throw new phpmailerException($this->Lang('instantiate'), self::STOP_CRITICAL); - } - return true; - } - - /** - * Sends mail via SMTP using PhpSMTP - * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. - * @param string $header The message headers - * @param string $body The message body - * @uses SMTP - * @access protected - * @return bool - */ - protected function SmtpSend($header, $body) { - require_once $this->PluginDir . 'class.smtp.php'; - $bad_rcpt = array(); - - if(!$this->SmtpConnect()) { - throw new phpmailerException($this->Lang('smtp_connect_failed'), self::STOP_CRITICAL); - } - $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender; - if(!$this->smtp->Mail($smtp_from)) { - throw new phpmailerException($this->Lang('from_failed') . $smtp_from, self::STOP_CRITICAL); - } - - // Attempt to send attach all recipients - foreach($this->to as $to) { - if (!$this->smtp->Recipient($to[0])) { - $bad_rcpt[] = $to[0]; - // implement call back function if it exists - $isSent = 0; - $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); - } else { - // implement call back function if it exists - $isSent = 1; - $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); - } - } - foreach($this->cc as $cc) { - if (!$this->smtp->Recipient($cc[0])) { - $bad_rcpt[] = $cc[0]; - // implement call back function if it exists - $isSent = 0; - $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); - } else { - // implement call back function if it exists - $isSent = 1; - $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); - } - } - foreach($this->bcc as $bcc) { - if (!$this->smtp->Recipient($bcc[0])) { - $bad_rcpt[] = $bcc[0]; - // implement call back function if it exists - $isSent = 0; - $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); - } else { - // implement call back function if it exists - $isSent = 1; - $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); - } - } - - - if (count($bad_rcpt) > 0 ) { //Create error message for any bad addresses - $badaddresses = implode(', ', $bad_rcpt); - throw new phpmailerException($this->Lang('recipients_failed') . $badaddresses); - } - if(!$this->smtp->Data($header . $body)) { - throw new phpmailerException($this->Lang('data_not_accepted'), self::STOP_CRITICAL); - } - if($this->SMTPKeepAlive == true) { - $this->smtp->Reset(); - } - return true; - } - - /** - * Initiates a connection to an SMTP server. - * Returns false if the operation failed. - * @uses SMTP - * @access public - * @return bool - */ - public function SmtpConnect() { - if(is_null($this->smtp)) { - $this->smtp = new SMTP(); - } - - $this->smtp->do_debug = $this->SMTPDebug; - $hosts = explode(';', $this->Host); - $index = 0; - $connection = $this->smtp->Connected(); - - // Retry while there is no connection - try { - while($index < count($hosts) && !$connection) { - $hostinfo = array(); - if (preg_match('/^(.+):([0-9]+)$/', $hosts[$index], $hostinfo)) { - $host = $hostinfo[1]; - $port = $hostinfo[2]; - } else { - $host = $hosts[$index]; - $port = $this->Port; - } - - $tls = ($this->SMTPSecure == 'tls'); - $ssl = ($this->SMTPSecure == 'ssl'); - - if ($this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout)) { - - $hello = ($this->Helo != '' ? $this->Helo : $this->ServerHostname()); - $this->smtp->Hello($hello); - - if ($tls) { - if (!$this->smtp->StartTLS()) { - throw new phpmailerException($this->Lang('tls')); - } - - //We must resend HELO after tls negotiation - $this->smtp->Hello($hello); - } - - $connection = true; - if ($this->SMTPAuth) { - if (!$this->smtp->Authenticate($this->Username, $this->Password)) { - throw new phpmailerException($this->Lang('authenticate')); - } - } - } - $index++; - if (!$connection) { - throw new phpmailerException($this->Lang('connect_host')); - } - } - } catch (phpmailerException $e) { - $this->smtp->Reset(); - if ($this->exceptions) { - throw $e; - } - } - return true; - } - - /** - * Closes the active SMTP session if one exists. - * @return void - */ - public function SmtpClose() { - if(!is_null($this->smtp)) { - if($this->smtp->Connected()) { - $this->smtp->Quit(); - $this->smtp->Close(); - } - } - } - - /** - * Sets the language for all class error messages. - * Returns false if it cannot load the language file. The default language is English. - * @param string $langcode ISO 639-1 2-character language code (e.g. Portuguese: "br") - * @param string $lang_path Path to the language file directory - * @access public - */ - function SetLanguage($langcode = 'en', $lang_path = 'language/') { - //Define full set of translatable strings - $PHPMAILER_LANG = array( - 'provide_address' => 'You must provide at least one recipient email address.', - 'mailer_not_supported' => ' mailer is not supported.', - 'execute' => 'Could not execute: ', - 'instantiate' => 'Could not instantiate mail function.', - 'authenticate' => 'SMTP Error: Could not authenticate.', - 'from_failed' => 'The following From address failed: ', - 'recipients_failed' => 'SMTP Error: The following recipients failed: ', - 'data_not_accepted' => 'SMTP Error: Data not accepted.', - 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', - 'file_access' => 'Could not access file: ', - 'file_open' => 'File Error: Could not open file: ', - 'encoding' => 'Unknown encoding: ', - 'signing' => 'Signing Error: ', - 'smtp_error' => 'SMTP server error: ', - 'empty_message' => 'Message body empty', - 'invalid_address' => 'Invalid address', - 'variable_set' => 'Cannot set or reset variable: ' - ); - //Overwrite language-specific strings. This way we'll never have missing translations - no more "language string failed to load"! - $l = true; - if ($langcode != 'en') { //There is no English translation file - $l = @include $lang_path.'phpmailer.lang-'.$langcode.'.php'; - } - $this->language = $PHPMAILER_LANG; - return ($l == true); //Returns false if language not found - } - - /** - * Return the current array of language strings - * @return array - */ - public function GetTranslations() { - return $this->language; - } - - ///////////////////////////////////////////////// - // METHODS, MESSAGE CREATION - ///////////////////////////////////////////////// - - /** - * Creates recipient headers. - * @access public - * @return string - */ - public function AddrAppend($type, $addr) { - $addr_str = $type . ': '; - $addresses = array(); - foreach ($addr as $a) { - $addresses[] = $this->AddrFormat($a); - } - $addr_str .= implode(', ', $addresses); - $addr_str .= $this->LE; - - return $addr_str; - } - - /** - * Formats an address correctly. - * @access public - * @return string - */ - public function AddrFormat($addr) { - if (empty($addr[1])) { - return $this->SecureHeader($addr[0]); - } else { - return $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">"; - } - } - - /** - * Wraps message for use with mailers that do not - * automatically perform wrapping and for quoted-printable. - * Original written by philippe. - * @param string $message The message to wrap - * @param integer $length The line length to wrap to - * @param boolean $qp_mode Whether to run in Quoted-Printable mode - * @access public - * @return string - */ - public function WrapText($message, $length, $qp_mode = false) { - $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE; - // If utf-8 encoding is used, we will need to make sure we don't - // split multibyte characters when we wrap - $is_utf8 = (strtolower($this->CharSet) == "utf-8"); - - $message = $this->FixEOL($message); - if (substr($message, -1) == $this->LE) { - $message = substr($message, 0, -1); - } - - $line = explode($this->LE, $message); - $message = ''; - for ($i = 0 ;$i < count($line); $i++) { - $line_part = explode(' ', $line[$i]); - $buf = ''; - for ($e = 0; $e $length)) { - $space_left = $length - strlen($buf) - 1; - if ($e != 0) { - if ($space_left > 20) { - $len = $space_left; - if ($is_utf8) { - $len = $this->UTF8CharBoundary($word, $len); - } elseif (substr($word, $len - 1, 1) == "=") { - $len--; - } elseif (substr($word, $len - 2, 1) == "=") { - $len -= 2; - } - $part = substr($word, 0, $len); - $word = substr($word, $len); - $buf .= ' ' . $part; - $message .= $buf . sprintf("=%s", $this->LE); - } else { - $message .= $buf . $soft_break; - } - $buf = ''; - } - while (strlen($word) > 0) { - $len = $length; - if ($is_utf8) { - $len = $this->UTF8CharBoundary($word, $len); - } elseif (substr($word, $len - 1, 1) == "=") { - $len--; - } elseif (substr($word, $len - 2, 1) == "=") { - $len -= 2; - } - $part = substr($word, 0, $len); - $word = substr($word, $len); - - if (strlen($word) > 0) { - $message .= $part . sprintf("=%s", $this->LE); - } else { - $buf = $part; - } - } - } else { - $buf_o = $buf; - $buf .= ($e == 0) ? $word : (' ' . $word); - - if (strlen($buf) > $length and $buf_o != '') { - $message .= $buf_o . $soft_break; - $buf = $word; - } - } - } - $message .= $buf . $this->LE; - } - - return $message; - } - - /** - * Finds last character boundary prior to maxLength in a utf-8 - * quoted (printable) encoded string. - * Original written by Colin Brown. - * @access public - * @param string $encodedText utf-8 QP text - * @param int $maxLength find last character boundary prior to this length - * @return int - */ - public function UTF8CharBoundary($encodedText, $maxLength) { - $foundSplitPos = false; - $lookBack = 3; - while (!$foundSplitPos) { - $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); - $encodedCharPos = strpos($lastChunk, "="); - if ($encodedCharPos !== false) { - // Found start of encoded character byte within $lookBack block. - // Check the encoded byte value (the 2 chars after the '=') - $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); - $dec = hexdec($hex); - if ($dec < 128) { // Single byte character. - // If the encoded char was found at pos 0, it will fit - // otherwise reduce maxLength to start of the encoded char - $maxLength = ($encodedCharPos == 0) ? $maxLength : - $maxLength - ($lookBack - $encodedCharPos); - $foundSplitPos = true; - } elseif ($dec >= 192) { // First byte of a multi byte character - // Reduce maxLength to split at start of character - $maxLength = $maxLength - ($lookBack - $encodedCharPos); - $foundSplitPos = true; - } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back - $lookBack += 3; - } - } else { - // No encoded character found - $foundSplitPos = true; - } - } - return $maxLength; - } - - - /** - * Set the body wrapping. - * @access public - * @return void - */ - public function SetWordWrap() { - if($this->WordWrap < 1) { - return; - } - - switch($this->message_type) { - case 'alt': - case 'alt_inline': - case 'alt_attach': - case 'alt_inline_attach': - $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap); - break; - default: - $this->Body = $this->WrapText($this->Body, $this->WordWrap); - break; - } - } - - /** - * Assembles message header. - * @access public - * @return string The assembled header - */ - public function CreateHeader() { - $result = ''; - - // Set the boundaries - $uniq_id = md5(uniqid(time())); - $this->boundary[1] = 'b1_' . $uniq_id; - $this->boundary[2] = 'b2_' . $uniq_id; - $this->boundary[3] = 'b3_' . $uniq_id; - - $result .= $this->HeaderLine('Date', self::RFCDate()); - if($this->Sender == '') { - $result .= $this->HeaderLine('Return-Path', trim($this->From)); - } else { - $result .= $this->HeaderLine('Return-Path', trim($this->Sender)); - } - - // To be created automatically by mail() - if($this->Mailer != 'mail') { - if ($this->SingleTo === true) { - foreach($this->to as $t) { - $this->SingleToArray[] = $this->AddrFormat($t); - } - } else { - if(count($this->to) > 0) { - $result .= $this->AddrAppend('To', $this->to); - } elseif (count($this->cc) == 0) { - $result .= $this->HeaderLine('To', 'undisclosed-recipients:;'); - } - } - } - - $from = array(); - $from[0][0] = trim($this->From); - $from[0][1] = $this->FromName; - $result .= $this->AddrAppend('From', $from); - - // sendmail and mail() extract Cc from the header before sending - if(count($this->cc) > 0) { - $result .= $this->AddrAppend('Cc', $this->cc); - } - - // sendmail and mail() extract Bcc from the header before sending - if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) { - $result .= $this->AddrAppend('Bcc', $this->bcc); - } - - if(count($this->ReplyTo) > 0) { - $result .= $this->AddrAppend('Reply-To', $this->ReplyTo); - } - - // mail() sets the subject itself - if($this->Mailer != 'mail') { - $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject))); - } - - if($this->MessageID != '') { - $result .= $this->HeaderLine('Message-ID', $this->MessageID); - } else { - $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE); - } - $result .= $this->HeaderLine('X-Priority', $this->Priority); - if($this->XMailer) { - $result .= $this->HeaderLine('X-Mailer', $this->XMailer); - } else { - $result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (http://code.google.com/a/apache-extras.org/p/phpmailer/)'); - } - - if($this->ConfirmReadingTo != '') { - $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>'); - } - - // Add custom headers - for($index = 0; $index < count($this->CustomHeader); $index++) { - $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1]))); - } - if (!$this->sign_key_file) { - $result .= $this->HeaderLine('MIME-Version', '1.0'); - $result .= $this->GetMailMIME(); - } - - return $result; - } - - /** - * Returns the message MIME. - * @access public - * @return string - */ - public function GetMailMIME() { - $result = ''; - switch($this->message_type) { - case 'plain': - $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding); - $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset="'.$this->CharSet.'"'); - break; - case 'inline': - $result .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - case 'attach': - case 'inline_attach': - case 'alt_attach': - case 'alt_inline_attach': - $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;'); - $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - case 'alt': - case 'alt_inline': - $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); - $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - } - - if($this->Mailer != 'mail') { - $result .= $this->LE.$this->LE; - } - - return $result; - } - - /** - * Returns the MIME message (headers and body). Only really valid post PreSend(). - * @access public - * @return string - */ - public function GetSentMIMEMessage() { - return $this->SentMIMEMessage; - } - - - /** - * Assembles the message body. Returns an empty string on failure. - * @access public - * @return string The assembled message body - */ - public function CreateBody() { - $body = ''; - - if ($this->sign_key_file) { - $body .= $this->GetMailMIME(); - } - - $this->SetWordWrap(); - - switch($this->message_type) { - case 'plain': - $body .= $this->EncodeString($this->Body, $this->Encoding); - break; - case 'inline': - $body .= $this->GetBoundary($this->boundary[1], '', '', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll("inline", $this->boundary[1]); - break; - case 'attach': - $body .= $this->GetBoundary($this->boundary[1], '', '', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll("attachment", $this->boundary[1]); - break; - case 'inline_attach': - $body .= $this->TextLine("--" . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', '', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll("inline", $this->boundary[2]); - $body .= $this->LE; - $body .= $this->AttachAll("attachment", $this->boundary[1]); - break; - case 'alt': - $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->GetBoundary($this->boundary[1], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->EndBoundary($this->boundary[1]); - break; - case 'alt_inline': - $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->TextLine("--" . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll("inline", $this->boundary[2]); - $body .= $this->LE; - $body .= $this->EndBoundary($this->boundary[1]); - break; - case 'alt_attach': - $body .= $this->TextLine("--" . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->EndBoundary($this->boundary[2]); - $body .= $this->LE; - $body .= $this->AttachAll("attachment", $this->boundary[1]); - break; - case 'alt_inline_attach': - $body .= $this->TextLine("--" . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->TextLine("--" . $this->boundary[2]); - $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[3] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[3], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll("inline", $this->boundary[3]); - $body .= $this->LE; - $body .= $this->EndBoundary($this->boundary[2]); - $body .= $this->LE; - $body .= $this->AttachAll("attachment", $this->boundary[1]); - break; - } - - if ($this->IsError()) { - $body = ''; - } elseif ($this->sign_key_file) { - try { - $file = tempnam('', 'mail'); - file_put_contents($file, $body); //TODO check this worked - $signed = tempnam("", "signed"); - if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), NULL)) { - @unlink($file); - $body = file_get_contents($signed); - @unlink($signed); - } else { - @unlink($file); - @unlink($signed); - throw new phpmailerException($this->Lang("signing").openssl_error_string()); - } - } catch (phpmailerException $e) { - $body = ''; - if ($this->exceptions) { - throw $e; - } - } - } - - return $body; - } - - /** - * Returns the start of a message boundary. - * @access protected - * @return string - */ - protected function GetBoundary($boundary, $charSet, $contentType, $encoding) { - $result = ''; - if($charSet == '') { - $charSet = $this->CharSet; - } - if($contentType == '') { - $contentType = $this->ContentType; - } - if($encoding == '') { - $encoding = $this->Encoding; - } - $result .= $this->TextLine('--' . $boundary); - $result .= sprintf("Content-Type: %s; charset=\"%s\"", $contentType, $charSet); - $result .= $this->LE; - $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding); - $result .= $this->LE; - - return $result; - } - - /** - * Returns the end of a message boundary. - * @access protected - * @return string - */ - protected function EndBoundary($boundary) { - return $this->LE . '--' . $boundary . '--' . $this->LE; - } - - /** - * Sets the message type. - * @access protected - * @return void - */ - protected function SetMessageType() { - $this->message_type = array(); - if($this->AlternativeExists()) $this->message_type[] = "alt"; - if($this->InlineImageExists()) $this->message_type[] = "inline"; - if($this->AttachmentExists()) $this->message_type[] = "attach"; - $this->message_type = implode("_", $this->message_type); - if($this->message_type == "") $this->message_type = "plain"; - } - - /** - * Returns a formatted header line. - * @access public - * @return string - */ - public function HeaderLine($name, $value) { - return $name . ': ' . $value . $this->LE; - } - - /** - * Returns a formatted mail line. - * @access public - * @return string - */ - public function TextLine($value) { - return $value . $this->LE; - } - - ///////////////////////////////////////////////// - // CLASS METHODS, ATTACHMENTS - ///////////////////////////////////////////////// - - /** - * Adds an attachment from a path on the filesystem. - * Returns false if the file could not be found - * or accessed. - * @param string $path Path to the attachment. - * @param string $name Overrides the attachment name. - * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. - * @return bool - */ - public function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { - try { - if ( !@is_file($path) ) { - throw new phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE); - } - $filename = basename($path); - if ( $name == '' ) { - $name = $filename; - } - - $this->attachment[] = array( - 0 => $path, - 1 => $filename, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => false, // isStringAttachment - 6 => 'attachment', - 7 => 0 - ); - - } catch (phpmailerException $e) { - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - if ($this->SMTPDebug) { - echo $e->getMessage()."\n"; - } - if ( $e->getCode() == self::STOP_CRITICAL ) { - return false; - } - } - return true; - } - - /** - * Return the current array of attachments - * @return array - */ - public function GetAttachments() { - return $this->attachment; - } - - /** - * Attaches all fs, string, and binary attachments to the message. - * Returns an empty string on failure. - * @access protected - * @return string - */ - protected function AttachAll($disposition_type, $boundary) { - // Return text of body - $mime = array(); - $cidUniq = array(); - $incl = array(); - - // Add all attachments - foreach ($this->attachment as $attachment) { - // CHECK IF IT IS A VALID DISPOSITION_FILTER - if($attachment[6] == $disposition_type) { - // Check for string attachment - $bString = $attachment[5]; - if ($bString) { - $string = $attachment[0]; - } else { - $path = $attachment[0]; - } - - $inclhash = md5(serialize($attachment)); - if (in_array($inclhash, $incl)) { continue; } - $incl[] = $inclhash; - $filename = $attachment[1]; - $name = $attachment[2]; - $encoding = $attachment[3]; - $type = $attachment[4]; - $disposition = $attachment[6]; - $cid = $attachment[7]; - if ( $disposition == 'inline' && isset($cidUniq[$cid]) ) { continue; } - $cidUniq[$cid] = true; - - $mime[] = sprintf("--%s%s", $boundary, $this->LE); - $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE); - $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE); - - if($disposition == 'inline') { - $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE); - } - - $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE); - - // Encode as string attachment - if($bString) { - $mime[] = $this->EncodeString($string, $encoding); - if($this->IsError()) { - return ''; - } - $mime[] = $this->LE.$this->LE; - } else { - $mime[] = $this->EncodeFile($path, $encoding); - if($this->IsError()) { - return ''; - } - $mime[] = $this->LE.$this->LE; - } - } - } - - $mime[] = sprintf("--%s--%s", $boundary, $this->LE); - - return implode("", $mime); - } - - /** - * Encodes attachment in requested format. - * Returns an empty string on failure. - * @param string $path The full path to the file - * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' - * @see EncodeFile() - * @access protected - * @return string - */ - protected function EncodeFile($path, $encoding = 'base64') { - try { - if (!is_readable($path)) { - throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE); - } - if (function_exists('get_magic_quotes')) { - function get_magic_quotes() { - return false; - } - } - $magic_quotes = get_magic_quotes_runtime(); - if ($magic_quotes) { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - set_magic_quotes_runtime(0); - } else { - ini_set('magic_quotes_runtime', 0); - } - } - $file_buffer = file_get_contents($path); - $file_buffer = $this->EncodeString($file_buffer, $encoding); - if ($magic_quotes) { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - set_magic_quotes_runtime($magic_quotes); - } else { - ini_set('magic_quotes_runtime', $magic_quotes); - } - } - return $file_buffer; - } catch (Exception $e) { - $this->SetError($e->getMessage()); - return ''; - } - } - - /** - * Encodes string to requested format. - * Returns an empty string on failure. - * @param string $str The text to encode - * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' - * @access public - * @return string - */ - public function EncodeString($str, $encoding = 'base64') { - $encoded = ''; - switch(strtolower($encoding)) { - case 'base64': - $encoded = chunk_split(base64_encode($str), 76, $this->LE); - break; - case '7bit': - case '8bit': - $encoded = $this->FixEOL($str); - //Make sure it ends with a line break - if (substr($encoded, -(strlen($this->LE))) != $this->LE) - $encoded .= $this->LE; - break; - case 'binary': - $encoded = $str; - break; - case 'quoted-printable': - $encoded = $this->EncodeQP($str); - break; - default: - $this->SetError($this->Lang('encoding') . $encoding); - break; - } - return $encoded; - } - - /** - * Encode a header string to best (shortest) of Q, B, quoted or none. - * @access public - * @return string - */ - public function EncodeHeader($str, $position = 'text') { - $x = 0; - - switch (strtolower($position)) { - case 'phrase': - if (!preg_match('/[\200-\377]/', $str)) { - // Can't use addslashes as we don't know what value has magic_quotes_sybase - $encoded = addcslashes($str, "\0..\37\177\\\""); - if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { - return ($encoded); - } else { - return ("\"$encoded\""); - } - } - $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); - break; - case 'comment': - $x = preg_match_all('/[()"]/', $str, $matches); - // Fall-through - case 'text': - default: - $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); - break; - } - - if ($x == 0) { - return ($str); - } - - $maxlen = 75 - 7 - strlen($this->CharSet); - // Try to select the encoding which should produce the shortest output - if (strlen($str)/3 < $x) { - $encoding = 'B'; - if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) { - // Use a custom function which correctly encodes and wraps long - // multibyte strings without breaking lines within a character - $encoded = $this->Base64EncodeWrapMB($str); - } else { - $encoded = base64_encode($str); - $maxlen -= $maxlen % 4; - $encoded = trim(chunk_split($encoded, $maxlen, "\n")); - } - } else { - $encoding = 'Q'; - $encoded = $this->EncodeQ($str, $position); - $encoded = $this->WrapText($encoded, $maxlen, true); - $encoded = str_replace('='.$this->LE, "\n", trim($encoded)); - } - - $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded); - $encoded = trim(str_replace("\n", $this->LE, $encoded)); - - return $encoded; - } - - /** - * Checks if a string contains multibyte characters. - * @access public - * @param string $str multi-byte text to wrap encode - * @return bool - */ - public function HasMultiBytes($str) { - if (function_exists('mb_strlen')) { - return (strlen($str) > mb_strlen($str, $this->CharSet)); - } else { // Assume no multibytes (we can't handle without mbstring functions anyway) - return false; - } - } - - /** - * Correctly encodes and wraps long multibyte strings for mail headers - * without breaking lines within a character. - * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php - * @access public - * @param string $str multi-byte text to wrap encode - * @return string - */ - public function Base64EncodeWrapMB($str) { - $start = "=?".$this->CharSet."?B?"; - $end = "?="; - $encoded = ""; - - $mb_length = mb_strlen($str, $this->CharSet); - // Each line must have length <= 75, including $start and $end - $length = 75 - strlen($start) - strlen($end); - // Average multi-byte ratio - $ratio = $mb_length / strlen($str); - // Base64 has a 4:3 ratio - $offset = $avgLength = floor($length * $ratio * .75); - - for ($i = 0; $i < $mb_length; $i += $offset) { - $lookBack = 0; - - do { - $offset = $avgLength - $lookBack; - $chunk = mb_substr($str, $i, $offset, $this->CharSet); - $chunk = base64_encode($chunk); - $lookBack++; - } - while (strlen($chunk) > $length); - - $encoded .= $chunk . $this->LE; - } - - // Chomp the last linefeed - $encoded = substr($encoded, 0, -strlen($this->LE)); - return $encoded; - } - - /** - * Encode string to quoted-printable. - * Only uses standard PHP, slow, but will always work - * @access public - * @param string $string the text to encode - * @param integer $line_max Number of chars allowed on a line before wrapping - * @return string - */ - public function EncodeQPphp( $input = '', $line_max = 76, $space_conv = false) { - $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); - $lines = preg_split('/(?:\r\n|\r|\n)/', $input); - $eol = "\r\n"; - $escape = '='; - $output = ''; - while( list(, $line) = each($lines) ) { - $linlen = strlen($line); - $newline = ''; - for($i = 0; $i < $linlen; $i++) { - $c = substr( $line, $i, 1 ); - $dec = ord( $c ); - if ( ( $i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E - $c = '=2E'; - } - if ( $dec == 32 ) { - if ( $i == ( $linlen - 1 ) ) { // convert space at eol only - $c = '=20'; - } else if ( $space_conv ) { - $c = '=20'; - } - } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required - $h2 = floor($dec/16); - $h1 = floor($dec%16); - $c = $escape.$hex[$h2].$hex[$h1]; - } - if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted - $output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay - $newline = ''; - // check if newline first character will be point or not - if ( $dec == 46 ) { - $c = '=2E'; - } - } - $newline .= $c; - } // end of for - $output .= $newline.$eol; - } // end of while - return $output; - } - - /** - * Encode string to RFC2045 (6.7) quoted-printable format - * Uses a PHP5 stream filter to do the encoding about 64x faster than the old version - * Also results in same content as you started with after decoding - * @see EncodeQPphp() - * @access public - * @param string $string the text to encode - * @param integer $line_max Number of chars allowed on a line before wrapping - * @param boolean $space_conv Dummy param for compatibility with existing EncodeQP function - * @return string - * @author Marcus Bointon - */ - public function EncodeQP($string, $line_max = 76, $space_conv = false) { - if (function_exists('quoted_printable_encode')) { //Use native function if it's available (>= PHP5.3) - return quoted_printable_encode($string); - } - $filters = stream_get_filters(); - if (!in_array('convert.*', $filters)) { //Got convert stream filter? - return $this->EncodeQPphp($string, $line_max, $space_conv); //Fall back to old implementation - } - $fp = fopen('php://temp/', 'r+'); - $string = preg_replace('/\r\n?/', $this->LE, $string); //Normalise line breaks - $params = array('line-length' => $line_max, 'line-break-chars' => $this->LE); - $s = stream_filter_append($fp, 'convert.quoted-printable-encode', STREAM_FILTER_READ, $params); - fputs($fp, $string); - rewind($fp); - $out = stream_get_contents($fp); - stream_filter_remove($s); - $out = preg_replace('/^\./m', '=2E', $out); //Encode . if it is first char on a line, workaround for bug in Exchange - fclose($fp); - return $out; - } - - /** - * Encode string to q encoding. - * @link http://tools.ietf.org/html/rfc2047 - * @param string $str the text to encode - * @param string $position Where the text is going to be used, see the RFC for what that means - * @access public - * @return string - */ - public function EncodeQ($str, $position = 'text') { - // There should not be any EOL in the string - $encoded = preg_replace('/[\r\n]*/', '', $str); - - switch (strtolower($position)) { - case 'phrase': - $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded); - break; - case 'comment': - $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded); - case 'text': - default: - // Replace every high ascii, control =, ? and _ characters - //TODO using /e (equivalent to eval()) is probably not a good idea - $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e', - "'='.sprintf('%02X', ord(stripslashes('\\1')))", $encoded); - break; - } - - // Replace every spaces to _ (more readable than =20) - $encoded = str_replace(' ', '_', $encoded); - - return $encoded; - } - - /** - * Adds a string or binary attachment (non-filesystem) to the list. - * This method can be used to attach ascii or binary data, - * such as a BLOB record from a database. - * @param string $string String attachment data. - * @param string $filename Name of the attachment. - * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. - * @return void - */ - public function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') { - // Append to $attachment array - $this->attachment[] = array( - 0 => $string, - 1 => $filename, - 2 => basename($filename), - 3 => $encoding, - 4 => $type, - 5 => true, // isStringAttachment - 6 => 'attachment', - 7 => 0 - ); - } - - /** - * Adds an embedded attachment. This can include images, sounds, and - * just about any other document. Make sure to set the $type to an - * image type. For JPEG images use "image/jpeg" and for GIF images - * use "image/gif". - * @param string $path Path to the attachment. - * @param string $cid Content ID of the attachment. Use this to identify - * the Id for accessing the image in an HTML form. - * @param string $name Overrides the attachment name. - * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. - * @return bool - */ - public function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { - - if ( !@is_file($path) ) { - $this->SetError($this->Lang('file_access') . $path); - return false; - } - - $filename = basename($path); - if ( $name == '' ) { - $name = $filename; - } - - // Append to $attachment array - $this->attachment[] = array( - 0 => $path, - 1 => $filename, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => false, // isStringAttachment - 6 => 'inline', - 7 => $cid - ); - - return true; - } - - public function AddStringEmbeddedImage($string, $cid, $filename = '', $encoding = 'base64', $type = 'application/octet-stream') { - // Append to $attachment array - $this->attachment[] = array( - 0 => $string, - 1 => $filename, - 2 => basename($filename), - 3 => $encoding, - 4 => $type, - 5 => true, // isStringAttachment - 6 => 'inline', - 7 => $cid - ); - } - - /** - * Returns true if an inline attachment is present. - * @access public - * @return bool - */ - public function InlineImageExists() { - foreach($this->attachment as $attachment) { - if ($attachment[6] == 'inline') { - return true; - } - } - return false; - } - - public function AttachmentExists() { - foreach($this->attachment as $attachment) { - if ($attachment[6] == 'attachment') { - return true; - } - } - return false; - } - - public function AlternativeExists() { - return strlen($this->AltBody)>0; - } - - ///////////////////////////////////////////////// - // CLASS METHODS, MESSAGE RESET - ///////////////////////////////////////////////// - - /** - * Clears all recipients assigned in the TO array. Returns void. - * @return void - */ - public function ClearAddresses() { - foreach($this->to as $to) { - unset($this->all_recipients[strtolower($to[0])]); - } - $this->to = array(); - } - - /** - * Clears all recipients assigned in the CC array. Returns void. - * @return void - */ - public function ClearCCs() { - foreach($this->cc as $cc) { - unset($this->all_recipients[strtolower($cc[0])]); - } - $this->cc = array(); - } - - /** - * Clears all recipients assigned in the BCC array. Returns void. - * @return void - */ - public function ClearBCCs() { - foreach($this->bcc as $bcc) { - unset($this->all_recipients[strtolower($bcc[0])]); - } - $this->bcc = array(); - } - - /** - * Clears all recipients assigned in the ReplyTo array. Returns void. - * @return void - */ - public function ClearReplyTos() { - $this->ReplyTo = array(); - } - - /** - * Clears all recipients assigned in the TO, CC and BCC - * array. Returns void. - * @return void - */ - public function ClearAllRecipients() { - $this->to = array(); - $this->cc = array(); - $this->bcc = array(); - $this->all_recipients = array(); - } - - /** - * Clears all previously set filesystem, string, and binary - * attachments. Returns void. - * @return void - */ - public function ClearAttachments() { - $this->attachment = array(); - } - - /** - * Clears all custom headers. Returns void. - * @return void - */ - public function ClearCustomHeaders() { - $this->CustomHeader = array(); - } - - ///////////////////////////////////////////////// - // CLASS METHODS, MISCELLANEOUS - ///////////////////////////////////////////////// - - /** - * Adds the error message to the error container. - * @access protected - * @return void - */ - protected function SetError($msg) { - $this->error_count++; - if ($this->Mailer == 'smtp' and !is_null($this->smtp)) { - $lasterror = $this->smtp->getError(); - if (!empty($lasterror) and array_key_exists('smtp_msg', $lasterror)) { - $msg .= '

    ' . $this->Lang('smtp_error') . $lasterror['smtp_msg'] . "

    \n"; - } - } - $this->ErrorInfo = $msg; - } - - /** - * Returns the proper RFC 822 formatted date. - * @access public - * @return string - * @static - */ - public static function RFCDate() { - $tz = date('Z'); - $tzs = ($tz < 0) ? '-' : '+'; - $tz = abs($tz); - $tz = (int)($tz/3600)*100 + ($tz%3600)/60; - $result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz); - - return $result; - } - - /** - * Returns the server hostname or 'localhost.localdomain' if unknown. - * @access protected - * @return string - */ - protected function ServerHostname() { - if (!empty($this->Hostname)) { - $result = $this->Hostname; - } elseif (isset($_SERVER['SERVER_NAME'])) { - $result = $_SERVER['SERVER_NAME']; - } else { - $result = 'localhost.localdomain'; - } - - return $result; - } - - /** - * Returns a message in the appropriate language. - * @access protected - * @return string - */ - protected function Lang($key) { - if(count($this->language) < 1) { - $this->SetLanguage('en'); // set the default language - } - - if(isset($this->language[$key])) { - return $this->language[$key]; - } else { - return 'Language string failed to load: ' . $key; - } - } - - /** - * Returns true if an error occurred. - * @access public - * @return bool - */ - public function IsError() { - return ($this->error_count > 0); - } - - /** - * Changes every end of line from CR or LF to CRLF. - * @access public - * @return string - */ - public function FixEOL($str) { - $str = str_replace("\r\n", "\n", $str); - $str = str_replace("\r", "\n", $str); - $str = str_replace("\n", $this->LE, $str); - return $str; - } - - /** - * Adds a custom header. - * @access public - * @return void - */ - public function AddCustomHeader($custom_header) { - $this->CustomHeader[] = explode(':', $custom_header, 2); - } - - /** - * Evaluates the message and returns modifications for inline images and backgrounds - * @access public - * @return $message - */ - public function MsgHTML($message, $basedir = '') { - preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images); - if(isset($images[2])) { - foreach($images[2] as $i => $url) { - // do not change urls for absolute images (thanks to corvuscorax) - if (!preg_match('#^[A-z]+://#', $url)) { - $filename = basename($url); - $directory = dirname($url); - ($directory == '.') ? $directory='': ''; - $cid = 'cid:' . md5($filename); - $ext = pathinfo($filename, PATHINFO_EXTENSION); - $mimeType = self::_mime_types($ext); - if ( strlen($basedir) > 1 && substr($basedir, -1) != '/') { $basedir .= '/'; } - if ( strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; } - if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType) ) { - $message = preg_replace("/".$images[1][$i]."=[\"']".preg_quote($url, '/')."[\"']/Ui", $images[1][$i]."=\"".$cid."\"", $message); - } - } - } - } - $this->IsHTML(true); - $this->Body = $message; - if (empty($this->AltBody)) { - $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message))); - if (!empty($textMsg)) { - $this->AltBody = html_entity_decode($textMsg, ENT_QUOTES, $this->CharSet); - } - } - if (empty($this->AltBody)) { - $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n"; - } - return $message; - } - - /** - * Gets the MIME type of the embedded or inline image - * @param string File extension - * @access public - * @return string MIME type of ext - * @static - */ - public static function _mime_types($ext = '') { - $mimes = array( - 'hqx' => 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'doc' => 'application/msword', - 'bin' => 'application/macbinary', - 'dms' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'exe' => 'application/octet-stream', - 'class' => 'application/octet-stream', - 'psd' => 'application/octet-stream', - 'so' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => 'application/pdf', - 'ai' => 'application/postscript', - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => 'application/vnd.ms-excel', - 'ppt' => 'application/vnd.ms-powerpoint', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'php' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'js' => 'application/x-javascript', - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => 'application/x-tar', - 'xhtml' => 'application/xhtml+xml', - 'xht' => 'application/xhtml+xml', - 'zip' => 'application/zip', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mpga' => 'audio/mpeg', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'aif' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'rv' => 'video/vnd.rn-realvideo', - 'wav' => 'audio/x-wav', - 'bmp' => 'image/bmp', - 'gif' => 'image/gif', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'jpe' => 'image/jpeg', - 'png' => 'image/png', - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'css' => 'text/css', - 'html' => 'text/html', - 'htm' => 'text/html', - 'shtml' => 'text/html', - 'txt' => 'text/plain', - 'text' => 'text/plain', - 'log' => 'text/plain', - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'xml' => 'text/xml', - 'xsl' => 'text/xml', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'qt' => 'video/quicktime', - 'mov' => 'video/quicktime', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie', - 'doc' => 'application/msword', - 'word' => 'application/msword', - 'xl' => 'application/excel', - 'eml' => 'message/rfc822' - ); - return (!isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)]; - } - - /** - * Set (or reset) Class Objects (variables) - * - * Usage Example: - * $page->set('X-Priority', '3'); - * - * @access public - * @param string $name Parameter Name - * @param mixed $value Parameter Value - * NOTE: will not work with arrays, there are no arrays to set/reset - * @todo Should this not be using __set() magic function? - */ - public function set($name, $value = '') { - try { - if (isset($this->$name) ) { - $this->$name = $value; - } else { - throw new phpmailerException($this->Lang('variable_set') . $name, self::STOP_CRITICAL); - } - } catch (Exception $e) { - $this->SetError($e->getMessage()); - if ($e->getCode() == self::STOP_CRITICAL) { - return false; - } - } - return true; - } - - /** - * Strips newlines to prevent header injection. - * @access public - * @param string $str String - * @return string - */ - public function SecureHeader($str) { - $str = str_replace("\r", '', $str); - $str = str_replace("\n", '', $str); - return trim($str); - } - - /** - * Set the private key file and password to sign the message. - * - * @access public - * @param string $key_filename Parameter File Name - * @param string $key_pass Password for private key - */ - public function Sign($cert_filename, $key_filename, $key_pass) { - $this->sign_cert_file = $cert_filename; - $this->sign_key_file = $key_filename; - $this->sign_key_pass = $key_pass; - } - - /** - * Set the private key file and password to sign the message. - * - * @access public - * @param string $key_filename Parameter File Name - * @param string $key_pass Password for private key - */ - public function DKIM_QP($txt) { - $tmp = ''; - $line = ''; - for ($i = 0; $i < strlen($txt); $i++) { - $ord = ord($txt[$i]); - if ( ((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E)) ) { - $line .= $txt[$i]; - } else { - $line .= "=".sprintf("%02X", $ord); - } - } - return $line; - } - - /** - * Generate DKIM signature - * - * @access public - * @param string $s Header - */ - public function DKIM_Sign($s) { - $privKeyStr = file_get_contents($this->DKIM_private); - if ($this->DKIM_passphrase != '') { - $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); - } else { - $privKey = $privKeyStr; - } - if (openssl_sign($s, $signature, $privKey)) { - return base64_encode($signature); - } - } - - /** - * Generate DKIM Canonicalization Header - * - * @access public - * @param string $s Header - */ - public function DKIM_HeaderC($s) { - $s = preg_replace("/\r\n\s+/", " ", $s); - $lines = explode("\r\n", $s); - foreach ($lines as $key => $line) { - list($heading, $value) = explode(":", $line, 2); - $heading = strtolower($heading); - $value = preg_replace("/\s+/", " ", $value) ; // Compress useless spaces - $lines[$key] = $heading.":".trim($value) ; // Don't forget to remove WSP around the value - } - $s = implode("\r\n", $lines); - return $s; - } - - /** - * Generate DKIM Canonicalization Body - * - * @access public - * @param string $body Message Body - */ - public function DKIM_BodyC($body) { - if ($body == '') return "\r\n"; - // stabilize line endings - $body = str_replace("\r\n", "\n", $body); - $body = str_replace("\n", "\r\n", $body); - // END stabilize line endings - while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") { - $body = substr($body, 0, strlen($body) - 2); - } - return $body; - } - - /** - * Create the DKIM header, body, as new header - * - * @access public - * @param string $headers_line Header lines - * @param string $subject Subject - * @param string $body Body - */ - public function DKIM_Add($headers_line, $subject, $body) { - $DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms - $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body - $DKIMquery = 'dns/txt'; // Query method - $DKIMtime = time() ; // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) - $subject_header = "Subject: $subject"; - $headers = explode($this->LE, $headers_line); - foreach($headers as $header) { - if (strpos($header, 'From:') === 0) { - $from_header = $header; - } elseif (strpos($header, 'To:') === 0) { - $to_header = $header; - } - } - $from = str_replace('|', '=7C', $this->DKIM_QP($from_header)); - $to = str_replace('|', '=7C', $this->DKIM_QP($to_header)); - $subject = str_replace('|', '=7C', $this->DKIM_QP($subject_header)) ; // Copied header fields (dkim-quoted-printable - $body = $this->DKIM_BodyC($body); - $DKIMlen = strlen($body) ; // Length of body - $DKIMb64 = base64_encode(pack("H*", sha1($body))) ; // Base64 of packed binary SHA-1 hash of body - $ident = ($this->DKIM_identity == '')? '' : " i=" . $this->DKIM_identity . ";"; - $dkimhdrs = "DKIM-Signature: v=1; a=" . $DKIMsignatureType . "; q=" . $DKIMquery . "; l=" . $DKIMlen . "; s=" . $this->DKIM_selector . ";\r\n". - "\tt=" . $DKIMtime . "; c=" . $DKIMcanonicalization . ";\r\n". - "\th=From:To:Subject;\r\n". - "\td=" . $this->DKIM_domain . ";" . $ident . "\r\n". - "\tz=$from\r\n". - "\t|$to\r\n". - "\t|$subject;\r\n". - "\tbh=" . $DKIMb64 . ";\r\n". - "\tb="; - $toSign = $this->DKIM_HeaderC($from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs); - $signed = $this->DKIM_Sign($toSign); - return "X-PHPMAILER-DKIM: phpmailer.worxware.com\r\n".$dkimhdrs.$signed."\r\n"; - } - - protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body) { - if (!empty($this->action_function) && function_exists($this->action_function)) { - $params = array($isSent, $to, $cc, $bcc, $subject, $body); - call_user_func_array($this->action_function, $params); - } - } -} - -class phpmailerException extends Exception { - public function errorMessage() { - $errorMsg = '' . $this->getMessage() . "
    \n"; - return $errorMsg; - } -} -?> diff --git a/3rdparty/class.smtp.php b/3rdparty/class.smtp.php deleted file mode 100644 index 6977bffad14745086a1effac05c7ced3806da154..0000000000000000000000000000000000000000 --- a/3rdparty/class.smtp.php +++ /dev/null @@ -1,818 +0,0 @@ -smtp_conn = 0; - $this->error = null; - $this->helo_rply = null; - - $this->do_debug = 0; - } - - ///////////////////////////////////////////////// - // CONNECTION FUNCTIONS - ///////////////////////////////////////////////// - - /** - * Connect to the server specified on the port specified. - * If the port is not specified use the default SMTP_PORT. - * If tval is specified then a connection will try and be - * established with the server for that number of seconds. - * If tval is not specified the default is 30 seconds to - * try on the connection. - * - * SMTP CODE SUCCESS: 220 - * SMTP CODE FAILURE: 421 - * @access public - * @return bool - */ - public function Connect($host, $port = 0, $tval = 30) { - // set the error val to null so there is no confusion - $this->error = null; - - // make sure we are __not__ connected - if($this->connected()) { - // already connected, generate error - $this->error = array("error" => "Already connected to a server"); - return false; - } - - if(empty($port)) { - $port = $this->SMTP_PORT; - } - - // connect to the smtp server - $this->smtp_conn = @fsockopen($host, // the host of the server - $port, // the port to use - $errno, // error number if any - $errstr, // error message if any - $tval); // give up after ? secs - // verify we connected properly - if(empty($this->smtp_conn)) { - $this->error = array("error" => "Failed to connect to server", - "errno" => $errno, - "errstr" => $errstr); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '
    '; - } - return false; - } - - // SMTP server can take longer to respond, give longer timeout for first read - // Windows does not have support for this timeout function - if(substr(PHP_OS, 0, 3) != "WIN") - socket_set_timeout($this->smtp_conn, $tval, 0); - - // get any announcement - $announce = $this->get_lines(); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $announce . $this->CRLF . '
    '; - } - - return true; - } - - /** - * Initiate a TLS communication with the server. - * - * SMTP CODE 220 Ready to start TLS - * SMTP CODE 501 Syntax error (no parameters allowed) - * SMTP CODE 454 TLS not available due to temporary reason - * @access public - * @return bool success - */ - public function StartTLS() { - $this->error = null; # to avoid confusion - - if(!$this->connected()) { - $this->error = array("error" => "Called StartTLS() without being connected"); - return false; - } - - fputs($this->smtp_conn,"STARTTLS" . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '
    '; - } - - if($code != 220) { - $this->error = - array("error" => "STARTTLS not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - - // Begin encrypted connection - if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { - return false; - } - - return true; - } - - /** - * Performs SMTP authentication. Must be run after running the - * Hello() method. Returns true if successfully authenticated. - * @access public - * @return bool - */ - public function Authenticate($username, $password) { - // Start authentication - fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($code != 334) { - $this->error = - array("error" => "AUTH not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - - // Send encoded username - fputs($this->smtp_conn, base64_encode($username) . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($code != 334) { - $this->error = - array("error" => "Username not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - - // Send encoded password - fputs($this->smtp_conn, base64_encode($password) . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($code != 235) { - $this->error = - array("error" => "Password not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - - return true; - } - - /** - * Returns true if connected to a server otherwise false - * @access public - * @return bool - */ - public function Connected() { - if(!empty($this->smtp_conn)) { - $sock_status = socket_get_status($this->smtp_conn); - if($sock_status["eof"]) { - // the socket is valid but we are not connected - if($this->do_debug >= 1) { - echo "SMTP -> NOTICE:" . $this->CRLF . "EOF caught while checking if connected"; - } - $this->Close(); - return false; - } - return true; // everything looks good - } - return false; - } - - /** - * Closes the socket and cleans up the state of the class. - * It is not considered good to use this function without - * first trying to use QUIT. - * @access public - * @return void - */ - public function Close() { - $this->error = null; // so there is no confusion - $this->helo_rply = null; - if(!empty($this->smtp_conn)) { - // close the connection and cleanup - fclose($this->smtp_conn); - $this->smtp_conn = 0; - } - } - - ///////////////////////////////////////////////// - // SMTP COMMANDS - ///////////////////////////////////////////////// - - /** - * Issues a data command and sends the msg_data to the server - * finializing the mail transaction. $msg_data is the message - * that is to be send with the headers. Each header needs to be - * on a single line followed by a with the message headers - * and the message body being seperated by and additional . - * - * Implements rfc 821: DATA - * - * SMTP CODE INTERMEDIATE: 354 - * [data] - * . - * SMTP CODE SUCCESS: 250 - * SMTP CODE FAILURE: 552,554,451,452 - * SMTP CODE FAILURE: 451,554 - * SMTP CODE ERROR : 500,501,503,421 - * @access public - * @return bool - */ - public function Data($msg_data) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - "error" => "Called Data() without being connected"); - return false; - } - - fputs($this->smtp_conn,"DATA" . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '
    '; - } - - if($code != 354) { - $this->error = - array("error" => "DATA command not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - - /* the server is ready to accept data! - * according to rfc 821 we should not send more than 1000 - * including the CRLF - * characters on a single line so we will break the data up - * into lines by \r and/or \n then if needed we will break - * each of those into smaller lines to fit within the limit. - * in addition we will be looking for lines that start with - * a period '.' and append and additional period '.' to that - * line. NOTE: this does not count towards limit. - */ - - // normalize the line breaks so we know the explode works - $msg_data = str_replace("\r\n","\n",$msg_data); - $msg_data = str_replace("\r","\n",$msg_data); - $lines = explode("\n",$msg_data); - - /* we need to find a good way to determine is headers are - * in the msg_data or if it is a straight msg body - * currently I am assuming rfc 822 definitions of msg headers - * and if the first field of the first line (':' sperated) - * does not contain a space then it _should_ be a header - * and we can process all lines before a blank "" line as - * headers. - */ - - $field = substr($lines[0],0,strpos($lines[0],":")); - $in_headers = false; - if(!empty($field) && !strstr($field," ")) { - $in_headers = true; - } - - $max_line_length = 998; // used below; set here for ease in change - - while(list(,$line) = @each($lines)) { - $lines_out = null; - if($line == "" && $in_headers) { - $in_headers = false; - } - // ok we need to break this line up into several smaller lines - while(strlen($line) > $max_line_length) { - $pos = strrpos(substr($line,0,$max_line_length)," "); - - // Patch to fix DOS attack - if(!$pos) { - $pos = $max_line_length - 1; - $lines_out[] = substr($line,0,$pos); - $line = substr($line,$pos); - } else { - $lines_out[] = substr($line,0,$pos); - $line = substr($line,$pos + 1); - } - - /* if processing headers add a LWSP-char to the front of new line - * rfc 822 on long msg headers - */ - if($in_headers) { - $line = "\t" . $line; - } - } - $lines_out[] = $line; - - // send the lines to the server - while(list(,$line_out) = @each($lines_out)) { - if(strlen($line_out) > 0) - { - if(substr($line_out, 0, 1) == ".") { - $line_out = "." . $line_out; - } - } - fputs($this->smtp_conn,$line_out . $this->CRLF); - } - } - - // message data has been sent - fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '
    '; - } - - if($code != 250) { - $this->error = - array("error" => "DATA not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - return true; - } - - /** - * Sends the HELO command to the smtp server. - * This makes sure that we and the server are in - * the same known state. - * - * Implements from rfc 821: HELO - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE ERROR : 500, 501, 504, 421 - * @access public - * @return bool - */ - public function Hello($host = '') { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - "error" => "Called Hello() without being connected"); - return false; - } - - // if hostname for HELO was not specified send default - if(empty($host)) { - // determine appropriate default to send to server - $host = "localhost"; - } - - // Send extended hello first (RFC 2821) - if(!$this->SendHello("EHLO", $host)) { - if(!$this->SendHello("HELO", $host)) { - return false; - } - } - - return true; - } - - /** - * Sends a HELO/EHLO command. - * @access private - * @return bool - */ - private function SendHello($hello, $host) { - fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER: " . $rply . $this->CRLF . '
    '; - } - - if($code != 250) { - $this->error = - array("error" => $hello . " not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - - $this->helo_rply = $rply; - - return true; - } - - /** - * Starts a mail transaction from the email address specified in - * $from. Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more Recipient - * commands may be called followed by a Data command. - * - * Implements rfc 821: MAIL FROM: - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE SUCCESS: 552,451,452 - * SMTP CODE SUCCESS: 500,501,421 - * @access public - * @return bool - */ - public function Mail($from) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - "error" => "Called Mail() without being connected"); - return false; - } - - $useVerp = ($this->do_verp ? "XVERP" : ""); - fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '
    '; - } - - if($code != 250) { - $this->error = - array("error" => "MAIL not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - return true; - } - - /** - * Sends the quit command to the server and then closes the socket - * if there is no error or the $close_on_error argument is true. - * - * Implements from rfc 821: QUIT - * - * SMTP CODE SUCCESS: 221 - * SMTP CODE ERROR : 500 - * @access public - * @return bool - */ - public function Quit($close_on_error = true) { - $this->error = null; // so there is no confusion - - if(!$this->connected()) { - $this->error = array( - "error" => "Called Quit() without being connected"); - return false; - } - - // send the quit command to the server - fputs($this->smtp_conn,"quit" . $this->CRLF); - - // get any good-bye messages - $byemsg = $this->get_lines(); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $byemsg . $this->CRLF . '
    '; - } - - $rval = true; - $e = null; - - $code = substr($byemsg,0,3); - if($code != 221) { - // use e as a tmp var cause Close will overwrite $this->error - $e = array("error" => "SMTP server rejected quit command", - "smtp_code" => $code, - "smtp_rply" => substr($byemsg,4)); - $rval = false; - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $e["error"] . ": " . $byemsg . $this->CRLF . '
    '; - } - } - - if(empty($e) || $close_on_error) { - $this->Close(); - } - - return $rval; - } - - /** - * Sends the command RCPT to the SMTP server with the TO: argument of $to. - * Returns true if the recipient was accepted false if it was rejected. - * - * Implements from rfc 821: RCPT TO: - * - * SMTP CODE SUCCESS: 250,251 - * SMTP CODE FAILURE: 550,551,552,553,450,451,452 - * SMTP CODE ERROR : 500,501,503,421 - * @access public - * @return bool - */ - public function Recipient($to) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - "error" => "Called Recipient() without being connected"); - return false; - } - - fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '
    '; - } - - if($code != 250 && $code != 251) { - $this->error = - array("error" => "RCPT not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - return true; - } - - /** - * Sends the RSET command to abort and transaction that is - * currently in progress. Returns true if successful false - * otherwise. - * - * Implements rfc 821: RSET - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE ERROR : 500,501,504,421 - * @access public - * @return bool - */ - public function Reset() { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - "error" => "Called Reset() without being connected"); - return false; - } - - fputs($this->smtp_conn,"RSET" . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '
    '; - } - - if($code != 250) { - $this->error = - array("error" => "RSET failed", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - - return true; - } - - /** - * Starts a mail transaction from the email address specified in - * $from. Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more Recipient - * commands may be called followed by a Data command. This command - * will send the message to the users terminal if they are logged - * in and send them an email. - * - * Implements rfc 821: SAML FROM: - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE SUCCESS: 552,451,452 - * SMTP CODE SUCCESS: 500,501,502,421 - * @access public - * @return bool - */ - public function SendAndMail($from) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - "error" => "Called SendAndMail() without being connected"); - return false; - } - - fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply,0,3); - - if($this->do_debug >= 2) { - echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '
    '; - } - - if($code != 250) { - $this->error = - array("error" => "SAML not accepted from server", - "smtp_code" => $code, - "smtp_msg" => substr($rply,4)); - if($this->do_debug >= 1) { - echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '
    '; - } - return false; - } - return true; - } - - /** - * This is an optional command for SMTP that this class does not - * support. This method is here to make the RFC821 Definition - * complete for this class and __may__ be implimented in the future - * - * Implements from rfc 821: TURN - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE FAILURE: 502 - * SMTP CODE ERROR : 500, 503 - * @access public - * @return bool - */ - public function Turn() { - $this->error = array("error" => "This method, TURN, of the SMTP ". - "is not implemented"); - if($this->do_debug >= 1) { - echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF . '
    '; - } - return false; - } - - /** - * Get the current error - * @access public - * @return array - */ - public function getError() { - return $this->error; - } - - ///////////////////////////////////////////////// - // INTERNAL FUNCTIONS - ///////////////////////////////////////////////// - - /** - * Read in as many lines as possible - * either before eof or socket timeout occurs on the operation. - * With SMTP we can tell if we have more lines to read if the - * 4th character is '-' symbol. If it is a space then we don't - * need to read anything else. - * @access private - * @return string - */ - private function get_lines() { - $data = ""; - while(!feof($this->smtp_conn)) { - $str = @fgets($this->smtp_conn,515); - if($this->do_debug >= 4) { - echo "SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '
    '; - echo "SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '
    '; - } - $data .= $str; - if($this->do_debug >= 4) { - echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF . '
    '; - } - // if 4th character is a space, we are done reading, break the loop - if(substr($str,3,1) == " ") { break; } - } - return $data; - } - -} - -?> diff --git a/3rdparty/css/chosen-sprite.png b/3rdparty/css/chosen-sprite.png deleted file mode 100755 index 113dc9885a6b864ac154b266f024b4597f5c6ae7..0000000000000000000000000000000000000000 Binary files a/3rdparty/css/chosen-sprite.png and /dev/null differ diff --git a/3rdparty/css/chosen.css b/3rdparty/css/chosen.css deleted file mode 100755 index 89b5970e57ce65bfb44205f854f9b8d417ad33cd..0000000000000000000000000000000000000000 --- a/3rdparty/css/chosen.css +++ /dev/null @@ -1,392 +0,0 @@ -/* @group Base */ -.chzn-container { - font-size: 13px; - position: relative; - display: inline-block; - zoom: 1; - *display: inline; -} -.chzn-container .chzn-drop { - background: #fff; - border: 1px solid #aaa; - border-top: 0; - position: absolute; - top: 29px; - left: 0; - -webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15); - -moz-box-shadow : 0 4px 5px rgba(0,0,0,.15); - -o-box-shadow : 0 4px 5px rgba(0,0,0,.15); - box-shadow : 0 4px 5px rgba(0,0,0,.15); - z-index: 999; -} -/* @end */ - -/* @group Single Chosen */ -.chzn-container-single .chzn-single { - background-color: #ffffff; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); - background-image: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -ms-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - -webkit-border-radius: 5px; - -moz-border-radius : 5px; - border-radius : 5px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; - border: 1px solid #aaaaaa; - -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - -moz-box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - display: block; - overflow: hidden; - white-space: nowrap; - position: relative; - height: 23px; - line-height: 24px; - padding: 0 0 0 8px; - color: #444444; - text-decoration: none; -} -.chzn-container-single .chzn-default { - color: #999; -} -.chzn-container-single .chzn-single span { - margin-right: 26px; - display: block; - overflow: hidden; - white-space: nowrap; - -o-text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - text-overflow: ellipsis; -} -.chzn-container-single .chzn-single abbr { - display: block; - position: absolute; - right: 26px; - top: 6px; - width: 12px; - height: 13px; - font-size: 1px; - background: url(chosen-sprite.png) right top no-repeat; -} -.chzn-container-single .chzn-single abbr:hover { - background-position: right -11px; -} -.chzn-container-single .chzn-single div { - position: absolute; - right: 0; - top: 0; - display: block; - height: 100%; - width: 18px; -} -.chzn-container-single .chzn-single div b { - background: url('chosen-sprite.png') no-repeat 0 0; - display: block; - width: 100%; - height: 100%; -} -.chzn-container-single .chzn-search { - padding: 3px 4px; - position: relative; - margin: 0; - white-space: nowrap; - z-index: 1010; -} -.chzn-container-single .chzn-search input { - background: #fff url('chosen-sprite.png') no-repeat 100% -22px; - background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%); - margin: 1px 0; - padding: 4px 20px 4px 5px; - outline: 0; - border: 1px solid #aaa; - font-family: sans-serif; - font-size: 1em; -} -.chzn-container-single .chzn-drop { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius : 0 0 4px 4px; - border-radius : 0 0 4px 4px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; -} -/* @end */ - -.chzn-container-single-nosearch .chzn-search input { - position: absolute; - left: -9000px; -} - -/* @group Multi Chosen */ -.chzn-container-multi .chzn-choices { - background-color: #fff; - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%); - border: 1px solid #aaa; - margin: 0; - padding: 0; - cursor: text; - overflow: hidden; - height: auto !important; - height: 1%; - position: relative; -} -.chzn-container-multi .chzn-choices li { - float: left; - list-style: none; -} -.chzn-container-multi .chzn-choices .search-field { - white-space: nowrap; - margin: 0; - padding: 0; -} -.chzn-container-multi .chzn-choices .search-field input { - color: #666; - background: transparent !important; - border: 0 !important; - font-family: sans-serif; - font-size: 100%; - height: 15px; - padding: 5px; - margin: 1px 0; - outline: 0; - -webkit-box-shadow: none; - -moz-box-shadow : none; - -o-box-shadow : none; - box-shadow : none; -} -.chzn-container-multi .chzn-choices .search-field .default { - color: #999; -} -.chzn-container-multi .chzn-choices .search-choice { - -webkit-border-radius: 3px; - -moz-border-radius : 3px; - border-radius : 3px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; - background-color: #e4e4e4; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); - background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - -moz-box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - color: #333; - border: 1px solid #aaaaaa; - line-height: 13px; - padding: 3px 20px 3px 5px; - margin: 3px 0 3px 5px; - position: relative; - cursor: default; -} -.chzn-container-multi .chzn-choices .search-choice-focus { - background: #d4d4d4; -} -.chzn-container-multi .chzn-choices .search-choice .search-choice-close { - display: block; - position: absolute; - right: 3px; - top: 4px; - width: 12px; - height: 13px; - font-size: 1px; - background: url(chosen-sprite.png) right top no-repeat; -} -.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover { - background-position: right -11px; -} -.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close { - background-position: right -11px; -} -/* @end */ - -/* @group Results */ -.chzn-container .chzn-results { - margin: 0 4px 4px 0; - max-height: 240px; - padding: 0 0 0 4px; - position: relative; - overflow-x: hidden; - overflow-y: auto; -} -.chzn-container-multi .chzn-results { - margin: -1px 0 0; - padding: 0; -} -.chzn-container .chzn-results li { - display: none; - line-height: 15px; - padding: 5px 6px; - margin: 0; - list-style: none; -} -.chzn-container .chzn-results .active-result { - cursor: pointer; - display: list-item; -} -.chzn-container .chzn-results .highlighted { - background-color: #3875d7; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3875d7', endColorstr='#2a62bc', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); - background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -moz-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -o-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -ms-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: linear-gradient(top, #3875d7 20%, #2a62bc 90%); - color: #fff; -} -.chzn-container .chzn-results li em { - background: #feffde; - font-style: normal; -} -.chzn-container .chzn-results .highlighted em { - background: transparent; -} -.chzn-container .chzn-results .no-results { - background: #f4f4f4; - display: list-item; -} -.chzn-container .chzn-results .group-result { - cursor: default; - color: #999; - font-weight: bold; -} -.chzn-container .chzn-results .group-option { - padding-left: 15px; -} -.chzn-container-multi .chzn-drop .result-selected { - display: none; -} -.chzn-container .chzn-results-scroll { - background: white; - margin: 0 4px; - position: absolute; - text-align: center; - width: 321px; /* This should by dynamic with js */ - z-index: 1; -} -.chzn-container .chzn-results-scroll span { - display: inline-block; - height: 17px; - text-indent: -5000px; - width: 9px; -} -.chzn-container .chzn-results-scroll-down { - bottom: 0; -} -.chzn-container .chzn-results-scroll-down span { - background: url('chosen-sprite.png') no-repeat -4px -3px; -} -.chzn-container .chzn-results-scroll-up span { - background: url('chosen-sprite.png') no-repeat -22px -3px; -} -/* @end */ - -/* @group Active */ -.chzn-container-active .chzn-single { - -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); - -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); - -o-box-shadow : 0 0 5px rgba(0,0,0,.3); - box-shadow : 0 0 5px rgba(0,0,0,.3); - border: 1px solid #5897fb; -} -.chzn-container-active .chzn-single-with-drop { - border: 1px solid #aaa; - -webkit-box-shadow: 0 1px 0 #fff inset; - -moz-box-shadow : 0 1px 0 #fff inset; - -o-box-shadow : 0 1px 0 #fff inset; - box-shadow : 0 1px 0 #fff inset; - background-color: #eee; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); - background-image: -webkit-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -moz-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -o-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -ms-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: linear-gradient(top, #eeeeee 20%, #ffffff 80%); - -webkit-border-bottom-left-radius : 0; - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomleft : 0; - -moz-border-radius-bottomright: 0; - border-bottom-left-radius : 0; - border-bottom-right-radius: 0; -} -.chzn-container-active .chzn-single-with-drop div { - background: transparent; - border-left: none; -} -.chzn-container-active .chzn-single-with-drop div b { - background-position: -18px 1px; -} -.chzn-container-active .chzn-choices { - -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); - -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); - -o-box-shadow : 0 0 5px rgba(0,0,0,.3); - box-shadow : 0 0 5px rgba(0,0,0,.3); - border: 1px solid #5897fb; -} -.chzn-container-active .chzn-choices .search-field input { - color: #111 !important; -} -/* @end */ - -/* @group Disabled Support */ -.chzn-disabled { - cursor: default; - opacity:0.5 !important; -} -.chzn-disabled .chzn-single { - cursor: default; -} -.chzn-disabled .chzn-choices .search-choice .search-choice-close { - cursor: default; -} - -/* @group Right to Left */ -.chzn-rtl { text-align: right; } -.chzn-rtl .chzn-single { padding: 0 8px 0 0; overflow: visible; } -.chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; direction: rtl; } - -.chzn-rtl .chzn-single div { left: 3px; right: auto; } -.chzn-rtl .chzn-single abbr { - left: 26px; - right: auto; -} -.chzn-rtl .chzn-choices .search-field input { direction: rtl; } -.chzn-rtl .chzn-choices li { float: right; } -.chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; } -.chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; background-position: right top;} -.chzn-rtl.chzn-container-single .chzn-results { margin: 0 0 4px 4px; padding: 0 4px 0 0; } -.chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 15px; } -.chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; } -.chzn-rtl .chzn-search input { - background: #fff url('chosen-sprite.png') no-repeat -38px -22px; - background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%); - padding: 4px 5px 4px 20px; - direction: rtl; -} -/* @end */ diff --git a/3rdparty/css/chosen/chosen-sprite.png b/3rdparty/css/chosen/chosen-sprite.png deleted file mode 100644 index 9edce05a6a899eaf98481d12dddbc433331a01ee..0000000000000000000000000000000000000000 Binary files a/3rdparty/css/chosen/chosen-sprite.png and /dev/null differ diff --git a/3rdparty/css/chosen/chosen.css b/3rdparty/css/chosen/chosen.css deleted file mode 100755 index 89b5970e57ce65bfb44205f854f9b8d417ad33cd..0000000000000000000000000000000000000000 --- a/3rdparty/css/chosen/chosen.css +++ /dev/null @@ -1,392 +0,0 @@ -/* @group Base */ -.chzn-container { - font-size: 13px; - position: relative; - display: inline-block; - zoom: 1; - *display: inline; -} -.chzn-container .chzn-drop { - background: #fff; - border: 1px solid #aaa; - border-top: 0; - position: absolute; - top: 29px; - left: 0; - -webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15); - -moz-box-shadow : 0 4px 5px rgba(0,0,0,.15); - -o-box-shadow : 0 4px 5px rgba(0,0,0,.15); - box-shadow : 0 4px 5px rgba(0,0,0,.15); - z-index: 999; -} -/* @end */ - -/* @group Single Chosen */ -.chzn-container-single .chzn-single { - background-color: #ffffff; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); - background-image: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: -ms-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-image: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - -webkit-border-radius: 5px; - -moz-border-radius : 5px; - border-radius : 5px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; - border: 1px solid #aaaaaa; - -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - -moz-box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1); - display: block; - overflow: hidden; - white-space: nowrap; - position: relative; - height: 23px; - line-height: 24px; - padding: 0 0 0 8px; - color: #444444; - text-decoration: none; -} -.chzn-container-single .chzn-default { - color: #999; -} -.chzn-container-single .chzn-single span { - margin-right: 26px; - display: block; - overflow: hidden; - white-space: nowrap; - -o-text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - text-overflow: ellipsis; -} -.chzn-container-single .chzn-single abbr { - display: block; - position: absolute; - right: 26px; - top: 6px; - width: 12px; - height: 13px; - font-size: 1px; - background: url(chosen-sprite.png) right top no-repeat; -} -.chzn-container-single .chzn-single abbr:hover { - background-position: right -11px; -} -.chzn-container-single .chzn-single div { - position: absolute; - right: 0; - top: 0; - display: block; - height: 100%; - width: 18px; -} -.chzn-container-single .chzn-single div b { - background: url('chosen-sprite.png') no-repeat 0 0; - display: block; - width: 100%; - height: 100%; -} -.chzn-container-single .chzn-search { - padding: 3px 4px; - position: relative; - margin: 0; - white-space: nowrap; - z-index: 1010; -} -.chzn-container-single .chzn-search input { - background: #fff url('chosen-sprite.png') no-repeat 100% -22px; - background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%); - margin: 1px 0; - padding: 4px 20px 4px 5px; - outline: 0; - border: 1px solid #aaa; - font-family: sans-serif; - font-size: 1em; -} -.chzn-container-single .chzn-drop { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius : 0 0 4px 4px; - border-radius : 0 0 4px 4px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; -} -/* @end */ - -.chzn-container-single-nosearch .chzn-search input { - position: absolute; - left: -9000px; -} - -/* @group Multi Chosen */ -.chzn-container-multi .chzn-choices { - background-color: #fff; - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%); - border: 1px solid #aaa; - margin: 0; - padding: 0; - cursor: text; - overflow: hidden; - height: auto !important; - height: 1%; - position: relative; -} -.chzn-container-multi .chzn-choices li { - float: left; - list-style: none; -} -.chzn-container-multi .chzn-choices .search-field { - white-space: nowrap; - margin: 0; - padding: 0; -} -.chzn-container-multi .chzn-choices .search-field input { - color: #666; - background: transparent !important; - border: 0 !important; - font-family: sans-serif; - font-size: 100%; - height: 15px; - padding: 5px; - margin: 1px 0; - outline: 0; - -webkit-box-shadow: none; - -moz-box-shadow : none; - -o-box-shadow : none; - box-shadow : none; -} -.chzn-container-multi .chzn-choices .search-field .default { - color: #999; -} -.chzn-container-multi .chzn-choices .search-choice { - -webkit-border-radius: 3px; - -moz-border-radius : 3px; - border-radius : 3px; - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; - background-color: #e4e4e4; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); - background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - -moz-box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05); - color: #333; - border: 1px solid #aaaaaa; - line-height: 13px; - padding: 3px 20px 3px 5px; - margin: 3px 0 3px 5px; - position: relative; - cursor: default; -} -.chzn-container-multi .chzn-choices .search-choice-focus { - background: #d4d4d4; -} -.chzn-container-multi .chzn-choices .search-choice .search-choice-close { - display: block; - position: absolute; - right: 3px; - top: 4px; - width: 12px; - height: 13px; - font-size: 1px; - background: url(chosen-sprite.png) right top no-repeat; -} -.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover { - background-position: right -11px; -} -.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close { - background-position: right -11px; -} -/* @end */ - -/* @group Results */ -.chzn-container .chzn-results { - margin: 0 4px 4px 0; - max-height: 240px; - padding: 0 0 0 4px; - position: relative; - overflow-x: hidden; - overflow-y: auto; -} -.chzn-container-multi .chzn-results { - margin: -1px 0 0; - padding: 0; -} -.chzn-container .chzn-results li { - display: none; - line-height: 15px; - padding: 5px 6px; - margin: 0; - list-style: none; -} -.chzn-container .chzn-results .active-result { - cursor: pointer; - display: list-item; -} -.chzn-container .chzn-results .highlighted { - background-color: #3875d7; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3875d7', endColorstr='#2a62bc', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); - background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -moz-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -o-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: -ms-linear-gradient(top, #3875d7 20%, #2a62bc 90%); - background-image: linear-gradient(top, #3875d7 20%, #2a62bc 90%); - color: #fff; -} -.chzn-container .chzn-results li em { - background: #feffde; - font-style: normal; -} -.chzn-container .chzn-results .highlighted em { - background: transparent; -} -.chzn-container .chzn-results .no-results { - background: #f4f4f4; - display: list-item; -} -.chzn-container .chzn-results .group-result { - cursor: default; - color: #999; - font-weight: bold; -} -.chzn-container .chzn-results .group-option { - padding-left: 15px; -} -.chzn-container-multi .chzn-drop .result-selected { - display: none; -} -.chzn-container .chzn-results-scroll { - background: white; - margin: 0 4px; - position: absolute; - text-align: center; - width: 321px; /* This should by dynamic with js */ - z-index: 1; -} -.chzn-container .chzn-results-scroll span { - display: inline-block; - height: 17px; - text-indent: -5000px; - width: 9px; -} -.chzn-container .chzn-results-scroll-down { - bottom: 0; -} -.chzn-container .chzn-results-scroll-down span { - background: url('chosen-sprite.png') no-repeat -4px -3px; -} -.chzn-container .chzn-results-scroll-up span { - background: url('chosen-sprite.png') no-repeat -22px -3px; -} -/* @end */ - -/* @group Active */ -.chzn-container-active .chzn-single { - -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); - -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); - -o-box-shadow : 0 0 5px rgba(0,0,0,.3); - box-shadow : 0 0 5px rgba(0,0,0,.3); - border: 1px solid #5897fb; -} -.chzn-container-active .chzn-single-with-drop { - border: 1px solid #aaa; - -webkit-box-shadow: 0 1px 0 #fff inset; - -moz-box-shadow : 0 1px 0 #fff inset; - -o-box-shadow : 0 1px 0 #fff inset; - box-shadow : 0 1px 0 #fff inset; - background-color: #eee; - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 ); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); - background-image: -webkit-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -moz-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -o-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: -ms-linear-gradient(top, #eeeeee 20%, #ffffff 80%); - background-image: linear-gradient(top, #eeeeee 20%, #ffffff 80%); - -webkit-border-bottom-left-radius : 0; - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomleft : 0; - -moz-border-radius-bottomright: 0; - border-bottom-left-radius : 0; - border-bottom-right-radius: 0; -} -.chzn-container-active .chzn-single-with-drop div { - background: transparent; - border-left: none; -} -.chzn-container-active .chzn-single-with-drop div b { - background-position: -18px 1px; -} -.chzn-container-active .chzn-choices { - -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); - -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); - -o-box-shadow : 0 0 5px rgba(0,0,0,.3); - box-shadow : 0 0 5px rgba(0,0,0,.3); - border: 1px solid #5897fb; -} -.chzn-container-active .chzn-choices .search-field input { - color: #111 !important; -} -/* @end */ - -/* @group Disabled Support */ -.chzn-disabled { - cursor: default; - opacity:0.5 !important; -} -.chzn-disabled .chzn-single { - cursor: default; -} -.chzn-disabled .chzn-choices .search-choice .search-choice-close { - cursor: default; -} - -/* @group Right to Left */ -.chzn-rtl { text-align: right; } -.chzn-rtl .chzn-single { padding: 0 8px 0 0; overflow: visible; } -.chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; direction: rtl; } - -.chzn-rtl .chzn-single div { left: 3px; right: auto; } -.chzn-rtl .chzn-single abbr { - left: 26px; - right: auto; -} -.chzn-rtl .chzn-choices .search-field input { direction: rtl; } -.chzn-rtl .chzn-choices li { float: right; } -.chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; } -.chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; background-position: right top;} -.chzn-rtl.chzn-container-single .chzn-results { margin: 0 0 4px 4px; padding: 0 4px 0 0; } -.chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 15px; } -.chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; } -.chzn-rtl .chzn-search input { - background: #fff url('chosen-sprite.png') no-repeat -38px -22px; - background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); - background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%); - background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%); - padding: 4px 5px 4px 20px; - direction: rtl; -} -/* @end */ diff --git a/3rdparty/fullcalendar/GPL-LICENSE.txt b/3rdparty/fullcalendar/GPL-LICENSE.txt deleted file mode 100644 index 11dddd00ef0e91a0bce53b034d6b5b318a84e690..0000000000000000000000000000000000000000 --- a/3rdparty/fullcalendar/GPL-LICENSE.txt +++ /dev/null @@ -1,278 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. diff --git a/3rdparty/fullcalendar/MIT-LICENSE.txt b/3rdparty/fullcalendar/MIT-LICENSE.txt deleted file mode 100644 index 46d475449640479223cb5d7eb6e8c18e9ae7c6b7..0000000000000000000000000000000000000000 --- a/3rdparty/fullcalendar/MIT-LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2009 Adam Shaw - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/3rdparty/fullcalendar/css/fullcalendar.css b/3rdparty/fullcalendar/css/fullcalendar.css deleted file mode 100644 index 1f02ba428eaaaa39682a6cee9791ce3b8cd6b976..0000000000000000000000000000000000000000 --- a/3rdparty/fullcalendar/css/fullcalendar.css +++ /dev/null @@ -1,618 +0,0 @@ -/* - * FullCalendar v1.5.4 Stylesheet - * - * Copyright (c) 2011 Adam Shaw - * Dual licensed under the MIT and GPL licenses, located in - * MIT-LICENSE.txt and GPL-LICENSE.txt respectively. - * - * Date: Tue Sep 4 23:38:33 2012 -0700 - * - */ - - -.fc { - direction: ltr; - text-align: left; - } - -.fc table { - border-collapse: collapse; - border-spacing: 0; - } - -html .fc, -.fc table { - font-size: 1em; - } - -.fc td, -.fc th { - padding: 0; - vertical-align: top; - } - - - -/* Header -------------------------------------------------------------------------*/ - -.fc-header td { - white-space: nowrap; - } - -.fc-header-left { - width: 25%; - text-align: left; - } - -.fc-header-center { - text-align: center; - } - -.fc-header-right { - width: 25%; - text-align: right; - } - -.fc-header-title { - display: inline-block; - vertical-align: top; - } - -.fc-header-title h2 { - margin-top: 0; - white-space: nowrap; - } - -.fc .fc-header-space { - padding-left: 10px; - } - -.fc-header .fc-button { - margin-bottom: 1em; - vertical-align: top; - } - -/* buttons edges butting together */ - -.fc-header .fc-button { - margin-right: -1px; - } - -.fc-header .fc-corner-right { - margin-right: 1px; /* back to normal */ - } - -.fc-header .ui-corner-right { - margin-right: 0; /* back to normal */ - } - -/* button layering (for border precedence) */ - -.fc-header .fc-state-hover, -.fc-header .ui-state-hover { - z-index: 2; - } - -.fc-header .fc-state-down { - z-index: 3; - } - -.fc-header .fc-state-active, -.fc-header .ui-state-active { - z-index: 4; - } - - - -/* Content -------------------------------------------------------------------------*/ - -.fc-content { - clear: both; - } - -.fc-view { - width: 100%; /* needed for view switching (when view is absolute) */ - overflow: hidden; - } - - - -/* Cell Styles -------------------------------------------------------------------------*/ - -.fc-widget-header, /* , usually */ -.fc-widget-content { /* , usually */ - border: 1px solid #ccc; - } - -.fc-state-highlight { /* today cell */ /* TODO: add .fc-today to */ - background: #ffc; - } - -.fc-cell-overlay { /* semi-transparent rectangle while dragging */ - background: #9cf; - opacity: .2; - filter: alpha(opacity=20); /* for IE */ - } - - - -/* Buttons -------------------------------------------------------------------------*/ - -.fc-button { - position: relative; - display: inline-block; - cursor: pointer; - } - -.fc-state-default { /* non-theme */ - border-style: solid; - border-width: 1px 0; - } - -.fc-button-inner { - position: relative; - float: left; - overflow: hidden; - } - -.fc-state-default .fc-button-inner { /* non-theme */ - border-style: solid; - border-width: 0 1px; - } - -.fc-button-content { - position: relative; - float: left; - height: 1.9em; - line-height: 1.9em; - padding: 0 .6em; - white-space: nowrap; - } - -/* icon (for jquery ui) */ - -.fc-button-content .fc-icon-wrap { - position: relative; - float: left; - top: 50%; - } - -.fc-button-content .ui-icon { - position: relative; - float: left; - margin-top: -50%; - *margin-top: 0; - *top: -50%; - } - -/* gloss effect */ - -.fc-state-default .fc-button-effect { - position: absolute; - top: 50%; - left: 0; - } - -.fc-state-default .fc-button-effect span { - position: absolute; - top: -100px; - left: 0; - width: 500px; - height: 100px; - border-width: 100px 0 0 1px; - border-style: solid; - border-color: #fff; - background: #444; - opacity: .09; - filter: alpha(opacity=9); - } - -/* button states (determines colors) */ - -.fc-state-default, -.fc-state-default .fc-button-inner { - border-style: solid; - border-color: #ccc #bbb #aaa; - background: #F3F3F3; - color: #000; - } - -.fc-state-hover, -.fc-state-hover .fc-button-inner { - border-color: #999; - } - -.fc-state-down, -.fc-state-down .fc-button-inner { - border-color: #555; - background: #777; - } - -.fc-state-active, -.fc-state-active .fc-button-inner { - border-color: #555; - background: #777; - color: #fff; - } - -.fc-state-disabled, -.fc-state-disabled .fc-button-inner { - color: #999; - border-color: #ddd; - } - -.fc-state-disabled { - cursor: default; - } - -.fc-state-disabled .fc-button-effect { - display: none; - } - - - -/* Global Event Styles -------------------------------------------------------------------------*/ - -.fc-event { - border-style: solid; - border-width: 0; - font-size: .85em; - cursor: default; - } - -a.fc-event, -.fc-event-draggable { - cursor: pointer; - } - -a.fc-event { - text-decoration: none; - } - -.fc-rtl .fc-event { - text-align: right; - } - -.fc-event-skin { - border-color: #36c; /* default BORDER color */ - background-color: #36c; /* default BACKGROUND color */ - color: #fff; /* default TEXT color */ - } - -.fc-event-inner { - position: relative; - width: 100%; - height: 100%; - border-style: solid; - border-width: 0; - overflow: hidden; - } - -.fc-event-time, -.fc-event-title { - padding: 0 1px; - } - -.fc .ui-resizable-handle { /*** TODO: don't use ui-resizable anymore, change class ***/ - display: block; - position: absolute; - z-index: 99999; - overflow: hidden; /* hacky spaces (IE6/7) */ - font-size: 300%; /* */ - line-height: 50%; /* */ - } - - - -/* Horizontal Events -------------------------------------------------------------------------*/ - -.fc-event-hori { - border-width: 1px 0; - margin-bottom: 1px; - } - -/* resizable */ - -.fc-event-hori .ui-resizable-e { - top: 0 !important; /* importants override pre jquery ui 1.7 styles */ - right: -3px !important; - width: 7px !important; - height: 100% !important; - cursor: e-resize; - } - -.fc-event-hori .ui-resizable-w { - top: 0 !important; - left: -3px !important; - width: 7px !important; - height: 100% !important; - cursor: w-resize; - } - -.fc-event-hori .ui-resizable-handle { - _padding-bottom: 14px; /* IE6 had 0 height */ - } - - - -/* Fake Rounded Corners (for buttons and events) -------------------------------------------------------------*/ - -.fc-corner-left { - margin-left: 1px; - } - -.fc-corner-left .fc-button-inner, -.fc-corner-left .fc-event-inner { - margin-left: -1px; - } - -.fc-corner-right { - margin-right: 1px; - } - -.fc-corner-right .fc-button-inner, -.fc-corner-right .fc-event-inner { - margin-right: -1px; - } - -.fc-corner-top { - margin-top: 1px; - } - -.fc-corner-top .fc-event-inner { - margin-top: -1px; - } - -.fc-corner-bottom { - margin-bottom: 1px; - } - -.fc-corner-bottom .fc-event-inner { - margin-bottom: -1px; - } - - - -/* Fake Rounded Corners SPECIFICALLY FOR EVENTS ------------------------------------------------------------------*/ - -.fc-corner-left .fc-event-inner { - border-left-width: 1px; - } - -.fc-corner-right .fc-event-inner { - border-right-width: 1px; - } - -.fc-corner-top .fc-event-inner { - border-top-width: 1px; - } - -.fc-corner-bottom .fc-event-inner { - border-bottom-width: 1px; - } - - - -/* Reusable Separate-border Table -------------------------------------------------------------*/ - -table.fc-border-separate { - border-collapse: separate; - } - -.fc-border-separate th, -.fc-border-separate td { - border-width: 1px 0 0 1px; - } - -.fc-border-separate th.fc-last, -.fc-border-separate td.fc-last { - border-right-width: 1px; - } - -.fc-border-separate tr.fc-last th, -.fc-border-separate tr.fc-last td { - border-bottom-width: 1px; - } - -.fc-border-separate tbody tr.fc-first td, -.fc-border-separate tbody tr.fc-first th { - border-top-width: 0; - } - - - -/* Month View, Basic Week View, Basic Day View -------------------------------------------------------------------------*/ - -.fc-grid th { - text-align: center; - } - -.fc-grid .fc-day-number { - float: right; - padding: 0 2px; - } - -.fc-grid .fc-other-month .fc-day-number { - opacity: 0.3; - filter: alpha(opacity=30); /* for IE */ - /* opacity with small font can sometimes look too faded - might want to set the 'color' property instead - making day-numbers bold also fixes the problem */ - } - -.fc-grid .fc-day-content { - clear: both; - padding: 2px 2px 1px; /* distance between events and day edges */ - } - -/* event styles */ - -.fc-grid .fc-event-time { - font-weight: bold; - } - -/* right-to-left */ - -.fc-rtl .fc-grid .fc-day-number { - float: left; - } - -.fc-rtl .fc-grid .fc-event-time { - float: right; - } - - - -/* Agenda Week View, Agenda Day View -------------------------------------------------------------------------*/ - -.fc-agenda table { - border-collapse: separate; - } - -.fc-agenda-days th { - text-align: center; - } - -.fc-agenda .fc-agenda-axis { - width: 50px; - padding: 0 4px; - vertical-align: middle; - text-align: right; - white-space: nowrap; - font-weight: normal; - } - -.fc-agenda .fc-day-content { - padding: 2px 2px 1px; - } - -/* make axis border take precedence */ - -.fc-agenda-days .fc-agenda-axis { - border-right-width: 1px; - } - -.fc-agenda-days .fc-col0 { - border-left-width: 0; - } - -/* all-day area */ - -.fc-agenda-allday th { - border-width: 0 1px; - } - -.fc-agenda-allday .fc-day-content { - min-height: 34px; /* TODO: doesnt work well in quirksmode */ - _height: 34px; - } - -/* divider (between all-day and slots) */ - -.fc-agenda-divider-inner { - height: 2px; - overflow: hidden; - } - -.fc-widget-header .fc-agenda-divider-inner { - background: #eee; - } - -/* slot rows */ - -.fc-agenda-slots th { - border-width: 1px 1px 0; - } - -.fc-agenda-slots td { - border-width: 1px 0 0; - background: none; - } - -.fc-agenda-slots td div { - height: 20px; - } - -.fc-agenda-slots tr.fc-slot0 th, -.fc-agenda-slots tr.fc-slot0 td { - border-top-width: 0; - } - -.fc-agenda-slots tr.fc-minor th, -.fc-agenda-slots tr.fc-minor td { - border-top-style: dotted; - } - -.fc-agenda-slots tr.fc-minor th.ui-widget-header { - *border-top-style: solid; /* doesn't work with background in IE6/7 */ - } - - - -/* Vertical Events -------------------------------------------------------------------------*/ - -.fc-event-vert { - border-width: 0 1px; - } - -.fc-event-vert .fc-event-head, -.fc-event-vert .fc-event-content { - position: relative; - z-index: 2; - width: 100%; - overflow: hidden; - } - -.fc-event-vert .fc-event-time { - white-space: nowrap; - font-size: 10px; - } - -.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */ - position: absolute; - z-index: 1; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: #fff; - opacity: .3; - filter: alpha(opacity=30); - } - -.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */ -.fc-select-helper .fc-event-bg { - display: none\9; /* for IE6/7/8. nested opacity filters while dragging don't work */ - } - -/* resizable */ - -.fc-event-vert .ui-resizable-s { - bottom: 0 !important; /* importants override pre jquery ui 1.7 styles */ - width: 100% !important; - height: 8px !important; - overflow: hidden !important; - line-height: 8px !important; - font-size: 11px !important; - font-family: monospace; - text-align: center; - cursor: s-resize; - } - -.fc-agenda .ui-resizable-resizing { /* TODO: better selector */ - _overflow: hidden; - } - - diff --git a/3rdparty/fullcalendar/css/fullcalendar.print.css b/3rdparty/fullcalendar/css/fullcalendar.print.css deleted file mode 100644 index 227b80e0bca3acbe2fcaf1429e64cf2eba62929e..0000000000000000000000000000000000000000 --- a/3rdparty/fullcalendar/css/fullcalendar.print.css +++ /dev/null @@ -1,61 +0,0 @@ -/* - * FullCalendar v1.5.4 Print Stylesheet - * - * Include this stylesheet on your page to get a more printer-friendly calendar. - * When including this stylesheet, use the media='print' attribute of the tag. - * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. - * - * Copyright (c) 2011 Adam Shaw - * Dual licensed under the MIT and GPL licenses, located in - * MIT-LICENSE.txt and GPL-LICENSE.txt respectively. - * - * Date: Tue Sep 4 23:38:33 2012 -0700 - * - */ - - - /* Events ------------------------------------------------------*/ - -.fc-event-skin { - background: none !important; - color: #000 !important; - } - -/* horizontal events */ - -.fc-event-hori { - border-width: 0 0 1px 0 !important; - border-bottom-style: dotted !important; - border-bottom-color: #000 !important; - padding: 1px 0 0 0 !important; - } - -.fc-event-hori .fc-event-inner { - border-width: 0 !important; - padding: 0 1px !important; - } - -/* vertical events */ - -.fc-event-vert { - border-width: 0 0 0 1px !important; - border-left-style: dotted !important; - border-left-color: #000 !important; - padding: 0 1px 0 0 !important; - } - -.fc-event-vert .fc-event-inner { - border-width: 0 !important; - padding: 1px 0 !important; - } - -.fc-event-bg { - display: none !important; - } - -.fc-event .ui-resizable-handle { - display: none !important; - } - - diff --git a/3rdparty/fullcalendar/js/fullcalendar.js b/3rdparty/fullcalendar/js/fullcalendar.js deleted file mode 100644 index d59de77c844cb574f4c2d7cd74dea49448decea8..0000000000000000000000000000000000000000 --- a/3rdparty/fullcalendar/js/fullcalendar.js +++ /dev/null @@ -1,5220 +0,0 @@ -/** - * @preserve - * FullCalendar v1.5.4 - * http://arshaw.com/fullcalendar/ - * - * Use fullcalendar.css for basic styling. - * For event drag & drop, requires jQuery UI draggable. - * For event resizing, requires jQuery UI resizable. - * - * Copyright (c) 2011 Adam Shaw - * Dual licensed under the MIT and GPL licenses, located in - * MIT-LICENSE.txt and GPL-LICENSE.txt respectively. - * - * Date: Tue Sep 4 23:38:33 2012 -0700 - * - */ - -(function($, undefined) { - - -var defaults = { - - // display - defaultView: 'month', - aspectRatio: 1.35, - header: { - left: 'title', - center: '', - right: 'today prev,next' - }, - weekends: true, - - // editing - //editable: false, - //disableDragging: false, - //disableResizing: false, - - allDayDefault: true, - ignoreTimezone: true, - - // event ajax - lazyFetching: true, - startParam: 'start', - endParam: 'end', - - // time formats - titleFormat: { - month: 'MMMM yyyy', - week: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", - day: 'dddd, MMM d, yyyy' - }, - columnFormat: { - month: 'ddd', - week: 'ddd M/d', - day: 'dddd M/d' - }, - timeFormat: { // for event elements - '': 'h(:mm)t' // default - }, - - // locale - isRTL: false, - firstDay: 0, - monthNames: ['January','February','March','April','May','June','July','August','September','October','November','December'], - monthNamesShort: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'], - dayNames: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], - dayNamesShort: ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'], - buttonText: { - prev: ' ◄ ', - next: ' ► ', - prevYear: ' << ', - nextYear: ' >> ', - today: 'today', - month: 'month', - week: 'week', - day: 'day' - }, - - // jquery-ui theming - theme: false, - buttonIcons: { - prev: 'circle-triangle-w', - next: 'circle-triangle-e' - }, - - //selectable: false, - unselectAuto: true, - - dropAccept: '*' - -}; - -// right-to-left defaults -var rtlDefaults = { - header: { - left: 'next,prev today', - center: '', - right: 'title' - }, - buttonText: { - prev: ' ► ', - next: ' ◄ ', - prevYear: ' >> ', - nextYear: ' << ' - }, - buttonIcons: { - prev: 'circle-triangle-e', - next: 'circle-triangle-w' - } -}; - - - -var fc = $.fullCalendar = { version: "1.5.4" }; -var fcViews = fc.views = {}; - - -$.fn.fullCalendar = function(options) { - - - // method calling - if (typeof options == 'string') { - var args = Array.prototype.slice.call(arguments, 1); - var res; - this.each(function() { - var calendar = $.data(this, 'fullCalendar'); - if (calendar && $.isFunction(calendar[options])) { - var r = calendar[options].apply(calendar, args); - if (res === undefined) { - res = r; - } - if (options == 'destroy') { - $.removeData(this, 'fullCalendar'); - } - } - }); - if (res !== undefined) { - return res; - } - return this; - } - - - // would like to have this logic in EventManager, but needs to happen before options are recursively extended - var eventSources = options.eventSources || []; - delete options.eventSources; - if (options.events) { - eventSources.push(options.events); - delete options.events; - } - - - options = $.extend(true, {}, - defaults, - (options.isRTL || options.isRTL===undefined && defaults.isRTL) ? rtlDefaults : {}, - options - ); - - - this.each(function(i, _element) { - var element = $(_element); - var calendar = new Calendar(element, options, eventSources); - element.data('fullCalendar', calendar); // TODO: look into memory leak implications - calendar.render(); - }); - - - return this; - -}; - - -// function for adding/overriding defaults -function setDefaults(d) { - $.extend(true, defaults, d); -} - - - - -function Calendar(element, options, eventSources) { - var t = this; - - - // exports - t.options = options; - t.render = render; - t.destroy = destroy; - t.refetchEvents = refetchEvents; - t.reportEvents = reportEvents; - t.reportEventChange = reportEventChange; - t.rerenderEvents = rerenderEvents; - t.changeView = changeView; - t.select = select; - t.unselect = unselect; - t.prev = prev; - t.next = next; - t.prevYear = prevYear; - t.nextYear = nextYear; - t.today = today; - t.gotoDate = gotoDate; - t.incrementDate = incrementDate; - t.formatDate = function(format, date) { return formatDate(format, date, options) }; - t.formatDates = function(format, date1, date2) { return formatDates(format, date1, date2, options) }; - t.getDate = getDate; - t.getView = getView; - t.option = option; - t.trigger = trigger; - - - // imports - EventManager.call(t, options, eventSources); - var isFetchNeeded = t.isFetchNeeded; - var fetchEvents = t.fetchEvents; - - - // locals - var _element = element[0]; - var header; - var headerElement; - var content; - var tm; // for making theme classes - var currentView; - var viewInstances = {}; - var elementOuterWidth; - var suggestedViewHeight; - var absoluteViewElement; - var resizeUID = 0; - var ignoreWindowResize = 0; - var date = new Date(); - var events = []; - var _dragElement; - - - - /* Main Rendering - -----------------------------------------------------------------------------*/ - - - setYMD(date, options.year, options.month, options.date); - - - function render(inc) { - if (!content) { - initialRender(); - }else{ - calcSize(); - markSizesDirty(); - markEventsDirty(); - renderView(inc); - } - } - - - function initialRender() { - tm = options.theme ? 'ui' : 'fc'; - element.addClass('fc'); - if (options.isRTL) { - element.addClass('fc-rtl'); - } - if (options.theme) { - element.addClass('ui-widget'); - } - content = $("
    ") - .prependTo(element); - header = new Header(t, options); - headerElement = header.render(); - if (headerElement) { - element.prepend(headerElement); - } - changeView(options.defaultView); - $(window).resize(windowResize); - // needed for IE in a 0x0 iframe, b/c when it is resized, never triggers a windowResize - if (!bodyVisible()) { - lateRender(); - } - } - - - // called when we know the calendar couldn't be rendered when it was initialized, - // but we think it's ready now - function lateRender() { - setTimeout(function() { // IE7 needs this so dimensions are calculated correctly - if (!currentView.start && bodyVisible()) { // !currentView.start makes sure this never happens more than once - renderView(); - } - },0); - } - - - function destroy() { - $(window).unbind('resize', windowResize); - header.destroy(); - content.remove(); - element.removeClass('fc fc-rtl ui-widget'); - } - - - - function elementVisible() { - return _element.offsetWidth !== 0; - } - - - function bodyVisible() { - return $('body')[0].offsetWidth !== 0; - } - - - - /* View Rendering - -----------------------------------------------------------------------------*/ - - // TODO: improve view switching (still weird transition in IE, and FF has whiteout problem) - - function changeView(newViewName) { - if (!currentView || newViewName != currentView.name) { - ignoreWindowResize++; // because setMinHeight might change the height before render (and subsequently setSize) is reached - - unselect(); - - var oldView = currentView; - var newViewElement; - - if (oldView) { - (oldView.beforeHide || noop)(); // called before changing min-height. if called after, scroll state is reset (in Opera) - setMinHeight(content, content.height()); - oldView.element.hide(); - }else{ - setMinHeight(content, 1); // needs to be 1 (not 0) for IE7, or else view dimensions miscalculated - } - content.css('overflow', 'hidden'); - - currentView = viewInstances[newViewName]; - if (currentView) { - currentView.element.show(); - }else{ - currentView = viewInstances[newViewName] = new fcViews[newViewName]( - newViewElement = absoluteViewElement = - $("
    ") - .appendTo(content), - t // the calendar object - ); - } - - if (oldView) { - header.deactivateButton(oldView.name); - } - header.activateButton(newViewName); - - renderView(); // after height has been set, will make absoluteViewElement's position=relative, then set to null - - content.css('overflow', ''); - if (oldView) { - setMinHeight(content, 1); - } - - if (!newViewElement) { - (currentView.afterShow || noop)(); // called after setting min-height/overflow, so in final scroll state (for Opera) - } - - ignoreWindowResize--; - } - } - - - - function renderView(inc) { - if (elementVisible()) { - ignoreWindowResize++; // because renderEvents might temporarily change the height before setSize is reached - - unselect(); - - if (suggestedViewHeight === undefined) { - calcSize(); - } - - var forceEventRender = false; - if (!currentView.start || inc || date < currentView.start || date >= currentView.end) { - // view must render an entire new date range (and refetch/render events) - currentView.render(date, inc || 0); // responsible for clearing events - setSize(true); - forceEventRender = true; - } - else if (currentView.sizeDirty) { - // view must resize (and rerender events) - currentView.clearEvents(); - setSize(); - forceEventRender = true; - } - else if (currentView.eventsDirty) { - currentView.clearEvents(); - forceEventRender = true; - } - currentView.sizeDirty = false; - currentView.eventsDirty = false; - updateEvents(forceEventRender); - - elementOuterWidth = element.outerWidth(); - - header.updateTitle(currentView.title); - var today = new Date(); - if (today >= currentView.start && today < currentView.end) { - header.disableButton('today'); - }else{ - header.enableButton('today'); - } - - ignoreWindowResize--; - currentView.trigger('viewDisplay', _element); - } - } - - - - /* Resizing - -----------------------------------------------------------------------------*/ - - - function updateSize() { - markSizesDirty(); - if (elementVisible()) { - calcSize(); - setSize(); - unselect(); - currentView.clearEvents(); - currentView.renderEvents(events); - currentView.sizeDirty = false; - } - } - - - function markSizesDirty() { - $.each(viewInstances, function(i, inst) { - inst.sizeDirty = true; - }); - } - - - function calcSize() { - if (options.contentHeight) { - suggestedViewHeight = options.contentHeight; - } - else if (options.height) { - suggestedViewHeight = options.height - (headerElement ? headerElement.height() : 0) - vsides(content); - } - else { - suggestedViewHeight = Math.round(content.width() / Math.max(options.aspectRatio, .5)); - } - } - - - function setSize(dateChanged) { // todo: dateChanged? - ignoreWindowResize++; - currentView.setHeight(suggestedViewHeight, dateChanged); - if (absoluteViewElement) { - absoluteViewElement.css('position', 'relative'); - absoluteViewElement = null; - } - currentView.setWidth(content.width(), dateChanged); - ignoreWindowResize--; - } - - - function windowResize() { - if (!ignoreWindowResize) { - if (currentView.start) { // view has already been rendered - var uid = ++resizeUID; - setTimeout(function() { // add a delay - if (uid == resizeUID && !ignoreWindowResize && elementVisible()) { - if (elementOuterWidth != (elementOuterWidth = element.outerWidth())) { - ignoreWindowResize++; // in case the windowResize callback changes the height - updateSize(); - currentView.trigger('windowResize', _element); - ignoreWindowResize--; - } - } - }, 200); - }else{ - // calendar must have been initialized in a 0x0 iframe that has just been resized - lateRender(); - } - } - } - - - - /* Event Fetching/Rendering - -----------------------------------------------------------------------------*/ - - - // fetches events if necessary, rerenders events if necessary (or if forced) - function updateEvents(forceRender) { - if (!options.lazyFetching || isFetchNeeded(currentView.visStart, currentView.visEnd)) { - refetchEvents(); - } - else if (forceRender) { - rerenderEvents(); - } - } - - - function refetchEvents() { - fetchEvents(currentView.visStart, currentView.visEnd); // will call reportEvents - } - - - // called when event data arrives - function reportEvents(_events) { - events = _events; - rerenderEvents(); - } - - - // called when a single event's data has been changed - function reportEventChange(eventID) { - rerenderEvents(eventID); - } - - - // attempts to rerenderEvents - function rerenderEvents(modifiedEventID) { - markEventsDirty(); - if (elementVisible()) { - currentView.clearEvents(); - currentView.renderEvents(events, modifiedEventID); - currentView.eventsDirty = false; - } - } - - - function markEventsDirty() { - $.each(viewInstances, function(i, inst) { - inst.eventsDirty = true; - }); - } - - - - /* Selection - -----------------------------------------------------------------------------*/ - - - function select(start, end, allDay) { - currentView.select(start, end, allDay===undefined ? true : allDay); - } - - - function unselect() { // safe to be called before renderView - if (currentView) { - currentView.unselect(); - } - } - - - - /* Date - -----------------------------------------------------------------------------*/ - - - function prev() { - renderView(-1); - } - - - function next() { - renderView(1); - } - - - function prevYear() { - addYears(date, -1); - renderView(); - } - - - function nextYear() { - addYears(date, 1); - renderView(); - } - - - function today() { - date = new Date(); - renderView(); - } - - - function gotoDate(year, month, dateOfMonth) { - if (year instanceof Date) { - date = cloneDate(year); // provided 1 argument, a Date - }else{ - setYMD(date, year, month, dateOfMonth); - } - renderView(); - } - - - function incrementDate(years, months, days) { - if (years !== undefined) { - addYears(date, years); - } - if (months !== undefined) { - addMonths(date, months); - } - if (days !== undefined) { - addDays(date, days); - } - renderView(); - } - - - function getDate() { - return cloneDate(date); - } - - - - /* Misc - -----------------------------------------------------------------------------*/ - - - function getView() { - return currentView; - } - - - function option(name, value) { - if (value === undefined) { - return options[name]; - } - if (name == 'height' || name == 'contentHeight' || name == 'aspectRatio') { - options[name] = value; - updateSize(); - } - } - - - function trigger(name, thisObj) { - if (options[name]) { - return options[name].apply( - thisObj || _element, - Array.prototype.slice.call(arguments, 2) - ); - } - } - - - - /* External Dragging - ------------------------------------------------------------------------*/ - - if (options.droppable) { - $(document) - .bind('dragstart', function(ev, ui) { - var _e = ev.target; - var e = $(_e); - if (!e.parents('.fc').length) { // not already inside a calendar - var accept = options.dropAccept; - if ($.isFunction(accept) ? accept.call(_e, e) : e.is(accept)) { - _dragElement = _e; - currentView.dragStart(_dragElement, ev, ui); - } - } - }) - .bind('dragstop', function(ev, ui) { - if (_dragElement) { - currentView.dragStop(_dragElement, ev, ui); - _dragElement = null; - } - }); - } - - -} - -function Header(calendar, options) { - var t = this; - - - // exports - t.render = render; - t.destroy = destroy; - t.updateTitle = updateTitle; - t.activateButton = activateButton; - t.deactivateButton = deactivateButton; - t.disableButton = disableButton; - t.enableButton = enableButton; - - - // locals - var element = $([]); - var tm; - - - - function render() { - tm = options.theme ? 'ui' : 'fc'; - var sections = options.header; - if (sections) { - element = $("") - .append( - $("") - .append(renderSection('left')) - .append(renderSection('center')) - .append(renderSection('right')) - ); - return element; - } - } - - - function destroy() { - element.remove(); - } - - - function renderSection(position) { - var e = $("" + - ""; - for (i=0; i"; // need fc- for setDayID - } - s += - "" + - "" + - ""; - for (i=0; i"; - for (j=0; j" + // need fc- for setDayID - "
    " + - (showNumbers ? - "
    " : - '' - ) + - "
    " + - "
     
    " + - "
    " + - "
    " + - ""; - } - s += - ""; - } - s += - "
    " + - "
    "); - var buttonStr = options.header[position]; - if (buttonStr) { - $.each(buttonStr.split(' '), function(i) { - if (i > 0) { - e.append(""); - } - var prevButton; - $.each(this.split(','), function(j, buttonName) { - if (buttonName == 'title') { - e.append("

     

    "); - if (prevButton) { - prevButton.addClass(tm + '-corner-right'); - } - prevButton = null; - }else{ - var buttonClick; - if (calendar[buttonName]) { - buttonClick = calendar[buttonName]; // calendar method - } - else if (fcViews[buttonName]) { - buttonClick = function() { - button.removeClass(tm + '-state-hover'); // forget why - calendar.changeView(buttonName); - }; - } - if (buttonClick) { - var icon = options.theme ? smartProperty(options.buttonIcons, buttonName) : null; // why are we using smartProperty here? - var text = smartProperty(options.buttonText, buttonName); // why are we using smartProperty here? - var button = $( - "" + - "" + - "" + - (icon ? - "" + - "" + - "" : - text - ) + - "" + - "" + - "" + - "" - ); - if (button) { - button - .click(function() { - if (!button.hasClass(tm + '-state-disabled')) { - buttonClick(); - } - }) - .mousedown(function() { - button - .not('.' + tm + '-state-active') - .not('.' + tm + '-state-disabled') - .addClass(tm + '-state-down'); - }) - .mouseup(function() { - button.removeClass(tm + '-state-down'); - }) - .hover( - function() { - button - .not('.' + tm + '-state-active') - .not('.' + tm + '-state-disabled') - .addClass(tm + '-state-hover'); - }, - function() { - button - .removeClass(tm + '-state-hover') - .removeClass(tm + '-state-down'); - } - ) - .appendTo(e); - if (!prevButton) { - button.addClass(tm + '-corner-left'); - } - prevButton = button; - } - } - } - }); - if (prevButton) { - prevButton.addClass(tm + '-corner-right'); - } - }); - } - return e; - } - - - function updateTitle(html) { - element.find('h2') - .html(html); - } - - - function activateButton(buttonName) { - element.find('span.fc-button-' + buttonName) - .addClass(tm + '-state-active'); - } - - - function deactivateButton(buttonName) { - element.find('span.fc-button-' + buttonName) - .removeClass(tm + '-state-active'); - } - - - function disableButton(buttonName) { - element.find('span.fc-button-' + buttonName) - .addClass(tm + '-state-disabled'); - } - - - function enableButton(buttonName) { - element.find('span.fc-button-' + buttonName) - .removeClass(tm + '-state-disabled'); - } - - -} - -fc.sourceNormalizers = []; -fc.sourceFetchers = []; - -var ajaxDefaults = { - dataType: 'json', - cache: false -}; - -var eventGUID = 1; - - -function EventManager(options, _sources) { - var t = this; - - - // exports - t.isFetchNeeded = isFetchNeeded; - t.fetchEvents = fetchEvents; - t.addEventSource = addEventSource; - t.removeEventSource = removeEventSource; - t.updateEvent = updateEvent; - t.renderEvent = renderEvent; - t.removeEvents = removeEvents; - t.clientEvents = clientEvents; - t.normalizeEvent = normalizeEvent; - - - // imports - var trigger = t.trigger; - var getView = t.getView; - var reportEvents = t.reportEvents; - - - // locals - var stickySource = { events: [] }; - var sources = [ stickySource ]; - var rangeStart, rangeEnd; - var currentFetchID = 0; - var pendingSourceCnt = 0; - var loadingLevel = 0; - var cache = []; - - - for (var i=0; i<_sources.length; i++) { - _addEventSource(_sources[i]); - } - - - - /* Fetching - -----------------------------------------------------------------------------*/ - - - function isFetchNeeded(start, end) { - return !rangeStart || start < rangeStart || end > rangeEnd; - } - - - function fetchEvents(start, end) { - rangeStart = start; - rangeEnd = end; - cache = []; - var fetchID = ++currentFetchID; - var len = sources.length; - pendingSourceCnt = len; - for (var i=0; i)), return null instead - return null; -} - - -function parseISO8601(s, ignoreTimezone) { // ignoreTimezone defaults to false - // derived from http://delete.me.uk/2005/03/iso8601.html - // TODO: for a know glitch/feature, read tests/issue_206_parseDate_dst.html - var m = s.match(/^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})(:?([0-9]{2}))?))?)?)?)?$/); - if (!m) { - return null; - } - var date = new Date(m[1], 0, 1); - if (ignoreTimezone || !m[13]) { - var check = new Date(m[1], 0, 1, 9, 0); - if (m[3]) { - date.setMonth(m[3] - 1); - check.setMonth(m[3] - 1); - } - if (m[5]) { - date.setDate(m[5]); - check.setDate(m[5]); - } - fixDate(date, check); - if (m[7]) { - date.setHours(m[7]); - } - if (m[8]) { - date.setMinutes(m[8]); - } - if (m[10]) { - date.setSeconds(m[10]); - } - if (m[12]) { - date.setMilliseconds(Number("0." + m[12]) * 1000); - } - fixDate(date, check); - }else{ - date.setUTCFullYear( - m[1], - m[3] ? m[3] - 1 : 0, - m[5] || 1 - ); - date.setUTCHours( - m[7] || 0, - m[8] || 0, - m[10] || 0, - m[12] ? Number("0." + m[12]) * 1000 : 0 - ); - if (m[14]) { - var offset = Number(m[16]) * 60 + (m[18] ? Number(m[18]) : 0); - offset *= m[15] == '-' ? 1 : -1; - date = new Date(+date + (offset * 60 * 1000)); - } - } - return date; -} - - -function parseTime(s) { // returns minutes since start of day - if (typeof s == 'number') { // an hour - return s * 60; - } - if (typeof s == 'object') { // a Date object - return s.getHours() * 60 + s.getMinutes(); - } - var m = s.match(/(\d+)(?::(\d+))?\s*(\w+)?/); - if (m) { - var h = parseInt(m[1], 10); - if (m[3]) { - h %= 12; - if (m[3].toLowerCase().charAt(0) == 'p') { - h += 12; - } - } - return h * 60 + (m[2] ? parseInt(m[2], 10) : 0); - } -} - - - -/* Date Formatting ------------------------------------------------------------------------------*/ -// TODO: use same function formatDate(date, [date2], format, [options]) - - -function formatDate(date, format, options) { - return formatDates(date, null, format, options); -} - - -function formatDates(date1, date2, format, options) { - options = options || defaults; - var date = date1, - otherDate = date2, - i, len = format.length, c, - i2, formatter, - res = ''; - for (i=0; ii; i2--) { - if (formatter = dateFormatters[format.substring(i, i2)]) { - if (date) { - res += formatter(date, options); - } - i = i2 - 1; - break; - } - } - if (i2 == i) { - if (date) { - res += c; - } - } - } - } - return res; -}; - - -var dateFormatters = { - s : function(d) { return d.getSeconds() }, - ss : function(d) { return zeroPad(d.getSeconds()) }, - m : function(d) { return d.getMinutes() }, - mm : function(d) { return zeroPad(d.getMinutes()) }, - h : function(d) { return d.getHours() % 12 || 12 }, - hh : function(d) { return zeroPad(d.getHours() % 12 || 12) }, - H : function(d) { return d.getHours() }, - HH : function(d) { return zeroPad(d.getHours()) }, - d : function(d) { return d.getDate() }, - dd : function(d) { return zeroPad(d.getDate()) }, - ddd : function(d,o) { return o.dayNamesShort[d.getDay()] }, - dddd: function(d,o) { return o.dayNames[d.getDay()] }, - M : function(d) { return d.getMonth() + 1 }, - MM : function(d) { return zeroPad(d.getMonth() + 1) }, - MMM : function(d,o) { return o.monthNamesShort[d.getMonth()] }, - MMMM: function(d,o) { return o.monthNames[d.getMonth()] }, - yy : function(d) { return (d.getFullYear()+'').substring(2) }, - yyyy: function(d) { return d.getFullYear() }, - t : function(d) { return d.getHours() < 12 ? 'a' : 'p' }, - tt : function(d) { return d.getHours() < 12 ? 'am' : 'pm' }, - T : function(d) { return d.getHours() < 12 ? 'A' : 'P' }, - TT : function(d) { return d.getHours() < 12 ? 'AM' : 'PM' }, - u : function(d) { return formatDate(d, "yyyy-MM-dd'T'HH:mm:ss'Z'") }, - S : function(d) { - var date = d.getDate(); - if (date > 10 && date < 20) { - return 'th'; - } - return ['st', 'nd', 'rd'][date%10-1] || 'th'; - } -}; - - - -fc.applyAll = applyAll; - - -/* Event Date Math ------------------------------------------------------------------------------*/ - - -function exclEndDay(event) { - if (event.end) { - return _exclEndDay(event.end, event.allDay); - }else{ - return addDays(cloneDate(event.start), 1); - } -} - - -function _exclEndDay(end, allDay) { - end = cloneDate(end); - return allDay || end.getHours() || end.getMinutes() ? addDays(end, 1) : clearTime(end); -} - - -function segCmp(a, b) { - return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start); -} - - -function segsCollide(seg1, seg2) { - return seg1.end > seg2.start && seg1.start < seg2.end; -} - - - -/* Event Sorting ------------------------------------------------------------------------------*/ - - -// event rendering utilities -function sliceSegs(events, visEventEnds, start, end) { - var segs = [], - i, len=events.length, event, - eventStart, eventEnd, - segStart, segEnd, - isStart, isEnd; - for (i=0; i start && eventStart < end) { - if (eventStart < start) { - segStart = cloneDate(start); - isStart = false; - }else{ - segStart = eventStart; - isStart = true; - } - if (eventEnd > end) { - segEnd = cloneDate(end); - isEnd = false; - }else{ - segEnd = eventEnd; - isEnd = true; - } - segs.push({ - event: event, - start: segStart, - end: segEnd, - isStart: isStart, - isEnd: isEnd, - msLength: segEnd - segStart - }); - } - } - return segs.sort(segCmp); -} - - -// event rendering calculation utilities -function stackSegs(segs) { - var levels = [], - i, len = segs.length, seg, - j, collide, k; - for (i=0; i=0; i--) { - res = obj[parts[i].toLowerCase()]; - if (res !== undefined) { - return res; - } - } - return obj['']; -} - - -function htmlEscape(s) { - return s.replace(/&/g, '&') - .replace(//g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"') - .replace(/\n/g, '
    '); -} - - -function cssKey(_element) { - return _element.id + '/' + _element.className + '/' + _element.style.cssText.replace(/(^|;)\s*(top|left|width|height)\s*:[^;]*/ig, ''); -} - - -function disableTextSelection(element) { - element - .attr('unselectable', 'on') - .css('MozUserSelect', 'none') - .bind('selectstart.ui', function() { return false; }); -} - - -/* -function enableTextSelection(element) { - element - .attr('unselectable', 'off') - .css('MozUserSelect', '') - .unbind('selectstart.ui'); -} -*/ - - -function markFirstLast(e) { - e.children() - .removeClass('fc-first fc-last') - .filter(':first-child') - .addClass('fc-first') - .end() - .filter(':last-child') - .addClass('fc-last'); -} - - -function setDayID(cell, date) { - cell.each(function(i, _cell) { - _cell.className = _cell.className.replace(/^fc-\w*/, 'fc-' + dayIDs[date.getDay()]); - // TODO: make a way that doesn't rely on order of classes - }); -} - - -function getSkinCss(event, opt) { - var source = event.source || {}; - var eventColor = event.color; - var sourceColor = source.color; - var optionColor = opt('eventColor'); - var backgroundColor = - event.backgroundColor || - eventColor || - source.backgroundColor || - sourceColor || - opt('eventBackgroundColor') || - optionColor; - var borderColor = - event.borderColor || - eventColor || - source.borderColor || - sourceColor || - opt('eventBorderColor') || - optionColor; - var textColor = - event.textColor || - source.textColor || - opt('eventTextColor'); - var statements = []; - if (backgroundColor) { - statements.push('background-color:' + backgroundColor); - } - if (borderColor) { - statements.push('border-color:' + borderColor); - } - if (textColor) { - statements.push('color:' + textColor); - } - return statements.join(';'); -} - - -function applyAll(functions, thisObj, args) { - if ($.isFunction(functions)) { - functions = [ functions ]; - } - if (functions) { - var i; - var ret; - for (i=0; i" + - "
    "; - table = $(s).appendTo(element); - - head = table.find('thead'); - headCells = head.find('th'); - body = table.find('tbody'); - bodyRows = body.find('tr'); - bodyCells = body.find('td'); - bodyFirstCells = bodyCells.filter(':first-child'); - bodyCellTopInners = bodyRows.eq(0).find('div.fc-day-content div'); - - markFirstLast(head.add(head.find('tr'))); // marks first+last tr/th's - markFirstLast(bodyRows); // marks first+last td's - bodyRows.eq(0).addClass('fc-first'); // fc-last is done in updateCells - - dayBind(bodyCells); - - daySegmentContainer = - $("
    ") - .appendTo(element); - } - - - - function updateCells(firstTime) { - var dowDirty = firstTime || rowCnt == 1; // could the cells' day-of-weeks need updating? - var month = t.start.getMonth(); - var today = clearTime(new Date()); - var cell; - var date; - var row; - - if (dowDirty) { - headCells.each(function(i, _cell) { - cell = $(_cell); - date = indexDate(i); - cell.html(formatDate(date, colFormat)); - setDayID(cell, date); - }); - } - - bodyCells.each(function(i, _cell) { - cell = $(_cell); - date = indexDate(i); - if (date.getMonth() == month) { - cell.removeClass('fc-other-month'); - }else{ - cell.addClass('fc-other-month'); - } - if (+date == +today) { - cell.addClass(tm + '-state-highlight fc-today'); - }else{ - cell.removeClass(tm + '-state-highlight fc-today'); - } - cell.find('div.fc-day-number').text(date.getDate()); - if (dowDirty) { - setDayID(cell, date); - } - }); - - bodyRows.each(function(i, _row) { - row = $(_row); - if (i < rowCnt) { - row.show(); - if (i == rowCnt-1) { - row.addClass('fc-last'); - }else{ - row.removeClass('fc-last'); - } - }else{ - row.hide(); - } - }); - } - - - - function setHeight(height) { - viewHeight = height; - - var bodyHeight = viewHeight - head.height(); - var rowHeight; - var rowHeightLast; - var cell; - - if (opt('weekMode') == 'variable') { - rowHeight = rowHeightLast = Math.floor(bodyHeight / (rowCnt==1 ? 2 : 6)); - }else{ - rowHeight = Math.floor(bodyHeight / rowCnt); - rowHeightLast = bodyHeight - rowHeight * (rowCnt-1); - } - - bodyFirstCells.each(function(i, _cell) { - if (i < rowCnt) { - cell = $(_cell); - setMinHeight( - cell.find('> div'), - (i==rowCnt-1 ? rowHeightLast : rowHeight) - vsides(cell) - ); - } - }); - - } - - - function setWidth(width) { - viewWidth = width; - colContentPositions.clear(); - colWidth = Math.floor(viewWidth / colCnt); - setOuterWidth(headCells.slice(0, -1), colWidth); - } - - - - /* Day clicking and binding - -----------------------------------------------------------*/ - - - function dayBind(days) { - days.click(dayClick) - .mousedown(daySelectionMousedown); - } - - - function dayClick(ev) { - if (!opt('selectable')) { // if selectable, SelectionManager will worry about dayClick - var index = parseInt(this.className.match(/fc\-day(\d+)/)[1]); // TODO: maybe use .data - var date = indexDate(index); - trigger('dayClick', this, date, true, ev); - } - } - - - - /* Semi-transparent Overlay Helpers - ------------------------------------------------------*/ - - - function renderDayOverlay(overlayStart, overlayEnd, refreshCoordinateGrid) { // overlayEnd is exclusive - if (refreshCoordinateGrid) { - coordinateGrid.build(); - } - var rowStart = cloneDate(t.visStart); - var rowEnd = addDays(cloneDate(rowStart), colCnt); - for (var i=0; i" + - "" + - "" + - " "; - for (i=0; i"; // fc- needed for setDayID - } - s += - " " + - "" + - "" + - "" + - "" + - " "; - for (i=0; i" + // fc- needed for setDayID - "
    " + - "
    " + - "
     
    " + - "
    " + - "
    " + - ""; - } - s += - " " + - "" + - "" + - ""; - dayTable = $(s).appendTo(element); - dayHead = dayTable.find('thead'); - dayHeadCells = dayHead.find('th').slice(1, -1); - dayBody = dayTable.find('tbody'); - dayBodyCells = dayBody.find('td').slice(0, -1); - dayBodyCellInners = dayBodyCells.find('div.fc-day-content div'); - dayBodyFirstCell = dayBodyCells.eq(0); - dayBodyFirstCellStretcher = dayBodyFirstCell.find('> div'); - - markFirstLast(dayHead.add(dayHead.find('tr'))); - markFirstLast(dayBody.add(dayBody.find('tr'))); - - axisFirstCells = dayHead.find('th:first'); - gutterCells = dayTable.find('.fc-agenda-gutter'); - - slotLayer = - $("
    ") - .appendTo(element); - - if (opt('allDaySlot')) { - - daySegmentContainer = - $("
    ") - .appendTo(slotLayer); - - s = - "" + - "" + - "" + - "" + - "" + - "" + - "
    " + opt('allDayText') + "" + - "
    " + - "
     
    "; - allDayTable = $(s).appendTo(slotLayer); - allDayRow = allDayTable.find('tr'); - - dayBind(allDayRow.find('td')); - - axisFirstCells = axisFirstCells.add(allDayTable.find('th:first')); - gutterCells = gutterCells.add(allDayTable.find('th.fc-agenda-gutter')); - - slotLayer.append( - "
    " + - "
    " + - "
    " - ); - - }else{ - - daySegmentContainer = $([]); // in jQuery 1.4, we can just do $() - - } - - slotScroller = - $("
    ") - .appendTo(slotLayer); - - slotContent = - $("
    ") - .appendTo(slotScroller); - - slotSegmentContainer = - $("
    ") - .appendTo(slotContent); - - s = - "" + - ""; - d = zeroDate(); - maxd = addMinutes(cloneDate(d), maxMinute); - addMinutes(d, minMinute); - slotCnt = 0; - for (i=0; d < maxd; i++) { - minutes = d.getMinutes(); - s += - "" + - "" + - "" + - ""; - addMinutes(d, opt('slotMinutes')); - slotCnt++; - } - s += - "" + - "
    " + - ((!slotNormal || !minutes) ? formatDate(d, opt('axisFormat')) : ' ') + - "" + - "
     
    " + - "
    "; - slotTable = $(s).appendTo(slotContent); - slotTableFirstInner = slotTable.find('div:first'); - - slotBind(slotTable.find('td')); - - axisFirstCells = axisFirstCells.add(slotTable.find('th:first')); - } - - - - function updateCells() { - var i; - var headCell; - var bodyCell; - var date; - var today = clearTime(new Date()); - for (i=0; i= 0) { - addMinutes(d, minMinute + slotIndex * opt('slotMinutes')); - } - return d; - } - - - function colDate(col) { // returns dates with 00:00:00 - return addDays(cloneDate(t.visStart), col*dis+dit); - } - - - function cellIsAllDay(cell) { - return opt('allDaySlot') && !cell.row; - } - - - function dayOfWeekCol(dayOfWeek) { - return ((dayOfWeek - Math.max(firstDay, nwe) + colCnt) % colCnt)*dis+dit; - } - - - - - // get the Y coordinate of the given time on the given day (both Date objects) - function timePosition(day, time) { // both date objects. day holds 00:00 of current day - day = cloneDate(day, true); - if (time < addMinutes(cloneDate(day), minMinute)) { - return 0; - } - if (time >= addMinutes(cloneDate(day), maxMinute)) { - return slotTable.height(); - } - var slotMinutes = opt('slotMinutes'), - minutes = time.getHours()*60 + time.getMinutes() - minMinute, - slotI = Math.floor(minutes / slotMinutes), - slotTop = slotTopCache[slotI]; - if (slotTop === undefined) { - slotTop = slotTopCache[slotI] = slotTable.find('tr:eq(' + slotI + ') td div')[0].offsetTop; //.position().top; // need this optimization??? - } - return Math.max(0, Math.round( - slotTop - 1 + slotHeight * ((minutes % slotMinutes) / slotMinutes) - )); - } - - - function allDayBounds() { - return { - left: axisWidth, - right: viewWidth - gutterWidth - } - } - - - function getAllDayRow(index) { - return allDayRow; - } - - - function defaultEventEnd(event) { - var start = cloneDate(event.start); - if (event.allDay) { - return start; - } - return addMinutes(start, opt('defaultEventMinutes')); - } - - - - /* Selection - ---------------------------------------------------------------------------------*/ - - - function defaultSelectionEnd(startDate, allDay) { - if (allDay) { - return cloneDate(startDate); - } - return addMinutes(cloneDate(startDate), opt('slotMinutes')); - } - - - function renderSelection(startDate, endDate, allDay) { // only for all-day - if (allDay) { - if (opt('allDaySlot')) { - renderDayOverlay(startDate, addDays(cloneDate(endDate), 1), true); - } - }else{ - renderSlotSelection(startDate, endDate); - } - } - - - function renderSlotSelection(startDate, endDate) { - var helperOption = opt('selectHelper'); - coordinateGrid.build(); - if (helperOption) { - var col = dayDiff(startDate, t.visStart) * dis + dit; - if (col >= 0 && col < colCnt) { // only works when times are on same day - var rect = coordinateGrid.rect(0, col, 0, col, slotContent); // only for horizontal coords - var top = timePosition(startDate, startDate); - var bottom = timePosition(startDate, endDate); - if (bottom > top) { // protect against selections that are entirely before or after visible range - rect.top = top; - rect.height = bottom - top; - rect.left += 2; - rect.width -= 5; - if ($.isFunction(helperOption)) { - var helperRes = helperOption(startDate, endDate); - if (helperRes) { - rect.position = 'absolute'; - rect.zIndex = 8; - selectionHelper = $(helperRes) - .css(rect) - .appendTo(slotContent); - } - }else{ - rect.isStart = true; // conside rect a "seg" now - rect.isEnd = true; // - selectionHelper = $(slotSegHtml( - { - title: '', - start: startDate, - end: endDate, - className: ['fc-select-helper'], - editable: false - }, - rect - )); - selectionHelper.css('opacity', opt('dragOpacity')); - } - if (selectionHelper) { - slotBind(selectionHelper); - slotContent.append(selectionHelper); - setOuterWidth(selectionHelper, rect.width, true); // needs to be after appended - setOuterHeight(selectionHelper, rect.height, true); - } - } - } - }else{ - renderSlotOverlay(startDate, endDate); - } - } - - - function clearSelection() { - clearOverlays(); - if (selectionHelper) { - selectionHelper.remove(); - selectionHelper = null; - } - } - - - function slotSelectionMousedown(ev) { - if (ev.which == 1 && opt('selectable')) { // ev.which==1 means left mouse button - unselect(ev); - var dates; - hoverListener.start(function(cell, origCell) { - clearSelection(); - if (cell && cell.col == origCell.col && !cellIsAllDay(cell)) { - var d1 = cellDate(origCell); - var d2 = cellDate(cell); - dates = [ - d1, - addMinutes(cloneDate(d1), opt('slotMinutes')), - d2, - addMinutes(cloneDate(d2), opt('slotMinutes')) - ].sort(cmp); - renderSlotSelection(dates[0], dates[3]); - }else{ - dates = null; - } - }, ev); - $(document).one('mouseup', function(ev) { - hoverListener.stop(); - if (dates) { - if (+dates[0] == +dates[1]) { - reportDayClick(dates[0], false, ev); - } - reportSelection(dates[0], dates[3], false, ev); - } - }); - } - } - - - function reportDayClick(date, allDay, ev) { - trigger('dayClick', dayBodyCells[dayOfWeekCol(date.getDay())], date, allDay, ev); - } - - - - /* External Dragging - --------------------------------------------------------------------------------*/ - - - function dragStart(_dragElement, ev, ui) { - hoverListener.start(function(cell) { - clearOverlays(); - if (cell) { - if (cellIsAllDay(cell)) { - renderCellOverlay(cell.row, cell.col, cell.row, cell.col); - }else{ - var d1 = cellDate(cell); - var d2 = addMinutes(cloneDate(d1), opt('defaultEventMinutes')); - renderSlotOverlay(d1, d2); - } - } - }, ev); - } - - - function dragStop(_dragElement, ev, ui) { - var cell = hoverListener.stop(); - clearOverlays(); - if (cell) { - trigger('drop', _dragElement, cellDate(cell), cellIsAllDay(cell), ev, ui); - } - } - - -} - -function AgendaEventRenderer() { - var t = this; - - - // exports - t.renderEvents = renderEvents; - t.compileDaySegs = compileDaySegs; // for DayEventRenderer - t.clearEvents = clearEvents; - t.slotSegHtml = slotSegHtml; - t.bindDaySeg = bindDaySeg; - - - // imports - DayEventRenderer.call(t); - var opt = t.opt; - var trigger = t.trigger; - //var setOverflowHidden = t.setOverflowHidden; - var isEventDraggable = t.isEventDraggable; - var isEventResizable = t.isEventResizable; - var eventEnd = t.eventEnd; - var reportEvents = t.reportEvents; - var reportEventClear = t.reportEventClear; - var eventElementHandlers = t.eventElementHandlers; - var setHeight = t.setHeight; - var getDaySegmentContainer = t.getDaySegmentContainer; - var getSlotSegmentContainer = t.getSlotSegmentContainer; - var getHoverListener = t.getHoverListener; - var getMaxMinute = t.getMaxMinute; - var getMinMinute = t.getMinMinute; - var timePosition = t.timePosition; - var colContentLeft = t.colContentLeft; - var colContentRight = t.colContentRight; - var renderDaySegs = t.renderDaySegs; - var resizableDayEvent = t.resizableDayEvent; // TODO: streamline binding architecture - var getColCnt = t.getColCnt; - var getColWidth = t.getColWidth; - var getSlotHeight = t.getSlotHeight; - var getBodyContent = t.getBodyContent; - var reportEventElement = t.reportEventElement; - var showEvents = t.showEvents; - var hideEvents = t.hideEvents; - var eventDrop = t.eventDrop; - var eventResize = t.eventResize; - var renderDayOverlay = t.renderDayOverlay; - var clearOverlays = t.clearOverlays; - var calendar = t.calendar; - var formatDate = calendar.formatDate; - var formatDates = calendar.formatDates; - - - - /* Rendering - ----------------------------------------------------------------------------*/ - - - function renderEvents(events, modifiedEventId) { - reportEvents(events); - var i, len=events.length, - dayEvents=[], - slotEvents=[]; - for (i=0; i" + - "
    " + - "
    " + - "
    " + - htmlEscape(formatDates(event.start, event.end, opt('timeFormat'))) + - "
    " + - "
    " + - "
    " + - "
    " + - htmlEscape(event.title) + - "
    " + - "
    " + - "
    " + - "
    "; // close inner - if (seg.isEnd && isEventResizable(event)) { - html += - "
    =
    "; - } - html += - ""; - return html; - } - - - function bindDaySeg(event, eventElement, seg) { - if (isEventDraggable(event)) { - draggableDayEvent(event, eventElement, seg.isStart); - } - if (seg.isEnd && isEventResizable(event)) { - resizableDayEvent(event, eventElement, seg); - } - eventElementHandlers(event, eventElement); - // needs to be after, because resizableDayEvent might stopImmediatePropagation on click - } - - - function bindSlotSeg(event, eventElement, seg) { - var timeElement = eventElement.find('div.fc-event-time'); - if (isEventDraggable(event)) { - draggableSlotEvent(event, eventElement, timeElement); - } - if (seg.isEnd && isEventResizable(event)) { - resizableSlotEvent(event, eventElement, timeElement); - } - eventElementHandlers(event, eventElement); - } - - - - /* Dragging - -----------------------------------------------------------------------------------*/ - - - // when event starts out FULL-DAY - - function draggableDayEvent(event, eventElement, isStart) { - var origWidth; - var revert; - var allDay=true; - var dayDelta; - var dis = opt('isRTL') ? -1 : 1; - var hoverListener = getHoverListener(); - var colWidth = getColWidth(); - var slotHeight = getSlotHeight(); - var minMinute = getMinMinute(); - eventElement.draggable({ - zIndex: 9, - opacity: opt('dragOpacity', 'month'), // use whatever the month view was using - revertDuration: opt('dragRevertDuration'), - start: function(ev, ui) { - trigger('eventDragStart', eventElement, event, ev, ui); - hideEvents(event, eventElement); - origWidth = eventElement.width(); - hoverListener.start(function(cell, origCell, rowDelta, colDelta) { - clearOverlays(); - if (cell) { - //setOverflowHidden(true); - revert = false; - dayDelta = colDelta * dis; - if (!cell.row) { - // on full-days - renderDayOverlay( - addDays(cloneDate(event.start), dayDelta), - addDays(exclEndDay(event), dayDelta) - ); - resetElement(); - }else{ - // mouse is over bottom slots - if (isStart) { - if (allDay) { - // convert event to temporary slot-event - eventElement.width(colWidth - 10); // don't use entire width - setOuterHeight( - eventElement, - slotHeight * Math.round( - (event.end ? ((event.end - event.start) / MINUTE_MS) : opt('defaultEventMinutes')) - / opt('slotMinutes') - ) - ); - eventElement.draggable('option', 'grid', [colWidth, 1]); - allDay = false; - } - }else{ - revert = true; - } - } - revert = revert || (allDay && !dayDelta); - }else{ - resetElement(); - //setOverflowHidden(false); - revert = true; - } - eventElement.draggable('option', 'revert', revert); - }, ev, 'drag'); - }, - stop: function(ev, ui) { - hoverListener.stop(); - clearOverlays(); - trigger('eventDragStop', eventElement, event, ev, ui); - if (revert) { - // hasn't moved or is out of bounds (draggable has already reverted) - resetElement(); - eventElement.css('filter', ''); // clear IE opacity side-effects - showEvents(event, eventElement); - }else{ - // changed! - var minuteDelta = 0; - if (!allDay) { - minuteDelta = Math.round((eventElement.offset().top - getBodyContent().offset().top) / slotHeight) - * opt('slotMinutes') - + minMinute - - (event.start.getHours() * 60 + event.start.getMinutes()); - } - eventDrop(this, event, dayDelta, minuteDelta, allDay, ev, ui); - } - //setOverflowHidden(false); - } - }); - function resetElement() { - if (!allDay) { - eventElement - .width(origWidth) - .height('') - .draggable('option', 'grid', null); - allDay = true; - } - } - } - - - // when event starts out IN TIMESLOTS - - function draggableSlotEvent(event, eventElement, timeElement) { - var origPosition; - var allDay=false; - var dayDelta; - var minuteDelta; - var prevMinuteDelta; - var dis = opt('isRTL') ? -1 : 1; - var hoverListener = getHoverListener(); - var colCnt = getColCnt(); - var colWidth = getColWidth(); - var slotHeight = getSlotHeight(); - eventElement.draggable({ - zIndex: 9, - scroll: false, - grid: [colWidth, slotHeight], - axis: colCnt==1 ? 'y' : false, - opacity: opt('dragOpacity'), - revertDuration: opt('dragRevertDuration'), - start: function(ev, ui) { - trigger('eventDragStart', eventElement, event, ev, ui); - hideEvents(event, eventElement); - origPosition = eventElement.position(); - minuteDelta = prevMinuteDelta = 0; - hoverListener.start(function(cell, origCell, rowDelta, colDelta) { - eventElement.draggable('option', 'revert', !cell); - clearOverlays(); - if (cell) { - dayDelta = colDelta * dis; - if (opt('allDaySlot') && !cell.row) { - // over full days - if (!allDay) { - // convert to temporary all-day event - allDay = true; - timeElement.hide(); - eventElement.draggable('option', 'grid', null); - } - renderDayOverlay( - addDays(cloneDate(event.start), dayDelta), - addDays(exclEndDay(event), dayDelta) - ); - }else{ - // on slots - resetElement(); - } - } - }, ev, 'drag'); - }, - drag: function(ev, ui) { - minuteDelta = Math.round((ui.position.top - origPosition.top) / slotHeight) * opt('slotMinutes'); - if (minuteDelta != prevMinuteDelta) { - if (!allDay) { - updateTimeText(minuteDelta); - } - prevMinuteDelta = minuteDelta; - } - }, - stop: function(ev, ui) { - var cell = hoverListener.stop(); - clearOverlays(); - trigger('eventDragStop', eventElement, event, ev, ui); - if (cell && (dayDelta || minuteDelta || allDay)) { - // changed! - eventDrop(this, event, dayDelta, allDay ? 0 : minuteDelta, allDay, ev, ui); - }else{ - // either no change or out-of-bounds (draggable has already reverted) - resetElement(); - eventElement.css('filter', ''); // clear IE opacity side-effects - eventElement.css(origPosition); // sometimes fast drags make event revert to wrong position - updateTimeText(0); - showEvents(event, eventElement); - } - } - }); - function updateTimeText(minuteDelta) { - var newStart = addMinutes(cloneDate(event.start), minuteDelta); - var newEnd; - if (event.end) { - newEnd = addMinutes(cloneDate(event.end), minuteDelta); - } - timeElement.text(formatDates(newStart, newEnd, opt('timeFormat'))); - } - function resetElement() { - // convert back to original slot-event - if (allDay) { - timeElement.css('display', ''); // show() was causing display=inline - eventElement.draggable('option', 'grid', [colWidth, slotHeight]); - allDay = false; - } - } - } - - - - /* Resizing - --------------------------------------------------------------------------------------*/ - - - function resizableSlotEvent(event, eventElement, timeElement) { - var slotDelta, prevSlotDelta; - var slotHeight = getSlotHeight(); - eventElement.resizable({ - handles: { - s: 'div.ui-resizable-s' - }, - grid: slotHeight, - start: function(ev, ui) { - slotDelta = prevSlotDelta = 0; - hideEvents(event, eventElement); - eventElement.css('z-index', 9); - trigger('eventResizeStart', this, event, ev, ui); - }, - resize: function(ev, ui) { - // don't rely on ui.size.height, doesn't take grid into account - slotDelta = Math.round((Math.max(slotHeight, eventElement.height()) - ui.originalSize.height) / slotHeight); - if (slotDelta != prevSlotDelta) { - timeElement.text( - formatDates( - event.start, - (!slotDelta && !event.end) ? null : // no change, so don't display time range - addMinutes(eventEnd(event), opt('slotMinutes')*slotDelta), - opt('timeFormat') - ) - ); - prevSlotDelta = slotDelta; - } - }, - stop: function(ev, ui) { - trigger('eventResizeStop', this, event, ev, ui); - if (slotDelta) { - eventResize(this, event, 0, opt('slotMinutes')*slotDelta, ev, ui); - }else{ - eventElement.css('z-index', 8); - showEvents(event, eventElement); - // BUG: if event was really short, need to put title back in span - } - } - }); - } - - -} - - -function countForwardSegs(levels) { - var i, j, k, level, segForward, segBack; - for (i=levels.length-1; i>0; i--) { - level = levels[i]; - for (j=0; j"); - var elements; - var segmentContainer = getDaySegmentContainer(); - var i; - var segCnt = segs.length; - var element; - tempContainer[0].innerHTML = daySegHTML(segs); // faster than .html() - elements = tempContainer.children(); - segmentContainer.append(elements); - daySegElementResolve(segs, elements); - daySegCalcHSides(segs); - daySegSetWidths(segs); - daySegCalcHeights(segs); - daySegSetTops(segs, getRowTops(getRowDivs())); - elements = []; - for (i=0; i" + - ""; - if (!event.allDay && seg.isStart) { - html += - "" + - htmlEscape(formatDates(event.start, event.end, opt('timeFormat'))) + - ""; - } - html += - "" + htmlEscape(event.title) + "" + - "
    "; - if (seg.isEnd && isEventResizable(event)) { - html += - "
    " + - "   " + // makes hit area a lot better for IE6/7 - "
    "; - } - html += - ""; - seg.left = left; - seg.outerWidth = right - left; - seg.startCol = leftCol; - seg.endCol = rightCol + 1; // needs to be exclusive - } - return html; - } - - - function daySegElementResolve(segs, elements) { // sets seg.element - var i; - var segCnt = segs.length; - var seg; - var event; - var element; - var triggerRes; - for (i=0; i div'); // optimal selector? - } - return rowDivs; - } - - - function getRowTops(rowDivs) { - var i; - var rowCnt = rowDivs.length; - var tops = []; - for (i=0; i selection for IE - element - .mousedown(function(ev) { // prevent native selection for others - ev.preventDefault(); - }) - .click(function(ev) { - if (isResizing) { - ev.preventDefault(); // prevent link from being visited (only method that worked in IE6) - ev.stopImmediatePropagation(); // prevent fullcalendar eventClick handler from being called - // (eventElementHandlers needs to be bound after resizableDayEvent) - } - }); - - handle.mousedown(function(ev) { - if (ev.which != 1) { - return; // needs to be left mouse button - } - isResizing = true; - var hoverListener = t.getHoverListener(); - var rowCnt = getRowCnt(); - var colCnt = getColCnt(); - var dis = rtl ? -1 : 1; - var dit = rtl ? colCnt-1 : 0; - var elementTop = element.css('top'); - var dayDelta; - var helpers; - var eventCopy = $.extend({}, event); - var minCell = dateCell(event.start); - clearSelection(); - $('body') - .css('cursor', direction + '-resize') - .one('mouseup', mouseup); - trigger('eventResizeStart', this, event, ev); - hoverListener.start(function(cell, origCell) { - if (cell) { - var r = Math.max(minCell.row, cell.row); - var c = cell.col; - if (rowCnt == 1) { - r = 0; // hack for all-day area in agenda views - } - if (r == minCell.row) { - if (rtl) { - c = Math.min(minCell.col, c); - }else{ - c = Math.max(minCell.col, c); - } - } - dayDelta = (r*7 + c*dis+dit) - (origCell.row*7 + origCell.col*dis+dit); - var newEnd = addDays(eventEnd(event), dayDelta, true); - if (dayDelta) { - eventCopy.end = newEnd; - var oldHelpers = helpers; - helpers = renderTempDaySegs(compileDaySegs([eventCopy]), seg.row, elementTop); - helpers.find('*').css('cursor', direction + '-resize'); - if (oldHelpers) { - oldHelpers.remove(); - } - hideEvents(event); - }else{ - if (helpers) { - showEvents(event); - helpers.remove(); - helpers = null; - } - } - clearOverlays(); - renderDayOverlay(event.start, addDays(cloneDate(newEnd), 1)); // coordinate grid already rebuild at hoverListener.start - } - }, ev); - - function mouseup(ev) { - trigger('eventResizeStop', this, event, ev); - $('body').css('cursor', ''); - hoverListener.stop(); - clearOverlays(); - if (dayDelta) { - eventResize(this, event, dayDelta, 0, ev); - // event redraw will clear helpers - } - // otherwise, the drag handler already restored the old events - - setTimeout(function() { // make this happen after the element's click event - isResizing = false; - },0); - } - - }); - } - - -} - -//BUG: unselect needs to be triggered when events are dragged+dropped - -function SelectionManager() { - var t = this; - - - // exports - t.select = select; - t.unselect = unselect; - t.reportSelection = reportSelection; - t.daySelectionMousedown = daySelectionMousedown; - - - // imports - var opt = t.opt; - var trigger = t.trigger; - var defaultSelectionEnd = t.defaultSelectionEnd; - var renderSelection = t.renderSelection; - var clearSelection = t.clearSelection; - - - // locals - var selected = false; - - - - // unselectAuto - if (opt('selectable') && opt('unselectAuto')) { - $(document).mousedown(function(ev) { - var ignore = opt('unselectCancel'); - if (ignore) { - if ($(ev.target).parents(ignore).length) { // could be optimized to stop after first match - return; - } - } - unselect(ev); - }); - } - - - function select(startDate, endDate, allDay) { - unselect(); - if (!endDate) { - endDate = defaultSelectionEnd(startDate, allDay); - } - renderSelection(startDate, endDate, allDay); - reportSelection(startDate, endDate, allDay); - } - - - function unselect(ev) { - if (selected) { - selected = false; - clearSelection(); - trigger('unselect', null, ev); - } - } - - - function reportSelection(startDate, endDate, allDay, ev) { - selected = true; - trigger('select', null, startDate, endDate, allDay, ev); - } - - - function daySelectionMousedown(ev) { // not really a generic manager method, oh well - var cellDate = t.cellDate; - var cellIsAllDay = t.cellIsAllDay; - var hoverListener = t.getHoverListener(); - var reportDayClick = t.reportDayClick; // this is hacky and sort of weird - if (ev.which == 1 && opt('selectable')) { // which==1 means left mouse button - unselect(ev); - var _mousedownElement = this; - var dates; - hoverListener.start(function(cell, origCell) { // TODO: maybe put cellDate/cellIsAllDay info in cell - clearSelection(); - if (cell && cellIsAllDay(cell)) { - dates = [ cellDate(origCell), cellDate(cell) ].sort(cmp); - renderSelection(dates[0], dates[1], true); - }else{ - dates = null; - } - }, ev); - $(document).one('mouseup', function(ev) { - hoverListener.stop(); - if (dates) { - if (+dates[0] == +dates[1]) { - reportDayClick(dates[0], true, ev); - } - reportSelection(dates[0], dates[1], true, ev); - } - }); - } - } - - -} - -function OverlayManager() { - var t = this; - - - // exports - t.renderOverlay = renderOverlay; - t.clearOverlays = clearOverlays; - - - // locals - var usedOverlays = []; - var unusedOverlays = []; - - - function renderOverlay(rect, parent) { - var e = unusedOverlays.shift(); - if (!e) { - e = $("
    "); - } - if (e[0].parentNode != parent[0]) { - e.appendTo(parent); - } - usedOverlays.push(e.css(rect).show()); - return e; - } - - - function clearOverlays() { - var e; - while (e = usedOverlays.shift()) { - unusedOverlays.push(e.hide().unbind()); - } - } - - -} - -function CoordinateGrid(buildFunc) { - - var t = this; - var rows; - var cols; - - - t.build = function() { - rows = []; - cols = []; - buildFunc(rows, cols); - }; - - - t.cell = function(x, y) { - var rowCnt = rows.length; - var colCnt = cols.length; - var i, r=-1, c=-1; - for (i=0; i= rows[i][0] && y < rows[i][1]) { - r = i; - break; - } - } - for (i=0; i= cols[i][0] && x < cols[i][1]) { - c = i; - break; - } - } - return (r>=0 && c>=0) ? { row:r, col:c } : null; - }; - - - t.rect = function(row0, col0, row1, col1, originElement) { // row1,col1 is inclusive - var origin = originElement.offset(); - return { - top: rows[row0][0] - origin.top, - left: cols[col0][0] - origin.left, - width: cols[col1][1] - cols[col0][0], - height: rows[row1][1] - rows[row0][0] - }; - }; - -} - -function HoverListener(coordinateGrid) { - - - var t = this; - var bindType; - var change; - var firstCell; - var cell; - - - t.start = function(_change, ev, _bindType) { - change = _change; - firstCell = cell = null; - coordinateGrid.build(); - mouse(ev); - bindType = _bindType || 'mousemove'; - $(document).bind(bindType, mouse); - }; - - - function mouse(ev) { - _fixUIEvent(ev); // see below - var newCell = coordinateGrid.cell(ev.pageX, ev.pageY); - if (!newCell != !cell || newCell && (newCell.row != cell.row || newCell.col != cell.col)) { - if (newCell) { - if (!firstCell) { - firstCell = newCell; - } - change(newCell, firstCell, newCell.row-firstCell.row, newCell.col-firstCell.col); - }else{ - change(newCell, firstCell); - } - cell = newCell; - } - } - - - t.stop = function() { - $(document).unbind(bindType, mouse); - return cell; - }; - - -} - - - -// this fix was only necessary for jQuery UI 1.8.16 (and jQuery 1.7 or 1.7.1) -// upgrading to jQuery UI 1.8.17 (and using either jQuery 1.7 or 1.7.1) fixed the problem -// but keep this in here for 1.8.16 users -// and maybe remove it down the line - -function _fixUIEvent(event) { // for issue 1168 - if (event.pageX === undefined) { - event.pageX = event.originalEvent.pageX; - event.pageY = event.originalEvent.pageY; - } -} -function HorizontalPositionCache(getElement) { - - var t = this, - elements = {}, - lefts = {}, - rights = {}; - - function e(i) { - return elements[i] = elements[i] || getElement(i); - } - - t.left = function(i) { - return lefts[i] = lefts[i] === undefined ? e(i).position().left : lefts[i]; - }; - - t.right = function(i) { - return rights[i] = rights[i] === undefined ? t.left(i) + e(i).width() : rights[i]; - }; - - t.clear = function() { - elements = {}; - lefts = {}; - rights = {}; - }; - -} - -})(jQuery); diff --git a/3rdparty/fullcalendar/js/fullcalendar.min.js b/3rdparty/fullcalendar/js/fullcalendar.min.js deleted file mode 100644 index da6c7c09fda3570ebdfc118d8819efad4c83d37d..0000000000000000000000000000000000000000 --- a/3rdparty/fullcalendar/js/fullcalendar.min.js +++ /dev/null @@ -1,114 +0,0 @@ -/* - - FullCalendar v1.5.4 - http://arshaw.com/fullcalendar/ - - Use fullcalendar.css for basic styling. - For event drag & drop, requires jQuery UI draggable. - For event resizing, requires jQuery UI resizable. - - Copyright (c) 2011 Adam Shaw - Dual licensed under the MIT and GPL licenses, located in - MIT-LICENSE.txt and GPL-LICENSE.txt respectively. - - Date: Tue Sep 4 23:38:33 2012 -0700 - -*/ -(function(m,ma){function wb(a){m.extend(true,Ya,a)}function Yb(a,b,e){function d(k){if(E){u();q();na();S(k)}else f()}function f(){B=b.theme?"ui":"fc";a.addClass("fc");b.isRTL&&a.addClass("fc-rtl");b.theme&&a.addClass("ui-widget");E=m("
    ").prependTo(a);C=new Zb(X,b);(P=C.render())&&a.prepend(P);y(b.defaultView);m(window).resize(oa);t()||g()}function g(){setTimeout(function(){!n.start&&t()&&S()},0)}function l(){m(window).unbind("resize",oa);C.destroy(); -E.remove();a.removeClass("fc fc-rtl ui-widget")}function j(){return i.offsetWidth!==0}function t(){return m("body")[0].offsetWidth!==0}function y(k){if(!n||k!=n.name){F++;pa();var D=n,Z;if(D){(D.beforeHide||xb)();Za(E,E.height());D.element.hide()}else Za(E,1);E.css("overflow","hidden");if(n=Y[k])n.element.show();else n=Y[k]=new Ja[k](Z=s=m("
    ").appendTo(E),X);D&&C.deactivateButton(D.name);C.activateButton(k);S();E.css("overflow","");D&& -Za(E,1);Z||(n.afterShow||xb)();F--}}function S(k){if(j()){F++;pa();o===ma&&u();var D=false;if(!n.start||k||r=n.end){n.render(r,k||0);fa(true);D=true}else if(n.sizeDirty){n.clearEvents();fa();D=true}else if(n.eventsDirty){n.clearEvents();D=true}n.sizeDirty=false;n.eventsDirty=false;ga(D);W=a.outerWidth();C.updateTitle(n.title);k=new Date;k>=n.start&&k").append(m("").append(f("left")).append(f("center")).append(f("right")))}function d(){Q.remove()}function f(u){var fa=m("");(u=b.header[u])&&m.each(u.split(" "),function(oa){oa>0&&fa.append("");var ga; -m.each(this.split(","),function(ra,sa){if(sa=="title"){fa.append("

     

    ");ga&&ga.addClass(q+"-corner-right");ga=null}else{var ha;if(a[sa])ha=a[sa];else if(Ja[sa])ha=function(){na.removeClass(q+"-state-hover");a.changeView(sa)};if(ha){ra=b.theme?jb(b.buttonIcons,sa):null;var da=jb(b.buttonText,sa),na=m(""+(ra?"":da)+"");if(na){na.click(function(){na.hasClass(q+"-state-disabled")||ha()}).mousedown(function(){na.not("."+q+"-state-active").not("."+q+"-state-disabled").addClass(q+"-state-down")}).mouseup(function(){na.removeClass(q+"-state-down")}).hover(function(){na.not("."+q+"-state-active").not("."+q+"-state-disabled").addClass(q+"-state-hover")},function(){na.removeClass(q+"-state-hover").removeClass(q+"-state-down")}).appendTo(fa); -ga||na.addClass(q+"-corner-left");ga=na}}}});ga&&ga.addClass(q+"-corner-right")});return fa}function g(u){Q.find("h2").html(u)}function l(u){Q.find("span.fc-button-"+u).addClass(q+"-state-active")}function j(u){Q.find("span.fc-button-"+u).removeClass(q+"-state-active")}function t(u){Q.find("span.fc-button-"+u).addClass(q+"-state-disabled")}function y(u){Q.find("span.fc-button-"+u).removeClass(q+"-state-disabled")}var S=this;S.render=e;S.destroy=d;S.updateTitle=g;S.activateButton=l;S.deactivateButton= -j;S.disableButton=t;S.enableButton=y;var Q=m([]),q}function $b(a,b){function e(c,z){return!ca||cka}function d(c,z){ca=c;ka=z;L=[];c=++qa;G=z=U.length;for(var H=0;Hl;y--)if(S=dc[e.substring(l,y)]){if(f)Q+=S(f,d);l=y-1;break}if(y==l)if(f)Q+=t}}return Q}function Ua(a){return a.end?ec(a.end,a.allDay):ba(N(a.start),1)}function ec(a,b){a=N(a);return b||a.getHours()||a.getMinutes()?ba(a,1):Ka(a)}function fc(a,b){return(b.msLength-a.msLength)*100+(a.event.start-b.event.start)}function Cb(a,b){return a.end>b.start&&a.starte&&td){y=N(d);Q=false}else{y=y;Q=true}f.push({event:j,start:t,end:y,isStart:S,isEnd:Q,msLength:y-t})}}return f.sort(fc)}function ob(a){var b=[],e,d=a.length,f,g,l,j;for(e=0;e=0;e--){d=a[b[e].toLowerCase()];if(d!==ma)return d}return a[""]}function Qa(a){return a.replace(/&/g, -"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"
    ")}function Ib(a){return a.id+"/"+a.className+"/"+a.style.cssText.replace(/(^|;)\s*(top|left|width|height)\s*:[^;]*/ig,"")}function qb(a){a.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})}function ab(a){a.children().removeClass("fc-first fc-last").filter(":first-child").addClass("fc-first").end().filter(":last-child").addClass("fc-last")} -function rb(a,b){a.each(function(e,d){d.className=d.className.replace(/^fc-\w*/,"fc-"+lc[b.getDay()])})}function Jb(a,b){var e=a.source||{},d=a.color,f=e.color,g=b("eventColor"),l=a.backgroundColor||d||e.backgroundColor||f||b("eventBackgroundColor")||g;d=a.borderColor||d||e.borderColor||f||b("eventBorderColor")||g;a=a.textColor||e.textColor||b("eventTextColor");b=[];l&&b.push("background-color:"+l);d&&b.push("border-color:"+d);a&&b.push("color:"+a);return b.join(";")}function $a(a,b,e){if(m.isFunction(a))a= -[a];if(a){var d,f;for(d=0;d";for(aa=0;aa";R+="";for(aa=0;aa";for(V=0;V
    "+(I?"
    ":"")+"
     
    ";R+=""}R+="";w= -m(R).appendTo(a);K=w.find("thead");i=K.find("th");C=w.find("tbody");P=C.find("tr");E=C.find("td");B=E.filter(":first-child");n=P.eq(0).find("div.fc-day-content div");ab(K.add(K.find("tr")));ab(P);P.eq(0).addClass("fc-first");y(E);Y=m("
    ").appendTo(a)}function l(w){var I=w||v==1,R=p.start.getMonth(),V=Ka(new Date),ea,aa,va;I&&i.each(function(wa,Ga){ea=m(Ga);aa=ca(wa);ea.html(ya(aa,$));rb(ea,aa)});E.each(function(wa,Ga){ea=m(Ga);aa=ca(wa);aa.getMonth()== -R?ea.removeClass("fc-other-month"):ea.addClass("fc-other-month");+aa==+V?ea.addClass(la+"-state-highlight fc-today"):ea.removeClass(la+"-state-highlight fc-today");ea.find("div.fc-day-number").text(aa.getDate());I&&rb(ea,aa)});P.each(function(wa,Ga){va=m(Ga);if(wa div"),(ea==v-1?R:I)-Sa(V))}})}function t(w){W=w;M.clear();s=Math.floor(W/F);Va(i.slice(0,-1),s)}function y(w){w.click(S).mousedown(X)}function S(w){if(!L("selectable")){var I=parseInt(this.className.match(/fc\-day(\d+)/)[1]);I=ca(I);c("dayClick",this,I,true,w)}}function Q(w,I,R){R&&r.build();R=N(p.visStart);for(var V=ba(N(R),F),ea=0;ea ";for(A=0;A";x+="  ";for(A=0;A
     
    ";x+=" ";v=m(x).appendTo(a);F=v.find("thead");r=F.find("th").slice(1,-1);J=v.find("tbody");M=J.find("td").slice(0,-1);k=M.find("div.fc-day-content div");D=M.eq(0);Z=D.find("> div");ab(F.add(F.find("tr")));ab(J.add(J.find("tr")));aa=F.find("th:first");va=v.find(".fc-agenda-gutter");ja=m("
    ").appendTo(a); -if(i("allDaySlot")){ia=m("
    ").appendTo(ja);x="
    "+i("allDayText")+"
     
    ";la=m(x).appendTo(ja);$=la.find("tr");q($.find("td"));aa=aa.add(la.find("th:first"));va=va.add(la.find("th.fc-agenda-gutter"));ja.append("
    ")}else ia=m([]);w=m("
    ").appendTo(ja);I=m("
    ").appendTo(w);R=m("
    ").appendTo(I);x="";ta=zb();za=xa(N(ta),bb);xa(ta,La);for(A=tb=0;ta";xa(ta,i("slotMinutes"));tb++}x+="
    "+(!Ea||!Da?s(ta,i("axisFormat")):" ")+"
     
    ";V=m(x).appendTo(I);ea=V.find("div:first");u(V.find("td"));aa=aa.add(V.find("th:first"))}function l(){var h,O,x,A,ta=Ka(new Date);for(h=0;h=0&&xa(O,La+h*i("slotMinutes"));return O}function ua(h){return ba(N(K.visStart),h*Ha+Ia)}function pa(h){return i("allDaySlot")&&!h.row}function U(h){return(h-Math.max(Tb,Sb)+Ba)%Ba*Ha+Ia}function ca(h,O){h=N(h,true);if(O=xa(N(h),bb))return V.height(); -h=i("slotMinutes");O=O.getHours()*60+O.getMinutes()-La;var x=Math.floor(O/h),A=ub[x];if(A===ma)A=ub[x]=V.find("tr:eq("+x+") td div")[0].offsetTop;return Math.max(0,Math.round(A-1+Xa*(O%h/h)))}function ka(){return{left:Ma,right:Ga-vb}}function qa(){return $}function G(h){var O=N(h.start);if(h.allDay)return O;return xa(O,i("defaultEventMinutes"))}function p(h,O){if(O)return N(h);return xa(N(h),i("slotMinutes"))}function L(h,O,x){if(x)i("allDaySlot")&&oa(h,ba(N(O),1),true);else c(h,O)}function c(h,O){var x= -i("selectHelper");Na.build();if(x){var A=Ca(h,K.visStart)*Ha+Ia;if(A>=0&&Ata){A.top=ta;A.height=za-ta;A.left+=2;A.width-=5;if(m.isFunction(x)){if(h=x(h,O)){A.position="absolute";A.zIndex=8;wa=m(h).css(A).appendTo(I)}}else{A.isStart=true;A.isEnd=true;wa=m(o({title:"",start:h,end:O,className:["fc-select-helper"],editable:false},A));wa.css("opacity",i("dragOpacity"))}if(wa){u(wa);I.append(wa);Va(wa,A.width,true);Eb(wa,A.height,true)}}}}else ra(h, -O)}function z(){B();if(wa){wa.remove();wa=null}}function H(h){if(h.which==1&&i("selectable")){Y(h);var O;Ra.start(function(x,A){z();if(x&&x.col==A.col&&!pa(x)){A=na(A);x=na(x);O=[A,xa(N(A),i("slotMinutes")),x,xa(N(x),i("slotMinutes"))].sort(Gb);c(O[0],O[3])}else O=null},h);m(document).one("mouseup",function(x){Ra.stop();if(O){+O[0]==+O[1]&&T(O[0],false,x);n(O[0],O[3],false,x)}})}}function T(h,O,x){C("dayClick",M[U(h.getDay())],h,O,x)}function X(h,O){Ra.start(function(x){B();if(x)if(pa(x))ga(x.row, -x.col,x.row,x.col);else{x=na(x);var A=xa(N(x),i("defaultEventMinutes"));ra(x,A)}},O)}function ya(h,O,x){var A=Ra.stop();B();A&&C("drop",h,na(A),pa(A),O,x)}var K=this;K.renderAgenda=d;K.setWidth=t;K.setHeight=j;K.beforeHide=S;K.afterShow=Q;K.defaultEventEnd=G;K.timePosition=ca;K.dayOfWeekCol=U;K.dateCell=da;K.cellDate=na;K.cellIsAllDay=pa;K.allDayRow=qa;K.allDayBounds=ka;K.getHoverListener=function(){return Ra};K.colContentLeft=sa;K.colContentRight=ha;K.getDaySegmentContainer=function(){return ia}; -K.getSlotSegmentContainer=function(){return R};K.getMinMinute=function(){return La};K.getMaxMinute=function(){return bb};K.getBodyContent=function(){return I};K.getRowCnt=function(){return 1};K.getColCnt=function(){return Ba};K.getColWidth=function(){return db};K.getSlotHeight=function(){return Xa};K.defaultSelectionEnd=p;K.renderDayOverlay=oa;K.renderSelection=L;K.clearSelection=z;K.reportDayClick=T;K.dragStart=X;K.dragStop=ya;Kb.call(K,a,b,e);Lb.call(K);Mb.call(K);sc.call(K);var i=K.opt,C=K.trigger, -P=K.clearEvents,E=K.renderOverlay,B=K.clearOverlays,n=K.reportSelection,Y=K.unselect,W=K.daySelectionMousedown,o=K.slotSegHtml,s=b.formatDate,v,F,r,J,M,k,D,Z,ja,ia,la,$,w,I,R,V,ea,aa,va,wa,Ga,Wb,Ma,db,vb,Xa,Xb,Ba,tb,Na,Ra,cb,ub={},Wa,Tb,Sb,Ub,Ha,Ia,La,bb,Vb;qb(a.addClass("fc-agenda"));Na=new Nb(function(h,O){function x(eb){return Math.max(Ea,Math.min(tc,eb))}var A,ta,za;r.each(function(eb,uc){A=m(uc);ta=A.offset().left;if(eb)za[1]=ta;za=[ta];O[eb]=za});za[1]=ta+A.outerWidth();if(i("allDaySlot")){A= -$;ta=A.offset().top;h[0]=[ta,ta+A.outerHeight()]}for(var Da=I.offset().top,Ea=w.offset().top,tc=Ea+w.outerHeight(),fb=0;fb
    "+Qa(W(o.start,o.end,u("timeFormat")))+"
    "+Qa(o.title)+"
    ";if(s.isEnd&&ga(o))v+="
    =
    "; -v+="";return v}function j(o,s,v){oa(o)&&y(o,s,v.isStart);v.isEnd&&ga(o)&&c(o,s,v);da(o,s)}function t(o,s,v){var F=s.find("div.fc-event-time");oa(o)&&S(o,s,F);v.isEnd&&ga(o)&&Q(o,s,F);da(o,s)}function y(o,s,v){function F(){if(!M){s.width(r).height("").draggable("option","grid",null);M=true}}var r,J,M=true,k,D=u("isRTL")?-1:1,Z=U(),ja=H(),ia=T(),la=ka();s.draggable({zIndex:9,opacity:u("dragOpacity","month"),revertDuration:u("dragRevertDuration"),start:function($,w){fa("eventDragStart", -s,o,$,w);i(o,s);r=s.width();Z.start(function(I,R,V,ea){B();if(I){J=false;k=ea*D;if(I.row)if(v){if(M){s.width(ja-10);Eb(s,ia*Math.round((o.end?(o.end-o.start)/wc:u("defaultEventMinutes"))/u("slotMinutes")));s.draggable("option","grid",[ja,1]);M=false}}else J=true;else{E(ba(N(o.start),k),ba(Ua(o),k));F()}J=J||M&&!k}else{F();J=true}s.draggable("option","revert",J)},$,"drag")},stop:function($,w){Z.stop();B();fa("eventDragStop",s,o,$,w);if(J){F();s.css("filter","");K(o,s)}else{var I=0;M||(I=Math.round((s.offset().top- -X().offset().top)/ia)*u("slotMinutes")+la-(o.start.getHours()*60+o.start.getMinutes()));C(this,o,k,I,M,$,w)}}})}function S(o,s,v){function F(I){var R=xa(N(o.start),I),V;if(o.end)V=xa(N(o.end),I);v.text(W(R,V,u("timeFormat")))}function r(){if(M){v.css("display","");s.draggable("option","grid",[$,w]);M=false}}var J,M=false,k,D,Z,ja=u("isRTL")?-1:1,ia=U(),la=z(),$=H(),w=T();s.draggable({zIndex:9,scroll:false,grid:[$,w],axis:la==1?"y":false,opacity:u("dragOpacity"),revertDuration:u("dragRevertDuration"), -start:function(I,R){fa("eventDragStart",s,o,I,R);i(o,s);J=s.position();D=Z=0;ia.start(function(V,ea,aa,va){s.draggable("option","revert",!V);B();if(V){k=va*ja;if(u("allDaySlot")&&!V.row){if(!M){M=true;v.hide();s.draggable("option","grid",null)}E(ba(N(o.start),k),ba(Ua(o),k))}else r()}},I,"drag")},drag:function(I,R){D=Math.round((R.position.top-J.top)/w)*u("slotMinutes");if(D!=Z){M||F(D);Z=D}},stop:function(I,R){var V=ia.stop();B();fa("eventDragStop",s,o,I,R);if(V&&(k||D||M))C(this,o,k,M?0:D,M,I,R); -else{r();s.css("filter","");s.css(J);F(0);K(o,s)}}})}function Q(o,s,v){var F,r,J=T();s.resizable({handles:{s:"div.ui-resizable-s"},grid:J,start:function(M,k){F=r=0;i(o,s);s.css("z-index",9);fa("eventResizeStart",this,o,M,k)},resize:function(M,k){F=Math.round((Math.max(J,s.height())-k.originalSize.height)/J);if(F!=r){v.text(W(o.start,!F&&!o.end?null:xa(ra(o),u("slotMinutes")*F),u("timeFormat")));r=F}},stop:function(M,k){fa("eventResizeStop",this,o,M,k);if(F)P(this,o,0,u("slotMinutes")*F,M,k);else{s.css("z-index", -8);K(o,s)}}})}var q=this;q.renderEvents=a;q.compileDaySegs=e;q.clearEvents=b;q.slotSegHtml=l;q.bindDaySeg=j;Qb.call(q);var u=q.opt,fa=q.trigger,oa=q.isEventDraggable,ga=q.isEventResizable,ra=q.eventEnd,sa=q.reportEvents,ha=q.reportEventClear,da=q.eventElementHandlers,na=q.setHeight,ua=q.getDaySegmentContainer,pa=q.getSlotSegmentContainer,U=q.getHoverListener,ca=q.getMaxMinute,ka=q.getMinMinute,qa=q.timePosition,G=q.colContentLeft,p=q.colContentRight,L=q.renderDaySegs,c=q.resizableDayEvent,z=q.getColCnt, -H=q.getColWidth,T=q.getSlotHeight,X=q.getBodyContent,ya=q.reportEventElement,K=q.showEvents,i=q.hideEvents,C=q.eventDrop,P=q.eventResize,E=q.renderDayOverlay,B=q.clearOverlays,n=q.calendar,Y=n.formatDate,W=n.formatDates}function vc(a){var b,e,d,f,g,l;for(b=a.length-1;b>0;b--){f=a[b];for(e=0;e"),B=z(),n=i.length,Y;E[0].innerHTML=e(i);E=E.children();B.append(E);d(i,E);l(i);j(i);t(i);Q(i,S(y()));E=[];for(B=0;B
    ";if(!n.allDay&&B.isStart)k+=""+Qa(T(n.start,n.end,fa("timeFormat")))+"";k+=""+Qa(n.title)+"
    ";if(B.isEnd&&ra(n))k+="
       
    ";k+="";B.left=r;B.outerWidth=J-r;B.startCol=v;B.endCol=F+1}return k}function d(i,C){var P,E=i.length,B,n,Y;for(P=0;P div");return P}function S(i){var C,P=i.length,E=[];for(C=0;C"));j[0].parentNode!=l[0]&&j.appendTo(l);d.push(j.css(g).show());return j}function b(){for(var g;g=d.shift();)f.push(g.hide().unbind())}var e=this;e.renderOverlay=a;e.clearOverlays=b;var d=[],f=[]}function Nb(a){var b=this,e,d;b.build=function(){e=[];d=[];a(e,d)};b.cell=function(f,g){var l=e.length,j=d.length, -t,y=-1,S=-1;for(t=0;t=e[t][0]&&g=d[t][0]&&f=0&&S>=0?{row:y,col:S}:null};b.rect=function(f,g,l,j,t){t=t.offset();return{top:e[f][0]-t.top,left:d[g][0]-t.left,width:d[j][1]-d[g][0],height:e[l][1]-e[f][0]}}}function Ob(a){function b(j){xc(j);j=a.cell(j.pageX,j.pageY);if(!j!=!l||j&&(j.row!=l.row||j.col!=l.col)){if(j){g||(g=j);f(j,g,j.row-g.row,j.col-g.col)}else f(j,g);l=j}}var e=this,d,f,g,l;e.start=function(j,t,y){f=j; -g=l=null;a.build();b(t);d=y||"mousemove";m(document).bind(d,b)};e.stop=function(){m(document).unbind(d,b);return l}}function xc(a){if(a.pageX===ma){a.pageX=a.originalEvent.pageX;a.pageY=a.originalEvent.pageY}}function Pb(a){function b(l){return d[l]=d[l]||a(l)}var e=this,d={},f={},g={};e.left=function(l){return f[l]=f[l]===ma?b(l).position().left:f[l]};e.right=function(l){return g[l]=g[l]===ma?e.left(l)+b(l).width():g[l]};e.clear=function(){d={};f={};g={}}}var Ya={defaultView:"month",aspectRatio:1.35, -header:{left:"title",center:"",right:"today prev,next"},weekends:true,allDayDefault:true,ignoreTimezone:true,lazyFetching:true,startParam:"start",endParam:"end",titleFormat:{month:"MMMM yyyy",week:"MMM d[ yyyy]{ '—'[ MMM] d yyyy}",day:"dddd, MMM d, yyyy"},columnFormat:{month:"ddd",week:"ddd M/d",day:"dddd M/d"},timeFormat:{"":"h(:mm)t"},isRTL:false,firstDay:0,monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan", -"Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],buttonText:{prev:" ◄ ",next:" ► ",prevYear:" << ",nextYear:" >> ",today:"today",month:"month",week:"week",day:"day"},theme:false,buttonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e"},unselectAuto:true,dropAccept:"*"},yc= -{header:{left:"next,prev today",center:"",right:"title"},buttonText:{prev:" ► ",next:" ◄ ",prevYear:" >> ",nextYear:" << "},buttonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w"}},Aa=m.fullCalendar={version:"1.5.4"},Ja=Aa.views={};m.fn.fullCalendar=function(a){if(typeof a=="string"){var b=Array.prototype.slice.call(arguments,1),e;this.each(function(){var f=m.data(this,"fullCalendar");if(f&&m.isFunction(f[a])){f=f[a].apply(f, -b);if(e===ma)e=f;a=="destroy"&&m.removeData(this,"fullCalendar")}});if(e!==ma)return e;return this}var d=a.eventSources||[];delete a.eventSources;if(a.events){d.push(a.events);delete a.events}a=m.extend(true,{},Ya,a.isRTL||a.isRTL===ma&&Ya.isRTL?yc:{},a);this.each(function(f,g){f=m(g);g=new Yb(f,a,d);f.data("fullCalendar",g);g.render()});return this};Aa.sourceNormalizers=[];Aa.sourceFetchers=[];var ac={dataType:"json",cache:false},bc=1;Aa.addDays=ba;Aa.cloneDate=N;Aa.parseDate=kb;Aa.parseISO8601= -Bb;Aa.parseTime=mb;Aa.formatDate=Oa;Aa.formatDates=ib;var lc=["sun","mon","tue","wed","thu","fri","sat"],Ab=864E5,cc=36E5,wc=6E4,dc={s:function(a){return a.getSeconds()},ss:function(a){return Pa(a.getSeconds())},m:function(a){return a.getMinutes()},mm:function(a){return Pa(a.getMinutes())},h:function(a){return a.getHours()%12||12},hh:function(a){return Pa(a.getHours()%12||12)},H:function(a){return a.getHours()},HH:function(a){return Pa(a.getHours())},d:function(a){return a.getDate()},dd:function(a){return Pa(a.getDate())}, -ddd:function(a,b){return b.dayNamesShort[a.getDay()]},dddd:function(a,b){return b.dayNames[a.getDay()]},M:function(a){return a.getMonth()+1},MM:function(a){return Pa(a.getMonth()+1)},MMM:function(a,b){return b.monthNamesShort[a.getMonth()]},MMMM:function(a,b){return b.monthNames[a.getMonth()]},yy:function(a){return(a.getFullYear()+"").substring(2)},yyyy:function(a){return a.getFullYear()},t:function(a){return a.getHours()<12?"a":"p"},tt:function(a){return a.getHours()<12?"am":"pm"},T:function(a){return a.getHours()< -12?"A":"P"},TT:function(a){return a.getHours()<12?"AM":"PM"},u:function(a){return Oa(a,"yyyy-MM-dd'T'HH:mm:ss'Z'")},S:function(a){a=a.getDate();if(a>10&&a<20)return"th";return["st","nd","rd"][a%10-1]||"th"}};Aa.applyAll=$a;Ja.month=mc;Ja.basicWeek=nc;Ja.basicDay=oc;wb({weekMode:"fixed"});Ja.agendaWeek=qc;Ja.agendaDay=rc;wb({allDaySlot:true,allDayText:"all-day",firstHour:6,slotMinutes:30,defaultEventMinutes:120,axisFormat:"h(:mm)tt",timeFormat:{agenda:"h:mm{ - h:mm}"},dragOpacity:{agenda:0.5},minTime:0, -maxTime:24})})(jQuery); diff --git a/3rdparty/fullcalendar/js/gcal.js b/3rdparty/fullcalendar/js/gcal.js deleted file mode 100644 index ba42ac560471c7d8f86d44dbbf3004d34ebfc992..0000000000000000000000000000000000000000 --- a/3rdparty/fullcalendar/js/gcal.js +++ /dev/null @@ -1,112 +0,0 @@ -/* - * FullCalendar v1.5.4 Google Calendar Plugin - * - * Copyright (c) 2011 Adam Shaw - * Dual licensed under the MIT and GPL licenses, located in - * MIT-LICENSE.txt and GPL-LICENSE.txt respectively. - * - * Date: Tue Sep 4 23:38:33 2012 -0700 - * - */ - -(function($) { - - -var fc = $.fullCalendar; -var formatDate = fc.formatDate; -var parseISO8601 = fc.parseISO8601; -var addDays = fc.addDays; -var applyAll = fc.applyAll; - - -fc.sourceNormalizers.push(function(sourceOptions) { - if (sourceOptions.dataType == 'gcal' || - sourceOptions.dataType === undefined && - (sourceOptions.url || '').match(/^(http|https):\/\/www.google.com\/calendar\/feeds\//)) { - sourceOptions.dataType = 'gcal'; - if (sourceOptions.editable === undefined) { - sourceOptions.editable = false; - } - } -}); - - -fc.sourceFetchers.push(function(sourceOptions, start, end) { - if (sourceOptions.dataType == 'gcal') { - return transformOptions(sourceOptions, start, end); - } -}); - - -function transformOptions(sourceOptions, start, end) { - - var success = sourceOptions.success; - var data = $.extend({}, sourceOptions.data || {}, { - 'start-min': formatDate(start, 'u'), - 'start-max': formatDate(end, 'u'), - 'singleevents': true, - 'max-results': 9999 - }); - - var ctz = sourceOptions.currentTimezone; - if (ctz) { - data.ctz = ctz = ctz.replace(' ', '_'); - } - - return $.extend({}, sourceOptions, { - url: sourceOptions.url.replace(/\/basic$/, '/full') + '?alt=json-in-script&callback=?', - dataType: 'jsonp', - data: data, - startParam: false, - endParam: false, - success: function(data) { - var events = []; - if (data.feed.entry) { - $.each(data.feed.entry, function(i, entry) { - var startStr = entry['gd$when'][0]['startTime']; - var start = parseISO8601(startStr, true); - var end = parseISO8601(entry['gd$when'][0]['endTime'], true); - var allDay = startStr.indexOf('T') == -1; - var url; - $.each(entry.link, function(i, link) { - if (link.type == 'text/html') { - url = link.href; - if (ctz) { - url += (url.indexOf('?') == -1 ? '?' : '&') + 'ctz=' + ctz; - } - } - }); - if (allDay) { - addDays(end, -1); // make inclusive - } - events.push({ - id: entry['gCal$uid']['value'], - title: entry['title']['$t'], - url: url, - start: start, - end: end, - allDay: allDay, - location: entry['gd$where'][0]['valueString'], - description: entry['content']['$t'] - }); - }); - } - var args = [events].concat(Array.prototype.slice.call(arguments, 1)); - var res = applyAll(success, this, args); - if ($.isArray(res)) { - return res; - } - return events; - } - }); - -} - - -// legacy -fc.gcalFeed = function(url, sourceOptions) { - return $.extend({}, sourceOptions, { url: url, dataType: 'gcal' }); -}; - - -})(jQuery); diff --git a/3rdparty/getid3/extension.cache.dbm.php b/3rdparty/getid3/extension.cache.dbm.php deleted file mode 100644 index 9a88c22b2465c677606d0b408c274ef7f09f2c65..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/extension.cache.dbm.php +++ /dev/null @@ -1,211 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// extension.cache.dbm.php - part of getID3() // -// Please see readme.txt for more information // -// /// -///////////////////////////////////////////////////////////////// -// // -// This extension written by Allan Hansen // -// /// -///////////////////////////////////////////////////////////////// - - -/** -* This is a caching extension for getID3(). It works the exact same -* way as the getID3 class, but return cached information very fast -* -* Example: -* -* Normal getID3 usage (example): -* -* require_once 'getid3/getid3.php'; -* $getID3 = new getID3; -* $getID3->encoding = 'UTF-8'; -* $info1 = $getID3->analyze('file1.flac'); -* $info2 = $getID3->analyze('file2.wv'); -* -* getID3_cached usage: -* -* require_once 'getid3/getid3.php'; -* require_once 'getid3/getid3/extension.cache.dbm.php'; -* $getID3 = new getID3_cached('db3', '/tmp/getid3_cache.dbm', -* '/tmp/getid3_cache.lock'); -* $getID3->encoding = 'UTF-8'; -* $info1 = $getID3->analyze('file1.flac'); -* $info2 = $getID3->analyze('file2.wv'); -* -* -* Supported Cache Types -* -* SQL Databases: (use extension.cache.mysql) -* -* cache_type cache_options -* ------------------------------------------------------------------- -* mysql host, database, username, password -* -* -* DBM-Style Databases: (this extension) -* -* cache_type cache_options -* ------------------------------------------------------------------- -* gdbm dbm_filename, lock_filename -* ndbm dbm_filename, lock_filename -* db2 dbm_filename, lock_filename -* db3 dbm_filename, lock_filename -* db4 dbm_filename, lock_filename (PHP5 required) -* -* PHP must have write access to both dbm_filename and lock_filename. -* -* -* Recommended Cache Types -* -* Infrequent updates, many reads any DBM -* Frequent updates mysql -*/ - - -class getID3_cached_dbm extends getID3 -{ - - // public: constructor - see top of this file for cache type and cache_options - function getID3_cached_dbm($cache_type, $dbm_filename, $lock_filename) { - - // Check for dba extension - if (!extension_loaded('dba')) { - throw new Exception('PHP is not compiled with dba support, required to use DBM style cache.'); - } - - // Check for specific dba driver - if (!function_exists('dba_handlers') || !in_array($cache_type, dba_handlers())) { - throw new Exception('PHP is not compiled --with '.$cache_type.' support, required to use DBM style cache.'); - } - - // Create lock file if needed - if (!file_exists($lock_filename)) { - if (!touch($lock_filename)) { - throw new Exception('failed to create lock file: '.$lock_filename); - } - } - - // Open lock file for writing - if (!is_writeable($lock_filename)) { - throw new Exception('lock file: '.$lock_filename.' is not writable'); - } - $this->lock = fopen($lock_filename, 'w'); - - // Acquire exclusive write lock to lock file - flock($this->lock, LOCK_EX); - - // Create dbm-file if needed - if (!file_exists($dbm_filename)) { - if (!touch($dbm_filename)) { - throw new Exception('failed to create dbm file: '.$dbm_filename); - } - } - - // Try to open dbm file for writing - $this->dba = dba_open($dbm_filename, 'w', $cache_type); - if (!$this->dba) { - - // Failed - create new dbm file - $this->dba = dba_open($dbm_filename, 'n', $cache_type); - - if (!$this->dba) { - throw new Exception('failed to create dbm file: '.$dbm_filename); - } - - // Insert getID3 version number - dba_insert(getID3::VERSION, getID3::VERSION, $this->dba); - } - - // Init misc values - $this->cache_type = $cache_type; - $this->dbm_filename = $dbm_filename; - - // Register destructor - register_shutdown_function(array($this, '__destruct')); - - // Check version number and clear cache if changed - if (dba_fetch(getID3::VERSION, $this->dba) != getID3::VERSION) { - $this->clear_cache(); - } - - parent::getID3(); - } - - - - // public: destuctor - function __destruct() { - - // Close dbm file - dba_close($this->dba); - - // Release exclusive lock - flock($this->lock, LOCK_UN); - - // Close lock file - fclose($this->lock); - } - - - - // public: clear cache - function clear_cache() { - - // Close dbm file - dba_close($this->dba); - - // Create new dbm file - $this->dba = dba_open($this->dbm_filename, 'n', $this->cache_type); - - if (!$this->dba) { - throw new Exception('failed to clear cache/recreate dbm file: '.$this->dbm_filename); - } - - // Insert getID3 version number - dba_insert(getID3::VERSION, getID3::VERSION, $this->dba); - - // Re-register shutdown function - register_shutdown_function(array($this, '__destruct')); - } - - - - // public: analyze file - function analyze($filename) { - - if (file_exists($filename)) { - - // Calc key filename::mod_time::size - should be unique - $key = $filename.'::'.filemtime($filename).'::'.filesize($filename); - - // Loopup key - $result = dba_fetch($key, $this->dba); - - // Hit - if ($result !== false) { - return unserialize($result); - } - } - - // Miss - $result = parent::analyze($filename); - - // Save result - if (file_exists($filename)) { - dba_insert($key, serialize($result), $this->dba); - } - - return $result; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/extension.cache.mysql.php b/3rdparty/getid3/extension.cache.mysql.php deleted file mode 100644 index 1e1f91fa14aeaba14571385ad91ab15acef8a9df..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/extension.cache.mysql.php +++ /dev/null @@ -1,173 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// extension.cache.mysql.php - part of getID3() // -// Please see readme.txt for more information // -// /// -///////////////////////////////////////////////////////////////// -// // -// This extension written by Allan Hansen // -// Table name mod by Carlo Capocasa // -// /// -///////////////////////////////////////////////////////////////// - - -/** -* This is a caching extension for getID3(). It works the exact same -* way as the getID3 class, but return cached information very fast -* -* Example: (see also demo.cache.mysql.php in /demo/) -* -* Normal getID3 usage (example): -* -* require_once 'getid3/getid3.php'; -* $getID3 = new getID3; -* $getID3->encoding = 'UTF-8'; -* $info1 = $getID3->analyze('file1.flac'); -* $info2 = $getID3->analyze('file2.wv'); -* -* getID3_cached usage: -* -* require_once 'getid3/getid3.php'; -* require_once 'getid3/getid3/extension.cache.mysql.php'; -* // 5th parameter (tablename) is optional, default is 'getid3_cache' -* $getID3 = new getID3_cached_mysql('localhost', 'database', 'username', 'password', 'tablename'); -* $getID3->encoding = 'UTF-8'; -* $info1 = $getID3->analyze('file1.flac'); -* $info2 = $getID3->analyze('file2.wv'); -* -* -* Supported Cache Types (this extension) -* -* SQL Databases: -* -* cache_type cache_options -* ------------------------------------------------------------------- -* mysql host, database, username, password -* -* -* DBM-Style Databases: (use extension.cache.dbm) -* -* cache_type cache_options -* ------------------------------------------------------------------- -* gdbm dbm_filename, lock_filename -* ndbm dbm_filename, lock_filename -* db2 dbm_filename, lock_filename -* db3 dbm_filename, lock_filename -* db4 dbm_filename, lock_filename (PHP5 required) -* -* PHP must have write access to both dbm_filename and lock_filename. -* -* -* Recommended Cache Types -* -* Infrequent updates, many reads any DBM -* Frequent updates mysql -*/ - - -class getID3_cached_mysql extends getID3 -{ - - // private vars - var $cursor; - var $connection; - - - // public: constructor - see top of this file for cache type and cache_options - function getID3_cached_mysql($host, $database, $username, $password, $table='getid3_cache') { - - // Check for mysql support - if (!function_exists('mysql_pconnect')) { - throw new Exception('PHP not compiled with mysql support.'); - } - - // Connect to database - $this->connection = mysql_pconnect($host, $username, $password); - if (!$this->connection) { - throw new Exception('mysql_pconnect() failed - check permissions and spelling.'); - } - - // Select database - if (!mysql_select_db($database, $this->connection)) { - throw new Exception('Cannot use database '.$database); - } - - // Set table - $this->table = $table; - - // Create cache table if not exists - $this->create_table(); - - // Check version number and clear cache if changed - $version = ''; - if ($this->cursor = mysql_query("SELECT `value` FROM `".mysql_real_escape_string($this->table)."` WHERE (`filename` = '".mysql_real_escape_string(getID3::VERSION)."') AND (`filesize` = '-1') AND (`filetime` = '-1') AND (`analyzetime` = '-1')", $this->connection)) { - list($version) = mysql_fetch_array($this->cursor); - } - if ($version != getID3::VERSION) { - $this->clear_cache(); - } - - parent::getID3(); - } - - - - // public: clear cache - function clear_cache() { - - $this->cursor = mysql_query("DELETE FROM `".mysql_real_escape_string($this->table)."`", $this->connection); - $this->cursor = mysql_query("INSERT INTO `".mysql_real_escape_string($this->table)."` VALUES ('".getID3::VERSION."', -1, -1, -1, '".getID3::VERSION."')", $this->connection); - } - - - - // public: analyze file - function analyze($filename) { - - if (file_exists($filename)) { - - // Short-hands - $filetime = filemtime($filename); - $filesize = filesize($filename); - - // Lookup file - $this->cursor = mysql_query("SELECT `value` FROM `".mysql_real_escape_string($this->table)."` WHERE (`filename` = '".mysql_real_escape_string($filename)."') AND (`filesize` = '".mysql_real_escape_string($filesize)."') AND (`filetime` = '".mysql_real_escape_string($filetime)."')", $this->connection); - if (mysql_num_rows($this->cursor) > 0) { - // Hit - list($result) = mysql_fetch_array($this->cursor); - return unserialize(base64_decode($result)); - } - } - - // Miss - $analysis = parent::analyze($filename); - - // Save result - if (file_exists($filename)) { - $this->cursor = mysql_query("INSERT INTO `".mysql_real_escape_string($this->table)."` (`filename`, `filesize`, `filetime`, `analyzetime`, `value`) VALUES ('".mysql_real_escape_string($filename)."', '".mysql_real_escape_string($filesize)."', '".mysql_real_escape_string($filetime)."', '".mysql_real_escape_string(time())."', '".mysql_real_escape_string(base64_encode(serialize($analysis)))."')", $this->connection); - } - return $analysis; - } - - - - // private: (re)create sql table - function create_table($drop=false) { - - $this->cursor = mysql_query("CREATE TABLE IF NOT EXISTS `".mysql_real_escape_string($this->table)."` ( - `filename` VARCHAR(255) NOT NULL DEFAULT '', - `filesize` INT(11) NOT NULL DEFAULT '0', - `filetime` INT(11) NOT NULL DEFAULT '0', - `analyzetime` INT(11) NOT NULL DEFAULT '0', - `value` TEXT NOT NULL, - PRIMARY KEY (`filename`,`filesize`,`filetime`)) TYPE=MyISAM", $this->connection); - echo mysql_error($this->connection); - } -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/getid3.lib.php b/3rdparty/getid3/getid3.lib.php deleted file mode 100644 index 723e2e24c20bde8082db49cb6c9d921806225950..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/getid3.lib.php +++ /dev/null @@ -1,1317 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// getid3.lib.php - part of getID3() // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_lib -{ - - static function PrintHexBytes($string, $hex=true, $spaces=true, $htmlencoding='UTF-8') { - $returnstring = ''; - for ($i = 0; $i < strlen($string); $i++) { - if ($hex) { - $returnstring .= str_pad(dechex(ord($string{$i})), 2, '0', STR_PAD_LEFT); - } else { - $returnstring .= ' '.(preg_match("#[\x20-\x7E]#", $string{$i}) ? $string{$i} : '¤'); - } - if ($spaces) { - $returnstring .= ' '; - } - } - if (!empty($htmlencoding)) { - if ($htmlencoding === true) { - $htmlencoding = 'UTF-8'; // prior to getID3 v1.9.0 the function's 4th parameter was boolean - } - $returnstring = htmlentities($returnstring, ENT_QUOTES, $htmlencoding); - } - return $returnstring; - } - - static function trunc($floatnumber) { - // truncates a floating-point number at the decimal point - // returns int (if possible, otherwise float) - if ($floatnumber >= 1) { - $truncatednumber = floor($floatnumber); - } elseif ($floatnumber <= -1) { - $truncatednumber = ceil($floatnumber); - } else { - $truncatednumber = 0; - } - if (getid3_lib::intValueSupported($truncatednumber)) { - $truncatednumber = (int) $truncatednumber; - } - return $truncatednumber; - } - - - static function safe_inc(&$variable, $increment=1) { - if (isset($variable)) { - $variable += $increment; - } else { - $variable = $increment; - } - return true; - } - - static function CastAsInt($floatnum) { - // convert to float if not already - $floatnum = (float) $floatnum; - - // convert a float to type int, only if possible - if (getid3_lib::trunc($floatnum) == $floatnum) { - // it's not floating point - if (getid3_lib::intValueSupported($floatnum)) { - // it's within int range - $floatnum = (int) $floatnum; - } - } - return $floatnum; - } - - public static function intValueSupported($num) { - // check if integers are 64-bit - static $hasINT64 = null; - if ($hasINT64 === null) { // 10x faster than is_null() - $hasINT64 = is_int(pow(2, 31)); // 32-bit int are limited to (2^31)-1 - if (!$hasINT64 && !defined('PHP_INT_MIN')) { - define('PHP_INT_MIN', ~PHP_INT_MAX); - } - } - // if integers are 64-bit - no other check required - if ($hasINT64 || (($num <= PHP_INT_MAX) && ($num >= PHP_INT_MIN))) { - return true; - } - return false; - } - - static function DecimalizeFraction($fraction) { - list($numerator, $denominator) = explode('/', $fraction); - return $numerator / ($denominator ? $denominator : 1); - } - - - static function DecimalBinary2Float($binarynumerator) { - $numerator = getid3_lib::Bin2Dec($binarynumerator); - $denominator = getid3_lib::Bin2Dec('1'.str_repeat('0', strlen($binarynumerator))); - return ($numerator / $denominator); - } - - - static function NormalizeBinaryPoint($binarypointnumber, $maxbits=52) { - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html - if (strpos($binarypointnumber, '.') === false) { - $binarypointnumber = '0.'.$binarypointnumber; - } elseif ($binarypointnumber{0} == '.') { - $binarypointnumber = '0'.$binarypointnumber; - } - $exponent = 0; - while (($binarypointnumber{0} != '1') || (substr($binarypointnumber, 1, 1) != '.')) { - if (substr($binarypointnumber, 1, 1) == '.') { - $exponent--; - $binarypointnumber = substr($binarypointnumber, 2, 1).'.'.substr($binarypointnumber, 3); - } else { - $pointpos = strpos($binarypointnumber, '.'); - $exponent += ($pointpos - 1); - $binarypointnumber = str_replace('.', '', $binarypointnumber); - $binarypointnumber = $binarypointnumber{0}.'.'.substr($binarypointnumber, 1); - } - } - $binarypointnumber = str_pad(substr($binarypointnumber, 0, $maxbits + 2), $maxbits + 2, '0', STR_PAD_RIGHT); - return array('normalized'=>$binarypointnumber, 'exponent'=>(int) $exponent); - } - - - static function Float2BinaryDecimal($floatvalue) { - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html - $maxbits = 128; // to how many bits of precision should the calculations be taken? - $intpart = getid3_lib::trunc($floatvalue); - $floatpart = abs($floatvalue - $intpart); - $pointbitstring = ''; - while (($floatpart != 0) && (strlen($pointbitstring) < $maxbits)) { - $floatpart *= 2; - $pointbitstring .= (string) getid3_lib::trunc($floatpart); - $floatpart -= getid3_lib::trunc($floatpart); - } - $binarypointnumber = decbin($intpart).'.'.$pointbitstring; - return $binarypointnumber; - } - - - static function Float2String($floatvalue, $bits) { - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee-expl.html - switch ($bits) { - case 32: - $exponentbits = 8; - $fractionbits = 23; - break; - - case 64: - $exponentbits = 11; - $fractionbits = 52; - break; - - default: - return false; - break; - } - if ($floatvalue >= 0) { - $signbit = '0'; - } else { - $signbit = '1'; - } - $normalizedbinary = getid3_lib::NormalizeBinaryPoint(getid3_lib::Float2BinaryDecimal($floatvalue), $fractionbits); - $biasedexponent = pow(2, $exponentbits - 1) - 1 + $normalizedbinary['exponent']; // (127 or 1023) +/- exponent - $exponentbitstring = str_pad(decbin($biasedexponent), $exponentbits, '0', STR_PAD_LEFT); - $fractionbitstring = str_pad(substr($normalizedbinary['normalized'], 2), $fractionbits, '0', STR_PAD_RIGHT); - - return getid3_lib::BigEndian2String(getid3_lib::Bin2Dec($signbit.$exponentbitstring.$fractionbitstring), $bits % 8, false); - } - - - static function LittleEndian2Float($byteword) { - return getid3_lib::BigEndian2Float(strrev($byteword)); - } - - - static function BigEndian2Float($byteword) { - // ANSI/IEEE Standard 754-1985, Standard for Binary Floating Point Arithmetic - // http://www.psc.edu/general/software/packages/ieee/ieee.html - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee.html - - $bitword = getid3_lib::BigEndian2Bin($byteword); - if (!$bitword) { - return 0; - } - $signbit = $bitword{0}; - - switch (strlen($byteword) * 8) { - case 32: - $exponentbits = 8; - $fractionbits = 23; - break; - - case 64: - $exponentbits = 11; - $fractionbits = 52; - break; - - case 80: - // 80-bit Apple SANE format - // http://www.mactech.com/articles/mactech/Vol.06/06.01/SANENormalized/ - $exponentstring = substr($bitword, 1, 15); - $isnormalized = intval($bitword{16}); - $fractionstring = substr($bitword, 17, 63); - $exponent = pow(2, getid3_lib::Bin2Dec($exponentstring) - 16383); - $fraction = $isnormalized + getid3_lib::DecimalBinary2Float($fractionstring); - $floatvalue = $exponent * $fraction; - if ($signbit == '1') { - $floatvalue *= -1; - } - return $floatvalue; - break; - - default: - return false; - break; - } - $exponentstring = substr($bitword, 1, $exponentbits); - $fractionstring = substr($bitword, $exponentbits + 1, $fractionbits); - $exponent = getid3_lib::Bin2Dec($exponentstring); - $fraction = getid3_lib::Bin2Dec($fractionstring); - - if (($exponent == (pow(2, $exponentbits) - 1)) && ($fraction != 0)) { - // Not a Number - $floatvalue = false; - } elseif (($exponent == (pow(2, $exponentbits) - 1)) && ($fraction == 0)) { - if ($signbit == '1') { - $floatvalue = '-infinity'; - } else { - $floatvalue = '+infinity'; - } - } elseif (($exponent == 0) && ($fraction == 0)) { - if ($signbit == '1') { - $floatvalue = -0; - } else { - $floatvalue = 0; - } - $floatvalue = ($signbit ? 0 : -0); - } elseif (($exponent == 0) && ($fraction != 0)) { - // These are 'unnormalized' values - $floatvalue = pow(2, (-1 * (pow(2, $exponentbits - 1) - 2))) * getid3_lib::DecimalBinary2Float($fractionstring); - if ($signbit == '1') { - $floatvalue *= -1; - } - } elseif ($exponent != 0) { - $floatvalue = pow(2, ($exponent - (pow(2, $exponentbits - 1) - 1))) * (1 + getid3_lib::DecimalBinary2Float($fractionstring)); - if ($signbit == '1') { - $floatvalue *= -1; - } - } - return (float) $floatvalue; - } - - - static function BigEndian2Int($byteword, $synchsafe=false, $signed=false) { - $intvalue = 0; - $bytewordlen = strlen($byteword); - if ($bytewordlen == 0) { - return false; - } - for ($i = 0; $i < $bytewordlen; $i++) { - if ($synchsafe) { // disregard MSB, effectively 7-bit bytes - //$intvalue = $intvalue | (ord($byteword{$i}) & 0x7F) << (($bytewordlen - 1 - $i) * 7); // faster, but runs into problems past 2^31 on 32-bit systems - $intvalue += (ord($byteword{$i}) & 0x7F) * pow(2, ($bytewordlen - 1 - $i) * 7); - } else { - $intvalue += ord($byteword{$i}) * pow(256, ($bytewordlen - 1 - $i)); - } - } - if ($signed && !$synchsafe) { - // synchsafe ints are not allowed to be signed - if ($bytewordlen <= PHP_INT_SIZE) { - $signMaskBit = 0x80 << (8 * ($bytewordlen - 1)); - if ($intvalue & $signMaskBit) { - $intvalue = 0 - ($intvalue & ($signMaskBit - 1)); - } - } else { - throw new Exception('ERROR: Cannot have signed integers larger than '.(8 * PHP_INT_SIZE).'-bits ('.strlen($byteword).') in getid3_lib::BigEndian2Int()'); - break; - } - } - return getid3_lib::CastAsInt($intvalue); - } - - - static function LittleEndian2Int($byteword, $signed=false) { - return getid3_lib::BigEndian2Int(strrev($byteword), false, $signed); - } - - - static function BigEndian2Bin($byteword) { - $binvalue = ''; - $bytewordlen = strlen($byteword); - for ($i = 0; $i < $bytewordlen; $i++) { - $binvalue .= str_pad(decbin(ord($byteword{$i})), 8, '0', STR_PAD_LEFT); - } - return $binvalue; - } - - - static function BigEndian2String($number, $minbytes=1, $synchsafe=false, $signed=false) { - if ($number < 0) { - throw new Exception('ERROR: getid3_lib::BigEndian2String() does not support negative numbers'); - } - $maskbyte = (($synchsafe || $signed) ? 0x7F : 0xFF); - $intstring = ''; - if ($signed) { - if ($minbytes > PHP_INT_SIZE) { - throw new Exception('ERROR: Cannot have signed integers larger than '.(8 * PHP_INT_SIZE).'-bits in getid3_lib::BigEndian2String()'); - } - $number = $number & (0x80 << (8 * ($minbytes - 1))); - } - while ($number != 0) { - $quotient = ($number / ($maskbyte + 1)); - $intstring = chr(ceil(($quotient - floor($quotient)) * $maskbyte)).$intstring; - $number = floor($quotient); - } - return str_pad($intstring, $minbytes, "\x00", STR_PAD_LEFT); - } - - - static function Dec2Bin($number) { - while ($number >= 256) { - $bytes[] = (($number / 256) - (floor($number / 256))) * 256; - $number = floor($number / 256); - } - $bytes[] = $number; - $binstring = ''; - for ($i = 0; $i < count($bytes); $i++) { - $binstring = (($i == count($bytes) - 1) ? decbin($bytes[$i]) : str_pad(decbin($bytes[$i]), 8, '0', STR_PAD_LEFT)).$binstring; - } - return $binstring; - } - - - static function Bin2Dec($binstring, $signed=false) { - $signmult = 1; - if ($signed) { - if ($binstring{0} == '1') { - $signmult = -1; - } - $binstring = substr($binstring, 1); - } - $decvalue = 0; - for ($i = 0; $i < strlen($binstring); $i++) { - $decvalue += ((int) substr($binstring, strlen($binstring) - $i - 1, 1)) * pow(2, $i); - } - return getid3_lib::CastAsInt($decvalue * $signmult); - } - - - static function Bin2String($binstring) { - // return 'hi' for input of '0110100001101001' - $string = ''; - $binstringreversed = strrev($binstring); - for ($i = 0; $i < strlen($binstringreversed); $i += 8) { - $string = chr(getid3_lib::Bin2Dec(strrev(substr($binstringreversed, $i, 8)))).$string; - } - return $string; - } - - - static function LittleEndian2String($number, $minbytes=1, $synchsafe=false) { - $intstring = ''; - while ($number > 0) { - if ($synchsafe) { - $intstring = $intstring.chr($number & 127); - $number >>= 7; - } else { - $intstring = $intstring.chr($number & 255); - $number >>= 8; - } - } - return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT); - } - - - static function array_merge_clobber($array1, $array2) { - // written by kcØhireability*com - // taken from http://www.php.net/manual/en/function.array-merge-recursive.php - if (!is_array($array1) || !is_array($array2)) { - return false; - } - $newarray = $array1; - foreach ($array2 as $key => $val) { - if (is_array($val) && isset($newarray[$key]) && is_array($newarray[$key])) { - $newarray[$key] = getid3_lib::array_merge_clobber($newarray[$key], $val); - } else { - $newarray[$key] = $val; - } - } - return $newarray; - } - - - static function array_merge_noclobber($array1, $array2) { - if (!is_array($array1) || !is_array($array2)) { - return false; - } - $newarray = $array1; - foreach ($array2 as $key => $val) { - if (is_array($val) && isset($newarray[$key]) && is_array($newarray[$key])) { - $newarray[$key] = getid3_lib::array_merge_noclobber($newarray[$key], $val); - } elseif (!isset($newarray[$key])) { - $newarray[$key] = $val; - } - } - return $newarray; - } - - - static function ksort_recursive(&$theArray) { - ksort($theArray); - foreach ($theArray as $key => $value) { - if (is_array($value)) { - self::ksort_recursive($theArray[$key]); - } - } - return true; - } - - static function fileextension($filename, $numextensions=1) { - if (strstr($filename, '.')) { - $reversedfilename = strrev($filename); - $offset = 0; - for ($i = 0; $i < $numextensions; $i++) { - $offset = strpos($reversedfilename, '.', $offset + 1); - if ($offset === false) { - return ''; - } - } - return strrev(substr($reversedfilename, 0, $offset)); - } - return ''; - } - - - static function PlaytimeString($seconds) { - $sign = (($seconds < 0) ? '-' : ''); - $seconds = abs($seconds); - $H = floor( $seconds / 3600); - $M = floor(($seconds - (3600 * $H) ) / 60); - $S = round( $seconds - (3600 * $H) - (60 * $M) ); - return $sign.($H ? $H.':' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).':'.str_pad($S, 2, 0, STR_PAD_LEFT); - } - - - static function DateMac2Unix($macdate) { - // Macintosh timestamp: seconds since 00:00h January 1, 1904 - // UNIX timestamp: seconds since 00:00h January 1, 1970 - return getid3_lib::CastAsInt($macdate - 2082844800); - } - - - static function FixedPoint8_8($rawdata) { - return getid3_lib::BigEndian2Int(substr($rawdata, 0, 1)) + (float) (getid3_lib::BigEndian2Int(substr($rawdata, 1, 1)) / pow(2, 8)); - } - - - static function FixedPoint16_16($rawdata) { - return getid3_lib::BigEndian2Int(substr($rawdata, 0, 2)) + (float) (getid3_lib::BigEndian2Int(substr($rawdata, 2, 2)) / pow(2, 16)); - } - - - static function FixedPoint2_30($rawdata) { - $binarystring = getid3_lib::BigEndian2Bin($rawdata); - return getid3_lib::Bin2Dec(substr($binarystring, 0, 2)) + (float) (getid3_lib::Bin2Dec(substr($binarystring, 2, 30)) / pow(2, 30)); - } - - - static function CreateDeepArray($ArrayPath, $Separator, $Value) { - // assigns $Value to a nested array path: - // $foo = getid3_lib::CreateDeepArray('/path/to/my', '/', 'file.txt') - // is the same as: - // $foo = array('path'=>array('to'=>'array('my'=>array('file.txt')))); - // or - // $foo['path']['to']['my'] = 'file.txt'; - while ($ArrayPath && ($ArrayPath{0} == $Separator)) { - $ArrayPath = substr($ArrayPath, 1); - } - if (($pos = strpos($ArrayPath, $Separator)) !== false) { - $ReturnedArray[substr($ArrayPath, 0, $pos)] = getid3_lib::CreateDeepArray(substr($ArrayPath, $pos + 1), $Separator, $Value); - } else { - $ReturnedArray[$ArrayPath] = $Value; - } - return $ReturnedArray; - } - - static function array_max($arraydata, $returnkey=false) { - $maxvalue = false; - $maxkey = false; - foreach ($arraydata as $key => $value) { - if (!is_array($value)) { - if ($value > $maxvalue) { - $maxvalue = $value; - $maxkey = $key; - } - } - } - return ($returnkey ? $maxkey : $maxvalue); - } - - static function array_min($arraydata, $returnkey=false) { - $minvalue = false; - $minkey = false; - foreach ($arraydata as $key => $value) { - if (!is_array($value)) { - if ($value > $minvalue) { - $minvalue = $value; - $minkey = $key; - } - } - } - return ($returnkey ? $minkey : $minvalue); - } - - static function XML2array($XMLstring) { - if (function_exists('simplexml_load_string')) { - if (function_exists('get_object_vars')) { - $XMLobject = simplexml_load_string($XMLstring); - return self::SimpleXMLelement2array($XMLobject); - } - } - return false; - } - - static function SimpleXMLelement2array($XMLobject) { - if (!is_object($XMLobject) && !is_array($XMLobject)) { - return $XMLobject; - } - $XMLarray = (is_object($XMLobject) ? get_object_vars($XMLobject) : $XMLobject); - foreach ($XMLarray as $key => $value) { - $XMLarray[$key] = self::SimpleXMLelement2array($value); - } - return $XMLarray; - } - - - // Allan Hansen - // getid3_lib::md5_data() - returns md5sum for a file from startuing position to absolute end position - static function hash_data($file, $offset, $end, $algorithm) { - static $tempdir = ''; - if (!getid3_lib::intValueSupported($end)) { - return false; - } - switch ($algorithm) { - case 'md5': - $hash_function = 'md5_file'; - $unix_call = 'md5sum'; - $windows_call = 'md5sum.exe'; - $hash_length = 32; - break; - - case 'sha1': - $hash_function = 'sha1_file'; - $unix_call = 'sha1sum'; - $windows_call = 'sha1sum.exe'; - $hash_length = 40; - break; - - default: - throw new Exception('Invalid algorithm ('.$algorithm.') in getid3_lib::hash_data()'); - break; - } - $size = $end - $offset; - while (true) { - if (GETID3_OS_ISWINDOWS) { - - // It seems that sha1sum.exe for Windows only works on physical files, does not accept piped data - // Fall back to create-temp-file method: - if ($algorithm == 'sha1') { - break; - } - - $RequiredFiles = array('cygwin1.dll', 'head.exe', 'tail.exe', $windows_call); - foreach ($RequiredFiles as $required_file) { - if (!is_readable(GETID3_HELPERAPPSDIR.$required_file)) { - // helper apps not available - fall back to old method - break; - } - } - $commandline = GETID3_HELPERAPPSDIR.'head.exe -c '.$end.' "'.escapeshellarg(str_replace('/', DIRECTORY_SEPARATOR, $file)).'" | '; - $commandline .= GETID3_HELPERAPPSDIR.'tail.exe -c '.$size.' | '; - $commandline .= GETID3_HELPERAPPSDIR.$windows_call; - - } else { - - $commandline = 'head -c'.$end.' '.escapeshellarg($file).' | '; - $commandline .= 'tail -c'.$size.' | '; - $commandline .= $unix_call; - - } - if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { - //throw new Exception('PHP running in Safe Mode - backtick operator not available, using slower non-system-call '.$algorithm.' algorithm'); - break; - } - return substr(`$commandline`, 0, $hash_length); - } - - if (empty($tempdir)) { - // yes this is ugly, feel free to suggest a better way - require_once(dirname(__FILE__).'/getid3.php'); - $getid3_temp = new getID3(); - $tempdir = $getid3_temp->tempdir; - unset($getid3_temp); - } - // try to create a temporary file in the system temp directory - invalid dirname should force to system temp dir - if (($data_filename = tempnam($tempdir, 'gI3')) === false) { - // can't find anywhere to create a temp file, just fail - return false; - } - - // Init - $result = false; - - // copy parts of file - try { - getid3_lib::CopyFileParts($file, $data_filename, $offset, $end - $offset); - $result = $hash_function($data_filename); - } catch (Exception $e) { - throw new Exception('getid3_lib::CopyFileParts() failed in getid_lib::hash_data(): '.$e->getMessage()); - } - unlink($data_filename); - return $result; - } - - static function CopyFileParts($filename_source, $filename_dest, $offset, $length) { - if (!getid3_lib::intValueSupported($offset + $length)) { - throw new Exception('cannot copy file portion, it extends beyond the '.round(PHP_INT_MAX / 1073741824).'GB limit'); - } - if (is_readable($filename_source) && is_file($filename_source) && ($fp_src = fopen($filename_source, 'rb'))) { - if (($fp_dest = fopen($filename_dest, 'wb'))) { - if (fseek($fp_src, $offset, SEEK_SET) == 0) { - $byteslefttowrite = $length; - while (($byteslefttowrite > 0) && ($buffer = fread($fp_src, min($byteslefttowrite, getID3::FREAD_BUFFER_SIZE)))) { - $byteswritten = fwrite($fp_dest, $buffer, $byteslefttowrite); - $byteslefttowrite -= $byteswritten; - } - return true; - } else { - throw new Exception('failed to seek to offset '.$offset.' in '.$filename_source); - } - fclose($fp_dest); - } else { - throw new Exception('failed to create file for writing '.$filename_dest); - } - fclose($fp_src); - } else { - throw new Exception('failed to open file for reading '.$filename_source); - } - return false; - } - - static function iconv_fallback_int_utf8($charval) { - if ($charval < 128) { - // 0bbbbbbb - $newcharstring = chr($charval); - } elseif ($charval < 2048) { - // 110bbbbb 10bbbbbb - $newcharstring = chr(($charval >> 6) | 0xC0); - $newcharstring .= chr(($charval & 0x3F) | 0x80); - } elseif ($charval < 65536) { - // 1110bbbb 10bbbbbb 10bbbbbb - $newcharstring = chr(($charval >> 12) | 0xE0); - $newcharstring .= chr(($charval >> 6) | 0xC0); - $newcharstring .= chr(($charval & 0x3F) | 0x80); - } else { - // 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb - $newcharstring = chr(($charval >> 18) | 0xF0); - $newcharstring .= chr(($charval >> 12) | 0xC0); - $newcharstring .= chr(($charval >> 6) | 0xC0); - $newcharstring .= chr(($charval & 0x3F) | 0x80); - } - return $newcharstring; - } - - // ISO-8859-1 => UTF-8 - static function iconv_fallback_iso88591_utf8($string, $bom=false) { - if (function_exists('utf8_encode')) { - return utf8_encode($string); - } - // utf8_encode() unavailable, use getID3()'s iconv_fallback() conversions (possibly PHP is compiled without XML support) - $newcharstring = ''; - if ($bom) { - $newcharstring .= "\xEF\xBB\xBF"; - } - for ($i = 0; $i < strlen($string); $i++) { - $charval = ord($string{$i}); - $newcharstring .= getid3_lib::iconv_fallback_int_utf8($charval); - } - return $newcharstring; - } - - // ISO-8859-1 => UTF-16BE - static function iconv_fallback_iso88591_utf16be($string, $bom=false) { - $newcharstring = ''; - if ($bom) { - $newcharstring .= "\xFE\xFF"; - } - for ($i = 0; $i < strlen($string); $i++) { - $newcharstring .= "\x00".$string{$i}; - } - return $newcharstring; - } - - // ISO-8859-1 => UTF-16LE - static function iconv_fallback_iso88591_utf16le($string, $bom=false) { - $newcharstring = ''; - if ($bom) { - $newcharstring .= "\xFF\xFE"; - } - for ($i = 0; $i < strlen($string); $i++) { - $newcharstring .= $string{$i}."\x00"; - } - return $newcharstring; - } - - // ISO-8859-1 => UTF-16LE (BOM) - static function iconv_fallback_iso88591_utf16($string) { - return getid3_lib::iconv_fallback_iso88591_utf16le($string, true); - } - - // UTF-8 => ISO-8859-1 - static function iconv_fallback_utf8_iso88591($string) { - if (function_exists('utf8_decode')) { - return utf8_decode($string); - } - // utf8_decode() unavailable, use getID3()'s iconv_fallback() conversions (possibly PHP is compiled without XML support) - $newcharstring = ''; - $offset = 0; - $stringlength = strlen($string); - while ($offset < $stringlength) { - if ((ord($string{$offset}) | 0x07) == 0xF7) { - // 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x07) << 18) & - ((ord($string{($offset + 1)}) & 0x3F) << 12) & - ((ord($string{($offset + 2)}) & 0x3F) << 6) & - (ord($string{($offset + 3)}) & 0x3F); - $offset += 4; - } elseif ((ord($string{$offset}) | 0x0F) == 0xEF) { - // 1110bbbb 10bbbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x0F) << 12) & - ((ord($string{($offset + 1)}) & 0x3F) << 6) & - (ord($string{($offset + 2)}) & 0x3F); - $offset += 3; - } elseif ((ord($string{$offset}) | 0x1F) == 0xDF) { - // 110bbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x1F) << 6) & - (ord($string{($offset + 1)}) & 0x3F); - $offset += 2; - } elseif ((ord($string{$offset}) | 0x7F) == 0x7F) { - // 0bbbbbbb - $charval = ord($string{$offset}); - $offset += 1; - } else { - // error? throw some kind of warning here? - $charval = false; - $offset += 1; - } - if ($charval !== false) { - $newcharstring .= (($charval < 256) ? chr($charval) : '?'); - } - } - return $newcharstring; - } - - // UTF-8 => UTF-16BE - static function iconv_fallback_utf8_utf16be($string, $bom=false) { - $newcharstring = ''; - if ($bom) { - $newcharstring .= "\xFE\xFF"; - } - $offset = 0; - $stringlength = strlen($string); - while ($offset < $stringlength) { - if ((ord($string{$offset}) | 0x07) == 0xF7) { - // 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x07) << 18) & - ((ord($string{($offset + 1)}) & 0x3F) << 12) & - ((ord($string{($offset + 2)}) & 0x3F) << 6) & - (ord($string{($offset + 3)}) & 0x3F); - $offset += 4; - } elseif ((ord($string{$offset}) | 0x0F) == 0xEF) { - // 1110bbbb 10bbbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x0F) << 12) & - ((ord($string{($offset + 1)}) & 0x3F) << 6) & - (ord($string{($offset + 2)}) & 0x3F); - $offset += 3; - } elseif ((ord($string{$offset}) | 0x1F) == 0xDF) { - // 110bbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x1F) << 6) & - (ord($string{($offset + 1)}) & 0x3F); - $offset += 2; - } elseif ((ord($string{$offset}) | 0x7F) == 0x7F) { - // 0bbbbbbb - $charval = ord($string{$offset}); - $offset += 1; - } else { - // error? throw some kind of warning here? - $charval = false; - $offset += 1; - } - if ($charval !== false) { - $newcharstring .= (($charval < 65536) ? getid3_lib::BigEndian2String($charval, 2) : "\x00".'?'); - } - } - return $newcharstring; - } - - // UTF-8 => UTF-16LE - static function iconv_fallback_utf8_utf16le($string, $bom=false) { - $newcharstring = ''; - if ($bom) { - $newcharstring .= "\xFF\xFE"; - } - $offset = 0; - $stringlength = strlen($string); - while ($offset < $stringlength) { - if ((ord($string{$offset}) | 0x07) == 0xF7) { - // 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x07) << 18) & - ((ord($string{($offset + 1)}) & 0x3F) << 12) & - ((ord($string{($offset + 2)}) & 0x3F) << 6) & - (ord($string{($offset + 3)}) & 0x3F); - $offset += 4; - } elseif ((ord($string{$offset}) | 0x0F) == 0xEF) { - // 1110bbbb 10bbbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x0F) << 12) & - ((ord($string{($offset + 1)}) & 0x3F) << 6) & - (ord($string{($offset + 2)}) & 0x3F); - $offset += 3; - } elseif ((ord($string{$offset}) | 0x1F) == 0xDF) { - // 110bbbbb 10bbbbbb - $charval = ((ord($string{($offset + 0)}) & 0x1F) << 6) & - (ord($string{($offset + 1)}) & 0x3F); - $offset += 2; - } elseif ((ord($string{$offset}) | 0x7F) == 0x7F) { - // 0bbbbbbb - $charval = ord($string{$offset}); - $offset += 1; - } else { - // error? maybe throw some warning here? - $charval = false; - $offset += 1; - } - if ($charval !== false) { - $newcharstring .= (($charval < 65536) ? getid3_lib::LittleEndian2String($charval, 2) : '?'."\x00"); - } - } - return $newcharstring; - } - - // UTF-8 => UTF-16LE (BOM) - static function iconv_fallback_utf8_utf16($string) { - return getid3_lib::iconv_fallback_utf8_utf16le($string, true); - } - - // UTF-16BE => UTF-8 - static function iconv_fallback_utf16be_utf8($string) { - if (substr($string, 0, 2) == "\xFE\xFF") { - // strip BOM - $string = substr($string, 2); - } - $newcharstring = ''; - for ($i = 0; $i < strlen($string); $i += 2) { - $charval = getid3_lib::BigEndian2Int(substr($string, $i, 2)); - $newcharstring .= getid3_lib::iconv_fallback_int_utf8($charval); - } - return $newcharstring; - } - - // UTF-16LE => UTF-8 - static function iconv_fallback_utf16le_utf8($string) { - if (substr($string, 0, 2) == "\xFF\xFE") { - // strip BOM - $string = substr($string, 2); - } - $newcharstring = ''; - for ($i = 0; $i < strlen($string); $i += 2) { - $charval = getid3_lib::LittleEndian2Int(substr($string, $i, 2)); - $newcharstring .= getid3_lib::iconv_fallback_int_utf8($charval); - } - return $newcharstring; - } - - // UTF-16BE => ISO-8859-1 - static function iconv_fallback_utf16be_iso88591($string) { - if (substr($string, 0, 2) == "\xFE\xFF") { - // strip BOM - $string = substr($string, 2); - } - $newcharstring = ''; - for ($i = 0; $i < strlen($string); $i += 2) { - $charval = getid3_lib::BigEndian2Int(substr($string, $i, 2)); - $newcharstring .= (($charval < 256) ? chr($charval) : '?'); - } - return $newcharstring; - } - - // UTF-16LE => ISO-8859-1 - static function iconv_fallback_utf16le_iso88591($string) { - if (substr($string, 0, 2) == "\xFF\xFE") { - // strip BOM - $string = substr($string, 2); - } - $newcharstring = ''; - for ($i = 0; $i < strlen($string); $i += 2) { - $charval = getid3_lib::LittleEndian2Int(substr($string, $i, 2)); - $newcharstring .= (($charval < 256) ? chr($charval) : '?'); - } - return $newcharstring; - } - - // UTF-16 (BOM) => ISO-8859-1 - static function iconv_fallback_utf16_iso88591($string) { - $bom = substr($string, 0, 2); - if ($bom == "\xFE\xFF") { - return getid3_lib::iconv_fallback_utf16be_iso88591(substr($string, 2)); - } elseif ($bom == "\xFF\xFE") { - return getid3_lib::iconv_fallback_utf16le_iso88591(substr($string, 2)); - } - return $string; - } - - // UTF-16 (BOM) => UTF-8 - static function iconv_fallback_utf16_utf8($string) { - $bom = substr($string, 0, 2); - if ($bom == "\xFE\xFF") { - return getid3_lib::iconv_fallback_utf16be_utf8(substr($string, 2)); - } elseif ($bom == "\xFF\xFE") { - return getid3_lib::iconv_fallback_utf16le_utf8(substr($string, 2)); - } - return $string; - } - - static function iconv_fallback($in_charset, $out_charset, $string) { - - if ($in_charset == $out_charset) { - return $string; - } - - // iconv() availble - if (function_exists('iconv')) { - if ($converted_string = @iconv($in_charset, $out_charset.'//TRANSLIT', $string)) { - switch ($out_charset) { - case 'ISO-8859-1': - $converted_string = rtrim($converted_string, "\x00"); - break; - } - return $converted_string; - } - - // iconv() may sometimes fail with "illegal character in input string" error message - // and return an empty string, but returning the unconverted string is more useful - return $string; - } - - - // iconv() not available - static $ConversionFunctionList = array(); - if (empty($ConversionFunctionList)) { - $ConversionFunctionList['ISO-8859-1']['UTF-8'] = 'iconv_fallback_iso88591_utf8'; - $ConversionFunctionList['ISO-8859-1']['UTF-16'] = 'iconv_fallback_iso88591_utf16'; - $ConversionFunctionList['ISO-8859-1']['UTF-16BE'] = 'iconv_fallback_iso88591_utf16be'; - $ConversionFunctionList['ISO-8859-1']['UTF-16LE'] = 'iconv_fallback_iso88591_utf16le'; - $ConversionFunctionList['UTF-8']['ISO-8859-1'] = 'iconv_fallback_utf8_iso88591'; - $ConversionFunctionList['UTF-8']['UTF-16'] = 'iconv_fallback_utf8_utf16'; - $ConversionFunctionList['UTF-8']['UTF-16BE'] = 'iconv_fallback_utf8_utf16be'; - $ConversionFunctionList['UTF-8']['UTF-16LE'] = 'iconv_fallback_utf8_utf16le'; - $ConversionFunctionList['UTF-16']['ISO-8859-1'] = 'iconv_fallback_utf16_iso88591'; - $ConversionFunctionList['UTF-16']['UTF-8'] = 'iconv_fallback_utf16_utf8'; - $ConversionFunctionList['UTF-16LE']['ISO-8859-1'] = 'iconv_fallback_utf16le_iso88591'; - $ConversionFunctionList['UTF-16LE']['UTF-8'] = 'iconv_fallback_utf16le_utf8'; - $ConversionFunctionList['UTF-16BE']['ISO-8859-1'] = 'iconv_fallback_utf16be_iso88591'; - $ConversionFunctionList['UTF-16BE']['UTF-8'] = 'iconv_fallback_utf16be_utf8'; - } - if (isset($ConversionFunctionList[strtoupper($in_charset)][strtoupper($out_charset)])) { - $ConversionFunction = $ConversionFunctionList[strtoupper($in_charset)][strtoupper($out_charset)]; - return getid3_lib::$ConversionFunction($string); - } - throw new Exception('PHP does not have iconv() support - cannot convert from '.$in_charset.' to '.$out_charset); - } - - - static function MultiByteCharString2HTML($string, $charset='ISO-8859-1') { - $string = (string) $string; // in case trying to pass a numeric (float, int) string, would otherwise return an empty string - $HTMLstring = ''; - - switch ($charset) { - case '1251': - case '1252': - case '866': - case '932': - case '936': - case '950': - case 'BIG5': - case 'BIG5-HKSCS': - case 'cp1251': - case 'cp1252': - case 'cp866': - case 'EUC-JP': - case 'EUCJP': - case 'GB2312': - case 'ibm866': - case 'ISO-8859-1': - case 'ISO-8859-15': - case 'ISO8859-1': - case 'ISO8859-15': - case 'KOI8-R': - case 'koi8-ru': - case 'koi8r': - case 'Shift_JIS': - case 'SJIS': - case 'win-1251': - case 'Windows-1251': - case 'Windows-1252': - $HTMLstring = htmlentities($string, ENT_COMPAT, $charset); - break; - - case 'UTF-8': - $strlen = strlen($string); - for ($i = 0; $i < $strlen; $i++) { - $char_ord_val = ord($string{$i}); - $charval = 0; - if ($char_ord_val < 0x80) { - $charval = $char_ord_val; - } elseif ((($char_ord_val & 0xF0) >> 4) == 0x0F && $i+3 < $strlen) { - $charval = (($char_ord_val & 0x07) << 18); - $charval += ((ord($string{++$i}) & 0x3F) << 12); - $charval += ((ord($string{++$i}) & 0x3F) << 6); - $charval += (ord($string{++$i}) & 0x3F); - } elseif ((($char_ord_val & 0xE0) >> 5) == 0x07 && $i+2 < $strlen) { - $charval = (($char_ord_val & 0x0F) << 12); - $charval += ((ord($string{++$i}) & 0x3F) << 6); - $charval += (ord($string{++$i}) & 0x3F); - } elseif ((($char_ord_val & 0xC0) >> 6) == 0x03 && $i+1 < $strlen) { - $charval = (($char_ord_val & 0x1F) << 6); - $charval += (ord($string{++$i}) & 0x3F); - } - if (($charval >= 32) && ($charval <= 127)) { - $HTMLstring .= htmlentities(chr($charval)); - } else { - $HTMLstring .= '&#'.$charval.';'; - } - } - break; - - case 'UTF-16LE': - for ($i = 0; $i < strlen($string); $i += 2) { - $charval = getid3_lib::LittleEndian2Int(substr($string, $i, 2)); - if (($charval >= 32) && ($charval <= 127)) { - $HTMLstring .= chr($charval); - } else { - $HTMLstring .= '&#'.$charval.';'; - } - } - break; - - case 'UTF-16BE': - for ($i = 0; $i < strlen($string); $i += 2) { - $charval = getid3_lib::BigEndian2Int(substr($string, $i, 2)); - if (($charval >= 32) && ($charval <= 127)) { - $HTMLstring .= chr($charval); - } else { - $HTMLstring .= '&#'.$charval.';'; - } - } - break; - - default: - $HTMLstring = 'ERROR: Character set "'.$charset.'" not supported in MultiByteCharString2HTML()'; - break; - } - return $HTMLstring; - } - - - - static function RGADnameLookup($namecode) { - static $RGADname = array(); - if (empty($RGADname)) { - $RGADname[0] = 'not set'; - $RGADname[1] = 'Track Gain Adjustment'; - $RGADname[2] = 'Album Gain Adjustment'; - } - - return (isset($RGADname[$namecode]) ? $RGADname[$namecode] : ''); - } - - - static function RGADoriginatorLookup($originatorcode) { - static $RGADoriginator = array(); - if (empty($RGADoriginator)) { - $RGADoriginator[0] = 'unspecified'; - $RGADoriginator[1] = 'pre-set by artist/producer/mastering engineer'; - $RGADoriginator[2] = 'set by user'; - $RGADoriginator[3] = 'determined automatically'; - } - - return (isset($RGADoriginator[$originatorcode]) ? $RGADoriginator[$originatorcode] : ''); - } - - - static function RGADadjustmentLookup($rawadjustment, $signbit) { - $adjustment = $rawadjustment / 10; - if ($signbit == 1) { - $adjustment *= -1; - } - return (float) $adjustment; - } - - - static function RGADgainString($namecode, $originatorcode, $replaygain) { - if ($replaygain < 0) { - $signbit = '1'; - } else { - $signbit = '0'; - } - $storedreplaygain = intval(round($replaygain * 10)); - $gainstring = str_pad(decbin($namecode), 3, '0', STR_PAD_LEFT); - $gainstring .= str_pad(decbin($originatorcode), 3, '0', STR_PAD_LEFT); - $gainstring .= $signbit; - $gainstring .= str_pad(decbin($storedreplaygain), 9, '0', STR_PAD_LEFT); - - return $gainstring; - } - - static function RGADamplitude2dB($amplitude) { - return 20 * log10($amplitude); - } - - - static function GetDataImageSize($imgData, &$imageinfo) { - static $tempdir = ''; - if (empty($tempdir)) { - // yes this is ugly, feel free to suggest a better way - require_once(dirname(__FILE__).'/getid3.php'); - $getid3_temp = new getID3(); - $tempdir = $getid3_temp->tempdir; - unset($getid3_temp); - } - $GetDataImageSize = false; - if ($tempfilename = tempnam($tempdir, 'gI3')) { - if (is_writable($tempfilename) && is_file($tempfilename) && ($tmp = fopen($tempfilename, 'wb'))) { - fwrite($tmp, $imgData); - fclose($tmp); - $GetDataImageSize = @GetImageSize($tempfilename, $imageinfo); - } - unlink($tempfilename); - } - return $GetDataImageSize; - } - - static function ImageTypesLookup($imagetypeid) { - static $ImageTypesLookup = array(); - if (empty($ImageTypesLookup)) { - $ImageTypesLookup[1] = 'gif'; - $ImageTypesLookup[2] = 'jpeg'; - $ImageTypesLookup[3] = 'png'; - $ImageTypesLookup[4] = 'swf'; - $ImageTypesLookup[5] = 'psd'; - $ImageTypesLookup[6] = 'bmp'; - $ImageTypesLookup[7] = 'tiff (little-endian)'; - $ImageTypesLookup[8] = 'tiff (big-endian)'; - $ImageTypesLookup[9] = 'jpc'; - $ImageTypesLookup[10] = 'jp2'; - $ImageTypesLookup[11] = 'jpx'; - $ImageTypesLookup[12] = 'jb2'; - $ImageTypesLookup[13] = 'swc'; - $ImageTypesLookup[14] = 'iff'; - } - return (isset($ImageTypesLookup[$imagetypeid]) ? $ImageTypesLookup[$imagetypeid] : ''); - } - - static function CopyTagsToComments(&$ThisFileInfo) { - - // Copy all entries from ['tags'] into common ['comments'] - if (!empty($ThisFileInfo['tags'])) { - foreach ($ThisFileInfo['tags'] as $tagtype => $tagarray) { - foreach ($tagarray as $tagname => $tagdata) { - foreach ($tagdata as $key => $value) { - if (!empty($value)) { - if (empty($ThisFileInfo['comments'][$tagname])) { - - // fall through and append value - - } elseif ($tagtype == 'id3v1') { - - $newvaluelength = strlen(trim($value)); - foreach ($ThisFileInfo['comments'][$tagname] as $existingkey => $existingvalue) { - $oldvaluelength = strlen(trim($existingvalue)); - if (($newvaluelength <= $oldvaluelength) && (substr($existingvalue, 0, $newvaluelength) == trim($value))) { - // new value is identical but shorter-than (or equal-length to) one already in comments - skip - break 2; - } - } - - } elseif (!is_array($value)) { - - $newvaluelength = strlen(trim($value)); - foreach ($ThisFileInfo['comments'][$tagname] as $existingkey => $existingvalue) { - $oldvaluelength = strlen(trim($existingvalue)); - if (($newvaluelength > $oldvaluelength) && (substr(trim($value), 0, strlen($existingvalue)) == $existingvalue)) { - $ThisFileInfo['comments'][$tagname][$existingkey] = trim($value); - break 2; - } - } - - } - if (is_array($value) || empty($ThisFileInfo['comments'][$tagname]) || !in_array(trim($value), $ThisFileInfo['comments'][$tagname])) { - $value = (is_string($value) ? trim($value) : $value); - $ThisFileInfo['comments'][$tagname][] = $value; - } - } - } - } - } - - // Copy to ['comments_html'] - foreach ($ThisFileInfo['comments'] as $field => $values) { - if ($field == 'picture') { - // pictures can take up a lot of space, and we don't need multiple copies of them - // let there be a single copy in [comments][picture], and not elsewhere - continue; - } - foreach ($values as $index => $value) { - if (is_array($value)) { - $ThisFileInfo['comments_html'][$field][$index] = $value; - } else { - $ThisFileInfo['comments_html'][$field][$index] = str_replace('�', '', getid3_lib::MultiByteCharString2HTML($value, $ThisFileInfo['encoding'])); - } - } - } - } - return true; - } - - - static function EmbeddedLookup($key, $begin, $end, $file, $name) { - - // Cached - static $cache; - if (isset($cache[$file][$name])) { - return (isset($cache[$file][$name][$key]) ? $cache[$file][$name][$key] : ''); - } - - // Init - $keylength = strlen($key); - $line_count = $end - $begin - 7; - - // Open php file - $fp = fopen($file, 'r'); - - // Discard $begin lines - for ($i = 0; $i < ($begin + 3); $i++) { - fgets($fp, 1024); - } - - // Loop thru line - while (0 < $line_count--) { - - // Read line - $line = ltrim(fgets($fp, 1024), "\t "); - - // METHOD A: only cache the matching key - less memory but slower on next lookup of not-previously-looked-up key - //$keycheck = substr($line, 0, $keylength); - //if ($key == $keycheck) { - // $cache[$file][$name][$keycheck] = substr($line, $keylength + 1); - // break; - //} - - // METHOD B: cache all keys in this lookup - more memory but faster on next lookup of not-previously-looked-up key - //$cache[$file][$name][substr($line, 0, $keylength)] = trim(substr($line, $keylength + 1)); - $explodedLine = explode("\t", $line, 2); - $ThisKey = (isset($explodedLine[0]) ? $explodedLine[0] : ''); - $ThisValue = (isset($explodedLine[1]) ? $explodedLine[1] : ''); - $cache[$file][$name][$ThisKey] = trim($ThisValue); - } - - // Close and return - fclose($fp); - return (isset($cache[$file][$name][$key]) ? $cache[$file][$name][$key] : ''); - } - - static function IncludeDependency($filename, $sourcefile, $DieOnFailure=false) { - global $GETID3_ERRORARRAY; - - if (file_exists($filename)) { - if (include_once($filename)) { - return true; - } else { - $diemessage = basename($sourcefile).' depends on '.$filename.', which has errors'; - } - } else { - $diemessage = basename($sourcefile).' depends on '.$filename.', which is missing'; - } - if ($DieOnFailure) { - throw new Exception($diemessage); - } else { - $GETID3_ERRORARRAY[] = $diemessage; - } - return false; - } - - public static function trimNullByte($string) { - return trim($string, "\x00"); - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/getid3.php b/3rdparty/getid3/getid3.php deleted file mode 100644 index e8a3f7e2de621a8e22a24d8eb70e8080a0a75a66..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/getid3.php +++ /dev/null @@ -1,1744 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// Please see readme.txt for more information // -// /// -///////////////////////////////////////////////////////////////// - -// attempt to define temp dir as something flexible but reliable -$temp_dir = ini_get('upload_tmp_dir'); -if ($temp_dir && (!is_dir($temp_dir) || !is_readable($temp_dir))) { - $temp_dir = ''; -} -if (!$temp_dir && function_exists('sys_get_temp_dir')) { - // PHP v5.2.1+ - // sys_get_temp_dir() may give inaccessible temp dir, e.g. with open_basedir on virtual hosts - $temp_dir = sys_get_temp_dir(); -} -$temp_dir = realpath($temp_dir); -$open_basedir = ini_get('open_basedir'); -if ($open_basedir) { - // e.g. "/var/www/vhosts/getid3.org/httpdocs/:/tmp/" - $temp_dir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $temp_dir); - $open_basedir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $open_basedir); - if (substr($temp_dir, -1, 1) != DIRECTORY_SEPARATOR) { - $temp_dir .= DIRECTORY_SEPARATOR; - } - $found_valid_tempdir = false; - $open_basedirs = explode(':', $open_basedir); - foreach ($open_basedirs as $basedir) { - if (substr($basedir, -1, 1) != DIRECTORY_SEPARATOR) { - $basedir .= DIRECTORY_SEPARATOR; - } - if (preg_match('#^'.preg_quote($basedir).'#', $temp_dir)) { - $found_valid_tempdir = true; - break; - } - } - if (!$found_valid_tempdir) { - $temp_dir = ''; - } - unset($open_basedirs, $found_valid_tempdir, $basedir); -} -if (!$temp_dir) { - $temp_dir = '*'; // invalid directory name should force tempnam() to use system default temp dir -} -// $temp_dir = '/something/else/'; // feel free to override temp dir here if it works better for your system -define('GETID3_TEMP_DIR', $temp_dir); -unset($open_basedir, $temp_dir); - - -// define a constant rather than looking up every time it is needed -if (!defined('GETID3_OS_ISWINDOWS')) { - if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { - define('GETID3_OS_ISWINDOWS', true); - } else { - define('GETID3_OS_ISWINDOWS', false); - } -} - -// Get base path of getID3() - ONCE -if (!defined('GETID3_INCLUDEPATH')) { - foreach (get_included_files() as $key => $val) { - if (basename($val) == 'getid3.php') { - define('GETID3_INCLUDEPATH', dirname($val).DIRECTORY_SEPARATOR); - break; - } - } -} - -// End: Defines - - -class getID3 -{ - // public: Settings - public $encoding = 'UTF-8'; // CASE SENSITIVE! - i.e. (must be supported by iconv()). Examples: ISO-8859-1 UTF-8 UTF-16 UTF-16BE - public $encoding_id3v1 = 'ISO-8859-1'; // Should always be 'ISO-8859-1', but some tags may be written in other encodings such as 'EUC-CN' or 'CP1252' - - // public: Optional tag checks - disable for speed. - public $option_tag_id3v1 = true; // Read and process ID3v1 tags - public $option_tag_id3v2 = true; // Read and process ID3v2 tags - public $option_tag_lyrics3 = true; // Read and process Lyrics3 tags - public $option_tag_apetag = true; // Read and process APE tags - public $option_tags_process = true; // Copy tags to root key 'tags' and encode to $this->encoding - public $option_tags_html = true; // Copy tags to root key 'tags_html' properly translated from various encodings to HTML entities - - // public: Optional tag/comment calucations - public $option_extra_info = true; // Calculate additional info such as bitrate, channelmode etc - - // public: Optional handling of embedded attachments (e.g. images) - public $option_save_attachments = true; // defaults to true (ATTACHMENTS_INLINE) for backward compatibility - - // public: Optional calculations - public $option_md5_data = false; // Get MD5 sum of data part - slow - public $option_md5_data_source = false; // Use MD5 of source file if availble - only FLAC and OptimFROG - public $option_sha1_data = false; // Get SHA1 sum of data part - slow - public $option_max_2gb_check = null; // Check whether file is larger than 2GB and thus not supported by 32-bit PHP (null: auto-detect based on PHP_INT_MAX) - - // public: Read buffer size in bytes - public $option_fread_buffer_size = 32768; - - // Public variables - public $filename; // Filename of file being analysed. - public $fp; // Filepointer to file being analysed. - public $info; // Result array. - - // Protected variables - protected $startup_error = ''; - protected $startup_warning = ''; - protected $memory_limit = 0; - - const VERSION = '1.9.3-20111213'; - const FREAD_BUFFER_SIZE = 32768; - var $tempdir = GETID3_TEMP_DIR; - - const ATTACHMENTS_NONE = false; - const ATTACHMENTS_INLINE = true; - - // public: constructor - public function __construct() { - - // Check for PHP version - $required_php_version = '5.0.5'; - if (version_compare(PHP_VERSION, $required_php_version, '<')) { - $this->startup_error .= 'getID3() requires PHP v'.$required_php_version.' or higher - you are running v'.PHP_VERSION; - return false; - } - - // Check memory - $this->memory_limit = ini_get('memory_limit'); - if (preg_match('#([0-9]+)M#i', $this->memory_limit, $matches)) { - // could be stored as "16M" rather than 16777216 for example - $this->memory_limit = $matches[1] * 1048576; - } elseif (preg_match('#([0-9]+)G#i', $this->memory_limit, $matches)) { // The 'G' modifier is available since PHP 5.1.0 - // could be stored as "2G" rather than 2147483648 for example - $this->memory_limit = $matches[1] * 1073741824; - } - if ($this->memory_limit <= 0) { - // memory limits probably disabled - } elseif ($this->memory_limit <= 4194304) { - $this->startup_error .= 'PHP has less than 4MB available memory and will very likely run out. Increase memory_limit in php.ini'; - } elseif ($this->memory_limit <= 12582912) { - $this->startup_warning .= 'PHP has less than 12MB available memory and might run out if all modules are loaded. Increase memory_limit in php.ini'; - } - - // Check safe_mode off - if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { - $this->warning('WARNING: Safe mode is on, shorten support disabled, md5data/sha1data for ogg vorbis disabled, ogg vorbos/flac tag writing disabled.'); - } - - if (intval(ini_get('mbstring.func_overload')) > 0) { - $this->warning('WARNING: php.ini contains "mbstring.func_overload = '.ini_get('mbstring.func_overload').'", this may break things.'); - } - - // Check for magic_quotes_runtime - if (function_exists('get_magic_quotes_runtime')) { - if (get_magic_quotes_runtime()) { - return $this->startup_error('magic_quotes_runtime must be disabled before running getID3(). Surround getid3 block by set_magic_quotes_runtime(0) and set_magic_quotes_runtime(1).'); - } - } - - // Check for magic_quotes_gpc - if (function_exists('magic_quotes_gpc')) { - if (get_magic_quotes_gpc()) { - return $this->startup_error('magic_quotes_gpc must be disabled before running getID3(). Surround getid3 block by set_magic_quotes_gpc(0) and set_magic_quotes_gpc(1).'); - } - } - - // Load support library - if (!include_once(GETID3_INCLUDEPATH.'getid3.lib.php')) { - $this->startup_error .= 'getid3.lib.php is missing or corrupt'; - } - - if ($this->option_max_2gb_check === null) { - $this->option_max_2gb_check = (PHP_INT_MAX <= 2147483647); - } - - - // Needed for Windows only: - // Define locations of helper applications for Shorten, VorbisComment, MetaFLAC - // as well as other helper functions such as head, tail, md5sum, etc - // This path cannot contain spaces, but the below code will attempt to get the - // 8.3-equivalent path automatically - // IMPORTANT: This path must include the trailing slash - if (GETID3_OS_ISWINDOWS && !defined('GETID3_HELPERAPPSDIR')) { - - $helperappsdir = GETID3_INCLUDEPATH.'..'.DIRECTORY_SEPARATOR.'helperapps'; // must not have any space in this path - - if (!is_dir($helperappsdir)) { - $this->startup_warning .= '"'.$helperappsdir.'" cannot be defined as GETID3_HELPERAPPSDIR because it does not exist'; - } elseif (strpos(realpath($helperappsdir), ' ') !== false) { - $DirPieces = explode(DIRECTORY_SEPARATOR, realpath($helperappsdir)); - $path_so_far = array(); - foreach ($DirPieces as $key => $value) { - if (strpos($value, ' ') !== false) { - if (!empty($path_so_far)) { - $commandline = 'dir /x '.escapeshellarg(implode(DIRECTORY_SEPARATOR, $path_so_far)); - $dir_listing = `$commandline`; - $lines = explode("\n", $dir_listing); - foreach ($lines as $line) { - $line = trim($line); - if (preg_match('#^([0-9/]{10}) +([0-9:]{4,5}( [AP]M)?) +(
    |[0-9,]+) +([^ ]{0,11}) +(.+)$#', $line, $matches)) { - list($dummy, $date, $time, $ampm, $filesize, $shortname, $filename) = $matches; - if ((strtoupper($filesize) == '') && (strtolower($filename) == strtolower($value))) { - $value = $shortname; - } - } - } - } else { - $this->startup_warning .= 'GETID3_HELPERAPPSDIR must not have any spaces in it - use 8dot3 naming convention if neccesary. You can run "dir /x" from the commandline to see the correct 8.3-style names.'; - } - } - $path_so_far[] = $value; - } - $helperappsdir = implode(DIRECTORY_SEPARATOR, $path_so_far); - } - define('GETID3_HELPERAPPSDIR', $helperappsdir.DIRECTORY_SEPARATOR); - } - - return true; - } - - public function version() { - return self::VERSION; - } - - public function fread_buffer_size() { - return $this->option_fread_buffer_size; - } - - - // public: setOption - function setOption($optArray) { - if (!is_array($optArray) || empty($optArray)) { - return false; - } - foreach ($optArray as $opt => $val) { - if (isset($this->$opt) === false) { - continue; - } - $this->$opt = $val; - } - return true; - } - - - public function openfile($filename) { - try { - if (!empty($this->startup_error)) { - throw new getid3_exception($this->startup_error); - } - if (!empty($this->startup_warning)) { - $this->warning($this->startup_warning); - } - - // init result array and set parameters - $this->filename = $filename; - $this->info = array(); - $this->info['GETID3_VERSION'] = $this->version(); - $this->info['php_memory_limit'] = $this->memory_limit; - - // remote files not supported - if (preg_match('/^(ht|f)tp:\/\//', $filename)) { - throw new getid3_exception('Remote files are not supported - please copy the file locally first'); - } - - $filename = str_replace('/', DIRECTORY_SEPARATOR, $filename); - $filename = preg_replace('#(.+)'.preg_quote(DIRECTORY_SEPARATOR).'{2,}#U', '\1'.DIRECTORY_SEPARATOR, $filename); - - // open local file - if (is_readable($filename) && is_file($filename) && ($this->fp = fopen($filename, 'rb'))) { - // great - } else { - throw new getid3_exception('Could not open "'.$filename.'" (does not exist, or is not a file)'); - } - - $this->info['filesize'] = filesize($filename); - // set redundant parameters - might be needed in some include file - $this->info['filename'] = basename($filename); - $this->info['filepath'] = str_replace('\\', '/', realpath(dirname($filename))); - $this->info['filenamepath'] = $this->info['filepath'].'/'.$this->info['filename']; - - - // option_max_2gb_check - if ($this->option_max_2gb_check) { - // PHP (32-bit all, and 64-bit Windows) doesn't support integers larger than 2^31 (~2GB) - // filesize() simply returns (filesize % (pow(2, 32)), no matter the actual filesize - // ftell() returns 0 if seeking to the end is beyond the range of unsigned integer - $fseek = fseek($this->fp, 0, SEEK_END); - if (($fseek < 0) || (($this->info['filesize'] != 0) && (ftell($this->fp) == 0)) || - ($this->info['filesize'] < 0) || - (ftell($this->fp) < 0)) { - $real_filesize = false; - if (GETID3_OS_ISWINDOWS) { - $commandline = 'dir /-C "'.str_replace('/', DIRECTORY_SEPARATOR, $filename).'"'; - $dir_output = `$commandline`; - if (preg_match('#1 File\(s\)[ ]+([0-9]+) bytes#i', $dir_output, $matches)) { - $real_filesize = (float) $matches[1]; - } - } else { - $commandline = 'ls -o -g -G --time-style=long-iso '.escapeshellarg($filename); - $dir_output = `$commandline`; - if (preg_match('#([0-9]+) ([0-9]{4}-[0-9]{2}\-[0-9]{2} [0-9]{2}:[0-9]{2}) '.str_replace('#', '\\#', preg_quote($filename)).'$#', $dir_output, $matches)) { - $real_filesize = (float) $matches[1]; - } - } - if ($real_filesize === false) { - unset($this->info['filesize']); - fclose($this->fp); - throw new getid3_exception('Unable to determine actual filesize. File is most likely larger than '.round(PHP_INT_MAX / 1073741824).'GB and is not supported by PHP.'); - } elseif (getid3_lib::intValueSupported($real_filesize)) { - unset($this->info['filesize']); - fclose($this->fp); - throw new getid3_exception('PHP seems to think the file is larger than '.round(PHP_INT_MAX / 1073741824).'GB, but filesystem reports it as '.number_format($real_filesize, 3).'GB, please report to info@getid3.org'); - } - $this->info['filesize'] = $real_filesize; - $this->error('File is larger than '.round(PHP_INT_MAX / 1073741824).'GB (filesystem reports it as '.number_format($real_filesize, 3).'GB) and is not properly supported by PHP.'); - } - } - - // set more parameters - $this->info['avdataoffset'] = 0; - $this->info['avdataend'] = $this->info['filesize']; - $this->info['fileformat'] = ''; // filled in later - $this->info['audio']['dataformat'] = ''; // filled in later, unset if not used - $this->info['video']['dataformat'] = ''; // filled in later, unset if not used - $this->info['tags'] = array(); // filled in later, unset if not used - $this->info['error'] = array(); // filled in later, unset if not used - $this->info['warning'] = array(); // filled in later, unset if not used - $this->info['comments'] = array(); // filled in later, unset if not used - $this->info['encoding'] = $this->encoding; // required by id3v2 and iso modules - can be unset at the end if desired - - return true; - - } catch (Exception $e) { - $this->error($e->getMessage()); - } - return false; - } - - // public: analyze file - function analyze($filename) { - try { - if (!$this->openfile($filename)) { - return $this->info; - } - - // Handle tags - foreach (array('id3v2'=>'id3v2', 'id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) { - $option_tag = 'option_tag_'.$tag_name; - if ($this->$option_tag) { - $this->include_module('tag.'.$tag_name); - try { - $tag_class = 'getid3_'.$tag_name; - $tag = new $tag_class($this); - $tag->Analyze(); - } - catch (getid3_exception $e) { - throw $e; - } - } - } - if (isset($this->info['id3v2']['tag_offset_start'])) { - $this->info['avdataoffset'] = max($this->info['avdataoffset'], $this->info['id3v2']['tag_offset_end']); - } - foreach (array('id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) { - if (isset($this->info[$tag_key]['tag_offset_start'])) { - $this->info['avdataend'] = min($this->info['avdataend'], $this->info[$tag_key]['tag_offset_start']); - } - } - - // ID3v2 detection (NOT parsing), even if ($this->option_tag_id3v2 == false) done to make fileformat easier - if (!$this->option_tag_id3v2) { - fseek($this->fp, 0, SEEK_SET); - $header = fread($this->fp, 10); - if ((substr($header, 0, 3) == 'ID3') && (strlen($header) == 10)) { - $this->info['id3v2']['header'] = true; - $this->info['id3v2']['majorversion'] = ord($header{3}); - $this->info['id3v2']['minorversion'] = ord($header{4}); - $this->info['avdataoffset'] += getid3_lib::BigEndian2Int(substr($header, 6, 4), 1) + 10; // length of ID3v2 tag in 10-byte header doesn't include 10-byte header length - } - } - - // read 32 kb file data - fseek($this->fp, $this->info['avdataoffset'], SEEK_SET); - $formattest = fread($this->fp, 32774); - - // determine format - $determined_format = $this->GetFileFormat($formattest, $filename); - - // unable to determine file format - if (!$determined_format) { - fclose($this->fp); - return $this->error('unable to determine file format'); - } - - // check for illegal ID3 tags - if (isset($determined_format['fail_id3']) && (in_array('id3v1', $this->info['tags']) || in_array('id3v2', $this->info['tags']))) { - if ($determined_format['fail_id3'] === 'ERROR') { - fclose($this->fp); - return $this->error('ID3 tags not allowed on this file type.'); - } elseif ($determined_format['fail_id3'] === 'WARNING') { - $this->warning('ID3 tags not allowed on this file type.'); - } - } - - // check for illegal APE tags - if (isset($determined_format['fail_ape']) && in_array('ape', $this->info['tags'])) { - if ($determined_format['fail_ape'] === 'ERROR') { - fclose($this->fp); - return $this->error('APE tags not allowed on this file type.'); - } elseif ($determined_format['fail_ape'] === 'WARNING') { - $this->warning('APE tags not allowed on this file type.'); - } - } - - // set mime type - $this->info['mime_type'] = $determined_format['mime_type']; - - // supported format signature pattern detected, but module deleted - if (!file_exists(GETID3_INCLUDEPATH.$determined_format['include'])) { - fclose($this->fp); - return $this->error('Format not supported, module "'.$determined_format['include'].'" was removed.'); - } - - // module requires iconv support - // Check encoding/iconv support - if (!empty($determined_format['iconv_req']) && !function_exists('iconv') && !in_array($this->encoding, array('ISO-8859-1', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'UTF-16'))) { - $errormessage = 'iconv() support is required for this module ('.$determined_format['include'].') for encodings other than ISO-8859-1, UTF-8, UTF-16LE, UTF16-BE, UTF-16. '; - if (GETID3_OS_ISWINDOWS) { - $errormessage .= 'PHP does not have iconv() support. Please enable php_iconv.dll in php.ini, and copy iconv.dll from c:/php/dlls to c:/windows/system32'; - } else { - $errormessage .= 'PHP is not compiled with iconv() support. Please recompile with the --with-iconv switch'; - } - return $this->error($errormessage); - } - - // include module - include_once(GETID3_INCLUDEPATH.$determined_format['include']); - - // instantiate module class - $class_name = 'getid3_'.$determined_format['module']; - if (!class_exists($class_name)) { - return $this->error('Format not supported, module "'.$determined_format['include'].'" is corrupt.'); - } - //if (isset($determined_format['option'])) { - // //$class = new $class_name($this->fp, $this->info, $determined_format['option']); - //} else { - //$class = new $class_name($this->fp, $this->info); - $class = new $class_name($this); - //} - - if (!empty($determined_format['set_inline_attachments'])) { - $class->inline_attachments = $this->option_save_attachments; - } - $class->Analyze(); - - unset($class); - - // close file - fclose($this->fp); - - // process all tags - copy to 'tags' and convert charsets - if ($this->option_tags_process) { - $this->HandleAllTags(); - } - - // perform more calculations - if ($this->option_extra_info) { - $this->ChannelsBitratePlaytimeCalculations(); - $this->CalculateCompressionRatioVideo(); - $this->CalculateCompressionRatioAudio(); - $this->CalculateReplayGain(); - $this->ProcessAudioStreams(); - } - - // get the MD5 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags - if ($this->option_md5_data) { - // do not cald md5_data if md5_data_source is present - set by flac only - future MPC/SV8 too - if (!$this->option_md5_data_source || empty($this->info['md5_data_source'])) { - $this->getHashdata('md5'); - } - } - - // get the SHA1 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags - if ($this->option_sha1_data) { - $this->getHashdata('sha1'); - } - - // remove undesired keys - $this->CleanUp(); - - } catch (Exception $e) { - $this->error('Caught exception: '.$e->getMessage()); - } - - // return info array - return $this->info; - } - - - // private: error handling - function error($message) { - $this->CleanUp(); - if (!isset($this->info['error'])) { - $this->info['error'] = array(); - } - $this->info['error'][] = $message; - return $this->info; - } - - - // private: warning handling - function warning($message) { - $this->info['warning'][] = $message; - return true; - } - - - // private: CleanUp - function CleanUp() { - - // remove possible empty keys - $AVpossibleEmptyKeys = array('dataformat', 'bits_per_sample', 'encoder_options', 'streams', 'bitrate'); - foreach ($AVpossibleEmptyKeys as $dummy => $key) { - if (empty($this->info['audio'][$key]) && isset($this->info['audio'][$key])) { - unset($this->info['audio'][$key]); - } - if (empty($this->info['video'][$key]) && isset($this->info['video'][$key])) { - unset($this->info['video'][$key]); - } - } - - // remove empty root keys - if (!empty($this->info)) { - foreach ($this->info as $key => $value) { - if (empty($this->info[$key]) && ($this->info[$key] !== 0) && ($this->info[$key] !== '0')) { - unset($this->info[$key]); - } - } - } - - // remove meaningless entries from unknown-format files - if (empty($this->info['fileformat'])) { - if (isset($this->info['avdataoffset'])) { - unset($this->info['avdataoffset']); - } - if (isset($this->info['avdataend'])) { - unset($this->info['avdataend']); - } - } - - // remove possible duplicated identical entries - if (!empty($this->info['error'])) { - $this->info['error'] = array_values(array_unique($this->info['error'])); - } - if (!empty($this->info['warning'])) { - $this->info['warning'] = array_values(array_unique($this->info['warning'])); - } - - // remove "global variable" type keys - unset($this->info['php_memory_limit']); - - return true; - } - - - // return array containing information about all supported formats - function GetFileFormatArray() { - static $format_info = array(); - if (empty($format_info)) { - $format_info = array( - - // Audio formats - - // AC-3 - audio - Dolby AC-3 / Dolby Digital - 'ac3' => array( - 'pattern' => '^\x0B\x77', - 'group' => 'audio', - 'module' => 'ac3', - 'mime_type' => 'audio/ac3', - ), - - // AAC - audio - Advanced Audio Coding (AAC) - ADIF format - 'adif' => array( - 'pattern' => '^ADIF', - 'group' => 'audio', - 'module' => 'aac', - 'mime_type' => 'application/octet-stream', - 'fail_ape' => 'WARNING', - ), - - - // AA - audio - Audible Audiobook - 'adts' => array( - 'pattern' => '^.{4}\x57\x90\x75\x36', - 'group' => 'audio', - 'module' => 'aa', - 'mime_type' => 'audio/audible ', - ), - - // AAC - audio - Advanced Audio Coding (AAC) - ADTS format (very similar to MP3) - 'adts' => array( - 'pattern' => '^\xFF[\xF0-\xF1\xF8-\xF9]', - 'group' => 'audio', - 'module' => 'aac', - 'mime_type' => 'application/octet-stream', - 'fail_ape' => 'WARNING', - ), - - - // AU - audio - NeXT/Sun AUdio (AU) - 'au' => array( - 'pattern' => '^\.snd', - 'group' => 'audio', - 'module' => 'au', - 'mime_type' => 'audio/basic', - ), - - // AVR - audio - Audio Visual Research - 'avr' => array( - 'pattern' => '^2BIT', - 'group' => 'audio', - 'module' => 'avr', - 'mime_type' => 'application/octet-stream', - ), - - // BONK - audio - Bonk v0.9+ - 'bonk' => array( - 'pattern' => '^\x00(BONK|INFO|META| ID3)', - 'group' => 'audio', - 'module' => 'bonk', - 'mime_type' => 'audio/xmms-bonk', - ), - - // DSS - audio - Digital Speech Standard - 'dss' => array( - 'pattern' => '^[\x02-\x03]dss', - 'group' => 'audio', - 'module' => 'dss', - 'mime_type' => 'application/octet-stream', - ), - - // DTS - audio - Dolby Theatre System - 'dts' => array( - 'pattern' => '^\x7F\xFE\x80\x01', - 'group' => 'audio', - 'module' => 'dts', - 'mime_type' => 'audio/dts', - ), - - // FLAC - audio - Free Lossless Audio Codec - 'flac' => array( - 'pattern' => '^fLaC', - 'group' => 'audio', - 'module' => 'flac', - 'mime_type' => 'audio/x-flac', - 'set_inline_attachments' => true, - ), - - // LA - audio - Lossless Audio (LA) - 'la' => array( - 'pattern' => '^LA0[2-4]', - 'group' => 'audio', - 'module' => 'la', - 'mime_type' => 'application/octet-stream', - ), - - // LPAC - audio - Lossless Predictive Audio Compression (LPAC) - 'lpac' => array( - 'pattern' => '^LPAC', - 'group' => 'audio', - 'module' => 'lpac', - 'mime_type' => 'application/octet-stream', - ), - - // MIDI - audio - MIDI (Musical Instrument Digital Interface) - 'midi' => array( - 'pattern' => '^MThd', - 'group' => 'audio', - 'module' => 'midi', - 'mime_type' => 'audio/midi', - ), - - // MAC - audio - Monkey's Audio Compressor - 'mac' => array( - 'pattern' => '^MAC ', - 'group' => 'audio', - 'module' => 'monkey', - 'mime_type' => 'application/octet-stream', - ), - -// has been known to produce false matches in random files (e.g. JPEGs), leave out until more precise matching available -// // MOD - audio - MODule (assorted sub-formats) -// 'mod' => array( -// 'pattern' => '^.{1080}(M\\.K\\.|M!K!|FLT4|FLT8|[5-9]CHN|[1-3][0-9]CH)', -// 'group' => 'audio', -// 'module' => 'mod', -// 'option' => 'mod', -// 'mime_type' => 'audio/mod', -// ), - - // MOD - audio - MODule (Impulse Tracker) - 'it' => array( - 'pattern' => '^IMPM', - 'group' => 'audio', - 'module' => 'mod', - //'option' => 'it', - 'mime_type' => 'audio/it', - ), - - // MOD - audio - MODule (eXtended Module, various sub-formats) - 'xm' => array( - 'pattern' => '^Extended Module', - 'group' => 'audio', - 'module' => 'mod', - //'option' => 'xm', - 'mime_type' => 'audio/xm', - ), - - // MOD - audio - MODule (ScreamTracker) - 's3m' => array( - 'pattern' => '^.{44}SCRM', - 'group' => 'audio', - 'module' => 'mod', - //'option' => 's3m', - 'mime_type' => 'audio/s3m', - ), - - // MPC - audio - Musepack / MPEGplus - 'mpc' => array( - 'pattern' => '^(MPCK|MP\+|[\x00\x01\x10\x11\x40\x41\x50\x51\x80\x81\x90\x91\xC0\xC1\xD0\xD1][\x20-37][\x00\x20\x40\x60\x80\xA0\xC0\xE0])', - 'group' => 'audio', - 'module' => 'mpc', - 'mime_type' => 'audio/x-musepack', - ), - - // MP3 - audio - MPEG-audio Layer 3 (very similar to AAC-ADTS) - 'mp3' => array( - 'pattern' => '^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\x0B\x10-\x1B\x20-\x2B\x30-\x3B\x40-\x4B\x50-\x5B\x60-\x6B\x70-\x7B\x80-\x8B\x90-\x9B\xA0-\xAB\xB0-\xBB\xC0-\xCB\xD0-\xDB\xE0-\xEB\xF0-\xFB]', - 'group' => 'audio', - 'module' => 'mp3', - 'mime_type' => 'audio/mpeg', - ), - - // OFR - audio - OptimFROG - 'ofr' => array( - 'pattern' => '^(\*RIFF|OFR)', - 'group' => 'audio', - 'module' => 'optimfrog', - 'mime_type' => 'application/octet-stream', - ), - - // RKAU - audio - RKive AUdio compressor - 'rkau' => array( - 'pattern' => '^RKA', - 'group' => 'audio', - 'module' => 'rkau', - 'mime_type' => 'application/octet-stream', - ), - - // SHN - audio - Shorten - 'shn' => array( - 'pattern' => '^ajkg', - 'group' => 'audio', - 'module' => 'shorten', - 'mime_type' => 'audio/xmms-shn', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // TTA - audio - TTA Lossless Audio Compressor (http://tta.corecodec.org) - 'tta' => array( - 'pattern' => '^TTA', // could also be '^TTA(\x01|\x02|\x03|2|1)' - 'group' => 'audio', - 'module' => 'tta', - 'mime_type' => 'application/octet-stream', - ), - - // VOC - audio - Creative Voice (VOC) - 'voc' => array( - 'pattern' => '^Creative Voice File', - 'group' => 'audio', - 'module' => 'voc', - 'mime_type' => 'audio/voc', - ), - - // VQF - audio - transform-domain weighted interleave Vector Quantization Format (VQF) - 'vqf' => array( - 'pattern' => '^TWIN', - 'group' => 'audio', - 'module' => 'vqf', - 'mime_type' => 'application/octet-stream', - ), - - // WV - audio - WavPack (v4.0+) - 'wv' => array( - 'pattern' => '^wvpk', - 'group' => 'audio', - 'module' => 'wavpack', - 'mime_type' => 'application/octet-stream', - ), - - - // Audio-Video formats - - // ASF - audio/video - Advanced Streaming Format, Windows Media Video, Windows Media Audio - 'asf' => array( - 'pattern' => '^\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C', - 'group' => 'audio-video', - 'module' => 'asf', - 'mime_type' => 'video/x-ms-asf', - 'iconv_req' => false, - ), - - // BINK - audio/video - Bink / Smacker - 'bink' => array( - 'pattern' => '^(BIK|SMK)', - 'group' => 'audio-video', - 'module' => 'bink', - 'mime_type' => 'application/octet-stream', - ), - - // FLV - audio/video - FLash Video - 'flv' => array( - 'pattern' => '^FLV\x01', - 'group' => 'audio-video', - 'module' => 'flv', - 'mime_type' => 'video/x-flv', - ), - - // MKAV - audio/video - Mastroka - 'matroska' => array( - 'pattern' => '^\x1A\x45\xDF\xA3', - 'group' => 'audio-video', - 'module' => 'matroska', - 'mime_type' => 'video/x-matroska', // may also be audio/x-matroska - 'set_inline_attachments' => true, - ), - - // MPEG - audio/video - MPEG (Moving Pictures Experts Group) - 'mpeg' => array( - 'pattern' => '^\x00\x00\x01(\xBA|\xB3)', - 'group' => 'audio-video', - 'module' => 'mpeg', - 'mime_type' => 'video/mpeg', - ), - - // NSV - audio/video - Nullsoft Streaming Video (NSV) - 'nsv' => array( - 'pattern' => '^NSV[sf]', - 'group' => 'audio-video', - 'module' => 'nsv', - 'mime_type' => 'application/octet-stream', - ), - - // Ogg - audio/video - Ogg (Ogg-Vorbis, Ogg-FLAC, Speex, Ogg-Theora(*), Ogg-Tarkin(*)) - 'ogg' => array( - 'pattern' => '^OggS', - 'group' => 'audio', - 'module' => 'ogg', - 'mime_type' => 'application/ogg', - 'fail_id3' => 'WARNING', - 'fail_ape' => 'WARNING', - 'set_inline_attachments' => true, - ), - - // QT - audio/video - Quicktime - 'quicktime' => array( - 'pattern' => '^.{4}(cmov|free|ftyp|mdat|moov|pnot|skip|wide)', - 'group' => 'audio-video', - 'module' => 'quicktime', - 'mime_type' => 'video/quicktime', - ), - - // RIFF - audio/video - Resource Interchange File Format (RIFF) / WAV / AVI / CD-audio / SDSS = renamed variant used by SmartSound QuickTracks (www.smartsound.com) / FORM = Audio Interchange File Format (AIFF) - 'riff' => array( - 'pattern' => '^(RIFF|SDSS|FORM)', - 'group' => 'audio-video', - 'module' => 'riff', - 'mime_type' => 'audio/x-wave', - 'fail_ape' => 'WARNING', - ), - - // Real - audio/video - RealAudio, RealVideo - 'real' => array( - 'pattern' => '^(\\.RMF|\\.ra)', - 'group' => 'audio-video', - 'module' => 'real', - 'mime_type' => 'audio/x-realaudio', - ), - - // SWF - audio/video - ShockWave Flash - 'swf' => array( - 'pattern' => '^(F|C)WS', - 'group' => 'audio-video', - 'module' => 'swf', - 'mime_type' => 'application/x-shockwave-flash', - ), - - - // Still-Image formats - - // BMP - still image - Bitmap (Windows, OS/2; uncompressed, RLE8, RLE4) - 'bmp' => array( - 'pattern' => '^BM', - 'group' => 'graphic', - 'module' => 'bmp', - 'mime_type' => 'image/bmp', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // GIF - still image - Graphics Interchange Format - 'gif' => array( - 'pattern' => '^GIF', - 'group' => 'graphic', - 'module' => 'gif', - 'mime_type' => 'image/gif', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // JPEG - still image - Joint Photographic Experts Group (JPEG) - 'jpg' => array( - 'pattern' => '^\xFF\xD8\xFF', - 'group' => 'graphic', - 'module' => 'jpg', - 'mime_type' => 'image/jpeg', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // PCD - still image - Kodak Photo CD - 'pcd' => array( - 'pattern' => '^.{2048}PCD_IPI\x00', - 'group' => 'graphic', - 'module' => 'pcd', - 'mime_type' => 'image/x-photo-cd', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - - // PNG - still image - Portable Network Graphics (PNG) - 'png' => array( - 'pattern' => '^\x89\x50\x4E\x47\x0D\x0A\x1A\x0A', - 'group' => 'graphic', - 'module' => 'png', - 'mime_type' => 'image/png', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - - // SVG - still image - Scalable Vector Graphics (SVG) - 'svg' => array( - 'pattern' => '( 'graphic', - 'module' => 'svg', - 'mime_type' => 'image/svg+xml', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - - // TIFF - still image - Tagged Information File Format (TIFF) - 'tiff' => array( - 'pattern' => '^(II\x2A\x00|MM\x00\x2A)', - 'group' => 'graphic', - 'module' => 'tiff', - 'mime_type' => 'image/tiff', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - - // EFAX - still image - eFax (TIFF derivative) - 'bmp' => array( - 'pattern' => '^\xDC\xFE', - 'group' => 'graphic', - 'module' => 'efax', - 'mime_type' => 'image/efax', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - - // Data formats - - // ISO - data - International Standards Organization (ISO) CD-ROM Image - 'iso' => array( - 'pattern' => '^.{32769}CD001', - 'group' => 'misc', - 'module' => 'iso', - 'mime_type' => 'application/octet-stream', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - 'iconv_req' => false, - ), - - // RAR - data - RAR compressed data - 'rar' => array( - 'pattern' => '^Rar\!', - 'group' => 'archive', - 'module' => 'rar', - 'mime_type' => 'application/octet-stream', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // SZIP - audio/data - SZIP compressed data - 'szip' => array( - 'pattern' => '^SZ\x0A\x04', - 'group' => 'archive', - 'module' => 'szip', - 'mime_type' => 'application/octet-stream', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // TAR - data - TAR compressed data - 'tar' => array( - 'pattern' => '^.{100}[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20\x00]{12}[0-9\x20\x00]{12}', - 'group' => 'archive', - 'module' => 'tar', - 'mime_type' => 'application/x-tar', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // GZIP - data - GZIP compressed data - 'gz' => array( - 'pattern' => '^\x1F\x8B\x08', - 'group' => 'archive', - 'module' => 'gzip', - 'mime_type' => 'application/x-gzip', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // ZIP - data - ZIP compressed data - 'zip' => array( - 'pattern' => '^PK\x03\x04', - 'group' => 'archive', - 'module' => 'zip', - 'mime_type' => 'application/zip', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - - // Misc other formats - - // PAR2 - data - Parity Volume Set Specification 2.0 - 'par2' => array ( - 'pattern' => '^PAR2\x00PKT', - 'group' => 'misc', - 'module' => 'par2', - 'mime_type' => 'application/octet-stream', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // PDF - data - Portable Document Format - 'pdf' => array( - 'pattern' => '^\x25PDF', - 'group' => 'misc', - 'module' => 'pdf', - 'mime_type' => 'application/pdf', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // MSOFFICE - data - ZIP compressed data - 'msoffice' => array( - 'pattern' => '^\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1', // D0CF11E == DOCFILE == Microsoft Office Document - 'group' => 'misc', - 'module' => 'msoffice', - 'mime_type' => 'application/octet-stream', - 'fail_id3' => 'ERROR', - 'fail_ape' => 'ERROR', - ), - - // CUE - data - CUEsheet (index to single-file disc images) - 'cue' => array( - 'pattern' => '', // empty pattern means cannot be automatically detected, will fall through all other formats and match based on filename and very basic file contents - 'group' => 'misc', - 'module' => 'cue', - 'mime_type' => 'application/octet-stream', - ), - - ); - } - - return $format_info; - } - - - - function GetFileFormat(&$filedata, $filename='') { - // this function will determine the format of a file based on usually - // the first 2-4 bytes of the file (8 bytes for PNG, 16 bytes for JPG, - // and in the case of ISO CD image, 6 bytes offset 32kb from the start - // of the file). - - // Identify file format - loop through $format_info and detect with reg expr - foreach ($this->GetFileFormatArray() as $format_name => $info) { - // The /s switch on preg_match() forces preg_match() NOT to treat - // newline (0x0A) characters as special chars but do a binary match - if (!empty($info['pattern']) && preg_match('#'.$info['pattern'].'#s', $filedata)) { - $info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php'; - return $info; - } - } - - - if (preg_match('#\.mp[123a]$#i', $filename)) { - // Too many mp3 encoders on the market put gabage in front of mpeg files - // use assume format on these if format detection failed - $GetFileFormatArray = $this->GetFileFormatArray(); - $info = $GetFileFormatArray['mp3']; - $info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php'; - return $info; - } elseif (preg_match('/\.cue$/i', $filename) && preg_match('#FILE "[^"]+" (BINARY|MOTOROLA|AIFF|WAVE|MP3)#', $filedata)) { - // there's not really a useful consistent "magic" at the beginning of .cue files to identify them - // so until I think of something better, just go by filename if all other format checks fail - // and verify there's at least one instance of "TRACK xx AUDIO" in the file - $GetFileFormatArray = $this->GetFileFormatArray(); - $info = $GetFileFormatArray['cue']; - $info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php'; - return $info; - } - - return false; - } - - - // converts array to $encoding charset from $this->encoding - function CharConvert(&$array, $encoding) { - - // identical encoding - end here - if ($encoding == $this->encoding) { - return; - } - - // loop thru array - foreach ($array as $key => $value) { - - // go recursive - if (is_array($value)) { - $this->CharConvert($array[$key], $encoding); - } - - // convert string - elseif (is_string($value)) { - $array[$key] = trim(getid3_lib::iconv_fallback($encoding, $this->encoding, $value)); - } - } - } - - - function HandleAllTags() { - - // key name => array (tag name, character encoding) - static $tags; - if (empty($tags)) { - $tags = array( - 'asf' => array('asf' , 'UTF-16LE'), - 'midi' => array('midi' , 'ISO-8859-1'), - 'nsv' => array('nsv' , 'ISO-8859-1'), - 'ogg' => array('vorbiscomment' , 'UTF-8'), - 'png' => array('png' , 'UTF-8'), - 'tiff' => array('tiff' , 'ISO-8859-1'), - 'quicktime' => array('quicktime' , 'UTF-8'), - 'real' => array('real' , 'ISO-8859-1'), - 'vqf' => array('vqf' , 'ISO-8859-1'), - 'zip' => array('zip' , 'ISO-8859-1'), - 'riff' => array('riff' , 'ISO-8859-1'), - 'lyrics3' => array('lyrics3' , 'ISO-8859-1'), - 'id3v1' => array('id3v1' , $this->encoding_id3v1), - 'id3v2' => array('id3v2' , 'UTF-8'), // not according to the specs (every frame can have a different encoding), but getID3() force-converts all encodings to UTF-8 - 'ape' => array('ape' , 'UTF-8'), - 'cue' => array('cue' , 'ISO-8859-1'), - 'matroska' => array('matroska' , 'UTF-8'), - ); - } - - // loop through comments array - foreach ($tags as $comment_name => $tagname_encoding_array) { - list($tag_name, $encoding) = $tagname_encoding_array; - - // fill in default encoding type if not already present - if (isset($this->info[$comment_name]) && !isset($this->info[$comment_name]['encoding'])) { - $this->info[$comment_name]['encoding'] = $encoding; - } - - // copy comments if key name set - if (!empty($this->info[$comment_name]['comments'])) { - - foreach ($this->info[$comment_name]['comments'] as $tag_key => $valuearray) { - foreach ($valuearray as $key => $value) { - if (is_string($value)) { - $value = trim($value, " \r\n\t"); // do not trim nulls from $value!! Unicode characters will get mangled if trailing nulls are removed! - } - if ($value) { - $this->info['tags'][trim($tag_name)][trim($tag_key)][] = $value; - } - } - } - - if (!isset($this->info['tags'][$tag_name])) { - // comments are set but contain nothing but empty strings, so skip - continue; - } - - if ($this->option_tags_html) { - foreach ($this->info['tags'][$tag_name] as $tag_key => $valuearray) { - foreach ($valuearray as $key => $value) { - if (is_string($value)) { - //$this->info['tags_html'][$tag_name][$tag_key][$key] = getid3_lib::MultiByteCharString2HTML($value, $encoding); - $this->info['tags_html'][$tag_name][$tag_key][$key] = str_replace('�', '', trim(getid3_lib::MultiByteCharString2HTML($value, $encoding))); - } else { - $this->info['tags_html'][$tag_name][$tag_key][$key] = $value; - } - } - } - } - - $this->CharConvert($this->info['tags'][$tag_name], $encoding); // only copy gets converted! - } - - } - - // pictures can take up a lot of space, and we don't need multiple copies of them - // let there be a single copy in [comments][picture], and not elsewhere - if (!empty($this->info['tags'])) { - $unset_keys = array('tags', 'tags_html'); - foreach ($this->info['tags'] as $tagtype => $tagarray) { - foreach ($tagarray as $tagname => $tagdata) { - if ($tagname == 'picture') { - foreach ($tagdata as $key => $tagarray) { - $this->info['comments']['picture'][] = $tagarray; - if (isset($tagarray['data']) && isset($tagarray['image_mime'])) { - if (isset($this->info['tags'][$tagtype][$tagname][$key])) { - unset($this->info['tags'][$tagtype][$tagname][$key]); - } - if (isset($this->info['tags_html'][$tagtype][$tagname][$key])) { - unset($this->info['tags_html'][$tagtype][$tagname][$key]); - } - } - } - } - } - foreach ($unset_keys as $unset_key) { - // remove possible empty keys from (e.g. [tags][id3v2][picture]) - if (empty($this->info[$unset_key][$tagtype]['picture'])) { - unset($this->info[$unset_key][$tagtype]['picture']); - } - if (empty($this->info[$unset_key][$tagtype])) { - unset($this->info[$unset_key][$tagtype]); - } - if (empty($this->info[$unset_key])) { - unset($this->info[$unset_key]); - } - } - // remove duplicate copy of picture data from (e.g. [id3v2][comments][picture]) - if (isset($this->info[$tagtype]['comments']['picture'])) { - unset($this->info[$tagtype]['comments']['picture']); - } - if (empty($this->info[$tagtype]['comments'])) { - unset($this->info[$tagtype]['comments']); - } - if (empty($this->info[$tagtype])) { - unset($this->info[$tagtype]); - } - } - } - return true; - } - - - function getHashdata($algorithm) { - switch ($algorithm) { - case 'md5': - case 'sha1': - break; - - default: - return $this->error('bad algorithm "'.$algorithm.'" in getHashdata()'); - break; - } - - if (!empty($this->info['fileformat']) && !empty($this->info['dataformat']) && ($this->info['fileformat'] == 'ogg') && ($this->info['audio']['dataformat'] == 'vorbis')) { - - // We cannot get an identical md5_data value for Ogg files where the comments - // span more than 1 Ogg page (compared to the same audio data with smaller - // comments) using the normal getID3() method of MD5'ing the data between the - // end of the comments and the end of the file (minus any trailing tags), - // because the page sequence numbers of the pages that the audio data is on - // do not match. Under normal circumstances, where comments are smaller than - // the nominal 4-8kB page size, then this is not a problem, but if there are - // very large comments, the only way around it is to strip off the comment - // tags with vorbiscomment and MD5 that file. - // This procedure must be applied to ALL Ogg files, not just the ones with - // comments larger than 1 page, because the below method simply MD5's the - // whole file with the comments stripped, not just the portion after the - // comments block (which is the standard getID3() method. - - // The above-mentioned problem of comments spanning multiple pages and changing - // page sequence numbers likely happens for OggSpeex and OggFLAC as well, but - // currently vorbiscomment only works on OggVorbis files. - - if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { - - $this->warning('Failed making system call to vorbiscomment.exe - '.$algorithm.'_data is incorrect - error returned: PHP running in Safe Mode (backtick operator not available)'); - $this->info[$algorithm.'_data'] = false; - - } else { - - // Prevent user from aborting script - $old_abort = ignore_user_abort(true); - - // Create empty file - $empty = tempnam(GETID3_TEMP_DIR, 'getID3'); - touch($empty); - - // Use vorbiscomment to make temp file without comments - $temp = tempnam(GETID3_TEMP_DIR, 'getID3'); - $file = $this->info['filenamepath']; - - if (GETID3_OS_ISWINDOWS) { - - if (file_exists(GETID3_HELPERAPPSDIR.'vorbiscomment.exe')) { - - $commandline = '"'.GETID3_HELPERAPPSDIR.'vorbiscomment.exe" -w -c "'.$empty.'" "'.$file.'" "'.$temp.'"'; - $VorbisCommentError = `$commandline`; - - } else { - - $VorbisCommentError = 'vorbiscomment.exe not found in '.GETID3_HELPERAPPSDIR; - - } - - } else { - - $commandline = 'vorbiscomment -w -c "'.$empty.'" "'.$file.'" "'.$temp.'" 2>&1'; - $commandline = 'vorbiscomment -w -c '.escapeshellarg($empty).' '.escapeshellarg($file).' '.escapeshellarg($temp).' 2>&1'; - $VorbisCommentError = `$commandline`; - - } - - if (!empty($VorbisCommentError)) { - - $this->info['warning'][] = 'Failed making system call to vorbiscomment(.exe) - '.$algorithm.'_data will be incorrect. If vorbiscomment is unavailable, please download from http://www.vorbis.com/download.psp and put in the getID3() directory. Error returned: '.$VorbisCommentError; - $this->info[$algorithm.'_data'] = false; - - } else { - - // Get hash of newly created file - switch ($algorithm) { - case 'md5': - $this->info[$algorithm.'_data'] = md5_file($temp); - break; - - case 'sha1': - $this->info[$algorithm.'_data'] = sha1_file($temp); - break; - } - } - - // Clean up - unlink($empty); - unlink($temp); - - // Reset abort setting - ignore_user_abort($old_abort); - - } - - } else { - - if (!empty($this->info['avdataoffset']) || (isset($this->info['avdataend']) && ($this->info['avdataend'] < $this->info['filesize']))) { - - // get hash from part of file - $this->info[$algorithm.'_data'] = getid3_lib::hash_data($this->info['filenamepath'], $this->info['avdataoffset'], $this->info['avdataend'], $algorithm); - - } else { - - // get hash from whole file - switch ($algorithm) { - case 'md5': - $this->info[$algorithm.'_data'] = md5_file($this->info['filenamepath']); - break; - - case 'sha1': - $this->info[$algorithm.'_data'] = sha1_file($this->info['filenamepath']); - break; - } - } - - } - return true; - } - - - function ChannelsBitratePlaytimeCalculations() { - - // set channelmode on audio - if (!empty($this->info['audio']['channelmode']) || !isset($this->info['audio']['channels'])) { - // ignore - } elseif ($this->info['audio']['channels'] == 1) { - $this->info['audio']['channelmode'] = 'mono'; - } elseif ($this->info['audio']['channels'] == 2) { - $this->info['audio']['channelmode'] = 'stereo'; - } - - // Calculate combined bitrate - audio + video - $CombinedBitrate = 0; - $CombinedBitrate += (isset($this->info['audio']['bitrate']) ? $this->info['audio']['bitrate'] : 0); - $CombinedBitrate += (isset($this->info['video']['bitrate']) ? $this->info['video']['bitrate'] : 0); - if (($CombinedBitrate > 0) && empty($this->info['bitrate'])) { - $this->info['bitrate'] = $CombinedBitrate; - } - //if ((isset($this->info['video']) && !isset($this->info['video']['bitrate'])) || (isset($this->info['audio']) && !isset($this->info['audio']['bitrate']))) { - // // for example, VBR MPEG video files cannot determine video bitrate: - // // should not set overall bitrate and playtime from audio bitrate only - // unset($this->info['bitrate']); - //} - - // video bitrate undetermined, but calculable - if (isset($this->info['video']['dataformat']) && $this->info['video']['dataformat'] && (!isset($this->info['video']['bitrate']) || ($this->info['video']['bitrate'] == 0))) { - // if video bitrate not set - if (isset($this->info['audio']['bitrate']) && ($this->info['audio']['bitrate'] > 0) && ($this->info['audio']['bitrate'] == $this->info['bitrate'])) { - // AND if audio bitrate is set to same as overall bitrate - if (isset($this->info['playtime_seconds']) && ($this->info['playtime_seconds'] > 0)) { - // AND if playtime is set - if (isset($this->info['avdataend']) && isset($this->info['avdataoffset'])) { - // AND if AV data offset start/end is known - // THEN we can calculate the video bitrate - $this->info['bitrate'] = round((($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['playtime_seconds']); - $this->info['video']['bitrate'] = $this->info['bitrate'] - $this->info['audio']['bitrate']; - } - } - } - } - - if ((!isset($this->info['playtime_seconds']) || ($this->info['playtime_seconds'] <= 0)) && !empty($this->info['bitrate'])) { - $this->info['playtime_seconds'] = (($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['bitrate']; - } - - if (!isset($this->info['bitrate']) && !empty($this->info['playtime_seconds'])) { - $this->info['bitrate'] = (($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['playtime_seconds']; - } - if (isset($this->info['bitrate']) && empty($this->info['audio']['bitrate']) && empty($this->info['video']['bitrate'])) { - if (isset($this->info['audio']['dataformat']) && empty($this->info['video']['resolution_x'])) { - // audio only - $this->info['audio']['bitrate'] = $this->info['bitrate']; - } elseif (isset($this->info['video']['resolution_x']) && empty($this->info['audio']['dataformat'])) { - // video only - $this->info['video']['bitrate'] = $this->info['bitrate']; - } - } - - // Set playtime string - if (!empty($this->info['playtime_seconds']) && empty($this->info['playtime_string'])) { - $this->info['playtime_string'] = getid3_lib::PlaytimeString($this->info['playtime_seconds']); - } - } - - - function CalculateCompressionRatioVideo() { - if (empty($this->info['video'])) { - return false; - } - if (empty($this->info['video']['resolution_x']) || empty($this->info['video']['resolution_y'])) { - return false; - } - if (empty($this->info['video']['bits_per_sample'])) { - return false; - } - - switch ($this->info['video']['dataformat']) { - case 'bmp': - case 'gif': - case 'jpeg': - case 'jpg': - case 'png': - case 'tiff': - $FrameRate = 1; - $PlaytimeSeconds = 1; - $BitrateCompressed = $this->info['filesize'] * 8; - break; - - default: - if (!empty($this->info['video']['frame_rate'])) { - $FrameRate = $this->info['video']['frame_rate']; - } else { - return false; - } - if (!empty($this->info['playtime_seconds'])) { - $PlaytimeSeconds = $this->info['playtime_seconds']; - } else { - return false; - } - if (!empty($this->info['video']['bitrate'])) { - $BitrateCompressed = $this->info['video']['bitrate']; - } else { - return false; - } - break; - } - $BitrateUncompressed = $this->info['video']['resolution_x'] * $this->info['video']['resolution_y'] * $this->info['video']['bits_per_sample'] * $FrameRate; - - $this->info['video']['compression_ratio'] = $BitrateCompressed / $BitrateUncompressed; - return true; - } - - - function CalculateCompressionRatioAudio() { - if (empty($this->info['audio']['bitrate']) || empty($this->info['audio']['channels']) || empty($this->info['audio']['sample_rate'])) { - return false; - } - $this->info['audio']['compression_ratio'] = $this->info['audio']['bitrate'] / ($this->info['audio']['channels'] * $this->info['audio']['sample_rate'] * (!empty($this->info['audio']['bits_per_sample']) ? $this->info['audio']['bits_per_sample'] : 16)); - - if (!empty($this->info['audio']['streams'])) { - foreach ($this->info['audio']['streams'] as $streamnumber => $streamdata) { - if (!empty($streamdata['bitrate']) && !empty($streamdata['channels']) && !empty($streamdata['sample_rate'])) { - $this->info['audio']['streams'][$streamnumber]['compression_ratio'] = $streamdata['bitrate'] / ($streamdata['channels'] * $streamdata['sample_rate'] * (!empty($streamdata['bits_per_sample']) ? $streamdata['bits_per_sample'] : 16)); - } - } - } - return true; - } - - - function CalculateReplayGain() { - if (isset($this->info['replay_gain'])) { - if (!isset($this->info['replay_gain']['reference_volume'])) { - $this->info['replay_gain']['reference_volume'] = (double) 89.0; - } - if (isset($this->info['replay_gain']['track']['adjustment'])) { - $this->info['replay_gain']['track']['volume'] = $this->info['replay_gain']['reference_volume'] - $this->info['replay_gain']['track']['adjustment']; - } - if (isset($this->info['replay_gain']['album']['adjustment'])) { - $this->info['replay_gain']['album']['volume'] = $this->info['replay_gain']['reference_volume'] - $this->info['replay_gain']['album']['adjustment']; - } - - if (isset($this->info['replay_gain']['track']['peak'])) { - $this->info['replay_gain']['track']['max_noclip_gain'] = 0 - getid3_lib::RGADamplitude2dB($this->info['replay_gain']['track']['peak']); - } - if (isset($this->info['replay_gain']['album']['peak'])) { - $this->info['replay_gain']['album']['max_noclip_gain'] = 0 - getid3_lib::RGADamplitude2dB($this->info['replay_gain']['album']['peak']); - } - } - return true; - } - - function ProcessAudioStreams() { - if (!empty($this->info['audio']['bitrate']) || !empty($this->info['audio']['channels']) || !empty($this->info['audio']['sample_rate'])) { - if (!isset($this->info['audio']['streams'])) { - foreach ($this->info['audio'] as $key => $value) { - if ($key != 'streams') { - $this->info['audio']['streams'][0][$key] = $value; - } - } - } - } - return true; - } - - function getid3_tempnam() { - return tempnam($this->tempdir, 'gI3'); - } - - - public function saveAttachment(&$ThisFileInfoIndex, $filename, $offset, $length) { - try { - if (!getid3_lib::intValueSupported($offset + $length)) { - throw new Exception('cannot extract attachment, it extends beyond the '.round(PHP_INT_MAX / 1073741824).'GB limit'); - } - - // do not extract at all - if ($this->option_save_attachments === getID3::ATTACHMENTS_NONE) { - - unset($ThisFileInfoIndex); // do not set any - - // extract to return array - } elseif ($this->option_save_attachments === getID3::ATTACHMENTS_INLINE) { - - // get whole data in one pass, till it is anyway stored in memory - $ThisFileInfoIndex = file_get_contents($this->info['filenamepath'], false, null, $offset, $length); - if (($ThisFileInfoIndex === false) || (strlen($ThisFileInfoIndex) != $length)) { // verify - throw new Exception('failed to read attachment data'); - } - - // assume directory path is given - } else { - - $dir = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->option_save_attachments), DIRECTORY_SEPARATOR); - // check supplied directory - if (!is_dir($dir) || !is_writable($dir)) { - throw new Exception('getID3::saveAttachment() -- supplied path ('.$dir.') does not exist, or is not writable'); - } - - // set up destination path - $dest = $dir.DIRECTORY_SEPARATOR.$filename; - - // optimize speed if read buffer size is configured to be large enough - // here stream_copy_to_stream() may also be used. need to do speed-compare tests - if ($length <= $this->fread_buffer_size()) { - $data = file_get_contents($this->info['filenamepath'], false, null, $offset, $length); - if (($data === false) || (strlen($data) != $length)) { // verify - throw new Exception('failed to read attachment data'); - } - if (!file_put_contents($dest, $data)) { - throw new Exception('failed to create file '.$dest); - } - } else { - // optimization not available - copy data in loop - // here stream_copy_to_stream() shouldn't be used because it's internal read buffer may be larger than ours! - getid3_lib::CopyFileParts($this->info['filenamepath'], $dest, $offset, $length); - } - $ThisFileInfoIndex = $dest; - } - - } catch (Exception $e) { - - unset($ThisFileInfoIndex); // do not set any is case of error - $this->warning('Failed to extract attachment '.$filename.': '.$e->getMessage()); - return false; - - } - return true; - } - - - public function include_module($name) { - //if (!file_exists($this->include_path.'module.'.$name.'.php')) { - if (!file_exists(GETID3_INCLUDEPATH.'module.'.$name.'.php')) { - throw new getid3_exception('Required module.'.$name.'.php is missing.'); - } - include_once(GETID3_INCLUDEPATH.'module.'.$name.'.php'); - return true; - } - -} - - -abstract class getid3_handler -{ - protected $getid3; // pointer - - protected $data_string_flag = false; // analyzing filepointer or string - protected $data_string; // string to analyze - protected $data_string_position = 0; // seek position in string - - - public function __construct(getID3 $getid3) { - $this->getid3 = $getid3; - } - - - // Analyze from file pointer - abstract public function Analyze(); - - - // Analyze from string instead - public function AnalyzeString(&$string) { - // Enter string mode - $this->data_string_flag = true; - $this->data_string = $string; - - // Save info - $saved_avdataoffset = $this->getid3->info['avdataoffset']; - $saved_avdataend = $this->getid3->info['avdataend']; - $saved_filesize = $this->getid3->info['filesize']; - - // Reset some info - $this->getid3->info['avdataoffset'] = 0; - $this->getid3->info['avdataend'] = $this->getid3->info['filesize'] = strlen($string); - - // Analyze - $this->Analyze(); - - // Restore some info - $this->getid3->info['avdataoffset'] = $saved_avdataoffset; - $this->getid3->info['avdataend'] = $saved_avdataend; - $this->getid3->info['filesize'] = $saved_filesize; - - // Exit string mode - $this->data_string_flag = false; - } - - - protected function ftell() { - if ($this->data_string_flag) { - return $this->data_string_position; - } - return ftell($this->getid3->fp); - } - - - protected function fread($bytes) { - if ($this->data_string_flag) { - $this->data_string_position += $bytes; - return substr($this->data_string, $this->data_string_position - $bytes, $bytes); - } - return fread($this->getid3->fp, $bytes); - } - - - protected function fseek($bytes, $whence = SEEK_SET) { - if ($this->data_string_flag) { - switch ($whence) { - case SEEK_SET: - $this->data_string_position = $bytes; - return; - - case SEEK_CUR: - $this->data_string_position += $bytes; - return; - - case SEEK_END: - $this->data_string_position = strlen($this->data_string) + $bytes; - return; - } - } - return fseek($this->getid3->fp, $bytes, $whence); - } - -} - - -class getid3_exception extends Exception -{ - public $message; -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/license.txt b/3rdparty/getid3/license.txt deleted file mode 100644 index 9fec8082904c69a5e62e3f590c1e0a409a04f2f1..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/license.txt +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/3rdparty/getid3/module.archive.gzip.php b/3rdparty/getid3/module.archive.gzip.php deleted file mode 100644 index c30052eda403db6963590c626a8da06c40d4d7a9..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.archive.gzip.php +++ /dev/null @@ -1,280 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.gzip.php // -// module for analyzing GZIP files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// -// // -// Module originally written by // -// Mike Mozolin // -// // -///////////////////////////////////////////////////////////////// - - -class getid3_gzip extends getid3_handler { - - // public: Optional file list - disable for speed. - var $option_gzip_parse_contents = false; // decode gzipped files, if possible, and parse recursively (.tar.gz for example) - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'gzip'; - - $start_length = 10; - $unpack_header = 'a1id1/a1id2/a1cmethod/a1flags/a4mtime/a1xflags/a1os'; - //+---+---+---+---+---+---+---+---+---+---+ - //|ID1|ID2|CM |FLG| MTIME |XFL|OS | - //+---+---+---+---+---+---+---+---+---+---+ - - if ($info['filesize'] > $info['php_memory_limit']) { - $info['error'][] = 'File is too large ('.number_format($info['filesize']).' bytes) to read into memory (limit: '.number_format($info['php_memory_limit'] / 1048576).'MB)'; - return false; - } - fseek($this->getid3->fp, 0); - $buffer = fread($this->getid3->fp, $info['filesize']); - - $arr_members = explode("\x1F\x8B\x08", $buffer); - while (true) { - $is_wrong_members = false; - $num_members = intval(count($arr_members)); - for ($i = 0; $i < $num_members; $i++) { - if (strlen($arr_members[$i]) == 0) { - continue; - } - $buf = "\x1F\x8B\x08".$arr_members[$i]; - - $attr = unpack($unpack_header, substr($buf, 0, $start_length)); - if (!$this->get_os_type(ord($attr['os']))) { - // Merge member with previous if wrong OS type - $arr_members[$i - 1] .= $buf; - $arr_members[$i] = ''; - $is_wrong_members = true; - continue; - } - } - if (!$is_wrong_members) { - break; - } - } - - $info['gzip']['files'] = array(); - - $fpointer = 0; - $idx = 0; - for ($i = 0; $i < $num_members; $i++) { - if (strlen($arr_members[$i]) == 0) { - continue; - } - $thisInfo = &$info['gzip']['member_header'][++$idx]; - - $buff = "\x1F\x8B\x08".$arr_members[$i]; - - $attr = unpack($unpack_header, substr($buff, 0, $start_length)); - $thisInfo['filemtime'] = getid3_lib::LittleEndian2Int($attr['mtime']); - $thisInfo['raw']['id1'] = ord($attr['cmethod']); - $thisInfo['raw']['id2'] = ord($attr['cmethod']); - $thisInfo['raw']['cmethod'] = ord($attr['cmethod']); - $thisInfo['raw']['os'] = ord($attr['os']); - $thisInfo['raw']['xflags'] = ord($attr['xflags']); - $thisInfo['raw']['flags'] = ord($attr['flags']); - - $thisInfo['flags']['crc16'] = (bool) ($thisInfo['raw']['flags'] & 0x02); - $thisInfo['flags']['extra'] = (bool) ($thisInfo['raw']['flags'] & 0x04); - $thisInfo['flags']['filename'] = (bool) ($thisInfo['raw']['flags'] & 0x08); - $thisInfo['flags']['comment'] = (bool) ($thisInfo['raw']['flags'] & 0x10); - - $thisInfo['compression'] = $this->get_xflag_type($thisInfo['raw']['xflags']); - - $thisInfo['os'] = $this->get_os_type($thisInfo['raw']['os']); - if (!$thisInfo['os']) { - $info['error'][] = 'Read error on gzip file'; - return false; - } - - $fpointer = 10; - $arr_xsubfield = array(); - // bit 2 - FLG.FEXTRA - //+---+---+=================================+ - //| XLEN |...XLEN bytes of "extra field"...| - //+---+---+=================================+ - if ($thisInfo['flags']['extra']) { - $w_xlen = substr($buff, $fpointer, 2); - $xlen = getid3_lib::LittleEndian2Int($w_xlen); - $fpointer += 2; - - $thisInfo['raw']['xfield'] = substr($buff, $fpointer, $xlen); - // Extra SubFields - //+---+---+---+---+==================================+ - //|SI1|SI2| LEN |... LEN bytes of subfield data ...| - //+---+---+---+---+==================================+ - $idx = 0; - while (true) { - if ($idx >= $xlen) { - break; - } - $si1 = ord(substr($buff, $fpointer + $idx++, 1)); - $si2 = ord(substr($buff, $fpointer + $idx++, 1)); - if (($si1 == 0x41) && ($si2 == 0x70)) { - $w_xsublen = substr($buff, $fpointer + $idx, 2); - $xsublen = getid3_lib::LittleEndian2Int($w_xsublen); - $idx += 2; - $arr_xsubfield[] = substr($buff, $fpointer + $idx, $xsublen); - $idx += $xsublen; - } else { - break; - } - } - $fpointer += $xlen; - } - // bit 3 - FLG.FNAME - //+=========================================+ - //|...original file name, zero-terminated...| - //+=========================================+ - // GZIP files may have only one file, with no filename, so assume original filename is current filename without .gz - $thisInfo['filename'] = preg_replace('#\.gz$#i', '', $info['filename']); - if ($thisInfo['flags']['filename']) { - while (true) { - if (ord($buff[$fpointer]) == 0) { - $fpointer++; - break; - } - $thisInfo['filename'] .= $buff[$fpointer]; - $fpointer++; - } - } - // bit 4 - FLG.FCOMMENT - //+===================================+ - //|...file comment, zero-terminated...| - //+===================================+ - if ($thisInfo['flags']['comment']) { - while (true) { - if (ord($buff[$fpointer]) == 0) { - $fpointer++; - break; - } - $thisInfo['comment'] .= $buff[$fpointer]; - $fpointer++; - } - } - // bit 1 - FLG.FHCRC - //+---+---+ - //| CRC16 | - //+---+---+ - if ($thisInfo['flags']['crc16']) { - $w_crc = substr($buff, $fpointer, 2); - $thisInfo['crc16'] = getid3_lib::LittleEndian2Int($w_crc); - $fpointer += 2; - } - // bit 0 - FLG.FTEXT - //if ($thisInfo['raw']['flags'] & 0x01) { - // Ignored... - //} - // bits 5, 6, 7 - reserved - - $thisInfo['crc32'] = getid3_lib::LittleEndian2Int(substr($buff, strlen($buff) - 8, 4)); - $thisInfo['filesize'] = getid3_lib::LittleEndian2Int(substr($buff, strlen($buff) - 4)); - - $info['gzip']['files'] = getid3_lib::array_merge_clobber($info['gzip']['files'], getid3_lib::CreateDeepArray($thisInfo['filename'], '/', $thisInfo['filesize'])); - - if ($this->option_gzip_parse_contents) { - // Try to inflate GZip - $csize = 0; - $inflated = ''; - $chkcrc32 = ''; - if (function_exists('gzinflate')) { - $cdata = substr($buff, $fpointer); - $cdata = substr($cdata, 0, strlen($cdata) - 8); - $csize = strlen($cdata); - $inflated = gzinflate($cdata); - - // Calculate CRC32 for inflated content - $thisInfo['crc32_valid'] = (bool) (sprintf('%u', crc32($inflated)) == $thisInfo['crc32']); - - // determine format - $formattest = substr($inflated, 0, 32774); - $getid3_temp = new getID3(); - $determined_format = $getid3_temp->GetFileFormat($formattest); - unset($getid3_temp); - - // file format is determined - $determined_format['module'] = (isset($determined_format['module']) ? $determined_format['module'] : ''); - switch ($determined_format['module']) { - case 'tar': - // view TAR-file info - if (file_exists(GETID3_INCLUDEPATH.$determined_format['include']) && include_once(GETID3_INCLUDEPATH.$determined_format['include'])) { - if (($temp_tar_filename = tempnam(GETID3_TEMP_DIR, 'getID3')) === false) { - // can't find anywhere to create a temp file, abort - $info['error'][] = 'Unable to create temp file to parse TAR inside GZIP file'; - break; - } - if ($fp_temp_tar = fopen($temp_tar_filename, 'w+b')) { - fwrite($fp_temp_tar, $inflated); - fclose($fp_temp_tar); - $getid3_temp = new getID3(); - $getid3_temp->openfile($temp_tar_filename); - $getid3_tar = new getid3_tar($getid3_temp); - $getid3_tar->Analyze(); - $info['gzip']['member_header'][$idx]['tar'] = $getid3_temp->info['tar']; - unset($getid3_temp, $getid3_tar); - unlink($temp_tar_filename); - } else { - $info['error'][] = 'Unable to fopen() temp file to parse TAR inside GZIP file'; - break; - } - } - break; - - case '': - default: - // unknown or unhandled format - break; - } - } - } - } - return true; - } - - // Converts the OS type - function get_os_type($key) { - static $os_type = array( - '0' => 'FAT filesystem (MS-DOS, OS/2, NT/Win32)', - '1' => 'Amiga', - '2' => 'VMS (or OpenVMS)', - '3' => 'Unix', - '4' => 'VM/CMS', - '5' => 'Atari TOS', - '6' => 'HPFS filesystem (OS/2, NT)', - '7' => 'Macintosh', - '8' => 'Z-System', - '9' => 'CP/M', - '10' => 'TOPS-20', - '11' => 'NTFS filesystem (NT)', - '12' => 'QDOS', - '13' => 'Acorn RISCOS', - '255' => 'unknown' - ); - return (isset($os_type[$key]) ? $os_type[$key] : ''); - } - - // Converts the eXtra FLags - function get_xflag_type($key) { - static $xflag_type = array( - '0' => 'unknown', - '2' => 'maximum compression', - '4' => 'fastest algorithm' - ); - return (isset($xflag_type[$key]) ? $xflag_type[$key] : ''); - } -} - -?> diff --git a/3rdparty/getid3/module.archive.rar.php b/3rdparty/getid3/module.archive.rar.php deleted file mode 100644 index 4f5d46f837383c887028b714defb3e8a316b6f17..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.archive.rar.php +++ /dev/null @@ -1,53 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.rar.php // -// module for analyzing RAR files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_rar extends getid3_handler -{ - - var $option_use_rar_extension = false; - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'rar'; - - if ($this->option_use_rar_extension === true) { - if (function_exists('rar_open')) { - if ($rp = rar_open($info['filenamepath'])) { - $info['rar']['files'] = array(); - $entries = rar_list($rp); - foreach ($entries as $entry) { - $info['rar']['files'] = getid3_lib::array_merge_clobber($info['rar']['files'], getid3_lib::CreateDeepArray($entry->getName(), '/', $entry->getUnpackedSize())); - } - rar_close($rp); - return true; - } else { - $info['error'][] = 'failed to rar_open('.$info['filename'].')'; - } - } else { - $info['error'][] = 'RAR support does not appear to be available in this PHP installation'; - } - } else { - $info['error'][] = 'PHP-RAR processing has been disabled (set $getid3_rar->option_use_rar_extension=true to enable)'; - } - return false; - - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.archive.szip.php b/3rdparty/getid3/module.archive.szip.php deleted file mode 100644 index 3be6253263edf776fe1b18391dfd025d5ef2f131..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.archive.szip.php +++ /dev/null @@ -1,96 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.szip.php // -// module for analyzing SZIP compressed files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_szip extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $SZIPHeader = fread($this->getid3->fp, 6); - if (substr($SZIPHeader, 0, 4) != "SZ\x0A\x04") { - $info['error'][] = 'Expecting "53 5A 0A 04" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($SZIPHeader, 0, 4)).'"'; - return false; - } - $info['fileformat'] = 'szip'; - $info['szip']['major_version'] = getid3_lib::BigEndian2Int(substr($SZIPHeader, 4, 1)); - $info['szip']['minor_version'] = getid3_lib::BigEndian2Int(substr($SZIPHeader, 5, 1)); - - while (!feof($this->getid3->fp)) { - $NextBlockID = fread($this->getid3->fp, 2); - switch ($NextBlockID) { - case 'SZ': - // Note that szip files can be concatenated, this has the same effect as - // concatenating the files. this also means that global header blocks - // might be present between directory/data blocks. - fseek($this->getid3->fp, 4, SEEK_CUR); - break; - - case 'BH': - $BHheaderbytes = getid3_lib::BigEndian2Int(fread($this->getid3->fp, 3)); - $BHheaderdata = fread($this->getid3->fp, $BHheaderbytes); - $BHheaderoffset = 0; - while (strpos($BHheaderdata, "\x00", $BHheaderoffset) > 0) { - //filename as \0 terminated string (empty string indicates end) - //owner as \0 terminated string (empty is same as last file) - //group as \0 terminated string (empty is same as last file) - //3 byte filelength in this block - //2 byte access flags - //4 byte creation time (like in unix) - //4 byte modification time (like in unix) - //4 byte access time (like in unix) - - $BHdataArray['filename'] = substr($BHheaderdata, $BHheaderoffset, strcspn($BHheaderdata, "\x00")); - $BHheaderoffset += (strlen($BHdataArray['filename']) + 1); - - $BHdataArray['owner'] = substr($BHheaderdata, $BHheaderoffset, strcspn($BHheaderdata, "\x00")); - $BHheaderoffset += (strlen($BHdataArray['owner']) + 1); - - $BHdataArray['group'] = substr($BHheaderdata, $BHheaderoffset, strcspn($BHheaderdata, "\x00")); - $BHheaderoffset += (strlen($BHdataArray['group']) + 1); - - $BHdataArray['filelength'] = getid3_lib::BigEndian2Int(substr($BHheaderdata, $BHheaderoffset, 3)); - $BHheaderoffset += 3; - - $BHdataArray['access_flags'] = getid3_lib::BigEndian2Int(substr($BHheaderdata, $BHheaderoffset, 2)); - $BHheaderoffset += 2; - - $BHdataArray['creation_time'] = getid3_lib::BigEndian2Int(substr($BHheaderdata, $BHheaderoffset, 4)); - $BHheaderoffset += 4; - - $BHdataArray['modification_time'] = getid3_lib::BigEndian2Int(substr($BHheaderdata, $BHheaderoffset, 4)); - $BHheaderoffset += 4; - - $BHdataArray['access_time'] = getid3_lib::BigEndian2Int(substr($BHheaderdata, $BHheaderoffset, 4)); - $BHheaderoffset += 4; - - $info['szip']['BH'][] = $BHdataArray; - } - break; - - default: - break 2; - } - } - - return true; - - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.archive.tar.php b/3rdparty/getid3/module.archive.tar.php deleted file mode 100644 index 94d320398990d1a72a43f7ffd880a8ab01a9c20c..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.archive.tar.php +++ /dev/null @@ -1,178 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.tar.php // -// module for analyzing TAR files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// -// // -// Module originally written by // -// Mike Mozolin // -// // -///////////////////////////////////////////////////////////////// - - -class getid3_tar extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'tar'; - $info['tar']['files'] = array(); - - $unpack_header = 'a100fname/a8mode/a8uid/a8gid/a12size/a12mtime/a8chksum/a1typflag/a100lnkname/a6magic/a2ver/a32uname/a32gname/a8devmaj/a8devmin/a155prefix'; - $null_512k = str_repeat("\x00", 512); // end-of-file marker - - fseek($this->getid3->fp, 0); - while (!feof($this->getid3->fp)) { - $buffer = fread($this->getid3->fp, 512); - if (strlen($buffer) < 512) { - break; - } - - // check the block - $checksum = 0; - for ($i = 0; $i < 148; $i++) { - $checksum += ord($buffer{$i}); - } - for ($i = 148; $i < 156; $i++) { - $checksum += ord(' '); - } - for ($i = 156; $i < 512; $i++) { - $checksum += ord($buffer{$i}); - } - $attr = unpack($unpack_header, $buffer); - $name = (isset($attr['fname'] ) ? trim($attr['fname'] ) : ''); - $mode = octdec(isset($attr['mode'] ) ? trim($attr['mode'] ) : ''); - $uid = octdec(isset($attr['uid'] ) ? trim($attr['uid'] ) : ''); - $gid = octdec(isset($attr['gid'] ) ? trim($attr['gid'] ) : ''); - $size = octdec(isset($attr['size'] ) ? trim($attr['size'] ) : ''); - $mtime = octdec(isset($attr['mtime'] ) ? trim($attr['mtime'] ) : ''); - $chksum = octdec(isset($attr['chksum'] ) ? trim($attr['chksum'] ) : ''); - $typflag = (isset($attr['typflag']) ? trim($attr['typflag']) : ''); - $lnkname = (isset($attr['lnkname']) ? trim($attr['lnkname']) : ''); - $magic = (isset($attr['magic'] ) ? trim($attr['magic'] ) : ''); - $ver = (isset($attr['ver'] ) ? trim($attr['ver'] ) : ''); - $uname = (isset($attr['uname'] ) ? trim($attr['uname'] ) : ''); - $gname = (isset($attr['gname'] ) ? trim($attr['gname'] ) : ''); - $devmaj = octdec(isset($attr['devmaj'] ) ? trim($attr['devmaj'] ) : ''); - $devmin = octdec(isset($attr['devmin'] ) ? trim($attr['devmin'] ) : ''); - $prefix = (isset($attr['prefix'] ) ? trim($attr['prefix'] ) : ''); - if (($checksum == 256) && ($chksum == 0)) { - // EOF Found - break; - } - if ($prefix) { - $name = $prefix.'/'.$name; - } - if ((preg_match('#/$#', $name)) && !$name) { - $typeflag = 5; - } - if ($buffer == $null_512k) { - // it's the end of the tar-file... - break; - } - - // Read to the next chunk - fseek($this->getid3->fp, $size, SEEK_CUR); - - $diff = $size % 512; - if ($diff != 0) { - // Padding, throw away - fseek($this->getid3->fp, (512 - $diff), SEEK_CUR); - } - // Protect against tar-files with garbage at the end - if ($name == '') { - break; - } - $info['tar']['file_details'][$name] = array ( - 'name' => $name, - 'mode_raw' => $mode, - 'mode' => getid3_tar::display_perms($mode), - 'uid' => $uid, - 'gid' => $gid, - 'size' => $size, - 'mtime' => $mtime, - 'chksum' => $chksum, - 'typeflag' => getid3_tar::get_flag_type($typflag), - 'linkname' => $lnkname, - 'magic' => $magic, - 'version' => $ver, - 'uname' => $uname, - 'gname' => $gname, - 'devmajor' => $devmaj, - 'devminor' => $devmin - ); - $info['tar']['files'] = getid3_lib::array_merge_clobber($info['tar']['files'], getid3_lib::CreateDeepArray($info['tar']['file_details'][$name]['name'], '/', $size)); - } - return true; - } - - // Parses the file mode to file permissions - function display_perms($mode) { - // Determine Type - if ($mode & 0x1000) $type='p'; // FIFO pipe - elseif ($mode & 0x2000) $type='c'; // Character special - elseif ($mode & 0x4000) $type='d'; // Directory - elseif ($mode & 0x6000) $type='b'; // Block special - elseif ($mode & 0x8000) $type='-'; // Regular - elseif ($mode & 0xA000) $type='l'; // Symbolic Link - elseif ($mode & 0xC000) $type='s'; // Socket - else $type='u'; // UNKNOWN - - // Determine permissions - $owner['read'] = (($mode & 00400) ? 'r' : '-'); - $owner['write'] = (($mode & 00200) ? 'w' : '-'); - $owner['execute'] = (($mode & 00100) ? 'x' : '-'); - $group['read'] = (($mode & 00040) ? 'r' : '-'); - $group['write'] = (($mode & 00020) ? 'w' : '-'); - $group['execute'] = (($mode & 00010) ? 'x' : '-'); - $world['read'] = (($mode & 00004) ? 'r' : '-'); - $world['write'] = (($mode & 00002) ? 'w' : '-'); - $world['execute'] = (($mode & 00001) ? 'x' : '-'); - - // Adjust for SUID, SGID and sticky bit - if ($mode & 0x800) $owner['execute'] = ($owner['execute'] == 'x') ? 's' : 'S'; - if ($mode & 0x400) $group['execute'] = ($group['execute'] == 'x') ? 's' : 'S'; - if ($mode & 0x200) $world['execute'] = ($world['execute'] == 'x') ? 't' : 'T'; - - $s = sprintf('%1s', $type); - $s .= sprintf('%1s%1s%1s', $owner['read'], $owner['write'], $owner['execute']); - $s .= sprintf('%1s%1s%1s', $group['read'], $group['write'], $group['execute']); - $s .= sprintf('%1s%1s%1s'."\n", $world['read'], $world['write'], $world['execute']); - return $s; - } - - // Converts the file type - function get_flag_type($typflag) { - static $flag_types = array( - '0' => 'LF_NORMAL', - '1' => 'LF_LINK', - '2' => 'LF_SYNLINK', - '3' => 'LF_CHR', - '4' => 'LF_BLK', - '5' => 'LF_DIR', - '6' => 'LF_FIFO', - '7' => 'LF_CONFIG', - 'D' => 'LF_DUMPDIR', - 'K' => 'LF_LONGLINK', - 'L' => 'LF_LONGNAME', - 'M' => 'LF_MULTIVOL', - 'N' => 'LF_NAMES', - 'S' => 'LF_SPARSE', - 'V' => 'LF_VOLHDR' - ); - return (isset($flag_types[$typflag]) ? $flag_types[$typflag] : ''); - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.archive.zip.php b/3rdparty/getid3/module.archive.zip.php deleted file mode 100644 index 7db8fd23f131261a1bea2cacbb6d944873cf2aa2..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.archive.zip.php +++ /dev/null @@ -1,424 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.zip.php // -// module for analyzing pkZip files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_zip extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'zip'; - $info['zip']['encoding'] = 'ISO-8859-1'; - $info['zip']['files'] = array(); - - $info['zip']['compressed_size'] = 0; - $info['zip']['uncompressed_size'] = 0; - $info['zip']['entries_count'] = 0; - - if (!getid3_lib::intValueSupported($info['filesize'])) { - $info['error'][] = 'File is larger than '.round(PHP_INT_MAX / 1073741824).'GB, not supported by PHP'; - return false; - } else { - $EOCDsearchData = ''; - $EOCDsearchCounter = 0; - while ($EOCDsearchCounter++ < 512) { - - fseek($this->getid3->fp, -128 * $EOCDsearchCounter, SEEK_END); - $EOCDsearchData = fread($this->getid3->fp, 128).$EOCDsearchData; - - if (strstr($EOCDsearchData, 'PK'."\x05\x06")) { - - $EOCDposition = strpos($EOCDsearchData, 'PK'."\x05\x06"); - fseek($this->getid3->fp, (-128 * $EOCDsearchCounter) + $EOCDposition, SEEK_END); - $info['zip']['end_central_directory'] = $this->ZIPparseEndOfCentralDirectory(); - - fseek($this->getid3->fp, $info['zip']['end_central_directory']['directory_offset'], SEEK_SET); - $info['zip']['entries_count'] = 0; - while ($centraldirectoryentry = $this->ZIPparseCentralDirectory($this->getid3->fp)) { - $info['zip']['central_directory'][] = $centraldirectoryentry; - $info['zip']['entries_count']++; - $info['zip']['compressed_size'] += $centraldirectoryentry['compressed_size']; - $info['zip']['uncompressed_size'] += $centraldirectoryentry['uncompressed_size']; - - if ($centraldirectoryentry['uncompressed_size'] > 0) { - $info['zip']['files'] = getid3_lib::array_merge_clobber($info['zip']['files'], getid3_lib::CreateDeepArray($centraldirectoryentry['filename'], '/', $centraldirectoryentry['uncompressed_size'])); - } - } - - if ($info['zip']['entries_count'] == 0) { - $info['error'][] = 'No Central Directory entries found (truncated file?)'; - return false; - } - - if (!empty($info['zip']['end_central_directory']['comment'])) { - $info['zip']['comments']['comment'][] = $info['zip']['end_central_directory']['comment']; - } - - if (isset($info['zip']['central_directory'][0]['compression_method'])) { - $info['zip']['compression_method'] = $info['zip']['central_directory'][0]['compression_method']; - } - if (isset($info['zip']['central_directory'][0]['flags']['compression_speed'])) { - $info['zip']['compression_speed'] = $info['zip']['central_directory'][0]['flags']['compression_speed']; - } - if (isset($info['zip']['compression_method']) && ($info['zip']['compression_method'] == 'store') && !isset($info['zip']['compression_speed'])) { - $info['zip']['compression_speed'] = 'store'; - } - - return true; - - } - } - } - - if ($this->getZIPentriesFilepointer()) { - - // central directory couldn't be found and/or parsed - // scan through actual file data entries, recover as much as possible from probable trucated file - if ($info['zip']['compressed_size'] > ($info['filesize'] - 46 - 22)) { - $info['error'][] = 'Warning: Truncated file! - Total compressed file sizes ('.$info['zip']['compressed_size'].' bytes) is greater than filesize minus Central Directory and End Of Central Directory structures ('.($info['filesize'] - 46 - 22).' bytes)'; - } - $info['error'][] = 'Cannot find End Of Central Directory - returned list of files in [zip][entries] array may not be complete'; - foreach ($info['zip']['entries'] as $key => $valuearray) { - $info['zip']['files'][$valuearray['filename']] = $valuearray['uncompressed_size']; - } - return true; - - } else { - - unset($info['zip']); - $info['fileformat'] = ''; - $info['error'][] = 'Cannot find End Of Central Directory (truncated file?)'; - return false; - - } - } - - - function getZIPHeaderFilepointerTopDown() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'zip'; - - $info['zip']['compressed_size'] = 0; - $info['zip']['uncompressed_size'] = 0; - $info['zip']['entries_count'] = 0; - - rewind($this->getid3->fp); - while ($fileentry = $this->ZIPparseLocalFileHeader()) { - $info['zip']['entries'][] = $fileentry; - $info['zip']['entries_count']++; - } - if ($info['zip']['entries_count'] == 0) { - $info['error'][] = 'No Local File Header entries found'; - return false; - } - - $info['zip']['entries_count'] = 0; - while ($centraldirectoryentry = $this->ZIPparseCentralDirectory($this->getid3->fp)) { - $info['zip']['central_directory'][] = $centraldirectoryentry; - $info['zip']['entries_count']++; - $info['zip']['compressed_size'] += $centraldirectoryentry['compressed_size']; - $info['zip']['uncompressed_size'] += $centraldirectoryentry['uncompressed_size']; - } - if ($info['zip']['entries_count'] == 0) { - $info['error'][] = 'No Central Directory entries found (truncated file?)'; - return false; - } - - if ($EOCD = $this->ZIPparseEndOfCentralDirectory()) { - $info['zip']['end_central_directory'] = $EOCD; - } else { - $info['error'][] = 'No End Of Central Directory entry found (truncated file?)'; - return false; - } - - if (!empty($info['zip']['end_central_directory']['comment'])) { - $info['zip']['comments']['comment'][] = $info['zip']['end_central_directory']['comment']; - } - - return true; - } - - - function getZIPentriesFilepointer() { - $info = &$this->getid3->info; - - $info['zip']['compressed_size'] = 0; - $info['zip']['uncompressed_size'] = 0; - $info['zip']['entries_count'] = 0; - - rewind($this->getid3->fp); - while ($fileentry = $this->ZIPparseLocalFileHeader()) { - $info['zip']['entries'][] = $fileentry; - $info['zip']['entries_count']++; - $info['zip']['compressed_size'] += $fileentry['compressed_size']; - $info['zip']['uncompressed_size'] += $fileentry['uncompressed_size']; - } - if ($info['zip']['entries_count'] == 0) { - $info['error'][] = 'No Local File Header entries found'; - return false; - } - - return true; - } - - - function ZIPparseLocalFileHeader() { - $LocalFileHeader['offset'] = ftell($this->getid3->fp); - - $ZIPlocalFileHeader = fread($this->getid3->fp, 30); - - $LocalFileHeader['raw']['signature'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 0, 4)); - if ($LocalFileHeader['raw']['signature'] != 0x04034B50) { - // invalid Local File Header Signature - fseek($this->getid3->fp, $LocalFileHeader['offset'], SEEK_SET); // seek back to where filepointer originally was so it can be handled properly - return false; - } - $LocalFileHeader['raw']['extract_version'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 4, 2)); - $LocalFileHeader['raw']['general_flags'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 6, 2)); - $LocalFileHeader['raw']['compression_method'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 8, 2)); - $LocalFileHeader['raw']['last_mod_file_time'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 10, 2)); - $LocalFileHeader['raw']['last_mod_file_date'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 12, 2)); - $LocalFileHeader['raw']['crc_32'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 14, 4)); - $LocalFileHeader['raw']['compressed_size'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 18, 4)); - $LocalFileHeader['raw']['uncompressed_size'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 22, 4)); - $LocalFileHeader['raw']['filename_length'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 26, 2)); - $LocalFileHeader['raw']['extra_field_length'] = getid3_lib::LittleEndian2Int(substr($ZIPlocalFileHeader, 28, 2)); - - $LocalFileHeader['extract_version'] = sprintf('%1.1f', $LocalFileHeader['raw']['extract_version'] / 10); - $LocalFileHeader['host_os'] = $this->ZIPversionOSLookup(($LocalFileHeader['raw']['extract_version'] & 0xFF00) >> 8); - $LocalFileHeader['compression_method'] = $this->ZIPcompressionMethodLookup($LocalFileHeader['raw']['compression_method']); - $LocalFileHeader['compressed_size'] = $LocalFileHeader['raw']['compressed_size']; - $LocalFileHeader['uncompressed_size'] = $LocalFileHeader['raw']['uncompressed_size']; - $LocalFileHeader['flags'] = $this->ZIPparseGeneralPurposeFlags($LocalFileHeader['raw']['general_flags'], $LocalFileHeader['raw']['compression_method']); - $LocalFileHeader['last_modified_timestamp'] = $this->DOStime2UNIXtime($LocalFileHeader['raw']['last_mod_file_date'], $LocalFileHeader['raw']['last_mod_file_time']); - - $FilenameExtrafieldLength = $LocalFileHeader['raw']['filename_length'] + $LocalFileHeader['raw']['extra_field_length']; - if ($FilenameExtrafieldLength > 0) { - $ZIPlocalFileHeader .= fread($this->getid3->fp, $FilenameExtrafieldLength); - - if ($LocalFileHeader['raw']['filename_length'] > 0) { - $LocalFileHeader['filename'] = substr($ZIPlocalFileHeader, 30, $LocalFileHeader['raw']['filename_length']); - } - if ($LocalFileHeader['raw']['extra_field_length'] > 0) { - $LocalFileHeader['raw']['extra_field_data'] = substr($ZIPlocalFileHeader, 30 + $LocalFileHeader['raw']['filename_length'], $LocalFileHeader['raw']['extra_field_length']); - } - } - - $LocalFileHeader['data_offset'] = ftell($this->getid3->fp); - //$LocalFileHeader['compressed_data'] = fread($this->getid3->fp, $LocalFileHeader['raw']['compressed_size']); - fseek($this->getid3->fp, $LocalFileHeader['raw']['compressed_size'], SEEK_CUR); - - if ($LocalFileHeader['flags']['data_descriptor_used']) { - $DataDescriptor = fread($this->getid3->fp, 12); - $LocalFileHeader['data_descriptor']['crc_32'] = getid3_lib::LittleEndian2Int(substr($DataDescriptor, 0, 4)); - $LocalFileHeader['data_descriptor']['compressed_size'] = getid3_lib::LittleEndian2Int(substr($DataDescriptor, 4, 4)); - $LocalFileHeader['data_descriptor']['uncompressed_size'] = getid3_lib::LittleEndian2Int(substr($DataDescriptor, 8, 4)); - } - - return $LocalFileHeader; - } - - - function ZIPparseCentralDirectory() { - $CentralDirectory['offset'] = ftell($this->getid3->fp); - - $ZIPcentralDirectory = fread($this->getid3->fp, 46); - - $CentralDirectory['raw']['signature'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 0, 4)); - if ($CentralDirectory['raw']['signature'] != 0x02014B50) { - // invalid Central Directory Signature - fseek($this->getid3->fp, $CentralDirectory['offset'], SEEK_SET); // seek back to where filepointer originally was so it can be handled properly - return false; - } - $CentralDirectory['raw']['create_version'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 4, 2)); - $CentralDirectory['raw']['extract_version'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 6, 2)); - $CentralDirectory['raw']['general_flags'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 8, 2)); - $CentralDirectory['raw']['compression_method'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 10, 2)); - $CentralDirectory['raw']['last_mod_file_time'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 12, 2)); - $CentralDirectory['raw']['last_mod_file_date'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 14, 2)); - $CentralDirectory['raw']['crc_32'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 16, 4)); - $CentralDirectory['raw']['compressed_size'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 20, 4)); - $CentralDirectory['raw']['uncompressed_size'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 24, 4)); - $CentralDirectory['raw']['filename_length'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 28, 2)); - $CentralDirectory['raw']['extra_field_length'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 30, 2)); - $CentralDirectory['raw']['file_comment_length'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 32, 2)); - $CentralDirectory['raw']['disk_number_start'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 34, 2)); - $CentralDirectory['raw']['internal_file_attrib'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 36, 2)); - $CentralDirectory['raw']['external_file_attrib'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 38, 4)); - $CentralDirectory['raw']['local_header_offset'] = getid3_lib::LittleEndian2Int(substr($ZIPcentralDirectory, 42, 4)); - - $CentralDirectory['entry_offset'] = $CentralDirectory['raw']['local_header_offset']; - $CentralDirectory['create_version'] = sprintf('%1.1f', $CentralDirectory['raw']['create_version'] / 10); - $CentralDirectory['extract_version'] = sprintf('%1.1f', $CentralDirectory['raw']['extract_version'] / 10); - $CentralDirectory['host_os'] = $this->ZIPversionOSLookup(($CentralDirectory['raw']['extract_version'] & 0xFF00) >> 8); - $CentralDirectory['compression_method'] = $this->ZIPcompressionMethodLookup($CentralDirectory['raw']['compression_method']); - $CentralDirectory['compressed_size'] = $CentralDirectory['raw']['compressed_size']; - $CentralDirectory['uncompressed_size'] = $CentralDirectory['raw']['uncompressed_size']; - $CentralDirectory['flags'] = $this->ZIPparseGeneralPurposeFlags($CentralDirectory['raw']['general_flags'], $CentralDirectory['raw']['compression_method']); - $CentralDirectory['last_modified_timestamp'] = $this->DOStime2UNIXtime($CentralDirectory['raw']['last_mod_file_date'], $CentralDirectory['raw']['last_mod_file_time']); - - $FilenameExtrafieldCommentLength = $CentralDirectory['raw']['filename_length'] + $CentralDirectory['raw']['extra_field_length'] + $CentralDirectory['raw']['file_comment_length']; - if ($FilenameExtrafieldCommentLength > 0) { - $FilenameExtrafieldComment = fread($this->getid3->fp, $FilenameExtrafieldCommentLength); - - if ($CentralDirectory['raw']['filename_length'] > 0) { - $CentralDirectory['filename'] = substr($FilenameExtrafieldComment, 0, $CentralDirectory['raw']['filename_length']); - } - if ($CentralDirectory['raw']['extra_field_length'] > 0) { - $CentralDirectory['raw']['extra_field_data'] = substr($FilenameExtrafieldComment, $CentralDirectory['raw']['filename_length'], $CentralDirectory['raw']['extra_field_length']); - } - if ($CentralDirectory['raw']['file_comment_length'] > 0) { - $CentralDirectory['file_comment'] = substr($FilenameExtrafieldComment, $CentralDirectory['raw']['filename_length'] + $CentralDirectory['raw']['extra_field_length'], $CentralDirectory['raw']['file_comment_length']); - } - } - - return $CentralDirectory; - } - - function ZIPparseEndOfCentralDirectory() { - $EndOfCentralDirectory['offset'] = ftell($this->getid3->fp); - - $ZIPendOfCentralDirectory = fread($this->getid3->fp, 22); - - $EndOfCentralDirectory['signature'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 0, 4)); - if ($EndOfCentralDirectory['signature'] != 0x06054B50) { - // invalid End Of Central Directory Signature - fseek($this->getid3->fp, $EndOfCentralDirectory['offset'], SEEK_SET); // seek back to where filepointer originally was so it can be handled properly - return false; - } - $EndOfCentralDirectory['disk_number_current'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 4, 2)); - $EndOfCentralDirectory['disk_number_start_directory'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 6, 2)); - $EndOfCentralDirectory['directory_entries_this_disk'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 8, 2)); - $EndOfCentralDirectory['directory_entries_total'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 10, 2)); - $EndOfCentralDirectory['directory_size'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 12, 4)); - $EndOfCentralDirectory['directory_offset'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 16, 4)); - $EndOfCentralDirectory['comment_length'] = getid3_lib::LittleEndian2Int(substr($ZIPendOfCentralDirectory, 20, 2)); - - if ($EndOfCentralDirectory['comment_length'] > 0) { - $EndOfCentralDirectory['comment'] = fread($this->getid3->fp, $EndOfCentralDirectory['comment_length']); - } - - return $EndOfCentralDirectory; - } - - - static function ZIPparseGeneralPurposeFlags($flagbytes, $compressionmethod) { - $ParsedFlags['encrypted'] = (bool) ($flagbytes & 0x0001); - - switch ($compressionmethod) { - case 6: - $ParsedFlags['dictionary_size'] = (($flagbytes & 0x0002) ? 8192 : 4096); - $ParsedFlags['shannon_fano_trees'] = (($flagbytes & 0x0004) ? 3 : 2); - break; - - case 8: - case 9: - switch (($flagbytes & 0x0006) >> 1) { - case 0: - $ParsedFlags['compression_speed'] = 'normal'; - break; - case 1: - $ParsedFlags['compression_speed'] = 'maximum'; - break; - case 2: - $ParsedFlags['compression_speed'] = 'fast'; - break; - case 3: - $ParsedFlags['compression_speed'] = 'superfast'; - break; - } - break; - } - $ParsedFlags['data_descriptor_used'] = (bool) ($flagbytes & 0x0008); - - return $ParsedFlags; - } - - - static function ZIPversionOSLookup($index) { - static $ZIPversionOSLookup = array( - 0 => 'MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)', - 1 => 'Amiga', - 2 => 'OpenVMS', - 3 => 'Unix', - 4 => 'VM/CMS', - 5 => 'Atari ST', - 6 => 'OS/2 H.P.F.S.', - 7 => 'Macintosh', - 8 => 'Z-System', - 9 => 'CP/M', - 10 => 'Windows NTFS', - 11 => 'MVS', - 12 => 'VSE', - 13 => 'Acorn Risc', - 14 => 'VFAT', - 15 => 'Alternate MVS', - 16 => 'BeOS', - 17 => 'Tandem' - ); - - return (isset($ZIPversionOSLookup[$index]) ? $ZIPversionOSLookup[$index] : '[unknown]'); - } - - static function ZIPcompressionMethodLookup($index) { - static $ZIPcompressionMethodLookup = array( - 0 => 'store', - 1 => 'shrink', - 2 => 'reduce-1', - 3 => 'reduce-2', - 4 => 'reduce-3', - 5 => 'reduce-4', - 6 => 'implode', - 7 => 'tokenize', - 8 => 'deflate', - 9 => 'deflate64', - 10 => 'PKWARE Date Compression Library Imploding' - ); - - return (isset($ZIPcompressionMethodLookup[$index]) ? $ZIPcompressionMethodLookup[$index] : '[unknown]'); - } - - static function DOStime2UNIXtime($DOSdate, $DOStime) { - // wFatDate - // Specifies the MS-DOS date. The date is a packed 16-bit value with the following format: - // Bits Contents - // 0-4 Day of the month (1-31) - // 5-8 Month (1 = January, 2 = February, and so on) - // 9-15 Year offset from 1980 (add 1980 to get actual year) - - $UNIXday = ($DOSdate & 0x001F); - $UNIXmonth = (($DOSdate & 0x01E0) >> 5); - $UNIXyear = (($DOSdate & 0xFE00) >> 9) + 1980; - - // wFatTime - // Specifies the MS-DOS time. The time is a packed 16-bit value with the following format: - // Bits Contents - // 0-4 Second divided by 2 - // 5-10 Minute (0-59) - // 11-15 Hour (0-23 on a 24-hour clock) - - $UNIXsecond = ($DOStime & 0x001F) * 2; - $UNIXminute = (($DOStime & 0x07E0) >> 5); - $UNIXhour = (($DOStime & 0xF800) >> 11); - - return gmmktime($UNIXhour, $UNIXminute, $UNIXsecond, $UNIXmonth, $UNIXday, $UNIXyear); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.asf.php b/3rdparty/getid3/module.audio-video.asf.php deleted file mode 100644 index 0bb095f52ee8843739f1fda5501d041902de95da..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.asf.php +++ /dev/null @@ -1,2021 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.asf.php // -// module for analyzing ASF, WMA and WMV files // -// dependencies: module.audio-video.riff.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - -class getid3_asf extends getid3_handler -{ - - function __construct(getID3 $getid3) { - parent::__construct($getid3); // extends getid3_handler::__construct() - - // initialize all GUID constants - $GUIDarray = $this->KnownGUIDs(); - foreach ($GUIDarray as $GUIDname => $hexstringvalue) { - if (!defined($GUIDname)) { - define($GUIDname, $this->GUIDtoBytestring($hexstringvalue)); - } - } - } - - function Analyze() { - $info = &$this->getid3->info; - - // Shortcuts - $thisfile_audio = &$info['audio']; - $thisfile_video = &$info['video']; - $info['asf'] = array(); - $thisfile_asf = &$info['asf']; - $thisfile_asf['comments'] = array(); - $thisfile_asf_comments = &$thisfile_asf['comments']; - $thisfile_asf['header_object'] = array(); - $thisfile_asf_headerobject = &$thisfile_asf['header_object']; - - - // ASF structure: - // * Header Object [required] - // * File Properties Object [required] (global file attributes) - // * Stream Properties Object [required] (defines media stream & characteristics) - // * Header Extension Object [required] (additional functionality) - // * Content Description Object (bibliographic information) - // * Script Command Object (commands for during playback) - // * Marker Object (named jumped points within the file) - // * Data Object [required] - // * Data Packets - // * Index Object - - // Header Object: (mandatory, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for header object - GETID3_ASF_Header_Object - // Object Size QWORD 64 // size of header object, including 30 bytes of Header Object header - // Number of Header Objects DWORD 32 // number of objects in header object - // Reserved1 BYTE 8 // hardcoded: 0x01 - // Reserved2 BYTE 8 // hardcoded: 0x02 - - $info['fileformat'] = 'asf'; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $HeaderObjectData = fread($this->getid3->fp, 30); - - $thisfile_asf_headerobject['objectid'] = substr($HeaderObjectData, 0, 16); - $thisfile_asf_headerobject['objectid_guid'] = $this->BytestringToGUID($thisfile_asf_headerobject['objectid']); - if ($thisfile_asf_headerobject['objectid'] != GETID3_ASF_Header_Object) { - $info['warning'][] = 'ASF header GUID {'.$this->BytestringToGUID($thisfile_asf_headerobject['objectid']).'} does not match expected "GETID3_ASF_Header_Object" GUID {'.$this->BytestringToGUID(GETID3_ASF_Header_Object).'}'; - unset($info['fileformat']); - unset($info['asf']); - return false; - break; - } - $thisfile_asf_headerobject['objectsize'] = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 16, 8)); - $thisfile_asf_headerobject['headerobjects'] = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 24, 4)); - $thisfile_asf_headerobject['reserved1'] = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 28, 1)); - $thisfile_asf_headerobject['reserved2'] = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 29, 1)); - - $NextObjectOffset = ftell($this->getid3->fp); - $ASFHeaderData = fread($this->getid3->fp, $thisfile_asf_headerobject['objectsize'] - 30); - $offset = 0; - - for ($HeaderObjectsCounter = 0; $HeaderObjectsCounter < $thisfile_asf_headerobject['headerobjects']; $HeaderObjectsCounter++) { - $NextObjectGUID = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $NextObjectGUIDtext = $this->BytestringToGUID($NextObjectGUID); - $NextObjectSize = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - switch ($NextObjectGUID) { - - case GETID3_ASF_File_Properties_Object: - // File Properties Object: (mandatory, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for file properties object - GETID3_ASF_File_Properties_Object - // Object Size QWORD 64 // size of file properties object, including 104 bytes of File Properties Object header - // File ID GUID 128 // unique ID - identical to File ID in Data Object - // File Size QWORD 64 // entire file in bytes. Invalid if Broadcast Flag == 1 - // Creation Date QWORD 64 // date & time of file creation. Maybe invalid if Broadcast Flag == 1 - // Data Packets Count QWORD 64 // number of data packets in Data Object. Invalid if Broadcast Flag == 1 - // Play Duration QWORD 64 // playtime, in 100-nanosecond units. Invalid if Broadcast Flag == 1 - // Send Duration QWORD 64 // time needed to send file, in 100-nanosecond units. Players can ignore this value. Invalid if Broadcast Flag == 1 - // Preroll QWORD 64 // time to buffer data before starting to play file, in 1-millisecond units. If <> 0, PlayDuration and PresentationTime have been offset by this amount - // Flags DWORD 32 // - // * Broadcast Flag bits 1 (0x01) // file is currently being written, some header values are invalid - // * Seekable Flag bits 1 (0x02) // is file seekable - // * Reserved bits 30 (0xFFFFFFFC) // reserved - set to zero - // Minimum Data Packet Size DWORD 32 // in bytes. should be same as Maximum Data Packet Size. Invalid if Broadcast Flag == 1 - // Maximum Data Packet Size DWORD 32 // in bytes. should be same as Minimum Data Packet Size. Invalid if Broadcast Flag == 1 - // Maximum Bitrate DWORD 32 // maximum instantaneous bitrate in bits per second for entire file, including all data streams and ASF overhead - - // shortcut - $thisfile_asf['file_properties_object'] = array(); - $thisfile_asf_filepropertiesobject = &$thisfile_asf['file_properties_object']; - - $thisfile_asf_filepropertiesobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_filepropertiesobject['objectid'] = $NextObjectGUID; - $thisfile_asf_filepropertiesobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_filepropertiesobject['objectsize'] = $NextObjectSize; - $thisfile_asf_filepropertiesobject['fileid'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $thisfile_asf_filepropertiesobject['fileid_guid'] = $this->BytestringToGUID($thisfile_asf_filepropertiesobject['fileid']); - $thisfile_asf_filepropertiesobject['filesize'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $thisfile_asf_filepropertiesobject['creation_date'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $thisfile_asf_filepropertiesobject['creation_date_unix'] = $this->FILETIMEtoUNIXtime($thisfile_asf_filepropertiesobject['creation_date']); - $offset += 8; - $thisfile_asf_filepropertiesobject['data_packets'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $thisfile_asf_filepropertiesobject['play_duration'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $thisfile_asf_filepropertiesobject['send_duration'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $thisfile_asf_filepropertiesobject['preroll'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $thisfile_asf_filepropertiesobject['flags_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_filepropertiesobject['flags']['broadcast'] = (bool) ($thisfile_asf_filepropertiesobject['flags_raw'] & 0x0001); - $thisfile_asf_filepropertiesobject['flags']['seekable'] = (bool) ($thisfile_asf_filepropertiesobject['flags_raw'] & 0x0002); - - $thisfile_asf_filepropertiesobject['min_packet_size'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_filepropertiesobject['max_packet_size'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_filepropertiesobject['max_bitrate'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - - if ($thisfile_asf_filepropertiesobject['flags']['broadcast']) { - - // broadcast flag is set, some values invalid - unset($thisfile_asf_filepropertiesobject['filesize']); - unset($thisfile_asf_filepropertiesobject['data_packets']); - unset($thisfile_asf_filepropertiesobject['play_duration']); - unset($thisfile_asf_filepropertiesobject['send_duration']); - unset($thisfile_asf_filepropertiesobject['min_packet_size']); - unset($thisfile_asf_filepropertiesobject['max_packet_size']); - - } else { - - // broadcast flag NOT set, perform calculations - $info['playtime_seconds'] = ($thisfile_asf_filepropertiesobject['play_duration'] / 10000000) - ($thisfile_asf_filepropertiesobject['preroll'] / 1000); - - //$info['bitrate'] = $thisfile_asf_filepropertiesobject['max_bitrate']; - $info['bitrate'] = ((isset($thisfile_asf_filepropertiesobject['filesize']) ? $thisfile_asf_filepropertiesobject['filesize'] : $info['filesize']) * 8) / $info['playtime_seconds']; - } - break; - - case GETID3_ASF_Stream_Properties_Object: - // Stream Properties Object: (mandatory, one per media stream) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for stream properties object - GETID3_ASF_Stream_Properties_Object - // Object Size QWORD 64 // size of stream properties object, including 78 bytes of Stream Properties Object header - // Stream Type GUID 128 // GETID3_ASF_Audio_Media, GETID3_ASF_Video_Media or GETID3_ASF_Command_Media - // Error Correction Type GUID 128 // GETID3_ASF_Audio_Spread for audio-only streams, GETID3_ASF_No_Error_Correction for other stream types - // Time Offset QWORD 64 // 100-nanosecond units. typically zero. added to all timestamps of samples in the stream - // Type-Specific Data Length DWORD 32 // number of bytes for Type-Specific Data field - // Error Correction Data Length DWORD 32 // number of bytes for Error Correction Data field - // Flags WORD 16 // - // * Stream Number bits 7 (0x007F) // number of this stream. 1 <= valid <= 127 - // * Reserved bits 8 (0x7F80) // reserved - set to zero - // * Encrypted Content Flag bits 1 (0x8000) // stream contents encrypted if set - // Reserved DWORD 32 // reserved - set to zero - // Type-Specific Data BYTESTREAM variable // type-specific format data, depending on value of Stream Type - // Error Correction Data BYTESTREAM variable // error-correction-specific format data, depending on value of Error Correct Type - - // There is one GETID3_ASF_Stream_Properties_Object for each stream (audio, video) but the - // stream number isn't known until halfway through decoding the structure, hence it - // it is decoded to a temporary variable and then stuck in the appropriate index later - - $StreamPropertiesObjectData['offset'] = $NextObjectOffset + $offset; - $StreamPropertiesObjectData['objectid'] = $NextObjectGUID; - $StreamPropertiesObjectData['objectid_guid'] = $NextObjectGUIDtext; - $StreamPropertiesObjectData['objectsize'] = $NextObjectSize; - $StreamPropertiesObjectData['stream_type'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $StreamPropertiesObjectData['stream_type_guid'] = $this->BytestringToGUID($StreamPropertiesObjectData['stream_type']); - $StreamPropertiesObjectData['error_correct_type'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $StreamPropertiesObjectData['error_correct_guid'] = $this->BytestringToGUID($StreamPropertiesObjectData['error_correct_type']); - $StreamPropertiesObjectData['time_offset'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $StreamPropertiesObjectData['type_data_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $StreamPropertiesObjectData['error_data_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $StreamPropertiesObjectData['flags_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $StreamPropertiesObjectStreamNumber = $StreamPropertiesObjectData['flags_raw'] & 0x007F; - $StreamPropertiesObjectData['flags']['encrypted'] = (bool) ($StreamPropertiesObjectData['flags_raw'] & 0x8000); - - $offset += 4; // reserved - DWORD - $StreamPropertiesObjectData['type_specific_data'] = substr($ASFHeaderData, $offset, $StreamPropertiesObjectData['type_data_length']); - $offset += $StreamPropertiesObjectData['type_data_length']; - $StreamPropertiesObjectData['error_correct_data'] = substr($ASFHeaderData, $offset, $StreamPropertiesObjectData['error_data_length']); - $offset += $StreamPropertiesObjectData['error_data_length']; - - switch ($StreamPropertiesObjectData['stream_type']) { - - case GETID3_ASF_Audio_Media: - $thisfile_audio['dataformat'] = (!empty($thisfile_audio['dataformat']) ? $thisfile_audio['dataformat'] : 'asf'); - $thisfile_audio['bitrate_mode'] = (!empty($thisfile_audio['bitrate_mode']) ? $thisfile_audio['bitrate_mode'] : 'cbr'); - - $audiodata = getid3_riff::RIFFparseWAVEFORMATex(substr($StreamPropertiesObjectData['type_specific_data'], 0, 16)); - unset($audiodata['raw']); - $thisfile_audio = getid3_lib::array_merge_noclobber($audiodata, $thisfile_audio); - break; - - case GETID3_ASF_Video_Media: - $thisfile_video['dataformat'] = (!empty($thisfile_video['dataformat']) ? $thisfile_video['dataformat'] : 'asf'); - $thisfile_video['bitrate_mode'] = (!empty($thisfile_video['bitrate_mode']) ? $thisfile_video['bitrate_mode'] : 'cbr'); - break; - - case GETID3_ASF_Command_Media: - default: - // do nothing - break; - - } - - $thisfile_asf['stream_properties_object'][$StreamPropertiesObjectStreamNumber] = $StreamPropertiesObjectData; - unset($StreamPropertiesObjectData); // clear for next stream, if any - break; - - case GETID3_ASF_Header_Extension_Object: - // Header Extension Object: (mandatory, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Header Extension object - GETID3_ASF_Header_Extension_Object - // Object Size QWORD 64 // size of Header Extension object, including 46 bytes of Header Extension Object header - // Reserved Field 1 GUID 128 // hardcoded: GETID3_ASF_Reserved_1 - // Reserved Field 2 WORD 16 // hardcoded: 0x00000006 - // Header Extension Data Size DWORD 32 // in bytes. valid: 0, or > 24. equals object size minus 46 - // Header Extension Data BYTESTREAM variable // array of zero or more extended header objects - - // shortcut - $thisfile_asf['header_extension_object'] = array(); - $thisfile_asf_headerextensionobject = &$thisfile_asf['header_extension_object']; - - $thisfile_asf_headerextensionobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_headerextensionobject['objectid'] = $NextObjectGUID; - $thisfile_asf_headerextensionobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_headerextensionobject['objectsize'] = $NextObjectSize; - $thisfile_asf_headerextensionobject['reserved_1'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $thisfile_asf_headerextensionobject['reserved_1_guid'] = $this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']); - if ($thisfile_asf_headerextensionobject['reserved_1'] != GETID3_ASF_Reserved_1) { - $info['warning'][] = 'header_extension_object.reserved_1 GUID ('.$this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']).') does not match expected "GETID3_ASF_Reserved_1" GUID ('.$this->BytestringToGUID(GETID3_ASF_Reserved_1).')'; - //return false; - break; - } - $thisfile_asf_headerextensionobject['reserved_2'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - if ($thisfile_asf_headerextensionobject['reserved_2'] != 6) { - $info['warning'][] = 'header_extension_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_headerextensionobject['reserved_2']).') does not match expected value of "6"'; - //return false; - break; - } - $thisfile_asf_headerextensionobject['extension_data_size'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_headerextensionobject['extension_data'] = substr($ASFHeaderData, $offset, $thisfile_asf_headerextensionobject['extension_data_size']); - $unhandled_sections = 0; - $thisfile_asf_headerextensionobject['extension_data_parsed'] = $this->ASF_HeaderExtensionObjectDataParse($thisfile_asf_headerextensionobject['extension_data'], $unhandled_sections); - if ($unhandled_sections === 0) { - unset($thisfile_asf_headerextensionobject['extension_data']); - } - $offset += $thisfile_asf_headerextensionobject['extension_data_size']; - break; - - case GETID3_ASF_Codec_List_Object: - // Codec List Object: (optional, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Codec List object - GETID3_ASF_Codec_List_Object - // Object Size QWORD 64 // size of Codec List object, including 44 bytes of Codec List Object header - // Reserved GUID 128 // hardcoded: 86D15241-311D-11D0-A3A4-00A0C90348F6 - // Codec Entries Count DWORD 32 // number of entries in Codec Entries array - // Codec Entries array of: variable // - // * Type WORD 16 // 0x0001 = Video Codec, 0x0002 = Audio Codec, 0xFFFF = Unknown Codec - // * Codec Name Length WORD 16 // number of Unicode characters stored in the Codec Name field - // * Codec Name WCHAR variable // array of Unicode characters - name of codec used to create the content - // * Codec Description Length WORD 16 // number of Unicode characters stored in the Codec Description field - // * Codec Description WCHAR variable // array of Unicode characters - description of format used to create the content - // * Codec Information Length WORD 16 // number of Unicode characters stored in the Codec Information field - // * Codec Information BYTESTREAM variable // opaque array of information bytes about the codec used to create the content - - // shortcut - $thisfile_asf['codec_list_object'] = array(); - $thisfile_asf_codeclistobject = &$thisfile_asf['codec_list_object']; - - $thisfile_asf_codeclistobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_codeclistobject['objectid'] = $NextObjectGUID; - $thisfile_asf_codeclistobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_codeclistobject['objectsize'] = $NextObjectSize; - $thisfile_asf_codeclistobject['reserved'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $thisfile_asf_codeclistobject['reserved_guid'] = $this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']); - if ($thisfile_asf_codeclistobject['reserved'] != $this->GUIDtoBytestring('86D15241-311D-11D0-A3A4-00A0C90348F6')) { - $info['warning'][] = 'codec_list_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {86D15241-311D-11D0-A3A4-00A0C90348F6}'; - //return false; - break; - } - $thisfile_asf_codeclistobject['codec_entries_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - for ($CodecEntryCounter = 0; $CodecEntryCounter < $thisfile_asf_codeclistobject['codec_entries_count']; $CodecEntryCounter++) { - // shortcut - $thisfile_asf_codeclistobject['codec_entries'][$CodecEntryCounter] = array(); - $thisfile_asf_codeclistobject_codecentries_current = &$thisfile_asf_codeclistobject['codec_entries'][$CodecEntryCounter]; - - $thisfile_asf_codeclistobject_codecentries_current['type_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_codeclistobject_codecentries_current['type'] = $this->ASFCodecListObjectTypeLookup($thisfile_asf_codeclistobject_codecentries_current['type_raw']); - - $CodecNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character - $offset += 2; - $thisfile_asf_codeclistobject_codecentries_current['name'] = substr($ASFHeaderData, $offset, $CodecNameLength); - $offset += $CodecNameLength; - - $CodecDescriptionLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character - $offset += 2; - $thisfile_asf_codeclistobject_codecentries_current['description'] = substr($ASFHeaderData, $offset, $CodecDescriptionLength); - $offset += $CodecDescriptionLength; - - $CodecInformationLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_codeclistobject_codecentries_current['information'] = substr($ASFHeaderData, $offset, $CodecInformationLength); - $offset += $CodecInformationLength; - - if ($thisfile_asf_codeclistobject_codecentries_current['type_raw'] == 2) { // audio codec - - if (strpos($thisfile_asf_codeclistobject_codecentries_current['description'], ',') === false) { - $info['warning'][] = '[asf][codec_list_object][codec_entries]['.$CodecEntryCounter.'][description] expected to contain comma-seperated list of parameters: "'.$thisfile_asf_codeclistobject_codecentries_current['description'].'"'; - } else { - - list($AudioCodecBitrate, $AudioCodecFrequency, $AudioCodecChannels) = explode(',', $this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description'])); - $thisfile_audio['codec'] = $this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['name']); - - if (!isset($thisfile_audio['bitrate']) && strstr($AudioCodecBitrate, 'kbps')) { - $thisfile_audio['bitrate'] = (int) (trim(str_replace('kbps', '', $AudioCodecBitrate)) * 1000); - } - //if (!isset($thisfile_video['bitrate']) && isset($thisfile_audio['bitrate']) && isset($thisfile_asf['file_properties_object']['max_bitrate']) && ($thisfile_asf_codeclistobject['codec_entries_count'] > 1)) { - if (empty($thisfile_video['bitrate']) && !empty($thisfile_audio['bitrate']) && !empty($info['bitrate'])) { - //$thisfile_video['bitrate'] = $thisfile_asf['file_properties_object']['max_bitrate'] - $thisfile_audio['bitrate']; - $thisfile_video['bitrate'] = $info['bitrate'] - $thisfile_audio['bitrate']; - } - - $AudioCodecFrequency = (int) trim(str_replace('kHz', '', $AudioCodecFrequency)); - switch ($AudioCodecFrequency) { - case 8: - case 8000: - $thisfile_audio['sample_rate'] = 8000; - break; - - case 11: - case 11025: - $thisfile_audio['sample_rate'] = 11025; - break; - - case 12: - case 12000: - $thisfile_audio['sample_rate'] = 12000; - break; - - case 16: - case 16000: - $thisfile_audio['sample_rate'] = 16000; - break; - - case 22: - case 22050: - $thisfile_audio['sample_rate'] = 22050; - break; - - case 24: - case 24000: - $thisfile_audio['sample_rate'] = 24000; - break; - - case 32: - case 32000: - $thisfile_audio['sample_rate'] = 32000; - break; - - case 44: - case 441000: - $thisfile_audio['sample_rate'] = 44100; - break; - - case 48: - case 48000: - $thisfile_audio['sample_rate'] = 48000; - break; - - default: - $info['warning'][] = 'unknown frequency: "'.$AudioCodecFrequency.'" ('.$this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description']).')'; - break; - } - - if (!isset($thisfile_audio['channels'])) { - if (strstr($AudioCodecChannels, 'stereo')) { - $thisfile_audio['channels'] = 2; - } elseif (strstr($AudioCodecChannels, 'mono')) { - $thisfile_audio['channels'] = 1; - } - } - - } - } - } - break; - - case GETID3_ASF_Script_Command_Object: - // Script Command Object: (optional, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Script Command object - GETID3_ASF_Script_Command_Object - // Object Size QWORD 64 // size of Script Command object, including 44 bytes of Script Command Object header - // Reserved GUID 128 // hardcoded: 4B1ACBE3-100B-11D0-A39B-00A0C90348F6 - // Commands Count WORD 16 // number of Commands structures in the Script Commands Objects - // Command Types Count WORD 16 // number of Command Types structures in the Script Commands Objects - // Command Types array of: variable // - // * Command Type Name Length WORD 16 // number of Unicode characters for Command Type Name - // * Command Type Name WCHAR variable // array of Unicode characters - name of a type of command - // Commands array of: variable // - // * Presentation Time DWORD 32 // presentation time of that command, in milliseconds - // * Type Index WORD 16 // type of this command, as a zero-based index into the array of Command Types of this object - // * Command Name Length WORD 16 // number of Unicode characters for Command Name - // * Command Name WCHAR variable // array of Unicode characters - name of this command - - // shortcut - $thisfile_asf['script_command_object'] = array(); - $thisfile_asf_scriptcommandobject = &$thisfile_asf['script_command_object']; - - $thisfile_asf_scriptcommandobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_scriptcommandobject['objectid'] = $NextObjectGUID; - $thisfile_asf_scriptcommandobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_scriptcommandobject['objectsize'] = $NextObjectSize; - $thisfile_asf_scriptcommandobject['reserved'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $thisfile_asf_scriptcommandobject['reserved_guid'] = $this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']); - if ($thisfile_asf_scriptcommandobject['reserved'] != $this->GUIDtoBytestring('4B1ACBE3-100B-11D0-A39B-00A0C90348F6')) { - $info['warning'][] = 'script_command_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4B1ACBE3-100B-11D0-A39B-00A0C90348F6}'; - //return false; - break; - } - $thisfile_asf_scriptcommandobject['commands_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_scriptcommandobject['command_types_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - for ($CommandTypesCounter = 0; $CommandTypesCounter < $thisfile_asf_scriptcommandobject['command_types_count']; $CommandTypesCounter++) { - $CommandTypeNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character - $offset += 2; - $thisfile_asf_scriptcommandobject['command_types'][$CommandTypesCounter]['name'] = substr($ASFHeaderData, $offset, $CommandTypeNameLength); - $offset += $CommandTypeNameLength; - } - for ($CommandsCounter = 0; $CommandsCounter < $thisfile_asf_scriptcommandobject['commands_count']; $CommandsCounter++) { - $thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['presentation_time'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['type_index'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - - $CommandTypeNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character - $offset += 2; - $thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['name'] = substr($ASFHeaderData, $offset, $CommandTypeNameLength); - $offset += $CommandTypeNameLength; - } - break; - - case GETID3_ASF_Marker_Object: - // Marker Object: (optional, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Marker object - GETID3_ASF_Marker_Object - // Object Size QWORD 64 // size of Marker object, including 48 bytes of Marker Object header - // Reserved GUID 128 // hardcoded: 4CFEDB20-75F6-11CF-9C0F-00A0C90349CB - // Markers Count DWORD 32 // number of Marker structures in Marker Object - // Reserved WORD 16 // hardcoded: 0x0000 - // Name Length WORD 16 // number of bytes in the Name field - // Name WCHAR variable // name of the Marker Object - // Markers array of: variable // - // * Offset QWORD 64 // byte offset into Data Object - // * Presentation Time QWORD 64 // in 100-nanosecond units - // * Entry Length WORD 16 // length in bytes of (Send Time + Flags + Marker Description Length + Marker Description + Padding) - // * Send Time DWORD 32 // in milliseconds - // * Flags DWORD 32 // hardcoded: 0x00000000 - // * Marker Description Length DWORD 32 // number of bytes in Marker Description field - // * Marker Description WCHAR variable // array of Unicode characters - description of marker entry - // * Padding BYTESTREAM variable // optional padding bytes - - // shortcut - $thisfile_asf['marker_object'] = array(); - $thisfile_asf_markerobject = &$thisfile_asf['marker_object']; - - $thisfile_asf_markerobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_markerobject['objectid'] = $NextObjectGUID; - $thisfile_asf_markerobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_markerobject['objectsize'] = $NextObjectSize; - $thisfile_asf_markerobject['reserved'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $thisfile_asf_markerobject['reserved_guid'] = $this->BytestringToGUID($thisfile_asf_markerobject['reserved']); - if ($thisfile_asf_markerobject['reserved'] != $this->GUIDtoBytestring('4CFEDB20-75F6-11CF-9C0F-00A0C90349CB')) { - $info['warning'][] = 'marker_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_markerobject['reserved_1']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4CFEDB20-75F6-11CF-9C0F-00A0C90349CB}'; - break; - } - $thisfile_asf_markerobject['markers_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_markerobject['reserved_2'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - if ($thisfile_asf_markerobject['reserved_2'] != 0) { - $info['warning'][] = 'marker_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_markerobject['reserved_2']).') does not match expected value of "0"'; - break; - } - $thisfile_asf_markerobject['name_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_markerobject['name'] = substr($ASFHeaderData, $offset, $thisfile_asf_markerobject['name_length']); - $offset += $thisfile_asf_markerobject['name_length']; - for ($MarkersCounter = 0; $MarkersCounter < $thisfile_asf_markerobject['markers_count']; $MarkersCounter++) { - $thisfile_asf_markerobject['markers'][$MarkersCounter]['offset'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $thisfile_asf_markerobject['markers'][$MarkersCounter]['presentation_time'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8)); - $offset += 8; - $thisfile_asf_markerobject['markers'][$MarkersCounter]['entry_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_markerobject['markers'][$MarkersCounter]['send_time'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_markerobject['markers'][$MarkersCounter]['flags'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description'] = substr($ASFHeaderData, $offset, $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length']); - $offset += $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length']; - $PaddingLength = $thisfile_asf_markerobject['markers'][$MarkersCounter]['entry_length'] - 4 - 4 - 4 - $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length']; - if ($PaddingLength > 0) { - $thisfile_asf_markerobject['markers'][$MarkersCounter]['padding'] = substr($ASFHeaderData, $offset, $PaddingLength); - $offset += $PaddingLength; - } - } - break; - - case GETID3_ASF_Bitrate_Mutual_Exclusion_Object: - // Bitrate Mutual Exclusion Object: (optional) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Bitrate Mutual Exclusion object - GETID3_ASF_Bitrate_Mutual_Exclusion_Object - // Object Size QWORD 64 // size of Bitrate Mutual Exclusion object, including 42 bytes of Bitrate Mutual Exclusion Object header - // Exlusion Type GUID 128 // nature of mutual exclusion relationship. one of: (GETID3_ASF_Mutex_Bitrate, GETID3_ASF_Mutex_Unknown) - // Stream Numbers Count WORD 16 // number of video streams - // Stream Numbers WORD variable // array of mutually exclusive video stream numbers. 1 <= valid <= 127 - - // shortcut - $thisfile_asf['bitrate_mutual_exclusion_object'] = array(); - $thisfile_asf_bitratemutualexclusionobject = &$thisfile_asf['bitrate_mutual_exclusion_object']; - - $thisfile_asf_bitratemutualexclusionobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_bitratemutualexclusionobject['objectid'] = $NextObjectGUID; - $thisfile_asf_bitratemutualexclusionobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_bitratemutualexclusionobject['objectsize'] = $NextObjectSize; - $thisfile_asf_bitratemutualexclusionobject['reserved'] = substr($ASFHeaderData, $offset, 16); - $thisfile_asf_bitratemutualexclusionobject['reserved_guid'] = $this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']); - $offset += 16; - if (($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Bitrate) && ($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Unknown)) { - $info['warning'][] = 'bitrate_mutual_exclusion_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']).'} does not match expected "GETID3_ASF_Mutex_Bitrate" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Bitrate).'} or "GETID3_ASF_Mutex_Unknown" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Unknown).'}'; - //return false; - break; - } - $thisfile_asf_bitratemutualexclusionobject['stream_numbers_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - for ($StreamNumberCounter = 0; $StreamNumberCounter < $thisfile_asf_bitratemutualexclusionobject['stream_numbers_count']; $StreamNumberCounter++) { - $thisfile_asf_bitratemutualexclusionobject['stream_numbers'][$StreamNumberCounter] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - } - break; - - case GETID3_ASF_Error_Correction_Object: - // Error Correction Object: (optional, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Error Correction object - GETID3_ASF_Error_Correction_Object - // Object Size QWORD 64 // size of Error Correction object, including 44 bytes of Error Correction Object header - // Error Correction Type GUID 128 // type of error correction. one of: (GETID3_ASF_No_Error_Correction, GETID3_ASF_Audio_Spread) - // Error Correction Data Length DWORD 32 // number of bytes in Error Correction Data field - // Error Correction Data BYTESTREAM variable // structure depends on value of Error Correction Type field - - // shortcut - $thisfile_asf['error_correction_object'] = array(); - $thisfile_asf_errorcorrectionobject = &$thisfile_asf['error_correction_object']; - - $thisfile_asf_errorcorrectionobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_errorcorrectionobject['objectid'] = $NextObjectGUID; - $thisfile_asf_errorcorrectionobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_errorcorrectionobject['objectsize'] = $NextObjectSize; - $thisfile_asf_errorcorrectionobject['error_correction_type'] = substr($ASFHeaderData, $offset, 16); - $offset += 16; - $thisfile_asf_errorcorrectionobject['error_correction_guid'] = $this->BytestringToGUID($thisfile_asf_errorcorrectionobject['error_correction_type']); - $thisfile_asf_errorcorrectionobject['error_correction_data_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - switch ($thisfile_asf_errorcorrectionobject['error_correction_type']) { - case GETID3_ASF_No_Error_Correction: - // should be no data, but just in case there is, skip to the end of the field - $offset += $thisfile_asf_errorcorrectionobject['error_correction_data_length']; - break; - - case GETID3_ASF_Audio_Spread: - // Field Name Field Type Size (bits) - // Span BYTE 8 // number of packets over which audio will be spread. - // Virtual Packet Length WORD 16 // size of largest audio payload found in audio stream - // Virtual Chunk Length WORD 16 // size of largest audio payload found in audio stream - // Silence Data Length WORD 16 // number of bytes in Silence Data field - // Silence Data BYTESTREAM variable // hardcoded: 0x00 * (Silence Data Length) bytes - - $thisfile_asf_errorcorrectionobject['span'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 1)); - $offset += 1; - $thisfile_asf_errorcorrectionobject['virtual_packet_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_errorcorrectionobject['virtual_chunk_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_errorcorrectionobject['silence_data_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_errorcorrectionobject['silence_data'] = substr($ASFHeaderData, $offset, $thisfile_asf_errorcorrectionobject['silence_data_length']); - $offset += $thisfile_asf_errorcorrectionobject['silence_data_length']; - break; - - default: - $info['warning'][] = 'error_correction_object.error_correction_type GUID {'.$this->BytestringToGUID($thisfile_asf_errorcorrectionobject['reserved']).'} does not match expected "GETID3_ASF_No_Error_Correction" GUID {'.$this->BytestringToGUID(GETID3_ASF_No_Error_Correction).'} or "GETID3_ASF_Audio_Spread" GUID {'.$this->BytestringToGUID(GETID3_ASF_Audio_Spread).'}'; - //return false; - break; - } - - break; - - case GETID3_ASF_Content_Description_Object: - // Content Description Object: (optional, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Content Description object - GETID3_ASF_Content_Description_Object - // Object Size QWORD 64 // size of Content Description object, including 34 bytes of Content Description Object header - // Title Length WORD 16 // number of bytes in Title field - // Author Length WORD 16 // number of bytes in Author field - // Copyright Length WORD 16 // number of bytes in Copyright field - // Description Length WORD 16 // number of bytes in Description field - // Rating Length WORD 16 // number of bytes in Rating field - // Title WCHAR 16 // array of Unicode characters - Title - // Author WCHAR 16 // array of Unicode characters - Author - // Copyright WCHAR 16 // array of Unicode characters - Copyright - // Description WCHAR 16 // array of Unicode characters - Description - // Rating WCHAR 16 // array of Unicode characters - Rating - - // shortcut - $thisfile_asf['content_description_object'] = array(); - $thisfile_asf_contentdescriptionobject = &$thisfile_asf['content_description_object']; - - $thisfile_asf_contentdescriptionobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_contentdescriptionobject['objectid'] = $NextObjectGUID; - $thisfile_asf_contentdescriptionobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_contentdescriptionobject['objectsize'] = $NextObjectSize; - $thisfile_asf_contentdescriptionobject['title_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_contentdescriptionobject['author_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_contentdescriptionobject['copyright_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_contentdescriptionobject['description_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_contentdescriptionobject['rating_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_contentdescriptionobject['title'] = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['title_length']); - $offset += $thisfile_asf_contentdescriptionobject['title_length']; - $thisfile_asf_contentdescriptionobject['author'] = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['author_length']); - $offset += $thisfile_asf_contentdescriptionobject['author_length']; - $thisfile_asf_contentdescriptionobject['copyright'] = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['copyright_length']); - $offset += $thisfile_asf_contentdescriptionobject['copyright_length']; - $thisfile_asf_contentdescriptionobject['description'] = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['description_length']); - $offset += $thisfile_asf_contentdescriptionobject['description_length']; - $thisfile_asf_contentdescriptionobject['rating'] = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['rating_length']); - $offset += $thisfile_asf_contentdescriptionobject['rating_length']; - - $ASFcommentKeysToCopy = array('title'=>'title', 'author'=>'artist', 'copyright'=>'copyright', 'description'=>'comment', 'rating'=>'rating'); - foreach ($ASFcommentKeysToCopy as $keytocopyfrom => $keytocopyto) { - if (!empty($thisfile_asf_contentdescriptionobject[$keytocopyfrom])) { - $thisfile_asf_comments[$keytocopyto][] = $this->TrimTerm($thisfile_asf_contentdescriptionobject[$keytocopyfrom]); - } - } - break; - - case GETID3_ASF_Extended_Content_Description_Object: - // Extended Content Description Object: (optional, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Extended Content Description object - GETID3_ASF_Extended_Content_Description_Object - // Object Size QWORD 64 // size of ExtendedContent Description object, including 26 bytes of Extended Content Description Object header - // Content Descriptors Count WORD 16 // number of entries in Content Descriptors list - // Content Descriptors array of: variable // - // * Descriptor Name Length WORD 16 // size in bytes of Descriptor Name field - // * Descriptor Name WCHAR variable // array of Unicode characters - Descriptor Name - // * Descriptor Value Data Type WORD 16 // Lookup array: - // 0x0000 = Unicode String (variable length) - // 0x0001 = BYTE array (variable length) - // 0x0002 = BOOL (DWORD, 32 bits) - // 0x0003 = DWORD (DWORD, 32 bits) - // 0x0004 = QWORD (QWORD, 64 bits) - // 0x0005 = WORD (WORD, 16 bits) - // * Descriptor Value Length WORD 16 // number of bytes stored in Descriptor Value field - // * Descriptor Value variable variable // value for Content Descriptor - - // shortcut - $thisfile_asf['extended_content_description_object'] = array(); - $thisfile_asf_extendedcontentdescriptionobject = &$thisfile_asf['extended_content_description_object']; - - $thisfile_asf_extendedcontentdescriptionobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_extendedcontentdescriptionobject['objectid'] = $NextObjectGUID; - $thisfile_asf_extendedcontentdescriptionobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_extendedcontentdescriptionobject['objectsize'] = $NextObjectSize; - $thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - for ($ExtendedContentDescriptorsCounter = 0; $ExtendedContentDescriptorsCounter < $thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count']; $ExtendedContentDescriptorsCounter++) { - // shortcut - $thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter] = array(); - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current = &$thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter]; - - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['base_offset'] = $offset + 30; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name'] = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']); - $offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length']); - $offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length']; - switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) { - case 0x0000: // Unicode string - break; - - case 0x0001: // BYTE array - // do nothing - break; - - case 0x0002: // BOOL - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = (bool) getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']); - break; - - case 0x0003: // DWORD - case 0x0004: // QWORD - case 0x0005: // WORD - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']); - break; - - default: - $info['warning'][] = 'extended_content_description.content_descriptors.'.$ExtendedContentDescriptorsCounter.'.value_type is invalid ('.$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type'].')'; - //return false; - break; - } - switch ($this->TrimConvert(strtolower($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']))) { - - case 'wm/albumartist': - case 'artist': - // Note: not 'artist', that comes from 'author' tag - $thisfile_asf_comments['albumartist'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - break; - - case 'wm/albumtitle': - case 'album': - $thisfile_asf_comments['album'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - break; - - case 'wm/genre': - case 'genre': - $thisfile_asf_comments['genre'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - break; - - case 'wm/partofset': - $thisfile_asf_comments['partofset'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - break; - - case 'wm/tracknumber': - case 'tracknumber': - // be careful casting to int: casting unicode strings to int gives unexpected results (stops parsing at first non-numeric character) - $thisfile_asf_comments['track'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - foreach ($thisfile_asf_comments['track'] as $key => $value) { - if (preg_match('/^[0-9\x00]+$/', $value)) { - $thisfile_asf_comments['track'][$key] = intval(str_replace("\x00", '', $value)); - } - } - break; - - case 'wm/track': - if (empty($thisfile_asf_comments['track'])) { - $thisfile_asf_comments['track'] = array(1 + $this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - } - break; - - case 'wm/year': - case 'year': - case 'date': - $thisfile_asf_comments['year'] = array( $this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - break; - - case 'wm/lyrics': - case 'lyrics': - $thisfile_asf_comments['lyrics'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - break; - - case 'isvbr': - if ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']) { - $thisfile_audio['bitrate_mode'] = 'vbr'; - $thisfile_video['bitrate_mode'] = 'vbr'; - } - break; - - case 'id3': - // id3v2 module might not be loaded - if (class_exists('getid3_id3v2')) { - $tempfile = tempnam(GETID3_TEMP_DIR, 'getID3'); - $tempfilehandle = fopen($tempfile, 'wb'); - $tempThisfileInfo = array('encoding'=>$info['encoding']); - fwrite($tempfilehandle, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']); - fclose($tempfilehandle); - - $getid3_temp = new getID3(); - $getid3_temp->openfile($tempfile); - $getid3_id3v2 = new getid3_id3v2($getid3_temp); - $getid3_id3v2->Analyze(); - $info['id3v2'] = $getid3_temp->info['id3v2']; - unset($getid3_temp, $getid3_id3v2); - - unlink($tempfile); - } - break; - - case 'wm/encodingtime': - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix'] = $this->FILETIMEtoUNIXtime($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']); - $thisfile_asf_comments['encoding_time_unix'] = array($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix']); - break; - - case 'wm/picture': - $WMpicture = $this->ASF_WMpicture($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']); - foreach ($WMpicture as $key => $value) { - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current[$key] = $value; - } - unset($WMpicture); -/* - $wm_picture_offset = 0; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id'] = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 1)); - $wm_picture_offset += 1; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type'] = $this->WMpictureTypeLookup($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id']); - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_size'] = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 4)); - $wm_picture_offset += 4; - - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = ''; - do { - $next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2); - $wm_picture_offset += 2; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] .= $next_byte_pair; - } while ($next_byte_pair !== "\x00\x00"); - - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] = ''; - do { - $next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2); - $wm_picture_offset += 2; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] .= $next_byte_pair; - } while ($next_byte_pair !== "\x00\x00"); - - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['dataoffset'] = $wm_picture_offset; - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'] = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset); - unset($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']); - - $imageinfo = array(); - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = ''; - $imagechunkcheck = getid3_lib::GetDataImageSize($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'], $imageinfo); - unset($imageinfo); - if (!empty($imagechunkcheck)) { - $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]); - } - if (!isset($thisfile_asf_comments['picture'])) { - $thisfile_asf_comments['picture'] = array(); - } - $thisfile_asf_comments['picture'][] = array('data'=>$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'], 'image_mime'=>$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime']); -*/ - break; - - default: - switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) { - case 0: // Unicode string - if (substr($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']), 0, 3) == 'WM/') { - $thisfile_asf_comments[str_replace('wm/', '', strtolower($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name'])))] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])); - } - break; - - case 1: - break; - } - break; - } - - } - break; - - case GETID3_ASF_Stream_Bitrate_Properties_Object: - // Stream Bitrate Properties Object: (optional, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Stream Bitrate Properties object - GETID3_ASF_Stream_Bitrate_Properties_Object - // Object Size QWORD 64 // size of Extended Content Description object, including 26 bytes of Stream Bitrate Properties Object header - // Bitrate Records Count WORD 16 // number of records in Bitrate Records - // Bitrate Records array of: variable // - // * Flags WORD 16 // - // * * Stream Number bits 7 (0x007F) // number of this stream - // * * Reserved bits 9 (0xFF80) // hardcoded: 0 - // * Average Bitrate DWORD 32 // in bits per second - - // shortcut - $thisfile_asf['stream_bitrate_properties_object'] = array(); - $thisfile_asf_streambitratepropertiesobject = &$thisfile_asf['stream_bitrate_properties_object']; - - $thisfile_asf_streambitratepropertiesobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_streambitratepropertiesobject['objectid'] = $NextObjectGUID; - $thisfile_asf_streambitratepropertiesobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_streambitratepropertiesobject['objectsize'] = $NextObjectSize; - $thisfile_asf_streambitratepropertiesobject['bitrate_records_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitratepropertiesobject['bitrate_records_count']; $BitrateRecordsCounter++) { - $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)); - $offset += 2; - $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags']['stream_number'] = $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] & 0x007F; - $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['bitrate'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4)); - $offset += 4; - } - break; - - case GETID3_ASF_Padding_Object: - // Padding Object: (optional) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Padding object - GETID3_ASF_Padding_Object - // Object Size QWORD 64 // size of Padding object, including 24 bytes of ASF Padding Object header - // Padding Data BYTESTREAM variable // ignore - - // shortcut - $thisfile_asf['padding_object'] = array(); - $thisfile_asf_paddingobject = &$thisfile_asf['padding_object']; - - $thisfile_asf_paddingobject['offset'] = $NextObjectOffset + $offset; - $thisfile_asf_paddingobject['objectid'] = $NextObjectGUID; - $thisfile_asf_paddingobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_paddingobject['objectsize'] = $NextObjectSize; - $thisfile_asf_paddingobject['padding_length'] = $thisfile_asf_paddingobject['objectsize'] - 16 - 8; - $thisfile_asf_paddingobject['padding'] = substr($ASFHeaderData, $offset, $thisfile_asf_paddingobject['padding_length']); - $offset += ($NextObjectSize - 16 - 8); - break; - - case GETID3_ASF_Extended_Content_Encryption_Object: - case GETID3_ASF_Content_Encryption_Object: - // WMA DRM - just ignore - $offset += ($NextObjectSize - 16 - 8); - break; - - default: - // Implementations shall ignore any standard or non-standard object that they do not know how to handle. - if ($this->GUIDname($NextObjectGUIDtext)) { - $info['warning'][] = 'unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8); - } else { - $info['warning'][] = 'unknown GUID {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8); - } - $offset += ($NextObjectSize - 16 - 8); - break; - } - } - if (isset($thisfile_asf_streambitrateproperties['bitrate_records_count'])) { - $ASFbitrateAudio = 0; - $ASFbitrateVideo = 0; - for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitrateproperties['bitrate_records_count']; $BitrateRecordsCounter++) { - if (isset($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter])) { - switch ($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter]['type_raw']) { - case 1: - $ASFbitrateVideo += $thisfile_asf_streambitrateproperties['bitrate_records'][$BitrateRecordsCounter]['bitrate']; - break; - - case 2: - $ASFbitrateAudio += $thisfile_asf_streambitrateproperties['bitrate_records'][$BitrateRecordsCounter]['bitrate']; - break; - - default: - // do nothing - break; - } - } - } - if ($ASFbitrateAudio > 0) { - $thisfile_audio['bitrate'] = $ASFbitrateAudio; - } - if ($ASFbitrateVideo > 0) { - $thisfile_video['bitrate'] = $ASFbitrateVideo; - } - } - if (isset($thisfile_asf['stream_properties_object']) && is_array($thisfile_asf['stream_properties_object'])) { - - $thisfile_audio['bitrate'] = 0; - $thisfile_video['bitrate'] = 0; - - foreach ($thisfile_asf['stream_properties_object'] as $streamnumber => $streamdata) { - - switch ($streamdata['stream_type']) { - case GETID3_ASF_Audio_Media: - // Field Name Field Type Size (bits) - // Codec ID / Format Tag WORD 16 // unique ID of audio codec - defined as wFormatTag field of WAVEFORMATEX structure - // Number of Channels WORD 16 // number of channels of audio - defined as nChannels field of WAVEFORMATEX structure - // Samples Per Second DWORD 32 // in Hertz - defined as nSamplesPerSec field of WAVEFORMATEX structure - // Average number of Bytes/sec DWORD 32 // bytes/sec of audio stream - defined as nAvgBytesPerSec field of WAVEFORMATEX structure - // Block Alignment WORD 16 // block size in bytes of audio codec - defined as nBlockAlign field of WAVEFORMATEX structure - // Bits per sample WORD 16 // bits per sample of mono data. set to zero for variable bitrate codecs. defined as wBitsPerSample field of WAVEFORMATEX structure - // Codec Specific Data Size WORD 16 // size in bytes of Codec Specific Data buffer - defined as cbSize field of WAVEFORMATEX structure - // Codec Specific Data BYTESTREAM variable // array of codec-specific data bytes - - // shortcut - $thisfile_asf['audio_media'][$streamnumber] = array(); - $thisfile_asf_audiomedia_currentstream = &$thisfile_asf['audio_media'][$streamnumber]; - - $audiomediaoffset = 0; - - $thisfile_asf_audiomedia_currentstream = getid3_riff::RIFFparseWAVEFORMATex(substr($streamdata['type_specific_data'], $audiomediaoffset, 16)); - $audiomediaoffset += 16; - - $thisfile_audio['lossless'] = false; - switch ($thisfile_asf_audiomedia_currentstream['raw']['wFormatTag']) { - case 0x0001: // PCM - case 0x0163: // WMA9 Lossless - $thisfile_audio['lossless'] = true; - break; - } - - if (!empty($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'])) { - foreach ($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'] as $dummy => $dataarray) { - if (isset($dataarray['flags']['stream_number']) && ($dataarray['flags']['stream_number'] == $streamnumber)) { - $thisfile_asf_audiomedia_currentstream['bitrate'] = $dataarray['bitrate']; - $thisfile_audio['bitrate'] += $dataarray['bitrate']; - break; - } - } - } else { - if (!empty($thisfile_asf_audiomedia_currentstream['bytes_sec'])) { - $thisfile_audio['bitrate'] += $thisfile_asf_audiomedia_currentstream['bytes_sec'] * 8; - } elseif (!empty($thisfile_asf_audiomedia_currentstream['bitrate'])) { - $thisfile_audio['bitrate'] += $thisfile_asf_audiomedia_currentstream['bitrate']; - } - } - $thisfile_audio['streams'][$streamnumber] = $thisfile_asf_audiomedia_currentstream; - $thisfile_audio['streams'][$streamnumber]['wformattag'] = $thisfile_asf_audiomedia_currentstream['raw']['wFormatTag']; - $thisfile_audio['streams'][$streamnumber]['lossless'] = $thisfile_audio['lossless']; - $thisfile_audio['streams'][$streamnumber]['bitrate'] = $thisfile_audio['bitrate']; - $thisfile_audio['streams'][$streamnumber]['dataformat'] = 'wma'; - unset($thisfile_audio['streams'][$streamnumber]['raw']); - - $thisfile_asf_audiomedia_currentstream['codec_data_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $audiomediaoffset, 2)); - $audiomediaoffset += 2; - $thisfile_asf_audiomedia_currentstream['codec_data'] = substr($streamdata['type_specific_data'], $audiomediaoffset, $thisfile_asf_audiomedia_currentstream['codec_data_size']); - $audiomediaoffset += $thisfile_asf_audiomedia_currentstream['codec_data_size']; - - break; - - case GETID3_ASF_Video_Media: - // Field Name Field Type Size (bits) - // Encoded Image Width DWORD 32 // width of image in pixels - // Encoded Image Height DWORD 32 // height of image in pixels - // Reserved Flags BYTE 8 // hardcoded: 0x02 - // Format Data Size WORD 16 // size of Format Data field in bytes - // Format Data array of: variable // - // * Format Data Size DWORD 32 // number of bytes in Format Data field, in bytes - defined as biSize field of BITMAPINFOHEADER structure - // * Image Width LONG 32 // width of encoded image in pixels - defined as biWidth field of BITMAPINFOHEADER structure - // * Image Height LONG 32 // height of encoded image in pixels - defined as biHeight field of BITMAPINFOHEADER structure - // * Reserved WORD 16 // hardcoded: 0x0001 - defined as biPlanes field of BITMAPINFOHEADER structure - // * Bits Per Pixel Count WORD 16 // bits per pixel - defined as biBitCount field of BITMAPINFOHEADER structure - // * Compression ID FOURCC 32 // fourcc of video codec - defined as biCompression field of BITMAPINFOHEADER structure - // * Image Size DWORD 32 // image size in bytes - defined as biSizeImage field of BITMAPINFOHEADER structure - // * Horizontal Pixels / Meter DWORD 32 // horizontal resolution of target device in pixels per meter - defined as biXPelsPerMeter field of BITMAPINFOHEADER structure - // * Vertical Pixels / Meter DWORD 32 // vertical resolution of target device in pixels per meter - defined as biYPelsPerMeter field of BITMAPINFOHEADER structure - // * Colors Used Count DWORD 32 // number of color indexes in the color table that are actually used - defined as biClrUsed field of BITMAPINFOHEADER structure - // * Important Colors Count DWORD 32 // number of color index required for displaying bitmap. if zero, all colors are required. defined as biClrImportant field of BITMAPINFOHEADER structure - // * Codec Specific Data BYTESTREAM variable // array of codec-specific data bytes - - // shortcut - $thisfile_asf['video_media'][$streamnumber] = array(); - $thisfile_asf_videomedia_currentstream = &$thisfile_asf['video_media'][$streamnumber]; - - $videomediaoffset = 0; - $thisfile_asf_videomedia_currentstream['image_width'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['image_height'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['flags'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 1)); - $videomediaoffset += 1; - $thisfile_asf_videomedia_currentstream['format_data_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2)); - $videomediaoffset += 2; - $thisfile_asf_videomedia_currentstream['format_data']['format_data_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['image_width'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['image_height'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['reserved'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2)); - $videomediaoffset += 2; - $thisfile_asf_videomedia_currentstream['format_data']['bits_per_pixel'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2)); - $videomediaoffset += 2; - $thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc'] = substr($streamdata['type_specific_data'], $videomediaoffset, 4); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['image_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['horizontal_pels'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['vertical_pels'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['colors_used'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['colors_important'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4)); - $videomediaoffset += 4; - $thisfile_asf_videomedia_currentstream['format_data']['codec_data'] = substr($streamdata['type_specific_data'], $videomediaoffset); - - if (!empty($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'])) { - foreach ($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'] as $dummy => $dataarray) { - if (isset($dataarray['flags']['stream_number']) && ($dataarray['flags']['stream_number'] == $streamnumber)) { - $thisfile_asf_videomedia_currentstream['bitrate'] = $dataarray['bitrate']; - $thisfile_video['streams'][$streamnumber]['bitrate'] = $dataarray['bitrate']; - $thisfile_video['bitrate'] += $dataarray['bitrate']; - break; - } - } - } - - $thisfile_asf_videomedia_currentstream['format_data']['codec'] = getid3_riff::RIFFfourccLookup($thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc']); - - $thisfile_video['streams'][$streamnumber]['fourcc'] = $thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc']; - $thisfile_video['streams'][$streamnumber]['codec'] = $thisfile_asf_videomedia_currentstream['format_data']['codec']; - $thisfile_video['streams'][$streamnumber]['resolution_x'] = $thisfile_asf_videomedia_currentstream['image_width']; - $thisfile_video['streams'][$streamnumber]['resolution_y'] = $thisfile_asf_videomedia_currentstream['image_height']; - $thisfile_video['streams'][$streamnumber]['bits_per_sample'] = $thisfile_asf_videomedia_currentstream['format_data']['bits_per_pixel']; - break; - - default: - break; - } - } - } - - while (ftell($this->getid3->fp) < $info['avdataend']) { - $NextObjectDataHeader = fread($this->getid3->fp, 24); - $offset = 0; - $NextObjectGUID = substr($NextObjectDataHeader, 0, 16); - $offset += 16; - $NextObjectGUIDtext = $this->BytestringToGUID($NextObjectGUID); - $NextObjectSize = getid3_lib::LittleEndian2Int(substr($NextObjectDataHeader, $offset, 8)); - $offset += 8; - - switch ($NextObjectGUID) { - case GETID3_ASF_Data_Object: - // Data Object: (mandatory, one only) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Data object - GETID3_ASF_Data_Object - // Object Size QWORD 64 // size of Data object, including 50 bytes of Data Object header. may be 0 if FilePropertiesObject.BroadcastFlag == 1 - // File ID GUID 128 // unique identifier. identical to File ID field in Header Object - // Total Data Packets QWORD 64 // number of Data Packet entries in Data Object. invalid if FilePropertiesObject.BroadcastFlag == 1 - // Reserved WORD 16 // hardcoded: 0x0101 - - // shortcut - $thisfile_asf['data_object'] = array(); - $thisfile_asf_dataobject = &$thisfile_asf['data_object']; - - $DataObjectData = $NextObjectDataHeader.fread($this->getid3->fp, 50 - 24); - $offset = 24; - - $thisfile_asf_dataobject['objectid'] = $NextObjectGUID; - $thisfile_asf_dataobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_dataobject['objectsize'] = $NextObjectSize; - - $thisfile_asf_dataobject['fileid'] = substr($DataObjectData, $offset, 16); - $offset += 16; - $thisfile_asf_dataobject['fileid_guid'] = $this->BytestringToGUID($thisfile_asf_dataobject['fileid']); - $thisfile_asf_dataobject['total_data_packets'] = getid3_lib::LittleEndian2Int(substr($DataObjectData, $offset, 8)); - $offset += 8; - $thisfile_asf_dataobject['reserved'] = getid3_lib::LittleEndian2Int(substr($DataObjectData, $offset, 2)); - $offset += 2; - if ($thisfile_asf_dataobject['reserved'] != 0x0101) { - $info['warning'][] = 'data_object.reserved ('.getid3_lib::PrintHexBytes($thisfile_asf_dataobject['reserved']).') does not match expected value of "0x0101"'; - //return false; - break; - } - - // Data Packets array of: variable // - // * Error Correction Flags BYTE 8 // - // * * Error Correction Data Length bits 4 // if Error Correction Length Type == 00, size of Error Correction Data in bytes, else hardcoded: 0000 - // * * Opaque Data Present bits 1 // - // * * Error Correction Length Type bits 2 // number of bits for size of the error correction data. hardcoded: 00 - // * * Error Correction Present bits 1 // If set, use Opaque Data Packet structure, else use Payload structure - // * Error Correction Data - - $info['avdataoffset'] = ftell($this->getid3->fp); - fseek($this->getid3->fp, ($thisfile_asf_dataobject['objectsize'] - 50), SEEK_CUR); // skip actual audio/video data - $info['avdataend'] = ftell($this->getid3->fp); - break; - - case GETID3_ASF_Simple_Index_Object: - // Simple Index Object: (optional, recommended, one per video stream) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for Simple Index object - GETID3_ASF_Data_Object - // Object Size QWORD 64 // size of Simple Index object, including 56 bytes of Simple Index Object header - // File ID GUID 128 // unique identifier. may be zero or identical to File ID field in Data Object and Header Object - // Index Entry Time Interval QWORD 64 // interval between index entries in 100-nanosecond units - // Maximum Packet Count DWORD 32 // maximum packet count for all index entries - // Index Entries Count DWORD 32 // number of Index Entries structures - // Index Entries array of: variable // - // * Packet Number DWORD 32 // number of the Data Packet associated with this index entry - // * Packet Count WORD 16 // number of Data Packets to sent at this index entry - - // shortcut - $thisfile_asf['simple_index_object'] = array(); - $thisfile_asf_simpleindexobject = &$thisfile_asf['simple_index_object']; - - $SimpleIndexObjectData = $NextObjectDataHeader.fread($this->getid3->fp, 56 - 24); - $offset = 24; - - $thisfile_asf_simpleindexobject['objectid'] = $NextObjectGUID; - $thisfile_asf_simpleindexobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_simpleindexobject['objectsize'] = $NextObjectSize; - - $thisfile_asf_simpleindexobject['fileid'] = substr($SimpleIndexObjectData, $offset, 16); - $offset += 16; - $thisfile_asf_simpleindexobject['fileid_guid'] = $this->BytestringToGUID($thisfile_asf_simpleindexobject['fileid']); - $thisfile_asf_simpleindexobject['index_entry_time_interval'] = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 8)); - $offset += 8; - $thisfile_asf_simpleindexobject['maximum_packet_count'] = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 4)); - $offset += 4; - $thisfile_asf_simpleindexobject['index_entries_count'] = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 4)); - $offset += 4; - - $IndexEntriesData = $SimpleIndexObjectData.fread($this->getid3->fp, 6 * $thisfile_asf_simpleindexobject['index_entries_count']); - for ($IndexEntriesCounter = 0; $IndexEntriesCounter < $thisfile_asf_simpleindexobject['index_entries_count']; $IndexEntriesCounter++) { - $thisfile_asf_simpleindexobject['index_entries'][$IndexEntriesCounter]['packet_number'] = getid3_lib::LittleEndian2Int(substr($IndexEntriesData, $offset, 4)); - $offset += 4; - $thisfile_asf_simpleindexobject['index_entries'][$IndexEntriesCounter]['packet_count'] = getid3_lib::LittleEndian2Int(substr($IndexEntriesData, $offset, 4)); - $offset += 2; - } - - break; - - case GETID3_ASF_Index_Object: - // 6.2 ASF top-level Index Object (optional but recommended when appropriate, 0 or 1) - // Field Name Field Type Size (bits) - // Object ID GUID 128 // GUID for the Index Object - GETID3_ASF_Index_Object - // Object Size QWORD 64 // Specifies the size, in bytes, of the Index Object, including at least 34 bytes of Index Object header - // Index Entry Time Interval DWORD 32 // Specifies the time interval between each index entry in ms. - // Index Specifiers Count WORD 16 // Specifies the number of Index Specifiers structures in this Index Object. - // Index Blocks Count DWORD 32 // Specifies the number of Index Blocks structures in this Index Object. - - // Index Entry Time Interval DWORD 32 // Specifies the time interval between index entries in milliseconds. This value cannot be 0. - // Index Specifiers Count WORD 16 // Specifies the number of entries in the Index Specifiers list. Valid values are 1 and greater. - // Index Specifiers array of: varies // - // * Stream Number WORD 16 // Specifies the stream number that the Index Specifiers refer to. Valid values are between 1 and 127. - // * Index Type WORD 16 // Specifies Index Type values as follows: - // 1 = Nearest Past Data Packet - indexes point to the data packet whose presentation time is closest to the index entry time. - // 2 = Nearest Past Media Object - indexes point to the closest data packet containing an entire object or first fragment of an object. - // 3 = Nearest Past Cleanpoint. - indexes point to the closest data packet containing an entire object (or first fragment of an object) that has the Cleanpoint Flag set. - // Nearest Past Cleanpoint is the most common type of index. - // Index Entry Count DWORD 32 // Specifies the number of Index Entries in the block. - // * Block Positions QWORD varies // Specifies a list of byte offsets of the beginnings of the blocks relative to the beginning of the first Data Packet (i.e., the beginning of the Data Object + 50 bytes). The number of entries in this list is specified by the value of the Index Specifiers Count field. The order of those byte offsets is tied to the order in which Index Specifiers are listed. - // * Index Entries array of: varies // - // * * Offsets DWORD varies // An offset value of 0xffffffff indicates an invalid offset value - - // shortcut - $thisfile_asf['asf_index_object'] = array(); - $thisfile_asf_asfindexobject = &$thisfile_asf['asf_index_object']; - - $ASFIndexObjectData = $NextObjectDataHeader.fread($this->getid3->fp, 34 - 24); - $offset = 24; - - $thisfile_asf_asfindexobject['objectid'] = $NextObjectGUID; - $thisfile_asf_asfindexobject['objectid_guid'] = $NextObjectGUIDtext; - $thisfile_asf_asfindexobject['objectsize'] = $NextObjectSize; - - $thisfile_asf_asfindexobject['entry_time_interval'] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4)); - $offset += 4; - $thisfile_asf_asfindexobject['index_specifiers_count'] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2)); - $offset += 2; - $thisfile_asf_asfindexobject['index_blocks_count'] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4)); - $offset += 4; - - $ASFIndexObjectData .= fread($this->getid3->fp, 4 * $thisfile_asf_asfindexobject['index_specifiers_count']); - for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) { - $IndexSpecifierStreamNumber = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2)); - $offset += 2; - $thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['stream_number'] = $IndexSpecifierStreamNumber; - $thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type'] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2)); - $offset += 2; - $thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type_text'] = $this->ASFIndexObjectIndexTypeLookup($thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type']); - } - - $ASFIndexObjectData .= fread($this->getid3->fp, 4); - $thisfile_asf_asfindexobject['index_entry_count'] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4)); - $offset += 4; - - $ASFIndexObjectData .= fread($this->getid3->fp, 8 * $thisfile_asf_asfindexobject['index_specifiers_count']); - for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) { - $thisfile_asf_asfindexobject['block_positions'][$IndexSpecifiersCounter] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 8)); - $offset += 8; - } - - $ASFIndexObjectData .= fread($this->getid3->fp, 4 * $thisfile_asf_asfindexobject['index_specifiers_count'] * $thisfile_asf_asfindexobject['index_entry_count']); - for ($IndexEntryCounter = 0; $IndexEntryCounter < $thisfile_asf_asfindexobject['index_entry_count']; $IndexEntryCounter++) { - for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) { - $thisfile_asf_asfindexobject['offsets'][$IndexSpecifiersCounter][$IndexEntryCounter] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4)); - $offset += 4; - } - } - break; - - - default: - // Implementations shall ignore any standard or non-standard object that they do not know how to handle. - if ($this->GUIDname($NextObjectGUIDtext)) { - $info['warning'][] = 'unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF body at offset '.($offset - 16 - 8); - } else { - $info['warning'][] = 'unknown GUID {'.$NextObjectGUIDtext.'} in ASF body at offset '.(ftell($this->getid3->fp) - 16 - 8); - } - fseek($this->getid3->fp, ($NextObjectSize - 16 - 8), SEEK_CUR); - break; - } - } - - if (isset($thisfile_asf_codeclistobject['codec_entries']) && is_array($thisfile_asf_codeclistobject['codec_entries'])) { - foreach ($thisfile_asf_codeclistobject['codec_entries'] as $streamnumber => $streamdata) { - switch ($streamdata['information']) { - case 'WMV1': - case 'WMV2': - case 'WMV3': - case 'MSS1': - case 'MSS2': - case 'WMVA': - case 'WVC1': - case 'WMVP': - case 'WVP2': - $thisfile_video['dataformat'] = 'wmv'; - $info['mime_type'] = 'video/x-ms-wmv'; - break; - - case 'MP42': - case 'MP43': - case 'MP4S': - case 'mp4s': - $thisfile_video['dataformat'] = 'asf'; - $info['mime_type'] = 'video/x-ms-asf'; - break; - - default: - switch ($streamdata['type_raw']) { - case 1: - if (strstr($this->TrimConvert($streamdata['name']), 'Windows Media')) { - $thisfile_video['dataformat'] = 'wmv'; - if ($info['mime_type'] == 'video/x-ms-asf') { - $info['mime_type'] = 'video/x-ms-wmv'; - } - } - break; - - case 2: - if (strstr($this->TrimConvert($streamdata['name']), 'Windows Media')) { - $thisfile_audio['dataformat'] = 'wma'; - if ($info['mime_type'] == 'video/x-ms-asf') { - $info['mime_type'] = 'audio/x-ms-wma'; - } - } - break; - - } - break; - } - } - } - - switch (isset($thisfile_audio['codec']) ? $thisfile_audio['codec'] : '') { - case 'MPEG Layer-3': - $thisfile_audio['dataformat'] = 'mp3'; - break; - - default: - break; - } - - if (isset($thisfile_asf_codeclistobject['codec_entries'])) { - foreach ($thisfile_asf_codeclistobject['codec_entries'] as $streamnumber => $streamdata) { - switch ($streamdata['type_raw']) { - - case 1: // video - $thisfile_video['encoder'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][$streamnumber]['name']); - break; - - case 2: // audio - $thisfile_audio['encoder'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][$streamnumber]['name']); - - // AH 2003-10-01 - $thisfile_audio['encoder_options'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][0]['description']); - - $thisfile_audio['codec'] = $thisfile_audio['encoder']; - break; - - default: - $info['warning'][] = 'Unknown streamtype: [codec_list_object][codec_entries]['.$streamnumber.'][type_raw] == '.$streamdata['type_raw']; - break; - - } - } - } - - if (isset($info['audio'])) { - $thisfile_audio['lossless'] = (isset($thisfile_audio['lossless']) ? $thisfile_audio['lossless'] : false); - $thisfile_audio['dataformat'] = (!empty($thisfile_audio['dataformat']) ? $thisfile_audio['dataformat'] : 'asf'); - } - if (!empty($thisfile_video['dataformat'])) { - $thisfile_video['lossless'] = (isset($thisfile_audio['lossless']) ? $thisfile_audio['lossless'] : false); - $thisfile_video['pixel_aspect_ratio'] = (isset($thisfile_audio['pixel_aspect_ratio']) ? $thisfile_audio['pixel_aspect_ratio'] : (float) 1); - $thisfile_video['dataformat'] = (!empty($thisfile_video['dataformat']) ? $thisfile_video['dataformat'] : 'asf'); - } - if (!empty($thisfile_video['streams'])) { - $thisfile_video['streams']['resolution_x'] = 0; - $thisfile_video['streams']['resolution_y'] = 0; - foreach ($thisfile_video['streams'] as $key => $valuearray) { - if (($valuearray['resolution_x'] > $thisfile_video['streams']['resolution_x']) || ($valuearray['resolution_y'] > $thisfile_video['streams']['resolution_y'])) { - $thisfile_video['resolution_x'] = $valuearray['resolution_x']; - $thisfile_video['resolution_y'] = $valuearray['resolution_y']; - } - } - } - $info['bitrate'] = (isset($thisfile_audio['bitrate']) ? $thisfile_audio['bitrate'] : 0) + (isset($thisfile_video['bitrate']) ? $thisfile_video['bitrate'] : 0); - - if ((!isset($info['playtime_seconds']) || ($info['playtime_seconds'] <= 0)) && ($info['bitrate'] > 0)) { - $info['playtime_seconds'] = ($info['filesize'] - $info['avdataoffset']) / ($info['bitrate'] / 8); - } - - return true; - } - - static function ASFCodecListObjectTypeLookup($CodecListType) { - static $ASFCodecListObjectTypeLookup = array(); - if (empty($ASFCodecListObjectTypeLookup)) { - $ASFCodecListObjectTypeLookup[0x0001] = 'Video Codec'; - $ASFCodecListObjectTypeLookup[0x0002] = 'Audio Codec'; - $ASFCodecListObjectTypeLookup[0xFFFF] = 'Unknown Codec'; - } - - return (isset($ASFCodecListObjectTypeLookup[$CodecListType]) ? $ASFCodecListObjectTypeLookup[$CodecListType] : 'Invalid Codec Type'); - } - - static function KnownGUIDs() { - static $GUIDarray = array( - 'GETID3_ASF_Extended_Stream_Properties_Object' => '14E6A5CB-C672-4332-8399-A96952065B5A', - 'GETID3_ASF_Padding_Object' => '1806D474-CADF-4509-A4BA-9AABCB96AAE8', - 'GETID3_ASF_Payload_Ext_Syst_Pixel_Aspect_Ratio' => '1B1EE554-F9EA-4BC8-821A-376B74E4C4B8', - 'GETID3_ASF_Script_Command_Object' => '1EFB1A30-0B62-11D0-A39B-00A0C90348F6', - 'GETID3_ASF_No_Error_Correction' => '20FB5700-5B55-11CF-A8FD-00805F5C442B', - 'GETID3_ASF_Content_Branding_Object' => '2211B3FA-BD23-11D2-B4B7-00A0C955FC6E', - 'GETID3_ASF_Content_Encryption_Object' => '2211B3FB-BD23-11D2-B4B7-00A0C955FC6E', - 'GETID3_ASF_Digital_Signature_Object' => '2211B3FC-BD23-11D2-B4B7-00A0C955FC6E', - 'GETID3_ASF_Extended_Content_Encryption_Object' => '298AE614-2622-4C17-B935-DAE07EE9289C', - 'GETID3_ASF_Simple_Index_Object' => '33000890-E5B1-11CF-89F4-00A0C90349CB', - 'GETID3_ASF_Degradable_JPEG_Media' => '35907DE0-E415-11CF-A917-00805F5C442B', - 'GETID3_ASF_Payload_Extension_System_Timecode' => '399595EC-8667-4E2D-8FDB-98814CE76C1E', - 'GETID3_ASF_Binary_Media' => '3AFB65E2-47EF-40F2-AC2C-70A90D71D343', - 'GETID3_ASF_Timecode_Index_Object' => '3CB73FD0-0C4A-4803-953D-EDF7B6228F0C', - 'GETID3_ASF_Metadata_Library_Object' => '44231C94-9498-49D1-A141-1D134E457054', - 'GETID3_ASF_Reserved_3' => '4B1ACBE3-100B-11D0-A39B-00A0C90348F6', - 'GETID3_ASF_Reserved_4' => '4CFEDB20-75F6-11CF-9C0F-00A0C90349CB', - 'GETID3_ASF_Command_Media' => '59DACFC0-59E6-11D0-A3AC-00A0C90348F6', - 'GETID3_ASF_Header_Extension_Object' => '5FBF03B5-A92E-11CF-8EE3-00C00C205365', - 'GETID3_ASF_Media_Object_Index_Parameters_Obj' => '6B203BAD-3F11-4E84-ACA8-D7613DE2CFA7', - 'GETID3_ASF_Header_Object' => '75B22630-668E-11CF-A6D9-00AA0062CE6C', - 'GETID3_ASF_Content_Description_Object' => '75B22633-668E-11CF-A6D9-00AA0062CE6C', - 'GETID3_ASF_Error_Correction_Object' => '75B22635-668E-11CF-A6D9-00AA0062CE6C', - 'GETID3_ASF_Data_Object' => '75B22636-668E-11CF-A6D9-00AA0062CE6C', - 'GETID3_ASF_Web_Stream_Media_Subtype' => '776257D4-C627-41CB-8F81-7AC7FF1C40CC', - 'GETID3_ASF_Stream_Bitrate_Properties_Object' => '7BF875CE-468D-11D1-8D82-006097C9A2B2', - 'GETID3_ASF_Language_List_Object' => '7C4346A9-EFE0-4BFC-B229-393EDE415C85', - 'GETID3_ASF_Codec_List_Object' => '86D15240-311D-11D0-A3A4-00A0C90348F6', - 'GETID3_ASF_Reserved_2' => '86D15241-311D-11D0-A3A4-00A0C90348F6', - 'GETID3_ASF_File_Properties_Object' => '8CABDCA1-A947-11CF-8EE4-00C00C205365', - 'GETID3_ASF_File_Transfer_Media' => '91BD222C-F21C-497A-8B6D-5AA86BFC0185', - 'GETID3_ASF_Old_RTP_Extension_Data' => '96800C63-4C94-11D1-837B-0080C7A37F95', - 'GETID3_ASF_Advanced_Mutual_Exclusion_Object' => 'A08649CF-4775-4670-8A16-6E35357566CD', - 'GETID3_ASF_Bandwidth_Sharing_Object' => 'A69609E6-517B-11D2-B6AF-00C04FD908E9', - 'GETID3_ASF_Reserved_1' => 'ABD3D211-A9BA-11cf-8EE6-00C00C205365', - 'GETID3_ASF_Bandwidth_Sharing_Exclusive' => 'AF6060AA-5197-11D2-B6AF-00C04FD908E9', - 'GETID3_ASF_Bandwidth_Sharing_Partial' => 'AF6060AB-5197-11D2-B6AF-00C04FD908E9', - 'GETID3_ASF_JFIF_Media' => 'B61BE100-5B4E-11CF-A8FD-00805F5C442B', - 'GETID3_ASF_Stream_Properties_Object' => 'B7DC0791-A9B7-11CF-8EE6-00C00C205365', - 'GETID3_ASF_Video_Media' => 'BC19EFC0-5B4D-11CF-A8FD-00805F5C442B', - 'GETID3_ASF_Audio_Spread' => 'BFC3CD50-618F-11CF-8BB2-00AA00B4E220', - 'GETID3_ASF_Metadata_Object' => 'C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA', - 'GETID3_ASF_Payload_Ext_Syst_Sample_Duration' => 'C6BD9450-867F-4907-83A3-C77921B733AD', - 'GETID3_ASF_Group_Mutual_Exclusion_Object' => 'D1465A40-5A79-4338-B71B-E36B8FD6C249', - 'GETID3_ASF_Extended_Content_Description_Object' => 'D2D0A440-E307-11D2-97F0-00A0C95EA850', - 'GETID3_ASF_Stream_Prioritization_Object' => 'D4FED15B-88D3-454F-81F0-ED5C45999E24', - 'GETID3_ASF_Payload_Ext_System_Content_Type' => 'D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC', - 'GETID3_ASF_Old_File_Properties_Object' => 'D6E229D0-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_ASF_Header_Object' => 'D6E229D1-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_ASF_Data_Object' => 'D6E229D2-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Index_Object' => 'D6E229D3-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Stream_Properties_Object' => 'D6E229D4-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Content_Description_Object' => 'D6E229D5-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Script_Command_Object' => 'D6E229D6-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Marker_Object' => 'D6E229D7-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Component_Download_Object' => 'D6E229D8-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Stream_Group_Object' => 'D6E229D9-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Scalable_Object' => 'D6E229DA-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Prioritization_Object' => 'D6E229DB-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Bitrate_Mutual_Exclusion_Object' => 'D6E229DC-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Inter_Media_Dependency_Object' => 'D6E229DD-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Rating_Object' => 'D6E229DE-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Index_Parameters_Object' => 'D6E229DF-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Color_Table_Object' => 'D6E229E0-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Language_List_Object' => 'D6E229E1-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Audio_Media' => 'D6E229E2-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Video_Media' => 'D6E229E3-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Image_Media' => 'D6E229E4-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Timecode_Media' => 'D6E229E5-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Text_Media' => 'D6E229E6-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_MIDI_Media' => 'D6E229E7-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Command_Media' => 'D6E229E8-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_No_Error_Concealment' => 'D6E229EA-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Scrambled_Audio' => 'D6E229EB-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_No_Color_Table' => 'D6E229EC-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_SMPTE_Time' => 'D6E229ED-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_ASCII_Text' => 'D6E229EE-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Unicode_Text' => 'D6E229EF-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_HTML_Text' => 'D6E229F0-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_URL_Command' => 'D6E229F1-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Filename_Command' => 'D6E229F2-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_ACM_Codec' => 'D6E229F3-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_VCM_Codec' => 'D6E229F4-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_QuickTime_Codec' => 'D6E229F5-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_DirectShow_Transform_Filter' => 'D6E229F6-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_DirectShow_Rendering_Filter' => 'D6E229F7-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_No_Enhancement' => 'D6E229F8-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Unknown_Enhancement_Type' => 'D6E229F9-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Temporal_Enhancement' => 'D6E229FA-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Spatial_Enhancement' => 'D6E229FB-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Quality_Enhancement' => 'D6E229FC-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Number_of_Channels_Enhancement' => 'D6E229FD-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Frequency_Response_Enhancement' => 'D6E229FE-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Media_Object' => 'D6E229FF-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Mutex_Language' => 'D6E22A00-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Mutex_Bitrate' => 'D6E22A01-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Mutex_Unknown' => 'D6E22A02-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_ASF_Placeholder_Object' => 'D6E22A0E-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Old_Data_Unit_Extension_Object' => 'D6E22A0F-35DA-11D1-9034-00A0C90349BE', - 'GETID3_ASF_Web_Stream_Format' => 'DA1E6B13-8359-4050-B398-388E965BF00C', - 'GETID3_ASF_Payload_Ext_System_File_Name' => 'E165EC0E-19ED-45D7-B4A7-25CBD1E28E9B', - 'GETID3_ASF_Marker_Object' => 'F487CD01-A951-11CF-8EE6-00C00C205365', - 'GETID3_ASF_Timecode_Index_Parameters_Object' => 'F55E496D-9797-4B5D-8C8B-604DFE9BFB24', - 'GETID3_ASF_Audio_Media' => 'F8699E40-5B4D-11CF-A8FD-00805F5C442B', - 'GETID3_ASF_Media_Object_Index_Object' => 'FEB103F8-12AD-4C64-840F-2A1D2F7AD48C', - 'GETID3_ASF_Alt_Extended_Content_Encryption_Obj' => 'FF889EF1-ADEE-40DA-9E71-98704BB928CE', - 'GETID3_ASF_Index_Placeholder_Object' => 'D9AADE20-7C17-4F9C-BC28-8555DD98E2A2', // http://cpan.uwinnipeg.ca/htdocs/Audio-WMA/Audio/WMA.pm.html - 'GETID3_ASF_Compatibility_Object' => '26F18B5D-4584-47EC-9F5F-0E651F0452C9', // http://cpan.uwinnipeg.ca/htdocs/Audio-WMA/Audio/WMA.pm.html - ); - return $GUIDarray; - } - - static function GUIDname($GUIDstring) { - static $GUIDarray = array(); - if (empty($GUIDarray)) { - $GUIDarray = getid3_asf::KnownGUIDs(); - } - return array_search($GUIDstring, $GUIDarray); - } - - static function ASFIndexObjectIndexTypeLookup($id) { - static $ASFIndexObjectIndexTypeLookup = array(); - if (empty($ASFIndexObjectIndexTypeLookup)) { - $ASFIndexObjectIndexTypeLookup[1] = 'Nearest Past Data Packet'; - $ASFIndexObjectIndexTypeLookup[2] = 'Nearest Past Media Object'; - $ASFIndexObjectIndexTypeLookup[3] = 'Nearest Past Cleanpoint'; - } - return (isset($ASFIndexObjectIndexTypeLookup[$id]) ? $ASFIndexObjectIndexTypeLookup[$id] : 'invalid'); - } - - static function GUIDtoBytestring($GUIDstring) { - // Microsoft defines these 16-byte (128-bit) GUIDs in the strangest way: - // first 4 bytes are in little-endian order - // next 2 bytes are appended in little-endian order - // next 2 bytes are appended in little-endian order - // next 2 bytes are appended in big-endian order - // next 6 bytes are appended in big-endian order - - // AaBbCcDd-EeFf-GgHh-IiJj-KkLlMmNnOoPp is stored as this 16-byte string: - // $Dd $Cc $Bb $Aa $Ff $Ee $Hh $Gg $Ii $Jj $Kk $Ll $Mm $Nn $Oo $Pp - - $hexbytecharstring = chr(hexdec(substr($GUIDstring, 6, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 4, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 2, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 0, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 11, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 9, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 16, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 14, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 19, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 21, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 24, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 26, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 28, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 30, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 32, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 34, 2))); - - return $hexbytecharstring; - } - - static function BytestringToGUID($Bytestring) { - $GUIDstring = str_pad(dechex(ord($Bytestring{3})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{2})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{1})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{0})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{5})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{4})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{7})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{6})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{8})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{9})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{10})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{11})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{12})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{13})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{14})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{15})), 2, '0', STR_PAD_LEFT); - - return strtoupper($GUIDstring); - } - - static function FILETIMEtoUNIXtime($FILETIME, $round=true) { - // FILETIME is a 64-bit unsigned integer representing - // the number of 100-nanosecond intervals since January 1, 1601 - // UNIX timestamp is number of seconds since January 1, 1970 - // 116444736000000000 = 10000000 * 60 * 60 * 24 * 365 * 369 + 89 leap days - if ($round) { - return intval(round(($FILETIME - 116444736000000000) / 10000000)); - } - return ($FILETIME - 116444736000000000) / 10000000; - } - - static function WMpictureTypeLookup($WMpictureType) { - static $WMpictureTypeLookup = array(); - if (empty($WMpictureTypeLookup)) { - $WMpictureTypeLookup[0x03] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Front Cover'); - $WMpictureTypeLookup[0x04] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Back Cover'); - $WMpictureTypeLookup[0x00] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'User Defined'); - $WMpictureTypeLookup[0x05] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Leaflet Page'); - $WMpictureTypeLookup[0x06] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Media Label'); - $WMpictureTypeLookup[0x07] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Lead Artist'); - $WMpictureTypeLookup[0x08] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Artist'); - $WMpictureTypeLookup[0x09] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Conductor'); - $WMpictureTypeLookup[0x0A] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Band'); - $WMpictureTypeLookup[0x0B] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Composer'); - $WMpictureTypeLookup[0x0C] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Lyricist'); - $WMpictureTypeLookup[0x0D] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Recording Location'); - $WMpictureTypeLookup[0x0E] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'During Recording'); - $WMpictureTypeLookup[0x0F] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'During Performance'); - $WMpictureTypeLookup[0x10] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Video Screen Capture'); - $WMpictureTypeLookup[0x12] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Illustration'); - $WMpictureTypeLookup[0x13] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Band Logotype'); - $WMpictureTypeLookup[0x14] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Publisher Logotype'); - } - return (isset($WMpictureTypeLookup[$WMpictureType]) ? $WMpictureTypeLookup[$WMpictureType] : ''); - } - - function ASF_HeaderExtensionObjectDataParse(&$asf_header_extension_object_data, &$unhandled_sections) { - // http://msdn.microsoft.com/en-us/library/bb643323.aspx - - $offset = 0; - $objectOffset = 0; - $HeaderExtensionObjectParsed = array(); - while ($objectOffset < strlen($asf_header_extension_object_data)) { - $offset = $objectOffset; - $thisObject = array(); - - $thisObject['guid'] = substr($asf_header_extension_object_data, $offset, 16); - $offset += 16; - $thisObject['guid_text'] = $this->BytestringToGUID($thisObject['guid']); - $thisObject['guid_name'] = $this->GUIDname($thisObject['guid_text']); - - $thisObject['size'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 8)); - $offset += 8; - if ($thisObject['size'] <= 0) { - break; - } - - switch ($thisObject['guid']) { - case GETID3_ASF_Extended_Stream_Properties_Object: - $thisObject['start_time'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 8)); - $offset += 8; - $thisObject['start_time_unix'] = $this->FILETIMEtoUNIXtime($thisObject['start_time']); - - $thisObject['end_time'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 8)); - $offset += 8; - $thisObject['end_time_unix'] = $this->FILETIMEtoUNIXtime($thisObject['end_time']); - - $thisObject['data_bitrate'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['buffer_size'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['initial_buffer_fullness'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['alternate_data_bitrate'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['alternate_buffer_size'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['alternate_initial_buffer_fullness'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['maximum_object_size'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['flags_raw'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - $thisObject['flags']['reliable'] = (bool) $thisObject['flags_raw'] & 0x00000001; - $thisObject['flags']['seekable'] = (bool) $thisObject['flags_raw'] & 0x00000002; - $thisObject['flags']['no_cleanpoints'] = (bool) $thisObject['flags_raw'] & 0x00000004; - $thisObject['flags']['resend_live_cleanpoints'] = (bool) $thisObject['flags_raw'] & 0x00000008; - - $thisObject['stream_number'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $thisObject['stream_language_id_index'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $thisObject['average_time_per_frame'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $thisObject['stream_name_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $thisObject['payload_extension_system_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - for ($i = 0; $i < $thisObject['stream_name_count']; $i++) { - $streamName = array(); - - $streamName['language_id_index'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $streamName['stream_name_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $streamName['stream_name'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, $streamName['stream_name_length'])); - $offset += $streamName['stream_name_length']; - - $thisObject['stream_names'][$i] = $streamName; - } - - for ($i = 0; $i < $thisObject['payload_extension_system_count']; $i++) { - $payloadExtensionSystem = array(); - - $payloadExtensionSystem['extension_system_id'] = substr($asf_header_extension_object_data, $offset, 16); - $offset += 16; - $payloadExtensionSystem['extension_system_id_text'] = $this->BytestringToGUID($payloadExtensionSystem['extension_system_id']); - - $payloadExtensionSystem['extension_system_size'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - if ($payloadExtensionSystem['extension_system_size'] <= 0) { - break 2; - } - - $payloadExtensionSystem['extension_system_info_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $payloadExtensionSystem['extension_system_info_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, $payloadExtensionSystem['extension_system_info_length'])); - $offset += $payloadExtensionSystem['extension_system_info_length']; - - $thisObject['payload_extension_systems'][$i] = $payloadExtensionSystem; - } - - break; - - case GETID3_ASF_Padding_Object: - // padding, skip it - break; - - case GETID3_ASF_Metadata_Object: - $thisObject['description_record_counts'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - for ($i = 0; $i < $thisObject['description_record_counts']; $i++) { - $descriptionRecord = array(); - - $descriptionRecord['reserved_1'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); // must be zero - $offset += 2; - - $descriptionRecord['stream_number'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $descriptionRecord['name_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $descriptionRecord['data_type'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - $descriptionRecord['data_type_text'] = $this->ASFmetadataLibraryObjectDataTypeLookup($descriptionRecord['data_type']); - - $descriptionRecord['data_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $descriptionRecord['name'] = substr($asf_header_extension_object_data, $offset, $descriptionRecord['name_length']); - $offset += $descriptionRecord['name_length']; - - $descriptionRecord['data'] = substr($asf_header_extension_object_data, $offset, $descriptionRecord['data_length']); - $offset += $descriptionRecord['data_length']; - switch ($descriptionRecord['data_type']) { - case 0x0000: // Unicode string - break; - - case 0x0001: // BYTE array - // do nothing - break; - - case 0x0002: // BOOL - $descriptionRecord['data'] = (bool) getid3_lib::LittleEndian2Int($descriptionRecord['data']); - break; - - case 0x0003: // DWORD - case 0x0004: // QWORD - case 0x0005: // WORD - $descriptionRecord['data'] = getid3_lib::LittleEndian2Int($descriptionRecord['data']); - break; - - case 0x0006: // GUID - $descriptionRecord['data_text'] = $this->BytestringToGUID($descriptionRecord['data']); - break; - } - - $thisObject['description_record'][$i] = $descriptionRecord; - } - break; - - case GETID3_ASF_Language_List_Object: - $thisObject['language_id_record_counts'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - for ($i = 0; $i < $thisObject['language_id_record_counts']; $i++) { - $languageIDrecord = array(); - - $languageIDrecord['language_id_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 1)); - $offset += 1; - - $languageIDrecord['language_id'] = substr($asf_header_extension_object_data, $offset, $languageIDrecord['language_id_length']); - $offset += $languageIDrecord['language_id_length']; - - $thisObject['language_id_record'][$i] = $languageIDrecord; - } - break; - - case GETID3_ASF_Metadata_Library_Object: - $thisObject['description_records_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - for ($i = 0; $i < $thisObject['description_records_count']; $i++) { - $descriptionRecord = array(); - - $descriptionRecord['language_list_index'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $descriptionRecord['stream_number'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $descriptionRecord['name_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - - $descriptionRecord['data_type'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 2)); - $offset += 2; - $descriptionRecord['data_type_text'] = $this->ASFmetadataLibraryObjectDataTypeLookup($descriptionRecord['data_type']); - - $descriptionRecord['data_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset, 4)); - $offset += 4; - - $descriptionRecord['name'] = substr($asf_header_extension_object_data, $offset, $descriptionRecord['name_length']); - $offset += $descriptionRecord['name_length']; - - $descriptionRecord['data'] = substr($asf_header_extension_object_data, $offset, $descriptionRecord['data_length']); - $offset += $descriptionRecord['data_length']; - - if (preg_match('#^WM/Picture$#', str_replace("\x00", '', trim($descriptionRecord['name'])))) { - $WMpicture = $this->ASF_WMpicture($descriptionRecord['data']); - foreach ($WMpicture as $key => $value) { - $descriptionRecord['data'] = $WMpicture; - } - unset($WMpicture); - } - - $thisObject['description_record'][$i] = $descriptionRecord; - } - break; - - default: - $unhandled_sections++; - if ($this->GUIDname($thisObject['guid_text'])) { - $this->getid3->info['warning'][] = 'unhandled Header Extension Object GUID "'.$this->GUIDname($thisObject['guid_text']).'" {'.$thisObject['guid_text'].'} at offset '.($offset - 16 - 8); - } else { - $this->getid3->info['warning'][] = 'unknown Header Extension Object GUID {'.$thisObject['guid_text'].'} in at offset '.($offset - 16 - 8); - } - break; - } - $HeaderExtensionObjectParsed[] = $thisObject; - - $objectOffset += $thisObject['size']; - } - return $HeaderExtensionObjectParsed; - } - - - static function ASFmetadataLibraryObjectDataTypeLookup($id) { - static $ASFmetadataLibraryObjectDataTypeLookup = array( - 0x0000 => 'Unicode string', // The data consists of a sequence of Unicode characters - 0x0001 => 'BYTE array', // The type of the data is implementation-specific - 0x0002 => 'BOOL', // The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values - 0x0003 => 'DWORD', // The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer - 0x0004 => 'QWORD', // The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer - 0x0005 => 'WORD', // The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer - 0x0006 => 'GUID', // The data is 16 bytes long and should be interpreted as a 128-bit GUID - ); - return (isset($ASFmetadataLibraryObjectDataTypeLookup[$id]) ? $ASFmetadataLibraryObjectDataTypeLookup[$id] : 'invalid'); - } - - function ASF_WMpicture(&$data) { - //typedef struct _WMPicture{ - // LPWSTR pwszMIMEType; - // BYTE bPictureType; - // LPWSTR pwszDescription; - // DWORD dwDataLen; - // BYTE* pbData; - //} WM_PICTURE; - - $WMpicture = array(); - - $offset = 0; - $WMpicture['image_type_id'] = getid3_lib::LittleEndian2Int(substr($data, $offset, 1)); - $offset += 1; - $WMpicture['image_type'] = $this->WMpictureTypeLookup($WMpicture['image_type_id']); - $WMpicture['image_size'] = getid3_lib::LittleEndian2Int(substr($data, $offset, 4)); - $offset += 4; - - $WMpicture['image_mime'] = ''; - do { - $next_byte_pair = substr($data, $offset, 2); - $offset += 2; - $WMpicture['image_mime'] .= $next_byte_pair; - } while ($next_byte_pair !== "\x00\x00"); - - $WMpicture['image_description'] = ''; - do { - $next_byte_pair = substr($data, $offset, 2); - $offset += 2; - $WMpicture['image_description'] .= $next_byte_pair; - } while ($next_byte_pair !== "\x00\x00"); - - $WMpicture['dataoffset'] = $offset; - $WMpicture['data'] = substr($data, $offset); - - $imageinfo = array(); - $WMpicture['image_mime'] = ''; - $imagechunkcheck = getid3_lib::GetDataImageSize($WMpicture['data'], $imageinfo); - unset($imageinfo); - if (!empty($imagechunkcheck)) { - $WMpicture['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]); - } - if (!isset($this->getid3->info['asf']['comments']['picture'])) { - $this->getid3->info['asf']['comments']['picture'] = array(); - } - $this->getid3->info['asf']['comments']['picture'][] = array('data'=>$WMpicture['data'], 'image_mime'=>$WMpicture['image_mime']); - - return $WMpicture; - } - - - // Remove terminator 00 00 and convert UTF-16LE to Latin-1 - static function TrimConvert($string) { - return trim(getid3_lib::iconv_fallback('UTF-16LE', 'ISO-8859-1', getid3_asf::TrimTerm($string)), ' '); - } - - - // Remove terminator 00 00 - static function TrimTerm($string) { - // remove terminator, only if present (it should be, but...) - if (substr($string, -2) === "\x00\x00") { - $string = substr($string, 0, -2); - } - return $string; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.bink.php b/3rdparty/getid3/module.audio-video.bink.php deleted file mode 100644 index 0a321396765ba4045df8cf68729ba9cd0ebb9f95..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.bink.php +++ /dev/null @@ -1,73 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.bink.php // -// module for analyzing Bink or Smacker audio-video files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_bink extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - -$info['error'][] = 'Bink / Smacker files not properly processed by this version of getID3() ['.$this->getid3->version().']'; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $fileTypeID = fread($this->getid3->fp, 3); - switch ($fileTypeID) { - case 'BIK': - return $this->ParseBink(); - break; - - case 'SMK': - return $this->ParseSmacker(); - break; - - default: - $info['error'][] = 'Expecting "BIK" or "SMK" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($fileTypeID).'"'; - return false; - break; - } - - return true; - - } - - function ParseBink() { - $info = &$this->getid3->info; - $info['fileformat'] = 'bink'; - $info['video']['dataformat'] = 'bink'; - - $fileData = 'BIK'.fread($this->getid3->fp, 13); - - $info['bink']['data_size'] = getid3_lib::LittleEndian2Int(substr($fileData, 4, 4)); - $info['bink']['frame_count'] = getid3_lib::LittleEndian2Int(substr($fileData, 8, 2)); - - if (($info['avdataend'] - $info['avdataoffset']) != ($info['bink']['data_size'] + 8)) { - $info['error'][] = 'Probably truncated file: expecting '.$info['bink']['data_size'].' bytes, found '.($info['avdataend'] - $info['avdataoffset']); - } - - return true; - } - - function ParseSmacker() { - $info = &$this->getid3->info; - $info['fileformat'] = 'smacker'; - $info['video']['dataformat'] = 'smacker'; - - return true; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.flv.php b/3rdparty/getid3/module.audio-video.flv.php deleted file mode 100644 index ba3cd908df10a7670f85fa6acd7cf61fdf0c3333..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.flv.php +++ /dev/null @@ -1,731 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -// // -// FLV module by Seth Kaufman // -// // -// * version 0.1 (26 June 2005) // -// // -// // -// * version 0.1.1 (15 July 2005) // -// minor modifications by James Heinrich // -// // -// * version 0.2 (22 February 2006) // -// Support for On2 VP6 codec and meta information // -// by Steve Webster // -// // -// * version 0.3 (15 June 2006) // -// Modified to not read entire file into memory // -// by James Heinrich // -// // -// * version 0.4 (07 December 2007) // -// Bugfixes for incorrectly parsed FLV dimensions // -// and incorrect parsing of onMetaTag // -// by Evgeny Moysevich // -// // -// * version 0.5 (21 May 2009) // -// Fixed parsing of audio tags and added additional codec // -// details. The duration is now read from onMetaTag (if // -// exists), rather than parsing whole file // -// by Nigel Barnes // -// // -// * version 0.6 (24 May 2009) // -// Better parsing of files with h264 video // -// by Evgeny Moysevich // -// // -// * version 0.6.1 (30 May 2011) // -// prevent infinite loops in expGolombUe() // -// // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.flv.php // -// module for analyzing Shockwave Flash Video files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - -define('GETID3_FLV_TAG_AUDIO', 8); -define('GETID3_FLV_TAG_VIDEO', 9); -define('GETID3_FLV_TAG_META', 18); - -define('GETID3_FLV_VIDEO_H263', 2); -define('GETID3_FLV_VIDEO_SCREEN', 3); -define('GETID3_FLV_VIDEO_VP6FLV', 4); -define('GETID3_FLV_VIDEO_VP6FLV_ALPHA', 5); -define('GETID3_FLV_VIDEO_SCREENV2', 6); -define('GETID3_FLV_VIDEO_H264', 7); - -define('H264_AVC_SEQUENCE_HEADER', 0); -define('H264_PROFILE_BASELINE', 66); -define('H264_PROFILE_MAIN', 77); -define('H264_PROFILE_EXTENDED', 88); -define('H264_PROFILE_HIGH', 100); -define('H264_PROFILE_HIGH10', 110); -define('H264_PROFILE_HIGH422', 122); -define('H264_PROFILE_HIGH444', 144); -define('H264_PROFILE_HIGH444_PREDICTIVE', 244); - -class getid3_flv extends getid3_handler -{ - var $max_frames = 100000; // break out of the loop if too many frames have been scanned; only scan this many if meta frame does not contain useful duration - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $FLVdataLength = $info['avdataend'] - $info['avdataoffset']; - $FLVheader = fread($this->getid3->fp, 5); - - $info['fileformat'] = 'flv'; - $info['flv']['header']['signature'] = substr($FLVheader, 0, 3); - $info['flv']['header']['version'] = getid3_lib::BigEndian2Int(substr($FLVheader, 3, 1)); - $TypeFlags = getid3_lib::BigEndian2Int(substr($FLVheader, 4, 1)); - - $magic = 'FLV'; - if ($info['flv']['header']['signature'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['flv']['header']['signature']).'"'; - unset($info['flv']); - unset($info['fileformat']); - return false; - } - - $info['flv']['header']['hasAudio'] = (bool) ($TypeFlags & 0x04); - $info['flv']['header']['hasVideo'] = (bool) ($TypeFlags & 0x01); - - $FrameSizeDataLength = getid3_lib::BigEndian2Int(fread($this->getid3->fp, 4)); - $FLVheaderFrameLength = 9; - if ($FrameSizeDataLength > $FLVheaderFrameLength) { - fseek($this->getid3->fp, $FrameSizeDataLength - $FLVheaderFrameLength, SEEK_CUR); - } - $Duration = 0; - $found_video = false; - $found_audio = false; - $found_meta = false; - $found_valid_meta_playtime = false; - $tagParseCount = 0; - $info['flv']['framecount'] = array('total'=>0, 'audio'=>0, 'video'=>0); - $flv_framecount = &$info['flv']['framecount']; - while (((ftell($this->getid3->fp) + 16) < $info['avdataend']) && (($tagParseCount++ <= $this->max_frames) || !$found_valid_meta_playtime)) { - $ThisTagHeader = fread($this->getid3->fp, 16); - - $PreviousTagLength = getid3_lib::BigEndian2Int(substr($ThisTagHeader, 0, 4)); - $TagType = getid3_lib::BigEndian2Int(substr($ThisTagHeader, 4, 1)); - $DataLength = getid3_lib::BigEndian2Int(substr($ThisTagHeader, 5, 3)); - $Timestamp = getid3_lib::BigEndian2Int(substr($ThisTagHeader, 8, 3)); - $LastHeaderByte = getid3_lib::BigEndian2Int(substr($ThisTagHeader, 15, 1)); - $NextOffset = ftell($this->getid3->fp) - 1 + $DataLength; - if ($Timestamp > $Duration) { - $Duration = $Timestamp; - } - - $flv_framecount['total']++; - switch ($TagType) { - case GETID3_FLV_TAG_AUDIO: - $flv_framecount['audio']++; - if (!$found_audio) { - $found_audio = true; - $info['flv']['audio']['audioFormat'] = ($LastHeaderByte >> 4) & 0x0F; - $info['flv']['audio']['audioRate'] = ($LastHeaderByte >> 2) & 0x03; - $info['flv']['audio']['audioSampleSize'] = ($LastHeaderByte >> 1) & 0x01; - $info['flv']['audio']['audioType'] = $LastHeaderByte & 0x01; - } - break; - - case GETID3_FLV_TAG_VIDEO: - $flv_framecount['video']++; - if (!$found_video) { - $found_video = true; - $info['flv']['video']['videoCodec'] = $LastHeaderByte & 0x07; - - $FLVvideoHeader = fread($this->getid3->fp, 11); - - if ($info['flv']['video']['videoCodec'] == GETID3_FLV_VIDEO_H264) { - // this code block contributed by: moysevichØgmail*com - - $AVCPacketType = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 0, 1)); - if ($AVCPacketType == H264_AVC_SEQUENCE_HEADER) { - // read AVCDecoderConfigurationRecord - $configurationVersion = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 4, 1)); - $AVCProfileIndication = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 5, 1)); - $profile_compatibility = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 6, 1)); - $lengthSizeMinusOne = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 7, 1)); - $numOfSequenceParameterSets = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 8, 1)); - - if (($numOfSequenceParameterSets & 0x1F) != 0) { - // there is at least one SequenceParameterSet - // read size of the first SequenceParameterSet - //$spsSize = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 9, 2)); - $spsSize = getid3_lib::LittleEndian2Int(substr($FLVvideoHeader, 9, 2)); - // read the first SequenceParameterSet - $sps = fread($this->getid3->fp, $spsSize); - if (strlen($sps) == $spsSize) { // make sure that whole SequenceParameterSet was red - $spsReader = new AVCSequenceParameterSetReader($sps); - $spsReader->readData(); - $info['video']['resolution_x'] = $spsReader->getWidth(); - $info['video']['resolution_y'] = $spsReader->getHeight(); - } - } - } - // end: moysevichØgmail*com - - } elseif ($info['flv']['video']['videoCodec'] == GETID3_FLV_VIDEO_H263) { - - $PictureSizeType = (getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 3, 2))) >> 7; - $PictureSizeType = $PictureSizeType & 0x0007; - $info['flv']['header']['videoSizeType'] = $PictureSizeType; - switch ($PictureSizeType) { - case 0: - //$PictureSizeEnc = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 5, 2)); - //$PictureSizeEnc <<= 1; - //$info['video']['resolution_x'] = ($PictureSizeEnc & 0xFF00) >> 8; - //$PictureSizeEnc = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 6, 2)); - //$PictureSizeEnc <<= 1; - //$info['video']['resolution_y'] = ($PictureSizeEnc & 0xFF00) >> 8; - - $PictureSizeEnc['x'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 4, 2)); - $PictureSizeEnc['y'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 5, 2)); - $PictureSizeEnc['x'] >>= 7; - $PictureSizeEnc['y'] >>= 7; - $info['video']['resolution_x'] = $PictureSizeEnc['x'] & 0xFF; - $info['video']['resolution_y'] = $PictureSizeEnc['y'] & 0xFF; - break; - - case 1: - $PictureSizeEnc['x'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 4, 3)); - $PictureSizeEnc['y'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 6, 3)); - $PictureSizeEnc['x'] >>= 7; - $PictureSizeEnc['y'] >>= 7; - $info['video']['resolution_x'] = $PictureSizeEnc['x'] & 0xFFFF; - $info['video']['resolution_y'] = $PictureSizeEnc['y'] & 0xFFFF; - break; - - case 2: - $info['video']['resolution_x'] = 352; - $info['video']['resolution_y'] = 288; - break; - - case 3: - $info['video']['resolution_x'] = 176; - $info['video']['resolution_y'] = 144; - break; - - case 4: - $info['video']['resolution_x'] = 128; - $info['video']['resolution_y'] = 96; - break; - - case 5: - $info['video']['resolution_x'] = 320; - $info['video']['resolution_y'] = 240; - break; - - case 6: - $info['video']['resolution_x'] = 160; - $info['video']['resolution_y'] = 120; - break; - - default: - $info['video']['resolution_x'] = 0; - $info['video']['resolution_y'] = 0; - break; - - } - } - $info['video']['pixel_aspect_ratio'] = $info['video']['resolution_x'] / $info['video']['resolution_y']; - } - break; - - // Meta tag - case GETID3_FLV_TAG_META: - if (!$found_meta) { - $found_meta = true; - fseek($this->getid3->fp, -1, SEEK_CUR); - $datachunk = fread($this->getid3->fp, $DataLength); - $AMFstream = new AMFStream($datachunk); - $reader = new AMFReader($AMFstream); - $eventName = $reader->readData(); - $info['flv']['meta'][$eventName] = $reader->readData(); - unset($reader); - - $copykeys = array('framerate'=>'frame_rate', 'width'=>'resolution_x', 'height'=>'resolution_y', 'audiodatarate'=>'bitrate', 'videodatarate'=>'bitrate'); - foreach ($copykeys as $sourcekey => $destkey) { - if (isset($info['flv']['meta']['onMetaData'][$sourcekey])) { - switch ($sourcekey) { - case 'width': - case 'height': - $info['video'][$destkey] = intval(round($info['flv']['meta']['onMetaData'][$sourcekey])); - break; - case 'audiodatarate': - $info['audio'][$destkey] = getid3_lib::CastAsInt(round($info['flv']['meta']['onMetaData'][$sourcekey] * 1000)); - break; - case 'videodatarate': - case 'frame_rate': - default: - $info['video'][$destkey] = $info['flv']['meta']['onMetaData'][$sourcekey]; - break; - } - } - } - if (!empty($info['flv']['meta']['onMetaData']['duration'])) { - $found_valid_meta_playtime = true; - } - } - break; - - default: - // noop - break; - } - fseek($this->getid3->fp, $NextOffset, SEEK_SET); - } - - $info['playtime_seconds'] = $Duration / 1000; - if ($info['playtime_seconds'] > 0) { - $info['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - } - - if ($info['flv']['header']['hasAudio']) { - $info['audio']['codec'] = $this->FLVaudioFormat($info['flv']['audio']['audioFormat']); - $info['audio']['sample_rate'] = $this->FLVaudioRate($info['flv']['audio']['audioRate']); - $info['audio']['bits_per_sample'] = $this->FLVaudioBitDepth($info['flv']['audio']['audioSampleSize']); - - $info['audio']['channels'] = $info['flv']['audio']['audioType'] + 1; // 0=mono,1=stereo - $info['audio']['lossless'] = ($info['flv']['audio']['audioFormat'] ? false : true); // 0=uncompressed - $info['audio']['dataformat'] = 'flv'; - } - if (!empty($info['flv']['header']['hasVideo'])) { - $info['video']['codec'] = $this->FLVvideoCodec($info['flv']['video']['videoCodec']); - $info['video']['dataformat'] = 'flv'; - $info['video']['lossless'] = false; - } - - // Set information from meta - if (!empty($info['flv']['meta']['onMetaData']['duration'])) { - $info['playtime_seconds'] = $info['flv']['meta']['onMetaData']['duration']; - $info['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - } - if (isset($info['flv']['meta']['onMetaData']['audiocodecid'])) { - $info['audio']['codec'] = $this->FLVaudioFormat($info['flv']['meta']['onMetaData']['audiocodecid']); - } - if (isset($info['flv']['meta']['onMetaData']['videocodecid'])) { - $info['video']['codec'] = $this->FLVvideoCodec($info['flv']['meta']['onMetaData']['videocodecid']); - } - return true; - } - - - function FLVaudioFormat($id) { - $FLVaudioFormat = array( - 0 => 'Linear PCM, platform endian', - 1 => 'ADPCM', - 2 => 'mp3', - 3 => 'Linear PCM, little endian', - 4 => 'Nellymoser 16kHz mono', - 5 => 'Nellymoser 8kHz mono', - 6 => 'Nellymoser', - 7 => 'G.711A-law logarithmic PCM', - 8 => 'G.711 mu-law logarithmic PCM', - 9 => 'reserved', - 10 => 'AAC', - 11 => false, // unknown? - 12 => false, // unknown? - 13 => false, // unknown? - 14 => 'mp3 8kHz', - 15 => 'Device-specific sound', - ); - return (isset($FLVaudioFormat[$id]) ? $FLVaudioFormat[$id] : false); - } - - function FLVaudioRate($id) { - $FLVaudioRate = array( - 0 => 5500, - 1 => 11025, - 2 => 22050, - 3 => 44100, - ); - return (isset($FLVaudioRate[$id]) ? $FLVaudioRate[$id] : false); - } - - function FLVaudioBitDepth($id) { - $FLVaudioBitDepth = array( - 0 => 8, - 1 => 16, - ); - return (isset($FLVaudioBitDepth[$id]) ? $FLVaudioBitDepth[$id] : false); - } - - function FLVvideoCodec($id) { - $FLVvideoCodec = array( - GETID3_FLV_VIDEO_H263 => 'Sorenson H.263', - GETID3_FLV_VIDEO_SCREEN => 'Screen video', - GETID3_FLV_VIDEO_VP6FLV => 'On2 VP6', - GETID3_FLV_VIDEO_VP6FLV_ALPHA => 'On2 VP6 with alpha channel', - GETID3_FLV_VIDEO_SCREENV2 => 'Screen video v2', - GETID3_FLV_VIDEO_H264 => 'Sorenson H.264', - ); - return (isset($FLVvideoCodec[$id]) ? $FLVvideoCodec[$id] : false); - } -} - -class AMFStream { - var $bytes; - var $pos; - - function AMFStream(&$bytes) { - $this->bytes =& $bytes; - $this->pos = 0; - } - - function readByte() { - return getid3_lib::BigEndian2Int(substr($this->bytes, $this->pos++, 1)); - } - - function readInt() { - return ($this->readByte() << 8) + $this->readByte(); - } - - function readLong() { - return ($this->readByte() << 24) + ($this->readByte() << 16) + ($this->readByte() << 8) + $this->readByte(); - } - - function readDouble() { - return getid3_lib::BigEndian2Float($this->read(8)); - } - - function readUTF() { - $length = $this->readInt(); - return $this->read($length); - } - - function readLongUTF() { - $length = $this->readLong(); - return $this->read($length); - } - - function read($length) { - $val = substr($this->bytes, $this->pos, $length); - $this->pos += $length; - return $val; - } - - function peekByte() { - $pos = $this->pos; - $val = $this->readByte(); - $this->pos = $pos; - return $val; - } - - function peekInt() { - $pos = $this->pos; - $val = $this->readInt(); - $this->pos = $pos; - return $val; - } - - function peekLong() { - $pos = $this->pos; - $val = $this->readLong(); - $this->pos = $pos; - return $val; - } - - function peekDouble() { - $pos = $this->pos; - $val = $this->readDouble(); - $this->pos = $pos; - return $val; - } - - function peekUTF() { - $pos = $this->pos; - $val = $this->readUTF(); - $this->pos = $pos; - return $val; - } - - function peekLongUTF() { - $pos = $this->pos; - $val = $this->readLongUTF(); - $this->pos = $pos; - return $val; - } -} - -class AMFReader { - var $stream; - - function AMFReader(&$stream) { - $this->stream =& $stream; - } - - function readData() { - $value = null; - - $type = $this->stream->readByte(); - switch ($type) { - - // Double - case 0: - $value = $this->readDouble(); - break; - - // Boolean - case 1: - $value = $this->readBoolean(); - break; - - // String - case 2: - $value = $this->readString(); - break; - - // Object - case 3: - $value = $this->readObject(); - break; - - // null - case 6: - return null; - break; - - // Mixed array - case 8: - $value = $this->readMixedArray(); - break; - - // Array - case 10: - $value = $this->readArray(); - break; - - // Date - case 11: - $value = $this->readDate(); - break; - - // Long string - case 13: - $value = $this->readLongString(); - break; - - // XML (handled as string) - case 15: - $value = $this->readXML(); - break; - - // Typed object (handled as object) - case 16: - $value = $this->readTypedObject(); - break; - - // Long string - default: - $value = '(unknown or unsupported data type)'; - break; - } - - return $value; - } - - function readDouble() { - return $this->stream->readDouble(); - } - - function readBoolean() { - return $this->stream->readByte() == 1; - } - - function readString() { - return $this->stream->readUTF(); - } - - function readObject() { - // Get highest numerical index - ignored -// $highestIndex = $this->stream->readLong(); - - $data = array(); - - while ($key = $this->stream->readUTF()) { - $data[$key] = $this->readData(); - } - // Mixed array record ends with empty string (0x00 0x00) and 0x09 - if (($key == '') && ($this->stream->peekByte() == 0x09)) { - // Consume byte - $this->stream->readByte(); - } - return $data; - } - - function readMixedArray() { - // Get highest numerical index - ignored - $highestIndex = $this->stream->readLong(); - - $data = array(); - - while ($key = $this->stream->readUTF()) { - if (is_numeric($key)) { - $key = (float) $key; - } - $data[$key] = $this->readData(); - } - // Mixed array record ends with empty string (0x00 0x00) and 0x09 - if (($key == '') && ($this->stream->peekByte() == 0x09)) { - // Consume byte - $this->stream->readByte(); - } - - return $data; - } - - function readArray() { - $length = $this->stream->readLong(); - $data = array(); - - for ($i = 0; $i < $length; $i++) { - $data[] = $this->readData(); - } - return $data; - } - - function readDate() { - $timestamp = $this->stream->readDouble(); - $timezone = $this->stream->readInt(); - return $timestamp; - } - - function readLongString() { - return $this->stream->readLongUTF(); - } - - function readXML() { - return $this->stream->readLongUTF(); - } - - function readTypedObject() { - $className = $this->stream->readUTF(); - return $this->readObject(); - } -} - -class AVCSequenceParameterSetReader { - var $sps; - var $start = 0; - var $currentBytes = 0; - var $currentBits = 0; - var $width; - var $height; - - function AVCSequenceParameterSetReader($sps) { - $this->sps = $sps; - } - - function readData() { - $this->skipBits(8); - $this->skipBits(8); - $profile = $this->getBits(8); // read profile - $this->skipBits(16); - $this->expGolombUe(); // read sps id - if (in_array($profile, array(H264_PROFILE_HIGH, H264_PROFILE_HIGH10, H264_PROFILE_HIGH422, H264_PROFILE_HIGH444, H264_PROFILE_HIGH444_PREDICTIVE))) { - if ($this->expGolombUe() == 3) { - $this->skipBits(1); - } - $this->expGolombUe(); - $this->expGolombUe(); - $this->skipBits(1); - if ($this->getBit()) { - for ($i = 0; $i < 8; $i++) { - if ($this->getBit()) { - $size = $i < 6 ? 16 : 64; - $lastScale = 8; - $nextScale = 8; - for ($j = 0; $j < $size; $j++) { - if ($nextScale != 0) { - $deltaScale = $this->expGolombUe(); - $nextScale = ($lastScale + $deltaScale + 256) % 256; - } - if ($nextScale != 0) { - $lastScale = $nextScale; - } - } - } - } - } - } - $this->expGolombUe(); - $pocType = $this->expGolombUe(); - if ($pocType == 0) { - $this->expGolombUe(); - } elseif ($pocType == 1) { - $this->skipBits(1); - $this->expGolombSe(); - $this->expGolombSe(); - $pocCycleLength = $this->expGolombUe(); - for ($i = 0; $i < $pocCycleLength; $i++) { - $this->expGolombSe(); - } - } - $this->expGolombUe(); - $this->skipBits(1); - $this->width = ($this->expGolombUe() + 1) * 16; - $heightMap = $this->expGolombUe() + 1; - $this->height = (2 - $this->getBit()) * $heightMap * 16; - } - - function skipBits($bits) { - $newBits = $this->currentBits + $bits; - $this->currentBytes += (int)floor($newBits / 8); - $this->currentBits = $newBits % 8; - } - - function getBit() { - $result = (getid3_lib::BigEndian2Int(substr($this->sps, $this->currentBytes, 1)) >> (7 - $this->currentBits)) & 0x01; - $this->skipBits(1); - return $result; - } - - function getBits($bits) { - $result = 0; - for ($i = 0; $i < $bits; $i++) { - $result = ($result << 1) + $this->getBit(); - } - return $result; - } - - function expGolombUe() { - $significantBits = 0; - $bit = $this->getBit(); - while ($bit == 0) { - $significantBits++; - $bit = $this->getBit(); - - if ($significantBits > 31) { - // something is broken, this is an emergency escape to prevent infinite loops - return 0; - } - } - return (1 << $significantBits) + $this->getBits($significantBits) - 1; - } - - function expGolombSe() { - $result = $this->expGolombUe(); - if (($result & 0x01) == 0) { - return -($result >> 1); - } else { - return ($result + 1) >> 1; - } - } - - function getWidth() { - return $this->width; - } - - function getHeight() { - return $this->height; - } -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.matroska.php b/3rdparty/getid3/module.audio-video.matroska.php deleted file mode 100644 index b7ab667989b6751ce1fd4eb7aab476908eccde50..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.matroska.php +++ /dev/null @@ -1,1706 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.matriska.php // -// module for analyzing Matroska containers // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -// from: http://www.matroska.org/technical/specs/index.html -define('EBML_ID_CHAPTERS', 0x0043A770); // [10][43][A7][70] -- A system to define basic menus and partition data. For more detailed information, look at the Chapters Explanation. -define('EBML_ID_SEEKHEAD', 0x014D9B74); // [11][4D][9B][74] -- Contains the position of other level 1 elements. -define('EBML_ID_TAGS', 0x0254C367); // [12][54][C3][67] -- Element containing elements specific to Tracks/Chapters. A list of valid tags can be found . -define('EBML_ID_INFO', 0x0549A966); // [15][49][A9][66] -- Contains miscellaneous general information and statistics on the file. -define('EBML_ID_TRACKS', 0x0654AE6B); // [16][54][AE][6B] -- A top-level block of information with many tracks described. -define('EBML_ID_SEGMENT', 0x08538067); // [18][53][80][67] -- This element contains all other top-level (level 1) elements. Typically a Matroska file is composed of 1 segment. -define('EBML_ID_ATTACHMENTS', 0x0941A469); // [19][41][A4][69] -- Contain attached files. -define('EBML_ID_EBML', 0x0A45DFA3); // [1A][45][DF][A3] -- Set the EBML characteristics of the data to follow. Each EBML document has to start with this. -define('EBML_ID_CUES', 0x0C53BB6B); // [1C][53][BB][6B] -- A top-level element to speed seeking access. All entries are local to the segment. -define('EBML_ID_CLUSTER', 0x0F43B675); // [1F][43][B6][75] -- The lower level element containing the (monolithic) Block structure. -define('EBML_ID_LANGUAGE', 0x02B59C); // [22][B5][9C] -- Specifies the language of the track in the Matroska languages form. -define('EBML_ID_TRACKTIMECODESCALE', 0x03314F); // [23][31][4F] -- The scale to apply on this track to work at normal speed in relation with other tracks (mostly used to adjust video speed when the audio length differs). -define('EBML_ID_DEFAULTDURATION', 0x03E383); // [23][E3][83] -- Number of nanoseconds (i.e. not scaled) per frame. -define('EBML_ID_CODECNAME', 0x058688); // [25][86][88] -- A human-readable string specifying the codec. -define('EBML_ID_CODECDOWNLOADURL', 0x06B240); // [26][B2][40] -- A URL to download about the codec used. -define('EBML_ID_TIMECODESCALE', 0x0AD7B1); // [2A][D7][B1] -- Timecode scale in nanoseconds (1.000.000 means all timecodes in the segment are expressed in milliseconds). -define('EBML_ID_COLOURSPACE', 0x0EB524); // [2E][B5][24] -- Same value as in AVI (32 bits). -define('EBML_ID_GAMMAVALUE', 0x0FB523); // [2F][B5][23] -- Gamma Value. -define('EBML_ID_CODECSETTINGS', 0x1A9697); // [3A][96][97] -- A string describing the encoding setting used. -define('EBML_ID_CODECINFOURL', 0x1B4040); // [3B][40][40] -- A URL to find information about the codec used. -define('EBML_ID_PREVFILENAME', 0x1C83AB); // [3C][83][AB] -- An escaped filename corresponding to the previous segment. -define('EBML_ID_PREVUID', 0x1CB923); // [3C][B9][23] -- A unique ID to identify the previous chained segment (128 bits). -define('EBML_ID_NEXTFILENAME', 0x1E83BB); // [3E][83][BB] -- An escaped filename corresponding to the next segment. -define('EBML_ID_NEXTUID', 0x1EB923); // [3E][B9][23] -- A unique ID to identify the next chained segment (128 bits). -define('EBML_ID_CONTENTCOMPALGO', 0x0254); // [42][54] -- The compression algorithm used. Algorithms that have been specified so far are: -define('EBML_ID_CONTENTCOMPSETTINGS', 0x0255); // [42][55] -- Settings that might be needed by the decompressor. For Header Stripping (ContentCompAlgo=3), the bytes that were removed from the beggining of each frames of the track. -define('EBML_ID_DOCTYPE', 0x0282); // [42][82] -- A string that describes the type of document that follows this EBML header ('matroska' in our case). -define('EBML_ID_DOCTYPEREADVERSION', 0x0285); // [42][85] -- The minimum DocType version an interpreter has to support to read this file. -define('EBML_ID_EBMLVERSION', 0x0286); // [42][86] -- The version of EBML parser used to create the file. -define('EBML_ID_DOCTYPEVERSION', 0x0287); // [42][87] -- The version of DocType interpreter used to create the file. -define('EBML_ID_EBMLMAXIDLENGTH', 0x02F2); // [42][F2] -- The maximum length of the IDs you'll find in this file (4 or less in Matroska). -define('EBML_ID_EBMLMAXSIZELENGTH', 0x02F3); // [42][F3] -- The maximum length of the sizes you'll find in this file (8 or less in Matroska). This does not override the element size indicated at the beginning of an element. Elements that have an indicated size which is larger than what is allowed by EBMLMaxSizeLength shall be considered invalid. -define('EBML_ID_EBMLREADVERSION', 0x02F7); // [42][F7] -- The minimum EBML version a parser has to support to read this file. -define('EBML_ID_CHAPLANGUAGE', 0x037C); // [43][7C] -- The languages corresponding to the string, in the bibliographic ISO-639-2 form. -define('EBML_ID_CHAPCOUNTRY', 0x037E); // [43][7E] -- The countries corresponding to the string, same 2 octets as in Internet domains. -define('EBML_ID_SEGMENTFAMILY', 0x0444); // [44][44] -- A randomly generated unique ID that all segments related to each other must use (128 bits). -define('EBML_ID_DATEUTC', 0x0461); // [44][61] -- Date of the origin of timecode (value 0), i.e. production date. -define('EBML_ID_TAGLANGUAGE', 0x047A); // [44][7A] -- Specifies the language of the tag specified, in the Matroska languages form. -define('EBML_ID_TAGDEFAULT', 0x0484); // [44][84] -- Indication to know if this is the default/original language to use for the given tag. -define('EBML_ID_TAGBINARY', 0x0485); // [44][85] -- The values of the Tag if it is binary. Note that this cannot be used in the same SimpleTag as TagString. -define('EBML_ID_TAGSTRING', 0x0487); // [44][87] -- The value of the Tag. -define('EBML_ID_DURATION', 0x0489); // [44][89] -- Duration of the segment (based on TimecodeScale). -define('EBML_ID_CHAPPROCESSPRIVATE', 0x050D); // [45][0D] -- Some optional data attached to the ChapProcessCodecID information. For ChapProcessCodecID = 1, it is the "DVD level" equivalent. -define('EBML_ID_CHAPTERFLAGENABLED', 0x0598); // [45][98] -- Specify wether the chapter is enabled. It can be enabled/disabled by a Control Track. When disabled, the movie should skip all the content between the TimeStart and TimeEnd of this chapter. -define('EBML_ID_TAGNAME', 0x05A3); // [45][A3] -- The name of the Tag that is going to be stored. -define('EBML_ID_EDITIONENTRY', 0x05B9); // [45][B9] -- Contains all information about a segment edition. -define('EBML_ID_EDITIONUID', 0x05BC); // [45][BC] -- A unique ID to identify the edition. It's useful for tagging an edition. -define('EBML_ID_EDITIONFLAGHIDDEN', 0x05BD); // [45][BD] -- If an edition is hidden (1), it should not be available to the user interface (but still to Control Tracks). -define('EBML_ID_EDITIONFLAGDEFAULT', 0x05DB); // [45][DB] -- If a flag is set (1) the edition should be used as the default one. -define('EBML_ID_EDITIONFLAGORDERED', 0x05DD); // [45][DD] -- Specify if the chapters can be defined multiple times and the order to play them is enforced. -define('EBML_ID_FILEDATA', 0x065C); // [46][5C] -- The data of the file. -define('EBML_ID_FILEMIMETYPE', 0x0660); // [46][60] -- MIME type of the file. -define('EBML_ID_FILENAME', 0x066E); // [46][6E] -- Filename of the attached file. -define('EBML_ID_FILEREFERRAL', 0x0675); // [46][75] -- A binary value that a track/codec can refer to when the attachment is needed. -define('EBML_ID_FILEDESCRIPTION', 0x067E); // [46][7E] -- A human-friendly name for the attached file. -define('EBML_ID_FILEUID', 0x06AE); // [46][AE] -- Unique ID representing the file, as random as possible. -define('EBML_ID_CONTENTENCALGO', 0x07E1); // [47][E1] -- The encryption algorithm used. The value '0' means that the contents have not been encrypted but only signed. Predefined values: -define('EBML_ID_CONTENTENCKEYID', 0x07E2); // [47][E2] -- For public key algorithms this is the ID of the public key the the data was encrypted with. -define('EBML_ID_CONTENTSIGNATURE', 0x07E3); // [47][E3] -- A cryptographic signature of the contents. -define('EBML_ID_CONTENTSIGKEYID', 0x07E4); // [47][E4] -- This is the ID of the private key the data was signed with. -define('EBML_ID_CONTENTSIGALGO', 0x07E5); // [47][E5] -- The algorithm used for the signature. A value of '0' means that the contents have not been signed but only encrypted. Predefined values: -define('EBML_ID_CONTENTSIGHASHALGO', 0x07E6); // [47][E6] -- The hash algorithm used for the signature. A value of '0' means that the contents have not been signed but only encrypted. Predefined values: -define('EBML_ID_MUXINGAPP', 0x0D80); // [4D][80] -- Muxing application or library ("libmatroska-0.4.3"). -define('EBML_ID_SEEK', 0x0DBB); // [4D][BB] -- Contains a single seek entry to an EBML element. -define('EBML_ID_CONTENTENCODINGORDER', 0x1031); // [50][31] -- Tells when this modification was used during encoding/muxing starting with 0 and counting upwards. The decoder/demuxer has to start with the highest order number it finds and work its way down. This value has to be unique over all ContentEncodingOrder elements in the segment. -define('EBML_ID_CONTENTENCODINGSCOPE', 0x1032); // [50][32] -- A bit field that describes which elements have been modified in this way. Values (big endian) can be OR'ed. Possible values: -define('EBML_ID_CONTENTENCODINGTYPE', 0x1033); // [50][33] -- A value describing what kind of transformation has been done. Possible values: -define('EBML_ID_CONTENTCOMPRESSION', 0x1034); // [50][34] -- Settings describing the compression used. Must be present if the value of ContentEncodingType is 0 and absent otherwise. Each block must be decompressable even if no previous block is available in order not to prevent seeking. -define('EBML_ID_CONTENTENCRYPTION', 0x1035); // [50][35] -- Settings describing the encryption used. Must be present if the value of ContentEncodingType is 1 and absent otherwise. -define('EBML_ID_CUEREFNUMBER', 0x135F); // [53][5F] -- Number of the referenced Block of Track X in the specified Cluster. -define('EBML_ID_NAME', 0x136E); // [53][6E] -- A human-readable track name. -define('EBML_ID_CUEBLOCKNUMBER', 0x1378); // [53][78] -- Number of the Block in the specified Cluster. -define('EBML_ID_TRACKOFFSET', 0x137F); // [53][7F] -- A value to add to the Block's Timecode. This can be used to adjust the playback offset of a track. -define('EBML_ID_SEEKID', 0x13AB); // [53][AB] -- The binary ID corresponding to the element name. -define('EBML_ID_SEEKPOSITION', 0x13AC); // [53][AC] -- The position of the element in the segment in octets (0 = first level 1 element). -define('EBML_ID_STEREOMODE', 0x13B8); // [53][B8] -- Stereo-3D video mode on 2 bits (0: mono, 1: right eye, 2: left eye, 3: both eyes). -define('EBML_ID_PIXELCROPBOTTOM', 0x14AA); // [54][AA] -- The number of video pixels to remove at the bottom of the image (for HDTV content). -define('EBML_ID_DISPLAYWIDTH', 0x14B0); // [54][B0] -- Width of the video frames to display. -define('EBML_ID_DISPLAYUNIT', 0x14B2); // [54][B2] -- Type of the unit for DisplayWidth/Height (0: pixels, 1: centimeters, 2: inches). -define('EBML_ID_ASPECTRATIOTYPE', 0x14B3); // [54][B3] -- Specify the possible modifications to the aspect ratio (0: free resizing, 1: keep aspect ratio, 2: fixed). -define('EBML_ID_DISPLAYHEIGHT', 0x14BA); // [54][BA] -- Height of the video frames to display. -define('EBML_ID_PIXELCROPTOP', 0x14BB); // [54][BB] -- The number of video pixels to remove at the top of the image. -define('EBML_ID_PIXELCROPLEFT', 0x14CC); // [54][CC] -- The number of video pixels to remove on the left of the image. -define('EBML_ID_PIXELCROPRIGHT', 0x14DD); // [54][DD] -- The number of video pixels to remove on the right of the image. -define('EBML_ID_FLAGFORCED', 0x15AA); // [55][AA] -- Set if that track MUST be used during playback. There can be many forced track for a kind (audio, video or subs), the player should select the one which language matches the user preference or the default + forced track. Overlay MAY happen between a forced and non-forced track of the same kind. -define('EBML_ID_MAXBLOCKADDITIONID', 0x15EE); // [55][EE] -- The maximum value of BlockAddID. A value 0 means there is no BlockAdditions for this track. -define('EBML_ID_WRITINGAPP', 0x1741); // [57][41] -- Writing application ("mkvmerge-0.3.3"). -define('EBML_ID_CLUSTERSILENTTRACKS', 0x1854); // [58][54] -- The list of tracks that are not used in that part of the stream. It is useful when using overlay tracks on seeking. Then you should decide what track to use. -define('EBML_ID_CLUSTERSILENTTRACKNUMBER', 0x18D7); // [58][D7] -- One of the track number that are not used from now on in the stream. It could change later if not specified as silent in a further Cluster. -define('EBML_ID_ATTACHEDFILE', 0x21A7); // [61][A7] -- An attached file. -define('EBML_ID_CONTENTENCODING', 0x2240); // [62][40] -- Settings for one content encoding like compression or encryption. -define('EBML_ID_BITDEPTH', 0x2264); // [62][64] -- Bits per sample, mostly used for PCM. -define('EBML_ID_CODECPRIVATE', 0x23A2); // [63][A2] -- Private data only known to the codec. -define('EBML_ID_TARGETS', 0x23C0); // [63][C0] -- Contain all UIDs where the specified meta data apply. It is void to describe everything in the segment. -define('EBML_ID_CHAPTERPHYSICALEQUIV', 0x23C3); // [63][C3] -- Specify the physical equivalent of this ChapterAtom like "DVD" (60) or "SIDE" (50), see complete list of values. -define('EBML_ID_TAGCHAPTERUID', 0x23C4); // [63][C4] -- A unique ID to identify the Chapter(s) the tags belong to. If the value is 0 at this level, the tags apply to all chapters in the Segment. -define('EBML_ID_TAGTRACKUID', 0x23C5); // [63][C5] -- A unique ID to identify the Track(s) the tags belong to. If the value is 0 at this level, the tags apply to all tracks in the Segment. -define('EBML_ID_TAGATTACHMENTUID', 0x23C6); // [63][C6] -- A unique ID to identify the Attachment(s) the tags belong to. If the value is 0 at this level, the tags apply to all the attachments in the Segment. -define('EBML_ID_TAGEDITIONUID', 0x23C9); // [63][C9] -- A unique ID to identify the EditionEntry(s) the tags belong to. If the value is 0 at this level, the tags apply to all editions in the Segment. -define('EBML_ID_TARGETTYPE', 0x23CA); // [63][CA] -- An informational string that can be used to display the logical level of the target like "ALBUM", "TRACK", "MOVIE", "CHAPTER", etc (see TargetType). -define('EBML_ID_TRACKTRANSLATE', 0x2624); // [66][24] -- The track identification for the given Chapter Codec. -define('EBML_ID_TRACKTRANSLATETRACKID', 0x26A5); // [66][A5] -- The binary value used to represent this track in the chapter codec data. The format depends on the ChapProcessCodecID used. -define('EBML_ID_TRACKTRANSLATECODEC', 0x26BF); // [66][BF] -- The chapter codec using this ID (0: Matroska Script, 1: DVD-menu). -define('EBML_ID_TRACKTRANSLATEEDITIONUID', 0x26FC); // [66][FC] -- Specify an edition UID on which this translation applies. When not specified, it means for all editions found in the segment. -define('EBML_ID_SIMPLETAG', 0x27C8); // [67][C8] -- Contains general information about the target. -define('EBML_ID_TARGETTYPEVALUE', 0x28CA); // [68][CA] -- A number to indicate the logical level of the target (see TargetType). -define('EBML_ID_CHAPPROCESSCOMMAND', 0x2911); // [69][11] -- Contains all the commands associated to the Atom. -define('EBML_ID_CHAPPROCESSTIME', 0x2922); // [69][22] -- Defines when the process command should be handled (0: during the whole chapter, 1: before starting playback, 2: after playback of the chapter). -define('EBML_ID_CHAPTERTRANSLATE', 0x2924); // [69][24] -- A tuple of corresponding ID used by chapter codecs to represent this segment. -define('EBML_ID_CHAPPROCESSDATA', 0x2933); // [69][33] -- Contains the command information. The data should be interpreted depending on the ChapProcessCodecID value. For ChapProcessCodecID = 1, the data correspond to the binary DVD cell pre/post commands. -define('EBML_ID_CHAPPROCESS', 0x2944); // [69][44] -- Contains all the commands associated to the Atom. -define('EBML_ID_CHAPPROCESSCODECID', 0x2955); // [69][55] -- Contains the type of the codec used for the processing. A value of 0 means native Matroska processing (to be defined), a value of 1 means the DVD command set is used. More codec IDs can be added later. -define('EBML_ID_CHAPTERTRANSLATEID', 0x29A5); // [69][A5] -- The binary value used to represent this segment in the chapter codec data. The format depends on the ChapProcessCodecID used. -define('EBML_ID_CHAPTERTRANSLATECODEC', 0x29BF); // [69][BF] -- The chapter codec using this ID (0: Matroska Script, 1: DVD-menu). -define('EBML_ID_CHAPTERTRANSLATEEDITIONUID', 0x29FC); // [69][FC] -- Specify an edition UID on which this correspondance applies. When not specified, it means for all editions found in the segment. -define('EBML_ID_CONTENTENCODINGS', 0x2D80); // [6D][80] -- Settings for several content encoding mechanisms like compression or encryption. -define('EBML_ID_MINCACHE', 0x2DE7); // [6D][E7] -- The minimum number of frames a player should be able to cache during playback. If set to 0, the reference pseudo-cache system is not used. -define('EBML_ID_MAXCACHE', 0x2DF8); // [6D][F8] -- The maximum cache size required to store referenced frames in and the current frame. 0 means no cache is needed. -define('EBML_ID_CHAPTERSEGMENTUID', 0x2E67); // [6E][67] -- A segment to play in place of this chapter. Edition ChapterSegmentEditionUID should be used for this segment, otherwise no edition is used. -define('EBML_ID_CHAPTERSEGMENTEDITIONUID', 0x2EBC); // [6E][BC] -- The edition to play from the segment linked in ChapterSegmentUID. -define('EBML_ID_TRACKOVERLAY', 0x2FAB); // [6F][AB] -- Specify that this track is an overlay track for the Track specified (in the u-integer). That means when this track has a gap (see SilentTracks) the overlay track should be used instead. The order of multiple TrackOverlay matters, the first one is the one that should be used. If not found it should be the second, etc. -define('EBML_ID_TAG', 0x3373); // [73][73] -- Element containing elements specific to Tracks/Chapters. -define('EBML_ID_SEGMENTFILENAME', 0x3384); // [73][84] -- A filename corresponding to this segment. -define('EBML_ID_SEGMENTUID', 0x33A4); // [73][A4] -- A randomly generated unique ID to identify the current segment between many others (128 bits). -define('EBML_ID_CHAPTERUID', 0x33C4); // [73][C4] -- A unique ID to identify the Chapter. -define('EBML_ID_TRACKUID', 0x33C5); // [73][C5] -- A unique ID to identify the Track. This should be kept the same when making a direct stream copy of the Track to another file. -define('EBML_ID_ATTACHMENTLINK', 0x3446); // [74][46] -- The UID of an attachment that is used by this codec. -define('EBML_ID_CLUSTERBLOCKADDITIONS', 0x35A1); // [75][A1] -- Contain additional blocks to complete the main one. An EBML parser that has no knowledge of the Block structure could still see and use/skip these data. -define('EBML_ID_CHANNELPOSITIONS', 0x347B); // [7D][7B] -- Table of horizontal angles for each successive channel, see appendix. -define('EBML_ID_OUTPUTSAMPLINGFREQUENCY', 0x38B5); // [78][B5] -- Real output sampling frequency in Hz (used for SBR techniques). -define('EBML_ID_TITLE', 0x3BA9); // [7B][A9] -- General name of the segment. -define('EBML_ID_CHAPTERDISPLAY', 0x00); // [80] -- Contains all possible strings to use for the chapter display. -define('EBML_ID_TRACKTYPE', 0x03); // [83] -- A set of track types coded on 8 bits (1: video, 2: audio, 3: complex, 0x10: logo, 0x11: subtitle, 0x12: buttons, 0x20: control). -define('EBML_ID_CHAPSTRING', 0x05); // [85] -- Contains the string to use as the chapter atom. -define('EBML_ID_CODECID', 0x06); // [86] -- An ID corresponding to the codec, see the codec page for more info. -define('EBML_ID_FLAGDEFAULT', 0x08); // [88] -- Set if that track (audio, video or subs) SHOULD be used if no language found matches the user preference. -define('EBML_ID_CHAPTERTRACKNUMBER', 0x09); // [89] -- UID of the Track to apply this chapter too. In the absense of a control track, choosing this chapter will select the listed Tracks and deselect unlisted tracks. Absense of this element indicates that the Chapter should be applied to any currently used Tracks. -define('EBML_ID_CLUSTERSLICES', 0x0E); // [8E] -- Contains slices description. -define('EBML_ID_CHAPTERTRACK', 0x0F); // [8F] -- List of tracks on which the chapter applies. If this element is not present, all tracks apply -define('EBML_ID_CHAPTERTIMESTART', 0x11); // [91] -- Timecode of the start of Chapter (not scaled). -define('EBML_ID_CHAPTERTIMEEND', 0x12); // [92] -- Timecode of the end of Chapter (timecode excluded, not scaled). -define('EBML_ID_CUEREFTIME', 0x16); // [96] -- Timecode of the referenced Block. -define('EBML_ID_CUEREFCLUSTER', 0x17); // [97] -- Position of the Cluster containing the referenced Block. -define('EBML_ID_CHAPTERFLAGHIDDEN', 0x18); // [98] -- If a chapter is hidden (1), it should not be available to the user interface (but still to Control Tracks). -define('EBML_ID_FLAGINTERLACED', 0x1A); // [9A] -- Set if the video is interlaced. -define('EBML_ID_CLUSTERBLOCKDURATION', 0x1B); // [9B] -- The duration of the Block (based on TimecodeScale). This element is mandatory when DefaultDuration is set for the track. When not written and with no DefaultDuration, the value is assumed to be the difference between the timecode of this Block and the timecode of the next Block in "display" order (not coding order). This element can be useful at the end of a Track (as there is not other Block available), or when there is a break in a track like for subtitle tracks. -define('EBML_ID_FLAGLACING', 0x1C); // [9C] -- Set if the track may contain blocks using lacing. -define('EBML_ID_CHANNELS', 0x1F); // [9F] -- Numbers of channels in the track. -define('EBML_ID_CLUSTERBLOCKGROUP', 0x20); // [A0] -- Basic container of information containing a single Block or BlockVirtual, and information specific to that Block/VirtualBlock. -define('EBML_ID_CLUSTERBLOCK', 0x21); // [A1] -- Block containing the actual data to be rendered and a timecode relative to the Cluster Timecode. -define('EBML_ID_CLUSTERBLOCKVIRTUAL', 0x22); // [A2] -- A Block with no data. It must be stored in the stream at the place the real Block should be in display order. -define('EBML_ID_CLUSTERSIMPLEBLOCK', 0x23); // [A3] -- Similar to Block but without all the extra information, mostly used to reduced overhead when no extra feature is needed. -define('EBML_ID_CLUSTERCODECSTATE', 0x24); // [A4] -- The new codec state to use. Data interpretation is private to the codec. This information should always be referenced by a seek entry. -define('EBML_ID_CLUSTERBLOCKADDITIONAL', 0x25); // [A5] -- Interpreted by the codec as it wishes (using the BlockAddID). -define('EBML_ID_CLUSTERBLOCKMORE', 0x26); // [A6] -- Contain the BlockAdditional and some parameters. -define('EBML_ID_CLUSTERPOSITION', 0x27); // [A7] -- Position of the Cluster in the segment (0 in live broadcast streams). It might help to resynchronise offset on damaged streams. -define('EBML_ID_CODECDECODEALL', 0x2A); // [AA] -- The codec can decode potentially damaged data. -define('EBML_ID_CLUSTERPREVSIZE', 0x2B); // [AB] -- Size of the previous Cluster, in octets. Can be useful for backward playing. -define('EBML_ID_TRACKENTRY', 0x2E); // [AE] -- Describes a track with all elements. -define('EBML_ID_CLUSTERENCRYPTEDBLOCK', 0x2F); // [AF] -- Similar to SimpleBlock but the data inside the Block are Transformed (encrypt and/or signed). -define('EBML_ID_PIXELWIDTH', 0x30); // [B0] -- Width of the encoded video frames in pixels. -define('EBML_ID_CUETIME', 0x33); // [B3] -- Absolute timecode according to the segment time base. -define('EBML_ID_SAMPLINGFREQUENCY', 0x35); // [B5] -- Sampling frequency in Hz. -define('EBML_ID_CHAPTERATOM', 0x36); // [B6] -- Contains the atom information to use as the chapter atom (apply to all tracks). -define('EBML_ID_CUETRACKPOSITIONS', 0x37); // [B7] -- Contain positions for different tracks corresponding to the timecode. -define('EBML_ID_FLAGENABLED', 0x39); // [B9] -- Set if the track is used. -define('EBML_ID_PIXELHEIGHT', 0x3A); // [BA] -- Height of the encoded video frames in pixels. -define('EBML_ID_CUEPOINT', 0x3B); // [BB] -- Contains all information relative to a seek point in the segment. -define('EBML_ID_CRC32', 0x3F); // [BF] -- The CRC is computed on all the data of the Master element it's in, regardless of its position. It's recommended to put the CRC value at the beggining of the Master element for easier reading. All level 1 elements should include a CRC-32. -define('EBML_ID_CLUSTERBLOCKADDITIONID', 0x4B); // [CB] -- The ID of the BlockAdditional element (0 is the main Block). -define('EBML_ID_CLUSTERLACENUMBER', 0x4C); // [CC] -- The reverse number of the frame in the lace (0 is the last frame, 1 is the next to last, etc). While there are a few files in the wild with this element, it is no longer in use and has been deprecated. Being able to interpret this element is not required for playback. -define('EBML_ID_CLUSTERFRAMENUMBER', 0x4D); // [CD] -- The number of the frame to generate from this lace with this delay (allow you to generate many frames from the same Block/Frame). -define('EBML_ID_CLUSTERDELAY', 0x4E); // [CE] -- The (scaled) delay to apply to the element. -define('EBML_ID_CLUSTERDURATION', 0x4F); // [CF] -- The (scaled) duration to apply to the element. -define('EBML_ID_TRACKNUMBER', 0x57); // [D7] -- The track number as used in the Block Header (using more than 127 tracks is not encouraged, though the design allows an unlimited number). -define('EBML_ID_CUEREFERENCE', 0x5B); // [DB] -- The Clusters containing the required referenced Blocks. -define('EBML_ID_VIDEO', 0x60); // [E0] -- Video settings. -define('EBML_ID_AUDIO', 0x61); // [E1] -- Audio settings. -define('EBML_ID_CLUSTERTIMESLICE', 0x68); // [E8] -- Contains extra time information about the data contained in the Block. While there are a few files in the wild with this element, it is no longer in use and has been deprecated. Being able to interpret this element is not required for playback. -define('EBML_ID_CUECODECSTATE', 0x6A); // [EA] -- The position of the Codec State corresponding to this Cue element. 0 means that the data is taken from the initial Track Entry. -define('EBML_ID_CUEREFCODECSTATE', 0x6B); // [EB] -- The position of the Codec State corresponding to this referenced element. 0 means that the data is taken from the initial Track Entry. -define('EBML_ID_VOID', 0x6C); // [EC] -- Used to void damaged data, to avoid unexpected behaviors when using damaged data. The content is discarded. Also used to reserve space in a sub-element for later use. -define('EBML_ID_CLUSTERTIMECODE', 0x67); // [E7] -- Absolute timecode of the cluster (based on TimecodeScale). -define('EBML_ID_CLUSTERBLOCKADDID', 0x6E); // [EE] -- An ID to identify the BlockAdditional level. -define('EBML_ID_CUECLUSTERPOSITION', 0x71); // [F1] -- The position of the Cluster containing the required Block. -define('EBML_ID_CUETRACK', 0x77); // [F7] -- The track for which a position is given. -define('EBML_ID_CLUSTERREFERENCEPRIORITY', 0x7A); // [FA] -- This frame is referenced and has the specified cache priority. In cache only a frame of the same or higher priority can replace this frame. A value of 0 means the frame is not referenced. -define('EBML_ID_CLUSTERREFERENCEBLOCK', 0x7B); // [FB] -- Timecode of another frame used as a reference (ie: B or P frame). The timecode is relative to the block it's attached to. -define('EBML_ID_CLUSTERREFERENCEVIRTUAL', 0x7D); // [FD] -- Relative position of the data that should be in position of the virtual block. - - -class getid3_matroska extends getid3_handler -{ - // public options - public static $hide_clusters = true; // if true, do not return information about CLUSTER chunks, since there's a lot of them and they're not usually useful [default: TRUE] - public static $parse_whole_file = false; // true to parse the whole file, not only header [default: FALSE] - - // private parser settings/placeholders - private $EBMLbuffer = ''; - private $EBMLbuffer_offset = 0; - private $EBMLbuffer_length = 0; - private $current_offset = 0; - private $unuseful_elements = array(EBML_ID_CRC32, EBML_ID_VOID); - - public function Analyze() - { - $info = &$this->getid3->info; - - // parse container - try { - $this->parseEBML($info); - } - catch (Exception $e) { - $info['error'][] = 'EBML parser: '.$e->getMessage(); - } - - // calculate playtime - if (isset($info['matroska']['info']) && is_array($info['matroska']['info'])) { - foreach ($info['matroska']['info'] as $key => $infoarray) { - if (isset($infoarray['Duration'])) { - // TimecodeScale is how many nanoseconds each Duration unit is - $info['playtime_seconds'] = $infoarray['Duration'] * ((isset($infoarray['TimecodeScale']) ? $infoarray['TimecodeScale'] : 1000000) / 1000000000); - break; - } - } - } - - // extract tags - if (isset($info['matroska']['tags']) && is_array($info['matroska']['tags'])) { - foreach ($info['matroska']['tags'] as $key => $infoarray) { - $this->ExtractCommentsSimpleTag($infoarray); - } - } - - // process tracks - if (isset($info['matroska']['tracks']['tracks']) && is_array($info['matroska']['tracks']['tracks'])) { - foreach ($info['matroska']['tracks']['tracks'] as $key => $trackarray) { - - $track_info = array(); - $track_info['dataformat'] = self::MatroskaCodecIDtoCommonName($trackarray['CodecID']); - $track_info['default'] = (isset($trackarray['FlagDefault']) ? $trackarray['FlagDefault'] : true); - if (isset($trackarray['Name'])) { $track_info['name'] = $trackarray['Name']; } - - switch ($trackarray['TrackType']) { - - case 1: // Video - $track_info['resolution_x'] = $trackarray['PixelWidth']; - $track_info['resolution_y'] = $trackarray['PixelHeight']; - if (isset($trackarray['DisplayWidth'])) { $track_info['display_x'] = $trackarray['DisplayWidth']; } - if (isset($trackarray['DisplayHeight'])) { $track_info['display_y'] = $trackarray['DisplayHeight']; } - if (isset($trackarray['DefaultDuration'])) { $track_info['frame_rate'] = round(1000000000 / $trackarray['DefaultDuration'], 3); } - //if (isset($trackarray['CodecName'])) { $track_info['codec'] = $trackarray['CodecName']; } - - switch ($trackarray['CodecID']) { - case 'V_MS/VFW/FOURCC': - if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, false)) { - $this->getid3->warning('Unable to parse codec private data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio-video.riff.php"'); - break; - } - $parsed = getid3_riff::ParseBITMAPINFOHEADER($trackarray['CodecPrivate']); - $track_info['codec'] = getid3_riff::RIFFfourccLookup($parsed['fourcc']); - $info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $parsed; - break; - } - - $info['video']['streams'][] = $track_info; - break; - - case 2: // Audio - $track_info['sample_rate'] = (isset($trackarray['SamplingFrequency']) ? $trackarray['SamplingFrequency'] : 8000.0); - $track_info['channels'] = (isset($trackarray['Channels']) ? $trackarray['Channels'] : 1); - $track_info['language'] = (isset($trackarray['Language']) ? $trackarray['Language'] : 'eng'); - if (isset($trackarray['BitDepth'])) { $track_info['bits_per_sample'] = $trackarray['BitDepth']; } - //if (isset($trackarray['CodecName'])) { $track_info['codec'] = $trackarray['CodecName']; } - - switch ($trackarray['CodecID']) { - case 'A_PCM/INT/LIT': - case 'A_PCM/INT/BIG': - $track_info['bitrate'] = $trackarray['SamplingFrequency'] * $trackarray['Channels'] * $trackarray['BitDepth']; - break; - - case 'A_AC3': - case 'A_DTS': - case 'A_MPEG/L3': - //case 'A_FLAC': - if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.'.$track_info['dataformat'].'.php', __FILE__, false)) { - $this->getid3->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio.'.$track_info['dataformat'].'.php"'); - break; - } - - if (!isset($info['matroska']['track_data_offsets'][$trackarray['TrackNumber']])) { - $this->getid3->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because $info[matroska][track_data_offsets]['.$trackarray['TrackNumber'].'] not set'); - break; - } - - // create temp instance - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = $info['matroska']['track_data_offsets'][$trackarray['TrackNumber']]['offset']; - if ($track_info['dataformat'] == 'mp3' || $track_info['dataformat'] == 'flac') { - $getid3_temp->info['avdataend'] = $info['matroska']['track_data_offsets'][$trackarray['TrackNumber']]['offset'] + $info['matroska']['track_data_offsets'][$trackarray['TrackNumber']]['length']; - } - - // analyze - $class = 'getid3_'.$track_info['dataformat']; - $header_data_key = $track_info['dataformat'] == 'mp3' ? 'mpeg' : $track_info['dataformat']; - $getid3_audio = new $class($getid3_temp); - if ($track_info['dataformat'] == 'mp3') { - $getid3_audio->allow_bruteforce = true; - } - if ($track_info['dataformat'] == 'flac') { - $getid3_audio->AnalyzeString($trackarray['CodecPrivate']); - } - else { - $getid3_audio->Analyze(); - } - if (!empty($getid3_temp->info[$header_data_key])) { - unset($getid3_temp->info[$header_data_key]['GETID3_VERSION']); - $info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $getid3_temp->info[$header_data_key]; - if (isset($getid3_temp->info['audio']) && is_array($getid3_temp->info['audio'])) { - foreach ($getid3_temp->info['audio'] as $key => $value) { - $track_info[$key] = $value; - } - } - } - else { - $this->getid3->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because '.$class.'::Analyze() failed at offset '.$getid3_temp->info['avdataoffset']); - } - - // copy errors and warnings - if (!empty($getid3_temp->info['error'])) { - foreach ($getid3_temp->info['error'] as $newerror) { - $this->getid3->warning($class.'() says: ['.$newerror.']'); - } - } - if (!empty($getid3_temp->info['warning'])) { - foreach ($getid3_temp->info['warning'] as $newerror) { - if ($track_info['dataformat'] == 'mp3' && preg_match('/^Probable truncated file: expecting \d+ bytes of audio data, only found \d+ \(short by \d+ bytes\)$/', $newerror)) { - // LAME/Xing header is probably set, but audio data is chunked into Matroska file and near-impossible to verify if audio stream is complete, so ignore useless warning - continue; - } - $this->getid3->warning($class.'() says: ['.$newerror.']'); - } - } - unset($getid3_temp, $getid3_audio); - break; - - case 'A_AAC': - case 'A_AAC/MPEG2/LC': - case 'A_AAC/MPEG4/LC': - case 'A_AAC/MPEG4/LC/SBR': - $this->getid3->warning($trackarray['CodecID'].' audio data contains no header, audio/video bitrates can\'t be calculated'); - break; - - case 'A_VORBIS': - if (!isset($trackarray['CodecPrivate'])) { - $this->getid3->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because CodecPrivate data not set'); - break; - } - $vorbis_offset = strpos($trackarray['CodecPrivate'], 'vorbis', 1); - if ($vorbis_offset === false) { - $this->getid3->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because CodecPrivate data does not contain "vorbis" keyword'); - break; - } - $vorbis_offset -= 1; - - if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ogg.php', __FILE__, false)) { - $this->getid3->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio.ogg.php"'); - } - - // create temp instance - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - - // analyze - $getid3_ogg = new getid3_ogg($getid3_temp); - $oggpageinfo['page_seqno'] = 0; - $getid3_ogg->ParseVorbisPageHeader($trackarray['CodecPrivate'], $vorbis_offset, $oggpageinfo); - if (!empty($getid3_temp->info['ogg'])) { - $info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $getid3_temp->info['ogg']; - if (isset($getid3_temp->info['audio']) && is_array($getid3_temp->info['audio'])) { - foreach ($getid3_temp->info['audio'] as $key => $value) { - $track_info[$key] = $value; - } - } - } - - // copy errors and warnings - if (!empty($getid3_temp->info['error'])) { - foreach ($getid3_temp->info['error'] as $newerror) { - $this->getid3->warning('getid3_ogg() says: ['.$newerror.']'); - } - } - if (!empty($getid3_temp->info['warning'])) { - foreach ($getid3_temp->info['warning'] as $newerror) { - $this->getid3->warning('getid3_ogg() says: ['.$newerror.']'); - } - } - - if (!empty($getid3_temp->info['ogg']['bitrate_nominal'])) { - $track_info['bitrate'] = $getid3_temp->info['ogg']['bitrate_nominal']; - } - unset($getid3_temp, $getid3_ogg, $oggpageinfo, $vorbis_offset); - break; - - case 'A_MS/ACM': - if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, false)) { - $this->getid3->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio-video.riff.php"'); - break; - } - - $parsed = getid3_riff::RIFFparseWAVEFORMATex($trackarray['CodecPrivate']); - foreach ($parsed as $key => $value) { - if ($key != 'raw') { - $track_info[$key] = $value; - } - } - $info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $parsed; - break; - - default: - $this->getid3->warning('Unhandled audio type "'.(isset($trackarray['CodecID']) ? $trackarray['CodecID'] : '').'"'); - } - - $info['audio']['streams'][] = $track_info; - break; - } - } - - if (!empty($info['video']['streams'])) { - $info['video'] = self::getDefaultStreamInfo($info['video']['streams']); - } - if (!empty($info['audio']['streams'])) { - $info['audio'] = self::getDefaultStreamInfo($info['audio']['streams']); - } - } - - // determine mime type - if (!empty($info['video']['streams'])) { - $info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'video/webm' : 'video/x-matroska'); - } elseif (!empty($info['audio']['streams'])) { - $info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'audio/webm' : 'audio/x-matroska'); - } elseif (isset($info['mime_type'])) { - unset($info['mime_type']); - } - - return true; - } - - -/////////////////////////////////////// - - private function parseEBML(&$info) - { - // http://www.matroska.org/technical/specs/index.html#EBMLBasics - $this->current_offset = $info['avdataoffset']; - - while ($this->getEBMLelement($top_element, $info['avdataend'])) { - switch ($top_element['id']) { - - case EBML_ID_EBML: - $info['fileformat'] = 'matroska'; - $info['matroska']['header']['offset'] = $top_element['offset']; - $info['matroska']['header']['length'] = $top_element['length']; - - while ($this->getEBMLelement($element_data, $top_element['end'], true)) { - switch ($element_data['id']) { - - case EBML_ID_EBMLVERSION: - case EBML_ID_EBMLREADVERSION: - case EBML_ID_EBMLMAXIDLENGTH: - case EBML_ID_EBMLMAXSIZELENGTH: - case EBML_ID_DOCTYPEVERSION: - case EBML_ID_DOCTYPEREADVERSION: - $element_data['data'] = getid3_lib::BigEndian2Int($element_data['data']); - break; - - case EBML_ID_DOCTYPE: - $element_data['data'] = getid3_lib::trimNullByte($element_data['data']); - $info['matroska']['doctype'] = $element_data['data']; - break; - - case EBML_ID_CRC32: // not useful, ignore - $this->current_offset = $element_data['end']; - unset($element_data); - break; - - default: - $this->unhandledElement('header', __LINE__, $element_data); - } - if (!empty($element_data)) { - unset($element_data['offset'], $element_data['end']); - $info['matroska']['header']['elements'][] = $element_data; - } - } - break; - - case EBML_ID_SEGMENT: - $info['matroska']['segment'][0]['offset'] = $top_element['offset']; - $info['matroska']['segment'][0]['length'] = $top_element['length']; - - while ($this->getEBMLelement($element_data, $top_element['end'])) { - if ($element_data['id'] != EBML_ID_CLUSTER || !self::$hide_clusters) { // collect clusters only if required - $info['matroska']['segments'][] = $element_data; - } - switch ($element_data['id']) { - - case EBML_ID_SEEKHEAD: // Contains the position of other level 1 elements. - - while ($this->getEBMLelement($seek_entry, $element_data['end'])) { - switch ($seek_entry['id']) { - - case EBML_ID_SEEK: // Contains a single seek entry to an EBML element - while ($this->getEBMLelement($sub_seek_entry, $seek_entry['end'], true)) { - - switch ($sub_seek_entry['id']) { - - case EBML_ID_SEEKID: - $seek_entry['target_id'] = self::EBML2Int($sub_seek_entry['data']); - $seek_entry['target_name'] = self::EBMLidName($seek_entry['target_id']); - break; - - case EBML_ID_SEEKPOSITION: - $seek_entry['target_offset'] = $element_data['offset'] + getid3_lib::BigEndian2Int($sub_seek_entry['data']); - break; - - default: - $this->unhandledElement('seekhead.seek', __LINE__, $sub_seek_entry); } - } - - if ($seek_entry['target_id'] != EBML_ID_CLUSTER || !self::$hide_clusters) { // collect clusters only if required - $info['matroska']['seek'][] = $seek_entry; - } - break; - - default: - $this->unhandledElement('seekhead', __LINE__, $seek_entry); - } - } - break; - - case EBML_ID_TRACKS: // A top-level block of information with many tracks described. - $info['matroska']['tracks'] = $element_data; - - while ($this->getEBMLelement($track_entry, $element_data['end'])) { - switch ($track_entry['id']) { - - case EBML_ID_TRACKENTRY: //subelements: Describes a track with all elements. - - while ($this->getEBMLelement($subelement, $track_entry['end'], array(EBML_ID_VIDEO, EBML_ID_AUDIO, EBML_ID_CONTENTENCODINGS))) { - switch ($subelement['id']) { - - case EBML_ID_TRACKNUMBER: - case EBML_ID_TRACKUID: - case EBML_ID_TRACKTYPE: - case EBML_ID_MINCACHE: - case EBML_ID_MAXCACHE: - case EBML_ID_MAXBLOCKADDITIONID: - case EBML_ID_DEFAULTDURATION: // nanoseconds per frame - $track_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']); - break; - - case EBML_ID_TRACKTIMECODESCALE: - $track_entry[$subelement['id_name']] = getid3_lib::BigEndian2Float($subelement['data']); - break; - - case EBML_ID_CODECID: - case EBML_ID_LANGUAGE: - case EBML_ID_NAME: - case EBML_ID_CODECNAME: - $track_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']); - break; - - case EBML_ID_CODECPRIVATE: - $track_entry[$subelement['id_name']] = $subelement['data']; - break; - - case EBML_ID_FLAGENABLED: - case EBML_ID_FLAGDEFAULT: - case EBML_ID_FLAGFORCED: - case EBML_ID_FLAGLACING: - case EBML_ID_CODECDECODEALL: - $track_entry[$subelement['id_name']] = (bool) getid3_lib::BigEndian2Int($subelement['data']); - break; - - case EBML_ID_VIDEO: - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) { - switch ($sub_subelement['id']) { - - case EBML_ID_PIXELWIDTH: - case EBML_ID_PIXELHEIGHT: - case EBML_ID_STEREOMODE: - case EBML_ID_PIXELCROPBOTTOM: - case EBML_ID_PIXELCROPTOP: - case EBML_ID_PIXELCROPLEFT: - case EBML_ID_PIXELCROPRIGHT: - case EBML_ID_DISPLAYWIDTH: - case EBML_ID_DISPLAYHEIGHT: - case EBML_ID_DISPLAYUNIT: - case EBML_ID_ASPECTRATIOTYPE: - $track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - case EBML_ID_FLAGINTERLACED: - $track_entry[$sub_subelement['id_name']] = (bool)getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - case EBML_ID_GAMMAVALUE: - $track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Float($sub_subelement['data']); - break; - - case EBML_ID_COLOURSPACE: - $track_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']); - break; - - default: - $this->unhandledElement('track.video', __LINE__, $sub_subelement); - } - } - break; - - case EBML_ID_AUDIO: - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) { - switch ($sub_subelement['id']) { - - case EBML_ID_CHANNELS: - case EBML_ID_BITDEPTH: - $track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - case EBML_ID_SAMPLINGFREQUENCY: - case EBML_ID_OUTPUTSAMPLINGFREQUENCY: - $track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Float($sub_subelement['data']); - break; - - case EBML_ID_CHANNELPOSITIONS: - $track_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']); - break; - - default: - $this->unhandledElement('track.audio', __LINE__, $sub_subelement); - } - } - break; - - case EBML_ID_CONTENTENCODINGS: - - while ($this->getEBMLelement($sub_subelement, $subelement['end'])) { - switch ($sub_subelement['id']) { - - case EBML_ID_CONTENTENCODING: - - while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], array(EBML_ID_CONTENTCOMPRESSION, EBML_ID_CONTENTENCRYPTION))) { - switch ($sub_sub_subelement['id']) { - - case EBML_ID_CONTENTENCODINGORDER: - case EBML_ID_CONTENTENCODINGSCOPE: - case EBML_ID_CONTENTENCODINGTYPE: - $track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']); - break; - - case EBML_ID_CONTENTCOMPRESSION: - - while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) { - switch ($sub_sub_sub_subelement['id']) { - - case EBML_ID_CONTENTCOMPALGO: - $track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']); - break; - - case EBML_ID_CONTENTCOMPSETTINGS: - $track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data']; - break; - - default: - $this->unhandledElement('track.contentencodings.contentencoding.contentcompression', __LINE__, $sub_sub_sub_subelement); - } - } - break; - - case EBML_ID_CONTENTENCRYPTION: - - while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) { - switch ($sub_sub_sub_subelement['id']) { - - case EBML_ID_CONTENTENCALGO: - case EBML_ID_CONTENTSIGALGO: - case EBML_ID_CONTENTSIGHASHALGO: - $track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']); - break; - - case EBML_ID_CONTENTENCKEYID: - case EBML_ID_CONTENTSIGNATURE: - case EBML_ID_CONTENTSIGKEYID: - $track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data']; - break; - - default: - $this->unhandledElement('track.contentencodings.contentencoding.contentcompression', __LINE__, $sub_sub_sub_subelement); - } - } - break; - - default: - $this->unhandledElement('track.contentencodings.contentencoding', __LINE__, $sub_sub_subelement); - } - } - break; - - default: - $this->unhandledElement('track.contentencodings', __LINE__, $sub_subelement); - } - } - break; - - default: - $this->unhandledElement('track', __LINE__, $subelement); - } - } - - $info['matroska']['tracks']['tracks'][] = $track_entry; - break; - - default: - $this->unhandledElement('tracks', __LINE__, $track_entry); - } - } - break; - - case EBML_ID_INFO: // Contains miscellaneous general information and statistics on the file. - $info_entry = array(); - - while ($this->getEBMLelement($subelement, $element_data['end'], true)) { - switch ($subelement['id']) { - - case EBML_ID_CHAPTERTRANSLATEEDITIONUID: - case EBML_ID_CHAPTERTRANSLATECODEC: - case EBML_ID_TIMECODESCALE: - $info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']); - break; - - case EBML_ID_DURATION: - $info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Float($subelement['data']); - break; - - case EBML_ID_DATEUTC: - $info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']); - $info_entry[$subelement['id_name'].'_unix'] = self::EBMLdate2unix($info_entry[$subelement['id_name']]); - break; - - case EBML_ID_SEGMENTUID: - case EBML_ID_PREVUID: - case EBML_ID_NEXTUID: - case EBML_ID_SEGMENTFAMILY: - case EBML_ID_CHAPTERTRANSLATEID: - $info_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']); - break; - - case EBML_ID_SEGMENTFILENAME: - case EBML_ID_PREVFILENAME: - case EBML_ID_NEXTFILENAME: - case EBML_ID_TITLE: - case EBML_ID_MUXINGAPP: - case EBML_ID_WRITINGAPP: - $info_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']); - $info['matroska']['comments'][strtolower($subelement['id_name'])][] = $info_entry[$subelement['id_name']]; - break; - - default: - $this->unhandledElement('info', __LINE__, $subelement); - } - } - $info['matroska']['info'][] = $info_entry; - break; - - case EBML_ID_CUES: // A top-level element to speed seeking access. All entries are local to the segment. Should be mandatory for non "live" streams. - if (self::$hide_clusters) { // do not parse cues if hide clusters is "ON" till they point to clusters anyway - $this->current_offset = $element_data['end']; - break; - } - $cues_entry = array(); - - while ($this->getEBMLelement($subelement, $element_data['end'])) { - switch ($subelement['id']) { - - case EBML_ID_CUEPOINT: - $cuepoint_entry = array(); - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_CUETRACKPOSITIONS))) { - switch ($sub_subelement['id']) { - - case EBML_ID_CUETRACKPOSITIONS: - $cuetrackpositions_entry = array(); - - while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) { - switch ($sub_sub_subelement['id']) { - - case EBML_ID_CUETRACK: - case EBML_ID_CUECLUSTERPOSITION: - case EBML_ID_CUEBLOCKNUMBER: - case EBML_ID_CUECODECSTATE: - $cuetrackpositions_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']); - break; - - default: - $this->unhandledElement('cues.cuepoint.cuetrackpositions', __LINE__, $sub_sub_subelement); - } - } - $cuepoint_entry[$sub_subelement['id_name']][] = $cuetrackpositions_entry; - break; - - case EBML_ID_CUETIME: - $cuepoint_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - default: - $this->unhandledElement('cues.cuepoint', __LINE__, $sub_subelement); - } - } - $cues_entry[] = $cuepoint_entry; - break; - - default: - $this->unhandledElement('cues', __LINE__, $subelement); - } - } - $info['matroska']['cues'] = $cues_entry; - break; - - case EBML_ID_TAGS: // Element containing elements specific to Tracks/Chapters. - $tags_entry = array(); - - while ($this->getEBMLelement($subelement, $element_data['end'], false)) { - switch ($subelement['id']) { - - case EBML_ID_TAG: - $tag_entry = array(); - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], false)) { - switch ($sub_subelement['id']) { - - case EBML_ID_TARGETS: - $targets_entry = array(); - - while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) { - switch ($sub_sub_subelement['id']) { - - case EBML_ID_TARGETTYPEVALUE: - $targets_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']); - $targets_entry[strtolower($sub_sub_subelement['id_name']).'_long'] = self::MatroskaTargetTypeValue($targets_entry[$sub_sub_subelement['id_name']]); - break; - - case EBML_ID_TARGETTYPE: - $targets_entry[$sub_sub_subelement['id_name']] = $sub_sub_subelement['data']; - break; - - case EBML_ID_TAGTRACKUID: - case EBML_ID_TAGEDITIONUID: - case EBML_ID_TAGCHAPTERUID: - case EBML_ID_TAGATTACHMENTUID: - $targets_entry[$sub_sub_subelement['id_name']][] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']); - break; - - default: - $this->unhandledElement('tags.tag.targets', __LINE__, $sub_sub_subelement); - } - } - $tag_entry[$sub_subelement['id_name']] = $targets_entry; - break; - - case EBML_ID_SIMPLETAG: - $tag_entry[$sub_subelement['id_name']][] = $this->HandleEMBLSimpleTag($sub_subelement['end']); - break; - - default: - $this->unhandledElement('tags.tag', __LINE__, $sub_subelement); - } - } - $tags_entry[] = $tag_entry; - break; - - default: - $this->unhandledElement('tags', __LINE__, $subelement); - } - } - $info['matroska']['tags'] = $tags_entry; - break; - - case EBML_ID_ATTACHMENTS: // Contain attached files. - - while ($this->getEBMLelement($subelement, $element_data['end'])) { - switch ($subelement['id']) { - - case EBML_ID_ATTACHEDFILE: - $attachedfile_entry = array(); - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_FILEDATA))) { - switch ($sub_subelement['id']) { - - case EBML_ID_FILEDESCRIPTION: - case EBML_ID_FILENAME: - case EBML_ID_FILEMIMETYPE: - $attachedfile_entry[$sub_subelement['id_name']] = $sub_subelement['data']; - break; - - case EBML_ID_FILEDATA: - $attachedfile_entry['data_offset'] = $this->current_offset; - $attachedfile_entry['data_length'] = $sub_subelement['length']; - - $this->getid3->saveAttachment( - $attachedfile_entry[$sub_subelement['id_name']], - $attachedfile_entry['FileName'], - $attachedfile_entry['data_offset'], - $attachedfile_entry['data_length']); - - if (@$attachedfile_entry[$sub_subelement['id_name']] && is_file($attachedfile_entry[$sub_subelement['id_name']])) { - $attachedfile_entry[$sub_subelement['id_name'].'_filename'] = $attachedfile_entry[$sub_subelement['id_name']]; - unset($attachedfile_entry[$sub_subelement['id_name']]); - } - - $this->current_offset = $sub_subelement['end']; - break; - - case EBML_ID_FILEUID: - $attachedfile_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - default: - $this->unhandledElement('attachments.attachedfile', __LINE__, $sub_subelement); - } - } - if (!empty($attachedfile_entry['FileData']) && !empty($attachedfile_entry['FileMimeType']) && preg_match('#^image/#i', $attachedfile_entry['FileMimeType'])) { - if ($this->getid3->option_save_attachments === getID3::ATTACHMENTS_INLINE) { - $attachedfile_entry['data'] = $attachedfile_entry['FileData']; - $attachedfile_entry['image_mime'] = $attachedfile_entry['FileMimeType']; - $info['matroska']['comments']['picture'][] = array('data' => $attachedfile_entry['data'], 'image_mime' => $attachedfile_entry['image_mime'], 'filename' => (!empty($attachedfile_entry['FileName']) ? $attachedfile_entry['FileName'] : '')); - unset($attachedfile_entry['FileData'], $attachedfile_entry['FileMimeType']); - } - } - if (!empty($attachedfile_entry['image_mime']) && preg_match('#^image/#i', $attachedfile_entry['image_mime'])) { - // don't add a second copy of attached images, which are grouped under the standard location [comments][picture] - } else { - $info['matroska']['attachments'][] = $attachedfile_entry; - } - break; - - default: - $this->unhandledElement('attachments', __LINE__, $subelement); - } - } - break; - - case EBML_ID_CHAPTERS: - - while ($this->getEBMLelement($subelement, $element_data['end'])) { - switch ($subelement['id']) { - - case EBML_ID_EDITIONENTRY: - $editionentry_entry = array(); - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_CHAPTERATOM))) { - switch ($sub_subelement['id']) { - - case EBML_ID_EDITIONUID: - $editionentry_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - case EBML_ID_EDITIONFLAGHIDDEN: - case EBML_ID_EDITIONFLAGDEFAULT: - case EBML_ID_EDITIONFLAGORDERED: - $editionentry_entry[$sub_subelement['id_name']] = (bool)getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - case EBML_ID_CHAPTERATOM: - $chapteratom_entry = array(); - - while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], array(EBML_ID_CHAPTERTRACK, EBML_ID_CHAPTERDISPLAY))) { - switch ($sub_sub_subelement['id']) { - - case EBML_ID_CHAPTERSEGMENTUID: - case EBML_ID_CHAPTERSEGMENTEDITIONUID: - $chapteratom_entry[$sub_sub_subelement['id_name']] = $sub_sub_subelement['data']; - break; - - case EBML_ID_CHAPTERFLAGENABLED: - case EBML_ID_CHAPTERFLAGHIDDEN: - $chapteratom_entry[$sub_sub_subelement['id_name']] = (bool)getid3_lib::BigEndian2Int($sub_sub_subelement['data']); - break; - - case EBML_ID_CHAPTERUID: - case EBML_ID_CHAPTERTIMESTART: - case EBML_ID_CHAPTERTIMEEND: - $chapteratom_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']); - break; - - case EBML_ID_CHAPTERTRACK: - $chaptertrack_entry = array(); - - while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) { - switch ($sub_sub_sub_subelement['id']) { - - case EBML_ID_CHAPTERTRACKNUMBER: - $chaptertrack_entry[$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']); - break; - - default: - $this->unhandledElement('chapters.editionentry.chapteratom.chaptertrack', __LINE__, $sub_sub_sub_subelement); - } - } - $chapteratom_entry[$sub_sub_subelement['id_name']][] = $chaptertrack_entry; - break; - - case EBML_ID_CHAPTERDISPLAY: - $chapterdisplay_entry = array(); - - while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) { - switch ($sub_sub_sub_subelement['id']) { - - case EBML_ID_CHAPSTRING: - case EBML_ID_CHAPLANGUAGE: - case EBML_ID_CHAPCOUNTRY: - $chapterdisplay_entry[$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data']; - break; - - default: - $this->unhandledElement('chapters.editionentry.chapteratom.chapterdisplay', __LINE__, $sub_sub_sub_subelement); - } - } - $chapteratom_entry[$sub_sub_subelement['id_name']][] = $chapterdisplay_entry; - break; - - default: - $this->unhandledElement('chapters.editionentry.chapteratom', __LINE__, $sub_sub_subelement); - } - } - $editionentry_entry[$sub_subelement['id_name']][] = $chapteratom_entry; - break; - - default: - $this->unhandledElement('chapters.editionentry', __LINE__, $sub_subelement); - } - } - $info['matroska']['chapters'][] = $editionentry_entry; - break; - - default: - $this->unhandledElement('chapters', __LINE__, $subelement); - } - } - break; - - case EBML_ID_CLUSTER: // The lower level element containing the (monolithic) Block structure. - $cluster_entry = array(); - - while ($this->getEBMLelement($subelement, $element_data['end'], array(EBML_ID_CLUSTERSILENTTRACKS, EBML_ID_CLUSTERBLOCKGROUP, EBML_ID_CLUSTERSIMPLEBLOCK))) { - switch ($subelement['id']) { - - case EBML_ID_CLUSTERTIMECODE: - case EBML_ID_CLUSTERPOSITION: - case EBML_ID_CLUSTERPREVSIZE: - $cluster_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']); - break; - - case EBML_ID_CLUSTERSILENTTRACKS: - $cluster_silent_tracks = array(); - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) { - switch ($sub_subelement['id']) { - - case EBML_ID_CLUSTERSILENTTRACKNUMBER: - $cluster_silent_tracks[] = getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - default: - $this->unhandledElement('cluster.silenttracks', __LINE__, $sub_subelement); - } - } - $cluster_entry[$subelement['id_name']][] = $cluster_silent_tracks; - break; - - case EBML_ID_CLUSTERBLOCKGROUP: - $cluster_block_group = array('offset' => $this->current_offset); - - while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_CLUSTERBLOCK))) { - switch ($sub_subelement['id']) { - - case EBML_ID_CLUSTERBLOCK: - $cluster_block_group[$sub_subelement['id_name']] = $this->HandleEMBLClusterBlock($sub_subelement, EBML_ID_CLUSTERBLOCK, $info); - break; - - case EBML_ID_CLUSTERREFERENCEPRIORITY: // unsigned-int - case EBML_ID_CLUSTERBLOCKDURATION: // unsigned-int - $cluster_block_group[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']); - break; - - case EBML_ID_CLUSTERREFERENCEBLOCK: // signed-int - $cluster_block_group[$sub_subelement['id_name']][] = getid3_lib::BigEndian2Int($sub_subelement['data'], false, true); - break; - - case EBML_ID_CLUSTERCODECSTATE: - $cluster_block_group[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']); - break; - - default: - $this->unhandledElement('clusters.blockgroup', __LINE__, $sub_subelement); - } - } - $cluster_entry[$subelement['id_name']][] = $cluster_block_group; - break; - - case EBML_ID_CLUSTERSIMPLEBLOCK: - $cluster_entry[$subelement['id_name']][] = $this->HandleEMBLClusterBlock($subelement, EBML_ID_CLUSTERSIMPLEBLOCK, $info); - break; - - default: - $this->unhandledElement('cluster', __LINE__, $subelement); - } - $this->current_offset = $subelement['end']; - } - if (!self::$hide_clusters) { - $info['matroska']['cluster'][] = $cluster_entry; - } - - // check to see if all the data we need exists already, if so, break out of the loop - if (!self::$parse_whole_file) { - if (isset($info['matroska']['info']) && is_array($info['matroska']['info'])) { - if (isset($info['matroska']['tracks']['tracks']) && is_array($info['matroska']['tracks']['tracks'])) { - return; - } - } - } - break; - - default: - $this->unhandledElement('segment', __LINE__, $element_data); - } - } - break; - - default: - $this->unhandledElement('root', __LINE__, $top_element); - } - } - } - - private function EnsureBufferHasEnoughData($min_data = 1024) - { - if (($this->current_offset - $this->EBMLbuffer_offset) >= ($this->EBMLbuffer_length - $min_data)) { - - if (!getid3_lib::intValueSupported($this->current_offset + $this->getid3->fread_buffer_size())) { - $this->getid3->info['error'][] = 'EBML parser: cannot read past '.$this->current_offset; - return false; - } - - fseek($this->getid3->fp, $this->current_offset, SEEK_SET); - $this->EBMLbuffer_offset = $this->current_offset; - $this->EBMLbuffer = fread($this->getid3->fp, max($min_data, $this->getid3->fread_buffer_size())); - $this->EBMLbuffer_length = strlen($this->EBMLbuffer); - - if ($this->EBMLbuffer_length == 0 && feof($this->getid3->fp)) { - $this->getid3->info['error'][] = 'EBML parser: ran out of file at offset '.$this->current_offset; - return false; - } - } - - return true; - } - - private function readEBMLint() - { - $actual_offset = $this->current_offset - $this->EBMLbuffer_offset; - - // get length of integer - $first_byte_int = ord($this->EBMLbuffer[$actual_offset]); - if (0x80 & $first_byte_int) { - $length = 1; - } elseif (0x40 & $first_byte_int) { - $length = 2; - } elseif (0x20 & $first_byte_int) { - $length = 3; - } elseif (0x10 & $first_byte_int) { - $length = 4; - } elseif (0x08 & $first_byte_int) { - $length = 5; - } elseif (0x04 & $first_byte_int) { - $length = 6; - } elseif (0x02 & $first_byte_int) { - $length = 7; - } elseif (0x01 & $first_byte_int) { - $length = 8; - } else { - throw new Exception('invalid EBML integer (leading 0x00) at '.$this->current_offset); - } - - // read - $int_value = self::EBML2Int(substr($this->EBMLbuffer, $actual_offset, $length)); - $this->current_offset += $length; - - return $int_value; - } - - private function readEBMLelementData($length) - { - $data = substr($this->EBMLbuffer, $this->current_offset - $this->EBMLbuffer_offset, $length); - $this->current_offset += $length; - - return $data; - } - - private function getEBMLelement(&$element, $parent_end, $get_data = false) - { - if ($this->current_offset >= $parent_end) { - return false; - } - - if (!$this->EnsureBufferHasEnoughData()) { - $this->current_offset = PHP_INT_MAX; // do not exit parser right now, allow to finish current loop to gather maximum information - return false; - } - - $element = array(); - - // set offset - $element['offset'] = $this->current_offset; - - // get ID - $element['id'] = $this->readEBMLint(); - - // get name - $element['id_name'] = self::EBMLidName($element['id']); - - // get length - $element['length'] = $this->readEBMLint(); - - // get end offset - $element['end'] = $this->current_offset + $element['length']; - - // get raw data - $dont_parse = (in_array($element['id'], $this->unuseful_elements) || $element['id_name'] == dechex($element['id'])); - if (($get_data === true || (is_array($get_data) && !in_array($element['id'], $get_data))) && !$dont_parse) { - $element['data'] = $this->readEBMLelementData($element['length'], $element); - } - - return true; - } - - private function unhandledElement($type, $line, $element) - { - // warn only about unknown and missed elements, not about unuseful - if (!in_array($element['id'], $this->unuseful_elements)) { - $this->getid3->warning('Unhandled '.$type.' element ['.basename(__FILE__).':'.$line.'] ('.$element['id'].'::'.$element['id_name'].' ['.$element['length'].' bytes]) at '.$element['offset']); - } - - // increase offset for unparsed elements - if (!isset($element['data'])) { - $this->current_offset = $element['end']; - } - } - - private function ExtractCommentsSimpleTag($SimpleTagArray) - { - if (!empty($SimpleTagArray['SimpleTag'])) { - foreach ($SimpleTagArray['SimpleTag'] as $SimpleTagKey => $SimpleTagData) { - if (!empty($SimpleTagData['TagName']) && !empty($SimpleTagData['TagString'])) { - $this->getid3->info['matroska']['comments'][strtolower($SimpleTagData['TagName'])][] = $SimpleTagData['TagString']; - } - if (!empty($SimpleTagData['SimpleTag'])) { - $this->ExtractCommentsSimpleTag($SimpleTagData); - } - } - } - - return true; - } - - private function HandleEMBLSimpleTag($parent_end) - { - $simpletag_entry = array(); - - while ($this->getEBMLelement($element, $parent_end, array(EBML_ID_SIMPLETAG))) { - switch ($element['id']) { - - case EBML_ID_TAGNAME: - case EBML_ID_TAGLANGUAGE: - case EBML_ID_TAGSTRING: - case EBML_ID_TAGBINARY: - $simpletag_entry[$element['id_name']] = $element['data']; - break; - - case EBML_ID_SIMPLETAG: - $simpletag_entry[$element['id_name']][] = $this->HandleEMBLSimpleTag($element['end']); - break; - - case EBML_ID_TAGDEFAULT: - $simpletag_entry[$element['id_name']] = (bool)getid3_lib::BigEndian2Int($element['data']); - break; - - default: - $this->unhandledElement('tag.simpletag', __LINE__, $element); - } - } - - return $simpletag_entry; - } - - private function HandleEMBLClusterBlock($element, $block_type, &$info) - { - // http://www.matroska.org/technical/specs/index.html#block_structure - // http://www.matroska.org/technical/specs/index.html#simpleblock_structure - - $cluster_block_data = array(); - $cluster_block_data['tracknumber'] = $this->readEBMLint(); - $cluster_block_data['timecode'] = getid3_lib::BigEndian2Int($this->readEBMLelementData(2)); - $cluster_block_data['flags_raw'] = getid3_lib::BigEndian2Int($this->readEBMLelementData(1)); - - if ($block_type == EBML_ID_CLUSTERSIMPLEBLOCK) { - $cluster_block_data['flags']['keyframe'] = (($cluster_block_data['flags_raw'] & 0x80) >> 7); - //$cluster_block_data['flags']['reserved1'] = (($cluster_block_data['flags_raw'] & 0x70) >> 4); - } - else { - //$cluster_block_data['flags']['reserved1'] = (($cluster_block_data['flags_raw'] & 0xF0) >> 4); - } - $cluster_block_data['flags']['invisible'] = (bool)(($cluster_block_data['flags_raw'] & 0x08) >> 3); - $cluster_block_data['flags']['lacing'] = (($cluster_block_data['flags_raw'] & 0x06) >> 1); // 00=no lacing; 01=Xiph lacing; 11=EBML lacing; 10=fixed-size lacing - if ($block_type == EBML_ID_CLUSTERSIMPLEBLOCK) { - $cluster_block_data['flags']['discardable'] = (($cluster_block_data['flags_raw'] & 0x01)); - } - else { - //$cluster_block_data['flags']['reserved2'] = (($cluster_block_data['flags_raw'] & 0x01) >> 0); - } - $cluster_block_data['flags']['lacing_type'] = self::MatroskaBlockLacingType($cluster_block_data['flags']['lacing']); - - // Lace (when lacing bit is set) - if ($cluster_block_data['flags']['lacing'] > 0) { - $cluster_block_data['lace_frames'] = getid3_lib::BigEndian2Int($this->readEBMLelementData(1)) + 1; // Number of frames in the lace-1 (uint8) - if ($cluster_block_data['flags']['lacing'] != 0x02) { // Lace-coded size of each frame of the lace, except for the last one (multiple uint8). *This is not used with Fixed-size lacing as it is calculated automatically from (total size of lace) / (number of frames in lace). - for ($i = 1; $i < $cluster_block_data['lace_frames']; $i ++) { - if ($cluster_block_data['flags']['lacing'] == 0x03) { // EBML lacing - // TODO: read size correctly, calc size for the last frame. For now offsets are deteminded OK with readEBMLint() and that's the most important thing. - $cluster_block_data['lace_frames_size'][$i] = $this->readEBMLint(); - } - else { // Xiph lacing - $cluster_block_data['lace_frames_size'][$i] = getid3_lib::BigEndian2Int($this->readEBMLelementData(1)); - } - } - } - } - - if (!isset($info['matroska']['track_data_offsets'][$cluster_block_data['tracknumber']])) { - $info['matroska']['track_data_offsets'][$cluster_block_data['tracknumber']]['offset'] = $this->current_offset; - $info['matroska']['track_data_offsets'][$cluster_block_data['tracknumber']]['length'] = $element['end'] - $this->current_offset; - } - - // set offset manually - $this->current_offset = $element['end']; - - return $cluster_block_data; - } - - private static function EBML2Int($EBMLstring) { - // http://matroska.org/specs/ - - // Element ID coded with an UTF-8 like system: - // 1xxx xxxx - Class A IDs (2^7 -2 possible values) (base 0x8X) - // 01xx xxxx xxxx xxxx - Class B IDs (2^14-2 possible values) (base 0x4X 0xXX) - // 001x xxxx xxxx xxxx xxxx xxxx - Class C IDs (2^21-2 possible values) (base 0x2X 0xXX 0xXX) - // 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx - Class D IDs (2^28-2 possible values) (base 0x1X 0xXX 0xXX 0xXX) - // Values with all x at 0 and 1 are reserved (hence the -2). - - // Data size, in octets, is also coded with an UTF-8 like system : - // 1xxx xxxx - value 0 to 2^7-2 - // 01xx xxxx xxxx xxxx - value 0 to 2^14-2 - // 001x xxxx xxxx xxxx xxxx xxxx - value 0 to 2^21-2 - // 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^28-2 - // 0000 1xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^35-2 - // 0000 01xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^42-2 - // 0000 001x xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^49-2 - // 0000 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^56-2 - - $first_byte_int = ord($EBMLstring[0]); - if (0x80 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x7F); - } elseif (0x40 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x3F); - } elseif (0x20 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x1F); - } elseif (0x10 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x0F); - } elseif (0x08 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x07); - } elseif (0x04 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x03); - } elseif (0x02 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x01); - } elseif (0x01 & $first_byte_int) { - $EBMLstring[0] = chr($first_byte_int & 0x00); - } - - return getid3_lib::BigEndian2Int($EBMLstring); - } - - private static function EBMLdate2unix($EBMLdatestamp) { - // Date - signed 8 octets integer in nanoseconds with 0 indicating the precise beginning of the millennium (at 2001-01-01T00:00:00,000000000 UTC) - // 978307200 == mktime(0, 0, 0, 1, 1, 2001) == January 1, 2001 12:00:00am UTC - return round(($EBMLdatestamp / 1000000000) + 978307200); - } - - public static function MatroskaTargetTypeValue($target_type) { - // http://www.matroska.org/technical/specs/tagging/index.html - static $MatroskaTargetTypeValue = array(); - if (empty($MatroskaTargetTypeValue)) { - $MatroskaTargetTypeValue[10] = 'A: ~ V:shot'; // the lowest hierarchy found in music or movies - $MatroskaTargetTypeValue[20] = 'A:subtrack/part/movement ~ V:scene'; // corresponds to parts of a track for audio (like a movement) - $MatroskaTargetTypeValue[30] = 'A:track/song ~ V:chapter'; // the common parts of an album or a movie - $MatroskaTargetTypeValue[40] = 'A:part/session ~ V:part/session'; // when an album or episode has different logical parts - $MatroskaTargetTypeValue[50] = 'A:album/opera/concert ~ V:movie/episode/concert'; // the most common grouping level of music and video (equals to an episode for TV series) - $MatroskaTargetTypeValue[60] = 'A:edition/issue/volume/opus ~ V:season/sequel/volume'; // a list of lower levels grouped together - $MatroskaTargetTypeValue[70] = 'A:collection ~ V:collection'; // the high hierarchy consisting of many different lower items - } - return (isset($MatroskaTargetTypeValue[$target_type]) ? $MatroskaTargetTypeValue[$target_type] : $target_type); - } - - public static function MatroskaBlockLacingType($lacingtype) { - // http://matroska.org/technical/specs/index.html#block_structure - static $MatroskaBlockLacingType = array(); - if (empty($MatroskaBlockLacingType)) { - $MatroskaBlockLacingType[0x00] = 'no lacing'; - $MatroskaBlockLacingType[0x01] = 'Xiph lacing'; - $MatroskaBlockLacingType[0x02] = 'fixed-size lacing'; - $MatroskaBlockLacingType[0x03] = 'EBML lacing'; - } - return (isset($MatroskaBlockLacingType[$lacingtype]) ? $MatroskaBlockLacingType[$lacingtype] : $lacingtype); - } - - public static function MatroskaCodecIDtoCommonName($codecid) { - // http://www.matroska.org/technical/specs/codecid/index.html - static $MatroskaCodecIDlist = array(); - if (empty($MatroskaCodecIDlist)) { - $MatroskaCodecIDlist['A_AAC'] = 'aac'; - $MatroskaCodecIDlist['A_AAC/MPEG2/LC'] = 'aac'; - $MatroskaCodecIDlist['A_AC3'] = 'ac3'; - $MatroskaCodecIDlist['A_DTS'] = 'dts'; - $MatroskaCodecIDlist['A_FLAC'] = 'flac'; - $MatroskaCodecIDlist['A_MPEG/L1'] = 'mp1'; - $MatroskaCodecIDlist['A_MPEG/L2'] = 'mp2'; - $MatroskaCodecIDlist['A_MPEG/L3'] = 'mp3'; - $MatroskaCodecIDlist['A_PCM/INT/LIT'] = 'pcm'; // PCM Integer Little Endian - $MatroskaCodecIDlist['A_PCM/INT/BIG'] = 'pcm'; // PCM Integer Big Endian - $MatroskaCodecIDlist['A_QUICKTIME/QDMC'] = 'quicktime'; // Quicktime: QDesign Music - $MatroskaCodecIDlist['A_QUICKTIME/QDM2'] = 'quicktime'; // Quicktime: QDesign Music v2 - $MatroskaCodecIDlist['A_VORBIS'] = 'vorbis'; - $MatroskaCodecIDlist['V_MPEG1'] = 'mpeg'; - $MatroskaCodecIDlist['V_THEORA'] = 'theora'; - $MatroskaCodecIDlist['V_REAL/RV40'] = 'real'; - $MatroskaCodecIDlist['V_REAL/RV10'] = 'real'; - $MatroskaCodecIDlist['V_REAL/RV20'] = 'real'; - $MatroskaCodecIDlist['V_REAL/RV30'] = 'real'; - $MatroskaCodecIDlist['V_QUICKTIME'] = 'quicktime'; // Quicktime - $MatroskaCodecIDlist['V_MPEG4/ISO/AP'] = 'mpeg4'; - $MatroskaCodecIDlist['V_MPEG4/ISO/ASP'] = 'mpeg4'; - $MatroskaCodecIDlist['V_MPEG4/ISO/AVC'] = 'h264'; - $MatroskaCodecIDlist['V_MPEG4/ISO/SP'] = 'mpeg4'; - $MatroskaCodecIDlist['V_VP8'] = 'vp8'; - $MatroskaCodecIDlist['V_MS/VFW/FOURCC'] = 'riff'; - $MatroskaCodecIDlist['A_MS/ACM'] = 'riff'; - } - return (isset($MatroskaCodecIDlist[$codecid]) ? $MatroskaCodecIDlist[$codecid] : $codecid); - } - - private static function EBMLidName($value) { - static $EBMLidList = array(); - if (empty($EBMLidList)) { - $EBMLidList[EBML_ID_ASPECTRATIOTYPE] = 'AspectRatioType'; - $EBMLidList[EBML_ID_ATTACHEDFILE] = 'AttachedFile'; - $EBMLidList[EBML_ID_ATTACHMENTLINK] = 'AttachmentLink'; - $EBMLidList[EBML_ID_ATTACHMENTS] = 'Attachments'; - $EBMLidList[EBML_ID_AUDIO] = 'Audio'; - $EBMLidList[EBML_ID_BITDEPTH] = 'BitDepth'; - $EBMLidList[EBML_ID_CHANNELPOSITIONS] = 'ChannelPositions'; - $EBMLidList[EBML_ID_CHANNELS] = 'Channels'; - $EBMLidList[EBML_ID_CHAPCOUNTRY] = 'ChapCountry'; - $EBMLidList[EBML_ID_CHAPLANGUAGE] = 'ChapLanguage'; - $EBMLidList[EBML_ID_CHAPPROCESS] = 'ChapProcess'; - $EBMLidList[EBML_ID_CHAPPROCESSCODECID] = 'ChapProcessCodecID'; - $EBMLidList[EBML_ID_CHAPPROCESSCOMMAND] = 'ChapProcessCommand'; - $EBMLidList[EBML_ID_CHAPPROCESSDATA] = 'ChapProcessData'; - $EBMLidList[EBML_ID_CHAPPROCESSPRIVATE] = 'ChapProcessPrivate'; - $EBMLidList[EBML_ID_CHAPPROCESSTIME] = 'ChapProcessTime'; - $EBMLidList[EBML_ID_CHAPSTRING] = 'ChapString'; - $EBMLidList[EBML_ID_CHAPTERATOM] = 'ChapterAtom'; - $EBMLidList[EBML_ID_CHAPTERDISPLAY] = 'ChapterDisplay'; - $EBMLidList[EBML_ID_CHAPTERFLAGENABLED] = 'ChapterFlagEnabled'; - $EBMLidList[EBML_ID_CHAPTERFLAGHIDDEN] = 'ChapterFlagHidden'; - $EBMLidList[EBML_ID_CHAPTERPHYSICALEQUIV] = 'ChapterPhysicalEquiv'; - $EBMLidList[EBML_ID_CHAPTERS] = 'Chapters'; - $EBMLidList[EBML_ID_CHAPTERSEGMENTEDITIONUID] = 'ChapterSegmentEditionUID'; - $EBMLidList[EBML_ID_CHAPTERSEGMENTUID] = 'ChapterSegmentUID'; - $EBMLidList[EBML_ID_CHAPTERTIMEEND] = 'ChapterTimeEnd'; - $EBMLidList[EBML_ID_CHAPTERTIMESTART] = 'ChapterTimeStart'; - $EBMLidList[EBML_ID_CHAPTERTRACK] = 'ChapterTrack'; - $EBMLidList[EBML_ID_CHAPTERTRACKNUMBER] = 'ChapterTrackNumber'; - $EBMLidList[EBML_ID_CHAPTERTRANSLATE] = 'ChapterTranslate'; - $EBMLidList[EBML_ID_CHAPTERTRANSLATECODEC] = 'ChapterTranslateCodec'; - $EBMLidList[EBML_ID_CHAPTERTRANSLATEEDITIONUID] = 'ChapterTranslateEditionUID'; - $EBMLidList[EBML_ID_CHAPTERTRANSLATEID] = 'ChapterTranslateID'; - $EBMLidList[EBML_ID_CHAPTERUID] = 'ChapterUID'; - $EBMLidList[EBML_ID_CLUSTER] = 'Cluster'; - $EBMLidList[EBML_ID_CLUSTERBLOCK] = 'ClusterBlock'; - $EBMLidList[EBML_ID_CLUSTERBLOCKADDID] = 'ClusterBlockAddID'; - $EBMLidList[EBML_ID_CLUSTERBLOCKADDITIONAL] = 'ClusterBlockAdditional'; - $EBMLidList[EBML_ID_CLUSTERBLOCKADDITIONID] = 'ClusterBlockAdditionID'; - $EBMLidList[EBML_ID_CLUSTERBLOCKADDITIONS] = 'ClusterBlockAdditions'; - $EBMLidList[EBML_ID_CLUSTERBLOCKDURATION] = 'ClusterBlockDuration'; - $EBMLidList[EBML_ID_CLUSTERBLOCKGROUP] = 'ClusterBlockGroup'; - $EBMLidList[EBML_ID_CLUSTERBLOCKMORE] = 'ClusterBlockMore'; - $EBMLidList[EBML_ID_CLUSTERBLOCKVIRTUAL] = 'ClusterBlockVirtual'; - $EBMLidList[EBML_ID_CLUSTERCODECSTATE] = 'ClusterCodecState'; - $EBMLidList[EBML_ID_CLUSTERDELAY] = 'ClusterDelay'; - $EBMLidList[EBML_ID_CLUSTERDURATION] = 'ClusterDuration'; - $EBMLidList[EBML_ID_CLUSTERENCRYPTEDBLOCK] = 'ClusterEncryptedBlock'; - $EBMLidList[EBML_ID_CLUSTERFRAMENUMBER] = 'ClusterFrameNumber'; - $EBMLidList[EBML_ID_CLUSTERLACENUMBER] = 'ClusterLaceNumber'; - $EBMLidList[EBML_ID_CLUSTERPOSITION] = 'ClusterPosition'; - $EBMLidList[EBML_ID_CLUSTERPREVSIZE] = 'ClusterPrevSize'; - $EBMLidList[EBML_ID_CLUSTERREFERENCEBLOCK] = 'ClusterReferenceBlock'; - $EBMLidList[EBML_ID_CLUSTERREFERENCEPRIORITY] = 'ClusterReferencePriority'; - $EBMLidList[EBML_ID_CLUSTERREFERENCEVIRTUAL] = 'ClusterReferenceVirtual'; - $EBMLidList[EBML_ID_CLUSTERSILENTTRACKNUMBER] = 'ClusterSilentTrackNumber'; - $EBMLidList[EBML_ID_CLUSTERSILENTTRACKS] = 'ClusterSilentTracks'; - $EBMLidList[EBML_ID_CLUSTERSIMPLEBLOCK] = 'ClusterSimpleBlock'; - $EBMLidList[EBML_ID_CLUSTERTIMECODE] = 'ClusterTimecode'; - $EBMLidList[EBML_ID_CLUSTERTIMESLICE] = 'ClusterTimeSlice'; - $EBMLidList[EBML_ID_CODECDECODEALL] = 'CodecDecodeAll'; - $EBMLidList[EBML_ID_CODECDOWNLOADURL] = 'CodecDownloadURL'; - $EBMLidList[EBML_ID_CODECID] = 'CodecID'; - $EBMLidList[EBML_ID_CODECINFOURL] = 'CodecInfoURL'; - $EBMLidList[EBML_ID_CODECNAME] = 'CodecName'; - $EBMLidList[EBML_ID_CODECPRIVATE] = 'CodecPrivate'; - $EBMLidList[EBML_ID_CODECSETTINGS] = 'CodecSettings'; - $EBMLidList[EBML_ID_COLOURSPACE] = 'ColourSpace'; - $EBMLidList[EBML_ID_CONTENTCOMPALGO] = 'ContentCompAlgo'; - $EBMLidList[EBML_ID_CONTENTCOMPRESSION] = 'ContentCompression'; - $EBMLidList[EBML_ID_CONTENTCOMPSETTINGS] = 'ContentCompSettings'; - $EBMLidList[EBML_ID_CONTENTENCALGO] = 'ContentEncAlgo'; - $EBMLidList[EBML_ID_CONTENTENCKEYID] = 'ContentEncKeyID'; - $EBMLidList[EBML_ID_CONTENTENCODING] = 'ContentEncoding'; - $EBMLidList[EBML_ID_CONTENTENCODINGORDER] = 'ContentEncodingOrder'; - $EBMLidList[EBML_ID_CONTENTENCODINGS] = 'ContentEncodings'; - $EBMLidList[EBML_ID_CONTENTENCODINGSCOPE] = 'ContentEncodingScope'; - $EBMLidList[EBML_ID_CONTENTENCODINGTYPE] = 'ContentEncodingType'; - $EBMLidList[EBML_ID_CONTENTENCRYPTION] = 'ContentEncryption'; - $EBMLidList[EBML_ID_CONTENTSIGALGO] = 'ContentSigAlgo'; - $EBMLidList[EBML_ID_CONTENTSIGHASHALGO] = 'ContentSigHashAlgo'; - $EBMLidList[EBML_ID_CONTENTSIGKEYID] = 'ContentSigKeyID'; - $EBMLidList[EBML_ID_CONTENTSIGNATURE] = 'ContentSignature'; - $EBMLidList[EBML_ID_CRC32] = 'CRC32'; - $EBMLidList[EBML_ID_CUEBLOCKNUMBER] = 'CueBlockNumber'; - $EBMLidList[EBML_ID_CUECLUSTERPOSITION] = 'CueClusterPosition'; - $EBMLidList[EBML_ID_CUECODECSTATE] = 'CueCodecState'; - $EBMLidList[EBML_ID_CUEPOINT] = 'CuePoint'; - $EBMLidList[EBML_ID_CUEREFCLUSTER] = 'CueRefCluster'; - $EBMLidList[EBML_ID_CUEREFCODECSTATE] = 'CueRefCodecState'; - $EBMLidList[EBML_ID_CUEREFERENCE] = 'CueReference'; - $EBMLidList[EBML_ID_CUEREFNUMBER] = 'CueRefNumber'; - $EBMLidList[EBML_ID_CUEREFTIME] = 'CueRefTime'; - $EBMLidList[EBML_ID_CUES] = 'Cues'; - $EBMLidList[EBML_ID_CUETIME] = 'CueTime'; - $EBMLidList[EBML_ID_CUETRACK] = 'CueTrack'; - $EBMLidList[EBML_ID_CUETRACKPOSITIONS] = 'CueTrackPositions'; - $EBMLidList[EBML_ID_DATEUTC] = 'DateUTC'; - $EBMLidList[EBML_ID_DEFAULTDURATION] = 'DefaultDuration'; - $EBMLidList[EBML_ID_DISPLAYHEIGHT] = 'DisplayHeight'; - $EBMLidList[EBML_ID_DISPLAYUNIT] = 'DisplayUnit'; - $EBMLidList[EBML_ID_DISPLAYWIDTH] = 'DisplayWidth'; - $EBMLidList[EBML_ID_DOCTYPE] = 'DocType'; - $EBMLidList[EBML_ID_DOCTYPEREADVERSION] = 'DocTypeReadVersion'; - $EBMLidList[EBML_ID_DOCTYPEVERSION] = 'DocTypeVersion'; - $EBMLidList[EBML_ID_DURATION] = 'Duration'; - $EBMLidList[EBML_ID_EBML] = 'EBML'; - $EBMLidList[EBML_ID_EBMLMAXIDLENGTH] = 'EBMLMaxIDLength'; - $EBMLidList[EBML_ID_EBMLMAXSIZELENGTH] = 'EBMLMaxSizeLength'; - $EBMLidList[EBML_ID_EBMLREADVERSION] = 'EBMLReadVersion'; - $EBMLidList[EBML_ID_EBMLVERSION] = 'EBMLVersion'; - $EBMLidList[EBML_ID_EDITIONENTRY] = 'EditionEntry'; - $EBMLidList[EBML_ID_EDITIONFLAGDEFAULT] = 'EditionFlagDefault'; - $EBMLidList[EBML_ID_EDITIONFLAGHIDDEN] = 'EditionFlagHidden'; - $EBMLidList[EBML_ID_EDITIONFLAGORDERED] = 'EditionFlagOrdered'; - $EBMLidList[EBML_ID_EDITIONUID] = 'EditionUID'; - $EBMLidList[EBML_ID_FILEDATA] = 'FileData'; - $EBMLidList[EBML_ID_FILEDESCRIPTION] = 'FileDescription'; - $EBMLidList[EBML_ID_FILEMIMETYPE] = 'FileMimeType'; - $EBMLidList[EBML_ID_FILENAME] = 'FileName'; - $EBMLidList[EBML_ID_FILEREFERRAL] = 'FileReferral'; - $EBMLidList[EBML_ID_FILEUID] = 'FileUID'; - $EBMLidList[EBML_ID_FLAGDEFAULT] = 'FlagDefault'; - $EBMLidList[EBML_ID_FLAGENABLED] = 'FlagEnabled'; - $EBMLidList[EBML_ID_FLAGFORCED] = 'FlagForced'; - $EBMLidList[EBML_ID_FLAGINTERLACED] = 'FlagInterlaced'; - $EBMLidList[EBML_ID_FLAGLACING] = 'FlagLacing'; - $EBMLidList[EBML_ID_GAMMAVALUE] = 'GammaValue'; - $EBMLidList[EBML_ID_INFO] = 'Info'; - $EBMLidList[EBML_ID_LANGUAGE] = 'Language'; - $EBMLidList[EBML_ID_MAXBLOCKADDITIONID] = 'MaxBlockAdditionID'; - $EBMLidList[EBML_ID_MAXCACHE] = 'MaxCache'; - $EBMLidList[EBML_ID_MINCACHE] = 'MinCache'; - $EBMLidList[EBML_ID_MUXINGAPP] = 'MuxingApp'; - $EBMLidList[EBML_ID_NAME] = 'Name'; - $EBMLidList[EBML_ID_NEXTFILENAME] = 'NextFilename'; - $EBMLidList[EBML_ID_NEXTUID] = 'NextUID'; - $EBMLidList[EBML_ID_OUTPUTSAMPLINGFREQUENCY] = 'OutputSamplingFrequency'; - $EBMLidList[EBML_ID_PIXELCROPBOTTOM] = 'PixelCropBottom'; - $EBMLidList[EBML_ID_PIXELCROPLEFT] = 'PixelCropLeft'; - $EBMLidList[EBML_ID_PIXELCROPRIGHT] = 'PixelCropRight'; - $EBMLidList[EBML_ID_PIXELCROPTOP] = 'PixelCropTop'; - $EBMLidList[EBML_ID_PIXELHEIGHT] = 'PixelHeight'; - $EBMLidList[EBML_ID_PIXELWIDTH] = 'PixelWidth'; - $EBMLidList[EBML_ID_PREVFILENAME] = 'PrevFilename'; - $EBMLidList[EBML_ID_PREVUID] = 'PrevUID'; - $EBMLidList[EBML_ID_SAMPLINGFREQUENCY] = 'SamplingFrequency'; - $EBMLidList[EBML_ID_SEEK] = 'Seek'; - $EBMLidList[EBML_ID_SEEKHEAD] = 'SeekHead'; - $EBMLidList[EBML_ID_SEEKID] = 'SeekID'; - $EBMLidList[EBML_ID_SEEKPOSITION] = 'SeekPosition'; - $EBMLidList[EBML_ID_SEGMENT] = 'Segment'; - $EBMLidList[EBML_ID_SEGMENTFAMILY] = 'SegmentFamily'; - $EBMLidList[EBML_ID_SEGMENTFILENAME] = 'SegmentFilename'; - $EBMLidList[EBML_ID_SEGMENTUID] = 'SegmentUID'; - $EBMLidList[EBML_ID_SIMPLETAG] = 'SimpleTag'; - $EBMLidList[EBML_ID_CLUSTERSLICES] = 'ClusterSlices'; - $EBMLidList[EBML_ID_STEREOMODE] = 'StereoMode'; - $EBMLidList[EBML_ID_TAG] = 'Tag'; - $EBMLidList[EBML_ID_TAGATTACHMENTUID] = 'TagAttachmentUID'; - $EBMLidList[EBML_ID_TAGBINARY] = 'TagBinary'; - $EBMLidList[EBML_ID_TAGCHAPTERUID] = 'TagChapterUID'; - $EBMLidList[EBML_ID_TAGDEFAULT] = 'TagDefault'; - $EBMLidList[EBML_ID_TAGEDITIONUID] = 'TagEditionUID'; - $EBMLidList[EBML_ID_TAGLANGUAGE] = 'TagLanguage'; - $EBMLidList[EBML_ID_TAGNAME] = 'TagName'; - $EBMLidList[EBML_ID_TAGTRACKUID] = 'TagTrackUID'; - $EBMLidList[EBML_ID_TAGS] = 'Tags'; - $EBMLidList[EBML_ID_TAGSTRING] = 'TagString'; - $EBMLidList[EBML_ID_TARGETS] = 'Targets'; - $EBMLidList[EBML_ID_TARGETTYPE] = 'TargetType'; - $EBMLidList[EBML_ID_TARGETTYPEVALUE] = 'TargetTypeValue'; - $EBMLidList[EBML_ID_TIMECODESCALE] = 'TimecodeScale'; - $EBMLidList[EBML_ID_TITLE] = 'Title'; - $EBMLidList[EBML_ID_TRACKENTRY] = 'TrackEntry'; - $EBMLidList[EBML_ID_TRACKNUMBER] = 'TrackNumber'; - $EBMLidList[EBML_ID_TRACKOFFSET] = 'TrackOffset'; - $EBMLidList[EBML_ID_TRACKOVERLAY] = 'TrackOverlay'; - $EBMLidList[EBML_ID_TRACKS] = 'Tracks'; - $EBMLidList[EBML_ID_TRACKTIMECODESCALE] = 'TrackTimecodeScale'; - $EBMLidList[EBML_ID_TRACKTRANSLATE] = 'TrackTranslate'; - $EBMLidList[EBML_ID_TRACKTRANSLATECODEC] = 'TrackTranslateCodec'; - $EBMLidList[EBML_ID_TRACKTRANSLATEEDITIONUID] = 'TrackTranslateEditionUID'; - $EBMLidList[EBML_ID_TRACKTRANSLATETRACKID] = 'TrackTranslateTrackID'; - $EBMLidList[EBML_ID_TRACKTYPE] = 'TrackType'; - $EBMLidList[EBML_ID_TRACKUID] = 'TrackUID'; - $EBMLidList[EBML_ID_VIDEO] = 'Video'; - $EBMLidList[EBML_ID_VOID] = 'Void'; - $EBMLidList[EBML_ID_WRITINGAPP] = 'WritingApp'; - } - - return (isset($EBMLidList[$value]) ? $EBMLidList[$value] : dechex($value)); - } - - private static function getDefaultStreamInfo($streams) - { - foreach (array_reverse($streams) as $stream) { - if ($stream['default']) { - break; - } - } - unset($stream['default']); - if (isset($stream['name'])) { - unset($stream['name']); - } - - $info = $stream; - $info['streams'] = $streams; - - return $info; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.mpeg.php b/3rdparty/getid3/module.audio-video.mpeg.php deleted file mode 100644 index 499b740c390762b0b1db2ff7c7d78a6956c336e3..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.mpeg.php +++ /dev/null @@ -1,299 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.mpeg.php // -// module for analyzing MPEG files // -// dependencies: module.audio.mp3.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true); - -define('GETID3_MPEG_VIDEO_PICTURE_START', "\x00\x00\x01\x00"); -define('GETID3_MPEG_VIDEO_USER_DATA_START', "\x00\x00\x01\xB2"); -define('GETID3_MPEG_VIDEO_SEQUENCE_HEADER', "\x00\x00\x01\xB3"); -define('GETID3_MPEG_VIDEO_SEQUENCE_ERROR', "\x00\x00\x01\xB4"); -define('GETID3_MPEG_VIDEO_EXTENSION_START', "\x00\x00\x01\xB5"); -define('GETID3_MPEG_VIDEO_SEQUENCE_END', "\x00\x00\x01\xB7"); -define('GETID3_MPEG_VIDEO_GROUP_START', "\x00\x00\x01\xB8"); -define('GETID3_MPEG_AUDIO_START', "\x00\x00\x01\xC0"); - - -class getid3_mpeg extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - if ($info['avdataend'] <= $info['avdataoffset']) { - $info['error'][] = '"avdataend" ('.$info['avdataend'].') is unexpectedly less-than-or-equal-to "avdataoffset" ('.$info['avdataoffset'].')'; - return false; - } - $info['fileformat'] = 'mpeg'; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $MPEGstreamData = fread($this->getid3->fp, min(100000, $info['avdataend'] - $info['avdataoffset'])); - $MPEGstreamDataLength = strlen($MPEGstreamData); - - $foundVideo = true; - $VideoChunkOffset = 0; - while (substr($MPEGstreamData, $VideoChunkOffset++, 4) !== GETID3_MPEG_VIDEO_SEQUENCE_HEADER) { - if ($VideoChunkOffset >= $MPEGstreamDataLength) { - $foundVideo = false; - break; - } - } - if ($foundVideo) { - - // Start code 32 bits - // horizontal frame size 12 bits - // vertical frame size 12 bits - // pixel aspect ratio 4 bits - // frame rate 4 bits - // bitrate 18 bits - // marker bit 1 bit - // VBV buffer size 10 bits - // constrained parameter flag 1 bit - // intra quant. matrix flag 1 bit - // intra quant. matrix values 512 bits (present if matrix flag == 1) - // non-intra quant. matrix flag 1 bit - // non-intra quant. matrix values 512 bits (present if matrix flag == 1) - - $info['video']['dataformat'] = 'mpeg'; - - $VideoChunkOffset += (strlen(GETID3_MPEG_VIDEO_SEQUENCE_HEADER) - 1); - - $FrameSizeDWORD = getid3_lib::BigEndian2Int(substr($MPEGstreamData, $VideoChunkOffset, 3)); - $VideoChunkOffset += 3; - - $AspectRatioFrameRateDWORD = getid3_lib::BigEndian2Int(substr($MPEGstreamData, $VideoChunkOffset, 1)); - $VideoChunkOffset += 1; - - $assortedinformation = getid3_lib::BigEndian2Bin(substr($MPEGstreamData, $VideoChunkOffset, 4)); - $VideoChunkOffset += 4; - - $info['mpeg']['video']['raw']['framesize_horizontal'] = ($FrameSizeDWORD & 0xFFF000) >> 12; // 12 bits for horizontal frame size - $info['mpeg']['video']['raw']['framesize_vertical'] = ($FrameSizeDWORD & 0x000FFF); // 12 bits for vertical frame size - $info['mpeg']['video']['raw']['pixel_aspect_ratio'] = ($AspectRatioFrameRateDWORD & 0xF0) >> 4; - $info['mpeg']['video']['raw']['frame_rate'] = ($AspectRatioFrameRateDWORD & 0x0F); - - $info['mpeg']['video']['framesize_horizontal'] = $info['mpeg']['video']['raw']['framesize_horizontal']; - $info['mpeg']['video']['framesize_vertical'] = $info['mpeg']['video']['raw']['framesize_vertical']; - - $info['mpeg']['video']['pixel_aspect_ratio'] = $this->MPEGvideoAspectRatioLookup($info['mpeg']['video']['raw']['pixel_aspect_ratio']); - $info['mpeg']['video']['pixel_aspect_ratio_text'] = $this->MPEGvideoAspectRatioTextLookup($info['mpeg']['video']['raw']['pixel_aspect_ratio']); - $info['mpeg']['video']['frame_rate'] = $this->MPEGvideoFramerateLookup($info['mpeg']['video']['raw']['frame_rate']); - - $info['mpeg']['video']['raw']['bitrate'] = getid3_lib::Bin2Dec(substr($assortedinformation, 0, 18)); - $info['mpeg']['video']['raw']['marker_bit'] = (bool) getid3_lib::Bin2Dec(substr($assortedinformation, 18, 1)); - $info['mpeg']['video']['raw']['vbv_buffer_size'] = getid3_lib::Bin2Dec(substr($assortedinformation, 19, 10)); - $info['mpeg']['video']['raw']['constrained_param_flag'] = (bool) getid3_lib::Bin2Dec(substr($assortedinformation, 29, 1)); - $info['mpeg']['video']['raw']['intra_quant_flag'] = (bool) getid3_lib::Bin2Dec(substr($assortedinformation, 30, 1)); - if ($info['mpeg']['video']['raw']['intra_quant_flag']) { - - // read 512 bits - $info['mpeg']['video']['raw']['intra_quant'] = getid3_lib::BigEndian2Bin(substr($MPEGstreamData, $VideoChunkOffset, 64)); - $VideoChunkOffset += 64; - - $info['mpeg']['video']['raw']['non_intra_quant_flag'] = (bool) getid3_lib::Bin2Dec(substr($info['mpeg']['video']['raw']['intra_quant'], 511, 1)); - $info['mpeg']['video']['raw']['intra_quant'] = getid3_lib::Bin2Dec(substr($assortedinformation, 31, 1)).substr(getid3_lib::BigEndian2Bin(substr($MPEGstreamData, $VideoChunkOffset, 64)), 0, 511); - - if ($info['mpeg']['video']['raw']['non_intra_quant_flag']) { - $info['mpeg']['video']['raw']['non_intra_quant'] = substr($MPEGstreamData, $VideoChunkOffset, 64); - $VideoChunkOffset += 64; - } - - } else { - - $info['mpeg']['video']['raw']['non_intra_quant_flag'] = (bool) getid3_lib::Bin2Dec(substr($assortedinformation, 31, 1)); - if ($info['mpeg']['video']['raw']['non_intra_quant_flag']) { - $info['mpeg']['video']['raw']['non_intra_quant'] = substr($MPEGstreamData, $VideoChunkOffset, 64); - $VideoChunkOffset += 64; - } - - } - - if ($info['mpeg']['video']['raw']['bitrate'] == 0x3FFFF) { // 18 set bits - - $info['warning'][] = 'This version of getID3() ['.$this->getid3->version().'] cannot determine average bitrate of VBR MPEG video files'; - $info['mpeg']['video']['bitrate_mode'] = 'vbr'; - - } else { - - $info['mpeg']['video']['bitrate'] = $info['mpeg']['video']['raw']['bitrate'] * 400; - $info['mpeg']['video']['bitrate_mode'] = 'cbr'; - $info['video']['bitrate'] = $info['mpeg']['video']['bitrate']; - - } - - $info['video']['resolution_x'] = $info['mpeg']['video']['framesize_horizontal']; - $info['video']['resolution_y'] = $info['mpeg']['video']['framesize_vertical']; - $info['video']['frame_rate'] = $info['mpeg']['video']['frame_rate']; - $info['video']['bitrate_mode'] = $info['mpeg']['video']['bitrate_mode']; - $info['video']['pixel_aspect_ratio'] = $info['mpeg']['video']['pixel_aspect_ratio']; - $info['video']['lossless'] = false; - $info['video']['bits_per_sample'] = 24; - - } else { - - $info['error'][] = 'Could not find start of video block in the first 100,000 bytes (or before end of file) - this might not be an MPEG-video file?'; - - } - - //0x000001B3 begins the sequence_header of every MPEG video stream. - //But in MPEG-2, this header must immediately be followed by an - //extension_start_code (0x000001B5) with a sequence_extension ID (1). - //(This extension contains all the additional MPEG-2 stuff.) - //MPEG-1 doesn't have this extension, so that's a sure way to tell the - //difference between MPEG-1 and MPEG-2 video streams. - - if (substr($MPEGstreamData, $VideoChunkOffset, 4) == GETID3_MPEG_VIDEO_EXTENSION_START) { - $info['video']['codec'] = 'MPEG-2'; - } else { - $info['video']['codec'] = 'MPEG-1'; - } - - - $AudioChunkOffset = 0; - while (true) { - while (substr($MPEGstreamData, $AudioChunkOffset++, 4) !== GETID3_MPEG_AUDIO_START) { - if ($AudioChunkOffset >= $MPEGstreamDataLength) { - break 2; - } - } - - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info = $info; - $getid3_mp3 = new getid3_mp3($getid3_temp); - for ($i = 0; $i <= 7; $i++) { - // some files have the MPEG-audio header 8 bytes after the end of the $00 $00 $01 $C0 signature, some have it up to 13 bytes (or more?) after - // I have no idea why or what the difference is, so this is a stupid hack. - // If anybody has any better idea of what's going on, please let me know - info@getid3.org - fseek($getid3_temp->fp, ftell($this->getid3->fp), SEEK_SET); - $getid3_temp->info = $info; // only overwrite real data if valid header found - if ($getid3_mp3->decodeMPEGaudioHeader(($AudioChunkOffset + 3) + 8 + $i, $getid3_temp->info, false)) { - $info = $getid3_temp->info; - $info['audio']['bitrate_mode'] = 'cbr'; - $info['audio']['lossless'] = false; - unset($getid3_temp, $getid3_mp3); - break 2; - } - } - unset($getid3_temp, $getid3_mp3); - } - - // Temporary hack to account for interleaving overhead: - if (!empty($info['video']['bitrate']) && !empty($info['audio']['bitrate'])) { - $info['playtime_seconds'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / ($info['video']['bitrate'] + $info['audio']['bitrate']); - - // Interleaved MPEG audio/video files have a certain amount of overhead that varies - // by both video and audio bitrates, and not in any sensible, linear/logarithmic patter - // Use interpolated lookup tables to approximately guess how much is overhead, because - // playtime is calculated as filesize / total-bitrate - $info['playtime_seconds'] *= $this->MPEGsystemNonOverheadPercentage($info['video']['bitrate'], $info['audio']['bitrate']); - - //switch ($info['video']['bitrate']) { - // case('5000000'): - // $multiplier = 0.93292642112380355828048824319889; - // break; - // case('5500000'): - // $multiplier = 0.93582895375200989965359777343219; - // break; - // case('6000000'): - // $multiplier = 0.93796247714820932532911373859139; - // break; - // case('7000000'): - // $multiplier = 0.9413264083635103463010117778776; - // break; - // default: - // $multiplier = 1; - // break; - //} - //$info['playtime_seconds'] *= $multiplier; - //$info['warning'][] = 'Interleaved MPEG audio/video playtime may be inaccurate. With current hack should be within a few seconds of accurate. Report to info@getid3.org if off by more than 10 seconds.'; - if ($info['video']['bitrate'] < 50000) { - $info['warning'][] = 'Interleaved MPEG audio/video playtime may be slightly inaccurate for video bitrates below 100kbps. Except in extreme low-bitrate situations, error should be less than 1%. Report to info@getid3.org if greater than this.'; - } - } - - return true; - } - - - function MPEGsystemNonOverheadPercentage($VideoBitrate, $AudioBitrate) { - $OverheadPercentage = 0; - - $AudioBitrate = max(min($AudioBitrate / 1000, 384), 32); // limit to range of 32kbps - 384kbps (should be only legal bitrates, but maybe VBR?) - $VideoBitrate = max(min($VideoBitrate / 1000, 10000), 10); // limit to range of 10kbps - 10Mbps (beyond that curves flatten anyways, no big loss) - - - //OMBB[audiobitrate] = array(video-10kbps, video-100kbps, video-1000kbps, video-10000kbps) - $OverheadMultiplierByBitrate[32] = array(0, 0.9676287944368530, 0.9802276264360310, 0.9844916183244460, 0.9852821845179940); - $OverheadMultiplierByBitrate[48] = array(0, 0.9779100089209830, 0.9787770035359320, 0.9846738664076130, 0.9852683013799960); - $OverheadMultiplierByBitrate[56] = array(0, 0.9731249855367600, 0.9776624308938040, 0.9832606361852130, 0.9843922606633340); - $OverheadMultiplierByBitrate[64] = array(0, 0.9755642683275760, 0.9795256705493390, 0.9836573009193170, 0.9851122539404470); - $OverheadMultiplierByBitrate[96] = array(0, 0.9788025247497290, 0.9798553314148700, 0.9822956869792560, 0.9834815119124690); - $OverheadMultiplierByBitrate[128] = array(0, 0.9816940050925480, 0.9821675936072120, 0.9829756927470870, 0.9839763420152050); - $OverheadMultiplierByBitrate[160] = array(0, 0.9825894094561180, 0.9820913399073960, 0.9823907143253970, 0.9832821783651570); - $OverheadMultiplierByBitrate[192] = array(0, 0.9832038474336260, 0.9825731694317960, 0.9821028622712400, 0.9828262076447620); - $OverheadMultiplierByBitrate[224] = array(0, 0.9836516298538770, 0.9824718601823890, 0.9818302180625380, 0.9823735101626480); - $OverheadMultiplierByBitrate[256] = array(0, 0.9845863022094920, 0.9837229411967540, 0.9824521662210830, 0.9828645172100790); - $OverheadMultiplierByBitrate[320] = array(0, 0.9849565280263180, 0.9837683142805110, 0.9822885275960400, 0.9824424382727190); - $OverheadMultiplierByBitrate[384] = array(0, 0.9856094774357600, 0.9844573394432720, 0.9825970399837330, 0.9824673808303890); - - $BitrateToUseMin = 32; - $BitrateToUseMax = 32; - $previousBitrate = 32; - foreach ($OverheadMultiplierByBitrate as $key => $value) { - if ($AudioBitrate >= $previousBitrate) { - $BitrateToUseMin = $previousBitrate; - } - if ($AudioBitrate < $key) { - $BitrateToUseMax = $key; - break; - } - $previousBitrate = $key; - } - $FactorA = ($BitrateToUseMax - $AudioBitrate) / ($BitrateToUseMax - $BitrateToUseMin); - - $VideoBitrateLog10 = log10($VideoBitrate); - $VideoFactorMin1 = $OverheadMultiplierByBitrate[$BitrateToUseMin][floor($VideoBitrateLog10)]; - $VideoFactorMin2 = $OverheadMultiplierByBitrate[$BitrateToUseMax][floor($VideoBitrateLog10)]; - $VideoFactorMax1 = $OverheadMultiplierByBitrate[$BitrateToUseMin][ceil($VideoBitrateLog10)]; - $VideoFactorMax2 = $OverheadMultiplierByBitrate[$BitrateToUseMax][ceil($VideoBitrateLog10)]; - $FactorV = $VideoBitrateLog10 - floor($VideoBitrateLog10); - - $OverheadPercentage = $VideoFactorMin1 * $FactorA * $FactorV; - $OverheadPercentage += $VideoFactorMin2 * (1 - $FactorA) * $FactorV; - $OverheadPercentage += $VideoFactorMax1 * $FactorA * (1 - $FactorV); - $OverheadPercentage += $VideoFactorMax2 * (1 - $FactorA) * (1 - $FactorV); - - return $OverheadPercentage; - } - - - function MPEGvideoFramerateLookup($rawframerate) { - $MPEGvideoFramerateLookup = array(0, 23.976, 24, 25, 29.97, 30, 50, 59.94, 60); - return (isset($MPEGvideoFramerateLookup[$rawframerate]) ? (float) $MPEGvideoFramerateLookup[$rawframerate] : (float) 0); - } - - function MPEGvideoAspectRatioLookup($rawaspectratio) { - $MPEGvideoAspectRatioLookup = array(0, 1, 0.6735, 0.7031, 0.7615, 0.8055, 0.8437, 0.8935, 0.9157, 0.9815, 1.0255, 1.0695, 1.0950, 1.1575, 1.2015, 0); - return (isset($MPEGvideoAspectRatioLookup[$rawaspectratio]) ? (float) $MPEGvideoAspectRatioLookup[$rawaspectratio] : (float) 0); - } - - function MPEGvideoAspectRatioTextLookup($rawaspectratio) { - $MPEGvideoAspectRatioTextLookup = array('forbidden', 'square pixels', '0.6735', '16:9, 625 line, PAL', '0.7615', '0.8055', '16:9, 525 line, NTSC', '0.8935', '4:3, 625 line, PAL, CCIR601', '0.9815', '1.0255', '1.0695', '4:3, 525 line, NTSC, CCIR601', '1.1575', '1.2015', 'reserved'); - return (isset($MPEGvideoAspectRatioTextLookup[$rawaspectratio]) ? $MPEGvideoAspectRatioTextLookup[$rawaspectratio] : ''); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.nsv.php b/3rdparty/getid3/module.audio-video.nsv.php deleted file mode 100644 index 5a587e6720857eeb409e44bfb09cb8ea17859131..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.nsv.php +++ /dev/null @@ -1,226 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.nsv.php // -// module for analyzing Nullsoft NSV files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_nsv extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $NSVheader = fread($this->getid3->fp, 4); - - switch ($NSVheader) { - case 'NSVs': - if ($this->getNSVsHeaderFilepointer(0)) { - $info['fileformat'] = 'nsv'; - $info['audio']['dataformat'] = 'nsv'; - $info['video']['dataformat'] = 'nsv'; - $info['audio']['lossless'] = false; - $info['video']['lossless'] = false; - } - break; - - case 'NSVf': - if ($this->getNSVfHeaderFilepointer(0)) { - $info['fileformat'] = 'nsv'; - $info['audio']['dataformat'] = 'nsv'; - $info['video']['dataformat'] = 'nsv'; - $info['audio']['lossless'] = false; - $info['video']['lossless'] = false; - $this->getNSVsHeaderFilepointer($info['nsv']['NSVf']['header_length']); - } - break; - - default: - $info['error'][] = 'Expecting "NSVs" or "NSVf" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($NSVheader).'"'; - return false; - break; - } - - if (!isset($info['nsv']['NSVf'])) { - $info['warning'][] = 'NSVf header not present - cannot calculate playtime or bitrate'; - } - - return true; - } - - function getNSVsHeaderFilepointer($fileoffset) { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $fileoffset, SEEK_SET); - $NSVsheader = fread($this->getid3->fp, 28); - $offset = 0; - - $info['nsv']['NSVs']['identifier'] = substr($NSVsheader, $offset, 4); - $offset += 4; - - if ($info['nsv']['NSVs']['identifier'] != 'NSVs') { - $info['error'][] = 'expected "NSVs" at offset ('.$fileoffset.'), found "'.$info['nsv']['NSVs']['identifier'].'" instead'; - unset($info['nsv']['NSVs']); - return false; - } - - $info['nsv']['NSVs']['offset'] = $fileoffset; - - $info['nsv']['NSVs']['video_codec'] = substr($NSVsheader, $offset, 4); - $offset += 4; - $info['nsv']['NSVs']['audio_codec'] = substr($NSVsheader, $offset, 4); - $offset += 4; - $info['nsv']['NSVs']['resolution_x'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 2)); - $offset += 2; - $info['nsv']['NSVs']['resolution_y'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 2)); - $offset += 2; - - $info['nsv']['NSVs']['framerate_index'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - //$info['nsv']['NSVs']['unknown1b'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - //$info['nsv']['NSVs']['unknown1c'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - //$info['nsv']['NSVs']['unknown1d'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - //$info['nsv']['NSVs']['unknown2a'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - //$info['nsv']['NSVs']['unknown2b'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - //$info['nsv']['NSVs']['unknown2c'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - //$info['nsv']['NSVs']['unknown2d'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - - switch ($info['nsv']['NSVs']['audio_codec']) { - case 'PCM ': - $info['nsv']['NSVs']['bits_channel'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - $info['nsv']['NSVs']['channels'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 1)); - $offset += 1; - $info['nsv']['NSVs']['sample_rate'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 2)); - $offset += 2; - - $info['audio']['sample_rate'] = $info['nsv']['NSVs']['sample_rate']; - break; - - case 'MP3 ': - case 'NONE': - default: - //$info['nsv']['NSVs']['unknown3'] = getid3_lib::LittleEndian2Int(substr($NSVsheader, $offset, 4)); - $offset += 4; - break; - } - - $info['video']['resolution_x'] = $info['nsv']['NSVs']['resolution_x']; - $info['video']['resolution_y'] = $info['nsv']['NSVs']['resolution_y']; - $info['nsv']['NSVs']['frame_rate'] = $this->NSVframerateLookup($info['nsv']['NSVs']['framerate_index']); - $info['video']['frame_rate'] = $info['nsv']['NSVs']['frame_rate']; - $info['video']['bits_per_sample'] = 24; - $info['video']['pixel_aspect_ratio'] = (float) 1; - - return true; - } - - function getNSVfHeaderFilepointer($fileoffset, $getTOCoffsets=false) { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $fileoffset, SEEK_SET); - $NSVfheader = fread($this->getid3->fp, 28); - $offset = 0; - - $info['nsv']['NSVf']['identifier'] = substr($NSVfheader, $offset, 4); - $offset += 4; - - if ($info['nsv']['NSVf']['identifier'] != 'NSVf') { - $info['error'][] = 'expected "NSVf" at offset ('.$fileoffset.'), found "'.$info['nsv']['NSVf']['identifier'].'" instead'; - unset($info['nsv']['NSVf']); - return false; - } - - $info['nsv']['NSVs']['offset'] = $fileoffset; - - $info['nsv']['NSVf']['header_length'] = getid3_lib::LittleEndian2Int(substr($NSVfheader, $offset, 4)); - $offset += 4; - $info['nsv']['NSVf']['file_size'] = getid3_lib::LittleEndian2Int(substr($NSVfheader, $offset, 4)); - $offset += 4; - - if ($info['nsv']['NSVf']['file_size'] > $info['avdataend']) { - $info['warning'][] = 'truncated file - NSVf header indicates '.$info['nsv']['NSVf']['file_size'].' bytes, file actually '.$info['avdataend'].' bytes'; - } - - $info['nsv']['NSVf']['playtime_ms'] = getid3_lib::LittleEndian2Int(substr($NSVfheader, $offset, 4)); - $offset += 4; - $info['nsv']['NSVf']['meta_size'] = getid3_lib::LittleEndian2Int(substr($NSVfheader, $offset, 4)); - $offset += 4; - $info['nsv']['NSVf']['TOC_entries_1'] = getid3_lib::LittleEndian2Int(substr($NSVfheader, $offset, 4)); - $offset += 4; - $info['nsv']['NSVf']['TOC_entries_2'] = getid3_lib::LittleEndian2Int(substr($NSVfheader, $offset, 4)); - $offset += 4; - - if ($info['nsv']['NSVf']['playtime_ms'] == 0) { - $info['error'][] = 'Corrupt NSV file: NSVf.playtime_ms == zero'; - return false; - } - - $NSVfheader .= fread($this->getid3->fp, $info['nsv']['NSVf']['meta_size'] + (4 * $info['nsv']['NSVf']['TOC_entries_1']) + (4 * $info['nsv']['NSVf']['TOC_entries_2'])); - $NSVfheaderlength = strlen($NSVfheader); - $info['nsv']['NSVf']['metadata'] = substr($NSVfheader, $offset, $info['nsv']['NSVf']['meta_size']); - $offset += $info['nsv']['NSVf']['meta_size']; - - if ($getTOCoffsets) { - $TOCcounter = 0; - while ($TOCcounter < $info['nsv']['NSVf']['TOC_entries_1']) { - if ($TOCcounter < $info['nsv']['NSVf']['TOC_entries_1']) { - $info['nsv']['NSVf']['TOC_1'][$TOCcounter] = getid3_lib::LittleEndian2Int(substr($NSVfheader, $offset, 4)); - $offset += 4; - $TOCcounter++; - } - } - } - - if (trim($info['nsv']['NSVf']['metadata']) != '') { - $info['nsv']['NSVf']['metadata'] = str_replace('`', "\x01", $info['nsv']['NSVf']['metadata']); - $CommentPairArray = explode("\x01".' ', $info['nsv']['NSVf']['metadata']); - foreach ($CommentPairArray as $CommentPair) { - if (strstr($CommentPair, '='."\x01")) { - list($key, $value) = explode('='."\x01", $CommentPair, 2); - $info['nsv']['comments'][strtolower($key)][] = trim(str_replace("\x01", '', $value)); - } - } - } - - $info['playtime_seconds'] = $info['nsv']['NSVf']['playtime_ms'] / 1000; - $info['bitrate'] = ($info['nsv']['NSVf']['file_size'] * 8) / $info['playtime_seconds']; - - return true; - } - - - static function NSVframerateLookup($framerateindex) { - if ($framerateindex <= 127) { - return (float) $framerateindex; - } - static $NSVframerateLookup = array(); - if (empty($NSVframerateLookup)) { - $NSVframerateLookup[129] = (float) 29.970; - $NSVframerateLookup[131] = (float) 23.976; - $NSVframerateLookup[133] = (float) 14.985; - $NSVframerateLookup[197] = (float) 59.940; - $NSVframerateLookup[199] = (float) 47.952; - } - return (isset($NSVframerateLookup[$framerateindex]) ? $NSVframerateLookup[$framerateindex] : false); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.quicktime.php b/3rdparty/getid3/module.audio-video.quicktime.php deleted file mode 100644 index 3e96ea1a0c2c7105ca7e9ff26f0c0226c4fb227f..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.quicktime.php +++ /dev/null @@ -1,2134 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.quicktime.php // -// module for analyzing Quicktime and MP3-in-MP4 files // -// dependencies: module.audio.mp3.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true); - -class getid3_quicktime extends getid3_handler -{ - - var $ReturnAtomData = true; - var $ParseAllPossibleAtoms = false; - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'quicktime'; - $info['quicktime']['hinting'] = false; - $info['quicktime']['controller'] = 'standard'; // may be overridden if 'ctyp' atom is present - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $offset = 0; - $atomcounter = 0; - - while ($offset < $info['avdataend']) { - if (!getid3_lib::intValueSupported($offset)) { - $info['error'][] = 'Unable to parse atom at offset '.$offset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions'; - break; - } - fseek($this->getid3->fp, $offset, SEEK_SET); - $AtomHeader = fread($this->getid3->fp, 8); - - $atomsize = getid3_lib::BigEndian2Int(substr($AtomHeader, 0, 4)); - $atomname = substr($AtomHeader, 4, 4); - - // 64-bit MOV patch by jlegateØktnc*com - if ($atomsize == 1) { - $atomsize = getid3_lib::BigEndian2Int(fread($this->getid3->fp, 8)); - } - - $info['quicktime'][$atomname]['name'] = $atomname; - $info['quicktime'][$atomname]['size'] = $atomsize; - $info['quicktime'][$atomname]['offset'] = $offset; - - if (($offset + $atomsize) > $info['avdataend']) { - $info['error'][] = 'Atom at offset '.$offset.' claims to go beyond end-of-file (length: '.$atomsize.' bytes)'; - return false; - } - - if ($atomsize == 0) { - // Furthermore, for historical reasons the list of atoms is optionally - // terminated by a 32-bit integer set to 0. If you are writing a program - // to read user data atoms, you should allow for the terminating 0. - break; - } - switch ($atomname) { - case 'mdat': // Media DATa atom - // 'mdat' contains the actual data for the audio/video - if (($atomsize > 8) && (!isset($info['avdataend_tmp']) || ($info['quicktime'][$atomname]['size'] > ($info['avdataend_tmp'] - $info['avdataoffset'])))) { - - $info['avdataoffset'] = $info['quicktime'][$atomname]['offset'] + 8; - $OldAVDataEnd = $info['avdataend']; - $info['avdataend'] = $info['quicktime'][$atomname]['offset'] + $info['quicktime'][$atomname]['size']; - - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = $info['avdataoffset']; - $getid3_temp->info['avdataend'] = $info['avdataend']; - $getid3_mp3 = new getid3_mp3($getid3_temp); - if ($getid3_mp3->MPEGaudioHeaderValid($getid3_mp3->MPEGaudioHeaderDecode(fread($this->getid3->fp, 4)))) { - $getid3_mp3->getOnlyMPEGaudioInfo($getid3_temp->info['avdataoffset'], false); - if (!empty($getid3_temp->info['warning'])) { - foreach ($getid3_temp->info['warning'] as $value) { - $info['warning'][] = $value; - } - } - if (!empty($getid3_temp->info['mpeg'])) { - $info['mpeg'] = $getid3_temp->info['mpeg']; - if (isset($info['mpeg']['audio'])) { - $info['audio']['dataformat'] = 'mp3'; - $info['audio']['codec'] = (!empty($info['mpeg']['audio']['encoder']) ? $info['mpeg']['audio']['encoder'] : (!empty($info['mpeg']['audio']['codec']) ? $info['mpeg']['audio']['codec'] : (!empty($info['mpeg']['audio']['LAME']) ? 'LAME' :'mp3'))); - $info['audio']['sample_rate'] = $info['mpeg']['audio']['sample_rate']; - $info['audio']['channels'] = $info['mpeg']['audio']['channels']; - $info['audio']['bitrate'] = $info['mpeg']['audio']['bitrate']; - $info['audio']['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']); - $info['bitrate'] = $info['audio']['bitrate']; - } - } - } - unset($getid3_mp3, $getid3_temp); - $info['avdataend'] = $OldAVDataEnd; - unset($OldAVDataEnd); - - } - break; - - case 'free': // FREE space atom - case 'skip': // SKIP atom - case 'wide': // 64-bit expansion placeholder atom - // 'free', 'skip' and 'wide' are just padding, contains no useful data at all - break; - - default: - $atomHierarchy = array(); - $info['quicktime'][$atomname] = $this->QuicktimeParseAtom($atomname, $atomsize, fread($this->getid3->fp, $atomsize), $offset, $atomHierarchy, $this->ParseAllPossibleAtoms); - break; - } - - $offset += $atomsize; - $atomcounter++; - } - - if (!empty($info['avdataend_tmp'])) { - // this value is assigned to a temp value and then erased because - // otherwise any atoms beyond the 'mdat' atom would not get parsed - $info['avdataend'] = $info['avdataend_tmp']; - unset($info['avdataend_tmp']); - } - - if (!isset($info['bitrate']) && isset($info['playtime_seconds'])) { - $info['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - } - if (isset($info['bitrate']) && !isset($info['audio']['bitrate']) && !isset($info['quicktime']['video'])) { - $info['audio']['bitrate'] = $info['bitrate']; - } - if (!empty($info['playtime_seconds']) && !isset($info['video']['frame_rate']) && !empty($info['quicktime']['stts_framecount'])) { - foreach ($info['quicktime']['stts_framecount'] as $key => $samples_count) { - $samples_per_second = $samples_count / $info['playtime_seconds']; - if ($samples_per_second > 240) { - // has to be audio samples - } else { - $info['video']['frame_rate'] = $samples_per_second; - break; - } - } - } - if (($info['audio']['dataformat'] == 'mp4') && empty($info['video']['resolution_x'])) { - $info['fileformat'] = 'mp4'; - $info['mime_type'] = 'audio/mp4'; - unset($info['video']['dataformat']); - } - - if (!$this->ReturnAtomData) { - unset($info['quicktime']['moov']); - } - - if (empty($info['audio']['dataformat']) && !empty($info['quicktime']['audio'])) { - $info['audio']['dataformat'] = 'quicktime'; - } - if (empty($info['video']['dataformat']) && !empty($info['quicktime']['video'])) { - $info['video']['dataformat'] = 'quicktime'; - } - - return true; - } - - function QuicktimeParseAtom($atomname, $atomsize, $atom_data, $baseoffset, &$atomHierarchy, $ParseAllPossibleAtoms) { - // http://developer.apple.com/techpubs/quicktime/qtdevdocs/APIREF/INDEX/atomalphaindex.htm - - $info = &$this->getid3->info; - - $atom_parent = array_pop($atomHierarchy); - array_push($atomHierarchy, $atomname); - $atom_structure['hierarchy'] = implode(' ', $atomHierarchy); - $atom_structure['name'] = $atomname; - $atom_structure['size'] = $atomsize; - $atom_structure['offset'] = $baseoffset; -//echo getid3_lib::PrintHexBytes(substr($atom_data, 0, 8)).'
    '; -//echo getid3_lib::PrintHexBytes(substr($atom_data, 0, 8), false).'

    '; - switch ($atomname) { - case 'moov': // MOVie container atom - case 'trak': // TRAcK container atom - case 'clip': // CLIPping container atom - case 'matt': // track MATTe container atom - case 'edts': // EDiTS container atom - case 'tref': // Track REFerence container atom - case 'mdia': // MeDIA container atom - case 'minf': // Media INFormation container atom - case 'dinf': // Data INFormation container atom - case 'udta': // User DaTA container atom - case 'cmov': // Compressed MOVie container atom - case 'rmra': // Reference Movie Record Atom - case 'rmda': // Reference Movie Descriptor Atom - case 'gmhd': // Generic Media info HeaDer atom (seen on QTVR) - $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms); - break; - - case 'ilst': // Item LiST container atom - $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms); - - // some "ilst" atoms contain data atoms that have a numeric name, and the data is far more accessible if the returned array is compacted - $allnumericnames = true; - foreach ($atom_structure['subatoms'] as $subatomarray) { - if (!is_integer($subatomarray['name']) || (count($subatomarray['subatoms']) != 1)) { - $allnumericnames = false; - break; - } - } - if ($allnumericnames) { - $newData = array(); - foreach ($atom_structure['subatoms'] as $subatomarray) { - foreach ($subatomarray['subatoms'] as $newData_subatomarray) { - unset($newData_subatomarray['hierarchy'], $newData_subatomarray['name']); - $newData[$subatomarray['name']] = $newData_subatomarray; - break; - } - } - $atom_structure['data'] = $newData; - unset($atom_structure['subatoms']); - } - break; - - case "\x00\x00\x00\x01": - case "\x00\x00\x00\x02": - case "\x00\x00\x00\x03": - case "\x00\x00\x00\x04": - case "\x00\x00\x00\x05": - $atomname = getid3_lib::BigEndian2Int($atomname); - $atom_structure['name'] = $atomname; - $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms); - break; - - case 'stbl': // Sample TaBLe container atom - $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms); - $isVideo = false; - $framerate = 0; - $framecount = 0; - foreach ($atom_structure['subatoms'] as $key => $value_array) { - if (isset($value_array['sample_description_table'])) { - foreach ($value_array['sample_description_table'] as $key2 => $value_array2) { - if (isset($value_array2['data_format'])) { - switch ($value_array2['data_format']) { - case 'avc1': - case 'mp4v': - // video data - $isVideo = true; - break; - case 'mp4a': - // audio data - break; - } - } - } - } elseif (isset($value_array['time_to_sample_table'])) { - foreach ($value_array['time_to_sample_table'] as $key2 => $value_array2) { - if (isset($value_array2['sample_count']) && isset($value_array2['sample_duration']) && ($value_array2['sample_duration'] > 0)) { - $framerate = round($info['quicktime']['time_scale'] / $value_array2['sample_duration'], 3); - $framecount = $value_array2['sample_count']; - } - } - } - } - if ($isVideo && $framerate) { - $info['quicktime']['video']['frame_rate'] = $framerate; - $info['video']['frame_rate'] = $info['quicktime']['video']['frame_rate']; - } - if ($isVideo && $framecount) { - $info['quicktime']['video']['frame_count'] = $framecount; - } - break; - - - case 'aART': // Album ARTist - case 'catg': // CaTeGory - case 'covr': // COVeR artwork - case 'cpil': // ComPILation - case 'cprt': // CoPyRighT - case 'desc': // DESCription - case 'disk': // DISK number - case 'egid': // Episode Global ID - case 'gnre': // GeNRE - case 'keyw': // KEYWord - case 'ldes': - case 'pcst': // PodCaST - case 'pgap': // GAPless Playback - case 'purd': // PURchase Date - case 'purl': // Podcast URL - case 'rati': - case 'rndu': - case 'rpdu': - case 'rtng': // RaTiNG - case 'stik': - case 'tmpo': // TeMPO (BPM) - case 'trkn': // TRacK Number - case 'tves': // TV EpiSode - case 'tvnn': // TV Network Name - case 'tvsh': // TV SHow Name - case 'tvsn': // TV SeasoN - case 'akID': // iTunes store account type - case 'apID': - case 'atID': - case 'cmID': - case 'cnID': - case 'geID': - case 'plID': - case 'sfID': // iTunes store country - case '©alb': // ALBum - case '©art': // ARTist - case '©ART': - case '©aut': - case '©cmt': // CoMmenT - case '©com': // COMposer - case '©cpy': - case '©day': // content created year - case '©dir': - case '©ed1': - case '©ed2': - case '©ed3': - case '©ed4': - case '©ed5': - case '©ed6': - case '©ed7': - case '©ed8': - case '©ed9': - case '©enc': - case '©fmt': - case '©gen': // GENre - case '©grp': // GRouPing - case '©hst': - case '©inf': - case '©lyr': // LYRics - case '©mak': - case '©mod': - case '©nam': // full NAMe - case '©ope': - case '©PRD': - case '©prd': - case '©prf': - case '©req': - case '©src': - case '©swr': - case '©too': // encoder - case '©trk': // TRacK - case '©url': - case '©wrn': - case '©wrt': // WRiTer - case '----': // itunes specific - if ($atom_parent == 'udta') { - // User data atom handler - $atom_structure['data_length'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 2)); - $atom_structure['language_id'] = getid3_lib::BigEndian2Int(substr($atom_data, 2, 2)); - $atom_structure['data'] = substr($atom_data, 4); - - $atom_structure['language'] = $this->QuicktimeLanguageLookup($atom_structure['language_id']); - if (empty($info['comments']['language']) || (!in_array($atom_structure['language'], $info['comments']['language']))) { - $info['comments']['language'][] = $atom_structure['language']; - } - } else { - // Apple item list box atom handler - $atomoffset = 0; - if (substr($atom_data, 2, 2) == "\x10\xB5") { - // not sure what it means, but observed on iPhone4 data. - // Each $atom_data has 2 bytes of datasize, plus 0x10B5, then data - while ($atomoffset < strlen($atom_data)) { - $boxsmallsize = getid3_lib::BigEndian2Int(substr($atom_data, $atomoffset, 2)); - $boxsmalltype = substr($atom_data, $atomoffset + 2, 2); - $boxsmalldata = substr($atom_data, $atomoffset + 4, $boxsmallsize); - switch ($boxsmalltype) { - case "\x10\xB5": - $atom_structure['data'] = $boxsmalldata; - break; - default: - $info['warning'][] = 'Unknown QuickTime smallbox type: "'.getid3_lib::PrintHexBytes($boxsmalltype).'" at offset '.$baseoffset; - $atom_structure['data'] = $atom_data; - break; - } - $atomoffset += (4 + $boxsmallsize); - } - } else { - while ($atomoffset < strlen($atom_data)) { - $boxsize = getid3_lib::BigEndian2Int(substr($atom_data, $atomoffset, 4)); - $boxtype = substr($atom_data, $atomoffset + 4, 4); - $boxdata = substr($atom_data, $atomoffset + 8, $boxsize - 8); - - switch ($boxtype) { - case 'mean': - case 'name': - $atom_structure[$boxtype] = substr($boxdata, 4); - break; - - case 'data': - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($boxdata, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($boxdata, 1, 3)); - switch ($atom_structure['flags_raw']) { - case 0: // data flag - case 21: // tmpo/cpil flag - switch ($atomname) { - case 'cpil': - case 'pcst': - case 'pgap': - $atom_structure['data'] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 1)); - break; - - case 'tmpo': - $atom_structure['data'] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 2)); - break; - - case 'disk': - case 'trkn': - $num = getid3_lib::BigEndian2Int(substr($boxdata, 10, 2)); - $num_total = getid3_lib::BigEndian2Int(substr($boxdata, 12, 2)); - $atom_structure['data'] = empty($num) ? '' : $num; - $atom_structure['data'] .= empty($num_total) ? '' : '/'.$num_total; - break; - - case 'gnre': - $GenreID = getid3_lib::BigEndian2Int(substr($boxdata, 8, 4)); - $atom_structure['data'] = getid3_id3v1::LookupGenreName($GenreID - 1); - break; - - case 'rtng': - $atom_structure[$atomname] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 1)); - $atom_structure['data'] = $this->QuicktimeContentRatingLookup($atom_structure[$atomname]); - break; - - case 'stik': - $atom_structure[$atomname] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 1)); - $atom_structure['data'] = $this->QuicktimeSTIKLookup($atom_structure[$atomname]); - break; - - case 'sfID': - $atom_structure[$atomname] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 4)); - $atom_structure['data'] = $this->QuicktimeStoreFrontCodeLookup($atom_structure[$atomname]); - break; - - case 'egid': - case 'purl': - $atom_structure['data'] = substr($boxdata, 8); - break; - - default: - $atom_structure['data'] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 4)); - } - break; - - case 1: // text flag - case 13: // image flag - default: - $atom_structure['data'] = substr($boxdata, 8); - break; - - } - break; - - default: - $info['warning'][] = 'Unknown QuickTime box type: "'.getid3_lib::PrintHexBytes($boxtype).'" at offset '.$baseoffset; - $atom_structure['data'] = $atom_data; - - } - $atomoffset += $boxsize; - } - } - } - $this->CopyToAppropriateCommentsSection($atomname, $atom_structure['data'], $atom_structure['name']); - break; - - - case 'play': // auto-PLAY atom - $atom_structure['autoplay'] = (bool) getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - - $info['quicktime']['autoplay'] = $atom_structure['autoplay']; - break; - - - case 'WLOC': // Window LOCation atom - $atom_structure['location_x'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 2)); - $atom_structure['location_y'] = getid3_lib::BigEndian2Int(substr($atom_data, 2, 2)); - break; - - - case 'LOOP': // LOOPing atom - case 'SelO': // play SELection Only atom - case 'AllF': // play ALL Frames atom - $atom_structure['data'] = getid3_lib::BigEndian2Int($atom_data); - break; - - - case 'name': // - case 'MCPS': // Media Cleaner PRo - case '@PRM': // adobe PReMiere version - case '@PRQ': // adobe PRemiere Quicktime version - $atom_structure['data'] = $atom_data; - break; - - - case 'cmvd': // Compressed MooV Data atom - // Code by ubergeekØubergeek*tv based on information from - // http://developer.apple.com/quicktime/icefloe/dispatch012.html - $atom_structure['unCompressedSize'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 4)); - - $CompressedFileData = substr($atom_data, 4); - if ($UncompressedHeader = @gzuncompress($CompressedFileData)) { - $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($UncompressedHeader, 0, $atomHierarchy, $ParseAllPossibleAtoms); - } else { - $info['warning'][] = 'Error decompressing compressed MOV atom at offset '.$atom_structure['offset']; - } - break; - - - case 'dcom': // Data COMpression atom - $atom_structure['compression_id'] = $atom_data; - $atom_structure['compression_text'] = $this->QuicktimeDCOMLookup($atom_data); - break; - - - case 'rdrf': // Reference movie Data ReFerence atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); - $atom_structure['flags']['internal_data'] = (bool) ($atom_structure['flags_raw'] & 0x000001); - - $atom_structure['reference_type_name'] = substr($atom_data, 4, 4); - $atom_structure['reference_length'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 4)); - switch ($atom_structure['reference_type_name']) { - case 'url ': - $atom_structure['url'] = $this->NoNullString(substr($atom_data, 12)); - break; - - case 'alis': - $atom_structure['file_alias'] = substr($atom_data, 12); - break; - - case 'rsrc': - $atom_structure['resource_alias'] = substr($atom_data, 12); - break; - - default: - $atom_structure['data'] = substr($atom_data, 12); - break; - } - break; - - - case 'rmqu': // Reference Movie QUality atom - $atom_structure['movie_quality'] = getid3_lib::BigEndian2Int($atom_data); - break; - - - case 'rmcs': // Reference Movie Cpu Speed atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['cpu_speed_rating'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); - break; - - - case 'rmvc': // Reference Movie Version Check atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['gestalt_selector'] = substr($atom_data, 4, 4); - $atom_structure['gestalt_value_mask'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 4)); - $atom_structure['gestalt_value'] = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4)); - $atom_structure['gestalt_check_type'] = getid3_lib::BigEndian2Int(substr($atom_data, 14, 2)); - break; - - - case 'rmcd': // Reference Movie Component check atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['component_type'] = substr($atom_data, 4, 4); - $atom_structure['component_subtype'] = substr($atom_data, 8, 4); - $atom_structure['component_manufacturer'] = substr($atom_data, 12, 4); - $atom_structure['component_flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4)); - $atom_structure['component_flags_mask'] = getid3_lib::BigEndian2Int(substr($atom_data, 20, 4)); - $atom_structure['component_min_version'] = getid3_lib::BigEndian2Int(substr($atom_data, 24, 4)); - break; - - - case 'rmdr': // Reference Movie Data Rate atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['data_rate'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - - $atom_structure['data_rate_bps'] = $atom_structure['data_rate'] * 10; - break; - - - case 'rmla': // Reference Movie Language Atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['language_id'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); - - $atom_structure['language'] = $this->QuicktimeLanguageLookup($atom_structure['language_id']); - if (empty($info['comments']['language']) || (!in_array($atom_structure['language'], $info['comments']['language']))) { - $info['comments']['language'][] = $atom_structure['language']; - } - break; - - - case 'rmla': // Reference Movie Language Atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['track_id'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); - break; - - - case 'ptv ': // Print To Video - defines a movie's full screen mode - // http://developer.apple.com/documentation/QuickTime/APIREF/SOURCESIV/at_ptv-_pg.htm - $atom_structure['display_size_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 2)); - $atom_structure['reserved_1'] = getid3_lib::BigEndian2Int(substr($atom_data, 2, 2)); // hardcoded: 0x0000 - $atom_structure['reserved_2'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); // hardcoded: 0x0000 - $atom_structure['slide_show_flag'] = getid3_lib::BigEndian2Int(substr($atom_data, 6, 1)); - $atom_structure['play_on_open_flag'] = getid3_lib::BigEndian2Int(substr($atom_data, 7, 1)); - - $atom_structure['flags']['play_on_open'] = (bool) $atom_structure['play_on_open_flag']; - $atom_structure['flags']['slide_show'] = (bool) $atom_structure['slide_show_flag']; - - $ptv_lookup[0] = 'normal'; - $ptv_lookup[1] = 'double'; - $ptv_lookup[2] = 'half'; - $ptv_lookup[3] = 'full'; - $ptv_lookup[4] = 'current'; - if (isset($ptv_lookup[$atom_structure['display_size_raw']])) { - $atom_structure['display_size'] = $ptv_lookup[$atom_structure['display_size_raw']]; - } else { - $info['warning'][] = 'unknown "ptv " display constant ('.$atom_structure['display_size_raw'].')'; - } - break; - - - case 'stsd': // Sample Table Sample Description atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $stsdEntriesDataOffset = 8; - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['sample_description_table'][$i]['size'] = getid3_lib::BigEndian2Int(substr($atom_data, $stsdEntriesDataOffset, 4)); - $stsdEntriesDataOffset += 4; - $atom_structure['sample_description_table'][$i]['data_format'] = substr($atom_data, $stsdEntriesDataOffset, 4); - $stsdEntriesDataOffset += 4; - $atom_structure['sample_description_table'][$i]['reserved'] = getid3_lib::BigEndian2Int(substr($atom_data, $stsdEntriesDataOffset, 6)); - $stsdEntriesDataOffset += 6; - $atom_structure['sample_description_table'][$i]['reference_index'] = getid3_lib::BigEndian2Int(substr($atom_data, $stsdEntriesDataOffset, 2)); - $stsdEntriesDataOffset += 2; - $atom_structure['sample_description_table'][$i]['data'] = substr($atom_data, $stsdEntriesDataOffset, ($atom_structure['sample_description_table'][$i]['size'] - 4 - 4 - 6 - 2)); - $stsdEntriesDataOffset += ($atom_structure['sample_description_table'][$i]['size'] - 4 - 4 - 6 - 2); - - $atom_structure['sample_description_table'][$i]['encoder_version'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 0, 2)); - $atom_structure['sample_description_table'][$i]['encoder_revision'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 2, 2)); - $atom_structure['sample_description_table'][$i]['encoder_vendor'] = substr($atom_structure['sample_description_table'][$i]['data'], 4, 4); - - switch ($atom_structure['sample_description_table'][$i]['encoder_vendor']) { - - case "\x00\x00\x00\x00": - // audio atom - $atom_structure['sample_description_table'][$i]['audio_channels'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 8, 2)); - $atom_structure['sample_description_table'][$i]['audio_bit_depth'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 10, 2)); - $atom_structure['sample_description_table'][$i]['audio_compression_id'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 12, 2)); - $atom_structure['sample_description_table'][$i]['audio_packet_size'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 14, 2)); - $atom_structure['sample_description_table'][$i]['audio_sample_rate'] = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 16, 4)); - - switch ($atom_structure['sample_description_table'][$i]['data_format']) { - case 'avc1': - case 'mp4v': - $info['fileformat'] = 'mp4'; - $info['video']['fourcc'] = $atom_structure['sample_description_table'][$i]['data_format']; - //$info['warning'][] = 'This version of getID3() ['.$this->getid3->version().'] does not fully support MPEG-4 audio/video streams'; // 2011-02-18: why am I warning about this again? What's not supported? - break; - - case 'qtvr': - $info['video']['dataformat'] = 'quicktimevr'; - break; - - case 'mp4a': - default: - $info['quicktime']['audio']['codec'] = $this->QuicktimeAudioCodecLookup($atom_structure['sample_description_table'][$i]['data_format']); - $info['quicktime']['audio']['sample_rate'] = $atom_structure['sample_description_table'][$i]['audio_sample_rate']; - $info['quicktime']['audio']['channels'] = $atom_structure['sample_description_table'][$i]['audio_channels']; - $info['quicktime']['audio']['bit_depth'] = $atom_structure['sample_description_table'][$i]['audio_bit_depth']; - $info['audio']['codec'] = $info['quicktime']['audio']['codec']; - $info['audio']['sample_rate'] = $info['quicktime']['audio']['sample_rate']; - $info['audio']['channels'] = $info['quicktime']['audio']['channels']; - $info['audio']['bits_per_sample'] = $info['quicktime']['audio']['bit_depth']; - switch ($atom_structure['sample_description_table'][$i]['data_format']) { - case 'raw ': // PCM - case 'alac': // Apple Lossless Audio Codec - $info['audio']['lossless'] = true; - break; - default: - $info['audio']['lossless'] = false; - break; - } - break; - } - break; - - default: - switch ($atom_structure['sample_description_table'][$i]['data_format']) { - case 'mp4s': - $info['fileformat'] = 'mp4'; - break; - - default: - // video atom - $atom_structure['sample_description_table'][$i]['video_temporal_quality'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 8, 4)); - $atom_structure['sample_description_table'][$i]['video_spatial_quality'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 12, 4)); - $atom_structure['sample_description_table'][$i]['video_frame_width'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 16, 2)); - $atom_structure['sample_description_table'][$i]['video_frame_height'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 18, 2)); - $atom_structure['sample_description_table'][$i]['video_resolution_x'] = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 20, 4)); - $atom_structure['sample_description_table'][$i]['video_resolution_y'] = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 24, 4)); - $atom_structure['sample_description_table'][$i]['video_data_size'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 28, 4)); - $atom_structure['sample_description_table'][$i]['video_frame_count'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 32, 2)); - $atom_structure['sample_description_table'][$i]['video_encoder_name_len'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 34, 1)); - $atom_structure['sample_description_table'][$i]['video_encoder_name'] = substr($atom_structure['sample_description_table'][$i]['data'], 35, $atom_structure['sample_description_table'][$i]['video_encoder_name_len']); - $atom_structure['sample_description_table'][$i]['video_pixel_color_depth'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 66, 2)); - $atom_structure['sample_description_table'][$i]['video_color_table_id'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 68, 2)); - - $atom_structure['sample_description_table'][$i]['video_pixel_color_type'] = (($atom_structure['sample_description_table'][$i]['video_pixel_color_depth'] > 32) ? 'grayscale' : 'color'); - $atom_structure['sample_description_table'][$i]['video_pixel_color_name'] = $this->QuicktimeColorNameLookup($atom_structure['sample_description_table'][$i]['video_pixel_color_depth']); - - if ($atom_structure['sample_description_table'][$i]['video_pixel_color_name'] != 'invalid') { - $info['quicktime']['video']['codec_fourcc'] = $atom_structure['sample_description_table'][$i]['data_format']; - $info['quicktime']['video']['codec_fourcc_lookup'] = $this->QuicktimeVideoCodecLookup($atom_structure['sample_description_table'][$i]['data_format']); - $info['quicktime']['video']['codec'] = (($atom_structure['sample_description_table'][$i]['video_encoder_name_len'] > 0) ? $atom_structure['sample_description_table'][$i]['video_encoder_name'] : $atom_structure['sample_description_table'][$i]['data_format']); - $info['quicktime']['video']['color_depth'] = $atom_structure['sample_description_table'][$i]['video_pixel_color_depth']; - $info['quicktime']['video']['color_depth_name'] = $atom_structure['sample_description_table'][$i]['video_pixel_color_name']; - - $info['video']['codec'] = $info['quicktime']['video']['codec']; - $info['video']['bits_per_sample'] = $info['quicktime']['video']['color_depth']; - } - $info['video']['lossless'] = false; - $info['video']['pixel_aspect_ratio'] = (float) 1; - break; - } - break; - } - switch (strtolower($atom_structure['sample_description_table'][$i]['data_format'])) { - case 'mp4a': - $info['audio']['dataformat'] = 'mp4'; - $info['quicktime']['audio']['codec'] = 'mp4'; - break; - - case '3ivx': - case '3iv1': - case '3iv2': - $info['video']['dataformat'] = '3ivx'; - break; - - case 'xvid': - $info['video']['dataformat'] = 'xvid'; - break; - - case 'mp4v': - $info['video']['dataformat'] = 'mpeg4'; - break; - - case 'divx': - case 'div1': - case 'div2': - case 'div3': - case 'div4': - case 'div5': - case 'div6': - $info['video']['dataformat'] = 'divx'; - break; - - default: - // do nothing - break; - } - unset($atom_structure['sample_description_table'][$i]['data']); - } - break; - - - case 'stts': // Sample Table Time-to-Sample atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $sttsEntriesDataOffset = 8; - //$FrameRateCalculatorArray = array(); - $frames_count = 0; - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['time_to_sample_table'][$i]['sample_count'] = getid3_lib::BigEndian2Int(substr($atom_data, $sttsEntriesDataOffset, 4)); - $sttsEntriesDataOffset += 4; - $atom_structure['time_to_sample_table'][$i]['sample_duration'] = getid3_lib::BigEndian2Int(substr($atom_data, $sttsEntriesDataOffset, 4)); - $sttsEntriesDataOffset += 4; - - $frames_count += $atom_structure['time_to_sample_table'][$i]['sample_count']; - - // THIS SECTION REPLACED WITH CODE IN "stbl" ATOM - //if (!empty($info['quicktime']['time_scale']) && ($atom_structure['time_to_sample_table'][$i]['sample_duration'] > 0)) { - // $stts_new_framerate = $info['quicktime']['time_scale'] / $atom_structure['time_to_sample_table'][$i]['sample_duration']; - // if ($stts_new_framerate <= 60) { - // // some atoms have durations of "1" giving a very large framerate, which probably is not right - // $info['video']['frame_rate'] = max($info['video']['frame_rate'], $stts_new_framerate); - // } - //} - // - //$FrameRateCalculatorArray[($info['quicktime']['time_scale'] / $atom_structure['time_to_sample_table'][$i]['sample_duration'])] += $atom_structure['time_to_sample_table'][$i]['sample_count']; - } - $info['quicktime']['stts_framecount'][] = $frames_count; - //$sttsFramesTotal = 0; - //$sttsSecondsTotal = 0; - //foreach ($FrameRateCalculatorArray as $frames_per_second => $frame_count) { - // if (($frames_per_second > 60) || ($frames_per_second < 1)) { - // // not video FPS information, probably audio information - // $sttsFramesTotal = 0; - // $sttsSecondsTotal = 0; - // break; - // } - // $sttsFramesTotal += $frame_count; - // $sttsSecondsTotal += $frame_count / $frames_per_second; - //} - //if (($sttsFramesTotal > 0) && ($sttsSecondsTotal > 0)) { - // if (($sttsFramesTotal / $sttsSecondsTotal) > $info['video']['frame_rate']) { - // $info['video']['frame_rate'] = $sttsFramesTotal / $sttsSecondsTotal; - // } - //} - break; - - - case 'stss': // Sample Table Sync Sample (key frames) atom - if ($ParseAllPossibleAtoms) { - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $stssEntriesDataOffset = 8; - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['time_to_sample_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stssEntriesDataOffset, 4)); - $stssEntriesDataOffset += 4; - } - } - break; - - - case 'stsc': // Sample Table Sample-to-Chunk atom - if ($ParseAllPossibleAtoms) { - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $stscEntriesDataOffset = 8; - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['sample_to_chunk_table'][$i]['first_chunk'] = getid3_lib::BigEndian2Int(substr($atom_data, $stscEntriesDataOffset, 4)); - $stscEntriesDataOffset += 4; - $atom_structure['sample_to_chunk_table'][$i]['samples_per_chunk'] = getid3_lib::BigEndian2Int(substr($atom_data, $stscEntriesDataOffset, 4)); - $stscEntriesDataOffset += 4; - $atom_structure['sample_to_chunk_table'][$i]['sample_description'] = getid3_lib::BigEndian2Int(substr($atom_data, $stscEntriesDataOffset, 4)); - $stscEntriesDataOffset += 4; - } - } - break; - - - case 'stsz': // Sample Table SiZe atom - if ($ParseAllPossibleAtoms) { - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['sample_size'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 4)); - $stszEntriesDataOffset = 12; - if ($atom_structure['sample_size'] == 0) { - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['sample_size_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stszEntriesDataOffset, 4)); - $stszEntriesDataOffset += 4; - } - } - } - break; - - - case 'stco': // Sample Table Chunk Offset atom - if ($ParseAllPossibleAtoms) { - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $stcoEntriesDataOffset = 8; - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['chunk_offset_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stcoEntriesDataOffset, 4)); - $stcoEntriesDataOffset += 4; - } - } - break; - - - case 'co64': // Chunk Offset 64-bit (version of "stco" that supports > 2GB files) - if ($ParseAllPossibleAtoms) { - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $stcoEntriesDataOffset = 8; - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['chunk_offset_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stcoEntriesDataOffset, 8)); - $stcoEntriesDataOffset += 8; - } - } - break; - - - case 'dref': // Data REFerence atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $drefDataOffset = 8; - for ($i = 0; $i < $atom_structure['number_entries']; $i++) { - $atom_structure['data_references'][$i]['size'] = getid3_lib::BigEndian2Int(substr($atom_data, $drefDataOffset, 4)); - $drefDataOffset += 4; - $atom_structure['data_references'][$i]['type'] = substr($atom_data, $drefDataOffset, 4); - $drefDataOffset += 4; - $atom_structure['data_references'][$i]['version'] = getid3_lib::BigEndian2Int(substr($atom_data, $drefDataOffset, 1)); - $drefDataOffset += 1; - $atom_structure['data_references'][$i]['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, $drefDataOffset, 3)); // hardcoded: 0x0000 - $drefDataOffset += 3; - $atom_structure['data_references'][$i]['data'] = substr($atom_data, $drefDataOffset, ($atom_structure['data_references'][$i]['size'] - 4 - 4 - 1 - 3)); - $drefDataOffset += ($atom_structure['data_references'][$i]['size'] - 4 - 4 - 1 - 3); - - $atom_structure['data_references'][$i]['flags']['self_reference'] = (bool) ($atom_structure['data_references'][$i]['flags_raw'] & 0x001); - } - break; - - - case 'gmin': // base Media INformation atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['graphics_mode'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); - $atom_structure['opcolor_red'] = getid3_lib::BigEndian2Int(substr($atom_data, 6, 2)); - $atom_structure['opcolor_green'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 2)); - $atom_structure['opcolor_blue'] = getid3_lib::BigEndian2Int(substr($atom_data, 10, 2)); - $atom_structure['balance'] = getid3_lib::BigEndian2Int(substr($atom_data, 12, 2)); - $atom_structure['reserved'] = getid3_lib::BigEndian2Int(substr($atom_data, 14, 2)); - break; - - - case 'smhd': // Sound Media information HeaDer atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['balance'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); - $atom_structure['reserved'] = getid3_lib::BigEndian2Int(substr($atom_data, 6, 2)); - break; - - - case 'vmhd': // Video Media information HeaDer atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); - $atom_structure['graphics_mode'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); - $atom_structure['opcolor_red'] = getid3_lib::BigEndian2Int(substr($atom_data, 6, 2)); - $atom_structure['opcolor_green'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 2)); - $atom_structure['opcolor_blue'] = getid3_lib::BigEndian2Int(substr($atom_data, 10, 2)); - - $atom_structure['flags']['no_lean_ahead'] = (bool) ($atom_structure['flags_raw'] & 0x001); - break; - - - case 'hdlr': // HanDLeR reference atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['component_type'] = substr($atom_data, 4, 4); - $atom_structure['component_subtype'] = substr($atom_data, 8, 4); - $atom_structure['component_manufacturer'] = substr($atom_data, 12, 4); - $atom_structure['component_flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4)); - $atom_structure['component_flags_mask'] = getid3_lib::BigEndian2Int(substr($atom_data, 20, 4)); - $atom_structure['component_name'] = $this->Pascal2String(substr($atom_data, 24)); - - if (($atom_structure['component_subtype'] == 'STpn') && ($atom_structure['component_manufacturer'] == 'zzzz')) { - $info['video']['dataformat'] = 'quicktimevr'; - } - break; - - - case 'mdhd': // MeDia HeaDer atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['creation_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $atom_structure['modify_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 4)); - $atom_structure['time_scale'] = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4)); - $atom_structure['duration'] = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4)); - $atom_structure['language_id'] = getid3_lib::BigEndian2Int(substr($atom_data, 20, 2)); - $atom_structure['quality'] = getid3_lib::BigEndian2Int(substr($atom_data, 22, 2)); - - if ($atom_structure['time_scale'] == 0) { - $info['error'][] = 'Corrupt Quicktime file: mdhd.time_scale == zero'; - return false; - } - $info['quicktime']['time_scale'] = (isset($info['quicktime']['time_scale']) ? max($info['quicktime']['time_scale'], $atom_structure['time_scale']) : $atom_structure['time_scale']); - - $atom_structure['creation_time_unix'] = getid3_lib::DateMac2Unix($atom_structure['creation_time']); - $atom_structure['modify_time_unix'] = getid3_lib::DateMac2Unix($atom_structure['modify_time']); - $atom_structure['playtime_seconds'] = $atom_structure['duration'] / $atom_structure['time_scale']; - $atom_structure['language'] = $this->QuicktimeLanguageLookup($atom_structure['language_id']); - if (empty($info['comments']['language']) || (!in_array($atom_structure['language'], $info['comments']['language']))) { - $info['comments']['language'][] = $atom_structure['language']; - } - break; - - - case 'pnot': // Preview atom - $atom_structure['modification_date'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 4)); // "standard Macintosh format" - $atom_structure['version_number'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); // hardcoded: 0x00 - $atom_structure['atom_type'] = substr($atom_data, 6, 4); // usually: 'PICT' - $atom_structure['atom_index'] = getid3_lib::BigEndian2Int(substr($atom_data, 10, 2)); // usually: 0x01 - - $atom_structure['modification_date_unix'] = getid3_lib::DateMac2Unix($atom_structure['modification_date']); - break; - - - case 'crgn': // Clipping ReGioN atom - $atom_structure['region_size'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 2)); // The Region size, Region boundary box, - $atom_structure['boundary_box'] = getid3_lib::BigEndian2Int(substr($atom_data, 2, 8)); // and Clipping region data fields - $atom_structure['clipping_data'] = substr($atom_data, 10); // constitute a QuickDraw region. - break; - - - case 'load': // track LOAD settings atom - $atom_structure['preload_start_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 4)); - $atom_structure['preload_duration'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $atom_structure['preload_flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 4)); - $atom_structure['default_hints_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4)); - - $atom_structure['default_hints']['double_buffer'] = (bool) ($atom_structure['default_hints_raw'] & 0x0020); - $atom_structure['default_hints']['high_quality'] = (bool) ($atom_structure['default_hints_raw'] & 0x0100); - break; - - - case 'tmcd': // TiMe CoDe atom - case 'chap': // CHAPter list atom - case 'sync': // SYNChronization atom - case 'scpt': // tranSCriPT atom - case 'ssrc': // non-primary SouRCe atom - for ($i = 0; $i < (strlen($atom_data) % 4); $i++) { - $atom_structure['track_id'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $i * 4, 4)); - } - break; - - - case 'elst': // Edit LiST atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - for ($i = 0; $i < $atom_structure['number_entries']; $i++ ) { - $atom_structure['edit_list'][$i]['track_duration'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($i * 12) + 0, 4)); - $atom_structure['edit_list'][$i]['media_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($i * 12) + 4, 4)); - $atom_structure['edit_list'][$i]['media_rate'] = getid3_lib::FixedPoint16_16(substr($atom_data, 8 + ($i * 12) + 8, 4)); - } - break; - - - case 'kmat': // compressed MATte atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); // hardcoded: 0x0000 - $atom_structure['matte_data_raw'] = substr($atom_data, 4); - break; - - - case 'ctab': // Color TABle atom - $atom_structure['color_table_seed'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 4)); // hardcoded: 0x00000000 - $atom_structure['color_table_flags'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); // hardcoded: 0x8000 - $atom_structure['color_table_size'] = getid3_lib::BigEndian2Int(substr($atom_data, 6, 2)) + 1; - for ($colortableentry = 0; $colortableentry < $atom_structure['color_table_size']; $colortableentry++) { - $atom_structure['color_table'][$colortableentry]['alpha'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 0, 2)); - $atom_structure['color_table'][$colortableentry]['red'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 2, 2)); - $atom_structure['color_table'][$colortableentry]['green'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 4, 2)); - $atom_structure['color_table'][$colortableentry]['blue'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 6, 2)); - } - break; - - - case 'mvhd': // MoVie HeaDer atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); - $atom_structure['creation_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $atom_structure['modify_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 4)); - $atom_structure['time_scale'] = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4)); - $atom_structure['duration'] = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4)); - $atom_structure['preferred_rate'] = getid3_lib::FixedPoint16_16(substr($atom_data, 20, 4)); - $atom_structure['preferred_volume'] = getid3_lib::FixedPoint8_8(substr($atom_data, 24, 2)); - $atom_structure['reserved'] = substr($atom_data, 26, 10); - $atom_structure['matrix_a'] = getid3_lib::FixedPoint16_16(substr($atom_data, 36, 4)); - $atom_structure['matrix_b'] = getid3_lib::FixedPoint16_16(substr($atom_data, 40, 4)); - $atom_structure['matrix_u'] = getid3_lib::FixedPoint2_30(substr($atom_data, 44, 4)); - $atom_structure['matrix_c'] = getid3_lib::FixedPoint16_16(substr($atom_data, 48, 4)); - $atom_structure['matrix_d'] = getid3_lib::FixedPoint16_16(substr($atom_data, 52, 4)); - $atom_structure['matrix_v'] = getid3_lib::FixedPoint2_30(substr($atom_data, 56, 4)); - $atom_structure['matrix_x'] = getid3_lib::FixedPoint16_16(substr($atom_data, 60, 4)); - $atom_structure['matrix_y'] = getid3_lib::FixedPoint16_16(substr($atom_data, 64, 4)); - $atom_structure['matrix_w'] = getid3_lib::FixedPoint2_30(substr($atom_data, 68, 4)); - $atom_structure['preview_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 72, 4)); - $atom_structure['preview_duration'] = getid3_lib::BigEndian2Int(substr($atom_data, 76, 4)); - $atom_structure['poster_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 80, 4)); - $atom_structure['selection_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 84, 4)); - $atom_structure['selection_duration'] = getid3_lib::BigEndian2Int(substr($atom_data, 88, 4)); - $atom_structure['current_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 92, 4)); - $atom_structure['next_track_id'] = getid3_lib::BigEndian2Int(substr($atom_data, 96, 4)); - - if ($atom_structure['time_scale'] == 0) { - $info['error'][] = 'Corrupt Quicktime file: mvhd.time_scale == zero'; - return false; - } - $atom_structure['creation_time_unix'] = getid3_lib::DateMac2Unix($atom_structure['creation_time']); - $atom_structure['modify_time_unix'] = getid3_lib::DateMac2Unix($atom_structure['modify_time']); - $info['quicktime']['time_scale'] = (isset($info['quicktime']['time_scale']) ? max($info['quicktime']['time_scale'], $atom_structure['time_scale']) : $atom_structure['time_scale']); - $info['quicktime']['display_scale'] = $atom_structure['matrix_a']; - $info['playtime_seconds'] = $atom_structure['duration'] / $atom_structure['time_scale']; - break; - - - case 'tkhd': // TracK HeaDer atom - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); - $atom_structure['creation_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $atom_structure['modify_time'] = getid3_lib::BigEndian2Int(substr($atom_data, 8, 4)); - $atom_structure['trackid'] = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4)); - $atom_structure['reserved1'] = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4)); - $atom_structure['duration'] = getid3_lib::BigEndian2Int(substr($atom_data, 20, 4)); - $atom_structure['reserved2'] = getid3_lib::BigEndian2Int(substr($atom_data, 24, 8)); - $atom_structure['layer'] = getid3_lib::BigEndian2Int(substr($atom_data, 32, 2)); - $atom_structure['alternate_group'] = getid3_lib::BigEndian2Int(substr($atom_data, 34, 2)); - $atom_structure['volume'] = getid3_lib::FixedPoint8_8(substr($atom_data, 36, 2)); - $atom_structure['reserved3'] = getid3_lib::BigEndian2Int(substr($atom_data, 38, 2)); - $atom_structure['matrix_a'] = getid3_lib::FixedPoint16_16(substr($atom_data, 40, 4)); - $atom_structure['matrix_b'] = getid3_lib::FixedPoint16_16(substr($atom_data, 44, 4)); - $atom_structure['matrix_u'] = getid3_lib::FixedPoint16_16(substr($atom_data, 48, 4)); - $atom_structure['matrix_c'] = getid3_lib::FixedPoint16_16(substr($atom_data, 52, 4)); - $atom_structure['matrix_d'] = getid3_lib::FixedPoint16_16(substr($atom_data, 56, 4)); - $atom_structure['matrix_v'] = getid3_lib::FixedPoint16_16(substr($atom_data, 60, 4)); - $atom_structure['matrix_x'] = getid3_lib::FixedPoint2_30(substr($atom_data, 64, 4)); - $atom_structure['matrix_y'] = getid3_lib::FixedPoint2_30(substr($atom_data, 68, 4)); - $atom_structure['matrix_w'] = getid3_lib::FixedPoint2_30(substr($atom_data, 72, 4)); - $atom_structure['width'] = getid3_lib::FixedPoint16_16(substr($atom_data, 76, 4)); - $atom_structure['height'] = getid3_lib::FixedPoint16_16(substr($atom_data, 80, 4)); - - $atom_structure['flags']['enabled'] = (bool) ($atom_structure['flags_raw'] & 0x0001); - $atom_structure['flags']['in_movie'] = (bool) ($atom_structure['flags_raw'] & 0x0002); - $atom_structure['flags']['in_preview'] = (bool) ($atom_structure['flags_raw'] & 0x0004); - $atom_structure['flags']['in_poster'] = (bool) ($atom_structure['flags_raw'] & 0x0008); - $atom_structure['creation_time_unix'] = getid3_lib::DateMac2Unix($atom_structure['creation_time']); - $atom_structure['modify_time_unix'] = getid3_lib::DateMac2Unix($atom_structure['modify_time']); - - if ($atom_structure['flags']['enabled'] == 1) { - if (!isset($info['video']['resolution_x']) || !isset($info['video']['resolution_y'])) { - $info['video']['resolution_x'] = $atom_structure['width']; - $info['video']['resolution_y'] = $atom_structure['height']; - } - $info['video']['resolution_x'] = max($info['video']['resolution_x'], $atom_structure['width']); - $info['video']['resolution_y'] = max($info['video']['resolution_y'], $atom_structure['height']); - $info['quicktime']['video']['resolution_x'] = $info['video']['resolution_x']; - $info['quicktime']['video']['resolution_y'] = $info['video']['resolution_y']; - } else { - if (isset($info['video']['resolution_x'])) { unset($info['video']['resolution_x']); } - if (isset($info['video']['resolution_y'])) { unset($info['video']['resolution_y']); } - if (isset($info['quicktime']['video'])) { unset($info['quicktime']['video']); } - } - break; - - - case 'iods': // Initial Object DeScriptor atom - // http://www.koders.com/c/fid1FAB3E762903DC482D8A246D4A4BF9F28E049594.aspx?s=windows.h - // http://libquicktime.sourcearchive.com/documentation/1.0.2plus-pdebian/iods_8c-source.html - $offset = 0; - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 3)); - $offset += 3; - $atom_structure['mp4_iod_tag'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - $atom_structure['length'] = $this->quicktime_read_mp4_descr_length($atom_data, $offset); - //$offset already adjusted by quicktime_read_mp4_descr_length() - $atom_structure['object_descriptor_id'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 2)); - $offset += 2; - $atom_structure['od_profile_level'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - $atom_structure['scene_profile_level'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - $atom_structure['audio_profile_id'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - $atom_structure['video_profile_id'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - $atom_structure['graphics_profile_level'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - - $atom_structure['num_iods_tracks'] = ($atom_structure['length'] - 7) / 6; // 6 bytes would only be right if all tracks use 1-byte length fields - for ($i = 0; $i < $atom_structure['num_iods_tracks']; $i++) { - $atom_structure['track'][$i]['ES_ID_IncTag'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1)); - $offset += 1; - $atom_structure['track'][$i]['length'] = $this->quicktime_read_mp4_descr_length($atom_data, $offset); - //$offset already adjusted by quicktime_read_mp4_descr_length() - $atom_structure['track'][$i]['track_id'] = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 4)); - $offset += 4; - } - - $atom_structure['audio_profile_name'] = $this->QuicktimeIODSaudioProfileName($atom_structure['audio_profile_id']); - $atom_structure['video_profile_name'] = $this->QuicktimeIODSvideoProfileName($atom_structure['video_profile_id']); - break; - - case 'ftyp': // FileTYPe (?) atom (for MP4 it seems) - $atom_structure['signature'] = substr($atom_data, 0, 4); - $atom_structure['unknown_1'] = getid3_lib::BigEndian2Int(substr($atom_data, 4, 4)); - $atom_structure['fourcc'] = substr($atom_data, 8, 4); - break; - - case 'mdat': // Media DATa atom - case 'free': // FREE space atom - case 'skip': // SKIP atom - case 'wide': // 64-bit expansion placeholder atom - // 'mdat' data is too big to deal with, contains no useful metadata - // 'free', 'skip' and 'wide' are just padding, contains no useful data at all - - // When writing QuickTime files, it is sometimes necessary to update an atom's size. - // It is impossible to update a 32-bit atom to a 64-bit atom since the 32-bit atom - // is only 8 bytes in size, and the 64-bit atom requires 16 bytes. Therefore, QuickTime - // puts an 8-byte placeholder atom before any atoms it may have to update the size of. - // In this way, if the atom needs to be converted from a 32-bit to a 64-bit atom, the - // placeholder atom can be overwritten to obtain the necessary 8 extra bytes. - // The placeholder atom has a type of kWideAtomPlaceholderType ( 'wide' ). - break; - - - case 'nsav': // NoSAVe atom - // http://developer.apple.com/technotes/tn/tn2038.html - $atom_structure['data'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 4)); - break; - - case 'ctyp': // Controller TYPe atom (seen on QTVR) - // http://homepages.slingshot.co.nz/~helmboy/quicktime/formats/qtm-layout.txt - // some controller names are: - // 0x00 + 'std' for linear movie - // 'none' for no controls - $atom_structure['ctyp'] = substr($atom_data, 0, 4); - $info['quicktime']['controller'] = $atom_structure['ctyp']; - switch ($atom_structure['ctyp']) { - case 'qtvr': - $info['video']['dataformat'] = 'quicktimevr'; - break; - } - break; - - case 'pano': // PANOrama track (seen on QTVR) - $atom_structure['pano'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 4)); - break; - - case 'hint': // HINT track - case 'hinf': // - case 'hinv': // - case 'hnti': // - $info['quicktime']['hinting'] = true; - break; - - case 'imgt': // IMaGe Track reference (kQTVRImageTrackRefType) (seen on QTVR) - for ($i = 0; $i < ($atom_structure['size'] - 8); $i += 4) { - $atom_structure['imgt'][] = getid3_lib::BigEndian2Int(substr($atom_data, $i, 4)); - } - break; - - - // Observed-but-not-handled atom types are just listed here to prevent warnings being generated - case 'FXTC': // Something to do with Adobe After Effects (?) - case 'PrmA': - case 'code': - case 'FIEL': // this is NOT "fiel" (Field Ordering) as describe here: http://developer.apple.com/documentation/QuickTime/QTFF/QTFFChap3/chapter_4_section_2.html - case 'tapt': // TrackApertureModeDimensionsAID - http://developer.apple.com/documentation/QuickTime/Reference/QT7-1_Update_Reference/Constants/Constants.html - // tapt seems to be used to compute the video size [http://www.getid3.org/phpBB3/viewtopic.php?t=838] - // * http://lists.apple.com/archives/quicktime-api/2006/Aug/msg00014.html - // * http://handbrake.fr/irclogs/handbrake-dev/handbrake-dev20080128_pg2.html - case 'ctts':// STCompositionOffsetAID - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html - case 'cslg':// STCompositionShiftLeastGreatestAID - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html - case 'sdtp':// STSampleDependencyAID - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html - case 'stps':// STPartialSyncSampleAID - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html - //$atom_structure['data'] = $atom_data; - break; - - case '©xyz': // GPS latitude+longitude+altitude - $atom_structure['data'] = $atom_data; - if (preg_match('#([\\+\\-][0-9\\.]+)([\\+\\-][0-9\\.]+)([\\+\\-][0-9\\.]+)?/$#i', $atom_data, $matches)) { - @list($all, $latitude, $longitude, $altitude) = $matches; - $info['quicktime']['comments']['gps_latitude'][] = floatval($latitude); - $info['quicktime']['comments']['gps_longitude'][] = floatval($longitude); - if (!empty($altitude)) { - $info['quicktime']['comments']['gps_altitude'][] = floatval($altitude); - } - } else { - $info['warning'][] = 'QuickTime atom "©xyz" data does not match expected data pattern at offset '.$baseoffset.'. Please report as getID3() bug.'; - } - break; - - case 'NCDT': - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html - // Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from some Nikon cameras such as the Coolpix S8000 and D5100 - $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 4, $atomHierarchy, $ParseAllPossibleAtoms); - break; - case 'NCTH': // Nikon Camera THumbnail image - case 'NCVW': // Nikon Camera preVieW image - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html - if (preg_match('/^\xFF\xD8\xFF/', $atom_data)) { - $atom_structure['data'] = $atom_data; - $atom_structure['image_mime'] = 'image/jpeg'; - $atom_structure['description'] = (($atomname == 'NCTH') ? 'Nikon Camera Thumbnail Image' : (($atomname == 'NCVW') ? 'Nikon Camera Preview Image' : 'Nikon preview image')); - $info['quicktime']['comments']['picture'][] = array('image_mime'=>$atom_structure['image_mime'], 'data'=>$atom_data, 'description'=>$atom_structure['description']); - } - break; - case 'NCHD': // MakerNoteVersion - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html - $atom_structure['data'] = $atom_data; - break; - case 'NCTG': // NikonTags - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html#NCTG - $atom_structure['data'] = $this->QuicktimeParseNikonNCTG($atom_data); - break; - case 'NCDB': // NikonTags - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html - $atom_structure['data'] = $atom_data; - break; - - case "\x00\x00\x00\x00": - case 'meta': // METAdata atom - // some kind of metacontainer, may contain a big data dump such as: - // mdta keys  mdtacom.apple.quicktime.make (mdtacom.apple.quicktime.creationdate ,mdtacom.apple.quicktime.location.ISO6709 $mdtacom.apple.quicktime.software !mdtacom.apple.quicktime.model ilst   data DEApple 0  (data DE2011-05-11T17:54:04+0200 2  *data DE+52.4936+013.3897+040.247/   data DE4.3.1  data DEiPhone 4 - // http://www.geocities.com/xhelmboyx/quicktime/formats/qti-layout.txt - - $atom_structure['version'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 1)); - $atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data, 1, 3)); - $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom(substr($atom_data, 4), $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms); - //$atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms); - break; - - case 'data': // metaDATA atom - // seems to be 2 bytes language code (ASCII), 2 bytes unknown (set to 0x10B5 in sample I have), remainder is useful data - $atom_structure['language'] = substr($atom_data, 4 + 0, 2); - $atom_structure['unknown'] = getid3_lib::BigEndian2Int(substr($atom_data, 4 + 2, 2)); - $atom_structure['data'] = substr($atom_data, 4 + 4); - break; - - default: - $info['warning'][] = 'Unknown QuickTime atom type: "'.getid3_lib::PrintHexBytes($atomname).'" at offset '.$baseoffset; - $atom_structure['data'] = $atom_data; - break; - } - array_pop($atomHierarchy); - return $atom_structure; - } - - function QuicktimeParseContainerAtom($atom_data, $baseoffset, &$atomHierarchy, $ParseAllPossibleAtoms) { -//echo 'QuicktimeParseContainerAtom('.substr($atom_data, 4, 4).') @ '.$baseoffset.'

    '; - $atom_structure = false; - $subatomoffset = 0; - $subatomcounter = 0; - if ((strlen($atom_data) == 4) && (getid3_lib::BigEndian2Int($atom_data) == 0x00000000)) { - return false; - } - while ($subatomoffset < strlen($atom_data)) { - $subatomsize = getid3_lib::BigEndian2Int(substr($atom_data, $subatomoffset + 0, 4)); - $subatomname = substr($atom_data, $subatomoffset + 4, 4); - $subatomdata = substr($atom_data, $subatomoffset + 8, $subatomsize - 8); - if ($subatomsize == 0) { - // Furthermore, for historical reasons the list of atoms is optionally - // terminated by a 32-bit integer set to 0. If you are writing a program - // to read user data atoms, you should allow for the terminating 0. - return $atom_structure; - } - - $atom_structure[$subatomcounter] = $this->QuicktimeParseAtom($subatomname, $subatomsize, $subatomdata, $baseoffset + $subatomoffset, $atomHierarchy, $ParseAllPossibleAtoms); - - $subatomoffset += $subatomsize; - $subatomcounter++; - } - return $atom_structure; - } - - - function quicktime_read_mp4_descr_length($data, &$offset) { - // http://libquicktime.sourcearchive.com/documentation/2:1.0.2plus-pdebian-2build1/esds_8c-source.html - $num_bytes = 0; - $length = 0; - do { - $b = ord(substr($data, $offset++, 1)); - $length = ($length << 7) | ($b & 0x7F); - } while (($b & 0x80) && ($num_bytes++ < 4)); - return $length; - } - - - function QuicktimeLanguageLookup($languageid) { - static $QuicktimeLanguageLookup = array(); - if (empty($QuicktimeLanguageLookup)) { - $QuicktimeLanguageLookup[0] = 'English'; - $QuicktimeLanguageLookup[1] = 'French'; - $QuicktimeLanguageLookup[2] = 'German'; - $QuicktimeLanguageLookup[3] = 'Italian'; - $QuicktimeLanguageLookup[4] = 'Dutch'; - $QuicktimeLanguageLookup[5] = 'Swedish'; - $QuicktimeLanguageLookup[6] = 'Spanish'; - $QuicktimeLanguageLookup[7] = 'Danish'; - $QuicktimeLanguageLookup[8] = 'Portuguese'; - $QuicktimeLanguageLookup[9] = 'Norwegian'; - $QuicktimeLanguageLookup[10] = 'Hebrew'; - $QuicktimeLanguageLookup[11] = 'Japanese'; - $QuicktimeLanguageLookup[12] = 'Arabic'; - $QuicktimeLanguageLookup[13] = 'Finnish'; - $QuicktimeLanguageLookup[14] = 'Greek'; - $QuicktimeLanguageLookup[15] = 'Icelandic'; - $QuicktimeLanguageLookup[16] = 'Maltese'; - $QuicktimeLanguageLookup[17] = 'Turkish'; - $QuicktimeLanguageLookup[18] = 'Croatian'; - $QuicktimeLanguageLookup[19] = 'Chinese (Traditional)'; - $QuicktimeLanguageLookup[20] = 'Urdu'; - $QuicktimeLanguageLookup[21] = 'Hindi'; - $QuicktimeLanguageLookup[22] = 'Thai'; - $QuicktimeLanguageLookup[23] = 'Korean'; - $QuicktimeLanguageLookup[24] = 'Lithuanian'; - $QuicktimeLanguageLookup[25] = 'Polish'; - $QuicktimeLanguageLookup[26] = 'Hungarian'; - $QuicktimeLanguageLookup[27] = 'Estonian'; - $QuicktimeLanguageLookup[28] = 'Lettish'; - $QuicktimeLanguageLookup[28] = 'Latvian'; - $QuicktimeLanguageLookup[29] = 'Saamisk'; - $QuicktimeLanguageLookup[29] = 'Lappish'; - $QuicktimeLanguageLookup[30] = 'Faeroese'; - $QuicktimeLanguageLookup[31] = 'Farsi'; - $QuicktimeLanguageLookup[31] = 'Persian'; - $QuicktimeLanguageLookup[32] = 'Russian'; - $QuicktimeLanguageLookup[33] = 'Chinese (Simplified)'; - $QuicktimeLanguageLookup[34] = 'Flemish'; - $QuicktimeLanguageLookup[35] = 'Irish'; - $QuicktimeLanguageLookup[36] = 'Albanian'; - $QuicktimeLanguageLookup[37] = 'Romanian'; - $QuicktimeLanguageLookup[38] = 'Czech'; - $QuicktimeLanguageLookup[39] = 'Slovak'; - $QuicktimeLanguageLookup[40] = 'Slovenian'; - $QuicktimeLanguageLookup[41] = 'Yiddish'; - $QuicktimeLanguageLookup[42] = 'Serbian'; - $QuicktimeLanguageLookup[43] = 'Macedonian'; - $QuicktimeLanguageLookup[44] = 'Bulgarian'; - $QuicktimeLanguageLookup[45] = 'Ukrainian'; - $QuicktimeLanguageLookup[46] = 'Byelorussian'; - $QuicktimeLanguageLookup[47] = 'Uzbek'; - $QuicktimeLanguageLookup[48] = 'Kazakh'; - $QuicktimeLanguageLookup[49] = 'Azerbaijani'; - $QuicktimeLanguageLookup[50] = 'AzerbaijanAr'; - $QuicktimeLanguageLookup[51] = 'Armenian'; - $QuicktimeLanguageLookup[52] = 'Georgian'; - $QuicktimeLanguageLookup[53] = 'Moldavian'; - $QuicktimeLanguageLookup[54] = 'Kirghiz'; - $QuicktimeLanguageLookup[55] = 'Tajiki'; - $QuicktimeLanguageLookup[56] = 'Turkmen'; - $QuicktimeLanguageLookup[57] = 'Mongolian'; - $QuicktimeLanguageLookup[58] = 'MongolianCyr'; - $QuicktimeLanguageLookup[59] = 'Pashto'; - $QuicktimeLanguageLookup[60] = 'Kurdish'; - $QuicktimeLanguageLookup[61] = 'Kashmiri'; - $QuicktimeLanguageLookup[62] = 'Sindhi'; - $QuicktimeLanguageLookup[63] = 'Tibetan'; - $QuicktimeLanguageLookup[64] = 'Nepali'; - $QuicktimeLanguageLookup[65] = 'Sanskrit'; - $QuicktimeLanguageLookup[66] = 'Marathi'; - $QuicktimeLanguageLookup[67] = 'Bengali'; - $QuicktimeLanguageLookup[68] = 'Assamese'; - $QuicktimeLanguageLookup[69] = 'Gujarati'; - $QuicktimeLanguageLookup[70] = 'Punjabi'; - $QuicktimeLanguageLookup[71] = 'Oriya'; - $QuicktimeLanguageLookup[72] = 'Malayalam'; - $QuicktimeLanguageLookup[73] = 'Kannada'; - $QuicktimeLanguageLookup[74] = 'Tamil'; - $QuicktimeLanguageLookup[75] = 'Telugu'; - $QuicktimeLanguageLookup[76] = 'Sinhalese'; - $QuicktimeLanguageLookup[77] = 'Burmese'; - $QuicktimeLanguageLookup[78] = 'Khmer'; - $QuicktimeLanguageLookup[79] = 'Lao'; - $QuicktimeLanguageLookup[80] = 'Vietnamese'; - $QuicktimeLanguageLookup[81] = 'Indonesian'; - $QuicktimeLanguageLookup[82] = 'Tagalog'; - $QuicktimeLanguageLookup[83] = 'MalayRoman'; - $QuicktimeLanguageLookup[84] = 'MalayArabic'; - $QuicktimeLanguageLookup[85] = 'Amharic'; - $QuicktimeLanguageLookup[86] = 'Tigrinya'; - $QuicktimeLanguageLookup[87] = 'Galla'; - $QuicktimeLanguageLookup[87] = 'Oromo'; - $QuicktimeLanguageLookup[88] = 'Somali'; - $QuicktimeLanguageLookup[89] = 'Swahili'; - $QuicktimeLanguageLookup[90] = 'Ruanda'; - $QuicktimeLanguageLookup[91] = 'Rundi'; - $QuicktimeLanguageLookup[92] = 'Chewa'; - $QuicktimeLanguageLookup[93] = 'Malagasy'; - $QuicktimeLanguageLookup[94] = 'Esperanto'; - $QuicktimeLanguageLookup[128] = 'Welsh'; - $QuicktimeLanguageLookup[129] = 'Basque'; - $QuicktimeLanguageLookup[130] = 'Catalan'; - $QuicktimeLanguageLookup[131] = 'Latin'; - $QuicktimeLanguageLookup[132] = 'Quechua'; - $QuicktimeLanguageLookup[133] = 'Guarani'; - $QuicktimeLanguageLookup[134] = 'Aymara'; - $QuicktimeLanguageLookup[135] = 'Tatar'; - $QuicktimeLanguageLookup[136] = 'Uighur'; - $QuicktimeLanguageLookup[137] = 'Dzongkha'; - $QuicktimeLanguageLookup[138] = 'JavaneseRom'; - } - return (isset($QuicktimeLanguageLookup[$languageid]) ? $QuicktimeLanguageLookup[$languageid] : 'invalid'); - } - - function QuicktimeVideoCodecLookup($codecid) { - static $QuicktimeVideoCodecLookup = array(); - if (empty($QuicktimeVideoCodecLookup)) { - $QuicktimeVideoCodecLookup['.SGI'] = 'SGI'; - $QuicktimeVideoCodecLookup['3IV1'] = '3ivx MPEG-4 v1'; - $QuicktimeVideoCodecLookup['3IV2'] = '3ivx MPEG-4 v2'; - $QuicktimeVideoCodecLookup['3IVX'] = '3ivx MPEG-4'; - $QuicktimeVideoCodecLookup['8BPS'] = 'Planar RGB'; - $QuicktimeVideoCodecLookup['avc1'] = 'H.264/MPEG-4 AVC'; - $QuicktimeVideoCodecLookup['avr '] = 'AVR-JPEG'; - $QuicktimeVideoCodecLookup['b16g'] = '16Gray'; - $QuicktimeVideoCodecLookup['b32a'] = '32AlphaGray'; - $QuicktimeVideoCodecLookup['b48r'] = '48RGB'; - $QuicktimeVideoCodecLookup['b64a'] = '64ARGB'; - $QuicktimeVideoCodecLookup['base'] = 'Base'; - $QuicktimeVideoCodecLookup['clou'] = 'Cloud'; - $QuicktimeVideoCodecLookup['cmyk'] = 'CMYK'; - $QuicktimeVideoCodecLookup['cvid'] = 'Cinepak'; - $QuicktimeVideoCodecLookup['dmb1'] = 'OpenDML JPEG'; - $QuicktimeVideoCodecLookup['dvc '] = 'DVC-NTSC'; - $QuicktimeVideoCodecLookup['dvcp'] = 'DVC-PAL'; - $QuicktimeVideoCodecLookup['dvpn'] = 'DVCPro-NTSC'; - $QuicktimeVideoCodecLookup['dvpp'] = 'DVCPro-PAL'; - $QuicktimeVideoCodecLookup['fire'] = 'Fire'; - $QuicktimeVideoCodecLookup['flic'] = 'FLC'; - $QuicktimeVideoCodecLookup['gif '] = 'GIF'; - $QuicktimeVideoCodecLookup['h261'] = 'H261'; - $QuicktimeVideoCodecLookup['h263'] = 'H263'; - $QuicktimeVideoCodecLookup['IV41'] = 'Indeo4'; - $QuicktimeVideoCodecLookup['jpeg'] = 'JPEG'; - $QuicktimeVideoCodecLookup['kpcd'] = 'PhotoCD'; - $QuicktimeVideoCodecLookup['mjpa'] = 'Motion JPEG-A'; - $QuicktimeVideoCodecLookup['mjpb'] = 'Motion JPEG-B'; - $QuicktimeVideoCodecLookup['msvc'] = 'Microsoft Video1'; - $QuicktimeVideoCodecLookup['myuv'] = 'MPEG YUV420'; - $QuicktimeVideoCodecLookup['path'] = 'Vector'; - $QuicktimeVideoCodecLookup['png '] = 'PNG'; - $QuicktimeVideoCodecLookup['PNTG'] = 'MacPaint'; - $QuicktimeVideoCodecLookup['qdgx'] = 'QuickDrawGX'; - $QuicktimeVideoCodecLookup['qdrw'] = 'QuickDraw'; - $QuicktimeVideoCodecLookup['raw '] = 'RAW'; - $QuicktimeVideoCodecLookup['ripl'] = 'WaterRipple'; - $QuicktimeVideoCodecLookup['rpza'] = 'Video'; - $QuicktimeVideoCodecLookup['smc '] = 'Graphics'; - $QuicktimeVideoCodecLookup['SVQ1'] = 'Sorenson Video 1'; - $QuicktimeVideoCodecLookup['SVQ1'] = 'Sorenson Video 3'; - $QuicktimeVideoCodecLookup['syv9'] = 'Sorenson YUV9'; - $QuicktimeVideoCodecLookup['tga '] = 'Targa'; - $QuicktimeVideoCodecLookup['tiff'] = 'TIFF'; - $QuicktimeVideoCodecLookup['WRAW'] = 'Windows RAW'; - $QuicktimeVideoCodecLookup['WRLE'] = 'BMP'; - $QuicktimeVideoCodecLookup['y420'] = 'YUV420'; - $QuicktimeVideoCodecLookup['yuv2'] = 'ComponentVideo'; - $QuicktimeVideoCodecLookup['yuvs'] = 'ComponentVideoUnsigned'; - $QuicktimeVideoCodecLookup['yuvu'] = 'ComponentVideoSigned'; - } - return (isset($QuicktimeVideoCodecLookup[$codecid]) ? $QuicktimeVideoCodecLookup[$codecid] : ''); - } - - function QuicktimeAudioCodecLookup($codecid) { - static $QuicktimeAudioCodecLookup = array(); - if (empty($QuicktimeAudioCodecLookup)) { - $QuicktimeAudioCodecLookup['.mp3'] = 'Fraunhofer MPEG Layer-III alias'; - $QuicktimeAudioCodecLookup['aac '] = 'ISO/IEC 14496-3 AAC'; - $QuicktimeAudioCodecLookup['agsm'] = 'Apple GSM 10:1'; - $QuicktimeAudioCodecLookup['alac'] = 'Apple Lossless Audio Codec'; - $QuicktimeAudioCodecLookup['alaw'] = 'A-law 2:1'; - $QuicktimeAudioCodecLookup['conv'] = 'Sample Format'; - $QuicktimeAudioCodecLookup['dvca'] = 'DV'; - $QuicktimeAudioCodecLookup['dvi '] = 'DV 4:1'; - $QuicktimeAudioCodecLookup['eqal'] = 'Frequency Equalizer'; - $QuicktimeAudioCodecLookup['fl32'] = '32-bit Floating Point'; - $QuicktimeAudioCodecLookup['fl64'] = '64-bit Floating Point'; - $QuicktimeAudioCodecLookup['ima4'] = 'Interactive Multimedia Association 4:1'; - $QuicktimeAudioCodecLookup['in24'] = '24-bit Integer'; - $QuicktimeAudioCodecLookup['in32'] = '32-bit Integer'; - $QuicktimeAudioCodecLookup['lpc '] = 'LPC 23:1'; - $QuicktimeAudioCodecLookup['MAC3'] = 'Macintosh Audio Compression/Expansion (MACE) 3:1'; - $QuicktimeAudioCodecLookup['MAC6'] = 'Macintosh Audio Compression/Expansion (MACE) 6:1'; - $QuicktimeAudioCodecLookup['mixb'] = '8-bit Mixer'; - $QuicktimeAudioCodecLookup['mixw'] = '16-bit Mixer'; - $QuicktimeAudioCodecLookup['mp4a'] = 'ISO/IEC 14496-3 AAC'; - $QuicktimeAudioCodecLookup['MS'."\x00\x02"] = 'Microsoft ADPCM'; - $QuicktimeAudioCodecLookup['MS'."\x00\x11"] = 'DV IMA'; - $QuicktimeAudioCodecLookup['MS'."\x00\x55"] = 'Fraunhofer MPEG Layer III'; - $QuicktimeAudioCodecLookup['NONE'] = 'No Encoding'; - $QuicktimeAudioCodecLookup['Qclp'] = 'Qualcomm PureVoice'; - $QuicktimeAudioCodecLookup['QDM2'] = 'QDesign Music 2'; - $QuicktimeAudioCodecLookup['QDMC'] = 'QDesign Music 1'; - $QuicktimeAudioCodecLookup['ratb'] = '8-bit Rate'; - $QuicktimeAudioCodecLookup['ratw'] = '16-bit Rate'; - $QuicktimeAudioCodecLookup['raw '] = 'raw PCM'; - $QuicktimeAudioCodecLookup['sour'] = 'Sound Source'; - $QuicktimeAudioCodecLookup['sowt'] = 'signed/two\'s complement (Little Endian)'; - $QuicktimeAudioCodecLookup['str1'] = 'Iomega MPEG layer II'; - $QuicktimeAudioCodecLookup['str2'] = 'Iomega MPEG *layer II'; - $QuicktimeAudioCodecLookup['str3'] = 'Iomega MPEG **layer II'; - $QuicktimeAudioCodecLookup['str4'] = 'Iomega MPEG ***layer II'; - $QuicktimeAudioCodecLookup['twos'] = 'signed/two\'s complement (Big Endian)'; - $QuicktimeAudioCodecLookup['ulaw'] = 'mu-law 2:1'; - } - return (isset($QuicktimeAudioCodecLookup[$codecid]) ? $QuicktimeAudioCodecLookup[$codecid] : ''); - } - - function QuicktimeDCOMLookup($compressionid) { - static $QuicktimeDCOMLookup = array(); - if (empty($QuicktimeDCOMLookup)) { - $QuicktimeDCOMLookup['zlib'] = 'ZLib Deflate'; - $QuicktimeDCOMLookup['adec'] = 'Apple Compression'; - } - return (isset($QuicktimeDCOMLookup[$compressionid]) ? $QuicktimeDCOMLookup[$compressionid] : ''); - } - - function QuicktimeColorNameLookup($colordepthid) { - static $QuicktimeColorNameLookup = array(); - if (empty($QuicktimeColorNameLookup)) { - $QuicktimeColorNameLookup[1] = '2-color (monochrome)'; - $QuicktimeColorNameLookup[2] = '4-color'; - $QuicktimeColorNameLookup[4] = '16-color'; - $QuicktimeColorNameLookup[8] = '256-color'; - $QuicktimeColorNameLookup[16] = 'thousands (16-bit color)'; - $QuicktimeColorNameLookup[24] = 'millions (24-bit color)'; - $QuicktimeColorNameLookup[32] = 'millions+ (32-bit color)'; - $QuicktimeColorNameLookup[33] = 'black & white'; - $QuicktimeColorNameLookup[34] = '4-gray'; - $QuicktimeColorNameLookup[36] = '16-gray'; - $QuicktimeColorNameLookup[40] = '256-gray'; - } - return (isset($QuicktimeColorNameLookup[$colordepthid]) ? $QuicktimeColorNameLookup[$colordepthid] : 'invalid'); - } - - function QuicktimeSTIKLookup($stik) { - static $QuicktimeSTIKLookup = array(); - if (empty($QuicktimeSTIKLookup)) { - $QuicktimeSTIKLookup[0] = 'Movie'; - $QuicktimeSTIKLookup[1] = 'Normal'; - $QuicktimeSTIKLookup[2] = 'Audiobook'; - $QuicktimeSTIKLookup[5] = 'Whacked Bookmark'; - $QuicktimeSTIKLookup[6] = 'Music Video'; - $QuicktimeSTIKLookup[9] = 'Short Film'; - $QuicktimeSTIKLookup[10] = 'TV Show'; - $QuicktimeSTIKLookup[11] = 'Booklet'; - $QuicktimeSTIKLookup[14] = 'Ringtone'; - $QuicktimeSTIKLookup[21] = 'Podcast'; - } - return (isset($QuicktimeSTIKLookup[$stik]) ? $QuicktimeSTIKLookup[$stik] : 'invalid'); - } - - function QuicktimeIODSaudioProfileName($audio_profile_id) { - static $QuicktimeIODSaudioProfileNameLookup = array(); - if (empty($QuicktimeIODSaudioProfileNameLookup)) { - $QuicktimeIODSaudioProfileNameLookup = array( - 0x00 => 'ISO Reserved (0x00)', - 0x01 => 'Main Audio Profile @ Level 1', - 0x02 => 'Main Audio Profile @ Level 2', - 0x03 => 'Main Audio Profile @ Level 3', - 0x04 => 'Main Audio Profile @ Level 4', - 0x05 => 'Scalable Audio Profile @ Level 1', - 0x06 => 'Scalable Audio Profile @ Level 2', - 0x07 => 'Scalable Audio Profile @ Level 3', - 0x08 => 'Scalable Audio Profile @ Level 4', - 0x09 => 'Speech Audio Profile @ Level 1', - 0x0A => 'Speech Audio Profile @ Level 2', - 0x0B => 'Synthetic Audio Profile @ Level 1', - 0x0C => 'Synthetic Audio Profile @ Level 2', - 0x0D => 'Synthetic Audio Profile @ Level 3', - 0x0E => 'High Quality Audio Profile @ Level 1', - 0x0F => 'High Quality Audio Profile @ Level 2', - 0x10 => 'High Quality Audio Profile @ Level 3', - 0x11 => 'High Quality Audio Profile @ Level 4', - 0x12 => 'High Quality Audio Profile @ Level 5', - 0x13 => 'High Quality Audio Profile @ Level 6', - 0x14 => 'High Quality Audio Profile @ Level 7', - 0x15 => 'High Quality Audio Profile @ Level 8', - 0x16 => 'Low Delay Audio Profile @ Level 1', - 0x17 => 'Low Delay Audio Profile @ Level 2', - 0x18 => 'Low Delay Audio Profile @ Level 3', - 0x19 => 'Low Delay Audio Profile @ Level 4', - 0x1A => 'Low Delay Audio Profile @ Level 5', - 0x1B => 'Low Delay Audio Profile @ Level 6', - 0x1C => 'Low Delay Audio Profile @ Level 7', - 0x1D => 'Low Delay Audio Profile @ Level 8', - 0x1E => 'Natural Audio Profile @ Level 1', - 0x1F => 'Natural Audio Profile @ Level 2', - 0x20 => 'Natural Audio Profile @ Level 3', - 0x21 => 'Natural Audio Profile @ Level 4', - 0x22 => 'Mobile Audio Internetworking Profile @ Level 1', - 0x23 => 'Mobile Audio Internetworking Profile @ Level 2', - 0x24 => 'Mobile Audio Internetworking Profile @ Level 3', - 0x25 => 'Mobile Audio Internetworking Profile @ Level 4', - 0x26 => 'Mobile Audio Internetworking Profile @ Level 5', - 0x27 => 'Mobile Audio Internetworking Profile @ Level 6', - 0x28 => 'AAC Profile @ Level 1', - 0x29 => 'AAC Profile @ Level 2', - 0x2A => 'AAC Profile @ Level 4', - 0x2B => 'AAC Profile @ Level 5', - 0x2C => 'High Efficiency AAC Profile @ Level 2', - 0x2D => 'High Efficiency AAC Profile @ Level 3', - 0x2E => 'High Efficiency AAC Profile @ Level 4', - 0x2F => 'High Efficiency AAC Profile @ Level 5', - 0xFE => 'Not part of MPEG-4 audio profiles', - 0xFF => 'No audio capability required', - ); - } - return (isset($QuicktimeIODSaudioProfileNameLookup[$audio_profile_id]) ? $QuicktimeIODSaudioProfileNameLookup[$audio_profile_id] : 'ISO Reserved / User Private'); - } - - - function QuicktimeIODSvideoProfileName($video_profile_id) { - static $QuicktimeIODSvideoProfileNameLookup = array(); - if (empty($QuicktimeIODSvideoProfileNameLookup)) { - $QuicktimeIODSvideoProfileNameLookup = array( - 0x00 => 'Reserved (0x00) Profile', - 0x01 => 'Simple Profile @ Level 1', - 0x02 => 'Simple Profile @ Level 2', - 0x03 => 'Simple Profile @ Level 3', - 0x08 => 'Simple Profile @ Level 0', - 0x10 => 'Simple Scalable Profile @ Level 0', - 0x11 => 'Simple Scalable Profile @ Level 1', - 0x12 => 'Simple Scalable Profile @ Level 2', - 0x15 => 'AVC/H264 Profile', - 0x21 => 'Core Profile @ Level 1', - 0x22 => 'Core Profile @ Level 2', - 0x32 => 'Main Profile @ Level 2', - 0x33 => 'Main Profile @ Level 3', - 0x34 => 'Main Profile @ Level 4', - 0x42 => 'N-bit Profile @ Level 2', - 0x51 => 'Scalable Texture Profile @ Level 1', - 0x61 => 'Simple Face Animation Profile @ Level 1', - 0x62 => 'Simple Face Animation Profile @ Level 2', - 0x63 => 'Simple FBA Profile @ Level 1', - 0x64 => 'Simple FBA Profile @ Level 2', - 0x71 => 'Basic Animated Texture Profile @ Level 1', - 0x72 => 'Basic Animated Texture Profile @ Level 2', - 0x81 => 'Hybrid Profile @ Level 1', - 0x82 => 'Hybrid Profile @ Level 2', - 0x91 => 'Advanced Real Time Simple Profile @ Level 1', - 0x92 => 'Advanced Real Time Simple Profile @ Level 2', - 0x93 => 'Advanced Real Time Simple Profile @ Level 3', - 0x94 => 'Advanced Real Time Simple Profile @ Level 4', - 0xA1 => 'Core Scalable Profile @ Level1', - 0xA2 => 'Core Scalable Profile @ Level2', - 0xA3 => 'Core Scalable Profile @ Level3', - 0xB1 => 'Advanced Coding Efficiency Profile @ Level 1', - 0xB2 => 'Advanced Coding Efficiency Profile @ Level 2', - 0xB3 => 'Advanced Coding Efficiency Profile @ Level 3', - 0xB4 => 'Advanced Coding Efficiency Profile @ Level 4', - 0xC1 => 'Advanced Core Profile @ Level 1', - 0xC2 => 'Advanced Core Profile @ Level 2', - 0xD1 => 'Advanced Scalable Texture @ Level1', - 0xD2 => 'Advanced Scalable Texture @ Level2', - 0xE1 => 'Simple Studio Profile @ Level 1', - 0xE2 => 'Simple Studio Profile @ Level 2', - 0xE3 => 'Simple Studio Profile @ Level 3', - 0xE4 => 'Simple Studio Profile @ Level 4', - 0xE5 => 'Core Studio Profile @ Level 1', - 0xE6 => 'Core Studio Profile @ Level 2', - 0xE7 => 'Core Studio Profile @ Level 3', - 0xE8 => 'Core Studio Profile @ Level 4', - 0xF0 => 'Advanced Simple Profile @ Level 0', - 0xF1 => 'Advanced Simple Profile @ Level 1', - 0xF2 => 'Advanced Simple Profile @ Level 2', - 0xF3 => 'Advanced Simple Profile @ Level 3', - 0xF4 => 'Advanced Simple Profile @ Level 4', - 0xF5 => 'Advanced Simple Profile @ Level 5', - 0xF7 => 'Advanced Simple Profile @ Level 3b', - 0xF8 => 'Fine Granularity Scalable Profile @ Level 0', - 0xF9 => 'Fine Granularity Scalable Profile @ Level 1', - 0xFA => 'Fine Granularity Scalable Profile @ Level 2', - 0xFB => 'Fine Granularity Scalable Profile @ Level 3', - 0xFC => 'Fine Granularity Scalable Profile @ Level 4', - 0xFD => 'Fine Granularity Scalable Profile @ Level 5', - 0xFE => 'Not part of MPEG-4 Visual profiles', - 0xFF => 'No visual capability required', - ); - } - return (isset($QuicktimeIODSvideoProfileNameLookup[$video_profile_id]) ? $QuicktimeIODSvideoProfileNameLookup[$video_profile_id] : 'ISO Reserved Profile'); - } - - - function QuicktimeContentRatingLookup($rtng) { - static $QuicktimeContentRatingLookup = array(); - if (empty($QuicktimeContentRatingLookup)) { - $QuicktimeContentRatingLookup[0] = 'None'; - $QuicktimeContentRatingLookup[2] = 'Clean'; - $QuicktimeContentRatingLookup[4] = 'Explicit'; - } - return (isset($QuicktimeContentRatingLookup[$rtng]) ? $QuicktimeContentRatingLookup[$rtng] : 'invalid'); - } - - function QuicktimeStoreAccountTypeLookup($akid) { - static $QuicktimeStoreAccountTypeLookup = array(); - if (empty($QuicktimeStoreAccountTypeLookup)) { - $QuicktimeStoreAccountTypeLookup[0] = 'iTunes'; - $QuicktimeStoreAccountTypeLookup[1] = 'AOL'; - } - return (isset($QuicktimeStoreAccountTypeLookup[$akid]) ? $QuicktimeStoreAccountTypeLookup[$akid] : 'invalid'); - } - - function QuicktimeStoreFrontCodeLookup($sfid) { - static $QuicktimeStoreFrontCodeLookup = array(); - if (empty($QuicktimeStoreFrontCodeLookup)) { - $QuicktimeStoreFrontCodeLookup[143460] = 'Australia'; - $QuicktimeStoreFrontCodeLookup[143445] = 'Austria'; - $QuicktimeStoreFrontCodeLookup[143446] = 'Belgium'; - $QuicktimeStoreFrontCodeLookup[143455] = 'Canada'; - $QuicktimeStoreFrontCodeLookup[143458] = 'Denmark'; - $QuicktimeStoreFrontCodeLookup[143447] = 'Finland'; - $QuicktimeStoreFrontCodeLookup[143442] = 'France'; - $QuicktimeStoreFrontCodeLookup[143443] = 'Germany'; - $QuicktimeStoreFrontCodeLookup[143448] = 'Greece'; - $QuicktimeStoreFrontCodeLookup[143449] = 'Ireland'; - $QuicktimeStoreFrontCodeLookup[143450] = 'Italy'; - $QuicktimeStoreFrontCodeLookup[143462] = 'Japan'; - $QuicktimeStoreFrontCodeLookup[143451] = 'Luxembourg'; - $QuicktimeStoreFrontCodeLookup[143452] = 'Netherlands'; - $QuicktimeStoreFrontCodeLookup[143461] = 'New Zealand'; - $QuicktimeStoreFrontCodeLookup[143457] = 'Norway'; - $QuicktimeStoreFrontCodeLookup[143453] = 'Portugal'; - $QuicktimeStoreFrontCodeLookup[143454] = 'Spain'; - $QuicktimeStoreFrontCodeLookup[143456] = 'Sweden'; - $QuicktimeStoreFrontCodeLookup[143459] = 'Switzerland'; - $QuicktimeStoreFrontCodeLookup[143444] = 'United Kingdom'; - $QuicktimeStoreFrontCodeLookup[143441] = 'United States'; - } - return (isset($QuicktimeStoreFrontCodeLookup[$sfid]) ? $QuicktimeStoreFrontCodeLookup[$sfid] : 'invalid'); - } - - function QuicktimeParseNikonNCTG($atom_data) { - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html#NCTG - // Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from some Nikon cameras such as the Coolpix S8000 and D5100 - // Data is stored as records of: - // * 4 bytes record type - // * 2 bytes size of data field type: - // 0x0001 = flag (size field *= 1-byte) - // 0x0002 = char (size field *= 1-byte) - // 0x0003 = DWORD+ (size field *= 2-byte), values are stored CDAB - // 0x0004 = QWORD+ (size field *= 4-byte), values are stored EFGHABCD - // 0x0005 = float (size field *= 8-byte), values are stored aaaabbbb where value is aaaa/bbbb; possibly multiple sets of values appended together - // 0x0007 = bytes (size field *= 1-byte), values are stored as ?????? - // 0x0008 = ????? (size field *= 2-byte), values are stored as ?????? - // * 2 bytes data size field - // * ? bytes data (string data may be null-padded; datestamp fields are in the format "2011:05:25 20:24:15") - // all integers are stored BigEndian - - $NCTGtagName = array( - 0x00000001 => 'Make', - 0x00000002 => 'Model', - 0x00000003 => 'Software', - 0x00000011 => 'CreateDate', - 0x00000012 => 'DateTimeOriginal', - 0x00000013 => 'FrameCount', - 0x00000016 => 'FrameRate', - 0x00000022 => 'FrameWidth', - 0x00000023 => 'FrameHeight', - 0x00000032 => 'AudioChannels', - 0x00000033 => 'AudioBitsPerSample', - 0x00000034 => 'AudioSampleRate', - 0x02000001 => 'MakerNoteVersion', - 0x02000005 => 'WhiteBalance', - 0x0200000b => 'WhiteBalanceFineTune', - 0x0200001e => 'ColorSpace', - 0x02000023 => 'PictureControlData', - 0x02000024 => 'WorldTime', - 0x02000032 => 'UnknownInfo', - 0x02000083 => 'LensType', - 0x02000084 => 'Lens', - ); - - $offset = 0; - $datalength = strlen($atom_data); - $parsed = array(); - while ($offset < $datalength) { -//echo getid3_lib::PrintHexBytes(substr($atom_data, $offset, 4)).'
    '; - $record_type = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 4)); $offset += 4; - $data_size_type = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 2)); $offset += 2; - $data_size = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 2)); $offset += 2; - switch ($data_size_type) { - case 0x0001: // 0x0001 = flag (size field *= 1-byte) - $data = getid3_lib::BigEndian2Int(substr($atom_data, $offset, $data_size * 1)); - $offset += ($data_size * 1); - break; - case 0x0002: // 0x0002 = char (size field *= 1-byte) - $data = substr($atom_data, $offset, $data_size * 1); - $offset += ($data_size * 1); - $data = rtrim($data, "\x00"); - break; - case 0x0003: // 0x0003 = DWORD+ (size field *= 2-byte), values are stored CDAB - $data = ''; - for ($i = $data_size - 1; $i >= 0; $i--) { - $data .= substr($atom_data, $offset + ($i * 2), 2); - } - $data = getid3_lib::BigEndian2Int($data); - $offset += ($data_size * 2); - break; - case 0x0004: // 0x0004 = QWORD+ (size field *= 4-byte), values are stored EFGHABCD - $data = ''; - for ($i = $data_size - 1; $i >= 0; $i--) { - $data .= substr($atom_data, $offset + ($i * 4), 4); - } - $data = getid3_lib::BigEndian2Int($data); - $offset += ($data_size * 4); - break; - case 0x0005: // 0x0005 = float (size field *= 8-byte), values are stored aaaabbbb where value is aaaa/bbbb; possibly multiple sets of values appended together - $data = array(); - for ($i = 0; $i < $data_size; $i++) { - $numerator = getid3_lib::BigEndian2Int(substr($atom_data, $offset + ($i * 8) + 0, 4)); - $denomninator = getid3_lib::BigEndian2Int(substr($atom_data, $offset + ($i * 8) + 4, 4)); - if ($denomninator == 0) { - $data[$i] = false; - } else { - $data[$i] = (double) $numerator / $denomninator; - } - } - $offset += (8 * $data_size); - if (count($data) == 1) { - $data = $data[0]; - } - break; - case 0x0007: // 0x0007 = bytes (size field *= 1-byte), values are stored as ?????? - $data = substr($atom_data, $offset, $data_size * 1); - $offset += ($data_size * 1); - break; - case 0x0008: // 0x0008 = ????? (size field *= 2-byte), values are stored as ?????? - $data = substr($atom_data, $offset, $data_size * 2); - $offset += ($data_size * 2); - break; - default: -echo 'QuicktimeParseNikonNCTG()::unknown $data_size_type: '.$data_size_type.'
    '; - break 2; - } - - switch ($record_type) { - case 0x00000011: // CreateDate - case 0x00000012: // DateTimeOriginal - $data = strtotime($data); - break; - case 0x0200001e: // ColorSpace - switch ($data) { - case 1: - $data = 'sRGB'; - break; - case 2: - $data = 'Adobe RGB'; - break; - } - break; - case 0x02000023: // PictureControlData - $PictureControlAdjust = array(0=>'default', 1=>'quick', 2=>'full'); - $FilterEffect = array(0x80=>'off', 0x81=>'yellow', 0x82=>'orange', 0x83=>'red', 0x84=>'green', 0xff=>'n/a'); - $ToningEffect = array(0x80=>'b&w', 0x81=>'sepia', 0x82=>'cyanotype', 0x83=>'red', 0x84=>'yellow', 0x85=>'green', 0x86=>'blue-green', 0x87=>'blue', 0x88=>'purple-blue', 0x89=>'red-purple', 0xff=>'n/a'); - $data = array( - 'PictureControlVersion' => substr($data, 0, 4), - 'PictureControlName' => rtrim(substr($data, 4, 20), "\x00"), - 'PictureControlBase' => rtrim(substr($data, 24, 20), "\x00"), - //'?' => substr($data, 44, 4), - 'PictureControlAdjust' => $PictureControlAdjust[ord(substr($data, 48, 1))], - 'PictureControlQuickAdjust' => ord(substr($data, 49, 1)), - 'Sharpness' => ord(substr($data, 50, 1)), - 'Contrast' => ord(substr($data, 51, 1)), - 'Brightness' => ord(substr($data, 52, 1)), - 'Saturation' => ord(substr($data, 53, 1)), - 'HueAdjustment' => ord(substr($data, 54, 1)), - 'FilterEffect' => $FilterEffect[ord(substr($data, 55, 1))], - 'ToningEffect' => $ToningEffect[ord(substr($data, 56, 1))], - 'ToningSaturation' => ord(substr($data, 57, 1)), - ); - break; - case 0x02000024: // WorldTime - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html#WorldTime - // timezone is stored as offset from GMT in minutes - $timezone = getid3_lib::BigEndian2Int(substr($data, 0, 2)); - if ($timezone & 0x8000) { - $timezone = 0 - (0x10000 - $timezone); - } - $timezone /= 60; - - $dst = (bool) getid3_lib::BigEndian2Int(substr($data, 2, 1)); - switch (getid3_lib::BigEndian2Int(substr($data, 3, 1))) { - case 2: - $datedisplayformat = 'D/M/Y'; break; - case 1: - $datedisplayformat = 'M/D/Y'; break; - case 0: - default: - $datedisplayformat = 'Y/M/D'; break; - } - - $data = array('timezone'=>floatval($timezone), 'dst'=>$dst, 'display'=>$datedisplayformat); - break; - case 0x02000083: // LensType - $data = array( - //'_' => $data, - 'mf' => (bool) ($data & 0x01), - 'd' => (bool) ($data & 0x02), - 'g' => (bool) ($data & 0x04), - 'vr' => (bool) ($data & 0x08), - ); - break; - } - $tag_name = (isset($NCTGtagName[$record_type]) ? $NCTGtagName[$record_type] : '0x'.str_pad(dechex($record_type), 8, '0', STR_PAD_LEFT)); - $parsed[$tag_name] = $data; - } - return $parsed; - } - - - function CopyToAppropriateCommentsSection($keyname, $data, $boxname='') { - static $handyatomtranslatorarray = array(); - if (empty($handyatomtranslatorarray)) { - $handyatomtranslatorarray['©cpy'] = 'copyright'; - $handyatomtranslatorarray['©day'] = 'creation_date'; // iTunes 4.0 - $handyatomtranslatorarray['©dir'] = 'director'; - $handyatomtranslatorarray['©ed1'] = 'edit1'; - $handyatomtranslatorarray['©ed2'] = 'edit2'; - $handyatomtranslatorarray['©ed3'] = 'edit3'; - $handyatomtranslatorarray['©ed4'] = 'edit4'; - $handyatomtranslatorarray['©ed5'] = 'edit5'; - $handyatomtranslatorarray['©ed6'] = 'edit6'; - $handyatomtranslatorarray['©ed7'] = 'edit7'; - $handyatomtranslatorarray['©ed8'] = 'edit8'; - $handyatomtranslatorarray['©ed9'] = 'edit9'; - $handyatomtranslatorarray['©fmt'] = 'format'; - $handyatomtranslatorarray['©inf'] = 'information'; - $handyatomtranslatorarray['©prd'] = 'producer'; - $handyatomtranslatorarray['©prf'] = 'performers'; - $handyatomtranslatorarray['©req'] = 'system_requirements'; - $handyatomtranslatorarray['©src'] = 'source_credit'; - $handyatomtranslatorarray['©wrt'] = 'writer'; - - // http://www.geocities.com/xhelmboyx/quicktime/formats/qtm-layout.txt - $handyatomtranslatorarray['©nam'] = 'title'; // iTunes 4.0 - $handyatomtranslatorarray['©cmt'] = 'comment'; // iTunes 4.0 - $handyatomtranslatorarray['©wrn'] = 'warning'; - $handyatomtranslatorarray['©hst'] = 'host_computer'; - $handyatomtranslatorarray['©mak'] = 'make'; - $handyatomtranslatorarray['©mod'] = 'model'; - $handyatomtranslatorarray['©PRD'] = 'product'; - $handyatomtranslatorarray['©swr'] = 'software'; - $handyatomtranslatorarray['©aut'] = 'author'; - $handyatomtranslatorarray['©ART'] = 'artist'; - $handyatomtranslatorarray['©trk'] = 'track'; - $handyatomtranslatorarray['©alb'] = 'album'; // iTunes 4.0 - $handyatomtranslatorarray['©com'] = 'comment'; - $handyatomtranslatorarray['©gen'] = 'genre'; // iTunes 4.0 - $handyatomtranslatorarray['©ope'] = 'composer'; - $handyatomtranslatorarray['©url'] = 'url'; - $handyatomtranslatorarray['©enc'] = 'encoder'; - - // http://atomicparsley.sourceforge.net/mpeg-4files.html - $handyatomtranslatorarray['©art'] = 'artist'; // iTunes 4.0 - $handyatomtranslatorarray['aART'] = 'album_artist'; - $handyatomtranslatorarray['trkn'] = 'track_number'; // iTunes 4.0 - $handyatomtranslatorarray['disk'] = 'disc_number'; // iTunes 4.0 - $handyatomtranslatorarray['gnre'] = 'genre'; // iTunes 4.0 - $handyatomtranslatorarray['©too'] = 'encoder'; // iTunes 4.0 - $handyatomtranslatorarray['tmpo'] = 'bpm'; // iTunes 4.0 - $handyatomtranslatorarray['cprt'] = 'copyright'; // iTunes 4.0? - $handyatomtranslatorarray['cpil'] = 'compilation'; // iTunes 4.0 - $handyatomtranslatorarray['covr'] = 'picture'; // iTunes 4.0 - $handyatomtranslatorarray['rtng'] = 'rating'; // iTunes 4.0 - $handyatomtranslatorarray['©grp'] = 'grouping'; // iTunes 4.2 - $handyatomtranslatorarray['stik'] = 'stik'; // iTunes 4.9 - $handyatomtranslatorarray['pcst'] = 'podcast'; // iTunes 4.9 - $handyatomtranslatorarray['catg'] = 'category'; // iTunes 4.9 - $handyatomtranslatorarray['keyw'] = 'keyword'; // iTunes 4.9 - $handyatomtranslatorarray['purl'] = 'podcast_url'; // iTunes 4.9 - $handyatomtranslatorarray['egid'] = 'episode_guid'; // iTunes 4.9 - $handyatomtranslatorarray['desc'] = 'description'; // iTunes 5.0 - $handyatomtranslatorarray['©lyr'] = 'lyrics'; // iTunes 5.0 - $handyatomtranslatorarray['tvnn'] = 'tv_network_name'; // iTunes 6.0 - $handyatomtranslatorarray['tvsh'] = 'tv_show_name'; // iTunes 6.0 - $handyatomtranslatorarray['tvsn'] = 'tv_season'; // iTunes 6.0 - $handyatomtranslatorarray['tves'] = 'tv_episode'; // iTunes 6.0 - $handyatomtranslatorarray['purd'] = 'purchase_date'; // iTunes 6.0.2 - $handyatomtranslatorarray['pgap'] = 'gapless_playback'; // iTunes 7.0 - - // http://www.geocities.com/xhelmboyx/quicktime/formats/mp4-layout.txt - - - - // boxnames: - $handyatomtranslatorarray['iTunSMPB'] = 'iTunSMPB'; - $handyatomtranslatorarray['iTunNORM'] = 'iTunNORM'; - $handyatomtranslatorarray['Encoding Params'] = 'Encoding Params'; - $handyatomtranslatorarray['replaygain_track_gain'] = 'replaygain_track_gain'; - $handyatomtranslatorarray['replaygain_track_peak'] = 'replaygain_track_peak'; - $handyatomtranslatorarray['replaygain_track_minmax'] = 'replaygain_track_minmax'; - $handyatomtranslatorarray['MusicIP PUID'] = 'MusicIP PUID'; - $handyatomtranslatorarray['MusicBrainz Artist Id'] = 'MusicBrainz Artist Id'; - $handyatomtranslatorarray['MusicBrainz Album Id'] = 'MusicBrainz Album Id'; - $handyatomtranslatorarray['MusicBrainz Album Artist Id'] = 'MusicBrainz Album Artist Id'; - $handyatomtranslatorarray['MusicBrainz Track Id'] = 'MusicBrainz Track Id'; - $handyatomtranslatorarray['MusicBrainz Disc Id'] = 'MusicBrainz Disc Id'; - } - $info = &$this->getid3->info; - $comment_key = ''; - if ($boxname && ($boxname != $keyname) && isset($handyatomtranslatorarray[$boxname])) { - $comment_key = $handyatomtranslatorarray[$boxname]; - } elseif (isset($handyatomtranslatorarray[$keyname])) { - $comment_key = $handyatomtranslatorarray[$keyname]; - } - if ($comment_key) { - if ($comment_key == 'picture') { - if (!is_array($data)) { - $image_mime = ''; - if (preg_match('#^\x89\x50\x4E\x47\x0D\x0A\x1A\x0A#', $data)) { - $image_mime = 'image/png'; - } elseif (preg_match('#^\xFF\xD8\xFF#', $data)) { - $image_mime = 'image/jpeg'; - } elseif (preg_match('#^GIF#', $data)) { - $image_mime = 'image/gif'; - } elseif (preg_match('#^BM#', $data)) { - $image_mime = 'image/bmp'; - } - $data = array('data'=>$data, 'image_mime'=>$image_mime); - } - } - $info['quicktime']['comments'][$comment_key][] = $data; - } - return true; - } - - function NoNullString($nullterminatedstring) { - // remove the single null terminator on null terminated strings - if (substr($nullterminatedstring, strlen($nullterminatedstring) - 1, 1) === "\x00") { - return substr($nullterminatedstring, 0, strlen($nullterminatedstring) - 1); - } - return $nullterminatedstring; - } - - function Pascal2String($pascalstring) { - // Pascal strings have 1 unsigned byte at the beginning saying how many chars (1-255) are in the string - return substr($pascalstring, 1); - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.real.php b/3rdparty/getid3/module.audio-video.real.php deleted file mode 100644 index d716e7da3c23c0ecbf6a4ab52664b49e8dae10d0..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.real.php +++ /dev/null @@ -1,530 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.real.php // -// module for analyzing Real Audio/Video files // -// dependencies: module.audio-video.riff.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - -class getid3_real extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'real'; - $info['bitrate'] = 0; - $info['playtime_seconds'] = 0; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $ChunkCounter = 0; - while (ftell($this->getid3->fp) < $info['avdataend']) { - $ChunkData = fread($this->getid3->fp, 8); - $ChunkName = substr($ChunkData, 0, 4); - $ChunkSize = getid3_lib::BigEndian2Int(substr($ChunkData, 4, 4)); - - if ($ChunkName == '.ra'."\xFD") { - $ChunkData .= fread($this->getid3->fp, $ChunkSize - 8); - if ($this->ParseOldRAheader(substr($ChunkData, 0, 128), $info['real']['old_ra_header'])) { - $info['audio']['dataformat'] = 'real'; - $info['audio']['lossless'] = false; - $info['audio']['sample_rate'] = $info['real']['old_ra_header']['sample_rate']; - $info['audio']['bits_per_sample'] = $info['real']['old_ra_header']['bits_per_sample']; - $info['audio']['channels'] = $info['real']['old_ra_header']['channels']; - - $info['playtime_seconds'] = 60 * ($info['real']['old_ra_header']['audio_bytes'] / $info['real']['old_ra_header']['bytes_per_minute']); - $info['audio']['bitrate'] = 8 * ($info['real']['old_ra_header']['audio_bytes'] / $info['playtime_seconds']); - $info['audio']['codec'] = $this->RealAudioCodecFourCClookup($info['real']['old_ra_header']['fourcc'], $info['audio']['bitrate']); - - foreach ($info['real']['old_ra_header']['comments'] as $key => $valuearray) { - if (strlen(trim($valuearray[0])) > 0) { - $info['real']['comments'][$key][] = trim($valuearray[0]); - } - } - return true; - } - $info['error'][] = 'There was a problem parsing this RealAudio file. Please submit it for analysis to info@getid3.org'; - unset($info['bitrate']); - unset($info['playtime_seconds']); - return false; - } - - // shortcut - $info['real']['chunks'][$ChunkCounter] = array(); - $thisfile_real_chunks_currentchunk = &$info['real']['chunks'][$ChunkCounter]; - - $thisfile_real_chunks_currentchunk['name'] = $ChunkName; - $thisfile_real_chunks_currentchunk['offset'] = ftell($this->getid3->fp) - 8; - $thisfile_real_chunks_currentchunk['length'] = $ChunkSize; - if (($thisfile_real_chunks_currentchunk['offset'] + $thisfile_real_chunks_currentchunk['length']) > $info['avdataend']) { - $info['warning'][] = 'Chunk "'.$thisfile_real_chunks_currentchunk['name'].'" at offset '.$thisfile_real_chunks_currentchunk['offset'].' claims to be '.$thisfile_real_chunks_currentchunk['length'].' bytes long, which is beyond end of file'; - return false; - } - - if ($ChunkSize > ($this->getid3->fread_buffer_size() + 8)) { - - $ChunkData .= fread($this->getid3->fp, $this->getid3->fread_buffer_size() - 8); - fseek($this->getid3->fp, $thisfile_real_chunks_currentchunk['offset'] + $ChunkSize, SEEK_SET); - - } elseif(($ChunkSize - 8) > 0) { - - $ChunkData .= fread($this->getid3->fp, $ChunkSize - 8); - - } - $offset = 8; - - switch ($ChunkName) { - - case '.RMF': // RealMedia File Header - $thisfile_real_chunks_currentchunk['object_version'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - switch ($thisfile_real_chunks_currentchunk['object_version']) { - - case 0: - $thisfile_real_chunks_currentchunk['file_version'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['headers_count'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - break; - - default: - //$info['warning'][] = 'Expected .RMF-object_version to be "0", actual value is "'.$thisfile_real_chunks_currentchunk['object_version'].'" (should not be a problem)'; - break; - - } - break; - - - case 'PROP': // Properties Header - $thisfile_real_chunks_currentchunk['object_version'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - if ($thisfile_real_chunks_currentchunk['object_version'] == 0) { - $thisfile_real_chunks_currentchunk['max_bit_rate'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['avg_bit_rate'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['max_packet_size'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['avg_packet_size'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['num_packets'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['duration'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['preroll'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['index_offset'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['data_offset'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['num_streams'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $thisfile_real_chunks_currentchunk['flags_raw'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $info['playtime_seconds'] = $thisfile_real_chunks_currentchunk['duration'] / 1000; - if ($thisfile_real_chunks_currentchunk['duration'] > 0) { - $info['bitrate'] += $thisfile_real_chunks_currentchunk['avg_bit_rate']; - } - $thisfile_real_chunks_currentchunk['flags']['save_enabled'] = (bool) ($thisfile_real_chunks_currentchunk['flags_raw'] & 0x0001); - $thisfile_real_chunks_currentchunk['flags']['perfect_play'] = (bool) ($thisfile_real_chunks_currentchunk['flags_raw'] & 0x0002); - $thisfile_real_chunks_currentchunk['flags']['live_broadcast'] = (bool) ($thisfile_real_chunks_currentchunk['flags_raw'] & 0x0004); - } - break; - - case 'MDPR': // Media Properties Header - $thisfile_real_chunks_currentchunk['object_version'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - if ($thisfile_real_chunks_currentchunk['object_version'] == 0) { - $thisfile_real_chunks_currentchunk['stream_number'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $thisfile_real_chunks_currentchunk['max_bit_rate'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['avg_bit_rate'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['max_packet_size'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['avg_packet_size'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['start_time'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['preroll'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['duration'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['stream_name_size'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 1)); - $offset += 1; - $thisfile_real_chunks_currentchunk['stream_name'] = substr($ChunkData, $offset, $thisfile_real_chunks_currentchunk['stream_name_size']); - $offset += $thisfile_real_chunks_currentchunk['stream_name_size']; - $thisfile_real_chunks_currentchunk['mime_type_size'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 1)); - $offset += 1; - $thisfile_real_chunks_currentchunk['mime_type'] = substr($ChunkData, $offset, $thisfile_real_chunks_currentchunk['mime_type_size']); - $offset += $thisfile_real_chunks_currentchunk['mime_type_size']; - $thisfile_real_chunks_currentchunk['type_specific_len'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['type_specific_data'] = substr($ChunkData, $offset, $thisfile_real_chunks_currentchunk['type_specific_len']); - $offset += $thisfile_real_chunks_currentchunk['type_specific_len']; - - // shortcut - $thisfile_real_chunks_currentchunk_typespecificdata = &$thisfile_real_chunks_currentchunk['type_specific_data']; - - switch ($thisfile_real_chunks_currentchunk['mime_type']) { - case 'video/x-pn-realvideo': - case 'video/x-pn-multirate-realvideo': - // http://www.freelists.org/archives/matroska-devel/07-2003/msg00010.html - - // shortcut - $thisfile_real_chunks_currentchunk['video_info'] = array(); - $thisfile_real_chunks_currentchunk_videoinfo = &$thisfile_real_chunks_currentchunk['video_info']; - - $thisfile_real_chunks_currentchunk_videoinfo['dwSize'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 0, 4)); - $thisfile_real_chunks_currentchunk_videoinfo['fourcc1'] = substr($thisfile_real_chunks_currentchunk_typespecificdata, 4, 4); - $thisfile_real_chunks_currentchunk_videoinfo['fourcc2'] = substr($thisfile_real_chunks_currentchunk_typespecificdata, 8, 4); - $thisfile_real_chunks_currentchunk_videoinfo['width'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 12, 2)); - $thisfile_real_chunks_currentchunk_videoinfo['height'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 14, 2)); - $thisfile_real_chunks_currentchunk_videoinfo['bits_per_sample'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 16, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown1'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 18, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown2'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 20, 2)); - $thisfile_real_chunks_currentchunk_videoinfo['frames_per_second'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 22, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown3'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 24, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown4'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 26, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown5'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 28, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown6'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 30, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown7'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 32, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown8'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 34, 2)); - //$thisfile_real_chunks_currentchunk_videoinfo['unknown9'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 36, 2)); - - $thisfile_real_chunks_currentchunk_videoinfo['codec'] = getid3_riff::RIFFfourccLookup($thisfile_real_chunks_currentchunk_videoinfo['fourcc2']); - - $info['video']['resolution_x'] = $thisfile_real_chunks_currentchunk_videoinfo['width']; - $info['video']['resolution_y'] = $thisfile_real_chunks_currentchunk_videoinfo['height']; - $info['video']['frame_rate'] = (float) $thisfile_real_chunks_currentchunk_videoinfo['frames_per_second']; - $info['video']['codec'] = $thisfile_real_chunks_currentchunk_videoinfo['codec']; - $info['video']['bits_per_sample'] = $thisfile_real_chunks_currentchunk_videoinfo['bits_per_sample']; - break; - - case 'audio/x-pn-realaudio': - case 'audio/x-pn-multirate-realaudio': - $this->ParseOldRAheader($thisfile_real_chunks_currentchunk_typespecificdata, $thisfile_real_chunks_currentchunk['parsed_audio_data']); - - $info['audio']['sample_rate'] = $thisfile_real_chunks_currentchunk['parsed_audio_data']['sample_rate']; - $info['audio']['bits_per_sample'] = $thisfile_real_chunks_currentchunk['parsed_audio_data']['bits_per_sample']; - $info['audio']['channels'] = $thisfile_real_chunks_currentchunk['parsed_audio_data']['channels']; - if (!empty($info['audio']['dataformat'])) { - foreach ($info['audio'] as $key => $value) { - if ($key != 'streams') { - $info['audio']['streams'][$thisfile_real_chunks_currentchunk['stream_number']][$key] = $value; - } - } - } - break; - - case 'logical-fileinfo': - // shortcut - $thisfile_real_chunks_currentchunk['logical_fileinfo'] = array(); - $thisfile_real_chunks_currentchunk_logicalfileinfo = &$thisfile_real_chunks_currentchunk['logical_fileinfo']; - - $thisfile_real_chunks_currentchunk_logicalfileinfo_offset = 0; - $thisfile_real_chunks_currentchunk_logicalfileinfo['logical_fileinfo_length'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, 4)); - $thisfile_real_chunks_currentchunk_logicalfileinfo_offset += 4; - - //$thisfile_real_chunks_currentchunk_logicalfileinfo['unknown1'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, 4)); - $thisfile_real_chunks_currentchunk_logicalfileinfo_offset += 4; - - $thisfile_real_chunks_currentchunk_logicalfileinfo['num_tags'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, 4)); - $thisfile_real_chunks_currentchunk_logicalfileinfo_offset += 4; - - //$thisfile_real_chunks_currentchunk_logicalfileinfo['unknown2'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, 4)); - $thisfile_real_chunks_currentchunk_logicalfileinfo_offset += 4; - - //$thisfile_real_chunks_currentchunk_logicalfileinfo['d'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, 1)); - - //$thisfile_real_chunks_currentchunk_logicalfileinfo['one_type'] = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, 4)); - //$thisfile_real_chunks_currentchunk_logicalfileinfo_thislength = getid3_lib::BigEndian2Int(substr($thisfile_real_chunks_currentchunk_typespecificdata, 4 + $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, 2)); - //$thisfile_real_chunks_currentchunk_logicalfileinfo['one'] = substr($thisfile_real_chunks_currentchunk_typespecificdata, 6 + $thisfile_real_chunks_currentchunk_logicalfileinfo_offset, $thisfile_real_chunks_currentchunk_logicalfileinfo_thislength); - //$thisfile_real_chunks_currentchunk_logicalfileinfo_offset += (6 + $thisfile_real_chunks_currentchunk_logicalfileinfo_thislength); - - break; - - } - - - if (empty($info['playtime_seconds'])) { - $info['playtime_seconds'] = max($info['playtime_seconds'], ($thisfile_real_chunks_currentchunk['duration'] + $thisfile_real_chunks_currentchunk['start_time']) / 1000); - } - if ($thisfile_real_chunks_currentchunk['duration'] > 0) { - switch ($thisfile_real_chunks_currentchunk['mime_type']) { - case 'audio/x-pn-realaudio': - case 'audio/x-pn-multirate-realaudio': - $info['audio']['bitrate'] = (isset($info['audio']['bitrate']) ? $info['audio']['bitrate'] : 0) + $thisfile_real_chunks_currentchunk['avg_bit_rate']; - $info['audio']['codec'] = $this->RealAudioCodecFourCClookup($thisfile_real_chunks_currentchunk['parsed_audio_data']['fourcc'], $info['audio']['bitrate']); - $info['audio']['dataformat'] = 'real'; - $info['audio']['lossless'] = false; - break; - - case 'video/x-pn-realvideo': - case 'video/x-pn-multirate-realvideo': - $info['video']['bitrate'] = (isset($info['video']['bitrate']) ? $info['video']['bitrate'] : 0) + $thisfile_real_chunks_currentchunk['avg_bit_rate']; - $info['video']['bitrate_mode'] = 'cbr'; - $info['video']['dataformat'] = 'real'; - $info['video']['lossless'] = false; - $info['video']['pixel_aspect_ratio'] = (float) 1; - break; - - case 'audio/x-ralf-mpeg4-generic': - $info['audio']['bitrate'] = (isset($info['audio']['bitrate']) ? $info['audio']['bitrate'] : 0) + $thisfile_real_chunks_currentchunk['avg_bit_rate']; - $info['audio']['codec'] = 'RealAudio Lossless'; - $info['audio']['dataformat'] = 'real'; - $info['audio']['lossless'] = true; - break; - } - $info['bitrate'] = (isset($info['video']['bitrate']) ? $info['video']['bitrate'] : 0) + (isset($info['audio']['bitrate']) ? $info['audio']['bitrate'] : 0); - } - } - break; - - case 'CONT': // Content Description Header (text comments) - $thisfile_real_chunks_currentchunk['object_version'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - if ($thisfile_real_chunks_currentchunk['object_version'] == 0) { - $thisfile_real_chunks_currentchunk['title_len'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $thisfile_real_chunks_currentchunk['title'] = (string) substr($ChunkData, $offset, $thisfile_real_chunks_currentchunk['title_len']); - $offset += $thisfile_real_chunks_currentchunk['title_len']; - - $thisfile_real_chunks_currentchunk['artist_len'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $thisfile_real_chunks_currentchunk['artist'] = (string) substr($ChunkData, $offset, $thisfile_real_chunks_currentchunk['artist_len']); - $offset += $thisfile_real_chunks_currentchunk['artist_len']; - - $thisfile_real_chunks_currentchunk['copyright_len'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $thisfile_real_chunks_currentchunk['copyright'] = (string) substr($ChunkData, $offset, $thisfile_real_chunks_currentchunk['copyright_len']); - $offset += $thisfile_real_chunks_currentchunk['copyright_len']; - - $thisfile_real_chunks_currentchunk['comment_len'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $thisfile_real_chunks_currentchunk['comment'] = (string) substr($ChunkData, $offset, $thisfile_real_chunks_currentchunk['comment_len']); - $offset += $thisfile_real_chunks_currentchunk['comment_len']; - - - $commentkeystocopy = array('title'=>'title', 'artist'=>'artist', 'copyright'=>'copyright', 'comment'=>'comment'); - foreach ($commentkeystocopy as $key => $val) { - if ($thisfile_real_chunks_currentchunk[$key]) { - $info['real']['comments'][$val][] = trim($thisfile_real_chunks_currentchunk[$key]); - } - } - - } - break; - - - case 'DATA': // Data Chunk Header - // do nothing - break; - - case 'INDX': // Index Section Header - $thisfile_real_chunks_currentchunk['object_version'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - if ($thisfile_real_chunks_currentchunk['object_version'] == 0) { - $thisfile_real_chunks_currentchunk['num_indices'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - $thisfile_real_chunks_currentchunk['stream_number'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 2)); - $offset += 2; - $thisfile_real_chunks_currentchunk['next_index_header'] = getid3_lib::BigEndian2Int(substr($ChunkData, $offset, 4)); - $offset += 4; - - if ($thisfile_real_chunks_currentchunk['next_index_header'] == 0) { - // last index chunk found, ignore rest of file - break 2; - } else { - // non-last index chunk, seek to next index chunk (skipping actual index data) - fseek($this->getid3->fp, $thisfile_real_chunks_currentchunk['next_index_header'], SEEK_SET); - } - } - break; - - default: - $info['warning'][] = 'Unhandled RealMedia chunk "'.$ChunkName.'" at offset '.$thisfile_real_chunks_currentchunk['offset']; - break; - } - $ChunkCounter++; - } - - if (!empty($info['audio']['streams'])) { - $info['audio']['bitrate'] = 0; - foreach ($info['audio']['streams'] as $key => $valuearray) { - $info['audio']['bitrate'] += $valuearray['bitrate']; - } - } - - return true; - } - - - function ParseOldRAheader($OldRAheaderData, &$ParsedArray) { - // http://www.freelists.org/archives/matroska-devel/07-2003/msg00010.html - - $ParsedArray = array(); - $ParsedArray['magic'] = substr($OldRAheaderData, 0, 4); - if ($ParsedArray['magic'] != '.ra'."\xFD") { - return false; - } - $ParsedArray['version1'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 4, 2)); - - if ($ParsedArray['version1'] < 3) { - - return false; - - } elseif ($ParsedArray['version1'] == 3) { - - $ParsedArray['fourcc1'] = '.ra3'; - $ParsedArray['bits_per_sample'] = 16; // hard-coded for old versions? - $ParsedArray['sample_rate'] = 8000; // hard-coded for old versions? - - $ParsedArray['header_size'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 6, 2)); - $ParsedArray['channels'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 8, 2)); // always 1 (?) - //$ParsedArray['unknown1'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 10, 2)); - //$ParsedArray['unknown2'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 12, 2)); - //$ParsedArray['unknown3'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 14, 2)); - $ParsedArray['bytes_per_minute'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 16, 2)); - $ParsedArray['audio_bytes'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 18, 4)); - $ParsedArray['comments_raw'] = substr($OldRAheaderData, 22, $ParsedArray['header_size'] - 22 + 1); // not including null terminator - - $commentoffset = 0; - $commentlength = getid3_lib::BigEndian2Int(substr($ParsedArray['comments_raw'], $commentoffset++, 1)); - $ParsedArray['comments']['title'][] = substr($ParsedArray['comments_raw'], $commentoffset, $commentlength); - $commentoffset += $commentlength; - - $commentlength = getid3_lib::BigEndian2Int(substr($ParsedArray['comments_raw'], $commentoffset++, 1)); - $ParsedArray['comments']['artist'][] = substr($ParsedArray['comments_raw'], $commentoffset, $commentlength); - $commentoffset += $commentlength; - - $commentlength = getid3_lib::BigEndian2Int(substr($ParsedArray['comments_raw'], $commentoffset++, 1)); - $ParsedArray['comments']['copyright'][] = substr($ParsedArray['comments_raw'], $commentoffset, $commentlength); - $commentoffset += $commentlength; - - $commentoffset++; // final null terminator (?) - $commentoffset++; // fourcc length (?) should be 4 - $ParsedArray['fourcc'] = substr($OldRAheaderData, 23 + $commentoffset, 4); - - } elseif ($ParsedArray['version1'] <= 5) { - - //$ParsedArray['unknown1'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 6, 2)); - $ParsedArray['fourcc1'] = substr($OldRAheaderData, 8, 4); - $ParsedArray['file_size'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 12, 4)); - $ParsedArray['version2'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 16, 2)); - $ParsedArray['header_size'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 18, 4)); - $ParsedArray['codec_flavor_id'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 22, 2)); - $ParsedArray['coded_frame_size'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 24, 4)); - $ParsedArray['audio_bytes'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 28, 4)); - $ParsedArray['bytes_per_minute'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 32, 4)); - //$ParsedArray['unknown5'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 36, 4)); - $ParsedArray['sub_packet_h'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 40, 2)); - $ParsedArray['frame_size'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 42, 2)); - $ParsedArray['sub_packet_size'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 44, 2)); - //$ParsedArray['unknown6'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 46, 2)); - - switch ($ParsedArray['version1']) { - - case 4: - $ParsedArray['sample_rate'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 48, 2)); - //$ParsedArray['unknown8'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 50, 2)); - $ParsedArray['bits_per_sample'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 52, 2)); - $ParsedArray['channels'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 54, 2)); - $ParsedArray['length_fourcc2'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 56, 1)); - $ParsedArray['fourcc2'] = substr($OldRAheaderData, 57, 4); - $ParsedArray['length_fourcc3'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 61, 1)); - $ParsedArray['fourcc3'] = substr($OldRAheaderData, 62, 4); - //$ParsedArray['unknown9'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 66, 1)); - //$ParsedArray['unknown10'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 67, 2)); - $ParsedArray['comments_raw'] = substr($OldRAheaderData, 69, $ParsedArray['header_size'] - 69 + 16); - - $commentoffset = 0; - $commentlength = getid3_lib::BigEndian2Int(substr($ParsedArray['comments_raw'], $commentoffset++, 1)); - $ParsedArray['comments']['title'][] = substr($ParsedArray['comments_raw'], $commentoffset, $commentlength); - $commentoffset += $commentlength; - - $commentlength = getid3_lib::BigEndian2Int(substr($ParsedArray['comments_raw'], $commentoffset++, 1)); - $ParsedArray['comments']['artist'][] = substr($ParsedArray['comments_raw'], $commentoffset, $commentlength); - $commentoffset += $commentlength; - - $commentlength = getid3_lib::BigEndian2Int(substr($ParsedArray['comments_raw'], $commentoffset++, 1)); - $ParsedArray['comments']['copyright'][] = substr($ParsedArray['comments_raw'], $commentoffset, $commentlength); - $commentoffset += $commentlength; - break; - - case 5: - $ParsedArray['sample_rate'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 48, 4)); - $ParsedArray['sample_rate2'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 52, 4)); - $ParsedArray['bits_per_sample'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 56, 4)); - $ParsedArray['channels'] = getid3_lib::BigEndian2Int(substr($OldRAheaderData, 60, 2)); - $ParsedArray['genr'] = substr($OldRAheaderData, 62, 4); - $ParsedArray['fourcc3'] = substr($OldRAheaderData, 66, 4); - $ParsedArray['comments'] = array(); - break; - } - $ParsedArray['fourcc'] = $ParsedArray['fourcc3']; - - } - foreach ($ParsedArray['comments'] as $key => $value) { - if ($ParsedArray['comments'][$key][0] === false) { - $ParsedArray['comments'][$key][0] = ''; - } - } - - return true; - } - - function RealAudioCodecFourCClookup($fourcc, $bitrate) { - static $RealAudioCodecFourCClookup = array(); - if (empty($RealAudioCodecFourCClookup)) { - // http://www.its.msstate.edu/net/real/reports/config/tags.stats - // http://www.freelists.org/archives/matroska-devel/06-2003/fullthread18.html - - $RealAudioCodecFourCClookup['14_4'][8000] = 'RealAudio v2 (14.4kbps)'; - $RealAudioCodecFourCClookup['14.4'][8000] = 'RealAudio v2 (14.4kbps)'; - $RealAudioCodecFourCClookup['lpcJ'][8000] = 'RealAudio v2 (14.4kbps)'; - $RealAudioCodecFourCClookup['28_8'][15200] = 'RealAudio v2 (28.8kbps)'; - $RealAudioCodecFourCClookup['28.8'][15200] = 'RealAudio v2 (28.8kbps)'; - $RealAudioCodecFourCClookup['sipr'][4933] = 'RealAudio v4 (5kbps Voice)'; - $RealAudioCodecFourCClookup['sipr'][6444] = 'RealAudio v4 (6.5kbps Voice)'; - $RealAudioCodecFourCClookup['sipr'][8444] = 'RealAudio v4 (8.5kbps Voice)'; - $RealAudioCodecFourCClookup['sipr'][16000] = 'RealAudio v4 (16kbps Wideband)'; - $RealAudioCodecFourCClookup['dnet'][8000] = 'RealAudio v3 (8kbps Music)'; - $RealAudioCodecFourCClookup['dnet'][16000] = 'RealAudio v3 (16kbps Music Low Response)'; - $RealAudioCodecFourCClookup['dnet'][15963] = 'RealAudio v3 (16kbps Music Mid/High Response)'; - $RealAudioCodecFourCClookup['dnet'][20000] = 'RealAudio v3 (20kbps Music Stereo)'; - $RealAudioCodecFourCClookup['dnet'][32000] = 'RealAudio v3 (32kbps Music Mono)'; - $RealAudioCodecFourCClookup['dnet'][31951] = 'RealAudio v3 (32kbps Music Stereo)'; - $RealAudioCodecFourCClookup['dnet'][39965] = 'RealAudio v3 (40kbps Music Mono)'; - $RealAudioCodecFourCClookup['dnet'][40000] = 'RealAudio v3 (40kbps Music Stereo)'; - $RealAudioCodecFourCClookup['dnet'][79947] = 'RealAudio v3 (80kbps Music Mono)'; - $RealAudioCodecFourCClookup['dnet'][80000] = 'RealAudio v3 (80kbps Music Stereo)'; - - $RealAudioCodecFourCClookup['dnet'][0] = 'RealAudio v3'; - $RealAudioCodecFourCClookup['sipr'][0] = 'RealAudio v4'; - $RealAudioCodecFourCClookup['cook'][0] = 'RealAudio G2'; - $RealAudioCodecFourCClookup['atrc'][0] = 'RealAudio 8'; - } - $roundbitrate = intval(round($bitrate)); - if (isset($RealAudioCodecFourCClookup[$fourcc][$roundbitrate])) { - return $RealAudioCodecFourCClookup[$fourcc][$roundbitrate]; - } elseif (isset($RealAudioCodecFourCClookup[$fourcc][0])) { - return $RealAudioCodecFourCClookup[$fourcc][0]; - } - return $fourcc; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.riff.php b/3rdparty/getid3/module.audio-video.riff.php deleted file mode 100644 index 8e8f53a403f94248a03c588840a41954e77a1552..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.riff.php +++ /dev/null @@ -1,2409 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.riff.php // -// module for analyzing RIFF files // -// multiple formats supported by this module: // -// Wave, AVI, AIFF/AIFC, (MP3,AC3)/RIFF, Wavpack v3, 8SVX // -// dependencies: module.audio.mp3.php // -// module.audio.ac3.php (optional) // -// module.audio.dts.php (optional) // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true); - -class getid3_riff extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - // initialize these values to an empty array, otherwise they default to NULL - // and you can't append array values to a NULL value - $info['riff'] = array('raw'=>array()); - - // Shortcuts - $thisfile_riff = &$info['riff']; - $thisfile_riff_raw = &$thisfile_riff['raw']; - $thisfile_audio = &$info['audio']; - $thisfile_video = &$info['video']; - $thisfile_audio_dataformat = &$thisfile_audio['dataformat']; - $thisfile_riff_audio = &$thisfile_riff['audio']; - $thisfile_riff_video = &$thisfile_riff['video']; - - - $Original['avdataoffset'] = $info['avdataoffset']; - $Original['avdataend'] = $info['avdataend']; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $RIFFheader = fread($this->getid3->fp, 12); - $RIFFsubtype = substr($RIFFheader, 8, 4); - switch (substr($RIFFheader, 0, 4)) { - case 'FORM': - $info['fileformat'] = 'aiff'; - $thisfile_riff['header_size'] = $this->EitherEndian2Int(substr($RIFFheader, 4, 4)); - $thisfile_riff[$RIFFsubtype] = $this->ParseRIFF($info['avdataoffset'] + 12, $info['avdataoffset'] + $thisfile_riff['header_size']); - break; - - case 'RIFF': // AVI, WAV, etc - case 'SDSS': // SDSS is identical to RIFF, just renamed. Used by SmartSound QuickTracks (www.smartsound.com) - case 'RMP3': // RMP3 is identical to RIFF, just renamed. Used by [unknown program] when creating RIFF-MP3s - $info['fileformat'] = 'riff'; - $thisfile_riff['header_size'] = $this->EitherEndian2Int(substr($RIFFheader, 4, 4)); - if ($RIFFsubtype == 'RMP3') { - // RMP3 is identical to WAVE, just renamed. Used by [unknown program] when creating RIFF-MP3s - $RIFFsubtype = 'WAVE'; - } - $thisfile_riff[$RIFFsubtype] = $this->ParseRIFF($info['avdataoffset'] + 12, $info['avdataoffset'] + $thisfile_riff['header_size']); - if (($info['avdataend'] - $info['filesize']) == 1) { - // LiteWave appears to incorrectly *not* pad actual output file - // to nearest WORD boundary so may appear to be short by one - // byte, in which case - skip warning - $info['avdataend'] = $info['filesize']; - } - - $nextRIFFoffset = $Original['avdataoffset'] + 8 + $thisfile_riff['header_size']; // 8 = "RIFF" + 32-bit offset - while ($nextRIFFoffset < min($info['filesize'], $info['avdataend'])) { - if (!getid3_lib::intValueSupported($nextRIFFoffset + 1024)) { - $info['error'][] = 'AVI extends beyond '.round(PHP_INT_MAX / 1073741824).'GB and PHP filesystem functions cannot read that far, playtime is probably wrong'; - $info['warning'][] = '[avdataend] value may be incorrect, multiple AVIX chunks may be present'; - break; - } else { - fseek($this->getid3->fp, $nextRIFFoffset, SEEK_SET); - $nextRIFFheader = fread($this->getid3->fp, 12); - if ($nextRIFFoffset == ($info['avdataend'] - 1)) { - if (substr($nextRIFFheader, 0, 1) == "\x00") { - // RIFF padded to WORD boundary, we're actually already at the end - break; - } - } - $nextRIFFheaderID = substr($nextRIFFheader, 0, 4); - $nextRIFFsize = $this->EitherEndian2Int(substr($nextRIFFheader, 4, 4)); - $nextRIFFtype = substr($nextRIFFheader, 8, 4); - $chunkdata = array(); - $chunkdata['offset'] = $nextRIFFoffset + 8; - $chunkdata['size'] = $nextRIFFsize; - $nextRIFFoffset = $chunkdata['offset'] + $chunkdata['size']; - switch ($nextRIFFheaderID) { - case 'RIFF': - $info['avdataend'] = $nextRIFFoffset; - if (!getid3_lib::intValueSupported($info['avdataend'])) { - $info['error'][] = 'AVI extends beyond '.round(PHP_INT_MAX / 1073741824).'GB and PHP filesystem functions cannot read that far, playtime is probably wrong'; - $info['warning'][] = '[avdataend] value may be incorrect, multiple AVIX chunks may be present'; - } - $chunkdata['chunks'] = $this->ParseRIFF($chunkdata['offset'] + 4, $chunkdata['offset'] + $chunkdata['size']); - - if (!isset($thisfile_riff[$nextRIFFtype])) { - $thisfile_riff[$nextRIFFtype] = array(); - } - $thisfile_riff[$nextRIFFtype][] = $chunkdata; - break; - case 'JUNK': - // ignore - $thisfile_riff[$nextRIFFheaderID][] = $chunkdata; - break; - default: - if ($info['filesize'] == ($chunkdata['offset'] - 8 + 128)) { - $DIVXTAG = $nextRIFFheader.fread($this->getid3->fp, 128 - 12); - if (substr($DIVXTAG, -7) == 'DIVXTAG') { - // DIVXTAG is supposed to be inside an IDVX chunk in a LIST chunk, but some bad encoders just slap it on the end of a file - $info['warning'][] = 'Found wrongly-structured DIVXTAG at offset '.(ftell($this->getid3->fp) - 128 + 12).', parsing anyway'; - $thisfile_riff['DIVXTAG'] = $this->ParseDIVXTAG($DIVXTAG); - foreach ($thisfile_riff['DIVXTAG'] as $key => $value) { - if ($value && !preg_match('#_id$#', $key)) { - $thisfile_riff['comments'][$key][] = $value; - } - } - break 2; - } - } - $info['warning'][] = 'expecting "RIFF" or "JUNK" at '.$nextRIFFoffset.', found '.getid3_lib::PrintHexBytes(substr($nextRIFFheader, 0, 4)).' - skipping rest of file'; - break 2; - } - } - } - if ($RIFFsubtype == 'WAVE') { - $thisfile_riff_WAVE = &$thisfile_riff['WAVE']; - } - break; - - default: - $info['error'][] = 'Cannot parse RIFF (this is maybe not a RIFF / WAV / AVI file?) - expecting "FORM|RIFF|SDSS|RMP3" found "'.$RIFFsubtype.'" instead'; - unset($info['fileformat']); - return false; - break; - } - - $streamindex = 0; - switch ($RIFFsubtype) { - case 'WAVE': - if (empty($thisfile_audio['bitrate_mode'])) { - $thisfile_audio['bitrate_mode'] = 'cbr'; - } - if (empty($thisfile_audio_dataformat)) { - $thisfile_audio_dataformat = 'wav'; - } - - if (isset($thisfile_riff_WAVE['data'][0]['offset'])) { - $info['avdataoffset'] = $thisfile_riff_WAVE['data'][0]['offset'] + 8; - $info['avdataend'] = $info['avdataoffset'] + $thisfile_riff_WAVE['data'][0]['size']; - } - if (isset($thisfile_riff_WAVE['fmt '][0]['data'])) { - - $thisfile_riff_audio[$streamindex] = getid3_riff::RIFFparseWAVEFORMATex($thisfile_riff_WAVE['fmt '][0]['data']); - $thisfile_audio['wformattag'] = $thisfile_riff_audio[$streamindex]['raw']['wFormatTag']; - if (!isset($thisfile_riff_audio[$streamindex]['bitrate']) || ($thisfile_riff_audio[$streamindex]['bitrate'] == 0)) { - $info['error'][] = 'Corrupt RIFF file: bitrate_audio == zero'; - return false; - } - $thisfile_riff_raw['fmt '] = $thisfile_riff_audio[$streamindex]['raw']; - unset($thisfile_riff_audio[$streamindex]['raw']); - $thisfile_audio['streams'][$streamindex] = $thisfile_riff_audio[$streamindex]; - - $thisfile_audio = getid3_lib::array_merge_noclobber($thisfile_audio, $thisfile_riff_audio[$streamindex]); - if (substr($thisfile_audio['codec'], 0, strlen('unknown: 0x')) == 'unknown: 0x') { - $info['warning'][] = 'Audio codec = '.$thisfile_audio['codec']; - } - $thisfile_audio['bitrate'] = $thisfile_riff_audio[$streamindex]['bitrate']; - - $info['playtime_seconds'] = (float) ((($info['avdataend'] - $info['avdataoffset']) * 8) / $thisfile_audio['bitrate']); - - $thisfile_audio['lossless'] = false; - if (isset($thisfile_riff_WAVE['data'][0]['offset']) && isset($thisfile_riff_raw['fmt ']['wFormatTag'])) { - switch ($thisfile_riff_raw['fmt ']['wFormatTag']) { - - case 0x0001: // PCM - $thisfile_audio['lossless'] = true; - break; - - case 0x2000: // AC-3 - $thisfile_audio_dataformat = 'ac3'; - break; - - default: - // do nothing - break; - - } - } - $thisfile_audio['streams'][$streamindex]['wformattag'] = $thisfile_audio['wformattag']; - $thisfile_audio['streams'][$streamindex]['bitrate_mode'] = $thisfile_audio['bitrate_mode']; - $thisfile_audio['streams'][$streamindex]['lossless'] = $thisfile_audio['lossless']; - $thisfile_audio['streams'][$streamindex]['dataformat'] = $thisfile_audio_dataformat; - } - - if (isset($thisfile_riff_WAVE['rgad'][0]['data'])) { - - // shortcuts - $rgadData = &$thisfile_riff_WAVE['rgad'][0]['data']; - $thisfile_riff_raw['rgad'] = array('track'=>array(), 'album'=>array()); - $thisfile_riff_raw_rgad = &$thisfile_riff_raw['rgad']; - $thisfile_riff_raw_rgad_track = &$thisfile_riff_raw_rgad['track']; - $thisfile_riff_raw_rgad_album = &$thisfile_riff_raw_rgad['album']; - - $thisfile_riff_raw_rgad['fPeakAmplitude'] = getid3_lib::LittleEndian2Float(substr($rgadData, 0, 4)); - $thisfile_riff_raw_rgad['nRadioRgAdjust'] = $this->EitherEndian2Int(substr($rgadData, 4, 2)); - $thisfile_riff_raw_rgad['nAudiophileRgAdjust'] = $this->EitherEndian2Int(substr($rgadData, 6, 2)); - - $nRadioRgAdjustBitstring = str_pad(getid3_lib::Dec2Bin($thisfile_riff_raw_rgad['nRadioRgAdjust']), 16, '0', STR_PAD_LEFT); - $nAudiophileRgAdjustBitstring = str_pad(getid3_lib::Dec2Bin($thisfile_riff_raw_rgad['nAudiophileRgAdjust']), 16, '0', STR_PAD_LEFT); - $thisfile_riff_raw_rgad_track['name'] = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 0, 3)); - $thisfile_riff_raw_rgad_track['originator'] = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 3, 3)); - $thisfile_riff_raw_rgad_track['signbit'] = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 6, 1)); - $thisfile_riff_raw_rgad_track['adjustment'] = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 7, 9)); - $thisfile_riff_raw_rgad_album['name'] = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 0, 3)); - $thisfile_riff_raw_rgad_album['originator'] = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 3, 3)); - $thisfile_riff_raw_rgad_album['signbit'] = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 6, 1)); - $thisfile_riff_raw_rgad_album['adjustment'] = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 7, 9)); - - $thisfile_riff['rgad']['peakamplitude'] = $thisfile_riff_raw_rgad['fPeakAmplitude']; - if (($thisfile_riff_raw_rgad_track['name'] != 0) && ($thisfile_riff_raw_rgad_track['originator'] != 0)) { - $thisfile_riff['rgad']['track']['name'] = getid3_lib::RGADnameLookup($thisfile_riff_raw_rgad_track['name']); - $thisfile_riff['rgad']['track']['originator'] = getid3_lib::RGADoriginatorLookup($thisfile_riff_raw_rgad_track['originator']); - $thisfile_riff['rgad']['track']['adjustment'] = getid3_lib::RGADadjustmentLookup($thisfile_riff_raw_rgad_track['adjustment'], $thisfile_riff_raw_rgad_track['signbit']); - } - if (($thisfile_riff_raw_rgad_album['name'] != 0) && ($thisfile_riff_raw_rgad_album['originator'] != 0)) { - $thisfile_riff['rgad']['album']['name'] = getid3_lib::RGADnameLookup($thisfile_riff_raw_rgad_album['name']); - $thisfile_riff['rgad']['album']['originator'] = getid3_lib::RGADoriginatorLookup($thisfile_riff_raw_rgad_album['originator']); - $thisfile_riff['rgad']['album']['adjustment'] = getid3_lib::RGADadjustmentLookup($thisfile_riff_raw_rgad_album['adjustment'], $thisfile_riff_raw_rgad_album['signbit']); - } - } - - if (isset($thisfile_riff_WAVE['fact'][0]['data'])) { - $thisfile_riff_raw['fact']['NumberOfSamples'] = $this->EitherEndian2Int(substr($thisfile_riff_WAVE['fact'][0]['data'], 0, 4)); - - // This should be a good way of calculating exact playtime, - // but some sample files have had incorrect number of samples, - // so cannot use this method - - // if (!empty($thisfile_riff_raw['fmt ']['nSamplesPerSec'])) { - // $info['playtime_seconds'] = (float) $thisfile_riff_raw['fact']['NumberOfSamples'] / $thisfile_riff_raw['fmt ']['nSamplesPerSec']; - // } - } - if (!empty($thisfile_riff_raw['fmt ']['nAvgBytesPerSec'])) { - $thisfile_audio['bitrate'] = getid3_lib::CastAsInt($thisfile_riff_raw['fmt ']['nAvgBytesPerSec'] * 8); - } - - if (isset($thisfile_riff_WAVE['bext'][0]['data'])) { - // shortcut - $thisfile_riff_WAVE_bext_0 = &$thisfile_riff_WAVE['bext'][0]; - - $thisfile_riff_WAVE_bext_0['title'] = trim(substr($thisfile_riff_WAVE_bext_0['data'], 0, 256)); - $thisfile_riff_WAVE_bext_0['author'] = trim(substr($thisfile_riff_WAVE_bext_0['data'], 256, 32)); - $thisfile_riff_WAVE_bext_0['reference'] = trim(substr($thisfile_riff_WAVE_bext_0['data'], 288, 32)); - $thisfile_riff_WAVE_bext_0['origin_date'] = substr($thisfile_riff_WAVE_bext_0['data'], 320, 10); - $thisfile_riff_WAVE_bext_0['origin_time'] = substr($thisfile_riff_WAVE_bext_0['data'], 330, 8); - $thisfile_riff_WAVE_bext_0['time_reference'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_bext_0['data'], 338, 8)); - $thisfile_riff_WAVE_bext_0['bwf_version'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_bext_0['data'], 346, 1)); - $thisfile_riff_WAVE_bext_0['reserved'] = substr($thisfile_riff_WAVE_bext_0['data'], 347, 254); - $thisfile_riff_WAVE_bext_0['coding_history'] = explode("\r\n", trim(substr($thisfile_riff_WAVE_bext_0['data'], 601))); - if (preg_match('#^([0-9]{4}).([0-9]{2}).([0-9]{2})$#', $thisfile_riff_WAVE_bext_0['origin_date'], $matches_bext_date)) { - if (preg_match('#^([0-9]{2}).([0-9]{2}).([0-9]{2})$#', $thisfile_riff_WAVE_bext_0['origin_time'], $matches_bext_time)) { - list($dummy, $bext_timestamp['year'], $bext_timestamp['month'], $bext_timestamp['day']) = $matches_bext_date; - list($dummy, $bext_timestamp['hour'], $bext_timestamp['minute'], $bext_timestamp['second']) = $matches_bext_time; - $thisfile_riff_WAVE_bext_0['origin_date_unix'] = gmmktime($bext_timestamp['hour'], $bext_timestamp['minute'], $bext_timestamp['second'], $bext_timestamp['month'], $bext_timestamp['day'], $bext_timestamp['year']); - } else { - $info['warning'][] = 'RIFF.WAVE.BEXT.origin_time is invalid'; - } - } else { - $info['warning'][] = 'RIFF.WAVE.BEXT.origin_date is invalid'; - } - $thisfile_riff['comments']['author'][] = $thisfile_riff_WAVE_bext_0['author']; - $thisfile_riff['comments']['title'][] = $thisfile_riff_WAVE_bext_0['title']; - } - - if (isset($thisfile_riff_WAVE['MEXT'][0]['data'])) { - // shortcut - $thisfile_riff_WAVE_MEXT_0 = &$thisfile_riff_WAVE['MEXT'][0]; - - $thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 0, 2)); - $thisfile_riff_WAVE_MEXT_0['flags']['homogenous'] = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0001); - if ($thisfile_riff_WAVE_MEXT_0['flags']['homogenous']) { - $thisfile_riff_WAVE_MEXT_0['flags']['padding'] = ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0002) ? false : true; - $thisfile_riff_WAVE_MEXT_0['flags']['22_or_44'] = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0004); - $thisfile_riff_WAVE_MEXT_0['flags']['free_format'] = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0008); - - $thisfile_riff_WAVE_MEXT_0['nominal_frame_size'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 2, 2)); - } - $thisfile_riff_WAVE_MEXT_0['anciliary_data_length'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 6, 2)); - $thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 8, 2)); - $thisfile_riff_WAVE_MEXT_0['flags']['anciliary_data_left'] = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def'] & 0x0001); - $thisfile_riff_WAVE_MEXT_0['flags']['anciliary_data_free'] = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def'] & 0x0002); - $thisfile_riff_WAVE_MEXT_0['flags']['anciliary_data_right'] = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def'] & 0x0004); - } - - if (isset($thisfile_riff_WAVE['cart'][0]['data'])) { - // shortcut - $thisfile_riff_WAVE_cart_0 = &$thisfile_riff_WAVE['cart'][0]; - - $thisfile_riff_WAVE_cart_0['version'] = substr($thisfile_riff_WAVE_cart_0['data'], 0, 4); - $thisfile_riff_WAVE_cart_0['title'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 4, 64)); - $thisfile_riff_WAVE_cart_0['artist'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 68, 64)); - $thisfile_riff_WAVE_cart_0['cut_id'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 132, 64)); - $thisfile_riff_WAVE_cart_0['client_id'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 196, 64)); - $thisfile_riff_WAVE_cart_0['category'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 260, 64)); - $thisfile_riff_WAVE_cart_0['classification'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 324, 64)); - $thisfile_riff_WAVE_cart_0['out_cue'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 388, 64)); - $thisfile_riff_WAVE_cart_0['start_date'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 452, 10)); - $thisfile_riff_WAVE_cart_0['start_time'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 462, 8)); - $thisfile_riff_WAVE_cart_0['end_date'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 470, 10)); - $thisfile_riff_WAVE_cart_0['end_time'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 480, 8)); - $thisfile_riff_WAVE_cart_0['producer_app_id'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 488, 64)); - $thisfile_riff_WAVE_cart_0['producer_app_version'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 552, 64)); - $thisfile_riff_WAVE_cart_0['user_defined_text'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 616, 64)); - $thisfile_riff_WAVE_cart_0['zero_db_reference'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_cart_0['data'], 680, 4), true); - for ($i = 0; $i < 8; $i++) { - $thisfile_riff_WAVE_cart_0['post_time'][$i]['usage_fourcc'] = substr($thisfile_riff_WAVE_cart_0['data'], 684 + ($i * 8), 4); - $thisfile_riff_WAVE_cart_0['post_time'][$i]['timer_value'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_cart_0['data'], 684 + ($i * 8) + 4, 4)); - } - $thisfile_riff_WAVE_cart_0['url'] = trim(substr($thisfile_riff_WAVE_cart_0['data'], 748, 1024)); - $thisfile_riff_WAVE_cart_0['tag_text'] = explode("\r\n", trim(substr($thisfile_riff_WAVE_cart_0['data'], 1772))); - - $thisfile_riff['comments']['artist'][] = $thisfile_riff_WAVE_cart_0['artist']; - $thisfile_riff['comments']['title'][] = $thisfile_riff_WAVE_cart_0['title']; - } - - if (isset($thisfile_riff_WAVE['SNDM'][0]['data'])) { - // SoundMiner metadata - - // shortcuts - $thisfile_riff_WAVE_SNDM_0 = &$thisfile_riff_WAVE['SNDM'][0]; - $thisfile_riff_WAVE_SNDM_0_data = &$thisfile_riff_WAVE_SNDM_0['data']; - $SNDM_startoffset = 0; - $SNDM_endoffset = $thisfile_riff_WAVE_SNDM_0['size']; - - while ($SNDM_startoffset < $SNDM_endoffset) { - $SNDM_thisTagOffset = 0; - $SNDM_thisTagSize = getid3_lib::BigEndian2Int(substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 4)); - $SNDM_thisTagOffset += 4; - $SNDM_thisTagKey = substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 4); - $SNDM_thisTagOffset += 4; - $SNDM_thisTagDataSize = getid3_lib::BigEndian2Int(substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 2)); - $SNDM_thisTagOffset += 2; - $SNDM_thisTagDataFlags = getid3_lib::BigEndian2Int(substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 2)); - $SNDM_thisTagOffset += 2; - $SNDM_thisTagDataText = substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, $SNDM_thisTagDataSize); - $SNDM_thisTagOffset += $SNDM_thisTagDataSize; - - if ($SNDM_thisTagSize != (4 + 4 + 2 + 2 + $SNDM_thisTagDataSize)) { - $info['warning'][] = 'RIFF.WAVE.SNDM.data contains tag not expected length (expected: '.$SNDM_thisTagSize.', found: '.(4 + 4 + 2 + 2 + $SNDM_thisTagDataSize).') at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')'; - break; - } elseif ($SNDM_thisTagSize <= 0) { - $info['warning'][] = 'RIFF.WAVE.SNDM.data contains zero-size tag at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')'; - break; - } - $SNDM_startoffset += $SNDM_thisTagSize; - - $thisfile_riff_WAVE_SNDM_0['parsed_raw'][$SNDM_thisTagKey] = $SNDM_thisTagDataText; - if ($parsedkey = $this->RIFFwaveSNDMtagLookup($SNDM_thisTagKey)) { - $thisfile_riff_WAVE_SNDM_0['parsed'][$parsedkey] = $SNDM_thisTagDataText; - } else { - $info['warning'][] = 'RIFF.WAVE.SNDM contains unknown tag "'.$SNDM_thisTagKey.'" at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')'; - } - } - - $tagmapping = array( - 'tracktitle'=>'title', - 'category' =>'genre', - 'cdtitle' =>'album', - 'tracktitle'=>'title', - ); - foreach ($tagmapping as $fromkey => $tokey) { - if (isset($thisfile_riff_WAVE_SNDM_0['parsed'][$fromkey])) { - $thisfile_riff['comments'][$tokey][] = $thisfile_riff_WAVE_SNDM_0['parsed'][$fromkey]; - } - } - } - - if (isset($thisfile_riff_WAVE['iXML'][0]['data'])) { - // requires functions simplexml_load_string and get_object_vars - if ($parsedXML = getid3_lib::XML2array($thisfile_riff_WAVE['iXML'][0]['data'])) { - $thisfile_riff_WAVE['iXML'][0]['parsed'] = $parsedXML; - if (isset($parsedXML['SPEED']['MASTER_SPEED'])) { - @list($numerator, $denominator) = explode('/', $parsedXML['SPEED']['MASTER_SPEED']); - $thisfile_riff_WAVE['iXML'][0]['master_speed'] = $numerator / ($denominator ? $denominator : 1000); - } - if (isset($parsedXML['SPEED']['TIMECODE_RATE'])) { - @list($numerator, $denominator) = explode('/', $parsedXML['SPEED']['TIMECODE_RATE']); - $thisfile_riff_WAVE['iXML'][0]['timecode_rate'] = $numerator / ($denominator ? $denominator : 1000); - } - if (isset($parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_LO']) && !empty($parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE']) && !empty($thisfile_riff_WAVE['iXML'][0]['timecode_rate'])) { - $samples_since_midnight = floatval(ltrim($parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_HI'].$parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_LO'], '0')); - $thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] = $samples_since_midnight / $parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE']; - $h = floor( $thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] / 3600); - $m = floor(($thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] - ($h * 3600)) / 60); - $s = floor( $thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] - ($h * 3600) - ($m * 60)); - $f = ($thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] - ($h * 3600) - ($m * 60) - $s) * $thisfile_riff_WAVE['iXML'][0]['timecode_rate']; - $thisfile_riff_WAVE['iXML'][0]['timecode_string'] = sprintf('%02d:%02d:%02d:%05.2f', $h, $m, $s, $f); - $thisfile_riff_WAVE['iXML'][0]['timecode_string_round'] = sprintf('%02d:%02d:%02d:%02d', $h, $m, $s, round($f)); - } - unset($parsedXML); - } - } - - - - if (!isset($thisfile_audio['bitrate']) && isset($thisfile_riff_audio[$streamindex]['bitrate'])) { - $thisfile_audio['bitrate'] = $thisfile_riff_audio[$streamindex]['bitrate']; - $info['playtime_seconds'] = (float) ((($info['avdataend'] - $info['avdataoffset']) * 8) / $thisfile_audio['bitrate']); - } - - if (!empty($info['wavpack'])) { - $thisfile_audio_dataformat = 'wavpack'; - $thisfile_audio['bitrate_mode'] = 'vbr'; - $thisfile_audio['encoder'] = 'WavPack v'.$info['wavpack']['version']; - - // Reset to the way it was - RIFF parsing will have messed this up - $info['avdataend'] = $Original['avdataend']; - $thisfile_audio['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - - fseek($this->getid3->fp, $info['avdataoffset'] - 44, SEEK_SET); - $RIFFdata = fread($this->getid3->fp, 44); - $OrignalRIFFheaderSize = getid3_lib::LittleEndian2Int(substr($RIFFdata, 4, 4)) + 8; - $OrignalRIFFdataSize = getid3_lib::LittleEndian2Int(substr($RIFFdata, 40, 4)) + 44; - - if ($OrignalRIFFheaderSize > $OrignalRIFFdataSize) { - $info['avdataend'] -= ($OrignalRIFFheaderSize - $OrignalRIFFdataSize); - fseek($this->getid3->fp, $info['avdataend'], SEEK_SET); - $RIFFdata .= fread($this->getid3->fp, $OrignalRIFFheaderSize - $OrignalRIFFdataSize); - } - - // move the data chunk after all other chunks (if any) - // so that the RIFF parser doesn't see EOF when trying - // to skip over the data chunk - $RIFFdata = substr($RIFFdata, 0, 36).substr($RIFFdata, 44).substr($RIFFdata, 36, 8); - $getid3_riff = new getid3_riff($this->getid3); - $getid3_riff->ParseRIFFdata($RIFFdata); - unset($getid3_riff); - } - - if (isset($thisfile_riff_raw['fmt ']['wFormatTag'])) { - switch ($thisfile_riff_raw['fmt ']['wFormatTag']) { - case 0x0001: // PCM - if (!empty($info['ac3'])) { - // Dolby Digital WAV files masquerade as PCM-WAV, but they're not - $thisfile_audio['wformattag'] = 0x2000; - $thisfile_audio['codec'] = $this->RIFFwFormatTagLookup($thisfile_audio['wformattag']); - $thisfile_audio['lossless'] = false; - $thisfile_audio['bitrate'] = $info['ac3']['bitrate']; - $thisfile_audio['sample_rate'] = $info['ac3']['sample_rate']; - } - break; - case 0x08AE: // ClearJump LiteWave - $thisfile_audio['bitrate_mode'] = 'vbr'; - $thisfile_audio_dataformat = 'litewave'; - - //typedef struct tagSLwFormat { - // WORD m_wCompFormat; // low byte defines compression method, high byte is compression flags - // DWORD m_dwScale; // scale factor for lossy compression - // DWORD m_dwBlockSize; // number of samples in encoded blocks - // WORD m_wQuality; // alias for the scale factor - // WORD m_wMarkDistance; // distance between marks in bytes - // WORD m_wReserved; - // - // //following paramters are ignored if CF_FILESRC is not set - // DWORD m_dwOrgSize; // original file size in bytes - // WORD m_bFactExists; // indicates if 'fact' chunk exists in the original file - // DWORD m_dwRiffChunkSize; // riff chunk size in the original file - // - // PCMWAVEFORMAT m_OrgWf; // original wave format - // }SLwFormat, *PSLwFormat; - - // shortcut - $thisfile_riff['litewave']['raw'] = array(); - $thisfile_riff_litewave = &$thisfile_riff['litewave']; - $thisfile_riff_litewave_raw = &$thisfile_riff_litewave['raw']; - - $thisfile_riff_litewave_raw['compression_method'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 18, 1)); - $thisfile_riff_litewave_raw['compression_flags'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 19, 1)); - $thisfile_riff_litewave_raw['m_dwScale'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 20, 4)); - $thisfile_riff_litewave_raw['m_dwBlockSize'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 24, 4)); - $thisfile_riff_litewave_raw['m_wQuality'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 28, 2)); - $thisfile_riff_litewave_raw['m_wMarkDistance'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 30, 2)); - $thisfile_riff_litewave_raw['m_wReserved'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 32, 2)); - $thisfile_riff_litewave_raw['m_dwOrgSize'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 34, 4)); - $thisfile_riff_litewave_raw['m_bFactExists'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 38, 2)); - $thisfile_riff_litewave_raw['m_dwRiffChunkSize'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], 40, 4)); - - //$thisfile_riff_litewave['quality_factor'] = intval(round((2000 - $thisfile_riff_litewave_raw['m_dwScale']) / 20)); - $thisfile_riff_litewave['quality_factor'] = $thisfile_riff_litewave_raw['m_wQuality']; - - $thisfile_riff_litewave['flags']['raw_source'] = ($thisfile_riff_litewave_raw['compression_flags'] & 0x01) ? false : true; - $thisfile_riff_litewave['flags']['vbr_blocksize'] = ($thisfile_riff_litewave_raw['compression_flags'] & 0x02) ? false : true; - $thisfile_riff_litewave['flags']['seekpoints'] = (bool) ($thisfile_riff_litewave_raw['compression_flags'] & 0x04); - - $thisfile_audio['lossless'] = (($thisfile_riff_litewave_raw['m_wQuality'] == 100) ? true : false); - $thisfile_audio['encoder_options'] = '-q'.$thisfile_riff_litewave['quality_factor']; - break; - - default: - break; - } - } - if ($info['avdataend'] > $info['filesize']) { - switch (!empty($thisfile_audio_dataformat) ? $thisfile_audio_dataformat : '') { - case 'wavpack': // WavPack - case 'lpac': // LPAC - case 'ofr': // OptimFROG - case 'ofs': // OptimFROG DualStream - // lossless compressed audio formats that keep original RIFF headers - skip warning - break; - - case 'litewave': - if (($info['avdataend'] - $info['filesize']) == 1) { - // LiteWave appears to incorrectly *not* pad actual output file - // to nearest WORD boundary so may appear to be short by one - // byte, in which case - skip warning - } else { - // Short by more than one byte, throw warning - $info['warning'][] = 'Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)'; - $info['avdataend'] = $info['filesize']; - } - break; - - default: - if ((($info['avdataend'] - $info['filesize']) == 1) && (($thisfile_riff[$RIFFsubtype]['data'][0]['size'] % 2) == 0) && ((($info['filesize'] - $info['avdataoffset']) % 2) == 1)) { - // output file appears to be incorrectly *not* padded to nearest WORD boundary - // Output less severe warning - $info['warning'][] = 'File should probably be padded to nearest WORD boundary, but it is not (expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' therefore short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)'; - $info['avdataend'] = $info['filesize']; - } else { - // Short by more than one byte, throw warning - $info['warning'][] = 'Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)'; - $info['avdataend'] = $info['filesize']; - } - break; - } - } - if (!empty($info['mpeg']['audio']['LAME']['audio_bytes'])) { - if ((($info['avdataend'] - $info['avdataoffset']) - $info['mpeg']['audio']['LAME']['audio_bytes']) == 1) { - $info['avdataend']--; - $info['warning'][] = 'Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored'; - } - } - if (isset($thisfile_audio_dataformat) && ($thisfile_audio_dataformat == 'ac3')) { - unset($thisfile_audio['bits_per_sample']); - if (!empty($info['ac3']['bitrate']) && ($info['ac3']['bitrate'] != $thisfile_audio['bitrate'])) { - $thisfile_audio['bitrate'] = $info['ac3']['bitrate']; - } - } - break; - - case 'AVI ': - $thisfile_video['bitrate_mode'] = 'vbr'; // maybe not, but probably - $thisfile_video['dataformat'] = 'avi'; - $info['mime_type'] = 'video/avi'; - - if (isset($thisfile_riff[$RIFFsubtype]['movi']['offset'])) { - $info['avdataoffset'] = $thisfile_riff[$RIFFsubtype]['movi']['offset'] + 8; - if (isset($thisfile_riff['AVIX'])) { - $info['avdataend'] = $thisfile_riff['AVIX'][(count($thisfile_riff['AVIX']) - 1)]['chunks']['movi']['offset'] + $thisfile_riff['AVIX'][(count($thisfile_riff['AVIX']) - 1)]['chunks']['movi']['size']; - } else { - $info['avdataend'] = $thisfile_riff['AVI ']['movi']['offset'] + $thisfile_riff['AVI ']['movi']['size']; - } - if ($info['avdataend'] > $info['filesize']) { - $info['warning'][] = 'Probably truncated file - expecting '.($info['avdataend'] - $info['avdataoffset']).' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($info['avdataend'] - $info['filesize']).' bytes)'; - $info['avdataend'] = $info['filesize']; - } - } - - if (isset($thisfile_riff['AVI ']['hdrl']['strl']['indx'])) { - //$bIndexType = array( - // 0x00 => 'AVI_INDEX_OF_INDEXES', - // 0x01 => 'AVI_INDEX_OF_CHUNKS', - // 0x80 => 'AVI_INDEX_IS_DATA', - //); - //$bIndexSubtype = array( - // 0x01 => array( - // 0x01 => 'AVI_INDEX_2FIELD', - // ), - //); - foreach ($thisfile_riff['AVI ']['hdrl']['strl']['indx'] as $streamnumber => $steamdataarray) { - $thisfile_riff_avi_hdrl_strl_indx_stream_data = &$thisfile_riff['AVI ']['hdrl']['strl']['indx'][$streamnumber]['data']; - - $thisfile_riff_raw['indx'][$streamnumber]['wLongsPerEntry'] = $this->EitherEndian2Int(substr($thisfile_riff_avi_hdrl_strl_indx_stream_data, 0, 2)); - $thisfile_riff_raw['indx'][$streamnumber]['bIndexSubType'] = $this->EitherEndian2Int(substr($thisfile_riff_avi_hdrl_strl_indx_stream_data, 2, 1)); - $thisfile_riff_raw['indx'][$streamnumber]['bIndexType'] = $this->EitherEndian2Int(substr($thisfile_riff_avi_hdrl_strl_indx_stream_data, 3, 1)); - $thisfile_riff_raw['indx'][$streamnumber]['nEntriesInUse'] = $this->EitherEndian2Int(substr($thisfile_riff_avi_hdrl_strl_indx_stream_data, 4, 4)); - $thisfile_riff_raw['indx'][$streamnumber]['dwChunkId'] = substr($thisfile_riff_avi_hdrl_strl_indx_stream_data, 8, 4); - $thisfile_riff_raw['indx'][$streamnumber]['dwReserved'] = $this->EitherEndian2Int(substr($thisfile_riff_avi_hdrl_strl_indx_stream_data, 12, 4)); - - //$thisfile_riff_raw['indx'][$streamnumber]['bIndexType_name'] = $bIndexType[$thisfile_riff_raw['indx'][$streamnumber]['bIndexType']]; - //$thisfile_riff_raw['indx'][$streamnumber]['bIndexSubType_name'] = $bIndexSubtype[$thisfile_riff_raw['indx'][$streamnumber]['bIndexType']][$thisfile_riff_raw['indx'][$streamnumber]['bIndexSubType']]; - - unset($thisfile_riff_avi_hdrl_strl_indx_stream_data); - } - } - if (isset($thisfile_riff['AVI ']['hdrl']['avih'][$streamindex]['data'])) { - $avihData = $thisfile_riff['AVI ']['hdrl']['avih'][$streamindex]['data']; - - // shortcut - $thisfile_riff_raw['avih'] = array(); - $thisfile_riff_raw_avih = &$thisfile_riff_raw['avih']; - - $thisfile_riff_raw_avih['dwMicroSecPerFrame'] = $this->EitherEndian2Int(substr($avihData, 0, 4)); // frame display rate (or 0L) - if ($thisfile_riff_raw_avih['dwMicroSecPerFrame'] == 0) { - $info['error'][] = 'Corrupt RIFF file: avih.dwMicroSecPerFrame == zero'; - return false; - } - $thisfile_riff_raw_avih['dwMaxBytesPerSec'] = $this->EitherEndian2Int(substr($avihData, 4, 4)); // max. transfer rate - $thisfile_riff_raw_avih['dwPaddingGranularity'] = $this->EitherEndian2Int(substr($avihData, 8, 4)); // pad to multiples of this size; normally 2K. - $thisfile_riff_raw_avih['dwFlags'] = $this->EitherEndian2Int(substr($avihData, 12, 4)); // the ever-present flags - $thisfile_riff_raw_avih['dwTotalFrames'] = $this->EitherEndian2Int(substr($avihData, 16, 4)); // # frames in file - $thisfile_riff_raw_avih['dwInitialFrames'] = $this->EitherEndian2Int(substr($avihData, 20, 4)); - $thisfile_riff_raw_avih['dwStreams'] = $this->EitherEndian2Int(substr($avihData, 24, 4)); - $thisfile_riff_raw_avih['dwSuggestedBufferSize'] = $this->EitherEndian2Int(substr($avihData, 28, 4)); - $thisfile_riff_raw_avih['dwWidth'] = $this->EitherEndian2Int(substr($avihData, 32, 4)); - $thisfile_riff_raw_avih['dwHeight'] = $this->EitherEndian2Int(substr($avihData, 36, 4)); - $thisfile_riff_raw_avih['dwScale'] = $this->EitherEndian2Int(substr($avihData, 40, 4)); - $thisfile_riff_raw_avih['dwRate'] = $this->EitherEndian2Int(substr($avihData, 44, 4)); - $thisfile_riff_raw_avih['dwStart'] = $this->EitherEndian2Int(substr($avihData, 48, 4)); - $thisfile_riff_raw_avih['dwLength'] = $this->EitherEndian2Int(substr($avihData, 52, 4)); - - $thisfile_riff_raw_avih['flags']['hasindex'] = (bool) ($thisfile_riff_raw_avih['dwFlags'] & 0x00000010); - $thisfile_riff_raw_avih['flags']['mustuseindex'] = (bool) ($thisfile_riff_raw_avih['dwFlags'] & 0x00000020); - $thisfile_riff_raw_avih['flags']['interleaved'] = (bool) ($thisfile_riff_raw_avih['dwFlags'] & 0x00000100); - $thisfile_riff_raw_avih['flags']['trustcktype'] = (bool) ($thisfile_riff_raw_avih['dwFlags'] & 0x00000800); - $thisfile_riff_raw_avih['flags']['capturedfile'] = (bool) ($thisfile_riff_raw_avih['dwFlags'] & 0x00010000); - $thisfile_riff_raw_avih['flags']['copyrighted'] = (bool) ($thisfile_riff_raw_avih['dwFlags'] & 0x00020010); - - // shortcut - $thisfile_riff_video[$streamindex] = array(); - $thisfile_riff_video_current = &$thisfile_riff_video[$streamindex]; - - if ($thisfile_riff_raw_avih['dwWidth'] > 0) { - $thisfile_riff_video_current['frame_width'] = $thisfile_riff_raw_avih['dwWidth']; - $thisfile_video['resolution_x'] = $thisfile_riff_video_current['frame_width']; - } - if ($thisfile_riff_raw_avih['dwHeight'] > 0) { - $thisfile_riff_video_current['frame_height'] = $thisfile_riff_raw_avih['dwHeight']; - $thisfile_video['resolution_y'] = $thisfile_riff_video_current['frame_height']; - } - if ($thisfile_riff_raw_avih['dwTotalFrames'] > 0) { - $thisfile_riff_video_current['total_frames'] = $thisfile_riff_raw_avih['dwTotalFrames']; - $thisfile_video['total_frames'] = $thisfile_riff_video_current['total_frames']; - } - - $thisfile_riff_video_current['frame_rate'] = round(1000000 / $thisfile_riff_raw_avih['dwMicroSecPerFrame'], 3); - $thisfile_video['frame_rate'] = $thisfile_riff_video_current['frame_rate']; - } - if (isset($thisfile_riff['AVI ']['hdrl']['strl']['strh'][0]['data'])) { - if (is_array($thisfile_riff['AVI ']['hdrl']['strl']['strh'])) { - for ($i = 0; $i < count($thisfile_riff['AVI ']['hdrl']['strl']['strh']); $i++) { - if (isset($thisfile_riff['AVI ']['hdrl']['strl']['strh'][$i]['data'])) { - $strhData = $thisfile_riff['AVI ']['hdrl']['strl']['strh'][$i]['data']; - $strhfccType = substr($strhData, 0, 4); - - if (isset($thisfile_riff['AVI ']['hdrl']['strl']['strf'][$i]['data'])) { - $strfData = $thisfile_riff['AVI ']['hdrl']['strl']['strf'][$i]['data']; - - // shortcut - $thisfile_riff_raw_strf_strhfccType_streamindex = &$thisfile_riff_raw['strf'][$strhfccType][$streamindex]; - - switch ($strhfccType) { - case 'auds': - $thisfile_audio['bitrate_mode'] = 'cbr'; - $thisfile_audio_dataformat = 'wav'; - if (isset($thisfile_riff_audio) && is_array($thisfile_riff_audio)) { - $streamindex = count($thisfile_riff_audio); - } - - $thisfile_riff_audio[$streamindex] = getid3_riff::RIFFparseWAVEFORMATex($strfData); - $thisfile_audio['wformattag'] = $thisfile_riff_audio[$streamindex]['raw']['wFormatTag']; - - // shortcut - $thisfile_audio['streams'][$streamindex] = $thisfile_riff_audio[$streamindex]; - $thisfile_audio_streams_currentstream = &$thisfile_audio['streams'][$streamindex]; - - if ($thisfile_audio_streams_currentstream['bits_per_sample'] == 0) { - unset($thisfile_audio_streams_currentstream['bits_per_sample']); - } - $thisfile_audio_streams_currentstream['wformattag'] = $thisfile_audio_streams_currentstream['raw']['wFormatTag']; - unset($thisfile_audio_streams_currentstream['raw']); - - // shortcut - $thisfile_riff_raw['strf'][$strhfccType][$streamindex] = $thisfile_riff_audio[$streamindex]['raw']; - - unset($thisfile_riff_audio[$streamindex]['raw']); - $thisfile_audio = getid3_lib::array_merge_noclobber($thisfile_audio, $thisfile_riff_audio[$streamindex]); - - $thisfile_audio['lossless'] = false; - switch ($thisfile_riff_raw_strf_strhfccType_streamindex['wFormatTag']) { - case 0x0001: // PCM - $thisfile_audio_dataformat = 'wav'; - $thisfile_audio['lossless'] = true; - break; - - case 0x0050: // MPEG Layer 2 or Layer 1 - $thisfile_audio_dataformat = 'mp2'; // Assume Layer-2 - break; - - case 0x0055: // MPEG Layer 3 - $thisfile_audio_dataformat = 'mp3'; - break; - - case 0x00FF: // AAC - $thisfile_audio_dataformat = 'aac'; - break; - - case 0x0161: // Windows Media v7 / v8 / v9 - case 0x0162: // Windows Media Professional v9 - case 0x0163: // Windows Media Lossess v9 - $thisfile_audio_dataformat = 'wma'; - break; - - case 0x2000: // AC-3 - $thisfile_audio_dataformat = 'ac3'; - break; - - case 0x2001: // DTS - $thisfile_audio_dataformat = 'dts'; - break; - - default: - $thisfile_audio_dataformat = 'wav'; - break; - } - $thisfile_audio_streams_currentstream['dataformat'] = $thisfile_audio_dataformat; - $thisfile_audio_streams_currentstream['lossless'] = $thisfile_audio['lossless']; - $thisfile_audio_streams_currentstream['bitrate_mode'] = $thisfile_audio['bitrate_mode']; - break; - - - case 'iavs': - case 'vids': - // shortcut - $thisfile_riff_raw['strh'][$i] = array(); - $thisfile_riff_raw_strh_current = &$thisfile_riff_raw['strh'][$i]; - - $thisfile_riff_raw_strh_current['fccType'] = substr($strhData, 0, 4); // same as $strhfccType; - $thisfile_riff_raw_strh_current['fccHandler'] = substr($strhData, 4, 4); - $thisfile_riff_raw_strh_current['dwFlags'] = $this->EitherEndian2Int(substr($strhData, 8, 4)); // Contains AVITF_* flags - $thisfile_riff_raw_strh_current['wPriority'] = $this->EitherEndian2Int(substr($strhData, 12, 2)); - $thisfile_riff_raw_strh_current['wLanguage'] = $this->EitherEndian2Int(substr($strhData, 14, 2)); - $thisfile_riff_raw_strh_current['dwInitialFrames'] = $this->EitherEndian2Int(substr($strhData, 16, 4)); - $thisfile_riff_raw_strh_current['dwScale'] = $this->EitherEndian2Int(substr($strhData, 20, 4)); - $thisfile_riff_raw_strh_current['dwRate'] = $this->EitherEndian2Int(substr($strhData, 24, 4)); - $thisfile_riff_raw_strh_current['dwStart'] = $this->EitherEndian2Int(substr($strhData, 28, 4)); - $thisfile_riff_raw_strh_current['dwLength'] = $this->EitherEndian2Int(substr($strhData, 32, 4)); - $thisfile_riff_raw_strh_current['dwSuggestedBufferSize'] = $this->EitherEndian2Int(substr($strhData, 36, 4)); - $thisfile_riff_raw_strh_current['dwQuality'] = $this->EitherEndian2Int(substr($strhData, 40, 4)); - $thisfile_riff_raw_strh_current['dwSampleSize'] = $this->EitherEndian2Int(substr($strhData, 44, 4)); - $thisfile_riff_raw_strh_current['rcFrame'] = $this->EitherEndian2Int(substr($strhData, 48, 4)); - - $thisfile_riff_video_current['codec'] = getid3_riff::RIFFfourccLookup($thisfile_riff_raw_strh_current['fccHandler']); - $thisfile_video['fourcc'] = $thisfile_riff_raw_strh_current['fccHandler']; - if (!$thisfile_riff_video_current['codec'] && isset($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']) && getid3_riff::RIFFfourccLookup($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc'])) { - $thisfile_riff_video_current['codec'] = getid3_riff::RIFFfourccLookup($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']); - $thisfile_video['fourcc'] = $thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']; - } - $thisfile_video['codec'] = $thisfile_riff_video_current['codec']; - $thisfile_video['pixel_aspect_ratio'] = (float) 1; - switch ($thisfile_riff_raw_strh_current['fccHandler']) { - case 'HFYU': // Huffman Lossless Codec - case 'IRAW': // Intel YUV Uncompressed - case 'YUY2': // Uncompressed YUV 4:2:2 - $thisfile_video['lossless'] = true; - break; - - default: - $thisfile_video['lossless'] = false; - break; - } - - switch ($strhfccType) { - case 'vids': - $thisfile_riff_raw_strf_strhfccType_streamindex = getid3_riff::ParseBITMAPINFOHEADER(substr($strfData, 0, 40), ($info['fileformat'] == 'riff')); -//echo '
    '.print_r($thisfile_riff_raw_strf_strhfccType_streamindex, true).'
    '; - $thisfile_video['bits_per_sample'] = $thisfile_riff_raw_strf_strhfccType_streamindex['biBitCount']; - - if ($thisfile_riff_video_current['codec'] == 'DV') { - $thisfile_riff_video_current['dv_type'] = 2; - } - break; - - case 'iavs': - $thisfile_riff_video_current['dv_type'] = 1; - break; - } - break; - - default: - $info['warning'][] = 'Unhandled fccType for stream ('.$i.'): "'.$strhfccType.'"'; - break; - - } - } - } - - if (isset($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc'])) { - - $thisfile_video['fourcc'] = $thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']; - if (getid3_riff::RIFFfourccLookup($thisfile_video['fourcc'])) { - $thisfile_riff_video_current['codec'] = getid3_riff::RIFFfourccLookup($thisfile_video['fourcc']); - $thisfile_video['codec'] = $thisfile_riff_video_current['codec']; - } - - switch ($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']) { - case 'HFYU': // Huffman Lossless Codec - case 'IRAW': // Intel YUV Uncompressed - case 'YUY2': // Uncompressed YUV 4:2:2 - $thisfile_video['lossless'] = true; - //$thisfile_video['bits_per_sample'] = 24; - break; - - default: - $thisfile_video['lossless'] = false; - //$thisfile_video['bits_per_sample'] = 24; - break; - } - - } - } - } - } - break; - - case 'CDDA': - $thisfile_audio['bitrate_mode'] = 'cbr'; - $thisfile_audio_dataformat = 'cda'; - $thisfile_audio['lossless'] = true; - unset($info['mime_type']); - - $info['avdataoffset'] = 44; - - if (isset($thisfile_riff['CDDA']['fmt '][0]['data'])) { - // shortcut - $thisfile_riff_CDDA_fmt_0 = &$thisfile_riff['CDDA']['fmt '][0]; - - $thisfile_riff_CDDA_fmt_0['unknown1'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 0, 2)); - $thisfile_riff_CDDA_fmt_0['track_num'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 2, 2)); - $thisfile_riff_CDDA_fmt_0['disc_id'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 4, 4)); - $thisfile_riff_CDDA_fmt_0['start_offset_frame'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 8, 4)); - $thisfile_riff_CDDA_fmt_0['playtime_frames'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 12, 4)); - $thisfile_riff_CDDA_fmt_0['unknown6'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 16, 4)); - $thisfile_riff_CDDA_fmt_0['unknown7'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 20, 4)); - - $thisfile_riff_CDDA_fmt_0['start_offset_seconds'] = (float) $thisfile_riff_CDDA_fmt_0['start_offset_frame'] / 75; - $thisfile_riff_CDDA_fmt_0['playtime_seconds'] = (float) $thisfile_riff_CDDA_fmt_0['playtime_frames'] / 75; - $info['comments']['track'] = $thisfile_riff_CDDA_fmt_0['track_num']; - $info['playtime_seconds'] = $thisfile_riff_CDDA_fmt_0['playtime_seconds']; - - // hardcoded data for CD-audio - $thisfile_audio['sample_rate'] = 44100; - $thisfile_audio['channels'] = 2; - $thisfile_audio['bits_per_sample'] = 16; - $thisfile_audio['bitrate'] = $thisfile_audio['sample_rate'] * $thisfile_audio['channels'] * $thisfile_audio['bits_per_sample']; - $thisfile_audio['bitrate_mode'] = 'cbr'; - } - break; - - - case 'AIFF': - case 'AIFC': - $thisfile_audio['bitrate_mode'] = 'cbr'; - $thisfile_audio_dataformat = 'aiff'; - $thisfile_audio['lossless'] = true; - $info['mime_type'] = 'audio/x-aiff'; - - if (isset($thisfile_riff[$RIFFsubtype]['SSND'][0]['offset'])) { - $info['avdataoffset'] = $thisfile_riff[$RIFFsubtype]['SSND'][0]['offset'] + 8; - $info['avdataend'] = $info['avdataoffset'] + $thisfile_riff[$RIFFsubtype]['SSND'][0]['size']; - if ($info['avdataend'] > $info['filesize']) { - if (($info['avdataend'] == ($info['filesize'] + 1)) && (($info['filesize'] % 2) == 1)) { - // structures rounded to 2-byte boundary, but dumb encoders - // forget to pad end of file to make this actually work - } else { - $info['warning'][] = 'Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['SSND'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found'; - } - $info['avdataend'] = $info['filesize']; - } - } - - if (isset($thisfile_riff[$RIFFsubtype]['COMM'][0]['data'])) { - - // shortcut - $thisfile_riff_RIFFsubtype_COMM_0_data = &$thisfile_riff[$RIFFsubtype]['COMM'][0]['data']; - - $thisfile_riff_audio['channels'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data, 0, 2), true); - $thisfile_riff_audio['total_samples'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data, 2, 4), false); - $thisfile_riff_audio['bits_per_sample'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data, 6, 2), true); - $thisfile_riff_audio['sample_rate'] = (int) getid3_lib::BigEndian2Float(substr($thisfile_riff_RIFFsubtype_COMM_0_data, 8, 10)); - - if ($thisfile_riff[$RIFFsubtype]['COMM'][0]['size'] > 18) { - $thisfile_riff_audio['codec_fourcc'] = substr($thisfile_riff_RIFFsubtype_COMM_0_data, 18, 4); - $CodecNameSize = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data, 22, 1), false); - $thisfile_riff_audio['codec_name'] = substr($thisfile_riff_RIFFsubtype_COMM_0_data, 23, $CodecNameSize); - switch ($thisfile_riff_audio['codec_name']) { - case 'NONE': - $thisfile_audio['codec'] = 'Pulse Code Modulation (PCM)'; - $thisfile_audio['lossless'] = true; - break; - - case '': - switch ($thisfile_riff_audio['codec_fourcc']) { - // http://developer.apple.com/qa/snd/snd07.html - case 'sowt': - $thisfile_riff_audio['codec_name'] = 'Two\'s Compliment Little-Endian PCM'; - $thisfile_audio['lossless'] = true; - break; - - case 'twos': - $thisfile_riff_audio['codec_name'] = 'Two\'s Compliment Big-Endian PCM'; - $thisfile_audio['lossless'] = true; - break; - - default: - break; - } - break; - - default: - $thisfile_audio['codec'] = $thisfile_riff_audio['codec_name']; - $thisfile_audio['lossless'] = false; - break; - } - } - - $thisfile_audio['channels'] = $thisfile_riff_audio['channels']; - if ($thisfile_riff_audio['bits_per_sample'] > 0) { - $thisfile_audio['bits_per_sample'] = $thisfile_riff_audio['bits_per_sample']; - } - $thisfile_audio['sample_rate'] = $thisfile_riff_audio['sample_rate']; - if ($thisfile_audio['sample_rate'] == 0) { - $info['error'][] = 'Corrupted AIFF file: sample_rate == zero'; - return false; - } - $info['playtime_seconds'] = $thisfile_riff_audio['total_samples'] / $thisfile_audio['sample_rate']; - } - - if (isset($thisfile_riff[$RIFFsubtype]['COMT'])) { - $offset = 0; - $CommentCount = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 2), false); - $offset += 2; - for ($i = 0; $i < $CommentCount; $i++) { - $info['comments_raw'][$i]['timestamp'] = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 4), false); - $offset += 4; - $info['comments_raw'][$i]['marker_id'] = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 2), true); - $offset += 2; - $CommentLength = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 2), false); - $offset += 2; - $info['comments_raw'][$i]['comment'] = substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, $CommentLength); - $offset += $CommentLength; - - $info['comments_raw'][$i]['timestamp_unix'] = getid3_lib::DateMac2Unix($info['comments_raw'][$i]['timestamp']); - $thisfile_riff['comments']['comment'][] = $info['comments_raw'][$i]['comment']; - } - } - - $CommentsChunkNames = array('NAME'=>'title', 'author'=>'artist', '(c) '=>'copyright', 'ANNO'=>'comment'); - foreach ($CommentsChunkNames as $key => $value) { - if (isset($thisfile_riff[$RIFFsubtype][$key][0]['data'])) { - $thisfile_riff['comments'][$value][] = $thisfile_riff[$RIFFsubtype][$key][0]['data']; - } - } - - if (isset($thisfile_riff[$RIFFsubtype]['ID3 '])) { - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true); - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_id3v2 = new getid3_id3v2($getid3_temp); - $getid3_id3v2->StartingOffset = $thisfile_riff[$RIFFsubtype]['ID3 '][0]['offset'] + 8; - if ($thisfile_riff[$RIFFsubtype]['ID3 '][0]['valid'] = $getid3_id3v2->Analyze()) { - $info['id3v2'] = $getid3_temp->info['id3v2']; - } - unset($getid3_temp, $getid3_id3v2); - } - break; - - case '8SVX': - $thisfile_audio['bitrate_mode'] = 'cbr'; - $thisfile_audio_dataformat = '8svx'; - $thisfile_audio['bits_per_sample'] = 8; - $thisfile_audio['channels'] = 1; // overridden below, if need be - $info['mime_type'] = 'audio/x-aiff'; - - if (isset($thisfile_riff[$RIFFsubtype]['BODY'][0]['offset'])) { - $info['avdataoffset'] = $thisfile_riff[$RIFFsubtype]['BODY'][0]['offset'] + 8; - $info['avdataend'] = $info['avdataoffset'] + $thisfile_riff[$RIFFsubtype]['BODY'][0]['size']; - if ($info['avdataend'] > $info['filesize']) { - $info['warning'][] = 'Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['BODY'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found'; - } - } - - if (isset($thisfile_riff[$RIFFsubtype]['VHDR'][0]['offset'])) { - // shortcut - $thisfile_riff_RIFFsubtype_VHDR_0 = &$thisfile_riff[$RIFFsubtype]['VHDR'][0]; - - $thisfile_riff_RIFFsubtype_VHDR_0['oneShotHiSamples'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 0, 4)); - $thisfile_riff_RIFFsubtype_VHDR_0['repeatHiSamples'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 4, 4)); - $thisfile_riff_RIFFsubtype_VHDR_0['samplesPerHiCycle'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 8, 4)); - $thisfile_riff_RIFFsubtype_VHDR_0['samplesPerSec'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 12, 2)); - $thisfile_riff_RIFFsubtype_VHDR_0['ctOctave'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 14, 1)); - $thisfile_riff_RIFFsubtype_VHDR_0['sCompression'] = getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 15, 1)); - $thisfile_riff_RIFFsubtype_VHDR_0['Volume'] = getid3_lib::FixedPoint16_16(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 16, 4)); - - $thisfile_audio['sample_rate'] = $thisfile_riff_RIFFsubtype_VHDR_0['samplesPerSec']; - - switch ($thisfile_riff_RIFFsubtype_VHDR_0['sCompression']) { - case 0: - $thisfile_audio['codec'] = 'Pulse Code Modulation (PCM)'; - $thisfile_audio['lossless'] = true; - $ActualBitsPerSample = 8; - break; - - case 1: - $thisfile_audio['codec'] = 'Fibonacci-delta encoding'; - $thisfile_audio['lossless'] = false; - $ActualBitsPerSample = 4; - break; - - default: - $info['warning'][] = 'Unexpected sCompression value in 8SVX.VHDR chunk - expecting 0 or 1, found "'.sCompression.'"'; - break; - } - } - - if (isset($thisfile_riff[$RIFFsubtype]['CHAN'][0]['data'])) { - $ChannelsIndex = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['CHAN'][0]['data'], 0, 4)); - switch ($ChannelsIndex) { - case 6: // Stereo - $thisfile_audio['channels'] = 2; - break; - - case 2: // Left channel only - case 4: // Right channel only - $thisfile_audio['channels'] = 1; - break; - - default: - $info['warning'][] = 'Unexpected value in 8SVX.CHAN chunk - expecting 2 or 4 or 6, found "'.$ChannelsIndex.'"'; - break; - } - - } - - $CommentsChunkNames = array('NAME'=>'title', 'author'=>'artist', '(c) '=>'copyright', 'ANNO'=>'comment'); - foreach ($CommentsChunkNames as $key => $value) { - if (isset($thisfile_riff[$RIFFsubtype][$key][0]['data'])) { - $thisfile_riff['comments'][$value][] = $thisfile_riff[$RIFFsubtype][$key][0]['data']; - } - } - - $thisfile_audio['bitrate'] = $thisfile_audio['sample_rate'] * $ActualBitsPerSample * $thisfile_audio['channels']; - if (!empty($thisfile_audio['bitrate'])) { - $info['playtime_seconds'] = ($info['avdataend'] - $info['avdataoffset']) / ($thisfile_audio['bitrate'] / 8); - } - break; - - - case 'CDXA': - $info['mime_type'] = 'video/mpeg'; - if (!empty($thisfile_riff['CDXA']['data'][0]['size'])) { - if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.mpeg.php', __FILE__, false)) { - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_mpeg = new getid3_mpeg($getid3_temp); - $getid3_mpeg->Analyze(); - if (empty($getid3_temp->info['error'])) { - $info['audio'] = $getid3_temp->info['audio']; - $info['video'] = $getid3_temp->info['video']; - $info['mpeg'] = $getid3_temp->info['mpeg']; - $info['warning'] = $getid3_temp->info['warning']; - } - unset($getid3_temp, $getid3_mpeg); - } - } - break; - - - default: - $info['error'][] = 'Unknown RIFF type: expecting one of (WAVE|RMP3|AVI |CDDA|AIFF|AIFC|8SVX|CDXA), found "'.$RIFFsubtype.'" instead'; - unset($info['fileformat']); - break; - } - - if (isset($thisfile_riff_raw['fmt ']['wFormatTag']) && ($thisfile_riff_raw['fmt ']['wFormatTag'] == 1)) { - // http://www.mega-nerd.com/erikd/Blog/Windiots/dts.html - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $FirstFourBytes = fread($this->getid3->fp, 4); - if (preg_match('/^\xFF\x1F\x00\xE8/s', $FirstFourBytes)) { - // DTSWAV - $thisfile_audio_dataformat = 'dts'; - } elseif (preg_match('/^\x7F\xFF\x80\x01/s', $FirstFourBytes)) { - // DTS, but this probably shouldn't happen - $thisfile_audio_dataformat = 'dts'; - } - } - - - if (isset($thisfile_riff_WAVE['DISP']) && is_array($thisfile_riff_WAVE['DISP'])) { - $thisfile_riff['comments']['title'][] = trim(substr($thisfile_riff_WAVE['DISP'][count($thisfile_riff_WAVE['DISP']) - 1]['data'], 4)); - } - if (isset($thisfile_riff_WAVE['INFO']) && is_array($thisfile_riff_WAVE['INFO'])) { - $this->RIFFcommentsParse($thisfile_riff_WAVE['INFO'], $thisfile_riff['comments']); - } - if (isset($thisfile_riff['AVI ']['INFO']) && is_array($thisfile_riff['AVI ']['INFO'])) { - $this->RIFFcommentsParse($thisfile_riff['AVI ']['INFO'], $thisfile_riff['comments']); - } - - if (empty($thisfile_audio['encoder']) && !empty($info['mpeg']['audio']['LAME']['short_version'])) { - $thisfile_audio['encoder'] = $info['mpeg']['audio']['LAME']['short_version']; - } - - if (!isset($info['playtime_seconds'])) { - $info['playtime_seconds'] = 0; - } - if (isset($thisfile_riff_raw['strh'][0]['dwLength']) && isset($thisfile_riff_raw['avih']['dwMicroSecPerFrame'])) { - // needed for >2GB AVIs where 'avih' chunk only lists number of frames in that chunk, not entire movie - $info['playtime_seconds'] = $thisfile_riff_raw['strh'][0]['dwLength'] * ($thisfile_riff_raw['avih']['dwMicroSecPerFrame'] / 1000000); - } elseif (isset($thisfile_riff_raw['avih']['dwTotalFrames']) && isset($thisfile_riff_raw['avih']['dwMicroSecPerFrame'])) { - $info['playtime_seconds'] = $thisfile_riff_raw['avih']['dwTotalFrames'] * ($thisfile_riff_raw['avih']['dwMicroSecPerFrame'] / 1000000); - } - - if ($info['playtime_seconds'] > 0) { - if (isset($thisfile_riff_audio) && isset($thisfile_riff_video)) { - - if (!isset($info['bitrate'])) { - $info['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8); - } - - } elseif (isset($thisfile_riff_audio) && !isset($thisfile_riff_video)) { - - if (!isset($thisfile_audio['bitrate'])) { - $thisfile_audio['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8); - } - - } elseif (!isset($thisfile_riff_audio) && isset($thisfile_riff_video)) { - - if (!isset($thisfile_video['bitrate'])) { - $thisfile_video['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8); - } - - } - } - - - if (isset($thisfile_riff_video) && isset($thisfile_audio['bitrate']) && ($thisfile_audio['bitrate'] > 0) && ($info['playtime_seconds'] > 0)) { - - $info['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8); - $thisfile_audio['bitrate'] = 0; - $thisfile_video['bitrate'] = $info['bitrate']; - foreach ($thisfile_riff_audio as $channelnumber => $audioinfoarray) { - $thisfile_video['bitrate'] -= $audioinfoarray['bitrate']; - $thisfile_audio['bitrate'] += $audioinfoarray['bitrate']; - } - if ($thisfile_video['bitrate'] <= 0) { - unset($thisfile_video['bitrate']); - } - if ($thisfile_audio['bitrate'] <= 0) { - unset($thisfile_audio['bitrate']); - } - } - - if (isset($info['mpeg']['audio'])) { - $thisfile_audio_dataformat = 'mp'.$info['mpeg']['audio']['layer']; - $thisfile_audio['sample_rate'] = $info['mpeg']['audio']['sample_rate']; - $thisfile_audio['channels'] = $info['mpeg']['audio']['channels']; - $thisfile_audio['bitrate'] = $info['mpeg']['audio']['bitrate']; - $thisfile_audio['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']); - if (!empty($info['mpeg']['audio']['codec'])) { - $thisfile_audio['codec'] = $info['mpeg']['audio']['codec'].' '.$thisfile_audio['codec']; - } - if (!empty($thisfile_audio['streams'])) { - foreach ($thisfile_audio['streams'] as $streamnumber => $streamdata) { - if ($streamdata['dataformat'] == $thisfile_audio_dataformat) { - $thisfile_audio['streams'][$streamnumber]['sample_rate'] = $thisfile_audio['sample_rate']; - $thisfile_audio['streams'][$streamnumber]['channels'] = $thisfile_audio['channels']; - $thisfile_audio['streams'][$streamnumber]['bitrate'] = $thisfile_audio['bitrate']; - $thisfile_audio['streams'][$streamnumber]['bitrate_mode'] = $thisfile_audio['bitrate_mode']; - $thisfile_audio['streams'][$streamnumber]['codec'] = $thisfile_audio['codec']; - } - } - } - $getid3_mp3 = new getid3_mp3($this->getid3); - $thisfile_audio['encoder_options'] = $getid3_mp3->GuessEncoderOptions(); - unset($getid3_mp3); - } - - - if (!empty($thisfile_riff_raw['fmt ']['wBitsPerSample']) && ($thisfile_riff_raw['fmt ']['wBitsPerSample'] > 0)) { - switch ($thisfile_audio_dataformat) { - case 'ac3': - // ignore bits_per_sample - break; - - default: - $thisfile_audio['bits_per_sample'] = $thisfile_riff_raw['fmt ']['wBitsPerSample']; - break; - } - } - - - if (empty($thisfile_riff_raw)) { - unset($thisfile_riff['raw']); - } - if (empty($thisfile_riff_audio)) { - unset($thisfile_riff['audio']); - } - if (empty($thisfile_riff_video)) { - unset($thisfile_riff['video']); - } - - return true; - } - - - static function RIFFcommentsParse(&$RIFFinfoArray, &$CommentsTargetArray) { - $RIFFinfoKeyLookup = array( - 'IARL'=>'archivallocation', - 'IART'=>'artist', - 'ICDS'=>'costumedesigner', - 'ICMS'=>'commissionedby', - 'ICMT'=>'comment', - 'ICNT'=>'country', - 'ICOP'=>'copyright', - 'ICRD'=>'creationdate', - 'IDIM'=>'dimensions', - 'IDIT'=>'digitizationdate', - 'IDPI'=>'resolution', - 'IDST'=>'distributor', - 'IEDT'=>'editor', - 'IENG'=>'engineers', - 'IFRM'=>'accountofparts', - 'IGNR'=>'genre', - 'IKEY'=>'keywords', - 'ILGT'=>'lightness', - 'ILNG'=>'language', - 'IMED'=>'orignalmedium', - 'IMUS'=>'composer', - 'INAM'=>'title', - 'IPDS'=>'productiondesigner', - 'IPLT'=>'palette', - 'IPRD'=>'product', - 'IPRO'=>'producer', - 'IPRT'=>'part', - 'IRTD'=>'rating', - 'ISBJ'=>'subject', - 'ISFT'=>'software', - 'ISGN'=>'secondarygenre', - 'ISHP'=>'sharpness', - 'ISRC'=>'sourcesupplier', - 'ISRF'=>'digitizationsource', - 'ISTD'=>'productionstudio', - 'ISTR'=>'starring', - 'ITCH'=>'encoded_by', - 'IWEB'=>'url', - 'IWRI'=>'writer' - ); - foreach ($RIFFinfoKeyLookup as $key => $value) { - if (isset($RIFFinfoArray[$key])) { - foreach ($RIFFinfoArray[$key] as $commentid => $commentdata) { - if (trim($commentdata['data']) != '') { - if (isset($CommentsTargetArray[$value])) { - $CommentsTargetArray[$value][] = trim($commentdata['data']); - } else { - $CommentsTargetArray[$value] = array(trim($commentdata['data'])); - } - } - } - } - } - return true; - } - - function ParseRIFF($startoffset, $maxoffset) { - $info = &$this->getid3->info; - - $maxoffset = min($maxoffset, $info['avdataend']); - - $RIFFchunk = false; - $FoundAllChunksWeNeed = false; - - if (($startoffset < 0) || !getid3_lib::intValueSupported($startoffset)) { - $info['warning'][] = 'Unable to ParseRIFF() at '.$startoffset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions'; - return false; - } - $max_usable_offset = min(PHP_INT_MAX - 1024, $maxoffset); - if ($maxoffset > $max_usable_offset) { - $info['warning'][] = 'ParseRIFF() may return incomplete data for chunk starting at '.$startoffset.' because beyond it extends to '.$maxoffset.', which is beyond the '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions'; - } - fseek($this->getid3->fp, $startoffset, SEEK_SET); - - while (ftell($this->getid3->fp) < $max_usable_offset) { - $chunknamesize = fread($this->getid3->fp, 8); - $chunkname = substr($chunknamesize, 0, 4); - $chunksize = $this->EitherEndian2Int(substr($chunknamesize, 4, 4)); - if (strlen($chunkname) < 4) { - $info['error'][] = 'Expecting chunk name at offset '.(ftell($this->getid3->fp) - 4).' but found nothing. Aborting RIFF parsing.'; - break; - } - if ($chunksize == 0) { - if ($chunkname == 'JUNK') { - // we'll allow zero-size JUNK frames - } else { - $info['warning'][] = 'Chunk size at offset '.(ftell($this->getid3->fp) - 4).' is zero. Aborting RIFF parsing.'; - break; - } - } - if (($chunksize % 2) != 0) { - // all structures are packed on word boundaries - $chunksize++; - } - - switch ($chunkname) { - case 'LIST': - $listname = fread($this->getid3->fp, 4); - if (preg_match('#^(movi|rec )$#i', $listname)) { - $RIFFchunk[$listname]['offset'] = ftell($this->getid3->fp) - 4; - $RIFFchunk[$listname]['size'] = $chunksize; - - if ($FoundAllChunksWeNeed) { - - // skip over - - } else { - - $WhereWeWere = ftell($this->getid3->fp); - $AudioChunkHeader = fread($this->getid3->fp, 12); - $AudioChunkStreamNum = substr($AudioChunkHeader, 0, 2); - $AudioChunkStreamType = substr($AudioChunkHeader, 2, 2); - $AudioChunkSize = getid3_lib::LittleEndian2Int(substr($AudioChunkHeader, 4, 4)); - - if ($AudioChunkStreamType == 'wb') { - $FirstFourBytes = substr($AudioChunkHeader, 8, 4); - if (preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', $FirstFourBytes)) { - // MP3 - if (getid3_mp3::MPEGaudioHeaderBytesValid($FirstFourBytes)) { - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = ftell($this->getid3->fp) - 4; - $getid3_temp->info['avdataend'] = ftell($this->getid3->fp) + $AudioChunkSize; - $getid3_mp3 = new getid3_mp3($getid3_temp); - $getid3_mp3->getOnlyMPEGaudioInfo($getid3_temp->info['avdataoffset'], false); - if (isset($getid3_temp->info['mpeg']['audio'])) { - $info['mpeg']['audio'] = $getid3_temp->info['mpeg']['audio']; - $info['audio'] = $getid3_temp->info['audio']; - $info['audio']['dataformat'] = 'mp'.$info['mpeg']['audio']['layer']; - $info['audio']['sample_rate'] = $info['mpeg']['audio']['sample_rate']; - $info['audio']['channels'] = $info['mpeg']['audio']['channels']; - $info['audio']['bitrate'] = $info['mpeg']['audio']['bitrate']; - $info['audio']['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']); - //$info['bitrate'] = $info['audio']['bitrate']; - } - unset($getid3_temp, $getid3_mp3); - } - - } elseif (preg_match('/^\x0B\x77/s', $FirstFourBytes)) { - - // AC3 - if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ac3.php', __FILE__, false)) { - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = ftell($this->getid3->fp) - 4; - $getid3_temp->info['avdataend'] = ftell($this->getid3->fp) + $AudioChunkSize; - $getid3_ac3 = new getid3_ac3($getid3_temp); - $getid3_ac3->Analyze(); - if (empty($getid3_temp->info['error'])) { - $info['audio'] = $getid3_temp->info['audio']; - $info['ac3'] = $getid3_temp->info['ac3']; - if (!empty($getid3_temp->info['warning'])) { - foreach ($getid3_temp->info['warning'] as $key => $value) { - $info['warning'][] = $value; - } - } - } - unset($getid3_temp, $getid3_ac3); - } - - } - - } - - $FoundAllChunksWeNeed = true; - fseek($this->getid3->fp, $WhereWeWere, SEEK_SET); - - } - fseek($this->getid3->fp, $chunksize - 4, SEEK_CUR); - - //} elseif (preg_match('#^[0-9]{2}(wb|pc|dc|db)$#i', $listname)) { - // - // // data chunk, ignore - // - } else { - - if (!isset($RIFFchunk[$listname])) { - $RIFFchunk[$listname] = array(); - } - $LISTchunkParent = $listname; - $LISTchunkMaxOffset = ftell($this->getid3->fp) - 4 + $chunksize; - if ($parsedChunk = $this->ParseRIFF(ftell($this->getid3->fp), ftell($this->getid3->fp) + $chunksize - 4)) { - $RIFFchunk[$listname] = array_merge_recursive($RIFFchunk[$listname], $parsedChunk); - } - - } - break; - - default: - if (preg_match('#^[0-9]{2}(wb|pc|dc|db)$#', $chunkname)) { - $nextoffset = ftell($this->getid3->fp) + $chunksize; - if (($nextoffset < 0) || !getid3_lib::intValueSupported($nextoffset)) { - $info['warning'][] = 'Unable to parse chunk at offset '.$nextoffset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions'; - break 2; - } - fseek($this->getid3->fp, $nextoffset, SEEK_SET); - break; - } - $thisindex = 0; - if (isset($RIFFchunk[$chunkname]) && is_array($RIFFchunk[$chunkname])) { - $thisindex = count($RIFFchunk[$chunkname]); - } - $RIFFchunk[$chunkname][$thisindex]['offset'] = ftell($this->getid3->fp) - 8; - $RIFFchunk[$chunkname][$thisindex]['size'] = $chunksize; - switch ($chunkname) { - case 'data': - $info['avdataoffset'] = ftell($this->getid3->fp); - $info['avdataend'] = $info['avdataoffset'] + $chunksize; - - $RIFFdataChunkContentsTest = fread($this->getid3->fp, 36); - - if ((strlen($RIFFdataChunkContentsTest) > 0) && preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', substr($RIFFdataChunkContentsTest, 0, 4))) { - - // Probably is MP3 data - if (getid3_mp3::MPEGaudioHeaderBytesValid(substr($RIFFdataChunkContentsTest, 0, 4))) { - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = $RIFFchunk[$chunkname][$thisindex]['offset']; - $getid3_temp->info['avdataend'] = $RIFFchunk[$chunkname][$thisindex]['offset'] + $RIFFchunk[$chunkname][$thisindex]['size']; - $getid3_mp3 = new getid3_mp3($getid3_temp); - $getid3_mp3->getOnlyMPEGaudioInfo($RIFFchunk[$chunkname][$thisindex]['offset'], false); - if (empty($getid3_temp->info['error'])) { - $info['mpeg'] = $getid3_temp->info['mpeg']; - $info['audio'] = $getid3_temp->info['audio']; - } - unset($getid3_temp, $getid3_mp3); - } - - } elseif ((strlen($RIFFdataChunkContentsTest) > 0) && (substr($RIFFdataChunkContentsTest, 0, 2) == "\x0B\x77")) { - - // This is probably AC-3 data - if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ac3.php', __FILE__, false)) { - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = $RIFFchunk[$chunkname][$thisindex]['offset']; - $getid3_temp->info['avdataend'] = $RIFFchunk[$chunkname][$thisindex]['offset'] + $RIFFchunk[$chunkname][$thisindex]['size']; - $getid3_ac3 = new getid3_ac3($getid3_temp); - $getid3_ac3->Analyze(); - if (empty($getid3_temp->info['error'])) { - $info['audio'] = $getid3_temp->info['audio']; - $info['ac3'] = $getid3_temp->info['ac3']; - $info['warning'] = $getid3_temp->info['warning']; - } - unset($getid3_temp, $getid3_ac3); - } - - } elseif ((strlen($RIFFdataChunkContentsTest) > 0) && (substr($RIFFdataChunkContentsTest, 8, 2) == "\x77\x0B")) { - - // Dolby Digital WAV - // AC-3 content, but not encoded in same format as normal AC-3 file - // For one thing, byte order is swapped - - if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ac3.php', __FILE__, false)) { - - // ok to use tmpfile here - only 56 bytes - if ($RIFFtempfilename = tempnam(GETID3_TEMP_DIR, 'id3')) { - if ($fd_temp = fopen($RIFFtempfilename, 'wb')) { - for ($i = 0; $i < 28; $i += 2) { - // swap byte order - fwrite($fd_temp, substr($RIFFdataChunkContentsTest, 8 + $i + 1, 1)); - fwrite($fd_temp, substr($RIFFdataChunkContentsTest, 8 + $i + 0, 1)); - } - fclose($fd_temp); - - $getid3_temp = new getID3(); - $getid3_temp->openfile($RIFFtempfilename); - $getid3_temp->info['avdataend'] = 20; - $getid3_ac3 = new getid3_ac3($getid3_temp); - $getid3_ac3->Analyze(); - if (empty($getid3_temp->info['error'])) { - $info['audio'] = $getid3_temp->info['audio']; - $info['ac3'] = $getid3_temp->info['ac3']; - $info['warning'] = $getid3_temp->info['warning']; - } else { - $info['error'][] = 'Error parsing Dolby Digital WAV (AC3-in-RIFF): '.implode(';', $getid3_temp->info['error']); - } - unset($getid3_ac3, $getid3_temp); - } else { - $info['error'][] = 'Error parsing Dolby Digital WAV (AC3-in-RIFF): failed to write temp file'; - } - unlink($RIFFtempfilename); - - } else { - $info['error'][] = 'Error parsing Dolby Digital WAV (AC3-in-RIFF): failed to write temp file'; - } - - } - - } elseif ((strlen($RIFFdataChunkContentsTest) > 0) && (substr($RIFFdataChunkContentsTest, 0, 4) == 'wvpk')) { - - // This is WavPack data - $info['wavpack']['offset'] = $RIFFchunk[$chunkname][$thisindex]['offset']; - $info['wavpack']['size'] = getid3_lib::LittleEndian2Int(substr($RIFFdataChunkContentsTest, 4, 4)); - $this->RIFFparseWavPackHeader(substr($RIFFdataChunkContentsTest, 8, 28)); - - } else { - - // This is some other kind of data (quite possibly just PCM) - // do nothing special, just skip it - - } - $nextoffset = $RIFFchunk[$chunkname][$thisindex]['offset'] + 8 + $chunksize; - if (($nextoffset < 0) || !getid3_lib::intValueSupported($nextoffset)) { - $info['warning'][] = 'Unable to parse chunk at offset '.$nextoffset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions'; - break 3; - } - fseek($this->getid3->fp, $RIFFchunk[$chunkname][$thisindex]['offset'] + 8 + $chunksize, SEEK_SET); - break; - - case 'iXML': - case 'bext': - case 'cart': - case 'fmt ': - case 'strh': - case 'strf': - case 'indx': - case 'MEXT': - case 'DISP': - // always read data in - case 'JUNK': - // should be: never read data in - // but some programs write their version strings in a JUNK chunk (e.g. VirtualDub, AVIdemux, etc) - if ($chunksize < 1048576) { - if ($chunksize > 0) { - $RIFFchunk[$chunkname][$thisindex]['data'] = fread($this->getid3->fp, $chunksize); - if ($chunkname == 'JUNK') { - if (preg_match('#^([\\x20-\\x7F]+)#', $RIFFchunk[$chunkname][$thisindex]['data'], $matches)) { - // only keep text characters [chr(32)-chr(127)] - $info['riff']['comments']['junk'][] = trim($matches[1]); - } - // but if nothing there, ignore - // remove the key in either case - unset($RIFFchunk[$chunkname][$thisindex]['data']); - } - } - } else { - $info['warning'][] = 'chunk "'.$chunkname.'" at offset '.ftell($this->getid3->fp).' is unexpectedly larger than 1MB (claims to be '.number_format($chunksize).' bytes), skipping data'; - $nextoffset = ftell($this->getid3->fp) + $chunksize; - if (($nextoffset < 0) || !getid3_lib::intValueSupported($nextoffset)) { - $info['warning'][] = 'Unable to parse chunk at offset '.$nextoffset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions'; - break 3; - } - fseek($this->getid3->fp, $nextoffset, SEEK_SET); - } - break; - - default: - if (!preg_match('#^[0-9]{2}(wb|pc|dc|db)$#', $chunkname) && !empty($LISTchunkParent) && (($RIFFchunk[$chunkname][$thisindex]['offset'] + $RIFFchunk[$chunkname][$thisindex]['size']) <= $LISTchunkMaxOffset)) { - $RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['offset'] = $RIFFchunk[$chunkname][$thisindex]['offset']; - $RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['size'] = $RIFFchunk[$chunkname][$thisindex]['size']; - unset($RIFFchunk[$chunkname][$thisindex]['offset']); - unset($RIFFchunk[$chunkname][$thisindex]['size']); - if (isset($RIFFchunk[$chunkname][$thisindex]) && empty($RIFFchunk[$chunkname][$thisindex])) { - unset($RIFFchunk[$chunkname][$thisindex]); - } - if (isset($RIFFchunk[$chunkname]) && empty($RIFFchunk[$chunkname])) { - unset($RIFFchunk[$chunkname]); - } - $RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['data'] = fread($this->getid3->fp, $chunksize); - //} elseif (in_array($chunkname, array('ID3 ')) || (($chunksize > 0) && ($chunksize < 2048))) { - } elseif (($chunksize > 0) && ($chunksize < 2048)) { - // only read data in if smaller than 2kB - $RIFFchunk[$chunkname][$thisindex]['data'] = fread($this->getid3->fp, $chunksize); - } else { - $nextoffset = ftell($this->getid3->fp) + $chunksize; - if (($nextoffset < 0) || !getid3_lib::intValueSupported($nextoffset)) { - $info['warning'][] = 'Unable to parse chunk at offset '.$nextoffset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions'; - break 3; - } - fseek($this->getid3->fp, $nextoffset, SEEK_SET); - } - break; - } - break; - - } - - } - - return $RIFFchunk; - } - - - function ParseRIFFdata(&$RIFFdata) { - $info = &$this->getid3->info; - if ($RIFFdata) { - $tempfile = tempnam(GETID3_TEMP_DIR, 'getID3'); - $fp_temp = fopen($tempfile, 'wb'); - $RIFFdataLength = strlen($RIFFdata); - $NewLengthString = getid3_lib::LittleEndian2String($RIFFdataLength, 4); - for ($i = 0; $i < 4; $i++) { - $RIFFdata{$i + 4} = $NewLengthString{$i}; - } - fwrite($fp_temp, $RIFFdata); - fclose($fp_temp); - - $getid3_temp = new getID3(); - $getid3_temp->openfile($tempfile); - $getid3_temp->info['filesize'] = $RIFFdataLength; - $getid3_temp->info['filenamepath'] = $info['filenamepath']; - $getid3_temp->info['tags'] = $info['tags']; - $getid3_temp->info['warning'] = $info['warning']; - $getid3_temp->info['error'] = $info['error']; - $getid3_temp->info['comments'] = $info['comments']; - $getid3_temp->info['audio'] = (isset($info['audio']) ? $info['audio'] : array()); - $getid3_temp->info['video'] = (isset($info['video']) ? $info['video'] : array()); - $getid3_riff = new getid3_riff($getid3_temp); - $getid3_riff->Analyze(); - - $info['riff'] = $getid3_temp->info['riff']; - $info['warning'] = $getid3_temp->info['warning']; - $info['error'] = $getid3_temp->info['error']; - $info['tags'] = $getid3_temp->info['tags']; - $info['comments'] = $getid3_temp->info['comments']; - unset($getid3_riff, $getid3_temp); - unlink($tempfile); - } - return false; - } - - - public static function RIFFparseWAVEFORMATex($WaveFormatExData) { - // shortcut - $WaveFormatEx['raw'] = array(); - $WaveFormatEx_raw = &$WaveFormatEx['raw']; - - $WaveFormatEx_raw['wFormatTag'] = getid3_lib::LittleEndian2Int(substr($WaveFormatExData, 0, 2)); - $WaveFormatEx_raw['nChannels'] = getid3_lib::LittleEndian2Int(substr($WaveFormatExData, 2, 2)); - $WaveFormatEx_raw['nSamplesPerSec'] = getid3_lib::LittleEndian2Int(substr($WaveFormatExData, 4, 4)); - $WaveFormatEx_raw['nAvgBytesPerSec'] = getid3_lib::LittleEndian2Int(substr($WaveFormatExData, 8, 4)); - $WaveFormatEx_raw['nBlockAlign'] = getid3_lib::LittleEndian2Int(substr($WaveFormatExData, 12, 2)); - $WaveFormatEx_raw['wBitsPerSample'] = getid3_lib::LittleEndian2Int(substr($WaveFormatExData, 14, 2)); - if (strlen($WaveFormatExData) > 16) { - $WaveFormatEx_raw['cbSize'] = getid3_lib::LittleEndian2Int(substr($WaveFormatExData, 16, 2)); - } - - $WaveFormatEx['codec'] = getid3_riff::RIFFwFormatTagLookup($WaveFormatEx_raw['wFormatTag']); - $WaveFormatEx['channels'] = $WaveFormatEx_raw['nChannels']; - $WaveFormatEx['sample_rate'] = $WaveFormatEx_raw['nSamplesPerSec']; - $WaveFormatEx['bitrate'] = $WaveFormatEx_raw['nAvgBytesPerSec'] * 8; - $WaveFormatEx['bits_per_sample'] = $WaveFormatEx_raw['wBitsPerSample']; - - return $WaveFormatEx; - } - - - function RIFFparseWavPackHeader($WavPackChunkData) { - // typedef struct { - // char ckID [4]; - // long ckSize; - // short version; - // short bits; // added for version 2.00 - // short flags, shift; // added for version 3.00 - // long total_samples, crc, crc2; - // char extension [4], extra_bc, extras [3]; - // } WavpackHeader; - - // shortcut - $info = &$this->getid3->info; - $info['wavpack'] = array(); - $thisfile_wavpack = &$info['wavpack']; - - $thisfile_wavpack['version'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 0, 2)); - if ($thisfile_wavpack['version'] >= 2) { - $thisfile_wavpack['bits'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 2, 2)); - } - if ($thisfile_wavpack['version'] >= 3) { - $thisfile_wavpack['flags_raw'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 4, 2)); - $thisfile_wavpack['shift'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 6, 2)); - $thisfile_wavpack['total_samples'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 8, 4)); - $thisfile_wavpack['crc1'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 12, 4)); - $thisfile_wavpack['crc2'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 16, 4)); - $thisfile_wavpack['extension'] = substr($WavPackChunkData, 20, 4); - $thisfile_wavpack['extra_bc'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 24, 1)); - for ($i = 0; $i <= 2; $i++) { - $thisfile_wavpack['extras'][] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 25 + $i, 1)); - } - - // shortcut - $thisfile_wavpack['flags'] = array(); - $thisfile_wavpack_flags = &$thisfile_wavpack['flags']; - - $thisfile_wavpack_flags['mono'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000001); - $thisfile_wavpack_flags['fast_mode'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000002); - $thisfile_wavpack_flags['raw_mode'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000004); - $thisfile_wavpack_flags['calc_noise'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000008); - $thisfile_wavpack_flags['high_quality'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000010); - $thisfile_wavpack_flags['3_byte_samples'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000020); - $thisfile_wavpack_flags['over_20_bits'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000040); - $thisfile_wavpack_flags['use_wvc'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000080); - $thisfile_wavpack_flags['noiseshaping'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000100); - $thisfile_wavpack_flags['very_fast_mode'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000200); - $thisfile_wavpack_flags['new_high_quality'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000400); - $thisfile_wavpack_flags['cancel_extreme'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x000800); - $thisfile_wavpack_flags['cross_decorrelation'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x001000); - $thisfile_wavpack_flags['new_decorrelation'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x002000); - $thisfile_wavpack_flags['joint_stereo'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x004000); - $thisfile_wavpack_flags['extra_decorrelation'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x008000); - $thisfile_wavpack_flags['override_noiseshape'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x010000); - $thisfile_wavpack_flags['override_jointstereo'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x020000); - $thisfile_wavpack_flags['copy_source_filetime'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x040000); - $thisfile_wavpack_flags['create_exe'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x080000); - } - - return true; - } - - public static function ParseBITMAPINFOHEADER($BITMAPINFOHEADER, $littleEndian=true) { - - $functionname = ($littleEndian ? 'LittleEndian2Int' : 'BigEndian2Int'); - $parsed['biSize'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 0, 4)); // number of bytes required by the BITMAPINFOHEADER structure - $parsed['biWidth'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 4, 4)); // width of the bitmap in pixels - $parsed['biHeight'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 8, 4)); // height of the bitmap in pixels. If biHeight is positive, the bitmap is a 'bottom-up' DIB and its origin is the lower left corner. If biHeight is negative, the bitmap is a 'top-down' DIB and its origin is the upper left corner - $parsed['biPlanes'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 12, 2)); // number of color planes on the target device. In most cases this value must be set to 1 - $parsed['biBitCount'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 14, 2)); // Specifies the number of bits per pixels - $parsed['fourcc'] = substr($BITMAPINFOHEADER, 16, 4); // compression identifier - $parsed['biSizeImage'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 20, 4)); // size of the bitmap data section of the image (the actual pixel data, excluding BITMAPINFOHEADER and RGBQUAD structures) - $parsed['biXPelsPerMeter'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 24, 4)); // horizontal resolution, in pixels per metre, of the target device - $parsed['biYPelsPerMeter'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 28, 4)); // vertical resolution, in pixels per metre, of the target device - $parsed['biClrUsed'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 32, 4)); // actual number of color indices in the color table used by the bitmap. If this value is zero, the bitmap uses the maximum number of colors corresponding to the value of the biBitCount member for the compression mode specified by biCompression - $parsed['biClrImportant'] = getid3_lib::$functionname(substr($BITMAPINFOHEADER, 36, 4)); // number of color indices that are considered important for displaying the bitmap. If this value is zero, all colors are important - - return $parsed; - } - - static function ParseDIVXTAG($DIVXTAG) { - // structure from "IDivX" source, Form1.frm, by "Greg Frazier of Daemonic Software Group", email: gfrazier@icestorm.net, web: http://dsg.cjb.net/ - // source available at http://files.divx-digest.com/download/c663efe7ef8ad2e90bf4af4d3ea6188a/on0SWN2r/edit/IDivX.zip - // 'Byte Layout: '1111111111111111 - // '32 for Movie - 1 '1111111111111111 - // '28 for Author - 6 '6666666666666666 - // '4 for year - 2 '6666666666662222 - // '3 for genre - 3 '7777777777777777 - // '48 for Comments - 7 '7777777777777777 - // '1 for Rating - 4 '7777777777777777 - // '5 for Future Additions - 0 '333400000DIVXTAG - // '128 bytes total - - static $DIVXTAGgenre = array( - 0 => 'Action', - 1 => 'Action/Adventure', - 2 => 'Adventure', - 3 => 'Adult', - 4 => 'Anime', - 5 => 'Cartoon', - 6 => 'Claymation', - 7 => 'Comedy', - 8 => 'Commercial', - 9 => 'Documentary', - 10 => 'Drama', - 11 => 'Home Video', - 12 => 'Horror', - 13 => 'Infomercial', - 14 => 'Interactive', - 15 => 'Mystery', - 16 => 'Music Video', - 17 => 'Other', - 18 => 'Religion', - 19 => 'Sci Fi', - 20 => 'Thriller', - 21 => 'Western', - ); - static $DIVXTAGrating = array( - 0=>'Unrated', - 1=>'G', - 2=>'PG', - 3=>'PG-13', - 4=>'R', - 5=>'NC-17' - ); - - $parsed['title'] = trim(substr($DIVXTAG, 0, 32)); - $parsed['artist'] = trim(substr($DIVXTAG, 32, 28)); - $parsed['year'] = intval(trim(substr($DIVXTAG, 60, 4))); - $parsed['comment'] = trim(substr($DIVXTAG, 64, 48)); - $parsed['genre_id'] = intval(trim(substr($DIVXTAG, 112, 3))); - $parsed['rating_id'] = ord(substr($DIVXTAG, 115, 1)); - //$parsed['padding'] = substr($DIVXTAG, 116, 5); // 5-byte null - //$parsed['magic'] = substr($DIVXTAG, 121, 7); // "DIVXTAG" - - $parsed['genre'] = (isset($DIVXTAGgenre[$parsed['genre_id']]) ? $DIVXTAGgenre[$parsed['genre_id']] : $parsed['genre_id']); - $parsed['rating'] = (isset($DIVXTAGrating[$parsed['rating_id']]) ? $DIVXTAGrating[$parsed['rating_id']] : $parsed['rating_id']); - return $parsed; - } - - static function RIFFwaveSNDMtagLookup($tagshortname) { - $begin = __LINE__; - - /** This is not a comment! - - ©kwd keywords - ©BPM bpm - ©trt tracktitle - ©des description - ©gen category - ©fin featuredinstrument - ©LID longid - ©bex bwdescription - ©pub publisher - ©cdt cdtitle - ©alb library - ©com composer - - */ - - return getid3_lib::EmbeddedLookup($tagshortname, $begin, __LINE__, __FILE__, 'riff-sndm'); - } - - static function RIFFwFormatTagLookup($wFormatTag) { - - $begin = __LINE__; - - /** This is not a comment! - - 0x0000 Microsoft Unknown Wave Format - 0x0001 Pulse Code Modulation (PCM) - 0x0002 Microsoft ADPCM - 0x0003 IEEE Float - 0x0004 Compaq Computer VSELP - 0x0005 IBM CVSD - 0x0006 Microsoft A-Law - 0x0007 Microsoft mu-Law - 0x0008 Microsoft DTS - 0x0010 OKI ADPCM - 0x0011 Intel DVI/IMA ADPCM - 0x0012 Videologic MediaSpace ADPCM - 0x0013 Sierra Semiconductor ADPCM - 0x0014 Antex Electronics G.723 ADPCM - 0x0015 DSP Solutions DigiSTD - 0x0016 DSP Solutions DigiFIX - 0x0017 Dialogic OKI ADPCM - 0x0018 MediaVision ADPCM - 0x0019 Hewlett-Packard CU - 0x0020 Yamaha ADPCM - 0x0021 Speech Compression Sonarc - 0x0022 DSP Group TrueSpeech - 0x0023 Echo Speech EchoSC1 - 0x0024 Audiofile AF36 - 0x0025 Audio Processing Technology APTX - 0x0026 AudioFile AF10 - 0x0027 Prosody 1612 - 0x0028 LRC - 0x0030 Dolby AC2 - 0x0031 Microsoft GSM 6.10 - 0x0032 MSNAudio - 0x0033 Antex Electronics ADPCME - 0x0034 Control Resources VQLPC - 0x0035 DSP Solutions DigiREAL - 0x0036 DSP Solutions DigiADPCM - 0x0037 Control Resources CR10 - 0x0038 Natural MicroSystems VBXADPCM - 0x0039 Crystal Semiconductor IMA ADPCM - 0x003A EchoSC3 - 0x003B Rockwell ADPCM - 0x003C Rockwell Digit LK - 0x003D Xebec - 0x0040 Antex Electronics G.721 ADPCM - 0x0041 G.728 CELP - 0x0042 MSG723 - 0x0050 MPEG Layer-2 or Layer-1 - 0x0052 RT24 - 0x0053 PAC - 0x0055 MPEG Layer-3 - 0x0059 Lucent G.723 - 0x0060 Cirrus - 0x0061 ESPCM - 0x0062 Voxware - 0x0063 Canopus Atrac - 0x0064 G.726 ADPCM - 0x0065 G.722 ADPCM - 0x0066 DSAT - 0x0067 DSAT Display - 0x0069 Voxware Byte Aligned - 0x0070 Voxware AC8 - 0x0071 Voxware AC10 - 0x0072 Voxware AC16 - 0x0073 Voxware AC20 - 0x0074 Voxware MetaVoice - 0x0075 Voxware MetaSound - 0x0076 Voxware RT29HW - 0x0077 Voxware VR12 - 0x0078 Voxware VR18 - 0x0079 Voxware TQ40 - 0x0080 Softsound - 0x0081 Voxware TQ60 - 0x0082 MSRT24 - 0x0083 G.729A - 0x0084 MVI MV12 - 0x0085 DF G.726 - 0x0086 DF GSM610 - 0x0088 ISIAudio - 0x0089 Onlive - 0x0091 SBC24 - 0x0092 Dolby AC3 SPDIF - 0x0093 MediaSonic G.723 - 0x0094 Aculab PLC Prosody 8kbps - 0x0097 ZyXEL ADPCM - 0x0098 Philips LPCBB - 0x0099 Packed - 0x00FF AAC - 0x0100 Rhetorex ADPCM - 0x0101 IBM mu-law - 0x0102 IBM A-law - 0x0103 IBM AVC Adaptive Differential Pulse Code Modulation (ADPCM) - 0x0111 Vivo G.723 - 0x0112 Vivo Siren - 0x0123 Digital G.723 - 0x0125 Sanyo LD ADPCM - 0x0130 Sipro Lab Telecom ACELP NET - 0x0131 Sipro Lab Telecom ACELP 4800 - 0x0132 Sipro Lab Telecom ACELP 8V3 - 0x0133 Sipro Lab Telecom G.729 - 0x0134 Sipro Lab Telecom G.729A - 0x0135 Sipro Lab Telecom Kelvin - 0x0140 Windows Media Video V8 - 0x0150 Qualcomm PureVoice - 0x0151 Qualcomm HalfRate - 0x0155 Ring Zero Systems TUB GSM - 0x0160 Microsoft Audio 1 - 0x0161 Windows Media Audio V7 / V8 / V9 - 0x0162 Windows Media Audio Professional V9 - 0x0163 Windows Media Audio Lossless V9 - 0x0200 Creative Labs ADPCM - 0x0202 Creative Labs Fastspeech8 - 0x0203 Creative Labs Fastspeech10 - 0x0210 UHER Informatic GmbH ADPCM - 0x0220 Quarterdeck - 0x0230 I-link Worldwide VC - 0x0240 Aureal RAW Sport - 0x0250 Interactive Products HSX - 0x0251 Interactive Products RPELP - 0x0260 Consistent Software CS2 - 0x0270 Sony SCX - 0x0300 Fujitsu FM Towns Snd - 0x0400 BTV Digital - 0x0401 Intel Music Coder - 0x0450 QDesign Music - 0x0680 VME VMPCM - 0x0681 AT&T Labs TPC - 0x08AE ClearJump LiteWave - 0x1000 Olivetti GSM - 0x1001 Olivetti ADPCM - 0x1002 Olivetti CELP - 0x1003 Olivetti SBC - 0x1004 Olivetti OPR - 0x1100 Lernout & Hauspie Codec (0x1100) - 0x1101 Lernout & Hauspie CELP Codec (0x1101) - 0x1102 Lernout & Hauspie SBC Codec (0x1102) - 0x1103 Lernout & Hauspie SBC Codec (0x1103) - 0x1104 Lernout & Hauspie SBC Codec (0x1104) - 0x1400 Norris - 0x1401 AT&T ISIAudio - 0x1500 Soundspace Music Compression - 0x181C VoxWare RT24 Speech - 0x1FC4 NCT Soft ALF2CD (www.nctsoft.com) - 0x2000 Dolby AC3 - 0x2001 Dolby DTS - 0x2002 WAVE_FORMAT_14_4 - 0x2003 WAVE_FORMAT_28_8 - 0x2004 WAVE_FORMAT_COOK - 0x2005 WAVE_FORMAT_DNET - 0x674F Ogg Vorbis 1 - 0x6750 Ogg Vorbis 2 - 0x6751 Ogg Vorbis 3 - 0x676F Ogg Vorbis 1+ - 0x6770 Ogg Vorbis 2+ - 0x6771 Ogg Vorbis 3+ - 0x7A21 GSM-AMR (CBR, no SID) - 0x7A22 GSM-AMR (VBR, including SID) - 0xFFFE WAVE_FORMAT_EXTENSIBLE - 0xFFFF WAVE_FORMAT_DEVELOPMENT - - */ - - return getid3_lib::EmbeddedLookup('0x'.str_pad(strtoupper(dechex($wFormatTag)), 4, '0', STR_PAD_LEFT), $begin, __LINE__, __FILE__, 'riff-wFormatTag'); - - } - - - public static function RIFFfourccLookup($fourcc) { - - $begin = __LINE__; - - /** This is not a comment! - - swot http://developer.apple.com/qa/snd/snd07.html - ____ No Codec (____) - _BIT BI_BITFIELDS (Raw RGB) - _JPG JPEG compressed - _PNG PNG compressed W3C/ISO/IEC (RFC-2083) - _RAW Full Frames (Uncompressed) - _RGB Raw RGB Bitmap - _RL4 RLE 4bpp RGB - _RL8 RLE 8bpp RGB - 3IV1 3ivx MPEG-4 v1 - 3IV2 3ivx MPEG-4 v2 - 3IVX 3ivx MPEG-4 - AASC Autodesk Animator - ABYR Kensington ?ABYR? - AEMI Array Microsystems VideoONE MPEG1-I Capture - AFLC Autodesk Animator FLC - AFLI Autodesk Animator FLI - AMPG Array Microsystems VideoONE MPEG - ANIM Intel RDX (ANIM) - AP41 AngelPotion Definitive - ASV1 Asus Video v1 - ASV2 Asus Video v2 - ASVX Asus Video 2.0 (audio) - AUR2 AuraVision Aura 2 Codec - YUV 4:2:2 - AURA AuraVision Aura 1 Codec - YUV 4:1:1 - AVDJ Independent JPEG Group\'s codec (AVDJ) - AVRN Independent JPEG Group\'s codec (AVRN) - AYUV 4:4:4 YUV (AYUV) - AZPR Quicktime Apple Video (AZPR) - BGR Raw RGB32 - BLZ0 Blizzard DivX MPEG-4 - BTVC Conexant Composite Video - BINK RAD Game Tools Bink Video - BT20 Conexant Prosumer Video - BTCV Conexant Composite Video Codec - BW10 Data Translation Broadway MPEG Capture - CC12 Intel YUV12 - CDVC Canopus DV - CFCC Digital Processing Systems DPS Perception - CGDI Microsoft Office 97 Camcorder Video - CHAM Winnov Caviara Champagne - CJPG Creative WebCam JPEG - CLJR Cirrus Logic YUV 4:1:1 - CMYK Common Data Format in Printing (Colorgraph) - CPLA Weitek 4:2:0 YUV Planar - CRAM Microsoft Video 1 (CRAM) - cvid Radius Cinepak - CVID Radius Cinepak - CWLT Microsoft Color WLT DIB - CYUV Creative Labs YUV - CYUY ATI YUV - D261 H.261 - D263 H.263 - DIB Device Independent Bitmap - DIV1 FFmpeg OpenDivX - DIV2 Microsoft MPEG-4 v1/v2 - DIV3 DivX ;-) MPEG-4 v3.x Low-Motion - DIV4 DivX ;-) MPEG-4 v3.x Fast-Motion - DIV5 DivX MPEG-4 v5.x - DIV6 DivX ;-) (MS MPEG-4 v3.x) - DIVX DivX MPEG-4 v4 (OpenDivX / Project Mayo) - divx DivX MPEG-4 - DMB1 Matrox Rainbow Runner hardware MJPEG - DMB2 Paradigm MJPEG - DSVD ?DSVD? - DUCK Duck TrueMotion 1.0 - DPS0 DPS/Leitch Reality Motion JPEG - DPSC DPS/Leitch PAR Motion JPEG - DV25 Matrox DVCPRO codec - DV50 Matrox DVCPRO50 codec - DVC IEC 61834 and SMPTE 314M (DVC/DV Video) - DVCP IEC 61834 and SMPTE 314M (DVC/DV Video) - DVHD IEC Standard DV 1125 lines @ 30fps / 1250 lines @ 25fps - DVMA Darim Vision DVMPEG (dummy for MPEG compressor) (www.darvision.com) - DVSL IEC Standard DV compressed in SD (SDL) - DVAN ?DVAN? - DVE2 InSoft DVE-2 Videoconferencing - dvsd IEC 61834 and SMPTE 314M DVC/DV Video - DVSD IEC 61834 and SMPTE 314M DVC/DV Video - DVX1 Lucent DVX1000SP Video Decoder - DVX2 Lucent DVX2000S Video Decoder - DVX3 Lucent DVX3000S Video Decoder - DX50 DivX v5 - DXT1 Microsoft DirectX Compressed Texture (DXT1) - DXT2 Microsoft DirectX Compressed Texture (DXT2) - DXT3 Microsoft DirectX Compressed Texture (DXT3) - DXT4 Microsoft DirectX Compressed Texture (DXT4) - DXT5 Microsoft DirectX Compressed Texture (DXT5) - DXTC Microsoft DirectX Compressed Texture (DXTC) - DXTn Microsoft DirectX Compressed Texture (DXTn) - EM2V Etymonix MPEG-2 I-frame (www.etymonix.com) - EKQ0 Elsa ?EKQ0? - ELK0 Elsa ?ELK0? - ESCP Eidos Escape - ETV1 eTreppid Video ETV1 - ETV2 eTreppid Video ETV2 - ETVC eTreppid Video ETVC - FLIC Autodesk FLI/FLC Animation - FLV1 Sorenson Spark - FLV4 On2 TrueMotion VP6 - FRWT Darim Vision Forward Motion JPEG (www.darvision.com) - FRWU Darim Vision Forward Uncompressed (www.darvision.com) - FLJP D-Vision Field Encoded Motion JPEG - FPS1 FRAPS v1 - FRWA SoftLab-Nsk Forward Motion JPEG w/ alpha channel - FRWD SoftLab-Nsk Forward Motion JPEG - FVF1 Iterated Systems Fractal Video Frame - GLZW Motion LZW (gabest@freemail.hu) - GPEG Motion JPEG (gabest@freemail.hu) - GWLT Microsoft Greyscale WLT DIB - H260 Intel ITU H.260 Videoconferencing - H261 Intel ITU H.261 Videoconferencing - H262 Intel ITU H.262 Videoconferencing - H263 Intel ITU H.263 Videoconferencing - H264 Intel ITU H.264 Videoconferencing - H265 Intel ITU H.265 Videoconferencing - H266 Intel ITU H.266 Videoconferencing - H267 Intel ITU H.267 Videoconferencing - H268 Intel ITU H.268 Videoconferencing - H269 Intel ITU H.269 Videoconferencing - HFYU Huffman Lossless Codec - HMCR Rendition Motion Compensation Format (HMCR) - HMRR Rendition Motion Compensation Format (HMRR) - I263 FFmpeg I263 decoder - IF09 Indeo YVU9 ("YVU9 with additional delta-frame info after the U plane") - IUYV Interlaced version of UYVY (www.leadtools.com) - IY41 Interlaced version of Y41P (www.leadtools.com) - IYU1 12 bit format used in mode 2 of the IEEE 1394 Digital Camera 1.04 spec IEEE standard - IYU2 24 bit format used in mode 2 of the IEEE 1394 Digital Camera 1.04 spec IEEE standard - IYUV Planar YUV format (8-bpp Y plane, followed by 8-bpp 2×2 U and V planes) - i263 Intel ITU H.263 Videoconferencing (i263) - I420 Intel Indeo 4 - IAN Intel Indeo 4 (RDX) - ICLB InSoft CellB Videoconferencing - IGOR Power DVD - IJPG Intergraph JPEG - ILVC Intel Layered Video - ILVR ITU-T H.263+ - IPDV I-O Data Device Giga AVI DV Codec - IR21 Intel Indeo 2.1 - IRAW Intel YUV Uncompressed - IV30 Intel Indeo 3.0 - IV31 Intel Indeo 3.1 - IV32 Ligos Indeo 3.2 - IV33 Ligos Indeo 3.3 - IV34 Ligos Indeo 3.4 - IV35 Ligos Indeo 3.5 - IV36 Ligos Indeo 3.6 - IV37 Ligos Indeo 3.7 - IV38 Ligos Indeo 3.8 - IV39 Ligos Indeo 3.9 - IV40 Ligos Indeo Interactive 4.0 - IV41 Ligos Indeo Interactive 4.1 - IV42 Ligos Indeo Interactive 4.2 - IV43 Ligos Indeo Interactive 4.3 - IV44 Ligos Indeo Interactive 4.4 - IV45 Ligos Indeo Interactive 4.5 - IV46 Ligos Indeo Interactive 4.6 - IV47 Ligos Indeo Interactive 4.7 - IV48 Ligos Indeo Interactive 4.8 - IV49 Ligos Indeo Interactive 4.9 - IV50 Ligos Indeo Interactive 5.0 - JBYR Kensington ?JBYR? - JPEG Still Image JPEG DIB - JPGL Pegasus Lossless Motion JPEG - KMVC Team17 Software Karl Morton\'s Video Codec - LSVM Vianet Lighting Strike Vmail (Streaming) (www.vianet.com) - LEAD LEAD Video Codec - Ljpg LEAD MJPEG Codec - MDVD Alex MicroDVD Video (hacked MS MPEG-4) (www.tiasoft.de) - MJPA Morgan Motion JPEG (MJPA) (www.morgan-multimedia.com) - MJPB Morgan Motion JPEG (MJPB) (www.morgan-multimedia.com) - MMES Matrox MPEG-2 I-frame - MP2v Microsoft S-Mpeg 4 version 1 (MP2v) - MP42 Microsoft S-Mpeg 4 version 2 (MP42) - MP43 Microsoft S-Mpeg 4 version 3 (MP43) - MP4S Microsoft S-Mpeg 4 version 3 (MP4S) - MP4V FFmpeg MPEG-4 - MPG1 FFmpeg MPEG 1/2 - MPG2 FFmpeg MPEG 1/2 - MPG3 FFmpeg DivX ;-) (MS MPEG-4 v3) - MPG4 Microsoft MPEG-4 - MPGI Sigma Designs MPEG - MPNG PNG images decoder - MSS1 Microsoft Windows Screen Video - MSZH LCL (Lossless Codec Library) (www.geocities.co.jp/Playtown-Denei/2837/LRC.htm) - M261 Microsoft H.261 - M263 Microsoft H.263 - M4S2 Microsoft Fully Compliant MPEG-4 v2 simple profile (M4S2) - m4s2 Microsoft Fully Compliant MPEG-4 v2 simple profile (m4s2) - MC12 ATI Motion Compensation Format (MC12) - MCAM ATI Motion Compensation Format (MCAM) - MJ2C Morgan Multimedia Motion JPEG2000 - mJPG IBM Motion JPEG w/ Huffman Tables - MJPG Microsoft Motion JPEG DIB - MP42 Microsoft MPEG-4 (low-motion) - MP43 Microsoft MPEG-4 (fast-motion) - MP4S Microsoft MPEG-4 (MP4S) - mp4s Microsoft MPEG-4 (mp4s) - MPEG Chromatic Research MPEG-1 Video I-Frame - MPG4 Microsoft MPEG-4 Video High Speed Compressor - MPGI Sigma Designs MPEG - MRCA FAST Multimedia Martin Regen Codec - MRLE Microsoft Run Length Encoding - MSVC Microsoft Video 1 - MTX1 Matrox ?MTX1? - MTX2 Matrox ?MTX2? - MTX3 Matrox ?MTX3? - MTX4 Matrox ?MTX4? - MTX5 Matrox ?MTX5? - MTX6 Matrox ?MTX6? - MTX7 Matrox ?MTX7? - MTX8 Matrox ?MTX8? - MTX9 Matrox ?MTX9? - MV12 Motion Pixels Codec (old) - MWV1 Aware Motion Wavelets - nAVI SMR Codec (hack of Microsoft MPEG-4) (IRC #shadowrealm) - NT00 NewTek LightWave HDTV YUV w/ Alpha (www.newtek.com) - NUV1 NuppelVideo - NTN1 Nogatech Video Compression 1 - NVS0 nVidia GeForce Texture (NVS0) - NVS1 nVidia GeForce Texture (NVS1) - NVS2 nVidia GeForce Texture (NVS2) - NVS3 nVidia GeForce Texture (NVS3) - NVS4 nVidia GeForce Texture (NVS4) - NVS5 nVidia GeForce Texture (NVS5) - NVT0 nVidia GeForce Texture (NVT0) - NVT1 nVidia GeForce Texture (NVT1) - NVT2 nVidia GeForce Texture (NVT2) - NVT3 nVidia GeForce Texture (NVT3) - NVT4 nVidia GeForce Texture (NVT4) - NVT5 nVidia GeForce Texture (NVT5) - PIXL MiroXL, Pinnacle PCTV - PDVC I-O Data Device Digital Video Capture DV codec - PGVV Radius Video Vision - PHMO IBM Photomotion - PIM1 MPEG Realtime (Pinnacle Cards) - PIM2 Pegasus Imaging ?PIM2? - PIMJ Pegasus Imaging Lossless JPEG - PVEZ Horizons Technology PowerEZ - PVMM PacketVideo Corporation MPEG-4 - PVW2 Pegasus Imaging Wavelet Compression - Q1.0 Q-Team\'s QPEG 1.0 (www.q-team.de) - Q1.1 Q-Team\'s QPEG 1.1 (www.q-team.de) - QPEG Q-Team QPEG 1.0 - qpeq Q-Team QPEG 1.1 - RGB Raw BGR32 - RGBA Raw RGB w/ Alpha - RMP4 REALmagic MPEG-4 (unauthorized XVID copy) (www.sigmadesigns.com) - ROQV Id RoQ File Video Decoder - RPZA Quicktime Apple Video (RPZA) - RUD0 Rududu video codec (http://rududu.ifrance.com/rududu/) - RV10 RealVideo 1.0 (aka RealVideo 5.0) - RV13 RealVideo 1.0 (RV13) - RV20 RealVideo G2 - RV30 RealVideo 8 - RV40 RealVideo 9 - RGBT Raw RGB w/ Transparency - RLE Microsoft Run Length Encoder - RLE4 Run Length Encoded (4bpp, 16-color) - RLE8 Run Length Encoded (8bpp, 256-color) - RT21 Intel Indeo RealTime Video 2.1 - rv20 RealVideo G2 - rv30 RealVideo 8 - RVX Intel RDX (RVX ) - SMC Apple Graphics (SMC ) - SP54 Logitech Sunplus Sp54 Codec for Mustek GSmart Mini 2 - SPIG Radius Spigot - SVQ3 Sorenson Video 3 (Apple Quicktime 5) - s422 Tekram VideoCap C210 YUV 4:2:2 - SDCC Sun Communication Digital Camera Codec - SFMC CrystalNet Surface Fitting Method - SMSC Radius SMSC - SMSD Radius SMSD - smsv WorldConnect Wavelet Video - SPIG Radius Spigot - SPLC Splash Studios ACM Audio Codec (www.splashstudios.net) - SQZ2 Microsoft VXTreme Video Codec V2 - STVA ST Microelectronics CMOS Imager Data (Bayer) - STVB ST Microelectronics CMOS Imager Data (Nudged Bayer) - STVC ST Microelectronics CMOS Imager Data (Bunched) - STVX ST Microelectronics CMOS Imager Data (Extended CODEC Data Format) - STVY ST Microelectronics CMOS Imager Data (Extended CODEC Data Format with Correction Data) - SV10 Sorenson Video R1 - SVQ1 Sorenson Video - T420 Toshiba YUV 4:2:0 - TM2A Duck TrueMotion Archiver 2.0 (www.duck.com) - TVJP Pinnacle/Truevision Targa 2000 board (TVJP) - TVMJ Pinnacle/Truevision Targa 2000 board (TVMJ) - TY0N Tecomac Low-Bit Rate Codec (www.tecomac.com) - TY2C Trident Decompression Driver - TLMS TeraLogic Motion Intraframe Codec (TLMS) - TLST TeraLogic Motion Intraframe Codec (TLST) - TM20 Duck TrueMotion 2.0 - TM2X Duck TrueMotion 2X - TMIC TeraLogic Motion Intraframe Codec (TMIC) - TMOT Horizons Technology TrueMotion S - tmot Horizons TrueMotion Video Compression - TR20 Duck TrueMotion RealTime 2.0 - TSCC TechSmith Screen Capture Codec - TV10 Tecomac Low-Bit Rate Codec - TY2N Trident ?TY2N? - U263 UB Video H.263/H.263+/H.263++ Decoder - UMP4 UB Video MPEG 4 (www.ubvideo.com) - UYNV Nvidia UYVY packed 4:2:2 - UYVP Evans & Sutherland YCbCr 4:2:2 extended precision - UCOD eMajix.com ClearVideo - ULTI IBM Ultimotion - UYVY UYVY packed 4:2:2 - V261 Lucent VX2000S - VIFP VFAPI Reader Codec (www.yks.ne.jp/~hori/) - VIV1 FFmpeg H263+ decoder - VIV2 Vivo H.263 - VQC2 Vector-quantised codec 2 (research) http://eprints.ecs.soton.ac.uk/archive/00001310/01/VTC97-js.pdf) - VTLP Alaris VideoGramPiX - VYU9 ATI YUV (VYU9) - VYUY ATI YUV (VYUY) - V261 Lucent VX2000S - V422 Vitec Multimedia 24-bit YUV 4:2:2 Format - V655 Vitec Multimedia 16-bit YUV 4:2:2 Format - VCR1 ATI Video Codec 1 - VCR2 ATI Video Codec 2 - VCR3 ATI VCR 3.0 - VCR4 ATI VCR 4.0 - VCR5 ATI VCR 5.0 - VCR6 ATI VCR 6.0 - VCR7 ATI VCR 7.0 - VCR8 ATI VCR 8.0 - VCR9 ATI VCR 9.0 - VDCT Vitec Multimedia Video Maker Pro DIB - VDOM VDOnet VDOWave - VDOW VDOnet VDOLive (H.263) - VDTZ Darim Vison VideoTizer YUV - VGPX Alaris VideoGramPiX - VIDS Vitec Multimedia YUV 4:2:2 CCIR 601 for V422 - VIVO Vivo H.263 v2.00 - vivo Vivo H.263 - VIXL Miro/Pinnacle Video XL - VLV1 VideoLogic/PURE Digital Videologic Capture - VP30 On2 VP3.0 - VP31 On2 VP3.1 - VP6F On2 TrueMotion VP6 - VX1K Lucent VX1000S Video Codec - VX2K Lucent VX2000S Video Codec - VXSP Lucent VX1000SP Video Codec - WBVC Winbond W9960 - WHAM Microsoft Video 1 (WHAM) - WINX Winnov Software Compression - WJPG AverMedia Winbond JPEG - WMV1 Windows Media Video V7 - WMV2 Windows Media Video V8 - WMV3 Windows Media Video V9 - WNV1 Winnov Hardware Compression - XYZP Extended PAL format XYZ palette (www.riff.org) - x263 Xirlink H.263 - XLV0 NetXL Video Decoder - XMPG Xing MPEG (I-Frame only) - XVID XviD MPEG-4 (www.xvid.org) - XXAN ?XXAN? - YU92 Intel YUV (YU92) - YUNV Nvidia Uncompressed YUV 4:2:2 - YUVP Extended PAL format YUV palette (www.riff.org) - Y211 YUV 2:1:1 Packed - Y411 YUV 4:1:1 Packed - Y41B Weitek YUV 4:1:1 Planar - Y41P Brooktree PC1 YUV 4:1:1 Packed - Y41T Brooktree PC1 YUV 4:1:1 with transparency - Y42B Weitek YUV 4:2:2 Planar - Y42T Brooktree UYUV 4:2:2 with transparency - Y422 ADS Technologies Copy of UYVY used in Pyro WebCam firewire camera - Y800 Simple, single Y plane for monochrome images - Y8 Grayscale video - YC12 Intel YUV 12 codec - YUV8 Winnov Caviar YUV8 - YUV9 Intel YUV9 - YUY2 Uncompressed YUV 4:2:2 - YUYV Canopus YUV - YV12 YVU12 Planar - YVU9 Intel YVU9 Planar (8-bpp Y plane, followed by 8-bpp 4x4 U and V planes) - YVYU YVYU 4:2:2 Packed - ZLIB Lossless Codec Library zlib compression (www.geocities.co.jp/Playtown-Denei/2837/LRC.htm) - ZPEG Metheus Video Zipper - - */ - - return getid3_lib::EmbeddedLookup($fourcc, $begin, __LINE__, __FILE__, 'riff-fourcc'); - } - - - function EitherEndian2Int($byteword, $signed=false) { - if ($this->getid3->info['fileformat'] == 'riff') { - return getid3_lib::LittleEndian2Int($byteword, $signed); - } - return getid3_lib::BigEndian2Int($byteword, false, $signed); - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio-video.swf.php b/3rdparty/getid3/module.audio-video.swf.php deleted file mode 100644 index a3d49f9506aceded39bece8b69f4193cd9b34fb8..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio-video.swf.php +++ /dev/null @@ -1,142 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio-video.swf.php // -// module for analyzing Shockwave Flash files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_swf extends getid3_handler -{ - var $ReturnAllTagData = false; - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'swf'; - $info['video']['dataformat'] = 'swf'; - - // http://www.openswf.org/spec/SWFfileformat.html - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $SWFfileData = fread($this->getid3->fp, $info['avdataend'] - $info['avdataoffset']); // 8 + 2 + 2 + max(9) bytes NOT including Frame_Size RECT data - - $info['swf']['header']['signature'] = substr($SWFfileData, 0, 3); - switch ($info['swf']['header']['signature']) { - case 'FWS': - $info['swf']['header']['compressed'] = false; - break; - - case 'CWS': - $info['swf']['header']['compressed'] = true; - break; - - default: - $info['error'][] = 'Expecting "FWS" or "CWS" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['swf']['header']['signature']).'"'; - unset($info['swf']); - unset($info['fileformat']); - return false; - break; - } - $info['swf']['header']['version'] = getid3_lib::LittleEndian2Int(substr($SWFfileData, 3, 1)); - $info['swf']['header']['length'] = getid3_lib::LittleEndian2Int(substr($SWFfileData, 4, 4)); - - if ($info['swf']['header']['compressed']) { - $SWFHead = substr($SWFfileData, 0, 8); - $SWFfileData = substr($SWFfileData, 8); - if ($decompressed = @gzuncompress($SWFfileData)) { - $SWFfileData = $SWFHead.$decompressed; - } else { - $info['error'][] = 'Error decompressing compressed SWF data ('.strlen($SWFfileData).' bytes compressed, should be '.($info['swf']['header']['length'] - 8).' bytes uncompressed)'; - return false; - } - } - - $FrameSizeBitsPerValue = (ord(substr($SWFfileData, 8, 1)) & 0xF8) >> 3; - $FrameSizeDataLength = ceil((5 + (4 * $FrameSizeBitsPerValue)) / 8); - $FrameSizeDataString = str_pad(decbin(ord(substr($SWFfileData, 8, 1)) & 0x07), 3, '0', STR_PAD_LEFT); - for ($i = 1; $i < $FrameSizeDataLength; $i++) { - $FrameSizeDataString .= str_pad(decbin(ord(substr($SWFfileData, 8 + $i, 1))), 8, '0', STR_PAD_LEFT); - } - list($X1, $X2, $Y1, $Y2) = explode("\n", wordwrap($FrameSizeDataString, $FrameSizeBitsPerValue, "\n", 1)); - $info['swf']['header']['frame_width'] = getid3_lib::Bin2Dec($X2); - $info['swf']['header']['frame_height'] = getid3_lib::Bin2Dec($Y2); - - // http://www-lehre.informatik.uni-osnabrueck.de/~fbstark/diplom/docs/swf/Flash_Uncovered.htm - // Next in the header is the frame rate, which is kind of weird. - // It is supposed to be stored as a 16bit integer, but the first byte - // (or last depending on how you look at it) is completely ignored. - // Example: 0x000C -> 0x0C -> 12 So the frame rate is 12 fps. - - // Byte at (8 + $FrameSizeDataLength) is always zero and ignored - $info['swf']['header']['frame_rate'] = getid3_lib::LittleEndian2Int(substr($SWFfileData, 9 + $FrameSizeDataLength, 1)); - $info['swf']['header']['frame_count'] = getid3_lib::LittleEndian2Int(substr($SWFfileData, 10 + $FrameSizeDataLength, 2)); - - $info['video']['frame_rate'] = $info['swf']['header']['frame_rate']; - $info['video']['resolution_x'] = intval(round($info['swf']['header']['frame_width'] / 20)); - $info['video']['resolution_y'] = intval(round($info['swf']['header']['frame_height'] / 20)); - $info['video']['pixel_aspect_ratio'] = (float) 1; - - if (($info['swf']['header']['frame_count'] > 0) && ($info['swf']['header']['frame_rate'] > 0)) { - $info['playtime_seconds'] = $info['swf']['header']['frame_count'] / $info['swf']['header']['frame_rate']; - } -//echo __LINE__.'='.number_format(microtime(true) - $start_time, 3).'
    '; - - - // SWF tags - - $CurrentOffset = 12 + $FrameSizeDataLength; - $SWFdataLength = strlen($SWFfileData); - - while ($CurrentOffset < $SWFdataLength) { -//echo __LINE__.'='.number_format(microtime(true) - $start_time, 3).'
    '; - - $TagIDTagLength = getid3_lib::LittleEndian2Int(substr($SWFfileData, $CurrentOffset, 2)); - $TagID = ($TagIDTagLength & 0xFFFC) >> 6; - $TagLength = ($TagIDTagLength & 0x003F); - $CurrentOffset += 2; - if ($TagLength == 0x3F) { - $TagLength = getid3_lib::LittleEndian2Int(substr($SWFfileData, $CurrentOffset, 4)); - $CurrentOffset += 4; - } - - unset($TagData); - $TagData['offset'] = $CurrentOffset; - $TagData['size'] = $TagLength; - $TagData['id'] = $TagID; - $TagData['data'] = substr($SWFfileData, $CurrentOffset, $TagLength); - switch ($TagID) { - case 0: // end of movie - break 2; - - case 9: // Set background color - //$info['swf']['tags'][] = $TagData; - $info['swf']['bgcolor'] = strtoupper(str_pad(dechex(getid3_lib::BigEndian2Int($TagData['data'])), 6, '0', STR_PAD_LEFT)); - break; - - default: - if ($this->ReturnAllTagData) { - $info['swf']['tags'][] = $TagData; - } - break; - } - - $CurrentOffset += $TagLength; - } - - return true; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.aa.php b/3rdparty/getid3/module.audio.aa.php deleted file mode 100644 index 39cb77c859d873e24014d231b31ea51d7d0c377c..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.aa.php +++ /dev/null @@ -1,59 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.aa.php // -// module for analyzing Audible Audiobook files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_aa extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $AAheader = fread($this->getid3->fp, 8); - - $magic = "\x57\x90\x75\x36"; - if (substr($AAheader, 4, 4) != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AAheader, 4, 4)).'"'; - return false; - } - - // shortcut - $info['aa'] = array(); - $thisfile_au = &$info['aa']; - - $info['fileformat'] = 'aa'; - $info['audio']['dataformat'] = 'aa'; - $info['audio']['bitrate_mode'] = 'cbr'; // is it? - $thisfile_au['encoding'] = 'ISO-8859-1'; - - $thisfile_au['filesize'] = getid3_lib::BigEndian2Int(substr($AUheader, 0, 4)); - if ($thisfile_au['filesize'] > ($info['avdataend'] - $info['avdataoffset'])) { - $info['warning'][] = 'Possible truncated file - expecting "'.$thisfile_au['filesize'].'" bytes of data, only found '.($info['avdataend'] - $info['avdataoffset']).' bytes"'; - } - - $info['audio']['bits_per_sample'] = 16; // is it? - $info['audio']['sample_rate'] = $thisfile_au['sample_rate']; - $info['audio']['channels'] = $thisfile_au['channels']; - - //$info['playtime_seconds'] = 0; - //$info['audio']['bitrate'] = 0; - - return true; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.aac.php b/3rdparty/getid3/module.audio.aac.php deleted file mode 100644 index d573e11d783fd904b500d1aa7cb6be0ef0266ca0..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.aac.php +++ /dev/null @@ -1,515 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.aac.php // -// module for analyzing AAC Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_aac extends getid3_handler -{ - function Analyze() { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - if (fread($this->getid3->fp, 4) == 'ADIF') { - $this->getAACADIFheaderFilepointer(); - } else { - $this->getAACADTSheaderFilepointer(); - } - return true; - } - - - - function getAACADIFheaderFilepointer() { - $info = &$this->getid3->info; - $info['fileformat'] = 'aac'; - $info['audio']['dataformat'] = 'aac'; - $info['audio']['lossless'] = false; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $AACheader = fread($this->getid3->fp, 1024); - $offset = 0; - - if (substr($AACheader, 0, 4) == 'ADIF') { - - // http://faac.sourceforge.net/wiki/index.php?page=ADIF - - // http://libmpeg.org/mpeg4/doc/w2203tfs.pdf - // adif_header() { - // adif_id 32 - // copyright_id_present 1 - // if( copyright_id_present ) - // copyright_id 72 - // original_copy 1 - // home 1 - // bitstream_type 1 - // bitrate 23 - // num_program_config_elements 4 - // for (i = 0; i < num_program_config_elements + 1; i++ ) { - // if( bitstream_type == '0' ) - // adif_buffer_fullness 20 - // program_config_element() - // } - // } - - $AACheaderBitstream = getid3_lib::BigEndian2Bin($AACheader); - $bitoffset = 0; - - $info['aac']['header_type'] = 'ADIF'; - $bitoffset += 32; - $info['aac']['header']['mpeg_version'] = 4; - - $info['aac']['header']['copyright'] = (bool) (substr($AACheaderBitstream, $bitoffset, 1) == '1'); - $bitoffset += 1; - if ($info['aac']['header']['copyright']) { - $info['aac']['header']['copyright_id'] = getid3_lib::Bin2String(substr($AACheaderBitstream, $bitoffset, 72)); - $bitoffset += 72; - } - $info['aac']['header']['original_copy'] = (bool) (substr($AACheaderBitstream, $bitoffset, 1) == '1'); - $bitoffset += 1; - $info['aac']['header']['home'] = (bool) (substr($AACheaderBitstream, $bitoffset, 1) == '1'); - $bitoffset += 1; - $info['aac']['header']['is_vbr'] = (bool) (substr($AACheaderBitstream, $bitoffset, 1) == '1'); - $bitoffset += 1; - if ($info['aac']['header']['is_vbr']) { - $info['audio']['bitrate_mode'] = 'vbr'; - $info['aac']['header']['bitrate_max'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 23)); - $bitoffset += 23; - } else { - $info['audio']['bitrate_mode'] = 'cbr'; - $info['aac']['header']['bitrate'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 23)); - $bitoffset += 23; - $info['audio']['bitrate'] = $info['aac']['header']['bitrate']; - } - if ($info['audio']['bitrate'] == 0) { - $info['error'][] = 'Corrupt AAC file: bitrate_audio == zero'; - return false; - } - $info['aac']['header']['num_program_configs'] = 1 + getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - - for ($i = 0; $i < $info['aac']['header']['num_program_configs']; $i++) { - // http://www.audiocoding.com/wiki/index.php?page=program_config_element - - // buffer_fullness 20 - - // element_instance_tag 4 - // object_type 2 - // sampling_frequency_index 4 - // num_front_channel_elements 4 - // num_side_channel_elements 4 - // num_back_channel_elements 4 - // num_lfe_channel_elements 2 - // num_assoc_data_elements 3 - // num_valid_cc_elements 4 - // mono_mixdown_present 1 - // mono_mixdown_element_number 4 if mono_mixdown_present == 1 - // stereo_mixdown_present 1 - // stereo_mixdown_element_number 4 if stereo_mixdown_present == 1 - // matrix_mixdown_idx_present 1 - // matrix_mixdown_idx 2 if matrix_mixdown_idx_present == 1 - // pseudo_surround_enable 1 if matrix_mixdown_idx_present == 1 - // for (i = 0; i < num_front_channel_elements; i++) { - // front_element_is_cpe[i] 1 - // front_element_tag_select[i] 4 - // } - // for (i = 0; i < num_side_channel_elements; i++) { - // side_element_is_cpe[i] 1 - // side_element_tag_select[i] 4 - // } - // for (i = 0; i < num_back_channel_elements; i++) { - // back_element_is_cpe[i] 1 - // back_element_tag_select[i] 4 - // } - // for (i = 0; i < num_lfe_channel_elements; i++) { - // lfe_element_tag_select[i] 4 - // } - // for (i = 0; i < num_assoc_data_elements; i++) { - // assoc_data_element_tag_select[i] 4 - // } - // for (i = 0; i < num_valid_cc_elements; i++) { - // cc_element_is_ind_sw[i] 1 - // valid_cc_element_tag_select[i] 4 - // } - // byte_alignment() VAR - // comment_field_bytes 8 - // for (i = 0; i < comment_field_bytes; i++) { - // comment_field_data[i] 8 - // } - - if (!$info['aac']['header']['is_vbr']) { - $info['aac']['program_configs'][$i]['buffer_fullness'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 20)); - $bitoffset += 20; - } - $info['aac']['program_configs'][$i]['element_instance_tag'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - $info['aac']['program_configs'][$i]['object_type'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 2)); - $bitoffset += 2; - $info['aac']['program_configs'][$i]['sampling_frequency_index'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - $info['aac']['program_configs'][$i]['num_front_channel_elements'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - $info['aac']['program_configs'][$i]['num_side_channel_elements'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - $info['aac']['program_configs'][$i]['num_back_channel_elements'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - $info['aac']['program_configs'][$i]['num_lfe_channel_elements'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 2)); - $bitoffset += 2; - $info['aac']['program_configs'][$i]['num_assoc_data_elements'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 3)); - $bitoffset += 3; - $info['aac']['program_configs'][$i]['num_valid_cc_elements'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - $info['aac']['program_configs'][$i]['mono_mixdown_present'] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - if ($info['aac']['program_configs'][$i]['mono_mixdown_present']) { - $info['aac']['program_configs'][$i]['mono_mixdown_element_number'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - $info['aac']['program_configs'][$i]['stereo_mixdown_present'] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - if ($info['aac']['program_configs'][$i]['stereo_mixdown_present']) { - $info['aac']['program_configs'][$i]['stereo_mixdown_element_number'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - $info['aac']['program_configs'][$i]['matrix_mixdown_idx_present'] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - if ($info['aac']['program_configs'][$i]['matrix_mixdown_idx_present']) { - $info['aac']['program_configs'][$i]['matrix_mixdown_idx'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 2)); - $bitoffset += 2; - $info['aac']['program_configs'][$i]['pseudo_surround_enable'] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - } - for ($j = 0; $j < $info['aac']['program_configs'][$i]['num_front_channel_elements']; $j++) { - $info['aac']['program_configs'][$i]['front_element_is_cpe'][$j] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - $info['aac']['program_configs'][$i]['front_element_tag_select'][$j] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - for ($j = 0; $j < $info['aac']['program_configs'][$i]['num_side_channel_elements']; $j++) { - $info['aac']['program_configs'][$i]['side_element_is_cpe'][$j] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - $info['aac']['program_configs'][$i]['side_element_tag_select'][$j] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - for ($j = 0; $j < $info['aac']['program_configs'][$i]['num_back_channel_elements']; $j++) { - $info['aac']['program_configs'][$i]['back_element_is_cpe'][$j] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - $info['aac']['program_configs'][$i]['back_element_tag_select'][$j] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - for ($j = 0; $j < $info['aac']['program_configs'][$i]['num_lfe_channel_elements']; $j++) { - $info['aac']['program_configs'][$i]['lfe_element_tag_select'][$j] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - for ($j = 0; $j < $info['aac']['program_configs'][$i]['num_assoc_data_elements']; $j++) { - $info['aac']['program_configs'][$i]['assoc_data_element_tag_select'][$j] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - for ($j = 0; $j < $info['aac']['program_configs'][$i]['num_valid_cc_elements']; $j++) { - $info['aac']['program_configs'][$i]['cc_element_is_ind_sw'][$j] = (bool) getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 1)); - $bitoffset += 1; - $info['aac']['program_configs'][$i]['valid_cc_element_tag_select'][$j] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 4)); - $bitoffset += 4; - } - - $bitoffset = ceil($bitoffset / 8) * 8; - - $info['aac']['program_configs'][$i]['comment_field_bytes'] = getid3_lib::Bin2Dec(substr($AACheaderBitstream, $bitoffset, 8)); - $bitoffset += 8; - $info['aac']['program_configs'][$i]['comment_field'] = getid3_lib::Bin2String(substr($AACheaderBitstream, $bitoffset, 8 * $info['aac']['program_configs'][$i]['comment_field_bytes'])); - $bitoffset += 8 * $info['aac']['program_configs'][$i]['comment_field_bytes']; - - - $info['aac']['header']['profile'] = self::AACprofileLookup($info['aac']['program_configs'][$i]['object_type'], $info['aac']['header']['mpeg_version']); - $info['aac']['program_configs'][$i]['sampling_frequency'] = self::AACsampleRateLookup($info['aac']['program_configs'][$i]['sampling_frequency_index']); - $info['audio']['sample_rate'] = $info['aac']['program_configs'][$i]['sampling_frequency']; - $info['audio']['channels'] = self::AACchannelCountCalculate($info['aac']['program_configs'][$i]); - if ($info['aac']['program_configs'][$i]['comment_field']) { - $info['aac']['comments'][] = $info['aac']['program_configs'][$i]['comment_field']; - } - } - $info['playtime_seconds'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['audio']['bitrate']; - - $info['audio']['encoder_options'] = $info['aac']['header_type'].' '.$info['aac']['header']['profile']; - - - - return true; - - } else { - - unset($info['fileformat']); - unset($info['aac']); - $info['error'][] = 'AAC-ADIF synch not found at offset '.$info['avdataoffset'].' (expected "ADIF", found "'.substr($AACheader, 0, 4).'" instead)'; - return false; - - } - - } - - - function getAACADTSheaderFilepointer($MaxFramesToScan=1000000, $ReturnExtendedInfo=false) { - $info = &$this->getid3->info; - - // based loosely on code from AACfile by Jurgen Faul - // http://jfaul.de/atl or http://j-faul.virtualave.net/atl/atl.html - - - // http://faac.sourceforge.net/wiki/index.php?page=ADTS // dead link - // http://wiki.multimedia.cx/index.php?title=ADTS - - // * ADTS Fixed Header: these don't change from frame to frame - // syncword 12 always: '111111111111' - // ID 1 0: MPEG-4, 1: MPEG-2 - // MPEG layer 2 If you send AAC in MPEG-TS, set to 0 - // protection_absent 1 0: CRC present; 1: no CRC - // profile 2 0: AAC Main; 1: AAC LC (Low Complexity); 2: AAC SSR (Scalable Sample Rate); 3: AAC LTP (Long Term Prediction) - // sampling_frequency_index 4 15 not allowed - // private_bit 1 usually 0 - // channel_configuration 3 - // original/copy 1 0: original; 1: copy - // home 1 usually 0 - // emphasis 2 only if ID == 0 (ie MPEG-4) // not present in some documentation? - - // * ADTS Variable Header: these can change from frame to frame - // copyright_identification_bit 1 - // copyright_identification_start 1 - // aac_frame_length 13 length of the frame including header (in bytes) - // adts_buffer_fullness 11 0x7FF indicates VBR - // no_raw_data_blocks_in_frame 2 - - // * ADTS Error check - // crc_check 16 only if protection_absent == 0 - - $byteoffset = $info['avdataoffset']; - $framenumber = 0; - - // Init bit pattern array - static $decbin = array(); - - // Populate $bindec - for ($i = 0; $i < 256; $i++) { - $decbin[chr($i)] = str_pad(decbin($i), 8, '0', STR_PAD_LEFT); - } - - // used to calculate bitrate below - $BitrateCache = array(); - - - while (true) { - // breaks out when end-of-file encountered, or invalid data found, - // or MaxFramesToScan frames have been scanned - - if (!getid3_lib::intValueSupported($byteoffset)) { - $info['warning'][] = 'Unable to parse AAC file beyond '.ftell($this->getid3->fp).' (PHP does not support file operations beyond '.round(PHP_INT_MAX / 1073741824).'GB)'; - return false; - } - fseek($this->getid3->fp, $byteoffset, SEEK_SET); - - // First get substring - $substring = fread($this->getid3->fp, 9); // header is 7 bytes (or 9 if CRC is present) - $substringlength = strlen($substring); - if ($substringlength != 9) { - $info['error'][] = 'Failed to read 7 bytes at offset '.(ftell($this->getid3->fp) - $substringlength).' (only read '.$substringlength.' bytes)'; - return false; - } - // this would be easier with 64-bit math, but split it up to allow for 32-bit: - $header1 = getid3_lib::BigEndian2Int(substr($substring, 0, 2)); - $header2 = getid3_lib::BigEndian2Int(substr($substring, 2, 4)); - $header3 = getid3_lib::BigEndian2Int(substr($substring, 6, 1)); - - $info['aac']['header']['raw']['syncword'] = ($header1 & 0xFFF0) >> 4; - if ($info['aac']['header']['raw']['syncword'] != 0x0FFF) { - $info['error'][] = 'Synch pattern (0x0FFF) not found at offset '.(ftell($this->getid3->fp) - $substringlength).' (found 0x0'.strtoupper(dechex($info['aac']['header']['raw']['syncword'])).' instead)'; - //if ($info['fileformat'] == 'aac') { - // return true; - //} - unset($info['aac']); - return false; - } - - // Gather info for first frame only - this takes time to do 1000 times! - if ($framenumber == 0) { - $info['aac']['header_type'] = 'ADTS'; - $info['fileformat'] = 'aac'; - $info['audio']['dataformat'] = 'aac'; - - $info['aac']['header']['raw']['mpeg_version'] = ($header1 & 0x0008) >> 3; - $info['aac']['header']['raw']['mpeg_layer'] = ($header1 & 0x0006) >> 1; - $info['aac']['header']['raw']['protection_absent'] = ($header1 & 0x0001) >> 0; - - $info['aac']['header']['raw']['profile_code'] = ($header2 & 0xC0000000) >> 30; - $info['aac']['header']['raw']['sample_rate_code'] = ($header2 & 0x3C000000) >> 26; - $info['aac']['header']['raw']['private_stream'] = ($header2 & 0x02000000) >> 25; - $info['aac']['header']['raw']['channels_code'] = ($header2 & 0x01C00000) >> 22; - $info['aac']['header']['raw']['original'] = ($header2 & 0x00200000) >> 21; - $info['aac']['header']['raw']['home'] = ($header2 & 0x00100000) >> 20; - $info['aac']['header']['raw']['copyright_stream'] = ($header2 & 0x00080000) >> 19; - $info['aac']['header']['raw']['copyright_start'] = ($header2 & 0x00040000) >> 18; - $info['aac']['header']['raw']['frame_length'] = ($header2 & 0x0003FFE0) >> 5; - - $info['aac']['header']['mpeg_version'] = ($info['aac']['header']['raw']['mpeg_version'] ? 2 : 4); - $info['aac']['header']['crc_present'] = ($info['aac']['header']['raw']['protection_absent'] ? false: true); - $info['aac']['header']['profile'] = self::AACprofileLookup($info['aac']['header']['raw']['profile_code'], $info['aac']['header']['mpeg_version']); - $info['aac']['header']['sample_frequency'] = self::AACsampleRateLookup($info['aac']['header']['raw']['sample_rate_code']); - $info['aac']['header']['private'] = (bool) $info['aac']['header']['raw']['private_stream']; - $info['aac']['header']['original'] = (bool) $info['aac']['header']['raw']['original']; - $info['aac']['header']['home'] = (bool) $info['aac']['header']['raw']['home']; - $info['aac']['header']['channels'] = (($info['aac']['header']['raw']['channels_code'] == 7) ? 8 : $info['aac']['header']['raw']['channels_code']); - if ($ReturnExtendedInfo) { - $info['aac'][$framenumber]['copyright_id_bit'] = (bool) $info['aac']['header']['raw']['copyright_stream']; - $info['aac'][$framenumber]['copyright_id_start'] = (bool) $info['aac']['header']['raw']['copyright_start']; - } - - if ($info['aac']['header']['raw']['mpeg_layer'] != 0) { - $info['warning'][] = 'Layer error - expected "0", found "'.$info['aac']['header']['raw']['mpeg_layer'].'" instead'; - } - if ($info['aac']['header']['sample_frequency'] == 0) { - $info['error'][] = 'Corrupt AAC file: sample_frequency == zero'; - return false; - } - - $info['audio']['sample_rate'] = $info['aac']['header']['sample_frequency']; - $info['audio']['channels'] = $info['aac']['header']['channels']; - } - - $FrameLength = ($header2 & 0x0003FFE0) >> 5; - - if (!isset($BitrateCache[$FrameLength])) { - $BitrateCache[$FrameLength] = ($info['aac']['header']['sample_frequency'] / 1024) * $FrameLength * 8; - } - getid3_lib::safe_inc($info['aac']['bitrate_distribution'][$BitrateCache[$FrameLength]], 1); - - $info['aac'][$framenumber]['aac_frame_length'] = $FrameLength; - - $info['aac'][$framenumber]['adts_buffer_fullness'] = (($header2 & 0x0000001F) << 6) & (($header3 & 0xFC) >> 2); - if ($info['aac'][$framenumber]['adts_buffer_fullness'] == 0x07FF) { - $info['audio']['bitrate_mode'] = 'vbr'; - } else { - $info['audio']['bitrate_mode'] = 'cbr'; - } - $info['aac'][$framenumber]['num_raw_data_blocks'] = (($header3 & 0x03) >> 0); - - if ($info['aac']['header']['crc_present']) { - //$info['aac'][$framenumber]['crc'] = getid3_lib::BigEndian2Int(substr($substring, 7, 2); - } - - if (!$ReturnExtendedInfo) { - unset($info['aac'][$framenumber]); - } - - /* - $rounded_precision = 5000; - $info['aac']['bitrate_distribution_rounded'] = array(); - foreach ($info['aac']['bitrate_distribution'] as $bitrate => $count) { - $rounded_bitrate = round($bitrate / $rounded_precision) * $rounded_precision; - getid3_lib::safe_inc($info['aac']['bitrate_distribution_rounded'][$rounded_bitrate], $count); - } - ksort($info['aac']['bitrate_distribution_rounded']); - */ - - $byteoffset += $FrameLength; - if ((++$framenumber < $MaxFramesToScan) && (($byteoffset + 10) < $info['avdataend'])) { - - // keep scanning - - } else { - - $info['aac']['frames'] = $framenumber; - $info['playtime_seconds'] = ($info['avdataend'] / $byteoffset) * (($framenumber * 1024) / $info['aac']['header']['sample_frequency']); // (1 / % of file scanned) * (samples / (samples/sec)) = seconds - if ($info['playtime_seconds'] == 0) { - $info['error'][] = 'Corrupt AAC file: playtime_seconds == zero'; - return false; - } - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - ksort($info['aac']['bitrate_distribution']); - - $info['audio']['encoder_options'] = $info['aac']['header_type'].' '.$info['aac']['header']['profile']; - - return true; - - } - } - // should never get here. - } - - public static function AACsampleRateLookup($samplerateid) { - static $AACsampleRateLookup = array(); - if (empty($AACsampleRateLookup)) { - $AACsampleRateLookup[0] = 96000; - $AACsampleRateLookup[1] = 88200; - $AACsampleRateLookup[2] = 64000; - $AACsampleRateLookup[3] = 48000; - $AACsampleRateLookup[4] = 44100; - $AACsampleRateLookup[5] = 32000; - $AACsampleRateLookup[6] = 24000; - $AACsampleRateLookup[7] = 22050; - $AACsampleRateLookup[8] = 16000; - $AACsampleRateLookup[9] = 12000; - $AACsampleRateLookup[10] = 11025; - $AACsampleRateLookup[11] = 8000; - $AACsampleRateLookup[12] = 0; - $AACsampleRateLookup[13] = 0; - $AACsampleRateLookup[14] = 0; - $AACsampleRateLookup[15] = 0; - } - return (isset($AACsampleRateLookup[$samplerateid]) ? $AACsampleRateLookup[$samplerateid] : 'invalid'); - } - - public static function AACprofileLookup($profileid, $mpegversion) { - static $AACprofileLookup = array(); - if (empty($AACprofileLookup)) { - $AACprofileLookup[2][0] = 'Main profile'; - $AACprofileLookup[2][1] = 'Low Complexity profile (LC)'; - $AACprofileLookup[2][2] = 'Scalable Sample Rate profile (SSR)'; - $AACprofileLookup[2][3] = '(reserved)'; - $AACprofileLookup[4][0] = 'AAC_MAIN'; - $AACprofileLookup[4][1] = 'AAC_LC'; - $AACprofileLookup[4][2] = 'AAC_SSR'; - $AACprofileLookup[4][3] = 'AAC_LTP'; - } - return (isset($AACprofileLookup[$mpegversion][$profileid]) ? $AACprofileLookup[$mpegversion][$profileid] : 'invalid'); - } - - public static function AACchannelCountCalculate($program_configs) { - $channels = 0; - for ($i = 0; $i < $program_configs['num_front_channel_elements']; $i++) { - $channels++; - if ($program_configs['front_element_is_cpe'][$i]) { - // each front element is channel pair (CPE = Channel Pair Element) - $channels++; - } - } - for ($i = 0; $i < $program_configs['num_side_channel_elements']; $i++) { - $channels++; - if ($program_configs['side_element_is_cpe'][$i]) { - // each side element is channel pair (CPE = Channel Pair Element) - $channels++; - } - } - for ($i = 0; $i < $program_configs['num_back_channel_elements']; $i++) { - $channels++; - if ($program_configs['back_element_is_cpe'][$i]) { - // each back element is channel pair (CPE = Channel Pair Element) - $channels++; - } - } - for ($i = 0; $i < $program_configs['num_lfe_channel_elements']; $i++) { - $channels++; - } - return $channels; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.ac3.php b/3rdparty/getid3/module.audio.ac3.php deleted file mode 100644 index ffe01746891173b06925378e0c3c42517ff49339..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.ac3.php +++ /dev/null @@ -1,473 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.ac3.php // -// module for analyzing AC-3 (aka Dolby Digital) audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_ac3 extends getid3_handler -{ - private $AC3header = ''; - private $BSIoffset = 0; - - - public function Analyze() { - $info = &$this->getid3->info; - - ///AH - $info['ac3']['raw']['bsi'] = array(); - $thisfile_ac3 = &$info['ac3']; - $thisfile_ac3_raw = &$thisfile_ac3['raw']; - $thisfile_ac3_raw_bsi = &$thisfile_ac3_raw['bsi']; - - - // http://www.atsc.org/standards/a_52a.pdf - - $info['fileformat'] = 'ac3'; - - // An AC-3 serial coded audio bit stream is made up of a sequence of synchronization frames - // Each synchronization frame contains 6 coded audio blocks (AB), each of which represent 256 - // new audio samples per channel. A synchronization information (SI) header at the beginning - // of each frame contains information needed to acquire and maintain synchronization. A - // bit stream information (BSI) header follows SI, and contains parameters describing the coded - // audio service. The coded audio blocks may be followed by an auxiliary data (Aux) field. At the - // end of each frame is an error check field that includes a CRC word for error detection. An - // additional CRC word is located in the SI header, the use of which, by a decoder, is optional. - // - // syncinfo() | bsi() | AB0 | AB1 | AB2 | AB3 | AB4 | AB5 | Aux | CRC - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $this->AC3header['syncinfo'] = fread($this->getid3->fp, 5); - $thisfile_ac3_raw['synchinfo']['synchword'] = substr($this->AC3header['syncinfo'], 0, 2); - - $magic = "\x0B\x77"; - if ($thisfile_ac3_raw['synchinfo']['synchword'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_ac3_raw['synchinfo']['synchword']).'"'; - unset($info['fileformat'], $info['ac3']); - return false; - } - - $info['audio']['dataformat'] = 'ac3'; - $info['audio']['bitrate_mode'] = 'cbr'; - $info['audio']['lossless'] = false; - - // syncinfo() { - // syncword 16 - // crc1 16 - // fscod 2 - // frmsizecod 6 - // } /* end of syncinfo */ - - $thisfile_ac3_raw['synchinfo']['crc1'] = getid3_lib::LittleEndian2Int(substr($this->AC3header['syncinfo'], 2, 2)); - $ac3_synchinfo_fscod_frmsizecod = getid3_lib::LittleEndian2Int(substr($this->AC3header['syncinfo'], 4, 1)); - $thisfile_ac3_raw['synchinfo']['fscod'] = ($ac3_synchinfo_fscod_frmsizecod & 0xC0) >> 6; - $thisfile_ac3_raw['synchinfo']['frmsizecod'] = ($ac3_synchinfo_fscod_frmsizecod & 0x3F); - - $thisfile_ac3['sample_rate'] = $this->AC3sampleRateCodeLookup($thisfile_ac3_raw['synchinfo']['fscod']); - if ($thisfile_ac3_raw['synchinfo']['fscod'] <= 3) { - $info['audio']['sample_rate'] = $thisfile_ac3['sample_rate']; - } - - $thisfile_ac3['frame_length'] = $this->AC3frameSizeLookup($thisfile_ac3_raw['synchinfo']['frmsizecod'], $thisfile_ac3_raw['synchinfo']['fscod']); - $thisfile_ac3['bitrate'] = $this->AC3bitrateLookup($thisfile_ac3_raw['synchinfo']['frmsizecod']); - $info['audio']['bitrate'] = $thisfile_ac3['bitrate']; - - $this->AC3header['bsi'] = getid3_lib::BigEndian2Bin(fread($this->getid3->fp, 15)); - $ac3_bsi_offset = 0; - - $thisfile_ac3_raw_bsi['bsid'] = $this->readHeaderBSI(5); - if ($thisfile_ac3_raw_bsi['bsid'] > 8) { - // Decoders which can decode version 8 will thus be able to decode version numbers less than 8. - // If this standard is extended by the addition of additional elements or features, a value of bsid greater than 8 will be used. - // Decoders built to this version of the standard will not be able to decode versions with bsid greater than 8. - $info['error'][] = 'Bit stream identification is version '.$thisfile_ac3_raw_bsi['bsid'].', but getID3() only understands up to version 8'; - unset($thisfile_ac3); - return false; - } - - $thisfile_ac3_raw_bsi['bsmod'] = $this->readHeaderBSI(3); - $thisfile_ac3_raw_bsi['acmod'] = $this->readHeaderBSI(3); - - $thisfile_ac3['service_type'] = $this->AC3serviceTypeLookup($thisfile_ac3_raw_bsi['bsmod'], $thisfile_ac3_raw_bsi['acmod']); - $ac3_coding_mode = $this->AC3audioCodingModeLookup($thisfile_ac3_raw_bsi['acmod']); - foreach($ac3_coding_mode as $key => $value) { - $thisfile_ac3[$key] = $value; - } - switch ($thisfile_ac3_raw_bsi['acmod']) { - case 0: - case 1: - $info['audio']['channelmode'] = 'mono'; - break; - case 3: - case 4: - $info['audio']['channelmode'] = 'stereo'; - break; - default: - $info['audio']['channelmode'] = 'surround'; - break; - } - $info['audio']['channels'] = $thisfile_ac3['num_channels']; - - if ($thisfile_ac3_raw_bsi['acmod'] & 0x01) { - // If the lsb of acmod is a 1, center channel is in use and cmixlev follows in the bit stream. - $thisfile_ac3_raw_bsi['cmixlev'] = $this->readHeaderBSI(2); - $thisfile_ac3['center_mix_level'] = $this->AC3centerMixLevelLookup($thisfile_ac3_raw_bsi['cmixlev']); - } - - if ($thisfile_ac3_raw_bsi['acmod'] & 0x04) { - // If the msb of acmod is a 1, surround channels are in use and surmixlev follows in the bit stream. - $thisfile_ac3_raw_bsi['surmixlev'] = $this->readHeaderBSI(2); - $thisfile_ac3['surround_mix_level'] = $this->AC3surroundMixLevelLookup($thisfile_ac3_raw_bsi['surmixlev']); - } - - if ($thisfile_ac3_raw_bsi['acmod'] == 0x02) { - // When operating in the two channel mode, this 2-bit code indicates whether or not the program has been encoded in Dolby Surround. - $thisfile_ac3_raw_bsi['dsurmod'] = $this->readHeaderBSI(2); - $thisfile_ac3['dolby_surround_mode'] = $this->AC3dolbySurroundModeLookup($thisfile_ac3_raw_bsi['dsurmod']); - } - - $thisfile_ac3_raw_bsi['lfeon'] = (bool) $this->readHeaderBSI(1); - $thisfile_ac3['lfe_enabled'] = $thisfile_ac3_raw_bsi['lfeon']; - if ($thisfile_ac3_raw_bsi['lfeon']) { - //$info['audio']['channels']++; - $info['audio']['channels'] .= '.1'; - } - - $thisfile_ac3['channels_enabled'] = $this->AC3channelsEnabledLookup($thisfile_ac3_raw_bsi['acmod'], $thisfile_ac3_raw_bsi['lfeon']); - - // This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1–31. - // The value of 0 is reserved. The values of 1 to 31 are interpreted as -1 dB to -31 dB with respect to digital 100 percent. - $thisfile_ac3_raw_bsi['dialnorm'] = $this->readHeaderBSI(5); - $thisfile_ac3['dialogue_normalization'] = '-'.$thisfile_ac3_raw_bsi['dialnorm'].'dB'; - - $thisfile_ac3_raw_bsi['compre_flag'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['compre_flag']) { - $thisfile_ac3_raw_bsi['compr'] = $this->readHeaderBSI(8); - $thisfile_ac3['heavy_compression'] = $this->AC3heavyCompression($thisfile_ac3_raw_bsi['compr']); - } - - $thisfile_ac3_raw_bsi['langcode_flag'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['langcode_flag']) { - $thisfile_ac3_raw_bsi['langcod'] = $this->readHeaderBSI(8); - } - - $thisfile_ac3_raw_bsi['audprodie'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['audprodie']) { - $thisfile_ac3_raw_bsi['mixlevel'] = $this->readHeaderBSI(5); - $thisfile_ac3_raw_bsi['roomtyp'] = $this->readHeaderBSI(2); - - $thisfile_ac3['mixing_level'] = (80 + $thisfile_ac3_raw_bsi['mixlevel']).'dB'; - $thisfile_ac3['room_type'] = $this->AC3roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp']); - } - - if ($thisfile_ac3_raw_bsi['acmod'] == 0x00) { - // If acmod is 0, then two completely independent program channels (dual mono) - // are encoded into the bit stream, and are referenced as Ch1, Ch2. In this case, - // a number of additional items are present in BSI or audblk to fully describe Ch2. - - // This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1–31. - // The value of 0 is reserved. The values of 1 to 31 are interpreted as -1 dB to -31 dB with respect to digital 100 percent. - $thisfile_ac3_raw_bsi['dialnorm2'] = $this->readHeaderBSI(5); - $thisfile_ac3['dialogue_normalization2'] = '-'.$thisfile_ac3_raw_bsi['dialnorm2'].'dB'; - - $thisfile_ac3_raw_bsi['compre_flag2'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['compre_flag2']) { - $thisfile_ac3_raw_bsi['compr2'] = $this->readHeaderBSI(8); - $thisfile_ac3['heavy_compression2'] = $this->AC3heavyCompression($thisfile_ac3_raw_bsi['compr2']); - } - - $thisfile_ac3_raw_bsi['langcode_flag2'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['langcode_flag2']) { - $thisfile_ac3_raw_bsi['langcod2'] = $this->readHeaderBSI(8); - } - - $thisfile_ac3_raw_bsi['audprodie2'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['audprodie2']) { - $thisfile_ac3_raw_bsi['mixlevel2'] = $this->readHeaderBSI(5); - $thisfile_ac3_raw_bsi['roomtyp2'] = $this->readHeaderBSI(2); - - $thisfile_ac3['mixing_level2'] = (80 + $thisfile_ac3_raw_bsi['mixlevel2']).'dB'; - $thisfile_ac3['room_type2'] = $this->AC3roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp2']); - } - - } - - $thisfile_ac3_raw_bsi['copyright'] = (bool) $this->readHeaderBSI(1); - - $thisfile_ac3_raw_bsi['original'] = (bool) $this->readHeaderBSI(1); - - $thisfile_ac3_raw_bsi['timecode1_flag'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['timecode1_flag']) { - $thisfile_ac3_raw_bsi['timecode1'] = $this->readHeaderBSI(14); - } - - $thisfile_ac3_raw_bsi['timecode2_flag'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['timecode2_flag']) { - $thisfile_ac3_raw_bsi['timecode2'] = $this->readHeaderBSI(14); - } - - $thisfile_ac3_raw_bsi['addbsi_flag'] = (bool) $this->readHeaderBSI(1); - if ($thisfile_ac3_raw_bsi['addbsi_flag']) { - $thisfile_ac3_raw_bsi['addbsi_length'] = $this->readHeaderBSI(6); - - $this->AC3header['bsi'] .= getid3_lib::BigEndian2Bin(fread($this->getid3->fp, $thisfile_ac3_raw_bsi['addbsi_length'])); - - $thisfile_ac3_raw_bsi['addbsi_data'] = substr($this->AC3header['bsi'], $this->BSIoffset, $thisfile_ac3_raw_bsi['addbsi_length'] * 8); - $this->BSIoffset += $thisfile_ac3_raw_bsi['addbsi_length'] * 8; - } - - return true; - } - - private function readHeaderBSI($length) { - $data = substr($this->AC3header['bsi'], $this->BSIoffset, $length); - $this->BSIoffset += $length; - - return bindec($data); - } - - public static function AC3sampleRateCodeLookup($fscod) { - static $AC3sampleRateCodeLookup = array( - 0 => 48000, - 1 => 44100, - 2 => 32000, - 3 => 'reserved' // If the reserved code is indicated, the decoder should not attempt to decode audio and should mute. - ); - return (isset($AC3sampleRateCodeLookup[$fscod]) ? $AC3sampleRateCodeLookup[$fscod] : false); - } - - public static function AC3serviceTypeLookup($bsmod, $acmod) { - static $AC3serviceTypeLookup = array(); - if (empty($AC3serviceTypeLookup)) { - for ($i = 0; $i <= 7; $i++) { - $AC3serviceTypeLookup[0][$i] = 'main audio service: complete main (CM)'; - $AC3serviceTypeLookup[1][$i] = 'main audio service: music and effects (ME)'; - $AC3serviceTypeLookup[2][$i] = 'associated service: visually impaired (VI)'; - $AC3serviceTypeLookup[3][$i] = 'associated service: hearing impaired (HI)'; - $AC3serviceTypeLookup[4][$i] = 'associated service: dialogue (D)'; - $AC3serviceTypeLookup[5][$i] = 'associated service: commentary (C)'; - $AC3serviceTypeLookup[6][$i] = 'associated service: emergency (E)'; - } - - $AC3serviceTypeLookup[7][1] = 'associated service: voice over (VO)'; - for ($i = 2; $i <= 7; $i++) { - $AC3serviceTypeLookup[7][$i] = 'main audio service: karaoke'; - } - } - return (isset($AC3serviceTypeLookup[$bsmod][$acmod]) ? $AC3serviceTypeLookup[$bsmod][$acmod] : false); - } - - public static function AC3audioCodingModeLookup($acmod) { - static $AC3audioCodingModeLookup = array(); - if (empty($AC3audioCodingModeLookup)) { - // array(channel configuration, # channels (not incl LFE), channel order) - $AC3audioCodingModeLookup = array ( - 0 => array('channel_config'=>'1+1', 'num_channels'=>2, 'channel_order'=>'Ch1,Ch2'), - 1 => array('channel_config'=>'1/0', 'num_channels'=>1, 'channel_order'=>'C'), - 2 => array('channel_config'=>'2/0', 'num_channels'=>2, 'channel_order'=>'L,R'), - 3 => array('channel_config'=>'3/0', 'num_channels'=>3, 'channel_order'=>'L,C,R'), - 4 => array('channel_config'=>'2/1', 'num_channels'=>3, 'channel_order'=>'L,R,S'), - 5 => array('channel_config'=>'3/1', 'num_channels'=>4, 'channel_order'=>'L,C,R,S'), - 6 => array('channel_config'=>'2/2', 'num_channels'=>4, 'channel_order'=>'L,R,SL,SR'), - 7 => array('channel_config'=>'3/2', 'num_channels'=>5, 'channel_order'=>'L,C,R,SL,SR') - ); - } - return (isset($AC3audioCodingModeLookup[$acmod]) ? $AC3audioCodingModeLookup[$acmod] : false); - } - - public static function AC3centerMixLevelLookup($cmixlev) { - static $AC3centerMixLevelLookup; - if (empty($AC3centerMixLevelLookup)) { - $AC3centerMixLevelLookup = array( - 0 => pow(2, -3.0 / 6), // 0.707 (–3.0 dB) - 1 => pow(2, -4.5 / 6), // 0.595 (–4.5 dB) - 2 => pow(2, -6.0 / 6), // 0.500 (–6.0 dB) - 3 => 'reserved' - ); - } - return (isset($AC3centerMixLevelLookup[$cmixlev]) ? $AC3centerMixLevelLookup[$cmixlev] : false); - } - - public static function AC3surroundMixLevelLookup($surmixlev) { - static $AC3surroundMixLevelLookup; - if (empty($AC3surroundMixLevelLookup)) { - $AC3surroundMixLevelLookup = array( - 0 => pow(2, -3.0 / 6), - 1 => pow(2, -6.0 / 6), - 2 => 0, - 3 => 'reserved' - ); - } - return (isset($AC3surroundMixLevelLookup[$surmixlev]) ? $AC3surroundMixLevelLookup[$surmixlev] : false); - } - - public static function AC3dolbySurroundModeLookup($dsurmod) { - static $AC3dolbySurroundModeLookup = array( - 0 => 'not indicated', - 1 => 'Not Dolby Surround encoded', - 2 => 'Dolby Surround encoded', - 3 => 'reserved' - ); - return (isset($AC3dolbySurroundModeLookup[$dsurmod]) ? $AC3dolbySurroundModeLookup[$dsurmod] : false); - } - - public static function AC3channelsEnabledLookup($acmod, $lfeon) { - $AC3channelsEnabledLookup = array( - 'ch1'=>(bool) ($acmod == 0), - 'ch2'=>(bool) ($acmod == 0), - 'left'=>(bool) ($acmod > 1), - 'right'=>(bool) ($acmod > 1), - 'center'=>(bool) ($acmod & 0x01), - 'surround_mono'=>false, - 'surround_left'=>false, - 'surround_right'=>false, - 'lfe'=>$lfeon); - switch ($acmod) { - case 4: - case 5: - $AC3channelsEnabledLookup['surround_mono'] = true; - break; - case 6: - case 7: - $AC3channelsEnabledLookup['surround_left'] = true; - $AC3channelsEnabledLookup['surround_right'] = true; - break; - } - return $AC3channelsEnabledLookup; - } - - public static function AC3heavyCompression($compre) { - // The first four bits indicate gain changes in 6.02dB increments which can be - // implemented with an arithmetic shift operation. The following four bits - // indicate linear gain changes, and require a 5-bit multiply. - // We will represent the two 4-bit fields of compr as follows: - // X0 X1 X2 X3 . Y4 Y5 Y6 Y7 - // The meaning of the X values is most simply described by considering X to represent a 4-bit - // signed integer with values from –8 to +7. The gain indicated by X is then (X + 1) * 6.02 dB. The - // following table shows this in detail. - - // Meaning of 4 msb of compr - // 7 +48.16 dB - // 6 +42.14 dB - // 5 +36.12 dB - // 4 +30.10 dB - // 3 +24.08 dB - // 2 +18.06 dB - // 1 +12.04 dB - // 0 +6.02 dB - // -1 0 dB - // -2 –6.02 dB - // -3 –12.04 dB - // -4 –18.06 dB - // -5 –24.08 dB - // -6 –30.10 dB - // -7 –36.12 dB - // -8 –42.14 dB - - $fourbit = str_pad(decbin(($compre & 0xF0) >> 4), 4, '0', STR_PAD_LEFT); - if ($fourbit{0} == '1') { - $log_gain = -8 + bindec(substr($fourbit, 1)); - } else { - $log_gain = bindec(substr($fourbit, 1)); - } - $log_gain = ($log_gain + 1) * getid3_lib::RGADamplitude2dB(2); - - // The value of Y is a linear representation of a gain change of up to –6 dB. Y is considered to - // be an unsigned fractional integer, with a leading value of 1, or: 0.1 Y4 Y5 Y6 Y7 (base 2). Y can - // represent values between 0.111112 (or 31/32) and 0.100002 (or 1/2). Thus, Y can represent gain - // changes from –0.28 dB to –6.02 dB. - - $lin_gain = (16 + ($compre & 0x0F)) / 32; - - // The combination of X and Y values allows compr to indicate gain changes from - // 48.16 – 0.28 = +47.89 dB, to - // –42.14 – 6.02 = –48.16 dB. - - return $log_gain - $lin_gain; - } - - public static function AC3roomTypeLookup($roomtyp) { - static $AC3roomTypeLookup = array( - 0 => 'not indicated', - 1 => 'large room, X curve monitor', - 2 => 'small room, flat monitor', - 3 => 'reserved' - ); - return (isset($AC3roomTypeLookup[$roomtyp]) ? $AC3roomTypeLookup[$roomtyp] : false); - } - - public static function AC3frameSizeLookup($frmsizecod, $fscod) { - $padding = (bool) ($frmsizecod % 2); - $framesizeid = floor($frmsizecod / 2); - - static $AC3frameSizeLookup = array(); - if (empty($AC3frameSizeLookup)) { - $AC3frameSizeLookup = array ( - 0 => array(128, 138, 192), - 1 => array(40, 160, 174, 240), - 2 => array(48, 192, 208, 288), - 3 => array(56, 224, 242, 336), - 4 => array(64, 256, 278, 384), - 5 => array(80, 320, 348, 480), - 6 => array(96, 384, 416, 576), - 7 => array(112, 448, 486, 672), - 8 => array(128, 512, 556, 768), - 9 => array(160, 640, 696, 960), - 10 => array(192, 768, 834, 1152), - 11 => array(224, 896, 974, 1344), - 12 => array(256, 1024, 1114, 1536), - 13 => array(320, 1280, 1392, 1920), - 14 => array(384, 1536, 1670, 2304), - 15 => array(448, 1792, 1950, 2688), - 16 => array(512, 2048, 2228, 3072), - 17 => array(576, 2304, 2506, 3456), - 18 => array(640, 2560, 2786, 3840) - ); - } - if (($fscod == 1) && $padding) { - // frame lengths are padded by 1 word (16 bits) at 44100 - $AC3frameSizeLookup[$frmsizecod] += 2; - } - return (isset($AC3frameSizeLookup[$framesizeid][$fscod]) ? $AC3frameSizeLookup[$framesizeid][$fscod] : false); - } - - public static function AC3bitrateLookup($frmsizecod) { - $framesizeid = floor($frmsizecod / 2); - - static $AC3bitrateLookup = array( - 0 => 32000, - 1 => 40000, - 2 => 48000, - 3 => 56000, - 4 => 64000, - 5 => 80000, - 6 => 96000, - 7 => 112000, - 8 => 128000, - 9 => 160000, - 10 => 192000, - 11 => 224000, - 12 => 256000, - 13 => 320000, - 14 => 384000, - 15 => 448000, - 16 => 512000, - 17 => 576000, - 18 => 640000 - ); - return (isset($AC3bitrateLookup[$framesizeid]) ? $AC3bitrateLookup[$framesizeid] : false); - } - - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.au.php b/3rdparty/getid3/module.audio.au.php deleted file mode 100644 index a1094dbcda666e1074a7058a3ce54c87ff7e586a..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.au.php +++ /dev/null @@ -1,165 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.au.php // -// module for analyzing AU files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_au extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $AUheader = fread($this->getid3->fp, 8); - - $magic = '.snd'; - if (substr($AUheader, 0, 4) != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" (".snd") at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AUheader, 0, 4)).'"'; - return false; - } - - // shortcut - $info['au'] = array(); - $thisfile_au = &$info['au']; - - $info['fileformat'] = 'au'; - $info['audio']['dataformat'] = 'au'; - $info['audio']['bitrate_mode'] = 'cbr'; - $thisfile_au['encoding'] = 'ISO-8859-1'; - - $thisfile_au['header_length'] = getid3_lib::BigEndian2Int(substr($AUheader, 4, 4)); - $AUheader .= fread($this->getid3->fp, $thisfile_au['header_length'] - 8); - $info['avdataoffset'] += $thisfile_au['header_length']; - - $thisfile_au['data_size'] = getid3_lib::BigEndian2Int(substr($AUheader, 8, 4)); - $thisfile_au['data_format_id'] = getid3_lib::BigEndian2Int(substr($AUheader, 12, 4)); - $thisfile_au['sample_rate'] = getid3_lib::BigEndian2Int(substr($AUheader, 16, 4)); - $thisfile_au['channels'] = getid3_lib::BigEndian2Int(substr($AUheader, 20, 4)); - $thisfile_au['comments']['comment'][] = trim(substr($AUheader, 24)); - - $thisfile_au['data_format'] = $this->AUdataFormatNameLookup($thisfile_au['data_format_id']); - $thisfile_au['used_bits_per_sample'] = $this->AUdataFormatUsedBitsPerSampleLookup($thisfile_au['data_format_id']); - if ($thisfile_au['bits_per_sample'] = $this->AUdataFormatBitsPerSampleLookup($thisfile_au['data_format_id'])) { - $info['audio']['bits_per_sample'] = $thisfile_au['bits_per_sample']; - } else { - unset($thisfile_au['bits_per_sample']); - } - - $info['audio']['sample_rate'] = $thisfile_au['sample_rate']; - $info['audio']['channels'] = $thisfile_au['channels']; - - if (($info['avdataoffset'] + $thisfile_au['data_size']) > $info['avdataend']) { - $info['warning'][] = 'Possible truncated file - expecting "'.$thisfile_au['data_size'].'" bytes of audio data, only found '.($info['avdataend'] - $info['avdataoffset']).' bytes"'; - } - - $info['playtime_seconds'] = $thisfile_au['data_size'] / ($thisfile_au['sample_rate'] * $thisfile_au['channels'] * ($thisfile_au['used_bits_per_sample'] / 8)); - $info['audio']['bitrate'] = ($thisfile_au['data_size'] * 8) / $info['playtime_seconds']; - - return true; - } - - function AUdataFormatNameLookup($id) { - static $AUdataFormatNameLookup = array( - 0 => 'unspecified format', - 1 => '8-bit mu-law', - 2 => '8-bit linear', - 3 => '16-bit linear', - 4 => '24-bit linear', - 5 => '32-bit linear', - 6 => 'floating-point', - 7 => 'double-precision float', - 8 => 'fragmented sampled data', - 9 => 'SUN_FORMAT_NESTED', - 10 => 'DSP program', - 11 => '8-bit fixed-point', - 12 => '16-bit fixed-point', - 13 => '24-bit fixed-point', - 14 => '32-bit fixed-point', - - 16 => 'non-audio display data', - 17 => 'SND_FORMAT_MULAW_SQUELCH', - 18 => '16-bit linear with emphasis', - 19 => '16-bit linear with compression', - 20 => '16-bit linear with emphasis + compression', - 21 => 'Music Kit DSP commands', - 22 => 'SND_FORMAT_DSP_COMMANDS_SAMPLES', - 23 => 'CCITT g.721 4-bit ADPCM', - 24 => 'CCITT g.722 ADPCM', - 25 => 'CCITT g.723 3-bit ADPCM', - 26 => 'CCITT g.723 5-bit ADPCM', - 27 => 'A-Law 8-bit' - ); - return (isset($AUdataFormatNameLookup[$id]) ? $AUdataFormatNameLookup[$id] : false); - } - - function AUdataFormatBitsPerSampleLookup($id) { - static $AUdataFormatBitsPerSampleLookup = array( - 1 => 8, - 2 => 8, - 3 => 16, - 4 => 24, - 5 => 32, - 6 => 32, - 7 => 64, - - 11 => 8, - 12 => 16, - 13 => 24, - 14 => 32, - - 18 => 16, - 19 => 16, - 20 => 16, - - 23 => 16, - - 25 => 16, - 26 => 16, - 27 => 8 - ); - return (isset($AUdataFormatBitsPerSampleLookup[$id]) ? $AUdataFormatBitsPerSampleLookup[$id] : false); - } - - function AUdataFormatUsedBitsPerSampleLookup($id) { - static $AUdataFormatUsedBitsPerSampleLookup = array( - 1 => 8, - 2 => 8, - 3 => 16, - 4 => 24, - 5 => 32, - 6 => 32, - 7 => 64, - - 11 => 8, - 12 => 16, - 13 => 24, - 14 => 32, - - 18 => 16, - 19 => 16, - 20 => 16, - - 23 => 4, - - 25 => 3, - 26 => 5, - 27 => 8, - ); - return (isset($AUdataFormatUsedBitsPerSampleLookup[$id]) ? $AUdataFormatUsedBitsPerSampleLookup[$id] : false); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.avr.php b/3rdparty/getid3/module.audio.avr.php deleted file mode 100644 index 9c6d6650782b4318ff142bc01fa0876e1910bc95..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.avr.php +++ /dev/null @@ -1,127 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.avr.php // -// module for analyzing AVR Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_avr extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - // http://cui.unige.ch/OSG/info/AudioFormats/ap11.html - // http://www.btinternet.com/~AnthonyJ/Atari/programming/avr_format.html - // offset type length name comments - // --------------------------------------------------------------------- - // 0 char 4 ID format ID == "2BIT" - // 4 char 8 name sample name (unused space filled with 0) - // 12 short 1 mono/stereo 0=mono, -1 (0xFFFF)=stereo - // With stereo, samples are alternated, - // the first voice is the left : - // (LRLRLRLRLRLRLRLRLR...) - // 14 short 1 resolution 8, 12 or 16 (bits) - // 16 short 1 signed or not 0=unsigned, -1 (0xFFFF)=signed - // 18 short 1 loop or not 0=no loop, -1 (0xFFFF)=loop on - // 20 short 1 MIDI note 0xFFnn, where 0 <= nn <= 127 - // 0xFFFF means "no MIDI note defined" - // 22 byte 1 Replay speed Frequence in the Replay software - // 0=5.485 Khz, 1=8.084 Khz, 2=10.971 Khz, - // 3=16.168 Khz, 4=21.942 Khz, 5=32.336 Khz - // 6=43.885 Khz, 7=47.261 Khz - // -1 (0xFF)=no defined Frequence - // 23 byte 3 sample rate in Hertz - // 26 long 1 size in bytes (2 * bytes in stereo) - // 30 long 1 loop begin 0 for no loop - // 34 long 1 loop size equal to 'size' for no loop - // 38 short 2 Reserved, MIDI keyboard split */ - // 40 short 2 Reserved, sample compression */ - // 42 short 2 Reserved */ - // 44 char 20; Additional filename space, used if (name[7] != 0) - // 64 byte 64 user data - // 128 bytes ? sample data (12 bits samples are coded on 16 bits: - // 0000 xxxx xxxx xxxx) - // --------------------------------------------------------------------- - - // Note that all values are in motorola (big-endian) format, and that long is - // assumed to be 4 bytes, and short 2 bytes. - // When reading the samples, you should handle both signed and unsigned data, - // and be prepared to convert 16->8 bit, or mono->stereo if needed. To convert - // 8-bit data between signed/unsigned just add 127 to the sample values. - // Simularly for 16-bit data you should add 32769 - - $info['fileformat'] = 'avr'; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $AVRheader = fread($this->getid3->fp, 128); - - $info['avr']['raw']['magic'] = substr($AVRheader, 0, 4); - $magic = '2BIT'; - if ($info['avr']['raw']['magic'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['avr']['raw']['magic']).'"'; - unset($info['fileformat']); - unset($info['avr']); - return false; - } - $info['avdataoffset'] += 128; - - $info['avr']['sample_name'] = rtrim(substr($AVRheader, 4, 8)); - $info['avr']['raw']['mono'] = getid3_lib::BigEndian2Int(substr($AVRheader, 12, 2)); - $info['avr']['bits_per_sample'] = getid3_lib::BigEndian2Int(substr($AVRheader, 14, 2)); - $info['avr']['raw']['signed'] = getid3_lib::BigEndian2Int(substr($AVRheader, 16, 2)); - $info['avr']['raw']['loop'] = getid3_lib::BigEndian2Int(substr($AVRheader, 18, 2)); - $info['avr']['raw']['midi'] = getid3_lib::BigEndian2Int(substr($AVRheader, 20, 2)); - $info['avr']['raw']['replay_freq'] = getid3_lib::BigEndian2Int(substr($AVRheader, 22, 1)); - $info['avr']['sample_rate'] = getid3_lib::BigEndian2Int(substr($AVRheader, 23, 3)); - $info['avr']['sample_length'] = getid3_lib::BigEndian2Int(substr($AVRheader, 26, 4)); - $info['avr']['loop_start'] = getid3_lib::BigEndian2Int(substr($AVRheader, 30, 4)); - $info['avr']['loop_end'] = getid3_lib::BigEndian2Int(substr($AVRheader, 34, 4)); - $info['avr']['midi_split'] = getid3_lib::BigEndian2Int(substr($AVRheader, 38, 2)); - $info['avr']['sample_compression'] = getid3_lib::BigEndian2Int(substr($AVRheader, 40, 2)); - $info['avr']['reserved'] = getid3_lib::BigEndian2Int(substr($AVRheader, 42, 2)); - $info['avr']['sample_name_extra'] = rtrim(substr($AVRheader, 44, 20)); - $info['avr']['comment'] = rtrim(substr($AVRheader, 64, 64)); - - $info['avr']['flags']['stereo'] = (($info['avr']['raw']['mono'] == 0) ? false : true); - $info['avr']['flags']['signed'] = (($info['avr']['raw']['signed'] == 0) ? false : true); - $info['avr']['flags']['loop'] = (($info['avr']['raw']['loop'] == 0) ? false : true); - - $info['avr']['midi_notes'] = array(); - if (($info['avr']['raw']['midi'] & 0xFF00) != 0xFF00) { - $info['avr']['midi_notes'][] = ($info['avr']['raw']['midi'] & 0xFF00) >> 8; - } - if (($info['avr']['raw']['midi'] & 0x00FF) != 0x00FF) { - $info['avr']['midi_notes'][] = ($info['avr']['raw']['midi'] & 0x00FF); - } - - if (($info['avdataend'] - $info['avdataoffset']) != ($info['avr']['sample_length'] * (($info['avr']['bits_per_sample'] == 8) ? 1 : 2))) { - $info['warning'][] = 'Probable truncated file: expecting '.($info['avr']['sample_length'] * (($info['avr']['bits_per_sample'] == 8) ? 1 : 2)).' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']); - } - - $info['audio']['dataformat'] = 'avr'; - $info['audio']['lossless'] = true; - $info['audio']['bitrate_mode'] = 'cbr'; - $info['audio']['bits_per_sample'] = $info['avr']['bits_per_sample']; - $info['audio']['sample_rate'] = $info['avr']['sample_rate']; - $info['audio']['channels'] = ($info['avr']['flags']['stereo'] ? 2 : 1); - $info['playtime_seconds'] = ($info['avr']['sample_length'] / $info['audio']['channels']) / $info['avr']['sample_rate']; - $info['audio']['bitrate'] = ($info['avr']['sample_length'] * (($info['avr']['bits_per_sample'] == 8) ? 8 : 16)) / $info['playtime_seconds']; - - - return true; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.bonk.php b/3rdparty/getid3/module.audio.bonk.php deleted file mode 100644 index 9f5187e3c0b0dac40d91ff861b9f88b004442e5e..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.bonk.php +++ /dev/null @@ -1,230 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.la.php // -// module for analyzing BONK audio files // -// dependencies: module.tag.id3v2.php (optional) // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_bonk extends getid3_handler -{ - function Analyze() { - $info = &$this->getid3->info; - - // shortcut - $info['bonk'] = array(); - $thisfile_bonk = &$info['bonk']; - - $thisfile_bonk['dataoffset'] = $info['avdataoffset']; - $thisfile_bonk['dataend'] = $info['avdataend']; - - if (!getid3_lib::intValueSupported($thisfile_bonk['dataend'])) { - - $info['warning'][] = 'Unable to parse BONK file from end (v0.6+ preferred method) because PHP filesystem functions only support up to '.round(PHP_INT_MAX / 1073741824).'GB'; - - } else { - - // scan-from-end method, for v0.6 and higher - fseek($this->getid3->fp, $thisfile_bonk['dataend'] - 8, SEEK_SET); - $PossibleBonkTag = fread($this->getid3->fp, 8); - while ($this->BonkIsValidTagName(substr($PossibleBonkTag, 4, 4), true)) { - $BonkTagSize = getid3_lib::LittleEndian2Int(substr($PossibleBonkTag, 0, 4)); - fseek($this->getid3->fp, 0 - $BonkTagSize, SEEK_CUR); - $BonkTagOffset = ftell($this->getid3->fp); - $TagHeaderTest = fread($this->getid3->fp, 5); - if (($TagHeaderTest{0} != "\x00") || (substr($PossibleBonkTag, 4, 4) != strtolower(substr($PossibleBonkTag, 4, 4)))) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes("\x00".strtoupper(substr($PossibleBonkTag, 4, 4))).'" at offset '.$BonkTagOffset.', found "'.getid3_lib::PrintHexBytes($TagHeaderTest).'"'; - return false; - } - $BonkTagName = substr($TagHeaderTest, 1, 4); - - $thisfile_bonk[$BonkTagName]['size'] = $BonkTagSize; - $thisfile_bonk[$BonkTagName]['offset'] = $BonkTagOffset; - $this->HandleBonkTags($BonkTagName); - $NextTagEndOffset = $BonkTagOffset - 8; - if ($NextTagEndOffset < $thisfile_bonk['dataoffset']) { - if (empty($info['audio']['encoder'])) { - $info['audio']['encoder'] = 'Extended BONK v0.9+'; - } - return true; - } - fseek($this->getid3->fp, $NextTagEndOffset, SEEK_SET); - $PossibleBonkTag = fread($this->getid3->fp, 8); - } - - } - - // seek-from-beginning method for v0.4 and v0.5 - if (empty($thisfile_bonk['BONK'])) { - fseek($this->getid3->fp, $thisfile_bonk['dataoffset'], SEEK_SET); - do { - $TagHeaderTest = fread($this->getid3->fp, 5); - switch ($TagHeaderTest) { - case "\x00".'BONK': - if (empty($info['audio']['encoder'])) { - $info['audio']['encoder'] = 'BONK v0.4'; - } - break; - - case "\x00".'INFO': - $info['audio']['encoder'] = 'Extended BONK v0.5'; - break; - - default: - break 2; - } - $BonkTagName = substr($TagHeaderTest, 1, 4); - $thisfile_bonk[$BonkTagName]['size'] = $thisfile_bonk['dataend'] - $thisfile_bonk['dataoffset']; - $thisfile_bonk[$BonkTagName]['offset'] = $thisfile_bonk['dataoffset']; - $this->HandleBonkTags($BonkTagName); - - } while (true); - } - - // parse META block for v0.6 - v0.8 - if (empty($thisfile_bonk['INFO']) && isset($thisfile_bonk['META']['tags']['info'])) { - fseek($this->getid3->fp, $thisfile_bonk['META']['tags']['info'], SEEK_SET); - $TagHeaderTest = fread($this->getid3->fp, 5); - if ($TagHeaderTest == "\x00".'INFO') { - $info['audio']['encoder'] = 'Extended BONK v0.6 - v0.8'; - - $BonkTagName = substr($TagHeaderTest, 1, 4); - $thisfile_bonk[$BonkTagName]['size'] = $thisfile_bonk['dataend'] - $thisfile_bonk['dataoffset']; - $thisfile_bonk[$BonkTagName]['offset'] = $thisfile_bonk['dataoffset']; - $this->HandleBonkTags($BonkTagName); - } - } - - if (empty($info['audio']['encoder'])) { - $info['audio']['encoder'] = 'Extended BONK v0.9+'; - } - if (empty($thisfile_bonk['BONK'])) { - unset($info['bonk']); - } - return true; - - } - - function HandleBonkTags($BonkTagName) { - $info = &$this->getid3->info; - switch ($BonkTagName) { - case 'BONK': - // shortcut - $thisfile_bonk_BONK = &$info['bonk']['BONK']; - - $BonkData = "\x00".'BONK'.fread($this->getid3->fp, 17); - $thisfile_bonk_BONK['version'] = getid3_lib::LittleEndian2Int(substr($BonkData, 5, 1)); - $thisfile_bonk_BONK['number_samples'] = getid3_lib::LittleEndian2Int(substr($BonkData, 6, 4)); - $thisfile_bonk_BONK['sample_rate'] = getid3_lib::LittleEndian2Int(substr($BonkData, 10, 4)); - - $thisfile_bonk_BONK['channels'] = getid3_lib::LittleEndian2Int(substr($BonkData, 14, 1)); - $thisfile_bonk_BONK['lossless'] = (bool) getid3_lib::LittleEndian2Int(substr($BonkData, 15, 1)); - $thisfile_bonk_BONK['joint_stereo'] = (bool) getid3_lib::LittleEndian2Int(substr($BonkData, 16, 1)); - $thisfile_bonk_BONK['number_taps'] = getid3_lib::LittleEndian2Int(substr($BonkData, 17, 2)); - $thisfile_bonk_BONK['downsampling_ratio'] = getid3_lib::LittleEndian2Int(substr($BonkData, 19, 1)); - $thisfile_bonk_BONK['samples_per_packet'] = getid3_lib::LittleEndian2Int(substr($BonkData, 20, 2)); - - $info['avdataoffset'] = $thisfile_bonk_BONK['offset'] + 5 + 17; - $info['avdataend'] = $thisfile_bonk_BONK['offset'] + $thisfile_bonk_BONK['size']; - - $info['fileformat'] = 'bonk'; - $info['audio']['dataformat'] = 'bonk'; - $info['audio']['bitrate_mode'] = 'vbr'; // assumed - $info['audio']['channels'] = $thisfile_bonk_BONK['channels']; - $info['audio']['sample_rate'] = $thisfile_bonk_BONK['sample_rate']; - $info['audio']['channelmode'] = ($thisfile_bonk_BONK['joint_stereo'] ? 'joint stereo' : 'stereo'); - $info['audio']['lossless'] = $thisfile_bonk_BONK['lossless']; - $info['audio']['codec'] = 'bonk'; - - $info['playtime_seconds'] = $thisfile_bonk_BONK['number_samples'] / ($thisfile_bonk_BONK['sample_rate'] * $thisfile_bonk_BONK['channels']); - if ($info['playtime_seconds'] > 0) { - $info['audio']['bitrate'] = (($info['bonk']['dataend'] - $info['bonk']['dataoffset']) * 8) / $info['playtime_seconds']; - } - break; - - case 'INFO': - // shortcut - $thisfile_bonk_INFO = &$info['bonk']['INFO']; - - $thisfile_bonk_INFO['version'] = getid3_lib::LittleEndian2Int(fread($this->getid3->fp, 1)); - $thisfile_bonk_INFO['entries_count'] = 0; - $NextInfoDataPair = fread($this->getid3->fp, 5); - if (!$this->BonkIsValidTagName(substr($NextInfoDataPair, 1, 4))) { - while (!feof($this->getid3->fp)) { - //$CurrentSeekInfo['offset'] = getid3_lib::LittleEndian2Int(substr($NextInfoDataPair, 0, 4)); - //$CurrentSeekInfo['nextbit'] = getid3_lib::LittleEndian2Int(substr($NextInfoDataPair, 4, 1)); - //$thisfile_bonk_INFO[] = $CurrentSeekInfo; - - $NextInfoDataPair = fread($this->getid3->fp, 5); - if ($this->BonkIsValidTagName(substr($NextInfoDataPair, 1, 4))) { - fseek($this->getid3->fp, -5, SEEK_CUR); - break; - } - $thisfile_bonk_INFO['entries_count']++; - } - } - break; - - case 'META': - $BonkData = "\x00".'META'.fread($this->getid3->fp, $info['bonk']['META']['size'] - 5); - $info['bonk']['META']['version'] = getid3_lib::LittleEndian2Int(substr($BonkData, 5, 1)); - - $MetaTagEntries = floor(((strlen($BonkData) - 8) - 6) / 8); // BonkData - xxxxmeta - ØMETA - $offset = 6; - for ($i = 0; $i < $MetaTagEntries; $i++) { - $MetaEntryTagName = substr($BonkData, $offset, 4); - $offset += 4; - $MetaEntryTagOffset = getid3_lib::LittleEndian2Int(substr($BonkData, $offset, 4)); - $offset += 4; - $info['bonk']['META']['tags'][$MetaEntryTagName] = $MetaEntryTagOffset; - } - break; - - case ' ID3': - $info['audio']['encoder'] = 'Extended BONK v0.9+'; - - // ID3v2 checking is optional - if (class_exists('getid3_id3v2')) { - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_id3v2 = new getid3_id3v2($getid3_temp); - $getid3_id3v2->StartingOffset = $info['bonk'][' ID3']['offset'] + 2; - $info['bonk'][' ID3']['valid'] = $getid3_id3v2->Analyze(); - if ($info['bonk'][' ID3']['valid']) { - $info['id3v2'] = $getid3_temp->info['id3v2']; - } - unset($getid3_temp, $getid3_id3v2); - } - break; - - default: - $info['warning'][] = 'Unexpected Bonk tag "'.$BonkTagName.'" at offset '.$info['bonk'][$BonkTagName]['offset']; - break; - - } - } - - static function BonkIsValidTagName($PossibleBonkTag, $ignorecase=false) { - static $BonkIsValidTagName = array('BONK', 'INFO', ' ID3', 'META'); - foreach ($BonkIsValidTagName as $validtagname) { - if ($validtagname == $PossibleBonkTag) { - return true; - } elseif ($ignorecase && (strtolower($validtagname) == strtolower($PossibleBonkTag))) { - return true; - } - } - return false; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.dss.php b/3rdparty/getid3/module.audio.dss.php deleted file mode 100644 index b7b4367629ae124f7431d716f232528b8a7b2ddd..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.dss.php +++ /dev/null @@ -1,75 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.dss.php // -// module for analyzing Digital Speech Standard (DSS) files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_dss extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $DSSheader = fread($this->getid3->fp, 1256); - - if (!preg_match('#^(\x02|\x03)dss#', $DSSheader)) { - $info['error'][] = 'Expecting "[02-03] 64 73 73" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($DSSheader, 0, 4)).'"'; - return false; - } - - // some structure information taken from http://cpansearch.perl.org/src/RGIBSON/Audio-DSS-0.02/lib/Audio/DSS.pm - - // shortcut - $info['dss'] = array(); - $thisfile_dss = &$info['dss']; - - $info['fileformat'] = 'dss'; - $info['audio']['dataformat'] = 'dss'; - $info['audio']['bitrate_mode'] = 'cbr'; - //$thisfile_dss['encoding'] = 'ISO-8859-1'; - - $thisfile_dss['version'] = ord(substr($DSSheader, 0, 1)); - $thisfile_dss['date_create'] = $this->DSSdateStringToUnixDate(substr($DSSheader, 38, 12)); - $thisfile_dss['date_complete'] = $this->DSSdateStringToUnixDate(substr($DSSheader, 50, 12)); - //$thisfile_dss['length'] = intval(substr($DSSheader, 62, 6)); // I thought time was in seconds, it's actually HHMMSS - $thisfile_dss['length'] = intval((substr($DSSheader, 62, 2) * 3600) + (substr($DSSheader, 64, 2) * 60) + substr($DSSheader, 66, 2)); - $thisfile_dss['priority'] = ord(substr($DSSheader, 793, 1)); - $thisfile_dss['comments'] = trim(substr($DSSheader, 798, 100)); - - - //$info['audio']['bits_per_sample'] = ?; - //$info['audio']['sample_rate'] = ?; - $info['audio']['channels'] = 1; - - $info['playtime_seconds'] = $thisfile_dss['length']; - $info['audio']['bitrate'] = ($info['filesize'] * 8) / $info['playtime_seconds']; - - return true; - } - - function DSSdateStringToUnixDate($datestring) { - $y = substr($datestring, 0, 2); - $m = substr($datestring, 2, 2); - $d = substr($datestring, 4, 2); - $h = substr($datestring, 6, 2); - $i = substr($datestring, 8, 2); - $s = substr($datestring, 10, 2); - $y += (($y < 95) ? 2000 : 1900); - return mktime($h, $i, $s, $m, $d, $y); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.dts.php b/3rdparty/getid3/module.audio.dts.php deleted file mode 100644 index 8102ba8bf53ea272a639dd4e07f3439a99b49587..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.dts.php +++ /dev/null @@ -1,246 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.dts.php // -// module for analyzing DTS Audio files // -// dependencies: NONE // -// // -///////////////////////////////////////////////////////////////// - - -class getid3_dts extends getid3_handler -{ - - public function Analyze() { - $info = &$this->getid3->info; - - // Specs taken from "DTS Coherent Acoustics;Core and Extensions, ETSI TS 102 114 V1.2.1 (2002-12)" - // (http://pda.etsi.org/pda/queryform.asp) - // With thanks to Gambit http://mac.sourceforge.net/atl/ - - $info['fileformat'] = 'dts'; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $DTSheader = fread($this->getid3->fp, 16); - $info['dts']['raw']['magic'] = substr($DTSheader, 0, 4); - - $magic = "\x7F\xFE\x80\x01"; - if ($info['dts']['raw']['magic'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['dts']['raw']['magic']).'"'; - unset($info['fileformat'], $info['dts']); - return false; - } - - $fhBS = getid3_lib::BigEndian2Bin(substr($DTSheader, 4, 12)); - $bsOffset = 0; - $info['dts']['raw']['frame_type'] = $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['raw']['deficit_samples'] = $this->readBinData($fhBS, $bsOffset, 5); - $info['dts']['flags']['crc_present'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['raw']['pcm_sample_blocks'] = $this->readBinData($fhBS, $bsOffset, 7); - $info['dts']['raw']['frame_byte_size'] = $this->readBinData($fhBS, $bsOffset, 14); - $info['dts']['raw']['channel_arrangement'] = $this->readBinData($fhBS, $bsOffset, 6); - $info['dts']['raw']['sample_frequency'] = $this->readBinData($fhBS, $bsOffset, 4); - $info['dts']['raw']['bitrate'] = $this->readBinData($fhBS, $bsOffset, 5); - $info['dts']['flags']['embedded_downmix'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['flags']['dynamicrange'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['flags']['timestamp'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['flags']['auxdata'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['flags']['hdcd'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['raw']['extension_audio'] = $this->readBinData($fhBS, $bsOffset, 3); - $info['dts']['flags']['extended_coding'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['flags']['audio_sync_insertion'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['raw']['lfe_effects'] = $this->readBinData($fhBS, $bsOffset, 2); - $info['dts']['flags']['predictor_history'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - if ($info['dts']['flags']['crc_present']) { - $info['dts']['raw']['crc16'] = $this->readBinData($fhBS, $bsOffset, 16); - } - $info['dts']['flags']['mri_perfect_reconst'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['raw']['encoder_soft_version'] = $this->readBinData($fhBS, $bsOffset, 4); - $info['dts']['raw']['copy_history'] = $this->readBinData($fhBS, $bsOffset, 2); - $info['dts']['raw']['bits_per_sample'] = $this->readBinData($fhBS, $bsOffset, 2); - $info['dts']['flags']['surround_es'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['flags']['front_sum_diff'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['flags']['surround_sum_diff'] = (bool) $this->readBinData($fhBS, $bsOffset, 1); - $info['dts']['raw']['dialog_normalization'] = $this->readBinData($fhBS, $bsOffset, 4); - - - $info['dts']['bitrate'] = self::DTSbitrateLookup($info['dts']['raw']['bitrate']); - $info['dts']['bits_per_sample'] = self::DTSbitPerSampleLookup($info['dts']['raw']['bits_per_sample']); - $info['dts']['sample_rate'] = self::DTSsampleRateLookup($info['dts']['raw']['sample_frequency']); - $info['dts']['dialog_normalization'] = self::DTSdialogNormalization($info['dts']['raw']['dialog_normalization'], $info['dts']['raw']['encoder_soft_version']); - $info['dts']['flags']['lossless'] = (($info['dts']['raw']['bitrate'] == 31) ? true : false); - $info['dts']['bitrate_mode'] = (($info['dts']['raw']['bitrate'] == 30) ? 'vbr' : 'cbr'); - $info['dts']['channels'] = self::DTSnumChannelsLookup($info['dts']['raw']['channel_arrangement']); - $info['dts']['channel_arrangement'] = self::DTSchannelArrangementLookup($info['dts']['raw']['channel_arrangement']); - - $info['audio']['dataformat'] = 'dts'; - $info['audio']['lossless'] = $info['dts']['flags']['lossless']; - $info['audio']['bitrate_mode'] = $info['dts']['bitrate_mode']; - $info['audio']['bits_per_sample'] = $info['dts']['bits_per_sample']; - $info['audio']['sample_rate'] = $info['dts']['sample_rate']; - $info['audio']['channels'] = $info['dts']['channels']; - $info['audio']['bitrate'] = $info['dts']['bitrate']; - if (isset($info['avdataend'])) { - $info['playtime_seconds'] = ($info['avdataend'] - $info['avdataoffset']) / ($info['dts']['bitrate'] / 8); - } - - return true; - } - - private function readBinData($bin, &$offset, $length) { - $data = substr($bin, $offset, $length); - $offset += $length; - return bindec($data); - } - - private static function DTSbitrateLookup($index) { - $DTSbitrateLookup = array( - 0 => 32000, - 1 => 56000, - 2 => 64000, - 3 => 96000, - 4 => 112000, - 5 => 128000, - 6 => 192000, - 7 => 224000, - 8 => 256000, - 9 => 320000, - 10 => 384000, - 11 => 448000, - 12 => 512000, - 13 => 576000, - 14 => 640000, - 15 => 768000, - 16 => 960000, - 17 => 1024000, - 18 => 1152000, - 19 => 1280000, - 20 => 1344000, - 21 => 1408000, - 22 => 1411200, - 23 => 1472000, - 24 => 1536000, - 25 => 1920000, - 26 => 2048000, - 27 => 3072000, - 28 => 3840000, - 29 => 'open', - 30 => 'variable', - 31 => 'lossless' - ); - return (isset($DTSbitrateLookup[$index]) ? $DTSbitrateLookup[$index] : false); - } - - private static function DTSsampleRateLookup($index) { - $DTSsampleRateLookup = array( - 0 => 'invalid', - 1 => 8000, - 2 => 16000, - 3 => 32000, - 4 => 'invalid', - 5 => 'invalid', - 6 => 11025, - 7 => 22050, - 8 => 44100, - 9 => 'invalid', - 10 => 'invalid', - 11 => 12000, - 12 => 24000, - 13 => 48000, - 14 => 'invalid', - 15 => 'invalid' - ); - return (isset($DTSsampleRateLookup[$index]) ? $DTSsampleRateLookup[$index] : false); - } - - private static function DTSbitPerSampleLookup($index) { - $DTSbitPerSampleLookup = array( - 0 => 16, - 1 => 20, - 2 => 24, - 3 => 24, - ); - return (isset($DTSbitPerSampleLookup[$index]) ? $DTSbitPerSampleLookup[$index] : false); - } - - private static function DTSnumChannelsLookup($index) { - switch ($index) { - case 0: - return 1; - break; - case 1: - case 2: - case 3: - case 4: - return 2; - break; - case 5: - case 6: - return 3; - break; - case 7: - case 8: - return 4; - break; - case 9: - return 5; - break; - case 10: - case 11: - case 12: - return 6; - break; - case 13: - return 7; - break; - case 14: - case 15: - return 8; - break; - } - return false; - } - - private static function DTSchannelArrangementLookup($index) { - $DTSchannelArrangementLookup = array( - 0 => 'A', - 1 => 'A + B (dual mono)', - 2 => 'L + R (stereo)', - 3 => '(L+R) + (L-R) (sum-difference)', - 4 => 'LT + RT (left and right total)', - 5 => 'C + L + R', - 6 => 'L + R + S', - 7 => 'C + L + R + S', - 8 => 'L + R + SL + SR', - 9 => 'C + L + R + SL + SR', - 10 => 'CL + CR + L + R + SL + SR', - 11 => 'C + L + R+ LR + RR + OV', - 12 => 'CF + CR + LF + RF + LR + RR', - 13 => 'CL + C + CR + L + R + SL + SR', - 14 => 'CL + CR + L + R + SL1 + SL2 + SR1 + SR2', - 15 => 'CL + C+ CR + L + R + SL + S + SR', - ); - return (isset($DTSchannelArrangementLookup[$index]) ? $DTSchannelArrangementLookup[$index] : 'user-defined'); - } - - private static function DTSdialogNormalization($index, $version) { - switch ($version) { - case 7: - return 0 - $index; - break; - case 6: - return 0 - 16 - $index; - break; - } - return false; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.flac.php b/3rdparty/getid3/module.audio.flac.php deleted file mode 100644 index 98daec0fd9dfc101548bcf5d98c259772102861c..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.flac.php +++ /dev/null @@ -1,480 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.flac.php // -// module for analyzing FLAC and OggFLAC audio files // -// dependencies: module.audio.ogg.php // -// /// -///////////////////////////////////////////////////////////////// - - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ogg.php', __FILE__, true); - -class getid3_flac extends getid3_handler -{ - var $inline_attachments = true; // true: return full data for all attachments; false: return no data for all attachments; integer: return data for attachments <= than this; string: save as file to this directory - - function Analyze() { - $info = &$this->getid3->info; - - // http://flac.sourceforge.net/format.html - - $this->fseek($info['avdataoffset'], SEEK_SET); - $StreamMarker = $this->fread(4); - $magic = 'fLaC'; - if ($StreamMarker != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($StreamMarker).'"'; - return false; - } - $info['fileformat'] = 'flac'; - $info['audio']['dataformat'] = 'flac'; - $info['audio']['bitrate_mode'] = 'vbr'; - $info['audio']['lossless'] = true; - - return $this->FLACparseMETAdata(); - } - - - function FLACparseMETAdata() { - $info = &$this->getid3->info; - do { - $METAdataBlockOffset = $this->ftell(); - $METAdataBlockHeader = $this->fread(4); - $METAdataLastBlockFlag = (bool) (getid3_lib::BigEndian2Int(substr($METAdataBlockHeader, 0, 1)) & 0x80); - $METAdataBlockType = getid3_lib::BigEndian2Int(substr($METAdataBlockHeader, 0, 1)) & 0x7F; - $METAdataBlockLength = getid3_lib::BigEndian2Int(substr($METAdataBlockHeader, 1, 3)); - $METAdataBlockTypeText = getid3_flac::FLACmetaBlockTypeLookup($METAdataBlockType); - - if ($METAdataBlockLength < 0) { - $info['error'][] = 'corrupt or invalid METADATA_BLOCK_HEADER.BLOCK_TYPE ('.$METAdataBlockType.') at offset '.$METAdataBlockOffset; - break; - } - - $info['flac'][$METAdataBlockTypeText]['raw'] = array(); - $ThisFileInfo_flac_METAdataBlockTypeText_raw = &$info['flac'][$METAdataBlockTypeText]['raw']; - - $ThisFileInfo_flac_METAdataBlockTypeText_raw['offset'] = $METAdataBlockOffset; - $ThisFileInfo_flac_METAdataBlockTypeText_raw['last_meta_block'] = $METAdataLastBlockFlag; - $ThisFileInfo_flac_METAdataBlockTypeText_raw['block_type'] = $METAdataBlockType; - $ThisFileInfo_flac_METAdataBlockTypeText_raw['block_type_text'] = $METAdataBlockTypeText; - $ThisFileInfo_flac_METAdataBlockTypeText_raw['block_length'] = $METAdataBlockLength; - if (($METAdataBlockOffset + 4 + $METAdataBlockLength) > $info['avdataend']) { - $info['error'][] = 'METADATA_BLOCK_HEADER.BLOCK_TYPE ('.$METAdataBlockType.') at offset '.$METAdataBlockOffset.' extends beyond end of file'; - break; - } - if ($METAdataBlockLength < 1) { - $info['error'][] = 'METADATA_BLOCK_HEADER.BLOCK_LENGTH ('.$METAdataBlockLength.') at offset '.$METAdataBlockOffset.' is invalid'; - break; - } - $ThisFileInfo_flac_METAdataBlockTypeText_raw['block_data'] = $this->fread($METAdataBlockLength); - $info['avdataoffset'] = $this->ftell(); - - switch ($METAdataBlockTypeText) { - case 'STREAMINFO': // 0x00 - if (!$this->FLACparseSTREAMINFO($ThisFileInfo_flac_METAdataBlockTypeText_raw['block_data'])) { - return false; - } - break; - - case 'PADDING': // 0x01 - // ignore - break; - - case 'APPLICATION': // 0x02 - if (!$this->FLACparseAPPLICATION($ThisFileInfo_flac_METAdataBlockTypeText_raw['block_data'])) { - return false; - } - break; - - case 'SEEKTABLE': // 0x03 - if (!$this->FLACparseSEEKTABLE($ThisFileInfo_flac_METAdataBlockTypeText_raw['block_data'])) { - return false; - } - break; - - case 'VORBIS_COMMENT': // 0x04 - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = $this->ftell() - $METAdataBlockLength; - $getid3_temp->info['audio']['dataformat'] = 'flac'; - $getid3_temp->info['flac'] = $info['flac']; - $getid3_ogg = new getid3_ogg($getid3_temp); - $getid3_ogg->ParseVorbisCommentsFilepointer(); - $maybe_copy_keys = array('vendor', 'comments_raw', 'comments', 'replay_gain'); - foreach ($maybe_copy_keys as $maybe_copy_key) { - if (!empty($getid3_temp->info['ogg'][$maybe_copy_key])) { - $info['ogg'][$maybe_copy_key] = $getid3_temp->info['ogg'][$maybe_copy_key]; - } - } - if (!empty($getid3_temp->info['replay_gain'])) { - $info['replay_gain'] = $getid3_temp->info['replay_gain']; - } - unset($getid3_temp, $getid3_ogg); - break; - - case 'CUESHEET': // 0x05 - if (!getid3_flac::FLACparseCUESHEET($ThisFileInfo_flac_METAdataBlockTypeText_raw['block_data'])) { - return false; - } - break; - - case 'PICTURE': // 0x06 - if (!getid3_flac::FLACparsePICTURE($ThisFileInfo_flac_METAdataBlockTypeText_raw['block_data'])) { - return false; - } - break; - - default: - $info['warning'][] = 'Unhandled METADATA_BLOCK_HEADER.BLOCK_TYPE ('.$METAdataBlockType.') at offset '.$METAdataBlockOffset; - break; - } - - } while ($METAdataLastBlockFlag === false); - - if (isset($info['flac']['PICTURE'])) { - foreach ($info['flac']['PICTURE'] as $key => $valuearray) { - if (!empty($valuearray['image_mime']) && !empty($valuearray['data'])) { - $info['ogg']['comments']['picture'][] = array('image_mime'=>$valuearray['image_mime'], 'data'=>$valuearray['data']); - } - } - } - - if (isset($info['flac']['STREAMINFO'])) { - $info['flac']['compressed_audio_bytes'] = $info['avdataend'] - $info['avdataoffset']; - $info['flac']['uncompressed_audio_bytes'] = $info['flac']['STREAMINFO']['samples_stream'] * $info['flac']['STREAMINFO']['channels'] * ($info['flac']['STREAMINFO']['bits_per_sample'] / 8); - if ($info['flac']['uncompressed_audio_bytes'] == 0) { - $info['error'][] = 'Corrupt FLAC file: uncompressed_audio_bytes == zero'; - return false; - } - $info['flac']['compression_ratio'] = $info['flac']['compressed_audio_bytes'] / $info['flac']['uncompressed_audio_bytes']; - } - - // set md5_data_source - built into flac 0.5+ - if (isset($info['flac']['STREAMINFO']['audio_signature'])) { - - if ($info['flac']['STREAMINFO']['audio_signature'] === str_repeat("\x00", 16)) { - - $info['warning'][] = 'FLAC STREAMINFO.audio_signature is null (known issue with libOggFLAC)'; - - } else { - - $info['md5_data_source'] = ''; - $md5 = $info['flac']['STREAMINFO']['audio_signature']; - for ($i = 0; $i < strlen($md5); $i++) { - $info['md5_data_source'] .= str_pad(dechex(ord($md5{$i})), 2, '00', STR_PAD_LEFT); - } - if (!preg_match('/^[0-9a-f]{32}$/', $info['md5_data_source'])) { - unset($info['md5_data_source']); - } - - } - - } - - $info['audio']['bits_per_sample'] = $info['flac']['STREAMINFO']['bits_per_sample']; - if ($info['audio']['bits_per_sample'] == 8) { - // special case - // must invert sign bit on all data bytes before MD5'ing to match FLAC's calculated value - // MD5sum calculates on unsigned bytes, but FLAC calculated MD5 on 8-bit audio data as signed - $info['warning'][] = 'FLAC calculates MD5 data strangely on 8-bit audio, so the stored md5_data_source value will not match the decoded WAV file'; - } - if (!empty($info['ogg']['vendor'])) { - $info['audio']['encoder'] = $info['ogg']['vendor']; - } - - return true; - } - - static function FLACmetaBlockTypeLookup($blocktype) { - static $FLACmetaBlockTypeLookup = array(); - if (empty($FLACmetaBlockTypeLookup)) { - $FLACmetaBlockTypeLookup[0] = 'STREAMINFO'; - $FLACmetaBlockTypeLookup[1] = 'PADDING'; - $FLACmetaBlockTypeLookup[2] = 'APPLICATION'; - $FLACmetaBlockTypeLookup[3] = 'SEEKTABLE'; - $FLACmetaBlockTypeLookup[4] = 'VORBIS_COMMENT'; - $FLACmetaBlockTypeLookup[5] = 'CUESHEET'; - $FLACmetaBlockTypeLookup[6] = 'PICTURE'; - } - return (isset($FLACmetaBlockTypeLookup[$blocktype]) ? $FLACmetaBlockTypeLookup[$blocktype] : 'reserved'); - } - - static function FLACapplicationIDLookup($applicationid) { - static $FLACapplicationIDLookup = array(); - if (empty($FLACapplicationIDLookup)) { - // http://flac.sourceforge.net/id.html - $FLACapplicationIDLookup[0x46746F6C] = 'flac-tools'; // 'Ftol' - $FLACapplicationIDLookup[0x46746F6C] = 'Sound Font FLAC'; // 'SFFL' - } - return (isset($FLACapplicationIDLookup[$applicationid]) ? $FLACapplicationIDLookup[$applicationid] : 'reserved'); - } - - static function FLACpictureTypeLookup($type_id) { - static $lookup = array ( - 0 => 'Other', - 1 => '32x32 pixels \'file icon\' (PNG only)', - 2 => 'Other file icon', - 3 => 'Cover (front)', - 4 => 'Cover (back)', - 5 => 'Leaflet page', - 6 => 'Media (e.g. label side of CD)', - 7 => 'Lead artist/lead performer/soloist', - 8 => 'Artist/performer', - 9 => 'Conductor', - 10 => 'Band/Orchestra', - 11 => 'Composer', - 12 => 'Lyricist/text writer', - 13 => 'Recording Location', - 14 => 'During recording', - 15 => 'During performance', - 16 => 'Movie/video screen capture', - 17 => 'A bright coloured fish', - 18 => 'Illustration', - 19 => 'Band/artist logotype', - 20 => 'Publisher/Studio logotype', - ); - return (isset($lookup[$type_id]) ? $lookup[$type_id] : 'reserved'); - } - - function FLACparseSTREAMINFO($METAdataBlockData) { - $info = &$this->getid3->info; - - $offset = 0; - $info['flac']['STREAMINFO']['min_block_size'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 2)); - $offset += 2; - $info['flac']['STREAMINFO']['max_block_size'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 2)); - $offset += 2; - $info['flac']['STREAMINFO']['min_frame_size'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 3)); - $offset += 3; - $info['flac']['STREAMINFO']['max_frame_size'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 3)); - $offset += 3; - - $SampleRateChannelsSampleBitsStreamSamples = getid3_lib::BigEndian2Bin(substr($METAdataBlockData, $offset, 8)); - $info['flac']['STREAMINFO']['sample_rate'] = getid3_lib::Bin2Dec(substr($SampleRateChannelsSampleBitsStreamSamples, 0, 20)); - $info['flac']['STREAMINFO']['channels'] = getid3_lib::Bin2Dec(substr($SampleRateChannelsSampleBitsStreamSamples, 20, 3)) + 1; - $info['flac']['STREAMINFO']['bits_per_sample'] = getid3_lib::Bin2Dec(substr($SampleRateChannelsSampleBitsStreamSamples, 23, 5)) + 1; - $info['flac']['STREAMINFO']['samples_stream'] = getid3_lib::Bin2Dec(substr($SampleRateChannelsSampleBitsStreamSamples, 28, 36)); - $offset += 8; - - $info['flac']['STREAMINFO']['audio_signature'] = substr($METAdataBlockData, $offset, 16); - $offset += 16; - - if (!empty($info['flac']['STREAMINFO']['sample_rate'])) { - - $info['audio']['bitrate_mode'] = 'vbr'; - $info['audio']['sample_rate'] = $info['flac']['STREAMINFO']['sample_rate']; - $info['audio']['channels'] = $info['flac']['STREAMINFO']['channels']; - $info['audio']['bits_per_sample'] = $info['flac']['STREAMINFO']['bits_per_sample']; - $info['playtime_seconds'] = $info['flac']['STREAMINFO']['samples_stream'] / $info['flac']['STREAMINFO']['sample_rate']; - if ($info['playtime_seconds'] > 0) { - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - } - - } else { - $info['error'][] = 'Corrupt METAdata block: STREAMINFO'; - return false; - } - unset($info['flac']['STREAMINFO']['raw']); - return true; - } - - - function FLACparseAPPLICATION($METAdataBlockData) { - $info = &$this->getid3->info; - - $offset = 0; - $ApplicationID = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 4)); - $offset += 4; - $info['flac']['APPLICATION'][$ApplicationID]['name'] = getid3_flac::FLACapplicationIDLookup($ApplicationID); - $info['flac']['APPLICATION'][$ApplicationID]['data'] = substr($METAdataBlockData, $offset); - $offset = $METAdataBlockLength; - - unset($info['flac']['APPLICATION']['raw']); - return true; - } - - - function FLACparseSEEKTABLE($METAdataBlockData) { - $info = &$this->getid3->info; - - $offset = 0; - $METAdataBlockLength = strlen($METAdataBlockData); - $placeholderpattern = str_repeat("\xFF", 8); - while ($offset < $METAdataBlockLength) { - $SampleNumberString = substr($METAdataBlockData, $offset, 8); - $offset += 8; - if ($SampleNumberString == $placeholderpattern) { - - // placeholder point - getid3_lib::safe_inc($info['flac']['SEEKTABLE']['placeholders'], 1); - $offset += 10; - - } else { - - $SampleNumber = getid3_lib::BigEndian2Int($SampleNumberString); - $info['flac']['SEEKTABLE'][$SampleNumber]['offset'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 8)); - $offset += 8; - $info['flac']['SEEKTABLE'][$SampleNumber]['samples'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 2)); - $offset += 2; - - } - } - - unset($info['flac']['SEEKTABLE']['raw']); - - return true; - } - - function FLACparseCUESHEET($METAdataBlockData) { - $info = &$this->getid3->info; - $offset = 0; - $info['flac']['CUESHEET']['media_catalog_number'] = trim(substr($METAdataBlockData, $offset, 128), "\0"); - $offset += 128; - $info['flac']['CUESHEET']['lead_in_samples'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 8)); - $offset += 8; - $info['flac']['CUESHEET']['flags']['is_cd'] = (bool) (getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 1)) & 0x80); - $offset += 1; - - $offset += 258; // reserved - - $info['flac']['CUESHEET']['number_tracks'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 1)); - $offset += 1; - - for ($track = 0; $track < $info['flac']['CUESHEET']['number_tracks']; $track++) { - $TrackSampleOffset = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 8)); - $offset += 8; - $TrackNumber = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 1)); - $offset += 1; - - $info['flac']['CUESHEET']['tracks'][$TrackNumber]['sample_offset'] = $TrackSampleOffset; - - $info['flac']['CUESHEET']['tracks'][$TrackNumber]['isrc'] = substr($METAdataBlockData, $offset, 12); - $offset += 12; - - $TrackFlagsRaw = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 1)); - $offset += 1; - $info['flac']['CUESHEET']['tracks'][$TrackNumber]['flags']['is_audio'] = (bool) ($TrackFlagsRaw & 0x80); - $info['flac']['CUESHEET']['tracks'][$TrackNumber]['flags']['pre_emphasis'] = (bool) ($TrackFlagsRaw & 0x40); - - $offset += 13; // reserved - - $info['flac']['CUESHEET']['tracks'][$TrackNumber]['index_points'] = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 1)); - $offset += 1; - - for ($index = 0; $index < $info['flac']['CUESHEET']['tracks'][$TrackNumber]['index_points']; $index++) { - $IndexSampleOffset = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 8)); - $offset += 8; - $IndexNumber = getid3_lib::BigEndian2Int(substr($METAdataBlockData, $offset, 1)); - $offset += 1; - - $offset += 3; // reserved - - $info['flac']['CUESHEET']['tracks'][$TrackNumber]['indexes'][$IndexNumber] = $IndexSampleOffset; - } - } - - unset($info['flac']['CUESHEET']['raw']); - - return true; - } - - - function FLACparsePICTURE($meta_data_block_data) { - $info = &$this->getid3->info; - $picture = &$info['flac']['PICTURE'][sizeof($info['flac']['PICTURE']) - 1]; - $picture['offset'] = $info['flac']['PICTURE']['raw']['offset']; - unset($info['flac']['PICTURE']['raw']); - - $offset = 0; - - $picture['typeid'] = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $picture['type'] = getid3_flac::FLACpictureTypeLookup($picture['typeid']); - $offset += 4; - - $length = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $offset += 4; - - $picture['image_mime'] = substr($meta_data_block_data, $offset, $length); - $offset += $length; - - $length = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $offset += 4; - - $picture['description'] = substr($meta_data_block_data, $offset, $length); - $offset += $length; - - $picture['width'] = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $offset += 4; - - $picture['height'] = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $offset += 4; - - $picture['color_depth'] = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $offset += 4; - - $picture['colors_indexed'] = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $offset += 4; - - $length = getid3_lib::BigEndian2Int(substr($meta_data_block_data, $offset, 4)); - $offset += 4; - - $picture['data'] = substr($meta_data_block_data, $offset, $length); - $offset += $length; - $picture['data_length'] = strlen($picture['data']); - - - do { - if ($this->inline_attachments === false) { - // skip entirely - unset($picture['data']); - break; - } - if ($this->inline_attachments === true) { - // great - } elseif (is_int($this->inline_attachments)) { - if ($this->inline_attachments < $picture['data_length']) { - // too big, skip - $info['warning'][] = 'attachment at '.$picture['offset'].' is too large to process inline ('.number_format($picture['data_length']).' bytes)'; - unset($picture['data']); - break; - } - } elseif (is_string($this->inline_attachments)) { - $this->inline_attachments = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->inline_attachments), DIRECTORY_SEPARATOR); - if (!is_dir($this->inline_attachments) || !is_writable($this->inline_attachments)) { - // cannot write, skip - $info['warning'][] = 'attachment at '.$picture['offset'].' cannot be saved to "'.$this->inline_attachments.'" (not writable)'; - unset($picture['data']); - break; - } - } - // if we get this far, must be OK - if (is_string($this->inline_attachments)) { - $destination_filename = $this->inline_attachments.DIRECTORY_SEPARATOR.md5($info['filenamepath']).'_'.$picture['offset']; - if (!file_exists($destination_filename) || is_writable($destination_filename)) { - file_put_contents($destination_filename, $picture['data']); - } else { - $info['warning'][] = 'attachment at '.$picture['offset'].' cannot be saved to "'.$destination_filename.'" (not writable)'; - } - $picture['data_filename'] = $destination_filename; - unset($picture['data']); - } else { - if (!isset($info['flac']['comments']['picture'])) { - $info['flac']['comments']['picture'] = array(); - } - $info['flac']['comments']['picture'][] = array('data'=>$picture['data'], 'image_mime'=>$picture['image_mime']); - } - } while (false); - - - - return true; - } -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.la.php b/3rdparty/getid3/module.audio.la.php deleted file mode 100644 index 98d80a6dc6c8e00e6b0721edde99a2b4bc29c333..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.la.php +++ /dev/null @@ -1,229 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.la.php // -// module for analyzing LA (LosslessAudio) audio files // -// dependencies: module.audio.riff.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - -class getid3_la extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $offset = 0; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $rawdata = fread($this->getid3->fp, $this->getid3->fread_buffer_size()); - - switch (substr($rawdata, $offset, 4)) { - case 'LA02': - case 'LA03': - case 'LA04': - $info['fileformat'] = 'la'; - $info['audio']['dataformat'] = 'la'; - $info['audio']['lossless'] = true; - - $info['la']['version_major'] = (int) substr($rawdata, $offset + 2, 1); - $info['la']['version_minor'] = (int) substr($rawdata, $offset + 3, 1); - $info['la']['version'] = (float) $info['la']['version_major'] + ($info['la']['version_minor'] / 10); - $offset += 4; - - $info['la']['uncompressed_size'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - if ($info['la']['uncompressed_size'] == 0) { - $info['error'][] = 'Corrupt LA file: uncompressed_size == zero'; - return false; - } - - $WAVEchunk = substr($rawdata, $offset, 4); - if ($WAVEchunk !== 'WAVE') { - $info['error'][] = 'Expected "WAVE" ('.getid3_lib::PrintHexBytes('WAVE').') at offset '.$offset.', found "'.$WAVEchunk.'" ('.getid3_lib::PrintHexBytes($WAVEchunk).') instead.'; - return false; - } - $offset += 4; - - $info['la']['fmt_size'] = 24; - if ($info['la']['version'] >= 0.3) { - - $info['la']['fmt_size'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $info['la']['header_size'] = 49 + $info['la']['fmt_size'] - 24; - $offset += 4; - - } else { - - // version 0.2 didn't support additional data blocks - $info['la']['header_size'] = 41; - - } - - $fmt_chunk = substr($rawdata, $offset, 4); - if ($fmt_chunk !== 'fmt ') { - $info['error'][] = 'Expected "fmt " ('.getid3_lib::PrintHexBytes('fmt ').') at offset '.$offset.', found "'.$fmt_chunk.'" ('.getid3_lib::PrintHexBytes($fmt_chunk).') instead.'; - return false; - } - $offset += 4; - $fmt_size = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - - $info['la']['raw']['format'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 2)); - $offset += 2; - - $info['la']['channels'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 2)); - $offset += 2; - if ($info['la']['channels'] == 0) { - $info['error'][] = 'Corrupt LA file: channels == zero'; - return false; - } - - $info['la']['sample_rate'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - if ($info['la']['sample_rate'] == 0) { - $info['error'][] = 'Corrupt LA file: sample_rate == zero'; - return false; - } - - $info['la']['bytes_per_second'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - $info['la']['bytes_per_sample'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 2)); - $offset += 2; - $info['la']['bits_per_sample'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 2)); - $offset += 2; - - $info['la']['samples'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - - $info['la']['raw']['flags'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 1)); - $offset += 1; - $info['la']['flags']['seekable'] = (bool) ($info['la']['raw']['flags'] & 0x01); - if ($info['la']['version'] >= 0.4) { - $info['la']['flags']['high_compression'] = (bool) ($info['la']['raw']['flags'] & 0x02); - } - - $info['la']['original_crc'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - - // mikeØbevin*de - // Basically, the blocksize/seekevery are 61440/19 in La0.4 and 73728/16 - // in earlier versions. A seekpoint is added every blocksize * seekevery - // samples, so 4 * int(totalSamples / (blockSize * seekEvery)) should - // give the number of bytes used for the seekpoints. Of course, if seeking - // is disabled, there are no seekpoints stored. - if ($info['la']['version'] >= 0.4) { - $info['la']['blocksize'] = 61440; - $info['la']['seekevery'] = 19; - } else { - $info['la']['blocksize'] = 73728; - $info['la']['seekevery'] = 16; - } - - $info['la']['seekpoint_count'] = 0; - if ($info['la']['flags']['seekable']) { - $info['la']['seekpoint_count'] = floor($info['la']['samples'] / ($info['la']['blocksize'] * $info['la']['seekevery'])); - - for ($i = 0; $i < $info['la']['seekpoint_count']; $i++) { - $info['la']['seekpoints'][] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - } - } - - if ($info['la']['version'] >= 0.3) { - - // Following the main header information, the program outputs all of the - // seekpoints. Following these is what I called the 'footer start', - // i.e. the position immediately after the La audio data is finished. - $info['la']['footerstart'] = getid3_lib::LittleEndian2Int(substr($rawdata, $offset, 4)); - $offset += 4; - - if ($info['la']['footerstart'] > $info['filesize']) { - $info['warning'][] = 'FooterStart value points to offset '.$info['la']['footerstart'].' which is beyond end-of-file ('.$info['filesize'].')'; - $info['la']['footerstart'] = $info['filesize']; - } - - } else { - - // La v0.2 didn't have FooterStart value - $info['la']['footerstart'] = $info['avdataend']; - - } - - if ($info['la']['footerstart'] < $info['avdataend']) { - if ($RIFFtempfilename = tempnam(GETID3_TEMP_DIR, 'id3')) { - if ($RIFF_fp = fopen($RIFFtempfilename, 'w+b')) { - $RIFFdata = 'WAVE'; - if ($info['la']['version'] == 0.2) { - $RIFFdata .= substr($rawdata, 12, 24); - } else { - $RIFFdata .= substr($rawdata, 16, 24); - } - if ($info['la']['footerstart'] < $info['avdataend']) { - fseek($this->getid3->fp, $info['la']['footerstart'], SEEK_SET); - $RIFFdata .= fread($this->getid3->fp, $info['avdataend'] - $info['la']['footerstart']); - } - $RIFFdata = 'RIFF'.getid3_lib::LittleEndian2String(strlen($RIFFdata), 4, false).$RIFFdata; - fwrite($RIFF_fp, $RIFFdata, strlen($RIFFdata)); - fclose($RIFF_fp); - - $getid3_temp = new getID3(); - $getid3_temp->openfile($RIFFtempfilename); - $getid3_riff = new getid3_riff($getid3_temp); - $getid3_riff->Analyze(); - - if (empty($getid3_temp->info['error'])) { - $info['riff'] = $getid3_temp->info['riff']; - } else { - $info['warning'][] = 'Error parsing RIFF portion of La file: '.implode($getid3_temp->info['error']); - } - unset($getid3_temp, $getid3_riff); - } - unlink($RIFFtempfilename); - } - } - - // $info['avdataoffset'] should be zero to begin with, but just in case it's not, include the addition anyway - $info['avdataend'] = $info['avdataoffset'] + $info['la']['footerstart']; - $info['avdataoffset'] = $info['avdataoffset'] + $offset; - - //$info['la']['codec'] = RIFFwFormatTagLookup($info['la']['raw']['format']); - $info['la']['compression_ratio'] = (float) (($info['avdataend'] - $info['avdataoffset']) / $info['la']['uncompressed_size']); - $info['playtime_seconds'] = (float) ($info['la']['samples'] / $info['la']['sample_rate']) / $info['la']['channels']; - if ($info['playtime_seconds'] == 0) { - $info['error'][] = 'Corrupt LA file: playtime_seconds == zero'; - return false; - } - - $info['audio']['bitrate'] = ($info['avdataend'] - $info['avdataoffset']) * 8 / $info['playtime_seconds']; - //$info['audio']['codec'] = $info['la']['codec']; - $info['audio']['bits_per_sample'] = $info['la']['bits_per_sample']; - break; - - default: - if (substr($rawdata, $offset, 2) == 'LA') { - $info['error'][] = 'This version of getID3() ['.$this->getid3->version().'] does not support LA version '.substr($rawdata, $offset + 2, 1).'.'.substr($rawdata, $offset + 3, 1).' which this appears to be - check http://getid3.sourceforge.net for updates.'; - } else { - $info['error'][] = 'Not a LA (Lossless-Audio) file'; - } - return false; - break; - } - - $info['audio']['channels'] = $info['la']['channels']; - $info['audio']['sample_rate'] = (int) $info['la']['sample_rate']; - $info['audio']['encoder'] = 'LA v'.$info['la']['version']; - - return true; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.lpac.php b/3rdparty/getid3/module.audio.lpac.php deleted file mode 100644 index 6ef0fb8acd07ad855ecbe8224f5086f9741adecc..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.lpac.php +++ /dev/null @@ -1,130 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.lpac.php // -// module for analyzing LPAC Audio files // -// dependencies: module.audio-video.riff.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - -class getid3_lpac extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $LPACheader = fread($this->getid3->fp, 14); - if (substr($LPACheader, 0, 4) != 'LPAC') { - $info['error'][] = 'Expected "LPAC" at offset '.$info['avdataoffset'].', found "'.$StreamMarker.'"'; - return false; - } - $info['avdataoffset'] += 14; - - $info['fileformat'] = 'lpac'; - $info['audio']['dataformat'] = 'lpac'; - $info['audio']['lossless'] = true; - $info['audio']['bitrate_mode'] = 'vbr'; - - $info['lpac']['file_version'] = getid3_lib::BigEndian2Int(substr($LPACheader, 4, 1)); - $flags['audio_type'] = getid3_lib::BigEndian2Int(substr($LPACheader, 5, 1)); - $info['lpac']['total_samples']= getid3_lib::BigEndian2Int(substr($LPACheader, 6, 4)); - $flags['parameters'] = getid3_lib::BigEndian2Int(substr($LPACheader, 10, 4)); - - $info['lpac']['flags']['is_wave'] = (bool) ($flags['audio_type'] & 0x40); - $info['lpac']['flags']['stereo'] = (bool) ($flags['audio_type'] & 0x04); - $info['lpac']['flags']['24_bit'] = (bool) ($flags['audio_type'] & 0x02); - $info['lpac']['flags']['16_bit'] = (bool) ($flags['audio_type'] & 0x01); - - if ($info['lpac']['flags']['24_bit'] && $info['lpac']['flags']['16_bit']) { - $info['warning'][] = '24-bit and 16-bit flags cannot both be set'; - } - - $info['lpac']['flags']['fast_compress'] = (bool) ($flags['parameters'] & 0x40000000); - $info['lpac']['flags']['random_access'] = (bool) ($flags['parameters'] & 0x08000000); - $info['lpac']['block_length'] = pow(2, (($flags['parameters'] & 0x07000000) >> 24)) * 256; - $info['lpac']['flags']['adaptive_prediction_order'] = (bool) ($flags['parameters'] & 0x00800000); - $info['lpac']['flags']['adaptive_quantization'] = (bool) ($flags['parameters'] & 0x00400000); - $info['lpac']['flags']['joint_stereo'] = (bool) ($flags['parameters'] & 0x00040000); - $info['lpac']['quantization'] = ($flags['parameters'] & 0x00001F00) >> 8; - $info['lpac']['max_prediction_order'] = ($flags['parameters'] & 0x0000003F); - - if ($info['lpac']['flags']['fast_compress'] && ($info['lpac']['max_prediction_order'] != 3)) { - $info['warning'][] = 'max_prediction_order expected to be "3" if fast_compress is true, actual value is "'.$info['lpac']['max_prediction_order'].'"'; - } - switch ($info['lpac']['file_version']) { - case 6: - if ($info['lpac']['flags']['adaptive_quantization']) { - $info['warning'][] = 'adaptive_quantization expected to be false in LPAC file stucture v6, actually true'; - } - if ($info['lpac']['quantization'] != 20) { - $info['warning'][] = 'Quantization expected to be 20 in LPAC file stucture v6, actually '.$info['lpac']['flags']['Q']; - } - break; - - default: - //$info['warning'][] = 'This version of getID3() ['.$this->getid3->version().'] only supports LPAC file format version 6, this file is version '.$info['lpac']['file_version'].' - please report to info@getid3.org'; - break; - } - - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info = $info; - $getid3_riff = new getid3_riff($getid3_temp); - $getid3_riff->Analyze(); - $info['avdataoffset'] = $getid3_temp->info['avdataoffset']; - $info['riff'] = $getid3_temp->info['riff']; - $info['error'] = $getid3_temp->info['error']; - $info['warning'] = $getid3_temp->info['warning']; - $info['lpac']['comments']['comment'] = $getid3_temp->info['comments']; - $info['audio']['sample_rate'] = $getid3_temp->info['audio']['sample_rate']; - unset($getid3_temp, $getid3_riff); - - $info['audio']['channels'] = ($info['lpac']['flags']['stereo'] ? 2 : 1); - - if ($info['lpac']['flags']['24_bit']) { - $info['audio']['bits_per_sample'] = $info['riff']['audio'][0]['bits_per_sample']; - } elseif ($info['lpac']['flags']['16_bit']) { - $info['audio']['bits_per_sample'] = 16; - } else { - $info['audio']['bits_per_sample'] = 8; - } - - if ($info['lpac']['flags']['fast_compress']) { - // fast - $info['audio']['encoder_options'] = '-1'; - } else { - switch ($info['lpac']['max_prediction_order']) { - case 20: // simple - $info['audio']['encoder_options'] = '-2'; - break; - case 30: // medium - $info['audio']['encoder_options'] = '-3'; - break; - case 40: // high - $info['audio']['encoder_options'] = '-4'; - break; - case 60: // extrahigh - $info['audio']['encoder_options'] = '-5'; - break; - } - } - - $info['playtime_seconds'] = $info['lpac']['total_samples'] / $info['audio']['sample_rate']; - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - - return true; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.midi.php b/3rdparty/getid3/module.audio.midi.php deleted file mode 100644 index 7b839cf1404d17aa4d37b6b3de1c871ef6e7ed05..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.midi.php +++ /dev/null @@ -1,526 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.midi.php // -// module for Midi Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - -define('GETID3_MIDI_MAGIC_MTHD', 'MThd'); // MIDI file header magic -define('GETID3_MIDI_MAGIC_MTRK', 'MTrk'); // MIDI track header magic - -class getid3_midi extends getid3_handler -{ - var $scanwholefile = true; - - function Analyze() { - $info = &$this->getid3->info; - - // shortcut - $info['midi']['raw'] = array(); - $thisfile_midi = &$info['midi']; - $thisfile_midi_raw = &$thisfile_midi['raw']; - - $info['fileformat'] = 'midi'; - $info['audio']['dataformat'] = 'midi'; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $MIDIdata = fread($this->getid3->fp, $this->getid3->fread_buffer_size()); - $offset = 0; - $MIDIheaderID = substr($MIDIdata, $offset, 4); // 'MThd' - if ($MIDIheaderID != GETID3_MIDI_MAGIC_MTHD) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes(GETID3_MIDI_MAGIC_MTHD).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($MIDIheaderID).'"'; - unset($info['fileformat']); - return false; - } - $offset += 4; - $thisfile_midi_raw['headersize'] = getid3_lib::BigEndian2Int(substr($MIDIdata, $offset, 4)); - $offset += 4; - $thisfile_midi_raw['fileformat'] = getid3_lib::BigEndian2Int(substr($MIDIdata, $offset, 2)); - $offset += 2; - $thisfile_midi_raw['tracks'] = getid3_lib::BigEndian2Int(substr($MIDIdata, $offset, 2)); - $offset += 2; - $thisfile_midi_raw['ticksperqnote'] = getid3_lib::BigEndian2Int(substr($MIDIdata, $offset, 2)); - $offset += 2; - - for ($i = 0; $i < $thisfile_midi_raw['tracks']; $i++) { - while ((strlen($MIDIdata) - $offset) < 8) { - $MIDIdata .= fread($this->getid3->fp, $this->getid3->fread_buffer_size()); - } - $trackID = substr($MIDIdata, $offset, 4); - $offset += 4; - if ($trackID == GETID3_MIDI_MAGIC_MTRK) { - $tracksize = getid3_lib::BigEndian2Int(substr($MIDIdata, $offset, 4)); - $offset += 4; - // $thisfile_midi['tracks'][$i]['size'] = $tracksize; - $trackdataarray[$i] = substr($MIDIdata, $offset, $tracksize); - $offset += $tracksize; - } else { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes(GETID3_MIDI_MAGIC_MTRK).'" at '.($offset - 4).', found "'.getid3_lib::PrintHexBytes($trackID).'" instead'; - return false; - } - } - - if (!isset($trackdataarray) || !is_array($trackdataarray)) { - $info['error'][] = 'Cannot find MIDI track information'; - unset($thisfile_midi); - unset($info['fileformat']); - return false; - } - - if ($this->scanwholefile) { // this can take quite a long time, so have the option to bypass it if speed is very important - $thisfile_midi['totalticks'] = 0; - $info['playtime_seconds'] = 0; - $CurrentMicroSecondsPerBeat = 500000; // 120 beats per minute; 60,000,000 microseconds per minute -> 500,000 microseconds per beat - $CurrentBeatsPerMinute = 120; // 120 beats per minute; 60,000,000 microseconds per minute -> 500,000 microseconds per beat - $MicroSecondsPerQuarterNoteAfter = array (); - - foreach ($trackdataarray as $tracknumber => $trackdata) { - - $eventsoffset = 0; - $LastIssuedMIDIcommand = 0; - $LastIssuedMIDIchannel = 0; - $CumulativeDeltaTime = 0; - $TicksAtCurrentBPM = 0; - while ($eventsoffset < strlen($trackdata)) { - $eventid = 0; - if (isset($MIDIevents[$tracknumber]) && is_array($MIDIevents[$tracknumber])) { - $eventid = count($MIDIevents[$tracknumber]); - } - $deltatime = 0; - for ($i = 0; $i < 4; $i++) { - $deltatimebyte = ord(substr($trackdata, $eventsoffset++, 1)); - $deltatime = ($deltatime << 7) + ($deltatimebyte & 0x7F); - if ($deltatimebyte & 0x80) { - // another byte follows - } else { - break; - } - } - $CumulativeDeltaTime += $deltatime; - $TicksAtCurrentBPM += $deltatime; - $MIDIevents[$tracknumber][$eventid]['deltatime'] = $deltatime; - $MIDI_event_channel = ord(substr($trackdata, $eventsoffset++, 1)); - if ($MIDI_event_channel & 0x80) { - // OK, normal event - MIDI command has MSB set - $LastIssuedMIDIcommand = $MIDI_event_channel >> 4; - $LastIssuedMIDIchannel = $MIDI_event_channel & 0x0F; - } else { - // running event - assume last command - $eventsoffset--; - } - $MIDIevents[$tracknumber][$eventid]['eventid'] = $LastIssuedMIDIcommand; - $MIDIevents[$tracknumber][$eventid]['channel'] = $LastIssuedMIDIchannel; - if ($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x08) { // Note off (key is released) - - $notenumber = ord(substr($trackdata, $eventsoffset++, 1)); - $velocity = ord(substr($trackdata, $eventsoffset++, 1)); - - } elseif ($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x09) { // Note on (key is pressed) - - $notenumber = ord(substr($trackdata, $eventsoffset++, 1)); - $velocity = ord(substr($trackdata, $eventsoffset++, 1)); - - } elseif ($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x0A) { // Key after-touch - - $notenumber = ord(substr($trackdata, $eventsoffset++, 1)); - $velocity = ord(substr($trackdata, $eventsoffset++, 1)); - - } elseif ($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x0B) { // Control Change - - $controllernum = ord(substr($trackdata, $eventsoffset++, 1)); - $newvalue = ord(substr($trackdata, $eventsoffset++, 1)); - - } elseif ($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x0C) { // Program (patch) change - - $newprogramnum = ord(substr($trackdata, $eventsoffset++, 1)); - - $thisfile_midi_raw['track'][$tracknumber]['instrumentid'] = $newprogramnum; - if ($tracknumber == 10) { - $thisfile_midi_raw['track'][$tracknumber]['instrument'] = $this->GeneralMIDIpercussionLookup($newprogramnum); - } else { - $thisfile_midi_raw['track'][$tracknumber]['instrument'] = $this->GeneralMIDIinstrumentLookup($newprogramnum); - } - - } elseif ($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x0D) { // Channel after-touch - - $channelnumber = ord(substr($trackdata, $eventsoffset++, 1)); - - } elseif ($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x0E) { // Pitch wheel change (2000H is normal or no change) - - $changeLSB = ord(substr($trackdata, $eventsoffset++, 1)); - $changeMSB = ord(substr($trackdata, $eventsoffset++, 1)); - $pitchwheelchange = (($changeMSB & 0x7F) << 7) & ($changeLSB & 0x7F); - - } elseif (($MIDIevents[$tracknumber][$eventid]['eventid'] == 0x0F) && ($MIDIevents[$tracknumber][$eventid]['channel'] == 0x0F)) { - - $METAeventCommand = ord(substr($trackdata, $eventsoffset++, 1)); - $METAeventLength = ord(substr($trackdata, $eventsoffset++, 1)); - $METAeventData = substr($trackdata, $eventsoffset, $METAeventLength); - $eventsoffset += $METAeventLength; - switch ($METAeventCommand) { - case 0x00: // Set track sequence number - $track_sequence_number = getid3_lib::BigEndian2Int(substr($METAeventData, 0, $METAeventLength)); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['seqno'] = $track_sequence_number; - break; - - case 0x01: // Text: generic - $text_generic = substr($METAeventData, 0, $METAeventLength); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['text'] = $text_generic; - $thisfile_midi['comments']['comment'][] = $text_generic; - break; - - case 0x02: // Text: copyright - $text_copyright = substr($METAeventData, 0, $METAeventLength); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['copyright'] = $text_copyright; - $thisfile_midi['comments']['copyright'][] = $text_copyright; - break; - - case 0x03: // Text: track name - $text_trackname = substr($METAeventData, 0, $METAeventLength); - $thisfile_midi_raw['track'][$tracknumber]['name'] = $text_trackname; - break; - - case 0x04: // Text: track instrument name - $text_instrument = substr($METAeventData, 0, $METAeventLength); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['instrument'] = $text_instrument; - break; - - case 0x05: // Text: lyrics - $text_lyrics = substr($METAeventData, 0, $METAeventLength); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['lyrics'] = $text_lyrics; - if (!isset($thisfile_midi['lyrics'])) { - $thisfile_midi['lyrics'] = ''; - } - $thisfile_midi['lyrics'] .= $text_lyrics."\n"; - break; - - case 0x06: // Text: marker - $text_marker = substr($METAeventData, 0, $METAeventLength); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['marker'] = $text_marker; - break; - - case 0x07: // Text: cue point - $text_cuepoint = substr($METAeventData, 0, $METAeventLength); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['cuepoint'] = $text_cuepoint; - break; - - case 0x2F: // End Of Track - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['EOT'] = $CumulativeDeltaTime; - break; - - case 0x51: // Tempo: microseconds / quarter note - $CurrentMicroSecondsPerBeat = getid3_lib::BigEndian2Int(substr($METAeventData, 0, $METAeventLength)); - if ($CurrentMicroSecondsPerBeat == 0) { - $info['error'][] = 'Corrupt MIDI file: CurrentMicroSecondsPerBeat == zero'; - return false; - } - $thisfile_midi_raw['events'][$tracknumber][$CumulativeDeltaTime]['us_qnote'] = $CurrentMicroSecondsPerBeat; - $CurrentBeatsPerMinute = (1000000 / $CurrentMicroSecondsPerBeat) * 60; - $MicroSecondsPerQuarterNoteAfter[$CumulativeDeltaTime] = $CurrentMicroSecondsPerBeat; - $TicksAtCurrentBPM = 0; - break; - - case 0x58: // Time signature - $timesig_numerator = getid3_lib::BigEndian2Int($METAeventData{0}); - $timesig_denominator = pow(2, getid3_lib::BigEndian2Int($METAeventData{1})); // $02 -> x/4, $03 -> x/8, etc - $timesig_32inqnote = getid3_lib::BigEndian2Int($METAeventData{2}); // number of 32nd notes to the quarter note - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['timesig_32inqnote'] = $timesig_32inqnote; - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['timesig_numerator'] = $timesig_numerator; - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['timesig_denominator'] = $timesig_denominator; - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['timesig_text'] = $timesig_numerator.'/'.$timesig_denominator; - $thisfile_midi['timesignature'][] = $timesig_numerator.'/'.$timesig_denominator; - break; - - case 0x59: // Keysignature - $keysig_sharpsflats = getid3_lib::BigEndian2Int($METAeventData{0}); - if ($keysig_sharpsflats & 0x80) { - // (-7 -> 7 flats, 0 ->key of C, 7 -> 7 sharps) - $keysig_sharpsflats -= 256; - } - - $keysig_majorminor = getid3_lib::BigEndian2Int($METAeventData{1}); // 0 -> major, 1 -> minor - $keysigs = array(-7=>'Cb', -6=>'Gb', -5=>'Db', -4=>'Ab', -3=>'Eb', -2=>'Bb', -1=>'F', 0=>'C', 1=>'G', 2=>'D', 3=>'A', 4=>'E', 5=>'B', 6=>'F#', 7=>'C#'); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['keysig_sharps'] = (($keysig_sharpsflats > 0) ? abs($keysig_sharpsflats) : 0); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['keysig_flats'] = (($keysig_sharpsflats < 0) ? abs($keysig_sharpsflats) : 0); - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['keysig_minor'] = (bool) $keysig_majorminor; - //$thisfile_midi_raw['events'][$tracknumber][$eventid]['keysig_text'] = $keysigs[$keysig_sharpsflats].' '.($thisfile_midi_raw['events'][$tracknumber][$eventid]['keysig_minor'] ? 'minor' : 'major'); - - // $keysigs[$keysig_sharpsflats] gets an int key (correct) - $keysigs["$keysig_sharpsflats"] gets a string key (incorrect) - $thisfile_midi['keysignature'][] = $keysigs[$keysig_sharpsflats].' '.((bool) $keysig_majorminor ? 'minor' : 'major'); - break; - - case 0x7F: // Sequencer specific information - $custom_data = substr($METAeventData, 0, $METAeventLength); - break; - - default: - $info['warning'][] = 'Unhandled META Event Command: '.$METAeventCommand; - break; - } - - } else { - - $info['warning'][] = 'Unhandled MIDI Event ID: '.$MIDIevents[$tracknumber][$eventid]['eventid'].' + Channel ID: '.$MIDIevents[$tracknumber][$eventid]['channel']; - - } - } - if (($tracknumber > 0) || (count($trackdataarray) == 1)) { - $thisfile_midi['totalticks'] = max($thisfile_midi['totalticks'], $CumulativeDeltaTime); - } - } - $previoustickoffset = null; - - ksort($MicroSecondsPerQuarterNoteAfter); - foreach ($MicroSecondsPerQuarterNoteAfter as $tickoffset => $microsecondsperbeat) { - if (is_null($previoustickoffset)) { - $prevmicrosecondsperbeat = $microsecondsperbeat; - $previoustickoffset = $tickoffset; - continue; - } - if ($thisfile_midi['totalticks'] > $tickoffset) { - - if ($thisfile_midi_raw['ticksperqnote'] == 0) { - $info['error'][] = 'Corrupt MIDI file: ticksperqnote == zero'; - return false; - } - - $info['playtime_seconds'] += (($tickoffset - $previoustickoffset) / $thisfile_midi_raw['ticksperqnote']) * ($prevmicrosecondsperbeat / 1000000); - - $prevmicrosecondsperbeat = $microsecondsperbeat; - $previoustickoffset = $tickoffset; - } - } - if ($thisfile_midi['totalticks'] > $previoustickoffset) { - - if ($thisfile_midi_raw['ticksperqnote'] == 0) { - $info['error'][] = 'Corrupt MIDI file: ticksperqnote == zero'; - return false; - } - - $info['playtime_seconds'] += (($thisfile_midi['totalticks'] - $previoustickoffset) / $thisfile_midi_raw['ticksperqnote']) * ($microsecondsperbeat / 1000000); - - } - } - - - if (!empty($info['playtime_seconds'])) { - $info['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - } - - if (!empty($thisfile_midi['lyrics'])) { - $thisfile_midi['comments']['lyrics'][] = $thisfile_midi['lyrics']; - } - - return true; - } - - function GeneralMIDIinstrumentLookup($instrumentid) { - - $begin = __LINE__; - - /** This is not a comment! - - 0 Acoustic Grand - 1 Bright Acoustic - 2 Electric Grand - 3 Honky-Tonk - 4 Electric Piano 1 - 5 Electric Piano 2 - 6 Harpsichord - 7 Clavier - 8 Celesta - 9 Glockenspiel - 10 Music Box - 11 Vibraphone - 12 Marimba - 13 Xylophone - 14 Tubular Bells - 15 Dulcimer - 16 Drawbar Organ - 17 Percussive Organ - 18 Rock Organ - 19 Church Organ - 20 Reed Organ - 21 Accordian - 22 Harmonica - 23 Tango Accordian - 24 Acoustic Guitar (nylon) - 25 Acoustic Guitar (steel) - 26 Electric Guitar (jazz) - 27 Electric Guitar (clean) - 28 Electric Guitar (muted) - 29 Overdriven Guitar - 30 Distortion Guitar - 31 Guitar Harmonics - 32 Acoustic Bass - 33 Electric Bass (finger) - 34 Electric Bass (pick) - 35 Fretless Bass - 36 Slap Bass 1 - 37 Slap Bass 2 - 38 Synth Bass 1 - 39 Synth Bass 2 - 40 Violin - 41 Viola - 42 Cello - 43 Contrabass - 44 Tremolo Strings - 45 Pizzicato Strings - 46 Orchestral Strings - 47 Timpani - 48 String Ensemble 1 - 49 String Ensemble 2 - 50 SynthStrings 1 - 51 SynthStrings 2 - 52 Choir Aahs - 53 Voice Oohs - 54 Synth Voice - 55 Orchestra Hit - 56 Trumpet - 57 Trombone - 58 Tuba - 59 Muted Trumpet - 60 French Horn - 61 Brass Section - 62 SynthBrass 1 - 63 SynthBrass 2 - 64 Soprano Sax - 65 Alto Sax - 66 Tenor Sax - 67 Baritone Sax - 68 Oboe - 69 English Horn - 70 Bassoon - 71 Clarinet - 72 Piccolo - 73 Flute - 74 Recorder - 75 Pan Flute - 76 Blown Bottle - 77 Shakuhachi - 78 Whistle - 79 Ocarina - 80 Lead 1 (square) - 81 Lead 2 (sawtooth) - 82 Lead 3 (calliope) - 83 Lead 4 (chiff) - 84 Lead 5 (charang) - 85 Lead 6 (voice) - 86 Lead 7 (fifths) - 87 Lead 8 (bass + lead) - 88 Pad 1 (new age) - 89 Pad 2 (warm) - 90 Pad 3 (polysynth) - 91 Pad 4 (choir) - 92 Pad 5 (bowed) - 93 Pad 6 (metallic) - 94 Pad 7 (halo) - 95 Pad 8 (sweep) - 96 FX 1 (rain) - 97 FX 2 (soundtrack) - 98 FX 3 (crystal) - 99 FX 4 (atmosphere) - 100 FX 5 (brightness) - 101 FX 6 (goblins) - 102 FX 7 (echoes) - 103 FX 8 (sci-fi) - 104 Sitar - 105 Banjo - 106 Shamisen - 107 Koto - 108 Kalimba - 109 Bagpipe - 110 Fiddle - 111 Shanai - 112 Tinkle Bell - 113 Agogo - 114 Steel Drums - 115 Woodblock - 116 Taiko Drum - 117 Melodic Tom - 118 Synth Drum - 119 Reverse Cymbal - 120 Guitar Fret Noise - 121 Breath Noise - 122 Seashore - 123 Bird Tweet - 124 Telephone Ring - 125 Helicopter - 126 Applause - 127 Gunshot - - */ - - return getid3_lib::EmbeddedLookup($instrumentid, $begin, __LINE__, __FILE__, 'GeneralMIDIinstrument'); - } - - function GeneralMIDIpercussionLookup($instrumentid) { - - $begin = __LINE__; - - /** This is not a comment! - - 35 Acoustic Bass Drum - 36 Bass Drum 1 - 37 Side Stick - 38 Acoustic Snare - 39 Hand Clap - 40 Electric Snare - 41 Low Floor Tom - 42 Closed Hi-Hat - 43 High Floor Tom - 44 Pedal Hi-Hat - 45 Low Tom - 46 Open Hi-Hat - 47 Low-Mid Tom - 48 Hi-Mid Tom - 49 Crash Cymbal 1 - 50 High Tom - 51 Ride Cymbal 1 - 52 Chinese Cymbal - 53 Ride Bell - 54 Tambourine - 55 Splash Cymbal - 56 Cowbell - 57 Crash Cymbal 2 - 59 Ride Cymbal 2 - 60 Hi Bongo - 61 Low Bongo - 62 Mute Hi Conga - 63 Open Hi Conga - 64 Low Conga - 65 High Timbale - 66 Low Timbale - 67 High Agogo - 68 Low Agogo - 69 Cabasa - 70 Maracas - 71 Short Whistle - 72 Long Whistle - 73 Short Guiro - 74 Long Guiro - 75 Claves - 76 Hi Wood Block - 77 Low Wood Block - 78 Mute Cuica - 79 Open Cuica - 80 Mute Triangle - 81 Open Triangle - - */ - - return getid3_lib::EmbeddedLookup($instrumentid, $begin, __LINE__, __FILE__, 'GeneralMIDIpercussion'); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.mod.php b/3rdparty/getid3/module.audio.mod.php deleted file mode 100644 index b881769426123be79c7e44b577d3156ba18d2fb6..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.mod.php +++ /dev/null @@ -1,101 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.mod.php // -// module for analyzing MOD Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_mod extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $fileheader = fread($this->getid3->fp, 1088); - if (preg_match('#^IMPM#', $fileheader)) { - return $this->getITheaderFilepointer(); - } elseif (preg_match('#^Extended Module#', $fileheader)) { - return $this->getXMheaderFilepointer(); - } elseif (preg_match('#^.{44}SCRM#', $fileheader)) { - return $this->getS3MheaderFilepointer(); - } elseif (preg_match('#^.{1080}(M\\.K\\.|M!K!|FLT4|FLT8|[5-9]CHN|[1-3][0-9]CH)#', $fileheader)) { - return $this->getMODheaderFilepointer(); - } - $info['error'][] = 'This is not a known type of MOD file'; - return false; - } - - - function getMODheaderFilepointer() { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset'] + 1080); - $FormatID = fread($this->getid3->fp, 4); - if (!preg_match('#^(M.K.|[5-9]CHN|[1-3][0-9]CH)$#', $FormatID)) { - $info['error'][] = 'This is not a known type of MOD file'; - return false; - } - - $info['fileformat'] = 'mod'; - - $info['error'][] = 'MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; - return false; - } - - function getXMheaderFilepointer() { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset']); - $FormatID = fread($this->getid3->fp, 15); - if (!preg_match('#^Extended Module$#', $FormatID)) { - $info['error'][] = 'This is not a known type of XM-MOD file'; - return false; - } - - $info['fileformat'] = 'xm'; - - $info['error'][] = 'XM-MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; - return false; - } - - function getS3MheaderFilepointer() { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset'] + 44); - $FormatID = fread($this->getid3->fp, 4); - if (!preg_match('#^SCRM$#', $FormatID)) { - $info['error'][] = 'This is not a ScreamTracker MOD file'; - return false; - } - - $info['fileformat'] = 's3m'; - - $info['error'][] = 'ScreamTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; - return false; - } - - function getITheaderFilepointer() { - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset']); - $FormatID = fread($this->getid3->fp, 4); - if (!preg_match('#^IMPM$#', $FormatID)) { - $info['error'][] = 'This is not an ImpulseTracker MOD file'; - return false; - } - - $info['fileformat'] = 'it'; - - $info['error'][] = 'ImpulseTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; - return false; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.monkey.php b/3rdparty/getid3/module.audio.monkey.php deleted file mode 100644 index ffaeae9f07b751c3f3255b7d754576df3339132e..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.monkey.php +++ /dev/null @@ -1,205 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.monkey.php // -// module for analyzing Monkey's Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_monkey extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - // based loosely on code from TMonkey by Jurgen Faul - // http://jfaul.de/atl or http://j-faul.virtualave.net/atl/atl.html - - $info['fileformat'] = 'mac'; - $info['audio']['dataformat'] = 'mac'; - $info['audio']['bitrate_mode'] = 'vbr'; - $info['audio']['lossless'] = true; - - $info['monkeys_audio']['raw'] = array(); - $thisfile_monkeysaudio = &$info['monkeys_audio']; - $thisfile_monkeysaudio_raw = &$thisfile_monkeysaudio['raw']; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $MACheaderData = fread($this->getid3->fp, 74); - - $thisfile_monkeysaudio_raw['magic'] = substr($MACheaderData, 0, 4); - $magic = 'MAC '; - if ($thisfile_monkeysaudio_raw['magic'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_monkeysaudio_raw['magic']).'"'; - unset($info['fileformat']); - return false; - } - $thisfile_monkeysaudio_raw['nVersion'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 4, 2)); // appears to be uint32 in 3.98+ - - if ($thisfile_monkeysaudio_raw['nVersion'] < 3980) { - $thisfile_monkeysaudio_raw['nCompressionLevel'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 6, 2)); - $thisfile_monkeysaudio_raw['nFormatFlags'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 8, 2)); - $thisfile_monkeysaudio_raw['nChannels'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 10, 2)); - $thisfile_monkeysaudio_raw['nSampleRate'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 12, 4)); - $thisfile_monkeysaudio_raw['nHeaderDataBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 16, 4)); - $thisfile_monkeysaudio_raw['nWAVTerminatingBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 20, 4)); - $thisfile_monkeysaudio_raw['nTotalFrames'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 24, 4)); - $thisfile_monkeysaudio_raw['nFinalFrameSamples'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 28, 4)); - $thisfile_monkeysaudio_raw['nPeakLevel'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 32, 4)); - $thisfile_monkeysaudio_raw['nSeekElements'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, 38, 2)); - $offset = 8; - } else { - $offset = 8; - // APE_DESCRIPTOR - $thisfile_monkeysaudio_raw['nDescriptorBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nHeaderBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nSeekTableBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nHeaderDataBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nAPEFrameDataBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nAPEFrameDataBytesHigh'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nTerminatingDataBytes'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['cFileMD5'] = substr($MACheaderData, $offset, 16); - $offset += 16; - - // APE_HEADER - $thisfile_monkeysaudio_raw['nCompressionLevel'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 2)); - $offset += 2; - $thisfile_monkeysaudio_raw['nFormatFlags'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 2)); - $offset += 2; - $thisfile_monkeysaudio_raw['nBlocksPerFrame'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nFinalFrameBlocks'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nTotalFrames'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - $thisfile_monkeysaudio_raw['nBitsPerSample'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 2)); - $offset += 2; - $thisfile_monkeysaudio_raw['nChannels'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 2)); - $offset += 2; - $thisfile_monkeysaudio_raw['nSampleRate'] = getid3_lib::LittleEndian2Int(substr($MACheaderData, $offset, 4)); - $offset += 4; - } - - $thisfile_monkeysaudio['flags']['8-bit'] = (bool) ($thisfile_monkeysaudio_raw['nFormatFlags'] & 0x0001); - $thisfile_monkeysaudio['flags']['crc-32'] = (bool) ($thisfile_monkeysaudio_raw['nFormatFlags'] & 0x0002); - $thisfile_monkeysaudio['flags']['peak_level'] = (bool) ($thisfile_monkeysaudio_raw['nFormatFlags'] & 0x0004); - $thisfile_monkeysaudio['flags']['24-bit'] = (bool) ($thisfile_monkeysaudio_raw['nFormatFlags'] & 0x0008); - $thisfile_monkeysaudio['flags']['seek_elements'] = (bool) ($thisfile_monkeysaudio_raw['nFormatFlags'] & 0x0010); - $thisfile_monkeysaudio['flags']['no_wav_header'] = (bool) ($thisfile_monkeysaudio_raw['nFormatFlags'] & 0x0020); - $thisfile_monkeysaudio['version'] = $thisfile_monkeysaudio_raw['nVersion'] / 1000; - $thisfile_monkeysaudio['compression'] = $this->MonkeyCompressionLevelNameLookup($thisfile_monkeysaudio_raw['nCompressionLevel']); - if ($thisfile_monkeysaudio_raw['nVersion'] < 3980) { - $thisfile_monkeysaudio['samples_per_frame'] = $this->MonkeySamplesPerFrame($thisfile_monkeysaudio_raw['nVersion'], $thisfile_monkeysaudio_raw['nCompressionLevel']); - } - $thisfile_monkeysaudio['bits_per_sample'] = ($thisfile_monkeysaudio['flags']['24-bit'] ? 24 : ($thisfile_monkeysaudio['flags']['8-bit'] ? 8 : 16)); - $thisfile_monkeysaudio['channels'] = $thisfile_monkeysaudio_raw['nChannels']; - $info['audio']['channels'] = $thisfile_monkeysaudio['channels']; - $thisfile_monkeysaudio['sample_rate'] = $thisfile_monkeysaudio_raw['nSampleRate']; - if ($thisfile_monkeysaudio['sample_rate'] == 0) { - $info['error'][] = 'Corrupt MAC file: frequency == zero'; - return false; - } - $info['audio']['sample_rate'] = $thisfile_monkeysaudio['sample_rate']; - if ($thisfile_monkeysaudio['flags']['peak_level']) { - $thisfile_monkeysaudio['peak_level'] = $thisfile_monkeysaudio_raw['nPeakLevel']; - $thisfile_monkeysaudio['peak_ratio'] = $thisfile_monkeysaudio['peak_level'] / pow(2, $thisfile_monkeysaudio['bits_per_sample'] - 1); - } - if ($thisfile_monkeysaudio_raw['nVersion'] >= 3980) { - $thisfile_monkeysaudio['samples'] = (($thisfile_monkeysaudio_raw['nTotalFrames'] - 1) * $thisfile_monkeysaudio_raw['nBlocksPerFrame']) + $thisfile_monkeysaudio_raw['nFinalFrameBlocks']; - } else { - $thisfile_monkeysaudio['samples'] = (($thisfile_monkeysaudio_raw['nTotalFrames'] - 1) * $thisfile_monkeysaudio['samples_per_frame']) + $thisfile_monkeysaudio_raw['nFinalFrameSamples']; - } - $thisfile_monkeysaudio['playtime'] = $thisfile_monkeysaudio['samples'] / $thisfile_monkeysaudio['sample_rate']; - if ($thisfile_monkeysaudio['playtime'] == 0) { - $info['error'][] = 'Corrupt MAC file: playtime == zero'; - return false; - } - $info['playtime_seconds'] = $thisfile_monkeysaudio['playtime']; - $thisfile_monkeysaudio['compressed_size'] = $info['avdataend'] - $info['avdataoffset']; - $thisfile_monkeysaudio['uncompressed_size'] = $thisfile_monkeysaudio['samples'] * $thisfile_monkeysaudio['channels'] * ($thisfile_monkeysaudio['bits_per_sample'] / 8); - if ($thisfile_monkeysaudio['uncompressed_size'] == 0) { - $info['error'][] = 'Corrupt MAC file: uncompressed_size == zero'; - return false; - } - $thisfile_monkeysaudio['compression_ratio'] = $thisfile_monkeysaudio['compressed_size'] / ($thisfile_monkeysaudio['uncompressed_size'] + $thisfile_monkeysaudio_raw['nHeaderDataBytes']); - $thisfile_monkeysaudio['bitrate'] = (($thisfile_monkeysaudio['samples'] * $thisfile_monkeysaudio['channels'] * $thisfile_monkeysaudio['bits_per_sample']) / $thisfile_monkeysaudio['playtime']) * $thisfile_monkeysaudio['compression_ratio']; - $info['audio']['bitrate'] = $thisfile_monkeysaudio['bitrate']; - - // add size of MAC header to avdataoffset - if ($thisfile_monkeysaudio_raw['nVersion'] >= 3980) { - $info['avdataoffset'] += $thisfile_monkeysaudio_raw['nDescriptorBytes']; - $info['avdataoffset'] += $thisfile_monkeysaudio_raw['nHeaderBytes']; - $info['avdataoffset'] += $thisfile_monkeysaudio_raw['nSeekTableBytes']; - $info['avdataoffset'] += $thisfile_monkeysaudio_raw['nHeaderDataBytes']; - - $info['avdataend'] -= $thisfile_monkeysaudio_raw['nTerminatingDataBytes']; - } else { - $info['avdataoffset'] += $offset; - } - - if ($thisfile_monkeysaudio_raw['nVersion'] >= 3980) { - if ($thisfile_monkeysaudio_raw['cFileMD5'] === str_repeat("\x00", 16)) { - //$info['warning'][] = 'cFileMD5 is null'; - } else { - $info['md5_data_source'] = ''; - $md5 = $thisfile_monkeysaudio_raw['cFileMD5']; - for ($i = 0; $i < strlen($md5); $i++) { - $info['md5_data_source'] .= str_pad(dechex(ord($md5{$i})), 2, '00', STR_PAD_LEFT); - } - if (!preg_match('/^[0-9a-f]{32}$/', $info['md5_data_source'])) { - unset($info['md5_data_source']); - } - } - } - - - - $info['audio']['bits_per_sample'] = $thisfile_monkeysaudio['bits_per_sample']; - $info['audio']['encoder'] = 'MAC v'.number_format($thisfile_monkeysaudio['version'], 2); - $info['audio']['encoder_options'] = ucfirst($thisfile_monkeysaudio['compression']).' compression'; - - return true; - } - - function MonkeyCompressionLevelNameLookup($compressionlevel) { - static $MonkeyCompressionLevelNameLookup = array( - 0 => 'unknown', - 1000 => 'fast', - 2000 => 'normal', - 3000 => 'high', - 4000 => 'extra-high', - 5000 => 'insane' - ); - return (isset($MonkeyCompressionLevelNameLookup[$compressionlevel]) ? $MonkeyCompressionLevelNameLookup[$compressionlevel] : 'invalid'); - } - - function MonkeySamplesPerFrame($versionid, $compressionlevel) { - if ($versionid >= 3950) { - return 73728 * 4; - } elseif ($versionid >= 3900) { - return 73728; - } elseif (($versionid >= 3800) && ($compressionlevel == 4000)) { - return 73728; - } else { - return 9216; - } - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.mp3.php b/3rdparty/getid3/module.audio.mp3.php deleted file mode 100644 index 909646e1a1eac2f5602048a7d2ba939619fecb37..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.mp3.php +++ /dev/null @@ -1,2011 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.mp3.php // -// module for analyzing MP3 files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -// number of frames to scan to determine if MPEG-audio sequence is valid -// Lower this number to 5-20 for faster scanning -// Increase this number to 50+ for most accurate detection of valid VBR/CBR -// mpeg-audio streams -define('GETID3_MP3_VALID_CHECK_FRAMES', 35); - - -class getid3_mp3 extends getid3_handler -{ - - var $allow_bruteforce = false; // forces getID3() to scan the file byte-by-byte and log all the valid audio frame headers - extremely slow, unrecommended, but may provide data from otherwise-unusuable files - - function Analyze() { - $info = &$this->getid3->info; - - $initialOffset = $info['avdataoffset']; - - if (!$this->getOnlyMPEGaudioInfo($info['avdataoffset'])) { - if ($this->allow_bruteforce) { - $info['error'][] = 'Rescanning file in BruteForce mode'; - $this->getOnlyMPEGaudioInfoBruteForce($this->getid3->fp, $info); - } - } - - - if (isset($info['mpeg']['audio']['bitrate_mode'])) { - $info['audio']['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']); - } - - if (((isset($info['id3v2']['headerlength']) && ($info['avdataoffset'] > $info['id3v2']['headerlength'])) || (!isset($info['id3v2']) && ($info['avdataoffset'] > 0) && ($info['avdataoffset'] != $initialOffset)))) { - - $synchoffsetwarning = 'Unknown data before synch '; - if (isset($info['id3v2']['headerlength'])) { - $synchoffsetwarning .= '(ID3v2 header ends at '.$info['id3v2']['headerlength'].', then '.($info['avdataoffset'] - $info['id3v2']['headerlength']).' bytes garbage, '; - } elseif ($initialOffset > 0) { - $synchoffsetwarning .= '(should be at '.$initialOffset.', '; - } else { - $synchoffsetwarning .= '(should be at beginning of file, '; - } - $synchoffsetwarning .= 'synch detected at '.$info['avdataoffset'].')'; - if (isset($info['audio']['bitrate_mode']) && ($info['audio']['bitrate_mode'] == 'cbr')) { - - if (!empty($info['id3v2']['headerlength']) && (($info['avdataoffset'] - $info['id3v2']['headerlength']) == $info['mpeg']['audio']['framelength'])) { - - $synchoffsetwarning .= '. This is a known problem with some versions of LAME (3.90-3.92) DLL in CBR mode.'; - $info['audio']['codec'] = 'LAME'; - $CurrentDataLAMEversionString = 'LAME3.'; - - } elseif (empty($info['id3v2']['headerlength']) && ($info['avdataoffset'] == $info['mpeg']['audio']['framelength'])) { - - $synchoffsetwarning .= '. This is a known problem with some versions of LAME (3.90 - 3.92) DLL in CBR mode.'; - $info['audio']['codec'] = 'LAME'; - $CurrentDataLAMEversionString = 'LAME3.'; - - } - - } - $info['warning'][] = $synchoffsetwarning; - - } - - if (isset($info['mpeg']['audio']['LAME'])) { - $info['audio']['codec'] = 'LAME'; - if (!empty($info['mpeg']['audio']['LAME']['long_version'])) { - $info['audio']['encoder'] = rtrim($info['mpeg']['audio']['LAME']['long_version'], "\x00"); - } elseif (!empty($info['mpeg']['audio']['LAME']['short_version'])) { - $info['audio']['encoder'] = rtrim($info['mpeg']['audio']['LAME']['short_version'], "\x00"); - } - } - - $CurrentDataLAMEversionString = (!empty($CurrentDataLAMEversionString) ? $CurrentDataLAMEversionString : (isset($info['audio']['encoder']) ? $info['audio']['encoder'] : '')); - if (!empty($CurrentDataLAMEversionString) && (substr($CurrentDataLAMEversionString, 0, 6) == 'LAME3.') && !preg_match('[0-9\)]', substr($CurrentDataLAMEversionString, -1))) { - // a version number of LAME that does not end with a number like "LAME3.92" - // or with a closing parenthesis like "LAME3.88 (alpha)" - // or a version of LAME with the LAMEtag-not-filled-in-DLL-mode bug (3.90-3.92) - - // not sure what the actual last frame length will be, but will be less than or equal to 1441 - $PossiblyLongerLAMEversion_FrameLength = 1441; - - // Not sure what version of LAME this is - look in padding of last frame for longer version string - $PossibleLAMEversionStringOffset = $info['avdataend'] - $PossiblyLongerLAMEversion_FrameLength; - fseek($this->getid3->fp, $PossibleLAMEversionStringOffset); - $PossiblyLongerLAMEversion_Data = fread($this->getid3->fp, $PossiblyLongerLAMEversion_FrameLength); - switch (substr($CurrentDataLAMEversionString, -1)) { - case 'a': - case 'b': - // "LAME3.94a" will have a longer version string of "LAME3.94 (alpha)" for example - // need to trim off "a" to match longer string - $CurrentDataLAMEversionString = substr($CurrentDataLAMEversionString, 0, -1); - break; - } - if (($PossiblyLongerLAMEversion_String = strstr($PossiblyLongerLAMEversion_Data, $CurrentDataLAMEversionString)) !== false) { - if (substr($PossiblyLongerLAMEversion_String, 0, strlen($CurrentDataLAMEversionString)) == $CurrentDataLAMEversionString) { - $PossiblyLongerLAMEversion_NewString = substr($PossiblyLongerLAMEversion_String, 0, strspn($PossiblyLongerLAMEversion_String, 'LAME0123456789., (abcdefghijklmnopqrstuvwxyzJFSOND)')); //"LAME3.90.3" "LAME3.87 (beta 1, Sep 27 2000)" "LAME3.88 (beta)" - if (empty($info['audio']['encoder']) || (strlen($PossiblyLongerLAMEversion_NewString) > strlen($info['audio']['encoder']))) { - $info['audio']['encoder'] = $PossiblyLongerLAMEversion_NewString; - } - } - } - } - if (!empty($info['audio']['encoder'])) { - $info['audio']['encoder'] = rtrim($info['audio']['encoder'], "\x00 "); - } - - switch (isset($info['mpeg']['audio']['layer']) ? $info['mpeg']['audio']['layer'] : '') { - case 1: - case 2: - $info['audio']['dataformat'] = 'mp'.$info['mpeg']['audio']['layer']; - break; - } - if (isset($info['fileformat']) && ($info['fileformat'] == 'mp3')) { - switch ($info['audio']['dataformat']) { - case 'mp1': - case 'mp2': - case 'mp3': - $info['fileformat'] = $info['audio']['dataformat']; - break; - - default: - $info['warning'][] = 'Expecting [audio][dataformat] to be mp1/mp2/mp3 when fileformat == mp3, [audio][dataformat] actually "'.$info['audio']['dataformat'].'"'; - break; - } - } - - if (empty($info['fileformat'])) { - unset($info['fileformat']); - unset($info['audio']['bitrate_mode']); - unset($info['avdataoffset']); - unset($info['avdataend']); - return false; - } - - $info['mime_type'] = 'audio/mpeg'; - $info['audio']['lossless'] = false; - - // Calculate playtime - if (!isset($info['playtime_seconds']) && isset($info['audio']['bitrate']) && ($info['audio']['bitrate'] > 0)) { - $info['playtime_seconds'] = ($info['avdataend'] - $info['avdataoffset']) * 8 / $info['audio']['bitrate']; - } - - $info['audio']['encoder_options'] = $this->GuessEncoderOptions(); - - return true; - } - - - function GuessEncoderOptions() { - // shortcuts - $info = &$this->getid3->info; - if (!empty($info['mpeg']['audio'])) { - $thisfile_mpeg_audio = &$info['mpeg']['audio']; - if (!empty($thisfile_mpeg_audio['LAME'])) { - $thisfile_mpeg_audio_lame = &$thisfile_mpeg_audio['LAME']; - } - } - - $encoder_options = ''; - static $NamedPresetBitrates = array(16, 24, 40, 56, 112, 128, 160, 192, 256); - - if (isset($thisfile_mpeg_audio['VBR_method']) && ($thisfile_mpeg_audio['VBR_method'] == 'Fraunhofer') && !empty($thisfile_mpeg_audio['VBR_quality'])) { - - $encoder_options = 'VBR q'.$thisfile_mpeg_audio['VBR_quality']; - - } elseif (!empty($thisfile_mpeg_audio_lame['preset_used']) && (!in_array($thisfile_mpeg_audio_lame['preset_used_id'], $NamedPresetBitrates))) { - - $encoder_options = $thisfile_mpeg_audio_lame['preset_used']; - - } elseif (!empty($thisfile_mpeg_audio_lame['vbr_quality'])) { - - static $KnownEncoderValues = array(); - if (empty($KnownEncoderValues)) { - - //$KnownEncoderValues[abrbitrate_minbitrate][vbr_quality][raw_vbr_method][raw_noise_shaping][raw_stereo_mode][ath_type][lowpass_frequency] = 'preset name'; - $KnownEncoderValues[0xFF][58][1][1][3][2][20500] = '--alt-preset insane'; // 3.90, 3.90.1, 3.92 - $KnownEncoderValues[0xFF][58][1][1][3][2][20600] = '--alt-preset insane'; // 3.90.2, 3.90.3, 3.91 - $KnownEncoderValues[0xFF][57][1][1][3][4][20500] = '--alt-preset insane'; // 3.94, 3.95 - $KnownEncoderValues['**'][78][3][2][3][2][19500] = '--alt-preset extreme'; // 3.90, 3.90.1, 3.92 - $KnownEncoderValues['**'][78][3][2][3][2][19600] = '--alt-preset extreme'; // 3.90.2, 3.91 - $KnownEncoderValues['**'][78][3][1][3][2][19600] = '--alt-preset extreme'; // 3.90.3 - $KnownEncoderValues['**'][78][4][2][3][2][19500] = '--alt-preset fast extreme'; // 3.90, 3.90.1, 3.92 - $KnownEncoderValues['**'][78][4][2][3][2][19600] = '--alt-preset fast extreme'; // 3.90.2, 3.90.3, 3.91 - $KnownEncoderValues['**'][78][3][2][3][4][19000] = '--alt-preset standard'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues['**'][78][3][1][3][4][19000] = '--alt-preset standard'; // 3.90.3 - $KnownEncoderValues['**'][78][4][2][3][4][19000] = '--alt-preset fast standard'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues['**'][78][4][1][3][4][19000] = '--alt-preset fast standard'; // 3.90.3 - $KnownEncoderValues['**'][88][4][1][3][3][19500] = '--r3mix'; // 3.90, 3.90.1, 3.92 - $KnownEncoderValues['**'][88][4][1][3][3][19600] = '--r3mix'; // 3.90.2, 3.90.3, 3.91 - $KnownEncoderValues['**'][67][4][1][3][4][18000] = '--r3mix'; // 3.94, 3.95 - $KnownEncoderValues['**'][68][3][2][3][4][18000] = '--alt-preset medium'; // 3.90.3 - $KnownEncoderValues['**'][68][4][2][3][4][18000] = '--alt-preset fast medium'; // 3.90.3 - - $KnownEncoderValues[0xFF][99][1][1][1][2][0] = '--preset studio'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues[0xFF][58][2][1][3][2][20600] = '--preset studio'; // 3.90.3, 3.93.1 - $KnownEncoderValues[0xFF][58][2][1][3][2][20500] = '--preset studio'; // 3.93 - $KnownEncoderValues[0xFF][57][2][1][3][4][20500] = '--preset studio'; // 3.94, 3.95 - $KnownEncoderValues[0xC0][88][1][1][1][2][0] = '--preset cd'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues[0xC0][58][2][2][3][2][19600] = '--preset cd'; // 3.90.3, 3.93.1 - $KnownEncoderValues[0xC0][58][2][2][3][2][19500] = '--preset cd'; // 3.93 - $KnownEncoderValues[0xC0][57][2][1][3][4][19500] = '--preset cd'; // 3.94, 3.95 - $KnownEncoderValues[0xA0][78][1][1][3][2][18000] = '--preset hifi'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues[0xA0][58][2][2][3][2][18000] = '--preset hifi'; // 3.90.3, 3.93, 3.93.1 - $KnownEncoderValues[0xA0][57][2][1][3][4][18000] = '--preset hifi'; // 3.94, 3.95 - $KnownEncoderValues[0x80][67][1][1][3][2][18000] = '--preset tape'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues[0x80][67][1][1][3][2][15000] = '--preset radio'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues[0x70][67][1][1][3][2][15000] = '--preset fm'; // 3.90, 3.90.1, 3.90.2, 3.91, 3.92 - $KnownEncoderValues[0x70][58][2][2][3][2][16000] = '--preset tape/radio/fm'; // 3.90.3, 3.93, 3.93.1 - $KnownEncoderValues[0x70][57][2][1][3][4][16000] = '--preset tape/radio/fm'; // 3.94, 3.95 - $KnownEncoderValues[0x38][58][2][2][0][2][10000] = '--preset voice'; // 3.90.3, 3.93, 3.93.1 - $KnownEncoderValues[0x38][57][2][1][0][4][15000] = '--preset voice'; // 3.94, 3.95 - $KnownEncoderValues[0x38][57][2][1][0][4][16000] = '--preset voice'; // 3.94a14 - $KnownEncoderValues[0x28][65][1][1][0][2][7500] = '--preset mw-us'; // 3.90, 3.90.1, 3.92 - $KnownEncoderValues[0x28][65][1][1][0][2][7600] = '--preset mw-us'; // 3.90.2, 3.91 - $KnownEncoderValues[0x28][58][2][2][0][2][7000] = '--preset mw-us'; // 3.90.3, 3.93, 3.93.1 - $KnownEncoderValues[0x28][57][2][1][0][4][10500] = '--preset mw-us'; // 3.94, 3.95 - $KnownEncoderValues[0x28][57][2][1][0][4][11200] = '--preset mw-us'; // 3.94a14 - $KnownEncoderValues[0x28][57][2][1][0][4][8800] = '--preset mw-us'; // 3.94a15 - $KnownEncoderValues[0x18][58][2][2][0][2][4000] = '--preset phon+/lw/mw-eu/sw'; // 3.90.3, 3.93.1 - $KnownEncoderValues[0x18][58][2][2][0][2][3900] = '--preset phon+/lw/mw-eu/sw'; // 3.93 - $KnownEncoderValues[0x18][57][2][1][0][4][5900] = '--preset phon+/lw/mw-eu/sw'; // 3.94, 3.95 - $KnownEncoderValues[0x18][57][2][1][0][4][6200] = '--preset phon+/lw/mw-eu/sw'; // 3.94a14 - $KnownEncoderValues[0x18][57][2][1][0][4][3200] = '--preset phon+/lw/mw-eu/sw'; // 3.94a15 - $KnownEncoderValues[0x10][58][2][2][0][2][3800] = '--preset phone'; // 3.90.3, 3.93.1 - $KnownEncoderValues[0x10][58][2][2][0][2][3700] = '--preset phone'; // 3.93 - $KnownEncoderValues[0x10][57][2][1][0][4][5600] = '--preset phone'; // 3.94, 3.95 - } - - if (isset($KnownEncoderValues[$thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate']][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']])) { - - $encoder_options = $KnownEncoderValues[$thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate']][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']]; - - } elseif (isset($KnownEncoderValues['**'][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']])) { - - $encoder_options = $KnownEncoderValues['**'][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']]; - - } elseif ($info['audio']['bitrate_mode'] == 'vbr') { - - // http://gabriel.mp3-tech.org/mp3infotag.html - // int Quality = (100 - 10 * gfp->VBR_q - gfp->quality)h - - - $LAME_V_value = 10 - ceil($thisfile_mpeg_audio_lame['vbr_quality'] / 10); - $LAME_q_value = 100 - $thisfile_mpeg_audio_lame['vbr_quality'] - ($LAME_V_value * 10); - $encoder_options = '-V'.$LAME_V_value.' -q'.$LAME_q_value; - - } elseif ($info['audio']['bitrate_mode'] == 'cbr') { - - $encoder_options = strtoupper($info['audio']['bitrate_mode']).ceil($info['audio']['bitrate'] / 1000); - - } else { - - $encoder_options = strtoupper($info['audio']['bitrate_mode']); - - } - - } elseif (!empty($thisfile_mpeg_audio_lame['bitrate_abr'])) { - - $encoder_options = 'ABR'.$thisfile_mpeg_audio_lame['bitrate_abr']; - - } elseif (!empty($info['audio']['bitrate'])) { - - if ($info['audio']['bitrate_mode'] == 'cbr') { - $encoder_options = strtoupper($info['audio']['bitrate_mode']).ceil($info['audio']['bitrate'] / 1000); - } else { - $encoder_options = strtoupper($info['audio']['bitrate_mode']); - } - - } - if (!empty($thisfile_mpeg_audio_lame['bitrate_min'])) { - $encoder_options .= ' -b'.$thisfile_mpeg_audio_lame['bitrate_min']; - } - - if (!empty($thisfile_mpeg_audio_lame['encoding_flags']['nogap_prev']) || !empty($thisfile_mpeg_audio_lame['encoding_flags']['nogap_next'])) { - $encoder_options .= ' --nogap'; - } - - if (!empty($thisfile_mpeg_audio_lame['lowpass_frequency'])) { - $ExplodedOptions = explode(' ', $encoder_options, 4); - if ($ExplodedOptions[0] == '--r3mix') { - $ExplodedOptions[1] = 'r3mix'; - } - switch ($ExplodedOptions[0]) { - case '--preset': - case '--alt-preset': - case '--r3mix': - if ($ExplodedOptions[1] == 'fast') { - $ExplodedOptions[1] .= ' '.$ExplodedOptions[2]; - } - switch ($ExplodedOptions[1]) { - case 'portable': - case 'medium': - case 'standard': - case 'extreme': - case 'insane': - case 'fast portable': - case 'fast medium': - case 'fast standard': - case 'fast extreme': - case 'fast insane': - case 'r3mix': - static $ExpectedLowpass = array( - 'insane|20500' => 20500, - 'insane|20600' => 20600, // 3.90.2, 3.90.3, 3.91 - 'medium|18000' => 18000, - 'fast medium|18000' => 18000, - 'extreme|19500' => 19500, // 3.90, 3.90.1, 3.92, 3.95 - 'extreme|19600' => 19600, // 3.90.2, 3.90.3, 3.91, 3.93.1 - 'fast extreme|19500' => 19500, // 3.90, 3.90.1, 3.92, 3.95 - 'fast extreme|19600' => 19600, // 3.90.2, 3.90.3, 3.91, 3.93.1 - 'standard|19000' => 19000, - 'fast standard|19000' => 19000, - 'r3mix|19500' => 19500, // 3.90, 3.90.1, 3.92 - 'r3mix|19600' => 19600, // 3.90.2, 3.90.3, 3.91 - 'r3mix|18000' => 18000, // 3.94, 3.95 - ); - if (!isset($ExpectedLowpass[$ExplodedOptions[1].'|'.$thisfile_mpeg_audio_lame['lowpass_frequency']]) && ($thisfile_mpeg_audio_lame['lowpass_frequency'] < 22050) && (round($thisfile_mpeg_audio_lame['lowpass_frequency'] / 1000) < round($thisfile_mpeg_audio['sample_rate'] / 2000))) { - $encoder_options .= ' --lowpass '.$thisfile_mpeg_audio_lame['lowpass_frequency']; - } - break; - - default: - break; - } - break; - } - } - - if (isset($thisfile_mpeg_audio_lame['raw']['source_sample_freq'])) { - if (($thisfile_mpeg_audio['sample_rate'] == 44100) && ($thisfile_mpeg_audio_lame['raw']['source_sample_freq'] != 1)) { - $encoder_options .= ' --resample 44100'; - } elseif (($thisfile_mpeg_audio['sample_rate'] == 48000) && ($thisfile_mpeg_audio_lame['raw']['source_sample_freq'] != 2)) { - $encoder_options .= ' --resample 48000'; - } elseif ($thisfile_mpeg_audio['sample_rate'] < 44100) { - switch ($thisfile_mpeg_audio_lame['raw']['source_sample_freq']) { - case 0: // <= 32000 - // may or may not be same as source frequency - ignore - break; - case 1: // 44100 - case 2: // 48000 - case 3: // 48000+ - $ExplodedOptions = explode(' ', $encoder_options, 4); - switch ($ExplodedOptions[0]) { - case '--preset': - case '--alt-preset': - switch ($ExplodedOptions[1]) { - case 'fast': - case 'portable': - case 'medium': - case 'standard': - case 'extreme': - case 'insane': - $encoder_options .= ' --resample '.$thisfile_mpeg_audio['sample_rate']; - break; - - default: - static $ExpectedResampledRate = array( - 'phon+/lw/mw-eu/sw|16000' => 16000, - 'mw-us|24000' => 24000, // 3.95 - 'mw-us|32000' => 32000, // 3.93 - 'mw-us|16000' => 16000, // 3.92 - 'phone|16000' => 16000, - 'phone|11025' => 11025, // 3.94a15 - 'radio|32000' => 32000, // 3.94a15 - 'fm/radio|32000' => 32000, // 3.92 - 'fm|32000' => 32000, // 3.90 - 'voice|32000' => 32000); - if (!isset($ExpectedResampledRate[$ExplodedOptions[1].'|'.$thisfile_mpeg_audio['sample_rate']])) { - $encoder_options .= ' --resample '.$thisfile_mpeg_audio['sample_rate']; - } - break; - } - break; - - case '--r3mix': - default: - $encoder_options .= ' --resample '.$thisfile_mpeg_audio['sample_rate']; - break; - } - break; - } - } - } - if (empty($encoder_options) && !empty($info['audio']['bitrate']) && !empty($info['audio']['bitrate_mode'])) { - //$encoder_options = strtoupper($info['audio']['bitrate_mode']).ceil($info['audio']['bitrate'] / 1000); - $encoder_options = strtoupper($info['audio']['bitrate_mode']); - } - - return $encoder_options; - } - - - function decodeMPEGaudioHeader($offset, &$info, $recursivesearch=true, $ScanAsCBR=false, $FastMPEGheaderScan=false) { - static $MPEGaudioVersionLookup; - static $MPEGaudioLayerLookup; - static $MPEGaudioBitrateLookup; - static $MPEGaudioFrequencyLookup; - static $MPEGaudioChannelModeLookup; - static $MPEGaudioModeExtensionLookup; - static $MPEGaudioEmphasisLookup; - if (empty($MPEGaudioVersionLookup)) { - $MPEGaudioVersionLookup = getid3_mp3::MPEGaudioVersionArray(); - $MPEGaudioLayerLookup = getid3_mp3::MPEGaudioLayerArray(); - $MPEGaudioBitrateLookup = getid3_mp3::MPEGaudioBitrateArray(); - $MPEGaudioFrequencyLookup = getid3_mp3::MPEGaudioFrequencyArray(); - $MPEGaudioChannelModeLookup = getid3_mp3::MPEGaudioChannelModeArray(); - $MPEGaudioModeExtensionLookup = getid3_mp3::MPEGaudioModeExtensionArray(); - $MPEGaudioEmphasisLookup = getid3_mp3::MPEGaudioEmphasisArray(); - } - - if (fseek($this->getid3->fp, $offset, SEEK_SET) != 0) { - $info['error'][] = 'decodeMPEGaudioHeader() failed to seek to next offset at '.$offset; - return false; - } - //$headerstring = fread($this->getid3->fp, 1441); // worst-case max length = 32kHz @ 320kbps layer 3 = 1441 bytes/frame - $headerstring = fread($this->getid3->fp, 226); // LAME header at offset 36 + 190 bytes of Xing/LAME data - - // MP3 audio frame structure: - // $aa $aa $aa $aa [$bb $bb] $cc... - // where $aa..$aa is the four-byte mpeg-audio header (below) - // $bb $bb is the optional 2-byte CRC - // and $cc... is the audio data - - $head4 = substr($headerstring, 0, 4); - - static $MPEGaudioHeaderDecodeCache = array(); - if (isset($MPEGaudioHeaderDecodeCache[$head4])) { - $MPEGheaderRawArray = $MPEGaudioHeaderDecodeCache[$head4]; - } else { - $MPEGheaderRawArray = getid3_mp3::MPEGaudioHeaderDecode($head4); - $MPEGaudioHeaderDecodeCache[$head4] = $MPEGheaderRawArray; - } - - static $MPEGaudioHeaderValidCache = array(); - if (!isset($MPEGaudioHeaderValidCache[$head4])) { // Not in cache - //$MPEGaudioHeaderValidCache[$head4] = getid3_mp3::MPEGaudioHeaderValid($MPEGheaderRawArray, false, true); // allow badly-formatted freeformat (from LAME 3.90 - 3.93.1) - $MPEGaudioHeaderValidCache[$head4] = getid3_mp3::MPEGaudioHeaderValid($MPEGheaderRawArray, false, false); - } - - // shortcut - if (!isset($info['mpeg']['audio'])) { - $info['mpeg']['audio'] = array(); - } - $thisfile_mpeg_audio = &$info['mpeg']['audio']; - - - if ($MPEGaudioHeaderValidCache[$head4]) { - $thisfile_mpeg_audio['raw'] = $MPEGheaderRawArray; - } else { - $info['error'][] = 'Invalid MPEG audio header ('.getid3_lib::PrintHexBytes($head4).') at offset '.$offset; - return false; - } - - if (!$FastMPEGheaderScan) { - $thisfile_mpeg_audio['version'] = $MPEGaudioVersionLookup[$thisfile_mpeg_audio['raw']['version']]; - $thisfile_mpeg_audio['layer'] = $MPEGaudioLayerLookup[$thisfile_mpeg_audio['raw']['layer']]; - - $thisfile_mpeg_audio['channelmode'] = $MPEGaudioChannelModeLookup[$thisfile_mpeg_audio['raw']['channelmode']]; - $thisfile_mpeg_audio['channels'] = (($thisfile_mpeg_audio['channelmode'] == 'mono') ? 1 : 2); - $thisfile_mpeg_audio['sample_rate'] = $MPEGaudioFrequencyLookup[$thisfile_mpeg_audio['version']][$thisfile_mpeg_audio['raw']['sample_rate']]; - $thisfile_mpeg_audio['protection'] = !$thisfile_mpeg_audio['raw']['protection']; - $thisfile_mpeg_audio['private'] = (bool) $thisfile_mpeg_audio['raw']['private']; - $thisfile_mpeg_audio['modeextension'] = $MPEGaudioModeExtensionLookup[$thisfile_mpeg_audio['layer']][$thisfile_mpeg_audio['raw']['modeextension']]; - $thisfile_mpeg_audio['copyright'] = (bool) $thisfile_mpeg_audio['raw']['copyright']; - $thisfile_mpeg_audio['original'] = (bool) $thisfile_mpeg_audio['raw']['original']; - $thisfile_mpeg_audio['emphasis'] = $MPEGaudioEmphasisLookup[$thisfile_mpeg_audio['raw']['emphasis']]; - - $info['audio']['channels'] = $thisfile_mpeg_audio['channels']; - $info['audio']['sample_rate'] = $thisfile_mpeg_audio['sample_rate']; - - if ($thisfile_mpeg_audio['protection']) { - $thisfile_mpeg_audio['crc'] = getid3_lib::BigEndian2Int(substr($headerstring, 4, 2)); - } - } - - if ($thisfile_mpeg_audio['raw']['bitrate'] == 15) { - // http://www.hydrogenaudio.org/?act=ST&f=16&t=9682&st=0 - $info['warning'][] = 'Invalid bitrate index (15), this is a known bug in free-format MP3s encoded by LAME v3.90 - 3.93.1'; - $thisfile_mpeg_audio['raw']['bitrate'] = 0; - } - $thisfile_mpeg_audio['padding'] = (bool) $thisfile_mpeg_audio['raw']['padding']; - $thisfile_mpeg_audio['bitrate'] = $MPEGaudioBitrateLookup[$thisfile_mpeg_audio['version']][$thisfile_mpeg_audio['layer']][$thisfile_mpeg_audio['raw']['bitrate']]; - - if (($thisfile_mpeg_audio['bitrate'] == 'free') && ($offset == $info['avdataoffset'])) { - // only skip multiple frame check if free-format bitstream found at beginning of file - // otherwise is quite possibly simply corrupted data - $recursivesearch = false; - } - - // For Layer 2 there are some combinations of bitrate and mode which are not allowed. - if (!$FastMPEGheaderScan && ($thisfile_mpeg_audio['layer'] == '2')) { - - $info['audio']['dataformat'] = 'mp2'; - switch ($thisfile_mpeg_audio['channelmode']) { - - case 'mono': - if (($thisfile_mpeg_audio['bitrate'] == 'free') || ($thisfile_mpeg_audio['bitrate'] <= 192000)) { - // these are ok - } else { - $info['error'][] = $thisfile_mpeg_audio['bitrate'].'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.'; - return false; - } - break; - - case 'stereo': - case 'joint stereo': - case 'dual channel': - if (($thisfile_mpeg_audio['bitrate'] == 'free') || ($thisfile_mpeg_audio['bitrate'] == 64000) || ($thisfile_mpeg_audio['bitrate'] >= 96000)) { - // these are ok - } else { - $info['error'][] = intval(round($thisfile_mpeg_audio['bitrate'] / 1000)).'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.'; - return false; - } - break; - - } - - } - - - if ($info['audio']['sample_rate'] > 0) { - $thisfile_mpeg_audio['framelength'] = getid3_mp3::MPEGaudioFrameLength($thisfile_mpeg_audio['bitrate'], $thisfile_mpeg_audio['version'], $thisfile_mpeg_audio['layer'], (int) $thisfile_mpeg_audio['padding'], $info['audio']['sample_rate']); - } - - $nextframetestoffset = $offset + 1; - if ($thisfile_mpeg_audio['bitrate'] != 'free') { - - $info['audio']['bitrate'] = $thisfile_mpeg_audio['bitrate']; - - if (isset($thisfile_mpeg_audio['framelength'])) { - $nextframetestoffset = $offset + $thisfile_mpeg_audio['framelength']; - } else { - $info['error'][] = 'Frame at offset('.$offset.') is has an invalid frame length.'; - return false; - } - - } - - $ExpectedNumberOfAudioBytes = 0; - - //////////////////////////////////////////////////////////////////////////////////// - // Variable-bitrate headers - - if (substr($headerstring, 4 + 32, 4) == 'VBRI') { - // Fraunhofer VBR header is hardcoded 'VBRI' at offset 0x24 (36) - // specs taken from http://minnie.tuhs.org/pipermail/mp3encoder/2001-January/001800.html - - $thisfile_mpeg_audio['bitrate_mode'] = 'vbr'; - $thisfile_mpeg_audio['VBR_method'] = 'Fraunhofer'; - $info['audio']['codec'] = 'Fraunhofer'; - - $SideInfoData = substr($headerstring, 4 + 2, 32); - - $FraunhoferVBROffset = 36; - - $thisfile_mpeg_audio['VBR_encoder_version'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 4, 2)); // VbriVersion - $thisfile_mpeg_audio['VBR_encoder_delay'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 6, 2)); // VbriDelay - $thisfile_mpeg_audio['VBR_quality'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 8, 2)); // VbriQuality - $thisfile_mpeg_audio['VBR_bytes'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 10, 4)); // VbriStreamBytes - $thisfile_mpeg_audio['VBR_frames'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 14, 4)); // VbriStreamFrames - $thisfile_mpeg_audio['VBR_seek_offsets'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 18, 2)); // VbriTableSize - $thisfile_mpeg_audio['VBR_seek_scale'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 20, 2)); // VbriTableScale - $thisfile_mpeg_audio['VBR_entry_bytes'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 22, 2)); // VbriEntryBytes - $thisfile_mpeg_audio['VBR_entry_frames'] = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 24, 2)); // VbriEntryFrames - - $ExpectedNumberOfAudioBytes = $thisfile_mpeg_audio['VBR_bytes']; - - $previousbyteoffset = $offset; - for ($i = 0; $i < $thisfile_mpeg_audio['VBR_seek_offsets']; $i++) { - $Fraunhofer_OffsetN = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset, $thisfile_mpeg_audio['VBR_entry_bytes'])); - $FraunhoferVBROffset += $thisfile_mpeg_audio['VBR_entry_bytes']; - $thisfile_mpeg_audio['VBR_offsets_relative'][$i] = ($Fraunhofer_OffsetN * $thisfile_mpeg_audio['VBR_seek_scale']); - $thisfile_mpeg_audio['VBR_offsets_absolute'][$i] = ($Fraunhofer_OffsetN * $thisfile_mpeg_audio['VBR_seek_scale']) + $previousbyteoffset; - $previousbyteoffset += $Fraunhofer_OffsetN; - } - - - } else { - - // Xing VBR header is hardcoded 'Xing' at a offset 0x0D (13), 0x15 (21) or 0x24 (36) - // depending on MPEG layer and number of channels - - $VBRidOffset = getid3_mp3::XingVBRidOffset($thisfile_mpeg_audio['version'], $thisfile_mpeg_audio['channelmode']); - $SideInfoData = substr($headerstring, 4 + 2, $VBRidOffset - 4); - - if ((substr($headerstring, $VBRidOffset, strlen('Xing')) == 'Xing') || (substr($headerstring, $VBRidOffset, strlen('Info')) == 'Info')) { - // 'Xing' is traditional Xing VBR frame - // 'Info' is LAME-encoded CBR (This was done to avoid CBR files to be recognized as traditional Xing VBR files by some decoders.) - // 'Info' *can* legally be used to specify a VBR file as well, however. - - // http://www.multiweb.cz/twoinches/MP3inside.htm - //00..03 = "Xing" or "Info" - //04..07 = Flags: - // 0x01 Frames Flag set if value for number of frames in file is stored - // 0x02 Bytes Flag set if value for filesize in bytes is stored - // 0x04 TOC Flag set if values for TOC are stored - // 0x08 VBR Scale Flag set if values for VBR scale is stored - //08..11 Frames: Number of frames in file (including the first Xing/Info one) - //12..15 Bytes: File length in Bytes - //16..115 TOC (Table of Contents): - // Contains of 100 indexes (one Byte length) for easier lookup in file. Approximately solves problem with moving inside file. - // Each Byte has a value according this formula: - // (TOC[i] / 256) * fileLenInBytes - // So if song lasts eg. 240 sec. and you want to jump to 60. sec. (and file is 5 000 000 Bytes length) you can use: - // TOC[(60/240)*100] = TOC[25] - // and corresponding Byte in file is then approximately at: - // (TOC[25]/256) * 5000000 - //116..119 VBR Scale - - - // should be safe to leave this at 'vbr' and let it be overriden to 'cbr' if a CBR preset/mode is used by LAME -// if (substr($headerstring, $VBRidOffset, strlen('Info')) == 'Xing') { - $thisfile_mpeg_audio['bitrate_mode'] = 'vbr'; - $thisfile_mpeg_audio['VBR_method'] = 'Xing'; -// } else { -// $ScanAsCBR = true; -// $thisfile_mpeg_audio['bitrate_mode'] = 'cbr'; -// } - - $thisfile_mpeg_audio['xing_flags_raw'] = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset + 4, 4)); - - $thisfile_mpeg_audio['xing_flags']['frames'] = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000001); - $thisfile_mpeg_audio['xing_flags']['bytes'] = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000002); - $thisfile_mpeg_audio['xing_flags']['toc'] = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000004); - $thisfile_mpeg_audio['xing_flags']['vbr_scale'] = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000008); - - if ($thisfile_mpeg_audio['xing_flags']['frames']) { - $thisfile_mpeg_audio['VBR_frames'] = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset + 8, 4)); - //$thisfile_mpeg_audio['VBR_frames']--; // don't count header Xing/Info frame - } - if ($thisfile_mpeg_audio['xing_flags']['bytes']) { - $thisfile_mpeg_audio['VBR_bytes'] = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset + 12, 4)); - } - - //if (($thisfile_mpeg_audio['bitrate'] == 'free') && !empty($thisfile_mpeg_audio['VBR_frames']) && !empty($thisfile_mpeg_audio['VBR_bytes'])) { - if (!empty($thisfile_mpeg_audio['VBR_frames']) && !empty($thisfile_mpeg_audio['VBR_bytes'])) { - - $framelengthfloat = $thisfile_mpeg_audio['VBR_bytes'] / $thisfile_mpeg_audio['VBR_frames']; - - if ($thisfile_mpeg_audio['layer'] == '1') { - // BitRate = (((FrameLengthInBytes / 4) - Padding) * SampleRate) / 12 - //$info['audio']['bitrate'] = ((($framelengthfloat / 4) - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 12; - $info['audio']['bitrate'] = ($framelengthfloat / 4) * $thisfile_mpeg_audio['sample_rate'] * (2 / $info['audio']['channels']) / 12; - } else { - // Bitrate = ((FrameLengthInBytes - Padding) * SampleRate) / 144 - //$info['audio']['bitrate'] = (($framelengthfloat - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 144; - $info['audio']['bitrate'] = $framelengthfloat * $thisfile_mpeg_audio['sample_rate'] * (2 / $info['audio']['channels']) / 144; - } - $thisfile_mpeg_audio['framelength'] = floor($framelengthfloat); - } - - if ($thisfile_mpeg_audio['xing_flags']['toc']) { - $LAMEtocData = substr($headerstring, $VBRidOffset + 16, 100); - for ($i = 0; $i < 100; $i++) { - $thisfile_mpeg_audio['toc'][$i] = ord($LAMEtocData{$i}); - } - } - if ($thisfile_mpeg_audio['xing_flags']['vbr_scale']) { - $thisfile_mpeg_audio['VBR_scale'] = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset + 116, 4)); - } - - - // http://gabriel.mp3-tech.org/mp3infotag.html - if (substr($headerstring, $VBRidOffset + 120, 4) == 'LAME') { - - // shortcut - $thisfile_mpeg_audio['LAME'] = array(); - $thisfile_mpeg_audio_lame = &$thisfile_mpeg_audio['LAME']; - - - $thisfile_mpeg_audio_lame['long_version'] = substr($headerstring, $VBRidOffset + 120, 20); - $thisfile_mpeg_audio_lame['short_version'] = substr($thisfile_mpeg_audio_lame['long_version'], 0, 9); - - if ($thisfile_mpeg_audio_lame['short_version'] >= 'LAME3.90') { - - // extra 11 chars are not part of version string when LAMEtag present - unset($thisfile_mpeg_audio_lame['long_version']); - - // It the LAME tag was only introduced in LAME v3.90 - // http://www.hydrogenaudio.org/?act=ST&f=15&t=9933 - - // Offsets of various bytes in http://gabriel.mp3-tech.org/mp3infotag.html - // are assuming a 'Xing' identifier offset of 0x24, which is the case for - // MPEG-1 non-mono, but not for other combinations - $LAMEtagOffsetContant = $VBRidOffset - 0x24; - - // shortcuts - $thisfile_mpeg_audio_lame['RGAD'] = array('track'=>array(), 'album'=>array()); - $thisfile_mpeg_audio_lame_RGAD = &$thisfile_mpeg_audio_lame['RGAD']; - $thisfile_mpeg_audio_lame_RGAD_track = &$thisfile_mpeg_audio_lame_RGAD['track']; - $thisfile_mpeg_audio_lame_RGAD_album = &$thisfile_mpeg_audio_lame_RGAD['album']; - $thisfile_mpeg_audio_lame['raw'] = array(); - $thisfile_mpeg_audio_lame_raw = &$thisfile_mpeg_audio_lame['raw']; - - // byte $9B VBR Quality - // This field is there to indicate a quality level, although the scale was not precised in the original Xing specifications. - // Actually overwrites original Xing bytes - unset($thisfile_mpeg_audio['VBR_scale']); - $thisfile_mpeg_audio_lame['vbr_quality'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0x9B, 1)); - - // bytes $9C-$A4 Encoder short VersionString - $thisfile_mpeg_audio_lame['short_version'] = substr($headerstring, $LAMEtagOffsetContant + 0x9C, 9); - - // byte $A5 Info Tag revision + VBR method - $LAMEtagRevisionVBRmethod = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA5, 1)); - - $thisfile_mpeg_audio_lame['tag_revision'] = ($LAMEtagRevisionVBRmethod & 0xF0) >> 4; - $thisfile_mpeg_audio_lame_raw['vbr_method'] = $LAMEtagRevisionVBRmethod & 0x0F; - $thisfile_mpeg_audio_lame['vbr_method'] = getid3_mp3::LAMEvbrMethodLookup($thisfile_mpeg_audio_lame_raw['vbr_method']); - $thisfile_mpeg_audio['bitrate_mode'] = substr($thisfile_mpeg_audio_lame['vbr_method'], 0, 3); // usually either 'cbr' or 'vbr', but truncates 'vbr-old / vbr-rh' to 'vbr' - - // byte $A6 Lowpass filter value - $thisfile_mpeg_audio_lame['lowpass_frequency'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA6, 1)) * 100; - - // bytes $A7-$AE Replay Gain - // http://privatewww.essex.ac.uk/~djmrob/replaygain/rg_data_format.html - // bytes $A7-$AA : 32 bit floating point "Peak signal amplitude" - if ($thisfile_mpeg_audio_lame['short_version'] >= 'LAME3.94b') { - // LAME 3.94a16 and later - 9.23 fixed point - // ie 0x0059E2EE / (2^23) = 5890798 / 8388608 = 0.7022378444671630859375 - $thisfile_mpeg_audio_lame_RGAD['peak_amplitude'] = (float) ((getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA7, 4))) / 8388608); - } else { - // LAME 3.94a15 and earlier - 32-bit floating point - // Actually 3.94a16 will fall in here too and be WRONG, but is hard to detect 3.94a16 vs 3.94a15 - $thisfile_mpeg_audio_lame_RGAD['peak_amplitude'] = getid3_lib::LittleEndian2Float(substr($headerstring, $LAMEtagOffsetContant + 0xA7, 4)); - } - if ($thisfile_mpeg_audio_lame_RGAD['peak_amplitude'] == 0) { - unset($thisfile_mpeg_audio_lame_RGAD['peak_amplitude']); - } else { - $thisfile_mpeg_audio_lame_RGAD['peak_db'] = getid3_lib::RGADamplitude2dB($thisfile_mpeg_audio_lame_RGAD['peak_amplitude']); - } - - $thisfile_mpeg_audio_lame_raw['RGAD_track'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAB, 2)); - $thisfile_mpeg_audio_lame_raw['RGAD_album'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAD, 2)); - - - if ($thisfile_mpeg_audio_lame_raw['RGAD_track'] != 0) { - - $thisfile_mpeg_audio_lame_RGAD_track['raw']['name'] = ($thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0xE000) >> 13; - $thisfile_mpeg_audio_lame_RGAD_track['raw']['originator'] = ($thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0x1C00) >> 10; - $thisfile_mpeg_audio_lame_RGAD_track['raw']['sign_bit'] = ($thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0x0200) >> 9; - $thisfile_mpeg_audio_lame_RGAD_track['raw']['gain_adjust'] = $thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0x01FF; - $thisfile_mpeg_audio_lame_RGAD_track['name'] = getid3_lib::RGADnameLookup($thisfile_mpeg_audio_lame_RGAD_track['raw']['name']); - $thisfile_mpeg_audio_lame_RGAD_track['originator'] = getid3_lib::RGADoriginatorLookup($thisfile_mpeg_audio_lame_RGAD_track['raw']['originator']); - $thisfile_mpeg_audio_lame_RGAD_track['gain_db'] = getid3_lib::RGADadjustmentLookup($thisfile_mpeg_audio_lame_RGAD_track['raw']['gain_adjust'], $thisfile_mpeg_audio_lame_RGAD_track['raw']['sign_bit']); - - if (!empty($thisfile_mpeg_audio_lame_RGAD['peak_amplitude'])) { - $info['replay_gain']['track']['peak'] = $thisfile_mpeg_audio_lame_RGAD['peak_amplitude']; - } - $info['replay_gain']['track']['originator'] = $thisfile_mpeg_audio_lame_RGAD_track['originator']; - $info['replay_gain']['track']['adjustment'] = $thisfile_mpeg_audio_lame_RGAD_track['gain_db']; - } else { - unset($thisfile_mpeg_audio_lame_RGAD['track']); - } - if ($thisfile_mpeg_audio_lame_raw['RGAD_album'] != 0) { - - $thisfile_mpeg_audio_lame_RGAD_album['raw']['name'] = ($thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0xE000) >> 13; - $thisfile_mpeg_audio_lame_RGAD_album['raw']['originator'] = ($thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0x1C00) >> 10; - $thisfile_mpeg_audio_lame_RGAD_album['raw']['sign_bit'] = ($thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0x0200) >> 9; - $thisfile_mpeg_audio_lame_RGAD_album['raw']['gain_adjust'] = $thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0x01FF; - $thisfile_mpeg_audio_lame_RGAD_album['name'] = getid3_lib::RGADnameLookup($thisfile_mpeg_audio_lame_RGAD_album['raw']['name']); - $thisfile_mpeg_audio_lame_RGAD_album['originator'] = getid3_lib::RGADoriginatorLookup($thisfile_mpeg_audio_lame_RGAD_album['raw']['originator']); - $thisfile_mpeg_audio_lame_RGAD_album['gain_db'] = getid3_lib::RGADadjustmentLookup($thisfile_mpeg_audio_lame_RGAD_album['raw']['gain_adjust'], $thisfile_mpeg_audio_lame_RGAD_album['raw']['sign_bit']); - - if (!empty($thisfile_mpeg_audio_lame_RGAD['peak_amplitude'])) { - $info['replay_gain']['album']['peak'] = $thisfile_mpeg_audio_lame_RGAD['peak_amplitude']; - } - $info['replay_gain']['album']['originator'] = $thisfile_mpeg_audio_lame_RGAD_album['originator']; - $info['replay_gain']['album']['adjustment'] = $thisfile_mpeg_audio_lame_RGAD_album['gain_db']; - } else { - unset($thisfile_mpeg_audio_lame_RGAD['album']); - } - if (empty($thisfile_mpeg_audio_lame_RGAD)) { - unset($thisfile_mpeg_audio_lame['RGAD']); - } - - - // byte $AF Encoding flags + ATH Type - $EncodingFlagsATHtype = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAF, 1)); - $thisfile_mpeg_audio_lame['encoding_flags']['nspsytune'] = (bool) ($EncodingFlagsATHtype & 0x10); - $thisfile_mpeg_audio_lame['encoding_flags']['nssafejoint'] = (bool) ($EncodingFlagsATHtype & 0x20); - $thisfile_mpeg_audio_lame['encoding_flags']['nogap_next'] = (bool) ($EncodingFlagsATHtype & 0x40); - $thisfile_mpeg_audio_lame['encoding_flags']['nogap_prev'] = (bool) ($EncodingFlagsATHtype & 0x80); - $thisfile_mpeg_audio_lame['ath_type'] = $EncodingFlagsATHtype & 0x0F; - - // byte $B0 if ABR {specified bitrate} else {minimal bitrate} - $thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB0, 1)); - if ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 2) { // Average BitRate (ABR) - $thisfile_mpeg_audio_lame['bitrate_abr'] = $thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate']; - } elseif ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 1) { // Constant BitRate (CBR) - // ignore - } elseif ($thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate'] > 0) { // Variable BitRate (VBR) - minimum bitrate - $thisfile_mpeg_audio_lame['bitrate_min'] = $thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate']; - } - - // bytes $B1-$B3 Encoder delays - $EncoderDelays = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB1, 3)); - $thisfile_mpeg_audio_lame['encoder_delay'] = ($EncoderDelays & 0xFFF000) >> 12; - $thisfile_mpeg_audio_lame['end_padding'] = $EncoderDelays & 0x000FFF; - - // byte $B4 Misc - $MiscByte = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB4, 1)); - $thisfile_mpeg_audio_lame_raw['noise_shaping'] = ($MiscByte & 0x03); - $thisfile_mpeg_audio_lame_raw['stereo_mode'] = ($MiscByte & 0x1C) >> 2; - $thisfile_mpeg_audio_lame_raw['not_optimal_quality'] = ($MiscByte & 0x20) >> 5; - $thisfile_mpeg_audio_lame_raw['source_sample_freq'] = ($MiscByte & 0xC0) >> 6; - $thisfile_mpeg_audio_lame['noise_shaping'] = $thisfile_mpeg_audio_lame_raw['noise_shaping']; - $thisfile_mpeg_audio_lame['stereo_mode'] = getid3_mp3::LAMEmiscStereoModeLookup($thisfile_mpeg_audio_lame_raw['stereo_mode']); - $thisfile_mpeg_audio_lame['not_optimal_quality'] = (bool) $thisfile_mpeg_audio_lame_raw['not_optimal_quality']; - $thisfile_mpeg_audio_lame['source_sample_freq'] = getid3_mp3::LAMEmiscSourceSampleFrequencyLookup($thisfile_mpeg_audio_lame_raw['source_sample_freq']); - - // byte $B5 MP3 Gain - $thisfile_mpeg_audio_lame_raw['mp3_gain'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB5, 1), false, true); - $thisfile_mpeg_audio_lame['mp3_gain_db'] = (getid3_lib::RGADamplitude2dB(2) / 4) * $thisfile_mpeg_audio_lame_raw['mp3_gain']; - $thisfile_mpeg_audio_lame['mp3_gain_factor'] = pow(2, ($thisfile_mpeg_audio_lame['mp3_gain_db'] / 6)); - - // bytes $B6-$B7 Preset and surround info - $PresetSurroundBytes = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB6, 2)); - // Reserved = ($PresetSurroundBytes & 0xC000); - $thisfile_mpeg_audio_lame_raw['surround_info'] = ($PresetSurroundBytes & 0x3800); - $thisfile_mpeg_audio_lame['surround_info'] = getid3_mp3::LAMEsurroundInfoLookup($thisfile_mpeg_audio_lame_raw['surround_info']); - $thisfile_mpeg_audio_lame['preset_used_id'] = ($PresetSurroundBytes & 0x07FF); - $thisfile_mpeg_audio_lame['preset_used'] = getid3_mp3::LAMEpresetUsedLookup($thisfile_mpeg_audio_lame); - if (!empty($thisfile_mpeg_audio_lame['preset_used_id']) && empty($thisfile_mpeg_audio_lame['preset_used'])) { - $info['warning'][] = 'Unknown LAME preset used ('.$thisfile_mpeg_audio_lame['preset_used_id'].') - please report to info@getid3.org'; - } - if (($thisfile_mpeg_audio_lame['short_version'] == 'LAME3.90.') && !empty($thisfile_mpeg_audio_lame['preset_used_id'])) { - // this may change if 3.90.4 ever comes out - $thisfile_mpeg_audio_lame['short_version'] = 'LAME3.90.3'; - } - - // bytes $B8-$BB MusicLength - $thisfile_mpeg_audio_lame['audio_bytes'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB8, 4)); - $ExpectedNumberOfAudioBytes = (($thisfile_mpeg_audio_lame['audio_bytes'] > 0) ? $thisfile_mpeg_audio_lame['audio_bytes'] : $thisfile_mpeg_audio['VBR_bytes']); - - // bytes $BC-$BD MusicCRC - $thisfile_mpeg_audio_lame['music_crc'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xBC, 2)); - - // bytes $BE-$BF CRC-16 of Info Tag - $thisfile_mpeg_audio_lame['lame_tag_crc'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xBE, 2)); - - - // LAME CBR - if ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 1) { - - $thisfile_mpeg_audio['bitrate_mode'] = 'cbr'; - $thisfile_mpeg_audio['bitrate'] = getid3_mp3::ClosestStandardMP3Bitrate($thisfile_mpeg_audio['bitrate']); - $info['audio']['bitrate'] = $thisfile_mpeg_audio['bitrate']; - //if (empty($thisfile_mpeg_audio['bitrate']) || (!empty($thisfile_mpeg_audio_lame['bitrate_min']) && ($thisfile_mpeg_audio_lame['bitrate_min'] != 255))) { - // $thisfile_mpeg_audio['bitrate'] = $thisfile_mpeg_audio_lame['bitrate_min']; - //} - - } - - } - } - - } else { - - // not Fraunhofer or Xing VBR methods, most likely CBR (but could be VBR with no header) - $thisfile_mpeg_audio['bitrate_mode'] = 'cbr'; - if ($recursivesearch) { - $thisfile_mpeg_audio['bitrate_mode'] = 'vbr'; - if ($this->RecursiveFrameScanning($offset, $nextframetestoffset, true)) { - $recursivesearch = false; - $thisfile_mpeg_audio['bitrate_mode'] = 'cbr'; - } - if ($thisfile_mpeg_audio['bitrate_mode'] == 'vbr') { - $info['warning'][] = 'VBR file with no VBR header. Bitrate values calculated from actual frame bitrates.'; - } - } - - } - - } - - if (($ExpectedNumberOfAudioBytes > 0) && ($ExpectedNumberOfAudioBytes != ($info['avdataend'] - $info['avdataoffset']))) { - if ($ExpectedNumberOfAudioBytes > ($info['avdataend'] - $info['avdataoffset'])) { - if (isset($info['fileformat']) && ($info['fileformat'] == 'riff')) { - // ignore, audio data is broken into chunks so will always be data "missing" - } elseif (($ExpectedNumberOfAudioBytes - ($info['avdataend'] - $info['avdataoffset'])) == 1) { - $info['warning'][] = 'Last byte of data truncated (this is a known bug in Meracl ID3 Tag Writer before v1.3.5)'; - } else { - $info['warning'][] = 'Probable truncated file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, only found '.($info['avdataend'] - $info['avdataoffset']).' (short by '.($ExpectedNumberOfAudioBytes - ($info['avdataend'] - $info['avdataoffset'])).' bytes)'; - } - } else { - if ((($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes) == 1) { - // $prenullbytefileoffset = ftell($this->getid3->fp); - // fseek($this->getid3->fp, $info['avdataend'], SEEK_SET); - // $PossibleNullByte = fread($this->getid3->fp, 1); - // fseek($this->getid3->fp, $prenullbytefileoffset, SEEK_SET); - // if ($PossibleNullByte === "\x00") { - $info['avdataend']--; - // $info['warning'][] = 'Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored'; - // } else { - // $info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)'; - // } - } else { - $info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)'; - } - } - } - - if (($thisfile_mpeg_audio['bitrate'] == 'free') && empty($info['audio']['bitrate'])) { - if (($offset == $info['avdataoffset']) && empty($thisfile_mpeg_audio['VBR_frames'])) { - $framebytelength = $this->FreeFormatFrameLength($offset, true); - if ($framebytelength > 0) { - $thisfile_mpeg_audio['framelength'] = $framebytelength; - if ($thisfile_mpeg_audio['layer'] == '1') { - // BitRate = (((FrameLengthInBytes / 4) - Padding) * SampleRate) / 12 - $info['audio']['bitrate'] = ((($framebytelength / 4) - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 12; - } else { - // Bitrate = ((FrameLengthInBytes - Padding) * SampleRate) / 144 - $info['audio']['bitrate'] = (($framebytelength - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 144; - } - } else { - $info['error'][] = 'Error calculating frame length of free-format MP3 without Xing/LAME header'; - } - } - } - - if (isset($thisfile_mpeg_audio['VBR_frames']) ? $thisfile_mpeg_audio['VBR_frames'] : '') { - switch ($thisfile_mpeg_audio['bitrate_mode']) { - case 'vbr': - case 'abr': - $bytes_per_frame = 1152; - if (($thisfile_mpeg_audio['version'] == '1') && ($thisfile_mpeg_audio['layer'] == 1)) { - $bytes_per_frame = 384; - } elseif ((($thisfile_mpeg_audio['version'] == '2') || ($thisfile_mpeg_audio['version'] == '2.5')) && ($thisfile_mpeg_audio['layer'] == 3)) { - $bytes_per_frame = 576; - } - $thisfile_mpeg_audio['VBR_bitrate'] = (isset($thisfile_mpeg_audio['VBR_bytes']) ? (($thisfile_mpeg_audio['VBR_bytes'] / $thisfile_mpeg_audio['VBR_frames']) * 8) * ($info['audio']['sample_rate'] / $bytes_per_frame) : 0); - if ($thisfile_mpeg_audio['VBR_bitrate'] > 0) { - $info['audio']['bitrate'] = $thisfile_mpeg_audio['VBR_bitrate']; - $thisfile_mpeg_audio['bitrate'] = $thisfile_mpeg_audio['VBR_bitrate']; // to avoid confusion - } - break; - } - } - - // End variable-bitrate headers - //////////////////////////////////////////////////////////////////////////////////// - - if ($recursivesearch) { - - if (!$this->RecursiveFrameScanning($offset, $nextframetestoffset, $ScanAsCBR)) { - return false; - } - - } - - - //if (false) { - // // experimental side info parsing section - not returning anything useful yet - // - // $SideInfoBitstream = getid3_lib::BigEndian2Bin($SideInfoData); - // $SideInfoOffset = 0; - // - // if ($thisfile_mpeg_audio['version'] == '1') { - // if ($thisfile_mpeg_audio['channelmode'] == 'mono') { - // // MPEG-1 (mono) - // $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // $SideInfoOffset += 5; - // } else { - // // MPEG-1 (stereo, joint-stereo, dual-channel) - // $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // $SideInfoOffset += 3; - // } - // } else { // 2 or 2.5 - // if ($thisfile_mpeg_audio['channelmode'] == 'mono') { - // // MPEG-2, MPEG-2.5 (mono) - // $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8); - // $SideInfoOffset += 8; - // $SideInfoOffset += 1; - // } else { - // // MPEG-2, MPEG-2.5 (stereo, joint-stereo, dual-channel) - // $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8); - // $SideInfoOffset += 8; - // $SideInfoOffset += 2; - // } - // } - // - // if ($thisfile_mpeg_audio['version'] == '1') { - // for ($channel = 0; $channel < $info['audio']['channels']; $channel++) { - // for ($scfsi_band = 0; $scfsi_band < 4; $scfsi_band++) { - // $thisfile_mpeg_audio['scfsi'][$channel][$scfsi_band] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 2; - // } - // } - // } - // for ($granule = 0; $granule < (($thisfile_mpeg_audio['version'] == '1') ? 2 : 1); $granule++) { - // for ($channel = 0; $channel < $info['audio']['channels']; $channel++) { - // $thisfile_mpeg_audio['part2_3_length'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 12); - // $SideInfoOffset += 12; - // $thisfile_mpeg_audio['big_values'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // $thisfile_mpeg_audio['global_gain'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 8); - // $SideInfoOffset += 8; - // if ($thisfile_mpeg_audio['version'] == '1') { - // $thisfile_mpeg_audio['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4); - // $SideInfoOffset += 4; - // } else { - // $thisfile_mpeg_audio['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // } - // $thisfile_mpeg_audio['window_switching_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // - // if ($thisfile_mpeg_audio['window_switching_flag'][$granule][$channel] == '1') { - // - // $thisfile_mpeg_audio['block_type'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 2); - // $SideInfoOffset += 2; - // $thisfile_mpeg_audio['mixed_block_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // - // for ($region = 0; $region < 2; $region++) { - // $thisfile_mpeg_audio['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5); - // $SideInfoOffset += 5; - // } - // $thisfile_mpeg_audio['table_select'][$granule][$channel][2] = 0; - // - // for ($window = 0; $window < 3; $window++) { - // $thisfile_mpeg_audio['subblock_gain'][$granule][$channel][$window] = substr($SideInfoBitstream, $SideInfoOffset, 3); - // $SideInfoOffset += 3; - // } - // - // } else { - // - // for ($region = 0; $region < 3; $region++) { - // $thisfile_mpeg_audio['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5); - // $SideInfoOffset += 5; - // } - // - // $thisfile_mpeg_audio['region0_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4); - // $SideInfoOffset += 4; - // $thisfile_mpeg_audio['region1_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 3); - // $SideInfoOffset += 3; - // $thisfile_mpeg_audio['block_type'][$granule][$channel] = 0; - // } - // - // if ($thisfile_mpeg_audio['version'] == '1') { - // $thisfile_mpeg_audio['preflag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // } - // $thisfile_mpeg_audio['scalefac_scale'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // $thisfile_mpeg_audio['count1table_select'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // } - // } - //} - - return true; - } - - function RecursiveFrameScanning(&$offset, &$nextframetestoffset, $ScanAsCBR) { - $info = &$this->getid3->info; - $firstframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']); - $this->decodeMPEGaudioHeader($offset, $firstframetestarray, false); - - for ($i = 0; $i < GETID3_MP3_VALID_CHECK_FRAMES; $i++) { - // check next GETID3_MP3_VALID_CHECK_FRAMES frames for validity, to make sure we haven't run across a false synch - if (($nextframetestoffset + 4) >= $info['avdataend']) { - // end of file - return true; - } - - $nextframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']); - if ($this->decodeMPEGaudioHeader($nextframetestoffset, $nextframetestarray, false)) { - if ($ScanAsCBR) { - // force CBR mode, used for trying to pick out invalid audio streams with valid(?) VBR headers, or VBR streams with no VBR header - if (!isset($nextframetestarray['mpeg']['audio']['bitrate']) || !isset($firstframetestarray['mpeg']['audio']['bitrate']) || ($nextframetestarray['mpeg']['audio']['bitrate'] != $firstframetestarray['mpeg']['audio']['bitrate'])) { - return false; - } - } - - - // next frame is OK, get ready to check the one after that - if (isset($nextframetestarray['mpeg']['audio']['framelength']) && ($nextframetestarray['mpeg']['audio']['framelength'] > 0)) { - $nextframetestoffset += $nextframetestarray['mpeg']['audio']['framelength']; - } else { - $info['error'][] = 'Frame at offset ('.$offset.') is has an invalid frame length.'; - return false; - } - - } elseif (!empty($firstframetestarray['mpeg']['audio']['framelength']) && (($nextframetestoffset + $firstframetestarray['mpeg']['audio']['framelength']) > $info['avdataend'])) { - - // it's not the end of the file, but there's not enough data left for another frame, so assume it's garbage/padding and return OK - return true; - - } else { - - // next frame is not valid, note the error and fail, so scanning can contiue for a valid frame sequence - $info['warning'][] = 'Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.'; - - return false; - } - } - return true; - } - - function FreeFormatFrameLength($offset, $deepscan=false) { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $offset, SEEK_SET); - $MPEGaudioData = fread($this->getid3->fp, 32768); - - $SyncPattern1 = substr($MPEGaudioData, 0, 4); - // may be different pattern due to padding - $SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) | 0x02).$SyncPattern1{3}; - if ($SyncPattern2 === $SyncPattern1) { - $SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) & 0xFD).$SyncPattern1{3}; - } - - $framelength = false; - $framelength1 = strpos($MPEGaudioData, $SyncPattern1, 4); - $framelength2 = strpos($MPEGaudioData, $SyncPattern2, 4); - if ($framelength1 > 4) { - $framelength = $framelength1; - } - if (($framelength2 > 4) && ($framelength2 < $framelength1)) { - $framelength = $framelength2; - } - if (!$framelength) { - - // LAME 3.88 has a different value for modeextension on the first frame vs the rest - $framelength1 = strpos($MPEGaudioData, substr($SyncPattern1, 0, 3), 4); - $framelength2 = strpos($MPEGaudioData, substr($SyncPattern2, 0, 3), 4); - - if ($framelength1 > 4) { - $framelength = $framelength1; - } - if (($framelength2 > 4) && ($framelength2 < $framelength1)) { - $framelength = $framelength2; - } - if (!$framelength) { - $info['error'][] = 'Cannot find next free-format synch pattern ('.getid3_lib::PrintHexBytes($SyncPattern1).' or '.getid3_lib::PrintHexBytes($SyncPattern2).') after offset '.$offset; - return false; - } else { - $info['warning'][] = 'ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)'; - $info['audio']['codec'] = 'LAME'; - $info['audio']['encoder'] = 'LAME3.88'; - $SyncPattern1 = substr($SyncPattern1, 0, 3); - $SyncPattern2 = substr($SyncPattern2, 0, 3); - } - } - - if ($deepscan) { - - $ActualFrameLengthValues = array(); - $nextoffset = $offset + $framelength; - while ($nextoffset < ($info['avdataend'] - 6)) { - fseek($this->getid3->fp, $nextoffset - 1, SEEK_SET); - $NextSyncPattern = fread($this->getid3->fp, 6); - if ((substr($NextSyncPattern, 1, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 1, strlen($SyncPattern2)) == $SyncPattern2)) { - // good - found where expected - $ActualFrameLengthValues[] = $framelength; - } elseif ((substr($NextSyncPattern, 0, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 0, strlen($SyncPattern2)) == $SyncPattern2)) { - // ok - found one byte earlier than expected (last frame wasn't padded, first frame was) - $ActualFrameLengthValues[] = ($framelength - 1); - $nextoffset--; - } elseif ((substr($NextSyncPattern, 2, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 2, strlen($SyncPattern2)) == $SyncPattern2)) { - // ok - found one byte later than expected (last frame was padded, first frame wasn't) - $ActualFrameLengthValues[] = ($framelength + 1); - $nextoffset++; - } else { - $info['error'][] = 'Did not find expected free-format sync pattern at offset '.$nextoffset; - return false; - } - $nextoffset += $framelength; - } - if (count($ActualFrameLengthValues) > 0) { - $framelength = intval(round(array_sum($ActualFrameLengthValues) / count($ActualFrameLengthValues))); - } - } - return $framelength; - } - - function getOnlyMPEGaudioInfoBruteForce() { - $MPEGaudioHeaderDecodeCache = array(); - $MPEGaudioHeaderValidCache = array(); - $MPEGaudioHeaderLengthCache = array(); - $MPEGaudioVersionLookup = getid3_mp3::MPEGaudioVersionArray(); - $MPEGaudioLayerLookup = getid3_mp3::MPEGaudioLayerArray(); - $MPEGaudioBitrateLookup = getid3_mp3::MPEGaudioBitrateArray(); - $MPEGaudioFrequencyLookup = getid3_mp3::MPEGaudioFrequencyArray(); - $MPEGaudioChannelModeLookup = getid3_mp3::MPEGaudioChannelModeArray(); - $MPEGaudioModeExtensionLookup = getid3_mp3::MPEGaudioModeExtensionArray(); - $MPEGaudioEmphasisLookup = getid3_mp3::MPEGaudioEmphasisArray(); - $LongMPEGversionLookup = array(); - $LongMPEGlayerLookup = array(); - $LongMPEGbitrateLookup = array(); - $LongMPEGpaddingLookup = array(); - $LongMPEGfrequencyLookup = array(); - $Distribution['bitrate'] = array(); - $Distribution['frequency'] = array(); - $Distribution['layer'] = array(); - $Distribution['version'] = array(); - $Distribution['padding'] = array(); - - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $max_frames_scan = 5000; - $frames_scanned = 0; - - $previousvalidframe = $info['avdataoffset']; - while (ftell($this->getid3->fp) < $info['avdataend']) { - set_time_limit(30); - $head4 = fread($this->getid3->fp, 4); - if (strlen($head4) < 4) { - break; - } - if ($head4{0} != "\xFF") { - for ($i = 1; $i < 4; $i++) { - if ($head4{$i} == "\xFF") { - fseek($this->getid3->fp, $i - 4, SEEK_CUR); - continue 2; - } - } - continue; - } - if (!isset($MPEGaudioHeaderDecodeCache[$head4])) { - $MPEGaudioHeaderDecodeCache[$head4] = getid3_mp3::MPEGaudioHeaderDecode($head4); - } - if (!isset($MPEGaudioHeaderValidCache[$head4])) { - $MPEGaudioHeaderValidCache[$head4] = getid3_mp3::MPEGaudioHeaderValid($MPEGaudioHeaderDecodeCache[$head4], false, false); - } - if ($MPEGaudioHeaderValidCache[$head4]) { - - if (!isset($MPEGaudioHeaderLengthCache[$head4])) { - $LongMPEGversionLookup[$head4] = $MPEGaudioVersionLookup[$MPEGaudioHeaderDecodeCache[$head4]['version']]; - $LongMPEGlayerLookup[$head4] = $MPEGaudioLayerLookup[$MPEGaudioHeaderDecodeCache[$head4]['layer']]; - $LongMPEGbitrateLookup[$head4] = $MPEGaudioBitrateLookup[$LongMPEGversionLookup[$head4]][$LongMPEGlayerLookup[$head4]][$MPEGaudioHeaderDecodeCache[$head4]['bitrate']]; - $LongMPEGpaddingLookup[$head4] = (bool) $MPEGaudioHeaderDecodeCache[$head4]['padding']; - $LongMPEGfrequencyLookup[$head4] = $MPEGaudioFrequencyLookup[$LongMPEGversionLookup[$head4]][$MPEGaudioHeaderDecodeCache[$head4]['sample_rate']]; - $MPEGaudioHeaderLengthCache[$head4] = getid3_mp3::MPEGaudioFrameLength( - $LongMPEGbitrateLookup[$head4], - $LongMPEGversionLookup[$head4], - $LongMPEGlayerLookup[$head4], - $LongMPEGpaddingLookup[$head4], - $LongMPEGfrequencyLookup[$head4]); - } - if ($MPEGaudioHeaderLengthCache[$head4] > 4) { - $WhereWeWere = ftell($this->getid3->fp); - fseek($this->getid3->fp, $MPEGaudioHeaderLengthCache[$head4] - 4, SEEK_CUR); - $next4 = fread($this->getid3->fp, 4); - if ($next4{0} == "\xFF") { - if (!isset($MPEGaudioHeaderDecodeCache[$next4])) { - $MPEGaudioHeaderDecodeCache[$next4] = getid3_mp3::MPEGaudioHeaderDecode($next4); - } - if (!isset($MPEGaudioHeaderValidCache[$next4])) { - $MPEGaudioHeaderValidCache[$next4] = getid3_mp3::MPEGaudioHeaderValid($MPEGaudioHeaderDecodeCache[$next4], false, false); - } - if ($MPEGaudioHeaderValidCache[$next4]) { - fseek($this->getid3->fp, -4, SEEK_CUR); - - getid3_lib::safe_inc($Distribution['bitrate'][$LongMPEGbitrateLookup[$head4]]); - getid3_lib::safe_inc($Distribution['layer'][$LongMPEGlayerLookup[$head4]]); - getid3_lib::safe_inc($Distribution['version'][$LongMPEGversionLookup[$head4]]); - getid3_lib::safe_inc($Distribution['padding'][intval($LongMPEGpaddingLookup[$head4])]); - getid3_lib::safe_inc($Distribution['frequency'][$LongMPEGfrequencyLookup[$head4]]); - if ($max_frames_scan && (++$frames_scanned >= $max_frames_scan)) { - $pct_data_scanned = (ftell($this->getid3->fp) - $info['avdataoffset']) / ($info['avdataend'] - $info['avdataoffset']); - $info['warning'][] = 'too many MPEG audio frames to scan, only scanned first '.$max_frames_scan.' frames ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.'; - foreach ($Distribution as $key1 => $value1) { - foreach ($value1 as $key2 => $value2) { - $Distribution[$key1][$key2] = round($value2 / $pct_data_scanned); - } - } - break; - } - continue; - } - } - unset($next4); - fseek($this->getid3->fp, $WhereWeWere - 3, SEEK_SET); - } - - } - } - foreach ($Distribution as $key => $value) { - ksort($Distribution[$key], SORT_NUMERIC); - } - ksort($Distribution['version'], SORT_STRING); - $info['mpeg']['audio']['bitrate_distribution'] = $Distribution['bitrate']; - $info['mpeg']['audio']['frequency_distribution'] = $Distribution['frequency']; - $info['mpeg']['audio']['layer_distribution'] = $Distribution['layer']; - $info['mpeg']['audio']['version_distribution'] = $Distribution['version']; - $info['mpeg']['audio']['padding_distribution'] = $Distribution['padding']; - if (count($Distribution['version']) > 1) { - $info['error'][] = 'Corrupt file - more than one MPEG version detected'; - } - if (count($Distribution['layer']) > 1) { - $info['error'][] = 'Corrupt file - more than one MPEG layer detected'; - } - if (count($Distribution['frequency']) > 1) { - $info['error'][] = 'Corrupt file - more than one MPEG sample rate detected'; - } - - - $bittotal = 0; - foreach ($Distribution['bitrate'] as $bitratevalue => $bitratecount) { - if ($bitratevalue != 'free') { - $bittotal += ($bitratevalue * $bitratecount); - } - } - $info['mpeg']['audio']['frame_count'] = array_sum($Distribution['bitrate']); - if ($info['mpeg']['audio']['frame_count'] == 0) { - $info['error'][] = 'no MPEG audio frames found'; - return false; - } - $info['mpeg']['audio']['bitrate'] = ($bittotal / $info['mpeg']['audio']['frame_count']); - $info['mpeg']['audio']['bitrate_mode'] = ((count($Distribution['bitrate']) > 0) ? 'vbr' : 'cbr'); - $info['mpeg']['audio']['sample_rate'] = getid3_lib::array_max($Distribution['frequency'], true); - - $info['audio']['bitrate'] = $info['mpeg']['audio']['bitrate']; - $info['audio']['bitrate_mode'] = $info['mpeg']['audio']['bitrate_mode']; - $info['audio']['sample_rate'] = $info['mpeg']['audio']['sample_rate']; - $info['audio']['dataformat'] = 'mp'.getid3_lib::array_max($Distribution['layer'], true); - $info['fileformat'] = $info['audio']['dataformat']; - - return true; - } - - - function getOnlyMPEGaudioInfo($avdataoffset, $BitrateHistogram=false) { - // looks for synch, decodes MPEG audio header - - $info = &$this->getid3->info; - - static $MPEGaudioVersionLookup; - static $MPEGaudioLayerLookup; - static $MPEGaudioBitrateLookup; - if (empty($MPEGaudioVersionLookup)) { - $MPEGaudioVersionLookup = getid3_mp3::MPEGaudioVersionArray(); - $MPEGaudioLayerLookup = getid3_mp3::MPEGaudioLayerArray(); - $MPEGaudioBitrateLookup = getid3_mp3::MPEGaudioBitrateArray(); - - } - - fseek($this->getid3->fp, $avdataoffset, SEEK_SET); - $sync_seek_buffer_size = min(128 * 1024, $info['avdataend'] - $avdataoffset); - if ($sync_seek_buffer_size <= 0) { - $info['error'][] = 'Invalid $sync_seek_buffer_size at offset '.$avdataoffset; - return false; - } - $header = fread($this->getid3->fp, $sync_seek_buffer_size); - $sync_seek_buffer_size = strlen($header); - $SynchSeekOffset = 0; - while ($SynchSeekOffset < $sync_seek_buffer_size) { - if ((($avdataoffset + $SynchSeekOffset) < $info['avdataend']) && !feof($this->getid3->fp)) { - - if ($SynchSeekOffset > $sync_seek_buffer_size) { - // if a synch's not found within the first 128k bytes, then give up - $info['error'][] = 'Could not find valid MPEG audio synch within the first '.round($sync_seek_buffer_size / 1024).'kB'; - if (isset($info['audio']['bitrate'])) { - unset($info['audio']['bitrate']); - } - if (isset($info['mpeg']['audio'])) { - unset($info['mpeg']['audio']); - } - if (empty($info['mpeg'])) { - unset($info['mpeg']); - } - return false; - - } elseif (feof($this->getid3->fp)) { - - $info['error'][] = 'Could not find valid MPEG audio synch before end of file'; - if (isset($info['audio']['bitrate'])) { - unset($info['audio']['bitrate']); - } - if (isset($info['mpeg']['audio'])) { - unset($info['mpeg']['audio']); - } - if (isset($info['mpeg']) && (!is_array($info['mpeg']) || (count($info['mpeg']) == 0))) { - unset($info['mpeg']); - } - return false; - } - } - - if (($SynchSeekOffset + 1) >= strlen($header)) { - $info['error'][] = 'Could not find valid MPEG synch before end of file'; - return false; - } - - if (($header{$SynchSeekOffset} == "\xFF") && ($header{($SynchSeekOffset + 1)} > "\xE0")) { // synch detected - if (!isset($FirstFrameThisfileInfo) && !isset($info['mpeg']['audio'])) { - $FirstFrameThisfileInfo = $info; - $FirstFrameAVDataOffset = $avdataoffset + $SynchSeekOffset; - if (!$this->decodeMPEGaudioHeader($FirstFrameAVDataOffset, $FirstFrameThisfileInfo, false)) { - // if this is the first valid MPEG-audio frame, save it in case it's a VBR header frame and there's - // garbage between this frame and a valid sequence of MPEG-audio frames, to be restored below - unset($FirstFrameThisfileInfo); - } - } - - $dummy = $info; // only overwrite real data if valid header found - if ($this->decodeMPEGaudioHeader($avdataoffset + $SynchSeekOffset, $dummy, true)) { - $info = $dummy; - $info['avdataoffset'] = $avdataoffset + $SynchSeekOffset; - switch (isset($info['fileformat']) ? $info['fileformat'] : '') { - case '': - case 'id3': - case 'ape': - case 'mp3': - $info['fileformat'] = 'mp3'; - $info['audio']['dataformat'] = 'mp3'; - break; - } - if (isset($FirstFrameThisfileInfo['mpeg']['audio']['bitrate_mode']) && ($FirstFrameThisfileInfo['mpeg']['audio']['bitrate_mode'] == 'vbr')) { - if (!(abs($info['audio']['bitrate'] - $FirstFrameThisfileInfo['audio']['bitrate']) <= 1)) { - // If there is garbage data between a valid VBR header frame and a sequence - // of valid MPEG-audio frames the VBR data is no longer discarded. - $info = $FirstFrameThisfileInfo; - $info['avdataoffset'] = $FirstFrameAVDataOffset; - $info['fileformat'] = 'mp3'; - $info['audio']['dataformat'] = 'mp3'; - $dummy = $info; - unset($dummy['mpeg']['audio']); - $GarbageOffsetStart = $FirstFrameAVDataOffset + $FirstFrameThisfileInfo['mpeg']['audio']['framelength']; - $GarbageOffsetEnd = $avdataoffset + $SynchSeekOffset; - if ($this->decodeMPEGaudioHeader($GarbageOffsetEnd, $dummy, true, true)) { - $info = $dummy; - $info['avdataoffset'] = $GarbageOffsetEnd; - $info['warning'][] = 'apparently-valid VBR header not used because could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.'), but did find valid CBR stream starting at '.$GarbageOffsetEnd; - } else { - $info['warning'][] = 'using data from VBR header even though could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.')'; - } - } - } - if (isset($info['mpeg']['audio']['bitrate_mode']) && ($info['mpeg']['audio']['bitrate_mode'] == 'vbr') && !isset($info['mpeg']['audio']['VBR_method'])) { - // VBR file with no VBR header - $BitrateHistogram = true; - } - - if ($BitrateHistogram) { - - $info['mpeg']['audio']['stereo_distribution'] = array('stereo'=>0, 'joint stereo'=>0, 'dual channel'=>0, 'mono'=>0); - $info['mpeg']['audio']['version_distribution'] = array('1'=>0, '2'=>0, '2.5'=>0); - - if ($info['mpeg']['audio']['version'] == '1') { - if ($info['mpeg']['audio']['layer'] == 3) { - $info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 40000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 160000=>0, 192000=>0, 224000=>0, 256000=>0, 320000=>0); - } elseif ($info['mpeg']['audio']['layer'] == 2) { - $info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 160000=>0, 192000=>0, 224000=>0, 256000=>0, 320000=>0, 384000=>0); - } elseif ($info['mpeg']['audio']['layer'] == 1) { - $info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 64000=>0, 96000=>0, 128000=>0, 160000=>0, 192000=>0, 224000=>0, 256000=>0, 288000=>0, 320000=>0, 352000=>0, 384000=>0, 416000=>0, 448000=>0); - } - } elseif ($info['mpeg']['audio']['layer'] == 1) { - $info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 144000=>0, 160000=>0, 176000=>0, 192000=>0, 224000=>0, 256000=>0); - } else { - $info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 8000=>0, 16000=>0, 24000=>0, 32000=>0, 40000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 144000=>0, 160000=>0); - } - - $dummy = array('error'=>$info['error'], 'warning'=>$info['warning'], 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']); - $synchstartoffset = $info['avdataoffset']; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - // you can play with these numbers: - $max_frames_scan = 50000; - $max_scan_segments = 10; - - // don't play with these numbers: - $FastMode = false; - $SynchErrorsFound = 0; - $frames_scanned = 0; - $this_scan_segment = 0; - $frames_scan_per_segment = ceil($max_frames_scan / $max_scan_segments); - $pct_data_scanned = 0; - for ($current_segment = 0; $current_segment < $max_scan_segments; $current_segment++) { - $frames_scanned_this_segment = 0; - if (ftell($this->getid3->fp) >= $info['avdataend']) { - break; - } - $scan_start_offset[$current_segment] = max(ftell($this->getid3->fp), $info['avdataoffset'] + round($current_segment * (($info['avdataend'] - $info['avdataoffset']) / $max_scan_segments))); - if ($current_segment > 0) { - fseek($this->getid3->fp, $scan_start_offset[$current_segment], SEEK_SET); - $buffer_4k = fread($this->getid3->fp, 4096); - for ($j = 0; $j < (strlen($buffer_4k) - 4); $j++) { - if (($buffer_4k{$j} == "\xFF") && ($buffer_4k{($j + 1)} > "\xE0")) { // synch detected - if ($this->decodeMPEGaudioHeader($scan_start_offset[$current_segment] + $j, $dummy, false, false, $FastMode)) { - $calculated_next_offset = $scan_start_offset[$current_segment] + $j + $dummy['mpeg']['audio']['framelength']; - if ($this->decodeMPEGaudioHeader($calculated_next_offset, $dummy, false, false, $FastMode)) { - $scan_start_offset[$current_segment] += $j; - break; - } - } - } - } - } - $synchstartoffset = $scan_start_offset[$current_segment]; - while ($this->decodeMPEGaudioHeader($synchstartoffset, $dummy, false, false, $FastMode)) { - $FastMode = true; - $thisframebitrate = $MPEGaudioBitrateLookup[$MPEGaudioVersionLookup[$dummy['mpeg']['audio']['raw']['version']]][$MPEGaudioLayerLookup[$dummy['mpeg']['audio']['raw']['layer']]][$dummy['mpeg']['audio']['raw']['bitrate']]; - - if (empty($dummy['mpeg']['audio']['framelength'])) { - $SynchErrorsFound++; - $synchstartoffset++; - } else { - getid3_lib::safe_inc($info['mpeg']['audio']['bitrate_distribution'][$thisframebitrate]); - getid3_lib::safe_inc($info['mpeg']['audio']['stereo_distribution'][$dummy['mpeg']['audio']['channelmode']]); - getid3_lib::safe_inc($info['mpeg']['audio']['version_distribution'][$dummy['mpeg']['audio']['version']]); - $synchstartoffset += $dummy['mpeg']['audio']['framelength']; - } - $frames_scanned++; - if ($frames_scan_per_segment && (++$frames_scanned_this_segment >= $frames_scan_per_segment)) { - $this_pct_scanned = (ftell($this->getid3->fp) - $scan_start_offset[$current_segment]) / ($info['avdataend'] - $info['avdataoffset']); - if (($current_segment == 0) && (($this_pct_scanned * $max_scan_segments) >= 1)) { - // file likely contains < $max_frames_scan, just scan as one segment - $max_scan_segments = 1; - $frames_scan_per_segment = $max_frames_scan; - } else { - $pct_data_scanned += $this_pct_scanned; - break; - } - } - } - } - if ($pct_data_scanned > 0) { - $info['warning'][] = 'too many MPEG audio frames to scan, only scanned '.$frames_scanned.' frames in '.$max_scan_segments.' segments ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.'; - foreach ($info['mpeg']['audio'] as $key1 => $value1) { - if (!preg_match('#_distribution$#i', $key1)) { - continue; - } - foreach ($value1 as $key2 => $value2) { - $info['mpeg']['audio'][$key1][$key2] = round($value2 / $pct_data_scanned); - } - } - } - - if ($SynchErrorsFound > 0) { - $info['warning'][] = 'Found '.$SynchErrorsFound.' synch errors in histogram analysis'; - //return false; - } - - $bittotal = 0; - $framecounter = 0; - foreach ($info['mpeg']['audio']['bitrate_distribution'] as $bitratevalue => $bitratecount) { - $framecounter += $bitratecount; - if ($bitratevalue != 'free') { - $bittotal += ($bitratevalue * $bitratecount); - } - } - if ($framecounter == 0) { - $info['error'][] = 'Corrupt MP3 file: framecounter == zero'; - return false; - } - $info['mpeg']['audio']['frame_count'] = getid3_lib::CastAsInt($framecounter); - $info['mpeg']['audio']['bitrate'] = ($bittotal / $framecounter); - - $info['audio']['bitrate'] = $info['mpeg']['audio']['bitrate']; - - - // Definitively set VBR vs CBR, even if the Xing/LAME/VBRI header says differently - $distinct_bitrates = 0; - foreach ($info['mpeg']['audio']['bitrate_distribution'] as $bitrate_value => $bitrate_count) { - if ($bitrate_count > 0) { - $distinct_bitrates++; - } - } - if ($distinct_bitrates > 1) { - $info['mpeg']['audio']['bitrate_mode'] = 'vbr'; - } else { - $info['mpeg']['audio']['bitrate_mode'] = 'cbr'; - } - $info['audio']['bitrate_mode'] = $info['mpeg']['audio']['bitrate_mode']; - - } - - break; // exit while() - } - } - - $SynchSeekOffset++; - if (($avdataoffset + $SynchSeekOffset) >= $info['avdataend']) { - // end of file/data - - if (empty($info['mpeg']['audio'])) { - - $info['error'][] = 'could not find valid MPEG synch before end of file'; - if (isset($info['audio']['bitrate'])) { - unset($info['audio']['bitrate']); - } - if (isset($info['mpeg']['audio'])) { - unset($info['mpeg']['audio']); - } - if (isset($info['mpeg']) && (!is_array($info['mpeg']) || empty($info['mpeg']))) { - unset($info['mpeg']); - } - return false; - - } - break; - } - - } - $info['audio']['channels'] = $info['mpeg']['audio']['channels']; - $info['audio']['channelmode'] = $info['mpeg']['audio']['channelmode']; - $info['audio']['sample_rate'] = $info['mpeg']['audio']['sample_rate']; - return true; - } - - - static function MPEGaudioVersionArray() { - static $MPEGaudioVersion = array('2.5', false, '2', '1'); - return $MPEGaudioVersion; - } - - static function MPEGaudioLayerArray() { - static $MPEGaudioLayer = array(false, 3, 2, 1); - return $MPEGaudioLayer; - } - - static function MPEGaudioBitrateArray() { - static $MPEGaudioBitrate; - if (empty($MPEGaudioBitrate)) { - $MPEGaudioBitrate = array ( - '1' => array (1 => array('free', 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000, 288000, 320000, 352000, 384000, 416000, 448000), - 2 => array('free', 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 384000), - 3 => array('free', 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000) - ), - - '2' => array (1 => array('free', 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 176000, 192000, 224000, 256000), - 2 => array('free', 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000), - ) - ); - $MPEGaudioBitrate['2'][3] = $MPEGaudioBitrate['2'][2]; - $MPEGaudioBitrate['2.5'] = $MPEGaudioBitrate['2']; - } - return $MPEGaudioBitrate; - } - - static function MPEGaudioFrequencyArray() { - static $MPEGaudioFrequency; - if (empty($MPEGaudioFrequency)) { - $MPEGaudioFrequency = array ( - '1' => array(44100, 48000, 32000), - '2' => array(22050, 24000, 16000), - '2.5' => array(11025, 12000, 8000) - ); - } - return $MPEGaudioFrequency; - } - - static function MPEGaudioChannelModeArray() { - static $MPEGaudioChannelMode = array('stereo', 'joint stereo', 'dual channel', 'mono'); - return $MPEGaudioChannelMode; - } - - static function MPEGaudioModeExtensionArray() { - static $MPEGaudioModeExtension; - if (empty($MPEGaudioModeExtension)) { - $MPEGaudioModeExtension = array ( - 1 => array('4-31', '8-31', '12-31', '16-31'), - 2 => array('4-31', '8-31', '12-31', '16-31'), - 3 => array('', 'IS', 'MS', 'IS+MS') - ); - } - return $MPEGaudioModeExtension; - } - - static function MPEGaudioEmphasisArray() { - static $MPEGaudioEmphasis = array('none', '50/15ms', false, 'CCIT J.17'); - return $MPEGaudioEmphasis; - } - - static function MPEGaudioHeaderBytesValid($head4, $allowBitrate15=false) { - return getid3_mp3::MPEGaudioHeaderValid(getid3_mp3::MPEGaudioHeaderDecode($head4), false, $allowBitrate15); - } - - static function MPEGaudioHeaderValid($rawarray, $echoerrors=false, $allowBitrate15=false) { - if (($rawarray['synch'] & 0x0FFE) != 0x0FFE) { - return false; - } - - static $MPEGaudioVersionLookup; - static $MPEGaudioLayerLookup; - static $MPEGaudioBitrateLookup; - static $MPEGaudioFrequencyLookup; - static $MPEGaudioChannelModeLookup; - static $MPEGaudioModeExtensionLookup; - static $MPEGaudioEmphasisLookup; - if (empty($MPEGaudioVersionLookup)) { - $MPEGaudioVersionLookup = getid3_mp3::MPEGaudioVersionArray(); - $MPEGaudioLayerLookup = getid3_mp3::MPEGaudioLayerArray(); - $MPEGaudioBitrateLookup = getid3_mp3::MPEGaudioBitrateArray(); - $MPEGaudioFrequencyLookup = getid3_mp3::MPEGaudioFrequencyArray(); - $MPEGaudioChannelModeLookup = getid3_mp3::MPEGaudioChannelModeArray(); - $MPEGaudioModeExtensionLookup = getid3_mp3::MPEGaudioModeExtensionArray(); - $MPEGaudioEmphasisLookup = getid3_mp3::MPEGaudioEmphasisArray(); - } - - if (isset($MPEGaudioVersionLookup[$rawarray['version']])) { - $decodedVersion = $MPEGaudioVersionLookup[$rawarray['version']]; - } else { - echo ($echoerrors ? "\n".'invalid Version ('.$rawarray['version'].')' : ''); - return false; - } - if (isset($MPEGaudioLayerLookup[$rawarray['layer']])) { - $decodedLayer = $MPEGaudioLayerLookup[$rawarray['layer']]; - } else { - echo ($echoerrors ? "\n".'invalid Layer ('.$rawarray['layer'].')' : ''); - return false; - } - if (!isset($MPEGaudioBitrateLookup[$decodedVersion][$decodedLayer][$rawarray['bitrate']])) { - echo ($echoerrors ? "\n".'invalid Bitrate ('.$rawarray['bitrate'].')' : ''); - if ($rawarray['bitrate'] == 15) { - // known issue in LAME 3.90 - 3.93.1 where free-format has bitrate ID of 15 instead of 0 - // let it go through here otherwise file will not be identified - if (!$allowBitrate15) { - return false; - } - } else { - return false; - } - } - if (!isset($MPEGaudioFrequencyLookup[$decodedVersion][$rawarray['sample_rate']])) { - echo ($echoerrors ? "\n".'invalid Frequency ('.$rawarray['sample_rate'].')' : ''); - return false; - } - if (!isset($MPEGaudioChannelModeLookup[$rawarray['channelmode']])) { - echo ($echoerrors ? "\n".'invalid ChannelMode ('.$rawarray['channelmode'].')' : ''); - return false; - } - if (!isset($MPEGaudioModeExtensionLookup[$decodedLayer][$rawarray['modeextension']])) { - echo ($echoerrors ? "\n".'invalid Mode Extension ('.$rawarray['modeextension'].')' : ''); - return false; - } - if (!isset($MPEGaudioEmphasisLookup[$rawarray['emphasis']])) { - echo ($echoerrors ? "\n".'invalid Emphasis ('.$rawarray['emphasis'].')' : ''); - return false; - } - // These are just either set or not set, you can't mess that up :) - // $rawarray['protection']; - // $rawarray['padding']; - // $rawarray['private']; - // $rawarray['copyright']; - // $rawarray['original']; - - return true; - } - - static function MPEGaudioHeaderDecode($Header4Bytes) { - // AAAA AAAA AAAB BCCD EEEE FFGH IIJJ KLMM - // A - Frame sync (all bits set) - // B - MPEG Audio version ID - // C - Layer description - // D - Protection bit - // E - Bitrate index - // F - Sampling rate frequency index - // G - Padding bit - // H - Private bit - // I - Channel Mode - // J - Mode extension (Only if Joint stereo) - // K - Copyright - // L - Original - // M - Emphasis - - if (strlen($Header4Bytes) != 4) { - return false; - } - - $MPEGrawHeader['synch'] = (getid3_lib::BigEndian2Int(substr($Header4Bytes, 0, 2)) & 0xFFE0) >> 4; - $MPEGrawHeader['version'] = (ord($Header4Bytes{1}) & 0x18) >> 3; // BB - $MPEGrawHeader['layer'] = (ord($Header4Bytes{1}) & 0x06) >> 1; // CC - $MPEGrawHeader['protection'] = (ord($Header4Bytes{1}) & 0x01); // D - $MPEGrawHeader['bitrate'] = (ord($Header4Bytes{2}) & 0xF0) >> 4; // EEEE - $MPEGrawHeader['sample_rate'] = (ord($Header4Bytes{2}) & 0x0C) >> 2; // FF - $MPEGrawHeader['padding'] = (ord($Header4Bytes{2}) & 0x02) >> 1; // G - $MPEGrawHeader['private'] = (ord($Header4Bytes{2}) & 0x01); // H - $MPEGrawHeader['channelmode'] = (ord($Header4Bytes{3}) & 0xC0) >> 6; // II - $MPEGrawHeader['modeextension'] = (ord($Header4Bytes{3}) & 0x30) >> 4; // JJ - $MPEGrawHeader['copyright'] = (ord($Header4Bytes{3}) & 0x08) >> 3; // K - $MPEGrawHeader['original'] = (ord($Header4Bytes{3}) & 0x04) >> 2; // L - $MPEGrawHeader['emphasis'] = (ord($Header4Bytes{3}) & 0x03); // MM - - return $MPEGrawHeader; - } - - static function MPEGaudioFrameLength(&$bitrate, &$version, &$layer, $padding, &$samplerate) { - static $AudioFrameLengthCache = array(); - - if (!isset($AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate])) { - $AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate] = false; - if ($bitrate != 'free') { - - if ($version == '1') { - - if ($layer == '1') { - - // For Layer I slot is 32 bits long - $FrameLengthCoefficient = 48; - $SlotLength = 4; - - } else { // Layer 2 / 3 - - // for Layer 2 and Layer 3 slot is 8 bits long. - $FrameLengthCoefficient = 144; - $SlotLength = 1; - - } - - } else { // MPEG-2 / MPEG-2.5 - - if ($layer == '1') { - - // For Layer I slot is 32 bits long - $FrameLengthCoefficient = 24; - $SlotLength = 4; - - } elseif ($layer == '2') { - - // for Layer 2 and Layer 3 slot is 8 bits long. - $FrameLengthCoefficient = 144; - $SlotLength = 1; - - } else { // layer 3 - - // for Layer 2 and Layer 3 slot is 8 bits long. - $FrameLengthCoefficient = 72; - $SlotLength = 1; - - } - - } - - // FrameLengthInBytes = ((Coefficient * BitRate) / SampleRate) + Padding - if ($samplerate > 0) { - $NewFramelength = ($FrameLengthCoefficient * $bitrate) / $samplerate; - $NewFramelength = floor($NewFramelength / $SlotLength) * $SlotLength; // round to next-lower multiple of SlotLength (1 byte for Layer 2/3, 4 bytes for Layer I) - if ($padding) { - $NewFramelength += $SlotLength; - } - $AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate] = (int) $NewFramelength; - } - } - } - return $AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate]; - } - - static function ClosestStandardMP3Bitrate($bit_rate) { - static $standard_bit_rates = array (320000, 256000, 224000, 192000, 160000, 128000, 112000, 96000, 80000, 64000, 56000, 48000, 40000, 32000, 24000, 16000, 8000); - static $bit_rate_table = array (0=>'-'); - $round_bit_rate = intval(round($bit_rate, -3)); - if (!isset($bit_rate_table[$round_bit_rate])) { - if ($round_bit_rate > max($standard_bit_rates)) { - $bit_rate_table[$round_bit_rate] = round($bit_rate, 2 - strlen($bit_rate)); - } else { - $bit_rate_table[$round_bit_rate] = max($standard_bit_rates); - foreach ($standard_bit_rates as $standard_bit_rate) { - if ($round_bit_rate >= $standard_bit_rate + (($bit_rate_table[$round_bit_rate] - $standard_bit_rate) / 2)) { - break; - } - $bit_rate_table[$round_bit_rate] = $standard_bit_rate; - } - } - } - return $bit_rate_table[$round_bit_rate]; - } - - static function XingVBRidOffset($version, $channelmode) { - static $XingVBRidOffsetCache = array(); - if (empty($XingVBRidOffset)) { - $XingVBRidOffset = array ( - '1' => array ('mono' => 0x15, // 4 + 17 = 21 - 'stereo' => 0x24, // 4 + 32 = 36 - 'joint stereo' => 0x24, - 'dual channel' => 0x24 - ), - - '2' => array ('mono' => 0x0D, // 4 + 9 = 13 - 'stereo' => 0x15, // 4 + 17 = 21 - 'joint stereo' => 0x15, - 'dual channel' => 0x15 - ), - - '2.5' => array ('mono' => 0x15, - 'stereo' => 0x15, - 'joint stereo' => 0x15, - 'dual channel' => 0x15 - ) - ); - } - return $XingVBRidOffset[$version][$channelmode]; - } - - static function LAMEvbrMethodLookup($VBRmethodID) { - static $LAMEvbrMethodLookup = array( - 0x00 => 'unknown', - 0x01 => 'cbr', - 0x02 => 'abr', - 0x03 => 'vbr-old / vbr-rh', - 0x04 => 'vbr-new / vbr-mtrh', - 0x05 => 'vbr-mt', - 0x06 => 'vbr (full vbr method 4)', - 0x08 => 'cbr (constant bitrate 2 pass)', - 0x09 => 'abr (2 pass)', - 0x0F => 'reserved' - ); - return (isset($LAMEvbrMethodLookup[$VBRmethodID]) ? $LAMEvbrMethodLookup[$VBRmethodID] : ''); - } - - static function LAMEmiscStereoModeLookup($StereoModeID) { - static $LAMEmiscStereoModeLookup = array( - 0 => 'mono', - 1 => 'stereo', - 2 => 'dual mono', - 3 => 'joint stereo', - 4 => 'forced stereo', - 5 => 'auto', - 6 => 'intensity stereo', - 7 => 'other' - ); - return (isset($LAMEmiscStereoModeLookup[$StereoModeID]) ? $LAMEmiscStereoModeLookup[$StereoModeID] : ''); - } - - static function LAMEmiscSourceSampleFrequencyLookup($SourceSampleFrequencyID) { - static $LAMEmiscSourceSampleFrequencyLookup = array( - 0 => '<= 32 kHz', - 1 => '44.1 kHz', - 2 => '48 kHz', - 3 => '> 48kHz' - ); - return (isset($LAMEmiscSourceSampleFrequencyLookup[$SourceSampleFrequencyID]) ? $LAMEmiscSourceSampleFrequencyLookup[$SourceSampleFrequencyID] : ''); - } - - static function LAMEsurroundInfoLookup($SurroundInfoID) { - static $LAMEsurroundInfoLookup = array( - 0 => 'no surround info', - 1 => 'DPL encoding', - 2 => 'DPL2 encoding', - 3 => 'Ambisonic encoding' - ); - return (isset($LAMEsurroundInfoLookup[$SurroundInfoID]) ? $LAMEsurroundInfoLookup[$SurroundInfoID] : 'reserved'); - } - - static function LAMEpresetUsedLookup($LAMEtag) { - - if ($LAMEtag['preset_used_id'] == 0) { - // no preset used (LAME >=3.93) - // no preset recorded (LAME <3.93) - return ''; - } - $LAMEpresetUsedLookup = array(); - - ///// THIS PART CANNOT BE STATIC . - for ($i = 8; $i <= 320; $i++) { - switch ($LAMEtag['vbr_method']) { - case 'cbr': - $LAMEpresetUsedLookup[$i] = '--alt-preset '.$LAMEtag['vbr_method'].' '.$i; - break; - case 'abr': - default: // other VBR modes shouldn't be here(?) - $LAMEpresetUsedLookup[$i] = '--alt-preset '.$i; - break; - } - } - - // named old-style presets (studio, phone, voice, etc) are handled in GuessEncoderOptions() - - // named alt-presets - $LAMEpresetUsedLookup[1000] = '--r3mix'; - $LAMEpresetUsedLookup[1001] = '--alt-preset standard'; - $LAMEpresetUsedLookup[1002] = '--alt-preset extreme'; - $LAMEpresetUsedLookup[1003] = '--alt-preset insane'; - $LAMEpresetUsedLookup[1004] = '--alt-preset fast standard'; - $LAMEpresetUsedLookup[1005] = '--alt-preset fast extreme'; - $LAMEpresetUsedLookup[1006] = '--alt-preset medium'; - $LAMEpresetUsedLookup[1007] = '--alt-preset fast medium'; - - // LAME 3.94 additions/changes - $LAMEpresetUsedLookup[1010] = '--preset portable'; // 3.94a15 Oct 21 2003 - $LAMEpresetUsedLookup[1015] = '--preset radio'; // 3.94a15 Oct 21 2003 - - $LAMEpresetUsedLookup[320] = '--preset insane'; // 3.94a15 Nov 12 2003 - $LAMEpresetUsedLookup[410] = '-V9'; - $LAMEpresetUsedLookup[420] = '-V8'; - $LAMEpresetUsedLookup[440] = '-V6'; - $LAMEpresetUsedLookup[430] = '--preset radio'; // 3.94a15 Nov 12 2003 - $LAMEpresetUsedLookup[450] = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'portable'; // 3.94a15 Nov 12 2003 - $LAMEpresetUsedLookup[460] = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'medium'; // 3.94a15 Nov 12 2003 - $LAMEpresetUsedLookup[470] = '--r3mix'; // 3.94b1 Dec 18 2003 - $LAMEpresetUsedLookup[480] = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'standard'; // 3.94a15 Nov 12 2003 - $LAMEpresetUsedLookup[490] = '-V1'; - $LAMEpresetUsedLookup[500] = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'extreme'; // 3.94a15 Nov 12 2003 - - return (isset($LAMEpresetUsedLookup[$LAMEtag['preset_used_id']]) ? $LAMEpresetUsedLookup[$LAMEtag['preset_used_id']] : 'new/unknown preset: '.$LAMEtag['preset_used_id'].' - report to info@getid3.org'); - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.mpc.php b/3rdparty/getid3/module.audio.mpc.php deleted file mode 100644 index 9a0b16d9abcb87c7e53748492dbdc980972060ab..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.mpc.php +++ /dev/null @@ -1,509 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.mpc.php // -// module for analyzing Musepack/MPEG+ Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_mpc extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['mpc']['header'] = array(); - $thisfile_mpc_header = &$info['mpc']['header']; - - $info['fileformat'] = 'mpc'; - $info['audio']['dataformat'] = 'mpc'; - $info['audio']['bitrate_mode'] = 'vbr'; - $info['audio']['channels'] = 2; // up to SV7 the format appears to have been hardcoded for stereo only - $info['audio']['lossless'] = false; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $MPCheaderData = fread($this->getid3->fp, 4); - $info['mpc']['header']['preamble'] = substr($MPCheaderData, 0, 4); // should be 'MPCK' (SV8) or 'MP+' (SV7), otherwise possible stream data (SV4-SV6) - if (preg_match('#^MPCK#', $info['mpc']['header']['preamble'])) { - - // this is SV8 - return $this->ParseMPCsv8(); - - } elseif (preg_match('#^MP\+#', $info['mpc']['header']['preamble'])) { - - // this is SV7 - return $this->ParseMPCsv7(); - - } elseif (preg_match('/^[\x00\x01\x10\x11\x40\x41\x50\x51\x80\x81\x90\x91\xC0\xC1\xD0\xD1][\x20-37][\x00\x20\x40\x60\x80\xA0\xC0\xE0]/s', $MPCheaderData)) { - - // this is SV4 - SV6, handle seperately - return $this->ParseMPCsv6(); - - } else { - - $info['error'][] = 'Expecting "MP+" or "MPCK" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($MPCheaderData, 0, 4)).'"'; - unset($info['fileformat']); - unset($info['mpc']); - return false; - - } - return false; - } - - - function ParseMPCsv8() { - // this is SV8 - // http://trac.musepack.net/trac/wiki/SV8Specification - - $info = &$this->getid3->info; - $thisfile_mpc_header = &$info['mpc']['header']; - - $keyNameSize = 2; - $maxHandledPacketLength = 9; // specs say: "n*8; 0 < n < 10" - - $offset = ftell($this->getid3->fp); - while ($offset < $info['avdataend']) { - $thisPacket = array(); - $thisPacket['offset'] = $offset; - $packet_offset = 0; - - // Size is a variable-size field, could be 1-4 bytes (possibly more?) - // read enough data in and figure out the exact size later - $MPCheaderData = fread($this->getid3->fp, $keyNameSize + $maxHandledPacketLength); - $packet_offset += $keyNameSize; - $thisPacket['key'] = substr($MPCheaderData, 0, $keyNameSize); - $thisPacket['key_name'] = $this->MPCsv8PacketName($thisPacket['key']); - if ($thisPacket['key'] == $thisPacket['key_name']) { - $info['error'][] = 'Found unexpected key value "'.$thisPacket['key'].'" at offset '.$thisPacket['offset']; - return false; - } - $packetLength = 0; - $thisPacket['packet_size'] = $this->SV8variableLengthInteger(substr($MPCheaderData, $keyNameSize), $packetLength); // includes keyname and packet_size field - if ($thisPacket['packet_size'] === false) { - $info['error'][] = 'Did not find expected packet length within '.$maxHandledPacketLength.' bytes at offset '.($thisPacket['offset'] + $keyNameSize); - return false; - } - $packet_offset += $packetLength; - $offset += $thisPacket['packet_size']; - - switch ($thisPacket['key']) { - case 'SH': // Stream Header - $moreBytesToRead = $thisPacket['packet_size'] - $keyNameSize - $maxHandledPacketLength; - if ($moreBytesToRead > 0) { - $MPCheaderData .= fread($this->getid3->fp, $moreBytesToRead); - } - $thisPacket['crc'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 4)); - $packet_offset += 4; - $thisPacket['stream_version'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 1)); - $packet_offset += 1; - - $packetLength = 0; - $thisPacket['sample_count'] = $this->SV8variableLengthInteger(substr($MPCheaderData, $packet_offset, $maxHandledPacketLength), $packetLength); - $packet_offset += $packetLength; - - $packetLength = 0; - $thisPacket['beginning_silence'] = $this->SV8variableLengthInteger(substr($MPCheaderData, $packet_offset, $maxHandledPacketLength), $packetLength); - $packet_offset += $packetLength; - - $otherUsefulData = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 2)); - $packet_offset += 2; - $thisPacket['sample_frequency_raw'] = (($otherUsefulData & 0xE000) >> 13); - $thisPacket['max_bands_used'] = (($otherUsefulData & 0x1F00) >> 8); - $thisPacket['channels'] = (($otherUsefulData & 0x00F0) >> 4) + 1; - $thisPacket['ms_used'] = (bool) (($otherUsefulData & 0x0008) >> 3); - $thisPacket['audio_block_frames'] = (($otherUsefulData & 0x0007) >> 0); - $thisPacket['sample_frequency'] = $this->MPCfrequencyLookup($thisPacket['sample_frequency_raw']); - - $thisfile_mpc_header['mid_side_stereo'] = $thisPacket['ms_used']; - $thisfile_mpc_header['sample_rate'] = $thisPacket['sample_frequency']; - $thisfile_mpc_header['samples'] = $thisPacket['sample_count']; - $thisfile_mpc_header['stream_version_major'] = $thisPacket['stream_version']; - - $info['audio']['channels'] = $thisPacket['channels']; - $info['audio']['sample_rate'] = $thisPacket['sample_frequency']; - $info['playtime_seconds'] = $thisPacket['sample_count'] / $thisPacket['sample_frequency']; - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - break; - - case 'RG': // Replay Gain - $moreBytesToRead = $thisPacket['packet_size'] - $keyNameSize - $maxHandledPacketLength; - if ($moreBytesToRead > 0) { - $MPCheaderData .= fread($this->getid3->fp, $moreBytesToRead); - } - $thisPacket['replaygain_version'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 1)); - $packet_offset += 1; - $thisPacket['replaygain_title_gain'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 2)); - $packet_offset += 2; - $thisPacket['replaygain_title_peak'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 2)); - $packet_offset += 2; - $thisPacket['replaygain_album_gain'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 2)); - $packet_offset += 2; - $thisPacket['replaygain_album_peak'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 2)); - $packet_offset += 2; - - if ($thisPacket['replaygain_title_gain']) { $info['replay_gain']['title']['gain'] = $thisPacket['replaygain_title_gain']; } - if ($thisPacket['replaygain_title_peak']) { $info['replay_gain']['title']['peak'] = $thisPacket['replaygain_title_peak']; } - if ($thisPacket['replaygain_album_gain']) { $info['replay_gain']['album']['gain'] = $thisPacket['replaygain_album_gain']; } - if ($thisPacket['replaygain_album_peak']) { $info['replay_gain']['album']['peak'] = $thisPacket['replaygain_album_peak']; } - break; - - case 'EI': // Encoder Info - $moreBytesToRead = $thisPacket['packet_size'] - $keyNameSize - $maxHandledPacketLength; - if ($moreBytesToRead > 0) { - $MPCheaderData .= fread($this->getid3->fp, $moreBytesToRead); - } - $profile_pns = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 1)); - $packet_offset += 1; - $quality_int = (($profile_pns & 0xF0) >> 4); - $quality_dec = (($profile_pns & 0x0E) >> 3); - $thisPacket['quality'] = (float) $quality_int + ($quality_dec / 8); - $thisPacket['pns_tool'] = (bool) (($profile_pns & 0x01) >> 0); - $thisPacket['version_major'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 1)); - $packet_offset += 1; - $thisPacket['version_minor'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 1)); - $packet_offset += 1; - $thisPacket['version_build'] = getid3_lib::BigEndian2Int(substr($MPCheaderData, $packet_offset, 1)); - $packet_offset += 1; - $thisPacket['version'] = $thisPacket['version_major'].'.'.$thisPacket['version_minor'].'.'.$thisPacket['version_build']; - - $info['audio']['encoder'] = 'MPC v'.$thisPacket['version'].' ('.(($thisPacket['version_minor'] % 2) ? 'unstable' : 'stable').')'; - $thisfile_mpc_header['encoder_version'] = $info['audio']['encoder']; - //$thisfile_mpc_header['quality'] = (float) ($thisPacket['quality'] / 1.5875); // values can range from 0.000 to 15.875, mapped to qualities of 0.0 to 10.0 - $thisfile_mpc_header['quality'] = (float) ($thisPacket['quality'] - 5); // values can range from 0.000 to 15.875, of which 0..4 are "reserved/experimental", and 5..15 are mapped to qualities of 0.0 to 10.0 - break; - - case 'SO': // Seek Table Offset - $packetLength = 0; - $thisPacket['seek_table_offset'] = $thisPacket['offset'] + $this->SV8variableLengthInteger(substr($MPCheaderData, $packet_offset, $maxHandledPacketLength), $packetLength); - $packet_offset += $packetLength; - break; - - case 'ST': // Seek Table - case 'SE': // Stream End - case 'AP': // Audio Data - // nothing useful here, just skip this packet - $thisPacket = array(); - break; - - default: - $info['error'][] = 'Found unhandled key type "'.$thisPacket['key'].'" at offset '.$thisPacket['offset']; - return false; - break; - } - if (!empty($thisPacket)) { - $info['mpc']['packets'][] = $thisPacket; - } - fseek($this->getid3->fp, $offset); - } - $thisfile_mpc_header['size'] = $offset; - return true; - } - - function ParseMPCsv7() { - // this is SV7 - // http://www.uni-jena.de/~pfk/mpp/sv8/header.html - - $info = &$this->getid3->info; - $thisfile_mpc_header = &$info['mpc']['header']; - $offset = 0; - - $thisfile_mpc_header['size'] = 28; - $MPCheaderData = $info['mpc']['header']['preamble']; - $MPCheaderData .= fread($this->getid3->fp, $thisfile_mpc_header['size'] - strlen($info['mpc']['header']['preamble'])); - $offset = strlen('MP+'); - - $StreamVersionByte = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 1)); - $offset += 1; - $thisfile_mpc_header['stream_version_major'] = ($StreamVersionByte & 0x0F) >> 0; - $thisfile_mpc_header['stream_version_minor'] = ($StreamVersionByte & 0xF0) >> 4; // should always be 0, subversions no longer exist in SV8 - $thisfile_mpc_header['frame_count'] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 4)); - $offset += 4; - - if ($thisfile_mpc_header['stream_version_major'] != 7) { - $info['error'][] = 'Only Musepack SV7 supported (this file claims to be v'.$thisfile_mpc_header['stream_version_major'].')'; - return false; - } - - $FlagsDWORD1 = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 4)); - $offset += 4; - $thisfile_mpc_header['intensity_stereo'] = (bool) (($FlagsDWORD1 & 0x80000000) >> 31); - $thisfile_mpc_header['mid_side_stereo'] = (bool) (($FlagsDWORD1 & 0x40000000) >> 30); - $thisfile_mpc_header['max_subband'] = ($FlagsDWORD1 & 0x3F000000) >> 24; - $thisfile_mpc_header['raw']['profile'] = ($FlagsDWORD1 & 0x00F00000) >> 20; - $thisfile_mpc_header['begin_loud'] = (bool) (($FlagsDWORD1 & 0x00080000) >> 19); - $thisfile_mpc_header['end_loud'] = (bool) (($FlagsDWORD1 & 0x00040000) >> 18); - $thisfile_mpc_header['raw']['sample_rate'] = ($FlagsDWORD1 & 0x00030000) >> 16; - $thisfile_mpc_header['max_level'] = ($FlagsDWORD1 & 0x0000FFFF); - - $thisfile_mpc_header['raw']['title_peak'] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 2)); - $offset += 2; - $thisfile_mpc_header['raw']['title_gain'] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 2), true); - $offset += 2; - - $thisfile_mpc_header['raw']['album_peak'] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 2)); - $offset += 2; - $thisfile_mpc_header['raw']['album_gain'] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 2), true); - $offset += 2; - - $FlagsDWORD2 = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 4)); - $offset += 4; - $thisfile_mpc_header['true_gapless'] = (bool) (($FlagsDWORD2 & 0x80000000) >> 31); - $thisfile_mpc_header['last_frame_length'] = ($FlagsDWORD2 & 0x7FF00000) >> 20; - - - $thisfile_mpc_header['raw']['not_sure_what'] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 3)); - $offset += 3; - $thisfile_mpc_header['raw']['encoder_version'] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, $offset, 1)); - $offset += 1; - - $thisfile_mpc_header['profile'] = $this->MPCprofileNameLookup($thisfile_mpc_header['raw']['profile']); - $thisfile_mpc_header['sample_rate'] = $this->MPCfrequencyLookup($thisfile_mpc_header['raw']['sample_rate']); - if ($thisfile_mpc_header['sample_rate'] == 0) { - $info['error'][] = 'Corrupt MPC file: frequency == zero'; - return false; - } - $info['audio']['sample_rate'] = $thisfile_mpc_header['sample_rate']; - $thisfile_mpc_header['samples'] = ((($thisfile_mpc_header['frame_count'] - 1) * 1152) + $thisfile_mpc_header['last_frame_length']) * $info['audio']['channels']; - - $info['playtime_seconds'] = ($thisfile_mpc_header['samples'] / $info['audio']['channels']) / $info['audio']['sample_rate']; - if ($info['playtime_seconds'] == 0) { - $info['error'][] = 'Corrupt MPC file: playtime_seconds == zero'; - return false; - } - - // add size of file header to avdataoffset - calc bitrate correctly + MD5 data - $info['avdataoffset'] += $thisfile_mpc_header['size']; - - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - - $thisfile_mpc_header['title_peak'] = $thisfile_mpc_header['raw']['title_peak']; - $thisfile_mpc_header['title_peak_db'] = $this->MPCpeakDBLookup($thisfile_mpc_header['title_peak']); - if ($thisfile_mpc_header['raw']['title_gain'] < 0) { - $thisfile_mpc_header['title_gain_db'] = (float) (32768 + $thisfile_mpc_header['raw']['title_gain']) / -100; - } else { - $thisfile_mpc_header['title_gain_db'] = (float) $thisfile_mpc_header['raw']['title_gain'] / 100; - } - - $thisfile_mpc_header['album_peak'] = $thisfile_mpc_header['raw']['album_peak']; - $thisfile_mpc_header['album_peak_db'] = $this->MPCpeakDBLookup($thisfile_mpc_header['album_peak']); - if ($thisfile_mpc_header['raw']['album_gain'] < 0) { - $thisfile_mpc_header['album_gain_db'] = (float) (32768 + $thisfile_mpc_header['raw']['album_gain']) / -100; - } else { - $thisfile_mpc_header['album_gain_db'] = (float) $thisfile_mpc_header['raw']['album_gain'] / 100;; - } - $thisfile_mpc_header['encoder_version'] = $this->MPCencoderVersionLookup($thisfile_mpc_header['raw']['encoder_version']); - - $info['replay_gain']['track']['adjustment'] = $thisfile_mpc_header['title_gain_db']; - $info['replay_gain']['album']['adjustment'] = $thisfile_mpc_header['album_gain_db']; - - if ($thisfile_mpc_header['title_peak'] > 0) { - $info['replay_gain']['track']['peak'] = $thisfile_mpc_header['title_peak']; - } elseif (round($thisfile_mpc_header['max_level'] * 1.18) > 0) { - $info['replay_gain']['track']['peak'] = getid3_lib::CastAsInt(round($thisfile_mpc_header['max_level'] * 1.18)); // why? I don't know - see mppdec.c - } - if ($thisfile_mpc_header['album_peak'] > 0) { - $info['replay_gain']['album']['peak'] = $thisfile_mpc_header['album_peak']; - } - - //$info['audio']['encoder'] = 'SV'.$thisfile_mpc_header['stream_version_major'].'.'.$thisfile_mpc_header['stream_version_minor'].', '.$thisfile_mpc_header['encoder_version']; - $info['audio']['encoder'] = $thisfile_mpc_header['encoder_version']; - $info['audio']['encoder_options'] = $thisfile_mpc_header['profile']; - $thisfile_mpc_header['quality'] = (float) ($thisfile_mpc_header['raw']['profile'] - 5); // values can range from 0 to 15, of which 0..4 are "reserved/experimental", and 5..15 are mapped to qualities of 0.0 to 10.0 - - return true; - } - - function ParseMPCsv6() { - // this is SV4 - SV6 - - $info = &$this->getid3->info; - $thisfile_mpc_header = &$info['mpc']['header']; - $offset = 0; - - $thisfile_mpc_header['size'] = 8; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $MPCheaderData = fread($this->getid3->fp, $thisfile_mpc_header['size']); - - // add size of file header to avdataoffset - calc bitrate correctly + MD5 data - $info['avdataoffset'] += $thisfile_mpc_header['size']; - - // Most of this code adapted from Jurgen Faul's MPEGplus source code - thanks Jurgen! :) - $HeaderDWORD[0] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, 0, 4)); - $HeaderDWORD[1] = getid3_lib::LittleEndian2Int(substr($MPCheaderData, 4, 4)); - - - // DDDD DDDD CCCC CCCC BBBB BBBB AAAA AAAA - // aaaa aaaa abcd dddd dddd deee eeff ffff - // - // a = bitrate = anything - // b = IS = anything - // c = MS = anything - // d = streamversion = 0000000004 or 0000000005 or 0000000006 - // e = maxband = anything - // f = blocksize = 000001 for SV5+, anything(?) for SV4 - - $thisfile_mpc_header['target_bitrate'] = (($HeaderDWORD[0] & 0xFF800000) >> 23); - $thisfile_mpc_header['intensity_stereo'] = (bool) (($HeaderDWORD[0] & 0x00400000) >> 22); - $thisfile_mpc_header['mid_side_stereo'] = (bool) (($HeaderDWORD[0] & 0x00200000) >> 21); - $thisfile_mpc_header['stream_version_major'] = ($HeaderDWORD[0] & 0x001FF800) >> 11; - $thisfile_mpc_header['stream_version_minor'] = 0; // no sub-version numbers before SV7 - $thisfile_mpc_header['max_band'] = ($HeaderDWORD[0] & 0x000007C0) >> 6; // related to lowpass frequency, not sure how it translates exactly - $thisfile_mpc_header['block_size'] = ($HeaderDWORD[0] & 0x0000003F); - - switch ($thisfile_mpc_header['stream_version_major']) { - case 4: - $thisfile_mpc_header['frame_count'] = ($HeaderDWORD[1] >> 16); - break; - - case 5: - case 6: - $thisfile_mpc_header['frame_count'] = $HeaderDWORD[1]; - break; - - default: - $info['error'] = 'Expecting 4, 5 or 6 in version field, found '.$thisfile_mpc_header['stream_version_major'].' instead'; - unset($info['mpc']); - return false; - break; - } - - if (($thisfile_mpc_header['stream_version_major'] > 4) && ($thisfile_mpc_header['block_size'] != 1)) { - $info['warning'][] = 'Block size expected to be 1, actual value found: '.$thisfile_mpc_header['block_size']; - } - - $thisfile_mpc_header['sample_rate'] = 44100; // AB: used by all files up to SV7 - $info['audio']['sample_rate'] = $thisfile_mpc_header['sample_rate']; - $thisfile_mpc_header['samples'] = $thisfile_mpc_header['frame_count'] * 1152 * $info['audio']['channels']; - - if ($thisfile_mpc_header['target_bitrate'] == 0) { - $info['audio']['bitrate_mode'] = 'vbr'; - } else { - $info['audio']['bitrate_mode'] = 'cbr'; - } - - $info['mpc']['bitrate'] = ($info['avdataend'] - $info['avdataoffset']) * 8 * 44100 / $thisfile_mpc_header['frame_count'] / 1152; - $info['audio']['bitrate'] = $info['mpc']['bitrate']; - $info['audio']['encoder'] = 'SV'.$thisfile_mpc_header['stream_version_major']; - - return true; - } - - - function MPCprofileNameLookup($profileid) { - static $MPCprofileNameLookup = array( - 0 => 'no profile', - 1 => 'Experimental', - 2 => 'unused', - 3 => 'unused', - 4 => 'unused', - 5 => 'below Telephone (q = 0.0)', - 6 => 'below Telephone (q = 1.0)', - 7 => 'Telephone (q = 2.0)', - 8 => 'Thumb (q = 3.0)', - 9 => 'Radio (q = 4.0)', - 10 => 'Standard (q = 5.0)', - 11 => 'Extreme (q = 6.0)', - 12 => 'Insane (q = 7.0)', - 13 => 'BrainDead (q = 8.0)', - 14 => 'above BrainDead (q = 9.0)', - 15 => 'above BrainDead (q = 10.0)' - ); - return (isset($MPCprofileNameLookup[$profileid]) ? $MPCprofileNameLookup[$profileid] : 'invalid'); - } - - function MPCfrequencyLookup($frequencyid) { - static $MPCfrequencyLookup = array( - 0 => 44100, - 1 => 48000, - 2 => 37800, - 3 => 32000 - ); - return (isset($MPCfrequencyLookup[$frequencyid]) ? $MPCfrequencyLookup[$frequencyid] : 'invalid'); - } - - function MPCpeakDBLookup($intvalue) { - if ($intvalue > 0) { - return ((log10($intvalue) / log10(2)) - 15) * 6; - } - return false; - } - - function MPCencoderVersionLookup($encoderversion) { - //Encoder version * 100 (106 = 1.06) - //EncoderVersion % 10 == 0 Release (1.0) - //EncoderVersion % 2 == 0 Beta (1.06) - //EncoderVersion % 2 == 1 Alpha (1.05a...z) - - if ($encoderversion == 0) { - // very old version, not known exactly which - return 'Buschmann v1.7.0-v1.7.9 or Klemm v0.90-v1.05'; - } - - if (($encoderversion % 10) == 0) { - - // release version - return number_format($encoderversion / 100, 2); - - } elseif (($encoderversion % 2) == 0) { - - // beta version - return number_format($encoderversion / 100, 2).' beta'; - - } - - // alpha version - return number_format($encoderversion / 100, 2).' alpha'; - } - - function SV8variableLengthInteger($data, &$packetLength, $maxHandledPacketLength=9) { - $packet_size = 0; - for ($packetLength = 1; $packetLength <= $maxHandledPacketLength; $packetLength++) { - // variable-length size field: - // bits, big-endian - // 0xxx xxxx - value 0 to 2^7-1 - // 1xxx xxxx 0xxx xxxx - value 0 to 2^14-1 - // 1xxx xxxx 1xxx xxxx 0xxx xxxx - value 0 to 2^21-1 - // 1xxx xxxx 1xxx xxxx 1xxx xxxx 0xxx xxxx - value 0 to 2^28-1 - // ... - $thisbyte = ord(substr($data, ($packetLength - 1), 1)); - // look through bytes until find a byte with MSB==0 - $packet_size = ($packet_size << 7); - $packet_size = ($packet_size | ($thisbyte & 0x7F)); - if (($thisbyte & 0x80) === 0) { - break; - } - if ($packetLength >= $maxHandledPacketLength) { - return false; - } - } - return $packet_size; - } - - function MPCsv8PacketName($packetKey) { - static $MPCsv8PacketName = array(); - if (empty($MPCsv8PacketName)) { - $MPCsv8PacketName = array( - 'AP' => 'Audio Packet', - 'CT' => 'Chapter Tag', - 'EI' => 'Encoder Info', - 'RG' => 'Replay Gain', - 'SE' => 'Stream End', - 'SH' => 'Stream Header', - 'SO' => 'Seek Table Offset', - 'ST' => 'Seek Table', - ); - } - return (isset($MPCsv8PacketName[$packetKey]) ? $MPCsv8PacketName[$packetKey] : $packetKey); - } -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.ogg.php b/3rdparty/getid3/module.audio.ogg.php deleted file mode 100644 index c987fa67d700e29e8ce603f154005648fe358e08..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.ogg.php +++ /dev/null @@ -1,705 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.ogg.php // -// module for analyzing Ogg Vorbis, OggFLAC and Speex files // -// dependencies: module.audio.flac.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.flac.php', __FILE__, true); - -class getid3_ogg extends getid3_handler -{ - var $inline_attachments = true; // true: return full data for all attachments; false: return no data for all attachments; integer: return data for attachments <= than this; string: save as file to this directory - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'ogg'; - - // Warn about illegal tags - only vorbiscomments are allowed - if (isset($info['id3v2'])) { - $info['warning'][] = 'Illegal ID3v2 tag present.'; - } - if (isset($info['id3v1'])) { - $info['warning'][] = 'Illegal ID3v1 tag present.'; - } - if (isset($info['ape'])) { - $info['warning'][] = 'Illegal APE tag present.'; - } - - - // Page 1 - Stream Header - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $oggpageinfo = $this->ParseOggPageHeader(); - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo; - - if (ftell($this->getid3->fp) >= $this->getid3->fread_buffer_size()) { - $info['error'][] = 'Could not find start of Ogg page in the first '.$this->getid3->fread_buffer_size().' bytes (this might not be an Ogg-Vorbis file?)'; - unset($info['fileformat']); - unset($info['ogg']); - return false; - } - - $filedata = fread($this->getid3->fp, $oggpageinfo['page_length']); - $filedataoffset = 0; - - if (substr($filedata, 0, 4) == 'fLaC') { - - $info['audio']['dataformat'] = 'flac'; - $info['audio']['bitrate_mode'] = 'vbr'; - $info['audio']['lossless'] = true; - - } elseif (substr($filedata, 1, 6) == 'vorbis') { - - $this->ParseVorbisPageHeader($filedata, $filedataoffset, $oggpageinfo); - - } elseif (substr($filedata, 0, 8) == 'Speex ') { - - // http://www.speex.org/manual/node10.html - - $info['audio']['dataformat'] = 'speex'; - $info['mime_type'] = 'audio/speex'; - $info['audio']['bitrate_mode'] = 'abr'; - $info['audio']['lossless'] = false; - - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_string'] = substr($filedata, $filedataoffset, 8); // hard-coded to 'Speex ' - $filedataoffset += 8; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_version'] = substr($filedata, $filedataoffset, 20); - $filedataoffset += 20; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_version_id'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['header_size'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['rate'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['mode'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['mode_bitstream_version'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['nb_channels'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['bitrate'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['framesize'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['vbr'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['frames_per_packet'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['extra_headers'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['reserved1'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['reserved2'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - - $info['speex']['speex_version'] = trim($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_version']); - $info['speex']['sample_rate'] = $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['rate']; - $info['speex']['channels'] = $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['nb_channels']; - $info['speex']['vbr'] = (bool) $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['vbr']; - $info['speex']['band_type'] = $this->SpeexBandModeLookup($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['mode']); - - $info['audio']['sample_rate'] = $info['speex']['sample_rate']; - $info['audio']['channels'] = $info['speex']['channels']; - if ($info['speex']['vbr']) { - $info['audio']['bitrate_mode'] = 'vbr'; - } - - - } elseif (substr($filedata, 0, 8) == "fishead\x00") { - - // Ogg Skeleton version 3.0 Format Specification - // http://xiph.org/ogg/doc/skeleton.html - $filedataoffset += 8; - $info['ogg']['skeleton']['fishead']['raw']['version_major'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 2)); - $filedataoffset += 2; - $info['ogg']['skeleton']['fishead']['raw']['version_minor'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 2)); - $filedataoffset += 2; - $info['ogg']['skeleton']['fishead']['raw']['presentationtime_numerator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $info['ogg']['skeleton']['fishead']['raw']['presentationtime_denominator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $info['ogg']['skeleton']['fishead']['raw']['basetime_numerator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $info['ogg']['skeleton']['fishead']['raw']['basetime_denominator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $info['ogg']['skeleton']['fishead']['raw']['utc'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 20)); - $filedataoffset += 20; - - $info['ogg']['skeleton']['fishead']['version'] = $info['ogg']['skeleton']['fishead']['raw']['version_major'].'.'.$info['ogg']['skeleton']['fishead']['raw']['version_minor']; - $info['ogg']['skeleton']['fishead']['presentationtime'] = $info['ogg']['skeleton']['fishead']['raw']['presentationtime_numerator'] / $info['ogg']['skeleton']['fishead']['raw']['presentationtime_denominator']; - $info['ogg']['skeleton']['fishead']['basetime'] = $info['ogg']['skeleton']['fishead']['raw']['basetime_numerator'] / $info['ogg']['skeleton']['fishead']['raw']['basetime_denominator']; - $info['ogg']['skeleton']['fishead']['utc'] = $info['ogg']['skeleton']['fishead']['raw']['utc']; - - - $counter = 0; - do { - $oggpageinfo = $this->ParseOggPageHeader(); - $info['ogg']['pageheader'][$oggpageinfo['page_seqno'].'.'.$counter++] = $oggpageinfo; - $filedata = fread($this->getid3->fp, $oggpageinfo['page_length']); - fseek($this->getid3->fp, $oggpageinfo['page_end_offset'], SEEK_SET); - - if (substr($filedata, 0, 8) == "fisbone\x00") { - - $filedataoffset = 8; - $info['ogg']['skeleton']['fisbone']['raw']['message_header_offset'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['skeleton']['fisbone']['raw']['serial_number'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['skeleton']['fisbone']['raw']['number_header_packets'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['skeleton']['fisbone']['raw']['granulerate_numerator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $info['ogg']['skeleton']['fisbone']['raw']['granulerate_denominator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $info['ogg']['skeleton']['fisbone']['raw']['basegranule'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $info['ogg']['skeleton']['fisbone']['raw']['preroll'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['skeleton']['fisbone']['raw']['granuleshift'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); - $filedataoffset += 1; - $info['ogg']['skeleton']['fisbone']['raw']['padding'] = substr($filedata, $filedataoffset, 3); - $filedataoffset += 3; - - } elseif (substr($filedata, 1, 6) == 'theora') { - - $info['video']['dataformat'] = 'theora'; -$info['error'][] = 'Ogg Theora not correctly handled in this version of getID3 ['.$this->getid3->version().']'; -//break; - - } elseif (substr($filedata, 1, 6) == 'vorbis') { - - $this->ParseVorbisPageHeader($filedata, $filedataoffset, $oggpageinfo); - - } else { -$info['error'][] = 'unexpected'; -//break; - } - //} while ($oggpageinfo['page_seqno'] == 0); - } while (($oggpageinfo['page_seqno'] == 0) && (substr($filedata, 0, 8) != "fisbone\x00")); - fseek($this->getid3->fp, $oggpageinfo['page_start_offset'], SEEK_SET); - - -$info['error'][] = 'Ogg Skeleton not correctly handled in this version of getID3 ['.$this->getid3->version().']'; -//return false; - - - } else { - - $info['error'][] = 'Expecting either "Speex " or "vorbis" identifier strings, found "'.substr($filedata, 0, 8).'"'; - unset($info['ogg']); - unset($info['mime_type']); - return false; - - } - - // Page 2 - Comment Header - $oggpageinfo = $this->ParseOggPageHeader(); - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo; - - switch ($info['audio']['dataformat']) { - case 'vorbis': - $filedata = fread($this->getid3->fp, $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length']); - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['packet_type'] = getid3_lib::LittleEndian2Int(substr($filedata, 0, 1)); - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['stream_type'] = substr($filedata, 1, 6); // hard-coded to 'vorbis' - - $this->ParseVorbisCommentsFilepointer(); - break; - - case 'flac': - $getid3_flac = new getid3_flac($this->getid3); - if (!$getid3_flac->FLACparseMETAdata()) { - $info['error'][] = 'Failed to parse FLAC headers'; - return false; - } - unset($getid3_flac); - break; - - case 'speex': - fseek($this->getid3->fp, $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length'], SEEK_CUR); - $this->ParseVorbisCommentsFilepointer(); - break; - - } - - - - // Last Page - Number of Samples - - if (!getid3_lib::intValueSupported($info['avdataend'])) { - - $info['warning'][] = 'Unable to parse Ogg end chunk file (PHP does not support file operations beyond '.round(PHP_INT_MAX / 1073741824).'GB)'; - - } else { - - fseek($this->getid3->fp, max($info['avdataend'] - $this->getid3->fread_buffer_size(), 0), SEEK_SET); - $LastChunkOfOgg = strrev(fread($this->getid3->fp, $this->getid3->fread_buffer_size())); - if ($LastOggSpostion = strpos($LastChunkOfOgg, 'SggO')) { - fseek($this->getid3->fp, $info['avdataend'] - ($LastOggSpostion + strlen('SggO')), SEEK_SET); - $info['avdataend'] = ftell($this->getid3->fp); - $info['ogg']['pageheader']['eos'] = $this->ParseOggPageHeader(); - $info['ogg']['samples'] = $info['ogg']['pageheader']['eos']['pcm_abs_position']; - if ($info['ogg']['samples'] == 0) { - $info['error'][] = 'Corrupt Ogg file: eos.number of samples == zero'; - return false; - } - if (!empty($info['audio']['sample_rate'])) { - $info['ogg']['bitrate_average'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / ($info['ogg']['samples'] / $info['audio']['sample_rate']); - } - } - - } - - if (!empty($info['ogg']['bitrate_average'])) { - $info['audio']['bitrate'] = $info['ogg']['bitrate_average']; - } elseif (!empty($info['ogg']['bitrate_nominal'])) { - $info['audio']['bitrate'] = $info['ogg']['bitrate_nominal']; - } elseif (!empty($info['ogg']['bitrate_min']) && !empty($info['ogg']['bitrate_max'])) { - $info['audio']['bitrate'] = ($info['ogg']['bitrate_min'] + $info['ogg']['bitrate_max']) / 2; - } - if (isset($info['audio']['bitrate']) && !isset($info['playtime_seconds'])) { - if ($info['audio']['bitrate'] == 0) { - $info['error'][] = 'Corrupt Ogg file: bitrate_audio == zero'; - return false; - } - $info['playtime_seconds'] = (float) ((($info['avdataend'] - $info['avdataoffset']) * 8) / $info['audio']['bitrate']); - } - - if (isset($info['ogg']['vendor'])) { - $info['audio']['encoder'] = preg_replace('/^Encoded with /', '', $info['ogg']['vendor']); - - // Vorbis only - if ($info['audio']['dataformat'] == 'vorbis') { - - // Vorbis 1.0 starts with Xiph.Org - if (preg_match('/^Xiph.Org/', $info['audio']['encoder'])) { - - if ($info['audio']['bitrate_mode'] == 'abr') { - - // Set -b 128 on abr files - $info['audio']['encoder_options'] = '-b '.round($info['ogg']['bitrate_nominal'] / 1000); - - } elseif (($info['audio']['bitrate_mode'] == 'vbr') && ($info['audio']['channels'] == 2) && ($info['audio']['sample_rate'] >= 44100) && ($info['audio']['sample_rate'] <= 48000)) { - // Set -q N on vbr files - $info['audio']['encoder_options'] = '-q '.$this->get_quality_from_nominal_bitrate($info['ogg']['bitrate_nominal']); - - } - } - - if (empty($info['audio']['encoder_options']) && !empty($info['ogg']['bitrate_nominal'])) { - $info['audio']['encoder_options'] = 'Nominal bitrate: '.intval(round($info['ogg']['bitrate_nominal'] / 1000)).'kbps'; - } - } - } - - return true; - } - - function ParseVorbisPageHeader(&$filedata, &$filedataoffset, &$oggpageinfo) { - $info = &$this->getid3->info; - $info['audio']['dataformat'] = 'vorbis'; - $info['audio']['lossless'] = false; - - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['packet_type'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); - $filedataoffset += 1; - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['stream_type'] = substr($filedata, $filedataoffset, 6); // hard-coded to 'vorbis' - $filedataoffset += 6; - $info['ogg']['bitstreamversion'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['numberofchannels'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); - $filedataoffset += 1; - $info['audio']['channels'] = $info['ogg']['numberofchannels']; - $info['ogg']['samplerate'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - if ($info['ogg']['samplerate'] == 0) { - $info['error'][] = 'Corrupt Ogg file: sample rate == zero'; - return false; - } - $info['audio']['sample_rate'] = $info['ogg']['samplerate']; - $info['ogg']['samples'] = 0; // filled in later - $info['ogg']['bitrate_average'] = 0; // filled in later - $info['ogg']['bitrate_max'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['bitrate_nominal'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['bitrate_min'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $info['ogg']['blocksize_small'] = pow(2, getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)) & 0x0F); - $info['ogg']['blocksize_large'] = pow(2, (getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)) & 0xF0) >> 4); - $info['ogg']['stop_bit'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); // must be 1, marks end of packet - - $info['audio']['bitrate_mode'] = 'vbr'; // overridden if actually abr - if ($info['ogg']['bitrate_max'] == 0xFFFFFFFF) { - unset($info['ogg']['bitrate_max']); - $info['audio']['bitrate_mode'] = 'abr'; - } - if ($info['ogg']['bitrate_nominal'] == 0xFFFFFFFF) { - unset($info['ogg']['bitrate_nominal']); - } - if ($info['ogg']['bitrate_min'] == 0xFFFFFFFF) { - unset($info['ogg']['bitrate_min']); - $info['audio']['bitrate_mode'] = 'abr'; - } - return true; - } - - function ParseOggPageHeader() { - // http://xiph.org/ogg/vorbis/doc/framing.html - $oggheader['page_start_offset'] = ftell($this->getid3->fp); // where we started from in the file - - $filedata = fread($this->getid3->fp, $this->getid3->fread_buffer_size()); - $filedataoffset = 0; - while ((substr($filedata, $filedataoffset++, 4) != 'OggS')) { - if ((ftell($this->getid3->fp) - $oggheader['page_start_offset']) >= $this->getid3->fread_buffer_size()) { - // should be found before here - return false; - } - if ((($filedataoffset + 28) > strlen($filedata)) || (strlen($filedata) < 28)) { - if (feof($this->getid3->fp) || (($filedata .= fread($this->getid3->fp, $this->getid3->fread_buffer_size())) === false)) { - // get some more data, unless eof, in which case fail - return false; - } - } - } - $filedataoffset += strlen('OggS') - 1; // page, delimited by 'OggS' - - $oggheader['stream_structver'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); - $filedataoffset += 1; - $oggheader['flags_raw'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); - $filedataoffset += 1; - $oggheader['flags']['fresh'] = (bool) ($oggheader['flags_raw'] & 0x01); // fresh packet - $oggheader['flags']['bos'] = (bool) ($oggheader['flags_raw'] & 0x02); // first page of logical bitstream (bos) - $oggheader['flags']['eos'] = (bool) ($oggheader['flags_raw'] & 0x04); // last page of logical bitstream (eos) - - $oggheader['pcm_abs_position'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8)); - $filedataoffset += 8; - $oggheader['stream_serialno'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $oggheader['page_seqno'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $oggheader['page_checksum'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4)); - $filedataoffset += 4; - $oggheader['page_segments'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); - $filedataoffset += 1; - $oggheader['page_length'] = 0; - for ($i = 0; $i < $oggheader['page_segments']; $i++) { - $oggheader['segment_table'][$i] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); - $filedataoffset += 1; - $oggheader['page_length'] += $oggheader['segment_table'][$i]; - } - $oggheader['header_end_offset'] = $oggheader['page_start_offset'] + $filedataoffset; - $oggheader['page_end_offset'] = $oggheader['header_end_offset'] + $oggheader['page_length']; - fseek($this->getid3->fp, $oggheader['header_end_offset'], SEEK_SET); - - return $oggheader; - } - - - function ParseVorbisCommentsFilepointer() { - $info = &$this->getid3->info; - - $OriginalOffset = ftell($this->getid3->fp); - $commentdataoffset = 0; - $VorbisCommentPage = 1; - - switch ($info['audio']['dataformat']) { - case 'vorbis': - $CommentStartOffset = $info['ogg']['pageheader'][$VorbisCommentPage]['page_start_offset']; // Second Ogg page, after header block - fseek($this->getid3->fp, $CommentStartOffset, SEEK_SET); - $commentdataoffset = 27 + $info['ogg']['pageheader'][$VorbisCommentPage]['page_segments']; - $commentdata = fread($this->getid3->fp, getid3_ogg::OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1) + $commentdataoffset); - - $commentdataoffset += (strlen('vorbis') + 1); - break; - - case 'flac': - $CommentStartOffset = $info['flac']['VORBIS_COMMENT']['raw']['offset'] + 4; - fseek($this->getid3->fp, $CommentStartOffset, SEEK_SET); - $commentdata = fread($this->getid3->fp, $info['flac']['VORBIS_COMMENT']['raw']['block_length']); - break; - - case 'speex': - $CommentStartOffset = $info['ogg']['pageheader'][$VorbisCommentPage]['page_start_offset']; // Second Ogg page, after header block - fseek($this->getid3->fp, $CommentStartOffset, SEEK_SET); - $commentdataoffset = 27 + $info['ogg']['pageheader'][$VorbisCommentPage]['page_segments']; - $commentdata = fread($this->getid3->fp, getid3_ogg::OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1) + $commentdataoffset); - break; - - default: - return false; - break; - } - - $VendorSize = getid3_lib::LittleEndian2Int(substr($commentdata, $commentdataoffset, 4)); - $commentdataoffset += 4; - - $info['ogg']['vendor'] = substr($commentdata, $commentdataoffset, $VendorSize); - $commentdataoffset += $VendorSize; - - $CommentsCount = getid3_lib::LittleEndian2Int(substr($commentdata, $commentdataoffset, 4)); - $commentdataoffset += 4; - $info['avdataoffset'] = $CommentStartOffset + $commentdataoffset; - - $basicfields = array('TITLE', 'ARTIST', 'ALBUM', 'TRACKNUMBER', 'GENRE', 'DATE', 'DESCRIPTION', 'COMMENT'); - $ThisFileInfo_ogg_comments_raw = &$info['ogg']['comments_raw']; - for ($i = 0; $i < $CommentsCount; $i++) { - - $ThisFileInfo_ogg_comments_raw[$i]['dataoffset'] = $CommentStartOffset + $commentdataoffset; - - if (ftell($this->getid3->fp) < ($ThisFileInfo_ogg_comments_raw[$i]['dataoffset'] + 4)) { - if ($oggpageinfo = $this->ParseOggPageHeader()) { - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo; - - $VorbisCommentPage++; - - // First, save what we haven't read yet - $AsYetUnusedData = substr($commentdata, $commentdataoffset); - - // Then take that data off the end - $commentdata = substr($commentdata, 0, $commentdataoffset); - - // Add [headerlength] bytes of dummy data for the Ogg Page Header, just to keep absolute offsets correct - $commentdata .= str_repeat("\x00", 27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']); - $commentdataoffset += (27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']); - - // Finally, stick the unused data back on the end - $commentdata .= $AsYetUnusedData; - - //$commentdata .= fread($this->getid3->fp, $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length']); - $commentdata .= fread($this->getid3->fp, $this->OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1)); - } - - } - $ThisFileInfo_ogg_comments_raw[$i]['size'] = getid3_lib::LittleEndian2Int(substr($commentdata, $commentdataoffset, 4)); - - // replace avdataoffset with position just after the last vorbiscomment - $info['avdataoffset'] = $ThisFileInfo_ogg_comments_raw[$i]['dataoffset'] + $ThisFileInfo_ogg_comments_raw[$i]['size'] + 4; - - $commentdataoffset += 4; - while ((strlen($commentdata) - $commentdataoffset) < $ThisFileInfo_ogg_comments_raw[$i]['size']) { - if (($ThisFileInfo_ogg_comments_raw[$i]['size'] > $info['avdataend']) || ($ThisFileInfo_ogg_comments_raw[$i]['size'] < 0)) { - $info['warning'][] = 'Invalid Ogg comment size (comment #'.$i.', claims to be '.number_format($ThisFileInfo_ogg_comments_raw[$i]['size']).' bytes) - aborting reading comments'; - break 2; - } - - $VorbisCommentPage++; - - $oggpageinfo = $this->ParseOggPageHeader(); - $info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo; - - // First, save what we haven't read yet - $AsYetUnusedData = substr($commentdata, $commentdataoffset); - - // Then take that data off the end - $commentdata = substr($commentdata, 0, $commentdataoffset); - - // Add [headerlength] bytes of dummy data for the Ogg Page Header, just to keep absolute offsets correct - $commentdata .= str_repeat("\x00", 27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']); - $commentdataoffset += (27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']); - - // Finally, stick the unused data back on the end - $commentdata .= $AsYetUnusedData; - - //$commentdata .= fread($this->getid3->fp, $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length']); - if (!isset($info['ogg']['pageheader'][$VorbisCommentPage])) { - $info['warning'][] = 'undefined Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.ftell($this->getid3->fp); - break; - } - $readlength = getid3_ogg::OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1); - if ($readlength <= 0) { - $info['warning'][] = 'invalid length Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.ftell($this->getid3->fp); - break; - } - $commentdata .= fread($this->getid3->fp, $readlength); - - //$filebaseoffset += $oggpageinfo['header_end_offset'] - $oggpageinfo['page_start_offset']; - } - $ThisFileInfo_ogg_comments_raw[$i]['offset'] = $commentdataoffset; - $commentstring = substr($commentdata, $commentdataoffset, $ThisFileInfo_ogg_comments_raw[$i]['size']); - $commentdataoffset += $ThisFileInfo_ogg_comments_raw[$i]['size']; - - if (!$commentstring) { - - // no comment? - $info['warning'][] = 'Blank Ogg comment ['.$i.']'; - - } elseif (strstr($commentstring, '=')) { - - $commentexploded = explode('=', $commentstring, 2); - $ThisFileInfo_ogg_comments_raw[$i]['key'] = strtoupper($commentexploded[0]); - $ThisFileInfo_ogg_comments_raw[$i]['value'] = (isset($commentexploded[1]) ? $commentexploded[1] : ''); - $ThisFileInfo_ogg_comments_raw[$i]['data'] = base64_decode($ThisFileInfo_ogg_comments_raw[$i]['value']); - $ThisFileInfo_ogg_comments_raw[$i]['data_length'] = strlen($ThisFileInfo_ogg_comments_raw[$i]['data']); - - if (preg_match('#^(BM|GIF|\xFF\xD8\xFF|\x89\x50\x4E\x47\x0D\x0A\x1A\x0A|II\x2A\x00|MM\x00\x2A)#s', $ThisFileInfo_ogg_comments_raw[$i]['data'])) { - $imageinfo = array(); - $imagechunkcheck = getid3_lib::GetDataImageSize($ThisFileInfo_ogg_comments_raw[$i]['data'], $imageinfo); - unset($imageinfo); - if (!empty($imagechunkcheck)) { - $ThisFileInfo_ogg_comments_raw[$i]['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]); - if ($ThisFileInfo_ogg_comments_raw[$i]['image_mime'] && ($ThisFileInfo_ogg_comments_raw[$i]['image_mime'] != 'application/octet-stream')) { - unset($ThisFileInfo_ogg_comments_raw[$i]['value']); - } - } - } - - if (isset($ThisFileInfo_ogg_comments_raw[$i]['value'])) { - unset($ThisFileInfo_ogg_comments_raw[$i]['data']); - $info['ogg']['comments'][strtolower($ThisFileInfo_ogg_comments_raw[$i]['key'])][] = $ThisFileInfo_ogg_comments_raw[$i]['value']; - } else { - do { - if ($this->inline_attachments === false) { - // skip entirely - unset($ThisFileInfo_ogg_comments_raw[$i]['data']); - break; - } - if ($this->inline_attachments === true) { - // great - } elseif (is_int($this->inline_attachments)) { - if ($this->inline_attachments < $ThisFileInfo_ogg_comments_raw[$i]['data_length']) { - // too big, skip - $info['warning'][] = 'attachment at '.$ThisFileInfo_ogg_comments_raw[$i]['offset'].' is too large to process inline ('.number_format($ThisFileInfo_ogg_comments_raw[$i]['data_length']).' bytes)'; - unset($ThisFileInfo_ogg_comments_raw[$i]['data']); - break; - } - } elseif (is_string($this->inline_attachments)) { - $this->inline_attachments = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->inline_attachments), DIRECTORY_SEPARATOR); - if (!is_dir($this->inline_attachments) || !is_writable($this->inline_attachments)) { - // cannot write, skip - $info['warning'][] = 'attachment at '.$ThisFileInfo_ogg_comments_raw[$i]['offset'].' cannot be saved to "'.$this->inline_attachments.'" (not writable)'; - unset($ThisFileInfo_ogg_comments_raw[$i]['data']); - break; - } - } - // if we get this far, must be OK - if (is_string($this->inline_attachments)) { - $destination_filename = $this->inline_attachments.DIRECTORY_SEPARATOR.md5($info['filenamepath']).'_'.$ThisFileInfo_ogg_comments_raw[$i]['offset']; - if (!file_exists($destination_filename) || is_writable($destination_filename)) { - file_put_contents($destination_filename, $ThisFileInfo_ogg_comments_raw[$i]['data']); - } else { - $info['warning'][] = 'attachment at '.$ThisFileInfo_ogg_comments_raw[$i]['offset'].' cannot be saved to "'.$destination_filename.'" (not writable)'; - } - $ThisFileInfo_ogg_comments_raw[$i]['data_filename'] = $destination_filename; - unset($ThisFileInfo_ogg_comments_raw[$i]['data']); - } else { - $info['ogg']['comments']['picture'][] = array('data'=>$ThisFileInfo_ogg_comments_raw[$i]['data'], 'image_mime'=>$ThisFileInfo_ogg_comments_raw[$i]['image_mime']); - } - } while (false); - - } - - - } else { - - $info['warning'][] = '[known problem with CDex >= v1.40, < v1.50b7] Invalid Ogg comment name/value pair ['.$i.']: '.$commentstring; - - } - } - - - // Replay Gain Adjustment - // http://privatewww.essex.ac.uk/~djmrob/replaygain/ - if (isset($info['ogg']['comments']) && is_array($info['ogg']['comments'])) { - foreach ($info['ogg']['comments'] as $index => $commentvalue) { - switch ($index) { - case 'rg_audiophile': - case 'replaygain_album_gain': - $info['replay_gain']['album']['adjustment'] = (double) $commentvalue[0]; - unset($info['ogg']['comments'][$index]); - break; - - case 'rg_radio': - case 'replaygain_track_gain': - $info['replay_gain']['track']['adjustment'] = (double) $commentvalue[0]; - unset($info['ogg']['comments'][$index]); - break; - - case 'replaygain_album_peak': - $info['replay_gain']['album']['peak'] = (double) $commentvalue[0]; - unset($info['ogg']['comments'][$index]); - break; - - case 'rg_peak': - case 'replaygain_track_peak': - $info['replay_gain']['track']['peak'] = (double) $commentvalue[0]; - unset($info['ogg']['comments'][$index]); - break; - - case 'replaygain_reference_loudness': - $info['replay_gain']['reference_volume'] = (double) $commentvalue[0]; - unset($info['ogg']['comments'][$index]); - break; - - default: - // do nothing - break; - } - } - } - - fseek($this->getid3->fp, $OriginalOffset, SEEK_SET); - - return true; - } - - static function SpeexBandModeLookup($mode) { - static $SpeexBandModeLookup = array(); - if (empty($SpeexBandModeLookup)) { - $SpeexBandModeLookup[0] = 'narrow'; - $SpeexBandModeLookup[1] = 'wide'; - $SpeexBandModeLookup[2] = 'ultra-wide'; - } - return (isset($SpeexBandModeLookup[$mode]) ? $SpeexBandModeLookup[$mode] : null); - } - - - static function OggPageSegmentLength($OggInfoArray, $SegmentNumber=1) { - for ($i = 0; $i < $SegmentNumber; $i++) { - $segmentlength = 0; - foreach ($OggInfoArray['segment_table'] as $key => $value) { - $segmentlength += $value; - if ($value < 255) { - break; - } - } - } - return $segmentlength; - } - - - static function get_quality_from_nominal_bitrate($nominal_bitrate) { - - // decrease precision - $nominal_bitrate = $nominal_bitrate / 1000; - - if ($nominal_bitrate < 128) { - // q-1 to q4 - $qval = ($nominal_bitrate - 64) / 16; - } elseif ($nominal_bitrate < 256) { - // q4 to q8 - $qval = $nominal_bitrate / 32; - } elseif ($nominal_bitrate < 320) { - // q8 to q9 - $qval = ($nominal_bitrate + 256) / 64; - } else { - // q9 to q10 - $qval = ($nominal_bitrate + 1300) / 180; - } - //return $qval; // 5.031324 - //return intval($qval); // 5 - return round($qval, 1); // 5 or 4.9 - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.optimfrog.php b/3rdparty/getid3/module.audio.optimfrog.php deleted file mode 100644 index c1c8963837619ebeafa4ff8ca56404e0e0ca80d5..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.optimfrog.php +++ /dev/null @@ -1,429 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.optimfrog.php // -// module for analyzing OptimFROG audio files // -// dependencies: module.audio.riff.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - -class getid3_optimfrog extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'ofr'; - $info['audio']['dataformat'] = 'ofr'; - $info['audio']['bitrate_mode'] = 'vbr'; - $info['audio']['lossless'] = true; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $OFRheader = fread($this->getid3->fp, 8); - if (substr($OFRheader, 0, 5) == '*RIFF') { - - return $this->ParseOptimFROGheader42(); - - } elseif (substr($OFRheader, 0, 3) == 'OFR') { - - return $this->ParseOptimFROGheader45(); - - } - - $info['error'][] = 'Expecting "*RIFF" or "OFR " at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($OFRheader).'"'; - unset($info['fileformat']); - return false; - } - - - function ParseOptimFROGheader42() { - // for fileformat of v4.21 and older - - $info = &$this->getid3->info; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $OptimFROGheaderData = fread($this->getid3->fp, 45); - $info['avdataoffset'] = 45; - - $OptimFROGencoderVersion_raw = getid3_lib::LittleEndian2Int(substr($OptimFROGheaderData, 0, 1)); - $OptimFROGencoderVersion_major = floor($OptimFROGencoderVersion_raw / 10); - $OptimFROGencoderVersion_minor = $OptimFROGencoderVersion_raw - ($OptimFROGencoderVersion_major * 10); - $RIFFdata = substr($OptimFROGheaderData, 1, 44); - $OrignalRIFFheaderSize = getid3_lib::LittleEndian2Int(substr($RIFFdata, 4, 4)) + 8; - $OrignalRIFFdataSize = getid3_lib::LittleEndian2Int(substr($RIFFdata, 40, 4)) + 44; - - if ($OrignalRIFFheaderSize > $OrignalRIFFdataSize) { - $info['avdataend'] -= ($OrignalRIFFheaderSize - $OrignalRIFFdataSize); - fseek($this->getid3->fp, $info['avdataend'], SEEK_SET); - $RIFFdata .= fread($this->getid3->fp, $OrignalRIFFheaderSize - $OrignalRIFFdataSize); - } - - // move the data chunk after all other chunks (if any) - // so that the RIFF parser doesn't see EOF when trying - // to skip over the data chunk - $RIFFdata = substr($RIFFdata, 0, 36).substr($RIFFdata, 44).substr($RIFFdata, 36, 8); - - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = $info['avdataoffset']; - $getid3_temp->info['avdataend'] = $info['avdataend']; - $getid3_riff = new getid3_riff($getid3_temp); - $getid3_riff->ParseRIFFdata($RIFFdata); - $info['riff'] = $getid3_temp->info['riff']; - - $info['audio']['encoder'] = 'OptimFROG '.$OptimFROGencoderVersion_major.'.'.$OptimFROGencoderVersion_minor; - $info['audio']['channels'] = $info['riff']['audio'][0]['channels']; - $info['audio']['sample_rate'] = $info['riff']['audio'][0]['sample_rate']; - $info['audio']['bits_per_sample'] = $info['riff']['audio'][0]['bits_per_sample']; - $info['playtime_seconds'] = $OrignalRIFFdataSize / ($info['audio']['channels'] * $info['audio']['sample_rate'] * ($info['audio']['bits_per_sample'] / 8)); - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - - unset($getid3_riff, $getid3_temp, $RIFFdata); - - return true; - } - - - function ParseOptimFROGheader45() { - // for fileformat of v4.50a and higher - - $info = &$this->getid3->info; - $RIFFdata = ''; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - while (!feof($this->getid3->fp) && (ftell($this->getid3->fp) < $info['avdataend'])) { - $BlockOffset = ftell($this->getid3->fp); - $BlockData = fread($this->getid3->fp, 8); - $offset = 8; - $BlockName = substr($BlockData, 0, 4); - $BlockSize = getid3_lib::LittleEndian2Int(substr($BlockData, 4, 4)); - - if ($BlockName == 'OFRX') { - $BlockName = 'OFR '; - } - if (!isset($info['ofr'][$BlockName])) { - $info['ofr'][$BlockName] = array(); - } - $thisfile_ofr_thisblock = &$info['ofr'][$BlockName]; - - switch ($BlockName) { - case 'OFR ': - - // shortcut - $thisfile_ofr_thisblock['offset'] = $BlockOffset; - $thisfile_ofr_thisblock['size'] = $BlockSize; - - $info['audio']['encoder'] = 'OptimFROG 4.50 alpha'; - switch ($BlockSize) { - case 12: - case 15: - // good - break; - - default: - $info['warning'][] = '"'.$BlockName.'" contains more data than expected (expected 12 or 15 bytes, found '.$BlockSize.' bytes)'; - break; - } - $BlockData .= fread($this->getid3->fp, $BlockSize); - - $thisfile_ofr_thisblock['total_samples'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 6)); - $offset += 6; - $thisfile_ofr_thisblock['raw']['sample_type'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 1)); - $thisfile_ofr_thisblock['sample_type'] = $this->OptimFROGsampleTypeLookup($thisfile_ofr_thisblock['raw']['sample_type']); - $offset += 1; - $thisfile_ofr_thisblock['channel_config'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 1)); - $thisfile_ofr_thisblock['channels'] = $thisfile_ofr_thisblock['channel_config']; - $offset += 1; - $thisfile_ofr_thisblock['sample_rate'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 4)); - $offset += 4; - - if ($BlockSize > 12) { - - // OFR 4.504b or higher - $thisfile_ofr_thisblock['channels'] = $this->OptimFROGchannelConfigNumChannelsLookup($thisfile_ofr_thisblock['channel_config']); - $thisfile_ofr_thisblock['raw']['encoder_id'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 2)); - $thisfile_ofr_thisblock['encoder'] = $this->OptimFROGencoderNameLookup($thisfile_ofr_thisblock['raw']['encoder_id']); - $offset += 2; - $thisfile_ofr_thisblock['raw']['compression'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 1)); - $thisfile_ofr_thisblock['compression'] = $this->OptimFROGcompressionLookup($thisfile_ofr_thisblock['raw']['compression']); - $thisfile_ofr_thisblock['speedup'] = $this->OptimFROGspeedupLookup($thisfile_ofr_thisblock['raw']['compression']); - $offset += 1; - - $info['audio']['encoder'] = 'OptimFROG '.$thisfile_ofr_thisblock['encoder']; - $info['audio']['encoder_options'] = '--mode '.$thisfile_ofr_thisblock['compression']; - - if ((($thisfile_ofr_thisblock['raw']['encoder_id'] & 0xF0) >> 4) == 7) { // v4.507 - if (strtolower(getid3_lib::fileextension($info['filename'])) == 'ofs') { - // OptimFROG DualStream format is lossy, but as of v4.507 there is no way to tell the difference - // between lossless and lossy other than the file extension. - $info['audio']['dataformat'] = 'ofs'; - $info['audio']['lossless'] = true; - } - } - - } - - $info['audio']['channels'] = $thisfile_ofr_thisblock['channels']; - $info['audio']['sample_rate'] = $thisfile_ofr_thisblock['sample_rate']; - $info['audio']['bits_per_sample'] = $this->OptimFROGbitsPerSampleTypeLookup($thisfile_ofr_thisblock['raw']['sample_type']); - break; - - - case 'COMP': - // unlike other block types, there CAN be multiple COMP blocks - - $COMPdata['offset'] = $BlockOffset; - $COMPdata['size'] = $BlockSize; - - if ($info['avdataoffset'] == 0) { - $info['avdataoffset'] = $BlockOffset; - } - - // Only interested in first 14 bytes (only first 12 needed for v4.50 alpha), not actual audio data - $BlockData .= fread($this->getid3->fp, 14); - fseek($this->getid3->fp, $BlockSize - 14, SEEK_CUR); - - $COMPdata['crc_32'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 4)); - $offset += 4; - $COMPdata['sample_count'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 4)); - $offset += 4; - $COMPdata['raw']['sample_type'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 1)); - $COMPdata['sample_type'] = $this->OptimFROGsampleTypeLookup($COMPdata['raw']['sample_type']); - $offset += 1; - $COMPdata['raw']['channel_configuration'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 1)); - $COMPdata['channel_configuration'] = $this->OptimFROGchannelConfigurationLookup($COMPdata['raw']['channel_configuration']); - $offset += 1; - $COMPdata['raw']['algorithm_id'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 2)); - //$COMPdata['algorithm'] = OptimFROGalgorithmNameLookup($COMPdata['raw']['algorithm_id']); - $offset += 2; - - if ($info['ofr']['OFR ']['size'] > 12) { - - // OFR 4.504b or higher - $COMPdata['raw']['encoder_id'] = getid3_lib::LittleEndian2Int(substr($BlockData, $offset, 2)); - $COMPdata['encoder'] = $this->OptimFROGencoderNameLookup($COMPdata['raw']['encoder_id']); - $offset += 2; - - } - - if ($COMPdata['crc_32'] == 0x454E4F4E) { - // ASCII value of 'NONE' - placeholder value in v4.50a - $COMPdata['crc_32'] = false; - } - - $thisfile_ofr_thisblock[] = $COMPdata; - break; - - case 'HEAD': - $thisfile_ofr_thisblock['offset'] = $BlockOffset; - $thisfile_ofr_thisblock['size'] = $BlockSize; - - $RIFFdata .= fread($this->getid3->fp, $BlockSize); - break; - - case 'TAIL': - $thisfile_ofr_thisblock['offset'] = $BlockOffset; - $thisfile_ofr_thisblock['size'] = $BlockSize; - - if ($BlockSize > 0) { - $RIFFdata .= fread($this->getid3->fp, $BlockSize); - } - break; - - case 'RECV': - // block contains no useful meta data - simply note and skip - - $thisfile_ofr_thisblock['offset'] = $BlockOffset; - $thisfile_ofr_thisblock['size'] = $BlockSize; - - fseek($this->getid3->fp, $BlockSize, SEEK_CUR); - break; - - - case 'APET': - // APEtag v2 - - $thisfile_ofr_thisblock['offset'] = $BlockOffset; - $thisfile_ofr_thisblock['size'] = $BlockSize; - $info['warning'][] = 'APEtag processing inside OptimFROG not supported in this version ('.$this->getid3->version().') of getID3()'; - - fseek($this->getid3->fp, $BlockSize, SEEK_CUR); - break; - - - case 'MD5 ': - // APEtag v2 - - $thisfile_ofr_thisblock['offset'] = $BlockOffset; - $thisfile_ofr_thisblock['size'] = $BlockSize; - - if ($BlockSize == 16) { - - $thisfile_ofr_thisblock['md5_binary'] = fread($this->getid3->fp, $BlockSize); - $thisfile_ofr_thisblock['md5_string'] = getid3_lib::PrintHexBytes($thisfile_ofr_thisblock['md5_binary'], true, false, false); - $info['md5_data_source'] = $thisfile_ofr_thisblock['md5_string']; - - } else { - - $info['warning'][] = 'Expecting block size of 16 in "MD5 " chunk, found '.$BlockSize.' instead'; - fseek($this->getid3->fp, $BlockSize, SEEK_CUR); - - } - break; - - - default: - $thisfile_ofr_thisblock['offset'] = $BlockOffset; - $thisfile_ofr_thisblock['size'] = $BlockSize; - - $info['warning'][] = 'Unhandled OptimFROG block type "'.$BlockName.'" at offset '.$thisfile_ofr_thisblock['offset']; - fseek($this->getid3->fp, $BlockSize, SEEK_CUR); - break; - } - } - if (isset($info['ofr']['TAIL']['offset'])) { - $info['avdataend'] = $info['ofr']['TAIL']['offset']; - } - - $info['playtime_seconds'] = (float) $info['ofr']['OFR ']['total_samples'] / ($info['audio']['channels'] * $info['audio']['sample_rate']); - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - - // move the data chunk after all other chunks (if any) - // so that the RIFF parser doesn't see EOF when trying - // to skip over the data chunk - $RIFFdata = substr($RIFFdata, 0, 36).substr($RIFFdata, 44).substr($RIFFdata, 36, 8); - - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataoffset'] = $info['avdataoffset']; - $getid3_temp->info['avdataend'] = $info['avdataend']; - $getid3_riff = new getid3_riff($getid3_temp); - $getid3_riff->ParseRIFFdata($RIFFdata); - $info['riff'] = $getid3_temp->info['riff']; - - unset($getid3_riff, $getid3_temp, $RIFFdata); - - return true; - } - - - static function OptimFROGsampleTypeLookup($SampleType) { - static $OptimFROGsampleTypeLookup = array( - 0 => 'unsigned int (8-bit)', - 1 => 'signed int (8-bit)', - 2 => 'unsigned int (16-bit)', - 3 => 'signed int (16-bit)', - 4 => 'unsigned int (24-bit)', - 5 => 'signed int (24-bit)', - 6 => 'unsigned int (32-bit)', - 7 => 'signed int (32-bit)', - 8 => 'float 0.24 (32-bit)', - 9 => 'float 16.8 (32-bit)', - 10 => 'float 24.0 (32-bit)' - ); - return (isset($OptimFROGsampleTypeLookup[$SampleType]) ? $OptimFROGsampleTypeLookup[$SampleType] : false); - } - - static function OptimFROGbitsPerSampleTypeLookup($SampleType) { - static $OptimFROGbitsPerSampleTypeLookup = array( - 0 => 8, - 1 => 8, - 2 => 16, - 3 => 16, - 4 => 24, - 5 => 24, - 6 => 32, - 7 => 32, - 8 => 32, - 9 => 32, - 10 => 32 - ); - return (isset($OptimFROGbitsPerSampleTypeLookup[$SampleType]) ? $OptimFROGbitsPerSampleTypeLookup[$SampleType] : false); - } - - static function OptimFROGchannelConfigurationLookup($ChannelConfiguration) { - static $OptimFROGchannelConfigurationLookup = array( - 0 => 'mono', - 1 => 'stereo' - ); - return (isset($OptimFROGchannelConfigurationLookup[$ChannelConfiguration]) ? $OptimFROGchannelConfigurationLookup[$ChannelConfiguration] : false); - } - - static function OptimFROGchannelConfigNumChannelsLookup($ChannelConfiguration) { - static $OptimFROGchannelConfigNumChannelsLookup = array( - 0 => 1, - 1 => 2 - ); - return (isset($OptimFROGchannelConfigNumChannelsLookup[$ChannelConfiguration]) ? $OptimFROGchannelConfigNumChannelsLookup[$ChannelConfiguration] : false); - } - - - - // static function OptimFROGalgorithmNameLookup($AlgorithID) { - // static $OptimFROGalgorithmNameLookup = array(); - // return (isset($OptimFROGalgorithmNameLookup[$AlgorithID]) ? $OptimFROGalgorithmNameLookup[$AlgorithID] : false); - // } - - - static function OptimFROGencoderNameLookup($EncoderID) { - // version = (encoderID >> 4) + 4500 - // system = encoderID & 0xF - - $EncoderVersion = number_format(((($EncoderID & 0xF0) >> 4) + 4500) / 1000, 3); - $EncoderSystemID = ($EncoderID & 0x0F); - - static $OptimFROGencoderSystemLookup = array( - 0x00 => 'Windows console', - 0x01 => 'Linux console', - 0x0F => 'unknown' - ); - return $EncoderVersion.' ('.(isset($OptimFROGencoderSystemLookup[$EncoderSystemID]) ? $OptimFROGencoderSystemLookup[$EncoderSystemID] : 'undefined encoder type (0x'.dechex($EncoderSystemID).')').')'; - } - - static function OptimFROGcompressionLookup($CompressionID) { - // mode = compression >> 3 - // speedup = compression & 0x07 - - $CompressionModeID = ($CompressionID & 0xF8) >> 3; - //$CompressionSpeedupID = ($CompressionID & 0x07); - - static $OptimFROGencoderModeLookup = array( - 0x00 => 'fast', - 0x01 => 'normal', - 0x02 => 'high', - 0x03 => 'extra', // extranew (some versions) - 0x04 => 'best', // bestnew (some versions) - 0x05 => 'ultra', - 0x06 => 'insane', - 0x07 => 'highnew', - 0x08 => 'extranew', - 0x09 => 'bestnew' - ); - return (isset($OptimFROGencoderModeLookup[$CompressionModeID]) ? $OptimFROGencoderModeLookup[$CompressionModeID] : 'undefined mode (0x'.str_pad(dechex($CompressionModeID), 2, '0', STR_PAD_LEFT).')'); - } - - static function OptimFROGspeedupLookup($CompressionID) { - // mode = compression >> 3 - // speedup = compression & 0x07 - - //$CompressionModeID = ($CompressionID & 0xF8) >> 3; - $CompressionSpeedupID = ($CompressionID & 0x07); - - static $OptimFROGencoderSpeedupLookup = array( - 0x00 => '1x', - 0x01 => '2x', - 0x02 => '4x' - ); - return (isset($OptimFROGencoderSpeedupLookup[$CompressionSpeedupID]) ? $OptimFROGencoderSpeedupLookup[$CompressionSpeedupID] : 'undefined mode (0x'.dechex($CompressionSpeedupID)); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.rkau.php b/3rdparty/getid3/module.audio.rkau.php deleted file mode 100644 index c442076275d4873b3f5544d67c9764780d99c370..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.rkau.php +++ /dev/null @@ -1,94 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.shorten.php // -// module for analyzing Shorten Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_rkau extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $RKAUHeader = fread($this->getid3->fp, 20); - $magic = 'RKA'; - if (substr($RKAUHeader, 0, 3) != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($RKAUHeader, 0, 3)).'"'; - return false; - } - - $info['fileformat'] = 'rkau'; - $info['audio']['dataformat'] = 'rkau'; - $info['audio']['bitrate_mode'] = 'vbr'; - - $info['rkau']['raw']['version'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 3, 1)); - $info['rkau']['version'] = '1.'.str_pad($info['rkau']['raw']['version'] & 0x0F, 2, '0', STR_PAD_LEFT); - if (($info['rkau']['version'] > 1.07) || ($info['rkau']['version'] < 1.06)) { - $info['error'][] = 'This version of getID3() ['.$this->getid3->version().'] can only parse RKAU files v1.06 and 1.07 (this file is v'.$info['rkau']['version'].')'; - unset($info['rkau']); - return false; - } - - $info['rkau']['source_bytes'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 4, 4)); - $info['rkau']['sample_rate'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 8, 4)); - $info['rkau']['channels'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 12, 1)); - $info['rkau']['bits_per_sample'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 13, 1)); - - $info['rkau']['raw']['quality'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 14, 1)); - $this->RKAUqualityLookup($info['rkau']); - - $info['rkau']['raw']['flags'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 15, 1)); - $info['rkau']['flags']['joint_stereo'] = (bool) (!($info['rkau']['raw']['flags'] & 0x01)); - $info['rkau']['flags']['streaming'] = (bool) ($info['rkau']['raw']['flags'] & 0x02); - $info['rkau']['flags']['vrq_lossy_mode'] = (bool) ($info['rkau']['raw']['flags'] & 0x04); - - if ($info['rkau']['flags']['streaming']) { - $info['avdataoffset'] += 20; - $info['rkau']['compressed_bytes'] = getid3_lib::LittleEndian2Int(substr($RKAUHeader, 16, 4)); - } else { - $info['avdataoffset'] += 16; - $info['rkau']['compressed_bytes'] = $info['avdataend'] - $info['avdataoffset'] - 1; - } - // Note: compressed_bytes does not always equal what appears to be the actual number of compressed bytes, - // sometimes it's more, sometimes less. No idea why(?) - - $info['audio']['lossless'] = $info['rkau']['lossless']; - $info['audio']['channels'] = $info['rkau']['channels']; - $info['audio']['bits_per_sample'] = $info['rkau']['bits_per_sample']; - $info['audio']['sample_rate'] = $info['rkau']['sample_rate']; - - $info['playtime_seconds'] = $info['rkau']['source_bytes'] / ($info['rkau']['sample_rate'] * $info['rkau']['channels'] * ($info['rkau']['bits_per_sample'] / 8)); - $info['audio']['bitrate'] = ($info['rkau']['compressed_bytes'] * 8) / $info['playtime_seconds']; - - return true; - - } - - - function RKAUqualityLookup(&$RKAUdata) { - $level = ($RKAUdata['raw']['quality'] & 0xF0) >> 4; - $quality = $RKAUdata['raw']['quality'] & 0x0F; - - $RKAUdata['lossless'] = (($quality == 0) ? true : false); - $RKAUdata['compression_level'] = $level + 1; - if (!$RKAUdata['lossless']) { - $RKAUdata['quality_setting'] = $quality; - } - - return true; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.shorten.php b/3rdparty/getid3/module.audio.shorten.php deleted file mode 100644 index 7b3d312ea28b647893194e851c9bdf827e125c38..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.shorten.php +++ /dev/null @@ -1,183 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.shorten.php // -// module for analyzing Shorten Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_shorten extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $ShortenHeader = fread($this->getid3->fp, 8); - $magic = 'ajkg'; - if (substr($ShortenHeader, 0, 4) != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($ShortenHeader, 0, 4)).'"'; - return false; - } - $info['fileformat'] = 'shn'; - $info['audio']['dataformat'] = 'shn'; - $info['audio']['lossless'] = true; - $info['audio']['bitrate_mode'] = 'vbr'; - - $info['shn']['version'] = getid3_lib::LittleEndian2Int(substr($ShortenHeader, 4, 1)); - - fseek($this->getid3->fp, $info['avdataend'] - 12, SEEK_SET); - $SeekTableSignatureTest = fread($this->getid3->fp, 12); - $info['shn']['seektable']['present'] = (bool) (substr($SeekTableSignatureTest, 4, 8) == 'SHNAMPSK'); - if ($info['shn']['seektable']['present']) { - $info['shn']['seektable']['length'] = getid3_lib::LittleEndian2Int(substr($SeekTableSignatureTest, 0, 4)); - $info['shn']['seektable']['offset'] = $info['avdataend'] - $info['shn']['seektable']['length']; - fseek($this->getid3->fp, $info['shn']['seektable']['offset'], SEEK_SET); - $SeekTableMagic = fread($this->getid3->fp, 4); - $magic = 'SEEK'; - if ($SeekTableMagic != $magic) { - - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['shn']['seektable']['offset'].', found "'.getid3_lib::PrintHexBytes($SeekTableMagic).'"'; - return false; - - } else { - - // typedef struct tag_TSeekEntry - // { - // unsigned long SampleNumber; - // unsigned long SHNFileByteOffset; - // unsigned long SHNLastBufferReadPosition; - // unsigned short SHNByteGet; - // unsigned short SHNBufferOffset; - // unsigned short SHNFileBitOffset; - // unsigned long SHNGBuffer; - // unsigned short SHNBitShift; - // long CBuf0[3]; - // long CBuf1[3]; - // long Offset0[4]; - // long Offset1[4]; - // }TSeekEntry; - - $SeekTableData = fread($this->getid3->fp, $info['shn']['seektable']['length'] - 16); - $info['shn']['seektable']['entry_count'] = floor(strlen($SeekTableData) / 80); - //$info['shn']['seektable']['entries'] = array(); - //$SeekTableOffset = 0; - //for ($i = 0; $i < $info['shn']['seektable']['entry_count']; $i++) { - // $SeekTableEntry['sample_number'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // $SeekTableEntry['shn_file_byte_offset'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // $SeekTableEntry['shn_last_buffer_read_position'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // $SeekTableEntry['shn_byte_get'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 2)); - // $SeekTableOffset += 2; - // $SeekTableEntry['shn_buffer_offset'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 2)); - // $SeekTableOffset += 2; - // $SeekTableEntry['shn_file_bit_offset'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 2)); - // $SeekTableOffset += 2; - // $SeekTableEntry['shn_gbuffer'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // $SeekTableEntry['shn_bit_shift'] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 2)); - // $SeekTableOffset += 2; - // for ($j = 0; $j < 3; $j++) { - // $SeekTableEntry['cbuf0'][$j] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // } - // for ($j = 0; $j < 3; $j++) { - // $SeekTableEntry['cbuf1'][$j] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // } - // for ($j = 0; $j < 4; $j++) { - // $SeekTableEntry['offset0'][$j] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // } - // for ($j = 0; $j < 4; $j++) { - // $SeekTableEntry['offset1'][$j] = getid3_lib::LittleEndian2Int(substr($SeekTableData, $SeekTableOffset, 4)); - // $SeekTableOffset += 4; - // } - // - // $info['shn']['seektable']['entries'][] = $SeekTableEntry; - //} - - } - - } - - if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { - $info['error'][] = 'PHP running in Safe Mode - backtick operator not available, cannot run shntool to analyze Shorten files'; - return false; - } - - if (GETID3_OS_ISWINDOWS) { - - $RequiredFiles = array('shorten.exe', 'cygwin1.dll', 'head.exe'); - foreach ($RequiredFiles as $required_file) { - if (!is_readable(GETID3_HELPERAPPSDIR.$required_file)) { - $info['error'][] = GETID3_HELPERAPPSDIR.$required_file.' does not exist'; - return false; - } - } - $commandline = GETID3_HELPERAPPSDIR.'shorten.exe -x "'.$info['filenamepath'].'" - | '.GETID3_HELPERAPPSDIR.'head.exe -c 64'; - $commandline = str_replace('/', '\\', $commandline); - - } else { - - static $shorten_present; - if (!isset($shorten_present)) { - $shorten_present = file_exists('/usr/local/bin/shorten') || `which shorten`; - } - if (!$shorten_present) { - $info['error'][] = 'shorten binary was not found in path or /usr/local/bin'; - return false; - } - $commandline = (file_exists('/usr/local/bin/shorten') ? '/usr/local/bin/' : '' ) . 'shorten -x '.escapeshellarg($info['filenamepath']).' - | head -c 64'; - - } - - $output = `$commandline`; - - if (!empty($output) && (substr($output, 12, 4) == 'fmt ')) { - - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - - $fmt_size = getid3_lib::LittleEndian2Int(substr($output, 16, 4)); - $DecodedWAVFORMATEX = getid3_riff::RIFFparseWAVEFORMATex(substr($output, 20, $fmt_size)); - $info['audio']['channels'] = $DecodedWAVFORMATEX['channels']; - $info['audio']['bits_per_sample'] = $DecodedWAVFORMATEX['bits_per_sample']; - $info['audio']['sample_rate'] = $DecodedWAVFORMATEX['sample_rate']; - - if (substr($output, 20 + $fmt_size, 4) == 'data') { - - $info['playtime_seconds'] = getid3_lib::LittleEndian2Int(substr($output, 20 + 4 + $fmt_size, 4)) / $DecodedWAVFORMATEX['raw']['nAvgBytesPerSec']; - - } else { - - $info['error'][] = 'shorten failed to decode DATA chunk to expected location, cannot determine playtime'; - return false; - - } - - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8; - - } else { - - $info['error'][] = 'shorten failed to decode file to WAV for parsing'; - return false; - - } - - return true; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.tta.php b/3rdparty/getid3/module.audio.tta.php deleted file mode 100644 index 1c646ee67681fff19e94747e7e73627ee83ec76b..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.tta.php +++ /dev/null @@ -1,109 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.tta.php // -// module for analyzing TTA Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_tta extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'tta'; - $info['audio']['dataformat'] = 'tta'; - $info['audio']['lossless'] = true; - $info['audio']['bitrate_mode'] = 'vbr'; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $ttaheader = fread($this->getid3->fp, 26); - - $info['tta']['magic'] = substr($ttaheader, 0, 3); - $magic = 'TTA'; - if ($info['tta']['magic'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['tta']['magic']).'"'; - unset($info['fileformat']); - unset($info['audio']); - unset($info['tta']); - return false; - } - - switch ($ttaheader{3}) { - case "\x01": // TTA v1.x - case "\x02": // TTA v1.x - case "\x03": // TTA v1.x - // "It was the demo-version of the TTA encoder. There is no released format with such header. TTA encoder v1 is not supported about a year." - $info['tta']['major_version'] = 1; - $info['avdataoffset'] += 16; - - $info['tta']['compression_level'] = ord($ttaheader{3}); - $info['tta']['channels'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 4, 2)); - $info['tta']['bits_per_sample'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 6, 2)); - $info['tta']['sample_rate'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 8, 4)); - $info['tta']['samples_per_channel'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 12, 4)); - - $info['audio']['encoder_options'] = '-e'.$info['tta']['compression_level']; - $info['playtime_seconds'] = $info['tta']['samples_per_channel'] / $info['tta']['sample_rate']; - break; - - case '2': // TTA v2.x - // "I have hurried to release the TTA 2.0 encoder. Format documentation is removed from our site. This format still in development. Please wait the TTA2 format, encoder v4." - $info['tta']['major_version'] = 2; - $info['avdataoffset'] += 20; - - $info['tta']['compression_level'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 4, 2)); - $info['tta']['audio_format'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 6, 2)); - $info['tta']['channels'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 8, 2)); - $info['tta']['bits_per_sample'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 10, 2)); - $info['tta']['sample_rate'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 12, 4)); - $info['tta']['data_length'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 16, 4)); - - $info['audio']['encoder_options'] = '-e'.$info['tta']['compression_level']; - $info['playtime_seconds'] = $info['tta']['data_length'] / $info['tta']['sample_rate']; - break; - - case '1': // TTA v3.x - // "This is a first stable release of the TTA format. It will be supported by the encoders v3 or higher." - $info['tta']['major_version'] = 3; - $info['avdataoffset'] += 26; - - $info['tta']['audio_format'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 4, 2)); // getid3_riff::RIFFwFormatTagLookup() - $info['tta']['channels'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 6, 2)); - $info['tta']['bits_per_sample'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 8, 2)); - $info['tta']['sample_rate'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 10, 4)); - $info['tta']['data_length'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 14, 4)); - $info['tta']['crc32_footer'] = substr($ttaheader, 18, 4); - $info['tta']['seek_point'] = getid3_lib::LittleEndian2Int(substr($ttaheader, 22, 4)); - - $info['playtime_seconds'] = $info['tta']['data_length'] / $info['tta']['sample_rate']; - break; - - default: - $info['error'][] = 'This version of getID3() ['.$this->getid3->version().'] only knows how to handle TTA v1 and v2 - it may not work correctly with this file which appears to be TTA v'.$ttaheader{3}; - return false; - break; - } - - $info['audio']['encoder'] = 'TTA v'.$info['tta']['major_version']; - $info['audio']['bits_per_sample'] = $info['tta']['bits_per_sample']; - $info['audio']['sample_rate'] = $info['tta']['sample_rate']; - $info['audio']['channels'] = $info['tta']['channels']; - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - - return true; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.voc.php b/3rdparty/getid3/module.audio.voc.php deleted file mode 100644 index 1186a4cc03edc2e6bdaf8f767c85b0f5f13cbd6a..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.voc.php +++ /dev/null @@ -1,207 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.voc.php // -// module for analyzing Creative VOC Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_voc extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $OriginalAVdataOffset = $info['avdataoffset']; - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $VOCheader = fread($this->getid3->fp, 26); - - $magic = 'Creative Voice File'; - if (substr($VOCheader, 0, 19) != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($VOCheader, 0, 19)).'"'; - return false; - } - - // shortcuts - $thisfile_audio = &$info['audio']; - $info['voc'] = array(); - $thisfile_voc = &$info['voc']; - - $info['fileformat'] = 'voc'; - $thisfile_audio['dataformat'] = 'voc'; - $thisfile_audio['bitrate_mode'] = 'cbr'; - $thisfile_audio['lossless'] = true; - $thisfile_audio['channels'] = 1; // might be overriden below - $thisfile_audio['bits_per_sample'] = 8; // might be overriden below - - // byte # Description - // ------ ------------------------------------------ - // 00-12 'Creative Voice File' - // 13 1A (eof to abort printing of file) - // 14-15 Offset of first datablock in .voc file (std 1A 00 in Intel Notation) - // 16-17 Version number (minor,major) (VOC-HDR puts 0A 01) - // 18-19 2's Comp of Ver. # + 1234h (VOC-HDR puts 29 11) - - $thisfile_voc['header']['datablock_offset'] = getid3_lib::LittleEndian2Int(substr($VOCheader, 20, 2)); - $thisfile_voc['header']['minor_version'] = getid3_lib::LittleEndian2Int(substr($VOCheader, 22, 1)); - $thisfile_voc['header']['major_version'] = getid3_lib::LittleEndian2Int(substr($VOCheader, 23, 1)); - - do { - - $BlockOffset = ftell($this->getid3->fp); - $BlockData = fread($this->getid3->fp, 4); - $BlockType = ord($BlockData{0}); - $BlockSize = getid3_lib::LittleEndian2Int(substr($BlockData, 1, 3)); - $ThisBlock = array(); - - getid3_lib::safe_inc($thisfile_voc['blocktypes'][$BlockType], 1); - switch ($BlockType) { - case 0: // Terminator - // do nothing, we'll break out of the loop down below - break; - - case 1: // Sound data - $BlockData .= fread($this->getid3->fp, 2); - if ($info['avdataoffset'] <= $OriginalAVdataOffset) { - $info['avdataoffset'] = ftell($this->getid3->fp); - } - fseek($this->getid3->fp, $BlockSize - 2, SEEK_CUR); - - $ThisBlock['sample_rate_id'] = getid3_lib::LittleEndian2Int(substr($BlockData, 4, 1)); - $ThisBlock['compression_type'] = getid3_lib::LittleEndian2Int(substr($BlockData, 5, 1)); - - $ThisBlock['compression_name'] = $this->VOCcompressionTypeLookup($ThisBlock['compression_type']); - if ($ThisBlock['compression_type'] <= 3) { - $thisfile_voc['compressed_bits_per_sample'] = getid3_lib::CastAsInt(str_replace('-bit', '', $ThisBlock['compression_name'])); - } - - // Less accurate sample_rate calculation than the Extended block (#8) data (but better than nothing if Extended Block is not available) - if (empty($thisfile_audio['sample_rate'])) { - // SR byte = 256 - (1000000 / sample_rate) - $thisfile_audio['sample_rate'] = getid3_lib::trunc((1000000 / (256 - $ThisBlock['sample_rate_id'])) / $thisfile_audio['channels']); - } - break; - - case 2: // Sound continue - case 3: // Silence - case 4: // Marker - case 6: // Repeat - case 7: // End repeat - // nothing useful, just skip - fseek($this->getid3->fp, $BlockSize, SEEK_CUR); - break; - - case 8: // Extended - $BlockData .= fread($this->getid3->fp, 4); - - //00-01 Time Constant: - // Mono: 65536 - (256000000 / sample_rate) - // Stereo: 65536 - (256000000 / (sample_rate * 2)) - $ThisBlock['time_constant'] = getid3_lib::LittleEndian2Int(substr($BlockData, 4, 2)); - $ThisBlock['pack_method'] = getid3_lib::LittleEndian2Int(substr($BlockData, 6, 1)); - $ThisBlock['stereo'] = (bool) getid3_lib::LittleEndian2Int(substr($BlockData, 7, 1)); - - $thisfile_audio['channels'] = ($ThisBlock['stereo'] ? 2 : 1); - $thisfile_audio['sample_rate'] = getid3_lib::trunc((256000000 / (65536 - $ThisBlock['time_constant'])) / $thisfile_audio['channels']); - break; - - case 9: // data block that supersedes blocks 1 and 8. Used for stereo, 16 bit - $BlockData .= fread($this->getid3->fp, 12); - if ($info['avdataoffset'] <= $OriginalAVdataOffset) { - $info['avdataoffset'] = ftell($this->getid3->fp); - } - fseek($this->getid3->fp, $BlockSize - 12, SEEK_CUR); - - $ThisBlock['sample_rate'] = getid3_lib::LittleEndian2Int(substr($BlockData, 4, 4)); - $ThisBlock['bits_per_sample'] = getid3_lib::LittleEndian2Int(substr($BlockData, 8, 1)); - $ThisBlock['channels'] = getid3_lib::LittleEndian2Int(substr($BlockData, 9, 1)); - $ThisBlock['wFormat'] = getid3_lib::LittleEndian2Int(substr($BlockData, 10, 2)); - - $ThisBlock['compression_name'] = $this->VOCwFormatLookup($ThisBlock['wFormat']); - if ($this->VOCwFormatActualBitsPerSampleLookup($ThisBlock['wFormat'])) { - $thisfile_voc['compressed_bits_per_sample'] = $this->VOCwFormatActualBitsPerSampleLookup($ThisBlock['wFormat']); - } - - $thisfile_audio['sample_rate'] = $ThisBlock['sample_rate']; - $thisfile_audio['bits_per_sample'] = $ThisBlock['bits_per_sample']; - $thisfile_audio['channels'] = $ThisBlock['channels']; - break; - - default: - $info['warning'][] = 'Unhandled block type "'.$BlockType.'" at offset '.$BlockOffset; - fseek($this->getid3->fp, $BlockSize, SEEK_CUR); - break; - } - - if (!empty($ThisBlock)) { - $ThisBlock['block_offset'] = $BlockOffset; - $ThisBlock['block_size'] = $BlockSize; - $ThisBlock['block_type_id'] = $BlockType; - $thisfile_voc['blocks'][] = $ThisBlock; - } - - } while (!feof($this->getid3->fp) && ($BlockType != 0)); - - // Terminator block doesn't have size field, so seek back 3 spaces - fseek($this->getid3->fp, -3, SEEK_CUR); - - ksort($thisfile_voc['blocktypes']); - - if (!empty($thisfile_voc['compressed_bits_per_sample'])) { - $info['playtime_seconds'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / ($thisfile_voc['compressed_bits_per_sample'] * $thisfile_audio['channels'] * $thisfile_audio['sample_rate']); - $thisfile_audio['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - } - - return true; - } - - function VOCcompressionTypeLookup($index) { - static $VOCcompressionTypeLookup = array( - 0 => '8-bit', - 1 => '4-bit', - 2 => '2.6-bit', - 3 => '2-bit' - ); - return (isset($VOCcompressionTypeLookup[$index]) ? $VOCcompressionTypeLookup[$index] : 'Multi DAC ('.($index - 3).') channels'); - } - - function VOCwFormatLookup($index) { - static $VOCwFormatLookup = array( - 0x0000 => '8-bit unsigned PCM', - 0x0001 => 'Creative 8-bit to 4-bit ADPCM', - 0x0002 => 'Creative 8-bit to 3-bit ADPCM', - 0x0003 => 'Creative 8-bit to 2-bit ADPCM', - 0x0004 => '16-bit signed PCM', - 0x0006 => 'CCITT a-Law', - 0x0007 => 'CCITT u-Law', - 0x2000 => 'Creative 16-bit to 4-bit ADPCM' - ); - return (isset($VOCwFormatLookup[$index]) ? $VOCwFormatLookup[$index] : false); - } - - function VOCwFormatActualBitsPerSampleLookup($index) { - static $VOCwFormatLookup = array( - 0x0000 => 8, - 0x0001 => 4, - 0x0002 => 3, - 0x0003 => 2, - 0x0004 => 16, - 0x0006 => 8, - 0x0007 => 8, - 0x2000 => 4 - ); - return (isset($VOCwFormatLookup[$index]) ? $VOCwFormatLookup[$index] : false); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.vqf.php b/3rdparty/getid3/module.audio.vqf.php deleted file mode 100644 index dc6ff5ecc42686e2f4d7bd6950af0359d823288b..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.vqf.php +++ /dev/null @@ -1,162 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.vqf.php // -// module for analyzing VQF audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_vqf extends getid3_handler -{ - function Analyze() { - $info = &$this->getid3->info; - - // based loosely on code from TTwinVQ by Jurgen Faul - // http://jfaul.de/atl or http://j-faul.virtualave.net/atl/atl.html - - $info['fileformat'] = 'vqf'; - $info['audio']['dataformat'] = 'vqf'; - $info['audio']['bitrate_mode'] = 'cbr'; - $info['audio']['lossless'] = false; - - // shortcut - $info['vqf']['raw'] = array(); - $thisfile_vqf = &$info['vqf']; - $thisfile_vqf_raw = &$thisfile_vqf['raw']; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $VQFheaderData = fread($this->getid3->fp, 16); - - $offset = 0; - $thisfile_vqf_raw['header_tag'] = substr($VQFheaderData, $offset, 4); - $magic = 'TWIN'; - if ($thisfile_vqf_raw['header_tag'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_vqf_raw['header_tag']).'"'; - unset($info['vqf']); - unset($info['fileformat']); - return false; - } - $offset += 4; - $thisfile_vqf_raw['version'] = substr($VQFheaderData, $offset, 8); - $offset += 8; - $thisfile_vqf_raw['size'] = getid3_lib::BigEndian2Int(substr($VQFheaderData, $offset, 4)); - $offset += 4; - - while (ftell($this->getid3->fp) < $info['avdataend']) { - - $ChunkBaseOffset = ftell($this->getid3->fp); - $chunkoffset = 0; - $ChunkData = fread($this->getid3->fp, 8); - $ChunkName = substr($ChunkData, $chunkoffset, 4); - if ($ChunkName == 'DATA') { - $info['avdataoffset'] = $ChunkBaseOffset; - break; - } - $chunkoffset += 4; - $ChunkSize = getid3_lib::BigEndian2Int(substr($ChunkData, $chunkoffset, 4)); - $chunkoffset += 4; - if ($ChunkSize > ($info['avdataend'] - ftell($this->getid3->fp))) { - $info['error'][] = 'Invalid chunk size ('.$ChunkSize.') for chunk "'.$ChunkName.'" at offset '.$ChunkBaseOffset; - break; - } - if ($ChunkSize > 0) { - $ChunkData .= fread($this->getid3->fp, $ChunkSize); - } - - switch ($ChunkName) { - case 'COMM': - // shortcut - $thisfile_vqf['COMM'] = array(); - $thisfile_vqf_COMM = &$thisfile_vqf['COMM']; - - $thisfile_vqf_COMM['channel_mode'] = getid3_lib::BigEndian2Int(substr($ChunkData, $chunkoffset, 4)); - $chunkoffset += 4; - $thisfile_vqf_COMM['bitrate'] = getid3_lib::BigEndian2Int(substr($ChunkData, $chunkoffset, 4)); - $chunkoffset += 4; - $thisfile_vqf_COMM['sample_rate'] = getid3_lib::BigEndian2Int(substr($ChunkData, $chunkoffset, 4)); - $chunkoffset += 4; - $thisfile_vqf_COMM['security_level'] = getid3_lib::BigEndian2Int(substr($ChunkData, $chunkoffset, 4)); - $chunkoffset += 4; - - $info['audio']['channels'] = $thisfile_vqf_COMM['channel_mode'] + 1; - $info['audio']['sample_rate'] = $this->VQFchannelFrequencyLookup($thisfile_vqf_COMM['sample_rate']); - $info['audio']['bitrate'] = $thisfile_vqf_COMM['bitrate'] * 1000; - $info['audio']['encoder_options'] = 'CBR' . ceil($info['audio']['bitrate']/1000); - - if ($info['audio']['bitrate'] == 0) { - $info['error'][] = 'Corrupt VQF file: bitrate_audio == zero'; - return false; - } - break; - - case 'NAME': - case 'AUTH': - case '(c) ': - case 'FILE': - case 'COMT': - case 'ALBM': - $thisfile_vqf['comments'][$this->VQFcommentNiceNameLookup($ChunkName)][] = trim(substr($ChunkData, 8)); - break; - - case 'DSIZ': - $thisfile_vqf['DSIZ'] = getid3_lib::BigEndian2Int(substr($ChunkData, 8, 4)); - break; - - default: - $info['warning'][] = 'Unhandled chunk type "'.$ChunkName.'" at offset '.$ChunkBaseOffset; - break; - } - } - - $info['playtime_seconds'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['audio']['bitrate']; - - if (isset($thisfile_vqf['DSIZ']) && (($thisfile_vqf['DSIZ'] != ($info['avdataend'] - $info['avdataoffset'] - strlen('DATA'))))) { - switch ($thisfile_vqf['DSIZ']) { - case 0: - case 1: - $info['warning'][] = 'Invalid DSIZ value "'.$thisfile_vqf['DSIZ'].'". This is known to happen with VQF files encoded by Ahead Nero, and seems to be its way of saying this is TwinVQF v'.($thisfile_vqf['DSIZ'] + 1).'.0'; - $info['audio']['encoder'] = 'Ahead Nero'; - break; - - default: - $info['warning'][] = 'Probable corrupted file - should be '.$thisfile_vqf['DSIZ'].' bytes, actually '.($info['avdataend'] - $info['avdataoffset'] - strlen('DATA')); - break; - } - } - - return true; - } - - function VQFchannelFrequencyLookup($frequencyid) { - static $VQFchannelFrequencyLookup = array( - 11 => 11025, - 22 => 22050, - 44 => 44100 - ); - return (isset($VQFchannelFrequencyLookup[$frequencyid]) ? $VQFchannelFrequencyLookup[$frequencyid] : $frequencyid * 1000); - } - - function VQFcommentNiceNameLookup($shortname) { - static $VQFcommentNiceNameLookup = array( - 'NAME' => 'title', - 'AUTH' => 'artist', - '(c) ' => 'copyright', - 'FILE' => 'filename', - 'COMT' => 'comment', - 'ALBM' => 'album' - ); - return (isset($VQFcommentNiceNameLookup[$shortname]) ? $VQFcommentNiceNameLookup[$shortname] : $shortname); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.audio.wavpack.php b/3rdparty/getid3/module.audio.wavpack.php deleted file mode 100644 index 6ab5b438677cfe7e36308bf9302e54bccdc1dd0f..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.audio.wavpack.php +++ /dev/null @@ -1,400 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.audio.wavpack.php // -// module for analyzing WavPack v4.0+ Audio files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_wavpack extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - while (true) { - - $wavpackheader = fread($this->getid3->fp, 32); - - if (ftell($this->getid3->fp) >= $info['avdataend']) { - break; - } elseif (feof($this->getid3->fp)) { - break; - } elseif ( - isset($info['wavpack']['blockheader']['total_samples']) && - isset($info['wavpack']['blockheader']['block_samples']) && - ($info['wavpack']['blockheader']['total_samples'] > 0) && - ($info['wavpack']['blockheader']['block_samples'] > 0) && - (!isset($info['wavpack']['riff_trailer_size']) || ($info['wavpack']['riff_trailer_size'] <= 0)) && - ((isset($info['wavpack']['config_flags']['md5_checksum']) && ($info['wavpack']['config_flags']['md5_checksum'] === false)) || !empty($info['md5_data_source']))) { - break; - } - - $blockheader_offset = ftell($this->getid3->fp) - 32; - $blockheader_magic = substr($wavpackheader, 0, 4); - $blockheader_size = getid3_lib::LittleEndian2Int(substr($wavpackheader, 4, 4)); - - $magic = 'wvpk'; - if ($blockheader_magic != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$blockheader_offset.', found "'.getid3_lib::PrintHexBytes($blockheader_magic).'"'; - switch (isset($info['audio']['dataformat']) ? $info['audio']['dataformat'] : '') { - case 'wavpack': - case 'wvc': - break; - default: - unset($info['fileformat']); - unset($info['audio']); - unset($info['wavpack']); - break; - } - return false; - } - - if (empty($info['wavpack']['blockheader']['block_samples']) || - empty($info['wavpack']['blockheader']['total_samples']) || - ($info['wavpack']['blockheader']['block_samples'] <= 0) || - ($info['wavpack']['blockheader']['total_samples'] <= 0)) { - // Also, it is possible that the first block might not have - // any samples (block_samples == 0) and in this case you should skip blocks - // until you find one with samples because the other information (like - // total_samples) are not guaranteed to be correct until (block_samples > 0) - - // Finally, I have defined a format for files in which the length is not known - // (for example when raw files are created using pipes). In these cases - // total_samples will be -1 and you must seek to the final block to determine - // the total number of samples. - - - $info['audio']['dataformat'] = 'wavpack'; - $info['fileformat'] = 'wavpack'; - $info['audio']['lossless'] = true; - $info['audio']['bitrate_mode'] = 'vbr'; - - $info['wavpack']['blockheader']['offset'] = $blockheader_offset; - $info['wavpack']['blockheader']['magic'] = $blockheader_magic; - $info['wavpack']['blockheader']['size'] = $blockheader_size; - - if ($info['wavpack']['blockheader']['size'] >= 0x100000) { - $info['error'][] = 'Expecting WavPack block size less than "0x100000", found "'.$info['wavpack']['blockheader']['size'].'" at offset '.$info['wavpack']['blockheader']['offset']; - switch (isset($info['audio']['dataformat']) ? $info['audio']['dataformat'] : '') { - case 'wavpack': - case 'wvc': - break; - default: - unset($info['fileformat']); - unset($info['audio']); - unset($info['wavpack']); - break; - } - return false; - } - - $info['wavpack']['blockheader']['minor_version'] = ord($wavpackheader{8}); - $info['wavpack']['blockheader']['major_version'] = ord($wavpackheader{9}); - - if (($info['wavpack']['blockheader']['major_version'] != 4) || - (($info['wavpack']['blockheader']['minor_version'] < 4) && - ($info['wavpack']['blockheader']['minor_version'] > 16))) { - $info['error'][] = 'Expecting WavPack version between "4.2" and "4.16", found version "'.$info['wavpack']['blockheader']['major_version'].'.'.$info['wavpack']['blockheader']['minor_version'].'" at offset '.$info['wavpack']['blockheader']['offset']; - switch (isset($info['audio']['dataformat']) ? $info['audio']['dataformat'] : '') { - case 'wavpack': - case 'wvc': - break; - default: - unset($info['fileformat']); - unset($info['audio']); - unset($info['wavpack']); - break; - } - return false; - } - - $info['wavpack']['blockheader']['track_number'] = ord($wavpackheader{10}); // unused - $info['wavpack']['blockheader']['index_number'] = ord($wavpackheader{11}); // unused - $info['wavpack']['blockheader']['total_samples'] = getid3_lib::LittleEndian2Int(substr($wavpackheader, 12, 4)); - $info['wavpack']['blockheader']['block_index'] = getid3_lib::LittleEndian2Int(substr($wavpackheader, 16, 4)); - $info['wavpack']['blockheader']['block_samples'] = getid3_lib::LittleEndian2Int(substr($wavpackheader, 20, 4)); - $info['wavpack']['blockheader']['flags_raw'] = getid3_lib::LittleEndian2Int(substr($wavpackheader, 24, 4)); - $info['wavpack']['blockheader']['crc'] = getid3_lib::LittleEndian2Int(substr($wavpackheader, 28, 4)); - - $info['wavpack']['blockheader']['flags']['bytes_per_sample'] = 1 + ($info['wavpack']['blockheader']['flags_raw'] & 0x00000003); - $info['wavpack']['blockheader']['flags']['mono'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000004); - $info['wavpack']['blockheader']['flags']['hybrid'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000008); - $info['wavpack']['blockheader']['flags']['joint_stereo'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000010); - $info['wavpack']['blockheader']['flags']['cross_decorrelation'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000020); - $info['wavpack']['blockheader']['flags']['hybrid_noiseshape'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000040); - $info['wavpack']['blockheader']['flags']['ieee_32bit_float'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000080); - $info['wavpack']['blockheader']['flags']['int_32bit'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000100); - $info['wavpack']['blockheader']['flags']['hybrid_bitrate_noise'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000200); - $info['wavpack']['blockheader']['flags']['hybrid_balance_noise'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000400); - $info['wavpack']['blockheader']['flags']['multichannel_initial'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00000800); - $info['wavpack']['blockheader']['flags']['multichannel_final'] = (bool) ($info['wavpack']['blockheader']['flags_raw'] & 0x00001000); - - $info['audio']['lossless'] = !$info['wavpack']['blockheader']['flags']['hybrid']; - } - - while (!feof($this->getid3->fp) && (ftell($this->getid3->fp) < ($blockheader_offset + $blockheader_size + 8))) { - - $metablock = array('offset'=>ftell($this->getid3->fp)); - $metablockheader = fread($this->getid3->fp, 2); - if (feof($this->getid3->fp)) { - break; - } - $metablock['id'] = ord($metablockheader{0}); - $metablock['function_id'] = ($metablock['id'] & 0x3F); - $metablock['function_name'] = $this->WavPackMetablockNameLookup($metablock['function_id']); - - // The 0x20 bit in the id of the meta subblocks (which is defined as - // ID_OPTIONAL_DATA) is a permanent part of the id. The idea is that - // if a decoder encounters an id that it does not know about, it uses - // that "ID_OPTIONAL_DATA" flag to determine what to do. If it is set - // then the decoder simply ignores the metadata, but if it is zero - // then the decoder should quit because it means that an understanding - // of the metadata is required to correctly decode the audio. - $metablock['non_decoder'] = (bool) ($metablock['id'] & 0x20); - - $metablock['padded_data'] = (bool) ($metablock['id'] & 0x40); - $metablock['large_block'] = (bool) ($metablock['id'] & 0x80); - if ($metablock['large_block']) { - $metablockheader .= fread($this->getid3->fp, 2); - } - $metablock['size'] = getid3_lib::LittleEndian2Int(substr($metablockheader, 1)) * 2; // size is stored in words - $metablock['data'] = null; - - if ($metablock['size'] > 0) { - - switch ($metablock['function_id']) { - case 0x21: // ID_RIFF_HEADER - case 0x22: // ID_RIFF_TRAILER - case 0x23: // ID_REPLAY_GAIN - case 0x24: // ID_CUESHEET - case 0x25: // ID_CONFIG_BLOCK - case 0x26: // ID_MD5_CHECKSUM - $metablock['data'] = fread($this->getid3->fp, $metablock['size']); - - if ($metablock['padded_data']) { - // padded to the nearest even byte - $metablock['size']--; - $metablock['data'] = substr($metablock['data'], 0, -1); - } - break; - - case 0x00: // ID_DUMMY - case 0x01: // ID_ENCODER_INFO - case 0x02: // ID_DECORR_TERMS - case 0x03: // ID_DECORR_WEIGHTS - case 0x04: // ID_DECORR_SAMPLES - case 0x05: // ID_ENTROPY_VARS - case 0x06: // ID_HYBRID_PROFILE - case 0x07: // ID_SHAPING_WEIGHTS - case 0x08: // ID_FLOAT_INFO - case 0x09: // ID_INT32_INFO - case 0x0A: // ID_WV_BITSTREAM - case 0x0B: // ID_WVC_BITSTREAM - case 0x0C: // ID_WVX_BITSTREAM - case 0x0D: // ID_CHANNEL_INFO - fseek($this->getid3->fp, $metablock['offset'] + ($metablock['large_block'] ? 4 : 2) + $metablock['size'], SEEK_SET); - break; - - default: - $info['warning'][] = 'Unexpected metablock type "0x'.str_pad(dechex($metablock['function_id']), 2, '0', STR_PAD_LEFT).'" at offset '.$metablock['offset']; - fseek($this->getid3->fp, $metablock['offset'] + ($metablock['large_block'] ? 4 : 2) + $metablock['size'], SEEK_SET); - break; - } - - switch ($metablock['function_id']) { - case 0x21: // ID_RIFF_HEADER - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - $original_wav_filesize = getid3_lib::LittleEndian2Int(substr($metablock['data'], 4, 4)); - - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_riff = new getid3_riff($getid3_temp); - $getid3_riff->ParseRIFFdata($metablock['data']); - $metablock['riff'] = $getid3_temp->info['riff']; - $info['audio']['sample_rate'] = $getid3_temp->info['riff']['raw']['fmt ']['nSamplesPerSec']; - unset($getid3_riff, $getid3_temp); - - $metablock['riff']['original_filesize'] = $original_wav_filesize; - $info['wavpack']['riff_trailer_size'] = $original_wav_filesize - $metablock['riff']['WAVE']['data'][0]['size'] - $metablock['riff']['header_size']; - $info['playtime_seconds'] = $info['wavpack']['blockheader']['total_samples'] / $info['audio']['sample_rate']; - - // Safe RIFF header in case there's a RIFF footer later - $metablockRIFFheader = $metablock['data']; - break; - - - case 0x22: // ID_RIFF_TRAILER - $metablockRIFFfooter = $metablockRIFFheader.$metablock['data']; - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true); - - $startoffset = $metablock['offset'] + ($metablock['large_block'] ? 4 : 2); - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_temp->info['avdataend'] = $info['avdataend']; - $getid3_temp->info['fileformat'] = 'riff'; - $getid3_riff = new getid3_riff($getid3_temp); - $metablock['riff'] = $getid3_riff->ParseRIFF($startoffset, $startoffset + $metablock['size']); - - if (!empty($metablock['riff']['INFO'])) { - $getid3_riff->RIFFcommentsParse($metablock['riff']['INFO'], $metablock['comments']); - $info['tags']['riff'] = $metablock['comments']; - } - unset($getid3_temp, $getid3_riff); - break; - - - case 0x23: // ID_REPLAY_GAIN - $info['warning'][] = 'WavPack "Replay Gain" contents not yet handled by getID3() in metablock at offset '.$metablock['offset']; - break; - - - case 0x24: // ID_CUESHEET - $info['warning'][] = 'WavPack "Cuesheet" contents not yet handled by getID3() in metablock at offset '.$metablock['offset']; - break; - - - case 0x25: // ID_CONFIG_BLOCK - $metablock['flags_raw'] = getid3_lib::LittleEndian2Int(substr($metablock['data'], 0, 3)); - - $metablock['flags']['adobe_mode'] = (bool) ($metablock['flags_raw'] & 0x000001); // "adobe" mode for 32-bit floats - $metablock['flags']['fast_flag'] = (bool) ($metablock['flags_raw'] & 0x000002); // fast mode - $metablock['flags']['very_fast_flag'] = (bool) ($metablock['flags_raw'] & 0x000004); // double fast - $metablock['flags']['high_flag'] = (bool) ($metablock['flags_raw'] & 0x000008); // high quality mode - $metablock['flags']['very_high_flag'] = (bool) ($metablock['flags_raw'] & 0x000010); // double high (not used yet) - $metablock['flags']['bitrate_kbps'] = (bool) ($metablock['flags_raw'] & 0x000020); // bitrate is kbps, not bits / sample - $metablock['flags']['auto_shaping'] = (bool) ($metablock['flags_raw'] & 0x000040); // automatic noise shaping - $metablock['flags']['shape_override'] = (bool) ($metablock['flags_raw'] & 0x000080); // shaping mode specified - $metablock['flags']['joint_override'] = (bool) ($metablock['flags_raw'] & 0x000100); // joint-stereo mode specified - $metablock['flags']['copy_time'] = (bool) ($metablock['flags_raw'] & 0x000200); // copy file-time from source - $metablock['flags']['create_exe'] = (bool) ($metablock['flags_raw'] & 0x000400); // create executable - $metablock['flags']['create_wvc'] = (bool) ($metablock['flags_raw'] & 0x000800); // create correction file - $metablock['flags']['optimize_wvc'] = (bool) ($metablock['flags_raw'] & 0x001000); // maximize bybrid compression - $metablock['flags']['quality_mode'] = (bool) ($metablock['flags_raw'] & 0x002000); // psychoacoustic quality mode - $metablock['flags']['raw_flag'] = (bool) ($metablock['flags_raw'] & 0x004000); // raw mode (not implemented yet) - $metablock['flags']['calc_noise'] = (bool) ($metablock['flags_raw'] & 0x008000); // calc noise in hybrid mode - $metablock['flags']['lossy_mode'] = (bool) ($metablock['flags_raw'] & 0x010000); // obsolete (for information) - $metablock['flags']['extra_mode'] = (bool) ($metablock['flags_raw'] & 0x020000); // extra processing mode - $metablock['flags']['skip_wvx'] = (bool) ($metablock['flags_raw'] & 0x040000); // no wvx stream w/ floats & big ints - $metablock['flags']['md5_checksum'] = (bool) ($metablock['flags_raw'] & 0x080000); // compute & store MD5 signature - $metablock['flags']['quiet_mode'] = (bool) ($metablock['flags_raw'] & 0x100000); // don't report progress % - - $info['wavpack']['config_flags'] = $metablock['flags']; - - - $info['audio']['encoder_options'] = ''; - if ($info['wavpack']['blockheader']['flags']['hybrid']) { - $info['audio']['encoder_options'] .= ' -b???'; - } - $info['audio']['encoder_options'] .= ($metablock['flags']['adobe_mode'] ? ' -a' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['optimize_wvc'] ? ' -cc' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['create_exe'] ? ' -e' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['fast_flag'] ? ' -f' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['joint_override'] ? ' -j?' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['high_flag'] ? ' -h' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['md5_checksum'] ? ' -m' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['calc_noise'] ? ' -n' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['shape_override'] ? ' -s?' : ''); - $info['audio']['encoder_options'] .= ($metablock['flags']['extra_mode'] ? ' -x?' : ''); - if (!empty($info['audio']['encoder_options'])) { - $info['audio']['encoder_options'] = trim($info['audio']['encoder_options']); - } elseif (isset($info['audio']['encoder_options'])) { - unset($info['audio']['encoder_options']); - } - break; - - - case 0x26: // ID_MD5_CHECKSUM - if (strlen($metablock['data']) == 16) { - $info['md5_data_source'] = strtolower(getid3_lib::PrintHexBytes($metablock['data'], true, false, false)); - } else { - $info['warning'][] = 'Expecting 16 bytes of WavPack "MD5 Checksum" in metablock at offset '.$metablock['offset'].', but found '.strlen($metablock['data']).' bytes'; - } - break; - - - case 0x00: // ID_DUMMY - case 0x01: // ID_ENCODER_INFO - case 0x02: // ID_DECORR_TERMS - case 0x03: // ID_DECORR_WEIGHTS - case 0x04: // ID_DECORR_SAMPLES - case 0x05: // ID_ENTROPY_VARS - case 0x06: // ID_HYBRID_PROFILE - case 0x07: // ID_SHAPING_WEIGHTS - case 0x08: // ID_FLOAT_INFO - case 0x09: // ID_INT32_INFO - case 0x0A: // ID_WV_BITSTREAM - case 0x0B: // ID_WVC_BITSTREAM - case 0x0C: // ID_WVX_BITSTREAM - case 0x0D: // ID_CHANNEL_INFO - unset($metablock); - break; - } - - } - if (!empty($metablock)) { - $info['wavpack']['metablocks'][] = $metablock; - } - - } - - } - - $info['audio']['encoder'] = 'WavPack v'.$info['wavpack']['blockheader']['major_version'].'.'.str_pad($info['wavpack']['blockheader']['minor_version'], 2, '0', STR_PAD_LEFT); - $info['audio']['bits_per_sample'] = $info['wavpack']['blockheader']['flags']['bytes_per_sample'] * 8; - $info['audio']['channels'] = ($info['wavpack']['blockheader']['flags']['mono'] ? 1 : 2); - - if (!empty($info['playtime_seconds'])) { - - $info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds']; - - } else { - - $info['audio']['dataformat'] = 'wvc'; - - } - - return true; - } - - - function WavPackMetablockNameLookup(&$id) { - static $WavPackMetablockNameLookup = array( - 0x00 => 'Dummy', - 0x01 => 'Encoder Info', - 0x02 => 'Decorrelation Terms', - 0x03 => 'Decorrelation Weights', - 0x04 => 'Decorrelation Samples', - 0x05 => 'Entropy Variables', - 0x06 => 'Hybrid Profile', - 0x07 => 'Shaping Weights', - 0x08 => 'Float Info', - 0x09 => 'Int32 Info', - 0x0A => 'WV Bitstream', - 0x0B => 'WVC Bitstream', - 0x0C => 'WVX Bitstream', - 0x0D => 'Channel Info', - 0x21 => 'RIFF header', - 0x22 => 'RIFF trailer', - 0x23 => 'Replay Gain', - 0x24 => 'Cuesheet', - 0x25 => 'Config Block', - 0x26 => 'MD5 Checksum', - ); - return (isset($WavPackMetablockNameLookup[$id]) ? $WavPackMetablockNameLookup[$id] : ''); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.bmp.php b/3rdparty/getid3/module.graphic.bmp.php deleted file mode 100644 index 5ac671fbca0db3f64e0c79db1dc55b82b9b1cb6b..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.bmp.php +++ /dev/null @@ -1,690 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.graphic.bmp.php // -// module for analyzing BMP Image files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_bmp extends getid3_handler -{ - var $ExtractPalette = false; - var $ExtractData = false; - - function Analyze() { - $info = &$this->getid3->info; - - // shortcuts - $info['bmp']['header']['raw'] = array(); - $thisfile_bmp = &$info['bmp']; - $thisfile_bmp_header = &$thisfile_bmp['header']; - $thisfile_bmp_header_raw = &$thisfile_bmp_header['raw']; - - // BITMAPFILEHEADER [14 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_62uq.asp - // all versions - // WORD bfType; - // DWORD bfSize; - // WORD bfReserved1; - // WORD bfReserved2; - // DWORD bfOffBits; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $offset = 0; - $BMPheader = fread($this->getid3->fp, 14 + 40); - - $thisfile_bmp_header_raw['identifier'] = substr($BMPheader, $offset, 2); - $offset += 2; - - $magic = 'BM'; - if ($thisfile_bmp_header_raw['identifier'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_bmp_header_raw['identifier']).'"'; - unset($info['fileformat']); - unset($info['bmp']); - return false; - } - - $thisfile_bmp_header_raw['filesize'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['reserved1'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['reserved2'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['data_offset'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['header_size'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - - - // check if the hardcoded-to-1 "planes" is at offset 22 or 26 - $planes22 = getid3_lib::LittleEndian2Int(substr($BMPheader, 22, 2)); - $planes26 = getid3_lib::LittleEndian2Int(substr($BMPheader, 26, 2)); - if (($planes22 == 1) && ($planes26 != 1)) { - $thisfile_bmp['type_os'] = 'OS/2'; - $thisfile_bmp['type_version'] = 1; - } elseif (($planes26 == 1) && ($planes22 != 1)) { - $thisfile_bmp['type_os'] = 'Windows'; - $thisfile_bmp['type_version'] = 1; - } elseif ($thisfile_bmp_header_raw['header_size'] == 12) { - $thisfile_bmp['type_os'] = 'OS/2'; - $thisfile_bmp['type_version'] = 1; - } elseif ($thisfile_bmp_header_raw['header_size'] == 40) { - $thisfile_bmp['type_os'] = 'Windows'; - $thisfile_bmp['type_version'] = 1; - } elseif ($thisfile_bmp_header_raw['header_size'] == 84) { - $thisfile_bmp['type_os'] = 'Windows'; - $thisfile_bmp['type_version'] = 4; - } elseif ($thisfile_bmp_header_raw['header_size'] == 100) { - $thisfile_bmp['type_os'] = 'Windows'; - $thisfile_bmp['type_version'] = 5; - } else { - $info['error'][] = 'Unknown BMP subtype (or not a BMP file)'; - unset($info['fileformat']); - unset($info['bmp']); - return false; - } - - $info['fileformat'] = 'bmp'; - $info['video']['dataformat'] = 'bmp'; - $info['video']['lossless'] = true; - $info['video']['pixel_aspect_ratio'] = (float) 1; - - if ($thisfile_bmp['type_os'] == 'OS/2') { - - // OS/2-format BMP - // http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm - - // DWORD Size; /* Size of this structure in bytes */ - // DWORD Width; /* Bitmap width in pixels */ - // DWORD Height; /* Bitmap height in pixel */ - // WORD NumPlanes; /* Number of bit planes (color depth) */ - // WORD BitsPerPixel; /* Number of bits per pixel per plane */ - - $thisfile_bmp_header_raw['width'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['height'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['planes'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['bits_per_pixel'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - - $info['video']['resolution_x'] = $thisfile_bmp_header_raw['width']; - $info['video']['resolution_y'] = $thisfile_bmp_header_raw['height']; - $info['video']['codec'] = 'BI_RGB '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit'; - $info['video']['bits_per_sample'] = $thisfile_bmp_header_raw['bits_per_pixel']; - - if ($thisfile_bmp['type_version'] >= 2) { - // DWORD Compression; /* Bitmap compression scheme */ - // DWORD ImageDataSize; /* Size of bitmap data in bytes */ - // DWORD XResolution; /* X resolution of display device */ - // DWORD YResolution; /* Y resolution of display device */ - // DWORD ColorsUsed; /* Number of color table indices used */ - // DWORD ColorsImportant; /* Number of important color indices */ - // WORD Units; /* Type of units used to measure resolution */ - // WORD Reserved; /* Pad structure to 4-byte boundary */ - // WORD Recording; /* Recording algorithm */ - // WORD Rendering; /* Halftoning algorithm used */ - // DWORD Size1; /* Reserved for halftoning algorithm use */ - // DWORD Size2; /* Reserved for halftoning algorithm use */ - // DWORD ColorEncoding; /* Color model used in bitmap */ - // DWORD Identifier; /* Reserved for application use */ - - $thisfile_bmp_header_raw['compression'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['bmp_data_size'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['resolution_h'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['resolution_v'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['colors_used'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['colors_important'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['resolution_units'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['reserved1'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['recording'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['rendering'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['size1'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['size2'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['color_encoding'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['identifier'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - - $thisfile_bmp_header['compression'] = $this->BMPcompressionOS2Lookup($thisfile_bmp_header_raw['compression']); - - $info['video']['codec'] = $thisfile_bmp_header['compression'].' '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit'; - } - - } elseif ($thisfile_bmp['type_os'] == 'Windows') { - - // Windows-format BMP - - // BITMAPINFOHEADER - [40 bytes] http://msdn.microsoft.com/library/en-us/gdi/bitmaps_1rw2.asp - // all versions - // DWORD biSize; - // LONG biWidth; - // LONG biHeight; - // WORD biPlanes; - // WORD biBitCount; - // DWORD biCompression; - // DWORD biSizeImage; - // LONG biXPelsPerMeter; - // LONG biYPelsPerMeter; - // DWORD biClrUsed; - // DWORD biClrImportant; - - // possibly integrate this section and module.audio-video.riff.php::ParseBITMAPINFOHEADER() ? - - $thisfile_bmp_header_raw['width'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4), true); - $offset += 4; - $thisfile_bmp_header_raw['height'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4), true); - $offset += 4; - $thisfile_bmp_header_raw['planes'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['bits_per_pixel'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 2)); - $offset += 2; - $thisfile_bmp_header_raw['compression'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['bmp_data_size'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['resolution_h'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4), true); - $offset += 4; - $thisfile_bmp_header_raw['resolution_v'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4), true); - $offset += 4; - $thisfile_bmp_header_raw['colors_used'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['colors_important'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - - $thisfile_bmp_header['compression'] = $this->BMPcompressionWindowsLookup($thisfile_bmp_header_raw['compression']); - $info['video']['resolution_x'] = $thisfile_bmp_header_raw['width']; - $info['video']['resolution_y'] = $thisfile_bmp_header_raw['height']; - $info['video']['codec'] = $thisfile_bmp_header['compression'].' '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit'; - $info['video']['bits_per_sample'] = $thisfile_bmp_header_raw['bits_per_pixel']; - - if (($thisfile_bmp['type_version'] >= 4) || ($thisfile_bmp_header_raw['compression'] == 3)) { - // should only be v4+, but BMPs with type_version==1 and BI_BITFIELDS compression have been seen - $BMPheader .= fread($this->getid3->fp, 44); - - // BITMAPV4HEADER - [44 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_2k1e.asp - // Win95+, WinNT4.0+ - // DWORD bV4RedMask; - // DWORD bV4GreenMask; - // DWORD bV4BlueMask; - // DWORD bV4AlphaMask; - // DWORD bV4CSType; - // CIEXYZTRIPLE bV4Endpoints; - // DWORD bV4GammaRed; - // DWORD bV4GammaGreen; - // DWORD bV4GammaBlue; - $thisfile_bmp_header_raw['red_mask'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['green_mask'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['blue_mask'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['alpha_mask'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['cs_type'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['ciexyz_red'] = substr($BMPheader, $offset, 4); - $offset += 4; - $thisfile_bmp_header_raw['ciexyz_green'] = substr($BMPheader, $offset, 4); - $offset += 4; - $thisfile_bmp_header_raw['ciexyz_blue'] = substr($BMPheader, $offset, 4); - $offset += 4; - $thisfile_bmp_header_raw['gamma_red'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['gamma_green'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['gamma_blue'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - - $thisfile_bmp_header['ciexyz_red'] = getid3_lib::FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_red'])); - $thisfile_bmp_header['ciexyz_green'] = getid3_lib::FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_green'])); - $thisfile_bmp_header['ciexyz_blue'] = getid3_lib::FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_blue'])); - } - - if ($thisfile_bmp['type_version'] >= 5) { - $BMPheader .= fread($this->getid3->fp, 16); - - // BITMAPV5HEADER - [16 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_7c36.asp - // Win98+, Win2000+ - // DWORD bV5Intent; - // DWORD bV5ProfileData; - // DWORD bV5ProfileSize; - // DWORD bV5Reserved; - $thisfile_bmp_header_raw['intent'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['profile_data_offset'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['profile_data_size'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - $thisfile_bmp_header_raw['reserved3'] = getid3_lib::LittleEndian2Int(substr($BMPheader, $offset, 4)); - $offset += 4; - } - - } else { - - $info['error'][] = 'Unknown BMP format in header.'; - return false; - - } - - - if ($this->ExtractPalette || $this->ExtractData) { - $PaletteEntries = 0; - if ($thisfile_bmp_header_raw['bits_per_pixel'] < 16) { - $PaletteEntries = pow(2, $thisfile_bmp_header_raw['bits_per_pixel']); - } elseif (isset($thisfile_bmp_header_raw['colors_used']) && ($thisfile_bmp_header_raw['colors_used'] > 0) && ($thisfile_bmp_header_raw['colors_used'] <= 256)) { - $PaletteEntries = $thisfile_bmp_header_raw['colors_used']; - } - if ($PaletteEntries > 0) { - $BMPpalette = fread($this->getid3->fp, 4 * $PaletteEntries); - $paletteoffset = 0; - for ($i = 0; $i < $PaletteEntries; $i++) { - // RGBQUAD - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_5f8y.asp - // BYTE rgbBlue; - // BYTE rgbGreen; - // BYTE rgbRed; - // BYTE rgbReserved; - $blue = getid3_lib::LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1)); - $green = getid3_lib::LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1)); - $red = getid3_lib::LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1)); - if (($thisfile_bmp['type_os'] == 'OS/2') && ($thisfile_bmp['type_version'] == 1)) { - // no padding byte - } else { - $paletteoffset++; // padding byte - } - $thisfile_bmp['palette'][$i] = (($red << 16) | ($green << 8) | $blue); - } - } - } - - if ($this->ExtractData) { - fseek($this->getid3->fp, $thisfile_bmp_header_raw['data_offset'], SEEK_SET); - $RowByteLength = ceil(($thisfile_bmp_header_raw['width'] * ($thisfile_bmp_header_raw['bits_per_pixel'] / 8)) / 4) * 4; // round up to nearest DWORD boundry - $BMPpixelData = fread($this->getid3->fp, $thisfile_bmp_header_raw['height'] * $RowByteLength); - $pixeldataoffset = 0; - $thisfile_bmp_header_raw['compression'] = (isset($thisfile_bmp_header_raw['compression']) ? $thisfile_bmp_header_raw['compression'] : ''); - switch ($thisfile_bmp_header_raw['compression']) { - - case 0: // BI_RGB - switch ($thisfile_bmp_header_raw['bits_per_pixel']) { - case 1: - for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) { - for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col = $col) { - $paletteindexbyte = ord($BMPpixelData{$pixeldataoffset++}); - for ($i = 7; $i >= 0; $i--) { - $paletteindex = ($paletteindexbyte & (0x01 << $i)) >> $i; - $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex]; - $col++; - } - } - while (($pixeldataoffset % 4) != 0) { - // lines are padded to nearest DWORD - $pixeldataoffset++; - } - } - break; - - case 4: - for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) { - for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col = $col) { - $paletteindexbyte = ord($BMPpixelData{$pixeldataoffset++}); - for ($i = 1; $i >= 0; $i--) { - $paletteindex = ($paletteindexbyte & (0x0F << (4 * $i))) >> (4 * $i); - $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex]; - $col++; - } - } - while (($pixeldataoffset % 4) != 0) { - // lines are padded to nearest DWORD - $pixeldataoffset++; - } - } - break; - - case 8: - for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) { - for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) { - $paletteindex = ord($BMPpixelData{$pixeldataoffset++}); - $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex]; - } - while (($pixeldataoffset % 4) != 0) { - // lines are padded to nearest DWORD - $pixeldataoffset++; - } - } - break; - - case 24: - for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) { - for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) { - $thisfile_bmp['data'][$row][$col] = (ord($BMPpixelData{$pixeldataoffset+2}) << 16) | (ord($BMPpixelData{$pixeldataoffset+1}) << 8) | ord($BMPpixelData{$pixeldataoffset}); - $pixeldataoffset += 3; - } - while (($pixeldataoffset % 4) != 0) { - // lines are padded to nearest DWORD - $pixeldataoffset++; - } - } - break; - - case 32: - for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) { - for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) { - $thisfile_bmp['data'][$row][$col] = (ord($BMPpixelData{$pixeldataoffset+3}) << 24) | (ord($BMPpixelData{$pixeldataoffset+2}) << 16) | (ord($BMPpixelData{$pixeldataoffset+1}) << 8) | ord($BMPpixelData{$pixeldataoffset}); - $pixeldataoffset += 4; - } - while (($pixeldataoffset % 4) != 0) { - // lines are padded to nearest DWORD - $pixeldataoffset++; - } - } - break; - - case 16: - // ? - break; - - default: - $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data'; - break; - } - break; - - - case 1: // BI_RLE8 - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_6x0u.asp - switch ($thisfile_bmp_header_raw['bits_per_pixel']) { - case 8: - $pixelcounter = 0; - while ($pixeldataoffset < strlen($BMPpixelData)) { - $firstbyte = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $secondbyte = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - if ($firstbyte == 0) { - - // escaped/absolute mode - the first byte of the pair can be set to zero to - // indicate an escape character that denotes the end of a line, the end of - // a bitmap, or a delta, depending on the value of the second byte. - switch ($secondbyte) { - case 0: - // end of line - // no need for special processing, just ignore - break; - - case 1: - // end of bitmap - $pixeldataoffset = strlen($BMPpixelData); // force to exit loop just in case - break; - - case 2: - // delta - The 2 bytes following the escape contain unsigned values - // indicating the horizontal and vertical offsets of the next pixel - // from the current position. - $colincrement = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $rowincrement = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $col = ($pixelcounter % $thisfile_bmp_header_raw['width']) + $colincrement; - $row = ($thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width'])) - $rowincrement; - $pixelcounter = ($row * $thisfile_bmp_header_raw['width']) + $col; - break; - - default: - // In absolute mode, the first byte is zero and the second byte is a - // value in the range 03H through FFH. The second byte represents the - // number of bytes that follow, each of which contains the color index - // of a single pixel. Each run must be aligned on a word boundary. - for ($i = 0; $i < $secondbyte; $i++) { - $paletteindex = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $col = $pixelcounter % $thisfile_bmp_header_raw['width']; - $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']); - $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex]; - $pixelcounter++; - } - while (($pixeldataoffset % 2) != 0) { - // Each run must be aligned on a word boundary. - $pixeldataoffset++; - } - break; - } - - } else { - - // encoded mode - the first byte specifies the number of consecutive pixels - // to be drawn using the color index contained in the second byte. - for ($i = 0; $i < $firstbyte; $i++) { - $col = $pixelcounter % $thisfile_bmp_header_raw['width']; - $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']); - $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$secondbyte]; - $pixelcounter++; - } - - } - } - break; - - default: - $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data'; - break; - } - break; - - - - case 2: // BI_RLE4 - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_6x0u.asp - switch ($thisfile_bmp_header_raw['bits_per_pixel']) { - case 4: - $pixelcounter = 0; - while ($pixeldataoffset < strlen($BMPpixelData)) { - $firstbyte = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $secondbyte = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - if ($firstbyte == 0) { - - // escaped/absolute mode - the first byte of the pair can be set to zero to - // indicate an escape character that denotes the end of a line, the end of - // a bitmap, or a delta, depending on the value of the second byte. - switch ($secondbyte) { - case 0: - // end of line - // no need for special processing, just ignore - break; - - case 1: - // end of bitmap - $pixeldataoffset = strlen($BMPpixelData); // force to exit loop just in case - break; - - case 2: - // delta - The 2 bytes following the escape contain unsigned values - // indicating the horizontal and vertical offsets of the next pixel - // from the current position. - $colincrement = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $rowincrement = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $col = ($pixelcounter % $thisfile_bmp_header_raw['width']) + $colincrement; - $row = ($thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width'])) - $rowincrement; - $pixelcounter = ($row * $thisfile_bmp_header_raw['width']) + $col; - break; - - default: - // In absolute mode, the first byte is zero. The second byte contains the number - // of color indexes that follow. Subsequent bytes contain color indexes in their - // high- and low-order 4 bits, one color index for each pixel. In absolute mode, - // each run must be aligned on a word boundary. - unset($paletteindexes); - for ($i = 0; $i < ceil($secondbyte / 2); $i++) { - $paletteindexbyte = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1)); - $paletteindexes[] = ($paletteindexbyte & 0xF0) >> 4; - $paletteindexes[] = ($paletteindexbyte & 0x0F); - } - while (($pixeldataoffset % 2) != 0) { - // Each run must be aligned on a word boundary. - $pixeldataoffset++; - } - - foreach ($paletteindexes as $paletteindex) { - $col = $pixelcounter % $thisfile_bmp_header_raw['width']; - $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']); - $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex]; - $pixelcounter++; - } - break; - } - - } else { - - // encoded mode - the first byte of the pair contains the number of pixels to be - // drawn using the color indexes in the second byte. The second byte contains two - // color indexes, one in its high-order 4 bits and one in its low-order 4 bits. - // The first of the pixels is drawn using the color specified by the high-order - // 4 bits, the second is drawn using the color in the low-order 4 bits, the third - // is drawn using the color in the high-order 4 bits, and so on, until all the - // pixels specified by the first byte have been drawn. - $paletteindexes[0] = ($secondbyte & 0xF0) >> 4; - $paletteindexes[1] = ($secondbyte & 0x0F); - for ($i = 0; $i < $firstbyte; $i++) { - $col = $pixelcounter % $thisfile_bmp_header_raw['width']; - $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']); - $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindexes[($i % 2)]]; - $pixelcounter++; - } - - } - } - break; - - default: - $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data'; - break; - } - break; - - - case 3: // BI_BITFIELDS - switch ($thisfile_bmp_header_raw['bits_per_pixel']) { - case 16: - case 32: - $redshift = 0; - $greenshift = 0; - $blueshift = 0; - while ((($thisfile_bmp_header_raw['red_mask'] >> $redshift) & 0x01) == 0) { - $redshift++; - } - while ((($thisfile_bmp_header_raw['green_mask'] >> $greenshift) & 0x01) == 0) { - $greenshift++; - } - while ((($thisfile_bmp_header_raw['blue_mask'] >> $blueshift) & 0x01) == 0) { - $blueshift++; - } - for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) { - for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) { - $pixelvalue = getid3_lib::LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset, $thisfile_bmp_header_raw['bits_per_pixel'] / 8)); - $pixeldataoffset += $thisfile_bmp_header_raw['bits_per_pixel'] / 8; - - $red = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['red_mask']) >> $redshift) / ($thisfile_bmp_header_raw['red_mask'] >> $redshift)) * 255)); - $green = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['green_mask']) >> $greenshift) / ($thisfile_bmp_header_raw['green_mask'] >> $greenshift)) * 255)); - $blue = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['blue_mask']) >> $blueshift) / ($thisfile_bmp_header_raw['blue_mask'] >> $blueshift)) * 255)); - $thisfile_bmp['data'][$row][$col] = (($red << 16) | ($green << 8) | ($blue)); - } - while (($pixeldataoffset % 4) != 0) { - // lines are padded to nearest DWORD - $pixeldataoffset++; - } - } - break; - - default: - $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data'; - break; - } - break; - - - default: // unhandled compression type - $info['error'][] = 'Unknown/unhandled compression type value ('.$thisfile_bmp_header_raw['compression'].') - cannot decompress pixel data'; - break; - } - } - - return true; - } - - - function PlotBMP(&$BMPinfo) { - $starttime = time(); - if (!isset($BMPinfo['bmp']['data']) || !is_array($BMPinfo['bmp']['data'])) { - echo 'ERROR: no pixel data
    '; - return false; - } - set_time_limit(intval(round($BMPinfo['resolution_x'] * $BMPinfo['resolution_y'] / 10000))); - if ($im = ImageCreateTrueColor($BMPinfo['resolution_x'], $BMPinfo['resolution_y'])) { - for ($row = 0; $row < $BMPinfo['resolution_y']; $row++) { - for ($col = 0; $col < $BMPinfo['resolution_x']; $col++) { - if (isset($BMPinfo['bmp']['data'][$row][$col])) { - $red = ($BMPinfo['bmp']['data'][$row][$col] & 0x00FF0000) >> 16; - $green = ($BMPinfo['bmp']['data'][$row][$col] & 0x0000FF00) >> 8; - $blue = ($BMPinfo['bmp']['data'][$row][$col] & 0x000000FF); - $pixelcolor = ImageColorAllocate($im, $red, $green, $blue); - ImageSetPixel($im, $col, $row, $pixelcolor); - } else { - //echo 'ERROR: no data for pixel '.$row.' x '.$col.'
    '; - //return false; - } - } - } - if (headers_sent()) { - echo 'plotted '.($BMPinfo['resolution_x'] * $BMPinfo['resolution_y']).' pixels in '.(time() - $starttime).' seconds
    '; - ImageDestroy($im); - exit; - } else { - header('Content-type: image/png'); - ImagePNG($im); - ImageDestroy($im); - return true; - } - } - return false; - } - - function BMPcompressionWindowsLookup($compressionid) { - static $BMPcompressionWindowsLookup = array( - 0 => 'BI_RGB', - 1 => 'BI_RLE8', - 2 => 'BI_RLE4', - 3 => 'BI_BITFIELDS', - 4 => 'BI_JPEG', - 5 => 'BI_PNG' - ); - return (isset($BMPcompressionWindowsLookup[$compressionid]) ? $BMPcompressionWindowsLookup[$compressionid] : 'invalid'); - } - - function BMPcompressionOS2Lookup($compressionid) { - static $BMPcompressionOS2Lookup = array( - 0 => 'BI_RGB', - 1 => 'BI_RLE8', - 2 => 'BI_RLE4', - 3 => 'Huffman 1D', - 4 => 'BI_RLE24', - ); - return (isset($BMPcompressionOS2Lookup[$compressionid]) ? $BMPcompressionOS2Lookup[$compressionid] : 'invalid'); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.efax.php b/3rdparty/getid3/module.graphic.efax.php deleted file mode 100644 index 2a57302e158085438f34d01c85fe2bb4d4db7c64..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.efax.php +++ /dev/null @@ -1,53 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.efax.php // -// module for analyzing eFax files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_efax extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $efaxheader = fread($this->getid3->fp, 1024); - - $info['efax']['header']['magic'] = substr($efaxheader, 0, 2); - if ($info['efax']['header']['magic'] != "\xDC\xFE") { - $info['error'][] = 'Invalid eFax byte order identifier (expecting DC FE, found '.getid3_lib::PrintHexBytes($info['efax']['header']['magic']).') at offset '.$info['avdataoffset']; - return false; - } - $info['fileformat'] = 'efax'; - - $info['efax']['header']['filesize'] = getid3_lib::LittleEndian2Int(substr($efaxheader, 2, 4)); - if ($info['efax']['header']['filesize'] != $info['filesize']) { - $info['error'][] = 'Probable '.(($info['efax']['header']['filesize'] > $info['filesize']) ? 'truncated' : 'corrupt').' file, expecting '.$info['efax']['header']['filesize'].' bytes, found '.$info['filesize'].' bytes'; - } - $info['efax']['header']['software1'] = rtrim(substr($efaxheader, 26, 32), "\x00"); - $info['efax']['header']['software2'] = rtrim(substr($efaxheader, 58, 32), "\x00"); - $info['efax']['header']['software3'] = rtrim(substr($efaxheader, 90, 32), "\x00"); - - $info['efax']['header']['pages'] = getid3_lib::LittleEndian2Int(substr($efaxheader, 198, 2)); - $info['efax']['header']['data_bytes'] = getid3_lib::LittleEndian2Int(substr($efaxheader, 202, 4)); - -$info['error'][] = 'eFax parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; -return false; - - return true; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.gif.php b/3rdparty/getid3/module.graphic.gif.php deleted file mode 100644 index 0b3e1379ff700d99ca8497041783832e70b1af8c..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.gif.php +++ /dev/null @@ -1,184 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.graphic.gif.php // -// module for analyzing GIF Image files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_gif extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'gif'; - $info['video']['dataformat'] = 'gif'; - $info['video']['lossless'] = true; - $info['video']['pixel_aspect_ratio'] = (float) 1; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $GIFheader = fread($this->getid3->fp, 13); - $offset = 0; - - $info['gif']['header']['raw']['identifier'] = substr($GIFheader, $offset, 3); - $offset += 3; - - $magic = 'GIF'; - if ($info['gif']['header']['raw']['identifier'] != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['gif']['header']['raw']['identifier']).'"'; - unset($info['fileformat']); - unset($info['gif']); - return false; - } - - $info['gif']['header']['raw']['version'] = substr($GIFheader, $offset, 3); - $offset += 3; - $info['gif']['header']['raw']['width'] = getid3_lib::LittleEndian2Int(substr($GIFheader, $offset, 2)); - $offset += 2; - $info['gif']['header']['raw']['height'] = getid3_lib::LittleEndian2Int(substr($GIFheader, $offset, 2)); - $offset += 2; - $info['gif']['header']['raw']['flags'] = getid3_lib::LittleEndian2Int(substr($GIFheader, $offset, 1)); - $offset += 1; - $info['gif']['header']['raw']['bg_color_index'] = getid3_lib::LittleEndian2Int(substr($GIFheader, $offset, 1)); - $offset += 1; - $info['gif']['header']['raw']['aspect_ratio'] = getid3_lib::LittleEndian2Int(substr($GIFheader, $offset, 1)); - $offset += 1; - - $info['video']['resolution_x'] = $info['gif']['header']['raw']['width']; - $info['video']['resolution_y'] = $info['gif']['header']['raw']['height']; - $info['gif']['version'] = $info['gif']['header']['raw']['version']; - $info['gif']['header']['flags']['global_color_table'] = (bool) ($info['gif']['header']['raw']['flags'] & 0x80); - if ($info['gif']['header']['raw']['flags'] & 0x80) { - // Number of bits per primary color available to the original image, minus 1 - $info['gif']['header']['bits_per_pixel'] = 3 * ((($info['gif']['header']['raw']['flags'] & 0x70) >> 4) + 1); - } else { - $info['gif']['header']['bits_per_pixel'] = 0; - } - $info['gif']['header']['flags']['global_color_sorted'] = (bool) ($info['gif']['header']['raw']['flags'] & 0x40); - if ($info['gif']['header']['flags']['global_color_table']) { - // the number of bytes contained in the Global Color Table. To determine that - // actual size of the color table, raise 2 to [the value of the field + 1] - $info['gif']['header']['global_color_size'] = pow(2, ($info['gif']['header']['raw']['flags'] & 0x07) + 1); - $info['video']['bits_per_sample'] = ($info['gif']['header']['raw']['flags'] & 0x07) + 1; - } else { - $info['gif']['header']['global_color_size'] = 0; - } - if ($info['gif']['header']['raw']['aspect_ratio'] != 0) { - // Aspect Ratio = (Pixel Aspect Ratio + 15) / 64 - $info['gif']['header']['aspect_ratio'] = ($info['gif']['header']['raw']['aspect_ratio'] + 15) / 64; - } - -// if ($info['gif']['header']['flags']['global_color_table']) { -// $GIFcolorTable = fread($this->getid3->fp, 3 * $info['gif']['header']['global_color_size']); -// $offset = 0; -// for ($i = 0; $i < $info['gif']['header']['global_color_size']; $i++) { -// $red = getid3_lib::LittleEndian2Int(substr($GIFcolorTable, $offset++, 1)); -// $green = getid3_lib::LittleEndian2Int(substr($GIFcolorTable, $offset++, 1)); -// $blue = getid3_lib::LittleEndian2Int(substr($GIFcolorTable, $offset++, 1)); -// $info['gif']['global_color_table'][$i] = (($red << 16) | ($green << 8) | ($blue)); -// } -// } -// -// // Image Descriptor -// while (!feof($this->getid3->fp)) { -// $NextBlockTest = fread($this->getid3->fp, 1); -// switch ($NextBlockTest) { -// -// case ',': // ',' - Image separator character -// -// $ImageDescriptorData = $NextBlockTest.fread($this->getid3->fp, 9); -// $ImageDescriptor = array(); -// $ImageDescriptor['image_left'] = getid3_lib::LittleEndian2Int(substr($ImageDescriptorData, 1, 2)); -// $ImageDescriptor['image_top'] = getid3_lib::LittleEndian2Int(substr($ImageDescriptorData, 3, 2)); -// $ImageDescriptor['image_width'] = getid3_lib::LittleEndian2Int(substr($ImageDescriptorData, 5, 2)); -// $ImageDescriptor['image_height'] = getid3_lib::LittleEndian2Int(substr($ImageDescriptorData, 7, 2)); -// $ImageDescriptor['flags_raw'] = getid3_lib::LittleEndian2Int(substr($ImageDescriptorData, 9, 1)); -// $ImageDescriptor['flags']['use_local_color_map'] = (bool) ($ImageDescriptor['flags_raw'] & 0x80); -// $ImageDescriptor['flags']['image_interlaced'] = (bool) ($ImageDescriptor['flags_raw'] & 0x40); -// $info['gif']['image_descriptor'][] = $ImageDescriptor; -// -// if ($ImageDescriptor['flags']['use_local_color_map']) { -// -// $info['warning'][] = 'This version of getID3() cannot parse local color maps for GIFs'; -// return true; -// -// } -//echo 'Start of raster data: '.ftell($this->getid3->fp).'
    '; -// $RasterData = array(); -// $RasterData['code_size'] = getid3_lib::LittleEndian2Int(fread($this->getid3->fp, 1)); -// $RasterData['block_byte_count'] = getid3_lib::LittleEndian2Int(fread($this->getid3->fp, 1)); -// $info['gif']['raster_data'][count($info['gif']['image_descriptor']) - 1] = $RasterData; -// -// $CurrentCodeSize = $RasterData['code_size'] + 1; -// for ($i = 0; $i < pow(2, $RasterData['code_size']); $i++) { -// $DefaultDataLookupTable[$i] = chr($i); -// } -// $DefaultDataLookupTable[pow(2, $RasterData['code_size']) + 0] = ''; // Clear Code -// $DefaultDataLookupTable[pow(2, $RasterData['code_size']) + 1] = ''; // End Of Image Code -// -// -// $NextValue = $this->GetLSBits($CurrentCodeSize); -// echo 'Clear Code: '.$NextValue.'
    '; -// -// $NextValue = $this->GetLSBits($CurrentCodeSize); -// echo 'First Color: '.$NextValue.'
    '; -// -// $Prefix = $NextValue; -//$i = 0; -// while ($i++ < 20) { -// $NextValue = $this->GetLSBits($CurrentCodeSize); -// echo $NextValue.'
    '; -// } -//return true; -// break; -// -// case '!': -// // GIF Extension Block -// $ExtensionBlockData = $NextBlockTest.fread($this->getid3->fp, 2); -// $ExtensionBlock = array(); -// $ExtensionBlock['function_code'] = getid3_lib::LittleEndian2Int(substr($ExtensionBlockData, 1, 1)); -// $ExtensionBlock['byte_length'] = getid3_lib::LittleEndian2Int(substr($ExtensionBlockData, 2, 1)); -// $ExtensionBlock['data'] = fread($this->getid3->fp, $ExtensionBlock['byte_length']); -// $info['gif']['extension_blocks'][] = $ExtensionBlock; -// break; -// -// case ';': -// $info['gif']['terminator_offset'] = ftell($this->getid3->fp) - 1; -// // GIF Terminator -// break; -// -// default: -// break; -// -// -// } -// } - - return true; - } - - - function GetLSBits($bits) { - static $bitbuffer = ''; - while (strlen($bitbuffer) < $bits) { - $bitbuffer = str_pad(decbin(ord(fread($this->getid3->fp, 1))), 8, '0', STR_PAD_LEFT).$bitbuffer; - } - $value = bindec(substr($bitbuffer, 0 - $bits)); - $bitbuffer = substr($bitbuffer, 0, 0 - $bits); - - return $value; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.jpg.php b/3rdparty/getid3/module.graphic.jpg.php deleted file mode 100644 index 153ebcd0e6fad20e287a59e05c05a359c743233f..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.jpg.php +++ /dev/null @@ -1,338 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.graphic.jpg.php // -// module for analyzing JPEG Image files // -// dependencies: PHP compiled with --enable-exif (optional) // -// module.tag.xmp.php (optional) // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_jpg extends getid3_handler -{ - - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'jpg'; - $info['video']['dataformat'] = 'jpg'; - $info['video']['lossless'] = false; - $info['video']['bits_per_sample'] = 24; - $info['video']['pixel_aspect_ratio'] = (float) 1; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $imageinfo = array(); - list($width, $height, $type) = getid3_lib::GetDataImageSize(fread($this->getid3->fp, $info['filesize']), $imageinfo); - - - if (isset($imageinfo['APP13'])) { - // http://php.net/iptcparse - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/IPTC.html - $iptc_parsed = iptcparse($imageinfo['APP13']); - if (is_array($iptc_parsed)) { - foreach ($iptc_parsed as $iptc_key_raw => $iptc_values) { - list($iptc_record, $iptc_tagkey) = explode('#', $iptc_key_raw); - $iptc_tagkey = intval(ltrim($iptc_tagkey, '0')); - foreach ($iptc_values as $key => $value) { - $IPTCrecordName = $this->IPTCrecordName($iptc_record); - $IPTCrecordTagName = $this->IPTCrecordTagName($iptc_record, $iptc_tagkey); - if (isset($info['iptc'][$IPTCrecordName][$IPTCrecordTagName])) { - $info['iptc'][$IPTCrecordName][$IPTCrecordTagName][] = $value; - } else { - $info['iptc'][$IPTCrecordName][$IPTCrecordTagName] = array($value); - } - } - } - } - } - - $returnOK = false; - switch ($type) { - case IMG_JPG: - $info['video']['resolution_x'] = $width; - $info['video']['resolution_y'] = $height; - - if (isset($imageinfo['APP1'])) { - if (function_exists('exif_read_data')) { - if (substr($imageinfo['APP1'], 0, 4) == 'Exif') { - $info['jpg']['exif'] = @exif_read_data($info['filenamepath'], '', true, false); - } else { - $info['warning'][] = 'exif_read_data() cannot parse non-EXIF data in APP1 (expected "Exif", found "'.substr($imageinfo['APP1'], 0, 4).'")'; - } - } else { - $info['warning'][] = 'EXIF parsing only available when '.(GETID3_OS_ISWINDOWS ? 'php_exif.dll enabled' : 'compiled with --enable-exif'); - } - } - $returnOK = true; - break; - - default: - break; - } - - - $cast_as_appropriate_keys = array('EXIF', 'IFD0', 'THUMBNAIL'); - foreach ($cast_as_appropriate_keys as $exif_key) { - if (isset($info['jpg']['exif'][$exif_key])) { - foreach ($info['jpg']['exif'][$exif_key] as $key => $value) { - $info['jpg']['exif'][$exif_key][$key] = $this->CastAsAppropriate($value); - } - } - } - - - if (isset($info['jpg']['exif']['GPS'])) { - - if (isset($info['jpg']['exif']['GPS']['GPSVersion'])) { - for ($i = 0; $i < 4; $i++) { - $version_subparts[$i] = ord(substr($info['jpg']['exif']['GPS']['GPSVersion'], $i, 1)); - } - $info['jpg']['exif']['GPS']['computed']['version'] = 'v'.implode('.', $version_subparts); - } - - if (isset($info['jpg']['exif']['GPS']['GPSDateStamp'])) { - $explodedGPSDateStamp = explode(':', $info['jpg']['exif']['GPS']['GPSDateStamp']); - $computed_time[5] = (isset($explodedGPSDateStamp[0]) ? $explodedGPSDateStamp[0] : ''); - $computed_time[3] = (isset($explodedGPSDateStamp[1]) ? $explodedGPSDateStamp[1] : ''); - $computed_time[4] = (isset($explodedGPSDateStamp[2]) ? $explodedGPSDateStamp[2] : ''); - - if (function_exists('date_default_timezone_set')) { - date_default_timezone_set('UTC'); - } else { - ini_set('date.timezone', 'UTC'); - } - - $computed_time = array(0=>0, 1=>0, 2=>0, 3=>0, 4=>0, 5=>0); - if (isset($info['jpg']['exif']['GPS']['GPSTimeStamp']) && is_array($info['jpg']['exif']['GPS']['GPSTimeStamp'])) { - foreach ($info['jpg']['exif']['GPS']['GPSTimeStamp'] as $key => $value) { - $computed_time[$key] = getid3_lib::DecimalizeFraction($value); - } - } - $info['jpg']['exif']['GPS']['computed']['timestamp'] = mktime($computed_time[0], $computed_time[1], $computed_time[2], $computed_time[3], $computed_time[4], $computed_time[5]); - } - - if (isset($info['jpg']['exif']['GPS']['GPSLatitude']) && is_array($info['jpg']['exif']['GPS']['GPSLatitude'])) { - $direction_multiplier = ((isset($info['jpg']['exif']['GPS']['GPSLatitudeRef']) && ($info['jpg']['exif']['GPS']['GPSLatitudeRef'] == 'S')) ? -1 : 1); - foreach ($info['jpg']['exif']['GPS']['GPSLatitude'] as $key => $value) { - $computed_latitude[$key] = getid3_lib::DecimalizeFraction($value); - } - $info['jpg']['exif']['GPS']['computed']['latitude'] = $direction_multiplier * ($computed_latitude[0] + ($computed_latitude[1] / 60) + ($computed_latitude[2] / 3600)); - } - - if (isset($info['jpg']['exif']['GPS']['GPSLongitude']) && is_array($info['jpg']['exif']['GPS']['GPSLongitude'])) { - $direction_multiplier = ((isset($info['jpg']['exif']['GPS']['GPSLongitudeRef']) && ($info['jpg']['exif']['GPS']['GPSLongitudeRef'] == 'W')) ? -1 : 1); - foreach ($info['jpg']['exif']['GPS']['GPSLongitude'] as $key => $value) { - $computed_longitude[$key] = getid3_lib::DecimalizeFraction($value); - } - $info['jpg']['exif']['GPS']['computed']['longitude'] = $direction_multiplier * ($computed_longitude[0] + ($computed_longitude[1] / 60) + ($computed_longitude[2] / 3600)); - } - - if (isset($info['jpg']['exif']['GPS']['GPSAltitude'])) { - $direction_multiplier = ((isset($info['jpg']['exif']['GPS']['GPSAltitudeRef']) && ($info['jpg']['exif']['GPS']['GPSAltitudeRef'] === chr(1))) ? -1 : 1); - $info['jpg']['exif']['GPS']['computed']['altitude'] = $direction_multiplier * getid3_lib::DecimalizeFraction($info['jpg']['exif']['GPS']['GPSAltitude']); - } - - } - - - if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.xmp.php', __FILE__, false)) { - if (isset($info['filenamepath'])) { - $image_xmp = new Image_XMP($info['filenamepath']); - $xmp_raw = $image_xmp->getAllTags(); - foreach ($xmp_raw as $key => $value) { - list($subsection, $tagname) = explode(':', $key); - $info['xmp'][$subsection][$tagname] = $this->CastAsAppropriate($value); - } - } - } - - if (!$returnOK) { - unset($info['fileformat']); - return false; - } - return true; - } - - - function CastAsAppropriate($value) { - if (is_array($value)) { - return $value; - } elseif (preg_match('#^[0-9]+/[0-9]+$#', $value)) { - return getid3_lib::DecimalizeFraction($value); - } elseif (preg_match('#^[0-9]+$#', $value)) { - return getid3_lib::CastAsInt($value); - } elseif (preg_match('#^[0-9\.]+$#', $value)) { - return (float) $value; - } - return $value; - } - - - function IPTCrecordName($iptc_record) { - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/IPTC.html - static $IPTCrecordName = array(); - if (empty($IPTCrecordName)) { - $IPTCrecordName = array( - 1 => 'IPTCEnvelope', - 2 => 'IPTCApplication', - 3 => 'IPTCNewsPhoto', - 7 => 'IPTCPreObjectData', - 8 => 'IPTCObjectData', - 9 => 'IPTCPostObjectData', - ); - } - return (isset($IPTCrecordName[$iptc_record]) ? $IPTCrecordName[$iptc_record] : ''); - } - - - function IPTCrecordTagName($iptc_record, $iptc_tagkey) { - // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/IPTC.html - static $IPTCrecordTagName = array(); - if (empty($IPTCrecordTagName)) { - $IPTCrecordTagName = array( - 1 => array( // IPTC EnvelopeRecord Tags - 0 => 'EnvelopeRecordVersion', - 5 => 'Destination', - 20 => 'FileFormat', - 22 => 'FileVersion', - 30 => 'ServiceIdentifier', - 40 => 'EnvelopeNumber', - 50 => 'ProductID', - 60 => 'EnvelopePriority', - 70 => 'DateSent', - 80 => 'TimeSent', - 90 => 'CodedCharacterSet', - 100 => 'UniqueObjectName', - 120 => 'ARMIdentifier', - 122 => 'ARMVersion', - ), - 2 => array( // IPTC ApplicationRecord Tags - 0 => 'ApplicationRecordVersion', - 3 => 'ObjectTypeReference', - 4 => 'ObjectAttributeReference', - 5 => 'ObjectName', - 7 => 'EditStatus', - 8 => 'EditorialUpdate', - 10 => 'Urgency', - 12 => 'SubjectReference', - 15 => 'Category', - 20 => 'SupplementalCategories', - 22 => 'FixtureIdentifier', - 25 => 'Keywords', - 26 => 'ContentLocationCode', - 27 => 'ContentLocationName', - 30 => 'ReleaseDate', - 35 => 'ReleaseTime', - 37 => 'ExpirationDate', - 38 => 'ExpirationTime', - 40 => 'SpecialInstructions', - 42 => 'ActionAdvised', - 45 => 'ReferenceService', - 47 => 'ReferenceDate', - 50 => 'ReferenceNumber', - 55 => 'DateCreated', - 60 => 'TimeCreated', - 62 => 'DigitalCreationDate', - 63 => 'DigitalCreationTime', - 65 => 'OriginatingProgram', - 70 => 'ProgramVersion', - 75 => 'ObjectCycle', - 80 => 'By-line', - 85 => 'By-lineTitle', - 90 => 'City', - 92 => 'Sub-location', - 95 => 'Province-State', - 100 => 'Country-PrimaryLocationCode', - 101 => 'Country-PrimaryLocationName', - 103 => 'OriginalTransmissionReference', - 105 => 'Headline', - 110 => 'Credit', - 115 => 'Source', - 116 => 'CopyrightNotice', - 118 => 'Contact', - 120 => 'Caption-Abstract', - 121 => 'LocalCaption', - 122 => 'Writer-Editor', - 125 => 'RasterizedCaption', - 130 => 'ImageType', - 131 => 'ImageOrientation', - 135 => 'LanguageIdentifier', - 150 => 'AudioType', - 151 => 'AudioSamplingRate', - 152 => 'AudioSamplingResolution', - 153 => 'AudioDuration', - 154 => 'AudioOutcue', - 184 => 'JobID', - 185 => 'MasterDocumentID', - 186 => 'ShortDocumentID', - 187 => 'UniqueDocumentID', - 188 => 'OwnerID', - 200 => 'ObjectPreviewFileFormat', - 201 => 'ObjectPreviewFileVersion', - 202 => 'ObjectPreviewData', - 221 => 'Prefs', - 225 => 'ClassifyState', - 228 => 'SimilarityIndex', - 230 => 'DocumentNotes', - 231 => 'DocumentHistory', - 232 => 'ExifCameraInfo', - ), - 3 => array( // IPTC NewsPhoto Tags - 0 => 'NewsPhotoVersion', - 10 => 'IPTCPictureNumber', - 20 => 'IPTCImageWidth', - 30 => 'IPTCImageHeight', - 40 => 'IPTCPixelWidth', - 50 => 'IPTCPixelHeight', - 55 => 'SupplementalType', - 60 => 'ColorRepresentation', - 64 => 'InterchangeColorSpace', - 65 => 'ColorSequence', - 66 => 'ICC_Profile', - 70 => 'ColorCalibrationMatrix', - 80 => 'LookupTable', - 84 => 'NumIndexEntries', - 85 => 'ColorPalette', - 86 => 'IPTCBitsPerSample', - 90 => 'SampleStructure', - 100 => 'ScanningDirection', - 102 => 'IPTCImageRotation', - 110 => 'DataCompressionMethod', - 120 => 'QuantizationMethod', - 125 => 'EndPoints', - 130 => 'ExcursionTolerance', - 135 => 'BitsPerComponent', - 140 => 'MaximumDensityRange', - 145 => 'GammaCompensatedValue', - ), - 7 => array( // IPTC PreObjectData Tags - 10 => 'SizeMode', - 20 => 'MaxSubfileSize', - 90 => 'ObjectSizeAnnounced', - 95 => 'MaximumObjectSize', - ), - 8 => array( // IPTC ObjectData Tags - 10 => 'SubFile', - ), - 9 => array( // IPTC PostObjectData Tags - 10 => 'ConfirmedObjectSize', - ), - ); - - } - return (isset($IPTCrecordTagName[$iptc_record][$iptc_tagkey]) ? $IPTCrecordTagName[$iptc_record][$iptc_tagkey] : $iptc_tagkey); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.pcd.php b/3rdparty/getid3/module.graphic.pcd.php deleted file mode 100644 index dcbc6763630da5c835704907b187134c288f1daa..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.pcd.php +++ /dev/null @@ -1,134 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.graphic.pcd.php // -// module for analyzing PhotoCD (PCD) Image files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_pcd extends getid3_handler -{ - var $ExtractData = 0; - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'pcd'; - $info['video']['dataformat'] = 'pcd'; - $info['video']['lossless'] = false; - - - fseek($this->getid3->fp, $info['avdataoffset'] + 72, SEEK_SET); - - $PCDflags = fread($this->getid3->fp, 1); - $PCDisVertical = ((ord($PCDflags) & 0x01) ? true : false); - - - if ($PCDisVertical) { - $info['video']['resolution_x'] = 3072; - $info['video']['resolution_y'] = 2048; - } else { - $info['video']['resolution_x'] = 2048; - $info['video']['resolution_y'] = 3072; - } - - - if ($this->ExtractData > 3) { - - $info['error'][] = 'Cannot extract PSD image data for detail levels above BASE (level-3) because encrypted with Kodak-proprietary compression/encryption.'; - - } elseif ($this->ExtractData > 0) { - - $PCD_levels[1] = array( 192, 128, 0x02000); // BASE/16 - $PCD_levels[2] = array( 384, 256, 0x0B800); // BASE/4 - $PCD_levels[3] = array( 768, 512, 0x30000); // BASE - //$PCD_levels[4] = array(1536, 1024, ??); // BASE*4 - encrypted with Kodak-proprietary compression/encryption - //$PCD_levels[5] = array(3072, 2048, ??); // BASE*16 - encrypted with Kodak-proprietary compression/encryption - //$PCD_levels[6] = array(6144, 4096, ??); // BASE*64 - encrypted with Kodak-proprietary compression/encryption; PhotoCD-Pro only - - list($PCD_width, $PCD_height, $PCD_dataOffset) = $PCD_levels[3]; - - fseek($this->getid3->fp, $info['avdataoffset'] + $PCD_dataOffset, SEEK_SET); - - for ($y = 0; $y < $PCD_height; $y += 2) { - // The image-data of these subtypes start at the respective offsets of 02000h, 0b800h and 30000h. - // To decode the YcbYr to the more usual RGB-code, three lines of data have to be read, each - // consisting of ‘w’ bytes, where ‘w’ is the width of the image-subtype. The first ‘w’ bytes and - // the first half of the third ‘w’ bytes contain data for the first RGB-line, the second ‘w’ bytes - // and the second half of the third ‘w’ bytes contain data for a second RGB-line. - - $PCD_data_Y1 = fread($this->getid3->fp, $PCD_width); - $PCD_data_Y2 = fread($this->getid3->fp, $PCD_width); - $PCD_data_Cb = fread($this->getid3->fp, intval(round($PCD_width / 2))); - $PCD_data_Cr = fread($this->getid3->fp, intval(round($PCD_width / 2))); - - for ($x = 0; $x < $PCD_width; $x++) { - if ($PCDisVertical) { - $info['pcd']['data'][$PCD_width - $x][$y] = $this->YCbCr2RGB(ord($PCD_data_Y1{$x}), ord($PCD_data_Cb{floor($x / 2)}), ord($PCD_data_Cr{floor($x / 2)})); - $info['pcd']['data'][$PCD_width - $x][$y + 1] = $this->YCbCr2RGB(ord($PCD_data_Y2{$x}), ord($PCD_data_Cb{floor($x / 2)}), ord($PCD_data_Cr{floor($x / 2)})); - } else { - $info['pcd']['data'][$y][$x] = $this->YCbCr2RGB(ord($PCD_data_Y1{$x}), ord($PCD_data_Cb{floor($x / 2)}), ord($PCD_data_Cr{floor($x / 2)})); - $info['pcd']['data'][$y + 1][$x] = $this->YCbCr2RGB(ord($PCD_data_Y2{$x}), ord($PCD_data_Cb{floor($x / 2)}), ord($PCD_data_Cr{floor($x / 2)})); - } - } - } - - // Example for plotting extracted data - //getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ac3.php', __FILE__, true); - //if ($PCDisVertical) { - // $BMPinfo['resolution_x'] = $PCD_height; - // $BMPinfo['resolution_y'] = $PCD_width; - //} else { - // $BMPinfo['resolution_x'] = $PCD_width; - // $BMPinfo['resolution_y'] = $PCD_height; - //} - //$BMPinfo['bmp']['data'] = $info['pcd']['data']; - //getid3_bmp::PlotBMP($BMPinfo); - //exit; - - } - - } - - function YCbCr2RGB($Y, $Cb, $Cr) { - static $YCbCr_constants = array(); - if (empty($YCbCr_constants)) { - $YCbCr_constants['red']['Y'] = 0.0054980 * 256; - $YCbCr_constants['red']['Cb'] = 0.0000000 * 256; - $YCbCr_constants['red']['Cr'] = 0.0051681 * 256; - $YCbCr_constants['green']['Y'] = 0.0054980 * 256; - $YCbCr_constants['green']['Cb'] = -0.0015446 * 256; - $YCbCr_constants['green']['Cr'] = -0.0026325 * 256; - $YCbCr_constants['blue']['Y'] = 0.0054980 * 256; - $YCbCr_constants['blue']['Cb'] = 0.0079533 * 256; - $YCbCr_constants['blue']['Cr'] = 0.0000000 * 256; - } - - $RGBcolor = array('red'=>0, 'green'=>0, 'blue'=>0); - foreach ($RGBcolor as $rgbname => $dummy) { - $RGBcolor[$rgbname] = max(0, - min(255, - intval( - round( - ($YCbCr_constants[$rgbname]['Y'] * $Y) + - ($YCbCr_constants[$rgbname]['Cb'] * ($Cb - 156)) + - ($YCbCr_constants[$rgbname]['Cr'] * ($Cr - 137)) - ) - ) - ) - ); - } - return (($RGBcolor['red'] * 65536) + ($RGBcolor['green'] * 256) + $RGBcolor['blue']); - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.png.php b/3rdparty/getid3/module.graphic.png.php deleted file mode 100644 index 9109c43689cdb6d3648961ba6b33d99f9b36e109..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.png.php +++ /dev/null @@ -1,520 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.graphic.png.php // -// module for analyzing PNG Image files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_png extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - // shortcut - $info['png'] = array(); - $thisfile_png = &$info['png']; - - $info['fileformat'] = 'png'; - $info['video']['dataformat'] = 'png'; - $info['video']['lossless'] = false; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $PNGfiledata = fread($this->getid3->fp, $this->getid3->fread_buffer_size()); - $offset = 0; - - $PNGidentifier = substr($PNGfiledata, $offset, 8); // $89 $50 $4E $47 $0D $0A $1A $0A - $offset += 8; - - if ($PNGidentifier != "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") { - $info['error'][] = 'First 8 bytes of file ('.getid3_lib::PrintHexBytes($PNGidentifier).') did not match expected PNG identifier'; - unset($info['fileformat']); - return false; - } - - while (((ftell($this->getid3->fp) - (strlen($PNGfiledata) - $offset)) < $info['filesize'])) { - $chunk['data_length'] = getid3_lib::BigEndian2Int(substr($PNGfiledata, $offset, 4)); - $offset += 4; - while (((strlen($PNGfiledata) - $offset) < ($chunk['data_length'] + 4)) && (ftell($this->getid3->fp) < $info['filesize'])) { - $PNGfiledata .= fread($this->getid3->fp, $this->getid3->fread_buffer_size()); - } - $chunk['type_text'] = substr($PNGfiledata, $offset, 4); - $offset += 4; - $chunk['type_raw'] = getid3_lib::BigEndian2Int($chunk['type_text']); - $chunk['data'] = substr($PNGfiledata, $offset, $chunk['data_length']); - $offset += $chunk['data_length']; - $chunk['crc'] = getid3_lib::BigEndian2Int(substr($PNGfiledata, $offset, 4)); - $offset += 4; - - $chunk['flags']['ancilliary'] = (bool) ($chunk['type_raw'] & 0x20000000); - $chunk['flags']['private'] = (bool) ($chunk['type_raw'] & 0x00200000); - $chunk['flags']['reserved'] = (bool) ($chunk['type_raw'] & 0x00002000); - $chunk['flags']['safe_to_copy'] = (bool) ($chunk['type_raw'] & 0x00000020); - - // shortcut - $thisfile_png[$chunk['type_text']] = array(); - $thisfile_png_chunk_type_text = &$thisfile_png[$chunk['type_text']]; - - switch ($chunk['type_text']) { - - case 'IHDR': // Image Header - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['width'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 4)); - $thisfile_png_chunk_type_text['height'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 4, 4)); - $thisfile_png_chunk_type_text['raw']['bit_depth'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 8, 1)); - $thisfile_png_chunk_type_text['raw']['color_type'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 9, 1)); - $thisfile_png_chunk_type_text['raw']['compression_method'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 10, 1)); - $thisfile_png_chunk_type_text['raw']['filter_method'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 11, 1)); - $thisfile_png_chunk_type_text['raw']['interlace_method'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 12, 1)); - - $thisfile_png_chunk_type_text['compression_method_text'] = $this->PNGcompressionMethodLookup($thisfile_png_chunk_type_text['raw']['compression_method']); - $thisfile_png_chunk_type_text['color_type']['palette'] = (bool) ($thisfile_png_chunk_type_text['raw']['color_type'] & 0x01); - $thisfile_png_chunk_type_text['color_type']['true_color'] = (bool) ($thisfile_png_chunk_type_text['raw']['color_type'] & 0x02); - $thisfile_png_chunk_type_text['color_type']['alpha'] = (bool) ($thisfile_png_chunk_type_text['raw']['color_type'] & 0x04); - - $info['video']['resolution_x'] = $thisfile_png_chunk_type_text['width']; - $info['video']['resolution_y'] = $thisfile_png_chunk_type_text['height']; - - $info['video']['bits_per_sample'] = $this->IHDRcalculateBitsPerSample($thisfile_png_chunk_type_text['raw']['color_type'], $thisfile_png_chunk_type_text['raw']['bit_depth']); - break; - - - case 'PLTE': // Palette - $thisfile_png_chunk_type_text['header'] = $chunk; - $paletteoffset = 0; - for ($i = 0; $i <= 255; $i++) { - //$thisfile_png_chunk_type_text['red'][$i] = getid3_lib::BigEndian2Int(substr($chunk['data'], $paletteoffset++, 1)); - //$thisfile_png_chunk_type_text['green'][$i] = getid3_lib::BigEndian2Int(substr($chunk['data'], $paletteoffset++, 1)); - //$thisfile_png_chunk_type_text['blue'][$i] = getid3_lib::BigEndian2Int(substr($chunk['data'], $paletteoffset++, 1)); - $red = getid3_lib::BigEndian2Int(substr($chunk['data'], $paletteoffset++, 1)); - $green = getid3_lib::BigEndian2Int(substr($chunk['data'], $paletteoffset++, 1)); - $blue = getid3_lib::BigEndian2Int(substr($chunk['data'], $paletteoffset++, 1)); - $thisfile_png_chunk_type_text[$i] = (($red << 16) | ($green << 8) | ($blue)); - } - break; - - - case 'tRNS': // Transparency - $thisfile_png_chunk_type_text['header'] = $chunk; - switch ($thisfile_png['IHDR']['raw']['color_type']) { - case 0: - $thisfile_png_chunk_type_text['transparent_color_gray'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 2)); - break; - - case 2: - $thisfile_png_chunk_type_text['transparent_color_red'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 2)); - $thisfile_png_chunk_type_text['transparent_color_green'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 2, 2)); - $thisfile_png_chunk_type_text['transparent_color_blue'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 4, 2)); - break; - - case 3: - for ($i = 0; $i < strlen($chunk['data']); $i++) { - $thisfile_png_chunk_type_text['palette_opacity'][$i] = getid3_lib::BigEndian2Int(substr($chunk['data'], $i, 1)); - } - break; - - case 4: - case 6: - $info['error'][] = 'Invalid color_type in tRNS chunk: '.$thisfile_png['IHDR']['raw']['color_type']; - - default: - $info['warning'][] = 'Unhandled color_type in tRNS chunk: '.$thisfile_png['IHDR']['raw']['color_type']; - break; - } - break; - - - case 'gAMA': // Image Gamma - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['gamma'] = getid3_lib::BigEndian2Int($chunk['data']) / 100000; - break; - - - case 'cHRM': // Primary Chromaticities - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['white_x'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 4)) / 100000; - $thisfile_png_chunk_type_text['white_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 4, 4)) / 100000; - $thisfile_png_chunk_type_text['red_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 8, 4)) / 100000; - $thisfile_png_chunk_type_text['red_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 12, 4)) / 100000; - $thisfile_png_chunk_type_text['green_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 16, 4)) / 100000; - $thisfile_png_chunk_type_text['green_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 20, 4)) / 100000; - $thisfile_png_chunk_type_text['blue_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 24, 4)) / 100000; - $thisfile_png_chunk_type_text['blue_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 28, 4)) / 100000; - break; - - - case 'sRGB': // Standard RGB Color Space - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['reindering_intent'] = getid3_lib::BigEndian2Int($chunk['data']); - $thisfile_png_chunk_type_text['reindering_intent_text'] = $this->PNGsRGBintentLookup($thisfile_png_chunk_type_text['reindering_intent']); - break; - - - case 'iCCP': // Embedded ICC Profile - $thisfile_png_chunk_type_text['header'] = $chunk; - list($profilename, $compressiondata) = explode("\x00", $chunk['data'], 2); - $thisfile_png_chunk_type_text['profile_name'] = $profilename; - $thisfile_png_chunk_type_text['compression_method'] = getid3_lib::BigEndian2Int(substr($compressiondata, 0, 1)); - $thisfile_png_chunk_type_text['compression_profile'] = substr($compressiondata, 1); - - $thisfile_png_chunk_type_text['compression_method_text'] = $this->PNGcompressionMethodLookup($thisfile_png_chunk_type_text['compression_method']); - break; - - - case 'tEXt': // Textual Data - $thisfile_png_chunk_type_text['header'] = $chunk; - list($keyword, $text) = explode("\x00", $chunk['data'], 2); - $thisfile_png_chunk_type_text['keyword'] = $keyword; - $thisfile_png_chunk_type_text['text'] = $text; - - $thisfile_png['comments'][$thisfile_png_chunk_type_text['keyword']][] = $thisfile_png_chunk_type_text['text']; - break; - - - case 'zTXt': // Compressed Textual Data - $thisfile_png_chunk_type_text['header'] = $chunk; - list($keyword, $otherdata) = explode("\x00", $chunk['data'], 2); - $thisfile_png_chunk_type_text['keyword'] = $keyword; - $thisfile_png_chunk_type_text['compression_method'] = getid3_lib::BigEndian2Int(substr($otherdata, 0, 1)); - $thisfile_png_chunk_type_text['compressed_text'] = substr($otherdata, 1); - $thisfile_png_chunk_type_text['compression_method_text'] = $this->PNGcompressionMethodLookup($thisfile_png_chunk_type_text['compression_method']); - switch ($thisfile_png_chunk_type_text['compression_method']) { - case 0: - $thisfile_png_chunk_type_text['text'] = gzuncompress($thisfile_png_chunk_type_text['compressed_text']); - break; - - default: - // unknown compression method - break; - } - - if (isset($thisfile_png_chunk_type_text['text'])) { - $thisfile_png['comments'][$thisfile_png_chunk_type_text['keyword']][] = $thisfile_png_chunk_type_text['text']; - } - break; - - - case 'iTXt': // International Textual Data - $thisfile_png_chunk_type_text['header'] = $chunk; - list($keyword, $otherdata) = explode("\x00", $chunk['data'], 2); - $thisfile_png_chunk_type_text['keyword'] = $keyword; - $thisfile_png_chunk_type_text['compression'] = (bool) getid3_lib::BigEndian2Int(substr($otherdata, 0, 1)); - $thisfile_png_chunk_type_text['compression_method'] = getid3_lib::BigEndian2Int(substr($otherdata, 1, 1)); - $thisfile_png_chunk_type_text['compression_method_text'] = $this->PNGcompressionMethodLookup($thisfile_png_chunk_type_text['compression_method']); - list($languagetag, $translatedkeyword, $text) = explode("\x00", substr($otherdata, 2), 3); - $thisfile_png_chunk_type_text['language_tag'] = $languagetag; - $thisfile_png_chunk_type_text['translated_keyword'] = $translatedkeyword; - - if ($thisfile_png_chunk_type_text['compression']) { - - switch ($thisfile_png_chunk_type_text['compression_method']) { - case 0: - $thisfile_png_chunk_type_text['text'] = gzuncompress($text); - break; - - default: - // unknown compression method - break; - } - - } else { - - $thisfile_png_chunk_type_text['text'] = $text; - - } - - if (isset($thisfile_png_chunk_type_text['text'])) { - $thisfile_png['comments'][$thisfile_png_chunk_type_text['keyword']][] = $thisfile_png_chunk_type_text['text']; - } - break; - - - case 'bKGD': // Background Color - $thisfile_png_chunk_type_text['header'] = $chunk; - switch ($thisfile_png['IHDR']['raw']['color_type']) { - case 0: - case 4: - $thisfile_png_chunk_type_text['background_gray'] = getid3_lib::BigEndian2Int($chunk['data']); - break; - - case 2: - case 6: - $thisfile_png_chunk_type_text['background_red'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0 * $thisfile_png['IHDR']['raw']['bit_depth'], $thisfile_png['IHDR']['raw']['bit_depth'])); - $thisfile_png_chunk_type_text['background_green'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 1 * $thisfile_png['IHDR']['raw']['bit_depth'], $thisfile_png['IHDR']['raw']['bit_depth'])); - $thisfile_png_chunk_type_text['background_blue'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 2 * $thisfile_png['IHDR']['raw']['bit_depth'], $thisfile_png['IHDR']['raw']['bit_depth'])); - break; - - case 3: - $thisfile_png_chunk_type_text['background_index'] = getid3_lib::BigEndian2Int($chunk['data']); - break; - - default: - break; - } - break; - - - case 'pHYs': // Physical Pixel Dimensions - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['pixels_per_unit_x'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 4)); - $thisfile_png_chunk_type_text['pixels_per_unit_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 4, 4)); - $thisfile_png_chunk_type_text['unit_specifier'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 8, 1)); - $thisfile_png_chunk_type_text['unit'] = $this->PNGpHYsUnitLookup($thisfile_png_chunk_type_text['unit_specifier']); - break; - - - case 'sBIT': // Significant Bits - $thisfile_png_chunk_type_text['header'] = $chunk; - switch ($thisfile_png['IHDR']['raw']['color_type']) { - case 0: - $thisfile_png_chunk_type_text['significant_bits_gray'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 1)); - break; - - case 2: - case 3: - $thisfile_png_chunk_type_text['significant_bits_red'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 1)); - $thisfile_png_chunk_type_text['significant_bits_green'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 1, 1)); - $thisfile_png_chunk_type_text['significant_bits_blue'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 2, 1)); - break; - - case 4: - $thisfile_png_chunk_type_text['significant_bits_gray'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 1)); - $thisfile_png_chunk_type_text['significant_bits_alpha'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 1, 1)); - break; - - case 6: - $thisfile_png_chunk_type_text['significant_bits_red'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 1)); - $thisfile_png_chunk_type_text['significant_bits_green'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 1, 1)); - $thisfile_png_chunk_type_text['significant_bits_blue'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 2, 1)); - $thisfile_png_chunk_type_text['significant_bits_alpha'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 3, 1)); - break; - - default: - break; - } - break; - - - case 'sPLT': // Suggested Palette - $thisfile_png_chunk_type_text['header'] = $chunk; - list($palettename, $otherdata) = explode("\x00", $chunk['data'], 2); - $thisfile_png_chunk_type_text['palette_name'] = $palettename; - $sPLToffset = 0; - $thisfile_png_chunk_type_text['sample_depth_bits'] = getid3_lib::BigEndian2Int(substr($otherdata, $sPLToffset, 1)); - $sPLToffset += 1; - $thisfile_png_chunk_type_text['sample_depth_bytes'] = $thisfile_png_chunk_type_text['sample_depth_bits'] / 8; - $paletteCounter = 0; - while ($sPLToffset < strlen($otherdata)) { - $thisfile_png_chunk_type_text['red'][$paletteCounter] = getid3_lib::BigEndian2Int(substr($otherdata, $sPLToffset, $thisfile_png_chunk_type_text['sample_depth_bytes'])); - $sPLToffset += $thisfile_png_chunk_type_text['sample_depth_bytes']; - $thisfile_png_chunk_type_text['green'][$paletteCounter] = getid3_lib::BigEndian2Int(substr($otherdata, $sPLToffset, $thisfile_png_chunk_type_text['sample_depth_bytes'])); - $sPLToffset += $thisfile_png_chunk_type_text['sample_depth_bytes']; - $thisfile_png_chunk_type_text['blue'][$paletteCounter] = getid3_lib::BigEndian2Int(substr($otherdata, $sPLToffset, $thisfile_png_chunk_type_text['sample_depth_bytes'])); - $sPLToffset += $thisfile_png_chunk_type_text['sample_depth_bytes']; - $thisfile_png_chunk_type_text['alpha'][$paletteCounter] = getid3_lib::BigEndian2Int(substr($otherdata, $sPLToffset, $thisfile_png_chunk_type_text['sample_depth_bytes'])); - $sPLToffset += $thisfile_png_chunk_type_text['sample_depth_bytes']; - $thisfile_png_chunk_type_text['frequency'][$paletteCounter] = getid3_lib::BigEndian2Int(substr($otherdata, $sPLToffset, 2)); - $sPLToffset += 2; - $paletteCounter++; - } - break; - - - case 'hIST': // Palette Histogram - $thisfile_png_chunk_type_text['header'] = $chunk; - $hISTcounter = 0; - while ($hISTcounter < strlen($chunk['data'])) { - $thisfile_png_chunk_type_text[$hISTcounter] = getid3_lib::BigEndian2Int(substr($chunk['data'], $hISTcounter / 2, 2)); - $hISTcounter += 2; - } - break; - - - case 'tIME': // Image Last-Modification Time - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['year'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 2)); - $thisfile_png_chunk_type_text['month'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 2, 1)); - $thisfile_png_chunk_type_text['day'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 3, 1)); - $thisfile_png_chunk_type_text['hour'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 4, 1)); - $thisfile_png_chunk_type_text['minute'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 5, 1)); - $thisfile_png_chunk_type_text['second'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 6, 1)); - $thisfile_png_chunk_type_text['unix'] = gmmktime($thisfile_png_chunk_type_text['hour'], $thisfile_png_chunk_type_text['minute'], $thisfile_png_chunk_type_text['second'], $thisfile_png_chunk_type_text['month'], $thisfile_png_chunk_type_text['day'], $thisfile_png_chunk_type_text['year']); - break; - - - case 'oFFs': // Image Offset - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['position_x'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 4), false, true); - $thisfile_png_chunk_type_text['position_y'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 4, 4), false, true); - $thisfile_png_chunk_type_text['unit_specifier'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 8, 1)); - $thisfile_png_chunk_type_text['unit'] = $this->PNGoFFsUnitLookup($thisfile_png_chunk_type_text['unit_specifier']); - break; - - - case 'pCAL': // Calibration Of Pixel Values - $thisfile_png_chunk_type_text['header'] = $chunk; - list($calibrationname, $otherdata) = explode("\x00", $chunk['data'], 2); - $thisfile_png_chunk_type_text['calibration_name'] = $calibrationname; - $pCALoffset = 0; - $thisfile_png_chunk_type_text['original_zero'] = getid3_lib::BigEndian2Int(substr($chunk['data'], $pCALoffset, 4), false, true); - $pCALoffset += 4; - $thisfile_png_chunk_type_text['original_max'] = getid3_lib::BigEndian2Int(substr($chunk['data'], $pCALoffset, 4), false, true); - $pCALoffset += 4; - $thisfile_png_chunk_type_text['equation_type'] = getid3_lib::BigEndian2Int(substr($chunk['data'], $pCALoffset, 1)); - $pCALoffset += 1; - $thisfile_png_chunk_type_text['equation_type_text'] = $this->PNGpCALequationTypeLookup($thisfile_png_chunk_type_text['equation_type']); - $thisfile_png_chunk_type_text['parameter_count'] = getid3_lib::BigEndian2Int(substr($chunk['data'], $pCALoffset, 1)); - $pCALoffset += 1; - $thisfile_png_chunk_type_text['parameters'] = explode("\x00", substr($chunk['data'], $pCALoffset)); - break; - - - case 'sCAL': // Physical Scale Of Image Subject - $thisfile_png_chunk_type_text['header'] = $chunk; - $thisfile_png_chunk_type_text['unit_specifier'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 1)); - $thisfile_png_chunk_type_text['unit'] = $this->PNGsCALUnitLookup($thisfile_png_chunk_type_text['unit_specifier']); - list($pixelwidth, $pixelheight) = explode("\x00", substr($chunk['data'], 1)); - $thisfile_png_chunk_type_text['pixel_width'] = $pixelwidth; - $thisfile_png_chunk_type_text['pixel_height'] = $pixelheight; - break; - - - case 'gIFg': // GIF Graphic Control Extension - $gIFgCounter = 0; - if (isset($thisfile_png_chunk_type_text) && is_array($thisfile_png_chunk_type_text)) { - $gIFgCounter = count($thisfile_png_chunk_type_text); - } - $thisfile_png_chunk_type_text[$gIFgCounter]['header'] = $chunk; - $thisfile_png_chunk_type_text[$gIFgCounter]['disposal_method'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 0, 1)); - $thisfile_png_chunk_type_text[$gIFgCounter]['user_input_flag'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 1, 1)); - $thisfile_png_chunk_type_text[$gIFgCounter]['delay_time'] = getid3_lib::BigEndian2Int(substr($chunk['data'], 2, 2)); - break; - - - case 'gIFx': // GIF Application Extension - $gIFxCounter = 0; - if (isset($thisfile_png_chunk_type_text) && is_array($thisfile_png_chunk_type_text)) { - $gIFxCounter = count($thisfile_png_chunk_type_text); - } - $thisfile_png_chunk_type_text[$gIFxCounter]['header'] = $chunk; - $thisfile_png_chunk_type_text[$gIFxCounter]['application_identifier'] = substr($chunk['data'], 0, 8); - $thisfile_png_chunk_type_text[$gIFxCounter]['authentication_code'] = substr($chunk['data'], 8, 3); - $thisfile_png_chunk_type_text[$gIFxCounter]['application_data'] = substr($chunk['data'], 11); - break; - - - case 'IDAT': // Image Data - $idatinformationfieldindex = 0; - if (isset($thisfile_png['IDAT']) && is_array($thisfile_png['IDAT'])) { - $idatinformationfieldindex = count($thisfile_png['IDAT']); - } - unset($chunk['data']); - $thisfile_png_chunk_type_text[$idatinformationfieldindex]['header'] = $chunk; - break; - - - case 'IEND': // Image Trailer - $thisfile_png_chunk_type_text['header'] = $chunk; - break; - - - default: - //unset($chunk['data']); - $thisfile_png_chunk_type_text['header'] = $chunk; - $info['warning'][] = 'Unhandled chunk type: '.$chunk['type_text']; - break; - } - } - - return true; - } - - function PNGsRGBintentLookup($sRGB) { - static $PNGsRGBintentLookup = array( - 0 => 'Perceptual', - 1 => 'Relative colorimetric', - 2 => 'Saturation', - 3 => 'Absolute colorimetric' - ); - return (isset($PNGsRGBintentLookup[$sRGB]) ? $PNGsRGBintentLookup[$sRGB] : 'invalid'); - } - - function PNGcompressionMethodLookup($compressionmethod) { - static $PNGcompressionMethodLookup = array( - 0 => 'deflate/inflate' - ); - return (isset($PNGcompressionMethodLookup[$compressionmethod]) ? $PNGcompressionMethodLookup[$compressionmethod] : 'invalid'); - } - - function PNGpHYsUnitLookup($unitid) { - static $PNGpHYsUnitLookup = array( - 0 => 'unknown', - 1 => 'meter' - ); - return (isset($PNGpHYsUnitLookup[$unitid]) ? $PNGpHYsUnitLookup[$unitid] : 'invalid'); - } - - function PNGoFFsUnitLookup($unitid) { - static $PNGoFFsUnitLookup = array( - 0 => 'pixel', - 1 => 'micrometer' - ); - return (isset($PNGoFFsUnitLookup[$unitid]) ? $PNGoFFsUnitLookup[$unitid] : 'invalid'); - } - - function PNGpCALequationTypeLookup($equationtype) { - static $PNGpCALequationTypeLookup = array( - 0 => 'Linear mapping', - 1 => 'Base-e exponential mapping', - 2 => 'Arbitrary-base exponential mapping', - 3 => 'Hyperbolic mapping' - ); - return (isset($PNGpCALequationTypeLookup[$equationtype]) ? $PNGpCALequationTypeLookup[$equationtype] : 'invalid'); - } - - function PNGsCALUnitLookup($unitid) { - static $PNGsCALUnitLookup = array( - 0 => 'meter', - 1 => 'radian' - ); - return (isset($PNGsCALUnitLookup[$unitid]) ? $PNGsCALUnitLookup[$unitid] : 'invalid'); - } - - function IHDRcalculateBitsPerSample($color_type, $bit_depth) { - switch ($color_type) { - case 0: // Each pixel is a grayscale sample. - return $bit_depth; - break; - - case 2: // Each pixel is an R,G,B triple - return 3 * $bit_depth; - break; - - case 3: // Each pixel is a palette index; a PLTE chunk must appear. - return $bit_depth; - break; - - case 4: // Each pixel is a grayscale sample, followed by an alpha sample. - return 2 * $bit_depth; - break; - - case 6: // Each pixel is an R,G,B triple, followed by an alpha sample. - return 4 * $bit_depth; - break; - } - return false; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.svg.php b/3rdparty/getid3/module.graphic.svg.php deleted file mode 100644 index d9d52d74d01a459e34ae898cddf28f0aa35416a1..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.svg.php +++ /dev/null @@ -1,104 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.graphic.svg.php // -// module for analyzing SVG Image files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_svg extends getid3_handler -{ - - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - - $SVGheader = fread($this->getid3->fp, 4096); - if (preg_match('#\<\?xml([^\>]+)\?\>#i', $SVGheader, $matches)) { - $info['svg']['xml']['raw'] = $matches; - } - if (preg_match('#\<\!DOCTYPE([^\>]+)\>#i', $SVGheader, $matches)) { - $info['svg']['doctype']['raw'] = $matches; - } - if (preg_match('#\]+)\>#i', $SVGheader, $matches)) { - $info['svg']['svg']['raw'] = $matches; - } - if (isset($info['svg']['svg']['raw'])) { - - $sections_to_fix = array('xml', 'doctype', 'svg'); - foreach ($sections_to_fix as $section_to_fix) { - if (!isset($info['svg'][$section_to_fix])) { - continue; - } - $section_data = array(); - while (preg_match('/ "([^"]+)"/', $info['svg'][$section_to_fix]['raw'][1], $matches)) { - $section_data[] = $matches[1]; - $info['svg'][$section_to_fix]['raw'][1] = str_replace($matches[0], '', $info['svg'][$section_to_fix]['raw'][1]); - } - while (preg_match('/([^\s]+)="([^"]+)"/', $info['svg'][$section_to_fix]['raw'][1], $matches)) { - $section_data[] = $matches[0]; - $info['svg'][$section_to_fix]['raw'][1] = str_replace($matches[0], '', $info['svg'][$section_to_fix]['raw'][1]); - } - $section_data = array_merge($section_data, preg_split('/[\s,]+/', $info['svg'][$section_to_fix]['raw'][1])); - foreach ($section_data as $keyvaluepair) { - $keyvaluepair = trim($keyvaluepair); - if ($keyvaluepair) { - $keyvalueexploded = explode('=', $keyvaluepair); - $key = (isset($keyvalueexploded[0]) ? $keyvalueexploded[0] : ''); - $value = (isset($keyvalueexploded[1]) ? $keyvalueexploded[1] : ''); - $info['svg'][$section_to_fix]['sections'][$key] = trim($value, '"'); - } - } - } - - $info['fileformat'] = 'svg'; - $info['video']['dataformat'] = 'svg'; - $info['video']['lossless'] = true; - //$info['video']['bits_per_sample'] = 24; - $info['video']['pixel_aspect_ratio'] = (float) 1; - - if (!empty($info['svg']['svg']['sections']['width'])) { - $info['svg']['width'] = intval($info['svg']['svg']['sections']['width']); - } - if (!empty($info['svg']['svg']['sections']['height'])) { - $info['svg']['height'] = intval($info['svg']['svg']['sections']['height']); - } - if (!empty($info['svg']['svg']['sections']['version'])) { - $info['svg']['version'] = $info['svg']['svg']['sections']['version']; - } - if (!isset($info['svg']['version']) && isset($info['svg']['doctype']['sections'])) { - foreach ($info['svg']['doctype']['sections'] as $key => $value) { - if (preg_match('#//W3C//DTD SVG ([0-9\.]+)//#i', $key, $matches)) { - $info['svg']['version'] = $matches[1]; - break; - } - } - } - - if (!empty($info['svg']['width'])) { - $info['video']['resolution_x'] = $info['svg']['width']; - } - if (!empty($info['svg']['height'])) { - $info['video']['resolution_y'] = $info['svg']['height']; - } - - return true; - } - $info['error'][] = 'Did not find expected tag'; - return false; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.graphic.tiff.php b/3rdparty/getid3/module.graphic.tiff.php deleted file mode 100644 index e977124216ab52128bbc0bc3470aadc75a46128e..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.graphic.tiff.php +++ /dev/null @@ -1,227 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.tiff.php // -// module for analyzing TIFF files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_tiff extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $TIFFheader = fread($this->getid3->fp, 4); - - switch (substr($TIFFheader, 0, 2)) { - case 'II': - $info['tiff']['byte_order'] = 'Intel'; - break; - case 'MM': - $info['tiff']['byte_order'] = 'Motorola'; - break; - default: - $info['error'][] = 'Invalid TIFF byte order identifier ('.substr($TIFFheader, 0, 2).') at offset '.$info['avdataoffset']; - return false; - break; - } - - $info['fileformat'] = 'tiff'; - $info['video']['dataformat'] = 'tiff'; - $info['video']['lossless'] = true; - $info['tiff']['ifd'] = array(); - $CurrentIFD = array(); - - $FieldTypeByteLength = array(1=>1, 2=>1, 3=>2, 4=>4, 5=>8); - - $nextIFDoffset = $this->TIFFendian2Int(fread($this->getid3->fp, 4), $info['tiff']['byte_order']); - - while ($nextIFDoffset > 0) { - - $CurrentIFD['offset'] = $nextIFDoffset; - - fseek($this->getid3->fp, $info['avdataoffset'] + $nextIFDoffset, SEEK_SET); - $CurrentIFD['fieldcount'] = $this->TIFFendian2Int(fread($this->getid3->fp, 2), $info['tiff']['byte_order']); - - for ($i = 0; $i < $CurrentIFD['fieldcount']; $i++) { - $CurrentIFD['fields'][$i]['raw']['tag'] = $this->TIFFendian2Int(fread($this->getid3->fp, 2), $info['tiff']['byte_order']); - $CurrentIFD['fields'][$i]['raw']['type'] = $this->TIFFendian2Int(fread($this->getid3->fp, 2), $info['tiff']['byte_order']); - $CurrentIFD['fields'][$i]['raw']['length'] = $this->TIFFendian2Int(fread($this->getid3->fp, 4), $info['tiff']['byte_order']); - $CurrentIFD['fields'][$i]['raw']['offset'] = fread($this->getid3->fp, 4); - - switch ($CurrentIFD['fields'][$i]['raw']['type']) { - case 1: // BYTE An 8-bit unsigned integer. - if ($CurrentIFD['fields'][$i]['raw']['length'] <= 4) { - $CurrentIFD['fields'][$i]['value'] = $this->TIFFendian2Int(substr($CurrentIFD['fields'][$i]['raw']['offset'], 0, 1), $info['tiff']['byte_order']); - } else { - $CurrentIFD['fields'][$i]['offset'] = $this->TIFFendian2Int($CurrentIFD['fields'][$i]['raw']['offset'], $info['tiff']['byte_order']); - } - break; - - case 2: // ASCII 8-bit bytes that store ASCII codes; the last byte must be null. - if ($CurrentIFD['fields'][$i]['raw']['length'] <= 4) { - $CurrentIFD['fields'][$i]['value'] = substr($CurrentIFD['fields'][$i]['raw']['offset'], 3); - } else { - $CurrentIFD['fields'][$i]['offset'] = $this->TIFFendian2Int($CurrentIFD['fields'][$i]['raw']['offset'], $info['tiff']['byte_order']); - } - break; - - case 3: // SHORT A 16-bit (2-byte) unsigned integer. - if ($CurrentIFD['fields'][$i]['raw']['length'] <= 2) { - $CurrentIFD['fields'][$i]['value'] = $this->TIFFendian2Int(substr($CurrentIFD['fields'][$i]['raw']['offset'], 0, 2), $info['tiff']['byte_order']); - } else { - $CurrentIFD['fields'][$i]['offset'] = $this->TIFFendian2Int($CurrentIFD['fields'][$i]['raw']['offset'], $info['tiff']['byte_order']); - } - break; - - case 4: // LONG A 32-bit (4-byte) unsigned integer. - if ($CurrentIFD['fields'][$i]['raw']['length'] <= 1) { - $CurrentIFD['fields'][$i]['value'] = $this->TIFFendian2Int($CurrentIFD['fields'][$i]['raw']['offset'], $info['tiff']['byte_order']); - } else { - $CurrentIFD['fields'][$i]['offset'] = $this->TIFFendian2Int($CurrentIFD['fields'][$i]['raw']['offset'], $info['tiff']['byte_order']); - } - break; - - case 5: // RATIONAL Two LONG_s: the first represents the numerator of a fraction, the second the denominator. - break; - } - } - - $info['tiff']['ifd'][] = $CurrentIFD; - $CurrentIFD = array(); - $nextIFDoffset = $this->TIFFendian2Int(fread($this->getid3->fp, 4), $info['tiff']['byte_order']); - - } - - foreach ($info['tiff']['ifd'] as $IFDid => $IFDarray) { - foreach ($IFDarray['fields'] as $key => $fieldarray) { - switch ($fieldarray['raw']['tag']) { - case 256: // ImageWidth - case 257: // ImageLength - case 258: // BitsPerSample - case 259: // Compression - if (!isset($fieldarray['value'])) { - fseek($this->getid3->fp, $fieldarray['offset'], SEEK_SET); - $info['tiff']['ifd'][$IFDid]['fields'][$key]['raw']['data'] = fread($this->getid3->fp, $fieldarray['raw']['length'] * $FieldTypeByteLength[$fieldarray['raw']['type']]); - - } - break; - - case 270: // ImageDescription - case 271: // Make - case 272: // Model - case 305: // Software - case 306: // DateTime - case 315: // Artist - case 316: // HostComputer - if (isset($fieldarray['value'])) { - $info['tiff']['ifd'][$IFDid]['fields'][$key]['raw']['data'] = $fieldarray['value']; - } else { - fseek($this->getid3->fp, $fieldarray['offset'], SEEK_SET); - $info['tiff']['ifd'][$IFDid]['fields'][$key]['raw']['data'] = fread($this->getid3->fp, $fieldarray['raw']['length'] * $FieldTypeByteLength[$fieldarray['raw']['type']]); - - } - break; - } - switch ($fieldarray['raw']['tag']) { - case 256: // ImageWidth - $info['video']['resolution_x'] = $fieldarray['value']; - break; - - case 257: // ImageLength - $info['video']['resolution_y'] = $fieldarray['value']; - break; - - case 258: // BitsPerSample - if (isset($fieldarray['value'])) { - $info['video']['bits_per_sample'] = $fieldarray['value']; - } else { - $info['video']['bits_per_sample'] = 0; - for ($i = 0; $i < $fieldarray['raw']['length']; $i++) { - $info['video']['bits_per_sample'] += $this->TIFFendian2Int(substr($info['tiff']['ifd'][$IFDid]['fields'][$key]['raw']['data'], $i * $FieldTypeByteLength[$fieldarray['raw']['type']], $FieldTypeByteLength[$fieldarray['raw']['type']]), $info['tiff']['byte_order']); - } - } - break; - - case 259: // Compression - $info['video']['codec'] = $this->TIFFcompressionMethod($fieldarray['value']); - break; - - case 270: // ImageDescription - case 271: // Make - case 272: // Model - case 305: // Software - case 306: // DateTime - case 315: // Artist - case 316: // HostComputer - $TIFFcommentName = $this->TIFFcommentName($fieldarray['raw']['tag']); - if (isset($info['tiff']['comments'][$TIFFcommentName])) { - $info['tiff']['comments'][$TIFFcommentName][] = $info['tiff']['ifd'][$IFDid]['fields'][$key]['raw']['data']; - } else { - $info['tiff']['comments'][$TIFFcommentName] = array($info['tiff']['ifd'][$IFDid]['fields'][$key]['raw']['data']); - } - break; - - default: - break; - } - } - } - - return true; - } - - - function TIFFendian2Int($bytestring, $byteorder) { - if ($byteorder == 'Intel') { - return getid3_lib::LittleEndian2Int($bytestring); - } elseif ($byteorder == 'Motorola') { - return getid3_lib::BigEndian2Int($bytestring); - } - return false; - } - - function TIFFcompressionMethod($id) { - static $TIFFcompressionMethod = array(); - if (empty($TIFFcompressionMethod)) { - $TIFFcompressionMethod = array( - 1 => 'Uncompressed', - 2 => 'Huffman', - 3 => 'Fax - CCITT 3', - 5 => 'LZW', - 32773 => 'PackBits', - ); - } - return (isset($TIFFcompressionMethod[$id]) ? $TIFFcompressionMethod[$id] : 'unknown/invalid ('.$id.')'); - } - - function TIFFcommentName($id) { - static $TIFFcommentName = array(); - if (empty($TIFFcommentName)) { - $TIFFcommentName = array( - 270 => 'imagedescription', - 271 => 'make', - 272 => 'model', - 305 => 'software', - 306 => 'datetime', - 315 => 'artist', - 316 => 'hostcomputer', - ); - } - return (isset($TIFFcommentName[$id]) ? $TIFFcommentName[$id] : 'unknown/invalid ('.$id.')'); - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.misc.cue.php b/3rdparty/getid3/module.misc.cue.php deleted file mode 100644 index c99ce247984ac37dea38b081f37b395925a671bf..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.misc.cue.php +++ /dev/null @@ -1,312 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.misc.cue.php // -// module for analyzing CUEsheet files // -// dependencies: NONE // -// // -///////////////////////////////////////////////////////////////// -// // -// Module originally written [2009-Mar-25] by // -// Nigel Barnes // -// Minor reformatting and similar small changes to integrate // -// into getID3 by James Heinrich // -// /// -///////////////////////////////////////////////////////////////// - -/* - * CueSheet parser by Nigel Barnes. - * - * This is a PHP conversion of CueSharp 0.5 by Wyatt O'Day (wyday.com/cuesharp) - */ - -/** - * A CueSheet class used to open and parse cuesheets. - * - */ -class getid3_cue extends getid3_handler -{ - var $cuesheet = array(); - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'cue'; - $this->readCueSheetFilename($info['filenamepath']); - $info['cue'] = $this->cuesheet; - return true; - } - - - - function readCueSheetFilename($filename) - { - $filedata = file_get_contents($filename); - return $this->readCueSheet($filedata); - } - /** - * Parses a cue sheet file. - * - * @param string $filename - The filename for the cue sheet to open. - */ - function readCueSheet(&$filedata) - { - $cue_lines = array(); - foreach (explode("\n", str_replace("\r", null, $filedata)) as $line) - { - if ( (strlen($line) > 0) && ($line[0] != '#')) - { - $cue_lines[] = trim($line); - } - } - $this->parseCueSheet($cue_lines); - - return $this->cuesheet; - } - - /** - * Parses the cue sheet array. - * - * @param array $file - The cuesheet as an array of each line. - */ - function parseCueSheet($file) - { - //-1 means still global, all others are track specific - $track_on = -1; - - for ($i=0; $i < count($file); $i++) - { - list($key) = explode(' ', strtolower($file[$i]), 2); - switch ($key) - { - case 'catalog': - case 'cdtextfile': - case 'isrc': - case 'performer': - case 'songwriter': - case 'title': - $this->parseString($file[$i], $track_on); - break; - case 'file': - $currentFile = $this->parseFile($file[$i]); - break; - case 'flags': - $this->parseFlags($file[$i], $track_on); - break; - case 'index': - case 'postgap': - case 'pregap': - $this->parseIndex($file[$i], $track_on); - break; - case 'rem': - $this->parseComment($file[$i], $track_on); - break; - case 'track': - $track_on++; - $this->parseTrack($file[$i], $track_on); - if (isset($currentFile)) // if there's a file - { - $this->cuesheet['tracks'][$track_on]['datafile'] = $currentFile; - } - break; - default: - //save discarded junk and place string[] with track it was found in - $this->parseGarbage($file[$i], $track_on); - break; - } - } - } - - /** - * Parses the REM command. - * - * @param string $line - The line in the cue file that contains the TRACK command. - * @param integer $track_on - The track currently processing. - */ - function parseComment($line, $track_on) - { - $explodedline = explode(' ', $line, 3); - $comment_REM = (isset($explodedline[0]) ? $explodedline[0] : ''); - $comment_type = (isset($explodedline[1]) ? $explodedline[1] : ''); - $comment_data = (isset($explodedline[2]) ? $explodedline[2] : ''); - if (($comment_REM == 'REM') && $comment_type) { - $comment_type = strtolower($comment_type); - $commment_data = trim($comment_data, ' "'); - if ($track_on != -1) { - $this->cuesheet['tracks'][$track_on]['comments'][$comment_type][] = $comment_data; - } else { - $this->cuesheet['comments'][$comment_type][] = $comment_data; - } - } - } - - /** - * Parses the FILE command. - * - * @param string $line - The line in the cue file that contains the FILE command. - * @return array - Array of FILENAME and TYPE of file.. - */ - function parseFile($line) - { - $line = substr($line, strpos($line, ' ') + 1); - $type = strtolower(substr($line, strrpos($line, ' '))); - - //remove type - $line = substr($line, 0, strrpos($line, ' ') - 1); - - //if quotes around it, remove them. - $line = trim($line, '"'); - - return array('filename'=>$line, 'type'=>$type); - } - - /** - * Parses the FLAG command. - * - * @param string $line - The line in the cue file that contains the TRACK command. - * @param integer $track_on - The track currently processing. - */ - function parseFlags($line, $track_on) - { - if ($track_on != -1) - { - foreach (explode(' ', strtolower($line)) as $type) - { - switch ($type) - { - case 'flags': - // first entry in this line - $this->cuesheet['tracks'][$track_on]['flags'] = array( - '4ch' => false, - 'data' => false, - 'dcp' => false, - 'pre' => false, - 'scms' => false, - ); - break; - case 'data': - case 'dcp': - case '4ch': - case 'pre': - case 'scms': - $this->cuesheet['tracks'][$track_on]['flags'][$type] = true; - break; - default: - break; - } - } - } - } - - /** - * Collect any unidentified data. - * - * @param string $line - The line in the cue file that contains the TRACK command. - * @param integer $track_on - The track currently processing. - */ - function parseGarbage($line, $track_on) - { - if ( strlen($line) > 0 ) - { - if ($track_on == -1) - { - $this->cuesheet['garbage'][] = $line; - } - else - { - $this->cuesheet['tracks'][$track_on]['garbage'][] = $line; - } - } - } - - /** - * Parses the INDEX command of a TRACK. - * - * @param string $line - The line in the cue file that contains the TRACK command. - * @param integer $track_on - The track currently processing. - */ - function parseIndex($line, $track_on) - { - $type = strtolower(substr($line, 0, strpos($line, ' '))); - $line = substr($line, strpos($line, ' ') + 1); - - if ($type == 'index') - { - //read the index number - $number = intval(substr($line, 0, strpos($line, ' '))); - $line = substr($line, strpos($line, ' ') + 1); - } - - //extract the minutes, seconds, and frames - $explodedline = explode(':', $line); - $minutes = (isset($explodedline[0]) ? $explodedline[0] : ''); - $seconds = (isset($explodedline[1]) ? $explodedline[1] : ''); - $frames = (isset($explodedline[2]) ? $explodedline[2] : ''); - - switch ($type) { - case 'index': - $this->cuesheet['tracks'][$track_on][$type][$number] = array('minutes'=>intval($minutes), 'seconds'=>intval($seconds), 'frames'=>intval($frames)); - break; - case 'pregap': - case 'postgap': - $this->cuesheet['tracks'][$track_on][$type] = array('minutes'=>intval($minutes), 'seconds'=>intval($seconds), 'frames'=>intval($frames)); - break; - } - } - - function parseString($line, $track_on) - { - $category = strtolower(substr($line, 0, strpos($line, ' '))); - $line = substr($line, strpos($line, ' ') + 1); - - //get rid of the quotes - $line = trim($line, '"'); - - switch ($category) - { - case 'catalog': - case 'cdtextfile': - case 'isrc': - case 'performer': - case 'songwriter': - case 'title': - if ($track_on == -1) - { - $this->cuesheet[$category] = $line; - } - else - { - $this->cuesheet['tracks'][$track_on][$category] = $line; - } - break; - default: - break; - } - } - - /** - * Parses the TRACK command. - * - * @param string $line - The line in the cue file that contains the TRACK command. - * @param integer $track_on - The track currently processing. - */ - function parseTrack($line, $track_on) - { - $line = substr($line, strpos($line, ' ') + 1); - $track = ltrim(substr($line, 0, strpos($line, ' ')), '0'); - - //find the data type. - $datatype = strtolower(substr($line, strpos($line, ' ') + 1)); - - $this->cuesheet['tracks'][$track_on] = array('track_number'=>$track, 'datatype'=>$datatype); - } - -} - -?> diff --git a/3rdparty/getid3/module.misc.exe.php b/3rdparty/getid3/module.misc.exe.php deleted file mode 100644 index 108e62ecd7b543d6513a139b8a8871c9b3cf4205..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.misc.exe.php +++ /dev/null @@ -1,61 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.misc.exe.php // -// module for analyzing EXE files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_exe extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $EXEheader = fread($this->getid3->fp, 28); - - $magic = 'MZ'; - if (substr($EXEheader, 0, 2) != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($EXEheader, 0, 2)).'"'; - return false; - } - - $info['fileformat'] = 'exe'; - $info['exe']['mz']['magic'] = 'MZ'; - - $info['exe']['mz']['raw']['last_page_size'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 2, 2)); - $info['exe']['mz']['raw']['page_count'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 4, 2)); - $info['exe']['mz']['raw']['relocation_count'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 6, 2)); - $info['exe']['mz']['raw']['header_paragraphs'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 8, 2)); - $info['exe']['mz']['raw']['min_memory_paragraphs'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 10, 2)); - $info['exe']['mz']['raw']['max_memory_paragraphs'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 12, 2)); - $info['exe']['mz']['raw']['initial_ss'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 14, 2)); - $info['exe']['mz']['raw']['initial_sp'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 16, 2)); - $info['exe']['mz']['raw']['checksum'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 18, 2)); - $info['exe']['mz']['raw']['cs_ip'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 20, 4)); - $info['exe']['mz']['raw']['relocation_table_offset'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 24, 2)); - $info['exe']['mz']['raw']['overlay_number'] = getid3_lib::LittleEndian2Int(substr($EXEheader, 26, 2)); - - $info['exe']['mz']['byte_size'] = (($info['exe']['mz']['raw']['page_count'] - 1)) * 512 + $info['exe']['mz']['raw']['last_page_size']; - $info['exe']['mz']['header_size'] = $info['exe']['mz']['raw']['header_paragraphs'] * 16; - $info['exe']['mz']['memory_minimum'] = $info['exe']['mz']['raw']['min_memory_paragraphs'] * 16; - $info['exe']['mz']['memory_recommended'] = $info['exe']['mz']['raw']['max_memory_paragraphs'] * 16; - -$info['error'][] = 'EXE parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; -return false; - - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.misc.iso.php b/3rdparty/getid3/module.misc.iso.php deleted file mode 100644 index 727fdf8701c7b010dba4e43ee9d64d2998caa17a..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.misc.iso.php +++ /dev/null @@ -1,389 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.misc.iso.php // -// module for analyzing ISO files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_iso extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'iso'; - - for ($i = 16; $i <= 19; $i++) { - fseek($this->getid3->fp, 2048 * $i, SEEK_SET); - $ISOheader = fread($this->getid3->fp, 2048); - if (substr($ISOheader, 1, 5) == 'CD001') { - switch (ord($ISOheader{0})) { - case 1: - $info['iso']['primary_volume_descriptor']['offset'] = 2048 * $i; - $this->ParsePrimaryVolumeDescriptor($ISOheader); - break; - - case 2: - $info['iso']['supplementary_volume_descriptor']['offset'] = 2048 * $i; - $this->ParseSupplementaryVolumeDescriptor($ISOheader); - break; - - default: - // skip - break; - } - } - } - - $this->ParsePathTable(); - - $info['iso']['files'] = array(); - foreach ($info['iso']['path_table']['directories'] as $directorynum => $directorydata) { - $info['iso']['directories'][$directorynum] = $this->ParseDirectoryRecord($directorydata); - } - - return true; - } - - - function ParsePrimaryVolumeDescriptor(&$ISOheader) { - // ISO integer values are stored *BOTH* Little-Endian AND Big-Endian format!! - // ie 12345 == 0x3039 is stored as $39 $30 $30 $39 in a 4-byte field - - // shortcuts - $info = &$this->getid3->info; - $info['iso']['primary_volume_descriptor']['raw'] = array(); - $thisfile_iso_primaryVD = &$info['iso']['primary_volume_descriptor']; - $thisfile_iso_primaryVD_raw = &$thisfile_iso_primaryVD['raw']; - - $thisfile_iso_primaryVD_raw['volume_descriptor_type'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 0, 1)); - $thisfile_iso_primaryVD_raw['standard_identifier'] = substr($ISOheader, 1, 5); - if ($thisfile_iso_primaryVD_raw['standard_identifier'] != 'CD001') { - $info['error'][] = 'Expected "CD001" at offset ('.($thisfile_iso_primaryVD['offset'] + 1).'), found "'.$thisfile_iso_primaryVD_raw['standard_identifier'].'" instead'; - unset($info['fileformat']); - unset($info['iso']); - return false; - } - - - $thisfile_iso_primaryVD_raw['volume_descriptor_version'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 6, 1)); - //$thisfile_iso_primaryVD_raw['unused_1'] = substr($ISOheader, 7, 1); - $thisfile_iso_primaryVD_raw['system_identifier'] = substr($ISOheader, 8, 32); - $thisfile_iso_primaryVD_raw['volume_identifier'] = substr($ISOheader, 40, 32); - //$thisfile_iso_primaryVD_raw['unused_2'] = substr($ISOheader, 72, 8); - $thisfile_iso_primaryVD_raw['volume_space_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 80, 4)); - //$thisfile_iso_primaryVD_raw['unused_3'] = substr($ISOheader, 88, 32); - $thisfile_iso_primaryVD_raw['volume_set_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 120, 2)); - $thisfile_iso_primaryVD_raw['volume_sequence_number'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 124, 2)); - $thisfile_iso_primaryVD_raw['logical_block_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 128, 2)); - $thisfile_iso_primaryVD_raw['path_table_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 132, 4)); - $thisfile_iso_primaryVD_raw['path_table_l_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 140, 2)); - $thisfile_iso_primaryVD_raw['path_table_l_opt_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 144, 2)); - $thisfile_iso_primaryVD_raw['path_table_m_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 148, 2)); - $thisfile_iso_primaryVD_raw['path_table_m_opt_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 152, 2)); - $thisfile_iso_primaryVD_raw['root_directory_record'] = substr($ISOheader, 156, 34); - $thisfile_iso_primaryVD_raw['volume_set_identifier'] = substr($ISOheader, 190, 128); - $thisfile_iso_primaryVD_raw['publisher_identifier'] = substr($ISOheader, 318, 128); - $thisfile_iso_primaryVD_raw['data_preparer_identifier'] = substr($ISOheader, 446, 128); - $thisfile_iso_primaryVD_raw['application_identifier'] = substr($ISOheader, 574, 128); - $thisfile_iso_primaryVD_raw['copyright_file_identifier'] = substr($ISOheader, 702, 37); - $thisfile_iso_primaryVD_raw['abstract_file_identifier'] = substr($ISOheader, 739, 37); - $thisfile_iso_primaryVD_raw['bibliographic_file_identifier'] = substr($ISOheader, 776, 37); - $thisfile_iso_primaryVD_raw['volume_creation_date_time'] = substr($ISOheader, 813, 17); - $thisfile_iso_primaryVD_raw['volume_modification_date_time'] = substr($ISOheader, 830, 17); - $thisfile_iso_primaryVD_raw['volume_expiration_date_time'] = substr($ISOheader, 847, 17); - $thisfile_iso_primaryVD_raw['volume_effective_date_time'] = substr($ISOheader, 864, 17); - $thisfile_iso_primaryVD_raw['file_structure_version'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 881, 1)); - //$thisfile_iso_primaryVD_raw['unused_4'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 882, 1)); - $thisfile_iso_primaryVD_raw['application_data'] = substr($ISOheader, 883, 512); - //$thisfile_iso_primaryVD_raw['unused_5'] = substr($ISOheader, 1395, 653); - - $thisfile_iso_primaryVD['system_identifier'] = trim($thisfile_iso_primaryVD_raw['system_identifier']); - $thisfile_iso_primaryVD['volume_identifier'] = trim($thisfile_iso_primaryVD_raw['volume_identifier']); - $thisfile_iso_primaryVD['volume_set_identifier'] = trim($thisfile_iso_primaryVD_raw['volume_set_identifier']); - $thisfile_iso_primaryVD['publisher_identifier'] = trim($thisfile_iso_primaryVD_raw['publisher_identifier']); - $thisfile_iso_primaryVD['data_preparer_identifier'] = trim($thisfile_iso_primaryVD_raw['data_preparer_identifier']); - $thisfile_iso_primaryVD['application_identifier'] = trim($thisfile_iso_primaryVD_raw['application_identifier']); - $thisfile_iso_primaryVD['copyright_file_identifier'] = trim($thisfile_iso_primaryVD_raw['copyright_file_identifier']); - $thisfile_iso_primaryVD['abstract_file_identifier'] = trim($thisfile_iso_primaryVD_raw['abstract_file_identifier']); - $thisfile_iso_primaryVD['bibliographic_file_identifier'] = trim($thisfile_iso_primaryVD_raw['bibliographic_file_identifier']); - $thisfile_iso_primaryVD['volume_creation_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_primaryVD_raw['volume_creation_date_time']); - $thisfile_iso_primaryVD['volume_modification_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_primaryVD_raw['volume_modification_date_time']); - $thisfile_iso_primaryVD['volume_expiration_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_primaryVD_raw['volume_expiration_date_time']); - $thisfile_iso_primaryVD['volume_effective_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_primaryVD_raw['volume_effective_date_time']); - - if (($thisfile_iso_primaryVD_raw['volume_space_size'] * 2048) > $info['filesize']) { - $info['error'][] = 'Volume Space Size ('.($thisfile_iso_primaryVD_raw['volume_space_size'] * 2048).' bytes) is larger than the file size ('.$info['filesize'].' bytes) (truncated file?)'; - } - - return true; - } - - - function ParseSupplementaryVolumeDescriptor(&$ISOheader) { - // ISO integer values are stored Both-Endian format!! - // ie 12345 == 0x3039 is stored as $39 $30 $30 $39 in a 4-byte field - - // shortcuts - $info = &$this->getid3->info; - $info['iso']['supplementary_volume_descriptor']['raw'] = array(); - $thisfile_iso_supplementaryVD = &$info['iso']['supplementary_volume_descriptor']; - $thisfile_iso_supplementaryVD_raw = &$thisfile_iso_supplementaryVD['raw']; - - $thisfile_iso_supplementaryVD_raw['volume_descriptor_type'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 0, 1)); - $thisfile_iso_supplementaryVD_raw['standard_identifier'] = substr($ISOheader, 1, 5); - if ($thisfile_iso_supplementaryVD_raw['standard_identifier'] != 'CD001') { - $info['error'][] = 'Expected "CD001" at offset ('.($thisfile_iso_supplementaryVD['offset'] + 1).'), found "'.$thisfile_iso_supplementaryVD_raw['standard_identifier'].'" instead'; - unset($info['fileformat']); - unset($info['iso']); - return false; - } - - $thisfile_iso_supplementaryVD_raw['volume_descriptor_version'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 6, 1)); - //$thisfile_iso_supplementaryVD_raw['unused_1'] = substr($ISOheader, 7, 1); - $thisfile_iso_supplementaryVD_raw['system_identifier'] = substr($ISOheader, 8, 32); - $thisfile_iso_supplementaryVD_raw['volume_identifier'] = substr($ISOheader, 40, 32); - //$thisfile_iso_supplementaryVD_raw['unused_2'] = substr($ISOheader, 72, 8); - $thisfile_iso_supplementaryVD_raw['volume_space_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 80, 4)); - if ($thisfile_iso_supplementaryVD_raw['volume_space_size'] == 0) { - // Supplementary Volume Descriptor not used - //unset($thisfile_iso_supplementaryVD); - //return false; - } - - //$thisfile_iso_supplementaryVD_raw['unused_3'] = substr($ISOheader, 88, 32); - $thisfile_iso_supplementaryVD_raw['volume_set_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 120, 2)); - $thisfile_iso_supplementaryVD_raw['volume_sequence_number'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 124, 2)); - $thisfile_iso_supplementaryVD_raw['logical_block_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 128, 2)); - $thisfile_iso_supplementaryVD_raw['path_table_size'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 132, 4)); - $thisfile_iso_supplementaryVD_raw['path_table_l_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 140, 2)); - $thisfile_iso_supplementaryVD_raw['path_table_l_opt_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 144, 2)); - $thisfile_iso_supplementaryVD_raw['path_table_m_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 148, 2)); - $thisfile_iso_supplementaryVD_raw['path_table_m_opt_location'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 152, 2)); - $thisfile_iso_supplementaryVD_raw['root_directory_record'] = substr($ISOheader, 156, 34); - $thisfile_iso_supplementaryVD_raw['volume_set_identifier'] = substr($ISOheader, 190, 128); - $thisfile_iso_supplementaryVD_raw['publisher_identifier'] = substr($ISOheader, 318, 128); - $thisfile_iso_supplementaryVD_raw['data_preparer_identifier'] = substr($ISOheader, 446, 128); - $thisfile_iso_supplementaryVD_raw['application_identifier'] = substr($ISOheader, 574, 128); - $thisfile_iso_supplementaryVD_raw['copyright_file_identifier'] = substr($ISOheader, 702, 37); - $thisfile_iso_supplementaryVD_raw['abstract_file_identifier'] = substr($ISOheader, 739, 37); - $thisfile_iso_supplementaryVD_raw['bibliographic_file_identifier'] = substr($ISOheader, 776, 37); - $thisfile_iso_supplementaryVD_raw['volume_creation_date_time'] = substr($ISOheader, 813, 17); - $thisfile_iso_supplementaryVD_raw['volume_modification_date_time'] = substr($ISOheader, 830, 17); - $thisfile_iso_supplementaryVD_raw['volume_expiration_date_time'] = substr($ISOheader, 847, 17); - $thisfile_iso_supplementaryVD_raw['volume_effective_date_time'] = substr($ISOheader, 864, 17); - $thisfile_iso_supplementaryVD_raw['file_structure_version'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 881, 1)); - //$thisfile_iso_supplementaryVD_raw['unused_4'] = getid3_lib::LittleEndian2Int(substr($ISOheader, 882, 1)); - $thisfile_iso_supplementaryVD_raw['application_data'] = substr($ISOheader, 883, 512); - //$thisfile_iso_supplementaryVD_raw['unused_5'] = substr($ISOheader, 1395, 653); - - $thisfile_iso_supplementaryVD['system_identifier'] = trim($thisfile_iso_supplementaryVD_raw['system_identifier']); - $thisfile_iso_supplementaryVD['volume_identifier'] = trim($thisfile_iso_supplementaryVD_raw['volume_identifier']); - $thisfile_iso_supplementaryVD['volume_set_identifier'] = trim($thisfile_iso_supplementaryVD_raw['volume_set_identifier']); - $thisfile_iso_supplementaryVD['publisher_identifier'] = trim($thisfile_iso_supplementaryVD_raw['publisher_identifier']); - $thisfile_iso_supplementaryVD['data_preparer_identifier'] = trim($thisfile_iso_supplementaryVD_raw['data_preparer_identifier']); - $thisfile_iso_supplementaryVD['application_identifier'] = trim($thisfile_iso_supplementaryVD_raw['application_identifier']); - $thisfile_iso_supplementaryVD['copyright_file_identifier'] = trim($thisfile_iso_supplementaryVD_raw['copyright_file_identifier']); - $thisfile_iso_supplementaryVD['abstract_file_identifier'] = trim($thisfile_iso_supplementaryVD_raw['abstract_file_identifier']); - $thisfile_iso_supplementaryVD['bibliographic_file_identifier'] = trim($thisfile_iso_supplementaryVD_raw['bibliographic_file_identifier']); - $thisfile_iso_supplementaryVD['volume_creation_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_supplementaryVD_raw['volume_creation_date_time']); - $thisfile_iso_supplementaryVD['volume_modification_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_supplementaryVD_raw['volume_modification_date_time']); - $thisfile_iso_supplementaryVD['volume_expiration_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_supplementaryVD_raw['volume_expiration_date_time']); - $thisfile_iso_supplementaryVD['volume_effective_date_time'] = $this->ISOtimeText2UNIXtime($thisfile_iso_supplementaryVD_raw['volume_effective_date_time']); - - if (($thisfile_iso_supplementaryVD_raw['volume_space_size'] * $thisfile_iso_supplementaryVD_raw['logical_block_size']) > $info['filesize']) { - $info['error'][] = 'Volume Space Size ('.($thisfile_iso_supplementaryVD_raw['volume_space_size'] * $thisfile_iso_supplementaryVD_raw['logical_block_size']).' bytes) is larger than the file size ('.$info['filesize'].' bytes) (truncated file?)'; - } - - return true; - } - - - function ParsePathTable() { - $info = &$this->getid3->info; - if (!isset($info['iso']['supplementary_volume_descriptor']['raw']['path_table_l_location']) && !isset($info['iso']['primary_volume_descriptor']['raw']['path_table_l_location'])) { - return false; - } - if (isset($info['iso']['supplementary_volume_descriptor']['raw']['path_table_l_location'])) { - $PathTableLocation = $info['iso']['supplementary_volume_descriptor']['raw']['path_table_l_location']; - $PathTableSize = $info['iso']['supplementary_volume_descriptor']['raw']['path_table_size']; - $TextEncoding = 'UTF-16BE'; // Big-Endian Unicode - } else { - $PathTableLocation = $info['iso']['primary_volume_descriptor']['raw']['path_table_l_location']; - $PathTableSize = $info['iso']['primary_volume_descriptor']['raw']['path_table_size']; - $TextEncoding = 'ISO-8859-1'; // Latin-1 - } - - if (($PathTableLocation * 2048) > $info['filesize']) { - $info['error'][] = 'Path Table Location specifies an offset ('.($PathTableLocation * 2048).') beyond the end-of-file ('.$info['filesize'].')'; - return false; - } - - $info['iso']['path_table']['offset'] = $PathTableLocation * 2048; - fseek($this->getid3->fp, $info['iso']['path_table']['offset'], SEEK_SET); - $info['iso']['path_table']['raw'] = fread($this->getid3->fp, $PathTableSize); - - $offset = 0; - $pathcounter = 1; - while ($offset < $PathTableSize) { - // shortcut - $info['iso']['path_table']['directories'][$pathcounter] = array(); - $thisfile_iso_pathtable_directories_current = &$info['iso']['path_table']['directories'][$pathcounter]; - - $thisfile_iso_pathtable_directories_current['length'] = getid3_lib::LittleEndian2Int(substr($info['iso']['path_table']['raw'], $offset, 1)); - $offset += 1; - $thisfile_iso_pathtable_directories_current['extended_length'] = getid3_lib::LittleEndian2Int(substr($info['iso']['path_table']['raw'], $offset, 1)); - $offset += 1; - $thisfile_iso_pathtable_directories_current['location_logical'] = getid3_lib::LittleEndian2Int(substr($info['iso']['path_table']['raw'], $offset, 4)); - $offset += 4; - $thisfile_iso_pathtable_directories_current['parent_directory'] = getid3_lib::LittleEndian2Int(substr($info['iso']['path_table']['raw'], $offset, 2)); - $offset += 2; - $thisfile_iso_pathtable_directories_current['name'] = substr($info['iso']['path_table']['raw'], $offset, $thisfile_iso_pathtable_directories_current['length']); - $offset += $thisfile_iso_pathtable_directories_current['length'] + ($thisfile_iso_pathtable_directories_current['length'] % 2); - - $thisfile_iso_pathtable_directories_current['name_ascii'] = getid3_lib::iconv_fallback($TextEncoding, $info['encoding'], $thisfile_iso_pathtable_directories_current['name']); - - $thisfile_iso_pathtable_directories_current['location_bytes'] = $thisfile_iso_pathtable_directories_current['location_logical'] * 2048; - if ($pathcounter == 1) { - $thisfile_iso_pathtable_directories_current['full_path'] = '/'; - } else { - $thisfile_iso_pathtable_directories_current['full_path'] = $info['iso']['path_table']['directories'][$thisfile_iso_pathtable_directories_current['parent_directory']]['full_path'].$thisfile_iso_pathtable_directories_current['name_ascii'].'/'; - } - $FullPathArray[] = $thisfile_iso_pathtable_directories_current['full_path']; - - $pathcounter++; - } - - return true; - } - - - function ParseDirectoryRecord($directorydata) { - $info = &$this->getid3->info; - if (isset($info['iso']['supplementary_volume_descriptor'])) { - $TextEncoding = 'UTF-16BE'; // Big-Endian Unicode - } else { - $TextEncoding = 'ISO-8859-1'; // Latin-1 - } - - fseek($this->getid3->fp, $directorydata['location_bytes'], SEEK_SET); - $DirectoryRecordData = fread($this->getid3->fp, 1); - - while (ord($DirectoryRecordData{0}) > 33) { - - $DirectoryRecordData .= fread($this->getid3->fp, ord($DirectoryRecordData{0}) - 1); - - $ThisDirectoryRecord['raw']['length'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 0, 1)); - $ThisDirectoryRecord['raw']['extended_attribute_length'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 1, 1)); - $ThisDirectoryRecord['raw']['offset_logical'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 2, 4)); - $ThisDirectoryRecord['raw']['filesize'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 10, 4)); - $ThisDirectoryRecord['raw']['recording_date_time'] = substr($DirectoryRecordData, 18, 7); - $ThisDirectoryRecord['raw']['file_flags'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 25, 1)); - $ThisDirectoryRecord['raw']['file_unit_size'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 26, 1)); - $ThisDirectoryRecord['raw']['interleave_gap_size'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 27, 1)); - $ThisDirectoryRecord['raw']['volume_sequence_number'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 28, 2)); - $ThisDirectoryRecord['raw']['file_identifier_length'] = getid3_lib::LittleEndian2Int(substr($DirectoryRecordData, 32, 1)); - $ThisDirectoryRecord['raw']['file_identifier'] = substr($DirectoryRecordData, 33, $ThisDirectoryRecord['raw']['file_identifier_length']); - - $ThisDirectoryRecord['file_identifier_ascii'] = getid3_lib::iconv_fallback($TextEncoding, $info['encoding'], $ThisDirectoryRecord['raw']['file_identifier']); - - $ThisDirectoryRecord['filesize'] = $ThisDirectoryRecord['raw']['filesize']; - $ThisDirectoryRecord['offset_bytes'] = $ThisDirectoryRecord['raw']['offset_logical'] * 2048; - $ThisDirectoryRecord['file_flags']['hidden'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x01); - $ThisDirectoryRecord['file_flags']['directory'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x02); - $ThisDirectoryRecord['file_flags']['associated'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x04); - $ThisDirectoryRecord['file_flags']['extended'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x08); - $ThisDirectoryRecord['file_flags']['permissions'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x10); - $ThisDirectoryRecord['file_flags']['multiple'] = (bool) ($ThisDirectoryRecord['raw']['file_flags'] & 0x80); - $ThisDirectoryRecord['recording_timestamp'] = $this->ISOtime2UNIXtime($ThisDirectoryRecord['raw']['recording_date_time']); - - if ($ThisDirectoryRecord['file_flags']['directory']) { - $ThisDirectoryRecord['filename'] = $directorydata['full_path']; - } else { - $ThisDirectoryRecord['filename'] = $directorydata['full_path'].$this->ISOstripFilenameVersion($ThisDirectoryRecord['file_identifier_ascii']); - $info['iso']['files'] = getid3_lib::array_merge_clobber($info['iso']['files'], getid3_lib::CreateDeepArray($ThisDirectoryRecord['filename'], '/', $ThisDirectoryRecord['filesize'])); - } - - $DirectoryRecord[] = $ThisDirectoryRecord; - $DirectoryRecordData = fread($this->getid3->fp, 1); - } - - return $DirectoryRecord; - } - - function ISOstripFilenameVersion($ISOfilename) { - // convert 'filename.ext;1' to 'filename.ext' - if (!strstr($ISOfilename, ';')) { - return $ISOfilename; - } else { - return substr($ISOfilename, 0, strpos($ISOfilename, ';')); - } - } - - function ISOtimeText2UNIXtime($ISOtime) { - - $UNIXyear = (int) substr($ISOtime, 0, 4); - $UNIXmonth = (int) substr($ISOtime, 4, 2); - $UNIXday = (int) substr($ISOtime, 6, 2); - $UNIXhour = (int) substr($ISOtime, 8, 2); - $UNIXminute = (int) substr($ISOtime, 10, 2); - $UNIXsecond = (int) substr($ISOtime, 12, 2); - - if (!$UNIXyear) { - return false; - } - return gmmktime($UNIXhour, $UNIXminute, $UNIXsecond, $UNIXmonth, $UNIXday, $UNIXyear); - } - - function ISOtime2UNIXtime($ISOtime) { - // Represented by seven bytes: - // 1: Number of years since 1900 - // 2: Month of the year from 1 to 12 - // 3: Day of the Month from 1 to 31 - // 4: Hour of the day from 0 to 23 - // 5: Minute of the hour from 0 to 59 - // 6: second of the minute from 0 to 59 - // 7: Offset from Greenwich Mean Time in number of 15 minute intervals from -48 (West) to +52 (East) - - $UNIXyear = ord($ISOtime{0}) + 1900; - $UNIXmonth = ord($ISOtime{1}); - $UNIXday = ord($ISOtime{2}); - $UNIXhour = ord($ISOtime{3}); - $UNIXminute = ord($ISOtime{4}); - $UNIXsecond = ord($ISOtime{5}); - $GMToffset = $this->TwosCompliment2Decimal(ord($ISOtime{5})); - - return gmmktime($UNIXhour, $UNIXminute, $UNIXsecond, $UNIXmonth, $UNIXday, $UNIXyear); - } - - function TwosCompliment2Decimal($BinaryValue) { - // http://sandbox.mc.edu/~bennet/cs110/tc/tctod.html - // First check if the number is negative or positive by looking at the sign bit. - // If it is positive, simply convert it to decimal. - // If it is negative, make it positive by inverting the bits and adding one. - // Then, convert the result to decimal. - // The negative of this number is the value of the original binary. - - if ($BinaryValue & 0x80) { - - // negative number - return (0 - ((~$BinaryValue & 0xFF) + 1)); - } else { - // positive number - return $BinaryValue; - } - } - - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.misc.msoffice.php b/3rdparty/getid3/module.misc.msoffice.php deleted file mode 100644 index 8fea108534ada02cf45de39737a7f6d4a54ff54a..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.misc.msoffice.php +++ /dev/null @@ -1,40 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.archive.doc.php // -// module for analyzing MS Office (.doc, .xls, etc) files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_msoffice extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); - $DOCFILEheader = fread($this->getid3->fp, 8); - $magic = "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1"; - if (substr($DOCFILEheader, 0, 8) != $magic) { - $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at '.$info['avdataoffset'].', found '.getid3_lib::PrintHexBytes(substr($DOCFILEheader, 0, 8)).' instead.'; - return false; - } - $info['fileformat'] = 'msoffice'; - -$info['error'][] = 'MS Office (.doc, .xls, etc) parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; -return false; - - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.misc.par2.php b/3rdparty/getid3/module.misc.par2.php deleted file mode 100644 index d8b0a388b740fd099003efb8fb2bc6048449a5a0..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.misc.par2.php +++ /dev/null @@ -1,33 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.misc.par2.php // -// module for analyzing PAR2 files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_par2 extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'par2'; - - $info['error'][] = 'PAR2 parsing not enabled in this version of getID3()'; - return false; - - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.misc.pdf.php b/3rdparty/getid3/module.misc.pdf.php deleted file mode 100644 index 38ed646a9e0c866aa183d1312d30e518d8e2ae43..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.misc.pdf.php +++ /dev/null @@ -1,33 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.misc.pdf.php // -// module for analyzing PDF files // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_pdf extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - $info['fileformat'] = 'pdf'; - - $info['error'][] = 'PDF parsing not enabled in this version of getID3() ['.$this->getid3->version().']'; - return false; - - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.tag.apetag.php b/3rdparty/getid3/module.tag.apetag.php deleted file mode 100644 index 6522475f5166e55bd95245b11c01bb7f771450d9..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.tag.apetag.php +++ /dev/null @@ -1,372 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.tag.apetag.php // -// module for analyzing APE tags // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - -class getid3_apetag extends getid3_handler -{ - var $inline_attachments = true; // true: return full data for all attachments; false: return no data for all attachments; integer: return data for attachments <= than this; string: save as file to this directory - var $overrideendoffset = 0; - - function Analyze() { - $info = &$this->getid3->info; - - if (!getid3_lib::intValueSupported($info['filesize'])) { - $info['warning'][] = 'Unable to check for APEtags because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - return false; - } - - $id3v1tagsize = 128; - $apetagheadersize = 32; - $lyrics3tagsize = 10; - - if ($this->overrideendoffset == 0) { - - fseek($this->getid3->fp, 0 - $id3v1tagsize - $apetagheadersize - $lyrics3tagsize, SEEK_END); - $APEfooterID3v1 = fread($this->getid3->fp, $id3v1tagsize + $apetagheadersize + $lyrics3tagsize); - - //if (preg_match('/APETAGEX.{24}TAG.{125}$/i', $APEfooterID3v1)) { - if (substr($APEfooterID3v1, strlen($APEfooterID3v1) - $id3v1tagsize - $apetagheadersize, 8) == 'APETAGEX') { - - // APE tag found before ID3v1 - $info['ape']['tag_offset_end'] = $info['filesize'] - $id3v1tagsize; - - //} elseif (preg_match('/APETAGEX.{24}$/i', $APEfooterID3v1)) { - } elseif (substr($APEfooterID3v1, strlen($APEfooterID3v1) - $apetagheadersize, 8) == 'APETAGEX') { - - // APE tag found, no ID3v1 - $info['ape']['tag_offset_end'] = $info['filesize']; - - } - - } else { - - fseek($this->getid3->fp, $this->overrideendoffset - $apetagheadersize, SEEK_SET); - if (fread($this->getid3->fp, 8) == 'APETAGEX') { - $info['ape']['tag_offset_end'] = $this->overrideendoffset; - } - - } - if (!isset($info['ape']['tag_offset_end'])) { - - // APE tag not found - unset($info['ape']); - return false; - - } - - // shortcut - $thisfile_ape = &$info['ape']; - - fseek($this->getid3->fp, $thisfile_ape['tag_offset_end'] - $apetagheadersize, SEEK_SET); - $APEfooterData = fread($this->getid3->fp, 32); - if (!($thisfile_ape['footer'] = $this->parseAPEheaderFooter($APEfooterData))) { - $info['error'][] = 'Error parsing APE footer at offset '.$thisfile_ape['tag_offset_end']; - return false; - } - - if (isset($thisfile_ape['footer']['flags']['header']) && $thisfile_ape['footer']['flags']['header']) { - fseek($this->getid3->fp, $thisfile_ape['tag_offset_end'] - $thisfile_ape['footer']['raw']['tagsize'] - $apetagheadersize, SEEK_SET); - $thisfile_ape['tag_offset_start'] = ftell($this->getid3->fp); - $APEtagData = fread($this->getid3->fp, $thisfile_ape['footer']['raw']['tagsize'] + $apetagheadersize); - } else { - $thisfile_ape['tag_offset_start'] = $thisfile_ape['tag_offset_end'] - $thisfile_ape['footer']['raw']['tagsize']; - fseek($this->getid3->fp, $thisfile_ape['tag_offset_start'], SEEK_SET); - $APEtagData = fread($this->getid3->fp, $thisfile_ape['footer']['raw']['tagsize']); - } - $info['avdataend'] = $thisfile_ape['tag_offset_start']; - - if (isset($info['id3v1']['tag_offset_start']) && ($info['id3v1']['tag_offset_start'] < $thisfile_ape['tag_offset_end'])) { - $info['warning'][] = 'ID3v1 tag information ignored since it appears to be a false synch in APEtag data'; - unset($info['id3v1']); - foreach ($info['warning'] as $key => $value) { - if ($value == 'Some ID3v1 fields do not use NULL characters for padding') { - unset($info['warning'][$key]); - sort($info['warning']); - break; - } - } - } - - $offset = 0; - if (isset($thisfile_ape['footer']['flags']['header']) && $thisfile_ape['footer']['flags']['header']) { - if ($thisfile_ape['header'] = $this->parseAPEheaderFooter(substr($APEtagData, 0, $apetagheadersize))) { - $offset += $apetagheadersize; - } else { - $info['error'][] = 'Error parsing APE header at offset '.$thisfile_ape['tag_offset_start']; - return false; - } - } - - // shortcut - $info['replay_gain'] = array(); - $thisfile_replaygain = &$info['replay_gain']; - - for ($i = 0; $i < $thisfile_ape['footer']['raw']['tag_items']; $i++) { - $value_size = getid3_lib::LittleEndian2Int(substr($APEtagData, $offset, 4)); - $offset += 4; - $item_flags = getid3_lib::LittleEndian2Int(substr($APEtagData, $offset, 4)); - $offset += 4; - if (strstr(substr($APEtagData, $offset), "\x00") === false) { - $info['error'][] = 'Cannot find null-byte (0x00) seperator between ItemKey #'.$i.' and value. ItemKey starts '.$offset.' bytes into the APE tag, at file offset '.($thisfile_ape['tag_offset_start'] + $offset); - return false; - } - $ItemKeyLength = strpos($APEtagData, "\x00", $offset) - $offset; - $item_key = strtolower(substr($APEtagData, $offset, $ItemKeyLength)); - - // shortcut - $thisfile_ape['items'][$item_key] = array(); - $thisfile_ape_items_current = &$thisfile_ape['items'][$item_key]; - - $thisfile_ape_items_current['offset'] = $thisfile_ape['tag_offset_start'] + $offset; - - $offset += ($ItemKeyLength + 1); // skip 0x00 terminator - $thisfile_ape_items_current['data'] = substr($APEtagData, $offset, $value_size); - $offset += $value_size; - - $thisfile_ape_items_current['flags'] = $this->parseAPEtagFlags($item_flags); - switch ($thisfile_ape_items_current['flags']['item_contents_raw']) { - case 0: // UTF-8 - case 3: // Locator (URL, filename, etc), UTF-8 encoded - $thisfile_ape_items_current['data'] = explode("\x00", trim($thisfile_ape_items_current['data'])); - break; - - default: // binary data - break; - } - - switch (strtolower($item_key)) { - case 'replaygain_track_gain': - $thisfile_replaygain['track']['adjustment'] = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero! - $thisfile_replaygain['track']['originator'] = 'unspecified'; - break; - - case 'replaygain_track_peak': - $thisfile_replaygain['track']['peak'] = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero! - $thisfile_replaygain['track']['originator'] = 'unspecified'; - if ($thisfile_replaygain['track']['peak'] <= 0) { - $info['warning'][] = 'ReplayGain Track peak from APEtag appears invalid: '.$thisfile_replaygain['track']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")'; - } - break; - - case 'replaygain_album_gain': - $thisfile_replaygain['album']['adjustment'] = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero! - $thisfile_replaygain['album']['originator'] = 'unspecified'; - break; - - case 'replaygain_album_peak': - $thisfile_replaygain['album']['peak'] = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero! - $thisfile_replaygain['album']['originator'] = 'unspecified'; - if ($thisfile_replaygain['album']['peak'] <= 0) { - $info['warning'][] = 'ReplayGain Album peak from APEtag appears invalid: '.$thisfile_replaygain['album']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")'; - } - break; - - case 'mp3gain_undo': - list($mp3gain_undo_left, $mp3gain_undo_right, $mp3gain_undo_wrap) = explode(',', $thisfile_ape_items_current['data'][0]); - $thisfile_replaygain['mp3gain']['undo_left'] = intval($mp3gain_undo_left); - $thisfile_replaygain['mp3gain']['undo_right'] = intval($mp3gain_undo_right); - $thisfile_replaygain['mp3gain']['undo_wrap'] = (($mp3gain_undo_wrap == 'Y') ? true : false); - break; - - case 'mp3gain_minmax': - list($mp3gain_globalgain_min, $mp3gain_globalgain_max) = explode(',', $thisfile_ape_items_current['data'][0]); - $thisfile_replaygain['mp3gain']['globalgain_track_min'] = intval($mp3gain_globalgain_min); - $thisfile_replaygain['mp3gain']['globalgain_track_max'] = intval($mp3gain_globalgain_max); - break; - - case 'mp3gain_album_minmax': - list($mp3gain_globalgain_album_min, $mp3gain_globalgain_album_max) = explode(',', $thisfile_ape_items_current['data'][0]); - $thisfile_replaygain['mp3gain']['globalgain_album_min'] = intval($mp3gain_globalgain_album_min); - $thisfile_replaygain['mp3gain']['globalgain_album_max'] = intval($mp3gain_globalgain_album_max); - break; - - case 'tracknumber': - if (is_array($thisfile_ape_items_current['data'])) { - foreach ($thisfile_ape_items_current['data'] as $comment) { - $thisfile_ape['comments']['track'][] = $comment; - } - } - break; - - case 'cover art (artist)': - case 'cover art (back)': - case 'cover art (band logo)': - case 'cover art (band)': - case 'cover art (colored fish)': - case 'cover art (composer)': - case 'cover art (conductor)': - case 'cover art (front)': - case 'cover art (icon)': - case 'cover art (illustration)': - case 'cover art (lead)': - case 'cover art (leaflet)': - case 'cover art (lyricist)': - case 'cover art (media)': - case 'cover art (movie scene)': - case 'cover art (other icon)': - case 'cover art (other)': - case 'cover art (performance)': - case 'cover art (publisher logo)': - case 'cover art (recording)': - case 'cover art (studio)': - // list of possible cover arts from http://taglib-sharp.sourcearchive.com/documentation/2.0.3.0-2/Ape_2Tag_8cs-source.html - list($thisfile_ape_items_current['filename'], $thisfile_ape_items_current['data']) = explode("\x00", $thisfile_ape_items_current['data'], 2); - $thisfile_ape_items_current['data_offset'] = $thisfile_ape_items_current['offset'] + strlen($thisfile_ape_items_current['filename']."\x00"); - $thisfile_ape_items_current['data_length'] = strlen($thisfile_ape_items_current['data']); - - $thisfile_ape_items_current['image_mime'] = ''; - $imageinfo = array(); - $imagechunkcheck = getid3_lib::GetDataImageSize($thisfile_ape_items_current['data'], $imageinfo); - $thisfile_ape_items_current['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]); - - do { - if ($this->inline_attachments === false) { - // skip entirely - unset($thisfile_ape_items_current['data']); - break; - } - if ($this->inline_attachments === true) { - // great - } elseif (is_int($this->inline_attachments)) { - if ($this->inline_attachments < $thisfile_ape_items_current['data_length']) { - // too big, skip - $info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' is too large to process inline ('.number_format($thisfile_ape_items_current['data_length']).' bytes)'; - unset($thisfile_ape_items_current['data']); - break; - } - } elseif (is_string($this->inline_attachments)) { - $this->inline_attachments = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->inline_attachments), DIRECTORY_SEPARATOR); - if (!is_dir($this->inline_attachments) || !is_writable($this->inline_attachments)) { - // cannot write, skip - $info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$this->inline_attachments.'" (not writable)'; - unset($thisfile_ape_items_current['data']); - break; - } - } - // if we get this far, must be OK - if (is_string($this->inline_attachments)) { - $destination_filename = $this->inline_attachments.DIRECTORY_SEPARATOR.md5($info['filenamepath']).'_'.$thisfile_ape_items_current['data_offset']; - if (!file_exists($destination_filename) || is_writable($destination_filename)) { - file_put_contents($destination_filename, $thisfile_ape_items_current['data']); - } else { - $info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$destination_filename.'" (not writable)'; - } - $thisfile_ape_items_current['data_filename'] = $destination_filename; - unset($thisfile_ape_items_current['data']); - } else { - if (!isset($info['ape']['comments']['picture'])) { - $info['ape']['comments']['picture'] = array(); - } - $info['ape']['comments']['picture'][] = array('data'=>$thisfile_ape_items_current['data'], 'image_mime'=>$thisfile_ape_items_current['image_mime']); - } - } while (false); - break; - - default: - if (is_array($thisfile_ape_items_current['data'])) { - foreach ($thisfile_ape_items_current['data'] as $comment) { - $thisfile_ape['comments'][strtolower($item_key)][] = $comment; - } - } - break; - } - - } - if (empty($thisfile_replaygain)) { - unset($info['replay_gain']); - } - return true; - } - - function parseAPEheaderFooter($APEheaderFooterData) { - // http://www.uni-jena.de/~pfk/mpp/sv8/apeheader.html - - // shortcut - $headerfooterinfo['raw'] = array(); - $headerfooterinfo_raw = &$headerfooterinfo['raw']; - - $headerfooterinfo_raw['footer_tag'] = substr($APEheaderFooterData, 0, 8); - if ($headerfooterinfo_raw['footer_tag'] != 'APETAGEX') { - return false; - } - $headerfooterinfo_raw['version'] = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData, 8, 4)); - $headerfooterinfo_raw['tagsize'] = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData, 12, 4)); - $headerfooterinfo_raw['tag_items'] = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData, 16, 4)); - $headerfooterinfo_raw['global_flags'] = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData, 20, 4)); - $headerfooterinfo_raw['reserved'] = substr($APEheaderFooterData, 24, 8); - - $headerfooterinfo['tag_version'] = $headerfooterinfo_raw['version'] / 1000; - if ($headerfooterinfo['tag_version'] >= 2) { - $headerfooterinfo['flags'] = $this->parseAPEtagFlags($headerfooterinfo_raw['global_flags']); - } - return $headerfooterinfo; - } - - function parseAPEtagFlags($rawflagint) { - // "Note: APE Tags 1.0 do not use any of the APE Tag flags. - // All are set to zero on creation and ignored on reading." - // http://www.uni-jena.de/~pfk/mpp/sv8/apetagflags.html - $flags['header'] = (bool) ($rawflagint & 0x80000000); - $flags['footer'] = (bool) ($rawflagint & 0x40000000); - $flags['this_is_header'] = (bool) ($rawflagint & 0x20000000); - $flags['item_contents_raw'] = ($rawflagint & 0x00000006) >> 1; - $flags['read_only'] = (bool) ($rawflagint & 0x00000001); - - $flags['item_contents'] = $this->APEcontentTypeFlagLookup($flags['item_contents_raw']); - - return $flags; - } - - function APEcontentTypeFlagLookup($contenttypeid) { - static $APEcontentTypeFlagLookup = array( - 0 => 'utf-8', - 1 => 'binary', - 2 => 'external', - 3 => 'reserved' - ); - return (isset($APEcontentTypeFlagLookup[$contenttypeid]) ? $APEcontentTypeFlagLookup[$contenttypeid] : 'invalid'); - } - - function APEtagItemIsUTF8Lookup($itemkey) { - static $APEtagItemIsUTF8Lookup = array( - 'title', - 'subtitle', - 'artist', - 'album', - 'debut album', - 'publisher', - 'conductor', - 'track', - 'composer', - 'comment', - 'copyright', - 'publicationright', - 'file', - 'year', - 'record date', - 'record location', - 'genre', - 'media', - 'related', - 'isrc', - 'abstract', - 'language', - 'bibliography' - ); - return in_array(strtolower($itemkey), $APEtagItemIsUTF8Lookup); - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.tag.id3v1.php b/3rdparty/getid3/module.tag.id3v1.php deleted file mode 100644 index a9932d13f321a8d216e3d89111281dc82b9b28ba..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.tag.id3v1.php +++ /dev/null @@ -1,362 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.tag.id3v1.php // -// module for analyzing ID3v1 tags // -// dependencies: NONE // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_id3v1 extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - if (!getid3_lib::intValueSupported($info['filesize'])) { - $info['warning'][] = 'Unable to check for ID3v1 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - return false; - } - - fseek($this->getid3->fp, -256, SEEK_END); - $preid3v1 = fread($this->getid3->fp, 128); - $id3v1tag = fread($this->getid3->fp, 128); - - if (substr($id3v1tag, 0, 3) == 'TAG') { - - $info['avdataend'] = $info['filesize'] - 128; - - $ParsedID3v1['title'] = $this->cutfield(substr($id3v1tag, 3, 30)); - $ParsedID3v1['artist'] = $this->cutfield(substr($id3v1tag, 33, 30)); - $ParsedID3v1['album'] = $this->cutfield(substr($id3v1tag, 63, 30)); - $ParsedID3v1['year'] = $this->cutfield(substr($id3v1tag, 93, 4)); - $ParsedID3v1['comment'] = substr($id3v1tag, 97, 30); // can't remove nulls yet, track detection depends on them - $ParsedID3v1['genreid'] = ord(substr($id3v1tag, 127, 1)); - - // If second-last byte of comment field is null and last byte of comment field is non-null - // then this is ID3v1.1 and the comment field is 28 bytes long and the 30th byte is the track number - if (($id3v1tag{125} === "\x00") && ($id3v1tag{126} !== "\x00")) { - $ParsedID3v1['track'] = ord(substr($ParsedID3v1['comment'], 29, 1)); - $ParsedID3v1['comment'] = substr($ParsedID3v1['comment'], 0, 28); - } - $ParsedID3v1['comment'] = $this->cutfield($ParsedID3v1['comment']); - - $ParsedID3v1['genre'] = $this->LookupGenreName($ParsedID3v1['genreid']); - if (!empty($ParsedID3v1['genre'])) { - unset($ParsedID3v1['genreid']); - } - if (isset($ParsedID3v1['genre']) && (empty($ParsedID3v1['genre']) || ($ParsedID3v1['genre'] == 'Unknown'))) { - unset($ParsedID3v1['genre']); - } - - foreach ($ParsedID3v1 as $key => $value) { - $ParsedID3v1['comments'][$key][0] = $value; - } - - // ID3v1 data is supposed to be padded with NULL characters, but some taggers pad with spaces - $GoodFormatID3v1tag = $this->GenerateID3v1Tag( - $ParsedID3v1['title'], - $ParsedID3v1['artist'], - $ParsedID3v1['album'], - $ParsedID3v1['year'], - (isset($ParsedID3v1['genre']) ? $this->LookupGenreID($ParsedID3v1['genre']) : false), - $ParsedID3v1['comment'], - (!empty($ParsedID3v1['track']) ? $ParsedID3v1['track'] : '')); - $ParsedID3v1['padding_valid'] = true; - if ($id3v1tag !== $GoodFormatID3v1tag) { - $ParsedID3v1['padding_valid'] = false; - $info['warning'][] = 'Some ID3v1 fields do not use NULL characters for padding'; - } - - $ParsedID3v1['tag_offset_end'] = $info['filesize']; - $ParsedID3v1['tag_offset_start'] = $ParsedID3v1['tag_offset_end'] - 128; - - $info['id3v1'] = $ParsedID3v1; - } - - if (substr($preid3v1, 0, 3) == 'TAG') { - // The way iTunes handles tags is, well, brain-damaged. - // It completely ignores v1 if ID3v2 is present. - // This goes as far as adding a new v1 tag *even if there already is one* - - // A suspected double-ID3v1 tag has been detected, but it could be that - // the "TAG" identifier is a legitimate part of an APE or Lyrics3 tag - if (substr($preid3v1, 96, 8) == 'APETAGEX') { - // an APE tag footer was found before the last ID3v1, assume false "TAG" synch - } elseif (substr($preid3v1, 119, 6) == 'LYRICS') { - // a Lyrics3 tag footer was found before the last ID3v1, assume false "TAG" synch - } else { - // APE and Lyrics3 footers not found - assume double ID3v1 - $info['warning'][] = 'Duplicate ID3v1 tag detected - this has been known to happen with iTunes'; - $info['avdataend'] -= 128; - } - } - - return true; - } - - static function cutfield($str) { - return trim(substr($str, 0, strcspn($str, "\x00"))); - } - - static function ArrayOfGenres($allowSCMPXextended=false) { - static $GenreLookup = array( - 0 => 'Blues', - 1 => 'Classic Rock', - 2 => 'Country', - 3 => 'Dance', - 4 => 'Disco', - 5 => 'Funk', - 6 => 'Grunge', - 7 => 'Hip-Hop', - 8 => 'Jazz', - 9 => 'Metal', - 10 => 'New Age', - 11 => 'Oldies', - 12 => 'Other', - 13 => 'Pop', - 14 => 'R&B', - 15 => 'Rap', - 16 => 'Reggae', - 17 => 'Rock', - 18 => 'Techno', - 19 => 'Industrial', - 20 => 'Alternative', - 21 => 'Ska', - 22 => 'Death Metal', - 23 => 'Pranks', - 24 => 'Soundtrack', - 25 => 'Euro-Techno', - 26 => 'Ambient', - 27 => 'Trip-Hop', - 28 => 'Vocal', - 29 => 'Jazz+Funk', - 30 => 'Fusion', - 31 => 'Trance', - 32 => 'Classical', - 33 => 'Instrumental', - 34 => 'Acid', - 35 => 'House', - 36 => 'Game', - 37 => 'Sound Clip', - 38 => 'Gospel', - 39 => 'Noise', - 40 => 'Alt. Rock', - 41 => 'Bass', - 42 => 'Soul', - 43 => 'Punk', - 44 => 'Space', - 45 => 'Meditative', - 46 => 'Instrumental Pop', - 47 => 'Instrumental Rock', - 48 => 'Ethnic', - 49 => 'Gothic', - 50 => 'Darkwave', - 51 => 'Techno-Industrial', - 52 => 'Electronic', - 53 => 'Pop-Folk', - 54 => 'Eurodance', - 55 => 'Dream', - 56 => 'Southern Rock', - 57 => 'Comedy', - 58 => 'Cult', - 59 => 'Gangsta Rap', - 60 => 'Top 40', - 61 => 'Christian Rap', - 62 => 'Pop/Funk', - 63 => 'Jungle', - 64 => 'Native American', - 65 => 'Cabaret', - 66 => 'New Wave', - 67 => 'Psychedelic', - 68 => 'Rave', - 69 => 'Showtunes', - 70 => 'Trailer', - 71 => 'Lo-Fi', - 72 => 'Tribal', - 73 => 'Acid Punk', - 74 => 'Acid Jazz', - 75 => 'Polka', - 76 => 'Retro', - 77 => 'Musical', - 78 => 'Rock & Roll', - 79 => 'Hard Rock', - 80 => 'Folk', - 81 => 'Folk/Rock', - 82 => 'National Folk', - 83 => 'Swing', - 84 => 'Fast-Fusion', - 85 => 'Bebob', - 86 => 'Latin', - 87 => 'Revival', - 88 => 'Celtic', - 89 => 'Bluegrass', - 90 => 'Avantgarde', - 91 => 'Gothic Rock', - 92 => 'Progressive Rock', - 93 => 'Psychedelic Rock', - 94 => 'Symphonic Rock', - 95 => 'Slow Rock', - 96 => 'Big Band', - 97 => 'Chorus', - 98 => 'Easy Listening', - 99 => 'Acoustic', - 100 => 'Humour', - 101 => 'Speech', - 102 => 'Chanson', - 103 => 'Opera', - 104 => 'Chamber Music', - 105 => 'Sonata', - 106 => 'Symphony', - 107 => 'Booty Bass', - 108 => 'Primus', - 109 => 'Porn Groove', - 110 => 'Satire', - 111 => 'Slow Jam', - 112 => 'Club', - 113 => 'Tango', - 114 => 'Samba', - 115 => 'Folklore', - 116 => 'Ballad', - 117 => 'Power Ballad', - 118 => 'Rhythmic Soul', - 119 => 'Freestyle', - 120 => 'Duet', - 121 => 'Punk Rock', - 122 => 'Drum Solo', - 123 => 'A Cappella', - 124 => 'Euro-House', - 125 => 'Dance Hall', - 126 => 'Goa', - 127 => 'Drum & Bass', - 128 => 'Club-House', - 129 => 'Hardcore', - 130 => 'Terror', - 131 => 'Indie', - 132 => 'BritPop', - 133 => 'Negerpunk', - 134 => 'Polsk Punk', - 135 => 'Beat', - 136 => 'Christian Gangsta Rap', - 137 => 'Heavy Metal', - 138 => 'Black Metal', - 139 => 'Crossover', - 140 => 'Contemporary Christian', - 141 => 'Christian Rock', - 142 => 'Merengue', - 143 => 'Salsa', - 144 => 'Thrash Metal', - 145 => 'Anime', - 146 => 'JPop', - 147 => 'Synthpop', - - 255 => 'Unknown', - - 'CR' => 'Cover', - 'RX' => 'Remix' - ); - - static $GenreLookupSCMPX = array(); - if ($allowSCMPXextended && empty($GenreLookupSCMPX)) { - $GenreLookupSCMPX = $GenreLookup; - // http://www.geocities.co.jp/SiliconValley-Oakland/3664/alittle.html#GenreExtended - // Extended ID3v1 genres invented by SCMPX - // Note that 255 "Japanese Anime" conflicts with standard "Unknown" - $GenreLookupSCMPX[240] = 'Sacred'; - $GenreLookupSCMPX[241] = 'Northern Europe'; - $GenreLookupSCMPX[242] = 'Irish & Scottish'; - $GenreLookupSCMPX[243] = 'Scotland'; - $GenreLookupSCMPX[244] = 'Ethnic Europe'; - $GenreLookupSCMPX[245] = 'Enka'; - $GenreLookupSCMPX[246] = 'Children\'s Song'; - $GenreLookupSCMPX[247] = 'Japanese Sky'; - $GenreLookupSCMPX[248] = 'Japanese Heavy Rock'; - $GenreLookupSCMPX[249] = 'Japanese Doom Rock'; - $GenreLookupSCMPX[250] = 'Japanese J-POP'; - $GenreLookupSCMPX[251] = 'Japanese Seiyu'; - $GenreLookupSCMPX[252] = 'Japanese Ambient Techno'; - $GenreLookupSCMPX[253] = 'Japanese Moemoe'; - $GenreLookupSCMPX[254] = 'Japanese Tokusatsu'; - //$GenreLookupSCMPX[255] = 'Japanese Anime'; - } - - return ($allowSCMPXextended ? $GenreLookupSCMPX : $GenreLookup); - } - - static function LookupGenreName($genreid, $allowSCMPXextended=true) { - switch ($genreid) { - case 'RX': - case 'CR': - break; - default: - if (!is_numeric($genreid)) { - return false; - } - $genreid = intval($genreid); // to handle 3 or '3' or '03' - break; - } - $GenreLookup = getid3_id3v1::ArrayOfGenres($allowSCMPXextended); - return (isset($GenreLookup[$genreid]) ? $GenreLookup[$genreid] : false); - } - - static function LookupGenreID($genre, $allowSCMPXextended=false) { - $GenreLookup = getid3_id3v1::ArrayOfGenres($allowSCMPXextended); - $LowerCaseNoSpaceSearchTerm = strtolower(str_replace(' ', '', $genre)); - foreach ($GenreLookup as $key => $value) { - if (strtolower(str_replace(' ', '', $value)) == $LowerCaseNoSpaceSearchTerm) { - return $key; - } - } - return false; - } - - static function StandardiseID3v1GenreName($OriginalGenre) { - if (($GenreID = getid3_id3v1::LookupGenreID($OriginalGenre)) !== false) { - return getid3_id3v1::LookupGenreName($GenreID); - } - return $OriginalGenre; - } - - static function GenerateID3v1Tag($title, $artist, $album, $year, $genreid, $comment, $track='') { - $ID3v1Tag = 'TAG'; - $ID3v1Tag .= str_pad(trim(substr($title, 0, 30)), 30, "\x00", STR_PAD_RIGHT); - $ID3v1Tag .= str_pad(trim(substr($artist, 0, 30)), 30, "\x00", STR_PAD_RIGHT); - $ID3v1Tag .= str_pad(trim(substr($album, 0, 30)), 30, "\x00", STR_PAD_RIGHT); - $ID3v1Tag .= str_pad(trim(substr($year, 0, 4)), 4, "\x00", STR_PAD_LEFT); - if (!empty($track) && ($track > 0) && ($track <= 255)) { - $ID3v1Tag .= str_pad(trim(substr($comment, 0, 28)), 28, "\x00", STR_PAD_RIGHT); - $ID3v1Tag .= "\x00"; - if (gettype($track) == 'string') { - $track = (int) $track; - } - $ID3v1Tag .= chr($track); - } else { - $ID3v1Tag .= str_pad(trim(substr($comment, 0, 30)), 30, "\x00", STR_PAD_RIGHT); - } - if (($genreid < 0) || ($genreid > 147)) { - $genreid = 255; // 'unknown' genre - } - switch (gettype($genreid)) { - case 'string': - case 'integer': - $ID3v1Tag .= chr(intval($genreid)); - break; - default: - $ID3v1Tag .= chr(255); // 'unknown' genre - break; - } - - return $ID3v1Tag; - } - -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.tag.id3v2.php b/3rdparty/getid3/module.tag.id3v2.php deleted file mode 100644 index 56adeb9506828469840c424f361c7fbd9a32990a..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.tag.id3v2.php +++ /dev/null @@ -1,3327 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -/// // -// module.tag.id3v2.php // -// module for analyzing ID3v2 tags // -// dependencies: module.tag.id3v1.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v1.php', __FILE__, true); - -class getid3_id3v2 extends getid3_handler -{ - var $inline_attachments = true; // true: return full data for all attachments; false: return no data for all attachments; integer: return data for attachments <= than this; string: save as file to this directory - var $StartingOffset = 0; - - function Analyze() { - $info = &$this->getid3->info; - - // Overall tag structure: - // +-----------------------------+ - // | Header (10 bytes) | - // +-----------------------------+ - // | Extended Header | - // | (variable length, OPTIONAL) | - // +-----------------------------+ - // | Frames (variable length) | - // +-----------------------------+ - // | Padding | - // | (variable length, OPTIONAL) | - // +-----------------------------+ - // | Footer (10 bytes, OPTIONAL) | - // +-----------------------------+ - - // Header - // ID3v2/file identifier "ID3" - // ID3v2 version $04 00 - // ID3v2 flags (%ab000000 in v2.2, %abc00000 in v2.3, %abcd0000 in v2.4.x) - // ID3v2 size 4 * %0xxxxxxx - - - // shortcuts - $info['id3v2']['header'] = true; - $thisfile_id3v2 = &$info['id3v2']; - $thisfile_id3v2['flags'] = array(); - $thisfile_id3v2_flags = &$thisfile_id3v2['flags']; - - - fseek($this->getid3->fp, $this->StartingOffset, SEEK_SET); - $header = fread($this->getid3->fp, 10); - if (substr($header, 0, 3) == 'ID3' && strlen($header) == 10) { - - $thisfile_id3v2['majorversion'] = ord($header{3}); - $thisfile_id3v2['minorversion'] = ord($header{4}); - - // shortcut - $id3v2_majorversion = &$thisfile_id3v2['majorversion']; - - } else { - - unset($info['id3v2']); - return false; - - } - - if ($id3v2_majorversion > 4) { // this script probably won't correctly parse ID3v2.5.x and above (if it ever exists) - - $info['error'][] = 'this script only parses up to ID3v2.4.x - this tag is ID3v2.'.$id3v2_majorversion.'.'.$thisfile_id3v2['minorversion']; - return false; - - } - - $id3_flags = ord($header{5}); - switch ($id3v2_majorversion) { - case 2: - // %ab000000 in v2.2 - $thisfile_id3v2_flags['unsynch'] = (bool) ($id3_flags & 0x80); // a - Unsynchronisation - $thisfile_id3v2_flags['compression'] = (bool) ($id3_flags & 0x40); // b - Compression - break; - - case 3: - // %abc00000 in v2.3 - $thisfile_id3v2_flags['unsynch'] = (bool) ($id3_flags & 0x80); // a - Unsynchronisation - $thisfile_id3v2_flags['exthead'] = (bool) ($id3_flags & 0x40); // b - Extended header - $thisfile_id3v2_flags['experim'] = (bool) ($id3_flags & 0x20); // c - Experimental indicator - break; - - case 4: - // %abcd0000 in v2.4 - $thisfile_id3v2_flags['unsynch'] = (bool) ($id3_flags & 0x80); // a - Unsynchronisation - $thisfile_id3v2_flags['exthead'] = (bool) ($id3_flags & 0x40); // b - Extended header - $thisfile_id3v2_flags['experim'] = (bool) ($id3_flags & 0x20); // c - Experimental indicator - $thisfile_id3v2_flags['isfooter'] = (bool) ($id3_flags & 0x10); // d - Footer present - break; - } - - $thisfile_id3v2['headerlength'] = getid3_lib::BigEndian2Int(substr($header, 6, 4), 1) + 10; // length of ID3v2 tag in 10-byte header doesn't include 10-byte header length - - $thisfile_id3v2['tag_offset_start'] = $this->StartingOffset; - $thisfile_id3v2['tag_offset_end'] = $thisfile_id3v2['tag_offset_start'] + $thisfile_id3v2['headerlength']; - - - - // create 'encoding' key - used by getid3::HandleAllTags() - // in ID3v2 every field can have it's own encoding type - // so force everything to UTF-8 so it can be handled consistantly - $thisfile_id3v2['encoding'] = 'UTF-8'; - - - // Frames - - // All ID3v2 frames consists of one frame header followed by one or more - // fields containing the actual information. The header is always 10 - // bytes and laid out as follows: - // - // Frame ID $xx xx xx xx (four characters) - // Size 4 * %0xxxxxxx - // Flags $xx xx - - $sizeofframes = $thisfile_id3v2['headerlength'] - 10; // not including 10-byte initial header - if (!empty($thisfile_id3v2['exthead']['length'])) { - $sizeofframes -= ($thisfile_id3v2['exthead']['length'] + 4); - } - if (!empty($thisfile_id3v2_flags['isfooter'])) { - $sizeofframes -= 10; // footer takes last 10 bytes of ID3v2 header, after frame data, before audio - } - if ($sizeofframes > 0) { - - $framedata = fread($this->getid3->fp, $sizeofframes); // read all frames from file into $framedata variable - - // if entire frame data is unsynched, de-unsynch it now (ID3v2.3.x) - if (!empty($thisfile_id3v2_flags['unsynch']) && ($id3v2_majorversion <= 3)) { - $framedata = $this->DeUnsynchronise($framedata); - } - // [in ID3v2.4.0] Unsynchronisation [S:6.1] is done on frame level, instead - // of on tag level, making it easier to skip frames, increasing the streamability - // of the tag. The unsynchronisation flag in the header [S:3.1] indicates that - // there exists an unsynchronised frame, while the new unsynchronisation flag in - // the frame header [S:4.1.2] indicates unsynchronisation. - - - //$framedataoffset = 10 + ($thisfile_id3v2['exthead']['length'] ? $thisfile_id3v2['exthead']['length'] + 4 : 0); // how many bytes into the stream - start from after the 10-byte header (and extended header length+4, if present) - $framedataoffset = 10; // how many bytes into the stream - start from after the 10-byte header - - - // Extended Header - if (!empty($thisfile_id3v2_flags['exthead'])) { - $extended_header_offset = 0; - - if ($id3v2_majorversion == 3) { - - // v2.3 definition: - //Extended header size $xx xx xx xx // 32-bit integer - //Extended Flags $xx xx - // %x0000000 %00000000 // v2.3 - // x - CRC data present - //Size of padding $xx xx xx xx - - $thisfile_id3v2['exthead']['length'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4), 0); - $extended_header_offset += 4; - - $thisfile_id3v2['exthead']['flag_bytes'] = 2; - $thisfile_id3v2['exthead']['flag_raw'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, $thisfile_id3v2['exthead']['flag_bytes'])); - $extended_header_offset += $thisfile_id3v2['exthead']['flag_bytes']; - - $thisfile_id3v2['exthead']['flags']['crc'] = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x8000); - - $thisfile_id3v2['exthead']['padding_size'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4)); - $extended_header_offset += 4; - - if ($thisfile_id3v2['exthead']['flags']['crc']) { - $thisfile_id3v2['exthead']['flag_data']['crc'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4)); - $extended_header_offset += 4; - } - $extended_header_offset += $thisfile_id3v2['exthead']['padding_size']; - - } elseif ($id3v2_majorversion == 4) { - - // v2.4 definition: - //Extended header size 4 * %0xxxxxxx // 28-bit synchsafe integer - //Number of flag bytes $01 - //Extended Flags $xx - // %0bcd0000 // v2.4 - // b - Tag is an update - // Flag data length $00 - // c - CRC data present - // Flag data length $05 - // Total frame CRC 5 * %0xxxxxxx - // d - Tag restrictions - // Flag data length $01 - - $thisfile_id3v2['exthead']['length'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4), true); - $extended_header_offset += 4; - - $thisfile_id3v2['exthead']['flag_bytes'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should always be 1 - $extended_header_offset += 1; - - $thisfile_id3v2['exthead']['flag_raw'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, $thisfile_id3v2['exthead']['flag_bytes'])); - $extended_header_offset += $thisfile_id3v2['exthead']['flag_bytes']; - - $thisfile_id3v2['exthead']['flags']['update'] = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x40); - $thisfile_id3v2['exthead']['flags']['crc'] = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x20); - $thisfile_id3v2['exthead']['flags']['restrictions'] = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x10); - - if ($thisfile_id3v2['exthead']['flags']['update']) { - $ext_header_chunk_length = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should be 0 - $extended_header_offset += 1; - } - - if ($thisfile_id3v2['exthead']['flags']['crc']) { - $ext_header_chunk_length = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should be 5 - $extended_header_offset += 1; - $thisfile_id3v2['exthead']['flag_data']['crc'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, $ext_header_chunk_length), true, false); - $extended_header_offset += $ext_header_chunk_length; - } - - if ($thisfile_id3v2['exthead']['flags']['restrictions']) { - $ext_header_chunk_length = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should be 1 - $extended_header_offset += 1; - - // %ppqrrstt - $restrictions_raw = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); - $extended_header_offset += 1; - $thisfile_id3v2['exthead']['flags']['restrictions']['tagsize'] = ($restrictions_raw & 0xC0) >> 6; // p - Tag size restrictions - $thisfile_id3v2['exthead']['flags']['restrictions']['textenc'] = ($restrictions_raw & 0x20) >> 5; // q - Text encoding restrictions - $thisfile_id3v2['exthead']['flags']['restrictions']['textsize'] = ($restrictions_raw & 0x18) >> 3; // r - Text fields size restrictions - $thisfile_id3v2['exthead']['flags']['restrictions']['imgenc'] = ($restrictions_raw & 0x04) >> 2; // s - Image encoding restrictions - $thisfile_id3v2['exthead']['flags']['restrictions']['imgsize'] = ($restrictions_raw & 0x03) >> 0; // t - Image size restrictions - - $thisfile_id3v2['exthead']['flags']['restrictions_text']['tagsize'] = $this->LookupExtendedHeaderRestrictionsTagSizeLimits($thisfile_id3v2['exthead']['flags']['restrictions']['tagsize']); - $thisfile_id3v2['exthead']['flags']['restrictions_text']['textenc'] = $this->LookupExtendedHeaderRestrictionsTextEncodings($thisfile_id3v2['exthead']['flags']['restrictions']['textenc']); - $thisfile_id3v2['exthead']['flags']['restrictions_text']['textsize'] = $this->LookupExtendedHeaderRestrictionsTextFieldSize($thisfile_id3v2['exthead']['flags']['restrictions']['textsize']); - $thisfile_id3v2['exthead']['flags']['restrictions_text']['imgenc'] = $this->LookupExtendedHeaderRestrictionsImageEncoding($thisfile_id3v2['exthead']['flags']['restrictions']['imgenc']); - $thisfile_id3v2['exthead']['flags']['restrictions_text']['imgsize'] = $this->LookupExtendedHeaderRestrictionsImageSizeSize($thisfile_id3v2['exthead']['flags']['restrictions']['imgsize']); - } - - if ($thisfile_id3v2['exthead']['length'] != $extended_header_offset) { - $info['warning'][] = 'ID3v2.4 extended header length mismatch (expecting '.intval($thisfile_id3v2['exthead']['length']).', found '.intval($extended_header_offset).')'; - } - } - - $framedataoffset += $extended_header_offset; - $framedata = substr($framedata, $extended_header_offset); - } // end extended header - - - while (isset($framedata) && (strlen($framedata) > 0)) { // cycle through until no more frame data is left to parse - if (strlen($framedata) <= $this->ID3v2HeaderLength($id3v2_majorversion)) { - // insufficient room left in ID3v2 header for actual data - must be padding - $thisfile_id3v2['padding']['start'] = $framedataoffset; - $thisfile_id3v2['padding']['length'] = strlen($framedata); - $thisfile_id3v2['padding']['valid'] = true; - for ($i = 0; $i < $thisfile_id3v2['padding']['length']; $i++) { - if ($framedata{$i} != "\x00") { - $thisfile_id3v2['padding']['valid'] = false; - $thisfile_id3v2['padding']['errorpos'] = $thisfile_id3v2['padding']['start'] + $i; - $info['warning'][] = 'Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)'; - break; - } - } - break; // skip rest of ID3v2 header - } - if ($id3v2_majorversion == 2) { - // Frame ID $xx xx xx (three characters) - // Size $xx xx xx (24-bit integer) - // Flags $xx xx - - $frame_header = substr($framedata, 0, 6); // take next 6 bytes for header - $framedata = substr($framedata, 6); // and leave the rest in $framedata - $frame_name = substr($frame_header, 0, 3); - $frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 3, 3), 0); - $frame_flags = 0; // not used for anything in ID3v2.2, just set to avoid E_NOTICEs - - } elseif ($id3v2_majorversion > 2) { - - // Frame ID $xx xx xx xx (four characters) - // Size $xx xx xx xx (32-bit integer in v2.3, 28-bit synchsafe in v2.4+) - // Flags $xx xx - - $frame_header = substr($framedata, 0, 10); // take next 10 bytes for header - $framedata = substr($framedata, 10); // and leave the rest in $framedata - - $frame_name = substr($frame_header, 0, 4); - if ($id3v2_majorversion == 3) { - $frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0); // 32-bit integer - } else { // ID3v2.4+ - $frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 1); // 32-bit synchsafe integer (28-bit value) - } - - if ($frame_size < (strlen($framedata) + 4)) { - $nextFrameID = substr($framedata, $frame_size, 4); - if ($this->IsValidID3v2FrameName($nextFrameID, $id3v2_majorversion)) { - // next frame is OK - } elseif (($frame_name == "\x00".'MP3') || ($frame_name == "\x00\x00".'MP') || ($frame_name == ' MP3') || ($frame_name == 'MP3e')) { - // MP3ext known broken frames - "ok" for the purposes of this test - } elseif (($id3v2_majorversion == 4) && ($this->IsValidID3v2FrameName(substr($framedata, getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0), 4), 3))) { - $info['warning'][] = 'ID3v2 tag written as ID3v2.4, but with non-synchsafe integers (ID3v2.3 style). Older versions of (Helium2; iTunes) are known culprits of this. Tag has been parsed as ID3v2.3'; - $id3v2_majorversion = 3; - $frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0); // 32-bit integer - } - } - - - $frame_flags = getid3_lib::BigEndian2Int(substr($frame_header, 8, 2)); - } - - if ((($id3v2_majorversion == 2) && ($frame_name == "\x00\x00\x00")) || ($frame_name == "\x00\x00\x00\x00")) { - // padding encountered - - $thisfile_id3v2['padding']['start'] = $framedataoffset; - $thisfile_id3v2['padding']['length'] = strlen($frame_header) + strlen($framedata); - $thisfile_id3v2['padding']['valid'] = true; - - $len = strlen($framedata); - for ($i = 0; $i < $len; $i++) { - if ($framedata{$i} != "\x00") { - $thisfile_id3v2['padding']['valid'] = false; - $thisfile_id3v2['padding']['errorpos'] = $thisfile_id3v2['padding']['start'] + $i; - $info['warning'][] = 'Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)'; - break; - } - } - break; // skip rest of ID3v2 header - } - - if ($frame_name == 'COM ') { - $info['warning'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: IsValidID3v2FrameName("'.str_replace("\x00", ' ', $frame_name).'", '.$id3v2_majorversion.'))). [Note: this particular error has been known to happen with tags edited by iTunes (versions "X v2.0.3", "v3.0.1" are known-guilty, probably others too)]'; - $frame_name = 'COMM'; - } - if (($frame_size <= strlen($framedata)) && ($this->IsValidID3v2FrameName($frame_name, $id3v2_majorversion))) { - - unset($parsedFrame); - $parsedFrame['frame_name'] = $frame_name; - $parsedFrame['frame_flags_raw'] = $frame_flags; - $parsedFrame['data'] = substr($framedata, 0, $frame_size); - $parsedFrame['datalength'] = getid3_lib::CastAsInt($frame_size); - $parsedFrame['dataoffset'] = $framedataoffset; - - $this->ParseID3v2Frame($parsedFrame); - $thisfile_id3v2[$frame_name][] = $parsedFrame; - - $framedata = substr($framedata, $frame_size); - - } else { // invalid frame length or FrameID - - if ($frame_size <= strlen($framedata)) { - - if ($this->IsValidID3v2FrameName(substr($framedata, $frame_size, 4), $id3v2_majorversion)) { - - // next frame is valid, just skip the current frame - $framedata = substr($framedata, $frame_size); - $info['warning'][] = 'Next ID3v2 frame is valid, skipping current frame.'; - - } else { - - // next frame is invalid too, abort processing - //unset($framedata); - $framedata = null; - $info['error'][] = 'Next ID3v2 frame is also invalid, aborting processing.'; - - } - - } elseif ($frame_size == strlen($framedata)) { - - // this is the last frame, just skip - $info['warning'][] = 'This was the last ID3v2 frame.'; - - } else { - - // next frame is invalid too, abort processing - //unset($framedata); - $framedata = null; - $info['warning'][] = 'Invalid ID3v2 frame size, aborting.'; - - } - if (!$this->IsValidID3v2FrameName($frame_name, $id3v2_majorversion)) { - - switch ($frame_name) { - case "\x00\x00".'MP': - case "\x00".'MP3': - case ' MP3': - case 'MP3e': - case "\x00".'MP': - case ' MP': - case 'MP3': - $info['warning'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: !IsValidID3v2FrameName("'.str_replace("\x00", ' ', $frame_name).'", '.$id3v2_majorversion.'))). [Note: this particular error has been known to happen with tags edited by "MP3ext (www.mutschler.de/mp3ext/)"]'; - break; - - default: - $info['warning'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: !IsValidID3v2FrameName("'.str_replace("\x00", ' ', $frame_name).'", '.$id3v2_majorversion.'))).'; - break; - } - - } elseif (!isset($framedata) || ($frame_size > strlen($framedata))) { - - $info['error'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: $frame_size ('.$frame_size.') > strlen($framedata) ('.(isset($framedata) ? strlen($framedata) : 'null').')).'; - - } else { - - $info['error'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag).'; - - } - - } - $framedataoffset += ($frame_size + $this->ID3v2HeaderLength($id3v2_majorversion)); - - } - - } - - - // Footer - - // The footer is a copy of the header, but with a different identifier. - // ID3v2 identifier "3DI" - // ID3v2 version $04 00 - // ID3v2 flags %abcd0000 - // ID3v2 size 4 * %0xxxxxxx - - if (isset($thisfile_id3v2_flags['isfooter']) && $thisfile_id3v2_flags['isfooter']) { - $footer = fread($this->getid3->fp, 10); - if (substr($footer, 0, 3) == '3DI') { - $thisfile_id3v2['footer'] = true; - $thisfile_id3v2['majorversion_footer'] = ord($footer{3}); - $thisfile_id3v2['minorversion_footer'] = ord($footer{4}); - } - if ($thisfile_id3v2['majorversion_footer'] <= 4) { - $id3_flags = ord(substr($footer{5})); - $thisfile_id3v2_flags['unsynch_footer'] = (bool) ($id3_flags & 0x80); - $thisfile_id3v2_flags['extfoot_footer'] = (bool) ($id3_flags & 0x40); - $thisfile_id3v2_flags['experim_footer'] = (bool) ($id3_flags & 0x20); - $thisfile_id3v2_flags['isfooter_footer'] = (bool) ($id3_flags & 0x10); - - $thisfile_id3v2['footerlength'] = getid3_lib::BigEndian2Int(substr($footer, 6, 4), 1); - } - } // end footer - - if (isset($thisfile_id3v2['comments']['genre'])) { - foreach ($thisfile_id3v2['comments']['genre'] as $key => $value) { - unset($thisfile_id3v2['comments']['genre'][$key]); - $thisfile_id3v2['comments'] = getid3_lib::array_merge_noclobber($thisfile_id3v2['comments'], array('genre'=>$this->ParseID3v2GenreString($value))); - } - } - - if (isset($thisfile_id3v2['comments']['track'])) { - foreach ($thisfile_id3v2['comments']['track'] as $key => $value) { - if (strstr($value, '/')) { - list($thisfile_id3v2['comments']['tracknum'][$key], $thisfile_id3v2['comments']['totaltracks'][$key]) = explode('/', $thisfile_id3v2['comments']['track'][$key]); - } - } - } - - if (!isset($thisfile_id3v2['comments']['year']) && !empty($thisfile_id3v2['comments']['recording_time'][0]) && preg_match('#^([0-9]{4})#', trim($thisfile_id3v2['comments']['recording_time'][0]), $matches)) { - $thisfile_id3v2['comments']['year'] = array($matches[1]); - } - - - if (!empty($thisfile_id3v2['TXXX'])) { - // MediaMonkey does this, maybe others: write a blank RGAD frame, but put replay-gain adjustment values in TXXX frames - foreach ($thisfile_id3v2['TXXX'] as $txxx_array) { - switch ($txxx_array['description']) { - case 'replaygain_track_gain': - if (empty($info['replay_gain']['track']['adjustment']) && !empty($txxx_array['data'])) { - $info['replay_gain']['track']['adjustment'] = floatval(trim(str_replace('dB', '', $txxx_array['data']))); - } - break; - case 'replaygain_track_peak': - if (empty($info['replay_gain']['track']['peak']) && !empty($txxx_array['data'])) { - $info['replay_gain']['track']['peak'] = floatval($txxx_array['data']); - } - break; - case 'replaygain_album_gain': - if (empty($info['replay_gain']['album']['adjustment']) && !empty($txxx_array['data'])) { - $info['replay_gain']['album']['adjustment'] = floatval(trim(str_replace('dB', '', $txxx_array['data']))); - } - break; - } - } - } - - - // Set avdataoffset - $info['avdataoffset'] = $thisfile_id3v2['headerlength']; - if (isset($thisfile_id3v2['footer'])) { - $info['avdataoffset'] += 10; - } - - return true; - } - - - function ParseID3v2GenreString($genrestring) { - // Parse genres into arrays of genreName and genreID - // ID3v2.2.x, ID3v2.3.x: '(21)' or '(4)Eurodisco' or '(51)(39)' or '(55)((I think...)' - // ID3v2.4.x: '21' $00 'Eurodisco' $00 - $clean_genres = array(); - if (strpos($genrestring, "\x00") === false) { - $genrestring = preg_replace('#\(([0-9]{1,3})\)#', '$1'."\x00", $genrestring); - } - $genre_elements = explode("\x00", $genrestring); - foreach ($genre_elements as $element) { - $element = trim($element); - if ($element) { - if (preg_match('#^[0-9]{1,3}#', $element)) { - $clean_genres[] = getid3_id3v1::LookupGenreName($element); - } else { - $clean_genres[] = str_replace('((', '(', $element); - } - } - } - return $clean_genres; - } - - - function ParseID3v2Frame(&$parsedFrame) { - - // shortcuts - $info = &$this->getid3->info; - $id3v2_majorversion = $info['id3v2']['majorversion']; - - $parsedFrame['framenamelong'] = $this->FrameNameLongLookup($parsedFrame['frame_name']); - if (empty($parsedFrame['framenamelong'])) { - unset($parsedFrame['framenamelong']); - } - $parsedFrame['framenameshort'] = $this->FrameNameShortLookup($parsedFrame['frame_name']); - if (empty($parsedFrame['framenameshort'])) { - unset($parsedFrame['framenameshort']); - } - - if ($id3v2_majorversion >= 3) { // frame flags are not part of the ID3v2.2 standard - if ($id3v2_majorversion == 3) { - // Frame Header Flags - // %abc00000 %ijk00000 - $parsedFrame['flags']['TagAlterPreservation'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x8000); // a - Tag alter preservation - $parsedFrame['flags']['FileAlterPreservation'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x4000); // b - File alter preservation - $parsedFrame['flags']['ReadOnly'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x2000); // c - Read only - $parsedFrame['flags']['compression'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0080); // i - Compression - $parsedFrame['flags']['Encryption'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0040); // j - Encryption - $parsedFrame['flags']['GroupingIdentity'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0020); // k - Grouping identity - - } elseif ($id3v2_majorversion == 4) { - // Frame Header Flags - // %0abc0000 %0h00kmnp - $parsedFrame['flags']['TagAlterPreservation'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x4000); // a - Tag alter preservation - $parsedFrame['flags']['FileAlterPreservation'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x2000); // b - File alter preservation - $parsedFrame['flags']['ReadOnly'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x1000); // c - Read only - $parsedFrame['flags']['GroupingIdentity'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0040); // h - Grouping identity - $parsedFrame['flags']['compression'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0008); // k - Compression - $parsedFrame['flags']['Encryption'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0004); // m - Encryption - $parsedFrame['flags']['Unsynchronisation'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0002); // n - Unsynchronisation - $parsedFrame['flags']['DataLengthIndicator'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x0001); // p - Data length indicator - - // Frame-level de-unsynchronisation - ID3v2.4 - if ($parsedFrame['flags']['Unsynchronisation']) { - $parsedFrame['data'] = $this->DeUnsynchronise($parsedFrame['data']); - } - - if ($parsedFrame['flags']['DataLengthIndicator']) { - $parsedFrame['data_length_indicator'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 0, 4), 1); - $parsedFrame['data'] = substr($parsedFrame['data'], 4); - } - } - - // Frame-level de-compression - if ($parsedFrame['flags']['compression']) { - $parsedFrame['decompressed_size'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 0, 4)); - if (!function_exists('gzuncompress')) { - $info['warning'][] = 'gzuncompress() support required to decompress ID3v2 frame "'.$parsedFrame['frame_name'].'"'; - } else { - if ($decompresseddata = @gzuncompress(substr($parsedFrame['data'], 4))) { - //if ($decompresseddata = @gzuncompress($parsedFrame['data'])) { - $parsedFrame['data'] = $decompresseddata; - unset($decompresseddata); - } else { - $info['warning'][] = 'gzuncompress() failed on compressed contents of ID3v2 frame "'.$parsedFrame['frame_name'].'"'; - } - } - } - } - - if (!empty($parsedFrame['flags']['DataLengthIndicator'])) { - if ($parsedFrame['data_length_indicator'] != strlen($parsedFrame['data'])) { - $info['warning'][] = 'ID3v2 frame "'.$parsedFrame['frame_name'].'" should be '.$parsedFrame['data_length_indicator'].' bytes long according to DataLengthIndicator, but found '.strlen($parsedFrame['data']).' bytes of data'; - } - } - - if (isset($parsedFrame['datalength']) && ($parsedFrame['datalength'] == 0)) { - - $warning = 'Frame "'.$parsedFrame['frame_name'].'" at offset '.$parsedFrame['dataoffset'].' has no data portion'; - switch ($parsedFrame['frame_name']) { - case 'WCOM': - $warning .= ' (this is known to happen with files tagged by RioPort)'; - break; - - default: - break; - } - $info['warning'][] = $warning; - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'UFID')) || // 4.1 UFID Unique file identifier - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'UFI'))) { // 4.1 UFI Unique file identifier - // There may be more than one 'UFID' frame in a tag, - // but only one with the same 'Owner identifier'. - //
    - // Owner identifier $00 - // Identifier - $exploded = explode("\x00", $parsedFrame['data'], 2); - $parsedFrame['ownerid'] = (isset($exploded[0]) ? $exploded[0] : ''); - $parsedFrame['data'] = (isset($exploded[1]) ? $exploded[1] : ''); - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'TXXX')) || // 4.2.2 TXXX User defined text information frame - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'TXX'))) { // 4.2.2 TXX User defined text information frame - // There may be more than one 'TXXX' frame in each tag, - // but only one with the same description. - //
    - // Text encoding $xx - // Description $00 (00) - // Value - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['description'] = $frame_description; - $parsedFrame['data'] = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding))); - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = trim(getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data'])); - } - //unset($parsedFrame['data']); do not unset, may be needed elsewhere, e.g. for replaygain - - - } elseif ($parsedFrame['frame_name']{0} == 'T') { // 4.2. T??[?] Text information frame - // There may only be one text information frame of its kind in an tag. - //
    - // Text encoding $xx - // Information - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - $string = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']); - $string = rtrim($string, "\x00"); // remove possible terminating null (put by encoding id or software bug) - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = $string; - unset($string); - } - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'WXXX')) || // 4.3.2 WXXX User defined URL link frame - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'WXX'))) { // 4.3.2 WXX User defined URL link frame - // There may be more than one 'WXXX' frame in each tag, - // but only one with the same description - //
    - // Text encoding $xx - // Description $00 (00) - // URL - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $parsedFrame['data'] = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding))); - - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding)); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - if ($frame_terminatorpos) { - // there are null bytes after the data - this is not according to spec - // only use data up to first null byte - $frame_urldata = (string) substr($parsedFrame['data'], 0, $frame_terminatorpos); - } else { - // no null bytes following data, just use all data - $frame_urldata = (string) $parsedFrame['data']; - } - - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['url'] = $frame_urldata; - $parsedFrame['description'] = $frame_description; - if (!empty($parsedFrame['framenameshort']) && $parsedFrame['url']) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['url']); - } - unset($parsedFrame['data']); - - - } elseif ($parsedFrame['frame_name']{0} == 'W') { // 4.3. W??? URL link frames - // There may only be one URL link frame of its kind in a tag, - // except when stated otherwise in the frame description - //
    - // URL - - $parsedFrame['url'] = trim($parsedFrame['data']); - if (!empty($parsedFrame['framenameshort']) && $parsedFrame['url']) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = $parsedFrame['url']; - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion == 3) && ($parsedFrame['frame_name'] == 'IPLS')) || // 4.4 IPLS Involved people list (ID3v2.3 only) - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'IPL'))) { // 4.4 IPL Involved people list (ID3v2.2 only) - // There may only be one 'IPL' frame in each tag - //
    - // Text encoding $xx - // People list strings - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($parsedFrame['encodingid']); - - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']); - } - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'MCDI')) || // 4.4 MCDI Music CD identifier - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'MCI'))) { // 4.5 MCI Music CD identifier - // There may only be one 'MCDI' frame in each tag - //
    - // CD TOC - - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = $parsedFrame['data']; - } - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'ETCO')) || // 4.5 ETCO Event timing codes - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'ETC'))) { // 4.6 ETC Event timing codes - // There may only be one 'ETCO' frame in each tag - //
    - // Time stamp format $xx - // Where time stamp format is: - // $01 (32-bit value) MPEG frames from beginning of file - // $02 (32-bit value) milliseconds from beginning of file - // Followed by a list of key events in the following format: - // Type of event $xx - // Time stamp $xx (xx ...) - // The 'Time stamp' is set to zero if directly at the beginning of the sound - // or after the previous event. All events MUST be sorted in chronological order. - - $frame_offset = 0; - $parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - - while ($frame_offset < strlen($parsedFrame['data'])) { - $parsedFrame['typeid'] = substr($parsedFrame['data'], $frame_offset++, 1); - $parsedFrame['type'] = $this->ETCOEventLookup($parsedFrame['typeid']); - $parsedFrame['timestamp'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4)); - $frame_offset += 4; - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'MLLT')) || // 4.6 MLLT MPEG location lookup table - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'MLL'))) { // 4.7 MLL MPEG location lookup table - // There may only be one 'MLLT' frame in each tag - //
    - // MPEG frames between reference $xx xx - // Bytes between reference $xx xx xx - // Milliseconds between reference $xx xx xx - // Bits for bytes deviation $xx - // Bits for milliseconds dev. $xx - // Then for every reference the following data is included; - // Deviation in bytes %xxx.... - // Deviation in milliseconds %xxx.... - - $frame_offset = 0; - $parsedFrame['framesbetweenreferences'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 0, 2)); - $parsedFrame['bytesbetweenreferences'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 2, 3)); - $parsedFrame['msbetweenreferences'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 5, 3)); - $parsedFrame['bitsforbytesdeviation'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 8, 1)); - $parsedFrame['bitsformsdeviation'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 9, 1)); - $parsedFrame['data'] = substr($parsedFrame['data'], 10); - while ($frame_offset < strlen($parsedFrame['data'])) { - $deviationbitstream .= getid3_lib::BigEndian2Bin(substr($parsedFrame['data'], $frame_offset++, 1)); - } - $reference_counter = 0; - while (strlen($deviationbitstream) > 0) { - $parsedFrame[$reference_counter]['bytedeviation'] = bindec(substr($deviationbitstream, 0, $parsedFrame['bitsforbytesdeviation'])); - $parsedFrame[$reference_counter]['msdeviation'] = bindec(substr($deviationbitstream, $parsedFrame['bitsforbytesdeviation'], $parsedFrame['bitsformsdeviation'])); - $deviationbitstream = substr($deviationbitstream, $parsedFrame['bitsforbytesdeviation'] + $parsedFrame['bitsformsdeviation']); - $reference_counter++; - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'SYTC')) || // 4.7 SYTC Synchronised tempo codes - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'STC'))) { // 4.8 STC Synchronised tempo codes - // There may only be one 'SYTC' frame in each tag - //
    - // Time stamp format $xx - // Tempo data - // Where time stamp format is: - // $01 (32-bit value) MPEG frames from beginning of file - // $02 (32-bit value) milliseconds from beginning of file - - $frame_offset = 0; - $parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $timestamp_counter = 0; - while ($frame_offset < strlen($parsedFrame['data'])) { - $parsedFrame[$timestamp_counter]['tempo'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ($parsedFrame[$timestamp_counter]['tempo'] == 255) { - $parsedFrame[$timestamp_counter]['tempo'] += ord(substr($parsedFrame['data'], $frame_offset++, 1)); - } - $parsedFrame[$timestamp_counter]['timestamp'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4)); - $frame_offset += 4; - $timestamp_counter++; - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'USLT')) || // 4.8 USLT Unsynchronised lyric/text transcription - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'ULT'))) { // 4.9 ULT Unsynchronised lyric/text transcription - // There may be more than one 'Unsynchronised lyrics/text transcription' frame - // in each tag, but only one with the same language and content descriptor. - //
    - // Text encoding $xx - // Language $xx xx xx - // Content descriptor $00 (00) - // Lyrics/text - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $frame_language = substr($parsedFrame['data'], $frame_offset, 3); - $frame_offset += 3; - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $parsedFrame['data'] = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding))); - - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['data'] = $parsedFrame['data']; - $parsedFrame['language'] = $frame_language; - $parsedFrame['languagename'] = $this->LanguageLookup($frame_language, false); - $parsedFrame['description'] = $frame_description; - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']); - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'SYLT')) || // 4.9 SYLT Synchronised lyric/text - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'SLT'))) { // 4.10 SLT Synchronised lyric/text - // There may be more than one 'SYLT' frame in each tag, - // but only one with the same language and content descriptor. - //
    - // Text encoding $xx - // Language $xx xx xx - // Time stamp format $xx - // $01 (32-bit value) MPEG frames from beginning of file - // $02 (32-bit value) milliseconds from beginning of file - // Content type $xx - // Content descriptor $00 (00) - // Terminated text to be synced (typically a syllable) - // Sync identifier (terminator to above string) $00 (00) - // Time stamp $xx (xx ...) - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $frame_language = substr($parsedFrame['data'], $frame_offset, 3); - $frame_offset += 3; - $parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['contenttypeid'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['contenttype'] = $this->SYTLContentTypeLookup($parsedFrame['contenttypeid']); - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['language'] = $frame_language; - $parsedFrame['languagename'] = $this->LanguageLookup($frame_language, false); - - $timestampindex = 0; - $frame_remainingdata = substr($parsedFrame['data'], $frame_offset); - while (strlen($frame_remainingdata)) { - $frame_offset = 0; - $frame_terminatorpos = strpos($frame_remainingdata, $this->TextEncodingTerminatorLookup($frame_textencoding)); - if ($frame_terminatorpos === false) { - $frame_remainingdata = ''; - } else { - if (ord(substr($frame_remainingdata, $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $parsedFrame['lyrics'][$timestampindex]['data'] = substr($frame_remainingdata, $frame_offset, $frame_terminatorpos - $frame_offset); - - $frame_remainingdata = substr($frame_remainingdata, $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding))); - if (($timestampindex == 0) && (ord($frame_remainingdata{0}) != 0)) { - // timestamp probably omitted for first data item - } else { - $parsedFrame['lyrics'][$timestampindex]['timestamp'] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 0, 4)); - $frame_remainingdata = substr($frame_remainingdata, 4); - } - $timestampindex++; - } - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'COMM')) || // 4.10 COMM Comments - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'COM'))) { // 4.11 COM Comments - // There may be more than one comment frame in each tag, - // but only one with the same language and content descriptor. - //
    - // Text encoding $xx - // Language $xx xx xx - // Short content descrip. $00 (00) - // The actual text - - if (strlen($parsedFrame['data']) < 5) { - - $info['warning'][] = 'Invalid data (too short) for "'.$parsedFrame['frame_name'].'" frame at offset '.$parsedFrame['dataoffset']; - - } else { - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $frame_language = substr($parsedFrame['data'], $frame_offset, 3); - $frame_offset += 3; - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $frame_text = (string) substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding))); - - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['language'] = $frame_language; - $parsedFrame['languagename'] = $this->LanguageLookup($frame_language, false); - $parsedFrame['description'] = $frame_description; - $parsedFrame['data'] = $frame_text; - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']); - } - - } - - } elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'RVA2')) { // 4.11 RVA2 Relative volume adjustment (2) (ID3v2.4+ only) - // There may be more than one 'RVA2' frame in each tag, - // but only one with the same identification string - //
    - // Identification $00 - // The 'identification' string is used to identify the situation and/or - // device where this adjustment should apply. The following is then - // repeated for every channel: - // Type of channel $xx - // Volume adjustment $xx xx - // Bits representing peak $xx - // Peak volume $xx (xx ...) - - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00"); - $frame_idstring = substr($parsedFrame['data'], 0, $frame_terminatorpos); - if (ord($frame_idstring) === 0) { - $frame_idstring = ''; - } - $frame_remainingdata = substr($parsedFrame['data'], $frame_terminatorpos + strlen("\x00")); - $parsedFrame['description'] = $frame_idstring; - $RVA2channelcounter = 0; - while (strlen($frame_remainingdata) >= 5) { - $frame_offset = 0; - $frame_channeltypeid = ord(substr($frame_remainingdata, $frame_offset++, 1)); - $parsedFrame[$RVA2channelcounter]['channeltypeid'] = $frame_channeltypeid; - $parsedFrame[$RVA2channelcounter]['channeltype'] = $this->RVA2ChannelTypeLookup($frame_channeltypeid); - $parsedFrame[$RVA2channelcounter]['volumeadjust'] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, $frame_offset, 2), false, true); // 16-bit signed - $frame_offset += 2; - $parsedFrame[$RVA2channelcounter]['bitspeakvolume'] = ord(substr($frame_remainingdata, $frame_offset++, 1)); - if (($parsedFrame[$RVA2channelcounter]['bitspeakvolume'] < 1) || ($parsedFrame[$RVA2channelcounter]['bitspeakvolume'] > 4)) { - $info['warning'][] = 'ID3v2::RVA2 frame['.$RVA2channelcounter.'] contains invalid '.$parsedFrame[$RVA2channelcounter]['bitspeakvolume'].'-byte bits-representing-peak value'; - break; - } - $frame_bytespeakvolume = ceil($parsedFrame[$RVA2channelcounter]['bitspeakvolume'] / 8); - $parsedFrame[$RVA2channelcounter]['peakvolume'] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, $frame_offset, $frame_bytespeakvolume)); - $frame_remainingdata = substr($frame_remainingdata, $frame_offset + $frame_bytespeakvolume); - $RVA2channelcounter++; - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion == 3) && ($parsedFrame['frame_name'] == 'RVAD')) || // 4.12 RVAD Relative volume adjustment (ID3v2.3 only) - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'RVA'))) { // 4.12 RVA Relative volume adjustment (ID3v2.2 only) - // There may only be one 'RVA' frame in each tag - //
    - // ID3v2.2 => Increment/decrement %000000ba - // ID3v2.3 => Increment/decrement %00fedcba - // Bits used for volume descr. $xx - // Relative volume change, right $xx xx (xx ...) // a - // Relative volume change, left $xx xx (xx ...) // b - // Peak volume right $xx xx (xx ...) - // Peak volume left $xx xx (xx ...) - // ID3v2.3 only, optional (not present in ID3v2.2): - // Relative volume change, right back $xx xx (xx ...) // c - // Relative volume change, left back $xx xx (xx ...) // d - // Peak volume right back $xx xx (xx ...) - // Peak volume left back $xx xx (xx ...) - // ID3v2.3 only, optional (not present in ID3v2.2): - // Relative volume change, center $xx xx (xx ...) // e - // Peak volume center $xx xx (xx ...) - // ID3v2.3 only, optional (not present in ID3v2.2): - // Relative volume change, bass $xx xx (xx ...) // f - // Peak volume bass $xx xx (xx ...) - - $frame_offset = 0; - $frame_incrdecrflags = getid3_lib::BigEndian2Bin(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['incdec']['right'] = (bool) substr($frame_incrdecrflags, 6, 1); - $parsedFrame['incdec']['left'] = (bool) substr($frame_incrdecrflags, 7, 1); - $parsedFrame['bitsvolume'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $frame_bytesvolume = ceil($parsedFrame['bitsvolume'] / 8); - $parsedFrame['volumechange']['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - if ($parsedFrame['incdec']['right'] === false) { - $parsedFrame['volumechange']['right'] *= -1; - } - $frame_offset += $frame_bytesvolume; - $parsedFrame['volumechange']['left'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - if ($parsedFrame['incdec']['left'] === false) { - $parsedFrame['volumechange']['left'] *= -1; - } - $frame_offset += $frame_bytesvolume; - $parsedFrame['peakvolume']['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - $frame_offset += $frame_bytesvolume; - $parsedFrame['peakvolume']['left'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - $frame_offset += $frame_bytesvolume; - if ($id3v2_majorversion == 3) { - $parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset); - if (strlen($parsedFrame['data']) > 0) { - $parsedFrame['incdec']['rightrear'] = (bool) substr($frame_incrdecrflags, 4, 1); - $parsedFrame['incdec']['leftrear'] = (bool) substr($frame_incrdecrflags, 5, 1); - $parsedFrame['volumechange']['rightrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - if ($parsedFrame['incdec']['rightrear'] === false) { - $parsedFrame['volumechange']['rightrear'] *= -1; - } - $frame_offset += $frame_bytesvolume; - $parsedFrame['volumechange']['leftrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - if ($parsedFrame['incdec']['leftrear'] === false) { - $parsedFrame['volumechange']['leftrear'] *= -1; - } - $frame_offset += $frame_bytesvolume; - $parsedFrame['peakvolume']['rightrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - $frame_offset += $frame_bytesvolume; - $parsedFrame['peakvolume']['leftrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - $frame_offset += $frame_bytesvolume; - } - $parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset); - if (strlen($parsedFrame['data']) > 0) { - $parsedFrame['incdec']['center'] = (bool) substr($frame_incrdecrflags, 3, 1); - $parsedFrame['volumechange']['center'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - if ($parsedFrame['incdec']['center'] === false) { - $parsedFrame['volumechange']['center'] *= -1; - } - $frame_offset += $frame_bytesvolume; - $parsedFrame['peakvolume']['center'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - $frame_offset += $frame_bytesvolume; - } - $parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset); - if (strlen($parsedFrame['data']) > 0) { - $parsedFrame['incdec']['bass'] = (bool) substr($frame_incrdecrflags, 2, 1); - $parsedFrame['volumechange']['bass'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - if ($parsedFrame['incdec']['bass'] === false) { - $parsedFrame['volumechange']['bass'] *= -1; - } - $frame_offset += $frame_bytesvolume; - $parsedFrame['peakvolume']['bass'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume)); - $frame_offset += $frame_bytesvolume; - } - } - unset($parsedFrame['data']); - - - } elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'EQU2')) { // 4.12 EQU2 Equalisation (2) (ID3v2.4+ only) - // There may be more than one 'EQU2' frame in each tag, - // but only one with the same identification string - //
    - // Interpolation method $xx - // $00 Band - // $01 Linear - // Identification $00 - // The following is then repeated for every adjustment point - // Frequency $xx xx - // Volume adjustment $xx xx - - $frame_offset = 0; - $frame_interpolationmethod = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_idstring = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_idstring) === 0) { - $frame_idstring = ''; - } - $parsedFrame['description'] = $frame_idstring; - $frame_remainingdata = substr($parsedFrame['data'], $frame_terminatorpos + strlen("\x00")); - while (strlen($frame_remainingdata)) { - $frame_frequency = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 0, 2)) / 2; - $parsedFrame['data'][$frame_frequency] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 2, 2), false, true); - $frame_remainingdata = substr($frame_remainingdata, 4); - } - $parsedFrame['interpolationmethod'] = $frame_interpolationmethod; - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion == 3) && ($parsedFrame['frame_name'] == 'EQUA')) || // 4.12 EQUA Equalisation (ID3v2.3 only) - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'EQU'))) { // 4.13 EQU Equalisation (ID3v2.2 only) - // There may only be one 'EQUA' frame in each tag - //
    - // Adjustment bits $xx - // This is followed by 2 bytes + ('adjustment bits' rounded up to the - // nearest byte) for every equalisation band in the following format, - // giving a frequency range of 0 - 32767Hz: - // Increment/decrement %x (MSB of the Frequency) - // Frequency (lower 15 bits) - // Adjustment $xx (xx ...) - - $frame_offset = 0; - $parsedFrame['adjustmentbits'] = substr($parsedFrame['data'], $frame_offset++, 1); - $frame_adjustmentbytes = ceil($parsedFrame['adjustmentbits'] / 8); - - $frame_remainingdata = (string) substr($parsedFrame['data'], $frame_offset); - while (strlen($frame_remainingdata) > 0) { - $frame_frequencystr = getid3_lib::BigEndian2Bin(substr($frame_remainingdata, 0, 2)); - $frame_incdec = (bool) substr($frame_frequencystr, 0, 1); - $frame_frequency = bindec(substr($frame_frequencystr, 1, 15)); - $parsedFrame[$frame_frequency]['incdec'] = $frame_incdec; - $parsedFrame[$frame_frequency]['adjustment'] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 2, $frame_adjustmentbytes)); - if ($parsedFrame[$frame_frequency]['incdec'] === false) { - $parsedFrame[$frame_frequency]['adjustment'] *= -1; - } - $frame_remainingdata = substr($frame_remainingdata, 2 + $frame_adjustmentbytes); - } - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'RVRB')) || // 4.13 RVRB Reverb - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'REV'))) { // 4.14 REV Reverb - // There may only be one 'RVRB' frame in each tag. - //
    - // Reverb left (ms) $xx xx - // Reverb right (ms) $xx xx - // Reverb bounces, left $xx - // Reverb bounces, right $xx - // Reverb feedback, left to left $xx - // Reverb feedback, left to right $xx - // Reverb feedback, right to right $xx - // Reverb feedback, right to left $xx - // Premix left to right $xx - // Premix right to left $xx - - $frame_offset = 0; - $parsedFrame['left'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2)); - $frame_offset += 2; - $parsedFrame['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2)); - $frame_offset += 2; - $parsedFrame['bouncesL'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['bouncesR'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['feedbackLL'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['feedbackLR'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['feedbackRR'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['feedbackRL'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['premixLR'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['premixRL'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'APIC')) || // 4.14 APIC Attached picture - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'PIC'))) { // 4.15 PIC Attached picture - // There may be several pictures attached to one file, - // each in their individual 'APIC' frame, but only one - // with the same content descriptor - //
    - // Text encoding $xx - // ID3v2.3+ => MIME type $00 - // ID3v2.2 => Image format $xx xx xx - // Picture type $xx - // Description $00 (00) - // Picture data - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - - if ($id3v2_majorversion == 2 && strlen($parsedFrame['data']) > $frame_offset) { - $frame_imagetype = substr($parsedFrame['data'], $frame_offset, 3); - if (strtolower($frame_imagetype) == 'ima') { - // complete hack for mp3Rage (www.chaoticsoftware.com) that puts ID3v2.3-formatted - // MIME type instead of 3-char ID3v2.2-format image type (thanks xbhoffØpacbell*net) - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_mimetype) === 0) { - $frame_mimetype = ''; - } - $frame_imagetype = strtoupper(str_replace('image/', '', strtolower($frame_mimetype))); - if ($frame_imagetype == 'JPEG') { - $frame_imagetype = 'JPG'; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - } else { - $frame_offset += 3; - } - } - if ($id3v2_majorversion > 2 && strlen($parsedFrame['data']) > $frame_offset) { - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_mimetype) === 0) { - $frame_mimetype = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - } - - $frame_picturetype = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - - if ($frame_offset >= $parsedFrame['datalength']) { - $info['warning'][] = 'data portion of APIC frame is missing at offset '.($parsedFrame['dataoffset'] + 8 + $frame_offset); - } else { - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - if ($id3v2_majorversion == 2) { - $parsedFrame['imagetype'] = $frame_imagetype; - } else { - $parsedFrame['mime'] = $frame_mimetype; - } - $parsedFrame['picturetypeid'] = $frame_picturetype; - $parsedFrame['picturetype'] = $this->APICPictureTypeLookup($frame_picturetype); - $parsedFrame['description'] = $frame_description; - $parsedFrame['data'] = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding))); - $parsedFrame['datalength'] = strlen($parsedFrame['data']); - - $parsedFrame['image_mime'] = ''; - $imageinfo = array(); - $imagechunkcheck = getid3_lib::GetDataImageSize($parsedFrame['data'], $imageinfo); - if (($imagechunkcheck[2] >= 1) && ($imagechunkcheck[2] <= 3)) { - $parsedFrame['image_mime'] = 'image/'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]); - if ($imagechunkcheck[0]) { - $parsedFrame['image_width'] = $imagechunkcheck[0]; - } - if ($imagechunkcheck[1]) { - $parsedFrame['image_height'] = $imagechunkcheck[1]; - } - } - - do { - if ($this->inline_attachments === false) { - // skip entirely - unset($parsedFrame['data']); - break; - } - if ($this->inline_attachments === true) { - // great - } elseif (is_int($this->inline_attachments)) { - if ($this->inline_attachments < $parsedFrame['data_length']) { - // too big, skip - $info['warning'][] = 'attachment at '.$frame_offset.' is too large to process inline ('.number_format($parsedFrame['data_length']).' bytes)'; - unset($parsedFrame['data']); - break; - } - } elseif (is_string($this->inline_attachments)) { - $this->inline_attachments = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->inline_attachments), DIRECTORY_SEPARATOR); - if (!is_dir($this->inline_attachments) || !is_writable($this->inline_attachments)) { - // cannot write, skip - $info['warning'][] = 'attachment at '.$frame_offset.' cannot be saved to "'.$this->inline_attachments.'" (not writable)'; - unset($parsedFrame['data']); - break; - } - } - // if we get this far, must be OK - if (is_string($this->inline_attachments)) { - $destination_filename = $this->inline_attachments.DIRECTORY_SEPARATOR.md5($info['filenamepath']).'_'.$frame_offset; - if (!file_exists($destination_filename) || is_writable($destination_filename)) { - file_put_contents($destination_filename, $parsedFrame['data']); - } else { - $info['warning'][] = 'attachment at '.$frame_offset.' cannot be saved to "'.$destination_filename.'" (not writable)'; - } - $parsedFrame['data_filename'] = $destination_filename; - unset($parsedFrame['data']); - } else { - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - if (!isset($info['id3v2']['comments']['picture'])) { - $info['id3v2']['comments']['picture'] = array(); - } - $info['id3v2']['comments']['picture'][] = array('data'=>$parsedFrame['data'], 'image_mime'=>$parsedFrame['image_mime']); - } - } - } while (false); - } - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'GEOB')) || // 4.15 GEOB General encapsulated object - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'GEO'))) { // 4.16 GEO General encapsulated object - // There may be more than one 'GEOB' frame in each tag, - // but only one with the same content descriptor - //
    - // Text encoding $xx - // MIME type $00 - // Filename $00 (00) - // Content description $00 (00) - // Encapsulated object - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_mimetype) === 0) { - $frame_mimetype = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_filename = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_filename) === 0) { - $frame_filename = ''; - } - $frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)); - - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)); - - $parsedFrame['objectdata'] = (string) substr($parsedFrame['data'], $frame_offset); - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['mime'] = $frame_mimetype; - $parsedFrame['filename'] = $frame_filename; - $parsedFrame['description'] = $frame_description; - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'PCNT')) || // 4.16 PCNT Play counter - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'CNT'))) { // 4.17 CNT Play counter - // There may only be one 'PCNT' frame in each tag. - // When the counter reaches all one's, one byte is inserted in - // front of the counter thus making the counter eight bits bigger - //
    - // Counter $xx xx xx xx (xx ...) - - $parsedFrame['data'] = getid3_lib::BigEndian2Int($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'POPM')) || // 4.17 POPM Popularimeter - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'POP'))) { // 4.18 POP Popularimeter - // There may be more than one 'POPM' frame in each tag, - // but only one with the same email address - //
    - // Email to user $00 - // Rating $xx - // Counter $xx xx xx xx (xx ...) - - $frame_offset = 0; - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_emailaddress = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_emailaddress) === 0) { - $frame_emailaddress = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - $frame_rating = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['counter'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset)); - $parsedFrame['email'] = $frame_emailaddress; - $parsedFrame['rating'] = $frame_rating; - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'RBUF')) || // 4.18 RBUF Recommended buffer size - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'BUF'))) { // 4.19 BUF Recommended buffer size - // There may only be one 'RBUF' frame in each tag - //
    - // Buffer size $xx xx xx - // Embedded info flag %0000000x - // Offset to next tag $xx xx xx xx - - $frame_offset = 0; - $parsedFrame['buffersize'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 3)); - $frame_offset += 3; - - $frame_embeddedinfoflags = getid3_lib::BigEndian2Bin(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['flags']['embededinfo'] = (bool) substr($frame_embeddedinfoflags, 7, 1); - $parsedFrame['nexttagoffset'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4)); - unset($parsedFrame['data']); - - - } elseif (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'CRM')) { // 4.20 Encrypted meta frame (ID3v2.2 only) - // There may be more than one 'CRM' frame in a tag, - // but only one with the same 'owner identifier' - //
    - // Owner identifier $00 (00) - // Content/explanation $00 (00) - // Encrypted datablock - - $frame_offset = 0; - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $parsedFrame['ownerid'] = $frame_ownerid; - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - $parsedFrame['description'] = $frame_description; - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'AENC')) || // 4.19 AENC Audio encryption - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'CRA'))) { // 4.21 CRA Audio encryption - // There may be more than one 'AENC' frames in a tag, - // but only one with the same 'Owner identifier' - //
    - // Owner identifier $00 - // Preview start $xx xx - // Preview length $xx xx - // Encryption info - - $frame_offset = 0; - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_ownerid) === 0) { - $frame_ownerid == ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - $parsedFrame['ownerid'] = $frame_ownerid; - $parsedFrame['previewstart'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2)); - $frame_offset += 2; - $parsedFrame['previewlength'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2)); - $frame_offset += 2; - $parsedFrame['encryptioninfo'] = (string) substr($parsedFrame['data'], $frame_offset); - unset($parsedFrame['data']); - - - } elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'LINK')) || // 4.20 LINK Linked information - (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'LNK'))) { // 4.22 LNK Linked information - // There may be more than one 'LINK' frame in a tag, - // but only one with the same contents - //
    - // ID3v2.3+ => Frame identifier $xx xx xx xx - // ID3v2.2 => Frame identifier $xx xx xx - // URL $00 - // ID and additional data - - $frame_offset = 0; - if ($id3v2_majorversion == 2) { - $parsedFrame['frameid'] = substr($parsedFrame['data'], $frame_offset, 3); - $frame_offset += 3; - } else { - $parsedFrame['frameid'] = substr($parsedFrame['data'], $frame_offset, 4); - $frame_offset += 4; - } - - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_url = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_url) === 0) { - $frame_url = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - $parsedFrame['url'] = $frame_url; - - $parsedFrame['additionaldata'] = (string) substr($parsedFrame['data'], $frame_offset); - if (!empty($parsedFrame['framenameshort']) && $parsedFrame['url']) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = utf8_encode($parsedFrame['url']); - } - unset($parsedFrame['data']); - - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'POSS')) { // 4.21 POSS Position synchronisation frame (ID3v2.3+ only) - // There may only be one 'POSS' frame in each tag - //
    - // Time stamp format $xx - // Position $xx (xx ...) - - $frame_offset = 0; - $parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['position'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset)); - unset($parsedFrame['data']); - - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'USER')) { // 4.22 USER Terms of use (ID3v2.3+ only) - // There may be more than one 'Terms of use' frame in a tag, - // but only one with the same 'Language' - //
    - // Text encoding $xx - // Language $xx xx xx - // The actual text - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $frame_language = substr($parsedFrame['data'], $frame_offset, 3); - $frame_offset += 3; - $parsedFrame['language'] = $frame_language; - $parsedFrame['languagename'] = $this->LanguageLookup($frame_language, false); - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { - $info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']); - } - unset($parsedFrame['data']); - - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'OWNE')) { // 4.23 OWNE Ownership frame (ID3v2.3+ only) - // There may only be one 'OWNE' frame in a tag - //
    - // Text encoding $xx - // Price paid $00 - // Date of purch. - // Seller - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_pricepaid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $parsedFrame['pricepaid']['currencyid'] = substr($frame_pricepaid, 0, 3); - $parsedFrame['pricepaid']['currency'] = $this->LookupCurrencyUnits($parsedFrame['pricepaid']['currencyid']); - $parsedFrame['pricepaid']['value'] = substr($frame_pricepaid, 3); - - $parsedFrame['purchasedate'] = substr($parsedFrame['data'], $frame_offset, 8); - if (!$this->IsValidDateStampString($parsedFrame['purchasedate'])) { - $parsedFrame['purchasedateunix'] = mktime (0, 0, 0, substr($parsedFrame['purchasedate'], 4, 2), substr($parsedFrame['purchasedate'], 6, 2), substr($parsedFrame['purchasedate'], 0, 4)); - } - $frame_offset += 8; - - $parsedFrame['seller'] = (string) substr($parsedFrame['data'], $frame_offset); - unset($parsedFrame['data']); - - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'COMR')) { // 4.24 COMR Commercial frame (ID3v2.3+ only) - // There may be more than one 'commercial frame' in a tag, - // but no two may be identical - //
    - // Text encoding $xx - // Price string $00 - // Valid until - // Contact URL $00 - // Received as $xx - // Name of seller $00 (00) - // Description $00 (00) - // Picture MIME type $00 - // Seller logo - - $frame_offset = 0; - $frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) { - $info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding'; - } - - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_pricestring = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - $frame_offset = $frame_terminatorpos + strlen("\x00"); - $frame_rawpricearray = explode('/', $frame_pricestring); - foreach ($frame_rawpricearray as $key => $val) { - $frame_currencyid = substr($val, 0, 3); - $parsedFrame['price'][$frame_currencyid]['currency'] = $this->LookupCurrencyUnits($frame_currencyid); - $parsedFrame['price'][$frame_currencyid]['value'] = substr($val, 3); - } - - $frame_datestring = substr($parsedFrame['data'], $frame_offset, 8); - $frame_offset += 8; - - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_contacturl = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $frame_receivedasid = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_sellername = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_sellername) === 0) { - $frame_sellername = ''; - } - $frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)); - - $frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset); - if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) { - $frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00 - } - $frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_description) === 0) { - $frame_description = ''; - } - $frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)); - - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $frame_sellerlogo = substr($parsedFrame['data'], $frame_offset); - - $parsedFrame['encodingid'] = $frame_textencoding; - $parsedFrame['encoding'] = $this->TextEncodingNameLookup($frame_textencoding); - - $parsedFrame['pricevaliduntil'] = $frame_datestring; - $parsedFrame['contacturl'] = $frame_contacturl; - $parsedFrame['receivedasid'] = $frame_receivedasid; - $parsedFrame['receivedas'] = $this->COMRReceivedAsLookup($frame_receivedasid); - $parsedFrame['sellername'] = $frame_sellername; - $parsedFrame['description'] = $frame_description; - $parsedFrame['mime'] = $frame_mimetype; - $parsedFrame['logo'] = $frame_sellerlogo; - unset($parsedFrame['data']); - - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'ENCR')) { // 4.25 ENCR Encryption method registration (ID3v2.3+ only) - // There may be several 'ENCR' frames in a tag, - // but only one containing the same symbol - // and only one containing the same owner identifier - //
    - // Owner identifier $00 - // Method symbol $xx - // Encryption data - - $frame_offset = 0; - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_ownerid) === 0) { - $frame_ownerid = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $parsedFrame['ownerid'] = $frame_ownerid; - $parsedFrame['methodsymbol'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'GRID')) { // 4.26 GRID Group identification registration (ID3v2.3+ only) - - // There may be several 'GRID' frames in a tag, - // but only one containing the same symbol - // and only one containing the same owner identifier - //
    - // Owner identifier $00 - // Group symbol $xx - // Group dependent data - - $frame_offset = 0; - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_ownerid) === 0) { - $frame_ownerid = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $parsedFrame['ownerid'] = $frame_ownerid; - $parsedFrame['groupsymbol'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'PRIV')) { // 4.27 PRIV Private frame (ID3v2.3+ only) - // The tag may contain more than one 'PRIV' frame - // but only with different contents - //
    - // Owner identifier $00 - // The private data - - $frame_offset = 0; - $frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset); - $frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset); - if (ord($frame_ownerid) === 0) { - $frame_ownerid = ''; - } - $frame_offset = $frame_terminatorpos + strlen("\x00"); - - $parsedFrame['ownerid'] = $frame_ownerid; - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - - - } elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'SIGN')) { // 4.28 SIGN Signature frame (ID3v2.4+ only) - // There may be more than one 'signature frame' in a tag, - // but no two may be identical - //
    - // Group symbol $xx - // Signature - - $frame_offset = 0; - $parsedFrame['groupsymbol'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset); - - - } elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'SEEK')) { // 4.29 SEEK Seek frame (ID3v2.4+ only) - // There may only be one 'seek frame' in a tag - //
    - // Minimum offset to next tag $xx xx xx xx - - $frame_offset = 0; - $parsedFrame['data'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4)); - - - } elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'ASPI')) { // 4.30 ASPI Audio seek point index (ID3v2.4+ only) - // There may only be one 'audio seek point index' frame in a tag - //
    - // Indexed data start (S) $xx xx xx xx - // Indexed data length (L) $xx xx xx xx - // Number of index points (N) $xx xx - // Bits per index point (b) $xx - // Then for every index point the following data is included: - // Fraction at index (Fi) $xx (xx) - - $frame_offset = 0; - $parsedFrame['datastart'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4)); - $frame_offset += 4; - $parsedFrame['indexeddatalength'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4)); - $frame_offset += 4; - $parsedFrame['indexpoints'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2)); - $frame_offset += 2; - $parsedFrame['bitsperpoint'] = ord(substr($parsedFrame['data'], $frame_offset++, 1)); - $frame_bytesperpoint = ceil($parsedFrame['bitsperpoint'] / 8); - for ($i = 0; $i < $frame_indexpoints; $i++) { - $parsedFrame['indexes'][$i] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesperpoint)); - $frame_offset += $frame_bytesperpoint; - } - unset($parsedFrame['data']); - - } elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'RGAD')) { // Replay Gain Adjustment - // http://privatewww.essex.ac.uk/~djmrob/replaygain/file_format_id3v2.html - // There may only be one 'RGAD' frame in a tag - //
    - // Peak Amplitude $xx $xx $xx $xx - // Radio Replay Gain Adjustment %aaabbbcd %dddddddd - // Audiophile Replay Gain Adjustment %aaabbbcd %dddddddd - // a - name code - // b - originator code - // c - sign bit - // d - replay gain adjustment - - $frame_offset = 0; - $parsedFrame['peakamplitude'] = getid3_lib::BigEndian2Float(substr($parsedFrame['data'], $frame_offset, 4)); - $frame_offset += 4; - $rg_track_adjustment = getid3_lib::Dec2Bin(substr($parsedFrame['data'], $frame_offset, 2)); - $frame_offset += 2; - $rg_album_adjustment = getid3_lib::Dec2Bin(substr($parsedFrame['data'], $frame_offset, 2)); - $frame_offset += 2; - $parsedFrame['raw']['track']['name'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 0, 3)); - $parsedFrame['raw']['track']['originator'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 3, 3)); - $parsedFrame['raw']['track']['signbit'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 6, 1)); - $parsedFrame['raw']['track']['adjustment'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 7, 9)); - $parsedFrame['raw']['album']['name'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 0, 3)); - $parsedFrame['raw']['album']['originator'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 3, 3)); - $parsedFrame['raw']['album']['signbit'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 6, 1)); - $parsedFrame['raw']['album']['adjustment'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 7, 9)); - $parsedFrame['track']['name'] = getid3_lib::RGADnameLookup($parsedFrame['raw']['track']['name']); - $parsedFrame['track']['originator'] = getid3_lib::RGADoriginatorLookup($parsedFrame['raw']['track']['originator']); - $parsedFrame['track']['adjustment'] = getid3_lib::RGADadjustmentLookup($parsedFrame['raw']['track']['adjustment'], $parsedFrame['raw']['track']['signbit']); - $parsedFrame['album']['name'] = getid3_lib::RGADnameLookup($parsedFrame['raw']['album']['name']); - $parsedFrame['album']['originator'] = getid3_lib::RGADoriginatorLookup($parsedFrame['raw']['album']['originator']); - $parsedFrame['album']['adjustment'] = getid3_lib::RGADadjustmentLookup($parsedFrame['raw']['album']['adjustment'], $parsedFrame['raw']['album']['signbit']); - - $info['replay_gain']['track']['peak'] = $parsedFrame['peakamplitude']; - $info['replay_gain']['track']['originator'] = $parsedFrame['track']['originator']; - $info['replay_gain']['track']['adjustment'] = $parsedFrame['track']['adjustment']; - $info['replay_gain']['album']['originator'] = $parsedFrame['album']['originator']; - $info['replay_gain']['album']['adjustment'] = $parsedFrame['album']['adjustment']; - - unset($parsedFrame['data']); - - } - - return true; - } - - - function DeUnsynchronise($data) { - return str_replace("\xFF\x00", "\xFF", $data); - } - - function LookupExtendedHeaderRestrictionsTagSizeLimits($index) { - static $LookupExtendedHeaderRestrictionsTagSizeLimits = array( - 0x00 => 'No more than 128 frames and 1 MB total tag size', - 0x01 => 'No more than 64 frames and 128 KB total tag size', - 0x02 => 'No more than 32 frames and 40 KB total tag size', - 0x03 => 'No more than 32 frames and 4 KB total tag size', - ); - return (isset($LookupExtendedHeaderRestrictionsTagSizeLimits[$index]) ? $LookupExtendedHeaderRestrictionsTagSizeLimits[$index] : ''); - } - - function LookupExtendedHeaderRestrictionsTextEncodings($index) { - static $LookupExtendedHeaderRestrictionsTextEncodings = array( - 0x00 => 'No restrictions', - 0x01 => 'Strings are only encoded with ISO-8859-1 or UTF-8', - ); - return (isset($LookupExtendedHeaderRestrictionsTextEncodings[$index]) ? $LookupExtendedHeaderRestrictionsTextEncodings[$index] : ''); - } - - function LookupExtendedHeaderRestrictionsTextFieldSize($index) { - static $LookupExtendedHeaderRestrictionsTextFieldSize = array( - 0x00 => 'No restrictions', - 0x01 => 'No string is longer than 1024 characters', - 0x02 => 'No string is longer than 128 characters', - 0x03 => 'No string is longer than 30 characters', - ); - return (isset($LookupExtendedHeaderRestrictionsTextFieldSize[$index]) ? $LookupExtendedHeaderRestrictionsTextFieldSize[$index] : ''); - } - - function LookupExtendedHeaderRestrictionsImageEncoding($index) { - static $LookupExtendedHeaderRestrictionsImageEncoding = array( - 0x00 => 'No restrictions', - 0x01 => 'Images are encoded only with PNG or JPEG', - ); - return (isset($LookupExtendedHeaderRestrictionsImageEncoding[$index]) ? $LookupExtendedHeaderRestrictionsImageEncoding[$index] : ''); - } - - function LookupExtendedHeaderRestrictionsImageSizeSize($index) { - static $LookupExtendedHeaderRestrictionsImageSizeSize = array( - 0x00 => 'No restrictions', - 0x01 => 'All images are 256x256 pixels or smaller', - 0x02 => 'All images are 64x64 pixels or smaller', - 0x03 => 'All images are exactly 64x64 pixels, unless required otherwise', - ); - return (isset($LookupExtendedHeaderRestrictionsImageSizeSize[$index]) ? $LookupExtendedHeaderRestrictionsImageSizeSize[$index] : ''); - } - - function LookupCurrencyUnits($currencyid) { - - $begin = __LINE__; - - /** This is not a comment! - - - AED Dirhams - AFA Afghanis - ALL Leke - AMD Drams - ANG Guilders - AOA Kwanza - ARS Pesos - ATS Schillings - AUD Dollars - AWG Guilders - AZM Manats - BAM Convertible Marka - BBD Dollars - BDT Taka - BEF Francs - BGL Leva - BHD Dinars - BIF Francs - BMD Dollars - BND Dollars - BOB Bolivianos - BRL Brazil Real - BSD Dollars - BTN Ngultrum - BWP Pulas - BYR Rubles - BZD Dollars - CAD Dollars - CDF Congolese Francs - CHF Francs - CLP Pesos - CNY Yuan Renminbi - COP Pesos - CRC Colones - CUP Pesos - CVE Escudos - CYP Pounds - CZK Koruny - DEM Deutsche Marks - DJF Francs - DKK Kroner - DOP Pesos - DZD Algeria Dinars - EEK Krooni - EGP Pounds - ERN Nakfa - ESP Pesetas - ETB Birr - EUR Euro - FIM Markkaa - FJD Dollars - FKP Pounds - FRF Francs - GBP Pounds - GEL Lari - GGP Pounds - GHC Cedis - GIP Pounds - GMD Dalasi - GNF Francs - GRD Drachmae - GTQ Quetzales - GYD Dollars - HKD Dollars - HNL Lempiras - HRK Kuna - HTG Gourdes - HUF Forints - IDR Rupiahs - IEP Pounds - ILS New Shekels - IMP Pounds - INR Rupees - IQD Dinars - IRR Rials - ISK Kronur - ITL Lire - JEP Pounds - JMD Dollars - JOD Dinars - JPY Yen - KES Shillings - KGS Soms - KHR Riels - KMF Francs - KPW Won - KWD Dinars - KYD Dollars - KZT Tenge - LAK Kips - LBP Pounds - LKR Rupees - LRD Dollars - LSL Maloti - LTL Litai - LUF Francs - LVL Lati - LYD Dinars - MAD Dirhams - MDL Lei - MGF Malagasy Francs - MKD Denars - MMK Kyats - MNT Tugriks - MOP Patacas - MRO Ouguiyas - MTL Liri - MUR Rupees - MVR Rufiyaa - MWK Kwachas - MXN Pesos - MYR Ringgits - MZM Meticais - NAD Dollars - NGN Nairas - NIO Gold Cordobas - NLG Guilders - NOK Krone - NPR Nepal Rupees - NZD Dollars - OMR Rials - PAB Balboa - PEN Nuevos Soles - PGK Kina - PHP Pesos - PKR Rupees - PLN Zlotych - PTE Escudos - PYG Guarani - QAR Rials - ROL Lei - RUR Rubles - RWF Rwanda Francs - SAR Riyals - SBD Dollars - SCR Rupees - SDD Dinars - SEK Kronor - SGD Dollars - SHP Pounds - SIT Tolars - SKK Koruny - SLL Leones - SOS Shillings - SPL Luigini - SRG Guilders - STD Dobras - SVC Colones - SYP Pounds - SZL Emalangeni - THB Baht - TJR Rubles - TMM Manats - TND Dinars - TOP Pa'anga - TRL Liras - TTD Dollars - TVD Tuvalu Dollars - TWD New Dollars - TZS Shillings - UAH Hryvnia - UGX Shillings - USD Dollars - UYU Pesos - UZS Sums - VAL Lire - VEB Bolivares - VND Dong - VUV Vatu - WST Tala - XAF Francs - XAG Ounces - XAU Ounces - XCD Dollars - XDR Special Drawing Rights - XPD Ounces - XPF Francs - XPT Ounces - YER Rials - YUM New Dinars - ZAR Rand - ZMK Kwacha - ZWD Zimbabwe Dollars - - */ - - return getid3_lib::EmbeddedLookup($currencyid, $begin, __LINE__, __FILE__, 'id3v2-currency-units'); - } - - - function LookupCurrencyCountry($currencyid) { - - $begin = __LINE__; - - /** This is not a comment! - - AED United Arab Emirates - AFA Afghanistan - ALL Albania - AMD Armenia - ANG Netherlands Antilles - AOA Angola - ARS Argentina - ATS Austria - AUD Australia - AWG Aruba - AZM Azerbaijan - BAM Bosnia and Herzegovina - BBD Barbados - BDT Bangladesh - BEF Belgium - BGL Bulgaria - BHD Bahrain - BIF Burundi - BMD Bermuda - BND Brunei Darussalam - BOB Bolivia - BRL Brazil - BSD Bahamas - BTN Bhutan - BWP Botswana - BYR Belarus - BZD Belize - CAD Canada - CDF Congo/Kinshasa - CHF Switzerland - CLP Chile - CNY China - COP Colombia - CRC Costa Rica - CUP Cuba - CVE Cape Verde - CYP Cyprus - CZK Czech Republic - DEM Germany - DJF Djibouti - DKK Denmark - DOP Dominican Republic - DZD Algeria - EEK Estonia - EGP Egypt - ERN Eritrea - ESP Spain - ETB Ethiopia - EUR Euro Member Countries - FIM Finland - FJD Fiji - FKP Falkland Islands (Malvinas) - FRF France - GBP United Kingdom - GEL Georgia - GGP Guernsey - GHC Ghana - GIP Gibraltar - GMD Gambia - GNF Guinea - GRD Greece - GTQ Guatemala - GYD Guyana - HKD Hong Kong - HNL Honduras - HRK Croatia - HTG Haiti - HUF Hungary - IDR Indonesia - IEP Ireland (Eire) - ILS Israel - IMP Isle of Man - INR India - IQD Iraq - IRR Iran - ISK Iceland - ITL Italy - JEP Jersey - JMD Jamaica - JOD Jordan - JPY Japan - KES Kenya - KGS Kyrgyzstan - KHR Cambodia - KMF Comoros - KPW Korea - KWD Kuwait - KYD Cayman Islands - KZT Kazakstan - LAK Laos - LBP Lebanon - LKR Sri Lanka - LRD Liberia - LSL Lesotho - LTL Lithuania - LUF Luxembourg - LVL Latvia - LYD Libya - MAD Morocco - MDL Moldova - MGF Madagascar - MKD Macedonia - MMK Myanmar (Burma) - MNT Mongolia - MOP Macau - MRO Mauritania - MTL Malta - MUR Mauritius - MVR Maldives (Maldive Islands) - MWK Malawi - MXN Mexico - MYR Malaysia - MZM Mozambique - NAD Namibia - NGN Nigeria - NIO Nicaragua - NLG Netherlands (Holland) - NOK Norway - NPR Nepal - NZD New Zealand - OMR Oman - PAB Panama - PEN Peru - PGK Papua New Guinea - PHP Philippines - PKR Pakistan - PLN Poland - PTE Portugal - PYG Paraguay - QAR Qatar - ROL Romania - RUR Russia - RWF Rwanda - SAR Saudi Arabia - SBD Solomon Islands - SCR Seychelles - SDD Sudan - SEK Sweden - SGD Singapore - SHP Saint Helena - SIT Slovenia - SKK Slovakia - SLL Sierra Leone - SOS Somalia - SPL Seborga - SRG Suriname - STD São Tome and Principe - SVC El Salvador - SYP Syria - SZL Swaziland - THB Thailand - TJR Tajikistan - TMM Turkmenistan - TND Tunisia - TOP Tonga - TRL Turkey - TTD Trinidad and Tobago - TVD Tuvalu - TWD Taiwan - TZS Tanzania - UAH Ukraine - UGX Uganda - USD United States of America - UYU Uruguay - UZS Uzbekistan - VAL Vatican City - VEB Venezuela - VND Viet Nam - VUV Vanuatu - WST Samoa - XAF Communauté Financière Africaine - XAG Silver - XAU Gold - XCD East Caribbean - XDR International Monetary Fund - XPD Palladium - XPF Comptoirs Français du Pacifique - XPT Platinum - YER Yemen - YUM Yugoslavia - ZAR South Africa - ZMK Zambia - ZWD Zimbabwe - - */ - - return getid3_lib::EmbeddedLookup($currencyid, $begin, __LINE__, __FILE__, 'id3v2-currency-country'); - } - - - - static function LanguageLookup($languagecode, $casesensitive=false) { - - if (!$casesensitive) { - $languagecode = strtolower($languagecode); - } - - // http://www.id3.org/id3v2.4.0-structure.txt - // [4. ID3v2 frame overview] - // The three byte language field, present in several frames, is used to - // describe the language of the frame's content, according to ISO-639-2 - // [ISO-639-2]. The language should be represented in lower case. If the - // language is not known the string "XXX" should be used. - - - // ISO 639-2 - http://www.id3.org/iso639-2.html - - $begin = __LINE__; - - /** This is not a comment! - - XXX unknown - xxx unknown - aar Afar - abk Abkhazian - ace Achinese - ach Acoli - ada Adangme - afa Afro-Asiatic (Other) - afh Afrihili - afr Afrikaans - aka Akan - akk Akkadian - alb Albanian - ale Aleut - alg Algonquian Languages - amh Amharic - ang English, Old (ca. 450-1100) - apa Apache Languages - ara Arabic - arc Aramaic - arm Armenian - arn Araucanian - arp Arapaho - art Artificial (Other) - arw Arawak - asm Assamese - ath Athapascan Languages - ava Avaric - ave Avestan - awa Awadhi - aym Aymara - aze Azerbaijani - bad Banda - bai Bamileke Languages - bak Bashkir - bal Baluchi - bam Bambara - ban Balinese - baq Basque - bas Basa - bat Baltic (Other) - bej Beja - bel Byelorussian - bem Bemba - ben Bengali - ber Berber (Other) - bho Bhojpuri - bih Bihari - bik Bikol - bin Bini - bis Bislama - bla Siksika - bnt Bantu (Other) - bod Tibetan - bra Braj - bre Breton - bua Buriat - bug Buginese - bul Bulgarian - bur Burmese - cad Caddo - cai Central American Indian (Other) - car Carib - cat Catalan - cau Caucasian (Other) - ceb Cebuano - cel Celtic (Other) - ces Czech - cha Chamorro - chb Chibcha - che Chechen - chg Chagatai - chi Chinese - chm Mari - chn Chinook jargon - cho Choctaw - chr Cherokee - chu Church Slavic - chv Chuvash - chy Cheyenne - cop Coptic - cor Cornish - cos Corsican - cpe Creoles and Pidgins, English-based (Other) - cpf Creoles and Pidgins, French-based (Other) - cpp Creoles and Pidgins, Portuguese-based (Other) - cre Cree - crp Creoles and Pidgins (Other) - cus Cushitic (Other) - cym Welsh - cze Czech - dak Dakota - dan Danish - del Delaware - deu German - din Dinka - div Divehi - doi Dogri - dra Dravidian (Other) - dua Duala - dum Dutch, Middle (ca. 1050-1350) - dut Dutch - dyu Dyula - dzo Dzongkha - efi Efik - egy Egyptian (Ancient) - eka Ekajuk - ell Greek, Modern (1453-) - elx Elamite - eng English - enm English, Middle (ca. 1100-1500) - epo Esperanto - esk Eskimo (Other) - esl Spanish - est Estonian - eus Basque - ewe Ewe - ewo Ewondo - fan Fang - fao Faroese - fas Persian - fat Fanti - fij Fijian - fin Finnish - fiu Finno-Ugrian (Other) - fon Fon - fra French - fre French - frm French, Middle (ca. 1400-1600) - fro French, Old (842- ca. 1400) - fry Frisian - ful Fulah - gaa Ga - gae Gaelic (Scots) - gai Irish - gay Gayo - gdh Gaelic (Scots) - gem Germanic (Other) - geo Georgian - ger German - gez Geez - gil Gilbertese - glg Gallegan - gmh German, Middle High (ca. 1050-1500) - goh German, Old High (ca. 750-1050) - gon Gondi - got Gothic - grb Grebo - grc Greek, Ancient (to 1453) - gre Greek, Modern (1453-) - grn Guarani - guj Gujarati - hai Haida - hau Hausa - haw Hawaiian - heb Hebrew - her Herero - hil Hiligaynon - him Himachali - hin Hindi - hmo Hiri Motu - hun Hungarian - hup Hupa - hye Armenian - iba Iban - ibo Igbo - ice Icelandic - ijo Ijo - iku Inuktitut - ilo Iloko - ina Interlingua (International Auxiliary language Association) - inc Indic (Other) - ind Indonesian - ine Indo-European (Other) - ine Interlingue - ipk Inupiak - ira Iranian (Other) - iri Irish - iro Iroquoian uages - isl Icelandic - ita Italian - jav Javanese - jaw Javanese - jpn Japanese - jpr Judeo-Persian - jrb Judeo-Arabic - kaa Kara-Kalpak - kab Kabyle - kac Kachin - kal Greenlandic - kam Kamba - kan Kannada - kar Karen - kas Kashmiri - kat Georgian - kau Kanuri - kaw Kawi - kaz Kazakh - kha Khasi - khi Khoisan (Other) - khm Khmer - kho Khotanese - kik Kikuyu - kin Kinyarwanda - kir Kirghiz - kok Konkani - kom Komi - kon Kongo - kor Korean - kpe Kpelle - kro Kru - kru Kurukh - kua Kuanyama - kum Kumyk - kur Kurdish - kus Kusaie - kut Kutenai - lad Ladino - lah Lahnda - lam Lamba - lao Lao - lat Latin - lav Latvian - lez Lezghian - lin Lingala - lit Lithuanian - lol Mongo - loz Lozi - ltz Letzeburgesch - lub Luba-Katanga - lug Ganda - lui Luiseno - lun Lunda - luo Luo (Kenya and Tanzania) - mac Macedonian - mad Madurese - mag Magahi - mah Marshall - mai Maithili - mak Macedonian - mak Makasar - mal Malayalam - man Mandingo - mao Maori - map Austronesian (Other) - mar Marathi - mas Masai - max Manx - may Malay - men Mende - mga Irish, Middle (900 - 1200) - mic Micmac - min Minangkabau - mis Miscellaneous (Other) - mkh Mon-Kmer (Other) - mlg Malagasy - mlt Maltese - mni Manipuri - mno Manobo Languages - moh Mohawk - mol Moldavian - mon Mongolian - mos Mossi - mri Maori - msa Malay - mul Multiple Languages - mun Munda Languages - mus Creek - mwr Marwari - mya Burmese - myn Mayan Languages - nah Aztec - nai North American Indian (Other) - nau Nauru - nav Navajo - nbl Ndebele, South - nde Ndebele, North - ndo Ndongo - nep Nepali - new Newari - nic Niger-Kordofanian (Other) - niu Niuean - nla Dutch - nno Norwegian (Nynorsk) - non Norse, Old - nor Norwegian - nso Sotho, Northern - nub Nubian Languages - nya Nyanja - nym Nyamwezi - nyn Nyankole - nyo Nyoro - nzi Nzima - oci Langue d'Oc (post 1500) - oji Ojibwa - ori Oriya - orm Oromo - osa Osage - oss Ossetic - ota Turkish, Ottoman (1500 - 1928) - oto Otomian Languages - paa Papuan-Australian (Other) - pag Pangasinan - pal Pahlavi - pam Pampanga - pan Panjabi - pap Papiamento - pau Palauan - peo Persian, Old (ca 600 - 400 B.C.) - per Persian - phn Phoenician - pli Pali - pol Polish - pon Ponape - por Portuguese - pra Prakrit uages - pro Provencal, Old (to 1500) - pus Pushto - que Quechua - raj Rajasthani - rar Rarotongan - roa Romance (Other) - roh Rhaeto-Romance - rom Romany - ron Romanian - rum Romanian - run Rundi - rus Russian - sad Sandawe - sag Sango - sah Yakut - sai South American Indian (Other) - sal Salishan Languages - sam Samaritan Aramaic - san Sanskrit - sco Scots - scr Serbo-Croatian - sel Selkup - sem Semitic (Other) - sga Irish, Old (to 900) - shn Shan - sid Sidamo - sin Singhalese - sio Siouan Languages - sit Sino-Tibetan (Other) - sla Slavic (Other) - slk Slovak - slo Slovak - slv Slovenian - smi Sami Languages - smo Samoan - sna Shona - snd Sindhi - sog Sogdian - som Somali - son Songhai - sot Sotho, Southern - spa Spanish - sqi Albanian - srd Sardinian - srr Serer - ssa Nilo-Saharan (Other) - ssw Siswant - ssw Swazi - suk Sukuma - sun Sudanese - sus Susu - sux Sumerian - sve Swedish - swa Swahili - swe Swedish - syr Syriac - tah Tahitian - tam Tamil - tat Tatar - tel Telugu - tem Timne - ter Tereno - tgk Tajik - tgl Tagalog - tha Thai - tib Tibetan - tig Tigre - tir Tigrinya - tiv Tivi - tli Tlingit - tmh Tamashek - tog Tonga (Nyasa) - ton Tonga (Tonga Islands) - tru Truk - tsi Tsimshian - tsn Tswana - tso Tsonga - tuk Turkmen - tum Tumbuka - tur Turkish - tut Altaic (Other) - twi Twi - tyv Tuvinian - uga Ugaritic - uig Uighur - ukr Ukrainian - umb Umbundu - und Undetermined - urd Urdu - uzb Uzbek - vai Vai - ven Venda - vie Vietnamese - vol Volapük - vot Votic - wak Wakashan Languages - wal Walamo - war Waray - was Washo - wel Welsh - wen Sorbian Languages - wol Wolof - xho Xhosa - yao Yao - yap Yap - yid Yiddish - yor Yoruba - zap Zapotec - zen Zenaga - zha Zhuang - zho Chinese - zul Zulu - zun Zuni - - */ - - return getid3_lib::EmbeddedLookup($languagecode, $begin, __LINE__, __FILE__, 'id3v2-languagecode'); - } - - - static function ETCOEventLookup($index) { - if (($index >= 0x17) && ($index <= 0xDF)) { - return 'reserved for future use'; - } - if (($index >= 0xE0) && ($index <= 0xEF)) { - return 'not predefined synch 0-F'; - } - if (($index >= 0xF0) && ($index <= 0xFC)) { - return 'reserved for future use'; - } - - static $EventLookup = array( - 0x00 => 'padding (has no meaning)', - 0x01 => 'end of initial silence', - 0x02 => 'intro start', - 0x03 => 'main part start', - 0x04 => 'outro start', - 0x05 => 'outro end', - 0x06 => 'verse start', - 0x07 => 'refrain start', - 0x08 => 'interlude start', - 0x09 => 'theme start', - 0x0A => 'variation start', - 0x0B => 'key change', - 0x0C => 'time change', - 0x0D => 'momentary unwanted noise (Snap, Crackle & Pop)', - 0x0E => 'sustained noise', - 0x0F => 'sustained noise end', - 0x10 => 'intro end', - 0x11 => 'main part end', - 0x12 => 'verse end', - 0x13 => 'refrain end', - 0x14 => 'theme end', - 0x15 => 'profanity', - 0x16 => 'profanity end', - 0xFD => 'audio end (start of silence)', - 0xFE => 'audio file ends', - 0xFF => 'one more byte of events follows' - ); - - return (isset($EventLookup[$index]) ? $EventLookup[$index] : ''); - } - - static function SYTLContentTypeLookup($index) { - static $SYTLContentTypeLookup = array( - 0x00 => 'other', - 0x01 => 'lyrics', - 0x02 => 'text transcription', - 0x03 => 'movement/part name', // (e.g. 'Adagio') - 0x04 => 'events', // (e.g. 'Don Quijote enters the stage') - 0x05 => 'chord', // (e.g. 'Bb F Fsus') - 0x06 => 'trivia/\'pop up\' information', - 0x07 => 'URLs to webpages', - 0x08 => 'URLs to images' - ); - - return (isset($SYTLContentTypeLookup[$index]) ? $SYTLContentTypeLookup[$index] : ''); - } - - static function APICPictureTypeLookup($index, $returnarray=false) { - static $APICPictureTypeLookup = array( - 0x00 => 'Other', - 0x01 => '32x32 pixels \'file icon\' (PNG only)', - 0x02 => 'Other file icon', - 0x03 => 'Cover (front)', - 0x04 => 'Cover (back)', - 0x05 => 'Leaflet page', - 0x06 => 'Media (e.g. label side of CD)', - 0x07 => 'Lead artist/lead performer/soloist', - 0x08 => 'Artist/performer', - 0x09 => 'Conductor', - 0x0A => 'Band/Orchestra', - 0x0B => 'Composer', - 0x0C => 'Lyricist/text writer', - 0x0D => 'Recording Location', - 0x0E => 'During recording', - 0x0F => 'During performance', - 0x10 => 'Movie/video screen capture', - 0x11 => 'A bright coloured fish', - 0x12 => 'Illustration', - 0x13 => 'Band/artist logotype', - 0x14 => 'Publisher/Studio logotype' - ); - if ($returnarray) { - return $APICPictureTypeLookup; - } - return (isset($APICPictureTypeLookup[$index]) ? $APICPictureTypeLookup[$index] : ''); - } - - static function COMRReceivedAsLookup($index) { - static $COMRReceivedAsLookup = array( - 0x00 => 'Other', - 0x01 => 'Standard CD album with other songs', - 0x02 => 'Compressed audio on CD', - 0x03 => 'File over the Internet', - 0x04 => 'Stream over the Internet', - 0x05 => 'As note sheets', - 0x06 => 'As note sheets in a book with other sheets', - 0x07 => 'Music on other media', - 0x08 => 'Non-musical merchandise' - ); - - return (isset($COMRReceivedAsLookup[$index]) ? $COMRReceivedAsLookup[$index] : ''); - } - - static function RVA2ChannelTypeLookup($index) { - static $RVA2ChannelTypeLookup = array( - 0x00 => 'Other', - 0x01 => 'Master volume', - 0x02 => 'Front right', - 0x03 => 'Front left', - 0x04 => 'Back right', - 0x05 => 'Back left', - 0x06 => 'Front centre', - 0x07 => 'Back centre', - 0x08 => 'Subwoofer' - ); - - return (isset($RVA2ChannelTypeLookup[$index]) ? $RVA2ChannelTypeLookup[$index] : ''); - } - - static function FrameNameLongLookup($framename) { - - $begin = __LINE__; - - /** This is not a comment! - - AENC Audio encryption - APIC Attached picture - ASPI Audio seek point index - BUF Recommended buffer size - CNT Play counter - COM Comments - COMM Comments - COMR Commercial frame - CRA Audio encryption - CRM Encrypted meta frame - ENCR Encryption method registration - EQU Equalisation - EQU2 Equalisation (2) - EQUA Equalisation - ETC Event timing codes - ETCO Event timing codes - GEO General encapsulated object - GEOB General encapsulated object - GRID Group identification registration - IPL Involved people list - IPLS Involved people list - LINK Linked information - LNK Linked information - MCDI Music CD identifier - MCI Music CD Identifier - MLL MPEG location lookup table - MLLT MPEG location lookup table - OWNE Ownership frame - PCNT Play counter - PIC Attached picture - POP Popularimeter - POPM Popularimeter - POSS Position synchronisation frame - PRIV Private frame - RBUF Recommended buffer size - REV Reverb - RVA Relative volume adjustment - RVA2 Relative volume adjustment (2) - RVAD Relative volume adjustment - RVRB Reverb - SEEK Seek frame - SIGN Signature frame - SLT Synchronised lyric/text - STC Synced tempo codes - SYLT Synchronised lyric/text - SYTC Synchronised tempo codes - TAL Album/Movie/Show title - TALB Album/Movie/Show title - TBP BPM (Beats Per Minute) - TBPM BPM (beats per minute) - TCM Composer - TCMP Part of a compilation - TCO Content type - TCOM Composer - TCON Content type - TCOP Copyright message - TCP Part of a compilation - TCR Copyright message - TDA Date - TDAT Date - TDEN Encoding time - TDLY Playlist delay - TDOR Original release time - TDRC Recording time - TDRL Release time - TDTG Tagging time - TDY Playlist delay - TEN Encoded by - TENC Encoded by - TEXT Lyricist/Text writer - TFLT File type - TFT File type - TIM Time - TIME Time - TIPL Involved people list - TIT1 Content group description - TIT2 Title/songname/content description - TIT3 Subtitle/Description refinement - TKE Initial key - TKEY Initial key - TLA Language(s) - TLAN Language(s) - TLE Length - TLEN Length - TMCL Musician credits list - TMED Media type - TMOO Mood - TMT Media type - TOA Original artist(s)/performer(s) - TOAL Original album/movie/show title - TOF Original filename - TOFN Original filename - TOL Original Lyricist(s)/text writer(s) - TOLY Original lyricist(s)/text writer(s) - TOPE Original artist(s)/performer(s) - TOR Original release year - TORY Original release year - TOT Original album/Movie/Show title - TOWN File owner/licensee - TP1 Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group - TP2 Band/Orchestra/Accompaniment - TP3 Conductor/Performer refinement - TP4 Interpreted, remixed, or otherwise modified by - TPA Part of a set - TPB Publisher - TPE1 Lead performer(s)/Soloist(s) - TPE2 Band/orchestra/accompaniment - TPE3 Conductor/performer refinement - TPE4 Interpreted, remixed, or otherwise modified by - TPOS Part of a set - TPRO Produced notice - TPUB Publisher - TRC ISRC (International Standard Recording Code) - TRCK Track number/Position in set - TRD Recording dates - TRDA Recording dates - TRK Track number/Position in set - TRSN Internet radio station name - TRSO Internet radio station owner - TS2 Album-Artist sort order - TSA Album sort order - TSC Composer sort order - TSI Size - TSIZ Size - TSO2 Album-Artist sort order - TSOA Album sort order - TSOC Composer sort order - TSOP Performer sort order - TSOT Title sort order - TSP Performer sort order - TSRC ISRC (international standard recording code) - TSS Software/hardware and settings used for encoding - TSSE Software/Hardware and settings used for encoding - TSST Set subtitle - TST Title sort order - TT1 Content group description - TT2 Title/Songname/Content description - TT3 Subtitle/Description refinement - TXT Lyricist/text writer - TXX User defined text information frame - TXXX User defined text information frame - TYE Year - TYER Year - UFI Unique file identifier - UFID Unique file identifier - ULT Unsychronised lyric/text transcription - USER Terms of use - USLT Unsynchronised lyric/text transcription - WAF Official audio file webpage - WAR Official artist/performer webpage - WAS Official audio source webpage - WCM Commercial information - WCOM Commercial information - WCOP Copyright/Legal information - WCP Copyright/Legal information - WOAF Official audio file webpage - WOAR Official artist/performer webpage - WOAS Official audio source webpage - WORS Official Internet radio station homepage - WPAY Payment - WPB Publishers official webpage - WPUB Publishers official webpage - WXX User defined URL link frame - WXXX User defined URL link frame - TFEA Featured Artist - TSTU Recording Studio - rgad Replay Gain Adjustment - - */ - - return getid3_lib::EmbeddedLookup($framename, $begin, __LINE__, __FILE__, 'id3v2-framename_long'); - - // Last three: - // from Helium2 [www.helium2.com] - // from http://privatewww.essex.ac.uk/~djmrob/replaygain/file_format_id3v2.html - } - - - static function FrameNameShortLookup($framename) { - - $begin = __LINE__; - - /** This is not a comment! - - AENC audio_encryption - APIC attached_picture - ASPI audio_seek_point_index - BUF recommended_buffer_size - CNT play_counter - COM comment - COMM comment - COMR commercial_frame - CRA audio_encryption - CRM encrypted_meta_frame - ENCR encryption_method_registration - EQU equalisation - EQU2 equalisation - EQUA equalisation - ETC event_timing_codes - ETCO event_timing_codes - GEO general_encapsulated_object - GEOB general_encapsulated_object - GRID group_identification_registration - IPL involved_people_list - IPLS involved_people_list - LINK linked_information - LNK linked_information - MCDI music_cd_identifier - MCI music_cd_identifier - MLL mpeg_location_lookup_table - MLLT mpeg_location_lookup_table - OWNE ownership_frame - PCNT play_counter - PIC attached_picture - POP popularimeter - POPM popularimeter - POSS position_synchronisation_frame - PRIV private_frame - RBUF recommended_buffer_size - REV reverb - RVA relative_volume_adjustment - RVA2 relative_volume_adjustment - RVAD relative_volume_adjustment - RVRB reverb - SEEK seek_frame - SIGN signature_frame - SLT synchronised_lyric - STC synced_tempo_codes - SYLT synchronised_lyric - SYTC synchronised_tempo_codes - TAL album - TALB album - TBP bpm - TBPM bpm - TCM composer - TCMP part_of_a_compilation - TCO genre - TCOM composer - TCON genre - TCOP copyright_message - TCP part_of_a_compilation - TCR copyright_message - TDA date - TDAT date - TDEN encoding_time - TDLY playlist_delay - TDOR original_release_time - TDRC recording_time - TDRL release_time - TDTG tagging_time - TDY playlist_delay - TEN encoded_by - TENC encoded_by - TEXT lyricist - TFLT file_type - TFT file_type - TIM time - TIME time - TIPL involved_people_list - TIT1 content_group_description - TIT2 title - TIT3 subtitle - TKE initial_key - TKEY initial_key - TLA language - TLAN language - TLE length - TLEN length - TMCL musician_credits_list - TMED media_type - TMOO mood - TMT media_type - TOA original_artist - TOAL original_album - TOF original_filename - TOFN original_filename - TOL original_lyricist - TOLY original_lyricist - TOPE original_artist - TOR original_year - TORY original_year - TOT original_album - TOWN file_owner - TP1 artist - TP2 band - TP3 conductor - TP4 remixer - TPA part_of_a_set - TPB publisher - TPE1 artist - TPE2 band - TPE3 conductor - TPE4 remixer - TPOS part_of_a_set - TPRO produced_notice - TPUB publisher - TRC isrc - TRCK track_number - TRD recording_dates - TRDA recording_dates - TRK track_number - TRSN internet_radio_station_name - TRSO internet_radio_station_owner - TS2 album_artist_sort_order - TSA album_sort_order - TSC composer_sort_order - TSI size - TSIZ size - TSO2 album_artist_sort_order - TSOA album_sort_order - TSOC composer_sort_order - TSOP performer_sort_order - TSOT title_sort_order - TSP performer_sort_order - TSRC isrc - TSS encoder_settings - TSSE encoder_settings - TSST set_subtitle - TST title_sort_order - TT1 description - TT2 title - TT3 subtitle - TXT lyricist - TXX text - TXXX text - TYE year - TYER year - UFI unique_file_identifier - UFID unique_file_identifier - ULT unsychronised_lyric - USER terms_of_use - USLT unsynchronised_lyric - WAF url_file - WAR url_artist - WAS url_source - WCM commercial_information - WCOM commercial_information - WCOP copyright - WCP copyright - WOAF url_file - WOAR url_artist - WOAS url_source - WORS url_station - WPAY url_payment - WPB url_publisher - WPUB url_publisher - WXX url_user - WXXX url_user - TFEA featured_artist - TSTU recording_studio - rgad replay_gain_adjustment - - */ - - return getid3_lib::EmbeddedLookup($framename, $begin, __LINE__, __FILE__, 'id3v2-framename_short'); - } - - static function TextEncodingTerminatorLookup($encoding) { - // http://www.id3.org/id3v2.4.0-structure.txt - // Frames that allow different types of text encoding contains a text encoding description byte. Possible encodings: - static $TextEncodingTerminatorLookup = array( - 0 => "\x00", // $00 ISO-8859-1. Terminated with $00. - 1 => "\x00\x00", // $01 UTF-16 encoded Unicode with BOM. All strings in the same frame SHALL have the same byteorder. Terminated with $00 00. - 2 => "\x00\x00", // $02 UTF-16BE encoded Unicode without BOM. Terminated with $00 00. - 3 => "\x00", // $03 UTF-8 encoded Unicode. Terminated with $00. - 255 => "\x00\x00" - ); - return (isset($TextEncodingTerminatorLookup[$encoding]) ? $TextEncodingTerminatorLookup[$encoding] : ''); - } - - static function TextEncodingNameLookup($encoding) { - // http://www.id3.org/id3v2.4.0-structure.txt - // Frames that allow different types of text encoding contains a text encoding description byte. Possible encodings: - static $TextEncodingNameLookup = array( - 0 => 'ISO-8859-1', // $00 ISO-8859-1. Terminated with $00. - 1 => 'UTF-16', // $01 UTF-16 encoded Unicode with BOM. All strings in the same frame SHALL have the same byteorder. Terminated with $00 00. - 2 => 'UTF-16BE', // $02 UTF-16BE encoded Unicode without BOM. Terminated with $00 00. - 3 => 'UTF-8', // $03 UTF-8 encoded Unicode. Terminated with $00. - 255 => 'UTF-16BE' - ); - return (isset($TextEncodingNameLookup[$encoding]) ? $TextEncodingNameLookup[$encoding] : 'ISO-8859-1'); - } - - static function IsValidID3v2FrameName($framename, $id3v2majorversion) { - switch ($id3v2majorversion) { - case 2: - return preg_match('#[A-Z][A-Z0-9]{2}#', $framename); - break; - - case 3: - case 4: - return preg_match('#[A-Z][A-Z0-9]{3}#', $framename); - break; - } - return false; - } - - static function IsANumber($numberstring, $allowdecimal=false, $allownegative=false) { - for ($i = 0; $i < strlen($numberstring); $i++) { - if ((chr($numberstring{$i}) < chr('0')) || (chr($numberstring{$i}) > chr('9'))) { - if (($numberstring{$i} == '.') && $allowdecimal) { - // allowed - } elseif (($numberstring{$i} == '-') && $allownegative && ($i == 0)) { - // allowed - } else { - return false; - } - } - } - return true; - } - - static function IsValidDateStampString($datestamp) { - if (strlen($datestamp) != 8) { - return false; - } - if (!self::IsANumber($datestamp, false)) { - return false; - } - $year = substr($datestamp, 0, 4); - $month = substr($datestamp, 4, 2); - $day = substr($datestamp, 6, 2); - if (($year == 0) || ($month == 0) || ($day == 0)) { - return false; - } - if ($month > 12) { - return false; - } - if ($day > 31) { - return false; - } - if (($day > 30) && (($month == 4) || ($month == 6) || ($month == 9) || ($month == 11))) { - return false; - } - if (($day > 29) && ($month == 2)) { - return false; - } - return true; - } - - static function ID3v2HeaderLength($majorversion) { - return (($majorversion == 2) ? 6 : 10); - } - -} - -?> diff --git a/3rdparty/getid3/module.tag.lyrics3.php b/3rdparty/getid3/module.tag.lyrics3.php deleted file mode 100644 index aaff717891b41a1c06b45054378c93fe616be790..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.tag.lyrics3.php +++ /dev/null @@ -1,297 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -/// // -// module.tag.lyrics3.php // -// module for analyzing Lyrics3 tags // -// dependencies: module.tag.apetag.php (optional) // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_lyrics3 extends getid3_handler -{ - - function Analyze() { - $info = &$this->getid3->info; - - // http://www.volweb.cz/str/tags.htm - - if (!getid3_lib::intValueSupported($info['filesize'])) { - $info['warning'][] = 'Unable to check for Lyrics3 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - return false; - } - - fseek($this->getid3->fp, (0 - 128 - 9 - 6), SEEK_END); // end - ID3v1 - "LYRICSEND" - [Lyrics3size] - $lyrics3_id3v1 = fread($this->getid3->fp, 128 + 9 + 6); - $lyrics3lsz = substr($lyrics3_id3v1, 0, 6); // Lyrics3size - $lyrics3end = substr($lyrics3_id3v1, 6, 9); // LYRICSEND or LYRICS200 - $id3v1tag = substr($lyrics3_id3v1, 15, 128); // ID3v1 - - if ($lyrics3end == 'LYRICSEND') { - // Lyrics3v1, ID3v1, no APE - - $lyrics3size = 5100; - $lyrics3offset = $info['filesize'] - 128 - $lyrics3size; - $lyrics3version = 1; - - } elseif ($lyrics3end == 'LYRICS200') { - // Lyrics3v2, ID3v1, no APE - - // LSZ = lyrics + 'LYRICSBEGIN'; add 6-byte size field; add 'LYRICS200' - $lyrics3size = $lyrics3lsz + 6 + strlen('LYRICS200'); - $lyrics3offset = $info['filesize'] - 128 - $lyrics3size; - $lyrics3version = 2; - - } elseif (substr(strrev($lyrics3_id3v1), 0, 9) == strrev('LYRICSEND')) { - // Lyrics3v1, no ID3v1, no APE - - $lyrics3size = 5100; - $lyrics3offset = $info['filesize'] - $lyrics3size; - $lyrics3version = 1; - $lyrics3offset = $info['filesize'] - $lyrics3size; - - } elseif (substr(strrev($lyrics3_id3v1), 0, 9) == strrev('LYRICS200')) { - - // Lyrics3v2, no ID3v1, no APE - - $lyrics3size = strrev(substr(strrev($lyrics3_id3v1), 9, 6)) + 6 + strlen('LYRICS200'); // LSZ = lyrics + 'LYRICSBEGIN'; add 6-byte size field; add 'LYRICS200' - $lyrics3offset = $info['filesize'] - $lyrics3size; - $lyrics3version = 2; - - } else { - - if (isset($info['ape']['tag_offset_start']) && ($info['ape']['tag_offset_start'] > 15)) { - - fseek($this->getid3->fp, $info['ape']['tag_offset_start'] - 15, SEEK_SET); - $lyrics3lsz = fread($this->getid3->fp, 6); - $lyrics3end = fread($this->getid3->fp, 9); - - if ($lyrics3end == 'LYRICSEND') { - // Lyrics3v1, APE, maybe ID3v1 - - $lyrics3size = 5100; - $lyrics3offset = $info['ape']['tag_offset_start'] - $lyrics3size; - $info['avdataend'] = $lyrics3offset; - $lyrics3version = 1; - $info['warning'][] = 'APE tag located after Lyrics3, will probably break Lyrics3 compatability'; - - } elseif ($lyrics3end == 'LYRICS200') { - // Lyrics3v2, APE, maybe ID3v1 - - $lyrics3size = $lyrics3lsz + 6 + strlen('LYRICS200'); // LSZ = lyrics + 'LYRICSBEGIN'; add 6-byte size field; add 'LYRICS200' - $lyrics3offset = $info['ape']['tag_offset_start'] - $lyrics3size; - $lyrics3version = 2; - $info['warning'][] = 'APE tag located after Lyrics3, will probably break Lyrics3 compatability'; - - } - - } - - } - - if (isset($lyrics3offset)) { - $info['avdataend'] = $lyrics3offset; - $this->getLyrics3Data($lyrics3offset, $lyrics3version, $lyrics3size); - - if (!isset($info['ape'])) { - $GETID3_ERRORARRAY = &$info['warning']; - if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.apetag.php', __FILE__, false)) { - $getid3_temp = new getID3(); - $getid3_temp->openfile($this->getid3->filename); - $getid3_apetag = new getid3_apetag($getid3_temp); - $getid3_apetag->overrideendoffset = $info['lyrics3']['tag_offset_start']; - $getid3_apetag->Analyze(); - if (!empty($getid3_temp->info['ape'])) { - $info['ape'] = $getid3_temp->info['ape']; - } - if (!empty($getid3_temp->info['replay_gain'])) { - $info['replay_gain'] = $getid3_temp->info['replay_gain']; - } - unset($getid3_temp, $getid3_apetag); - } - } - - } - - return true; - } - - function getLyrics3Data($endoffset, $version, $length) { - // http://www.volweb.cz/str/tags.htm - - $info = &$this->getid3->info; - - if (!getid3_lib::intValueSupported($endoffset)) { - $info['warning'][] = 'Unable to check for Lyrics3 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - return false; - } - - fseek($this->getid3->fp, $endoffset, SEEK_SET); - if ($length <= 0) { - return false; - } - $rawdata = fread($this->getid3->fp, $length); - - $ParsedLyrics3['raw']['lyrics3version'] = $version; - $ParsedLyrics3['raw']['lyrics3tagsize'] = $length; - $ParsedLyrics3['tag_offset_start'] = $endoffset; - $ParsedLyrics3['tag_offset_end'] = $endoffset + $length - 1; - - if (substr($rawdata, 0, 11) != 'LYRICSBEGIN') { - if (strpos($rawdata, 'LYRICSBEGIN') !== false) { - - $info['warning'][] = '"LYRICSBEGIN" expected at '.$endoffset.' but actually found at '.($endoffset + strpos($rawdata, 'LYRICSBEGIN')).' - this is invalid for Lyrics3 v'.$version; - $info['avdataend'] = $endoffset + strpos($rawdata, 'LYRICSBEGIN'); - $rawdata = substr($rawdata, strpos($rawdata, 'LYRICSBEGIN')); - $length = strlen($rawdata); - $ParsedLyrics3['tag_offset_start'] = $info['avdataend']; - $ParsedLyrics3['raw']['lyrics3tagsize'] = $length; - - } else { - - $info['error'][] = '"LYRICSBEGIN" expected at '.$endoffset.' but found "'.substr($rawdata, 0, 11).'" instead'; - return false; - - } - - } - - switch ($version) { - - case 1: - if (substr($rawdata, strlen($rawdata) - 9, 9) == 'LYRICSEND') { - $ParsedLyrics3['raw']['LYR'] = trim(substr($rawdata, 11, strlen($rawdata) - 11 - 9)); - $this->Lyrics3LyricsTimestampParse($ParsedLyrics3); - } else { - $info['error'][] = '"LYRICSEND" expected at '.(ftell($this->getid3->fp) - 11 + $length - 9).' but found "'.substr($rawdata, strlen($rawdata) - 9, 9).'" instead'; - return false; - } - break; - - case 2: - if (substr($rawdata, strlen($rawdata) - 9, 9) == 'LYRICS200') { - $ParsedLyrics3['raw']['unparsed'] = substr($rawdata, 11, strlen($rawdata) - 11 - 9 - 6); // LYRICSBEGIN + LYRICS200 + LSZ - $rawdata = $ParsedLyrics3['raw']['unparsed']; - while (strlen($rawdata) > 0) { - $fieldname = substr($rawdata, 0, 3); - $fieldsize = (int) substr($rawdata, 3, 5); - $ParsedLyrics3['raw'][$fieldname] = substr($rawdata, 8, $fieldsize); - $rawdata = substr($rawdata, 3 + 5 + $fieldsize); - } - - if (isset($ParsedLyrics3['raw']['IND'])) { - $i = 0; - $flagnames = array('lyrics', 'timestamps', 'inhibitrandom'); - foreach ($flagnames as $flagname) { - if (strlen($ParsedLyrics3['raw']['IND']) > $i++) { - $ParsedLyrics3['flags'][$flagname] = $this->IntString2Bool(substr($ParsedLyrics3['raw']['IND'], $i, 1 - 1)); - } - } - } - - $fieldnametranslation = array('ETT'=>'title', 'EAR'=>'artist', 'EAL'=>'album', 'INF'=>'comment', 'AUT'=>'author'); - foreach ($fieldnametranslation as $key => $value) { - if (isset($ParsedLyrics3['raw'][$key])) { - $ParsedLyrics3['comments'][$value][] = trim($ParsedLyrics3['raw'][$key]); - } - } - - if (isset($ParsedLyrics3['raw']['IMG'])) { - $imagestrings = explode("\r\n", $ParsedLyrics3['raw']['IMG']); - foreach ($imagestrings as $key => $imagestring) { - if (strpos($imagestring, '||') !== false) { - $imagearray = explode('||', $imagestring); - $ParsedLyrics3['images'][$key]['filename'] = (isset($imagearray[0]) ? $imagearray[0] : ''); - $ParsedLyrics3['images'][$key]['description'] = (isset($imagearray[1]) ? $imagearray[1] : ''); - $ParsedLyrics3['images'][$key]['timestamp'] = $this->Lyrics3Timestamp2Seconds(isset($imagearray[2]) ? $imagearray[2] : ''); - } - } - } - if (isset($ParsedLyrics3['raw']['LYR'])) { - $this->Lyrics3LyricsTimestampParse($ParsedLyrics3); - } - } else { - $info['error'][] = '"LYRICS200" expected at '.(ftell($this->getid3->fp) - 11 + $length - 9).' but found "'.substr($rawdata, strlen($rawdata) - 9, 9).'" instead'; - return false; - } - break; - - default: - $info['error'][] = 'Cannot process Lyrics3 version '.$version.' (only v1 and v2)'; - return false; - break; - } - - - if (isset($info['id3v1']['tag_offset_start']) && ($info['id3v1']['tag_offset_start'] <= $ParsedLyrics3['tag_offset_end'])) { - $info['warning'][] = 'ID3v1 tag information ignored since it appears to be a false synch in Lyrics3 tag data'; - unset($info['id3v1']); - foreach ($info['warning'] as $key => $value) { - if ($value == 'Some ID3v1 fields do not use NULL characters for padding') { - unset($info['warning'][$key]); - sort($info['warning']); - break; - } - } - } - - $info['lyrics3'] = $ParsedLyrics3; - - return true; - } - - function Lyrics3Timestamp2Seconds($rawtimestamp) { - if (preg_match('#^\\[([0-9]{2}):([0-9]{2})\\]$#', $rawtimestamp, $regs)) { - return (int) (($regs[1] * 60) + $regs[2]); - } - return false; - } - - function Lyrics3LyricsTimestampParse(&$Lyrics3data) { - $lyricsarray = explode("\r\n", $Lyrics3data['raw']['LYR']); - foreach ($lyricsarray as $key => $lyricline) { - $regs = array(); - unset($thislinetimestamps); - while (preg_match('#^(\\[[0-9]{2}:[0-9]{2}\\])#', $lyricline, $regs)) { - $thislinetimestamps[] = $this->Lyrics3Timestamp2Seconds($regs[0]); - $lyricline = str_replace($regs[0], '', $lyricline); - } - $notimestamplyricsarray[$key] = $lyricline; - if (isset($thislinetimestamps) && is_array($thislinetimestamps)) { - sort($thislinetimestamps); - foreach ($thislinetimestamps as $timestampkey => $timestamp) { - if (isset($Lyrics3data['synchedlyrics'][$timestamp])) { - // timestamps only have a 1-second resolution, it's possible that multiple lines - // could have the same timestamp, if so, append - $Lyrics3data['synchedlyrics'][$timestamp] .= "\r\n".$lyricline; - } else { - $Lyrics3data['synchedlyrics'][$timestamp] = $lyricline; - } - } - } - } - $Lyrics3data['unsynchedlyrics'] = implode("\r\n", $notimestamplyricsarray); - if (isset($Lyrics3data['synchedlyrics']) && is_array($Lyrics3data['synchedlyrics'])) { - ksort($Lyrics3data['synchedlyrics']); - } - return true; - } - - function IntString2Bool($char) { - if ($char == '1') { - return true; - } elseif ($char == '0') { - return false; - } - return null; - } -} - - -?> \ No newline at end of file diff --git a/3rdparty/getid3/module.tag.xmp.php b/3rdparty/getid3/module.tag.xmp.php deleted file mode 100644 index 141fd09d16ab2630d98326b665ccb68ed4d59c8c..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/module.tag.xmp.php +++ /dev/null @@ -1,766 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// module.tag.xmp.php // -// module for analyzing XMP metadata (e.g. in JPEG files) // -// dependencies: NONE // -// // -///////////////////////////////////////////////////////////////// -// // -// Module originally written [2009-Mar-26] by // -// Nigel Barnes // -// Bundled into getID3 with permission // -// called by getID3 in module.graphic.jpg.php // -// /// -///////////////////////////////////////////////////////////////// - -/************************************************************************************************** - * SWISScenter Source Nigel Barnes - * - * Provides functions for reading information from the 'APP1' Extensible Metadata - * Platform (XMP) segment of JPEG format files. - * This XMP segment is XML based and contains the Resource Description Framework (RDF) - * data, which itself can contain the Dublin Core Metadata Initiative (DCMI) information. - * - * This code uses segments from the JPEG Metadata Toolkit project by Evan Hunter. - *************************************************************************************************/ -class Image_XMP -{ - /** - * @var string - * The name of the image file that contains the XMP fields to extract and modify. - * @see Image_XMP() - */ - var $_sFilename = null; - - /** - * @var array - * The XMP fields that were extracted from the image or updated by this class. - * @see getAllTags() - */ - var $_aXMP = array(); - - /** - * @var boolean - * True if an APP1 segment was found to contain XMP metadata. - * @see isValid() - */ - var $_bXMPParse = false; - - /** - * Returns the status of XMP parsing during instantiation - * - * You'll normally want to call this method before trying to get XMP fields. - * - * @return boolean - * Returns true if an APP1 segment was found to contain XMP metadata. - */ - function isValid() - { - return $this->_bXMPParse; - } - - /** - * Get a copy of all XMP tags extracted from the image - * - * @return array - An array of XMP fields as it extracted by the XMPparse() function - */ - function getAllTags() - { - return $this->_aXMP; - } - - /** - * Reads all the JPEG header segments from an JPEG image file into an array - * - * @param string $filename - the filename of the JPEG file to read - * @return array $headerdata - Array of JPEG header segments - * @return boolean FALSE - if headers could not be read - */ - function _get_jpeg_header_data($filename) - { - // prevent refresh from aborting file operations and hosing file - ignore_user_abort(true); - - // Attempt to open the jpeg file - the at symbol supresses the error message about - // not being able to open files. The file_exists would have been used, but it - // does not work with files fetched over http or ftp. - if (is_readable($filename) && is_file($filename) && ($filehnd = fopen($filename, 'rb'))) { - // great - } else { - return false; - } - - // Read the first two characters - $data = fread($filehnd, 2); - - // Check that the first two characters are 0xFF 0xD8 (SOI - Start of image) - if ($data != "\xFF\xD8") - { - // No SOI (FF D8) at start of file - This probably isn't a JPEG file - close file and return; - echo '

    This probably is not a JPEG file

    '."\n"; - fclose($filehnd); - return false; - } - - // Read the third character - $data = fread($filehnd, 2); - - // Check that the third character is 0xFF (Start of first segment header) - if ($data{0} != "\xFF") - { - // NO FF found - close file and return - JPEG is probably corrupted - fclose($filehnd); - return false; - } - - // Flag that we havent yet hit the compressed image data - $hit_compressed_image_data = false; - - // Cycle through the file until, one of: 1) an EOI (End of image) marker is hit, - // 2) we have hit the compressed image data (no more headers are allowed after data) - // 3) or end of file is hit - - while (($data{1} != "\xD9") && (!$hit_compressed_image_data) && (!feof($filehnd))) - { - // Found a segment to look at. - // Check that the segment marker is not a Restart marker - restart markers don't have size or data after them - if ((ord($data{1}) < 0xD0) || (ord($data{1}) > 0xD7)) - { - // Segment isn't a Restart marker - // Read the next two bytes (size) - $sizestr = fread($filehnd, 2); - - // convert the size bytes to an integer - $decodedsize = unpack('nsize', $sizestr); - - // Save the start position of the data - $segdatastart = ftell($filehnd); - - // Read the segment data with length indicated by the previously read size - $segdata = fread($filehnd, $decodedsize['size'] - 2); - - // Store the segment information in the output array - $headerdata[] = array( - 'SegType' => ord($data{1}), - 'SegName' => $GLOBALS['JPEG_Segment_Names'][ord($data{1})], - 'SegDataStart' => $segdatastart, - 'SegData' => $segdata, - ); - } - - // If this is a SOS (Start Of Scan) segment, then there is no more header data - the compressed image data follows - if ($data{1} == "\xDA") - { - // Flag that we have hit the compressed image data - exit loop as no more headers available. - $hit_compressed_image_data = true; - } - else - { - // Not an SOS - Read the next two bytes - should be the segment marker for the next segment - $data = fread($filehnd, 2); - - // Check that the first byte of the two is 0xFF as it should be for a marker - if ($data{0} != "\xFF") - { - // NO FF found - close file and return - JPEG is probably corrupted - fclose($filehnd); - return false; - } - } - } - - // Close File - fclose($filehnd); - // Alow the user to abort from now on - ignore_user_abort(false); - - // Return the header data retrieved - return $headerdata; - } - - - /** - * Retrieves XMP information from an APP1 JPEG segment and returns the raw XML text as a string. - * - * @param string $filename - the filename of the JPEG file to read - * @return string $xmp_data - the string of raw XML text - * @return boolean FALSE - if an APP 1 XMP segment could not be found, or if an error occured - */ - function _get_XMP_text($filename) - { - //Get JPEG header data - $jpeg_header_data = $this->_get_jpeg_header_data($filename); - - //Cycle through the header segments - for ($i = 0; $i < count($jpeg_header_data); $i++) - { - // If we find an APP1 header, - if (strcmp($jpeg_header_data[$i]['SegName'], 'APP1') == 0) - { - // And if it has the Adobe XMP/RDF label (http://ns.adobe.com/xap/1.0/\x00) , - if (strncmp($jpeg_header_data[$i]['SegData'], 'http://ns.adobe.com/xap/1.0/'."\x00", 29) == 0) - { - // Found a XMP/RDF block - // Return the XMP text - $xmp_data = substr($jpeg_header_data[$i]['SegData'], 29); - - return trim($xmp_data); // trim() should not be neccesary, but some files found in the wild with null-terminated block (known samples from Apple Aperture) causes problems elsewhere (see http://www.getid3.org/phpBB3/viewtopic.php?f=4&t=1153) - } - } - } - return false; - } - - /** - * Parses a string containing XMP data (XML), and returns an array - * which contains all the XMP (XML) information. - * - * @param string $xml_text - a string containing the XMP data (XML) to be parsed - * @return array $xmp_array - an array containing all xmp details retrieved. - * @return boolean FALSE - couldn't parse the XMP data - */ - function read_XMP_array_from_text($xmltext) - { - // Check if there actually is any text to parse - if (trim($xmltext) == '') - { - return false; - } - - // Create an instance of a xml parser to parse the XML text - $xml_parser = xml_parser_create('UTF-8'); - - // Change: Fixed problem that caused the whitespace (especially newlines) to be destroyed when converting xml text to an xml array, as of revision 1.10 - - // We would like to remove unneccessary white space, but this will also - // remove things like newlines ( ) in the XML values, so white space - // will have to be removed later - if (xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 0) == false) - { - // Error setting case folding - destroy the parser and return - xml_parser_free($xml_parser); - return false; - } - - // to use XML code correctly we have to turn case folding - // (uppercasing) off. XML is case sensitive and upper - // casing is in reality XML standards violation - if (xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0) == false) - { - // Error setting case folding - destroy the parser and return - xml_parser_free($xml_parser); - return false; - } - - // Parse the XML text into a array structure - if (xml_parse_into_struct($xml_parser, $xmltext, $values, $tags) == 0) - { - // Error Parsing XML - destroy the parser and return - xml_parser_free($xml_parser); - return false; - } - - // Destroy the xml parser - xml_parser_free($xml_parser); - - // Clear the output array - $xmp_array = array(); - - // The XMP data has now been parsed into an array ... - - // Cycle through each of the array elements - $current_property = ''; // current property being processed - $container_index = -1; // -1 = no container open, otherwise index of container content - foreach ($values as $xml_elem) - { - // Syntax and Class names - switch ($xml_elem['tag']) - { - case 'x:xmpmeta': - // only defined attribute is x:xmptk written by Adobe XMP Toolkit; value is the version of the toolkit - break; - - case 'rdf:RDF': - // required element immediately within x:xmpmeta; no data here - break; - - case 'rdf:Description': - switch ($xml_elem['type']) - { - case 'open': - case 'complete': - if (array_key_exists('attributes', $xml_elem)) - { - // rdf:Description may contain wanted attributes - foreach (array_keys($xml_elem['attributes']) as $key) - { - // Check whether we want this details from this attribute - if (in_array($key, $GLOBALS['XMP_tag_captions'])) - { - // Attribute wanted - $xmp_array[$key] = $xml_elem['attributes'][$key]; - } - } - } - case 'cdata': - case 'close': - break; - } - - case 'rdf:ID': - case 'rdf:nodeID': - // Attributes are ignored - break; - - case 'rdf:li': - // Property member - if ($xml_elem['type'] == 'complete') - { - if (array_key_exists('attributes', $xml_elem)) - { - // If Lang Alt (language alternatives) then ensure we take the default language - if (isset($xml_elem['attributes']['xml:lang']) && ($xml_elem['attributes']['xml:lang'] != 'x-default')) - { - break; - } - } - if ($current_property != '') - { - $xmp_array[$current_property][$container_index] = (isset($xml_elem['value']) ? $xml_elem['value'] : ''); - $container_index += 1; - } - //else unidentified attribute!! - } - break; - - case 'rdf:Seq': - case 'rdf:Bag': - case 'rdf:Alt': - // Container found - switch ($xml_elem['type']) - { - case 'open': - $container_index = 0; - break; - case 'close': - $container_index = -1; - break; - case 'cdata': - break; - } - break; - - default: - // Check whether we want the details from this attribute - if (in_array($xml_elem['tag'], $GLOBALS['XMP_tag_captions'])) - { - switch ($xml_elem['type']) - { - case 'open': - // open current element - $current_property = $xml_elem['tag']; - break; - - case 'close': - // close current element - $current_property = ''; - break; - - case 'complete': - // store attribute value - $xmp_array[$xml_elem['tag']] = (isset($xml_elem['value']) ? $xml_elem['value'] : ''); - break; - - case 'cdata': - // ignore - break; - } - } - break; - } - - } - return $xmp_array; - } - - - /** - * Constructor - * - * @param string - Name of the image file to access and extract XMP information from. - */ - function Image_XMP($sFilename) - { - $this->_sFilename = $sFilename; - - if (is_file($this->_sFilename)) - { - // Get XMP data - $xmp_data = $this->_get_XMP_text($sFilename); - if ($xmp_data) - { - $this->_aXMP = $this->read_XMP_array_from_text($xmp_data); - $this->_bXMPParse = true; - } - } - } - -} - -/** -* Global Variable: XMP_tag_captions -* -* The Property names of all known XMP fields. -* Note: this is a full list with unrequired properties commented out. -*/ -$GLOBALS['XMP_tag_captions'] = array( -// IPTC Core - 'Iptc4xmpCore:CiAdrCity', - 'Iptc4xmpCore:CiAdrCtry', - 'Iptc4xmpCore:CiAdrExtadr', - 'Iptc4xmpCore:CiAdrPcode', - 'Iptc4xmpCore:CiAdrRegion', - 'Iptc4xmpCore:CiEmailWork', - 'Iptc4xmpCore:CiTelWork', - 'Iptc4xmpCore:CiUrlWork', - 'Iptc4xmpCore:CountryCode', - 'Iptc4xmpCore:CreatorContactInfo', - 'Iptc4xmpCore:IntellectualGenre', - 'Iptc4xmpCore:Location', - 'Iptc4xmpCore:Scene', - 'Iptc4xmpCore:SubjectCode', -// Dublin Core Schema - 'dc:contributor', - 'dc:coverage', - 'dc:creator', - 'dc:date', - 'dc:description', - 'dc:format', - 'dc:identifier', - 'dc:language', - 'dc:publisher', - 'dc:relation', - 'dc:rights', - 'dc:source', - 'dc:subject', - 'dc:title', - 'dc:type', -// XMP Basic Schema - 'xmp:Advisory', - 'xmp:BaseURL', - 'xmp:CreateDate', - 'xmp:CreatorTool', - 'xmp:Identifier', - 'xmp:Label', - 'xmp:MetadataDate', - 'xmp:ModifyDate', - 'xmp:Nickname', - 'xmp:Rating', - 'xmp:Thumbnails', - 'xmpidq:Scheme', -// XMP Rights Management Schema - 'xmpRights:Certificate', - 'xmpRights:Marked', - 'xmpRights:Owner', - 'xmpRights:UsageTerms', - 'xmpRights:WebStatement', -// These are not in spec but Photoshop CS seems to use them - 'xap:Advisory', - 'xap:BaseURL', - 'xap:CreateDate', - 'xap:CreatorTool', - 'xap:Identifier', - 'xap:MetadataDate', - 'xap:ModifyDate', - 'xap:Nickname', - 'xap:Rating', - 'xap:Thumbnails', - 'xapidq:Scheme', - 'xapRights:Certificate', - 'xapRights:Copyright', - 'xapRights:Marked', - 'xapRights:Owner', - 'xapRights:UsageTerms', - 'xapRights:WebStatement', -// XMP Media Management Schema - 'xapMM:DerivedFrom', - 'xapMM:DocumentID', - 'xapMM:History', - 'xapMM:InstanceID', - 'xapMM:ManagedFrom', - 'xapMM:Manager', - 'xapMM:ManageTo', - 'xapMM:ManageUI', - 'xapMM:ManagerVariant', - 'xapMM:RenditionClass', - 'xapMM:RenditionParams', - 'xapMM:VersionID', - 'xapMM:Versions', - 'xapMM:LastURL', - 'xapMM:RenditionOf', - 'xapMM:SaveID', -// XMP Basic Job Ticket Schema - 'xapBJ:JobRef', -// XMP Paged-Text Schema - 'xmpTPg:MaxPageSize', - 'xmpTPg:NPages', - 'xmpTPg:Fonts', - 'xmpTPg:Colorants', - 'xmpTPg:PlateNames', -// Adobe PDF Schema - 'pdf:Keywords', - 'pdf:PDFVersion', - 'pdf:Producer', -// Photoshop Schema - 'photoshop:AuthorsPosition', - 'photoshop:CaptionWriter', - 'photoshop:Category', - 'photoshop:City', - 'photoshop:Country', - 'photoshop:Credit', - 'photoshop:DateCreated', - 'photoshop:Headline', - 'photoshop:History', -// Not in XMP spec - 'photoshop:Instructions', - 'photoshop:Source', - 'photoshop:State', - 'photoshop:SupplementalCategories', - 'photoshop:TransmissionReference', - 'photoshop:Urgency', -// EXIF Schemas - 'tiff:ImageWidth', - 'tiff:ImageLength', - 'tiff:BitsPerSample', - 'tiff:Compression', - 'tiff:PhotometricInterpretation', - 'tiff:Orientation', - 'tiff:SamplesPerPixel', - 'tiff:PlanarConfiguration', - 'tiff:YCbCrSubSampling', - 'tiff:YCbCrPositioning', - 'tiff:XResolution', - 'tiff:YResolution', - 'tiff:ResolutionUnit', - 'tiff:TransferFunction', - 'tiff:WhitePoint', - 'tiff:PrimaryChromaticities', - 'tiff:YCbCrCoefficients', - 'tiff:ReferenceBlackWhite', - 'tiff:DateTime', - 'tiff:ImageDescription', - 'tiff:Make', - 'tiff:Model', - 'tiff:Software', - 'tiff:Artist', - 'tiff:Copyright', - 'exif:ExifVersion', - 'exif:FlashpixVersion', - 'exif:ColorSpace', - 'exif:ComponentsConfiguration', - 'exif:CompressedBitsPerPixel', - 'exif:PixelXDimension', - 'exif:PixelYDimension', - 'exif:MakerNote', - 'exif:UserComment', - 'exif:RelatedSoundFile', - 'exif:DateTimeOriginal', - 'exif:DateTimeDigitized', - 'exif:ExposureTime', - 'exif:FNumber', - 'exif:ExposureProgram', - 'exif:SpectralSensitivity', - 'exif:ISOSpeedRatings', - 'exif:OECF', - 'exif:ShutterSpeedValue', - 'exif:ApertureValue', - 'exif:BrightnessValue', - 'exif:ExposureBiasValue', - 'exif:MaxApertureValue', - 'exif:SubjectDistance', - 'exif:MeteringMode', - 'exif:LightSource', - 'exif:Flash', - 'exif:FocalLength', - 'exif:SubjectArea', - 'exif:FlashEnergy', - 'exif:SpatialFrequencyResponse', - 'exif:FocalPlaneXResolution', - 'exif:FocalPlaneYResolution', - 'exif:FocalPlaneResolutionUnit', - 'exif:SubjectLocation', - 'exif:SensingMethod', - 'exif:FileSource', - 'exif:SceneType', - 'exif:CFAPattern', - 'exif:CustomRendered', - 'exif:ExposureMode', - 'exif:WhiteBalance', - 'exif:DigitalZoomRatio', - 'exif:FocalLengthIn35mmFilm', - 'exif:SceneCaptureType', - 'exif:GainControl', - 'exif:Contrast', - 'exif:Saturation', - 'exif:Sharpness', - 'exif:DeviceSettingDescription', - 'exif:SubjectDistanceRange', - 'exif:ImageUniqueID', - 'exif:GPSVersionID', - 'exif:GPSLatitude', - 'exif:GPSLongitude', - 'exif:GPSAltitudeRef', - 'exif:GPSAltitude', - 'exif:GPSTimeStamp', - 'exif:GPSSatellites', - 'exif:GPSStatus', - 'exif:GPSMeasureMode', - 'exif:GPSDOP', - 'exif:GPSSpeedRef', - 'exif:GPSSpeed', - 'exif:GPSTrackRef', - 'exif:GPSTrack', - 'exif:GPSImgDirectionRef', - 'exif:GPSImgDirection', - 'exif:GPSMapDatum', - 'exif:GPSDestLatitude', - 'exif:GPSDestLongitude', - 'exif:GPSDestBearingRef', - 'exif:GPSDestBearing', - 'exif:GPSDestDistanceRef', - 'exif:GPSDestDistance', - 'exif:GPSProcessingMethod', - 'exif:GPSAreaInformation', - 'exif:GPSDifferential', - 'stDim:w', - 'stDim:h', - 'stDim:unit', - 'xapGImg:height', - 'xapGImg:width', - 'xapGImg:format', - 'xapGImg:image', - 'stEvt:action', - 'stEvt:instanceID', - 'stEvt:parameters', - 'stEvt:softwareAgent', - 'stEvt:when', - 'stRef:instanceID', - 'stRef:documentID', - 'stRef:versionID', - 'stRef:renditionClass', - 'stRef:renditionParams', - 'stRef:manager', - 'stRef:managerVariant', - 'stRef:manageTo', - 'stRef:manageUI', - 'stVer:comments', - 'stVer:event', - 'stVer:modifyDate', - 'stVer:modifier', - 'stVer:version', - 'stJob:name', - 'stJob:id', - 'stJob:url', -// Exif Flash - 'exif:Fired', - 'exif:Return', - 'exif:Mode', - 'exif:Function', - 'exif:RedEyeMode', -// Exif OECF/SFR - 'exif:Columns', - 'exif:Rows', - 'exif:Names', - 'exif:Values', -// Exif CFAPattern - 'exif:Columns', - 'exif:Rows', - 'exif:Values', -// Exif DeviceSettings - 'exif:Columns', - 'exif:Rows', - 'exif:Settings', -); - - -/** -* Global Variable: JPEG_Segment_Names -* -* The names of the JPEG segment markers, indexed by their marker number -*/ -$GLOBALS['JPEG_Segment_Names'] = array( - 0x01 => 'TEM', - 0x02 => 'RES', - 0xC0 => 'SOF0', - 0xC1 => 'SOF1', - 0xC2 => 'SOF2', - 0xC3 => 'SOF4', - 0xC4 => 'DHT', - 0xC5 => 'SOF5', - 0xC6 => 'SOF6', - 0xC7 => 'SOF7', - 0xC8 => 'JPG', - 0xC9 => 'SOF9', - 0xCA => 'SOF10', - 0xCB => 'SOF11', - 0xCC => 'DAC', - 0xCD => 'SOF13', - 0xCE => 'SOF14', - 0xCF => 'SOF15', - 0xD0 => 'RST0', - 0xD1 => 'RST1', - 0xD2 => 'RST2', - 0xD3 => 'RST3', - 0xD4 => 'RST4', - 0xD5 => 'RST5', - 0xD6 => 'RST6', - 0xD7 => 'RST7', - 0xD8 => 'SOI', - 0xD9 => 'EOI', - 0xDA => 'SOS', - 0xDB => 'DQT', - 0xDC => 'DNL', - 0xDD => 'DRI', - 0xDE => 'DHP', - 0xDF => 'EXP', - 0xE0 => 'APP0', - 0xE1 => 'APP1', - 0xE2 => 'APP2', - 0xE3 => 'APP3', - 0xE4 => 'APP4', - 0xE5 => 'APP5', - 0xE6 => 'APP6', - 0xE7 => 'APP7', - 0xE8 => 'APP8', - 0xE9 => 'APP9', - 0xEA => 'APP10', - 0xEB => 'APP11', - 0xEC => 'APP12', - 0xED => 'APP13', - 0xEE => 'APP14', - 0xEF => 'APP15', - 0xF0 => 'JPG0', - 0xF1 => 'JPG1', - 0xF2 => 'JPG2', - 0xF3 => 'JPG3', - 0xF4 => 'JPG4', - 0xF5 => 'JPG5', - 0xF6 => 'JPG6', - 0xF7 => 'JPG7', - 0xF8 => 'JPG8', - 0xF9 => 'JPG9', - 0xFA => 'JPG10', - 0xFB => 'JPG11', - 0xFC => 'JPG12', - 0xFD => 'JPG13', - 0xFE => 'COM', -); - -?> \ No newline at end of file diff --git a/3rdparty/getid3/write.apetag.php b/3rdparty/getid3/write.apetag.php deleted file mode 100644 index 2b553699fd902148e0402013a79cd367890938c8..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.apetag.php +++ /dev/null @@ -1,225 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// write.apetag.php // -// module for writing APE tags // -// dependencies: module.tag.apetag.php // -// /// -///////////////////////////////////////////////////////////////// - - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.apetag.php', __FILE__, true); - -class getid3_write_apetag -{ - - var $filename; - var $tag_data; - var $always_preserve_replaygain = true; // ReplayGain / MP3gain tags will be copied from old tag even if not passed in data - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - - function getid3_write_apetag() { - return true; - } - - function WriteAPEtag() { - // NOTE: All data passed to this function must be UTF-8 format - - $getID3 = new getID3; - $ThisFileInfo = $getID3->analyze($this->filename); - - if (isset($ThisFileInfo['ape']['tag_offset_start']) && isset($ThisFileInfo['lyrics3']['tag_offset_end'])) { - if ($ThisFileInfo['ape']['tag_offset_start'] >= $ThisFileInfo['lyrics3']['tag_offset_end']) { - // Current APE tag between Lyrics3 and ID3v1/EOF - // This break Lyrics3 functionality - if (!$this->DeleteAPEtag()) { - return false; - } - $ThisFileInfo = $getID3->analyze($this->filename); - } - } - - if ($this->always_preserve_replaygain) { - $ReplayGainTagsToPreserve = array('mp3gain_minmax', 'mp3gain_album_minmax', 'mp3gain_undo', 'replaygain_track_peak', 'replaygain_track_gain', 'replaygain_album_peak', 'replaygain_album_gain'); - foreach ($ReplayGainTagsToPreserve as $rg_key) { - if (isset($ThisFileInfo['ape']['items'][strtolower($rg_key)]['data'][0]) && !isset($this->tag_data[strtoupper($rg_key)][0])) { - $this->tag_data[strtoupper($rg_key)][0] = $ThisFileInfo['ape']['items'][strtolower($rg_key)]['data'][0]; - } - } - } - - if ($APEtag = $this->GenerateAPEtag()) { - if (is_writable($this->filename) && is_file($this->filename) && ($fp = fopen($this->filename, 'a+b'))) { - $oldignoreuserabort = ignore_user_abort(true); - flock($fp, LOCK_EX); - - $PostAPEdataOffset = $ThisFileInfo['avdataend']; - if (isset($ThisFileInfo['ape']['tag_offset_end'])) { - $PostAPEdataOffset = max($PostAPEdataOffset, $ThisFileInfo['ape']['tag_offset_end']); - } - if (isset($ThisFileInfo['lyrics3']['tag_offset_start'])) { - $PostAPEdataOffset = max($PostAPEdataOffset, $ThisFileInfo['lyrics3']['tag_offset_start']); - } - fseek($fp, $PostAPEdataOffset, SEEK_SET); - $PostAPEdata = ''; - if ($ThisFileInfo['filesize'] > $PostAPEdataOffset) { - $PostAPEdata = fread($fp, $ThisFileInfo['filesize'] - $PostAPEdataOffset); - } - - fseek($fp, $PostAPEdataOffset, SEEK_SET); - if (isset($ThisFileInfo['ape']['tag_offset_start'])) { - fseek($fp, $ThisFileInfo['ape']['tag_offset_start'], SEEK_SET); - } - ftruncate($fp, ftell($fp)); - fwrite($fp, $APEtag, strlen($APEtag)); - if (!empty($PostAPEdata)) { - fwrite($fp, $PostAPEdata, strlen($PostAPEdata)); - } - flock($fp, LOCK_UN); - fclose($fp); - ignore_user_abort($oldignoreuserabort); - return true; - } - } - return false; - } - - function DeleteAPEtag() { - $getID3 = new getID3; - $ThisFileInfo = $getID3->analyze($this->filename); - if (isset($ThisFileInfo['ape']['tag_offset_start']) && isset($ThisFileInfo['ape']['tag_offset_end'])) { - if (is_writable($this->filename) && is_file($this->filename) && ($fp = fopen($this->filename, 'a+b'))) { - - flock($fp, LOCK_EX); - $oldignoreuserabort = ignore_user_abort(true); - - fseek($fp, $ThisFileInfo['ape']['tag_offset_end'], SEEK_SET); - $DataAfterAPE = ''; - if ($ThisFileInfo['filesize'] > $ThisFileInfo['ape']['tag_offset_end']) { - $DataAfterAPE = fread($fp, $ThisFileInfo['filesize'] - $ThisFileInfo['ape']['tag_offset_end']); - } - - ftruncate($fp, $ThisFileInfo['ape']['tag_offset_start']); - fseek($fp, $ThisFileInfo['ape']['tag_offset_start'], SEEK_SET); - - if (!empty($DataAfterAPE)) { - fwrite($fp, $DataAfterAPE, strlen($DataAfterAPE)); - } - - flock($fp, LOCK_UN); - fclose($fp); - ignore_user_abort($oldignoreuserabort); - - return true; - } - return false; - } - return true; - } - - - function GenerateAPEtag() { - // NOTE: All data passed to this function must be UTF-8 format - - $items = array(); - if (!is_array($this->tag_data)) { - return false; - } - foreach ($this->tag_data as $key => $arrayofvalues) { - if (!is_array($arrayofvalues)) { - return false; - } - - $valuestring = ''; - foreach ($arrayofvalues as $value) { - $valuestring .= str_replace("\x00", '', $value)."\x00"; - } - $valuestring = rtrim($valuestring, "\x00"); - - // Length of the assigned value in bytes - $tagitem = getid3_lib::LittleEndian2String(strlen($valuestring), 4); - - //$tagitem .= $this->GenerateAPEtagFlags(true, true, false, 0, false); - $tagitem .= "\x00\x00\x00\x00"; - - $tagitem .= $this->CleanAPEtagItemKey($key)."\x00"; - $tagitem .= $valuestring; - - $items[] = $tagitem; - - } - - return $this->GenerateAPEtagHeaderFooter($items, true).implode('', $items).$this->GenerateAPEtagHeaderFooter($items, false); - } - - function GenerateAPEtagHeaderFooter(&$items, $isheader=false) { - $tagdatalength = 0; - foreach ($items as $itemdata) { - $tagdatalength += strlen($itemdata); - } - - $APEheader = 'APETAGEX'; - $APEheader .= getid3_lib::LittleEndian2String(2000, 4); - $APEheader .= getid3_lib::LittleEndian2String(32 + $tagdatalength, 4); - $APEheader .= getid3_lib::LittleEndian2String(count($items), 4); - $APEheader .= $this->GenerateAPEtagFlags(true, true, $isheader, 0, false); - $APEheader .= str_repeat("\x00", 8); - - return $APEheader; - } - - function GenerateAPEtagFlags($header=true, $footer=true, $isheader=false, $encodingid=0, $readonly=false) { - $APEtagFlags = array_fill(0, 4, 0); - if ($header) { - $APEtagFlags[0] |= 0x80; // Tag contains a header - } - if (!$footer) { - $APEtagFlags[0] |= 0x40; // Tag contains no footer - } - if ($isheader) { - $APEtagFlags[0] |= 0x20; // This is the header, not the footer - } - - // 0: Item contains text information coded in UTF-8 - // 1: Item contains binary information °) - // 2: Item is a locator of external stored information °°) - // 3: reserved - $APEtagFlags[3] |= ($encodingid << 1); - - if ($readonly) { - $APEtagFlags[3] |= 0x01; // Tag or Item is Read Only - } - - return chr($APEtagFlags[3]).chr($APEtagFlags[2]).chr($APEtagFlags[1]).chr($APEtagFlags[0]); - } - - function CleanAPEtagItemKey($itemkey) { - $itemkey = preg_replace("#[^\x20-\x7E]#i", '', $itemkey); - - // http://www.personal.uni-jena.de/~pfk/mpp/sv8/apekey.html - switch (strtoupper($itemkey)) { - case 'EAN/UPC': - case 'ISBN': - case 'LC': - case 'ISRC': - $itemkey = strtoupper($itemkey); - break; - - default: - $itemkey = ucwords($itemkey); - break; - } - return $itemkey; - - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/write.id3v1.php b/3rdparty/getid3/write.id3v1.php deleted file mode 100644 index cecccd8ac5408b9bb52fab7d747d9d3b5d75d7fe..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.id3v1.php +++ /dev/null @@ -1,138 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// write.id3v1.php // -// module for writing ID3v1 tags // -// dependencies: module.tag.id3v1.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v1.php', __FILE__, true); - -class getid3_write_id3v1 -{ - var $filename; - var $filesize; - var $tag_data; - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - - function getid3_write_id3v1() { - return true; - } - - function WriteID3v1() { - // File MUST be writeable - CHMOD(646) at least - if (!empty($this->filename) && is_readable($this->filename) && is_writable($this->filename) && is_file($this->filename)) { - $this->setRealFileSize(); - if (($this->filesize <= 0) || !getid3_lib::intValueSupported($this->filesize)) { - $this->errors[] = 'Unable to WriteID3v1('.$this->filename.') because filesize ('.$this->filesize.') is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - return false; - } - if ($fp_source = fopen($this->filename, 'r+b')) { - fseek($fp_source, -128, SEEK_END); - if (fread($fp_source, 3) == 'TAG') { - fseek($fp_source, -128, SEEK_END); // overwrite existing ID3v1 tag - } else { - fseek($fp_source, 0, SEEK_END); // append new ID3v1 tag - } - $this->tag_data['track'] = (isset($this->tag_data['track']) ? $this->tag_data['track'] : (isset($this->tag_data['track_number']) ? $this->tag_data['track_number'] : (isset($this->tag_data['tracknumber']) ? $this->tag_data['tracknumber'] : ''))); - - $new_id3v1_tag_data = getid3_id3v1::GenerateID3v1Tag( - (isset($this->tag_data['title'] ) ? $this->tag_data['title'] : ''), - (isset($this->tag_data['artist'] ) ? $this->tag_data['artist'] : ''), - (isset($this->tag_data['album'] ) ? $this->tag_data['album'] : ''), - (isset($this->tag_data['year'] ) ? $this->tag_data['year'] : ''), - (isset($this->tag_data['genreid']) ? $this->tag_data['genreid'] : ''), - (isset($this->tag_data['comment']) ? $this->tag_data['comment'] : ''), - (isset($this->tag_data['track'] ) ? $this->tag_data['track'] : '')); - fwrite($fp_source, $new_id3v1_tag_data, 128); - fclose($fp_source); - return true; - - } else { - $this->errors[] = 'Could not fopen('.$this->filename.', "r+b")'; - return false; - } - } - $this->errors[] = 'File is not writeable: '.$this->filename; - return false; - } - - function FixID3v1Padding() { - // ID3v1 data is supposed to be padded with NULL characters, but some taggers incorrectly use spaces - // This function rewrites the ID3v1 tag with correct padding - - // Initialize getID3 engine - $getID3 = new getID3; - $getID3->option_tag_id3v2 = false; - $getID3->option_tag_apetag = false; - $getID3->option_tags_html = false; - $getID3->option_extra_info = false; - $getID3->option_tag_id3v1 = true; - $ThisFileInfo = $getID3->analyze($this->filename); - if (isset($ThisFileInfo['tags']['id3v1'])) { - foreach ($ThisFileInfo['tags']['id3v1'] as $key => $value) { - $id3v1data[$key] = implode(',', $value); - } - $this->tag_data = $id3v1data; - return $this->WriteID3v1(); - } - return false; - } - - function RemoveID3v1() { - // File MUST be writeable - CHMOD(646) at least - if (!empty($this->filename) && is_readable($this->filename) && is_writable($this->filename) && is_file($this->filename)) { - $this->setRealFileSize(); - if (($this->filesize <= 0) || !getid3_lib::intValueSupported($this->filesize)) { - $this->errors[] = 'Unable to RemoveID3v1('.$this->filename.') because filesize ('.$this->filesize.') is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - return false; - } - if ($fp_source = fopen($this->filename, 'r+b')) { - - fseek($fp_source, -128, SEEK_END); - if (fread($fp_source, 3) == 'TAG') { - ftruncate($fp_source, $this->filesize - 128); - } else { - // no ID3v1 tag to begin with - do nothing - } - fclose($fp_source); - return true; - - } else { - $this->errors[] = 'Could not fopen('.$this->filename.', "r+b")'; - } - } else { - $this->errors[] = $this->filename.' is not writeable'; - } - return false; - } - - function setRealFileSize() { - if (PHP_INT_MAX > 2147483647) { - $this->filesize = filesize($this->filename); - return true; - } - // 32-bit PHP will not return correct values for filesize() if file is >=2GB - // but getID3->analyze() has workarounds to get actual filesize - $getID3 = new getID3; - $getID3->option_tag_id3v1 = false; - $getID3->option_tag_id3v2 = false; - $getID3->option_tag_apetag = false; - $getID3->option_tags_html = false; - $getID3->option_extra_info = false; - $ThisFileInfo = $getID3->analyze($this->filename); - $this->filesize = $ThisFileInfo['filesize']; - return true; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/write.id3v2.php b/3rdparty/getid3/write.id3v2.php deleted file mode 100644 index ee7c5de2df552a1965a3080b4b43bb4c5665b7c6..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.id3v2.php +++ /dev/null @@ -1,2050 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -/// // -// write.id3v2.php // -// module for writing ID3v2 tags // -// dependencies: module.tag.id3v2.php // -// /// -///////////////////////////////////////////////////////////////// - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true); - -class getid3_write_id3v2 -{ - var $filename; - var $tag_data; - var $fread_buffer_size = 32768; // read buffer size in bytes - var $paddedlength = 4096; // minimum length of ID3v2 tag in bytes - var $majorversion = 3; // ID3v2 major version (2, 3 (recommended), 4) - var $minorversion = 0; // ID3v2 minor version - always 0 - var $merge_existing_data = false; // if true, merge new data with existing tags; if false, delete old tag data and only write new tags - var $id3v2_default_encodingid = 0; // default text encoding (ISO-8859-1) if not explicitly passed - var $id3v2_use_unsynchronisation = false; // the specs say it should be TRUE, but most other ID3v2-aware programs are broken if unsynchronization is used, so by default don't use it. - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - - function getid3_write_id3v2() { - return true; - } - - function WriteID3v2() { - // File MUST be writeable - CHMOD(646) at least. It's best if the - // directory is also writeable, because that method is both faster and less susceptible to errors. - - if (!empty($this->filename) && (is_writeable($this->filename) || (!file_exists($this->filename) && is_writeable(dirname($this->filename))))) { - // Initialize getID3 engine - $getID3 = new getID3; - $OldThisFileInfo = $getID3->analyze($this->filename); - if (!getid3_lib::intValueSupported($OldThisFileInfo['filesize'])) { - $this->errors[] = 'Unable to write ID3v2 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - fclose($fp_source); - return false; - } - if ($this->merge_existing_data) { - // merge with existing data - if (!empty($OldThisFileInfo['id3v2'])) { - $this->tag_data = $this->array_join_merge($OldThisFileInfo['id3v2'], $this->tag_data); - } - } - $this->paddedlength = (isset($OldThisFileInfo['id3v2']['headerlength']) ? max($OldThisFileInfo['id3v2']['headerlength'], $this->paddedlength) : $this->paddedlength); - - if ($NewID3v2Tag = $this->GenerateID3v2Tag()) { - - if (file_exists($this->filename) && is_writeable($this->filename) && isset($OldThisFileInfo['id3v2']['headerlength']) && ($OldThisFileInfo['id3v2']['headerlength'] == strlen($NewID3v2Tag))) { - - // best and fastest method - insert-overwrite existing tag (padded to length of old tag if neccesary) - if (file_exists($this->filename)) { - - if (is_readable($this->filename) && is_writable($this->filename) && is_file($this->filename) && ($fp = fopen($this->filename, 'r+b'))) { - rewind($fp); - fwrite($fp, $NewID3v2Tag, strlen($NewID3v2Tag)); - fclose($fp); - } else { - $this->errors[] = 'Could not fopen("'.$this->filename.'", "r+b")'; - } - - } else { - - if (is_writable($this->filename) && is_file($this->filename) && ($fp = fopen($this->filename, 'wb'))) { - rewind($fp); - fwrite($fp, $NewID3v2Tag, strlen($NewID3v2Tag)); - fclose($fp); - } else { - $this->errors[] = 'Could not fopen("'.$this->filename.'", "wb")'; - } - - } - - } else { - - if ($tempfilename = tempnam(GETID3_TEMP_DIR, 'getID3')) { - if (is_readable($this->filename) && is_file($this->filename) && ($fp_source = fopen($this->filename, 'rb'))) { - if (is_writable($tempfilename) && is_file($tempfilename) && ($fp_temp = fopen($tempfilename, 'wb'))) { - - fwrite($fp_temp, $NewID3v2Tag, strlen($NewID3v2Tag)); - - rewind($fp_source); - if (!empty($OldThisFileInfo['avdataoffset'])) { - fseek($fp_source, $OldThisFileInfo['avdataoffset'], SEEK_SET); - } - - while ($buffer = fread($fp_source, $this->fread_buffer_size)) { - fwrite($fp_temp, $buffer, strlen($buffer)); - } - - fclose($fp_temp); - fclose($fp_source); - copy($tempfilename, $this->filename); - unlink($tempfilename); - return true; - - } else { - $this->errors[] = 'Could not fopen("'.$tempfilename.'", "wb")'; - } - fclose($fp_source); - - } else { - $this->errors[] = 'Could not fopen("'.$this->filename.'", "rb")'; - } - } - return false; - - } - - } else { - - $this->errors[] = '$this->GenerateID3v2Tag() failed'; - - } - - if (!empty($this->errors)) { - return false; - } - return true; - } else { - $this->errors[] = 'WriteID3v2() failed: !is_writeable('.$this->filename.')'; - } - return false; - } - - function RemoveID3v2() { - // File MUST be writeable - CHMOD(646) at least. It's best if the - // directory is also writeable, because that method is both faster and less susceptible to errors. - if (is_writeable(dirname($this->filename))) { - - // preferred method - only one copying operation, minimal chance of corrupting - // original file if script is interrupted, but required directory to be writeable - if (is_readable($this->filename) && is_file($this->filename) && ($fp_source = fopen($this->filename, 'rb'))) { - - // Initialize getID3 engine - $getID3 = new getID3; - $OldThisFileInfo = $getID3->analyze($this->filename); - if (!getid3_lib::intValueSupported($OldThisFileInfo['filesize'])) { - $this->errors[] = 'Unable to remove ID3v2 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - fclose($fp_source); - return false; - } - rewind($fp_source); - if ($OldThisFileInfo['avdataoffset'] !== false) { - fseek($fp_source, $OldThisFileInfo['avdataoffset'], SEEK_SET); - } - if (is_writable($this->filename) && is_file($this->filename) && ($fp_temp = fopen($this->filename.'getid3tmp', 'w+b'))) { - while ($buffer = fread($fp_source, $this->fread_buffer_size)) { - fwrite($fp_temp, $buffer, strlen($buffer)); - } - fclose($fp_temp); - } else { - $this->errors[] = 'Could not fopen("'.$this->filename.'getid3tmp", "w+b")'; - } - fclose($fp_source); - } else { - $this->errors[] = 'Could not fopen("'.$this->filename.'", "rb")'; - } - if (file_exists($this->filename)) { - unlink($this->filename); - } - rename($this->filename.'getid3tmp', $this->filename); - - } elseif (is_writable($this->filename)) { - - // less desirable alternate method - double-copies the file, overwrites original file - // and could corrupt source file if the script is interrupted or an error occurs. - if (is_readable($this->filename) && is_file($this->filename) && ($fp_source = fopen($this->filename, 'rb'))) { - - // Initialize getID3 engine - $getID3 = new getID3; - $OldThisFileInfo = $getID3->analyze($this->filename); - if (!getid3_lib::intValueSupported($OldThisFileInfo['filesize'])) { - $this->errors[] = 'Unable to remove ID3v2 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB'; - fclose($fp_source); - return false; - } - rewind($fp_source); - if ($OldThisFileInfo['avdataoffset'] !== false) { - fseek($fp_source, $OldThisFileInfo['avdataoffset'], SEEK_SET); - } - if ($fp_temp = tmpfile()) { - while ($buffer = fread($fp_source, $this->fread_buffer_size)) { - fwrite($fp_temp, $buffer, strlen($buffer)); - } - fclose($fp_source); - if (is_writable($this->filename) && is_file($this->filename) && ($fp_source = fopen($this->filename, 'wb'))) { - rewind($fp_temp); - while ($buffer = fread($fp_temp, $this->fread_buffer_size)) { - fwrite($fp_source, $buffer, strlen($buffer)); - } - fseek($fp_temp, -128, SEEK_END); - fclose($fp_source); - } else { - $this->errors[] = 'Could not fopen("'.$this->filename.'", "wb")'; - } - fclose($fp_temp); - } else { - $this->errors[] = 'Could not create tmpfile()'; - } - } else { - $this->errors[] = 'Could not fopen("'.$this->filename.'", "rb")'; - } - - } else { - - $this->errors[] = 'Directory and file both not writeable'; - - } - - if (!empty($this->errors)) { - return false; - } - return true; - } - - - function GenerateID3v2TagFlags($flags) { - switch ($this->majorversion) { - case 4: - // %abcd0000 - $flag = (!empty($flags['unsynchronisation']) ? '1' : '0'); // a - Unsynchronisation - $flag .= (!empty($flags['extendedheader'] ) ? '1' : '0'); // b - Extended header - $flag .= (!empty($flags['experimental'] ) ? '1' : '0'); // c - Experimental indicator - $flag .= (!empty($flags['footer'] ) ? '1' : '0'); // d - Footer present - $flag .= '0000'; - break; - - case 3: - // %abc00000 - $flag = (!empty($flags['unsynchronisation']) ? '1' : '0'); // a - Unsynchronisation - $flag .= (!empty($flags['extendedheader'] ) ? '1' : '0'); // b - Extended header - $flag .= (!empty($flags['experimental'] ) ? '1' : '0'); // c - Experimental indicator - $flag .= '00000'; - break; - - case 2: - // %ab000000 - $flag = (!empty($flags['unsynchronisation']) ? '1' : '0'); // a - Unsynchronisation - $flag .= (!empty($flags['compression'] ) ? '1' : '0'); // b - Compression - $flag .= '000000'; - break; - - default: - return false; - break; - } - return chr(bindec($flag)); - } - - - function GenerateID3v2FrameFlags($TagAlter=false, $FileAlter=false, $ReadOnly=false, $Compression=false, $Encryption=false, $GroupingIdentity=false, $Unsynchronisation=false, $DataLengthIndicator=false) { - switch ($this->majorversion) { - case 4: - // %0abc0000 %0h00kmnp - $flag1 = '0'; - $flag1 .= $TagAlter ? '1' : '0'; // a - Tag alter preservation (true == discard) - $flag1 .= $FileAlter ? '1' : '0'; // b - File alter preservation (true == discard) - $flag1 .= $ReadOnly ? '1' : '0'; // c - Read only (true == read only) - $flag1 .= '0000'; - - $flag2 = '0'; - $flag2 .= $GroupingIdentity ? '1' : '0'; // h - Grouping identity (true == contains group information) - $flag2 .= '00'; - $flag2 .= $Compression ? '1' : '0'; // k - Compression (true == compressed) - $flag2 .= $Encryption ? '1' : '0'; // m - Encryption (true == encrypted) - $flag2 .= $Unsynchronisation ? '1' : '0'; // n - Unsynchronisation (true == unsynchronised) - $flag2 .= $DataLengthIndicator ? '1' : '0'; // p - Data length indicator (true == data length indicator added) - break; - - case 3: - // %abc00000 %ijk00000 - $flag1 = $TagAlter ? '1' : '0'; // a - Tag alter preservation (true == discard) - $flag1 .= $FileAlter ? '1' : '0'; // b - File alter preservation (true == discard) - $flag1 .= $ReadOnly ? '1' : '0'; // c - Read only (true == read only) - $flag1 .= '00000'; - - $flag2 = $Compression ? '1' : '0'; // i - Compression (true == compressed) - $flag2 .= $Encryption ? '1' : '0'; // j - Encryption (true == encrypted) - $flag2 .= $GroupingIdentity ? '1' : '0'; // k - Grouping identity (true == contains group information) - $flag2 .= '00000'; - break; - - default: - return false; - break; - - } - return chr(bindec($flag1)).chr(bindec($flag2)); - } - - function GenerateID3v2FrameData($frame_name, $source_data_array) { - if (!getid3_id3v2::IsValidID3v2FrameName($frame_name, $this->majorversion)) { - return false; - } - $framedata = ''; - - if (($this->majorversion < 3) || ($this->majorversion > 4)) { - - $this->errors[] = 'Only ID3v2.3 and ID3v2.4 are supported in GenerateID3v2FrameData()'; - - } else { // $this->majorversion 3 or 4 - - switch ($frame_name) { - case 'UFID': - // 4.1 UFID Unique file identifier - // Owner identifier $00 - // Identifier - if (strlen($source_data_array['data']) > 64) { - $this->errors[] = 'Identifier not allowed to be longer than 64 bytes in '.$frame_name.' (supplied data was '.strlen($source_data_array['data']).' bytes long)'; - } else { - $framedata .= str_replace("\x00", '', $source_data_array['ownerid'])."\x00"; - $framedata .= substr($source_data_array['data'], 0, 64); // max 64 bytes - truncate anything longer - } - break; - - case 'TXXX': - // 4.2.2 TXXX User defined text information frame - // Text encoding $xx - // Description $00 (00) - // Value - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'], $this->majorversion)) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= $source_data_array['description'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - break; - - case 'WXXX': - // 4.3.2 WXXX User defined URL link frame - // Text encoding $xx - // Description $00 (00) - // URL - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'], $this->majorversion)) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } elseif (!isset($source_data_array['data']) || !$this->IsValidURL($source_data_array['data'], false, false)) { - //$this->errors[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - // probably should be an error, need to rewrite IsValidURL() to handle other encodings - $this->warnings[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= $source_data_array['description'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - break; - - case 'IPLS': - // 4.4 IPLS Involved people list (ID3v2.3 only) - // Text encoding $xx - // People list strings - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'], $this->majorversion)) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - break; - - case 'MCDI': - // 4.4 MCDI Music CD identifier - // CD TOC - $framedata .= $source_data_array['data']; - break; - - case 'ETCO': - // 4.5 ETCO Event timing codes - // Time stamp format $xx - // Where time stamp format is: - // $01 (32-bit value) MPEG frames from beginning of file - // $02 (32-bit value) milliseconds from beginning of file - // Followed by a list of key events in the following format: - // Type of event $xx - // Time stamp $xx (xx ...) - // The 'Time stamp' is set to zero if directly at the beginning of the sound - // or after the previous event. All events MUST be sorted in chronological order. - if (($source_data_array['timestampformat'] > 2) || ($source_data_array['timestampformat'] < 1)) { - $this->errors[] = 'Invalid Time Stamp Format byte in '.$frame_name.' ('.$source_data_array['timestampformat'].')'; - } else { - $framedata .= chr($source_data_array['timestampformat']); - foreach ($source_data_array as $key => $val) { - if (!$this->ID3v2IsValidETCOevent($val['typeid'])) { - $this->errors[] = 'Invalid Event Type byte in '.$frame_name.' ('.$val['typeid'].')'; - } elseif (($key != 'timestampformat') && ($key != 'flags')) { - if (($val['timestamp'] > 0) && ($previousETCOtimestamp >= $val['timestamp'])) { - // The 'Time stamp' is set to zero if directly at the beginning of the sound - // or after the previous event. All events MUST be sorted in chronological order. - $this->errors[] = 'Out-of-order timestamp in '.$frame_name.' ('.$val['timestamp'].') for Event Type ('.$val['typeid'].')'; - } else { - $framedata .= chr($val['typeid']); - $framedata .= getid3_lib::BigEndian2String($val['timestamp'], 4, false); - } - } - } - } - break; - - case 'MLLT': - // 4.6 MLLT MPEG location lookup table - // MPEG frames between reference $xx xx - // Bytes between reference $xx xx xx - // Milliseconds between reference $xx xx xx - // Bits for bytes deviation $xx - // Bits for milliseconds dev. $xx - // Then for every reference the following data is included; - // Deviation in bytes %xxx.... - // Deviation in milliseconds %xxx.... - if (($source_data_array['framesbetweenreferences'] > 0) && ($source_data_array['framesbetweenreferences'] <= 65535)) { - $framedata .= getid3_lib::BigEndian2String($source_data_array['framesbetweenreferences'], 2, false); - } else { - $this->errors[] = 'Invalid MPEG Frames Between References in '.$frame_name.' ('.$source_data_array['framesbetweenreferences'].')'; - } - if (($source_data_array['bytesbetweenreferences'] > 0) && ($source_data_array['bytesbetweenreferences'] <= 16777215)) { - $framedata .= getid3_lib::BigEndian2String($source_data_array['bytesbetweenreferences'], 3, false); - } else { - $this->errors[] = 'Invalid bytes Between References in '.$frame_name.' ('.$source_data_array['bytesbetweenreferences'].')'; - } - if (($source_data_array['msbetweenreferences'] > 0) && ($source_data_array['msbetweenreferences'] <= 16777215)) { - $framedata .= getid3_lib::BigEndian2String($source_data_array['msbetweenreferences'], 3, false); - } else { - $this->errors[] = 'Invalid Milliseconds Between References in '.$frame_name.' ('.$source_data_array['msbetweenreferences'].')'; - } - if (!$this->IsWithinBitRange($source_data_array['bitsforbytesdeviation'], 8, false)) { - if (($source_data_array['bitsforbytesdeviation'] % 4) == 0) { - $framedata .= chr($source_data_array['bitsforbytesdeviation']); - } else { - $this->errors[] = 'Bits For Bytes Deviation in '.$frame_name.' ('.$source_data_array['bitsforbytesdeviation'].') must be a multiple of 4.'; - } - } else { - $this->errors[] = 'Invalid Bits For Bytes Deviation in '.$frame_name.' ('.$source_data_array['bitsforbytesdeviation'].')'; - } - if (!$this->IsWithinBitRange($source_data_array['bitsformsdeviation'], 8, false)) { - if (($source_data_array['bitsformsdeviation'] % 4) == 0) { - $framedata .= chr($source_data_array['bitsformsdeviation']); - } else { - $this->errors[] = 'Bits For Milliseconds Deviation in '.$frame_name.' ('.$source_data_array['bitsforbytesdeviation'].') must be a multiple of 4.'; - } - } else { - $this->errors[] = 'Invalid Bits For Milliseconds Deviation in '.$frame_name.' ('.$source_data_array['bitsformsdeviation'].')'; - } - foreach ($source_data_array as $key => $val) { - if (($key != 'framesbetweenreferences') && ($key != 'bytesbetweenreferences') && ($key != 'msbetweenreferences') && ($key != 'bitsforbytesdeviation') && ($key != 'bitsformsdeviation') && ($key != 'flags')) { - $unwrittenbitstream .= str_pad(getid3_lib::Dec2Bin($val['bytedeviation']), $source_data_array['bitsforbytesdeviation'], '0', STR_PAD_LEFT); - $unwrittenbitstream .= str_pad(getid3_lib::Dec2Bin($val['msdeviation']), $source_data_array['bitsformsdeviation'], '0', STR_PAD_LEFT); - } - } - for ($i = 0; $i < strlen($unwrittenbitstream); $i += 8) { - $highnibble = bindec(substr($unwrittenbitstream, $i, 4)) << 4; - $lownibble = bindec(substr($unwrittenbitstream, $i + 4, 4)); - $framedata .= chr($highnibble & $lownibble); - } - break; - - case 'SYTC': - // 4.7 SYTC Synchronised tempo codes - // Time stamp format $xx - // Tempo data - // Where time stamp format is: - // $01 (32-bit value) MPEG frames from beginning of file - // $02 (32-bit value) milliseconds from beginning of file - if (($source_data_array['timestampformat'] > 2) || ($source_data_array['timestampformat'] < 1)) { - $this->errors[] = 'Invalid Time Stamp Format byte in '.$frame_name.' ('.$source_data_array['timestampformat'].')'; - } else { - $framedata .= chr($source_data_array['timestampformat']); - foreach ($source_data_array as $key => $val) { - if (!$this->ID3v2IsValidETCOevent($val['typeid'])) { - $this->errors[] = 'Invalid Event Type byte in '.$frame_name.' ('.$val['typeid'].')'; - } elseif (($key != 'timestampformat') && ($key != 'flags')) { - if (($val['tempo'] < 0) || ($val['tempo'] > 510)) { - $this->errors[] = 'Invalid Tempo (max = 510) in '.$frame_name.' ('.$val['tempo'].') at timestamp ('.$val['timestamp'].')'; - } else { - if ($val['tempo'] > 255) { - $framedata .= chr(255); - $val['tempo'] -= 255; - } - $framedata .= chr($val['tempo']); - $framedata .= getid3_lib::BigEndian2String($val['timestamp'], 4, false); - } - } - } - } - break; - - case 'USLT': - // 4.8 USLT Unsynchronised lyric/text transcription - // Text encoding $xx - // Language $xx xx xx - // Content descriptor $00 (00) - // Lyrics/text - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } elseif (getid3_id3v2::LanguageLookup($source_data_array['language'], true) == '') { - $this->errors[] = 'Invalid Language in '.$frame_name.' ('.$source_data_array['language'].')'; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= strtolower($source_data_array['language']); - $framedata .= $source_data_array['description'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - break; - - case 'SYLT': - // 4.9 SYLT Synchronised lyric/text - // Text encoding $xx - // Language $xx xx xx - // Time stamp format $xx - // $01 (32-bit value) MPEG frames from beginning of file - // $02 (32-bit value) milliseconds from beginning of file - // Content type $xx - // Content descriptor $00 (00) - // Terminated text to be synced (typically a syllable) - // Sync identifier (terminator to above string) $00 (00) - // Time stamp $xx (xx ...) - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } elseif (getid3_id3v2::LanguageLookup($source_data_array['language'], true) == '') { - $this->errors[] = 'Invalid Language in '.$frame_name.' ('.$source_data_array['language'].')'; - } elseif (($source_data_array['timestampformat'] > 2) || ($source_data_array['timestampformat'] < 1)) { - $this->errors[] = 'Invalid Time Stamp Format byte in '.$frame_name.' ('.$source_data_array['timestampformat'].')'; - } elseif (!$this->ID3v2IsValidSYLTtype($source_data_array['contenttypeid'])) { - $this->errors[] = 'Invalid Content Type byte in '.$frame_name.' ('.$source_data_array['contenttypeid'].')'; - } elseif (!is_array($source_data_array['data'])) { - $this->errors[] = 'Invalid Lyric/Timestamp data in '.$frame_name.' (must be an array)'; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= strtolower($source_data_array['language']); - $framedata .= chr($source_data_array['timestampformat']); - $framedata .= chr($source_data_array['contenttypeid']); - $framedata .= $source_data_array['description'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - ksort($source_data_array['data']); - foreach ($source_data_array['data'] as $key => $val) { - $framedata .= $val['data'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= getid3_lib::BigEndian2String($val['timestamp'], 4, false); - } - } - break; - - case 'COMM': - // 4.10 COMM Comments - // Text encoding $xx - // Language $xx xx xx - // Short content descrip. $00 (00) - // The actual text - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } elseif (getid3_id3v2::LanguageLookup($source_data_array['language'], true) == '') { - $this->errors[] = 'Invalid Language in '.$frame_name.' ('.$source_data_array['language'].')'; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= strtolower($source_data_array['language']); - $framedata .= $source_data_array['description'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - break; - - case 'RVA2': - // 4.11 RVA2 Relative volume adjustment (2) (ID3v2.4+ only) - // Identification $00 - // The 'identification' string is used to identify the situation and/or - // device where this adjustment should apply. The following is then - // repeated for every channel: - // Type of channel $xx - // Volume adjustment $xx xx - // Bits representing peak $xx - // Peak volume $xx (xx ...) - $framedata .= str_replace("\x00", '', $source_data_array['description'])."\x00"; - foreach ($source_data_array as $key => $val) { - if ($key != 'description') { - $framedata .= chr($val['channeltypeid']); - $framedata .= getid3_lib::BigEndian2String($val['volumeadjust'], 2, false, true); // signed 16-bit - if (!$this->IsWithinBitRange($source_data_array['bitspeakvolume'], 8, false)) { - $framedata .= chr($val['bitspeakvolume']); - if ($val['bitspeakvolume'] > 0) { - $framedata .= getid3_lib::BigEndian2String($val['peakvolume'], ceil($val['bitspeakvolume'] / 8), false, false); - } - } else { - $this->errors[] = 'Invalid Bits Representing Peak Volume in '.$frame_name.' ('.$val['bitspeakvolume'].') (range = 0 to 255)'; - } - } - } - break; - - case 'RVAD': - // 4.12 RVAD Relative volume adjustment (ID3v2.3 only) - // Increment/decrement %00fedcba - // Bits used for volume descr. $xx - // Relative volume change, right $xx xx (xx ...) // a - // Relative volume change, left $xx xx (xx ...) // b - // Peak volume right $xx xx (xx ...) - // Peak volume left $xx xx (xx ...) - // Relative volume change, right back $xx xx (xx ...) // c - // Relative volume change, left back $xx xx (xx ...) // d - // Peak volume right back $xx xx (xx ...) - // Peak volume left back $xx xx (xx ...) - // Relative volume change, center $xx xx (xx ...) // e - // Peak volume center $xx xx (xx ...) - // Relative volume change, bass $xx xx (xx ...) // f - // Peak volume bass $xx xx (xx ...) - if (!$this->IsWithinBitRange($source_data_array['bitsvolume'], 8, false)) { - $this->errors[] = 'Invalid Bits For Volume Description byte in '.$frame_name.' ('.$source_data_array['bitsvolume'].') (range = 1 to 255)'; - } else { - $incdecflag .= '00'; - $incdecflag .= $source_data_array['incdec']['right'] ? '1' : '0'; // a - Relative volume change, right - $incdecflag .= $source_data_array['incdec']['left'] ? '1' : '0'; // b - Relative volume change, left - $incdecflag .= $source_data_array['incdec']['rightrear'] ? '1' : '0'; // c - Relative volume change, right back - $incdecflag .= $source_data_array['incdec']['leftrear'] ? '1' : '0'; // d - Relative volume change, left back - $incdecflag .= $source_data_array['incdec']['center'] ? '1' : '0'; // e - Relative volume change, center - $incdecflag .= $source_data_array['incdec']['bass'] ? '1' : '0'; // f - Relative volume change, bass - $framedata .= chr(bindec($incdecflag)); - $framedata .= chr($source_data_array['bitsvolume']); - $framedata .= getid3_lib::BigEndian2String($source_data_array['volumechange']['right'], ceil($source_data_array['bitsvolume'] / 8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['volumechange']['left'], ceil($source_data_array['bitsvolume'] / 8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['peakvolume']['right'], ceil($source_data_array['bitsvolume'] / 8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['peakvolume']['left'], ceil($source_data_array['bitsvolume'] / 8), false); - if ($source_data_array['volumechange']['rightrear'] || $source_data_array['volumechange']['leftrear'] || - $source_data_array['peakvolume']['rightrear'] || $source_data_array['peakvolume']['leftrear'] || - $source_data_array['volumechange']['center'] || $source_data_array['peakvolume']['center'] || - $source_data_array['volumechange']['bass'] || $source_data_array['peakvolume']['bass']) { - $framedata .= getid3_lib::BigEndian2String($source_data_array['volumechange']['rightrear'], ceil($source_data_array['bitsvolume']/8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['volumechange']['leftrear'], ceil($source_data_array['bitsvolume']/8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['peakvolume']['rightrear'], ceil($source_data_array['bitsvolume']/8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['peakvolume']['leftrear'], ceil($source_data_array['bitsvolume']/8), false); - } - if ($source_data_array['volumechange']['center'] || $source_data_array['peakvolume']['center'] || - $source_data_array['volumechange']['bass'] || $source_data_array['peakvolume']['bass']) { - $framedata .= getid3_lib::BigEndian2String($source_data_array['volumechange']['center'], ceil($source_data_array['bitsvolume']/8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['peakvolume']['center'], ceil($source_data_array['bitsvolume']/8), false); - } - if ($source_data_array['volumechange']['bass'] || $source_data_array['peakvolume']['bass']) { - $framedata .= getid3_lib::BigEndian2String($source_data_array['volumechange']['bass'], ceil($source_data_array['bitsvolume']/8), false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['peakvolume']['bass'], ceil($source_data_array['bitsvolume']/8), false); - } - } - break; - - case 'EQU2': - // 4.12 EQU2 Equalisation (2) (ID3v2.4+ only) - // Interpolation method $xx - // $00 Band - // $01 Linear - // Identification $00 - // The following is then repeated for every adjustment point - // Frequency $xx xx - // Volume adjustment $xx xx - if (($source_data_array['interpolationmethod'] < 0) || ($source_data_array['interpolationmethod'] > 1)) { - $this->errors[] = 'Invalid Interpolation Method byte in '.$frame_name.' ('.$source_data_array['interpolationmethod'].') (valid = 0 or 1)'; - } else { - $framedata .= chr($source_data_array['interpolationmethod']); - $framedata .= str_replace("\x00", '', $source_data_array['description'])."\x00"; - foreach ($source_data_array['data'] as $key => $val) { - $framedata .= getid3_lib::BigEndian2String(intval(round($key * 2)), 2, false); - $framedata .= getid3_lib::BigEndian2String($val, 2, false, true); // signed 16-bit - } - } - break; - - case 'EQUA': - // 4.12 EQUA Equalisation (ID3v2.3 only) - // Adjustment bits $xx - // This is followed by 2 bytes + ('adjustment bits' rounded up to the - // nearest byte) for every equalisation band in the following format, - // giving a frequency range of 0 - 32767Hz: - // Increment/decrement %x (MSB of the Frequency) - // Frequency (lower 15 bits) - // Adjustment $xx (xx ...) - if (!$this->IsWithinBitRange($source_data_array['bitsvolume'], 8, false)) { - $this->errors[] = 'Invalid Adjustment Bits byte in '.$frame_name.' ('.$source_data_array['bitsvolume'].') (range = 1 to 255)'; - } else { - $framedata .= chr($source_data_array['adjustmentbits']); - foreach ($source_data_array as $key => $val) { - if ($key != 'bitsvolume') { - if (($key > 32767) || ($key < 0)) { - $this->errors[] = 'Invalid Frequency in '.$frame_name.' ('.$key.') (range = 0 to 32767)'; - } else { - if ($val >= 0) { - // put MSB of frequency to 1 if increment, 0 if decrement - $key |= 0x8000; - } - $framedata .= getid3_lib::BigEndian2String($key, 2, false); - $framedata .= getid3_lib::BigEndian2String($val, ceil($source_data_array['adjustmentbits'] / 8), false); - } - } - } - } - break; - - case 'RVRB': - // 4.13 RVRB Reverb - // Reverb left (ms) $xx xx - // Reverb right (ms) $xx xx - // Reverb bounces, left $xx - // Reverb bounces, right $xx - // Reverb feedback, left to left $xx - // Reverb feedback, left to right $xx - // Reverb feedback, right to right $xx - // Reverb feedback, right to left $xx - // Premix left to right $xx - // Premix right to left $xx - if (!$this->IsWithinBitRange($source_data_array['left'], 16, false)) { - $this->errors[] = 'Invalid Reverb Left in '.$frame_name.' ('.$source_data_array['left'].') (range = 0 to 65535)'; - } elseif (!$this->IsWithinBitRange($source_data_array['right'], 16, false)) { - $this->errors[] = 'Invalid Reverb Left in '.$frame_name.' ('.$source_data_array['right'].') (range = 0 to 65535)'; - } elseif (!$this->IsWithinBitRange($source_data_array['bouncesL'], 8, false)) { - $this->errors[] = 'Invalid Reverb Bounces, Left in '.$frame_name.' ('.$source_data_array['bouncesL'].') (range = 0 to 255)'; - } elseif (!$this->IsWithinBitRange($source_data_array['bouncesR'], 8, false)) { - $this->errors[] = 'Invalid Reverb Bounces, Right in '.$frame_name.' ('.$source_data_array['bouncesR'].') (range = 0 to 255)'; - } elseif (!$this->IsWithinBitRange($source_data_array['feedbackLL'], 8, false)) { - $this->errors[] = 'Invalid Reverb Feedback, Left-To-Left in '.$frame_name.' ('.$source_data_array['feedbackLL'].') (range = 0 to 255)'; - } elseif (!$this->IsWithinBitRange($source_data_array['feedbackLR'], 8, false)) { - $this->errors[] = 'Invalid Reverb Feedback, Left-To-Right in '.$frame_name.' ('.$source_data_array['feedbackLR'].') (range = 0 to 255)'; - } elseif (!$this->IsWithinBitRange($source_data_array['feedbackRR'], 8, false)) { - $this->errors[] = 'Invalid Reverb Feedback, Right-To-Right in '.$frame_name.' ('.$source_data_array['feedbackRR'].') (range = 0 to 255)'; - } elseif (!$this->IsWithinBitRange($source_data_array['feedbackRL'], 8, false)) { - $this->errors[] = 'Invalid Reverb Feedback, Right-To-Left in '.$frame_name.' ('.$source_data_array['feedbackRL'].') (range = 0 to 255)'; - } elseif (!$this->IsWithinBitRange($source_data_array['premixLR'], 8, false)) { - $this->errors[] = 'Invalid Premix, Left-To-Right in '.$frame_name.' ('.$source_data_array['premixLR'].') (range = 0 to 255)'; - } elseif (!$this->IsWithinBitRange($source_data_array['premixRL'], 8, false)) { - $this->errors[] = 'Invalid Premix, Right-To-Left in '.$frame_name.' ('.$source_data_array['premixRL'].') (range = 0 to 255)'; - } else { - $framedata .= getid3_lib::BigEndian2String($source_data_array['left'], 2, false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['right'], 2, false); - $framedata .= chr($source_data_array['bouncesL']); - $framedata .= chr($source_data_array['bouncesR']); - $framedata .= chr($source_data_array['feedbackLL']); - $framedata .= chr($source_data_array['feedbackLR']); - $framedata .= chr($source_data_array['feedbackRR']); - $framedata .= chr($source_data_array['feedbackRL']); - $framedata .= chr($source_data_array['premixLR']); - $framedata .= chr($source_data_array['premixRL']); - } - break; - - case 'APIC': - // 4.14 APIC Attached picture - // Text encoding $xx - // MIME type $00 - // Picture type $xx - // Description $00 (00) - // Picture data - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } elseif (!$this->ID3v2IsValidAPICpicturetype($source_data_array['picturetypeid'])) { - $this->errors[] = 'Invalid Picture Type byte in '.$frame_name.' ('.$source_data_array['picturetypeid'].') for ID3v2.'.$this->majorversion; - } elseif (($this->majorversion >= 3) && (!$this->ID3v2IsValidAPICimageformat($source_data_array['mime']))) { - $this->errors[] = 'Invalid MIME Type in '.$frame_name.' ('.$source_data_array['mime'].') for ID3v2.'.$this->majorversion; - } elseif (($source_data_array['mime'] == '-->') && (!$this->IsValidURL($source_data_array['data'], false, false))) { - //$this->errors[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - // probably should be an error, need to rewrite IsValidURL() to handle other encodings - $this->warnings[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= str_replace("\x00", '', $source_data_array['mime'])."\x00"; - $framedata .= chr($source_data_array['picturetypeid']); - $framedata .= (!empty($source_data_array['description']) ? $source_data_array['description'] : '').getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - break; - - case 'GEOB': - // 4.15 GEOB General encapsulated object - // Text encoding $xx - // MIME type $00 - // Filename $00 (00) - // Content description $00 (00) - // Encapsulated object - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } elseif (!$this->IsValidMIMEstring($source_data_array['mime'])) { - $this->errors[] = 'Invalid MIME Type in '.$frame_name.' ('.$source_data_array['mime'].')'; - } elseif (!$source_data_array['description']) { - $this->errors[] = 'Missing Description in '.$frame_name; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= str_replace("\x00", '', $source_data_array['mime'])."\x00"; - $framedata .= $source_data_array['filename'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['description'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - break; - - case 'PCNT': - // 4.16 PCNT Play counter - // When the counter reaches all one's, one byte is inserted in - // front of the counter thus making the counter eight bits bigger - // Counter $xx xx xx xx (xx ...) - $framedata .= getid3_lib::BigEndian2String($source_data_array['data'], 4, false); - break; - - case 'POPM': - // 4.17 POPM Popularimeter - // When the counter reaches all one's, one byte is inserted in - // front of the counter thus making the counter eight bits bigger - // Email to user $00 - // Rating $xx - // Counter $xx xx xx xx (xx ...) - if (!$this->IsWithinBitRange($source_data_array['rating'], 8, false)) { - $this->errors[] = 'Invalid Rating byte in '.$frame_name.' ('.$source_data_array['rating'].') (range = 0 to 255)'; - } elseif (!IsValidEmail($source_data_array['email'])) { - $this->errors[] = 'Invalid Email in '.$frame_name.' ('.$source_data_array['email'].')'; - } else { - $framedata .= str_replace("\x00", '', $source_data_array['email'])."\x00"; - $framedata .= chr($source_data_array['rating']); - $framedata .= getid3_lib::BigEndian2String($source_data_array['data'], 4, false); - } - break; - - case 'RBUF': - // 4.18 RBUF Recommended buffer size - // Buffer size $xx xx xx - // Embedded info flag %0000000x - // Offset to next tag $xx xx xx xx - if (!$this->IsWithinBitRange($source_data_array['buffersize'], 24, false)) { - $this->errors[] = 'Invalid Buffer Size in '.$frame_name; - } elseif (!$this->IsWithinBitRange($source_data_array['nexttagoffset'], 32, false)) { - $this->errors[] = 'Invalid Offset To Next Tag in '.$frame_name; - } else { - $framedata .= getid3_lib::BigEndian2String($source_data_array['buffersize'], 3, false); - $flag .= '0000000'; - $flag .= $source_data_array['flags']['embededinfo'] ? '1' : '0'; - $framedata .= chr(bindec($flag)); - $framedata .= getid3_lib::BigEndian2String($source_data_array['nexttagoffset'], 4, false); - } - break; - - case 'AENC': - // 4.19 AENC Audio encryption - // Owner identifier $00 - // Preview start $xx xx - // Preview length $xx xx - // Encryption info - if (!$this->IsWithinBitRange($source_data_array['previewstart'], 16, false)) { - $this->errors[] = 'Invalid Preview Start in '.$frame_name.' ('.$source_data_array['previewstart'].')'; - } elseif (!$this->IsWithinBitRange($source_data_array['previewlength'], 16, false)) { - $this->errors[] = 'Invalid Preview Length in '.$frame_name.' ('.$source_data_array['previewlength'].')'; - } else { - $framedata .= str_replace("\x00", '', $source_data_array['ownerid'])."\x00"; - $framedata .= getid3_lib::BigEndian2String($source_data_array['previewstart'], 2, false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['previewlength'], 2, false); - $framedata .= $source_data_array['encryptioninfo']; - } - break; - - case 'LINK': - // 4.20 LINK Linked information - // Frame identifier $xx xx xx xx - // URL $00 - // ID and additional data - if (!getid3_id3v2::IsValidID3v2FrameName($source_data_array['frameid'], $this->majorversion)) { - $this->errors[] = 'Invalid Frame Identifier in '.$frame_name.' ('.$source_data_array['frameid'].')'; - } elseif (!$this->IsValidURL($source_data_array['data'], true, false)) { - //$this->errors[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - // probably should be an error, need to rewrite IsValidURL() to handle other encodings - $this->warnings[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - } elseif ((($source_data_array['frameid'] == 'AENC') || ($source_data_array['frameid'] == 'APIC') || ($source_data_array['frameid'] == 'GEOB') || ($source_data_array['frameid'] == 'TXXX')) && ($source_data_array['additionaldata'] == '')) { - $this->errors[] = 'Content Descriptor must be specified as additional data for Frame Identifier of '.$source_data_array['frameid'].' in '.$frame_name; - } elseif (($source_data_array['frameid'] == 'USER') && (getid3_id3v2::LanguageLookup($source_data_array['additionaldata'], true) == '')) { - $this->errors[] = 'Language must be specified as additional data for Frame Identifier of '.$source_data_array['frameid'].' in '.$frame_name; - } elseif (($source_data_array['frameid'] == 'PRIV') && ($source_data_array['additionaldata'] == '')) { - $this->errors[] = 'Owner Identifier must be specified as additional data for Frame Identifier of '.$source_data_array['frameid'].' in '.$frame_name; - } elseif ((($source_data_array['frameid'] == 'COMM') || ($source_data_array['frameid'] == 'SYLT') || ($source_data_array['frameid'] == 'USLT')) && ((getid3_id3v2::LanguageLookup(substr($source_data_array['additionaldata'], 0, 3), true) == '') || (substr($source_data_array['additionaldata'], 3) == ''))) { - $this->errors[] = 'Language followed by Content Descriptor must be specified as additional data for Frame Identifier of '.$source_data_array['frameid'].' in '.$frame_name; - } else { - $framedata .= $source_data_array['frameid']; - $framedata .= str_replace("\x00", '', $source_data_array['data'])."\x00"; - switch ($source_data_array['frameid']) { - case 'COMM': - case 'SYLT': - case 'USLT': - case 'PRIV': - case 'USER': - case 'AENC': - case 'APIC': - case 'GEOB': - case 'TXXX': - $framedata .= $source_data_array['additionaldata']; - break; - case 'ASPI': - case 'ETCO': - case 'EQU2': - case 'MCID': - case 'MLLT': - case 'OWNE': - case 'RVA2': - case 'RVRB': - case 'SYTC': - case 'IPLS': - case 'RVAD': - case 'EQUA': - // no additional data required - break; - case 'RBUF': - if ($this->majorversion == 3) { - // no additional data required - } else { - $this->errors[] = $source_data_array['frameid'].' is not a valid Frame Identifier in '.$frame_name.' (in ID3v2.'.$this->majorversion.')'; - } - - default: - if ((substr($source_data_array['frameid'], 0, 1) == 'T') || (substr($source_data_array['frameid'], 0, 1) == 'W')) { - // no additional data required - } else { - $this->errors[] = $source_data_array['frameid'].' is not a valid Frame Identifier in '.$frame_name.' (in ID3v2.'.$this->majorversion.')'; - } - break; - } - } - break; - - case 'POSS': - // 4.21 POSS Position synchronisation frame (ID3v2.3+ only) - // Time stamp format $xx - // Position $xx (xx ...) - if (($source_data_array['timestampformat'] < 1) || ($source_data_array['timestampformat'] > 2)) { - $this->errors[] = 'Invalid Time Stamp Format in '.$frame_name.' ('.$source_data_array['timestampformat'].') (valid = 1 or 2)'; - } elseif (!$this->IsWithinBitRange($source_data_array['position'], 32, false)) { - $this->errors[] = 'Invalid Position in '.$frame_name.' ('.$source_data_array['position'].') (range = 0 to 4294967295)'; - } else { - $framedata .= chr($source_data_array['timestampformat']); - $framedata .= getid3_lib::BigEndian2String($source_data_array['position'], 4, false); - } - break; - - case 'USER': - // 4.22 USER Terms of use (ID3v2.3+ only) - // Text encoding $xx - // Language $xx xx xx - // The actual text - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].')'; - } elseif (getid3_id3v2::LanguageLookup($source_data_array['language'], true) == '') { - $this->errors[] = 'Invalid Language in '.$frame_name.' ('.$source_data_array['language'].')'; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= strtolower($source_data_array['language']); - $framedata .= $source_data_array['data']; - } - break; - - case 'OWNE': - // 4.23 OWNE Ownership frame (ID3v2.3+ only) - // Text encoding $xx - // Price paid $00 - // Date of purch. - // Seller - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].')'; - } elseif (!$this->IsANumber($source_data_array['pricepaid']['value'], false)) { - $this->errors[] = 'Invalid Price Paid in '.$frame_name.' ('.$source_data_array['pricepaid']['value'].')'; - } elseif (!$this->IsValidDateStampString($source_data_array['purchasedate'])) { - $this->errors[] = 'Invalid Date Of Purchase in '.$frame_name.' ('.$source_data_array['purchasedate'].') (format = YYYYMMDD)'; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= str_replace("\x00", '', $source_data_array['pricepaid']['value'])."\x00"; - $framedata .= $source_data_array['purchasedate']; - $framedata .= $source_data_array['seller']; - } - break; - - case 'COMR': - // 4.24 COMR Commercial frame (ID3v2.3+ only) - // Text encoding $xx - // Price string $00 - // Valid until - // Contact URL $00 - // Received as $xx - // Name of seller $00 (00) - // Description $00 (00) - // Picture MIME type $00 - // Seller logo - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].')'; - } elseif (!$this->IsValidDateStampString($source_data_array['pricevaliduntil'])) { - $this->errors[] = 'Invalid Valid Until date in '.$frame_name.' ('.$source_data_array['pricevaliduntil'].') (format = YYYYMMDD)'; - } elseif (!$this->IsValidURL($source_data_array['contacturl'], false, true)) { - $this->errors[] = 'Invalid Contact URL in '.$frame_name.' ('.$source_data_array['contacturl'].') (allowed schemes: http, https, ftp, mailto)'; - } elseif (!$this->ID3v2IsValidCOMRreceivedAs($source_data_array['receivedasid'])) { - $this->errors[] = 'Invalid Received As byte in '.$frame_name.' ('.$source_data_array['contacturl'].') (range = 0 to 8)'; - } elseif (!$this->IsValidMIMEstring($source_data_array['mime'])) { - $this->errors[] = 'Invalid MIME Type in '.$frame_name.' ('.$source_data_array['mime'].')'; - } else { - $framedata .= chr($source_data_array['encodingid']); - unset($pricestring); - foreach ($source_data_array['price'] as $key => $val) { - if ($this->ID3v2IsValidPriceString($key.$val['value'])) { - $pricestrings[] = $key.$val['value']; - } else { - $this->errors[] = 'Invalid Price String in '.$frame_name.' ('.$key.$val['value'].')'; - } - } - $framedata .= implode('/', $pricestrings); - $framedata .= $source_data_array['pricevaliduntil']; - $framedata .= str_replace("\x00", '', $source_data_array['contacturl'])."\x00"; - $framedata .= chr($source_data_array['receivedasid']); - $framedata .= $source_data_array['sellername'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['description'].getid3_id3v2::TextEncodingTerminatorLookup($source_data_array['encodingid']); - $framedata .= $source_data_array['mime']."\x00"; - $framedata .= $source_data_array['logo']; - } - break; - - case 'ENCR': - // 4.25 ENCR Encryption method registration (ID3v2.3+ only) - // Owner identifier $00 - // Method symbol $xx - // Encryption data - if (!$this->IsWithinBitRange($source_data_array['methodsymbol'], 8, false)) { - $this->errors[] = 'Invalid Group Symbol in '.$frame_name.' ('.$source_data_array['methodsymbol'].') (range = 0 to 255)'; - } else { - $framedata .= str_replace("\x00", '', $source_data_array['ownerid'])."\x00"; - $framedata .= ord($source_data_array['methodsymbol']); - $framedata .= $source_data_array['data']; - } - break; - - case 'GRID': - // 4.26 GRID Group identification registration (ID3v2.3+ only) - // Owner identifier $00 - // Group symbol $xx - // Group dependent data - if (!$this->IsWithinBitRange($source_data_array['groupsymbol'], 8, false)) { - $this->errors[] = 'Invalid Group Symbol in '.$frame_name.' ('.$source_data_array['groupsymbol'].') (range = 0 to 255)'; - } else { - $framedata .= str_replace("\x00", '', $source_data_array['ownerid'])."\x00"; - $framedata .= ord($source_data_array['groupsymbol']); - $framedata .= $source_data_array['data']; - } - break; - - case 'PRIV': - // 4.27 PRIV Private frame (ID3v2.3+ only) - // Owner identifier $00 - // The private data - $framedata .= str_replace("\x00", '', $source_data_array['ownerid'])."\x00"; - $framedata .= $source_data_array['data']; - break; - - case 'SIGN': - // 4.28 SIGN Signature frame (ID3v2.4+ only) - // Group symbol $xx - // Signature - if (!$this->IsWithinBitRange($source_data_array['groupsymbol'], 8, false)) { - $this->errors[] = 'Invalid Group Symbol in '.$frame_name.' ('.$source_data_array['groupsymbol'].') (range = 0 to 255)'; - } else { - $framedata .= ord($source_data_array['groupsymbol']); - $framedata .= $source_data_array['data']; - } - break; - - case 'SEEK': - // 4.29 SEEK Seek frame (ID3v2.4+ only) - // Minimum offset to next tag $xx xx xx xx - if (!$this->IsWithinBitRange($source_data_array['data'], 32, false)) { - $this->errors[] = 'Invalid Minimum Offset in '.$frame_name.' ('.$source_data_array['data'].') (range = 0 to 4294967295)'; - } else { - $framedata .= getid3_lib::BigEndian2String($source_data_array['data'], 4, false); - } - break; - - case 'ASPI': - // 4.30 ASPI Audio seek point index (ID3v2.4+ only) - // Indexed data start (S) $xx xx xx xx - // Indexed data length (L) $xx xx xx xx - // Number of index points (N) $xx xx - // Bits per index point (b) $xx - // Then for every index point the following data is included: - // Fraction at index (Fi) $xx (xx) - if (!$this->IsWithinBitRange($source_data_array['datastart'], 32, false)) { - $this->errors[] = 'Invalid Indexed Data Start in '.$frame_name.' ('.$source_data_array['datastart'].') (range = 0 to 4294967295)'; - } elseif (!$this->IsWithinBitRange($source_data_array['datalength'], 32, false)) { - $this->errors[] = 'Invalid Indexed Data Length in '.$frame_name.' ('.$source_data_array['datalength'].') (range = 0 to 4294967295)'; - } elseif (!$this->IsWithinBitRange($source_data_array['indexpoints'], 16, false)) { - $this->errors[] = 'Invalid Number Of Index Points in '.$frame_name.' ('.$source_data_array['indexpoints'].') (range = 0 to 65535)'; - } elseif (!$this->IsWithinBitRange($source_data_array['bitsperpoint'], 8, false)) { - $this->errors[] = 'Invalid Bits Per Index Point in '.$frame_name.' ('.$source_data_array['bitsperpoint'].') (range = 0 to 255)'; - } elseif ($source_data_array['indexpoints'] != count($source_data_array['indexes'])) { - $this->errors[] = 'Number Of Index Points does not match actual supplied data in '.$frame_name; - } else { - $framedata .= getid3_lib::BigEndian2String($source_data_array['datastart'], 4, false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['datalength'], 4, false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['indexpoints'], 2, false); - $framedata .= getid3_lib::BigEndian2String($source_data_array['bitsperpoint'], 1, false); - foreach ($source_data_array['indexes'] as $key => $val) { - $framedata .= getid3_lib::BigEndian2String($val, ceil($source_data_array['bitsperpoint'] / 8), false); - } - } - break; - - case 'RGAD': - // RGAD Replay Gain Adjustment - // http://privatewww.essex.ac.uk/~djmrob/replaygain/ - // Peak Amplitude $xx $xx $xx $xx - // Radio Replay Gain Adjustment %aaabbbcd %dddddddd - // Audiophile Replay Gain Adjustment %aaabbbcd %dddddddd - // a - name code - // b - originator code - // c - sign bit - // d - replay gain adjustment - - if (($source_data_array['track_adjustment'] > 51) || ($source_data_array['track_adjustment'] < -51)) { - $this->errors[] = 'Invalid Track Adjustment in '.$frame_name.' ('.$source_data_array['track_adjustment'].') (range = -51.0 to +51.0)'; - } elseif (($source_data_array['album_adjustment'] > 51) || ($source_data_array['album_adjustment'] < -51)) { - $this->errors[] = 'Invalid Album Adjustment in '.$frame_name.' ('.$source_data_array['album_adjustment'].') (range = -51.0 to +51.0)'; - } elseif (!$this->ID3v2IsValidRGADname($source_data_array['raw']['track_name'])) { - $this->errors[] = 'Invalid Track Name Code in '.$frame_name.' ('.$source_data_array['raw']['track_name'].') (range = 0 to 2)'; - } elseif (!$this->ID3v2IsValidRGADname($source_data_array['raw']['album_name'])) { - $this->errors[] = 'Invalid Album Name Code in '.$frame_name.' ('.$source_data_array['raw']['album_name'].') (range = 0 to 2)'; - } elseif (!$this->ID3v2IsValidRGADoriginator($source_data_array['raw']['track_originator'])) { - $this->errors[] = 'Invalid Track Originator Code in '.$frame_name.' ('.$source_data_array['raw']['track_originator'].') (range = 0 to 3)'; - } elseif (!$this->ID3v2IsValidRGADoriginator($source_data_array['raw']['album_originator'])) { - $this->errors[] = 'Invalid Album Originator Code in '.$frame_name.' ('.$source_data_array['raw']['album_originator'].') (range = 0 to 3)'; - } else { - $framedata .= getid3_lib::Float2String($source_data_array['peakamplitude'], 32); - $framedata .= getid3_lib::RGADgainString($source_data_array['raw']['track_name'], $source_data_array['raw']['track_originator'], $source_data_array['track_adjustment']); - $framedata .= getid3_lib::RGADgainString($source_data_array['raw']['album_name'], $source_data_array['raw']['album_originator'], $source_data_array['album_adjustment']); - } - break; - - default: - if ((($this->majorversion == 2) && (strlen($frame_name) != 3)) || (($this->majorversion > 2) && (strlen($frame_name) != 4))) { - $this->errors[] = 'Invalid frame name "'.$frame_name.'" for ID3v2.'.$this->majorversion; - } elseif ($frame_name{0} == 'T') { - // 4.2. T??? Text information frames - // Text encoding $xx - // Information - $source_data_array['encodingid'] = (isset($source_data_array['encodingid']) ? $source_data_array['encodingid'] : $this->id3v2_default_encodingid); - if (!$this->ID3v2IsValidTextEncoding($source_data_array['encodingid'])) { - $this->errors[] = 'Invalid Text Encoding in '.$frame_name.' ('.$source_data_array['encodingid'].') for ID3v2.'.$this->majorversion; - } else { - $framedata .= chr($source_data_array['encodingid']); - $framedata .= $source_data_array['data']; - } - } elseif ($frame_name{0} == 'W') { - // 4.3. W??? URL link frames - // URL - if (!$this->IsValidURL($source_data_array['data'], false, false)) { - //$this->errors[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - // probably should be an error, need to rewrite IsValidURL() to handle other encodings - $this->warnings[] = 'Invalid URL in '.$frame_name.' ('.$source_data_array['data'].')'; - } else { - $framedata .= $source_data_array['data']; - } - } else { - $this->errors[] = $frame_name.' not yet supported in $this->GenerateID3v2FrameData()'; - } - break; - } - } - if (!empty($this->errors)) { - return false; - } - return $framedata; - } - - function ID3v2FrameIsAllowed($frame_name, $source_data_array) { - static $PreviousFrames = array(); - - if ($frame_name === null) { - // if the writing functions are called multiple times, the static array needs to be - // cleared - this can be done by calling $this->ID3v2FrameIsAllowed(null, '') - $PreviousFrames = array(); - return true; - } - - if ($this->majorversion == 4) { - switch ($frame_name) { - case 'UFID': - case 'AENC': - case 'ENCR': - case 'GRID': - if (!isset($source_data_array['ownerid'])) { - $this->errors[] = '[ownerid] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['ownerid'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same OwnerID ('.$source_data_array['ownerid'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['ownerid']; - } - break; - - case 'TXXX': - case 'WXXX': - case 'RVA2': - case 'EQU2': - case 'APIC': - case 'GEOB': - if (!isset($source_data_array['description'])) { - $this->errors[] = '[description] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['description'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Description ('.$source_data_array['description'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['description']; - } - break; - - case 'USER': - if (!isset($source_data_array['language'])) { - $this->errors[] = '[language] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['language'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Language ('.$source_data_array['language'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['language']; - } - break; - - case 'USLT': - case 'SYLT': - case 'COMM': - if (!isset($source_data_array['language'])) { - $this->errors[] = '[language] not specified for '.$frame_name; - } elseif (!isset($source_data_array['description'])) { - $this->errors[] = '[description] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['language'].$source_data_array['description'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Language + Description ('.$source_data_array['language'].' + '.$source_data_array['description'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['language'].$source_data_array['description']; - } - break; - - case 'POPM': - if (!isset($source_data_array['email'])) { - $this->errors[] = '[email] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['email'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Email ('.$source_data_array['email'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['email']; - } - break; - - case 'IPLS': - case 'MCDI': - case 'ETCO': - case 'MLLT': - case 'SYTC': - case 'RVRB': - case 'PCNT': - case 'RBUF': - case 'POSS': - case 'OWNE': - case 'SEEK': - case 'ASPI': - case 'RGAD': - if (in_array($frame_name, $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed'; - } else { - $PreviousFrames[] = $frame_name; - } - break; - - case 'LINK': - // this isn't implemented quite right (yet) - it should check the target frame data for compliance - // but right now it just allows one linked frame of each type, to be safe. - if (!isset($source_data_array['frameid'])) { - $this->errors[] = '[frameid] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['frameid'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same FrameID ('.$source_data_array['frameid'].')'; - } elseif (in_array($source_data_array['frameid'], $PreviousFrames)) { - // no links to singleton tags - $this->errors[] = 'Cannot specify a '.$frame_name.' tag to a singleton tag that already exists ('.$source_data_array['frameid'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['frameid']; // only one linked tag of this type - $PreviousFrames[] = $source_data_array['frameid']; // no non-linked singleton tags of this type - } - break; - - case 'COMR': - // There may be more than one 'commercial frame' in a tag, but no two may be identical - // Checking isn't implemented at all (yet) - just assumes that it's OK. - break; - - case 'PRIV': - case 'SIGN': - if (!isset($source_data_array['ownerid'])) { - $this->errors[] = '[ownerid] not specified for '.$frame_name; - } elseif (!isset($source_data_array['data'])) { - $this->errors[] = '[data] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['ownerid'].$source_data_array['data'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same OwnerID + Data ('.$source_data_array['ownerid'].' + '.$source_data_array['data'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['ownerid'].$source_data_array['data']; - } - break; - - default: - if (($frame_name{0} != 'T') && ($frame_name{0} != 'W')) { - $this->errors[] = 'Frame not allowed in ID3v2.'.$this->majorversion.': '.$frame_name; - } - break; - } - - } elseif ($this->majorversion == 3) { - - switch ($frame_name) { - case 'UFID': - case 'AENC': - case 'ENCR': - case 'GRID': - if (!isset($source_data_array['ownerid'])) { - $this->errors[] = '[ownerid] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['ownerid'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same OwnerID ('.$source_data_array['ownerid'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['ownerid']; - } - break; - - case 'TXXX': - case 'WXXX': - case 'APIC': - case 'GEOB': - if (!isset($source_data_array['description'])) { - $this->errors[] = '[description] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['description'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Description ('.$source_data_array['description'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['description']; - } - break; - - case 'USER': - if (!isset($source_data_array['language'])) { - $this->errors[] = '[language] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['language'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Language ('.$source_data_array['language'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['language']; - } - break; - - case 'USLT': - case 'SYLT': - case 'COMM': - if (!isset($source_data_array['language'])) { - $this->errors[] = '[language] not specified for '.$frame_name; - } elseif (!isset($source_data_array['description'])) { - $this->errors[] = '[description] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['language'].$source_data_array['description'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Language + Description ('.$source_data_array['language'].' + '.$source_data_array['description'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['language'].$source_data_array['description']; - } - break; - - case 'POPM': - if (!isset($source_data_array['email'])) { - $this->errors[] = '[email] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['email'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Email ('.$source_data_array['email'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['email']; - } - break; - - case 'IPLS': - case 'MCDI': - case 'ETCO': - case 'MLLT': - case 'SYTC': - case 'RVAD': - case 'EQUA': - case 'RVRB': - case 'PCNT': - case 'RBUF': - case 'POSS': - case 'OWNE': - case 'RGAD': - if (in_array($frame_name, $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed'; - } else { - $PreviousFrames[] = $frame_name; - } - break; - - case 'LINK': - // this isn't implemented quite right (yet) - it should check the target frame data for compliance - // but right now it just allows one linked frame of each type, to be safe. - if (!isset($source_data_array['frameid'])) { - $this->errors[] = '[frameid] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['frameid'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same FrameID ('.$source_data_array['frameid'].')'; - } elseif (in_array($source_data_array['frameid'], $PreviousFrames)) { - // no links to singleton tags - $this->errors[] = 'Cannot specify a '.$frame_name.' tag to a singleton tag that already exists ('.$source_data_array['frameid'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['frameid']; // only one linked tag of this type - $PreviousFrames[] = $source_data_array['frameid']; // no non-linked singleton tags of this type - } - break; - - case 'COMR': - // There may be more than one 'commercial frame' in a tag, but no two may be identical - // Checking isn't implemented at all (yet) - just assumes that it's OK. - break; - - case 'PRIV': - if (!isset($source_data_array['ownerid'])) { - $this->errors[] = '[ownerid] not specified for '.$frame_name; - } elseif (!isset($source_data_array['data'])) { - $this->errors[] = '[data] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['ownerid'].$source_data_array['data'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same OwnerID + Data ('.$source_data_array['ownerid'].' + '.$source_data_array['data'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['ownerid'].$source_data_array['data']; - } - break; - - default: - if (($frame_name{0} != 'T') && ($frame_name{0} != 'W')) { - $this->errors[] = 'Frame not allowed in ID3v2.'.$this->majorversion.': '.$frame_name; - } - break; - } - - } elseif ($this->majorversion == 2) { - - switch ($frame_name) { - case 'UFI': - case 'CRM': - case 'CRA': - if (!isset($source_data_array['ownerid'])) { - $this->errors[] = '[ownerid] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['ownerid'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same OwnerID ('.$source_data_array['ownerid'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['ownerid']; - } - break; - - case 'TXX': - case 'WXX': - case 'PIC': - case 'GEO': - if (!isset($source_data_array['description'])) { - $this->errors[] = '[description] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['description'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Description ('.$source_data_array['description'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['description']; - } - break; - - case 'ULT': - case 'SLT': - case 'COM': - if (!isset($source_data_array['language'])) { - $this->errors[] = '[language] not specified for '.$frame_name; - } elseif (!isset($source_data_array['description'])) { - $this->errors[] = '[description] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['language'].$source_data_array['description'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Language + Description ('.$source_data_array['language'].' + '.$source_data_array['description'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['language'].$source_data_array['description']; - } - break; - - case 'POP': - if (!isset($source_data_array['email'])) { - $this->errors[] = '[email] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['email'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same Email ('.$source_data_array['email'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['email']; - } - break; - - case 'IPL': - case 'MCI': - case 'ETC': - case 'MLL': - case 'STC': - case 'RVA': - case 'EQU': - case 'REV': - case 'CNT': - case 'BUF': - if (in_array($frame_name, $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed'; - } else { - $PreviousFrames[] = $frame_name; - } - break; - - case 'LNK': - // this isn't implemented quite right (yet) - it should check the target frame data for compliance - // but right now it just allows one linked frame of each type, to be safe. - if (!isset($source_data_array['frameid'])) { - $this->errors[] = '[frameid] not specified for '.$frame_name; - } elseif (in_array($frame_name.$source_data_array['frameid'], $PreviousFrames)) { - $this->errors[] = 'Only one '.$frame_name.' tag allowed with the same FrameID ('.$source_data_array['frameid'].')'; - } elseif (in_array($source_data_array['frameid'], $PreviousFrames)) { - // no links to singleton tags - $this->errors[] = 'Cannot specify a '.$frame_name.' tag to a singleton tag that already exists ('.$source_data_array['frameid'].')'; - } else { - $PreviousFrames[] = $frame_name.$source_data_array['frameid']; // only one linked tag of this type - $PreviousFrames[] = $source_data_array['frameid']; // no non-linked singleton tags of this type - } - break; - - default: - if (($frame_name{0} != 'T') && ($frame_name{0} != 'W')) { - $this->errors[] = 'Frame not allowed in ID3v2.'.$this->majorversion.': '.$frame_name; - } - break; - } - } - - if (!empty($this->errors)) { - return false; - } - return true; - } - - function GenerateID3v2Tag($noerrorsonly=true) { - $this->ID3v2FrameIsAllowed(null, ''); // clear static array in case this isn't the first call to $this->GenerateID3v2Tag() - - $tagstring = ''; - if (is_array($this->tag_data)) { - foreach ($this->tag_data as $frame_name => $frame_rawinputdata) { - foreach ($frame_rawinputdata as $irrelevantindex => $source_data_array) { - if (getid3_id3v2::IsValidID3v2FrameName($frame_name, $this->majorversion)) { - unset($frame_length); - unset($frame_flags); - $frame_data = false; - if ($this->ID3v2FrameIsAllowed($frame_name, $source_data_array)) { - if ($frame_data = $this->GenerateID3v2FrameData($frame_name, $source_data_array)) { - $FrameUnsynchronisation = false; - if ($this->majorversion >= 4) { - // frame-level unsynchronisation - $unsynchdata = $frame_data; - if ($this->id3v2_use_unsynchronisation) { - $unsynchdata = $this->Unsynchronise($frame_data); - } - if (strlen($unsynchdata) != strlen($frame_data)) { - // unsynchronisation needed - $FrameUnsynchronisation = true; - $frame_data = $unsynchdata; - if (isset($TagUnsynchronisation) && $TagUnsynchronisation === false) { - // only set to true if ALL frames are unsynchronised - } else { - $TagUnsynchronisation = true; - } - } else { - if (isset($TagUnsynchronisation)) { - $TagUnsynchronisation = false; - } - } - unset($unsynchdata); - - $frame_length = getid3_lib::BigEndian2String(strlen($frame_data), 4, true); - } else { - $frame_length = getid3_lib::BigEndian2String(strlen($frame_data), 4, false); - } - $frame_flags = $this->GenerateID3v2FrameFlags($this->ID3v2FrameFlagsLookupTagAlter($frame_name), $this->ID3v2FrameFlagsLookupFileAlter($frame_name), false, false, false, false, $FrameUnsynchronisation, false); - } - } else { - $this->errors[] = 'Frame "'.$frame_name.'" is NOT allowed'; - } - if ($frame_data === false) { - $this->errors[] = '$this->GenerateID3v2FrameData() failed for "'.$frame_name.'"'; - if ($noerrorsonly) { - return false; - } else { - unset($frame_name); - } - } - } else { - // ignore any invalid frame names, including 'title', 'header', etc - $this->warnings[] = 'Ignoring invalid ID3v2 frame type: "'.$frame_name.'"'; - unset($frame_name); - unset($frame_length); - unset($frame_flags); - unset($frame_data); - } - if (isset($frame_name) && isset($frame_length) && isset($frame_flags) && isset($frame_data)) { - $tagstring .= $frame_name.$frame_length.$frame_flags.$frame_data; - } - } - } - - if (!isset($TagUnsynchronisation)) { - $TagUnsynchronisation = false; - } - if (($this->majorversion <= 3) && $this->id3v2_use_unsynchronisation) { - // tag-level unsynchronisation - $unsynchdata = $this->Unsynchronise($tagstring); - if (strlen($unsynchdata) != strlen($tagstring)) { - // unsynchronisation needed - $TagUnsynchronisation = true; - $tagstring = $unsynchdata; - } - } - - while ($this->paddedlength < (strlen($tagstring) + getid3_id3v2::ID3v2HeaderLength($this->majorversion))) { - $this->paddedlength += 1024; - } - - $footer = false; // ID3v2 footers not yet supported in getID3() - if (!$footer && ($this->paddedlength > (strlen($tagstring) + getid3_id3v2::ID3v2HeaderLength($this->majorversion)))) { - // pad up to $paddedlength bytes if unpadded tag is shorter than $paddedlength - // "Furthermore it MUST NOT have any padding when a tag footer is added to the tag." - if (($this->paddedlength - strlen($tagstring) - getid3_id3v2::ID3v2HeaderLength($this->majorversion)) > 0) { - $tagstring .= str_repeat("\x00", $this->paddedlength - strlen($tagstring) - getid3_id3v2::ID3v2HeaderLength($this->majorversion)); - } - } - if ($this->id3v2_use_unsynchronisation && (substr($tagstring, strlen($tagstring) - 1, 1) == "\xFF")) { - // special unsynchronisation case: - // if last byte == $FF then appended a $00 - $TagUnsynchronisation = true; - $tagstring .= "\x00"; - } - - $tagheader = 'ID3'; - $tagheader .= chr($this->majorversion); - $tagheader .= chr($this->minorversion); - $tagheader .= $this->GenerateID3v2TagFlags(array('unsynchronisation'=>$TagUnsynchronisation)); - $tagheader .= getid3_lib::BigEndian2String(strlen($tagstring), 4, true); - - return $tagheader.$tagstring; - } - $this->errors[] = 'tag_data is not an array in GenerateID3v2Tag()'; - return false; - } - - function ID3v2IsValidPriceString($pricestring) { - if (getid3_id3v2::LanguageLookup(substr($pricestring, 0, 3), true) == '') { - return false; - } elseif (!$this->IsANumber(substr($pricestring, 3), true)) { - return false; - } - return true; - } - - function ID3v2FrameFlagsLookupTagAlter($framename) { - // unfinished - switch ($framename) { - case 'RGAD': - $allow = true; - default: - $allow = false; - break; - } - return $allow; - } - - function ID3v2FrameFlagsLookupFileAlter($framename) { - // unfinished - switch ($framename) { - case 'RGAD': - return false; - break; - - default: - return false; - break; - } - } - - function ID3v2IsValidETCOevent($eventid) { - if (($eventid < 0) || ($eventid > 0xFF)) { - // outside range of 1 byte - return false; - } elseif (($eventid >= 0xF0) && ($eventid <= 0xFC)) { - // reserved for future use - return false; - } elseif (($eventid >= 0x17) && ($eventid <= 0xDF)) { - // reserved for future use - return false; - } elseif (($eventid >= 0x0E) && ($eventid <= 0x16) && ($this->majorversion == 2)) { - // not defined in ID3v2.2 - return false; - } elseif (($eventid >= 0x15) && ($eventid <= 0x16) && ($this->majorversion == 3)) { - // not defined in ID3v2.3 - return false; - } - return true; - } - - function ID3v2IsValidSYLTtype($contenttype) { - if (($contenttype >= 0) && ($contenttype <= 8) && ($this->majorversion == 4)) { - return true; - } elseif (($contenttype >= 0) && ($contenttype <= 6) && ($this->majorversion == 3)) { - return true; - } - return false; - } - - function ID3v2IsValidRVA2channeltype($channeltype) { - if (($channeltype >= 0) && ($channeltype <= 8) && ($this->majorversion == 4)) { - return true; - } - return false; - } - - function ID3v2IsValidAPICpicturetype($picturetype) { - if (($picturetype >= 0) && ($picturetype <= 0x14) && ($this->majorversion >= 2) && ($this->majorversion <= 4)) { - return true; - } - return false; - } - - function ID3v2IsValidAPICimageformat($imageformat) { - if ($imageformat == '-->') { - return true; - } elseif ($this->majorversion == 2) { - if ((strlen($imageformat) == 3) && ($imageformat == strtoupper($imageformat))) { - return true; - } - } elseif (($this->majorversion == 3) || ($this->majorversion == 4)) { - if ($this->IsValidMIMEstring($imageformat)) { - return true; - } - } - return false; - } - - function ID3v2IsValidCOMRreceivedAs($receivedas) { - if (($this->majorversion >= 3) && ($receivedas >= 0) && ($receivedas <= 8)) { - return true; - } - return false; - } - - function ID3v2IsValidRGADname($RGADname) { - if (($RGADname >= 0) && ($RGADname <= 2)) { - return true; - } - return false; - } - - function ID3v2IsValidRGADoriginator($RGADoriginator) { - if (($RGADoriginator >= 0) && ($RGADoriginator <= 3)) { - return true; - } - return false; - } - - function ID3v2IsValidTextEncoding($textencodingbyte) { - static $ID3v2IsValidTextEncoding_cache = array( - 2 => array(true, true), - 3 => array(true, true), - 4 => array(true, true, true, true)); - return isset($ID3v2IsValidTextEncoding_cache[$this->majorversion][$textencodingbyte]); - } - - function Unsynchronise($data) { - // Whenever a false synchronisation is found within the tag, one zeroed - // byte is inserted after the first false synchronisation byte. The - // format of a correct sync that should be altered by ID3 encoders is as - // follows: - // %11111111 111xxxxx - // And should be replaced with: - // %11111111 00000000 111xxxxx - // This has the side effect that all $FF 00 combinations have to be - // altered, so they won't be affected by the decoding process. Therefore - // all the $FF 00 combinations have to be replaced with the $FF 00 00 - // combination during the unsynchronisation. - - $data = str_replace("\xFF\x00", "\xFF\x00\x00", $data); - $unsyncheddata = ''; - $datalength = strlen($data); - for ($i = 0; $i < $datalength; $i++) { - $thischar = $data{$i}; - $unsyncheddata .= $thischar; - if ($thischar == "\xFF") { - $nextchar = ord($data{$i + 1}); - if (($nextchar & 0xE0) == 0xE0) { - // previous byte = 11111111, this byte = 111????? - $unsyncheddata .= "\x00"; - } - } - } - return $unsyncheddata; - } - - function is_hash($var) { - // written by dev-nullØchristophe*vg - // taken from http://www.php.net/manual/en/function.array-merge-recursive.php - if (is_array($var)) { - $keys = array_keys($var); - $all_num = true; - for ($i = 0; $i < count($keys); $i++) { - if (is_string($keys[$i])) { - return true; - } - } - } - return false; - } - - function array_join_merge($arr1, $arr2) { - // written by dev-nullØchristophe*vg - // taken from http://www.php.net/manual/en/function.array-merge-recursive.php - if (is_array($arr1) && is_array($arr2)) { - // the same -> merge - $new_array = array(); - - if ($this->is_hash($arr1) && $this->is_hash($arr2)) { - // hashes -> merge based on keys - $keys = array_merge(array_keys($arr1), array_keys($arr2)); - foreach ($keys as $key) { - $new_array[$key] = $this->array_join_merge((isset($arr1[$key]) ? $arr1[$key] : ''), (isset($arr2[$key]) ? $arr2[$key] : '')); - } - } else { - // two real arrays -> merge - $new_array = array_reverse(array_unique(array_reverse(array_merge($arr1, $arr2)))); - } - return $new_array; - } else { - // not the same ... take new one if defined, else the old one stays - return $arr2 ? $arr2 : $arr1; - } - } - - function IsValidMIMEstring($mimestring) { - if ((strlen($mimestring) >= 3) && (strpos($mimestring, '/') > 0) && (strpos($mimestring, '/') < (strlen($mimestring) - 1))) { - return true; - } - return false; - } - - function IsWithinBitRange($number, $maxbits, $signed=false) { - if ($signed) { - if (($number > (0 - pow(2, $maxbits - 1))) && ($number <= pow(2, $maxbits - 1))) { - return true; - } - } else { - if (($number >= 0) && ($number <= pow(2, $maxbits))) { - return true; - } - } - return false; - } - - function safe_parse_url($url) { - $parts = @parse_url($url); - $parts['scheme'] = (isset($parts['scheme']) ? $parts['scheme'] : ''); - $parts['host'] = (isset($parts['host']) ? $parts['host'] : ''); - $parts['user'] = (isset($parts['user']) ? $parts['user'] : ''); - $parts['pass'] = (isset($parts['pass']) ? $parts['pass'] : ''); - $parts['path'] = (isset($parts['path']) ? $parts['path'] : ''); - $parts['query'] = (isset($parts['query']) ? $parts['query'] : ''); - return $parts; - } - - function IsValidURL($url, $allowUserPass=false) { - if ($url == '') { - return false; - } - if ($allowUserPass !== true) { - if (strstr($url, '@')) { - // in the format http://user:pass@example.com or http://user@example.com - // but could easily be somebody incorrectly entering an email address in place of a URL - return false; - } - } - if ($parts = $this->safe_parse_url($url)) { - if (($parts['scheme'] != 'http') && ($parts['scheme'] != 'https') && ($parts['scheme'] != 'ftp') && ($parts['scheme'] != 'gopher')) { - return false; - } elseif (!preg_match('#^[[:alnum:]]([-.]?[0-9a-z])*\\.[a-z]{2,3}$#i', $parts['host'], $regs) && !preg_match('#^[0-9]{1,3}(\\.[0-9]{1,3}){3}$#', $parts['host'])) { - return false; - } elseif (!preg_match('#^([[:alnum:]-]|[\\_])*$#i', $parts['user'], $regs)) { - return false; - } elseif (!preg_match('#^([[:alnum:]-]|[\\_])*$#i', $parts['pass'], $regs)) { - return false; - } elseif (!preg_match('#^[[:alnum:]/_\\.@~-]*$#i', $parts['path'], $regs)) { - return false; - } elseif (!empty($parts['query']) && !preg_match('#^[[:alnum:]?&=+:;_()%\\#/,\\.-]*$#i', $parts['query'], $regs)) { - return false; - } else { - return true; - } - } - return false; - } - - static function ID3v2ShortFrameNameLookup($majorversion, $long_description) { - $long_description = str_replace(' ', '_', strtolower(trim($long_description))); - static $ID3v2ShortFrameNameLookup = array(); - if (empty($ID3v2ShortFrameNameLookup)) { - - // The following are unique to ID3v2.2 - $ID3v2ShortFrameNameLookup[2]['comment'] = 'COM'; - $ID3v2ShortFrameNameLookup[2]['album'] = 'TAL'; - $ID3v2ShortFrameNameLookup[2]['beats_per_minute'] = 'TBP'; - $ID3v2ShortFrameNameLookup[2]['composer'] = 'TCM'; - $ID3v2ShortFrameNameLookup[2]['genre'] = 'TCO'; - $ID3v2ShortFrameNameLookup[2]['itunescompilation'] = 'TCP'; - $ID3v2ShortFrameNameLookup[2]['copyright'] = 'TCR'; - $ID3v2ShortFrameNameLookup[2]['encoded_by'] = 'TEN'; - $ID3v2ShortFrameNameLookup[2]['language'] = 'TLA'; - $ID3v2ShortFrameNameLookup[2]['length'] = 'TLE'; - $ID3v2ShortFrameNameLookup[2]['original_artist'] = 'TOA'; - $ID3v2ShortFrameNameLookup[2]['original_filename'] = 'TOF'; - $ID3v2ShortFrameNameLookup[2]['original_lyricist'] = 'TOL'; - $ID3v2ShortFrameNameLookup[2]['original_album_title'] = 'TOT'; - $ID3v2ShortFrameNameLookup[2]['artist'] = 'TP1'; - $ID3v2ShortFrameNameLookup[2]['band'] = 'TP2'; - $ID3v2ShortFrameNameLookup[2]['conductor'] = 'TP3'; - $ID3v2ShortFrameNameLookup[2]['remixer'] = 'TP4'; - $ID3v2ShortFrameNameLookup[2]['publisher'] = 'TPB'; - $ID3v2ShortFrameNameLookup[2]['isrc'] = 'TRC'; - $ID3v2ShortFrameNameLookup[2]['tracknumber'] = 'TRK'; - $ID3v2ShortFrameNameLookup[2]['size'] = 'TSI'; - $ID3v2ShortFrameNameLookup[2]['encoder_settings'] = 'TSS'; - $ID3v2ShortFrameNameLookup[2]['description'] = 'TT1'; - $ID3v2ShortFrameNameLookup[2]['title'] = 'TT2'; - $ID3v2ShortFrameNameLookup[2]['subtitle'] = 'TT3'; - $ID3v2ShortFrameNameLookup[2]['lyricist'] = 'TXT'; - $ID3v2ShortFrameNameLookup[2]['user_text'] = 'TXX'; - $ID3v2ShortFrameNameLookup[2]['year'] = 'TYE'; - $ID3v2ShortFrameNameLookup[2]['unique_file_identifier'] = 'UFI'; - $ID3v2ShortFrameNameLookup[2]['unsynchronised_lyrics'] = 'ULT'; - $ID3v2ShortFrameNameLookup[2]['url_file'] = 'WAF'; - $ID3v2ShortFrameNameLookup[2]['url_artist'] = 'WAR'; - $ID3v2ShortFrameNameLookup[2]['url_source'] = 'WAS'; - $ID3v2ShortFrameNameLookup[2]['copyright_information'] = 'WCP'; - $ID3v2ShortFrameNameLookup[2]['url_publisher'] = 'WPB'; - $ID3v2ShortFrameNameLookup[2]['url_user'] = 'WXX'; - - // The following are common to ID3v2.3 and ID3v2.4 - $ID3v2ShortFrameNameLookup[3]['audio_encryption'] = 'AENC'; - $ID3v2ShortFrameNameLookup[3]['attached_picture'] = 'APIC'; - $ID3v2ShortFrameNameLookup[3]['comment'] = 'COMM'; - $ID3v2ShortFrameNameLookup[3]['commercial'] = 'COMR'; - $ID3v2ShortFrameNameLookup[3]['encryption_method_registration'] = 'ENCR'; - $ID3v2ShortFrameNameLookup[3]['event_timing_codes'] = 'ETCO'; - $ID3v2ShortFrameNameLookup[3]['general_encapsulated_object'] = 'GEOB'; - $ID3v2ShortFrameNameLookup[3]['group_identification_registration'] = 'GRID'; - $ID3v2ShortFrameNameLookup[3]['linked_information'] = 'LINK'; - $ID3v2ShortFrameNameLookup[3]['music_cd_identifier'] = 'MCDI'; - $ID3v2ShortFrameNameLookup[3]['mpeg_location_lookup_table'] = 'MLLT'; - $ID3v2ShortFrameNameLookup[3]['ownership'] = 'OWNE'; - $ID3v2ShortFrameNameLookup[3]['play_counter'] = 'PCNT'; - $ID3v2ShortFrameNameLookup[3]['popularimeter'] = 'POPM'; - $ID3v2ShortFrameNameLookup[3]['position_synchronisation'] = 'POSS'; - $ID3v2ShortFrameNameLookup[3]['private'] = 'PRIV'; - $ID3v2ShortFrameNameLookup[3]['recommended_buffer_size'] = 'RBUF'; - $ID3v2ShortFrameNameLookup[3]['reverb'] = 'RVRB'; - $ID3v2ShortFrameNameLookup[3]['synchronised_lyrics'] = 'SYLT'; - $ID3v2ShortFrameNameLookup[3]['synchronised_tempo_codes'] = 'SYTC'; - $ID3v2ShortFrameNameLookup[3]['album'] = 'TALB'; - $ID3v2ShortFrameNameLookup[3]['beats_per_minute'] = 'TBPM'; - $ID3v2ShortFrameNameLookup[3]['itunescompilation'] = 'TCMP'; - $ID3v2ShortFrameNameLookup[3]['composer'] = 'TCOM'; - $ID3v2ShortFrameNameLookup[3]['genre'] = 'TCON'; - $ID3v2ShortFrameNameLookup[3]['copyright'] = 'TCOP'; - $ID3v2ShortFrameNameLookup[3]['playlist_delay'] = 'TDLY'; - $ID3v2ShortFrameNameLookup[3]['encoded_by'] = 'TENC'; - $ID3v2ShortFrameNameLookup[3]['lyricist'] = 'TEXT'; - $ID3v2ShortFrameNameLookup[3]['file_type'] = 'TFLT'; - $ID3v2ShortFrameNameLookup[3]['content_group_description'] = 'TIT1'; - $ID3v2ShortFrameNameLookup[3]['title'] = 'TIT2'; - $ID3v2ShortFrameNameLookup[3]['subtitle'] = 'TIT3'; - $ID3v2ShortFrameNameLookup[3]['initial_key'] = 'TKEY'; - $ID3v2ShortFrameNameLookup[3]['language'] = 'TLAN'; - $ID3v2ShortFrameNameLookup[3]['length'] = 'TLEN'; - $ID3v2ShortFrameNameLookup[3]['media_type'] = 'TMED'; - $ID3v2ShortFrameNameLookup[3]['original_album_title'] = 'TOAL'; - $ID3v2ShortFrameNameLookup[3]['original_filename'] = 'TOFN'; - $ID3v2ShortFrameNameLookup[3]['original_lyricist'] = 'TOLY'; - $ID3v2ShortFrameNameLookup[3]['original_artist'] = 'TOPE'; - $ID3v2ShortFrameNameLookup[3]['file_owner'] = 'TOWN'; - $ID3v2ShortFrameNameLookup[3]['artist'] = 'TPE1'; - $ID3v2ShortFrameNameLookup[3]['band'] = 'TPE2'; - $ID3v2ShortFrameNameLookup[3]['conductor'] = 'TPE3'; - $ID3v2ShortFrameNameLookup[3]['remixer'] = 'TPE4'; - $ID3v2ShortFrameNameLookup[3]['part_of_a_set'] = 'TPOS'; - $ID3v2ShortFrameNameLookup[3]['publisher'] = 'TPUB'; - $ID3v2ShortFrameNameLookup[3]['tracknumber'] = 'TRCK'; - $ID3v2ShortFrameNameLookup[3]['internet_radio_station_name'] = 'TRSN'; - $ID3v2ShortFrameNameLookup[3]['internet_radio_station_owner'] = 'TRSO'; - $ID3v2ShortFrameNameLookup[3]['isrc'] = 'TSRC'; - $ID3v2ShortFrameNameLookup[3]['encoder_settings'] = 'TSSE'; - $ID3v2ShortFrameNameLookup[3]['user_text'] = 'TXXX'; - $ID3v2ShortFrameNameLookup[3]['unique_file_identifier'] = 'UFID'; - $ID3v2ShortFrameNameLookup[3]['terms_of_use'] = 'USER'; - $ID3v2ShortFrameNameLookup[3]['unsynchronised_lyrics'] = 'USLT'; - $ID3v2ShortFrameNameLookup[3]['commercial'] = 'WCOM'; - $ID3v2ShortFrameNameLookup[3]['copyright_information'] = 'WCOP'; - $ID3v2ShortFrameNameLookup[3]['url_file'] = 'WOAF'; - $ID3v2ShortFrameNameLookup[3]['url_artist'] = 'WOAR'; - $ID3v2ShortFrameNameLookup[3]['url_source'] = 'WOAS'; - $ID3v2ShortFrameNameLookup[3]['url_station'] = 'WORS'; - $ID3v2ShortFrameNameLookup[3]['payment'] = 'WPAY'; - $ID3v2ShortFrameNameLookup[3]['url_publisher'] = 'WPUB'; - $ID3v2ShortFrameNameLookup[3]['url_user'] = 'WXXX'; - - // The above are common to ID3v2.3 and ID3v2.4 - // so copy them to ID3v2.4 before adding specifics for 2.3 and 2.4 - $ID3v2ShortFrameNameLookup[4] = $ID3v2ShortFrameNameLookup[3]; - - // The following are unique to ID3v2.3 - $ID3v2ShortFrameNameLookup[3]['equalisation'] = 'EQUA'; - $ID3v2ShortFrameNameLookup[3]['involved_people_list'] = 'IPLS'; - $ID3v2ShortFrameNameLookup[3]['relative_volume_adjustment'] = 'RVAD'; - $ID3v2ShortFrameNameLookup[3]['date'] = 'TDAT'; - $ID3v2ShortFrameNameLookup[3]['time'] = 'TIME'; - $ID3v2ShortFrameNameLookup[3]['original_release_year'] = 'TORY'; - $ID3v2ShortFrameNameLookup[3]['recording_dates'] = 'TRDA'; - $ID3v2ShortFrameNameLookup[3]['size'] = 'TSIZ'; - $ID3v2ShortFrameNameLookup[3]['year'] = 'TYER'; - - - // The following are unique to ID3v2.4 - $ID3v2ShortFrameNameLookup[4]['audio_seek_point_index'] = 'ASPI'; - $ID3v2ShortFrameNameLookup[4]['equalisation'] = 'EQU2'; - $ID3v2ShortFrameNameLookup[4]['relative_volume_adjustment'] = 'RVA2'; - $ID3v2ShortFrameNameLookup[4]['seek'] = 'SEEK'; - $ID3v2ShortFrameNameLookup[4]['signature'] = 'SIGN'; - $ID3v2ShortFrameNameLookup[4]['encoding_time'] = 'TDEN'; - $ID3v2ShortFrameNameLookup[4]['original_release_time'] = 'TDOR'; - $ID3v2ShortFrameNameLookup[4]['recording_time'] = 'TDRC'; - $ID3v2ShortFrameNameLookup[4]['release_time'] = 'TDRL'; - $ID3v2ShortFrameNameLookup[4]['tagging_time'] = 'TDTG'; - $ID3v2ShortFrameNameLookup[4]['involved_people_list'] = 'TIPL'; - $ID3v2ShortFrameNameLookup[4]['musician_credits_list'] = 'TMCL'; - $ID3v2ShortFrameNameLookup[4]['mood'] = 'TMOO'; - $ID3v2ShortFrameNameLookup[4]['produced_notice'] = 'TPRO'; - $ID3v2ShortFrameNameLookup[4]['album_sort_order'] = 'TSOA'; - $ID3v2ShortFrameNameLookup[4]['performer_sort_order'] = 'TSOP'; - $ID3v2ShortFrameNameLookup[4]['title_sort_order'] = 'TSOT'; - $ID3v2ShortFrameNameLookup[4]['set_subtitle'] = 'TSST'; - } - return (isset($ID3v2ShortFrameNameLookup[$majorversion][strtolower($long_description)]) ? $ID3v2ShortFrameNameLookup[$majorversion][strtolower($long_description)] : ''); - - } - -} - -?> diff --git a/3rdparty/getid3/write.lyrics3.php b/3rdparty/getid3/write.lyrics3.php deleted file mode 100644 index fa49cd16eab232c6e6670b59a7604cd0a6b38d6c..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.lyrics3.php +++ /dev/null @@ -1,73 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// write.lyrics3.php // -// module for writing Lyrics3 tags // -// dependencies: module.tag.lyrics3.php // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_write_lyrics3 -{ - var $filename; - var $tag_data; - //var $lyrics3_version = 2; // 1 or 2 - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - - function getid3_write_lyrics3() { - return true; - } - - function WriteLyrics3() { - $this->errors[] = 'WriteLyrics3() not yet functional - cannot write Lyrics3'; - return false; - } - function DeleteLyrics3() { - // Initialize getID3 engine - $getID3 = new getID3; - $ThisFileInfo = $getID3->analyze($this->filename); - if (isset($ThisFileInfo['lyrics3']['tag_offset_start']) && isset($ThisFileInfo['lyrics3']['tag_offset_end'])) { - if (is_readable($this->filename) && is_writable($this->filename) && is_file($this->filename) && ($fp = fopen($this->filename, 'a+b'))) { - - flock($fp, LOCK_EX); - $oldignoreuserabort = ignore_user_abort(true); - - fseek($fp, $ThisFileInfo['lyrics3']['tag_offset_end'], SEEK_SET); - $DataAfterLyrics3 = ''; - if ($ThisFileInfo['filesize'] > $ThisFileInfo['lyrics3']['tag_offset_end']) { - $DataAfterLyrics3 = fread($fp, $ThisFileInfo['filesize'] - $ThisFileInfo['lyrics3']['tag_offset_end']); - } - - ftruncate($fp, $ThisFileInfo['lyrics3']['tag_offset_start']); - - if (!empty($DataAfterLyrics3)) { - fseek($fp, $ThisFileInfo['lyrics3']['tag_offset_start'], SEEK_SET); - fwrite($fp, $DataAfterLyrics3, strlen($DataAfterLyrics3)); - } - - flock($fp, LOCK_UN); - fclose($fp); - ignore_user_abort($oldignoreuserabort); - - return true; - - } else { - $this->errors[] = 'Cannot fopen('.$this->filename.', "a+b")'; - return false; - } - } - // no Lyrics3 present - return true; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/write.metaflac.php b/3rdparty/getid3/write.metaflac.php deleted file mode 100644 index dfd6950aa708608769cac4e06e7a190fe346f68f..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.metaflac.php +++ /dev/null @@ -1,163 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// write.metaflac.php // -// module for writing metaflac tags // -// dependencies: /helperapps/metaflac.exe // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_write_metaflac -{ - - var $filename; - var $tag_data; - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - - function getid3_write_metaflac() { - return true; - } - - function WriteMetaFLAC() { - - if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { - $this->errors[] = 'PHP running in Safe Mode (backtick operator not available) - cannot call metaflac, tags not written'; - return false; - } - - // Create file with new comments - $tempcommentsfilename = tempnam(GETID3_TEMP_DIR, 'getID3'); - if (is_writable($tempcommentsfilename) && is_file($tempcommentsfilename) && ($fpcomments = fopen($tempcommentsfilename, 'wb'))) { - foreach ($this->tag_data as $key => $value) { - foreach ($value as $commentdata) { - fwrite($fpcomments, $this->CleanmetaflacName($key).'='.$commentdata."\n"); - } - } - fclose($fpcomments); - - } else { - $this->errors[] = 'failed to open temporary tags file, tags not written - fopen("'.$tempcommentsfilename.'", "wb")'; - return false; - } - - $oldignoreuserabort = ignore_user_abort(true); - if (GETID3_OS_ISWINDOWS) { - - if (file_exists(GETID3_HELPERAPPSDIR.'metaflac.exe')) { - //$commandline = '"'.GETID3_HELPERAPPSDIR.'metaflac.exe" --no-utf8-convert --remove-all-tags --import-tags-from="'.$tempcommentsfilename.'" "'.str_replace('/', '\\', $this->filename).'"'; - // metaflac works fine if you copy-paste the above commandline into a command prompt, - // but refuses to work with `backtick` if there are "doublequotes" present around BOTH - // the metaflac pathname and the target filename. For whatever reason...?? - // The solution is simply ensure that the metaflac pathname has no spaces, - // and therefore does not need to be quoted - - // On top of that, if error messages are not always captured properly under Windows - // To at least see if there was a problem, compare file modification timestamps before and after writing - clearstatcache(); - $timestampbeforewriting = filemtime($this->filename); - - $commandline = GETID3_HELPERAPPSDIR.'metaflac.exe --no-utf8-convert --remove-all-tags --import-tags-from='.escapeshellarg($tempcommentsfilename).' '.escapeshellarg($this->filename).' 2>&1'; - $metaflacError = `$commandline`; - - if (empty($metaflacError)) { - clearstatcache(); - if ($timestampbeforewriting == filemtime($this->filename)) { - $metaflacError = 'File modification timestamp has not changed - it looks like the tags were not written'; - } - } - } else { - $metaflacError = 'metaflac.exe not found in '.GETID3_HELPERAPPSDIR; - } - - } else { - - // It's simpler on *nix - $commandline = 'metaflac --no-utf8-convert --remove-all-tags --import-tags-from='.escapeshellarg($tempcommentsfilename).' '.escapeshellarg($this->filename).' 2>&1'; - $metaflacError = `$commandline`; - - } - - // Remove temporary comments file - unlink($tempcommentsfilename); - ignore_user_abort($oldignoreuserabort); - - if (!empty($metaflacError)) { - - $this->errors[] = 'System call to metaflac failed with this message returned: '."\n\n".$metaflacError; - return false; - - } - - return true; - } - - - function DeleteMetaFLAC() { - - if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { - $this->errors[] = 'PHP running in Safe Mode (backtick operator not available) - cannot call metaflac, tags not deleted'; - return false; - } - - $oldignoreuserabort = ignore_user_abort(true); - if (GETID3_OS_ISWINDOWS) { - - if (file_exists(GETID3_HELPERAPPSDIR.'metaflac.exe')) { - // To at least see if there was a problem, compare file modification timestamps before and after writing - clearstatcache(); - $timestampbeforewriting = filemtime($this->filename); - - $commandline = GETID3_HELPERAPPSDIR.'metaflac.exe --remove-all-tags "'.$this->filename.'" 2>&1'; - $metaflacError = `$commandline`; - - if (empty($metaflacError)) { - clearstatcache(); - if ($timestampbeforewriting == filemtime($this->filename)) { - $metaflacError = 'File modification timestamp has not changed - it looks like the tags were not deleted'; - } - } - } else { - $metaflacError = 'metaflac.exe not found in '.GETID3_HELPERAPPSDIR; - } - - } else { - - // It's simpler on *nix - $commandline = 'metaflac --remove-all-tags "'.$this->filename.'" 2>&1'; - $metaflacError = `$commandline`; - - } - - ignore_user_abort($oldignoreuserabort); - - if (!empty($metaflacError)) { - $this->errors[] = 'System call to metaflac failed with this message returned: '."\n\n".$metaflacError; - return false; - } - return true; - } - - - function CleanmetaflacName($originalcommentname) { - // A case-insensitive field name that may consist of ASCII 0x20 through 0x7D, 0x3D ('=') excluded. - // ASCII 0x41 through 0x5A inclusive (A-Z) is to be considered equivalent to ASCII 0x61 through - // 0x7A inclusive (a-z). - - // replace invalid chars with a space, return uppercase text - // Thanks Chris Bolt for improving this function - // note: *reg_replace() replaces nulls with empty string (not space) - return strtoupper(preg_replace('#[^ -<>-}]#', ' ', str_replace("\x00", ' ', $originalcommentname))); - - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/write.php b/3rdparty/getid3/write.php deleted file mode 100644 index 16b19c7d73b7175cf671f55797f1804b77c92837..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.php +++ /dev/null @@ -1,615 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -/// // -// write.php // -// module for writing tags (APEv2, ID3v1, ID3v2) // -// dependencies: getid3.lib.php // -// write.apetag.php (optional) // -// write.id3v1.php (optional) // -// write.id3v2.php (optional) // -// write.vorbiscomment.php (optional) // -// write.metaflac.php (optional) // -// write.lyrics3.php (optional) // -// /// -///////////////////////////////////////////////////////////////// - -if (!defined('GETID3_INCLUDEPATH')) { - throw new Exception('getid3.php MUST be included before calling getid3_writetags'); -} -if (!include_once(GETID3_INCLUDEPATH.'getid3.lib.php')) { - throw new Exception('write.php depends on getid3.lib.php, which is missing.'); -} - - -// NOTES: -// -// You should pass data here with standard field names as follows: -// * TITLE -// * ARTIST -// * ALBUM -// * TRACKNUMBER -// * COMMENT -// * GENRE -// * YEAR -// * ATTACHED_PICTURE (ID3v2 only) -// -// http://www.personal.uni-jena.de/~pfk/mpp/sv8/apekey.html -// The APEv2 Tag Items Keys definition says "TRACK" is correct but foobar2000 uses "TRACKNUMBER" instead -// Pass data here as "TRACKNUMBER" for compatability with all formats - - -class getid3_writetags -{ - // public - var $filename; // absolute filename of file to write tags to - var $tagformats = array(); // array of tag formats to write ('id3v1', 'id3v2.2', 'id2v2.3', 'id3v2.4', 'ape', 'vorbiscomment', 'metaflac', 'real') - var $tag_data = array(array()); // 2-dimensional array of tag data (ex: $data['ARTIST'][0] = 'Elvis') - var $tag_encoding = 'ISO-8859-1'; // text encoding used for tag data ('ISO-8859-1', 'UTF-8', 'UTF-16', 'UTF-16LE', 'UTF-16BE', ) - var $overwrite_tags = true; // if true will erase existing tag data and write only passed data; if false will merge passed data with existing tag data - var $remove_other_tags = false; // if true will erase remove all existing tags and only write those passed in $tagformats; if false will ignore any tags not mentioned in $tagformats - - var $id3v2_tag_language = 'eng'; // ISO-639-2 3-character language code needed for some ID3v2 frames (http://www.id3.org/iso639-2.html) - var $id3v2_paddedlength = 4096; // minimum length of ID3v2 tags (will be padded to this length if tag data is shorter) - - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - - // private - var $ThisFileInfo; // analysis of file before writing - - function getid3_writetags() { - return true; - } - - - function WriteTags() { - - if (empty($this->filename)) { - $this->errors[] = 'filename is undefined in getid3_writetags'; - return false; - } elseif (!file_exists($this->filename)) { - $this->errors[] = 'filename set to non-existant file "'.$this->filename.'" in getid3_writetags'; - return false; - } - - if (!is_array($this->tagformats)) { - $this->errors[] = 'tagformats must be an array in getid3_writetags'; - return false; - } - - $TagFormatsToRemove = array(); - if (filesize($this->filename) == 0) { - - // empty file special case - allow any tag format, don't check existing format - // could be useful if you want to generate tag data for a non-existant file - $this->ThisFileInfo = array('fileformat'=>''); - $AllowedTagFormats = array('id3v1', 'id3v2.2', 'id3v2.3', 'id3v2.4', 'ape', 'lyrics3'); - - } else { - - $getID3 = new getID3; - $getID3->encoding = $this->tag_encoding; - $this->ThisFileInfo = $getID3->analyze($this->filename); - - // check for what file types are allowed on this fileformat - switch (isset($this->ThisFileInfo['fileformat']) ? $this->ThisFileInfo['fileformat'] : '') { - case 'mp3': - case 'mp2': - case 'mp1': - case 'riff': // maybe not officially, but people do it anyway - $AllowedTagFormats = array('id3v1', 'id3v2.2', 'id3v2.3', 'id3v2.4', 'ape', 'lyrics3'); - break; - - case 'mpc': - $AllowedTagFormats = array('ape'); - break; - - case 'flac': - $AllowedTagFormats = array('metaflac'); - break; - - case 'real': - $AllowedTagFormats = array('real'); - break; - - case 'ogg': - switch (isset($this->ThisFileInfo['audio']['dataformat']) ? $this->ThisFileInfo['audio']['dataformat'] : '') { - case 'flac': - //$AllowedTagFormats = array('metaflac'); - $this->errors[] = 'metaflac is not (yet) compatible with OggFLAC files'; - return false; - break; - case 'vorbis': - $AllowedTagFormats = array('vorbiscomment'); - break; - default: - $this->errors[] = 'metaflac is not (yet) compatible with Ogg files other than OggVorbis'; - return false; - break; - } - break; - - default: - $AllowedTagFormats = array(); - break; - } - foreach ($this->tagformats as $requested_tag_format) { - if (!in_array($requested_tag_format, $AllowedTagFormats)) { - $errormessage = 'Tag format "'.$requested_tag_format.'" is not allowed on "'.(isset($this->ThisFileInfo['fileformat']) ? $this->ThisFileInfo['fileformat'] : ''); - $errormessage .= (isset($this->ThisFileInfo['audio']['dataformat']) ? '.'.$this->ThisFileInfo['audio']['dataformat'] : ''); - $errormessage .= '" files'; - $this->errors[] = $errormessage; - return false; - } - } - - // List of other tag formats, removed if requested - if ($this->remove_other_tags) { - foreach ($AllowedTagFormats as $AllowedTagFormat) { - switch ($AllowedTagFormat) { - case 'id3v2.2': - case 'id3v2.3': - case 'id3v2.4': - if (!in_array('id3v2', $TagFormatsToRemove) && !in_array('id3v2.2', $this->tagformats) && !in_array('id3v2.3', $this->tagformats) && !in_array('id3v2.4', $this->tagformats)) { - $TagFormatsToRemove[] = 'id3v2'; - } - break; - - default: - if (!in_array($AllowedTagFormat, $this->tagformats)) { - $TagFormatsToRemove[] = $AllowedTagFormat; - } - break; - } - } - } - } - - $WritingFilesToInclude = array_merge($this->tagformats, $TagFormatsToRemove); - - // Check for required include files and include them - foreach ($WritingFilesToInclude as $tagformat) { - switch ($tagformat) { - case 'ape': - $GETID3_ERRORARRAY = &$this->errors; - if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.apetag.php', __FILE__, false)) { - return false; - } - break; - - case 'id3v1': - case 'lyrics3': - case 'vorbiscomment': - case 'metaflac': - case 'real': - $GETID3_ERRORARRAY = &$this->errors; - if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.'.$tagformat.'.php', __FILE__, false)) { - return false; - } - break; - - case 'id3v2.2': - case 'id3v2.3': - case 'id3v2.4': - case 'id3v2': - $GETID3_ERRORARRAY = &$this->errors; - if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.id3v2.php', __FILE__, false)) { - return false; - } - break; - - default: - $this->errors[] = 'unknown tag format "'.$tagformat.'" in $tagformats in WriteTags()'; - return false; - break; - } - - } - - // Validation of supplied data - if (!is_array($this->tag_data)) { - $this->errors[] = '$this->tag_data is not an array in WriteTags()'; - return false; - } - // convert supplied data array keys to upper case, if they're not already - foreach ($this->tag_data as $tag_key => $tag_array) { - if (strtoupper($tag_key) !== $tag_key) { - $this->tag_data[strtoupper($tag_key)] = $this->tag_data[$tag_key]; - unset($this->tag_data[$tag_key]); - } - } - // convert source data array keys to upper case, if they're not already - if (!empty($this->ThisFileInfo['tags'])) { - foreach ($this->ThisFileInfo['tags'] as $tag_format => $tag_data_array) { - foreach ($tag_data_array as $tag_key => $tag_array) { - if (strtoupper($tag_key) !== $tag_key) { - $this->ThisFileInfo['tags'][$tag_format][strtoupper($tag_key)] = $this->ThisFileInfo['tags'][$tag_format][$tag_key]; - unset($this->ThisFileInfo['tags'][$tag_format][$tag_key]); - } - } - } - } - - // Convert "TRACK" to "TRACKNUMBER" (if needed) for compatability with all formats - if (isset($this->tag_data['TRACK']) && !isset($this->tag_data['TRACKNUMBER'])) { - $this->tag_data['TRACKNUMBER'] = $this->tag_data['TRACK']; - unset($this->tag_data['TRACK']); - } - - // Remove all other tag formats, if requested - if ($this->remove_other_tags) { - $this->DeleteTags($TagFormatsToRemove); - } - - // Write data for each tag format - foreach ($this->tagformats as $tagformat) { - $success = false; // overridden if tag writing is successful - switch ($tagformat) { - case 'ape': - $ape_writer = new getid3_write_apetag; - if (($ape_writer->tag_data = $this->FormatDataForAPE()) !== false) { - $ape_writer->filename = $this->filename; - if (($success = $ape_writer->WriteAPEtag()) === false) { - $this->errors[] = 'WriteAPEtag() failed with message(s):
    • '.str_replace("\n", '
    • ', htmlentities(trim(implode("\n", $ape_writer->errors)))).'
    '; - } - } else { - $this->errors[] = 'FormatDataForAPE() failed'; - } - break; - - case 'id3v1': - $id3v1_writer = new getid3_write_id3v1; - if (($id3v1_writer->tag_data = $this->FormatDataForID3v1()) !== false) { - $id3v1_writer->filename = $this->filename; - if (($success = $id3v1_writer->WriteID3v1()) === false) { - $this->errors[] = 'WriteID3v1() failed with message(s):
    • '.str_replace("\n", '
    • ', htmlentities(trim(implode("\n", $id3v1_writer->errors)))).'
    '; - } - } else { - $this->errors[] = 'FormatDataForID3v1() failed'; - } - break; - - case 'id3v2.2': - case 'id3v2.3': - case 'id3v2.4': - $id3v2_writer = new getid3_write_id3v2; - $id3v2_writer->majorversion = intval(substr($tagformat, -1)); - $id3v2_writer->paddedlength = $this->id3v2_paddedlength; - if (($id3v2_writer->tag_data = $this->FormatDataForID3v2($id3v2_writer->majorversion)) !== false) { - $id3v2_writer->filename = $this->filename; - if (($success = $id3v2_writer->WriteID3v2()) === false) { - $this->errors[] = 'WriteID3v2() failed with message(s):
    • '.str_replace("\n", '
    • ', htmlentities(trim(implode("\n", $id3v2_writer->errors)))).'
    '; - } - } else { - $this->errors[] = 'FormatDataForID3v2() failed'; - } - break; - - case 'vorbiscomment': - $vorbiscomment_writer = new getid3_write_vorbiscomment; - if (($vorbiscomment_writer->tag_data = $this->FormatDataForVorbisComment()) !== false) { - $vorbiscomment_writer->filename = $this->filename; - if (($success = $vorbiscomment_writer->WriteVorbisComment()) === false) { - $this->errors[] = 'WriteVorbisComment() failed with message(s):
    • '.str_replace("\n", '
    • ', htmlentities(trim(implode("\n", $vorbiscomment_writer->errors)))).'
    '; - } - } else { - $this->errors[] = 'FormatDataForVorbisComment() failed'; - } - break; - - case 'metaflac': - $metaflac_writer = new getid3_write_metaflac; - if (($metaflac_writer->tag_data = $this->FormatDataForMetaFLAC()) !== false) { - $metaflac_writer->filename = $this->filename; - if (($success = $metaflac_writer->WriteMetaFLAC()) === false) { - $this->errors[] = 'WriteMetaFLAC() failed with message(s):
    • '.str_replace("\n", '
    • ', htmlentities(trim(implode("\n", $metaflac_writer->errors)))).'
    '; - } - } else { - $this->errors[] = 'FormatDataForMetaFLAC() failed'; - } - break; - - case 'real': - $real_writer = new getid3_write_real; - if (($real_writer->tag_data = $this->FormatDataForReal()) !== false) { - $real_writer->filename = $this->filename; - if (($success = $real_writer->WriteReal()) === false) { - $this->errors[] = 'WriteReal() failed with message(s):
    • '.str_replace("\n", '
    • ', htmlentities(trim(implode("\n", $real_writer->errors)))).'
    '; - } - } else { - $this->errors[] = 'FormatDataForReal() failed'; - } - break; - - default: - $this->errors[] = 'Invalid tag format to write: "'.$tagformat.'"'; - return false; - break; - } - if (!$success) { - return false; - } - } - return true; - - } - - - function DeleteTags($TagFormatsToDelete) { - foreach ($TagFormatsToDelete as $DeleteTagFormat) { - $success = false; // overridden if tag deletion is successful - switch ($DeleteTagFormat) { - case 'id3v1': - $id3v1_writer = new getid3_write_id3v1; - $id3v1_writer->filename = $this->filename; - if (($success = $id3v1_writer->RemoveID3v1()) === false) { - $this->errors[] = 'RemoveID3v1() failed with message(s):
    • '.trim(implode('
    • ', $id3v1_writer->errors)).'
    '; - } - break; - - case 'id3v2': - $id3v2_writer = new getid3_write_id3v2; - $id3v2_writer->filename = $this->filename; - if (($success = $id3v2_writer->RemoveID3v2()) === false) { - $this->errors[] = 'RemoveID3v2() failed with message(s):
    • '.trim(implode('
    • ', $id3v2_writer->errors)).'
    '; - } - break; - - case 'ape': - $ape_writer = new getid3_write_apetag; - $ape_writer->filename = $this->filename; - if (($success = $ape_writer->DeleteAPEtag()) === false) { - $this->errors[] = 'DeleteAPEtag() failed with message(s):
    • '.trim(implode('
    • ', $ape_writer->errors)).'
    '; - } - break; - - case 'vorbiscomment': - $vorbiscomment_writer = new getid3_write_vorbiscomment; - $vorbiscomment_writer->filename = $this->filename; - if (($success = $vorbiscomment_writer->DeleteVorbisComment()) === false) { - $this->errors[] = 'DeleteVorbisComment() failed with message(s):
    • '.trim(implode('
    • ', $vorbiscomment_writer->errors)).'
    '; - } - break; - - case 'metaflac': - $metaflac_writer = new getid3_write_metaflac; - $metaflac_writer->filename = $this->filename; - if (($success = $metaflac_writer->DeleteMetaFLAC()) === false) { - $this->errors[] = 'DeleteMetaFLAC() failed with message(s):
    • '.trim(implode('
    • ', $metaflac_writer->errors)).'
    '; - } - break; - - case 'lyrics3': - $lyrics3_writer = new getid3_write_lyrics3; - $lyrics3_writer->filename = $this->filename; - if (($success = $lyrics3_writer->DeleteLyrics3()) === false) { - $this->errors[] = 'DeleteLyrics3() failed with message(s):
    • '.trim(implode('
    • ', $lyrics3_writer->errors)).'
    '; - } - break; - - case 'real': - $real_writer = new getid3_write_real; - $real_writer->filename = $this->filename; - if (($success = $real_writer->RemoveReal()) === false) { - $this->errors[] = 'RemoveReal() failed with message(s):
    • '.trim(implode('
    • ', $real_writer->errors)).'
    '; - } - break; - - default: - $this->errors[] = 'Invalid tag format to delete: "'.$tagformat.'"'; - return false; - break; - } - if (!$success) { - return false; - } - } - return true; - } - - - function MergeExistingTagData($TagFormat, &$tag_data) { - // Merge supplied data with existing data, if requested - if ($this->overwrite_tags) { - // do nothing - ignore previous data - } else { -throw new Exception('$this->overwrite_tags=false is known to be buggy in this version of getID3. Will be fixed in the near future, check www.getid3.org for a newer version.'); - if (!isset($this->ThisFileInfo['tags'][$TagFormat])) { - return false; - } - $tag_data = array_merge_recursive($tag_data, $this->ThisFileInfo['tags'][$TagFormat]); - } - return true; - } - - function FormatDataForAPE() { - $ape_tag_data = array(); - foreach ($this->tag_data as $tag_key => $valuearray) { - switch ($tag_key) { - case 'ATTACHED_PICTURE': - // ATTACHED_PICTURE is ID3v2 only - ignore - $this->warnings[] = '$data['.$tag_key.'] is assumed to be ID3v2 APIC data - NOT written to APE tag'; - break; - - default: - foreach ($valuearray as $key => $value) { - if (is_string($value) || is_numeric($value)) { - $ape_tag_data[$tag_key][$key] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', $value); - } else { - $this->warnings[] = '$data['.$tag_key.']['.$key.'] is not a string value - all of $data['.$tag_key.'] NOT written to APE tag'; - unset($ape_tag_data[$tag_key]); - break; - } - } - break; - } - } - $this->MergeExistingTagData('ape', $ape_tag_data); - return $ape_tag_data; - } - - - function FormatDataForID3v1() { - $tag_data_id3v1['genreid'] = 255; - if (!empty($this->tag_data['GENRE'])) { - foreach ($this->tag_data['GENRE'] as $key => $value) { - if (getid3_id3v1::LookupGenreID($value) !== false) { - $tag_data_id3v1['genreid'] = getid3_id3v1::LookupGenreID($value); - break; - } - } - } - $tag_data_id3v1['title'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['TITLE'] ) ? $this->tag_data['TITLE'] : array()))); - $tag_data_id3v1['artist'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['ARTIST'] ) ? $this->tag_data['ARTIST'] : array()))); - $tag_data_id3v1['album'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['ALBUM'] ) ? $this->tag_data['ALBUM'] : array()))); - $tag_data_id3v1['year'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['YEAR'] ) ? $this->tag_data['YEAR'] : array()))); - $tag_data_id3v1['comment'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['COMMENT'] ) ? $this->tag_data['COMMENT'] : array()))); - $tag_data_id3v1['track'] = intval(getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['TRACKNUMBER']) ? $this->tag_data['TRACKNUMBER'] : array())))); - if ($tag_data_id3v1['track'] <= 0) { - $tag_data_id3v1['track'] = ''; - } - - $this->MergeExistingTagData('id3v1', $tag_data_id3v1); - return $tag_data_id3v1; - } - - function FormatDataForID3v2($id3v2_majorversion) { - $tag_data_id3v2 = array(); - - $ID3v2_text_encoding_lookup[2] = array('ISO-8859-1'=>0, 'UTF-16'=>1); - $ID3v2_text_encoding_lookup[3] = array('ISO-8859-1'=>0, 'UTF-16'=>1); - $ID3v2_text_encoding_lookup[4] = array('ISO-8859-1'=>0, 'UTF-16'=>1, 'UTF-16BE'=>2, 'UTF-8'=>3); - foreach ($this->tag_data as $tag_key => $valuearray) { - $ID3v2_framename = getid3_write_id3v2::ID3v2ShortFrameNameLookup($id3v2_majorversion, $tag_key); - switch ($ID3v2_framename) { - case 'APIC': - foreach ($valuearray as $key => $apic_data_array) { - if (isset($apic_data_array['data']) && - isset($apic_data_array['picturetypeid']) && - isset($apic_data_array['description']) && - isset($apic_data_array['mime'])) { - $tag_data_id3v2['APIC'][] = $apic_data_array; - } else { - $this->errors[] = 'ID3v2 APIC data is not properly structured'; - return false; - } - } - break; - - case '': - $this->errors[] = 'ID3v2: Skipping "'.$tag_key.'" because cannot match it to a known ID3v2 frame type'; - // some other data type, don't know how to handle it, ignore it - break; - - default: - // most other (text) frames can be copied over as-is - foreach ($valuearray as $key => $value) { - if (isset($ID3v2_text_encoding_lookup[$id3v2_majorversion][$this->tag_encoding])) { - // source encoding is valid in ID3v2 - use it with no conversion - $tag_data_id3v2[$ID3v2_framename][$key]['encodingid'] = $ID3v2_text_encoding_lookup[$id3v2_majorversion][$this->tag_encoding]; - $tag_data_id3v2[$ID3v2_framename][$key]['data'] = $value; - } else { - // source encoding is NOT valid in ID3v2 - convert it to an ID3v2-valid encoding first - if ($id3v2_majorversion < 4) { - // convert data from other encoding to UTF-16 (with BOM) - // note: some software, notably Windows Media Player and iTunes are broken and treat files tagged with UTF-16BE (with BOM) as corrupt - // therefore we force data to UTF-16LE and manually prepend the BOM - $ID3v2_tag_data_converted = false; - if (!$ID3v2_tag_data_converted && ($this->tag_encoding == 'ISO-8859-1')) { - // great, leave data as-is for minimum compatability problems - $tag_data_id3v2[$ID3v2_framename][$key]['encodingid'] = 0; - $tag_data_id3v2[$ID3v2_framename][$key]['data'] = $value; - $ID3v2_tag_data_converted = true; - } - if (!$ID3v2_tag_data_converted && ($this->tag_encoding == 'UTF-8')) { - do { - // if UTF-8 string does not include any characters above chr(127) then it is identical to ISO-8859-1 - for ($i = 0; $i < strlen($value); $i++) { - if (ord($value{$i}) > 127) { - break 2; - } - } - $tag_data_id3v2[$ID3v2_framename][$key]['encodingid'] = 0; - $tag_data_id3v2[$ID3v2_framename][$key]['data'] = $value; - $ID3v2_tag_data_converted = true; - } while (false); - } - if (!$ID3v2_tag_data_converted) { - $tag_data_id3v2[$ID3v2_framename][$key]['encodingid'] = 1; - //$tag_data_id3v2[$ID3v2_framename][$key]['data'] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-16', $value); // output is UTF-16LE+BOM or UTF-16BE+BOM depending on system architecture - $tag_data_id3v2[$ID3v2_framename][$key]['data'] = "\xFF\xFE".getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-16LE', $value); // force LittleEndian order version of UTF-16 - $ID3v2_tag_data_converted = true; - } - - } else { - // convert data from other encoding to UTF-8 - $tag_data_id3v2[$ID3v2_framename][$key]['encodingid'] = 3; - $tag_data_id3v2[$ID3v2_framename][$key]['data'] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', $value); - } - } - - // These values are not needed for all frame types, but if they're not used no matter - $tag_data_id3v2[$ID3v2_framename][$key]['description'] = ''; - $tag_data_id3v2[$ID3v2_framename][$key]['language'] = $this->id3v2_tag_language; - } - break; - } - } - $this->MergeExistingTagData('id3v2', $tag_data_id3v2); - return $tag_data_id3v2; - } - - function FormatDataForVorbisComment() { - $tag_data_vorbiscomment = $this->tag_data; - - // check for multi-line comment values - split out to multiple comments if neccesary - // and convert data to UTF-8 strings - foreach ($tag_data_vorbiscomment as $tag_key => $valuearray) { - foreach ($valuearray as $key => $value) { - str_replace("\r", "\n", $value); - if (strstr($value, "\n")) { - unset($tag_data_vorbiscomment[$tag_key][$key]); - $multilineexploded = explode("\n", $value); - foreach ($multilineexploded as $newcomment) { - if (strlen(trim($newcomment)) > 0) { - $tag_data_vorbiscomment[$tag_key][] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', $newcomment); - } - } - } elseif (is_string($value) || is_numeric($value)) { - $tag_data_vorbiscomment[$tag_key][$key] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', $value); - } else { - $this->warnings[] = '$data['.$tag_key.']['.$key.'] is not a string value - all of $data['.$tag_key.'] NOT written to VorbisComment tag'; - unset($tag_data_vorbiscomment[$tag_key]); - break; - } - } - } - $this->MergeExistingTagData('vorbiscomment', $tag_data_vorbiscomment); - return $tag_data_vorbiscomment; - } - - function FormatDataForMetaFLAC() { - // FLAC & OggFLAC use VorbisComments same as OggVorbis - // but require metaflac to do the writing rather than vorbiscomment - return $this->FormatDataForVorbisComment(); - } - - function FormatDataForReal() { - $tag_data_real['title'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['TITLE'] ) ? $this->tag_data['TITLE'] : array()))); - $tag_data_real['artist'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['ARTIST'] ) ? $this->tag_data['ARTIST'] : array()))); - $tag_data_real['copyright'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['COPYRIGHT']) ? $this->tag_data['COPYRIGHT'] : array()))); - $tag_data_real['comment'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', implode(' ', (isset($this->tag_data['COMMENT'] ) ? $this->tag_data['COMMENT'] : array()))); - - $this->MergeExistingTagData('real', $tag_data_real); - return $tag_data_real; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/write.real.php b/3rdparty/getid3/write.real.php deleted file mode 100644 index ad37e74adbe1711e2b44a6cda2da44093a58f465..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.real.php +++ /dev/null @@ -1,275 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// write.real.php // -// module for writing RealAudio/RealVideo tags // -// dependencies: module.tag.real.php // -// /// -///////////////////////////////////////////////////////////////// - -class getid3_write_real -{ - var $filename; - var $tag_data = array(); - var $fread_buffer_size = 32768; // read buffer size in bytes - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - var $paddedlength = 512; // minimum length of CONT tag in bytes - - function getid3_write_real() { - return true; - } - - function WriteReal() { - // File MUST be writeable - CHMOD(646) at least - if (is_writeable($this->filename) && is_file($this->filename) && ($fp_source = fopen($this->filename, 'r+b'))) { - - // Initialize getID3 engine - $getID3 = new getID3; - $OldThisFileInfo = $getID3->analyze($this->filename); - if (empty($OldThisFileInfo['real']['chunks']) && !empty($OldThisFileInfo['real']['old_ra_header'])) { - $this->errors[] = 'Cannot write Real tags on old-style file format'; - fclose($fp_source); - return false; - } - - if (empty($OldThisFileInfo['real']['chunks'])) { - $this->errors[] = 'Cannot write Real tags because cannot find DATA chunk in file'; - fclose($fp_source); - return false; - } - foreach ($OldThisFileInfo['real']['chunks'] as $chunknumber => $chunkarray) { - $oldChunkInfo[$chunkarray['name']] = $chunkarray; - } - if (!empty($oldChunkInfo['CONT']['length'])) { - $this->paddedlength = max($oldChunkInfo['CONT']['length'], $this->paddedlength); - } - - $new_CONT_tag_data = $this->GenerateCONTchunk(); - $new_PROP_tag_data = $this->GeneratePROPchunk($OldThisFileInfo['real']['chunks'], $new_CONT_tag_data); - $new__RMF_tag_data = $this->GenerateRMFchunk($OldThisFileInfo['real']['chunks']); - - if (isset($oldChunkInfo['.RMF']['length']) && ($oldChunkInfo['.RMF']['length'] == strlen($new__RMF_tag_data))) { - fseek($fp_source, $oldChunkInfo['.RMF']['offset'], SEEK_SET); - fwrite($fp_source, $new__RMF_tag_data); - } else { - $this->errors[] = 'new .RMF tag ('.strlen($new__RMF_tag_data).' bytes) different length than old .RMF tag ('.$oldChunkInfo['.RMF']['length'].' bytes)'; - fclose($fp_source); - return false; - } - - if (isset($oldChunkInfo['PROP']['length']) && ($oldChunkInfo['PROP']['length'] == strlen($new_PROP_tag_data))) { - fseek($fp_source, $oldChunkInfo['PROP']['offset'], SEEK_SET); - fwrite($fp_source, $new_PROP_tag_data); - } else { - $this->errors[] = 'new PROP tag ('.strlen($new_PROP_tag_data).' bytes) different length than old PROP tag ('.$oldChunkInfo['PROP']['length'].' bytes)'; - fclose($fp_source); - return false; - } - - if (isset($oldChunkInfo['CONT']['length']) && ($oldChunkInfo['CONT']['length'] == strlen($new_CONT_tag_data))) { - - // new data length is same as old data length - just overwrite - fseek($fp_source, $oldChunkInfo['CONT']['offset'], SEEK_SET); - fwrite($fp_source, $new_CONT_tag_data); - fclose($fp_source); - return true; - - } else { - - if (empty($oldChunkInfo['CONT'])) { - // no existing CONT chunk - $BeforeOffset = $oldChunkInfo['DATA']['offset']; - $AfterOffset = $oldChunkInfo['DATA']['offset']; - } else { - // new data is longer than old data - $BeforeOffset = $oldChunkInfo['CONT']['offset']; - $AfterOffset = $oldChunkInfo['CONT']['offset'] + $oldChunkInfo['CONT']['length']; - } - if ($tempfilename = tempnam(GETID3_TEMP_DIR, 'getID3')) { - if (is_writable($tempfilename) && is_file($tempfilename) && ($fp_temp = fopen($tempfilename, 'wb'))) { - - rewind($fp_source); - fwrite($fp_temp, fread($fp_source, $BeforeOffset)); - fwrite($fp_temp, $new_CONT_tag_data); - fseek($fp_source, $AfterOffset, SEEK_SET); - while ($buffer = fread($fp_source, $this->fread_buffer_size)) { - fwrite($fp_temp, $buffer, strlen($buffer)); - } - fclose($fp_temp); - - if (copy($tempfilename, $this->filename)) { - unlink($tempfilename); - fclose($fp_source); - return true; - } - unlink($tempfilename); - $this->errors[] = 'FAILED: copy('.$tempfilename.', '.$this->filename.')'; - - } else { - $this->errors[] = 'Could not fopen("'.$tempfilename.'", "wb")'; - } - } - fclose($fp_source); - return false; - - } - - } - $this->errors[] = 'Could not fopen("'.$this->filename.'", "r+b")'; - return false; - } - - function GenerateRMFchunk(&$chunks) { - $oldCONTexists = false; - foreach ($chunks as $key => $chunk) { - $chunkNameKeys[$chunk['name']] = $key; - if ($chunk['name'] == 'CONT') { - $oldCONTexists = true; - } - } - $newHeadersCount = $chunks[$chunkNameKeys['.RMF']]['headers_count'] + ($oldCONTexists ? 0 : 1); - - $RMFchunk = "\x00\x00"; // object version - $RMFchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['.RMF']]['file_version'], 4); - $RMFchunk .= getid3_lib::BigEndian2String($newHeadersCount, 4); - - $RMFchunk = '.RMF'.getid3_lib::BigEndian2String(strlen($RMFchunk) + 8, 4).$RMFchunk; // .RMF chunk identifier + chunk length - return $RMFchunk; - } - - function GeneratePROPchunk(&$chunks, &$new_CONT_tag_data) { - $old_CONT_length = 0; - $old_DATA_offset = 0; - $old_INDX_offset = 0; - foreach ($chunks as $key => $chunk) { - $chunkNameKeys[$chunk['name']] = $key; - if ($chunk['name'] == 'CONT') { - $old_CONT_length = $chunk['length']; - } elseif ($chunk['name'] == 'DATA') { - if (!$old_DATA_offset) { - $old_DATA_offset = $chunk['offset']; - } - } elseif ($chunk['name'] == 'INDX') { - if (!$old_INDX_offset) { - $old_INDX_offset = $chunk['offset']; - } - } - } - $CONTdelta = strlen($new_CONT_tag_data) - $old_CONT_length; - - $PROPchunk = "\x00\x00"; // object version - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['max_bit_rate'], 4); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['avg_bit_rate'], 4); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['max_packet_size'], 4); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['avg_packet_size'], 4); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['num_packets'], 4); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['duration'], 4); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['preroll'], 4); - $PROPchunk .= getid3_lib::BigEndian2String(max(0, $old_INDX_offset + $CONTdelta), 4); - $PROPchunk .= getid3_lib::BigEndian2String(max(0, $old_DATA_offset + $CONTdelta), 4); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['num_streams'], 2); - $PROPchunk .= getid3_lib::BigEndian2String($chunks[$chunkNameKeys['PROP']]['flags_raw'], 2); - - $PROPchunk = 'PROP'.getid3_lib::BigEndian2String(strlen($PROPchunk) + 8, 4).$PROPchunk; // PROP chunk identifier + chunk length - return $PROPchunk; - } - - function GenerateCONTchunk() { - foreach ($this->tag_data as $key => $value) { - // limit each value to 0xFFFF bytes - $this->tag_data[$key] = substr($value, 0, 65535); - } - - $CONTchunk = "\x00\x00"; // object version - - $CONTchunk .= getid3_lib::BigEndian2String((!empty($this->tag_data['title']) ? strlen($this->tag_data['title']) : 0), 2); - $CONTchunk .= (!empty($this->tag_data['title']) ? strlen($this->tag_data['title']) : ''); - - $CONTchunk .= getid3_lib::BigEndian2String((!empty($this->tag_data['artist']) ? strlen($this->tag_data['artist']) : 0), 2); - $CONTchunk .= (!empty($this->tag_data['artist']) ? strlen($this->tag_data['artist']) : ''); - - $CONTchunk .= getid3_lib::BigEndian2String((!empty($this->tag_data['copyright']) ? strlen($this->tag_data['copyright']) : 0), 2); - $CONTchunk .= (!empty($this->tag_data['copyright']) ? strlen($this->tag_data['copyright']) : ''); - - $CONTchunk .= getid3_lib::BigEndian2String((!empty($this->tag_data['comment']) ? strlen($this->tag_data['comment']) : 0), 2); - $CONTchunk .= (!empty($this->tag_data['comment']) ? strlen($this->tag_data['comment']) : ''); - - if ($this->paddedlength > (strlen($CONTchunk) + 8)) { - $CONTchunk .= str_repeat("\x00", $this->paddedlength - strlen($CONTchunk) - 8); - } - - $CONTchunk = 'CONT'.getid3_lib::BigEndian2String(strlen($CONTchunk) + 8, 4).$CONTchunk; // CONT chunk identifier + chunk length - - return $CONTchunk; - } - - function RemoveReal() { - // File MUST be writeable - CHMOD(646) at least - if (is_writeable($this->filename) && is_file($this->filename) && ($fp_source = fopen($this->filename, 'r+b'))) { - - // Initialize getID3 engine - $getID3 = new getID3; - $OldThisFileInfo = $getID3->analyze($this->filename); - if (empty($OldThisFileInfo['real']['chunks']) && !empty($OldThisFileInfo['real']['old_ra_header'])) { - $this->errors[] = 'Cannot remove Real tags from old-style file format'; - fclose($fp_source); - return false; - } - - if (empty($OldThisFileInfo['real']['chunks'])) { - $this->errors[] = 'Cannot remove Real tags because cannot find DATA chunk in file'; - fclose($fp_source); - return false; - } - foreach ($OldThisFileInfo['real']['chunks'] as $chunknumber => $chunkarray) { - $oldChunkInfo[$chunkarray['name']] = $chunkarray; - } - - if (empty($oldChunkInfo['CONT'])) { - // no existing CONT chunk - fclose($fp_source); - return true; - } - - $BeforeOffset = $oldChunkInfo['CONT']['offset']; - $AfterOffset = $oldChunkInfo['CONT']['offset'] + $oldChunkInfo['CONT']['length']; - if ($tempfilename = tempnam(GETID3_TEMP_DIR, 'getID3')) { - if (is_writable($tempfilename) && is_file($tempfilename) && ($fp_temp = fopen($tempfilename, 'wb'))) { - - rewind($fp_source); - fwrite($fp_temp, fread($fp_source, $BeforeOffset)); - fseek($fp_source, $AfterOffset, SEEK_SET); - while ($buffer = fread($fp_source, $this->fread_buffer_size)) { - fwrite($fp_temp, $buffer, strlen($buffer)); - } - fclose($fp_temp); - - if (copy($tempfilename, $this->filename)) { - unlink($tempfilename); - fclose($fp_source); - return true; - } - unlink($tempfilename); - $this->errors[] = 'FAILED: copy('.$tempfilename.', '.$this->filename.')'; - - } else { - $this->errors[] = 'Could not fopen("'.$tempfilename.'", "wb")'; - } - } - fclose($fp_source); - return false; - } - $this->errors[] = 'Could not fopen("'.$this->filename.'", "r+b")'; - return false; - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/getid3/write.vorbiscomment.php b/3rdparty/getid3/write.vorbiscomment.php deleted file mode 100644 index ac8dc693430a55a55081e3b132774c467563c2d3..0000000000000000000000000000000000000000 --- a/3rdparty/getid3/write.vorbiscomment.php +++ /dev/null @@ -1,121 +0,0 @@ - // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// See readme.txt for more details // -///////////////////////////////////////////////////////////////// -// // -// write.vorbiscomment.php // -// module for writing VorbisComment tags // -// dependencies: /helperapps/vorbiscomment.exe // -// /// -///////////////////////////////////////////////////////////////// - - -class getid3_write_vorbiscomment -{ - - var $filename; - var $tag_data; - var $warnings = array(); // any non-critical errors will be stored here - var $errors = array(); // any critical errors will be stored here - - function getid3_write_vorbiscomment() { - return true; - } - - function WriteVorbisComment() { - - if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) { - $this->errors[] = 'PHP running in Safe Mode (backtick operator not available) - cannot call vorbiscomment, tags not written'; - return false; - } - - // Create file with new comments - $tempcommentsfilename = tempnam(GETID3_TEMP_DIR, 'getID3'); - if (is_writable($tempcommentsfilename) && is_file($tempcommentsfilename) && ($fpcomments = fopen($tempcommentsfilename, 'wb'))) { - - foreach ($this->tag_data as $key => $value) { - foreach ($value as $commentdata) { - fwrite($fpcomments, $this->CleanVorbisCommentName($key).'='.$commentdata."\n"); - } - } - fclose($fpcomments); - - } else { - $this->errors[] = 'failed to open temporary tags file "'.$tempcommentsfilename.'", tags not written'; - return false; - } - - $oldignoreuserabort = ignore_user_abort(true); - if (GETID3_OS_ISWINDOWS) { - - if (file_exists(GETID3_HELPERAPPSDIR.'vorbiscomment.exe')) { - //$commandline = '"'.GETID3_HELPERAPPSDIR.'vorbiscomment.exe" -w --raw -c "'.$tempcommentsfilename.'" "'.str_replace('/', '\\', $this->filename).'"'; - // vorbiscomment works fine if you copy-paste the above commandline into a command prompt, - // but refuses to work with `backtick` if there are "doublequotes" present around BOTH - // the metaflac pathname and the target filename. For whatever reason...?? - // The solution is simply ensure that the metaflac pathname has no spaces, - // and therefore does not need to be quoted - - // On top of that, if error messages are not always captured properly under Windows - // To at least see if there was a problem, compare file modification timestamps before and after writing - clearstatcache(); - $timestampbeforewriting = filemtime($this->filename); - - $commandline = GETID3_HELPERAPPSDIR.'vorbiscomment.exe -w --raw -c "'.$tempcommentsfilename.'" "'.$this->filename.'" 2>&1'; - $VorbiscommentError = `$commandline`; - - if (empty($VorbiscommentError)) { - clearstatcache(); - if ($timestampbeforewriting == filemtime($this->filename)) { - $VorbiscommentError = 'File modification timestamp has not changed - it looks like the tags were not written'; - } - } - } else { - $VorbiscommentError = 'vorbiscomment.exe not found in '.GETID3_HELPERAPPSDIR; - } - - } else { - - $commandline = 'vorbiscomment -w --raw -c "'.$tempcommentsfilename.'" "'.$this->filename.'" 2>&1'; - $VorbiscommentError = `$commandline`; - - } - - // Remove temporary comments file - unlink($tempcommentsfilename); - ignore_user_abort($oldignoreuserabort); - - if (!empty($VorbiscommentError)) { - - $this->errors[] = 'system call to vorbiscomment failed with message: '."\n\n".$VorbiscommentError; - return false; - - } - - return true; - } - - function DeleteVorbisComment() { - $this->tag_data = array(array()); - return $this->WriteVorbisComment(); - } - - function CleanVorbisCommentName($originalcommentname) { - // A case-insensitive field name that may consist of ASCII 0x20 through 0x7D, 0x3D ('=') excluded. - // ASCII 0x41 through 0x5A inclusive (A-Z) is to be considered equivalent to ASCII 0x61 through - // 0x7A inclusive (a-z). - - // replace invalid chars with a space, return uppercase text - // Thanks Chris Bolt for improving this function - // note: *reg_replace() replaces nulls with empty string (not space) - return strtoupper(preg_replace('#[^ -<>-}]#', ' ', str_replace("\x00", ' ', $originalcommentname))); - - } - -} - -?> \ No newline at end of file diff --git a/3rdparty/js/chosen/LICENSE.md b/3rdparty/js/chosen/LICENSE.md deleted file mode 100644 index 80109bba80284211160f8c23f2c0d84cade96c34..0000000000000000000000000000000000000000 --- a/3rdparty/js/chosen/LICENSE.md +++ /dev/null @@ -1,24 +0,0 @@ -# Chosen, a Select Box Enhancer for jQuery and Protoype -## by Patrick Filler for [Harvest](http://getharvest.com) - -Available for use under the [MIT License](http://en.wikipedia.org/wiki/MIT_License) - -Copyright (c) 2011 by Harvest - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/3rdparty/js/chosen/README.md b/3rdparty/js/chosen/README.md deleted file mode 100644 index cee8ed1cc08839b0a8f05bd3547bf879fc190e7d..0000000000000000000000000000000000000000 --- a/3rdparty/js/chosen/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Chosen - -Chosen is a library for making long, unwieldy select boxes more user friendly. - -- jQuery support: 1.4+ -- Prototype support: 1.7+ - -For documentation, usage, and examples, see: -http://harvesthq.github.com/chosen - -### Contributing to Chosen - -Contributions and pull requests are very welcome. Please follow these guidelines when submitting new code. - -1. Make all changes in Coffeescript files, **not** JavaScript files. -2. For feature changes, update both jQuery *and* Prototype versions -3. Use 'cake build' to generate Chosen's JavaScript file and minified version. -4. Don't touch the VERSION file -5. Submit a Pull Request using GitHub. - -### Using CoffeeScript & Cake - -First, make sure you have the proper CoffeeScript / Cake set-up in place. - -1. Install Coffeescript: the [CoffeeScript documentation](http://jashkenas.github.com/coffee-script/) provides easy-to-follow instructions. -2. Install UglifyJS: npm -g install uglify-js -3. Verify that your $NODE_PATH is properly configured using echo $NODE_PATH - -Once you're configured, building the JavasScript from the command line is easy: - - cake build # build Chosen from source - cake watch # watch coffee/ for changes and build Chosen - -If you're interested, you can find the recipes in Cakefile. - - -### Chosen Credits - -- Built by [Harvest](http://www.getharvest.com/) -- Concept and development by [Patrick Filler](http://www.patrickfiller.com/) -- Design and CSS by [Matthew Lettini](http://matthewlettini.com/) - -### Notable Forks - -- [Chosen for MooTools](https://github.com/julesjanssen/chosen), by Jules Janssen -- [Chosen Drupal 7 Module](https://github.com/Polzme/chosen), by Pol Dell'Aiera \ No newline at end of file diff --git a/3rdparty/js/chosen/VERSION b/3rdparty/js/chosen/VERSION deleted file mode 100644 index b5d0ec558fd629a6145502703d6a8db76d5fd7d0..0000000000000000000000000000000000000000 --- a/3rdparty/js/chosen/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.9.8 \ No newline at end of file diff --git a/3rdparty/js/chosen/chosen.jquery.js b/3rdparty/js/chosen/chosen.jquery.js deleted file mode 100755 index d1edb08787cc6d2169362b8f80212022727d9a94..0000000000000000000000000000000000000000 --- a/3rdparty/js/chosen/chosen.jquery.js +++ /dev/null @@ -1,952 +0,0 @@ -// Chosen, a Select Box Enhancer for jQuery and Protoype -// by Patrick Filler for Harvest, http://getharvest.com -// -// Version 0.9.8 -// Full source at https://github.com/harvesthq/chosen -// Copyright (c) 2011 Harvest http://getharvest.com - -// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md -// This file is generated by `cake build`, do not edit it by hand. -(function() { - var SelectParser; - - SelectParser = (function() { - - function SelectParser() { - this.options_index = 0; - this.parsed = []; - } - - SelectParser.prototype.add_node = function(child) { - if (child.nodeName === "OPTGROUP") { - return this.add_group(child); - } else { - return this.add_option(child); - } - }; - - SelectParser.prototype.add_group = function(group) { - var group_position, option, _i, _len, _ref, _results; - group_position = this.parsed.length; - this.parsed.push({ - array_index: group_position, - group: true, - label: group.label, - children: 0, - disabled: group.disabled - }); - _ref = group.childNodes; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - _results.push(this.add_option(option, group_position, group.disabled)); - } - return _results; - }; - - SelectParser.prototype.add_option = function(option, group_position, group_disabled) { - if (option.nodeName === "OPTION") { - if (option.text !== "") { - if (group_position != null) this.parsed[group_position].children += 1; - this.parsed.push({ - array_index: this.parsed.length, - options_index: this.options_index, - value: option.value, - text: option.text, - html: option.innerHTML, - selected: option.selected, - disabled: group_disabled === true ? group_disabled : option.disabled, - group_array_index: group_position, - classes: option.className, - style: option.style.cssText - }); - } else { - this.parsed.push({ - array_index: this.parsed.length, - options_index: this.options_index, - empty: true - }); - } - return this.options_index += 1; - } - }; - - return SelectParser; - - })(); - - SelectParser.select_to_array = function(select) { - var child, parser, _i, _len, _ref; - parser = new SelectParser(); - _ref = select.childNodes; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - parser.add_node(child); - } - return parser.parsed; - }; - - this.SelectParser = SelectParser; - -}).call(this); - -/* -Chosen source: generate output using 'cake build' -Copyright (c) 2011 by Harvest -*/ - -(function() { - var AbstractChosen, root; - - root = this; - - AbstractChosen = (function() { - - function AbstractChosen(form_field, options) { - this.form_field = form_field; - this.options = options != null ? options : {}; - this.set_default_values(); - this.is_multiple = this.form_field.multiple; - this.default_text_default = this.is_multiple ? "Select Some Options" : "Select an Option"; - this.setup(); - this.set_up_html(); - this.register_observers(); - this.finish_setup(); - } - - AbstractChosen.prototype.set_default_values = function() { - var _this = this; - this.click_test_action = function(evt) { - return _this.test_active_click(evt); - }; - this.activate_action = function(evt) { - return _this.activate_field(evt); - }; - this.active_field = false; - this.mouse_on_container = false; - this.results_showing = false; - this.result_highlighted = null; - this.result_single_selected = null; - this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; - this.disable_search_threshold = this.options.disable_search_threshold || 0; - this.search_contains = this.options.search_contains || false; - this.choices = 0; - return this.results_none_found = this.options.no_results_text || "No results match"; - }; - - AbstractChosen.prototype.mouse_enter = function() { - return this.mouse_on_container = true; - }; - - AbstractChosen.prototype.mouse_leave = function() { - return this.mouse_on_container = false; - }; - - AbstractChosen.prototype.input_focus = function(evt) { - var _this = this; - if (!this.active_field) { - return setTimeout((function() { - return _this.container_mousedown(); - }), 50); - } - }; - - AbstractChosen.prototype.input_blur = function(evt) { - var _this = this; - if (!this.mouse_on_container) { - this.active_field = false; - return setTimeout((function() { - return _this.blur_test(); - }), 100); - } - }; - - AbstractChosen.prototype.result_add_option = function(option) { - var classes, style; - if (!option.disabled) { - option.dom_id = this.container_id + "_o_" + option.array_index; - classes = option.selected && this.is_multiple ? [] : ["active-result"]; - if (option.selected) classes.push("result-selected"); - if (option.group_array_index != null) classes.push("group-option"); - if (option.classes !== "") classes.push(option.classes); - style = option.style.cssText !== "" ? " style=\"" + option.style + "\"" : ""; - return '
  • ' + option.html + '
  • '; - } else { - return ""; - } - }; - - AbstractChosen.prototype.results_update_field = function() { - this.result_clear_highlight(); - this.result_single_selected = null; - return this.results_build(); - }; - - AbstractChosen.prototype.results_toggle = function() { - if (this.results_showing) { - return this.results_hide(); - } else { - return this.results_show(); - } - }; - - AbstractChosen.prototype.results_search = function(evt) { - if (this.results_showing) { - return this.winnow_results(); - } else { - return this.results_show(); - } - }; - - AbstractChosen.prototype.keyup_checker = function(evt) { - var stroke, _ref; - stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; - this.search_field_scale(); - switch (stroke) { - case 8: - if (this.is_multiple && this.backstroke_length < 1 && this.choices > 0) { - return this.keydown_backstroke(); - } else if (!this.pending_backstroke) { - this.result_clear_highlight(); - return this.results_search(); - } - break; - case 13: - evt.preventDefault(); - if (this.results_showing) return this.result_select(evt); - break; - case 27: - if (this.results_showing) this.results_hide(); - return true; - case 9: - case 38: - case 40: - case 16: - case 91: - case 17: - break; - default: - return this.results_search(); - } - }; - - AbstractChosen.prototype.generate_field_id = function() { - var new_id; - new_id = this.generate_random_id(); - this.form_field.id = new_id; - return new_id; - }; - - AbstractChosen.prototype.generate_random_char = function() { - var chars, newchar, rand; - chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ"; - rand = Math.floor(Math.random() * chars.length); - return newchar = chars.substring(rand, rand + 1); - }; - - return AbstractChosen; - - })(); - - root.AbstractChosen = AbstractChosen; - -}).call(this); - -/* -Chosen source: generate output using 'cake build' -Copyright (c) 2011 by Harvest -*/ - -(function() { - var $, Chosen, get_side_border_padding, root, - __hasProp = Object.prototype.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }; - - root = this; - - $ = jQuery; - - $.fn.extend({ - chosen: function(options) { - if ($.browser.msie && ($.browser.version === "6.0" || $.browser.version === "7.0")) { - return this; - } - return $(this).each(function(input_field) { - if (!($(this)).hasClass("chzn-done")) return new Chosen(this, options); - }); - } - }); - - Chosen = (function(_super) { - - __extends(Chosen, _super); - - function Chosen() { - Chosen.__super__.constructor.apply(this, arguments); - } - - Chosen.prototype.setup = function() { - this.form_field_jq = $(this.form_field); - return this.is_rtl = this.form_field_jq.hasClass("chzn-rtl"); - }; - - Chosen.prototype.finish_setup = function() { - return this.form_field_jq.addClass("chzn-done"); - }; - - Chosen.prototype.set_up_html = function() { - var container_div, dd_top, dd_width, sf_width; - this.container_id = this.form_field.id.length ? this.form_field.id.replace(/(:|\.)/g, '_') : this.generate_field_id(); - this.container_id += "_chzn"; - this.f_width = this.form_field_jq.outerWidth(); - this.default_text = this.form_field_jq.data('placeholder') ? this.form_field_jq.data('placeholder') : this.default_text_default; - container_div = $("
    ", { - id: this.container_id, - "class": "chzn-container" + (this.is_rtl ? ' chzn-rtl' : ''), - style: 'width: ' + this.f_width + 'px;' - }); - if (this.is_multiple) { - container_div.html('
      '); - } else { - container_div.html('' + this.default_text + '
        '); - } - this.form_field_jq.hide().after(container_div); - this.container = $('#' + this.container_id); - this.container.addClass("chzn-container-" + (this.is_multiple ? "multi" : "single")); - this.dropdown = this.container.find('div.chzn-drop').first(); - dd_top = this.container.height(); - dd_width = this.f_width - get_side_border_padding(this.dropdown); - this.dropdown.css({ - "width": dd_width + "px", - "top": dd_top + "px" - }); - this.search_field = this.container.find('input').first(); - this.search_results = this.container.find('ul.chzn-results').first(); - this.search_field_scale(); - this.search_no_results = this.container.find('li.no-results').first(); - if (this.is_multiple) { - this.search_choices = this.container.find('ul.chzn-choices').first(); - this.search_container = this.container.find('li.search-field').first(); - } else { - this.search_container = this.container.find('div.chzn-search').first(); - this.selected_item = this.container.find('.chzn-single').first(); - sf_width = dd_width - get_side_border_padding(this.search_container) - get_side_border_padding(this.search_field); - this.search_field.css({ - "width": sf_width + "px" - }); - } - this.results_build(); - this.set_tab_index(); - return this.form_field_jq.trigger("liszt:ready", { - chosen: this - }); - }; - - Chosen.prototype.register_observers = function() { - var _this = this; - this.container.mousedown(function(evt) { - return _this.container_mousedown(evt); - }); - this.container.mouseup(function(evt) { - return _this.container_mouseup(evt); - }); - this.container.mouseenter(function(evt) { - return _this.mouse_enter(evt); - }); - this.container.mouseleave(function(evt) { - return _this.mouse_leave(evt); - }); - this.search_results.mouseup(function(evt) { - return _this.search_results_mouseup(evt); - }); - this.search_results.mouseover(function(evt) { - return _this.search_results_mouseover(evt); - }); - this.search_results.mouseout(function(evt) { - return _this.search_results_mouseout(evt); - }); - this.form_field_jq.bind("liszt:updated", function(evt) { - return _this.results_update_field(evt); - }); - this.search_field.blur(function(evt) { - return _this.input_blur(evt); - }); - this.search_field.keyup(function(evt) { - return _this.keyup_checker(evt); - }); - this.search_field.keydown(function(evt) { - return _this.keydown_checker(evt); - }); - if (this.is_multiple) { - this.search_choices.click(function(evt) { - return _this.choices_click(evt); - }); - return this.search_field.focus(function(evt) { - return _this.input_focus(evt); - }); - } else { - return this.container.click(function(evt) { - return evt.preventDefault(); - }); - } - }; - - Chosen.prototype.search_field_disabled = function() { - this.is_disabled = this.form_field_jq[0].disabled; - if (this.is_disabled) { - this.container.addClass('chzn-disabled'); - this.search_field[0].disabled = true; - if (!this.is_multiple) { - this.selected_item.unbind("focus", this.activate_action); - } - return this.close_field(); - } else { - this.container.removeClass('chzn-disabled'); - this.search_field[0].disabled = false; - if (!this.is_multiple) { - return this.selected_item.bind("focus", this.activate_action); - } - } - }; - - Chosen.prototype.container_mousedown = function(evt) { - var target_closelink; - if (!this.is_disabled) { - target_closelink = evt != null ? ($(evt.target)).hasClass("search-choice-close") : false; - if (evt && evt.type === "mousedown" && !this.results_showing) { - evt.stopPropagation(); - } - if (!this.pending_destroy_click && !target_closelink) { - if (!this.active_field) { - if (this.is_multiple) this.search_field.val(""); - $(document).click(this.click_test_action); - this.results_show(); - } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chzn-single").length)) { - evt.preventDefault(); - this.results_toggle(); - } - return this.activate_field(); - } else { - return this.pending_destroy_click = false; - } - } - }; - - Chosen.prototype.container_mouseup = function(evt) { - if (evt.target.nodeName === "ABBR") return this.results_reset(evt); - }; - - Chosen.prototype.blur_test = function(evt) { - if (!this.active_field && this.container.hasClass("chzn-container-active")) { - return this.close_field(); - } - }; - - Chosen.prototype.close_field = function() { - $(document).unbind("click", this.click_test_action); - if (!this.is_multiple) { - this.selected_item.attr("tabindex", this.search_field.attr("tabindex")); - this.search_field.attr("tabindex", -1); - } - this.active_field = false; - this.results_hide(); - this.container.removeClass("chzn-container-active"); - this.winnow_results_clear(); - this.clear_backstroke(); - this.show_search_field_default(); - return this.search_field_scale(); - }; - - Chosen.prototype.activate_field = function() { - if (!this.is_multiple && !this.active_field) { - this.search_field.attr("tabindex", this.selected_item.attr("tabindex")); - this.selected_item.attr("tabindex", -1); - } - this.container.addClass("chzn-container-active"); - this.active_field = true; - this.search_field.val(this.search_field.val()); - return this.search_field.focus(); - }; - - Chosen.prototype.test_active_click = function(evt) { - if ($(evt.target).parents('#' + this.container_id).length) { - return this.active_field = true; - } else { - return this.close_field(); - } - }; - - Chosen.prototype.results_build = function() { - var content, data, _i, _len, _ref; - this.parsing = true; - this.results_data = root.SelectParser.select_to_array(this.form_field); - if (this.is_multiple && this.choices > 0) { - this.search_choices.find("li.search-choice").remove(); - this.choices = 0; - } else if (!this.is_multiple) { - this.selected_item.find("span").text(this.default_text); - if (this.form_field.options.length <= this.disable_search_threshold) { - this.container.addClass("chzn-container-single-nosearch"); - } else { - this.container.removeClass("chzn-container-single-nosearch"); - } - } - content = ''; - _ref = this.results_data; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - data = _ref[_i]; - if (data.group) { - content += this.result_add_group(data); - } else if (!data.empty) { - content += this.result_add_option(data); - if (data.selected && this.is_multiple) { - this.choice_build(data); - } else if (data.selected && !this.is_multiple) { - this.selected_item.removeClass("chzn-default").find("span").text(data.text); - if (this.allow_single_deselect) this.single_deselect_control_build(); - } - } - } - this.search_field_disabled(); - this.show_search_field_default(); - this.search_field_scale(); - this.search_results.html(content); - return this.parsing = false; - }; - - Chosen.prototype.result_add_group = function(group) { - if (!group.disabled) { - group.dom_id = this.container_id + "_g_" + group.array_index; - return '
      • ' + $("
        ").text(group.label).html() + '
      • '; - } else { - return ""; - } - }; - - Chosen.prototype.result_do_highlight = function(el) { - var high_bottom, high_top, maxHeight, visible_bottom, visible_top; - if (el.length) { - this.result_clear_highlight(); - this.result_highlight = el; - this.result_highlight.addClass("highlighted"); - maxHeight = parseInt(this.search_results.css("maxHeight"), 10); - visible_top = this.search_results.scrollTop(); - visible_bottom = maxHeight + visible_top; - high_top = this.result_highlight.position().top + this.search_results.scrollTop(); - high_bottom = high_top + this.result_highlight.outerHeight(); - if (high_bottom >= visible_bottom) { - return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0); - } else if (high_top < visible_top) { - return this.search_results.scrollTop(high_top); - } - } - }; - - Chosen.prototype.result_clear_highlight = function() { - if (this.result_highlight) this.result_highlight.removeClass("highlighted"); - return this.result_highlight = null; - }; - - Chosen.prototype.results_show = function() { - var dd_top; - if (!this.is_multiple) { - this.selected_item.addClass("chzn-single-with-drop"); - if (this.result_single_selected) { - this.result_do_highlight(this.result_single_selected); - } - } - dd_top = this.is_multiple ? this.container.height() : this.container.height() - 1; - this.dropdown.css({ - "top": dd_top + "px", - "left": 0 - }); - this.results_showing = true; - this.search_field.focus(); - this.search_field.val(this.search_field.val()); - return this.winnow_results(); - }; - - Chosen.prototype.results_hide = function() { - if (!this.is_multiple) { - this.selected_item.removeClass("chzn-single-with-drop"); - } - this.result_clear_highlight(); - this.dropdown.css({ - "left": "-9000px" - }); - return this.results_showing = false; - }; - - Chosen.prototype.set_tab_index = function(el) { - var ti; - if (this.form_field_jq.attr("tabindex")) { - ti = this.form_field_jq.attr("tabindex"); - this.form_field_jq.attr("tabindex", -1); - if (this.is_multiple) { - return this.search_field.attr("tabindex", ti); - } else { - this.selected_item.attr("tabindex", ti); - return this.search_field.attr("tabindex", -1); - } - } - }; - - Chosen.prototype.show_search_field_default = function() { - if (this.is_multiple && this.choices < 1 && !this.active_field) { - this.search_field.val(this.default_text); - return this.search_field.addClass("default"); - } else { - this.search_field.val(""); - return this.search_field.removeClass("default"); - } - }; - - Chosen.prototype.search_results_mouseup = function(evt) { - var target; - target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); - if (target.length) { - this.result_highlight = target; - return this.result_select(evt); - } - }; - - Chosen.prototype.search_results_mouseover = function(evt) { - var target; - target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); - if (target) return this.result_do_highlight(target); - }; - - Chosen.prototype.search_results_mouseout = function(evt) { - if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { - return this.result_clear_highlight(); - } - }; - - Chosen.prototype.choices_click = function(evt) { - evt.preventDefault(); - if (this.active_field && !($(evt.target).hasClass("search-choice" || $(evt.target).parents('.search-choice').first)) && !this.results_showing) { - return this.results_show(); - } - }; - - Chosen.prototype.choice_build = function(item) { - var choice_id, link, - _this = this; - choice_id = this.container_id + "_c_" + item.array_index; - this.choices += 1; - this.search_container.before('
      • ' + item.html + '
      • '); - link = $('#' + choice_id).find("a").first(); - return link.click(function(evt) { - return _this.choice_destroy_link_click(evt); - }); - }; - - Chosen.prototype.choice_destroy_link_click = function(evt) { - evt.preventDefault(); - if (!this.is_disabled) { - this.pending_destroy_click = true; - return this.choice_destroy($(evt.target)); - } else { - return evt.stopPropagation; - } - }; - - Chosen.prototype.choice_destroy = function(link) { - this.choices -= 1; - this.show_search_field_default(); - if (this.is_multiple && this.choices > 0 && this.search_field.val().length < 1) { - this.results_hide(); - } - this.result_deselect(link.attr("rel")); - return link.parents('li').first().remove(); - }; - - Chosen.prototype.results_reset = function(evt) { - this.form_field.options[0].selected = true; - this.selected_item.find("span").text(this.default_text); - if (!this.is_multiple) this.selected_item.addClass("chzn-default"); - this.show_search_field_default(); - $(evt.target).remove(); - this.form_field_jq.trigger("change"); - if (this.active_field) return this.results_hide(); - }; - - Chosen.prototype.result_select = function(evt) { - var high, high_id, item, position; - if (this.result_highlight) { - high = this.result_highlight; - high_id = high.attr("id"); - this.result_clear_highlight(); - if (this.is_multiple) { - this.result_deactivate(high); - } else { - this.search_results.find(".result-selected").removeClass("result-selected"); - this.result_single_selected = high; - this.selected_item.removeClass("chzn-default"); - } - high.addClass("result-selected"); - position = high_id.substr(high_id.lastIndexOf("_") + 1); - item = this.results_data[position]; - item.selected = true; - this.form_field.options[item.options_index].selected = true; - if (this.is_multiple) { - this.choice_build(item); - } else { - this.selected_item.find("span").first().text(item.text); - if (this.allow_single_deselect) this.single_deselect_control_build(); - } - if (!(evt.metaKey && this.is_multiple)) this.results_hide(); - this.search_field.val(""); - this.form_field_jq.trigger("change"); - return this.search_field_scale(); - } - }; - - Chosen.prototype.result_activate = function(el) { - return el.addClass("active-result"); - }; - - Chosen.prototype.result_deactivate = function(el) { - return el.removeClass("active-result"); - }; - - Chosen.prototype.result_deselect = function(pos) { - var result, result_data; - result_data = this.results_data[pos]; - result_data.selected = false; - this.form_field.options[result_data.options_index].selected = false; - result = $("#" + this.container_id + "_o_" + pos); - result.removeClass("result-selected").addClass("active-result").show(); - this.result_clear_highlight(); - this.winnow_results(); - this.form_field_jq.trigger("change"); - return this.search_field_scale(); - }; - - Chosen.prototype.single_deselect_control_build = function() { - if (this.allow_single_deselect && this.selected_item.find("abbr").length < 1) { - return this.selected_item.find("span").first().after(""); - } - }; - - Chosen.prototype.winnow_results = function() { - var found, option, part, parts, regex, regexAnchor, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len2, _ref; - this.no_results_clear(); - results = 0; - searchText = this.search_field.val() === this.default_text ? "" : $('
        ').text($.trim(this.search_field.val())).html(); - regexAnchor = this.search_contains ? "" : "^"; - regex = new RegExp(regexAnchor + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); - zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); - _ref = this.results_data; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - if (!option.disabled && !option.empty) { - if (option.group) { - $('#' + option.dom_id).css('display', 'none'); - } else if (!(this.is_multiple && option.selected)) { - found = false; - result_id = option.dom_id; - result = $("#" + result_id); - if (regex.test(option.html)) { - found = true; - results += 1; - } else if (option.html.indexOf(" ") >= 0 || option.html.indexOf("[") === 0) { - parts = option.html.replace(/\[|\]/g, "").split(" "); - if (parts.length) { - for (_j = 0, _len2 = parts.length; _j < _len2; _j++) { - part = parts[_j]; - if (regex.test(part)) { - found = true; - results += 1; - } - } - } - } - if (found) { - if (searchText.length) { - startpos = option.html.search(zregex); - text = option.html.substr(0, startpos + searchText.length) + '' + option.html.substr(startpos + searchText.length); - text = text.substr(0, startpos) + '' + text.substr(startpos); - } else { - text = option.html; - } - result.html(text); - this.result_activate(result); - if (option.group_array_index != null) { - $("#" + this.results_data[option.group_array_index].dom_id).css('display', 'list-item'); - } - } else { - if (this.result_highlight && result_id === this.result_highlight.attr('id')) { - this.result_clear_highlight(); - } - this.result_deactivate(result); - } - } - } - } - if (results < 1 && searchText.length) { - return this.no_results(searchText); - } else { - return this.winnow_results_set_highlight(); - } - }; - - Chosen.prototype.winnow_results_clear = function() { - var li, lis, _i, _len, _results; - this.search_field.val(""); - lis = this.search_results.find("li"); - _results = []; - for (_i = 0, _len = lis.length; _i < _len; _i++) { - li = lis[_i]; - li = $(li); - if (li.hasClass("group-result")) { - _results.push(li.css('display', 'auto')); - } else if (!this.is_multiple || !li.hasClass("result-selected")) { - _results.push(this.result_activate(li)); - } else { - _results.push(void 0); - } - } - return _results; - }; - - Chosen.prototype.winnow_results_set_highlight = function() { - var do_high, selected_results; - if (!this.result_highlight) { - selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; - do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); - if (do_high != null) return this.result_do_highlight(do_high); - } - }; - - Chosen.prototype.no_results = function(terms) { - var no_results_html; - no_results_html = $('
      • ' + this.results_none_found + ' ""
      • '); - no_results_html.find("span").first().html(terms); - return this.search_results.append(no_results_html); - }; - - Chosen.prototype.no_results_clear = function() { - return this.search_results.find(".no-results").remove(); - }; - - Chosen.prototype.keydown_arrow = function() { - var first_active, next_sib; - if (!this.result_highlight) { - first_active = this.search_results.find("li.active-result").first(); - if (first_active) this.result_do_highlight($(first_active)); - } else if (this.results_showing) { - next_sib = this.result_highlight.nextAll("li.active-result").first(); - if (next_sib) this.result_do_highlight(next_sib); - } - if (!this.results_showing) return this.results_show(); - }; - - Chosen.prototype.keyup_arrow = function() { - var prev_sibs; - if (!this.results_showing && !this.is_multiple) { - return this.results_show(); - } else if (this.result_highlight) { - prev_sibs = this.result_highlight.prevAll("li.active-result"); - if (prev_sibs.length) { - return this.result_do_highlight(prev_sibs.first()); - } else { - if (this.choices > 0) this.results_hide(); - return this.result_clear_highlight(); - } - } - }; - - Chosen.prototype.keydown_backstroke = function() { - if (this.pending_backstroke) { - this.choice_destroy(this.pending_backstroke.find("a").first()); - return this.clear_backstroke(); - } else { - this.pending_backstroke = this.search_container.siblings("li.search-choice").last(); - return this.pending_backstroke.addClass("search-choice-focus"); - } - }; - - Chosen.prototype.clear_backstroke = function() { - if (this.pending_backstroke) { - this.pending_backstroke.removeClass("search-choice-focus"); - } - return this.pending_backstroke = null; - }; - - Chosen.prototype.keydown_checker = function(evt) { - var stroke, _ref; - stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; - this.search_field_scale(); - if (stroke !== 8 && this.pending_backstroke) this.clear_backstroke(); - switch (stroke) { - case 8: - this.backstroke_length = this.search_field.val().length; - break; - case 9: - if (this.results_showing && !this.is_multiple) this.result_select(evt); - this.mouse_on_container = false; - break; - case 13: - evt.preventDefault(); - break; - case 38: - evt.preventDefault(); - this.keyup_arrow(); - break; - case 40: - this.keydown_arrow(); - break; - } - }; - - Chosen.prototype.search_field_scale = function() { - var dd_top, div, h, style, style_block, styles, w, _i, _len; - if (this.is_multiple) { - h = 0; - w = 0; - style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; - styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; - for (_i = 0, _len = styles.length; _i < _len; _i++) { - style = styles[_i]; - style_block += style + ":" + this.search_field.css(style) + ";"; - } - div = $('
        ', { - 'style': style_block - }); - div.text(this.search_field.val()); - $('body').append(div); - w = div.width() + 25; - div.remove(); - if (w > this.f_width - 10) w = this.f_width - 10; - this.search_field.css({ - 'width': w + 'px' - }); - dd_top = this.container.height(); - return this.dropdown.css({ - "top": dd_top + "px" - }); - } - }; - - Chosen.prototype.generate_random_id = function() { - var string; - string = "sel" + this.generate_random_char() + this.generate_random_char() + this.generate_random_char(); - while ($("#" + string).length > 0) { - string += this.generate_random_char(); - } - return string; - }; - - return Chosen; - - })(AbstractChosen); - - get_side_border_padding = function(elmt) { - var side_border_padding; - return side_border_padding = elmt.outerWidth() - elmt.width(); - }; - - root.get_side_border_padding = get_side_border_padding; - -}).call(this); diff --git a/3rdparty/js/chosen/chosen.jquery.min.js b/3rdparty/js/chosen/chosen.jquery.min.js deleted file mode 100755 index 9ba164cc47a9a1fec6c3ce8930bbd12323bc8457..0000000000000000000000000000000000000000 --- a/3rdparty/js/chosen/chosen.jquery.min.js +++ /dev/null @@ -1,10 +0,0 @@ -// Chosen, a Select Box Enhancer for jQuery and Protoype -// by Patrick Filler for Harvest, http://getharvest.com -// -// Version 0.9.8 -// Full source at https://github.com/harvesthq/chosen -// Copyright (c) 2011 Harvest http://getharvest.com - -// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md -// This file is generated by `cake build`, do not edit it by hand. -((function(){var a;a=function(){function a(){this.options_index=0,this.parsed=[]}return a.prototype.add_node=function(a){return a.nodeName==="OPTGROUP"?this.add_group(a):this.add_option(a)},a.prototype.add_group=function(a){var b,c,d,e,f,g;b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:a.label,children:0,disabled:a.disabled}),f=a.childNodes,g=[];for(d=0,e=f.length;d"+a.html+"")},a.prototype.results_update_field=function(){return this.result_clear_highlight(),this.result_single_selected=null,this.results_build()},a.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},a.prototype.results_search=function(a){return this.results_showing?this.winnow_results():this.results_show()},a.prototype.keyup_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode,this.search_field_scale();switch(b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:a.preventDefault();if(this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},a.prototype.generate_field_id=function(){var a;return a=this.generate_random_id(),this.form_field.id=a,a},a.prototype.generate_random_char=function(){var a,b,c;return a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ",c=Math.floor(Math.random()*a.length),b=a.substring(c,c+1)},a}(),b.AbstractChosen=a}.call(this),function(){var a,b,c,d,e=Object.prototype.hasOwnProperty,f=function(a,b){function d(){this.constructor=a}for(var c in b)e.call(b,c)&&(a[c]=b[c]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};d=this,a=jQuery,a.fn.extend({chosen:function(c){return!a.browser.msie||a.browser.version!=="6.0"&&a.browser.version!=="7.0"?a(this).each(function(d){if(!a(this).hasClass("chzn-done"))return new b(this,c)}):this}}),b=function(b){function e(){e.__super__.constructor.apply(this,arguments)}return f(e,b),e.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.is_rtl=this.form_field_jq.hasClass("chzn-rtl")},e.prototype.finish_setup=function(){return this.form_field_jq.addClass("chzn-done")},e.prototype.set_up_html=function(){var b,d,e,f;return this.container_id=this.form_field.id.length?this.form_field.id.replace(/(:|\.)/g,"_"):this.generate_field_id(),this.container_id+="_chzn",this.f_width=this.form_field_jq.outerWidth(),this.default_text=this.form_field_jq.data("placeholder")?this.form_field_jq.data("placeholder"):this.default_text_default,b=a("
        ",{id:this.container_id,"class":"chzn-container"+(this.is_rtl?" chzn-rtl":""),style:"width: "+this.f_width+"px;"}),this.is_multiple?b.html('
          '):b.html(''+this.default_text+'
            '),this.form_field_jq.hide().after(b),this.container=a("#"+this.container_id),this.container.addClass("chzn-container-"+(this.is_multiple?"multi":"single")),this.dropdown=this.container.find("div.chzn-drop").first(),d=this.container.height(),e=this.f_width-c(this.dropdown),this.dropdown.css({width:e+"px",top:d+"px"}),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chzn-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chzn-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chzn-search").first(),this.selected_item=this.container.find(".chzn-single").first(),f=e-c(this.search_container)-c(this.search_field),this.search_field.css({width:f+"px"})),this.results_build(),this.set_tab_index(),this.form_field_jq.trigger("liszt:ready",{chosen:this})},e.prototype.register_observers=function(){var a=this;return this.container.mousedown(function(b){return a.container_mousedown(b)}),this.container.mouseup(function(b){return a.container_mouseup(b)}),this.container.mouseenter(function(b){return a.mouse_enter(b)}),this.container.mouseleave(function(b){return a.mouse_leave(b)}),this.search_results.mouseup(function(b){return a.search_results_mouseup(b)}),this.search_results.mouseover(function(b){return a.search_results_mouseover(b)}),this.search_results.mouseout(function(b){return a.search_results_mouseout(b)}),this.form_field_jq.bind("liszt:updated",function(b){return a.results_update_field(b)}),this.search_field.blur(function(b){return a.input_blur(b)}),this.search_field.keyup(function(b){return a.keyup_checker(b)}),this.search_field.keydown(function(b){return a.keydown_checker(b)}),this.is_multiple?(this.search_choices.click(function(b){return a.choices_click(b)}),this.search_field.focus(function(b){return a.input_focus(b)})):this.container.click(function(a){return a.preventDefault()})},e.prototype.search_field_disabled=function(){this.is_disabled=this.form_field_jq[0].disabled;if(this.is_disabled)return this.container.addClass("chzn-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus",this.activate_action),this.close_field();this.container.removeClass("chzn-disabled"),this.search_field[0].disabled=!1;if(!this.is_multiple)return this.selected_item.bind("focus",this.activate_action)},e.prototype.container_mousedown=function(b){var c;if(!this.is_disabled)return c=b!=null?a(b.target).hasClass("search-choice-close"):!1,b&&b.type==="mousedown"&&!this.results_showing&&b.stopPropagation(),!this.pending_destroy_click&&!c?(this.active_field?!this.is_multiple&&b&&(a(b.target)[0]===this.selected_item[0]||a(b.target).parents("a.chzn-single").length)&&(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(document).click(this.click_test_action),this.results_show()),this.activate_field()):this.pending_destroy_click=!1},e.prototype.container_mouseup=function(a){if(a.target.nodeName==="ABBR")return this.results_reset(a)},e.prototype.blur_test=function(a){if(!this.active_field&&this.container.hasClass("chzn-container-active"))return this.close_field()},e.prototype.close_field=function(){return a(document).unbind("click",this.click_test_action),this.is_multiple||(this.selected_item.attr("tabindex",this.search_field.attr("tabindex")),this.search_field.attr("tabindex",-1)),this.active_field=!1,this.results_hide(),this.container.removeClass("chzn-container-active"),this.winnow_results_clear(),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},e.prototype.activate_field=function(){return!this.is_multiple&&!this.active_field&&(this.search_field.attr("tabindex",this.selected_item.attr("tabindex")),this.selected_item.attr("tabindex",-1)),this.container.addClass("chzn-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},e.prototype.test_active_click=function(b){return a(b.target).parents("#"+this.container_id).length?this.active_field=!0:this.close_field()},e.prototype.results_build=function(){var a,b,c,e,f;this.parsing=!0,this.results_data=d.SelectParser.select_to_array(this.form_field),this.is_multiple&&this.choices>0?(this.search_choices.find("li.search-choice").remove(),this.choices=0):this.is_multiple||(this.selected_item.find("span").text(this.default_text),this.form_field.options.length<=this.disable_search_threshold?this.container.addClass("chzn-container-single-nosearch"):this.container.removeClass("chzn-container-single-nosearch")),a="",f=this.results_data;for(c=0,e=f.length;c'+a("
            ").text(b.label).html()+"")},e.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight();if(b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(c'+b.html+''),d=a("#"+c).find("a").first(),d.click(function(a){return e.choice_destroy_link_click(a)})},e.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),this.is_disabled?b.stopPropagation:(this.pending_destroy_click=!0,this.choice_destroy(a(b.target)))},e.prototype.choice_destroy=function(a){return this.choices-=1,this.show_search_field_default(),this.is_multiple&&this.choices>0&&this.search_field.val().length<1&&this.results_hide(),this.result_deselect(a.attr("rel")),a.parents("li").first().remove()},e.prototype.results_reset=function(b){this.form_field.options[0].selected=!0,this.selected_item.find("span").text(this.default_text),this.is_multiple||this.selected_item.addClass("chzn-default"),this.show_search_field_default(),a(b.target).remove(),this.form_field_jq.trigger("change");if(this.active_field)return this.results_hide()},e.prototype.result_select=function(a){var b,c,d,e;if(this.result_highlight)return b=this.result_highlight,c=b.attr("id"),this.result_clear_highlight(),this.is_multiple?this.result_deactivate(b):(this.search_results.find(".result-selected").removeClass("result-selected"),this.result_single_selected=b,this.selected_item.removeClass("chzn-default")),b.addClass("result-selected"),e=c.substr(c.lastIndexOf("_")+1),d=this.results_data[e],d.selected=!0,this.form_field.options[d.options_index].selected=!0,this.is_multiple?this.choice_build(d):(this.selected_item.find("span").first().text(d.text),this.allow_single_deselect&&this.single_deselect_control_build()),(!a.metaKey||!this.is_multiple)&&this.results_hide(),this.search_field.val(""),this.form_field_jq.trigger("change"),this.search_field_scale()},e.prototype.result_activate=function(a){return a.addClass("active-result")},e.prototype.result_deactivate=function(a){return a.removeClass("active-result")},e.prototype.result_deselect=function(b){var c,d;return d=this.results_data[b],d.selected=!1,this.form_field.options[d.options_index].selected=!1,c=a("#"+this.container_id+"_o_"+b),c.removeClass("result-selected").addClass("active-result").show(),this.result_clear_highlight(),this.winnow_results(),this.form_field_jq.trigger("change"),this.search_field_scale()},e.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect&&this.selected_item.find("abbr").length<1)return this.selected_item.find("span").first().after('')},e.prototype.winnow_results=function(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;this.no_results_clear(),j=0,k=this.search_field.val()===this.default_text?"":a("
            ").text(a.trim(this.search_field.val())).html(),g=this.search_contains?"":"^",f=new RegExp(g+k.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),n=new RegExp(k.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),s=this.results_data;for(o=0,q=s.length;o=0||c.html.indexOf("[")===0){e=c.html.replace(/\[|\]/g,"").split(" ");if(e.length)for(p=0,r=e.length;p"+c.html.substr(l+k.length),m=m.substr(0,l)+""+m.substr(l)):m=c.html,h.html(m),this.result_activate(h),c.group_array_index!=null&&a("#"+this.results_data[c.group_array_index].dom_id).css("display","list-item")):(this.result_highlight&&i===this.result_highlight.attr("id")&&this.result_clear_highlight(),this.result_deactivate(h))}}return j<1&&k.length?this.no_results(k):this.winnow_results_set_highlight()},e.prototype.winnow_results_clear=function(){var b,c,d,e,f;this.search_field.val(""),c=this.search_results.find("li"),f=[];for(d=0,e=c.length;d'+this.results_none_found+' ""'),c.find("span").first().html(b),this.search_results.append(c)},e.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},e.prototype.keydown_arrow=function(){var b,c;this.result_highlight?this.results_showing&&(c=this.result_highlight.nextAll("li.active-result").first(),c&&this.result_do_highlight(c)):(b=this.search_results.find("li.active-result").first(),b&&this.result_do_highlight(a(b)));if(!this.results_showing)return this.results_show()},e.prototype.keyup_arrow=function(){var a;if(!this.results_showing&&!this.is_multiple)return this.results_show();if(this.result_highlight)return a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices>0&&this.results_hide(),this.result_clear_highlight())},e.prototype.keydown_backstroke=function(){return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(this.pending_backstroke=this.search_container.siblings("li.search-choice").last(),this.pending_backstroke.addClass("search-choice-focus"))},e.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},e.prototype.keydown_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode,this.search_field_scale(),b!==8&&this.pending_backstroke&&this.clear_backstroke();switch(b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:this.keydown_arrow()}},e.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"];for(i=0,j=g.length;i",{style:f}),c.text(this.search_field.val()),a("body").append(c),h=c.width()+25,c.remove(),h>this.f_width-10&&(h=this.f_width-10),this.search_field.css({width:h+"px"}),b=this.container.height(),this.dropdown.css({top:b+"px"})}},e.prototype.generate_random_id=function(){var b;b="sel"+this.generate_random_char()+this.generate_random_char()+this.generate_random_char();while(a("#"+b).length>0)b+=this.generate_random_char();return b},e}(AbstractChosen),c=function(a){var b;return b=a.outerWidth()-a.width()},d.get_side_border_padding=c}.call(this) \ No newline at end of file diff --git a/3rdparty/mediawiki/CSSMin.php b/3rdparty/mediawiki/CSSMin.php deleted file mode 100644 index e9c2badf62bd192f1eec948315da48e7d2c20db3..0000000000000000000000000000000000000000 --- a/3rdparty/mediawiki/CSSMin.php +++ /dev/null @@ -1,228 +0,0 @@ - - * @copyright Copyright 2010 Wikimedia Foundation - * @license http://www.apache.org/licenses/LICENSE-2.0 - */ - -/** - * Transforms CSS data - * - * This class provides minification, URL remapping, URL extracting, and data-URL embedding. - */ -class CSSMin { - - /* Constants */ - - /** - * Maximum file size to still qualify for in-line embedding as a data-URI - * - * 24,576 is used because Internet Explorer has a 32,768 byte limit for data URIs, - * which when base64 encoded will result in a 1/3 increase in size. - */ - const EMBED_SIZE_LIMIT = 24576; - const URL_REGEX = 'url\(\s*[\'"]?(?P[^\?\)\'"]*)(?P\??[^\)\'"]*)[\'"]?\s*\)'; - - /* Protected Static Members */ - - /** @var array List of common image files extensions and mime-types */ - protected static $mimeTypes = array( - 'gif' => 'image/gif', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'png' => 'image/png', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'xbm' => 'image/x-xbitmap', - ); - - /* Static Methods */ - - /** - * Gets a list of local file paths which are referenced in a CSS style sheet - * - * @param $source string CSS data to remap - * @param $path string File path where the source was read from (optional) - * @return array List of local file references - */ - public static function getLocalFileReferences( $source, $path = null ) { - $files = array(); - $rFlags = PREG_OFFSET_CAPTURE | PREG_SET_ORDER; - if ( preg_match_all( '/' . self::URL_REGEX . '/', $source, $matches, $rFlags ) ) { - foreach ( $matches as $match ) { - $file = ( isset( $path ) - ? rtrim( $path, '/' ) . '/' - : '' ) . "{$match['file'][0]}"; - - // Only proceed if we can access the file - if ( !is_null( $path ) && file_exists( $file ) ) { - $files[] = $file; - } - } - } - return $files; - } - - /** - * @param $file string - * @return bool|string - */ - protected static function getMimeType( $file ) { - $realpath = realpath( $file ); - // Try a couple of different ways to get the mime-type of a file, in order of - // preference - if ( - $realpath - && function_exists( 'finfo_file' ) - && function_exists( 'finfo_open' ) - && defined( 'FILEINFO_MIME_TYPE' ) - ) { - // As of PHP 5.3, this is how you get the mime-type of a file; it uses the Fileinfo - // PECL extension - return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath ); - } elseif ( function_exists( 'mime_content_type' ) ) { - // Before this was deprecated in PHP 5.3, this was how you got the mime-type of a file - return mime_content_type( $file ); - } else { - // Worst-case scenario has happened, use the file extension to infer the mime-type - $ext = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) ); - if ( isset( self::$mimeTypes[$ext] ) ) { - return self::$mimeTypes[$ext]; - } - } - return false; - } - - /** - * Remaps CSS URL paths and automatically embeds data URIs for URL rules - * preceded by an /* @embed * / comment - * - * @param $source string CSS data to remap - * @param $local string File path where the source was read from - * @param $remote string URL path to the file - * @param $embedData bool If false, never do any data URI embedding, even if / * @embed * / is found - * @return string Remapped CSS data - */ - public static function remap( $source, $local, $remote, $embedData = true ) { - $pattern = '/((?P\s*\/\*\s*\@embed\s*\*\/)(?P
            [^\;\}]*))?' .
            -			self::URL_REGEX . '(?P[^;]*)[\;]?/';
            -		$offset = 0;
            -		while ( preg_match( $pattern, $source, $match, PREG_OFFSET_CAPTURE, $offset ) ) {
            -			// Skip fully-qualified URLs and data URIs
            -			$urlScheme = parse_url( $match['file'][0], PHP_URL_SCHEME );
            -			if ( $urlScheme ) {
            -				// Move the offset to the end of the match, leaving it alone
            -				$offset = $match[0][1] + strlen( $match[0][0] );
            -				continue;
            -			}
            -			// URLs with absolute paths like /w/index.php need to be expanded
            -			// to absolute URLs but otherwise left alone
            -			if ( $match['file'][0] !== '' && $match['file'][0][0] === '/' ) {
            -				// Replace the file path with an expanded (possibly protocol-relative) URL
            -				// ...but only if wfExpandUrl() is even available.
            -				// This will not be the case if we're running outside of MW
            -				$lengthIncrease = 0;
            -				if ( function_exists( 'wfExpandUrl' ) ) {
            -					$expanded = wfExpandUrl( $match['file'][0], PROTO_RELATIVE );
            -					$origLength = strlen( $match['file'][0] );
            -					$lengthIncrease = strlen( $expanded ) - $origLength;
            -					$source = substr_replace( $source, $expanded,
            -						$match['file'][1], $origLength
            -					);
            -				}
            -				// Move the offset to the end of the match, leaving it alone
            -				$offset = $match[0][1] + strlen( $match[0][0] ) + $lengthIncrease;
            -				continue;
            -			}
            -			// Shortcuts
            -			$embed = $match['embed'][0];
            -			$pre = $match['pre'][0];
            -			$post = $match['post'][0];
            -			$query = $match['query'][0];
            -			$url = "{$remote}/{$match['file'][0]}";
            -			$file = "{$local}/{$match['file'][0]}";
            -			// bug 27052 - Guard against double slashes, because foo//../bar
            -			// apparently resolves to foo/bar on (some?) clients
            -			$url = preg_replace( '#([^:])//+#', '\1/', $url );
            -			$replacement = false;
            -			if ( $local !== false && file_exists( $file ) ) {
            -				// Add version parameter as a time-stamp in ISO 8601 format,
            -				// using Z for the timezone, meaning GMT
            -				$url .= '?' . gmdate( 'Y-m-d\TH:i:s\Z', round( filemtime( $file ), -2 ) );
            -				// Embedding requires a bit of extra processing, so let's skip that if we can
            -				if ( $embedData && $embed ) {
            -					$type = self::getMimeType( $file );
            -					// Detect when URLs were preceeded with embed tags, and also verify file size is
            -					// below the limit
            -					if (
            -						$type
            -						&& $match['embed'][1] > 0
            -						&& filesize( $file ) < self::EMBED_SIZE_LIMIT
            -					) {
            -						// Strip off any trailing = symbols (makes browsers freak out)
            -						$data = base64_encode( file_get_contents( $file ) );
            -						// Build 2 CSS properties; one which uses a base64 encoded data URI in place
            -						// of the @embed comment to try and retain line-number integrity, and the
            -						// other with a remapped an versioned URL and an Internet Explorer hack
            -						// making it ignored in all browsers that support data URIs
            -						$replacement = "{$pre}url(data:{$type};base64,{$data}){$post};";
            -						$replacement .= "{$pre}url({$url}){$post}!ie;";
            -					}
            -				}
            -				if ( $replacement === false ) {
            -					// Assume that all paths are relative to $remote, and make them absolute
            -					$replacement = "{$embed}{$pre}url({$url}){$post};";
            -				}
            -			} elseif ( $local === false ) {
            -				// Assume that all paths are relative to $remote, and make them absolute
            -				$replacement = "{$embed}{$pre}url({$url}{$query}){$post};";
            -			}
            -			if ( $replacement !== false ) {
            -				// Perform replacement on the source
            -				$source = substr_replace(
            -					$source, $replacement, $match[0][1], strlen( $match[0][0] )
            -				);
            -				// Move the offset to the end of the replacement in the source
            -				$offset = $match[0][1] + strlen( $replacement );
            -				continue;
            -			}
            -			// Move the offset to the end of the match, leaving it alone
            -			$offset = $match[0][1] + strlen( $match[0][0] );
            -		}
            -		return $source;
            -	}
            -
            -	/**
            -	 * Removes whitespace from CSS data
            -	 *
            -	 * @param $css string CSS data to minify
            -	 * @return string Minified CSS data
            -	 */
            -	public static function minify( $css ) {
            -		return trim(
            -			str_replace(
            -				array( '; ', ': ', ' {', '{ ', ', ', '} ', ';}' ),
            -				array( ';', ':', '{', '{', ',', '}', '}' ),
            -				preg_replace( array( '/\s+/', '/\/\*.*?\*\//s' ), array( ' ', '' ), $css )
            -			)
            -		);
            -	}
            -}
            diff --git a/3rdparty/mediawiki/JavaScriptMinifier.php b/3rdparty/mediawiki/JavaScriptMinifier.php
            deleted file mode 100644
            index db5326c7cfbc55cdb23ef6bea73cddba46ecaf20..0000000000000000000000000000000000000000
            --- a/3rdparty/mediawiki/JavaScriptMinifier.php
            +++ /dev/null
            @@ -1,606 +0,0 @@
            -
            - * @license Choose any of Apache, MIT, GPL, LGPL
            - */
            -
            -/**
            - * This class is meant to safely minify javascript code, while leaving syntactically correct
            - * programs intact. Other libraries, such as JSMin require a certain coding style to work
            - * correctly. OTOH, libraries like jsminplus, that do parse the code correctly are rather
            - * slow, because they construct a complete parse tree before outputting the code minified.
            - * So this class is meant to allow arbitrary (but syntactically correct) input, while being
            - * fast enough to be used for on-the-fly minifying.
            - */
            -class JavaScriptMinifier {
            -
            -	/* Class constants */
            -	/* Parsing states.
            -	 * The state machine is only necessary to decide whether to parse a slash as division
            -	 * operator or as regexp literal.
            -	 * States are named after the next expected item. We only distinguish states when the
            -	 * distinction is relevant for our purpose.
            -	 */
            -	const STATEMENT                = 0;
            -	const CONDITION                = 1;
            -	const PROPERTY_ASSIGNMENT      = 2;
            -	const EXPRESSION               = 3;
            -	const EXPRESSION_NO_NL         = 4; // only relevant for semicolon insertion
            -	const EXPRESSION_OP            = 5;
            -	const EXPRESSION_FUNC          = 6;
            -	const EXPRESSION_TERNARY       = 7; // used to determine the role of a colon
            -	const EXPRESSION_TERNARY_OP    = 8;
            -	const EXPRESSION_TERNARY_FUNC  = 9;
            -	const PAREN_EXPRESSION         = 10; // expression which is not on the top level
            -	const PAREN_EXPRESSION_OP      = 11;
            -	const PAREN_EXPRESSION_FUNC    = 12;
            -	const PROPERTY_EXPRESSION      = 13; // expression which is within an object literal
            -	const PROPERTY_EXPRESSION_OP   = 14;
            -	const PROPERTY_EXPRESSION_FUNC = 15;
            -
            -	/* Token types */
            -	const TYPE_UN_OP       = 1; // unary operators
            -	const TYPE_INCR_OP     = 2; // ++ and --
            -	const TYPE_BIN_OP      = 3; // binary operators
            -	const TYPE_ADD_OP      = 4; // + and - which can be either unary or binary ops
            -	const TYPE_HOOK        = 5; // ?
            -	const TYPE_COLON       = 6; // :
            -	const TYPE_COMMA       = 7; // ,
            -	const TYPE_SEMICOLON   = 8; // ;
            -	const TYPE_BRACE_OPEN  = 9; // {
            -	const TYPE_BRACE_CLOSE = 10; // }
            -	const TYPE_PAREN_OPEN  = 11; // ( and [
            -	const TYPE_PAREN_CLOSE = 12; // ) and ]
            -	const TYPE_RETURN      = 13; // keywords: break, continue, return, throw
            -	const TYPE_IF          = 14; // keywords: catch, for, with, switch, while, if
            -	const TYPE_DO          = 15; // keywords: case, var, finally, else, do, try
            -	const TYPE_FUNC        = 16; // keywords: function
            -	const TYPE_LITERAL     = 17; // all literals, identifiers and unrecognised tokens
            -
            -	// Sanity limit to avoid excessive memory usage
            -	const STACK_LIMIT = 1000;
            -
            -	/* Static functions */
            -
            -	/**
            -	 * Returns minified JavaScript code.
            -	 *
            -	 * NOTE: $maxLineLength isn't a strict maximum. Longer lines will be produced when
            -	 *       literals (e.g. quoted strings) longer than $maxLineLength are encountered
            -	 *       or when required to guard against semicolon insertion.
            -	 *
            -	 * @param $s String JavaScript code to minify
            -	 * @param $statementsOnOwnLine Bool Whether to put each statement on its own line
            -	 * @param $maxLineLength Int Maximum length of a single line, or -1 for no maximum.
            -	 * @return String Minified code
            -	 */
            -	public static function minify( $s, $statementsOnOwnLine = false, $maxLineLength = 1000 ) {
            -		// First we declare a few tables that contain our parsing rules
            -
            -		// $opChars : characters, which can be combined without whitespace in between them
            -		$opChars = array(
            -			'!' => true,
            -			'"' => true,
            -			'%' => true,
            -			'&' => true,
            -			"'" => true,
            -			'(' => true,
            -			')' => true,
            -			'*' => true,
            -			'+' => true,
            -			',' => true,
            -			'-' => true,
            -			'.' => true,
            -			'/' => true,
            -			':' => true,
            -			';' => true,
            -			'<' => true,
            -			'=' => true,
            -			'>' => true,
            -			'?' => true,
            -			'[' => true,
            -			']' => true,
            -			'^' => true,
            -			'{' => true,
            -			'|' => true,
            -			'}' => true,
            -			'~' => true
            -		);
            -
            -		// $tokenTypes : maps keywords and operators to their corresponding token type
            -		$tokenTypes = array(
            -			'!'          => self::TYPE_UN_OP,
            -			'~'          => self::TYPE_UN_OP,
            -			'delete'     => self::TYPE_UN_OP,
            -			'new'        => self::TYPE_UN_OP,
            -			'typeof'     => self::TYPE_UN_OP,
            -			'void'       => self::TYPE_UN_OP,
            -			'++'         => self::TYPE_INCR_OP,
            -			'--'         => self::TYPE_INCR_OP,
            -			'!='         => self::TYPE_BIN_OP,
            -			'!=='        => self::TYPE_BIN_OP,
            -			'%'          => self::TYPE_BIN_OP,
            -			'%='         => self::TYPE_BIN_OP,
            -			'&'          => self::TYPE_BIN_OP,
            -			'&&'         => self::TYPE_BIN_OP,
            -			'&='         => self::TYPE_BIN_OP,
            -			'*'          => self::TYPE_BIN_OP,
            -			'*='         => self::TYPE_BIN_OP,
            -			'+='         => self::TYPE_BIN_OP,
            -			'-='         => self::TYPE_BIN_OP,
            -			'.'          => self::TYPE_BIN_OP,
            -			'/'          => self::TYPE_BIN_OP,
            -			'/='         => self::TYPE_BIN_OP,
            -			'<'          => self::TYPE_BIN_OP,
            -			'<<'         => self::TYPE_BIN_OP,
            -			'<<='        => self::TYPE_BIN_OP,
            -			'<='         => self::TYPE_BIN_OP,
            -			'='          => self::TYPE_BIN_OP,
            -			'=='         => self::TYPE_BIN_OP,
            -			'==='        => self::TYPE_BIN_OP,
            -			'>'          => self::TYPE_BIN_OP,
            -			'>='         => self::TYPE_BIN_OP,
            -			'>>'         => self::TYPE_BIN_OP,
            -			'>>='        => self::TYPE_BIN_OP,
            -			'>>>'        => self::TYPE_BIN_OP,
            -			'>>>='       => self::TYPE_BIN_OP,
            -			'^'          => self::TYPE_BIN_OP,
            -			'^='         => self::TYPE_BIN_OP,
            -			'|'          => self::TYPE_BIN_OP,
            -			'|='         => self::TYPE_BIN_OP,
            -			'||'         => self::TYPE_BIN_OP,
            -			'in'         => self::TYPE_BIN_OP,
            -			'instanceof' => self::TYPE_BIN_OP,
            -			'+'          => self::TYPE_ADD_OP,
            -			'-'          => self::TYPE_ADD_OP,
            -			'?'          => self::TYPE_HOOK,
            -			':'          => self::TYPE_COLON,
            -			','          => self::TYPE_COMMA,
            -			';'          => self::TYPE_SEMICOLON,
            -			'{'          => self::TYPE_BRACE_OPEN,
            -			'}'          => self::TYPE_BRACE_CLOSE,
            -			'('          => self::TYPE_PAREN_OPEN,
            -			'['          => self::TYPE_PAREN_OPEN,
            -			')'          => self::TYPE_PAREN_CLOSE,
            -			']'          => self::TYPE_PAREN_CLOSE,
            -			'break'      => self::TYPE_RETURN,
            -			'continue'   => self::TYPE_RETURN,
            -			'return'     => self::TYPE_RETURN,
            -			'throw'      => self::TYPE_RETURN,
            -			'catch'      => self::TYPE_IF,
            -			'for'        => self::TYPE_IF,
            -			'if'         => self::TYPE_IF,
            -			'switch'     => self::TYPE_IF,
            -			'while'      => self::TYPE_IF,
            -			'with'       => self::TYPE_IF,
            -			'case'       => self::TYPE_DO,
            -			'do'         => self::TYPE_DO,
            -			'else'       => self::TYPE_DO,
            -			'finally'    => self::TYPE_DO,
            -			'try'        => self::TYPE_DO,
            -			'var'        => self::TYPE_DO,
            -			'function'   => self::TYPE_FUNC
            -		);
            -
            -		// $goto : This is the main table for our state machine. For every state/token pair
            -		//         the following state is defined. When no rule exists for a given pair,
            -		//         the state is left unchanged.
            -		$goto = array(
            -			self::STATEMENT => array(
            -				self::TYPE_UN_OP      => self::EXPRESSION,
            -				self::TYPE_INCR_OP    => self::EXPRESSION,
            -				self::TYPE_ADD_OP     => self::EXPRESSION,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION,
            -				self::TYPE_RETURN     => self::EXPRESSION_NO_NL,
            -				self::TYPE_IF         => self::CONDITION,
            -				self::TYPE_FUNC       => self::CONDITION,
            -				self::TYPE_LITERAL    => self::EXPRESSION_OP
            -			),
            -			self::CONDITION => array(
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION
            -			),
            -			self::PROPERTY_ASSIGNMENT => array(
            -				self::TYPE_COLON      => self::PROPERTY_EXPRESSION,
            -				self::TYPE_BRACE_OPEN => self::STATEMENT
            -			),
            -			self::EXPRESSION => array(
            -				self::TYPE_SEMICOLON  => self::STATEMENT,
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_ASSIGNMENT,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION,
            -				self::TYPE_FUNC       => self::EXPRESSION_FUNC,
            -				self::TYPE_LITERAL    => self::EXPRESSION_OP
            -			),
            -			self::EXPRESSION_NO_NL => array(
            -				self::TYPE_SEMICOLON  => self::STATEMENT,
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_ASSIGNMENT,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION,
            -				self::TYPE_FUNC       => self::EXPRESSION_FUNC,
            -				self::TYPE_LITERAL    => self::EXPRESSION_OP
            -			),
            -			self::EXPRESSION_OP => array(
            -				self::TYPE_BIN_OP     => self::EXPRESSION,
            -				self::TYPE_ADD_OP     => self::EXPRESSION,
            -				self::TYPE_HOOK       => self::EXPRESSION_TERNARY,
            -				self::TYPE_COLON      => self::STATEMENT,
            -				self::TYPE_COMMA      => self::EXPRESSION,
            -				self::TYPE_SEMICOLON  => self::STATEMENT,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION
            -			),
            -			self::EXPRESSION_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::STATEMENT
            -			),
            -			self::EXPRESSION_TERNARY => array(
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_ASSIGNMENT,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION,
            -				self::TYPE_FUNC       => self::EXPRESSION_TERNARY_FUNC,
            -				self::TYPE_LITERAL    => self::EXPRESSION_TERNARY_OP
            -			),
            -			self::EXPRESSION_TERNARY_OP => array(
            -				self::TYPE_BIN_OP     => self::EXPRESSION_TERNARY,
            -				self::TYPE_ADD_OP     => self::EXPRESSION_TERNARY,
            -				self::TYPE_HOOK       => self::EXPRESSION_TERNARY,
            -				self::TYPE_COMMA      => self::EXPRESSION_TERNARY,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION
            -			),
            -			self::EXPRESSION_TERNARY_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::STATEMENT
            -			),
            -			self::PAREN_EXPRESSION => array(
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_ASSIGNMENT,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION,
            -				self::TYPE_FUNC       => self::PAREN_EXPRESSION_FUNC,
            -				self::TYPE_LITERAL    => self::PAREN_EXPRESSION_OP
            -			),
            -			self::PAREN_EXPRESSION_OP => array(
            -				self::TYPE_BIN_OP     => self::PAREN_EXPRESSION,
            -				self::TYPE_ADD_OP     => self::PAREN_EXPRESSION,
            -				self::TYPE_HOOK       => self::PAREN_EXPRESSION,
            -				self::TYPE_COLON      => self::PAREN_EXPRESSION,
            -				self::TYPE_COMMA      => self::PAREN_EXPRESSION,
            -				self::TYPE_SEMICOLON  => self::PAREN_EXPRESSION,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION
            -			),
            -			self::PAREN_EXPRESSION_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::STATEMENT
            -			),
            -			self::PROPERTY_EXPRESSION => array(
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_ASSIGNMENT,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION,
            -				self::TYPE_FUNC       => self::PROPERTY_EXPRESSION_FUNC,
            -				self::TYPE_LITERAL    => self::PROPERTY_EXPRESSION_OP
            -			),
            -			self::PROPERTY_EXPRESSION_OP => array(
            -				self::TYPE_BIN_OP     => self::PROPERTY_EXPRESSION,
            -				self::TYPE_ADD_OP     => self::PROPERTY_EXPRESSION,
            -				self::TYPE_HOOK       => self::PROPERTY_EXPRESSION,
            -				self::TYPE_COMMA      => self::PROPERTY_ASSIGNMENT,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION
            -			),
            -			self::PROPERTY_EXPRESSION_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::STATEMENT
            -			)
            -		);
            -
            -		// $push : This table contains the rules for when to push a state onto the stack.
            -		//         The pushed state is the state to return to when the corresponding
            -		//         closing token is found
            -		$push = array(
            -			self::STATEMENT => array(
            -				self::TYPE_BRACE_OPEN => self::STATEMENT,
            -				self::TYPE_PAREN_OPEN => self::EXPRESSION_OP
            -			),
            -			self::CONDITION => array(
            -				self::TYPE_PAREN_OPEN => self::STATEMENT
            -			),
            -			self::PROPERTY_ASSIGNMENT => array(
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_ASSIGNMENT
            -			),
            -			self::EXPRESSION => array(
            -				self::TYPE_BRACE_OPEN => self::EXPRESSION_OP,
            -				self::TYPE_PAREN_OPEN => self::EXPRESSION_OP
            -			),
            -			self::EXPRESSION_NO_NL => array(
            -				self::TYPE_BRACE_OPEN => self::EXPRESSION_OP,
            -				self::TYPE_PAREN_OPEN => self::EXPRESSION_OP
            -			),
            -			self::EXPRESSION_OP => array(
            -				self::TYPE_HOOK       => self::EXPRESSION,
            -				self::TYPE_PAREN_OPEN => self::EXPRESSION_OP
            -			),
            -			self::EXPRESSION_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::EXPRESSION_OP
            -			),
            -			self::EXPRESSION_TERNARY => array(
            -				self::TYPE_BRACE_OPEN => self::EXPRESSION_TERNARY_OP,
            -				self::TYPE_PAREN_OPEN => self::EXPRESSION_TERNARY_OP
            -			),
            -			self::EXPRESSION_TERNARY_OP => array(
            -				self::TYPE_HOOK       => self::EXPRESSION_TERNARY,
            -				self::TYPE_PAREN_OPEN => self::EXPRESSION_TERNARY_OP
            -			),
            -			self::EXPRESSION_TERNARY_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::EXPRESSION_TERNARY_OP
            -			),
            -			self::PAREN_EXPRESSION => array(
            -				self::TYPE_BRACE_OPEN => self::PAREN_EXPRESSION_OP,
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION_OP
            -			),
            -			self::PAREN_EXPRESSION_OP => array(
            -				self::TYPE_PAREN_OPEN => self::PAREN_EXPRESSION_OP
            -			),
            -			self::PAREN_EXPRESSION_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::PAREN_EXPRESSION_OP
            -			),
            -			self::PROPERTY_EXPRESSION => array(
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_EXPRESSION_OP,
            -				self::TYPE_PAREN_OPEN => self::PROPERTY_EXPRESSION_OP
            -			),
            -			self::PROPERTY_EXPRESSION_OP => array(
            -				self::TYPE_PAREN_OPEN => self::PROPERTY_EXPRESSION_OP
            -			),
            -			self::PROPERTY_EXPRESSION_FUNC => array(
            -				self::TYPE_BRACE_OPEN => self::PROPERTY_EXPRESSION_OP
            -			)
            -		);
            -
            -		// $pop : Rules for when to pop a state from the stack
            -		$pop = array(
            -			self::STATEMENT              => array( self::TYPE_BRACE_CLOSE => true ),
            -			self::PROPERTY_ASSIGNMENT    => array( self::TYPE_BRACE_CLOSE => true ),
            -			self::EXPRESSION             => array( self::TYPE_BRACE_CLOSE => true ),
            -			self::EXPRESSION_NO_NL       => array( self::TYPE_BRACE_CLOSE => true ),
            -			self::EXPRESSION_OP          => array( self::TYPE_BRACE_CLOSE => true ),
            -			self::EXPRESSION_TERNARY_OP  => array( self::TYPE_COLON       => true ),
            -			self::PAREN_EXPRESSION       => array( self::TYPE_PAREN_CLOSE => true ),
            -			self::PAREN_EXPRESSION_OP    => array( self::TYPE_PAREN_CLOSE => true ),
            -			self::PROPERTY_EXPRESSION    => array( self::TYPE_BRACE_CLOSE => true ),
            -			self::PROPERTY_EXPRESSION_OP => array( self::TYPE_BRACE_CLOSE => true )
            -		);
            -
            -		// $semicolon : Rules for when a semicolon insertion is appropriate
            -		$semicolon = array(
            -			self::EXPRESSION_NO_NL => array(
            -				self::TYPE_UN_OP      => true,
            -				self::TYPE_INCR_OP    => true,
            -				self::TYPE_ADD_OP     => true,
            -				self::TYPE_BRACE_OPEN => true,
            -				self::TYPE_PAREN_OPEN => true,
            -				self::TYPE_RETURN     => true,
            -				self::TYPE_IF         => true,
            -				self::TYPE_DO         => true,
            -				self::TYPE_FUNC       => true,
            -				self::TYPE_LITERAL    => true
            -			),
            -			self::EXPRESSION_OP => array(
            -				self::TYPE_UN_OP      => true,
            -				self::TYPE_INCR_OP    => true,
            -				self::TYPE_BRACE_OPEN => true,
            -				self::TYPE_RETURN     => true,
            -				self::TYPE_IF         => true,
            -				self::TYPE_DO         => true,
            -				self::TYPE_FUNC       => true,
            -				self::TYPE_LITERAL    => true
            -			)
            -		);
            -
            -		// Rules for when newlines should be inserted if
            -		// $statementsOnOwnLine is enabled.
            -		// $newlineBefore is checked before switching state,
            -		// $newlineAfter is checked after
            -		$newlineBefore = array(
            -			self::STATEMENT => array(
            -				self::TYPE_BRACE_CLOSE => true,
            -			),
            -		);
            -		$newlineAfter = array(
            -			self::STATEMENT => array(
            -				self::TYPE_BRACE_OPEN => true,
            -				self::TYPE_PAREN_CLOSE => true,
            -				self::TYPE_SEMICOLON => true,
            -			),
            -		);
            -
            -		// $divStates : Contains all states that can be followed by a division operator
            -		$divStates = array(
            -			self::EXPRESSION_OP          => true,
            -			self::EXPRESSION_TERNARY_OP  => true,
            -			self::PAREN_EXPRESSION_OP    => true,
            -			self::PROPERTY_EXPRESSION_OP => true
            -		);
            -
            -		// Here's where the minifying takes place: Loop through the input, looking for tokens
            -		// and output them to $out, taking actions to the above defined rules when appropriate.
            -		$out = '';
            -		$pos = 0;
            -		$length = strlen( $s );
            -		$lineLength = 0;
            -		$newlineFound = true;
            -		$state = self::STATEMENT;
            -		$stack = array();
            -		$last = ';'; // Pretend that we have seen a semicolon yet
            -		while( $pos < $length ) {
            -			// First, skip over any whitespace and multiline comments, recording whether we
            -			// found any newline character
            -			$skip = strspn( $s, " \t\n\r\xb\xc", $pos );
            -			if( !$skip ) {
            -				$ch = $s[$pos];
            -				if( $ch === '/' && substr( $s, $pos, 2 ) === '/*' ) {
            -					// Multiline comment. Search for the end token or EOT.
            -					$end = strpos( $s, '*/', $pos + 2 );
            -					$skip = $end === false ? $length - $pos : $end - $pos + 2;
            -				}
            -			}
            -			if( $skip ) {
            -				// The semicolon insertion mechanism needs to know whether there was a newline
            -				// between two tokens, so record it now.
            -				if( !$newlineFound && strcspn( $s, "\r\n", $pos, $skip ) !== $skip ) {
            -					$newlineFound = true;
            -				}
            -				$pos += $skip;
            -				continue;
            -			}
            -			// Handle C++-style comments and html comments, which are treated as single line
            -			// comments by the browser, regardless of whether the end tag is on the same line.
            -			// Handle --> the same way, but only if it's at the beginning of the line
            -			if( ( $ch === '/' && substr( $s, $pos, 2 ) === '//' )
            -				|| ( $ch === '<' && substr( $s, $pos, 4 ) === '' )
            -			) {
            -				$pos += strcspn( $s, "\r\n", $pos );
            -				continue;
            -			}
            -
            -			// Find out which kind of token we're handling. $end will point past the end of it.
            -			$end = $pos + 1;
            -			// Handle string literals
            -			if( $ch === "'" || $ch === '"' ) {
            -				// Search to the end of the string literal, skipping over backslash escapes
            -				$search = $ch . '\\';
            -				do{
            -					$end += strcspn( $s, $search, $end ) + 2;
            -				} while( $end - 2 < $length && $s[$end - 2] === '\\' );
            -				$end--;
            -			// We have to distinguish between regexp literals and division operators
            -			// A division operator is only possible in certain states
            -			} elseif( $ch === '/' && !isset( $divStates[$state] ) ) {
            -				// Regexp literal, search to the end, skipping over backslash escapes and
            -				// character classes
            -				for( ; ; ) {
            -					do{
            -						$end += strcspn( $s, '/[\\', $end ) + 2;
            -					} while( $end - 2 < $length && $s[$end - 2] === '\\' );
            -					$end--;
            -					if( $end - 1 >= $length || $s[$end - 1] === '/' ) {
            -						break;
            -					}
            -					do{
            -						$end += strcspn( $s, ']\\', $end ) + 2;
            -					} while( $end - 2 < $length && $s[$end - 2] === '\\' );
            -					$end--;
            -				};
            -				// Search past the regexp modifiers (gi)
            -				while( $end < $length && ctype_alpha( $s[$end] ) ) {
            -					$end++;
            -				}
            -			} elseif(
            -				$ch === '0'
            -				&& ($pos + 1 < $length) && ($s[$pos + 1] === 'x' || $s[$pos + 1] === 'X' )
            -			) {
            -				// Hex numeric literal
            -				$end++; // x or X
            -				$len = strspn( $s, '0123456789ABCDEFabcdef', $end );
            -				if ( !$len ) {
            -					return self::parseError($s, $pos, 'Expected a hexadecimal number but found ' . substr( $s, $pos, 5 ) . '...' );
            -				}
            -				$end += $len;
            -			} elseif(
            -				ctype_digit( $ch )
            -				|| ( $ch === '.' && $pos + 1 < $length && ctype_digit( $s[$pos + 1] ) )
            -			) {
            -				$end += strspn( $s, '0123456789', $end );
            -				$decimal = strspn( $s, '.', $end );
            -				if ($decimal) {
            -					if ( $decimal > 2 ) {
            -						return self::parseError($s, $end, 'The number has too many decimal points' );
            -					}
            -					$end += strspn( $s, '0123456789', $end + 1 ) + $decimal;
            -				}
            -				$exponent = strspn( $s, 'eE', $end );
            -				if( $exponent ) {
            -					if ( $exponent > 1 ) {
            -						return self::parseError($s, $end, 'Number with several E' );
            -					}
            -					$end++;
            -
            -					// + sign is optional; - sign is required.
            -					$end += strspn( $s, '-+', $end );
            -					$len = strspn( $s, '0123456789', $end );
            -					if ( !$len ) {
            -						return self::parseError($s, $pos, 'No decimal digits after e, how many zeroes should be added?' );
            -					}
            -					$end += $len;
            -				}
            -			} elseif( isset( $opChars[$ch] ) ) {
            -				// Punctuation character. Search for the longest matching operator.
            -				while(
            -					$end < $length
            -					&& isset( $tokenTypes[substr( $s, $pos, $end - $pos + 1 )] )
            -				) {
            -					$end++;
            -				}
            -			} else {
            -				// Identifier or reserved word. Search for the end by excluding whitespace and
            -				// punctuation.
            -				$end += strcspn( $s, " \t\n.;,=<>+-{}()[]?:*/%'\"!&|^~\xb\xc\r", $end );
            -			}
            -
            -			// Now get the token type from our type array
            -			$token = substr( $s, $pos, $end - $pos ); // so $end - $pos == strlen( $token )
            -			$type = isset( $tokenTypes[$token] ) ? $tokenTypes[$token] : self::TYPE_LITERAL;
            -
            -			if( $newlineFound && isset( $semicolon[$state][$type] ) ) {
            -				// This token triggers the semicolon insertion mechanism of javascript. While we
            -				// could add the ; token here ourselves, keeping the newline has a few advantages.
            -				$out .= "\n";
            -				$state = self::STATEMENT;
            -				$lineLength = 0;
            -			} elseif( $maxLineLength > 0 && $lineLength + $end - $pos > $maxLineLength &&
            -					!isset( $semicolon[$state][$type] ) && $type !== self::TYPE_INCR_OP )
            -			{
            -				// This line would get too long if we added $token, so add a newline first.
            -				// Only do this if it won't trigger semicolon insertion and if it won't
            -				// put a postfix increment operator on its own line, which is illegal in js.
            -				$out .= "\n";
            -				$lineLength = 0;
            -			// Check, whether we have to separate the token from the last one with whitespace
            -			} elseif( !isset( $opChars[$last] ) && !isset( $opChars[$ch] ) ) {
            -				$out .= ' ';
            -				$lineLength++;
            -			// Don't accidentally create ++, -- or // tokens
            -			} elseif( $last === $ch && ( $ch === '+' || $ch === '-' || $ch === '/' ) ) {
            -				$out .= ' ';
            -				$lineLength++;
            -			}
            -
            -			$out .= $token;
            -			$lineLength += $end - $pos; // += strlen( $token )
            -			$last = $s[$end - 1];
            -			$pos = $end;
            -			$newlineFound = false;
            -
            -			// Output a newline after the token if required
            -			// This is checked before AND after switching state
            -			$newlineAdded = false;
            -			if ( $statementsOnOwnLine && !$newlineAdded && isset( $newlineBefore[$state][$type] ) ) {
            -				$out .= "\n";
            -				$lineLength = 0;
            -				$newlineAdded = true;
            -			}
            -
            -			// Now that we have output our token, transition into the new state.
            -			if( isset( $push[$state][$type] ) && count( $stack ) < self::STACK_LIMIT ) {
            -				$stack[] = $push[$state][$type];
            -			}
            -			if( $stack && isset( $pop[$state][$type] ) ) {
            -				$state = array_pop( $stack );
            -			} elseif( isset( $goto[$state][$type] ) ) {
            -				$state = $goto[$state][$type];
            -			}
            -
            -			// Check for newline insertion again
            -			if ( $statementsOnOwnLine && !$newlineAdded && isset( $newlineAfter[$state][$type] ) ) {
            -				$out .= "\n";
            -				$lineLength = 0;
            -			}
            -		}
            -		return $out;
            -	}
            -
            -	static function parseError($fullJavascript, $position, $errorMsg) {
            -		// TODO: Handle the error: trigger_error, throw exception, return false...
            -		return false;
            -	}
            -}
            diff --git a/3rdparty/miniColors/GPL-LICENSE.txt b/3rdparty/miniColors/GPL-LICENSE.txt
            deleted file mode 100644
            index 11dddd00ef0e91a0bce53b034d6b5b318a84e690..0000000000000000000000000000000000000000
            --- a/3rdparty/miniColors/GPL-LICENSE.txt
            +++ /dev/null
            @@ -1,278 +0,0 @@
            -        GNU GENERAL PUBLIC LICENSE
            -           Version 2, June 1991
            -
            - Copyright (C) 1989, 1991 Free Software Foundation, Inc.
            - 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
            - Everyone is permitted to copy and distribute verbatim copies
            - of this license document, but changing it is not allowed.
            -
            -          Preamble
            -
            -  The licenses for most software are designed to take away your
            -freedom to share and change it.  By contrast, the GNU General Public
            -License is intended to guarantee your freedom to share and change free
            -software--to make sure the software is free for all its users.  This
            -General Public License applies to most of the Free Software
            -Foundation's software and to any other program whose authors commit to
            -using it.  (Some other Free Software Foundation software is covered by
            -the GNU Lesser General Public License instead.)  You can apply it to
            -your programs, too.
            -
            -  When we speak of free software, we are referring to freedom, not
            -price.  Our General Public Licenses are designed to make sure that you
            -have the freedom to distribute copies of free software (and charge for
            -this service if you wish), that you receive source code or can get it
            -if you want it, that you can change the software or use pieces of it
            -in new free programs; and that you know you can do these things.
            -
            -  To protect your rights, we need to make restrictions that forbid
            -anyone to deny you these rights or to ask you to surrender the rights.
            -These restrictions translate to certain responsibilities for you if you
            -distribute copies of the software, or if you modify it.
            -
            -  For example, if you distribute copies of such a program, whether
            -gratis or for a fee, you must give the recipients all the rights that
            -you have.  You must make sure that they, too, receive or can get the
            -source code.  And you must show them these terms so they know their
            -rights.
            -
            -  We protect your rights with two steps: (1) copyright the software, and
            -(2) offer you this license which gives you legal permission to copy,
            -distribute and/or modify the software.
            -
            -  Also, for each author's protection and ours, we want to make certain
            -that everyone understands that there is no warranty for this free
            -software.  If the software is modified by someone else and passed on, we
            -want its recipients to know that what they have is not the original, so
            -that any problems introduced by others will not reflect on the original
            -authors' reputations.
            -
            -  Finally, any free program is threatened constantly by software
            -patents.  We wish to avoid the danger that redistributors of a free
            -program will individually obtain patent licenses, in effect making the
            -program proprietary.  To prevent this, we have made it clear that any
            -patent must be licensed for everyone's free use or not licensed at all.
            -
            -  The precise terms and conditions for copying, distribution and
            -modification follow.
            -
            -        GNU GENERAL PUBLIC LICENSE
            -   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            -
            -  0. This License applies to any program or other work which contains
            -a notice placed by the copyright holder saying it may be distributed
            -under the terms of this General Public License.  The "Program", below,
            -refers to any such program or work, and a "work based on the Program"
            -means either the Program or any derivative work under copyright law:
            -that is to say, a work containing the Program or a portion of it,
            -either verbatim or with modifications and/or translated into another
            -language.  (Hereinafter, translation is included without limitation in
            -the term "modification".)  Each licensee is addressed as "you".
            -
            -Activities other than copying, distribution and modification are not
            -covered by this License; they are outside its scope.  The act of
            -running the Program is not restricted, and the output from the Program
            -is covered only if its contents constitute a work based on the
            -Program (independent of having been made by running the Program).
            -Whether that is true depends on what the Program does.
            -
            -  1. You may copy and distribute verbatim copies of the Program's
            -source code as you receive it, in any medium, provided that you
            -conspicuously and appropriately publish on each copy an appropriate
            -copyright notice and disclaimer of warranty; keep intact all the
            -notices that refer to this License and to the absence of any warranty;
            -and give any other recipients of the Program a copy of this License
            -along with the Program.
            -
            -You may charge a fee for the physical act of transferring a copy, and
            -you may at your option offer warranty protection in exchange for a fee.
            -
            -  2. You may modify your copy or copies of the Program or any portion
            -of it, thus forming a work based on the Program, and copy and
            -distribute such modifications or work under the terms of Section 1
            -above, provided that you also meet all of these conditions:
            -
            -    a) You must cause the modified files to carry prominent notices
            -    stating that you changed the files and the date of any change.
            -
            -    b) You must cause any work that you distribute or publish, that in
            -    whole or in part contains or is derived from the Program or any
            -    part thereof, to be licensed as a whole at no charge to all third
            -    parties under the terms of this License.
            -
            -    c) If the modified program normally reads commands interactively
            -    when run, you must cause it, when started running for such
            -    interactive use in the most ordinary way, to print or display an
            -    announcement including an appropriate copyright notice and a
            -    notice that there is no warranty (or else, saying that you provide
            -    a warranty) and that users may redistribute the program under
            -    these conditions, and telling the user how to view a copy of this
            -    License.  (Exception: if the Program itself is interactive but
            -    does not normally print such an announcement, your work based on
            -    the Program is not required to print an announcement.)
            -
            -These requirements apply to the modified work as a whole.  If
            -identifiable sections of that work are not derived from the Program,
            -and can be reasonably considered independent and separate works in
            -themselves, then this License, and its terms, do not apply to those
            -sections when you distribute them as separate works.  But when you
            -distribute the same sections as part of a whole which is a work based
            -on the Program, the distribution of the whole must be on the terms of
            -this License, whose permissions for other licensees extend to the
            -entire whole, and thus to each and every part regardless of who wrote it.
            -
            -Thus, it is not the intent of this section to claim rights or contest
            -your rights to work written entirely by you; rather, the intent is to
            -exercise the right to control the distribution of derivative or
            -collective works based on the Program.
            -
            -In addition, mere aggregation of another work not based on the Program
            -with the Program (or with a work based on the Program) on a volume of
            -a storage or distribution medium does not bring the other work under
            -the scope of this License.
            -
            -  3. You may copy and distribute the Program (or a work based on it,
            -under Section 2) in object code or executable form under the terms of
            -Sections 1 and 2 above provided that you also do one of the following:
            -
            -    a) Accompany it with the complete corresponding machine-readable
            -    source code, which must be distributed under the terms of Sections
            -    1 and 2 above on a medium customarily used for software interchange; or,
            -
            -    b) Accompany it with a written offer, valid for at least three
            -    years, to give any third party, for a charge no more than your
            -    cost of physically performing source distribution, a complete
            -    machine-readable copy of the corresponding source code, to be
            -    distributed under the terms of Sections 1 and 2 above on a medium
            -    customarily used for software interchange; or,
            -
            -    c) Accompany it with the information you received as to the offer
            -    to distribute corresponding source code.  (This alternative is
            -    allowed only for noncommercial distribution and only if you
            -    received the program in object code or executable form with such
            -    an offer, in accord with Subsection b above.)
            -
            -The source code for a work means the preferred form of the work for
            -making modifications to it.  For an executable work, complete source
            -code means all the source code for all modules it contains, plus any
            -associated interface definition files, plus the scripts used to
            -control compilation and installation of the executable.  However, as a
            -special exception, the source code distributed need not include
            -anything that is normally distributed (in either source or binary
            -form) with the major components (compiler, kernel, and so on) of the
            -operating system on which the executable runs, unless that component
            -itself accompanies the executable.
            -
            -If distribution of executable or object code is made by offering
            -access to copy from a designated place, then offering equivalent
            -access to copy the source code from the same place counts as
            -distribution of the source code, even though third parties are not
            -compelled to copy the source along with the object code.
            -
            -  4. You may not copy, modify, sublicense, or distribute the Program
            -except as expressly provided under this License.  Any attempt
            -otherwise to copy, modify, sublicense or distribute the Program is
            -void, and will automatically terminate your rights under this License.
            -However, parties who have received copies, or rights, from you under
            -this License will not have their licenses terminated so long as such
            -parties remain in full compliance.
            -
            -  5. You are not required to accept this License, since you have not
            -signed it.  However, nothing else grants you permission to modify or
            -distribute the Program or its derivative works.  These actions are
            -prohibited by law if you do not accept this License.  Therefore, by
            -modifying or distributing the Program (or any work based on the
            -Program), you indicate your acceptance of this License to do so, and
            -all its terms and conditions for copying, distributing or modifying
            -the Program or works based on it.
            -
            -  6. Each time you redistribute the Program (or any work based on the
            -Program), the recipient automatically receives a license from the
            -original licensor to copy, distribute or modify the Program subject to
            -these terms and conditions.  You may not impose any further
            -restrictions on the recipients' exercise of the rights granted herein.
            -You are not responsible for enforcing compliance by third parties to
            -this License.
            -
            -  7. If, as a consequence of a court judgment or allegation of patent
            -infringement or for any other reason (not limited to patent issues),
            -conditions are imposed on you (whether by court order, agreement or
            -otherwise) that contradict the conditions of this License, they do not
            -excuse you from the conditions of this License.  If you cannot
            -distribute so as to satisfy simultaneously your obligations under this
            -License and any other pertinent obligations, then as a consequence you
            -may not distribute the Program at all.  For example, if a patent
            -license would not permit royalty-free redistribution of the Program by
            -all those who receive copies directly or indirectly through you, then
            -the only way you could satisfy both it and this License would be to
            -refrain entirely from distribution of the Program.
            -
            -If any portion of this section is held invalid or unenforceable under
            -any particular circumstance, the balance of the section is intended to
            -apply and the section as a whole is intended to apply in other
            -circumstances.
            -
            -It is not the purpose of this section to induce you to infringe any
            -patents or other property right claims or to contest validity of any
            -such claims; this section has the sole purpose of protecting the
            -integrity of the free software distribution system, which is
            -implemented by public license practices.  Many people have made
            -generous contributions to the wide range of software distributed
            -through that system in reliance on consistent application of that
            -system; it is up to the author/donor to decide if he or she is willing
            -to distribute software through any other system and a licensee cannot
            -impose that choice.
            -
            -This section is intended to make thoroughly clear what is believed to
            -be a consequence of the rest of this License.
            -
            -  8. If the distribution and/or use of the Program is restricted in
            -certain countries either by patents or by copyrighted interfaces, the
            -original copyright holder who places the Program under this License
            -may add an explicit geographical distribution limitation excluding
            -those countries, so that distribution is permitted only in or among
            -countries not thus excluded.  In such case, this License incorporates
            -the limitation as if written in the body of this License.
            -
            -  9. The Free Software Foundation may publish revised and/or new versions
            -of the General Public License from time to time.  Such new versions will
            -be similar in spirit to the present version, but may differ in detail to
            -address new problems or concerns.
            -
            -Each version is given a distinguishing version number.  If the Program
            -specifies a version number of this License which applies to it and "any
            -later version", you have the option of following the terms and conditions
            -either of that version or of any later version published by the Free
            -Software Foundation.  If the Program does not specify a version number of
            -this License, you may choose any version ever published by the Free Software
            -Foundation.
            -
            -  10. If you wish to incorporate parts of the Program into other free
            -programs whose distribution conditions are different, write to the author
            -to ask for permission.  For software which is copyrighted by the Free
            -Software Foundation, write to the Free Software Foundation; we sometimes
            -make exceptions for this.  Our decision will be guided by the two goals
            -of preserving the free status of all derivatives of our free software and
            -of promoting the sharing and reuse of software generally.
            -
            -          NO WARRANTY
            -
            -  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
            -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
            -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
            -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
            -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
            -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
            -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
            -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
            -REPAIR OR CORRECTION.
            -
            -  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
            -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
            -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
            -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
            -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
            -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
            -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
            -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
            -POSSIBILITY OF SUCH DAMAGES.
            diff --git a/3rdparty/miniColors/MIT-LICENSE.txt b/3rdparty/miniColors/MIT-LICENSE.txt
            deleted file mode 100644
            index ec6f75815765c81e5b652b2846a4bb5ee9e6a8b6..0000000000000000000000000000000000000000
            --- a/3rdparty/miniColors/MIT-LICENSE.txt
            +++ /dev/null
            @@ -1,20 +0,0 @@
            -Copyright (c) Cory LaViska
            -
            -Permission is hereby granted, free of charge, to any person obtaining
            -a copy of this software and associated documentation files (the
            -"Software"), to deal in the Software without restriction, including
            -without limitation the rights to use, copy, modify, merge, publish,
            -distribute, sublicense, and/or sell copies of the Software, and to
            -permit persons to whom the Software is furnished to do so, subject to
            -the following conditions:
            -
            -The above copyright notice and this permission notice shall be
            -included in all copies or substantial portions of the Software.
            -
            -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
            -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
            -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
            -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
            -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
            -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
            -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            diff --git a/3rdparty/miniColors/css/images/colors.png b/3rdparty/miniColors/css/images/colors.png
            deleted file mode 100755
            index deb50a9ae102938cadf7aa93824d1527536b77b8..0000000000000000000000000000000000000000
            Binary files a/3rdparty/miniColors/css/images/colors.png and /dev/null differ
            diff --git a/3rdparty/miniColors/css/images/trigger.png b/3rdparty/miniColors/css/images/trigger.png
            deleted file mode 100755
            index 96c91294f3f167419d948cfba6c5b8a91d6196fe..0000000000000000000000000000000000000000
            Binary files a/3rdparty/miniColors/css/images/trigger.png and /dev/null differ
            diff --git a/3rdparty/miniColors/css/jquery.miniColors.css b/3rdparty/miniColors/css/jquery.miniColors.css
            deleted file mode 100755
            index 592f44894d138d0e6ed15914d699d24187022a4f..0000000000000000000000000000000000000000
            --- a/3rdparty/miniColors/css/jquery.miniColors.css
            +++ /dev/null
            @@ -1,125 +0,0 @@
            -INPUT.miniColors {
            -	margin-right: 4px;
            -}
            -
            -.miniColors-selector {
            -	position: absolute;
            -	width: 175px;
            -	height: 150px;
            -	background: white;
            -	border: solid 1px #bababa;
            -	-moz-box-shadow: 0 0 6px rgba(0, 0, 0, .25);
            -	-webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .25);
            -	box-shadow: 0 0 6px rgba(0, 0, 0, .25);
            -	-moz-border-radius: 5px;
            -	-webkit-border-radius: 5px;
            -	border-radius: 5px;
            -	padding: 5px;
            -	z-index: 999999;
            -}
            -
            -.miniColors.opacity.miniColors-selector {
            -	width: 200px;
            -}
            -
            -.miniColors-selector.black {
            -	background: black;
            -	border-color: black;
            -}
            -
            -.miniColors-colors {
            -	position: absolute;
            -	top: 5px;
            -	left: 5px;
            -	width: 150px;
            -	height: 150px;
            -	background: url(images/colors.png) -40px 0 no-repeat;
            -	cursor: crosshair;
            -}
            -
            -.miniColors.opacity .miniColors-colors {
            -	left: 30px;
            -}
            -
            -.miniColors-hues {
            -	position: absolute;
            -	top: 5px;
            -	left: 160px;
            -	width: 20px;
            -	height: 150px;
            -	background: url(images/colors.png) 0 0 no-repeat;
            -	cursor: crosshair;
            -}
            -
            -.miniColors.opacity .miniColors-hues {
            -	left: 185px;
            -}
            -
            -.miniColors-opacity {
            -	position: absolute;
            -	top: 5px;
            -	left: 5px;
            -	width: 20px;
            -	height: 150px;
            -	background: url(images/colors.png) -20px 0 no-repeat;
            -	cursor: crosshair;
            -}
            -
            -.miniColors-colorPicker {
            -	position: absolute;
            -	width: 11px;
            -	height: 11px;
            -	border: 1px solid black;
            -	-moz-border-radius: 11px;
            -	-webkit-border-radius: 11px;
            -	border-radius: 11px;
            -}
            -.miniColors-colorPicker-inner {
            -	position: absolute;
            -	top: 0;
            -	left: 0; 
            -	width: 7px;
            -	height: 7px;
            -	border: 2px solid white;
            -	-moz-border-radius: 9px;
            -	-webkit-border-radius: 9px;
            -	border-radius: 9px;
            -}
            -
            -.miniColors-huePicker,
            -.miniColors-opacityPicker {
            -	position: absolute;
            -	left: -2px;
            -	width: 22px;
            -	height: 2px;
            -	border: 1px solid black;
            -	background: white;
            -	margin-top: -1px;
            -	border-radius: 2px;
            -}
            -
            -.miniColors-trigger, 
            -.miniColors-triggerWrap {
            -	width: 22px;
            -	height: 22px;
            -	display: inline-block;
            -}
            -
            -.miniColors-triggerWrap {
            -	background: url(images/trigger.png) -22px 0 no-repeat;
            -}
            -
            -.miniColors-triggerWrap.disabled {
            -	filter: alpha(opacity=50);
            -	opacity: .5;
            -}
            -
            -.miniColors-trigger {
            -	vertical-align: middle;
            -	outline: none;
            -	background: url(images/trigger.png) 0 0 no-repeat;
            -}
            -
            -.miniColors-triggerWrap.disabled .miniColors-trigger {
            -	cursor: default;
            -}
            \ No newline at end of file
            diff --git a/3rdparty/miniColors/js/jquery.miniColors.js b/3rdparty/miniColors/js/jquery.miniColors.js
            deleted file mode 100755
            index a0f439c2c49aa43599f78dd95494e7008b060f27..0000000000000000000000000000000000000000
            --- a/3rdparty/miniColors/js/jquery.miniColors.js
            +++ /dev/null
            @@ -1,710 +0,0 @@
            -/*
            - * jQuery miniColors: A small color selector
            - *
            - * Copyright 2012 Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/)
            - *
            - * Dual licensed under the MIT or GPL Version 2 licenses
            - *
            -*/
            -if(jQuery) (function($) {
            -	
            -	$.extend($.fn, {
            -		
            -		miniColors: function(o, data) {
            -			
            -			var create = function(input, o, data) {
            -				//
            -				// Creates a new instance of the miniColors selector
            -				//
            -				
            -				// Determine initial color (defaults to white)
            -				var color = expandHex(input.val()) || 'ffffff',
            -					hsb = hex2hsb(color),
            -					rgb = hsb2rgb(hsb),
            -					alpha = parseFloat(input.attr('data-opacity')).toFixed(2);
            -				
            -				if( alpha > 1 ) alpha = 1;
            -				if( alpha < 0 ) alpha = 0;
            -				
            -				// Create trigger
            -				var trigger = $('');
            -				trigger.insertAfter(input);
            -				trigger.wrap('');
            -				if( o.opacity ) {
            -					trigger.css('backgroundColor', 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + alpha + ')');
            -				}
            -				
            -				// Set input data and update attributes
            -				input
            -					.addClass('miniColors')
            -					.data('original-maxlength', input.attr('maxlength') || null)
            -					.data('original-autocomplete', input.attr('autocomplete') || null)
            -					.data('letterCase', o.letterCase === 'uppercase' ? 'uppercase' : 'lowercase')
            -					.data('opacity', o.opacity ? true : false)
            -					.data('alpha', alpha)
            -					.data('trigger', trigger)
            -					.data('hsb', hsb)
            -					.data('change', o.change ? o.change : null)
            -					.data('close', o.close ? o.close : null)
            -					.data('open', o.open ? o.open : null)
            -					.attr('maxlength', 7)
            -					.attr('autocomplete', 'off')
            -					.val('#' + convertCase(color, o.letterCase));
            -				
            -				// Handle options
            -				if( o.readonly || input.prop('readonly') ) input.prop('readonly', true);
            -				if( o.disabled || input.prop('disabled') ) disable(input);
            -				
            -				// Show selector when trigger is clicked
            -				trigger.on('click.miniColors', function(event) {
            -					event.preventDefault();
            -					if( input.val() === '' ) input.val('#');
            -					show(input);
            -
            -				});
            -				
            -				// Show selector when input receives focus
            -				input.on('focus.miniColors', function(event) {
            -					if( input.val() === '' ) input.val('#');
            -					show(input);
            -				});
            -				
            -				// Hide on blur
            -				input.on('blur.miniColors', function(event) {
            -					var hex = expandHex( hsb2hex(input.data('hsb')) );
            -					input.val( hex ? '#' + convertCase(hex, input.data('letterCase')) : '' );
            -				});
            -				
            -				// Hide when tabbing out of the input
            -				input.on('keydown.miniColors', function(event) {
            -					if( event.keyCode === 9 ) hide(input);
            -				});
            -				
            -				// Update when color is typed in
            -				input.on('keyup.miniColors', function(event) {
            -					setColorFromInput(input);
            -				});
            -				
            -				// Handle pasting
            -				input.on('paste.miniColors', function(event) {
            -					// Short pause to wait for paste to complete
            -					setTimeout( function() {
            -						setColorFromInput(input);
            -					}, 5);
            -				});
            -				
            -			};
            -			
            -			var destroy = function(input) {
            -				//
            -				// Destroys an active instance of the miniColors selector
            -				//
            -				hide();
            -				input = $(input);
            -				
            -				// Restore to original state
            -				input.data('trigger').parent().remove();
            -				input
            -					.attr('autocomplete', input.data('original-autocomplete'))
            -					.attr('maxlength', input.data('original-maxlength'))
            -					.removeData()
            -					.removeClass('miniColors')
            -					.off('.miniColors');
            -				$(document).off('.miniColors');
            -			};
            -			
            -			var enable = function(input) {
            -				//
            -				// Enables the input control and the selector
            -				//
            -				input
            -					.prop('disabled', false)
            -					.data('trigger').parent().removeClass('disabled');
            -			};
            -			
            -			var disable = function(input) {
            -				//
            -				// Disables the input control and the selector
            -				//
            -				hide(input);
            -				input
            -					.prop('disabled', true)
            -					.data('trigger').parent().addClass('disabled');
            -			};
            -			
            -			var show = function(input) {
            -				//
            -				// Shows the miniColors selector
            -				//
            -				if( input.prop('disabled') ) return false;
            -				
            -				// Hide all other instances 
            -				hide();				
            -                
            -				// Generate the selector
            -				var selector = $('
            '); - selector - .append('
            ') - .append('
            ') - .css('display', 'none') - .addClass( input.attr('class') ); - - // Opacity - if( input.data('opacity') ) { - selector - .addClass('opacity') - .prepend('
            '); - } - - // Set background for colors - var hsb = input.data('hsb'); - selector - .find('.miniColors-colors').css('backgroundColor', '#' + hsb2hex({ h: hsb.h, s: 100, b: 100 })).end() - .find('.miniColors-opacity').css('backgroundColor', '#' + hsb2hex({ h: hsb.h, s: hsb.s, b: hsb.b })).end(); - - // Set colorPicker position - var colorPosition = input.data('colorPosition'); - if( !colorPosition ) colorPosition = getColorPositionFromHSB(hsb); - selector.find('.miniColors-colorPicker') - .css('top', colorPosition.y + 'px') - .css('left', colorPosition.x + 'px'); - - // Set huePicker position - var huePosition = input.data('huePosition'); - if( !huePosition ) huePosition = getHuePositionFromHSB(hsb); - selector.find('.miniColors-huePicker').css('top', huePosition + 'px'); - - // Set opacity position - var opacityPosition = input.data('opacityPosition'); - if( !opacityPosition ) opacityPosition = getOpacityPositionFromAlpha(input.attr('data-opacity')); - selector.find('.miniColors-opacityPicker').css('top', opacityPosition + 'px'); - - // Set input data - input - .data('selector', selector) - .data('huePicker', selector.find('.miniColors-huePicker')) - .data('opacityPicker', selector.find('.miniColors-opacityPicker')) - .data('colorPicker', selector.find('.miniColors-colorPicker')) - .data('mousebutton', 0); - - $('BODY').append(selector); - - // Position the selector - var trigger = input.data('trigger'), - hidden = !input.is(':visible'), - top = hidden ? trigger.offset().top + trigger.outerHeight() : input.offset().top + input.outerHeight(), - left = hidden ? trigger.offset().left : input.offset().left, - selectorWidth = selector.outerWidth(), - selectorHeight = selector.outerHeight(), - triggerWidth = trigger.outerWidth(), - triggerHeight = trigger.outerHeight(), - windowHeight = $(window).height(), - windowWidth = $(window).width(), - scrollTop = $(window).scrollTop(), - scrollLeft = $(window).scrollLeft(); - - // Adjust based on viewport - if( (top + selectorHeight) > windowHeight + scrollTop ) top = top - selectorHeight - triggerHeight; - if( (left + selectorWidth) > windowWidth + scrollLeft ) left = left - selectorWidth + triggerWidth; - - // Set position and show - selector.css({ - top: top, - left: left - }).fadeIn(100); - - // Prevent text selection in IE - selector.on('selectstart', function() { return false; }); - - // Hide on resize (IE7/8 trigger this when any element is resized...) - if( !$.browser.msie || ($.browser.msie && $.browser.version >= 9) ) { - $(window).on('resize.miniColors', function(event) { - hide(input); - }); - } - - $(document) - .on('mousedown.miniColors touchstart.miniColors', function(event) { - - input.data('mousebutton', 1); - var testSubject = $(event.target).parents().andSelf(); - - if( testSubject.hasClass('miniColors-colors') ) { - event.preventDefault(); - input.data('moving', 'colors'); - moveColor(input, event); - } - - if( testSubject.hasClass('miniColors-hues') ) { - event.preventDefault(); - input.data('moving', 'hues'); - moveHue(input, event); - } - - if( testSubject.hasClass('miniColors-opacity') ) { - event.preventDefault(); - input.data('moving', 'opacity'); - moveOpacity(input, event); - } - - if( testSubject.hasClass('miniColors-selector') ) { - event.preventDefault(); - return; - } - - if( testSubject.hasClass('miniColors') ) return; - - hide(input); - }) - .on('mouseup.miniColors touchend.miniColors', function(event) { - event.preventDefault(); - input.data('mousebutton', 0).removeData('moving'); - }) - .on('mousemove.miniColors touchmove.miniColors', function(event) { - event.preventDefault(); - if( input.data('mousebutton') === 1 ) { - if( input.data('moving') === 'colors' ) moveColor(input, event); - if( input.data('moving') === 'hues' ) moveHue(input, event); - if( input.data('moving') === 'opacity' ) moveOpacity(input, event); - } - }); - - // Fire open callback - if( input.data('open') ) { - input.data('open').call(input.get(0), '#' + hsb2hex(hsb), $.extend(hsb2rgb(hsb), { a: parseFloat(input.attr('data-opacity')) })); - } - - }; - - var hide = function(input) { - - // - // Hides one or more miniColors selectors - // - - // Hide all other instances if input isn't specified - if( !input ) input = $('.miniColors'); - - input.each( function() { - var selector = $(this).data('selector'); - $(this).removeData('selector'); - $(selector).fadeOut(100, function() { - // Fire close callback - if( input.data('close') ) { - var hsb = input.data('hsb'), hex = hsb2hex(hsb); - input.data('close').call(input.get(0), '#' + hex, $.extend(hsb2rgb(hsb), { a: parseFloat(input.attr('data-opacity')) })); - } - $(this).remove(); - }); - }); - - $(document).off('.miniColors'); - - }; - - var moveColor = function(input, event) { - - var colorPicker = input.data('colorPicker'); - - colorPicker.hide(); - - var position = { - x: event.pageX, - y: event.pageY - }; - - // Touch support - if( event.originalEvent.changedTouches ) { - position.x = event.originalEvent.changedTouches[0].pageX; - position.y = event.originalEvent.changedTouches[0].pageY; - } - position.x = position.x - input.data('selector').find('.miniColors-colors').offset().left - 6; - position.y = position.y - input.data('selector').find('.miniColors-colors').offset().top - 6; - if( position.x <= -5 ) position.x = -5; - if( position.x >= 144 ) position.x = 144; - if( position.y <= -5 ) position.y = -5; - if( position.y >= 144 ) position.y = 144; - - input.data('colorPosition', position); - colorPicker.css('left', position.x).css('top', position.y).show(); - - // Calculate saturation - var s = Math.round((position.x + 5) * 0.67); - if( s < 0 ) s = 0; - if( s > 100 ) s = 100; - - // Calculate brightness - var b = 100 - Math.round((position.y + 5) * 0.67); - if( b < 0 ) b = 0; - if( b > 100 ) b = 100; - - // Update HSB values - var hsb = input.data('hsb'); - hsb.s = s; - hsb.b = b; - - // Set color - setColor(input, hsb, true); - }; - - var moveHue = function(input, event) { - - var huePicker = input.data('huePicker'); - - huePicker.hide(); - - var position = event.pageY; - - // Touch support - if( event.originalEvent.changedTouches ) { - position = event.originalEvent.changedTouches[0].pageY; - } - - position = position - input.data('selector').find('.miniColors-colors').offset().top - 1; - if( position <= -1 ) position = -1; - if( position >= 149 ) position = 149; - input.data('huePosition', position); - huePicker.css('top', position).show(); - - // Calculate hue - var h = Math.round((150 - position - 1) * 2.4); - if( h < 0 ) h = 0; - if( h > 360 ) h = 360; - - // Update HSB values - var hsb = input.data('hsb'); - hsb.h = h; - - // Set color - setColor(input, hsb, true); - - }; - - var moveOpacity = function(input, event) { - - var opacityPicker = input.data('opacityPicker'); - - opacityPicker.hide(); - - var position = event.pageY; - - // Touch support - if( event.originalEvent.changedTouches ) { - position = event.originalEvent.changedTouches[0].pageY; - } - - position = position - input.data('selector').find('.miniColors-colors').offset().top - 1; - if( position <= -1 ) position = -1; - if( position >= 149 ) position = 149; - input.data('opacityPosition', position); - opacityPicker.css('top', position).show(); - - // Calculate opacity - var alpha = parseFloat((150 - position - 1) / 150).toFixed(2); - if( alpha < 0 ) alpha = 0; - if( alpha > 1 ) alpha = 1; - - // Update opacity - input - .data('alpha', alpha) - .attr('data-opacity', alpha); - - // Set color - setColor(input, input.data('hsb'), true); - - }; - - var setColor = function(input, hsb, updateInput) { - input.data('hsb', hsb); - var hex = hsb2hex(hsb), - selector = $(input.data('selector')); - if( updateInput ) input.val( '#' + convertCase(hex, input.data('letterCase')) ); - - selector - .find('.miniColors-colors').css('backgroundColor', '#' + hsb2hex({ h: hsb.h, s: 100, b: 100 })).end() - .find('.miniColors-opacity').css('backgroundColor', '#' + hex).end(); - - var rgb = hsb2rgb(hsb); - - // Set background color (also fallback for non RGBA browsers) - input.data('trigger').css('backgroundColor', '#' + hex); - - // Set background color + opacity - if( input.data('opacity') ) { - input.data('trigger').css('backgroundColor', 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + input.attr('data-opacity') + ')'); - } - - // Fire change callback - if( input.data('change') ) { - if( (hex + ',' + input.attr('data-opacity')) === input.data('lastChange') ) return; - input.data('change').call(input.get(0), '#' + hex, $.extend(hsb2rgb(hsb), { a: parseFloat(input.attr('data-opacity')) })); - input.data('lastChange', hex + ',' + input.attr('data-opacity')); - } - - }; - - var setColorFromInput = function(input) { - - input.val('#' + cleanHex(input.val())); - var hex = expandHex(input.val()); - if( !hex ) return false; - - // Get HSB equivalent - var hsb = hex2hsb(hex); - - // Set colorPicker position - var colorPosition = getColorPositionFromHSB(hsb); - var colorPicker = $(input.data('colorPicker')); - colorPicker.css('top', colorPosition.y + 'px').css('left', colorPosition.x + 'px'); - input.data('colorPosition', colorPosition); - - // Set huePosition position - var huePosition = getHuePositionFromHSB(hsb); - var huePicker = $(input.data('huePicker')); - huePicker.css('top', huePosition + 'px'); - input.data('huePosition', huePosition); - - // Set opacity position - var opacityPosition = getOpacityPositionFromAlpha(input.attr('data-opacity')); - var opacityPicker = $(input.data('opacityPicker')); - opacityPicker.css('top', opacityPosition + 'px'); - input.data('opacityPosition', opacityPosition); - setColor(input, hsb); - - return true; - - }; - - var convertCase = function(string, letterCase) { - if( letterCase === 'uppercase' ) { - return string.toUpperCase(); - } else { - return string.toLowerCase(); - } - }; - - var getColorPositionFromHSB = function(hsb) { - var x = Math.ceil(hsb.s / 0.67); - if( x < 0 ) x = 0; - if( x > 150 ) x = 150; - var y = 150 - Math.ceil(hsb.b / 0.67); - if( y < 0 ) y = 0; - if( y > 150 ) y = 150; - return { x: x - 5, y: y - 5 }; - }; - - var getHuePositionFromHSB = function(hsb) { - var y = 150 - (hsb.h / 2.4); - if( y < 0 ) h = 0; - if( y > 150 ) h = 150; - return y; - }; - - var getOpacityPositionFromAlpha = function(alpha) { - var y = 150 * alpha; - if( y < 0 ) y = 0; - if( y > 150 ) y = 150; - return 150 - y; - }; - - var cleanHex = function(hex) { - return hex.replace(/[^A-F0-9]/ig, ''); - }; - - var expandHex = function(hex) { - hex = cleanHex(hex); - if( !hex ) return null; - if( hex.length === 3 ) hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; - return hex.length === 6 ? hex : null; - }; - - var hsb2rgb = function(hsb) { - var rgb = {}; - var h = Math.round(hsb.h); - var s = Math.round(hsb.s*255/100); - var v = Math.round(hsb.b*255/100); - if(s === 0) { - rgb.r = rgb.g = rgb.b = v; - } else { - var t1 = v; - var t2 = (255 - s) * v / 255; - var t3 = (t1 - t2) * (h % 60) / 60; - if( h === 360 ) h = 0; - if( h < 60 ) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; } - else if( h < 120 ) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; } - else if( h < 180 ) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; } - else if( h < 240 ) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; } - else if( h < 300 ) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; } - else if( h < 360 ) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; } - else { rgb.r = 0; rgb.g = 0; rgb.b = 0; } - } - return { - r: Math.round(rgb.r), - g: Math.round(rgb.g), - b: Math.round(rgb.b) - }; - }; - - var rgb2hex = function(rgb) { - var hex = [ - rgb.r.toString(16), - rgb.g.toString(16), - rgb.b.toString(16) - ]; - $.each(hex, function(nr, val) { - if (val.length === 1) hex[nr] = '0' + val; - }); - return hex.join(''); - }; - - var hex2rgb = function(hex) { - hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16); - - return { - r: hex >> 16, - g: (hex & 0x00FF00) >> 8, - b: (hex & 0x0000FF) - }; - }; - - var rgb2hsb = function(rgb) { - var hsb = { h: 0, s: 0, b: 0 }; - var min = Math.min(rgb.r, rgb.g, rgb.b); - var max = Math.max(rgb.r, rgb.g, rgb.b); - var delta = max - min; - hsb.b = max; - hsb.s = max !== 0 ? 255 * delta / max : 0; - if( hsb.s !== 0 ) { - if( rgb.r === max ) { - hsb.h = (rgb.g - rgb.b) / delta; - } else if( rgb.g === max ) { - hsb.h = 2 + (rgb.b - rgb.r) / delta; - } else { - hsb.h = 4 + (rgb.r - rgb.g) / delta; - } - } else { - hsb.h = -1; - } - hsb.h *= 60; - if( hsb.h < 0 ) { - hsb.h += 360; - } - hsb.s *= 100/255; - hsb.b *= 100/255; - return hsb; - }; - - var hex2hsb = function(hex) { - var hsb = rgb2hsb(hex2rgb(hex)); - // Zero out hue marker for black, white, and grays (saturation === 0) - if( hsb.s === 0 ) hsb.h = 360; - return hsb; - }; - - var hsb2hex = function(hsb) { - return rgb2hex(hsb2rgb(hsb)); - }; - - - // Handle calls to $([selector]).miniColors() - switch(o) { - - case 'readonly': - - $(this).each( function() { - if( !$(this).hasClass('miniColors') ) return; - $(this).prop('readonly', data); - }); - - return $(this); - - case 'disabled': - - $(this).each( function() { - if( !$(this).hasClass('miniColors') ) return; - if( data ) { - disable($(this)); - } else { - enable($(this)); - } - }); - - return $(this); - - case 'value': - - // Getter - if( data === undefined ) { - if( !$(this).hasClass('miniColors') ) return; - var input = $(this), - hex = expandHex(input.val()); - return hex ? '#' + convertCase(hex, input.data('letterCase')) : null; - } - - // Setter - $(this).each( function() { - if( !$(this).hasClass('miniColors') ) return; - $(this).val(data); - setColorFromInput($(this)); - }); - - return $(this); - - case 'opacity': - - // Getter - if( data === undefined ) { - if( !$(this).hasClass('miniColors') ) return; - if( $(this).data('opacity') ) { - return parseFloat($(this).attr('data-opacity')); - } else { - return null; - } - } - - // Setter - $(this).each( function() { - if( !$(this).hasClass('miniColors') ) return; - if( data < 0 ) data = 0; - if( data > 1 ) data = 1; - $(this).attr('data-opacity', data).data('alpha', data); - setColorFromInput($(this)); - }); - - return $(this); - - case 'destroy': - - $(this).each( function() { - if( !$(this).hasClass('miniColors') ) return; - destroy($(this)); - }); - - return $(this); - - default: - - if( !o ) o = {}; - - $(this).each( function() { - - // Must be called on an input element - if( $(this)[0].tagName.toLowerCase() !== 'input' ) return; - - // If a trigger is present, the control was already created - if( $(this).data('trigger') ) return; - - // Create the control - create($(this), o, data); - - }); - - return $(this); - - } - - } - - }); - -})(jQuery); \ No newline at end of file diff --git a/3rdparty/miniColors/js/jquery.miniColors.min.js b/3rdparty/miniColors/js/jquery.miniColors.min.js deleted file mode 100755 index 1d3346455b09b99abfecb35e6cc03c963b6e925e..0000000000000000000000000000000000000000 --- a/3rdparty/miniColors/js/jquery.miniColors.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * jQuery miniColors: A small color selector - * - * Copyright 2012 Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/) - * - * Dual licensed under the MIT or GPL Version 2 licenses - * -*/ -if(jQuery)(function($){$.extend($.fn,{miniColors:function(o,data){var create=function(input,o,data){var color=expandHex(input.val())||'ffffff',hsb=hex2hsb(color),rgb=hsb2rgb(hsb),alpha=parseFloat(input.attr('data-opacity')).toFixed(2);if(alpha>1)alpha=1;if(alpha<0)alpha=0;var trigger=$('');trigger.insertAfter(input);trigger.wrap('');if(o.opacity){trigger.css('backgroundColor','rgba('+rgb.r+', '+rgb.g+', '+rgb.b+', '+alpha+')')}input.addClass('miniColors').data('original-maxlength',input.attr('maxlength')||null).data('original-autocomplete',input.attr('autocomplete')||null).data('letterCase',o.letterCase==='uppercase'?'uppercase':'lowercase').data('opacity',o.opacity?true:false).data('alpha',alpha).data('trigger',trigger).data('hsb',hsb).data('change',o.change?o.change:null).data('close',o.close?o.close:null).data('open',o.open?o.open:null).attr('maxlength',7).attr('autocomplete','off').val('#'+convertCase(color,o.letterCase));if(o.readonly||input.prop('readonly'))input.prop('readonly',true);if(o.disabled||input.prop('disabled'))disable(input);trigger.on('click.miniColors',function(event){event.preventDefault();if(input.val()==='')input.val('#');show(input)});input.on('focus.miniColors',function(event){if(input.val()==='')input.val('#');show(input)});input.on('blur.miniColors',function(event){var hex=expandHex(hsb2hex(input.data('hsb')));input.val(hex?'#'+convertCase(hex,input.data('letterCase')):'')});input.on('keydown.miniColors',function(event){if(event.keyCode===9)hide(input)});input.on('keyup.miniColors',function(event){setColorFromInput(input)});input.on('paste.miniColors',function(event){setTimeout(function(){setColorFromInput(input)},5)})};var destroy=function(input){hide();input=$(input);input.data('trigger').parent().remove();input.attr('autocomplete',input.data('original-autocomplete')).attr('maxlength',input.data('original-maxlength')).removeData().removeClass('miniColors').off('.miniColors');$(document).off('.miniColors')};var enable=function(input){input.prop('disabled',false).data('trigger').parent().removeClass('disabled')};var disable=function(input){hide(input);input.prop('disabled',true).data('trigger').parent().addClass('disabled')};var show=function(input){if(input.prop('disabled'))return false;hide();var selector=$('
            ');selector.append('
            ').append('
            ').css('display','none').addClass(input.attr('class'));if(input.data('opacity')){selector.addClass('opacity').prepend('
            ')}var hsb=input.data('hsb');selector.find('.miniColors-colors').css('backgroundColor','#'+hsb2hex({h:hsb.h,s:100,b:100})).end().find('.miniColors-opacity').css('backgroundColor','#'+hsb2hex({h:hsb.h,s:hsb.s,b:hsb.b})).end();var colorPosition=input.data('colorPosition');if(!colorPosition)colorPosition=getColorPositionFromHSB(hsb);selector.find('.miniColors-colorPicker').css('top',colorPosition.y+'px').css('left',colorPosition.x+'px');var huePosition=input.data('huePosition');if(!huePosition)huePosition=getHuePositionFromHSB(hsb);selector.find('.miniColors-huePicker').css('top',huePosition+'px');var opacityPosition=input.data('opacityPosition');if(!opacityPosition)opacityPosition=getOpacityPositionFromAlpha(input.attr('data-opacity'));selector.find('.miniColors-opacityPicker').css('top',opacityPosition+'px');input.data('selector',selector).data('huePicker',selector.find('.miniColors-huePicker')).data('opacityPicker',selector.find('.miniColors-opacityPicker')).data('colorPicker',selector.find('.miniColors-colorPicker')).data('mousebutton',0);$('BODY').append(selector);var trigger=input.data('trigger'),hidden=!input.is(':visible'),top=hidden?trigger.offset().top+trigger.outerHeight():input.offset().top+input.outerHeight(),left=hidden?trigger.offset().left:input.offset().left,selectorWidth=selector.outerWidth(),selectorHeight=selector.outerHeight(),triggerWidth=trigger.outerWidth(),triggerHeight=trigger.outerHeight(),windowHeight=$(window).height(),windowWidth=$(window).width(),scrollTop=$(window).scrollTop(),scrollLeft=$(window).scrollLeft();if((top+selectorHeight)>windowHeight+scrollTop)top=top-selectorHeight-triggerHeight;if((left+selectorWidth)>windowWidth+scrollLeft)left=left-selectorWidth+triggerWidth;selector.css({top:top,left:left}).fadeIn(100);selector.on('selectstart',function(){return false});if(!$.browser.msie||($.browser.msie&&$.browser.version>=9)){$(window).on('resize.miniColors',function(event){hide(input)})}$(document).on('mousedown.miniColors touchstart.miniColors',function(event){input.data('mousebutton',1);var testSubject=$(event.target).parents().andSelf();if(testSubject.hasClass('miniColors-colors')){event.preventDefault();input.data('moving','colors');moveColor(input,event)}if(testSubject.hasClass('miniColors-hues')){event.preventDefault();input.data('moving','hues');moveHue(input,event)}if(testSubject.hasClass('miniColors-opacity')){event.preventDefault();input.data('moving','opacity');moveOpacity(input,event)}if(testSubject.hasClass('miniColors-selector')){event.preventDefault();return}if(testSubject.hasClass('miniColors'))return;hide(input)}).on('mouseup.miniColors touchend.miniColors',function(event){event.preventDefault();input.data('mousebutton',0).removeData('moving')}).on('mousemove.miniColors touchmove.miniColors',function(event){event.preventDefault();if(input.data('mousebutton')===1){if(input.data('moving')==='colors')moveColor(input,event);if(input.data('moving')==='hues')moveHue(input,event);if(input.data('moving')==='opacity')moveOpacity(input,event)}});if(input.data('open')){input.data('open').call(input.get(0),'#'+hsb2hex(hsb),$.extend(hsb2rgb(hsb),{a:parseFloat(input.attr('data-opacity'))}))}};var hide=function(input){if(!input)input=$('.miniColors');input.each(function(){var selector=$(this).data('selector');$(this).removeData('selector');$(selector).fadeOut(100,function(){if(input.data('close')){var hsb=input.data('hsb'),hex=hsb2hex(hsb);input.data('close').call(input.get(0),'#'+hex,$.extend(hsb2rgb(hsb),{a:parseFloat(input.attr('data-opacity'))}))}$(this).remove()})});$(document).off('.miniColors')};var moveColor=function(input,event){var colorPicker=input.data('colorPicker');colorPicker.hide();var position={x:event.pageX,y:event.pageY};if(event.originalEvent.changedTouches){position.x=event.originalEvent.changedTouches[0].pageX;position.y=event.originalEvent.changedTouches[0].pageY}position.x=position.x-input.data('selector').find('.miniColors-colors').offset().left-6;position.y=position.y-input.data('selector').find('.miniColors-colors').offset().top-6;if(position.x<=-5)position.x=-5;if(position.x>=144)position.x=144;if(position.y<=-5)position.y=-5;if(position.y>=144)position.y=144;input.data('colorPosition',position);colorPicker.css('left',position.x).css('top',position.y).show();var s=Math.round((position.x+5)*0.67);if(s<0)s=0;if(s>100)s=100;var b=100-Math.round((position.y+5)*0.67);if(b<0)b=0;if(b>100)b=100;var hsb=input.data('hsb');hsb.s=s;hsb.b=b;setColor(input,hsb,true)};var moveHue=function(input,event){var huePicker=input.data('huePicker');huePicker.hide();var position=event.pageY;if(event.originalEvent.changedTouches){position=event.originalEvent.changedTouches[0].pageY}position=position-input.data('selector').find('.miniColors-colors').offset().top-1;if(position<=-1)position=-1;if(position>=149)position=149;input.data('huePosition',position);huePicker.css('top',position).show();var h=Math.round((150-position-1)*2.4);if(h<0)h=0;if(h>360)h=360;var hsb=input.data('hsb');hsb.h=h;setColor(input,hsb,true)};var moveOpacity=function(input,event){var opacityPicker=input.data('opacityPicker');opacityPicker.hide();var position=event.pageY;if(event.originalEvent.changedTouches){position=event.originalEvent.changedTouches[0].pageY}position=position-input.data('selector').find('.miniColors-colors').offset().top-1;if(position<=-1)position=-1;if(position>=149)position=149;input.data('opacityPosition',position);opacityPicker.css('top',position).show();var alpha=parseFloat((150-position-1)/150).toFixed(2);if(alpha<0)alpha=0;if(alpha>1)alpha=1;input.data('alpha',alpha).attr('data-opacity',alpha);setColor(input,input.data('hsb'),true)};var setColor=function(input,hsb,updateInput){input.data('hsb',hsb);var hex=hsb2hex(hsb),selector=$(input.data('selector'));if(updateInput)input.val('#'+convertCase(hex,input.data('letterCase')));selector.find('.miniColors-colors').css('backgroundColor','#'+hsb2hex({h:hsb.h,s:100,b:100})).end().find('.miniColors-opacity').css('backgroundColor','#'+hex).end();var rgb=hsb2rgb(hsb);input.data('trigger').css('backgroundColor','#'+hex);if(input.data('opacity')){input.data('trigger').css('backgroundColor','rgba('+rgb.r+', '+rgb.g+', '+rgb.b+', '+input.attr('data-opacity')+')')}if(input.data('change')){if((hex+','+input.attr('data-opacity'))===input.data('lastChange'))return;input.data('change').call(input.get(0),'#'+hex,$.extend(hsb2rgb(hsb),{a:parseFloat(input.attr('data-opacity'))}));input.data('lastChange',hex+','+input.attr('data-opacity'))}};var setColorFromInput=function(input){input.val('#'+cleanHex(input.val()));var hex=expandHex(input.val());if(!hex)return false;var hsb=hex2hsb(hex);var colorPosition=getColorPositionFromHSB(hsb);var colorPicker=$(input.data('colorPicker'));colorPicker.css('top',colorPosition.y+'px').css('left',colorPosition.x+'px');input.data('colorPosition',colorPosition);var huePosition=getHuePositionFromHSB(hsb);var huePicker=$(input.data('huePicker'));huePicker.css('top',huePosition+'px');input.data('huePosition',huePosition);var opacityPosition=getOpacityPositionFromAlpha(input.attr('data-opacity'));var opacityPicker=$(input.data('opacityPicker'));opacityPicker.css('top',opacityPosition+'px');input.data('opacityPosition',opacityPosition);setColor(input,hsb);return true};var convertCase=function(string,letterCase){if(letterCase==='uppercase'){return string.toUpperCase()}else{return string.toLowerCase()}};var getColorPositionFromHSB=function(hsb){var x=Math.ceil(hsb.s/0.67);if(x<0)x=0;if(x>150)x=150;var y=150-Math.ceil(hsb.b/0.67);if(y<0)y=0;if(y>150)y=150;return{x:x-5,y:y-5}};var getHuePositionFromHSB=function(hsb){var y=150-(hsb.h/2.4);if(y<0)h=0;if(y>150)h=150;return y};var getOpacityPositionFromAlpha=function(alpha){var y=150*alpha;if(y<0)y=0;if(y>150)y=150;return 150-y};var cleanHex=function(hex){return hex.replace(/[^A-F0-9]/ig,'')};var expandHex=function(hex){hex=cleanHex(hex);if(!hex)return null;if(hex.length===3)hex=hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];return hex.length===6?hex:null};var hsb2rgb=function(hsb){var rgb={};var h=Math.round(hsb.h);var s=Math.round(hsb.s*255/100);var v=Math.round(hsb.b*255/100);if(s===0){rgb.r=rgb.g=rgb.b=v}else{var t1=v;var t2=(255-s)*v/255;var t3=(t1-t2)*(h%60)/60;if(h===360)h=0;if(h<60){rgb.r=t1;rgb.b=t2;rgb.g=t2+t3}else if(h<120){rgb.g=t1;rgb.b=t2;rgb.r=t1-t3}else if(h<180){rgb.g=t1;rgb.r=t2;rgb.b=t2+t3}else if(h<240){rgb.b=t1;rgb.r=t2;rgb.g=t1-t3}else if(h<300){rgb.b=t1;rgb.g=t2;rgb.r=t2+t3}else if(h<360){rgb.r=t1;rgb.g=t2;rgb.b=t1-t3}else{rgb.r=0;rgb.g=0;rgb.b=0}}return{r:Math.round(rgb.r),g:Math.round(rgb.g),b:Math.round(rgb.b)}};var rgb2hex=function(rgb){var hex=[rgb.r.toString(16),rgb.g.toString(16),rgb.b.toString(16)];$.each(hex,function(nr,val){if(val.length===1)hex[nr]='0'+val});return hex.join('')};var hex2rgb=function(hex){hex=parseInt(((hex.indexOf('#')>-1)?hex.substring(1):hex),16);return{r:hex>>16,g:(hex&0x00FF00)>>8,b:(hex&0x0000FF)}};var rgb2hsb=function(rgb){var hsb={h:0,s:0,b:0};var min=Math.min(rgb.r,rgb.g,rgb.b);var max=Math.max(rgb.r,rgb.g,rgb.b);var delta=max-min;hsb.b=max;hsb.s=max!==0?255*delta/max:0;if(hsb.s!==0){if(rgb.r===max){hsb.h=(rgb.g-rgb.b)/delta}else if(rgb.g===max){hsb.h=2+(rgb.b-rgb.r)/delta}else{hsb.h=4+(rgb.r-rgb.g)/delta}}else{hsb.h=-1}hsb.h*=60;if(hsb.h<0){hsb.h+=360}hsb.s*=100/255;hsb.b*=100/255;return hsb};var hex2hsb=function(hex){var hsb=rgb2hsb(hex2rgb(hex));if(hsb.s===0)hsb.h=360;return hsb};var hsb2hex=function(hsb){return rgb2hex(hsb2rgb(hsb))};switch(o){case'readonly':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;$(this).prop('readonly',data)});return $(this);case'disabled':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;if(data){disable($(this))}else{enable($(this))}});return $(this);case'value':if(data===undefined){if(!$(this).hasClass('miniColors'))return;var input=$(this),hex=expandHex(input.val());return hex?'#'+convertCase(hex,input.data('letterCase')):null}$(this).each(function(){if(!$(this).hasClass('miniColors'))return;$(this).val(data);setColorFromInput($(this))});return $(this);case'opacity':if(data===undefined){if(!$(this).hasClass('miniColors'))return;if($(this).data('opacity')){return parseFloat($(this).attr('data-opacity'))}else{return null}}$(this).each(function(){if(!$(this).hasClass('miniColors'))return;if(data<0)data=0;if(data>1)data=1;$(this).attr('data-opacity',data).data('alpha',data);setColorFromInput($(this))});return $(this);case'destroy':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;destroy($(this))});return $(this);default:if(!o)o={};$(this).each(function(){if($(this)[0].tagName.toLowerCase()!=='input')return;if($(this).data('trigger'))return;create($(this),o,data)});return $(this)}}})})(jQuery); \ No newline at end of file diff --git a/3rdparty/openid/class.openid.v3.php b/3rdparty/openid/class.openid.v3.php deleted file mode 100644 index eeb319866598c8312faff2a3242d7d8cbd22495f..0000000000000000000000000000000000000000 --- a/3rdparty/openid/class.openid.v3.php +++ /dev/null @@ -1,326 +0,0 @@ -SetIdentity($_POST['openid_url']); - :: SET RETURN URL :: - $openid->SetApprovedURL('http://www.yoursite.com/return.php'); // Script which handles a response from OpenID Server - :: SET TRUST ROOT :: - $openid->SetTrustRoot('http://www.yoursite.com/'); - :: FETCH SERVER URL FROM IDENTITY PAGE :: [Note: It is recomended to cache this (Session, Cookie, Database)] - $openid->GetOpenIDServer(); // Returns false if server is not found - :: REDIRECT USER TO OPEN ID SERVER FOR APPROVAL :: - - :: (OPTIONAL) SET OPENID SERVER :: - $openid->SetOpenIDServer($server_url); // If you have cached previously this, you don't have to call GetOpenIDServer and set value this directly - - STEP 2) - Once user gets returned we must validate signature - :: VALIDATE REQUEST :: - true|false = $openid->ValidateWithServer(); - - ERRORS: - array = $openid->GetError(); // Get latest Error code - - FIELDS: - OpenID allowes you to retreive a profile. To set what fields you'd like to get use (accepts either string or array): - $openid->SetRequiredFields(array('email','fullname','dob','gender','postcode','country','language','timezone')); - or - $openid->SetOptionalFields('postcode'); - -IMPORTANT TIPS: -OPENID as is now, is not trust system. It is a great single-sign on method. If you want to -store information about OpenID in your database for later use, make sure you handle url identities -properly. - For example: - https://steve.myopenid.com/ - https://steve.myopenid.com - http://steve.myopenid.com/ - http://steve.myopenid.com - ... are representing one single user. Some OpenIDs can be in format openidserver.com/users/user/ - keep this in mind when storing identities - - To help you store an OpenID in your DB, you can use function: - $openid_db_safe = $openid->OpenID_Standarize($upenid); - This may not be comatible with current specs, but it works in current enviroment. Use this function to get openid - in one format like steve.myopenid.com (without trailing slashes and http/https). - Use output to insert Identity to database. Don't use this for validation - it may fail. - -*/ - -class SimpleOpenID{ - var $openid_url_identity; - var $URLs = array(); - var $error = array(); - var $fields = array( - 'required' => array(), - 'optional' => array(), - ); - - function SimpleOpenID(){ - if (!function_exists('curl_exec')) { - die('Error: Class SimpleOpenID requires curl extension to work'); - } - } - function SetOpenIDServer($a){ - $this->URLs['openid_server'] = $a; - } - function SetTrustRoot($a){ - $this->URLs['trust_root'] = $a; - } - function SetCancelURL($a){ - $this->URLs['cancel'] = $a; - } - function SetApprovedURL($a){ - $this->URLs['approved'] = $a; - } - function SetRequiredFields($a){ - if (is_array($a)){ - $this->fields['required'] = $a; - }else{ - $this->fields['required'][] = $a; - } - } - function SetOptionalFields($a){ - if (is_array($a)){ - $this->fields['optional'] = $a; - }else{ - $this->fields['optional'][] = $a; - } - } - function SetIdentity($a){ // Set Identity URL - if ((stripos($a, 'http://') === false) - && (stripos($a, 'https://') === false)){ - $a = 'http://'.$a; - } -/* - $u = parse_url(trim($a)); - if (!isset($u['path'])){ - $u['path'] = '/'; - }else if(substr($u['path'],-1,1) == '/'){ - $u['path'] = substr($u['path'], 0, strlen($u['path'])-1); - } - if (isset($u['query'])){ // If there is a query string, then use identity as is - $identity = $a; - }else{ - $identity = $u['scheme'] . '://' . $u['host'] . $u['path']; - } -//*/ - $this->openid_url_identity = $a; - } - function GetIdentity(){ // Get Identity - return $this->openid_url_identity; - } - function GetError(){ - $e = $this->error; - return array('code'=>$e[0],'description'=>$e[1]); - } - - function ErrorStore($code, $desc = null){ - $errs['OPENID_NOSERVERSFOUND'] = 'Cannot find OpenID Server TAG on Identity page.'; - if ($desc == null){ - $desc = $errs[$code]; - } - $this->error = array($code,$desc); - } - - function IsError(){ - if (count($this->error) > 0){ - return true; - }else{ - return false; - } - } - - function splitResponse($response) { - $r = array(); - $response = explode("\n", $response); - foreach($response as $line) { - $line = trim($line); - if ($line != "") { - list($key, $value) = explode(":", $line, 2); - $r[trim($key)] = trim($value); - } - } - return $r; - } - - function OpenID_Standarize($openid_identity = null){ - if ($openid_identity === null) - $openid_identity = $this->openid_url_identity; - - $u = parse_url(strtolower(trim($openid_identity))); - - if (!isset($u['path']) || ($u['path'] == '/')) { - $u['path'] = ''; - } - if(substr($u['path'],-1,1) == '/'){ - $u['path'] = substr($u['path'], 0, strlen($u['path'])-1); - } - if (isset($u['query'])){ // If there is a query string, then use identity as is - return $u['host'] . $u['path'] . '?' . $u['query']; - }else{ - return $u['host'] . $u['path']; - } - } - - function array2url($arr){ // converts associated array to URL Query String - if (!is_array($arr)){ - return false; - } - $query = ''; - foreach($arr as $key => $value){ - $query .= $key . "=" . $value . "&"; - } - return $query; - } - function FSOCK_Request($url, $method="GET", $params = ""){ - $fp = fsockopen("ssl://www.myopenid.com", 443, $errno, $errstr, 3); // Connection timeout is 3 seconds - if (!$fp) { - $this->ErrorStore('OPENID_SOCKETERROR', $errstr); - return false; - } else { - $request = $method . " /server HTTP/1.0\r\n"; - $request .= "User-Agent: Simple OpenID PHP Class (http://www.phpclasses.org/simple_openid)\r\n"; - $request .= "Connection: close\r\n\r\n"; - fwrite($fp, $request); - stream_set_timeout($fp, 4); // Connection response timeout is 4 seconds - $res = fread($fp, 2000); - $info = stream_get_meta_data($fp); - fclose($fp); - - if ($info['timed_out']) { - $this->ErrorStore('OPENID_SOCKETTIMEOUT'); - } else { - return $res; - } - } - } - function CURL_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED - if (is_array($params)) $params = $this->array2url($params); - $curl = curl_init($url . ($method == "GET" && $params != "" ? "?" . $params : "")); - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($curl, CURLOPT_HEADER, false); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($curl, CURLOPT_HTTPGET, ($method == "GET")); - curl_setopt($curl, CURLOPT_POST, ($method == "POST")); - if ($method == "POST") curl_setopt($curl, CURLOPT_POSTFIELDS, $params); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - $response = curl_exec($curl); - - if (curl_errno($curl) == 0){ - $response; - }else{ - $this->ErrorStore('OPENID_CURL', curl_error($curl)); - } - return $response; - } - - function HTML2OpenIDServer($content) { - $get = array(); - - // Get details of their OpenID server and (optional) delegate - preg_match_all('/]*rel=[\'"](openid2.provider )?openid.server[\'"][^>]*href=[\'"]([^\'"]+)[\'"][^>]*\/?>/i', $content, $matches1); - preg_match_all('/]*href=\'"([^\'"]+)[\'"][^>]*rel=[\'"](openid2.provider )?openid.server[\'"][^>]*\/?>/i', $content, $matches2); - $servers = array_merge($matches1[2], $matches2[1]); - - preg_match_all('/]*rel=[\'"]openid.delegate[\'"][^>]*href=[\'"]([^\'"]+)[\'"][^>]*\/?>/i', $content, $matches1); - - preg_match_all('/]*href=[\'"]([^\'"]+)[\'"][^>]*rel=[\'"]openid.delegate[\'"][^>]*\/?>/i', $content, $matches2); - - $delegates = array_merge($matches1[1], $matches2[1]); - - $ret = array($servers, $delegates); - return $ret; - } - - function GetOpenIDServer(){ - $response = $this->CURL_Request($this->openid_url_identity); - list($servers, $delegates) = $this->HTML2OpenIDServer($response); - if (count($servers) == 0){ - $this->ErrorStore('OPENID_NOSERVERSFOUND'); - return false; - } - if (isset($delegates[0]) - && ($delegates[0] != "")){ - $this->SetIdentity($delegates[0]); - } - $this->SetOpenIDServer($servers[0]); - return $servers[0]; - } - - function GetRedirectURL(){ - $params = array(); - $params['openid.return_to'] = urlencode($this->URLs['approved']); - $params['openid.mode'] = 'checkid_setup'; - $params['openid.identity'] = urlencode($this->openid_url_identity); - $params['openid.trust_root'] = urlencode($this->URLs['trust_root']); - - if (isset($this->fields['required']) - && (count($this->fields['required']) > 0)) { - $params['openid.sreg.required'] = implode(',',$this->fields['required']); - } - if (isset($this->fields['optional']) - && (count($this->fields['optional']) > 0)) { - $params['openid.sreg.optional'] = implode(',',$this->fields['optional']); - } - return $this->URLs['openid_server'] . "?". $this->array2url($params); - } - - function Redirect(){ - $redirect_to = $this->GetRedirectURL(); - if (headers_sent()){ // Use JavaScript to redirect if content has been previously sent (not recommended, but safe) - echo ''; - }else{ // Default Header Redirect - header('Location: ' . $redirect_to); - } - } - - function ValidateWithServer(){ - $params = array( - 'openid.assoc_handle' => urlencode($_GET['openid_assoc_handle']), - 'openid.signed' => urlencode($_GET['openid_signed']), - 'openid.sig' => urlencode($_GET['openid_sig']) - ); - // Send only required parameters to confirm validity - $arr_signed = explode(",",str_replace('sreg.','sreg_',$_GET['openid_signed'])); - for ($i=0; $iGetOpenIDServer(); - if ($openid_server == false){ - return false; - } - $response = $this->CURL_Request($openid_server,'POST',$params); - $data = $this->splitResponse($response); - - if ($data['is_valid'] == "true") { - return true; - }else{ - return false; - } - } -} diff --git a/3rdparty/openid/phpmyid.php b/3rdparty/openid/phpmyid.php deleted file mode 100644 index 13fd31c47ca2e2c95cfe217c11024bfc02c8fcf3..0000000000000000000000000000000000000000 --- a/3rdparty/openid/phpmyid.php +++ /dev/null @@ -1,1707 +0,0 @@ - - * @copyright 2006-2008 - * @license http://www.gnu.org/licenses/gpl.html GNU Public License - * @url http://siege.org/projects/phpMyID - * @version 0.9 - */ - -/** - * Set a constant to indicate that phpMyID is running - */ -define('PHPMYID_STARTED', true); - -/** - * List the known types and modes - * @name $known - * @global array $GLOBALS['known'] - */ -$GLOBALS['known'] = array( - 'assoc_types' => array('HMAC-SHA1'), - - 'openid_modes' => array('accept', - 'associate', - 'authorize', - 'cancel', - 'checkid_immediate', - 'checkid_setup', - 'check_authentication', - 'error', - 'id_res', - 'login', - 'logout', - 'test'), - - 'session_types' => array('', - 'DH-SHA1'), - - 'bigmath_types' => array('DH-SHA1'), -); - -/** - * Defined by OpenID spec - * @name $g - * @global integer $GLOBALS['g'] - */ -$GLOBALS['g'] = 2; - -/** - * Defined by OpenID spec - * @name $p - * @global integer $GLOBALS['p'] - */ -$GLOBALS['p'] = '155172898181473697471232257763715539915724801966915404479707' . -'7953140576293785419175806512274236981889937278161526466314385615958256881888' . -'8995127215884267541995034125870655654980358010487053768147672651325574704076' . -'5857479291291572334510643245094715007229621094194349783925984760375594985848' . -'253359305585439638443'; - - -// Runmode functions - -/** - * Allow the user to accept trust on a URL - * @global array $profile - */ -function accept_mode () { - global $profile; - - // this is a user session - user_session(); - - // the user needs refresh urls in their session to access this mode - if (! isset($_SESSION['post_accept_url']) || ! isset($_SESSION['cancel_accept_url']) || ! isset($_SESSION['unaccepted_url'])) - error_500('You may not access this mode directly.'); - - // has the user accepted the trust_root? - $accepted = @strlen($_REQUEST['accepted']) - ? $_REQUEST['accepted'] - : null; - - // if so, refresh back to post_accept_url - if ($accepted === 'yes') { - $_SESSION['accepted_url'] = $_SESSION['unaccepted_url']; - wrap_redirect($_SESSION['post_accept_url']); - - // if they rejected it, return to the client - } elseif ($accepted === 'no') { - wrap_redirect($_SESSION['cancel_accept_url']); - } - - // if neither, offer the trust request - $q = strpos($profile['req_url'], '?') ? '&' : '?'; - $yes = $profile['req_url'] . $q . 'accepted=yes'; - $no = $profile['req_url'] . $q . 'accepted=no'; - - wrap_html('The client site you are attempting to log into has requested that you trust the following URL:
            ' . $_SESSION['unaccepted_url'] . '

            Do you wish to continue?
            Yes | No'); -} - -/** * Perform an association with a consumer - * @global array $known - * @global array $profile - * @global integer $g - * @global integer $p - */ -function associate_mode () { - global $g, $known, $p, $profile; - - // Validate the request - if (! isset($_REQUEST['openid_mode']) || $_REQUEST['openid_mode'] != 'associate') - error_400(); - - // Get the request options, using defaults as necessary - $assoc_type = (@strlen($_REQUEST['openid_assoc_type']) - && in_array($_REQUEST['openid_assoc_type'], $known['assoc_types'])) - ? $_REQUEST['openid_assoc_type'] - : 'HMAC-SHA1'; - - $session_type = (@strlen($_REQUEST['openid_session_type']) - && in_array($_REQUEST['openid_session_type'], $known['session_types'])) - ? $_REQUEST['openid_session_type'] - : ''; - - $dh_modulus = (@strlen($_REQUEST['openid_dh_modulus'])) - ? long(base64_decode($_REQUEST['openid_dh_modulus'])) - : ($session_type == 'DH-SHA1' - ? $p - : null); - - $dh_gen = (@strlen($_REQUEST['openid_dh_gen'])) - ? long(base64_decode($_REQUEST['openid_dh_gen'])) - : ($session_type == 'DH-SHA1' - ? $g - : null); - - $dh_consumer_public = (@strlen($_REQUEST['openid_dh_consumer_public'])) - ? $_REQUEST['openid_dh_consumer_public'] - : ($session_type == 'DH-SHA1' - ? error_post('dh_consumer_public was not specified') - : null); - - $lifetime = time() + $profile['lifetime']; - - // Create standard keys - $keys = array( - 'assoc_type' => $assoc_type, - 'expires_in' => $profile['lifetime'] - ); - - // If I can't handle bigmath, default to plaintext sessions - if (in_array($session_type, $known['bigmath_types']) && $profile['use_bigmath'] === false) - $session_type = null; - - // Add response keys based on the session type - switch ($session_type) { - case 'DH-SHA1': - // Create the associate id and shared secret now - list ($assoc_handle, $shared_secret) = new_assoc($lifetime); - - // Compute the Diffie-Hellman stuff - $private_key = random($dh_modulus); - $public_key = bmpowmod($dh_gen, $private_key, $dh_modulus); - $remote_key = long(base64_decode($dh_consumer_public)); - $ss = bmpowmod($remote_key, $private_key, $dh_modulus); - - $keys['assoc_handle'] = $assoc_handle; - $keys['session_type'] = $session_type; - $keys['dh_server_public'] = base64_encode(bin($public_key)); - $keys['enc_mac_key'] = base64_encode(x_or(sha1_20(bin($ss)), $shared_secret)); - - break; - - default: - // Create the associate id and shared secret now - list ($assoc_handle, $shared_secret) = new_assoc($lifetime); - - $keys['assoc_handle'] = $assoc_handle; - $keys['mac_key'] = base64_encode($shared_secret); - } - - // Return the keys - wrap_kv($keys); -} - - -/** - * Perform a user authorization - * @global array $profile - */ -function authorize_mode () { - global $profile; - global $USERNAME; - global $IDENTITY; - - // this is a user session - - // the user needs refresh urls in their session to access this mode - if (! isset($_SESSION['post_auth_url']) || ! isset($_SESSION['cancel_auth_url'])) - error_500('You may not access this mode directly.'); - - $profile['idp_url']=$IDENTITY; - if (isset($_SERVER['PHP_AUTH_USER']) && $profile['authorized'] === false && $_SERVER['PHP_AUTH_USER']==$USERNAME) { - if (OCP\User::checkPassword($USERNAME, $_SERVER['PHP_AUTH_PW'])) {// successful login! - // return to the refresh url if they get in - $_SESSION['openid_auth']=true; - $_SESSION['openid_user']=$USERNAME; - wrap_redirect($_SESSION['post_auth_url']); - - // failed login - } else { - $_SESSION['failures']++; - debug('Login failed'); - debug('Fail count: ' . $_SESSION['failures']); - } - - } - - // if we get this far the user is not authorized, so send the headers - $uid = uniqid(mt_rand(1,9)); - $_SESSION['uniqid'] = $uid; - -// debug('Prompting user to log in. Stale? ' . $stale); - header('HTTP/1.0 401 Unauthorized'); -// header(sprintf('WWW-Authenticate: Digest qop="auth-int, auth", realm="%s", domain="%s", nonce="%s", opaque="%s", stale="%s", algorithm="MD5"', $profile['auth_realm'], $profile['auth_domain'], $uid, md5($profile['auth_realm']), $stale ? 'true' : 'false')); - header('WWW-Authenticate: Basic realm="ownCloud"'); - $q = strpos($_SESSION['cancel_auth_url'], '?') ? '&' : '?'; - wrap_refresh($_SESSION['cancel_auth_url'] . $q . 'openid.mode=cancel'); -// die('401 Unauthorized'); -} - - -/** - * Handle a consumer's request for cancellation. - */ -function cancel_mode () { - wrap_html('Request cancelled.'); -} - - -/** - * Handle a consumer's request to see if the user is authenticated - */ -function check_authentication_mode () { - // Validate the request - if (! isset($_REQUEST['openid_mode']) || $_REQUEST['openid_mode'] != 'check_authentication') - error_400(); - - $assoc_handle = @strlen($_REQUEST['openid_assoc_handle']) - ? $_REQUEST['openid_assoc_handle'] - : error_post('Missing assoc_handle'); - - $sig = @strlen($_REQUEST['openid_sig']) - ? $_REQUEST['openid_sig'] - : error_post('Missing sig'); - - $signed = @strlen($_REQUEST['openid_signed']) - ? $_REQUEST['openid_signed'] - : error_post('Missing signed'); - - // Prepare the return keys - $keys = array( - 'openid.mode' => 'id_res' - ); - - // Invalidate the assoc handle if we need to - if (@strlen($_REQUEST['openid_invalidate_handle'])) { - destroy_assoc_handle($_REQUEST['openid_invalidate_handle']); - - $keys['invalidate_handle'] = $_REQUEST['openid_invalidate_handle']; - } - - // Validate the sig by recreating the kv pair and signing - $_REQUEST['openid_mode'] = 'id_res'; - $tokens = ''; - foreach (explode(',', $signed) as $param) { - $post = preg_replace('/\./', '_', $param); - $tokens .= sprintf("%s:%s\n", $param, $_REQUEST['openid_' . $post]); - } - - // Add the sreg stuff, if we've got it - if (isset($sreg_required)) { - foreach (explode(',', $sreg_required) as $key) { - if (! isset($sreg[$key])) - continue; - $skey = 'sreg.' . $key; - - $tokens .= sprintf("%s:%s\n", $skey, $sreg[$key]); - $keys[$skey] = $sreg[$key]; - $fields[] = $skey; - } - } - - // Look up the consumer's shared_secret and timeout - list ($shared_secret, $expires) = secret($assoc_handle); - - // if I can't verify the assoc_handle, or if it's expired - if ($shared_secret == false || (is_numeric($expires) && $expires < time())) { - $keys['is_valid'] = 'false'; - - } else { - $ok = base64_encode(hmac($shared_secret, $tokens)); - $keys['is_valid'] = ($sig == $ok) ? 'true' : 'false'; - } - - // Return the keys - wrap_kv($keys); -} - - -/** - * Handle a consumer's request to see if the end user is logged in - * @global array $known - * @global array $profile - * @global array $sreg - */ -function checkid ( $wait ) { - global $known, $profile, $sreg; - global $USERNAME; - - // This is a user session - user_session(); - - // Get the options, use defaults as necessary - $return_to = isset($_REQUEST['openid_return_to']) - ? $_REQUEST['openid_return_to'] - : error_400('Missing return_to'); - - $identity = isset($_REQUEST['openid_identity']) - ? $_REQUEST['openid_identity'] - : error_get($return_to, 'Missing identity'); - - $assoc_handle = isset($_REQUEST['openid_assoc_handle']) - ? $_REQUEST['openid_assoc_handle'] - : null; - - $trust_root = isset($_REQUEST['openid_trust_root']) - ? $_REQUEST['openid_trust_root'] - : $return_to; - - $sreg_required = isset($_REQUEST['openid_sreg_required']) - ? $_REQUEST['openid_sreg.required'] - : ''; - - $sreg_optional = isset($_REQUEST['openid_sreg_optional']) - ? $_REQUEST['openid_sreg.optional'] - : ''; - - // determine the cancel url - $q = strpos($return_to, '?') ? '&' : '?'; - $cancel_url = $return_to . $q . 'openid.mode=cancel'; - - // required and optional make no difference to us - $sreg_required .= ',' . $sreg_optional; - // do the trust_root analysis - if ($trust_root != $return_to) { - // the urls are not the same, be sure return decends from trust - if (! url_descends($return_to, $trust_root)) - error_500('Invalid trust_root: "' . $trust_root . '"'); - - } - - // transfer the user to the url accept mode if they're paranoid - if ($wait == 1 && isset($profile['paranoid']) && $profile['paranoid'] === true && (! isset($_SESSION['accepted_url']) || $_SESSION['accepted_url'] != $trust_root)) { - $_SESSION['cancel_accept_url'] = $cancel_url; - $_SESSION['post_accept_url'] = $profile['req_url']; - $_SESSION['unaccepted_url'] = $trust_root; - - debug('Transferring to acceptance mode.'); - debug('Cancel URL: ' . $_SESSION['cancel_accept_url']); - debug('Post URL: ' . $_SESSION['post_accept_url']); - - $q = strpos($profile['idp_url'], '?') ? '&' : '?'; - wrap_redirect($profile['idp_url'] . $q . 'openid.mode=accept'); - } - - // make sure i am this identifier -// if ($identity != $profile['idp_url']) { -// debug("Invalid identity: $identity"); -// debug("IdP URL: " . $profile['idp_url']); -// error_get($return_to, "Invalid identity: '$identity'"); -// } - - // begin setting up return keys - $keys = array( - 'mode' => 'id_res' - ); - - // if the user is not logged in, transfer to the authorization mode - if ($USERNAME=='' || $_SESSION['openid_auth'] === false || $USERNAME != $_SESSION['openid_user']) { - // users can only be logged in to one url at a time - $_SESSION['openid_user'] = null; - $_SESSION['auth_url'] = null; - - if ($wait) { - unset($_SESSION['uniqid']); - - $_SESSION['cancel_auth_url'] = $cancel_url; - $_SESSION['post_auth_url'] = $profile['req_url']; - - debug('Transferring to authorization mode.'); - debug('Cancel URL: ' . $_SESSION['cancel_auth_url']); - debug('Post URL: ' . $_SESSION['post_auth_url']); - - $q = strpos($profile['idp_url'], '?') ? '&' : '?'; - wrap_redirect($profile['idp_url'] . $q . 'openid.mode=authorize'); - } else { - $keys['user_setup_url'] = $profile['idp_url']; - } - - // the user is logged in - } else { - // remove the refresh URLs if set - unset($_SESSION['cancel_auth_url']); - unset($_SESSION['post_auth_url']); - - // check the assoc handle - list($shared_secret, $expires) = secret($assoc_handle); - - // if I can't verify the assoc_handle, or if it's expired - if ($shared_secret == false || (is_numeric($expires) && $expires < time())) { - debug("Session expired or missing key: $expires < " . time()); - if ($assoc_handle != null) { - $keys['invalidate_handle'] = $assoc_handle; - destroy_assoc_handle($assoc_handle); - } - - $lifetime = time() + $profile['lifetime']; - list ($assoc_handle, $shared_secret) = new_assoc($lifetime); - } - - $keys['identity'] = $profile['idp_url']; - $keys['assoc_handle'] = $assoc_handle; - $keys['return_to'] = $return_to; - - $fields = array_keys($keys); - $tokens = ''; - foreach ($fields as $key) - $tokens .= sprintf("%s:%s\n", $key, $keys[$key]); - - // add sreg keys - foreach (explode(',', $sreg_required) as $key) { - if (! isset($sreg[$key])) - continue; - $skey = 'sreg.' . $key; - - $tokens .= sprintf("%s:%s\n", $skey, $sreg[$key]); - $keys[$skey] = $sreg[$key]; - $fields[] = $skey; - } - - $keys['signed'] = implode(',', $fields); - $keys['sig'] = base64_encode(hmac($shared_secret, $tokens)); - } - - wrap_keyed_redirect($return_to, $keys); -} - - -/** - * Handle a consumer's request to see if the user is already logged in - */ -function checkid_immediate_mode () { - if (! isset($_REQUEST['openid_mode']) || $_REQUEST['openid_mode'] != 'checkid_immediate') - error_500(); - - checkid(false); -} - - -/** - * Handle a consumer's request to see if the user is logged in, but be willing - * to wait for them to perform a login if they're not - */ -function checkid_setup_mode () { - if (! isset($_REQUEST['openid_mode']) || $_REQUEST['openid_mode'] != 'checkid_setup') - error_500(); - - checkid(true); -} - - -/** - * Handle errors - */ -function error_mode () { - isset($_REQUEST['openid_error']) - ? wrap_html($_REQUEST['openid_error']) - : error_500(); -} - - -/** - * Show a user if they are logged in or not - * @global array $profile - */ -function id_res_mode () { - global $profile; - - user_session(); - - if ($profile['authorized']) - wrap_html('You are logged in as ' . $_SESSION['auth_username']); - - wrap_html('You are not logged in'); -} - - -/** - * Allow a user to perform a static login - * @global array $profile - */ -function login_mode () { - global $profile; - - user_session(); - - if ($profile['authorized']) - id_res_mode(); - - $keys = array( - 'mode' => 'checkid_setup', - 'identity' => $profile['idp_url'], - 'return_to' => $profile['idp_url'] - ); - - wrap_keyed_redirect($profile['idp_url'], $keys); -} - - -/** - * Allow a user to perform a static logout - * @global array $profile - */ -function logout_mode () { - global $profile; - - user_session(); - - if (! $profile['authorized']) - wrap_html('You were not logged in'); - - $_SESSION = array(); - session_destroy(); - debug('User session destroyed.'); - - header('HTTP/1.0 401 Unauthorized'); - wrap_redirect($profile['idp_url']); -} - - -/** - * The default information screen - * @global array $profile - */ -function no_mode () { - global $USERNAME, $profile; - $tmpl = new OCP\Template( 'user_openid', 'nomode', 'guest' ); - if(substr($profile['req_url'],-1,1)!=='/'){//the identity should always end with a / - $profile['req_url'].='/'; - } - $tmpl->addHeader('link',array('rel'=>'openid.server', 'href'=>$profile['req_url'])); - $tmpl->addHeader('link',array('rel'=>'openid.delegate', 'href'=>$profile['idp_url'])); - $tmpl->assign('user',$USERNAME); - $tmpl->printPage(); -} - - -/** - * Testing for setup - * @global array $profile - */ -function test_mode () { - global $profile, $p, $g; - - if ($profile['allow_test'] != true) - error_403(); - - @ini_set('max_execution_time', 180); - - $test_expire = time() + 120; - $test_ss_enc = 'W7hvmld2yEYdDb0fHfSkKhQX+PM='; - $test_ss = base64_decode($test_ss_enc); - $test_token = "alpha:bravo\ncharlie:delta\necho:foxtrot"; - $test_server_private = '11263846781670293092494395517924811173145217135753406847875706165886322533899689335716152496005807017390233667003995430954419468996805220211293016296351031812246187748601293733816011832462964410766956326501185504714561648498549481477143603650090931135412673422192550825523386522507656442905243832471167330268'; - $test_client_public = base64_decode('AL63zqI5a5p8HdXZF5hFu8p+P9GOb816HcHuvNOhqrgkKdA3fO4XEzmldlb37nv3+xqMBgWj6gxT7vfuFerEZLBvuWyVvR7IOGZmx0BAByoq3fxYd3Fpe2Coxngs015vK37otmH8e83YyyGo5Qua/NAf13yz1PVuJ5Ctk7E+YdVc'); - - $res = array(); - - // bcmath - $res['bcmath'] = extension_loaded('bcmath') - ? 'pass' : 'warn - not loaded'; - - // gmp - if ($profile['allow_gmp']) { - $res['gmp'] = extension_loaded('gmp') - ? 'pass' : 'warn - not loaded'; - } else { - $res['gmp'] = 'pass - n/a'; - } - - // get_temp_dir - $res['logfile'] = is_writable($profile['logfile']) - ? 'pass' : "warn - log is not writable"; - - // session & new_assoc - user_session(); - list($test_assoc, $test_new_ss) = new_assoc($test_expire); - $res['session'] = ($test_assoc != session_id()) - ? 'pass' : 'fail'; - - // secret - @session_unregister('shared_secret'); - list($check, $check2) = secret($test_assoc); - $res['secret'] = ($check == $test_new_ss) - ? 'pass' : 'fail'; - - // expire - $res['expire'] = ($check2 <= $test_expire) - ? 'pass' : 'fail'; - - // base64 - $res['base64'] = (base64_encode($test_ss) == $test_ss_enc) - ? 'pass' : 'fail'; - - // hmac - $test_sig = base64_decode('/VXgHvZAOdoz/OTa5+XJXzSGhjs='); - $check = hmac($test_ss, $test_token); - $res['hmac'] = ($check == $test_sig) - ? 'pass' : sprintf("fail - '%s'", base64_encode($check)); - - if ($profile['use_bigmath']) { - // bigmath powmod - $test_server_public = '102773334773637418574009974502372885384288396853657336911033649141556441102566075470916498748591002884433213640712303846640842555822818660704173387461364443541327856226098159843042567251113889701110175072389560896826887426539315893475252988846151505416694218615764823146765717947374855806613410142231092856731'; - $check = bmpowmod($g, $test_server_private, $p); - $res['bmpowmod-1'] = ($check == $test_server_public) - ? 'pass' : sprintf("fail - '%s'", $check); - - // long - $test_client_long = '133926731803116519408547886573524294471756220428015419404483437186057383311250738749035616354107518232016420809434801736658109316293127101479053449990587221774635063166689561125137927607200322073086097478667514042144489248048756916881344442393090205172004842481037581607299263456852036730858519133859409417564'; - $res['long'] = (long($test_client_public) == $test_client_long) - ? 'pass' : 'fail'; - - // bigmath powmod 2 - $test_client_share = '19333275433742428703546496981182797556056709274486796259858099992516081822015362253491867310832140733686713353304595602619444380387600756677924791671971324290032515367930532292542300647858206600215875069588627551090223949962823532134061941805446571307168890255137575975911397744471376862555181588554632928402'; - $check = bmpowmod($test_client_long, $test_server_private, $p); - $res['bmpowmod-2'] = ($check == $test_client_share) - ? 'pass' : sprintf("fail - '%s'", $check); - - // bin - $test_client_mac_s1 = base64_decode('G4gQQkYM6QmAzhKbVKSBahFesPL0nL3F2MREVwEtnVRRYI0ifl9zmPklwTcvURt3QTiGBd+9Dn3ESLk5qka6IO5xnILcIoBT8nnGVPiOZvTygfuzKp4tQ2mXuIATJoa7oXRGmBWtlSdFapH5Zt6NJj4B83XF/jzZiRwdYuK4HJI='); - $check = bin($test_client_share); - $res['bin'] = ($check == $test_client_mac_s1) - ? 'pass' : sprintf("fail - '%s'", base64_encode($check)); - - } else { - $res['bigmath'] = 'fail - big math functions are not available.'; - } - - // sha1_20 - $test_client_mac_s1 = base64_decode('G4gQQkYM6QmAzhKbVKSBahFesPL0nL3F2MREVwEtnVRRYI0ifl9zmPklwTcvURt3QTiGBd+9Dn3ESLk5qka6IO5xnILcIoBT8nnGVPiOZvTygfuzKp4tQ2mXuIATJoa7oXRGmBWtlSdFapH5Zt6NJj4B83XF/jzZiRwdYuK4HJI='); - $test_client_mac_s2 = base64_decode('0Mb2t9d/HvAZyuhbARJPYdx3+v4='); - $check = sha1_20($test_client_mac_s1); - $res['sha1_20'] = ($check == $test_client_mac_s2) - ? 'pass' : sprintf("fail - '%s'", base64_encode($check)); - - // x_or - $test_client_mac_s3 = base64_decode('i36ZLYAJ1rYEx1VEHObrS8hgAg0='); - $check = x_or($test_client_mac_s2, $test_ss); - $res['x_or'] = ($check == $test_client_mac_s3) - ? 'pass' : sprintf("fail - '%s'", base64_encode($check)); - - $out = "\n"; - foreach ($res as $test => $stat) { - $code = substr($stat, 0, 4); - $color = ($code == 'pass') ? '#9f9' - : (($code == 'warn') ? '#ff9' : '#f99'); - $out .= sprintf("\n", $test, $color, $stat); - } - $out .= "
            %s%s
            "; - - wrap_html( $out ); -} - - -// Support functions - -/** - * Prefix the keys of an array with 'openid.' - * @param array $array - * @return array - */ -function append_openid ($array) { - $keys = array_keys($array); - $vals = array_values($array); - - $r = array(); - for ($i=0; $i $rl ) { - $r = str_repeat("0", $ll-$rl) . $r; - $o = $ll; - - } else { - $o = $ll; - } - - $v = ''; - $carry = 0; - - for ($i = $o-1; $i >= 0; $i--) { - $d = (int)$l[$i] + (int)$r[$i] + $carry; - if ($d <= 9) { - $carry = 0; - - } else { - $carry = 1; - $d -= 10; - } - $v = (string) $d . $v; - } - - if ($carry > 0) - $v = "1" . $v; - - return $v; -} - -/** - * Create a big math comparison function - * @param string $l - * @param string $r - * @return string - */ -function bmcomp($l, $r) { - if (function_exists('bccomp')) - return bccomp($l, $r); - - global $profile; - if ($profile['use_gmp']) - return gmp_strval(gmp_cmp($l, $r)); - - $l = strval($l); $r = strval($r); - $ll = strlen($l); $lr = strlen($r); - if ($ll != $lr) - return ($ll > $lr) ? 1 : -1; - - return strcmp($l, $r); -} - -/** - * Create a big math division function - * @param string $l - * @param string $r - * @param int $z - * @return string - * @url http://www.icosaedro.it/bigint Inspired by - */ -function bmdiv($l, $r, $z = 0) { - if (function_exists('bcdiv')) - return ($z == 0) ? bcdiv($l, $r) : bcmod($l, $r); - - global $profile; - if ($profile['use_gmp']) - return gmp_strval(($z == 0) ? gmp_div_q($l, $r) : gmp_mod($l, $r)); - - $l = strval($l); $r = strval($r); - $v = '0'; - - while (true) { - if( bmcomp($l, $r) < 0 ) - break; - - $delta = strlen($l) - strlen($r); - if ($delta >= 1) { - $zeroes = str_repeat("0", $delta); - $r2 = $r . $zeroes; - - if (strcmp($l, $r2) >= 0) { - $v = bmadd($v, "1" . $zeroes); - $l = bmsub($l, $r2); - - } else { - $zeroes = str_repeat("0", $delta - 1); - $v = bmadd($v, "1" . $zeroes); - $l = bmsub($l, $r . $zeroes); - } - - } else { - $l = bmsub($l, $r); - $v = bmadd($v, "1"); - } - } - - return ($z == 0) ? $v : $l; -} - -/** - * Create a big math multiplication function - * @param string $l - * @param string $r - * @return string - * @url http://www.icosaedro.it/bigint Inspired by - */ -function bmmul($l, $r) { - if (function_exists('bcmul')) - return bcmul($l, $r); - - global $profile; - if ($profile['use_gmp']) - return gmp_strval(gmp_mul($l, $r)); - - $l = strval($l); $r = strval($r); - - $v = '0'; - $z = ''; - - for( $i = strlen($r)-1; $i >= 0; $i-- ){ - $bd = (int) $r[$i]; - $carry = 0; - $p = ""; - for( $j = strlen($l)-1; $j >= 0; $j-- ){ - $ad = (int) $l[$j]; - $pd = $ad * $bd + $carry; - if( $pd <= 9 ){ - $carry = 0; - } else { - $carry = (int) ($pd / 10); - $pd = $pd % 10; - } - $p = (string) $pd . $p; - } - if( $carry > 0 ) - $p = (string) $carry . $p; - $p = $p . $z; - $z .= "0"; - $v = bmadd($v, $p); - } - - return $v; -} - -/** - * Create a big math modulus function - * @param string $value - * @param string $mod - * @return string - */ -function bmmod( $value, $mod ) { - if (function_exists('bcmod')) - return bcmod($value, $mod); - - global $profile; - if ($profile['use_gmp']) - return gmp_strval(gmp_mod($value, $mod)); - - $r = bmdiv($value, $mod, 1); - return $r; -} - -/** - * Create a big math power function - * @param string $value - * @param string $exponent - * @return string - */ -function bmpow ($value, $exponent) { - if (function_exists('bcpow')) - return bcpow($value, $exponent); - - global $profile; - if ($profile['use_gmp']) - return gmp_strval(gmp_pow($value, $exponent)); - - $r = '1'; - while ($exponent) { - $r = bmmul($r, $value, 100); - $exponent--; - } - return (string)rtrim($r, '0.'); -} - -/** - * Create a big math 'powmod' function - * @param string $value - * @param string $exponent - * @param string $mod - * @return string - * @url http://php.net/manual/en/function.bcpowmod.php#72704 Borrowed from - */ -function bmpowmod ($value, $exponent, $mod) { - if (function_exists('bcpowmod')) - return bcpowmod($value, $exponent, $mod); - - global $profile; - if ($profile['use_gmp']) - return gmp_strval(gmp_powm($value, $exponent, $mod)); - - $r = ''; - while ($exponent != '0') { - $t = bmmod($exponent, '4096'); - $r = substr("000000000000" . decbin(intval($t)), -12) . $r; - $exponent = bmdiv($exponent, '4096'); - } - - $r = preg_replace("!^0+!","",$r); - - if ($r == '') - $r = '0'; - $value = bmmod($value, $mod); - $erb = strrev($r); - $q = '1'; - $a[0] = $value; - - for ($i = 1; $i < strlen($erb); $i++) { - $a[$i] = bmmod( bmmul($a[$i-1], $a[$i-1]), $mod ); - } - - for ($i = 0; $i < strlen($erb); $i++) { - if ($erb[$i] == "1") { - $q = bmmod( bmmul($q, $a[$i]), $mod ); - } - } - - return($q); -} - -/** - * Create a big math subtraction function - * @param string $l - * @param string $r - * @return string - * @url http://www.icosaedro.it/bigint Inspired by - */ -function bmsub($l, $r) { - if (function_exists('bcsub')) - return bcsub($l, $r); - - global $profile; - if ($profile['use_gmp']) - return gmp_strval(gmp_sub($l, $r)); - - - $l = strval($l); $r = strval($r); - $ll = strlen($l); $rl = strlen($r); - - if ($ll < $rl) { - $l = str_repeat("0", $rl-$ll) . $l; - $o = $rl; - } elseif ( $ll > $rl ) { - $r = str_repeat("0", $ll-$rl) . (string)$r; - $o = $ll; - } else { - $o = $ll; - } - - if (strcmp($l, $r) >= 0) { - $sign = ''; - } else { - $x = $l; $l = $r; $r = $x; - $sign = '-'; - } - - $v = ''; - $carry = 0; - - for ($i = $o-1; $i >= 0; $i--) { - $d = ($l[$i] - $r[$i]) - $carry; - if ($d < 0) { - $carry = 1; - $d += 10; - } else { - $carry = 0; - } - $v = (string) $d . $v; - } - - return $sign . ltrim($v, '0'); -} - - -/** - * Get a binary value - * @param integer $n - * @return string - * @url http://openidenabled.com Borrowed from PHP-OpenID - */ -function bin ($n) { - $bytes = array(); - while (bmcomp($n, 0) > 0) { - array_unshift($bytes, bmmod($n, 256)); - $n = bmdiv($n, bmpow(2,8)); - } - - if ($bytes && ($bytes[0] > 127)) - array_unshift($bytes, 0); - - $b = ''; - foreach ($bytes as $byte) - $b .= pack('C', $byte); - - return $b; -} - - -/** - * Debug logging - * @param mixed $x - * @param string $m - */ -function debug ($x, $m = null) { - global $profile; - - if (! isset($profile['debug']) || $profile['debug'] === false) - return true; - - if (! is_writable(dirname($profile['logfile'])) &! is_writable($profile['logfile'])) - error_500('Cannot write to debug log: ' . $profile['logfile']); - - if (is_array($x)) { - ob_start(); - print_r($x); - $x = $m . ($m != null ? "\n" : '') . ob_get_clean(); - - } else { - $x .= "\n"; - } -} - - -/** - * Destroy a consumer's assoc handle - * @param string $id - */ -function destroy_assoc_handle ( $id ) { - debug("Destroying session: $id"); - - $sid = session_id(); - session_write_close(); - - session_id($id); - if (OCP\Config::getSystemValue( "forcessl", false )) { - ini_set("session.cookie_secure", "on"); - } - session_start(); - session_destroy(); - - session_id($sid); - session_start(); -} - - -/** - * Return an error message to the user - * @param string $message - */ -function error_400 ( $message = 'Bad Request' ) { - header("HTTP/1.1 400 Bad Request"); - wrap_html($message); -} - - -/** - * Return an error message to the user - * @param string $message - */ -function error_403 ( $message = 'Forbidden' ) { - header("HTTP/1.1 403 Forbidden"); - wrap_html($message); -} - - -/** - * Return an error message to the user - * @param string $message - */ -function error_500 ( $message = 'Internal Server Error' ) { - header("HTTP/1.1 500 Internal Server Error"); - wrap_html($message); -} - - -/** - * Return an error message to the consumer - * @param string $message - */ -function error_get ( $url, $message = 'Bad Request') { - wrap_keyed_redirect($url, array('mode' => 'error', 'error' => $message)); -} - - -/** - * Return an error message to the consumer - * @param string $message - */ -function error_post ( $message = 'Bad Request' ) { - header("HTTP/1.1 400 Bad Request"); - echo ('error:' . $message); - exit(0); -} - - -/** - * Do an HMAC - * @param string $key - * @param string $data - * @param string $hash - * @return string - * @url http://php.net/manual/en/function.sha1.php#39492 Borrowed from - */ -function hmac($key, $data, $hash = 'sha1_20') { - $blocksize=64; - - if (strlen($key) > $blocksize) - $key = $hash($key); - - $key = str_pad($key, $blocksize,chr(0x00)); - $ipad = str_repeat(chr(0x36),$blocksize); - $opad = str_repeat(chr(0x5c),$blocksize); - - $h1 = $hash(($key ^ $ipad) . $data); - $hmac = $hash(($key ^ $opad) . $h1); - return $hmac; -} - - -if (! function_exists('http_build_query')) { -/** - * Create function if missing - * @param array $array - * @return string - */ -function http_build_query ($array) { - $r = array(); - foreach ($array as $key => $val) - $r[] = sprintf('%s=%s', urlencode($key), urlencode($val)); - return implode('&', $r); -}} - - -/** - * Turn a binary back into a long - * @param string $b - * @return integer - * @url http://openidenabled.com Borrowed from PHP-OpenID - */ -function long($b) { - $bytes = array_merge(unpack('C*', $b)); - $n = 0; - foreach ($bytes as $byte) { - $n = bmmul($n, bmpow(2,8)); - $n = bmadd($n, $byte); - } - return $n; -} - - -/** - * Create a new consumer association - * @param integer $expiration - * @return array - */ -function new_assoc ( $expiration ) { - if (isset($_SESSION) && is_array($_SESSION)) { - $sid = session_id(); - $dat = session_encode(); - session_write_close(); - } - - if (OCP\Config::getSystemValue( "forcessl", false )) { - ini_set("session.cookie_secure", "on"); - } - session_start(); - session_regenerate_id('false'); - - $id = session_id(); - $shared_secret = new_secret(); - debug('Started new assoc session: ' . $id); - - $_SESSION = array(); - $_SESSION['expiration'] = $expiration; - $_SESSION['shared_secret'] = base64_encode($shared_secret); - - session_write_close(); - - if (isset($sid)) { - session_id($sid); - session_start(); - $_SESSION = array(); - session_decode($dat); - } - - return array($id, $shared_secret); -} - - -/** - * Create a new shared secret - * @return string - */ -function new_secret () { - $r = ''; - for($i=0; $i<20; $i++) - $r .= chr(mt_rand(0, 255)); - - debug("Generated new key: hash = '" . md5($r) . "', length = '" . strlen($r) . "'"); - return $r; -} - - -/** - * Random number generation - * @param integer max - * @return integer - */ -function random ( $max ) { - if (strlen($max) < 4) - return mt_rand(1, $max - 1); - - $r = ''; - for($i=1; $i= 0 && ($pr_host[$break] != '*' || substr_count(substr($pr_host, 0, $break), '.') < 2)) - return false; - - // now compare the paths - $break = str_diff_at($parts['child']['path'], $parts['parent']['path']); - if ($break >= 0 - && ($break < strlen($parts['parent']['path']) && $parts['parent']['path'][$break] != '*') - || ($break > strlen($parts['child']['path']))) - return false; - - return true; -} - - -/** - * Create a user session - * @global array $profile - * @global array $proto - */ -function user_session () { - global $proto, $profile; - - session_name('phpMyID_Server'); - if (OCP\Config::getSystemValue( "forcessl", false )) { - ini_set("session.cookie_secure", "on"); - } - @session_start(); - - $profile['authorized'] = (isset($_SESSION['auth_username']) - && $_SESSION['auth_username'] == $profile['auth_username']) - ? true - : false; - - debug('Started user session: ' . session_id() . ' Auth? ' . $profile['authorized']); -} - - -/** - * Return HTML - * @global string $charset - * @param string $message - */ -function wrap_html ( $message ) { - global $charset, $profile; - header('Content-Type: text/html; charset=' . $charset); - $html= ' - - -phpMyID - - -' . implode("\n", $profile['opt_headers']) . ' - - - - -

            ' . $message . '

            - - -'; - echo $html; - exit(0); -} - - -/** - * Return a key-value pair in plain text - * @global string $charset - * @param array $keys - */ -function wrap_kv ( $keys ) { - global $charset; - - debug($keys, 'Wrapped key/vals'); - header('Content-Type: text/plain; charset=' . $charset); - foreach ($keys as $key => $value) - printf("%s:%s\n", $key, $value); - - exit(0); -} - - -/** - * Redirect, with OpenID keys - * @param string $url - * @param array @keys - */ -function wrap_keyed_redirect ($url, $keys) { - $keys = append_openid($keys); - debug($keys, 'Location keys'); - - $q = strpos($url, '?') ? '&' : '?'; - wrap_redirect($url . $q . http_build_query($keys)); -} - - -/** - * Redirect the browser - * @global string $charset - * @param string $url - */ -function wrap_redirect ($url) { - header('HTTP/1.1 302 Found'); - header('Location: ' . $url); - debug('Location: ' . $url); - exit(0); -} - -/** - * Return an HTML refresh - * @global string $charset - * @param string $url - */ -function wrap_refresh ($url) { - global $charset; - - header('Content-Type: text/html; charset=' . $charset); - echo ' - - -phpMyID - - - -

            Redirecting to ' . $url . '

            - - -'; - - debug('Refresh: ' . $url); - exit(0); -} - - -/** - * Implement binary x_or - * @param string $a - * @param string $b - * @return string - */ -function x_or ($a, $b) { - $r = ""; - - for ($i = 0; $i < strlen($b); $i++) - $r .= $a[$i] ^ $b[$i]; - debug("Xor size: " . strlen($r)); - return $r; -} - - - -/* - * App Initialization - */ -// Determine the charset to use -$GLOBALS['charset'] = 'iso-8859-1'; - -// Set the internal encoding -if (function_exists('mb_internal_encoding')) - mb_internal_encoding($charset); - -// Avoid problems with non-default arg_separator.output settings -// Credit for this goes to user 'prelog' on the forums -ini_set('arg_separator.output', '&'); - -// Do a check to be sure everything is set up correctly -self_check(); - - -/** - * Determine the HTTP request port - * @name $port - * @global integer $GLOBALS['port'] - */ -$GLOBALS['port'] = ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on' && $_SERVER['SERVER_PORT'] == 443) - || $_SERVER['SERVER_PORT'] == 80) - ? '' - : ':' . $_SERVER['SERVER_PORT']; - - -/** - * Determine the HTTP request protocol - * @name $proto - * @global string $GLOBALS['proto'] - */ -$GLOBALS['proto'] = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http'; - -// Set the authorization state - DO NOT OVERRIDE -$profile['authorized'] = false; - -global $IDENTITY; -global $USERNAME; - -// Set a default IDP URL -if (! array_key_exists('idp_url', $profile)) - $profile['idp_url'] = $IDENTITY; - -//Determine the requested URL - DO NOT OVERRIDE -$profile['req_url'] = sprintf("%s://%s%s", - $proto, - OCP\Util::getServerHost(), -// $port,//host already includes the path - $_SERVER["REQUEST_URI"]); - - -// Set the default allowance for testing -if (! array_key_exists('allow_test', $profile)) - $profile['allow_test'] = false; - -// Set the default allowance for gmp -if (! array_key_exists('allow_gmp', $profile)) - $profile['allow_gmp'] = false; - -// Set the default force bigmath - BAD IDEA to override this -if (! array_key_exists('force_bigmath', $profile)) - $profile['force_bigmath'] = false; - -// Determine if GMP is usable -$profile['use_gmp'] = (extension_loaded('gmp') && $profile['allow_gmp']) ? true : false; - -// Determine if I can perform big math functions -$profile['use_bigmath'] = (extension_loaded('bcmath') || $profile['use_gmp'] || $profile['force_bigmath']) ? true : false; - -// Set a default authentication domain -if (! array_key_exists('auth_domain', $profile)) - $profile['auth_domain'] = $profile['req_url'] . ' ' . $profile['idp_url']; - -// Set a default authentication realm -if (! array_key_exists('auth_realm', $profile)) - $profile['auth_realm'] = 'ownCloud'; - -// Determine the realm for digest authentication - DO NOT OVERRIDE -$profile['php_realm'] = $profile['auth_realm'] . (ini_get('safe_mode') ? '-' . getmyuid() : ''); - -// Set a default lifetime - the lesser of GC and cache time -if (! array_key_exists('lifetime', $profile)) { - $sce = session_cache_expire() * 60; - $gcm = ini_get('session.gc_maxlifetime'); - $profile['lifetime'] = $sce < $gcm ? $sce : $gcm; -} - -// Set a default log file -if (! array_key_exists('logfile', $profile)) - $profile['logfile'] = get_temp_dir() . DIRECTORY_SEPARATOR . $profile['auth_realm'] . '.debug.log'; - - -/* - * Optional Initialization - */ -// Setup optional headers -$profile['opt_headers'] = array(); - -// Determine if I should add microid stuff -if (array_key_exists('microid', $profile)) { - $hash = sha1($profile['idp_url']); - $values = is_array($profile['microid']) ? $profile['microid'] : array($profile['microid']); - - foreach ($values as $microid) { - preg_match('/^([a-z]+)/i', $microid, $mtx); - $profile['opt_headers'][] = sprintf('', $mtx[1], $proto, sha1(sha1($microid) . $hash)); - } -} - -// Determine if I should add pavatar stuff -if (array_key_exists('pavatar', $profile)) - $profile['opt_headers'][] = sprintf('', $profile['pavatar']); - - -/* - * Do it - */ -// Decide which runmode, based on user request or default -$run_mode = (isset($_REQUEST['openid_mode']) - && in_array($_REQUEST['openid_mode'], $known['openid_modes'])) - ? $_REQUEST['openid_mode'] - : 'no'; - -// Run in the determined runmode -debug("Run mode: $run_mode at: " . time()); -debug($_REQUEST, 'Request params'); -call_user_func($run_mode . '_mode'); diff --git a/3rdparty/php-cloudfiles/.gitignore b/3rdparty/php-cloudfiles/.gitignore deleted file mode 100644 index 875b72b27e76a4928fb6e44a6579ad06b0b596ee..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.swp -*~ -tests/output.log diff --git a/3rdparty/php-cloudfiles/AUTHORS b/3rdparty/php-cloudfiles/AUTHORS deleted file mode 100644 index a92cfa7c1a975b7a329568925f8fb6ee5ef24e49..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/AUTHORS +++ /dev/null @@ -1,11 +0,0 @@ -Current maintainer: - Conrad Weidenkeller - -Previous maintainer: - Eric "EJ" Johnson - Chmouel Boudjnah - -Contributors: - Paul Kehrer - Ben Arwin - Jordan Callicoat diff --git a/3rdparty/php-cloudfiles/COPYING b/3rdparty/php-cloudfiles/COPYING deleted file mode 100644 index 0e10239d001c295ce1b5a29048824a0c98514499..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/COPYING +++ /dev/null @@ -1,27 +0,0 @@ -Unless otherwise noted, all files are released under the MIT license, -exceptions contain licensing information in them. - - Copyright (C) 2008 Rackspace US, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Except as contained in this notice, the name of Rackspace US, Inc. shall not -be used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from Rackspace US, Inc. - diff --git a/3rdparty/php-cloudfiles/Changelog b/3rdparty/php-cloudfiles/Changelog deleted file mode 100644 index df9303c3e5b1a05ecef3b4ad4b9d76ec8c88687b..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/Changelog +++ /dev/null @@ -1,93 +0,0 @@ -1.7.10 Conrad Weidenkeller - * Added Streaming URI Functionality - -1.7.9 Conrad Weidenkeller - * Added Manifest file support for Large Objects - -1.7.8 Conrad Weidenkeller - * Added CDN SSL URI Stuff - -1.7.7 Conrad Weidenkeller - * Added CDN Purge Functionality - -1.7.6 - Chmouel Boudjnah - * Add Cloud UK Support (conrad.weidenkeller). - -1.7.5 - Conrad Weidenkeller - * Added the ability to list only currently enabled CDN containers - * Added curl timeout to CF_Http - * Fixed some logic errors in some if statements. - -1.7.4 - Conrad Weidenkeller - * Added Manual SSL support for MacOSX users - -1.7.3 - Conrad Weidenkeller - * Fixed a Small Bug where some users were seeing response bodies for PUTs - -1.7.1 - Conrad Weidenkeller - * Added Support for Auth Token Caching. - -1.7.0 - Chmouel Boudjnah - * Adjust api auth to rackspacecloud not mosso (mshuler). - -1.6.2 - Chmouel Boudjnah - * Add a close method to close all the current connection. - * Fix when container_name is named 0. - -1.6.1 - Chmouel Boudjnah - * Fix setting etag on objects. - * Fix throwing proper exception when an invalid etag has been set. - * Fix throwing proper exception when no content type has been set. - -1.6.0 - Chmouel Boudjnah - * Add CDN ACL restriction by referrer feature. - * Add CDN ACL restriction by User Agent feature. - * Add documentation for log_retention method. - * Return True if log_retention as succeeded. - * Invalid the PHP stats cache before getting filesize. - -1.5.1 - Chmouel Boudjnah - 20091020 - * If the environement variable RACKSPACE_SERVICENET is defined then force to - connect via rakcspace servicenet. - -1.5.0 - Chmouel Boudjnah - 20091015 - * Add the option servicenet to connection to use Rackspace service net - instead of public network. - -1.4.0 - Chmouel Boudjnah - 20090808 - - * Add the ability to store the container log. - -1.3.2 - Chmouel Boudjnah - 20090606 - - * Change the Unit Tests to phpunit. - * Automatically set the updated CA bundle when on the windows OS. - * More simplification of the mimetype detection and support for PHP 5.3. - * Fix documentation information about the ttl for cached object. - * Use the hash library to compute MD5 for streams instead of storing the - stream in memory. - * Fix CF_Connection::get_containers to display the container name properly. - -1.3.1 - - 20090325 - - * Simplify use of FileInfo, remove packaged MIME/Magic file - * Throw Exception if no Content-Type is set - * Fix bug with tracking bytes transferred - * Support/tested on Windows XP (PHP v5.2.9) - -1.3.0 - - 20090311 - - * Support for list operations in JSON/XML - * Added support for FileInfo automatic Content-Type/MIME detection - * Workaround for cURL's old CA bundle with CF_Connection->ssl_use_cabundle() - * Supports limit/marker on Account and Container lists - * Support "pathname" traversal on Container lists - * Helper function on Container to create directory marker Objects - * Support for chunked transfer on PUT requests - -1.2.3 - - 20081210 - - * Improved in-line comments and generated HTML docs - * Callbacks for read/write progress on CF_Connection class - * Fixed minor bugs - * Started this Changelog diff --git a/3rdparty/php-cloudfiles/README b/3rdparty/php-cloudfiles/README deleted file mode 100644 index 4bcbeade1a4b80ad25042f8730d3fe77a8df8f13..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/README +++ /dev/null @@ -1,73 +0,0 @@ -;; PHP Cloud Files API -;; ======================================================================== -;; This package contains the PHP API for the Cloud Files storage system. -;; -;; Please see http://www.rackspacecloud.com/ for more information regarding the -;; Cloud Files storage system. -;; -;; Install -;; ------------------------------------------------------------------------ -;; Extract this archive and make sure the source code files are in your -;; PHP "include path". To use the API in your source code, just make -;; sure to include/require the "cloudfiles.php" script. -;; -;; Requirements -;; ------------------------------------------------------------------------ -;; [mandatory] PHP version 5.x (developed against 5.2.0) -;; [mandatory] PHP's cURL module -;; [mandatory] PHP enabled with mbstring (multi-byte string) support -;; [suggested] PEAR FileInfo module (for Content-Type detection) -;; -;; Examples -;; ------------------------------------------------------------------------ -;; For sample code, please see the tests and API docs. -;; -;; Docs -;; ------------------------------------------------------------------------ -;; The included documentation was generated directly from the source -;; code files using the PHPDocumentor tool. -;; -;; This README file is actually the PHPDocumentor INI configuration file. -;; The following packages were installed via PEAR to generate the HTML -;; API documentation. -;; -;; * PEAR 1.4.11 (stable) -;; * PhpDocumentor 1.4.2 (stable) -;; * XML_Beautifier 1.2.0 (stable) -;; * XML_Parser 1.3.1 (stable) -;; * XML_Util 1.2.0 (stable) -;; -;; To re-generate the API docs, make sure the above software is -;; available and run: -;; rm -rf docs && phpdoc -c phpdoc.ini -;; -;; Tests -;; ------------------------------------------------------------------------ -;; The tests are based on phpunit and are run with PHPUnit 3.3.17 -;; please follow the instructions on : -;; -;; http://www.phpunit.de/manual/current/en/installation.html -;; -;; to install PHPUnit. When installed just run the command phpunit on -;; the top of the directory and it will launch the tests. -;; -;; The tests/Comprehensive.php is not enabled by default since -;; generating big files. If you want to run it you need to go in the -;; tests directory and run with phpunit Comprehensive.php -;; -;; ======================================================================== -;; The lines below here are the configuration settings for re-generating -;; the PHP API documentation. -;; -[Parse Data] -title = php-cloudfiles -hidden = false -parseprivate = off -javadocdesc = off -defaultpackagename = php-cloudfiles -defaultcategoryname = php-cloudfiles -target = docs -directory = . -ignore = share/,examples/,tests/,.git/,.gitignore,*.ini,*.swp -output=HTML:Smarty:PHP -readmeinstallchangelog = README,COPYING,AUTHORS,Changelog diff --git a/3rdparty/php-cloudfiles/cloudfiles.php b/3rdparty/php-cloudfiles/cloudfiles.php deleted file mode 100644 index 7b1014265e52c0ed80af0e74d8fb73645791c6f2..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/cloudfiles.php +++ /dev/null @@ -1,2599 +0,0 @@ - - * # Authenticate to Cloud Files. The default is to automatically try - * # to re-authenticate if an authentication token expires. - * # - * # NOTE: Some versions of cURL include an outdated certificate authority (CA) - * # file. This API ships with a newer version obtained directly from - * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, - * # call the CF_Authentication instance's 'ssl_use_cabundle()' method. - * # - * $auth = new CF_Authentication($username, $api_key); - * # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle - * $auth->authenticate(); - * - * # Establish a connection to the storage system - * # - * # NOTE: Some versions of cURL include an outdated certificate authority (CA) - * # file. This API ships with a newer version obtained directly from - * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, - * # call the CF_Connection instance's 'ssl_use_cabundle()' method. - * # - * $conn = new CF_Connection($auth); - * # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle - * - * # Create a remote Container and storage Object - * # - * $images = $conn->create_container("photos"); - * $bday = $images->create_object("first_birthday.jpg"); - * - * # Upload content from a local file by streaming it. Note that we use - * # a "float" for the file size to overcome PHP's 32-bit integer limit for - * # very large files. - * # - * $fname = "/home/user/photos/birthdays/birthday1.jpg"; # filename to upload - * $size = (float) sprintf("%u", filesize($fname)); - * $fp = open($fname, "r"); - * $bday->write($fp, $size); - * - * # Or... use a convenience function instead - * # - * $bday->load_from_filename("/home/user/photos/birthdays/birthday1.jpg"); - * - * # Now, publish the "photos" container to serve the images by CDN. - * # Use the "$uri" value to put in your web pages or send the link in an - * # email message, etc. - * # - * $uri = $images->make_public(); - * - * # Or... print out the Object's public URI - * # - * print $bday->public_uri(); - * - * - * See the included tests directory for additional sample code. - * - * Requres PHP 5.x (for Exceptions and OO syntax) and PHP's cURL module. - * - * It uses the supporting "cloudfiles_http.php" module for HTTP(s) support and - * allows for connection re-use and streaming of content into/out of Cloud Files - * via PHP's cURL module. - * - * See COPYING for license information. - * - * @author Eric "EJ" Johnson - * @copyright Copyright (c) 2008, Rackspace US, Inc. - * @package php-cloudfiles - */ - -/** - */ -require_once("cloudfiles_exceptions.php"); -require("cloudfiles_http.php"); -define("DEFAULT_CF_API_VERSION", 1); -define("MAX_CONTAINER_NAME_LEN", 256); -define("MAX_OBJECT_NAME_LEN", 1024); -define("MAX_OBJECT_SIZE", 5*1024*1024*1024+1); -define("US_AUTHURL", "https://auth.api.rackspacecloud.com"); -define("UK_AUTHURL", "https://lon.auth.api.rackspacecloud.com"); -/** - * Class for handling Cloud Files Authentication, call it's {@link authenticate()} - * method to obtain authorized service urls and an authentication token. - * - * Example: - * - * # Create the authentication instance - * # - * $auth = new CF_Authentication("username", "api_key"); - * - * # NOTE: For UK Customers please specify your AuthURL Manually - * # There is a Predfined constant to use EX: - * # - * # $auth = new CF_Authentication("username, "api_key", NULL, UK_AUTHURL); - * # Using the UK_AUTHURL keyword will force the api to use the UK AuthUrl. - * # rather then the US one. The NULL Is passed for legacy purposes and must - * # be passed to function correctly. - * - * # NOTE: Some versions of cURL include an outdated certificate authority (CA) - * # file. This API ships with a newer version obtained directly from - * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, - * # call the CF_Authentication instance's 'ssl_use_cabundle()' method. - * # - * # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle - * - * # Perform authentication request - * # - * $auth->authenticate(); - * - * - * @package php-cloudfiles - */ -class CF_Authentication -{ - public $dbug; - public $username; - public $api_key; - public $auth_host; - public $account; - - /** - * Instance variables that are set after successful authentication - */ - public $storage_url; - public $cdnm_url; - public $auth_token; - - /** - * Class constructor (PHP 5 syntax) - * - * @param string $username Mosso username - * @param string $api_key Mosso API Access Key - * @param string $account Account name - * @param string $auth_host Authentication service URI - */ - function __construct($username=NULL, $api_key=NULL, $account=NULL, $auth_host=US_AUTHURL) - { - - $this->dbug = False; - $this->username = $username; - $this->api_key = $api_key; - $this->account_name = $account; - $this->auth_host = $auth_host; - - $this->storage_url = NULL; - $this->cdnm_url = NULL; - $this->auth_token = NULL; - - $this->cfs_http = new CF_Http(DEFAULT_CF_API_VERSION); - } - - /** - * Use the Certificate Authority bundle included with this API - * - * Most versions of PHP with cURL support include an outdated Certificate - * Authority (CA) bundle (the file that lists all valid certificate - * signing authorities). The SSL certificates used by the Cloud Files - * storage system are perfectly valid but have been created/signed by - * a CA not listed in these outdated cURL distributions. - * - * As a work-around, we've included an updated CA bundle obtained - * directly from cURL's web site (http://curl.haxx.se). You can direct - * the API to use this CA bundle by calling this method prior to making - * any remote calls. The best place to use this method is right after - * the CF_Authentication instance has been instantiated. - * - * You can specify your own CA bundle by passing in the full pathname - * to the bundle. You can use the included CA bundle by leaving the - * argument blank. - * - * @param string $path Specify path to CA bundle (default to included) - */ - function ssl_use_cabundle($path=NULL) - { - $this->cfs_http->ssl_use_cabundle($path); - } - - /** - * Attempt to validate Username/API Access Key - * - * Attempts to validate credentials with the authentication service. It - * either returns True or throws an Exception. Accepts a single - * (optional) argument for the storage system API version. - * - * Example: - * - * # Create the authentication instance - * # - * $auth = new CF_Authentication("username", "api_key"); - * - * # Perform authentication request - * # - * $auth->authenticate(); - * - * - * @param string $version API version for Auth service (optional) - * @return boolean True if successfully authenticated - * @throws AuthenticationException invalid credentials - * @throws InvalidResponseException invalid response - */ - function authenticate($version=DEFAULT_CF_API_VERSION) - { - list($status,$reason,$surl,$curl,$atoken) = - $this->cfs_http->authenticate($this->username, $this->api_key, - $this->account_name, $this->auth_host); - - if ($status == 401) { - throw new AuthenticationException("Invalid username or access key."); - } - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Unexpected response (".$status."): ".$reason); - } - - if (!($surl || $curl) || !$atoken) { - throw new InvalidResponseException( - "Expected headers missing from auth service."); - } - $this->storage_url = $surl; - $this->cdnm_url = $curl; - $this->auth_token = $atoken; - return True; - } - /** - * Use Cached Token and Storage URL's rather then grabbing from the Auth System - * - * Example: - * - * #Create an Auth instance - * $auth = new CF_Authentication(); - * #Pass Cached URL's and Token as Args - * $auth->load_cached_credentials("auth_token", "storage_url", "cdn_management_url"); - * - * - * @param string $auth_token A Cloud Files Auth Token (Required) - * @param string $storage_url The Cloud Files Storage URL (Required) - * @param string $cdnm_url CDN Management URL (Required) - * @return boolean True if successful - * @throws SyntaxException If any of the Required Arguments are missing - */ - function load_cached_credentials($auth_token, $storage_url, $cdnm_url) - { - if(!$storage_url || !$cdnm_url) - { - throw new SyntaxException("Missing Required Interface URL's!"); - return False; - } - if(!$auth_token) - { - throw new SyntaxException("Missing Auth Token!"); - return False; - } - - $this->storage_url = $storage_url; - $this->cdnm_url = $cdnm_url; - $this->auth_token = $auth_token; - return True; - } - /** - * Grab Cloud Files info to be Cached for later use with the load_cached_credentials method. - * - * Example: - * - * #Create an Auth instance - * $auth = new CF_Authentication("UserName","API_Key"); - * $auth->authenticate(); - * $array = $auth->export_credentials(); - * - * - * @return array of url's and an auth token. - */ - function export_credentials() - { - $arr = array(); - $arr['storage_url'] = $this->storage_url; - $arr['cdnm_url'] = $this->cdnm_url; - $arr['auth_token'] = $this->auth_token; - - return $arr; - } - - - /** - * Make sure the CF_Authentication instance has authenticated. - * - * Ensures that the instance variables necessary to communicate with - * Cloud Files have been set from a previous authenticate() call. - * - * @return boolean True if successfully authenticated - */ - function authenticated() - { - if (!($this->storage_url || $this->cdnm_url) || !$this->auth_token) { - return False; - } - return True; - } - - /** - * Toggle debugging - set cURL verbose flag - */ - function setDebug($bool) - { - $this->dbug = $bool; - $this->cfs_http->setDebug($bool); - } -} - -/** - * Class for establishing connections to the Cloud Files storage system. - * Connection instances are used to communicate with the storage system at - * the account level; listing and deleting Containers and returning Container - * instances. - * - * Example: - * - * # Create the authentication instance - * # - * $auth = new CF_Authentication("username", "api_key"); - * - * # Perform authentication request - * # - * $auth->authenticate(); - * - * # Create a connection to the storage/cdn system(s) and pass in the - * # validated CF_Authentication instance. - * # - * $conn = new CF_Connection($auth); - * - * # NOTE: Some versions of cURL include an outdated certificate authority (CA) - * # file. This API ships with a newer version obtained directly from - * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, - * # call the CF_Authentication instance's 'ssl_use_cabundle()' method. - * # - * # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle - * - * - * @package php-cloudfiles - */ -class CF_Connection -{ - public $dbug; - public $cfs_http; - public $cfs_auth; - - /** - * Pass in a previously authenticated CF_Authentication instance. - * - * Example: - * - * # Create the authentication instance - * # - * $auth = new CF_Authentication("username", "api_key"); - * - * # Perform authentication request - * # - * $auth->authenticate(); - * - * # Create a connection to the storage/cdn system(s) and pass in the - * # validated CF_Authentication instance. - * # - * $conn = new CF_Connection($auth); - * - * # If you are connecting via Rackspace servers and have access - * # to the servicenet network you can set the $servicenet to True - * # like this. - * - * $conn = new CF_Connection($auth, $servicenet=True); - * - * - * - * If the environement variable RACKSPACE_SERVICENET is defined it will - * force to connect via the servicenet. - * - * @param obj $cfs_auth previously authenticated CF_Authentication instance - * @param boolean $servicenet enable/disable access via Rackspace servicenet. - * @throws AuthenticationException not authenticated - */ - function __construct($cfs_auth, $servicenet=False) - { - if (isset($_ENV['RACKSPACE_SERVICENET'])) - $servicenet=True; - $this->cfs_http = new CF_Http(DEFAULT_CF_API_VERSION); - $this->cfs_auth = $cfs_auth; - if (!$this->cfs_auth->authenticated()) { - $e = "Need to pass in a previously authenticated "; - $e .= "CF_Authentication instance."; - throw new AuthenticationException($e); - } - $this->cfs_http->setCFAuth($this->cfs_auth, $servicenet=$servicenet); - $this->dbug = False; - } - - /** - * Toggle debugging of instance and back-end HTTP module - * - * @param boolean $bool enable/disable cURL debugging - */ - function setDebug($bool) - { - $this->dbug = (boolean) $bool; - $this->cfs_http->setDebug($this->dbug); - } - - /** - * Close a connection - * - * Example: - * - * - * $conn->close(); - * - * - * - * Will close all current cUrl active connections. - * - */ - public function close() - { - $this->cfs_http->close(); - } - - /** - * Cloud Files account information - * - * Return an array of two floats (since PHP only supports 32-bit integers); - * number of containers on the account and total bytes used for the account. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * list($quantity, $bytes) = $conn->get_info(); - * print "Number of containers: " . $quantity . "\n"; - * print "Bytes stored in container: " . $bytes . "\n"; - * - * - * @return array (number of containers, total bytes stored) - * @throws InvalidResponseException unexpected response - */ - function get_info() - { - list($status, $reason, $container_count, $total_bytes) = - $this->cfs_http->head_account(); - #if ($status == 401 && $this->_re_auth()) { - # return $this->get_info(); - #} - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return array($container_count, $total_bytes); - } - - /** - * Create a Container - * - * Given a Container name, return a Container instance, creating a new - * remote Container if it does not exit. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $images = $conn->create_container("my photos"); - * - * - * @param string $container_name container name - * @return CF_Container - * @throws SyntaxException invalid name - * @throws InvalidResponseException unexpected response - */ - function create_container($container_name=NULL) - { - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Container name not set."); - - if (!isset($container_name) or $container_name == "") - throw new SyntaxException("Container name not set."); - - if (strpos($container_name, "/") !== False) { - $r = "Container name '".$container_name; - $r .= "' cannot contain a '/' character."; - throw new SyntaxException($r); - } - if (strlen($container_name) > MAX_CONTAINER_NAME_LEN) { - throw new SyntaxException(sprintf( - "Container name exeeds %d bytes.", - MAX_CONTAINER_NAME_LEN)); - } - - $return_code = $this->cfs_http->create_container($container_name); - if (!$return_code) { - throw new InvalidResponseException("Invalid response (" - . $return_code. "): " . $this->cfs_http->get_error()); - } - #if ($status == 401 && $this->_re_auth()) { - # return $this->create_container($container_name); - #} - if ($return_code != 201 && $return_code != 202) { - throw new InvalidResponseException( - "Invalid response (".$return_code."): " - . $this->cfs_http->get_error()); - } - return new CF_Container($this->cfs_auth, $this->cfs_http, $container_name); - } - - /** - * Delete a Container - * - * Given either a Container instance or name, remove the remote Container. - * The Container must be empty prior to removing it. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $conn->delete_container("my photos"); - * - * - * @param string|obj $container container name or instance - * @return boolean True if successfully deleted - * @throws SyntaxException missing proper argument - * @throws InvalidResponseException invalid response - * @throws NonEmptyContainerException container not empty - * @throws NoSuchContainerException remote container does not exist - */ - function delete_container($container=NULL) - { - $container_name = NULL; - - if (is_object($container)) { - if (get_class($container) == "CF_Container") { - $container_name = $container->name; - } - } - if (is_string($container)) { - $container_name = $container; - } - - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Must specify container object or name."); - - $return_code = $this->cfs_http->delete_container($container_name); - - if (!$return_code) { - throw new InvalidResponseException("Failed to obtain http response"); - } - #if ($status == 401 && $this->_re_auth()) { - # return $this->delete_container($container); - #} - if ($return_code == 409) { - throw new NonEmptyContainerException( - "Container must be empty prior to removing it."); - } - if ($return_code == 404) { - throw new NoSuchContainerException( - "Specified container did not exist to delete."); - } - if ($return_code != 204) { - throw new InvalidResponseException( - "Invalid response (".$return_code."): " - . $this->cfs_http->get_error()); - } - return True; - } - - /** - * Return a Container instance - * - * For the given name, return a Container instance if the remote Container - * exists, otherwise throw a Not Found exception. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $images = $conn->get_container("my photos"); - * print "Number of Objects: " . $images->count . "\n"; - * print "Bytes stored in container: " . $images->bytes . "\n"; - * - * - * @param string $container_name name of the remote Container - * @return container CF_Container instance - * @throws NoSuchContainerException thrown if no remote Container - * @throws InvalidResponseException unexpected response - */ - function get_container($container_name=NULL) - { - list($status, $reason, $count, $bytes) = - $this->cfs_http->head_container($container_name); - #if ($status == 401 && $this->_re_auth()) { - # return $this->get_container($container_name); - #} - if ($status == 404) { - throw new NoSuchContainerException("Container not found."); - } - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response: ".$this->cfs_http->get_error()); - } - return new CF_Container($this->cfs_auth, $this->cfs_http, - $container_name, $count, $bytes); - } - - /** - * Return array of Container instances - * - * Return an array of CF_Container instances on the account. The instances - * will be fully populated with Container attributes (bytes stored and - * Object count) - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $clist = $conn->get_containers(); - * foreach ($clist as $cont) { - * print "Container name: " . $cont->name . "\n"; - * print "Number of Objects: " . $cont->count . "\n"; - * print "Bytes stored in container: " . $cont->bytes . "\n"; - * } - * - * - * @return array An array of CF_Container instances - * @throws InvalidResponseException unexpected response - */ - function get_containers($limit=0, $marker=NULL) - { - list($status, $reason, $container_info) = - $this->cfs_http->list_containers_info($limit, $marker); - #if ($status == 401 && $this->_re_auth()) { - # return $this->get_containers(); - #} - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response: ".$this->cfs_http->get_error()); - } - $containers = array(); - foreach ($container_info as $name => $info) { - $containers[] = new CF_Container($this->cfs_auth, $this->cfs_http, - $info['name'], $info["count"], $info["bytes"], False); - } - return $containers; - } - - /** - * Return list of remote Containers - * - * Return an array of strings containing the names of all remote Containers. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $container_list = $conn->list_containers(); - * print_r($container_list); - * Array - * ( - * [0] => "my photos", - * [1] => "my docs" - * ) - * - * - * @param integer $limit restrict results to $limit Containers - * @param string $marker return results greater than $marker - * @return array list of remote Containers - * @throws InvalidResponseException unexpected response - */ - function list_containers($limit=0, $marker=NULL) - { - list($status, $reason, $containers) = - $this->cfs_http->list_containers($limit, $marker); - #if ($status == 401 && $this->_re_auth()) { - # return $this->list_containers($limit, $marker); - #} - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return $containers; - } - - /** - * Return array of information about remote Containers - * - * Return a nested array structure of Container info. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * - * $container_info = $conn->list_containers_info(); - * print_r($container_info); - * Array - * ( - * ["my photos"] => - * Array - * ( - * ["bytes"] => 78, - * ["count"] => 2 - * ) - * ["docs"] => - * Array - * ( - * ["bytes"] => 37323, - * ["count"] => 12 - * ) - * ) - * - * - * @param integer $limit restrict results to $limit Containers - * @param string $marker return results greater than $marker - * @return array nested array structure of Container info - * @throws InvalidResponseException unexpected response - */ - function list_containers_info($limit=0, $marker=NULL) - { - list($status, $reason, $container_info) = - $this->cfs_http->list_containers_info($limit, $marker); - #if ($status == 401 && $this->_re_auth()) { - # return $this->list_containers_info($limit, $marker); - #} - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return $container_info; - } - - /** - * Return list of Containers that have been published to the CDN. - * - * Return an array of strings containing the names of published Containers. - * Note that this function returns the list of any Container that has - * ever been CDN-enabled regardless of it's existence in the storage - * system. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_containers = $conn->list_public_containers(); - * print_r($public_containers); - * Array - * ( - * [0] => "images", - * [1] => "css", - * [2] => "javascript" - * ) - * - * - * @param bool $enabled_only Will list all containers ever CDN enabled if * set to false or only currently enabled CDN containers if set to true. * Defaults to false. - * @return array list of published Container names - * @throws InvalidResponseException unexpected response - */ - function list_public_containers($enabled_only=False) - { - list($status, $reason, $containers) = - $this->cfs_http->list_cdn_containers($enabled_only); - #if ($status == 401 && $this->_re_auth()) { - # return $this->list_public_containers(); - #} - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return $containers; - } - - /** - * Set a user-supplied callback function to report download progress - * - * The callback function is used to report incremental progress of a data - * download functions (e.g. $container->list_objects(), $obj->read(), etc). - * The specified function will be periodically called with the number of - * bytes transferred until the entire download is complete. This callback - * function can be useful for implementing "progress bars" for large - * downloads. - * - * The specified callback function should take a single integer parameter. - * - * - * function read_callback($bytes_transferred) { - * print ">> downloaded " . $bytes_transferred . " bytes.\n"; - * # ... do other things ... - * return; - * } - * - * $conn = new CF_Connection($auth_obj); - * $conn->set_read_progress_function("read_callback"); - * print_r($conn->list_containers()); - * - * # output would look like this: - * # - * >> downloaded 10 bytes. - * >> downloaded 11 bytes. - * Array - * ( - * [0] => fuzzy.txt - * [1] => space name - * ) - * - * - * @param string $func_name the name of the user callback function - */ - function set_read_progress_function($func_name) - { - $this->cfs_http->setReadProgressFunc($func_name); - } - - /** - * Set a user-supplied callback function to report upload progress - * - * The callback function is used to report incremental progress of a data - * upload functions (e.g. $obj->write() call). The specified function will - * be periodically called with the number of bytes transferred until the - * entire upload is complete. This callback function can be useful - * for implementing "progress bars" for large uploads/downloads. - * - * The specified callback function should take a single integer parameter. - * - * - * function write_callback($bytes_transferred) { - * print ">> uploaded " . $bytes_transferred . " bytes.\n"; - * # ... do other things ... - * return; - * } - * - * $conn = new CF_Connection($auth_obj); - * $conn->set_write_progress_function("write_callback"); - * $container = $conn->create_container("stuff"); - * $obj = $container->create_object("foo"); - * $obj->write("The callback function will be called during upload."); - * - * # output would look like this: - * # >> uploaded 51 bytes. - * # - * - * - * @param string $func_name the name of the user callback function - */ - function set_write_progress_function($func_name) - { - $this->cfs_http->setWriteProgressFunc($func_name); - } - - /** - * Use the Certificate Authority bundle included with this API - * - * Most versions of PHP with cURL support include an outdated Certificate - * Authority (CA) bundle (the file that lists all valid certificate - * signing authorities). The SSL certificates used by the Cloud Files - * storage system are perfectly valid but have been created/signed by - * a CA not listed in these outdated cURL distributions. - * - * As a work-around, we've included an updated CA bundle obtained - * directly from cURL's web site (http://curl.haxx.se). You can direct - * the API to use this CA bundle by calling this method prior to making - * any remote calls. The best place to use this method is right after - * the CF_Authentication instance has been instantiated. - * - * You can specify your own CA bundle by passing in the full pathname - * to the bundle. You can use the included CA bundle by leaving the - * argument blank. - * - * @param string $path Specify path to CA bundle (default to included) - */ - function ssl_use_cabundle($path=NULL) - { - $this->cfs_http->ssl_use_cabundle($path); - } - - #private function _re_auth() - #{ - # $new_auth = new CF_Authentication( - # $this->cfs_auth->username, - # $this->cfs_auth->api_key, - # $this->cfs_auth->auth_host, - # $this->cfs_auth->account); - # $new_auth->authenticate(); - # $this->cfs_auth = $new_auth; - # $this->cfs_http->setCFAuth($this->cfs_auth); - # return True; - #} -} - -/** - * Container operations - * - * Containers are storage compartments where you put your data (objects). - * A container is similar to a directory or folder on a conventional filesystem - * with the exception that they exist in a flat namespace, you can not create - * containers inside of containers. - * - * You also have the option of marking a Container as "public" so that the - * Objects stored in the Container are publicly available via the CDN. - * - * @package php-cloudfiles - */ -class CF_Container -{ - public $cfs_auth; - public $cfs_http; - public $name; - public $object_count; - public $bytes_used; - - public $cdn_enabled; - public $cdn_streaming_uri; - public $cdn_ssl_uri; - public $cdn_uri; - public $cdn_ttl; - public $cdn_log_retention; - public $cdn_acl_user_agent; - public $cdn_acl_referrer; - - /** - * Class constructor - * - * Constructor for Container - * - * @param obj $cfs_auth CF_Authentication instance - * @param obj $cfs_http HTTP connection manager - * @param string $name name of Container - * @param int $count number of Objects stored in this Container - * @param int $bytes number of bytes stored in this Container - * @throws SyntaxException invalid Container name - */ - function __construct(&$cfs_auth, &$cfs_http, $name, $count=0, - $bytes=0, $docdn=True) - { - if (strlen($name) > MAX_CONTAINER_NAME_LEN) { - throw new SyntaxException("Container name exceeds " - . "maximum allowed length."); - } - if (strpos($name, "/") !== False) { - throw new SyntaxException( - "Container names cannot contain a '/' character."); - } - $this->cfs_auth = $cfs_auth; - $this->cfs_http = $cfs_http; - $this->name = $name; - $this->object_count = $count; - $this->bytes_used = $bytes; - $this->cdn_enabled = NULL; - $this->cdn_uri = NULL; - $this->cdn_ssl_uri = NULL; - $this->cdn_streaming_uri = NULL; - $this->cdn_ttl = NULL; - $this->cdn_log_retention = NULL; - $this->cdn_acl_user_agent = NULL; - $this->cdn_acl_referrer = NULL; - if ($this->cfs_http->getCDNMUrl() != NULL && $docdn) { - $this->_cdn_initialize(); - } - } - - /** - * String representation of Container - * - * Pretty print the Container instance. - * - * @return string Container details - */ - function __toString() - { - $me = sprintf("name: %s, count: %.0f, bytes: %.0f", - $this->name, $this->object_count, $this->bytes_used); - if ($this->cfs_http->getCDNMUrl() != NULL) { - $me .= sprintf(", cdn: %s, cdn uri: %s, cdn ttl: %.0f, logs retention: %s", - $this->is_public() ? "Yes" : "No", - $this->cdn_uri, $this->cdn_ttl, - $this->cdn_log_retention ? "Yes" : "No" - ); - - if ($this->cdn_acl_user_agent != NULL) { - $me .= ", cdn acl user agent: " . $this->cdn_acl_user_agent; - } - - if ($this->cdn_acl_referrer != NULL) { - $me .= ", cdn acl referrer: " . $this->cdn_acl_referrer; - } - - - } - return $me; - } - - /** - * Enable Container content to be served via CDN or modify CDN attributes - * - * Either enable this Container's content to be served via CDN or - * adjust its CDN attributes. This Container will always return the - * same CDN-enabled URI each time it is toggled public/private/public. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->create_container("public"); - * - * # CDN-enable the container and set it's TTL for a month - * # - * $public_container->make_public(86400/2); # 12 hours (86400 seconds/day) - * - * - * @param int $ttl the time in seconds content will be cached in the CDN - * @returns string the CDN enabled Container's URI - * @throws CDNNotEnabledException CDN functionality not returned during auth - * @throws AuthenticationException if auth token is not valid/expired - * @throws InvalidResponseException unexpected response - */ - function make_public($ttl=86400) - { - if ($this->cfs_http->getCDNMUrl() == NULL) { - throw new CDNNotEnabledException( - "Authentication response did not indicate CDN availability"); - } - if ($this->cdn_uri != NULL) { - # previously published, assume we're setting new attributes - list($status, $reason, $cdn_uri, $cdn_ssl_uri) = - $this->cfs_http->update_cdn_container($this->name,$ttl, - $this->cdn_log_retention, - $this->cdn_acl_user_agent, - $this->cdn_acl_referrer); - #if ($status == 401 && $this->_re_auth()) { - # return $this->make_public($ttl); - #} - if ($status == 404) { - # this instance _thinks_ the container was published, but the - # cdn management system thinks otherwise - try again with a PUT - list($status, $reason, $cdn_uri, $cdn_ssl_uri) = - $this->cfs_http->add_cdn_container($this->name,$ttl); - - } - } else { - # publish it for first time - list($status, $reason, $cdn_uri, $cdn_ssl_uri) = - $this->cfs_http->add_cdn_container($this->name,$ttl); - } - #if ($status == 401 && $this->_re_auth()) { - # return $this->make_public($ttl); - #} - if (!in_array($status, array(201,202))) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - $this->cdn_enabled = True; - $this->cdn_ttl = $ttl; - $this->cdn_ssl_uri = $cdn_ssl_uri; - $this->cdn_uri = $cdn_uri; - $this->cdn_log_retention = False; - $this->cdn_acl_user_agent = ""; - $this->cdn_acl_referrer = ""; - return $this->cdn_uri; - } - /** - * Purge Containers objects from CDN Cache. - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * $container = $conn->get_container("cdn_enabled"); - * $container->purge_from_cdn("user@domain.com"); - * # or - * $container->purge_from_cdn(); - * # or - * $container->purge_from_cdn("user1@domain.com,user2@domain.com"); - * @returns boolean True if successful - * @throws CDNNotEnabledException if CDN Is not enabled on this connection - * @throws InvalidResponseException if the response expected is not returned - */ - function purge_from_cdn($email=null) - { - if (!$this->cfs_http->getCDNMUrl()) - { - throw new CDNNotEnabledException( - "Authentication response did not indicate CDN availability"); - } - $status = $this->cfs_http->purge_from_cdn($this->name, $email); - if ($status < 199 or $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return True; - } - /** - * Enable ACL restriction by User Agent for this container. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->get_container("public"); - * - * # Enable ACL by Referrer - * $public_container->acl_referrer("Mozilla"); - * - * - * @returns boolean True if successful - * @throws CDNNotEnabledException CDN functionality not returned during auth - * @throws AuthenticationException if auth token is not valid/expired - * @throws InvalidResponseException unexpected response - */ - function acl_user_agent($cdn_acl_user_agent="") { - if ($this->cfs_http->getCDNMUrl() == NULL) { - throw new CDNNotEnabledException( - "Authentication response did not indicate CDN availability"); - } - list($status,$reason) = - $this->cfs_http->update_cdn_container($this->name, - $this->cdn_ttl, - $this->cdn_log_retention, - $cdn_acl_user_agent, - $this->cdn_acl_referrer - ); - if (!in_array($status, array(202,404))) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - $this->cdn_acl_user_agent = $cdn_acl_user_agent; - return True; - } - - /** - * Enable ACL restriction by referer for this container. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->get_container("public"); - * - * # Enable Referrer - * $public_container->acl_referrer("http://www.example.com/gallery.php"); - * - * - * @returns boolean True if successful - * @throws CDNNotEnabledException CDN functionality not returned during auth - * @throws AuthenticationException if auth token is not valid/expired - * @throws InvalidResponseException unexpected response - */ - function acl_referrer($cdn_acl_referrer="") { - if ($this->cfs_http->getCDNMUrl() == NULL) { - throw new CDNNotEnabledException( - "Authentication response did not indicate CDN availability"); - } - list($status,$reason) = - $this->cfs_http->update_cdn_container($this->name, - $this->cdn_ttl, - $this->cdn_log_retention, - $this->cdn_acl_user_agent, - $cdn_acl_referrer - ); - if (!in_array($status, array(202,404))) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - $this->cdn_acl_referrer = $cdn_acl_referrer; - return True; - } - - /** - * Enable log retention for this CDN container. - * - * Enable CDN log retention on the container. If enabled logs will - * be periodically (at unpredictable intervals) compressed and - * uploaded to a ".CDN_ACCESS_LOGS" container in the form of - * "container_name.YYYYMMDDHH-XXXX.gz". Requires CDN be enabled on - * the account. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->get_container("public"); - * - * # Enable logs retention. - * $public_container->log_retention(True); - * - * - * @returns boolean True if successful - * @throws CDNNotEnabledException CDN functionality not returned during auth - * @throws AuthenticationException if auth token is not valid/expired - * @throws InvalidResponseException unexpected response - */ - function log_retention($cdn_log_retention=False) { - if ($this->cfs_http->getCDNMUrl() == NULL) { - throw new CDNNotEnabledException( - "Authentication response did not indicate CDN availability"); - } - list($status,$reason) = - $this->cfs_http->update_cdn_container($this->name, - $this->cdn_ttl, - $cdn_log_retention, - $this->cdn_acl_user_agent, - $this->cdn_acl_referrer - ); - if (!in_array($status, array(202,404))) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - $this->cdn_log_retention = $cdn_log_retention; - return True; - } - - /** - * Disable the CDN sharing for this container - * - * Use this method to disallow distribution into the CDN of this Container's - * content. - * - * NOTE: Any content already cached in the CDN will continue to be served - * from its cache until the TTL expiration transpires. The default - * TTL is typically one day, so "privatizing" the Container will take - * up to 24 hours before the content is purged from the CDN cache. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->get_container("public"); - * - * # Disable CDN accessability - * # ... still cached up to a month based on previous example - * # - * $public_container->make_private(); - * - * - * @returns boolean True if successful - * @throws CDNNotEnabledException CDN functionality not returned during auth - * @throws AuthenticationException if auth token is not valid/expired - * @throws InvalidResponseException unexpected response - */ - function make_private() - { - if ($this->cfs_http->getCDNMUrl() == NULL) { - throw new CDNNotEnabledException( - "Authentication response did not indicate CDN availability"); - } - list($status,$reason) = $this->cfs_http->remove_cdn_container($this->name); - #if ($status == 401 && $this->_re_auth()) { - # return $this->make_private(); - #} - if (!in_array($status, array(202,404))) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - $this->cdn_enabled = False; - $this->cdn_ttl = NULL; - $this->cdn_uri = NULL; - $this->cdn_ssl_uri = NULL; - $this->cdn_streaming_uri - NULL; - $this->cdn_log_retention = NULL; - $this->cdn_acl_user_agent = NULL; - $this->cdn_acl_referrer = NULL; - return True; - } - - /** - * Check if this Container is being publicly served via CDN - * - * Use this method to determine if the Container's content is currently - * available through the CDN. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->get_container("public"); - * - * # Display CDN accessability - * # - * $public_container->is_public() ? print "Yes" : print "No"; - * - * - * @returns boolean True if enabled, False otherwise - */ - function is_public() - { - return $this->cdn_enabled == True ? True : False; - } - - /** - * Create a new remote storage Object - * - * Return a new Object instance. If the remote storage Object exists, - * the instance's attributes are populated. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->get_container("public"); - * - * # This creates a local instance of a storage object but only creates - * # it in the storage system when the object's write() method is called. - * # - * $pic = $public_container->create_object("baby.jpg"); - * - * - * @param string $obj_name name of storage Object - * @return obj CF_Object instance - */ - function create_object($obj_name=NULL) - { - return new CF_Object($this, $obj_name); - } - - /** - * Return an Object instance for the remote storage Object - * - * Given a name, return a Object instance representing the - * remote storage object. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $public_container = $conn->get_container("public"); - * - * # This call only fetches header information and not the content of - * # the storage object. Use the Object's read() or stream() methods - * # to obtain the object's data. - * # - * $pic = $public_container->get_object("baby.jpg"); - * - * - * @param string $obj_name name of storage Object - * @return obj CF_Object instance - */ - function get_object($obj_name=NULL) - { - return new CF_Object($this, $obj_name, True); - } - - /** - * Return a list of Objects - * - * Return an array of strings listing the Object names in this Container. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $images = $conn->get_container("my photos"); - * - * # Grab the list of all storage objects - * # - * $all_objects = $images->list_objects(); - * - * # Grab subsets of all storage objects - * # - * $first_ten = $images->list_objects(10); - * - * # Note the use of the previous result's last object name being - * # used as the 'marker' parameter to fetch the next 10 objects - * # - * $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]); - * - * # Grab images starting with "birthday_party" and default limit/marker - * # to match all photos with that prefix - * # - * $prefixed = $images->list_objects(0, NULL, "birthday"); - * - * # Assuming you have created the appropriate directory marker Objects, - * # you can traverse your pseudo-hierarchical containers - * # with the "path" argument. - * # - * $animals = $images->list_objects(0,NULL,NULL,"pictures/animals"); - * $dogs = $images->list_objects(0,NULL,NULL,"pictures/animals/dogs"); - * - * - * @param int $limit optional only return $limit names - * @param int $marker optional subset of names starting at $marker - * @param string $prefix optional Objects whose names begin with $prefix - * @param string $path optional only return results under "pathname" - * @return array array of strings - * @throws InvalidResponseException unexpected response - */ - function list_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL) - { - list($status, $reason, $obj_list) = - $this->cfs_http->list_objects($this->name, $limit, - $marker, $prefix, $path); - #if ($status == 401 && $this->_re_auth()) { - # return $this->list_objects($limit, $marker, $prefix, $path); - #} - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return $obj_list; - } - - /** - * Return an array of Objects - * - * Return an array of Object instances in this Container. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $images = $conn->get_container("my photos"); - * - * # Grab the list of all storage objects - * # - * $all_objects = $images->get_objects(); - * - * # Grab subsets of all storage objects - * # - * $first_ten = $images->get_objects(10); - * - * # Note the use of the previous result's last object name being - * # used as the 'marker' parameter to fetch the next 10 objects - * # - * $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]); - * - * # Grab images starting with "birthday_party" and default limit/marker - * # to match all photos with that prefix - * # - * $prefixed = $images->get_objects(0, NULL, "birthday"); - * - * # Assuming you have created the appropriate directory marker Objects, - * # you can traverse your pseudo-hierarchical containers - * # with the "path" argument. - * # - * $animals = $images->get_objects(0,NULL,NULL,"pictures/animals"); - * $dogs = $images->get_objects(0,NULL,NULL,"pictures/animals/dogs"); - * - * - * @param int $limit optional only return $limit names - * @param int $marker optional subset of names starting at $marker - * @param string $prefix optional Objects whose names begin with $prefix - * @param string $path optional only return results under "pathname" - * @return array array of strings - * @throws InvalidResponseException unexpected response - */ - function get_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL) - { - list($status, $reason, $obj_array) = - $this->cfs_http->get_objects($this->name, $limit, - $marker, $prefix, $path); - #if ($status == 401 && $this->_re_auth()) { - # return $this->get_objects($limit, $marker, $prefix, $path); - #} - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - $objects = array(); - foreach ($obj_array as $obj) { - $tmp = new CF_Object($this, $obj["name"], False, False); - $tmp->content_type = $obj["content_type"]; - $tmp->content_length = (float) $obj["bytes"]; - $tmp->set_etag($obj["hash"]); - $tmp->last_modified = $obj["last_modified"]; - $objects[] = $tmp; - } - return $objects; - } - - /** - * Copy a remote storage Object to a target Container - * - * Given an Object instance or name and a target Container instance or name, copy copies the remote Object - * and all associated metadata. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $images = $conn->get_container("my photos"); - * - * # Copy specific object - * # - * $images->copy_object_to("disco_dancing.jpg","container_target"); - * - * - * @param obj $obj name or instance of Object to copy - * @param obj $container_target name or instance of target Container - * @param string $dest_obj_name name of target object (optional - uses source name if omitted) - * @param array $metadata metadata array for new object (optional) - * @param array $headers header fields array for the new object (optional) - * @return boolean true if successfully copied - * @throws SyntaxException invalid Object/Container name - * @throws NoSuchObjectException remote Object does not exist - * @throws InvalidResponseException unexpected response - */ - function copy_object_to($obj,$container_target,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) - { - $obj_name = NULL; - if (is_object($obj)) { - if (get_class($obj) == "CF_Object") { - $obj_name = $obj->name; - } - } - if (is_string($obj)) { - $obj_name = $obj; - } - if (!$obj_name) { - throw new SyntaxException("Object name not set."); - } - - if ($dest_obj_name === NULL) { - $dest_obj_name = $obj_name; - } - - $container_name_target = NULL; - if (is_object($container_target)) { - if (get_class($container_target) == "CF_Container") { - $container_name_target = $container_target->name; - } - } - if (is_string($container_target)) { - $container_name_target = $container_target; - } - if (!$container_name_target) { - throw new SyntaxException("Container name target not set."); - } - - $status = $this->cfs_http->copy_object($obj_name,$dest_obj_name,$this->name,$container_name_target,$metadata,$headers); - if ($status == 404) { - $m = "Specified object '".$this->name."/".$obj_name; - $m.= "' did not exist as source to copy from or '".$container_name_target."' did not exist as target to copy to."; - throw new NoSuchObjectException($m); - } - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return true; - } - - /** - * Copy a remote storage Object from a source Container - * - * Given an Object instance or name and a source Container instance or name, copy copies the remote Object - * and all associated metadata. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $images = $conn->get_container("my photos"); - * - * # Copy specific object - * # - * $images->copy_object_from("disco_dancing.jpg","container_source"); - * - * - * @param obj $obj name or instance of Object to copy - * @param obj $container_source name or instance of source Container - * @param string $dest_obj_name name of target object (optional - uses source name if omitted) - * @param array $metadata metadata array for new object (optional) - * @param array $headers header fields array for the new object (optional) - * @return boolean true if successfully copied - * @throws SyntaxException invalid Object/Container name - * @throws NoSuchObjectException remote Object does not exist - * @throws InvalidResponseException unexpected response - */ - function copy_object_from($obj,$container_source,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) - { - $obj_name = NULL; - if (is_object($obj)) { - if (get_class($obj) == "CF_Object") { - $obj_name = $obj->name; - } - } - if (is_string($obj)) { - $obj_name = $obj; - } - if (!$obj_name) { - throw new SyntaxException("Object name not set."); - } - - if ($dest_obj_name === NULL) { - $dest_obj_name = $obj_name; - } - - $container_name_source = NULL; - if (is_object($container_source)) { - if (get_class($container_source) == "CF_Container") { - $container_name_source = $container_source->name; - } - } - if (is_string($container_source)) { - $container_name_source = $container_source; - } - if (!$container_name_source) { - throw new SyntaxException("Container name source not set."); - } - - $status = $this->cfs_http->copy_object($obj_name,$dest_obj_name,$container_name_source,$this->name,$metadata,$headers); - if ($status == 404) { - $m = "Specified object '".$container_name_source."/".$obj_name; - $m.= "' did not exist as source to copy from or '".$this->name."/".$obj_name."' did not exist as target to copy to."; - throw new NoSuchObjectException($m); - } - if ($status < 200 || $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - - return true; - } - - /** - * Move a remote storage Object to a target Container - * - * Given an Object instance or name and a target Container instance or name, move copies the remote Object - * and all associated metadata and deletes the source Object afterwards - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $images = $conn->get_container("my photos"); - * - * # Move specific object - * # - * $images->move_object_to("disco_dancing.jpg","container_target"); - * - * - * @param obj $obj name or instance of Object to move - * @param obj $container_target name or instance of target Container - * @param string $dest_obj_name name of target object (optional - uses source name if omitted) - * @param array $metadata metadata array for new object (optional) - * @param array $headers header fields array for the new object (optional) - * @return boolean true if successfully moved - * @throws SyntaxException invalid Object/Container name - * @throws NoSuchObjectException remote Object does not exist - * @throws InvalidResponseException unexpected response - */ - function move_object_to($obj,$container_target,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) - { - $retVal = false; - - if(self::copy_object_to($obj,$container_target,$dest_obj_name,$metadata,$headers)) { - $retVal = self::delete_object($obj,$this->name); - } - - return $retVal; - } - - /** - * Move a remote storage Object from a source Container - * - * Given an Object instance or name and a source Container instance or name, move copies the remote Object - * and all associated metadata and deletes the source Object afterwards - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $images = $conn->get_container("my photos"); - * - * # Move specific object - * # - * $images->move_object_from("disco_dancing.jpg","container_target"); - * - * - * @param obj $obj name or instance of Object to move - * @param obj $container_source name or instance of target Container - * @param string $dest_obj_name name of target object (optional - uses source name if omitted) - * @param array $metadata metadata array for new object (optional) - * @param array $headers header fields array for the new object (optional) - * @return boolean true if successfully moved - * @throws SyntaxException invalid Object/Container name - * @throws NoSuchObjectException remote Object does not exist - * @throws InvalidResponseException unexpected response - */ - function move_object_from($obj,$container_source,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) - { - $retVal = false; - - if(self::copy_object_from($obj,$container_source,$dest_obj_name,$metadata,$headers)) { - $retVal = self::delete_object($obj,$container_source); - } - - return $retVal; - } - - /** - * Delete a remote storage Object - * - * Given an Object instance or name, permanently remove the remote Object - * and all associated metadata. - * - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * - * $images = $conn->get_container("my photos"); - * - * # Delete specific object - * # - * $images->delete_object("disco_dancing.jpg"); - * - * - * @param obj $obj name or instance of Object to delete - * @param obj $container name or instance of Container in which the object resides (optional) - * @return boolean True if successfully removed - * @throws SyntaxException invalid Object name - * @throws NoSuchObjectException remote Object does not exist - * @throws InvalidResponseException unexpected response - */ - function delete_object($obj,$container=NULL) - { - $obj_name = NULL; - if (is_object($obj)) { - if (get_class($obj) == "CF_Object") { - $obj_name = $obj->name; - } - } - if (is_string($obj)) { - $obj_name = $obj; - } - if (!$obj_name) { - throw new SyntaxException("Object name not set."); - } - - $container_name = NULL; - - if($container === NULL) { - $container_name = $this->name; - } - else { - if (is_object($container)) { - if (get_class($container) == "CF_Container") { - $container_name = $container->name; - } - } - if (is_string($container)) { - $container_name = $container; - } - if (!$container_name) { - throw new SyntaxException("Container name source not set."); - } - } - - $status = $this->cfs_http->delete_object($container_name, $obj_name); - #if ($status == 401 && $this->_re_auth()) { - # return $this->delete_object($obj); - #} - if ($status == 404) { - $m = "Specified object '".$container_name."/".$obj_name; - $m.= "' did not exist to delete."; - throw new NoSuchObjectException($m); - } - if ($status != 204) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - return True; - } - - /** - * Helper function to create "path" elements for a given Object name - * - * Given an Object whos name contains '/' path separators, this function - * will create the "directory marker" Objects of one byte with the - * Content-Type of "application/directory". - * - * It assumes the last element of the full path is the "real" Object - * and does NOT create a remote storage Object for that last element. - */ - function create_paths($path_name) - { - if ($path_name[0] == '/') { - $path_name = mb_substr($path_name, 0, 1); - } - $elements = explode('/', $path_name, -1); - $build_path = ""; - foreach ($elements as $idx => $val) { - if (!$build_path) { - $build_path = $val; - } else { - $build_path .= "/" . $val; - } - $obj = new CF_Object($this, $build_path); - $obj->content_type = "application/directory"; - $obj->write(".", 1); - } - } - - /** - * Internal method to grab CDN/Container info if appropriate to do so - * - * @throws InvalidResponseException unexpected response - */ - private function _cdn_initialize() - { - list($status, $reason, $cdn_enabled, $cdn_ssl_uri, $cdn_streaming_uri, $cdn_uri, $cdn_ttl, - $cdn_log_retention, $cdn_acl_user_agent, $cdn_acl_referrer) = - $this->cfs_http->head_cdn_container($this->name); - #if ($status == 401 && $this->_re_auth()) { - # return $this->_cdn_initialize(); - #} - if (!in_array($status, array(204,404))) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->cfs_http->get_error()); - } - $this->cdn_enabled = $cdn_enabled; - $this->cdn_streaming_uri = $cdn_streaming_uri; - $this->cdn_ssl_uri = $cdn_ssl_uri; - $this->cdn_uri = $cdn_uri; - $this->cdn_ttl = $cdn_ttl; - $this->cdn_log_retention = $cdn_log_retention; - $this->cdn_acl_user_agent = $cdn_acl_user_agent; - $this->cdn_acl_referrer = $cdn_acl_referrer; - } - - #private function _re_auth() - #{ - # $new_auth = new CF_Authentication( - # $this->cfs_auth->username, - # $this->cfs_auth->api_key, - # $this->cfs_auth->auth_host, - # $this->cfs_auth->account); - # $new_auth->authenticate(); - # $this->cfs_auth = $new_auth; - # $this->cfs_http->setCFAuth($this->cfs_auth); - # return True; - #} -} - - -/** - * Object operations - * - * An Object is analogous to a file on a conventional filesystem. You can - * read data from, or write data to your Objects. You can also associate - * arbitrary metadata with them. - * - * @package php-cloudfiles - */ -class CF_Object -{ - public $container; - public $name; - public $last_modified; - public $content_type; - public $content_length; - public $metadata; - public $headers; - public $manifest; - private $etag; - - /** - * Class constructor - * - * @param obj $container CF_Container instance - * @param string $name name of Object - * @param boolean $force_exists if set, throw an error if Object doesn't exist - */ - function __construct(&$container, $name, $force_exists=False, $dohead=True) - { - if ($name[0] == "/") { - $r = "Object name '".$name; - $r .= "' cannot contain begin with a '/' character."; - throw new SyntaxException($r); - } - if (strlen($name) > MAX_OBJECT_NAME_LEN) { - throw new SyntaxException("Object name exceeds " - . "maximum allowed length."); - } - $this->container = $container; - $this->name = $name; - $this->etag = NULL; - $this->_etag_override = False; - $this->last_modified = NULL; - $this->content_type = NULL; - $this->content_length = 0; - $this->metadata = array(); - $this->headers = array(); - $this->manifest = NULL; - if ($dohead) { - if (!$this->_initialize() && $force_exists) { - throw new NoSuchObjectException("No such object '".$name."'"); - } - } - } - - /** - * String representation of Object - * - * Pretty print the Object's location and name - * - * @return string Object information - */ - function __toString() - { - return $this->container->name . "/" . $this->name; - } - - /** - * Internal check to get the proper mimetype. - * - * This function would go over the available PHP methods to get - * the MIME type. - * - * By default it will try to use the PHP fileinfo library which is - * available from PHP 5.3 or as an PECL extension - * (http://pecl.php.net/package/Fileinfo). - * - * It will get the magic file by default from the system wide file - * which is usually available in /usr/share/magic on Unix or try - * to use the file specified in the source directory of the API - * (share directory). - * - * if fileinfo is not available it will try to use the internal - * mime_content_type function. - * - * @param string $handle name of file or buffer to guess the type from - * @return boolean True if successful - * @throws BadContentTypeException - */ - function _guess_content_type($handle) { - if ($this->content_type) - return; - -// if (function_exists("finfo_open")) { -// $local_magic = dirname(__FILE__) . "/share/magic"; -// $finfo = @finfo_open(FILEINFO_MIME, $local_magic); -// -// if (!$finfo) -// $finfo = @finfo_open(FILEINFO_MIME); -// -// if ($finfo) { -// -// if (is_file((string)$handle)) -// $ct = @finfo_file($finfo, $handle); -// else -// $ct = @finfo_buffer($finfo, $handle); -// -// /* PHP 5.3 fileinfo display extra information like -// charset so we remove everything after the ; since -// we are not into that stuff */ -// if ($ct) { -// $extra_content_type_info = strpos($ct, "; "); -// if ($extra_content_type_info) -// $ct = substr($ct, 0, $extra_content_type_info); -// } -// -// if ($ct && $ct != 'application/octet-stream') -// $this->content_type = $ct; -// -// @finfo_close($finfo); -// } -// } -// -// if (!$this->content_type && (string)is_file($handle) && function_exists("mime_content_type")) { -// $this->content_type = @mime_content_type($handle); -// } - - //use OC's mimetype detection for files - if(@is_file($handle)){ - $this->content_type=OC_Helper::getMimeType($handle); - }else{ - $this->content_type=OC_Helper::getStringMimeType($handle); - } - - if (!$this->content_type) { - throw new BadContentTypeException("Required Content-Type not set"); - } - return True; - } - - /** - * String representation of the Object's public URI - * - * A string representing the Object's public URI assuming that it's - * parent Container is CDN-enabled. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * # Print out the Object's CDN URI (if it has one) in an HTML img-tag - * # - * print "\n"; - * - * - * @return string Object's public URI or NULL - */ - function public_uri() - { - if ($this->container->cdn_enabled) { - return $this->container->cdn_uri . "/" . $this->name; - } - return NULL; - } - - /** - * String representation of the Object's public SSL URI - * - * A string representing the Object's public SSL URI assuming that it's - * parent Container is CDN-enabled. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * # Print out the Object's CDN SSL URI (if it has one) in an HTML img-tag - * # - * print "\n"; - * - * - * @return string Object's public SSL URI or NULL - */ - function public_ssl_uri() - { - if ($this->container->cdn_enabled) { - return $this->container->cdn_ssl_uri . "/" . $this->name; - } - return NULL; - } - /** - * String representation of the Object's public Streaming URI - * - * A string representing the Object's public Streaming URI assuming that it's - * parent Container is CDN-enabled. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * # Print out the Object's CDN Streaming URI (if it has one) in an HTML img-tag - * # - * print "\n"; - * - * - * @return string Object's public Streaming URI or NULL - */ - function public_streaming_uri() - { - if ($this->container->cdn_enabled) { - return $this->container->cdn_streaming_uri . "/" . $this->name; - } - return NULL; - } - - /** - * Read the remote Object's data - * - * Returns the Object's data. This is useful for smaller Objects such - * as images or office documents. Object's with larger content should use - * the stream() method below. - * - * Pass in $hdrs array to set specific custom HTTP headers such as - * If-Match, If-None-Match, If-Modified-Since, Range, etc. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->get_object("README"); - * $data = $doc->read(); # read image content into a string variable - * print $data; - * - * # Or see stream() below for a different example. - * # - * - * - * @param array $hdrs user-defined headers (Range, If-Match, etc.) - * @return string Object's data - * @throws InvalidResponseException unexpected response - */ - function read($hdrs=array()) - { - list($status, $reason, $data) = - $this->container->cfs_http->get_object_to_string($this, $hdrs); - #if ($status == 401 && $this->_re_auth()) { - # return $this->read($hdrs); - #} - if (($status < 200) || ($status > 299 - && $status != 412 && $status != 304)) { - throw new InvalidResponseException("Invalid response (".$status."): " - . $this->container->cfs_http->get_error()); - } - return $data; - } - - /** - * Streaming read of Object's data - * - * Given an open PHP resource (see PHP's fopen() method), fetch the Object's - * data and write it to the open resource handle. This is useful for - * streaming an Object's content to the browser (videos, images) or for - * fetching content to a local file. - * - * Pass in $hdrs array to set specific custom HTTP headers such as - * If-Match, If-None-Match, If-Modified-Since, Range, etc. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * # Assuming this is a web script to display the README to the - * # user's browser: - * # - * get_container("documents"); - * $doc = $my_docs->get_object("README"); - * - * // Hand it back to user's browser with appropriate content-type - * // - * header("Content-Type: " . $doc->content_type); - * $output = fopen("php://output", "w"); - * $doc->stream($output); # stream object content to PHP's output buffer - * fclose($output); - * ?> - * - * # See read() above for a more simple example. - * # - * - * - * @param resource $fp open resource for writing data to - * @param array $hdrs user-defined headers (Range, If-Match, etc.) - * @return string Object's data - * @throws InvalidResponseException unexpected response - */ - function stream(&$fp, $hdrs=array()) - { - list($status, $reason) = - $this->container->cfs_http->get_object_to_stream($this,$fp,$hdrs); - #if ($status == 401 && $this->_re_auth()) { - # return $this->stream($fp, $hdrs); - #} - if (($status < 200) || ($status > 299 - && $status != 412 && $status != 304)) { - throw new InvalidResponseException("Invalid response (".$status."): " - .$reason); - } - return True; - } - - /** - * Store new Object metadata - * - * Write's an Object's metadata to the remote Object. This will overwrite - * an prior Object metadata. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->get_object("README"); - * - * # Define new metadata for the object - * # - * $doc->metadata = array( - * "Author" => "EJ", - * "Subject" => "How to use the PHP tests", - * "Version" => "1.2.2" - * ); - * - * # Define additional headers for the object - * # - * $doc->headers = array( - * "Content-Disposition" => "attachment", - * ); - * - * # Push the new metadata up to the storage system - * # - * $doc->sync_metadata(); - * - * - * @return boolean True if successful, False otherwise - * @throws InvalidResponseException unexpected response - */ - function sync_metadata() - { - if (!empty($this->metadata) || !empty($this->headers) || $this->manifest) { - $status = $this->container->cfs_http->update_object($this); - #if ($status == 401 && $this->_re_auth()) { - # return $this->sync_metadata(); - #} - if ($status != 202) { - throw new InvalidResponseException("Invalid response (" - .$status."): ".$this->container->cfs_http->get_error()); - } - return True; - } - return False; - } - /** - * Store new Object manifest - * - * Write's an Object's manifest to the remote Object. This will overwrite - * an prior Object manifest. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->get_object("README"); - * - * # Define new manifest for the object - * # - * $doc->manifest = "container/prefix"; - * - * # Push the new manifest up to the storage system - * # - * $doc->sync_manifest(); - * - * - * @return boolean True if successful, False otherwise - * @throws InvalidResponseException unexpected response - */ - - function sync_manifest() - { - return $this->sync_metadata(); - } - /** - * Upload Object's data to Cloud Files - * - * Write data to the remote Object. The $data argument can either be a - * PHP resource open for reading (see PHP's fopen() method) or an in-memory - * variable. If passing in a PHP resource, you must also include the $bytes - * parameter. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->get_object("README"); - * - * # Upload placeholder text in my README - * # - * $doc->write("This is just placeholder text for now..."); - * - * - * @param string|resource $data string or open resource - * @param float $bytes amount of data to upload (required for resources) - * @param boolean $verify generate, send, and compare MD5 checksums - * @return boolean True when data uploaded successfully - * @throws SyntaxException missing required parameters - * @throws BadContentTypeException if no Content-Type was/could be set - * @throws MisMatchedChecksumException $verify is set and checksums unequal - * @throws InvalidResponseException unexpected response - */ - function write($data=NULL, $bytes=0, $verify=True) - { - if (!$data && !is_string($data)) { - throw new SyntaxException("Missing data source."); - } - if ($bytes > MAX_OBJECT_SIZE) { - throw new SyntaxException("Bytes exceeds maximum object size."); - } - if ($verify) { - if (!$this->_etag_override) { - $this->etag = $this->compute_md5sum($data); - } - } else { - $this->etag = NULL; - } - - $close_fh = False; - if (!is_resource($data)) { - # A hack to treat string data as a file handle. php://memory feels - # like a better option, but it seems to break on Windows so use - # a temporary file instead. - # - $fp = fopen("php://temp", "wb+"); - #$fp = fopen("php://memory", "wb+"); - fwrite($fp, $data, strlen($data)); - rewind($fp); - $close_fh = True; - $this->content_length = (float) strlen($data); - if ($this->content_length > MAX_OBJECT_SIZE) { - throw new SyntaxException("Data exceeds maximum object size"); - } - $ct_data = substr($data, 0, 64); - } else { - $this->content_length = $bytes; - $fp = $data; - $ct_data = fread($data, 64); - rewind($data); - } - - $this->_guess_content_type($ct_data); - - list($status, $reason, $etag) = - $this->container->cfs_http->put_object($this, $fp); - #if ($status == 401 && $this->_re_auth()) { - # return $this->write($data, $bytes, $verify); - #} - if ($status == 412) { - if ($close_fh) { fclose($fp); } - throw new SyntaxException("Missing Content-Type header"); - } - if ($status == 422) { - if ($close_fh) { fclose($fp); } - throw new MisMatchedChecksumException( - "Supplied and computed checksums do not match."); - } - if ($status != 201) { - if ($close_fh) { fclose($fp); } - throw new InvalidResponseException("Invalid response (".$status."): " - . $this->container->cfs_http->get_error()); - } - if (!$verify) { - $this->etag = $etag; - } - if ($close_fh) { fclose($fp); } - return True; - } - - /** - * Upload Object data from local filename - * - * This is a convenience function to upload the data from a local file. A - * True value for $verify will cause the method to compute the Object's MD5 - * checksum prior to uploading. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->get_object("README"); - * - * # Upload my local README's content - * # - * $doc->load_from_filename("/home/ej/cloudfiles/readme"); - * - * - * @param string $filename full path to local file - * @param boolean $verify enable local/remote MD5 checksum validation - * @return boolean True if data uploaded successfully - * @throws SyntaxException missing required parameters - * @throws BadContentTypeException if no Content-Type was/could be set - * @throws MisMatchedChecksumException $verify is set and checksums unequal - * @throws InvalidResponseException unexpected response - * @throws IOException error opening file - */ - function load_from_filename($filename, $verify=True) - { - $fp = @fopen($filename, "r"); - if (!$fp) { - throw new IOException("Could not open file for reading: ".$filename); - } - - clearstatcache(); - - $size = (float) sprintf("%u", filesize($filename)); - if ($size > MAX_OBJECT_SIZE) { - throw new SyntaxException("File size exceeds maximum object size."); - } - - $this->_guess_content_type($filename); - - $this->write($fp, $size, $verify); - fclose($fp); - return True; - } - - /** - * Save Object's data to local filename - * - * Given a local filename, the Object's data will be written to the newly - * created file. - * - * Example: - * - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * # Whoops! I deleted my local README, let me download/save it - * # - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->get_object("README"); - * - * $doc->save_to_filename("/home/ej/cloudfiles/readme.restored"); - * - * - * @param string $filename name of local file to write data to - * @return boolean True if successful - * @throws IOException error opening file - * @throws InvalidResponseException unexpected response - */ - function save_to_filename($filename) - { - $fp = @fopen($filename, "wb"); - if (!$fp) { - throw new IOException("Could not open file for writing: ".$filename); - } - $result = $this->stream($fp); - fclose($fp); - return $result; - } - /** - * Purge this Object from CDN Cache. - * Example: - * - * # ... authentication code excluded (see previous examples) ... - * # - * $conn = new CF_Authentication($auth); - * $container = $conn->get_container("cdn_enabled"); - * $obj = $container->get_object("object"); - * $obj->purge_from_cdn("user@domain.com"); - * # or - * $obj->purge_from_cdn(); - * # or - * $obj->purge_from_cdn("user1@domain.com,user2@domain.com"); - * @returns boolean True if successful - * @throws CDNNotEnabledException if CDN Is not enabled on this connection - * @throws InvalidResponseException if the response expected is not returned - */ - function purge_from_cdn($email=null) - { - if (!$this->container->cfs_http->getCDNMUrl()) - { - throw new CDNNotEnabledException( - "Authentication response did not indicate CDN availability"); - } - $status = $this->container->cfs_http->purge_from_cdn($this->container->name . "/" . $this->name, $email); - if ($status < 199 or $status > 299) { - throw new InvalidResponseException( - "Invalid response (".$status."): ".$this->container->cfs_http->get_error()); - } - return True; - } - - /** - * Set Object's MD5 checksum - * - * Manually set the Object's ETag. Including the ETag is mandatory for - * Cloud Files to perform end-to-end verification. Omitting the ETag forces - * the user to handle any data integrity checks. - * - * @param string $etag MD5 checksum hexidecimal string - */ - function set_etag($etag) - { - $this->etag = $etag; - $this->_etag_override = True; - } - - /** - * Object's MD5 checksum - * - * Accessor method for reading Object's private ETag attribute. - * - * @return string MD5 checksum hexidecimal string - */ - function getETag() - { - return $this->etag; - } - - /** - * Compute the MD5 checksum - * - * Calculate the MD5 checksum on either a PHP resource or data. The argument - * may either be a local filename, open resource for reading, or a string. - * - * WARNING: if you are uploading a big file over a stream - * it could get very slow to compute the md5 you probably want to - * set the $verify parameter to False in the write() method and - * compute yourself the md5 before if you have it. - * - * @param filename|obj|string $data filename, open resource, or string - * @return string MD5 checksum hexidecimal string - */ - function compute_md5sum(&$data) - { - - if (function_exists("hash_init") && is_resource($data)) { - $ctx = hash_init('md5'); - while (!feof($data)) { - $buffer = fgets($data, 65536); - hash_update($ctx, $buffer); - } - $md5 = hash_final($ctx, false); - rewind($data); - } elseif ((string)@is_file($data)) { - $md5 = md5_file($data); - } else { - $md5 = md5($data); - } - return $md5; - } - - /** - * PRIVATE: fetch information about the remote Object if it exists - */ - private function _initialize() - { - list($status, $reason, $etag, $last_modified, $content_type, - $content_length, $metadata, $manifest, $headers) = - $this->container->cfs_http->head_object($this); - #if ($status == 401 && $this->_re_auth()) { - # return $this->_initialize(); - #} - if ($status == 404) { - return False; - } - if ($status < 200 || $status > 299) { - throw new InvalidResponseException("Invalid response (".$status."): " - . $this->container->cfs_http->get_error()); - } - $this->etag = $etag; - $this->last_modified = $last_modified; - $this->content_type = $content_type; - $this->content_length = $content_length; - $this->metadata = $metadata; - $this->headers = $headers; - $this->manifest = $manifest; - return True; - } - - #private function _re_auth() - #{ - # $new_auth = new CF_Authentication( - # $this->cfs_auth->username, - # $this->cfs_auth->api_key, - # $this->cfs_auth->auth_host, - # $this->cfs_auth->account); - # $new_auth->authenticate(); - # $this->container->cfs_auth = $new_auth; - # $this->container->cfs_http->setCFAuth($this->cfs_auth); - # return True; - #} -} - -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * c-hanging-comment-ender-p: nil - * End: - */ -?> diff --git a/3rdparty/php-cloudfiles/cloudfiles_exceptions.php b/3rdparty/php-cloudfiles/cloudfiles_exceptions.php deleted file mode 100644 index 5624d6b86342a5b2e8f5292596c87d0ff40624a1..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/cloudfiles_exceptions.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @copyright Copyright (c) 2008, Rackspace US, Inc. - * @package php-cloudfiles-exceptions - */ - -/** - * Custom Exceptions for the CloudFiles API - * @package php-cloudfiles-exceptions - */ -class SyntaxException extends Exception { } -class AuthenticationException extends Exception { } -class InvalidResponseException extends Exception { } -class NonEmptyContainerException extends Exception { } -class NoSuchObjectException extends Exception { } -class NoSuchContainerException extends Exception { } -class NoSuchAccountException extends Exception { } -class MisMatchedChecksumException extends Exception { } -class IOException extends Exception { } -class CDNNotEnabledException extends Exception { } -class BadContentTypeException extends Exception { } -class InvalidUTF8Exception extends Exception { } -class ConnectionNotOpenException extends Exception { } - -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * c-hanging-comment-ender-p: nil - * End: - */ -?> diff --git a/3rdparty/php-cloudfiles/cloudfiles_http.php b/3rdparty/php-cloudfiles/cloudfiles_http.php deleted file mode 100644 index 0e5d9717e813496b033e2ec59026dba65535bc36..0000000000000000000000000000000000000000 --- a/3rdparty/php-cloudfiles/cloudfiles_http.php +++ /dev/null @@ -1,1488 +0,0 @@ - - * @copyright Copyright (c) 2008, Rackspace US, Inc. - * @package php-cloudfiles-http - */ - -/** - */ -require_once("cloudfiles_exceptions.php"); - -define("PHP_CF_VERSION", "1.7.10"); -define("USER_AGENT", sprintf("PHP-CloudFiles/%s", PHP_CF_VERSION)); -define("MAX_HEADER_NAME_LEN", 128); -define("MAX_HEADER_VALUE_LEN", 256); -define("ACCOUNT_CONTAINER_COUNT", "X-Account-Container-Count"); -define("ACCOUNT_BYTES_USED", "X-Account-Bytes-Used"); -define("CONTAINER_OBJ_COUNT", "X-Container-Object-Count"); -define("CONTAINER_BYTES_USED", "X-Container-Bytes-Used"); -define("MANIFEST_HEADER", "X-Object-Manifest"); -define("METADATA_HEADER_PREFIX", "X-Object-Meta-"); -define("CONTENT_HEADER_PREFIX", "Content-"); -define("ACCESS_CONTROL_HEADER_PREFIX", "Access-Control-"); -define("ORIGIN_HEADER", "Origin"); -define("CDN_URI", "X-CDN-URI"); -define("CDN_SSL_URI", "X-CDN-SSL-URI"); -define("CDN_STREAMING_URI", "X-CDN-Streaming-URI"); -define("CDN_ENABLED", "X-CDN-Enabled"); -define("CDN_LOG_RETENTION", "X-Log-Retention"); -define("CDN_ACL_USER_AGENT", "X-User-Agent-ACL"); -define("CDN_ACL_REFERRER", "X-Referrer-ACL"); -define("CDN_TTL", "X-TTL"); -define("CDNM_URL", "X-CDN-Management-Url"); -define("STORAGE_URL", "X-Storage-Url"); -define("AUTH_TOKEN", "X-Auth-Token"); -define("AUTH_USER_HEADER", "X-Auth-User"); -define("AUTH_KEY_HEADER", "X-Auth-Key"); -define("AUTH_USER_HEADER_LEGACY", "X-Storage-User"); -define("AUTH_KEY_HEADER_LEGACY", "X-Storage-Pass"); -define("AUTH_TOKEN_LEGACY", "X-Storage-Token"); -define("CDN_EMAIL", "X-Purge-Email"); -define("DESTINATION", "Destination"); -define("ETAG_HEADER", "ETag"); -define("LAST_MODIFIED_HEADER", "Last-Modified"); -define("CONTENT_TYPE_HEADER", "Content-Type"); -define("CONTENT_LENGTH_HEADER", "Content-Length"); -define("USER_AGENT_HEADER", "User-Agent"); - -/** - * HTTP/cURL wrapper for Cloud Files - * - * This class should not be used directly. It's only purpose is to abstract - * out the HTTP communication from the main API. - * - * @package php-cloudfiles-http - */ -class CF_Http -{ - private $error_str; - private $dbug; - private $cabundle_path; - private $api_version; - - # Authentication instance variables - # - private $storage_url; - private $cdnm_url; - private $auth_token; - - # Request/response variables - # - private $response_status; - private $response_reason; - private $connections; - - # Variables used for content/header callbacks - # - private $_user_read_progress_callback_func; - private $_user_write_progress_callback_func; - private $_write_callback_type; - private $_text_list; - private $_account_container_count; - private $_account_bytes_used; - private $_container_object_count; - private $_container_bytes_used; - private $_obj_etag; - private $_obj_last_modified; - private $_obj_content_type; - private $_obj_content_length; - private $_obj_metadata; - private $_obj_headers; - private $_obj_manifest; - private $_obj_write_resource; - private $_obj_write_string; - private $_cdn_enabled; - private $_cdn_ssl_uri; - private $_cdn_streaming_uri; - private $_cdn_uri; - private $_cdn_ttl; - private $_cdn_log_retention; - private $_cdn_acl_user_agent; - private $_cdn_acl_referrer; - - function __construct($api_version) - { - $this->dbug = False; - $this->cabundle_path = NULL; - $this->api_version = $api_version; - $this->error_str = NULL; - - $this->storage_url = NULL; - $this->cdnm_url = NULL; - $this->auth_token = NULL; - - $this->response_status = NULL; - $this->response_reason = NULL; - - # Curl connections array - since there is no way to "re-set" the - # connection paramaters for a cURL handle, we keep an array of - # the unique use-cases and funnel all of those same type - # requests through the appropriate curl connection. - # - $this->connections = array( - "GET_CALL" => NULL, # GET objects/containers/lists - "PUT_OBJ" => NULL, # PUT object - "HEAD" => NULL, # HEAD requests - "PUT_CONT" => NULL, # PUT container - "DEL_POST" => NULL, # DELETE containers/objects, POST objects - "COPY" => null, # COPY objects - ); - - $this->_user_read_progress_callback_func = NULL; - $this->_user_write_progress_callback_func = NULL; - $this->_write_callback_type = NULL; - $this->_text_list = array(); - $this->_return_list = NULL; - $this->_account_container_count = 0; - $this->_account_bytes_used = 0; - $this->_container_object_count = 0; - $this->_container_bytes_used = 0; - $this->_obj_write_resource = NULL; - $this->_obj_write_string = ""; - $this->_obj_etag = NULL; - $this->_obj_last_modified = NULL; - $this->_obj_content_type = NULL; - $this->_obj_content_length = NULL; - $this->_obj_metadata = array(); - $this->_obj_manifest = NULL; - $this->_obj_headers = NULL; - $this->_cdn_enabled = NULL; - $this->_cdn_ssl_uri = NULL; - $this->_cdn_streaming_uri = NULL; - $this->_cdn_uri = NULL; - $this->_cdn_ttl = NULL; - $this->_cdn_log_retention = NULL; - $this->_cdn_acl_user_agent = NULL; - $this->_cdn_acl_referrer = NULL; - - # The OS list with a PHP without an updated CA File for CURL to - # connect to SSL Websites. It is the first 3 letters of the PHP_OS - # variable. - $OS_CAFILE_NONUPDATED=array( - "win","dar" - ); - - if (in_array((strtolower (substr(PHP_OS, 0,3))), $OS_CAFILE_NONUPDATED)) - $this->ssl_use_cabundle(); - - } - - function ssl_use_cabundle($path=NULL) - { - if ($path) { - $this->cabundle_path = $path; - } else { - $this->cabundle_path = dirname(__FILE__) . "/share/cacert.pem"; - } - if (!file_exists($this->cabundle_path)) { - throw new IOException("Could not use CA bundle: " - . $this->cabundle_path); - } - return; - } - - # Uses separate cURL connection to authenticate - # - function authenticate($user, $pass, $acct=NULL, $host=NULL) - { - $path = array(); - if (isset($acct)){ - $headers = array( - sprintf("%s: %s", AUTH_USER_HEADER_LEGACY, $user), - sprintf("%s: %s", AUTH_KEY_HEADER_LEGACY, $pass), - ); - $path[] = $host; - $path[] = rawurlencode(sprintf("v%d",$this->api_version)); - $path[] = rawurlencode($acct); - } else { - $headers = array( - sprintf("%s: %s", AUTH_USER_HEADER, $user), - sprintf("%s: %s", AUTH_KEY_HEADER, $pass), - ); - $path[] = $host; - } - $path[] = "v1.0"; - $url = implode("/", $path); - - $curl_ch = curl_init(); - if (!is_null($this->cabundle_path)) { - curl_setopt($curl_ch, CURLOPT_SSL_VERIFYPEER, True); - curl_setopt($curl_ch, CURLOPT_CAINFO, $this->cabundle_path); - } - curl_setopt($curl_ch, CURLOPT_VERBOSE, $this->dbug); - curl_setopt($curl_ch, CURLOPT_FOLLOWLOCATION, 1); - curl_setopt($curl_ch, CURLOPT_MAXREDIRS, 4); - curl_setopt($curl_ch, CURLOPT_HEADER, 0); - curl_setopt($curl_ch, CURLOPT_HTTPHEADER, $headers); - curl_setopt($curl_ch, CURLOPT_USERAGENT, USER_AGENT); - curl_setopt($curl_ch, CURLOPT_RETURNTRANSFER, TRUE); - curl_setopt($curl_ch, CURLOPT_HEADERFUNCTION,array(&$this,'_auth_hdr_cb')); - curl_setopt($curl_ch, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($curl_ch, CURLOPT_URL, $url); - curl_exec($curl_ch); - curl_close($curl_ch); - - return array($this->response_status, $this->response_reason, - $this->storage_url, $this->cdnm_url, $this->auth_token); - } - - # (CDN) GET /v1/Account - # - function list_cdn_containers($enabled_only) - { - $conn_type = "GET_CALL"; - $url_path = $this->_make_path("CDN"); - - $this->_write_callback_type = "TEXT_LIST"; - if ($enabled_only) - { - $return_code = $this->_send_request($conn_type, $url_path . - '/?enabled_only=true'); - } - else - { - $return_code = $this->_send_request($conn_type, $url_path); - } - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,array()); - } - if ($return_code == 401) { - return array($return_code,"Unauthorized",array()); - } - if ($return_code == 404) { - return array($return_code,"Account not found.",array()); - } - if ($return_code == 204) { - return array($return_code,"Account has no CDN enabled Containers.", - array()); - } - if ($return_code == 200) { - $this->create_array(); - return array($return_code,$this->response_reason,$this->_text_list); - } - $this->error_str = "Unexpected HTTP response: ".$this->response_reason; - return array($return_code,$this->error_str,array()); - } - - # (CDN) DELETE /v1/Account/Container or /v1/Account/Container/Object - # - function purge_from_cdn($path, $email=null) - { - if(!$path) - throw new SyntaxException("Path not set"); - $url_path = $this->_make_path("CDN", NULL, $path); - if($email) - { - $hdrs = array(CDN_EMAIL => $email); - $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"DELETE"); - } - else - $return_code = $this->_send_request("DEL_POST",$url_path,null,"DELETE"); - return $return_code; - } - - # (CDN) POST /v1/Account/Container - function update_cdn_container($container_name, $ttl=86400, $cdn_log_retention=False, - $cdn_acl_user_agent="", $cdn_acl_referrer) - { - if ($container_name == "") - throw new SyntaxException("Container name not set."); - - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Container name not set."); - - $url_path = $this->_make_path("CDN", $container_name); - $hdrs = array( - CDN_ENABLED => "True", - CDN_TTL => $ttl, - CDN_LOG_RETENTION => $cdn_log_retention ? "True" : "False", - CDN_ACL_USER_AGENT => $cdn_acl_user_agent, - CDN_ACL_REFERRER => $cdn_acl_referrer, - ); - $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST"); - if ($return_code == 401) { - $this->error_str = "Unauthorized"; - return array($return_code, $this->error_str, NULL); - } - if ($return_code == 404) { - $this->error_str = "Container not found."; - return array($return_code, $this->error_str, NULL); - } - if ($return_code != 202) { - $this->error_str="Unexpected HTTP response: ".$this->response_reason; - return array($return_code, $this->error_str, NULL); - } - return array($return_code, "Accepted", $this->_cdn_uri, $this->_cdn_ssl_uri); - - } - - # (CDN) PUT /v1/Account/Container - # - function add_cdn_container($container_name, $ttl=86400) - { - if ($container_name == "") - throw new SyntaxException("Container name not set."); - - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Container name not set."); - - $url_path = $this->_make_path("CDN", $container_name); - $hdrs = array( - CDN_ENABLED => "True", - CDN_TTL => $ttl, - ); - $return_code = $this->_send_request("PUT_CONT", $url_path, $hdrs); - if ($return_code == 401) { - $this->error_str = "Unauthorized"; - return array($return_code,$this->response_reason,False); - } - if (!in_array($return_code, array(201,202))) { - $this->error_str="Unexpected HTTP response: ".$this->response_reason; - return array($return_code,$this->response_reason,False); - } - return array($return_code,$this->response_reason,$this->_cdn_uri, - $this->_cdn_ssl_uri); - } - - # (CDN) POST /v1/Account/Container - # - function remove_cdn_container($container_name) - { - if ($container_name == "") - throw new SyntaxException("Container name not set."); - - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Container name not set."); - - $url_path = $this->_make_path("CDN", $container_name); - $hdrs = array(CDN_ENABLED => "False"); - $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST"); - if ($return_code == 401) { - $this->error_str = "Unauthorized"; - return array($return_code, $this->error_str); - } - if ($return_code == 404) { - $this->error_str = "Container not found."; - return array($return_code, $this->error_str); - } - if ($return_code != 202) { - $this->error_str="Unexpected HTTP response: ".$this->response_reason; - return array($return_code, $this->error_str); - } - return array($return_code, "Accepted"); - } - - # (CDN) HEAD /v1/Account - # - function head_cdn_container($container_name) - { - if ($container_name == "") - throw new SyntaxException("Container name not set."); - - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Container name not set."); - - $conn_type = "HEAD"; - $url_path = $this->_make_path("CDN", $container_name); - $return_code = $this->_send_request($conn_type, $url_path, NULL, "GET", True); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); - } - if ($return_code == 401) { - return array($return_code,"Unauthorized",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); - } - if ($return_code == 404) { - return array($return_code,"Account not found.",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); - } - if ($return_code == 204) { - return array($return_code,$this->response_reason, - $this->_cdn_enabled, $this->_cdn_ssl_uri, - $this->_cdn_streaming_uri, - $this->_cdn_uri, $this->_cdn_ttl, - $this->_cdn_log_retention, - $this->_cdn_acl_user_agent, - $this->_cdn_acl_referrer - ); - } - return array($return_code,$this->response_reason, - NULL,NULL,NULL,NULL, - $this->_cdn_log_retention, - $this->_cdn_acl_user_agent, - $this->_cdn_acl_referrer, - NULL - ); - } - - # GET /v1/Account - # - function list_containers($limit=0, $marker=NULL) - { - $conn_type = "GET_CALL"; - $url_path = $this->_make_path(); - - $limit = intval($limit); - $params = array(); - if ($limit > 0) { - $params[] = "limit=$limit"; - } - if ($marker) { - $params[] = "marker=".rawurlencode($marker); - } - if (!empty($params)) { - $url_path .= "?" . implode("&", $params); - } - - $this->_write_callback_type = "TEXT_LIST"; - $return_code = $this->_send_request($conn_type, $url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,array()); - } - if ($return_code == 204) { - return array($return_code, "Account has no containers.", array()); - } - if ($return_code == 404) { - $this->error_str = "Invalid account name for authentication token."; - return array($return_code,$this->error_str,array()); - } - if ($return_code == 200) { - $this->create_array(); - return array($return_code, $this->response_reason, $this->_text_list); - } - $this->error_str = "Unexpected HTTP response: ".$this->response_reason; - return array($return_code,$this->error_str,array()); - } - - # GET /v1/Account?format=json - # - function list_containers_info($limit=0, $marker=NULL) - { - $conn_type = "GET_CALL"; - $url_path = $this->_make_path() . "?format=json"; - - $limit = intval($limit); - $params = array(); - if ($limit > 0) { - $params[] = "limit=$limit"; - } - if ($marker) { - $params[] = "marker=".rawurlencode($marker); - } - if (!empty($params)) { - $url_path .= "&" . implode("&", $params); - } - - $this->_write_callback_type = "OBJECT_STRING"; - $return_code = $this->_send_request($conn_type, $url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,array()); - } - if ($return_code == 204) { - return array($return_code, "Account has no containers.", array()); - } - if ($return_code == 404) { - $this->error_str = "Invalid account name for authentication token."; - return array($return_code,$this->error_str,array()); - } - if ($return_code == 200) { - $json_body = json_decode($this->_obj_write_string, True); - return array($return_code, $this->response_reason, $json_body); - } - $this->error_str = "Unexpected HTTP response: ".$this->response_reason; - return array($return_code,$this->error_str,array()); - } - - # HEAD /v1/Account - # - function head_account() - { - $conn_type = "HEAD"; - - $url_path = $this->_make_path(); - $return_code = $this->_send_request($conn_type,$url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,0,0); - } - if ($return_code == 404) { - return array($return_code,"Account not found.",0,0); - } - if ($return_code == 204) { - return array($return_code,$this->response_reason, - $this->_account_container_count, $this->_account_bytes_used); - } - return array($return_code,$this->response_reason,0,0); - } - - # PUT /v1/Account/Container - # - function create_container($container_name) - { - if ($container_name == "") - throw new SyntaxException("Container name not set."); - - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Container name not set."); - - $url_path = $this->_make_path("STORAGE", $container_name); - $return_code = $this->_send_request("PUT_CONT",$url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return False; - } - return $return_code; - } - - # DELETE /v1/Account/Container - # - function delete_container($container_name) - { - if ($container_name == "") - throw new SyntaxException("Container name not set."); - - if ($container_name != "0" and !isset($container_name)) - throw new SyntaxException("Container name not set."); - - $url_path = $this->_make_path("STORAGE", $container_name); - $return_code = $this->_send_request("DEL_POST",$url_path,array(),"DELETE"); - - switch ($return_code) { - case 204: - break; - case 0: - $this->error_str .= ": Failed to obtain valid HTTP response.";; - break; - case 409: - $this->error_str = "Container must be empty prior to removing it."; - break; - case 404: - $this->error_str = "Specified container did not exist to delete."; - break; - default: - $this->error_str = "Unexpected HTTP return code: $return_code."; - } - return $return_code; - } - - # GET /v1/Account/Container - # - function list_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL) - { - if (!$cname) { - $this->error_str = "Container name not set."; - return array(0, $this->error_str, array()); - } - - $url_path = $this->_make_path("STORAGE", $cname); - - $limit = intval($limit); - $params = array(); - if ($limit > 0) { - $params[] = "limit=$limit"; - } - if ($marker) { - $params[] = "marker=".rawurlencode($marker); - } - if ($prefix) { - $params[] = "prefix=".rawurlencode($prefix); - } - if ($path) { - $params[] = "path=".rawurlencode($path); - } - if (!empty($params)) { - $url_path .= "?" . implode("&", $params); - } - - $conn_type = "GET_CALL"; - $this->_write_callback_type = "TEXT_LIST"; - $return_code = $this->_send_request($conn_type,$url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,array()); - } - if ($return_code == 204) { - $this->error_str = "Container has no Objects."; - return array($return_code,$this->error_str,array()); - } - if ($return_code == 404) { - $this->error_str = "Container has no Objects."; - return array($return_code,$this->error_str,array()); - } - if ($return_code == 200) { - $this->create_array(); - return array($return_code,$this->response_reason, $this->_text_list); - } - $this->error_str = "Unexpected HTTP response code: $return_code"; - return array(0,$this->error_str,array()); - } - - # GET /v1/Account/Container?format=json - # - function get_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL) - { - if (!$cname) { - $this->error_str = "Container name not set."; - return array(0, $this->error_str, array()); - } - - $url_path = $this->_make_path("STORAGE", $cname); - - $limit = intval($limit); - $params = array(); - $params[] = "format=json"; - if ($limit > 0) { - $params[] = "limit=$limit"; - } - if ($marker) { - $params[] = "marker=".rawurlencode($marker); - } - if ($prefix) { - $params[] = "prefix=".rawurlencode($prefix); - } - if ($path) { - $params[] = "path=".rawurlencode($path); - } - if (!empty($params)) { - $url_path .= "?" . implode("&", $params); - } - - $conn_type = "GET_CALL"; - $this->_write_callback_type = "OBJECT_STRING"; - $return_code = $this->_send_request($conn_type,$url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,array()); - } - if ($return_code == 204) { - $this->error_str = "Container has no Objects."; - return array($return_code,$this->error_str,array()); - } - if ($return_code == 404) { - $this->error_str = "Container has no Objects."; - return array($return_code,$this->error_str,array()); - } - if ($return_code == 200) { - $json_body = json_decode($this->_obj_write_string, True); - return array($return_code,$this->response_reason, $json_body); - } - $this->error_str = "Unexpected HTTP response code: $return_code"; - return array(0,$this->error_str,array()); - } - - - # HEAD /v1/Account/Container - # - function head_container($container_name) - { - - if ($container_name == "") { - $this->error_str = "Container name not set."; - return False; - } - - if ($container_name != "0" and !isset($container_name)) { - $this->error_str = "Container name not set."; - return False; - } - - $conn_type = "HEAD"; - - $url_path = $this->_make_path("STORAGE", $container_name); - $return_code = $this->_send_request($conn_type,$url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,0,0); - } - if ($return_code == 404) { - return array($return_code,"Container not found.",0,0); - } - if ($return_code == 204 || $return_code == 200) { - return array($return_code,$this->response_reason, - $this->_container_object_count, $this->_container_bytes_used); - } - return array($return_code,$this->response_reason,0,0); - } - - # GET /v1/Account/Container/Object - # - function get_object_to_string(&$obj, $hdrs=array()) - { - if (!is_object($obj) || get_class($obj) != "CF_Object") { - throw new SyntaxException( - "Method argument is not a valid CF_Object."); - } - - $conn_type = "GET_CALL"; - - $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); - $this->_write_callback_type = "OBJECT_STRING"; - $return_code = $this->_send_request($conn_type,$url_path,$hdrs); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array($return_code0,$this->error_str,NULL); - } - if ($return_code == 404) { - $this->error_str = "Object not found."; - return array($return_code0,$this->error_str,NULL); - } - if (($return_code < 200) || ($return_code > 299 - && $return_code != 412 && $return_code != 304)) { - $this->error_str = "Unexpected HTTP return code: $return_code"; - return array($return_code,$this->error_str,NULL); - } - return array($return_code,$this->response_reason, $this->_obj_write_string); - } - - # GET /v1/Account/Container/Object - # - function get_object_to_stream(&$obj, &$resource=NULL, $hdrs=array()) - { - if (!is_object($obj) || get_class($obj) != "CF_Object") { - throw new SyntaxException( - "Method argument is not a valid CF_Object."); - } - if (!is_resource($resource)) { - throw new SyntaxException( - "Resource argument not a valid PHP resource."); - } - - $conn_type = "GET_CALL"; - - $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); - $this->_obj_write_resource = $resource; - $this->_write_callback_type = "OBJECT_STREAM"; - $return_code = $this->_send_request($conn_type,$url_path,$hdrs); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array($return_code,$this->error_str); - } - if ($return_code == 404) { - $this->error_str = "Object not found."; - return array($return_code,$this->error_str); - } - if (($return_code < 200) || ($return_code > 299 - && $return_code != 412 && $return_code != 304)) { - $this->error_str = "Unexpected HTTP return code: $return_code"; - return array($return_code,$this->error_str); - } - return array($return_code,$this->response_reason); - } - - # PUT /v1/Account/Container/Object - # - function put_object(&$obj, &$fp) - { - if (!is_object($obj) || get_class($obj) != "CF_Object") { - throw new SyntaxException( - "Method argument is not a valid CF_Object."); - } - if (!is_resource($fp)) { - throw new SyntaxException( - "File pointer argument is not a valid resource."); - } - - $conn_type = "PUT_OBJ"; - $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); - - $hdrs = $this->_headers($obj); - - $etag = $obj->getETag(); - if (isset($etag)) { - $hdrs[] = "ETag: " . $etag; - } - if (!$obj->content_type) { - $hdrs[] = "Content-Type: application/octet-stream"; - } else { - $hdrs[] = "Content-Type: " . $obj->content_type; - } - - $this->_init($conn_type); - curl_setopt($this->connections[$conn_type], - CURLOPT_INFILE, $fp); - if (!$obj->content_length) { - # We don''t know the Content-Length, so assumed "chunked" PUT - # - curl_setopt($this->connections[$conn_type], CURLOPT_UPLOAD, True); - $hdrs[] = 'Transfer-Encoding: chunked'; - } else { - # We know the Content-Length, so use regular transfer - # - curl_setopt($this->connections[$conn_type], - CURLOPT_INFILESIZE, $obj->content_length); - } - $return_code = $this->_send_request($conn_type,$url_path,$hdrs); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0,$this->error_str,NULL); - } - if ($return_code == 412) { - $this->error_str = "Missing Content-Type header"; - return array($return_code,$this->error_str,NULL); - } - if ($return_code == 422) { - $this->error_str = "Derived and computed checksums do not match."; - return array($return_code,$this->error_str,NULL); - } - if ($return_code != 201) { - $this->error_str = "Unexpected HTTP return code: $return_code"; - return array($return_code,$this->error_str,NULL); - } - return array($return_code,$this->response_reason,$this->_obj_etag); - } - - # POST /v1/Account/Container/Object - # - function update_object(&$obj) - { - if (!is_object($obj) || get_class($obj) != "CF_Object") { - throw new SyntaxException( - "Method argument is not a valid CF_Object."); - } - - # TODO: The is_array check isn't in sync with the error message - if (!$obj->manifest && !(is_array($obj->metadata) || is_array($obj->headers))) { - $this->error_str = "Metadata and headers arrays are empty."; - return 0; - } - - $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); - - $hdrs = $this->_headers($obj); - $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST"); - switch ($return_code) { - case 202: - break; - case 0: - $this->error_str .= ": Failed to obtain valid HTTP response."; - $return_code = 0; - break; - case 404: - $this->error_str = "Account, Container, or Object not found."; - break; - default: - $this->error_str = "Unexpected HTTP return code: $return_code"; - break; - } - return $return_code; - } - - # HEAD /v1/Account/Container/Object - # - function head_object(&$obj) - { - if (!is_object($obj) || get_class($obj) != "CF_Object") { - throw new SyntaxException( - "Method argument is not a valid CF_Object."); - } - - $conn_type = "HEAD"; - - $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); - $return_code = $this->_send_request($conn_type,$url_path); - - if (!$return_code) { - $this->error_str .= ": Failed to obtain valid HTTP response."; - return array(0, $this->error_str." ".$this->response_reason, - NULL, NULL, NULL, NULL, array(), NULL, array()); - } - - if ($return_code == 404) { - return array($return_code, $this->response_reason, - NULL, NULL, NULL, NULL, array(), NULL, array()); - } - if ($return_code == 204 || $return_code == 200) { - return array($return_code,$this->response_reason, - $this->_obj_etag, - $this->_obj_last_modified, - $this->_obj_content_type, - $this->_obj_content_length, - $this->_obj_metadata, - $this->_obj_manifest, - $this->_obj_headers); - } - $this->error_str = "Unexpected HTTP return code: $return_code"; - return array($return_code, $this->error_str." ".$this->response_reason, - NULL, NULL, NULL, NULL, array(), NULL, array()); - } - - # COPY /v1/Account/Container/Object - # - function copy_object($src_obj_name, $dest_obj_name, $container_name_source, $container_name_target, $metadata=NULL, $headers=NULL) - { - if (!$src_obj_name) { - $this->error_str = "Object name not set."; - return 0; - } - - if ($container_name_source == "") { - $this->error_str = "Container name source not set."; - return 0; - } - - if ($container_name_source != "0" and !isset($container_name_source)) { - $this->error_str = "Container name source not set."; - return 0; - } - - if ($container_name_target == "") { - $this->error_str = "Container name target not set."; - return 0; - } - - if ($container_name_target != "0" and !isset($container_name_target)) { - $this->error_str = "Container name target not set."; - return 0; - } - - $conn_type = "COPY"; - - $url_path = $this->_make_path("STORAGE", $container_name_source, rawurlencode($src_obj_name)); - $destination = rawurlencode($container_name_target."/".$dest_obj_name); - - $hdrs = self::_process_headers($metadata, $headers); - $hdrs[DESTINATION] = $destination; - - $return_code = $this->_send_request($conn_type,$url_path,$hdrs,"COPY"); - switch ($return_code) { - case 201: - break; - case 0: - $this->error_str .= ": Failed to obtain valid HTTP response."; - $return_code = 0; - break; - case 404: - $this->error_str = "Specified container/object did not exist."; - break; - default: - $this->error_str = "Unexpected HTTP return code: $return_code."; - } - return $return_code; - } - - # DELETE /v1/Account/Container/Object - # - function delete_object($container_name, $object_name) - { - if ($container_name == "") { - $this->error_str = "Container name not set."; - return 0; - } - - if ($container_name != "0" and !isset($container_name)) { - $this->error_str = "Container name not set."; - return 0; - } - - if (!$object_name) { - $this->error_str = "Object name not set."; - return 0; - } - - $url_path = $this->_make_path("STORAGE", $container_name,$object_name); - $return_code = $this->_send_request("DEL_POST",$url_path,NULL,"DELETE"); - switch ($return_code) { - case 204: - break; - case 0: - $this->error_str .= ": Failed to obtain valid HTTP response."; - $return_code = 0; - break; - case 404: - $this->error_str = "Specified container did not exist to delete."; - break; - default: - $this->error_str = "Unexpected HTTP return code: $return_code."; - } - return $return_code; - } - - function get_error() - { - return $this->error_str; - } - - function setDebug($bool) - { - $this->dbug = $bool; - foreach ($this->connections as $k => $v) { - if (!is_null($v)) { - curl_setopt($this->connections[$k], CURLOPT_VERBOSE, $this->dbug); - } - } - } - - function getCDNMUrl() - { - return $this->cdnm_url; - } - - function getStorageUrl() - { - return $this->storage_url; - } - - function getAuthToken() - { - return $this->auth_token; - } - - function setCFAuth($cfs_auth, $servicenet=False) - { - if ($servicenet) { - $this->storage_url = "https://snet-" . substr($cfs_auth->storage_url, 8); - } else { - $this->storage_url = $cfs_auth->storage_url; - } - $this->auth_token = $cfs_auth->auth_token; - $this->cdnm_url = $cfs_auth->cdnm_url; - } - - function setReadProgressFunc($func_name) - { - $this->_user_read_progress_callback_func = $func_name; - } - - function setWriteProgressFunc($func_name) - { - $this->_user_write_progress_callback_func = $func_name; - } - - private function _header_cb($ch, $header) - { - $header_len = strlen($header); - - if (preg_match("/^(HTTP\/1\.[01]) (\d{3}) (.*)/", $header, $matches)) { - $this->response_status = $matches[2]; - $this->response_reason = $matches[3]; - return $header_len; - } - - if (strpos($header, ":") === False) - return $header_len; - list($name, $value) = explode(":", $header, 2); - $value = trim($value); - - switch (strtolower($name)) { - case strtolower(CDN_ENABLED): - $this->_cdn_enabled = strtolower($value) == "true"; - break; - case strtolower(CDN_URI): - $this->_cdn_uri = $value; - break; - case strtolower(CDN_SSL_URI): - $this->_cdn_ssl_uri = $value; - break; - case strtolower(CDN_STREAMING_URI): - $this->_cdn_streaming_uri = $value; - break; - case strtolower(CDN_TTL): - $this->_cdn_ttl = $value; - break; - case strtolower(MANIFEST_HEADER): - $this->_obj_manifest = $value; - break; - case strtolower(CDN_LOG_RETENTION): - $this->_cdn_log_retention = strtolower($value) == "true"; - break; - case strtolower(CDN_ACL_USER_AGENT): - $this->_cdn_acl_user_agent = $value; - break; - case strtolower(CDN_ACL_REFERRER): - $this->_cdn_acl_referrer = $value; - break; - case strtolower(ACCOUNT_CONTAINER_COUNT): - $this->_account_container_count = (float)$value+0; - break; - case strtolower(ACCOUNT_BYTES_USED): - $this->_account_bytes_used = (float)$value+0; - break; - case strtolower(CONTAINER_OBJ_COUNT): - $this->_container_object_count = (float)$value+0; - break; - case strtolower(CONTAINER_BYTES_USED): - $this->_container_bytes_used = (float)$value+0; - break; - case strtolower(ETAG_HEADER): - $this->_obj_etag = $value; - break; - case strtolower(LAST_MODIFIED_HEADER): - $this->_obj_last_modified = $value; - break; - case strtolower(CONTENT_TYPE_HEADER): - $this->_obj_content_type = $value; - break; - case strtolower(CONTENT_LENGTH_HEADER): - $this->_obj_content_length = (float)$value+0; - break; - case strtolower(ORIGIN_HEADER): - $this->_obj_headers[ORIGIN_HEADER] = $value; - break; - default: - if (strncasecmp($name, METADATA_HEADER_PREFIX, strlen(METADATA_HEADER_PREFIX)) == 0) { - $name = substr($name, strlen(METADATA_HEADER_PREFIX)); - $this->_obj_metadata[$name] = $value; - } - elseif ((strncasecmp($name, CONTENT_HEADER_PREFIX, strlen(CONTENT_HEADER_PREFIX)) == 0) || - (strncasecmp($name, ACCESS_CONTROL_HEADER_PREFIX, strlen(ACCESS_CONTROL_HEADER_PREFIX)) == 0)) { - $this->_obj_headers[$name] = $value; - } - } - return $header_len; - } - - private function _read_cb($ch, $fd, $length) - { - $data = fread($fd, $length); - $len = strlen($data); - if (isset($this->_user_write_progress_callback_func)) { - call_user_func($this->_user_write_progress_callback_func, $len); - } - return $data; - } - - private function _write_cb($ch, $data) - { - $dlen = strlen($data); - switch ($this->_write_callback_type) { - case "TEXT_LIST": - $this->_return_list = $this->_return_list . $data; - //= explode("\n",$data); # keep tab,space - //his->_text_list[] = rtrim($data,"\n\r\x0B"); # keep tab,space - break; - case "OBJECT_STREAM": - fwrite($this->_obj_write_resource, $data, $dlen); - break; - case "OBJECT_STRING": - $this->_obj_write_string .= $data; - break; - } - if (isset($this->_user_read_progress_callback_func)) { - call_user_func($this->_user_read_progress_callback_func, $dlen); - } - return $dlen; - } - - private function _auth_hdr_cb($ch, $header) - { - preg_match("/^HTTP\/1\.[01] (\d{3}) (.*)/", $header, $matches); - if (isset($matches[1])) { - $this->response_status = $matches[1]; - } - if (isset($matches[2])) { - $this->response_reason = $matches[2]; - } - if (stripos($header, STORAGE_URL) === 0) { - $this->storage_url = trim(substr($header, strlen(STORAGE_URL)+1)); - } - if (stripos($header, CDNM_URL) === 0) { - $this->cdnm_url = trim(substr($header, strlen(CDNM_URL)+1)); - } - if (stripos($header, AUTH_TOKEN) === 0) { - $this->auth_token = trim(substr($header, strlen(AUTH_TOKEN)+1)); - } - if (stripos($header, AUTH_TOKEN_LEGACY) === 0) { - $this->auth_token = trim(substr($header,strlen(AUTH_TOKEN_LEGACY)+1)); - } - return strlen($header); - } - - private function _make_headers($hdrs=NULL) - { - $new_headers = array(); - $has_stoken = False; - $has_uagent = False; - if (is_array($hdrs)) { - foreach ($hdrs as $h => $v) { - if (is_int($h)) { - list($h, $v) = explode(":", $v, 2); - } - - if (strncasecmp($h, AUTH_TOKEN, strlen(AUTH_TOKEN)) === 0) { - $has_stoken = True; - } - if (strncasecmp($h, USER_AGENT_HEADER, strlen(USER_AGENT_HEADER)) === 0) { - $has_uagent = True; - } - $new_headers[] = $h . ": " . trim($v); - } - } - if (!$has_stoken) { - $new_headers[] = AUTH_TOKEN . ": " . $this->auth_token; - } - if (!$has_uagent) { - $new_headers[] = USER_AGENT_HEADER . ": " . USER_AGENT; - } - return $new_headers; - } - - private function _init($conn_type, $force_new=False) - { - if (!array_key_exists($conn_type, $this->connections)) { - $this->error_str = "Invalid CURL_XXX connection type"; - return False; - } - - if (is_null($this->connections[$conn_type]) || $force_new) { - $ch = curl_init(); - } else { - return; - } - - if ($this->dbug) { curl_setopt($ch, CURLOPT_VERBOSE, 1); } - - if (!is_null($this->cabundle_path)) { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True); - curl_setopt($ch, CURLOPT_CAINFO, $this->cabundle_path); - } - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($ch, CURLOPT_MAXREDIRS, 4); - curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&$this, '_header_cb')); - - if ($conn_type == "GET_CALL") { - curl_setopt($ch, CURLOPT_WRITEFUNCTION, array(&$this, '_write_cb')); - } - - if ($conn_type == "PUT_OBJ") { - curl_setopt($ch, CURLOPT_PUT, 1); - curl_setopt($ch, CURLOPT_READFUNCTION, array(&$this, '_read_cb')); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - } - if ($conn_type == "HEAD") { - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "HEAD"); - curl_setopt($ch, CURLOPT_NOBODY, 1); - } - if ($conn_type == "PUT_CONT") { - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); - curl_setopt($ch, CURLOPT_INFILESIZE, 0); - curl_setopt($ch, CURLOPT_NOBODY, 1); - } - if ($conn_type == "DEL_POST") { - curl_setopt($ch, CURLOPT_NOBODY, 1); - } - if ($conn_type == "COPY") { - curl_setopt($ch, CURLOPT_NOBODY, 1); - } - $this->connections[$conn_type] = $ch; - return; - } - - private function _reset_callback_vars() - { - $this->_text_list = array(); - $this->_return_list = NULL; - $this->_account_container_count = 0; - $this->_account_bytes_used = 0; - $this->_container_object_count = 0; - $this->_container_bytes_used = 0; - $this->_obj_etag = NULL; - $this->_obj_last_modified = NULL; - $this->_obj_content_type = NULL; - $this->_obj_content_length = NULL; - $this->_obj_metadata = array(); - $this->_obj_manifest = NULL; - $this->_obj_headers = NULL; - $this->_obj_write_string = ""; - $this->_cdn_streaming_uri = NULL; - $this->_cdn_enabled = NULL; - $this->_cdn_ssl_uri = NULL; - $this->_cdn_uri = NULL; - $this->_cdn_ttl = NULL; - $this->response_status = 0; - $this->response_reason = ""; - } - - private function _make_path($t="STORAGE",$c=NULL,$o=NULL) - { - $path = array(); - switch ($t) { - case "STORAGE": - $path[] = $this->storage_url; break; - case "CDN": - $path[] = $this->cdnm_url; break; - } - if ($c == "0") - $path[] = rawurlencode($c); - - if ($c) { - $path[] = rawurlencode($c); - } - if ($o) { - # mimic Python''s urllib.quote() feature of a "safe" '/' character - # - $path[] = str_replace("%2F","/",rawurlencode($o)); - } - return implode("/",$path); - } - - private function _headers(&$obj) - { - $hdrs = self::_process_headers($obj->metadata, $obj->headers); - if ($obj->manifest) - $hdrs[MANIFEST_HEADER] = $obj->manifest; - - return $hdrs; - } - - private function _process_headers($metadata=null, $headers=null) - { - $rules = array( - array( - 'prefix' => METADATA_HEADER_PREFIX, - ), - array( - 'prefix' => '', - 'filter' => array( # key order is important, first match decides - CONTENT_TYPE_HEADER => false, - CONTENT_LENGTH_HEADER => false, - CONTENT_HEADER_PREFIX => true, - ACCESS_CONTROL_HEADER_PREFIX => true, - ORIGIN_HEADER => true, - ), - ), - ); - - $hdrs = array(); - $argc = func_num_args(); - $argv = func_get_args(); - for ($argi = 0; $argi < $argc; $argi++) { - if(!is_array($argv[$argi])) continue; - - $rule = $rules[$argi]; - foreach ($argv[$argi] as $k => $v) { - $k = trim($k); - $v = trim($v); - if (strpos($k, ":") !== False) throw new SyntaxException( - "Header names cannot contain a ':' character."); - - if (array_key_exists('filter', $rule)) { - $result = null; - foreach ($rule['filter'] as $p => $f) { - if (strncasecmp($k, $p, strlen($p)) == 0) { - $result = $f; - break; - } - } - if (!$result) throw new SyntaxException(sprintf( - "Header name %s is not allowed", $k)); - } - - $k = $rule['prefix'] . $k; - if (strlen($k) > MAX_HEADER_NAME_LEN || strlen($v) > MAX_HEADER_VALUE_LEN) - throw new SyntaxException(sprintf( - "Header %s exceeds maximum length: %d/%d", - $k, strlen($k), strlen($v))); - - $hdrs[$k] = $v; - } - } - - return $hdrs; - } - - private function _send_request($conn_type, $url_path, $hdrs=NULL, $method="GET", $force_new=False) - { - $this->_init($conn_type, $force_new); - $this->_reset_callback_vars(); - $headers = $this->_make_headers($hdrs); - - if (gettype($this->connections[$conn_type]) == "unknown type") - throw new ConnectionNotOpenException ( - "Connection is not open." - ); - - switch ($method) { - case "COPY": - curl_setopt($this->connections[$conn_type], - CURLOPT_CUSTOMREQUEST, "COPY"); - break; - case "DELETE": - curl_setopt($this->connections[$conn_type], - CURLOPT_CUSTOMREQUEST, "DELETE"); - break; - case "POST": - curl_setopt($this->connections[$conn_type], - CURLOPT_CUSTOMREQUEST, "POST"); - default: - break; - } - - curl_setopt($this->connections[$conn_type], - CURLOPT_HTTPHEADER, $headers); - - curl_setopt($this->connections[$conn_type], - CURLOPT_URL, $url_path); - - if (!curl_exec($this->connections[$conn_type]) && curl_errno($this->connections[$conn_type]) !== 0) { - $this->error_str = "(curl error: " - . curl_errno($this->connections[$conn_type]) . ") "; - $this->error_str .= curl_error($this->connections[$conn_type]); - return False; - } - return curl_getinfo($this->connections[$conn_type], CURLINFO_HTTP_CODE); - } - - function close() - { - foreach ($this->connections as $cnx) { - if (isset($cnx)) { - curl_close($cnx); - $this->connections[$cnx] = NULL; - } - } - } - private function create_array() - { - $this->_text_list = explode("\n",rtrim($this->_return_list,"\n\x0B")); - return True; - } - -} - -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * c-hanging-comment-ender-p: nil - * End: - */ -?> diff --git a/3rdparty/phpass/PasswordHash.php b/3rdparty/phpass/PasswordHash.php deleted file mode 100644 index 84447b277df414db5bb3bab668f939eda05d3f02..0000000000000000000000000000000000000000 --- a/3rdparty/phpass/PasswordHash.php +++ /dev/null @@ -1,253 +0,0 @@ - in 2004-2006 and placed in -# the public domain. Revised in subsequent years, still public domain. -# -# There's absolutely no warranty. -# -# The homepage URL for this framework is: -# -# http://www.openwall.com/phpass/ -# -# Please be sure to update the Version line if you edit this file in any way. -# It is suggested that you leave the main version number intact, but indicate -# your project name (after the slash) and add your own revision information. -# -# Please do not change the "private" password hashing method implemented in -# here, thereby making your hashes incompatible. However, if you must, please -# change the hash type identifier (the "$P$") to something different. -# -# Obviously, since this code is in the public domain, the above are not -# requirements (there can be none), but merely suggestions. -# -class PasswordHash { - var $itoa64; - var $iteration_count_log2; - var $portable_hashes; - var $random_state; - - function PasswordHash($iteration_count_log2, $portable_hashes) - { - $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - - if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31) - $iteration_count_log2 = 8; - $this->iteration_count_log2 = $iteration_count_log2; - - $this->portable_hashes = $portable_hashes; - - $this->random_state = microtime(); - if (function_exists('getmypid')) - $this->random_state .= getmypid(); - } - - function get_random_bytes($count) - { - $output = ''; - if (@is_readable('/dev/urandom') && - ($fh = @fopen('/dev/urandom', 'rb'))) { - $output = fread($fh, $count); - fclose($fh); - } - - if (strlen($output) < $count) { - $output = ''; - for ($i = 0; $i < $count; $i += 16) { - $this->random_state = - md5(microtime() . $this->random_state); - $output .= - pack('H*', md5($this->random_state)); - } - $output = substr($output, 0, $count); - } - - return $output; - } - - function encode64($input, $count) - { - $output = ''; - $i = 0; - do { - $value = ord($input[$i++]); - $output .= $this->itoa64[$value & 0x3f]; - if ($i < $count) - $value |= ord($input[$i]) << 8; - $output .= $this->itoa64[($value >> 6) & 0x3f]; - if ($i++ >= $count) - break; - if ($i < $count) - $value |= ord($input[$i]) << 16; - $output .= $this->itoa64[($value >> 12) & 0x3f]; - if ($i++ >= $count) - break; - $output .= $this->itoa64[($value >> 18) & 0x3f]; - } while ($i < $count); - - return $output; - } - - function gensalt_private($input) - { - $output = '$P$'; - $output .= $this->itoa64[min($this->iteration_count_log2 + - ((PHP_VERSION >= '5') ? 5 : 3), 30)]; - $output .= $this->encode64($input, 6); - - return $output; - } - - function crypt_private($password, $setting) - { - $output = '*0'; - if (substr($setting, 0, 2) == $output) - $output = '*1'; - - $id = substr($setting, 0, 3); - # We use "$P$", phpBB3 uses "$H$" for the same thing - if ($id != '$P$' && $id != '$H$') - return $output; - - $count_log2 = strpos($this->itoa64, $setting[3]); - if ($count_log2 < 7 || $count_log2 > 30) - return $output; - - $count = 1 << $count_log2; - - $salt = substr($setting, 4, 8); - if (strlen($salt) != 8) - return $output; - - # We're kind of forced to use MD5 here since it's the only - # cryptographic primitive available in all versions of PHP - # currently in use. To implement our own low-level crypto - # in PHP would result in much worse performance and - # consequently in lower iteration counts and hashes that are - # quicker to crack (by non-PHP code). - if (PHP_VERSION >= '5') { - $hash = md5($salt . $password, TRUE); - do { - $hash = md5($hash . $password, TRUE); - } while (--$count); - } else { - $hash = pack('H*', md5($salt . $password)); - do { - $hash = pack('H*', md5($hash . $password)); - } while (--$count); - } - - $output = substr($setting, 0, 12); - $output .= $this->encode64($hash, 16); - - return $output; - } - - function gensalt_extended($input) - { - $count_log2 = min($this->iteration_count_log2 + 8, 24); - # This should be odd to not reveal weak DES keys, and the - # maximum valid value is (2**24 - 1) which is odd anyway. - $count = (1 << $count_log2) - 1; - - $output = '_'; - $output .= $this->itoa64[$count & 0x3f]; - $output .= $this->itoa64[($count >> 6) & 0x3f]; - $output .= $this->itoa64[($count >> 12) & 0x3f]; - $output .= $this->itoa64[($count >> 18) & 0x3f]; - - $output .= $this->encode64($input, 3); - - return $output; - } - - function gensalt_blowfish($input) - { - # This one needs to use a different order of characters and a - # different encoding scheme from the one in encode64() above. - # We care because the last character in our encoded string will - # only represent 2 bits. While two known implementations of - # bcrypt will happily accept and correct a salt string which - # has the 4 unused bits set to non-zero, we do not want to take - # chances and we also do not want to waste an additional byte - # of entropy. - $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - - $output = '$2a$'; - $output .= chr(ord('0') + $this->iteration_count_log2 / 10); - $output .= chr(ord('0') + $this->iteration_count_log2 % 10); - $output .= '$'; - - $i = 0; - do { - $c1 = ord($input[$i++]); - $output .= $itoa64[$c1 >> 2]; - $c1 = ($c1 & 0x03) << 4; - if ($i >= 16) { - $output .= $itoa64[$c1]; - break; - } - - $c2 = ord($input[$i++]); - $c1 |= $c2 >> 4; - $output .= $itoa64[$c1]; - $c1 = ($c2 & 0x0f) << 2; - - $c2 = ord($input[$i++]); - $c1 |= $c2 >> 6; - $output .= $itoa64[$c1]; - $output .= $itoa64[$c2 & 0x3f]; - } while (1); - - return $output; - } - - function HashPassword($password) - { - $random = ''; - - if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) { - $random = $this->get_random_bytes(16); - $hash = - crypt($password, $this->gensalt_blowfish($random)); - if (strlen($hash) == 60) - return $hash; - } - - if (CRYPT_EXT_DES == 1 && !$this->portable_hashes) { - if (strlen($random) < 3) - $random = $this->get_random_bytes(3); - $hash = - crypt($password, $this->gensalt_extended($random)); - if (strlen($hash) == 20) - return $hash; - } - - if (strlen($random) < 6) - $random = $this->get_random_bytes(6); - $hash = - $this->crypt_private($password, - $this->gensalt_private($random)); - if (strlen($hash) == 34) - return $hash; - - # Returning '*' on error is safe here, but would _not_ be safe - # in a crypt(3)-like function used _both_ for generating new - # hashes and for validating passwords against existing hashes. - return '*'; - } - - function CheckPassword($password, $stored_hash) - { - $hash = $this->crypt_private($password, $stored_hash); - if ($hash[0] == '*') - $hash = crypt($password, $stored_hash); - - return $hash == $stored_hash; - } -} - -?> diff --git a/3rdparty/phpass/c/Makefile b/3rdparty/phpass/c/Makefile deleted file mode 100644 index fe48917f7f5d482186166dc19bc9b5ca69ab9193..0000000000000000000000000000000000000000 --- a/3rdparty/phpass/c/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# -# Written by Solar Designer and placed in the public domain. -# See crypt_private.c for more information. -# -CC = gcc -LD = $(CC) -RM = rm -f -CFLAGS = -Wall -O2 -fomit-frame-pointer -funroll-loops -LDFLAGS = -s -LIBS = -lcrypto - -all: crypt_private-test - -crypt_private-test: crypt_private-test.o - $(LD) $(LDFLAGS) $(LIBS) crypt_private-test.o -o $@ - -crypt_private-test.o: crypt_private.c - $(CC) -c $(CFLAGS) crypt_private.c -DTEST -o $@ - -clean: - $(RM) crypt_private-test* diff --git a/3rdparty/phpass/c/crypt_private.c b/3rdparty/phpass/c/crypt_private.c deleted file mode 100644 index 6abc05bc1de1cfa3595e49cd6d639298d81284cc..0000000000000000000000000000000000000000 --- a/3rdparty/phpass/c/crypt_private.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This code exists for the sole purpose to serve as another implementation - * of the "private" password hashing method implemened in PasswordHash.php - * and thus to confirm that these password hashes are indeed calculated as - * intended. - * - * Other uses of this code are discouraged. There are much better password - * hashing algorithms available to C programmers; one of those is bcrypt: - * - * http://www.openwall.com/crypt/ - * - * Written by Solar Designer in 2005 and placed in - * the public domain. - * - * There's absolutely no warranty. - */ - -#include -#include - -#ifdef TEST -#include -#endif - -static char *itoa64 = - "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - -static void encode64(char *dst, char *src, int count) -{ - int i, value; - - i = 0; - do { - value = (unsigned char)src[i++]; - *dst++ = itoa64[value & 0x3f]; - if (i < count) - value |= (unsigned char)src[i] << 8; - *dst++ = itoa64[(value >> 6) & 0x3f]; - if (i++ >= count) - break; - if (i < count) - value |= (unsigned char)src[i] << 16; - *dst++ = itoa64[(value >> 12) & 0x3f]; - if (i++ >= count) - break; - *dst++ = itoa64[(value >> 18) & 0x3f]; - } while (i < count); -} - -char *crypt_private(char *password, char *setting) -{ - static char output[35]; - MD5_CTX ctx; - char hash[MD5_DIGEST_LENGTH]; - char *p, *salt; - int count_log2, length, count; - - strcpy(output, "*0"); - if (!strncmp(setting, output, 2)) - output[1] = '1'; - - if (strncmp(setting, "$P$", 3)) - return output; - - p = strchr(itoa64, setting[3]); - if (!p) - return output; - count_log2 = p - itoa64; - if (count_log2 < 7 || count_log2 > 30) - return output; - - salt = setting + 4; - if (strlen(salt) < 8) - return output; - - length = strlen(password); - - MD5_Init(&ctx); - MD5_Update(&ctx, salt, 8); - MD5_Update(&ctx, password, length); - MD5_Final(hash, &ctx); - - count = 1 << count_log2; - do { - MD5_Init(&ctx); - MD5_Update(&ctx, hash, MD5_DIGEST_LENGTH); - MD5_Update(&ctx, password, length); - MD5_Final(hash, &ctx); - } while (--count); - - memcpy(output, setting, 12); - encode64(&output[12], hash, MD5_DIGEST_LENGTH); - - return output; -} - -#ifdef TEST -int main(int argc, char **argv) -{ - if (argc != 3) return 1; - - puts(crypt_private(argv[1], argv[2])); - - return 0; -} -#endif diff --git a/3rdparty/phpass/test.php b/3rdparty/phpass/test.php deleted file mode 100644 index 2f4a41c8c31ca5ee8a1efdcfc9c4f3ee3adc88bb..0000000000000000000000000000000000000000 --- a/3rdparty/phpass/test.php +++ /dev/null @@ -1,72 +0,0 @@ -HashPassword($correct); - -print 'Hash: ' . $hash . "\n"; - -$check = $t_hasher->CheckPassword($correct, $hash); -if ($check) $ok++; -print "Check correct: '" . $check . "' (should be '1')\n"; - -$wrong = 'test12346'; -$check = $t_hasher->CheckPassword($wrong, $hash); -if (!$check) $ok++; -print "Check wrong: '" . $check . "' (should be '0' or '')\n"; - -unset($t_hasher); - -# Force the use of weaker portable hashes. -$t_hasher = new PasswordHash(8, TRUE); - -$hash = $t_hasher->HashPassword($correct); - -print 'Hash: ' . $hash . "\n"; - -$check = $t_hasher->CheckPassword($correct, $hash); -if ($check) $ok++; -print "Check correct: '" . $check . "' (should be '1')\n"; - -$check = $t_hasher->CheckPassword($wrong, $hash); -if (!$check) $ok++; -print "Check wrong: '" . $check . "' (should be '0' or '')\n"; - -# A correct portable hash for 'test12345'. -# Please note the use of single quotes to ensure that the dollar signs will -# be interpreted literally. Of course, a real application making use of the -# framework won't store password hashes within a PHP source file anyway. -# We only do this for testing. -$hash = '$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'; - -print 'Hash: ' . $hash . "\n"; - -$check = $t_hasher->CheckPassword($correct, $hash); -if ($check) $ok++; -print "Check correct: '" . $check . "' (should be '1')\n"; - -$check = $t_hasher->CheckPassword($wrong, $hash); -if (!$check) $ok++; -print "Check wrong: '" . $check . "' (should be '0' or '')\n"; - -if ($ok == 6) - print "All tests have PASSED\n"; -else - print "Some tests have FAILED\n"; - -?> diff --git a/3rdparty/smb4php/smb.php b/3rdparty/smb4php/smb.php deleted file mode 100644 index c080c1b590fd2409c3d1178f152de774de4d5af7..0000000000000000000000000000000000000000 --- a/3rdparty/smb4php/smb.php +++ /dev/null @@ -1,456 +0,0 @@ - -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -################################################################### - -define ('SMB4PHP_VERSION', '0.8'); - -################################################################### -# CONFIGURATION SECTION - Change for your needs -################################################################### - -define ('SMB4PHP_SMBCLIENT', 'smbclient'); -define ('SMB4PHP_SMBOPTIONS', 'TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192'); -define ('SMB4PHP_AUTHMODE', 'arg'); # set to 'env' to use USER enviroment variable - -################################################################### -# SMB - commands that does not need an instance -################################################################### - -$GLOBALS['__smb_cache'] = array ('stat' => array (), 'dir' => array ()); - -class smb { - - function parse_url ($url) { - $pu = parse_url (trim($url)); - foreach (array ('domain', 'user', 'pass', 'host', 'port', 'path') as $i) - if (! isset($pu[$i])) $pu[$i] = ''; - if (count ($userdomain = explode (';', urldecode ($pu['user']))) > 1) - @list ($pu['domain'], $pu['user']) = $userdomain; - $path = preg_replace (array ('/^\//', '/\/$/'), '', urldecode ($pu['path'])); - list ($pu['share'], $pu['path']) = (preg_match ('/^([^\/]+)\/(.*)/', $path, $regs)) - ? array ($regs[1], preg_replace ('/\//', '\\', $regs[2])) - : array ($path, ''); - $pu['type'] = $pu['path'] ? 'path' : ($pu['share'] ? 'share' : ($pu['host'] ? 'host' : '**error**')); - if (! ($pu['port'] = intval(@$pu['port']))) $pu['port'] = 139; - return $pu; - } - - - function look ($purl) { - return smb::client ('-L ' . escapeshellarg ($purl['host']), $purl); - } - - - function execute ($command, $purl) { - return smb::client ('-d 0 ' - . escapeshellarg ('//' . $purl['host'] . '/' . $purl['share']) - . ' -c ' . escapeshellarg ($command), $purl - ); - } - - function client ($params, $purl) { - - static $regexp = array ( - '^added interface ip=(.*) bcast=(.*) nmask=(.*)$' => 'skip', - 'Anonymous login successful' => 'skip', - '^Domain=\[(.*)\] OS=\[(.*)\] Server=\[(.*)\]$' => 'skip', - '^\tSharename[ ]+Type[ ]+Comment$' => 'shares', - '^\t---------[ ]+----[ ]+-------$' => 'skip', - '^\tServer [ ]+Comment$' => 'servers', - '^\t---------[ ]+-------$' => 'skip', - '^\tWorkgroup[ ]+Master$' => 'workg', - '^\t(.*)[ ]+(Disk|IPC)[ ]+IPC.*$' => 'skip', - '^\tIPC\\\$(.*)[ ]+IPC' => 'skip', - '^\t(.*)[ ]+(Disk)[ ]+(.*)$' => 'share', - '^\t(.*)[ ]+(Printer)[ ]+(.*)$' => 'skip', - '([0-9]+) blocks of size ([0-9]+)\. ([0-9]+) blocks available' => 'skip', - 'Got a positive name query response from ' => 'skip', - '^(session setup failed): (.*)$' => 'error', - '^(.*): ERRSRV - ERRbadpw' => 'error', - '^Error returning browse list: (.*)$' => 'error', - '^tree connect failed: (.*)$' => 'error', - '^(Connection to .* failed)$' => 'error', - '^NT_STATUS_(.*) ' => 'error', - '^NT_STATUS_(.*)\$' => 'error', - 'ERRDOS - ERRbadpath \((.*).\)' => 'error', - 'cd (.*): (.*)$' => 'error', - '^cd (.*): NT_STATUS_(.*)' => 'error', - '^\t(.*)$' => 'srvorwg', - '^([0-9]+)[ ]+([0-9]+)[ ]+(.*)$' => 'skip', - '^Job ([0-9]+) cancelled' => 'skip', - '^[ ]+(.*)[ ]+([0-9]+)[ ]+(Mon|Tue|Wed|Thu|Fri|Sat|Sun)[ ](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ ]+([0-9]+)[ ]+([0-9]{2}:[0-9]{2}:[0-9]{2})[ ]([0-9]{4})$' => 'files', - '^message start: ERRSRV - (ERRmsgoff)' => 'error' - ); - - if (SMB4PHP_AUTHMODE == 'env') { - putenv("USER={$purl['user']}%{$purl['pass']}"); - $auth = ''; - } else { - $auth = ($purl['user'] <> '' ? (' -U ' . escapeshellarg ($purl['user'] . '%' . $purl['pass'])) : ''); - } - if ($purl['domain'] <> '') { - $auth .= ' -W ' . escapeshellarg ($purl['domain']); - } - $port = ($purl['port'] <> 139 ? ' -p ' . escapeshellarg ($purl['port']) : ''); - $options = '-O ' . escapeshellarg(SMB4PHP_SMBOPTIONS); - $output = popen (SMB4PHP_SMBCLIENT." -N {$auth} {$options} {$port} {$options} {$params} 2>/dev/null", 'r'); - $info = array (); - $info['info']= array (); - while ($line = fgets ($output, 4096)) { - list ($tag, $regs, $i) = array ('skip', array (), array ()); - reset ($regexp); - foreach ($regexp as $r => $t) if (preg_match ('/'.$r.'/', $line, $regs)) { - $tag = $t; - break; - } - switch ($tag) { - case 'skip': continue; - case 'shares': $mode = 'shares'; break; - case 'servers': $mode = 'servers'; break; - case 'workg': $mode = 'workgroups'; break; - case 'share': - list($name, $type) = array ( - trim(substr($line, 1, 15)), - trim(strtolower(substr($line, 17, 10))) - ); - $i = ($type <> 'disk' && preg_match('/^(.*) Disk/', $line, $regs)) - ? array(trim($regs[1]), 'disk') - : array($name, 'disk'); - break; - case 'srvorwg': - list ($name, $master) = array ( - strtolower(trim(substr($line,1,21))), - strtolower(trim(substr($line, 22))) - ); - $i = ($mode == 'servers') ? array ($name, "server") : array ($name, "workgroup", $master); - break; - case 'files': - list ($attr, $name) = preg_match ("/^(.*)[ ]+([D|A|H|S|R]+)$/", trim ($regs[1]), $regs2) - ? array (trim ($regs2[2]), trim ($regs2[1])) - : array ('', trim ($regs[1])); - list ($his, $im) = array ( - explode(':', $regs[6]), 1 + strpos("JanFebMarAprMayJunJulAugSepOctNovDec", $regs[4]) / 3); - $i = ($name <> '.' && $name <> '..') - ? array ( - $name, - (strpos($attr,'D') === FALSE) ? 'file' : 'folder', - 'attr' => $attr, - 'size' => intval($regs[2]), - 'time' => mktime ($his[0], $his[1], $his[2], $im, $regs[5], $regs[7]) - ) - : array(); - break; - case 'error': - if(substr($regs[0],0,22)=='NT_STATUS_NO_SUCH_FILE'){ - return false; - }elseif(substr($regs[0],0,31)=='NT_STATUS_OBJECT_NAME_COLLISION'){ - return false; - }elseif(substr($regs[0],0,31)=='NT_STATUS_OBJECT_PATH_NOT_FOUND'){ - return false; - }elseif(substr($regs[0],0,29)=='NT_STATUS_FILE_IS_A_DIRECTORY'){ - return false; - } - trigger_error($regs[0].' params('.$params.')', E_USER_ERROR); - } - if ($i) switch ($i[1]) { - case 'file': - case 'folder': $info['info'][$i[0]] = $i; - case 'disk': - case 'server': - case 'workgroup': $info[$i[1]][] = $i[0]; - } - } - pclose($output); - return $info; - } - - - # stats - - function url_stat ($url, $flags = STREAM_URL_STAT_LINK) { - if ($s = smb::getstatcache($url)) { return $s; } - list ($stat, $pu) = array (array (), smb::parse_url ($url)); - switch ($pu['type']) { - case 'host': - if ($o = smb::look ($pu)) - $stat = stat ("/tmp"); - else - trigger_error ("url_stat(): list failed for host '{$host}'", E_USER_WARNING); - break; - case 'share': - if ($o = smb::look ($pu)) { - $found = FALSE; - $lshare = strtolower ($pu['share']); # fix by Eric Leung - foreach ($o['disk'] as $s) if ($lshare == strtolower($s)) { - $found = TRUE; - $stat = stat ("/tmp"); - break; - } - if (! $found) - trigger_error ("url_stat(): disk resource '{$share}' not found in '{$host}'", E_USER_WARNING); - } - break; - case 'path': - if ($o = smb::execute ('dir "'.$pu['path'].'"', $pu)) { - $p = explode('\\', $pu['path']); - $name = $p[count($p)-1]; - if (isset ($o['info'][$name])) { - $stat = smb::addstatcache ($url, $o['info'][$name]); - } else { - trigger_error ("url_stat(): path '{$pu['path']}' not found", E_USER_WARNING); - } - } else { - return false; -// trigger_error ("url_stat(): dir failed for path '{$pu['path']}'", E_USER_WARNING); - } - break; - default: trigger_error ('error in URL', E_USER_ERROR); - } - return $stat; - } - - function addstatcache ($url, $info) { - $url = str_replace('//', '/', $url); - $url = rtrim($url, '/'); - global $__smb_cache; - $is_file = (strpos ($info['attr'],'D') === FALSE); - $s = ($is_file) ? stat ('/etc/passwd') : stat ('/tmp'); - $s[7] = $s['size'] = $info['size']; - $s[8] = $s[9] = $s[10] = $s['atime'] = $s['mtime'] = $s['ctime'] = $info['time']; - return $__smb_cache['stat'][$url] = $s; - } - - function getstatcache ($url) { - $url = str_replace('//', '/', $url); - $url = rtrim($url, '/'); - global $__smb_cache; - return isset ($__smb_cache['stat'][$url]) ? $__smb_cache['stat'][$url] : FALSE; - } - - function clearstatcache ($url='') { - $url = str_replace('//', '/', $url); - $url = rtrim($url, '/'); - global $__smb_cache; - if ($url == '') $__smb_cache['stat'] = array (); else unset ($__smb_cache['stat'][$url]); - } - - - # commands - - function unlink ($url) { - $pu = smb::parse_url($url); - if ($pu['type'] <> 'path') trigger_error('unlink(): error in URL', E_USER_ERROR); - smb::clearstatcache ($url); - smb_stream_wrapper::cleardircache (dirname($url)); - return smb::execute ('del "'.$pu['path'].'"', $pu); - } - - function rename ($url_from, $url_to) { - list ($from, $to) = array (smb::parse_url($url_from), smb::parse_url($url_to)); - if ($from['host'] <> $to['host'] || - $from['share'] <> $to['share'] || - $from['user'] <> $to['user'] || - $from['pass'] <> $to['pass'] || - $from['domain'] <> $to['domain']) { - trigger_error('rename(): FROM & TO must be in same server-share-user-pass-domain', E_USER_ERROR); - } - if ($from['type'] <> 'path' || $to['type'] <> 'path') { - trigger_error('rename(): error in URL', E_USER_ERROR); - } - smb::clearstatcache ($url_from); - return smb::execute ('rename "'.$from['path'].'" "'.$to['path'].'"', $to); - } - - function mkdir ($url, $mode, $options) { - $pu = smb::parse_url($url); - if ($pu['type'] <> 'path') trigger_error('mkdir(): error in URL', E_USER_ERROR); - return smb::execute ('mkdir "'.$pu['path'].'"', $pu)!==false; - } - - function rmdir ($url) { - $pu = smb::parse_url($url); - if ($pu['type'] <> 'path') trigger_error('rmdir(): error in URL', E_USER_ERROR); - smb::clearstatcache ($url); - smb_stream_wrapper::cleardircache (dirname($url)); - return smb::execute ('rmdir "'.$pu['path'].'"', $pu)!==false; - } - -} - -################################################################### -# SMB_STREAM_WRAPPER - class to be registered for smb:// URLs -################################################################### - -class smb_stream_wrapper extends smb { - - # variables - - private $stream, $url, $parsed_url = array (), $mode, $tmpfile; - private $need_flush = FALSE; - private $dir = array (), $dir_index = -1; - - - # directories - - function dir_opendir ($url, $options) { - if ($d = $this->getdircache ($url)) { - $this->dir = $d; - $this->dir_index = 0; - return TRUE; - } - $pu = smb::parse_url ($url); - switch ($pu['type']) { - case 'host': - if ($o = smb::look ($pu)) { - $this->dir = $o['disk']; - $this->dir_index = 0; - } else { - trigger_error ("dir_opendir(): list failed for host '{$pu['host']}'", E_USER_WARNING); - return false; - } - break; - case 'share': - case 'path': - if (is_array($o = smb::execute ('dir "'.$pu['path'].'\*"', $pu))) { - $this->dir = array_keys($o['info']); - $this->dir_index = 0; - $this->adddircache ($url, $this->dir); - if(substr($url,-1,1)=='/'){ - $url=substr($url,0,-1); - } - foreach ($o['info'] as $name => $info) { - smb::addstatcache($url . '/' . $name, $info); - } - } else { - trigger_error ("dir_opendir(): dir failed for path '".$pu['path']."'", E_USER_WARNING); - return false; - } - break; - default: - trigger_error ('dir_opendir(): error in URL', E_USER_ERROR); - return false; - } - return TRUE; - } - - function dir_readdir () { - return ($this->dir_index < count($this->dir)) ? $this->dir[$this->dir_index++] : FALSE; - } - - function dir_rewinddir () { $this->dir_index = 0; } - - function dir_closedir () { $this->dir = array(); $this->dir_index = -1; return TRUE; } - - - # cache - - function adddircache ($url, $content) { - $url = str_replace('//', '/', $url); - $url = rtrim($url, '/'); - global $__smb_cache; - return $__smb_cache['dir'][$url] = $content; - } - - function getdircache ($url) { - $url = str_replace('//', '/', $url); - $url = rtrim($url, '/'); - global $__smb_cache; - return isset ($__smb_cache['dir'][$url]) ? $__smb_cache['dir'][$url] : FALSE; - } - - function cleardircache ($url='') { - $url = str_replace('//', '/', $url); - $url = rtrim($url, '/'); - global $__smb_cache; - if ($url == ''){ - $__smb_cache['dir'] = array (); - }else{ - unset ($__smb_cache['dir'][$url]); - } - } - - - # streams - - function stream_open ($url, $mode, $options, $opened_path) { - $this->url = $url; - $this->mode = $mode; - $this->parsed_url = $pu = smb::parse_url($url); - if ($pu['type'] <> 'path') trigger_error('stream_open(): error in URL', E_USER_ERROR); - switch ($mode) { - case 'r': - case 'r+': - case 'rb': - case 'a': - case 'a+': $this->tmpfile = tempnam('/tmp', 'smb.down.'); - smb::execute ('get "'.$pu['path'].'" "'.$this->tmpfile.'"', $pu); - break; - case 'w': - case 'w+': - case 'wb': - case 'x': - case 'x+': $this->cleardircache(); - $this->tmpfile = tempnam('/tmp', 'smb.up.'); - $this->need_flush=true; - } - $this->stream = fopen ($this->tmpfile, $mode); - return TRUE; - } - - function stream_close () { return fclose($this->stream); } - - function stream_read ($count) { return fread($this->stream, $count); } - - function stream_write ($data) { $this->need_flush = TRUE; return fwrite($this->stream, $data); } - - function stream_eof () { return feof($this->stream); } - - function stream_tell () { return ftell($this->stream); } - - function stream_seek ($offset, $whence=null) { return fseek($this->stream, $offset, $whence); } - - function stream_flush () { - if ($this->mode <> 'r' && $this->need_flush) { - smb::clearstatcache ($this->url); - smb::execute ('put "'.$this->tmpfile.'" "'.$this->parsed_url['path'].'"', $this->parsed_url); - $this->need_flush = FALSE; - } - } - - function stream_stat () { return smb::url_stat ($this->url); } - - function __destruct () { - if ($this->tmpfile <> '') { - if ($this->need_flush) $this->stream_flush (); - unlink ($this->tmpfile); - - } - } - -} - -################################################################### -# Register 'smb' protocol ! -################################################################### - -stream_wrapper_register('smb', 'smb_stream_wrapper') - or die ('Failed to register protocol'); diff --git a/3rdparty/timepicker/GPL-LICENSE.txt b/3rdparty/timepicker/GPL-LICENSE.txt deleted file mode 100755 index 932f11115fe4e47e57f4e6b2723ac6a921d578fe..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/GPL-LICENSE.txt +++ /dev/null @@ -1,278 +0,0 @@ -GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by - the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for - this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software - patents. We wish to avoid the danger that redistributors of a free - program will individually obtain patent licenses, in effect making the - program proprietary. To prevent this, we have made it clear that any - patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains - a notice placed by the copyright holder saying it may be distributed - under the terms of this General Public License. The "Program", below, - refers to any such program or work, and a "work based on the Program" - means either the Program or any derivative work under copyright law: - that is to say, a work containing the Program or a portion of it, - either verbatim or with modifications and/or translated into another - language. (Hereinafter, translation is included without limitation in - the term "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of - running the Program is not restricted, and the output from the Program - is covered only if its contents constitute a work based on the - Program (independent of having been made by running the Program). - Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's - source code as you receive it, in any medium, provided that you - conspicuously and appropriately publish on each copy an appropriate - copyright notice and disclaimer of warranty; keep intact all the - notices that refer to this License and to the absence of any warranty; - and give any other recipients of the Program a copy of this License - along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion - of it, thus forming a work based on the Program, and copy and - distribute such modifications or work under the terms of Section 1 - above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, - and can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based - on the Program, the distribution of the whole must be on the terms of - this License, whose permissions for other licensees extend to the - entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of - a storage or distribution medium does not bring the other work under - the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source - code means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to - control compilation and installation of the executable. However, as a - special exception, the source code distributed need not include - anything that is normally distributed (in either source or binary - form) with the major components (compiler, kernel, and so on) of the - operating system on which the executable runs, unless that component - itself accompanies the executable. - - If distribution of executable or object code is made by offering - access to copy from a designated place, then offering equivalent - access to copy the source code from the same place counts as - distribution of the source code, even though third parties are not - compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt - otherwise to copy, modify, sublicense or distribute the Program is - void, and will automatically terminate your rights under this License. - However, parties who have received copies, or rights, from you under - this License will not have their licenses terminated so long as such - parties remain in full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and - all its terms and conditions for copying, distributing or modifying - the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further - restrictions on the recipients' exercise of the rights granted herein. - You are not responsible for enforcing compliance by third parties to - this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot - distribute so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you - may not distribute the Program at all. For example, if a patent - license would not permit royalty-free redistribution of the Program by - all those who receive copies directly or indirectly through you, then - the only way you could satisfy both it and this License would be to - refrain entirely from distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is willing - to distribute software through any other system and a licensee cannot - impose that choice. - - This section is intended to make thoroughly clear what is believed to - be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License - may add an explicit geographical distribution limitation excluding - those countries, so that distribution is permitted only in or among - countries not thus excluded. In such case, this License incorporates - the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions - of the General Public License from time to time. Such new versions will - be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and conditions - either of that version or of any later version published by the Free - Software Foundation. If the Program does not specify a version number of - this License, you may choose any version ever published by the Free Software - Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the author - to ask for permission. For software which is copyrighted by the Free - Software Foundation, write to the Free Software Foundation; we sometimes - make exceptions for this. Our decision will be guided by the two goals - of preserving the free status of all derivatives of our free software and - of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY - FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN - OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES - PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED - OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS - TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE - PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, - REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING - WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR - REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, - INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING - OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED - TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY - YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER - PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES.""'''''' diff --git a/3rdparty/timepicker/MIT-LICENSE.txt b/3rdparty/timepicker/MIT-LICENSE.txt deleted file mode 100755 index 532704636b730cba3b36bb35ad0945295b188597..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/MIT-LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2011 John Resig, http://jquery.com/ - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/3rdparty/timepicker/css/include/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/3rdparty/timepicker/css/include/images/ui-bg_diagonals-thick_18_b81900_40x40.png deleted file mode 100755 index 954e22dbd99e8c6dd7091335599abf2d10bf8003..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_diagonals-thick_18_b81900_40x40.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_diagonals-thick_20_666666_40x40.png b/3rdparty/timepicker/css/include/images/ui-bg_diagonals-thick_20_666666_40x40.png deleted file mode 100755 index 64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_diagonals-thick_20_666666_40x40.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_flat_10_000000_40x100.png b/3rdparty/timepicker/css/include/images/ui-bg_flat_10_000000_40x100.png deleted file mode 100755 index abdc01082bf3534eafecc5819d28c9574d44ea89..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_flat_10_000000_40x100.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_glass_100_f6f6f6_1x400.png b/3rdparty/timepicker/css/include/images/ui-bg_glass_100_f6f6f6_1x400.png deleted file mode 100755 index 9b383f4d2eab09c0f2a739d6b232c32934bc620b..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_glass_100_f6f6f6_1x400.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_glass_100_fdf5ce_1x400.png b/3rdparty/timepicker/css/include/images/ui-bg_glass_100_fdf5ce_1x400.png deleted file mode 100755 index a23baad25b1d1ff36e17361eab24271f2e9b7326..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_glass_100_fdf5ce_1x400.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_glass_65_ffffff_1x400.png b/3rdparty/timepicker/css/include/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100755 index 42ccba269b6e91bef12ad0fa18be651b5ef0ee68..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/3rdparty/timepicker/css/include/images/ui-bg_gloss-wave_35_f6a828_500x100.png deleted file mode 100755 index 39d5824d6af5456f1e89fc7847ea3599ea5fd815..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_gloss-wave_35_f6a828_500x100.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/3rdparty/timepicker/css/include/images/ui-bg_highlight-soft_100_eeeeee_1x100.png deleted file mode 100755 index f1273672d253263b7564e9e21d69d7d9d0b337d9..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_highlight-soft_100_eeeeee_1x100.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/3rdparty/timepicker/css/include/images/ui-bg_highlight-soft_75_ffe45c_1x100.png deleted file mode 100755 index 359397acffdd84bd102f0e8a951c9d744f278db5..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-bg_highlight-soft_75_ffe45c_1x100.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-icons_222222_256x240.png b/3rdparty/timepicker/css/include/images/ui-icons_222222_256x240.png deleted file mode 100755 index b273ff111d219c9b9a8b96d57683d0075fb7871a..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-icons_228ef1_256x240.png b/3rdparty/timepicker/css/include/images/ui-icons_228ef1_256x240.png deleted file mode 100755 index a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-icons_228ef1_256x240.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-icons_ef8c08_256x240.png b/3rdparty/timepicker/css/include/images/ui-icons_ef8c08_256x240.png deleted file mode 100755 index 85e63e9f604ce042d59eb06a8428eeb7cb7896c9..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-icons_ef8c08_256x240.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-icons_ffd27a_256x240.png b/3rdparty/timepicker/css/include/images/ui-icons_ffd27a_256x240.png deleted file mode 100755 index e117effa3dca24e7978cfc5f8b967f661e81044f..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-icons_ffd27a_256x240.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/images/ui-icons_ffffff_256x240.png b/3rdparty/timepicker/css/include/images/ui-icons_ffffff_256x240.png deleted file mode 100755 index 42f8f992c727ddaa617da224a522e463df690387..0000000000000000000000000000000000000000 Binary files a/3rdparty/timepicker/css/include/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/3rdparty/timepicker/css/include/jquery-1.5.1.min.js b/3rdparty/timepicker/css/include/jquery-1.5.1.min.js deleted file mode 100755 index 6437874c699e26d29813936d16586cbdee7b8382..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/css/include/jquery-1.5.1.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.5.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Wed Feb 23 13:55:29 2011 -0500 - */ -(function(a,b){function cg(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cd(a){if(!bZ[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bZ[a]=c}return bZ[a]}function cc(a,b){var c={};d.each(cb.concat.apply([],cb.slice(0,b)),function(){c[this]=a});return c}function bY(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bX(){try{return new a.XMLHttpRequest}catch(b){}}function bW(){d(a).unload(function(){for(var a in bU)bU[a](0,1)})}function bQ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(r,"`").replace(s,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,q=[],r=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function w(){return!0}function v(){return!1}function g(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.1",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1){var f=E.call(arguments,0),g=b,h=function(a){return function(b){f[a]=arguments.length>1?E.call(arguments,0):b,--g||c.resolveWith(e,f)}};while(b--)a=f[b],a&&d.isFunction(a.promise)?a.promise().then(h(b),c.reject):--g;g||c.resolveWith(e,f)}else c!==a&&c.resolve(a);return e},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="
            a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e),b=e=f=null}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
            ",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
            t
            ";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!g(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,h=b.nodeType,i=h?d.cache:b,j=h?b[d.expando]:d.expando;if(!i[j])return;if(c){var k=e?i[j][f]:i[j];if(k){delete k[c];if(!g(k))return}}if(e){delete i[j][f];if(!g(i[j]))return}var l=i[j][f];d.support.deleteExpando||i!=a?delete i[j]:i[j]=null,l?(i[j]={},h||(i[j].toJSON=d.noop),i[j][f]=l):h&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var k=i?f:0,l=i?f+1:h.length;k=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=k.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&l.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:m.test(a.nodeName)||n.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var p=/\.(.*)$/,q=/^(?:textarea|input|select)$/i,r=/\./g,s=/ /g,t=/[^\w\s.|`]/g,u=function(a){return a.replace(t,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=v;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),u).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(p,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(q.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return q.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return q.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.getAttribute("type")},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

            ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(d||!l.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return k(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="
            ";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/",""],legend:[1,"
            ","
            "],thead:[1,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],col:[2,"","
            "],area:[1,"",""],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div
            ","
            "]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){$(a,e),f=_(a),g=_(e);for(h=0;f[h];++h)$(f[h],g[h])}if(b){Z(a,e);if(c){f=_(a),g=_(e);for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bb=/alpha\([^)]*\)/i,bc=/opacity=([^)]*)/,bd=/-([a-z])/ig,be=/([A-Z])/g,bf=/^-?\d+(?:px)?$/i,bg=/^-?\d/,bh={position:"absolute",visibility:"hidden",display:"block"},bi=["Left","Right"],bj=["Top","Bottom"],bk,bl,bm,bn=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bk(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bk)return bk(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bd,bn)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bo(a,b,e):d.swap(a,bh,function(){f=bo(a,b,e)});if(f<=0){f=bk(a,b,b),f==="0px"&&bm&&(f=bm(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bf.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bb.test(f)?f.replace(bb,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bl=function(a,c,e){var f,g,h;e=e.replace(be,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bm=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bf.test(d)&&bg.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bk=bl||bm,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bp=/%20/g,bq=/\[\]$/,br=/\r?\n/g,bs=/#.*$/,bt=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bu=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bv=/(?:^file|^widget|\-extension):$/,bw=/^(?:GET|HEAD)$/,bx=/^\/\//,by=/\?/,bz=/)<[^<]*)*<\/script>/gi,bA=/^(?:select|textarea)/i,bB=/\s+/,bC=/([?&])_=[^&]*/,bD=/(^|\-)([a-z])/g,bE=function(a,b,c){return b+c.toUpperCase()},bF=/^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,bG=d.fn.load,bH={},bI={},bJ,bK;try{bJ=c.location.href}catch(bL){bJ=c.createElement("a"),bJ.href="",bJ=bJ.href}bK=bF.exec(bJ.toLowerCase()),d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bG)return bG.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
            ").append(c.replace(bz,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bA.test(this.nodeName)||bu.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(br,"\r\n")}}):{name:b.name,value:c.replace(br,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bJ,isLocal:bv.test(bK[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bM(bH),ajaxTransport:bM(bI),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bP(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bQ(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bD,bE)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bt.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bs,"").replace(bx,bK[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bB),e.crossDomain||(q=bF.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bK[1]||q[2]!=bK[2]||(q[3]||(q[1]==="http:"?80:443))!=(bK[3]||(bK[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bN(bH,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!bw.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(by.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bC,"$1_="+w);e.url=x+(x===e.url?(by.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bN(bI,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bO(g,a[g],c,f);return e.join("&").replace(bp,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bR=d.now(),bS=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bR++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bS.test(b.url)||f&&bS.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bS,l),b.url===j&&(f&&(k=k.replace(bS,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bT=d.now(),bU,bV;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bX()||bY()}:bX,bV=d.ajaxSettings.xhr(),d.support.ajax=!!bV,d.support.cors=bV&&"withCredentials"in bV,bV=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),(!a.crossDomain||a.hasContent)&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bU[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bU||(bU={},bW()),h=bT++,g.onreadystatechange=bU[h]=c):c()},abort:function(){c&&c(0,1)}}}});var bZ={},b$=/^(?:toggle|show|hide)$/,b_=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,ca,cb=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(cc("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:cc("show",1),slideUp:cc("hide",1),slideToggle:cc("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!ca&&(ca=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
            ";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=cf.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!cf.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=cg(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=cg(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file diff --git a/3rdparty/timepicker/css/include/jquery-ui-1.8.14.custom.css b/3rdparty/timepicker/css/include/jquery-ui-1.8.14.custom.css deleted file mode 100755 index fe310705756befa7e6c0e28fc7edd0d2e4323275..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/css/include/jquery-ui-1.8.14.custom.css +++ /dev/null @@ -1,568 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - - -/* - * jQuery UI CSS Framework 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } -.ui-widget-content a { color: #333333; } -.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } -.ui-widget-header a { color: #ffffff; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } -.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } - -/* Overlays */ -.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } -.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* - * jQuery UI Resizable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } -/* - * jQuery UI Accordion 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -/* IE/Win - Fix animation bug - #4615 */ -.ui-accordion { width: 100%; } -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } -.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; } -/* - * jQuery UI Autocomplete 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { position: absolute; cursor: default; } - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* - * jQuery UI Menu 1.8.14 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} -/* - * jQuery UI Button 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text { padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ -/* - * jQuery UI Dialog 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } -/* - * jQuery UI Slider 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } -/* - * jQuery UI Datepicker 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* - * jQuery UI Progressbar 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/3rdparty/timepicker/css/include/jquery.ui.core.min.js b/3rdparty/timepicker/css/include/jquery.ui.core.min.js deleted file mode 100755 index 577548e7882e81794897cb6cb8f7dacd369c592f..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/css/include/jquery.ui.core.min.js +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * jQuery UI 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.14", -keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus(); -b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this, -"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection", -function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth, -outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b); -return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e= -0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= -a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), -g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); diff --git a/3rdparty/timepicker/css/include/jquery.ui.tabs.min.js b/3rdparty/timepicker/css/include/jquery.ui.tabs.min.js deleted file mode 100755 index 11a67c144a6a2166663a41f185c3e97359bc4d25..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/css/include/jquery.ui.tabs.min.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * jQuery UI Tabs 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
            ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
          • #{label}
          • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& -e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= -d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| -(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); -this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= -this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); -if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); -this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ -g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", -function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; -this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= --1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; -d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= -d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, -e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); -j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); -if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, -this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, -load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, -"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, -url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.14"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k - - - - - - - - - Internationalisation page for the jquery ui timepicker - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select a localisation : - - -
            - -
            - -
            - -
            - - List of localisations : - - - - \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-cs.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-cs.js deleted file mode 100755 index 23a43444cf1465bf30cef45aef8c80a1ccb79d3a..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-cs.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Czech initialisation for the timepicker plugin */ -/* Written by David Spohr (spohr.david at gmail). */ -jQuery(function($){ - $.timepicker.regional['cs'] = { - hourText: 'Hodiny', - minuteText: 'Minuty', - amPmText: ['AM', 'PM'] , - closeButtonText: 'Zavřít', - nowButtonText: 'Nyní', - deselectButtonText: 'OdoznaÄit' } - $.timepicker.setDefaults($.timepicker.regional['cs']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-de.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-de.js deleted file mode 100755 index e3bf859ee63062a02228724137227be738933fb2..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-de.js +++ /dev/null @@ -1,12 +0,0 @@ -/* German initialisation for the timepicker plugin */ -/* Written by Lowie Hulzinga. */ -jQuery(function($){ - $.timepicker.regional['de'] = { - hourText: 'Stunde', - minuteText: 'Minuten', - amPmText: ['AM', 'PM'] , - closeButtonText: 'Beenden', - nowButtonText: 'Aktuelle Zeit', - deselectButtonText: 'Wischen' } - $.timepicker.setDefaults($.timepicker.regional['de']); -}); diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-es.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-es.js deleted file mode 100755 index b8bcbf859a13b030468a966cfa9eb84497d5285e..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-es.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Spanish initialisation for the jQuery time picker plugin. */ -/* Writen by Jandro González (agonzalezalves@gmail.com) */ -jQuery(function($){ - $.timepicker.regional['es'] = { - hourText: 'Hora', - minuteText: 'Minuto', - amPmText: ['AM', 'PM'], - closeButtonText: 'Aceptar', - nowButtonText: 'Ahora', - deselectButtonText: 'Deseleccionar' } - $.timepicker.setDefaults($.timepicker.regional['es']); -}); diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-fr.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-fr.js deleted file mode 100755 index bd37d731c8d4f68d1d49dbddef0754c272e9b713..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-fr.js +++ /dev/null @@ -1,13 +0,0 @@ -/* French initialisation for the jQuery time picker plugin. */ -/* Written by Bernd Plagge (bplagge@choicenet.ne.jp), - Francois Gelinas (frank@fgelinas.com) */ -jQuery(function($){ - $.timepicker.regional['fr'] = { - hourText: 'Heures', - minuteText: 'Minutes', - amPmText: ['AM', 'PM'], - closeButtonText: 'Fermer', - nowButtonText: 'Maintenant', - deselectButtonText: 'Désélectionner' } - $.timepicker.setDefaults($.timepicker.regional['fr']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-hr.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-hr.js deleted file mode 100755 index 6950a16939896123fdbd11e5694ae9d4ffaf864e..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-hr.js +++ /dev/null @@ -1,13 +0,0 @@ -/* Croatian/Bosnian initialisation for the timepicker plugin */ -/* Written by Rene Brakus (rene.brakus@infobip.com). */ -jQuery(function($){ - $.timepicker.regional['hr'] = { - hourText: 'Sat', - minuteText: 'Minuta', - amPmText: ['Prijepodne', 'Poslijepodne'], - closeButtonText: 'Zatvoriti', - nowButtonText: 'Sada', - deselectButtonText: 'PoniÅ¡tite'} - - $.timepicker.setDefaults($.timepicker.regional['hr']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-it.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-it.js deleted file mode 100755 index ad20df305391c92db741cf1303f9277afd329780..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-it.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Italian initialisation for the jQuery time picker plugin. */ -/* Written by Serge Margarita (serge.margarita@gmail.com) */ -jQuery(function($){ - $.timepicker.regional['it'] = { - hourText: 'Ore', - minuteText: 'Minuti', - amPmText: ['AM', 'PM'], - closeButtonText: 'Chiudi', - nowButtonText: 'Adesso', - deselectButtonText: 'Svuota' } - $.timepicker.setDefaults($.timepicker.regional['it']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-ja.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-ja.js deleted file mode 100755 index b38cf6e5960ce4e92f2f437c5564c7fbe4b2a495..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-ja.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Japanese initialisation for the jQuery time picker plugin. */ -/* Written by Bernd Plagge (bplagge@choicenet.ne.jp). */ -jQuery(function($){ - $.timepicker.regional['ja'] = { - hourText: '時間', - minuteText: '分', - amPmText: ['åˆå‰', 'åˆå¾Œ'], - closeButtonText: 'é–‰ã˜ã‚‹', - nowButtonText: 'ç¾æ™‚', - deselectButtonText: 'é¸æŠžè§£é™¤' } - $.timepicker.setDefaults($.timepicker.regional['ja']); -}); diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-nl.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-nl.js deleted file mode 100755 index 945d55ea0ba020453847caee84cb5dacc3971928..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-nl.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Nederlands initialisation for the timepicker plugin */ -/* Written by Lowie Hulzinga. */ -jQuery(function($){ - $.timepicker.regional['nl'] = { - hourText: 'Uren', - minuteText: 'Minuten', - amPmText: ['AM', 'PM'], - closeButtonText: 'Sluiten', - nowButtonText: 'Actuele tijd', - deselectButtonText: 'Wissen' } - $.timepicker.setDefaults($.timepicker.regional['nl']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-pl.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-pl.js deleted file mode 100755 index 9f401c5ad15d8676238dcbc4c2f568391d4a29c4..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-pl.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Polish initialisation for the timepicker plugin */ -/* Written by Mateusz Wadolkowski (mw@pcdoctor.pl). */ -jQuery(function($){ - $.timepicker.regional['pl'] = { - hourText: 'Godziny', - minuteText: 'Minuty', - amPmText: ['', ''], - closeButtonText: 'Zamknij', - nowButtonText: 'Teraz', - deselectButtonText: 'Odznacz'} - $.timepicker.setDefaults($.timepicker.regional['pl']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-pt-BR.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-pt-BR.js deleted file mode 100755 index 90273322689e0288f2004f72c029a1fedcc3f88e..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-pt-BR.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Brazilan initialisation for the timepicker plugin */ -/* Written by Daniel Almeida (quantodaniel@gmail.com). */ -jQuery(function($){ - $.timepicker.regional['pt-BR'] = { - hourText: 'Hora', - minuteText: 'Minuto', - amPmText: ['AM', 'PM'], - closeButtonText: 'Fechar', - nowButtonText: 'Agora', - deselectButtonText: 'Limpar' } - $.timepicker.setDefaults($.timepicker.regional['pt-BR']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-sl.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-sl.js deleted file mode 100755 index 0b7d9c9f6c820f2b61fe8b13a97a6222dffd74eb..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-sl.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Slovenian localization for the jQuery time picker plugin. */ -/* Written by BlazÌŒ MalezÌŒicÌŒ (blaz@malezic.si) */ -jQuery(function($){ - $.timepicker.regional['sl'] = { - hourText: 'Ure', - minuteText: 'Minute', - amPmText: ['AM', 'PM'], - closeButtonText: 'Zapri', - nowButtonText: 'Zdaj', - deselectButtonText: 'PobriÅ¡i' } - $.timepicker.setDefaults($.timepicker.regional['sl']); -}); diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-sv.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-sv.js deleted file mode 100755 index d6d798ef38144c9bbcf6f9c1fd95045b30e69a58..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-sv.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Swedish initialisation for the timepicker plugin */ -/* Written by Björn Westlin (bjorn.westlin@su.se). */ -jQuery(function($){ - $.timepicker.regional['sv'] = { - hourText: 'Timme', - minuteText: 'Minut', - amPmText: ['AM', 'PM'] , - closeButtonText: 'Stäng', - nowButtonText: 'Nu', - deselectButtonText: 'Rensa' } - $.timepicker.setDefaults($.timepicker.regional['sv']); -}); diff --git a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-tr.js b/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-tr.js deleted file mode 100755 index 4de447c4740fb4a830727a84e1006f7b98dfe76a..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/i18n/jquery.ui.timepicker-tr.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Turkish initialisation for the jQuery time picker plugin. */ -/* Written by Mutlu Tevfik Koçak (mtkocak@gmail.com) */ -jQuery(function($){ - $.timepicker.regional['tr'] = { - hourText: 'Saat', - minuteText: 'Dakika', - amPmText: ['AM', 'PM'], - closeButtonText: 'Kapat', - nowButtonText: 'Åžu anda', - deselectButtonText: 'Seçimi temizle' } - $.timepicker.setDefaults($.timepicker.regional['tr']); -}); \ No newline at end of file diff --git a/3rdparty/timepicker/js/jquery.ui.timepicker.js b/3rdparty/timepicker/js/jquery.ui.timepicker.js deleted file mode 100755 index 728841fa7abaacead013ebaf91a7e2e1da1d5efb..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/js/jquery.ui.timepicker.js +++ /dev/null @@ -1,1406 +0,0 @@ -/* - * jQuery UI Timepicker 0.3.1 - * - * Copyright 2010-2011, Francois Gelinas - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://fgelinas.com/code/timepicker - * - * Depends: - * jquery.ui.core.js - * jquery.ui.position.js (only if position settngs are used) - * - * Change version 0.1.0 - moved the t-rex up here - * - ____ - ___ .-~. /_"-._ - `-._~-. / /_ "~o\ :Y - \ \ / : \~x. ` ') - ] Y / | Y< ~-.__j - / ! _.--~T : l l< /.-~ - / / ____.--~ . ` l /~\ \<|Y - / / .-~~" /| . ',-~\ \L| - / / / .^ \ Y~Y \.^>/l_ "--' - / Y .-"( . l__ j_j l_/ /~_.-~ . - Y l / \ ) ~~~." / `/"~ / \.__/l_ - | \ _.-" ~-{__ l : l._Z~-.___.--~ - | ~---~ / ~~"---\_ ' __[> - l . _.^ ___ _>-y~ - \ \ . .-~ .-~ ~>--" / - \ ~---" / ./ _.-' - "-.,_____.,_ _.--~\ _.-~ - ~~ ( _} -Row - `. ~( - ) \ - /,`--'~\--'~\ - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ->T-Rex<- -*/ - -(function ($) { - - $.extend($.ui, { timepicker: { version: "0.3.1"} }); - - var PROP_NAME = 'timepicker', - tpuuid = new Date().getTime(); - - /* Time picker manager. - Use the singleton instance of this class, $.timepicker, to interact with the time picker. - Settings for (groups of) time pickers are maintained in an instance object, - allowing multiple different settings on the same page. */ - - function Timepicker() { - this.debug = true; // Change this to true to start debugging - this._curInst = null; // The current instance in use - this._disabledInputs = []; // List of time picker inputs that have been disabled - this._timepickerShowing = false; // True if the popup picker is showing , false if not - this._inDialog = false; // True if showing within a "dialog", false if not - this._dialogClass = 'ui-timepicker-dialog'; // The name of the dialog marker class - this._mainDivId = 'ui-timepicker-div'; // The ID of the main timepicker division - this._inlineClass = 'ui-timepicker-inline'; // The name of the inline marker class - this._currentClass = 'ui-timepicker-current'; // The name of the current hour / minutes marker class - this._dayOverClass = 'ui-timepicker-days-cell-over'; // The name of the day hover marker class - - this.regional = []; // Available regional settings, indexed by language code - this.regional[''] = { // Default regional settings - hourText: 'Hour', // Display text for hours section - minuteText: 'Minute', // Display text for minutes link - amPmText: ['AM', 'PM'], // Display text for AM PM - closeButtonText: 'Done', // Text for the confirmation button (ok button) - nowButtonText: 'Now', // Text for the now button - deselectButtonText: 'Deselect' // Text for the deselect button - }; - this._defaults = { // Global defaults for all the time picker instances - showOn: 'focus', // 'focus' for popup on focus, - // 'button' for trigger button, or 'both' for either (not yet implemented) - button: null, // 'button' element that will trigger the timepicker - showAnim: 'fadeIn', // Name of jQuery animation for popup - showOptions: {}, // Options for enhanced animations - appendText: '', // Display text following the input box, e.g. showing the format - - beforeShow: null, // Define a callback function executed before the timepicker is shown - onSelect: null, // Define a callback function when a hour / minutes is selected - onClose: null, // Define a callback function when the timepicker is closed - - timeSeparator: ':', // The character to use to separate hours and minutes. - periodSeparator: ' ', // The character to use to separate the time from the time period. - showPeriod: false, // Define whether or not to show AM/PM with selected time - showPeriodLabels: true, // Show the AM/PM labels on the left of the time picker - showLeadingZero: true, // Define whether or not to show a leading zero for hours < 10. [true/false] - showMinutesLeadingZero: true, // Define whether or not to show a leading zero for minutes < 10. - altField: '', // Selector for an alternate field to store selected time into - defaultTime: 'now', // Used as default time when input field is empty or for inline timePicker - // (set to 'now' for the current time, '' for no highlighted time) - myPosition: 'left top', // Position of the dialog relative to the input. - // see the position utility for more info : http://jqueryui.com/demos/position/ - atPosition: 'left bottom', // Position of the input element to match - // Note : if the position utility is not loaded, the timepicker will attach left top to left bottom - //NEW: 2011-02-03 - onHourShow: null, // callback for enabling / disabling on selectable hours ex : function(hour) { return true; } - onMinuteShow: null, // callback for enabling / disabling on time selection ex : function(hour,minute) { return true; } - - hours: { - starts: 0, // first displayed hour - ends: 23 // last displayed hour - }, - minutes: { - starts: 0, // first displayed minute - ends: 55, // last displayed minute - interval: 5 // interval of displayed minutes - }, - rows: 4, // number of rows for the input tables, minimum 2, makes more sense if you use multiple of 2 - // 2011-08-05 0.2.4 - showHours: true, // display the hours section of the dialog - showMinutes: true, // display the minute section of the dialog - optionalMinutes: false, // optionally parse inputs of whole hours with minutes omitted - - // buttons - showCloseButton: false, // shows an OK button to confirm the edit - showNowButton: false, // Shows the 'now' button - showDeselectButton: false // Shows the deselect time button - - }; - $.extend(this._defaults, this.regional['']); - - this.tpDiv = $(''); - } - - $.extend(Timepicker.prototype, { - /* Class name added to elements to indicate already configured with a time picker. */ - markerClassName: 'hasTimepicker', - - /* Debug logging (if enabled). */ - log: function () { - if (this.debug) - console.log.apply('', arguments); - }, - - _widgetTimepicker: function () { - return this.tpDiv; - }, - - /* Override the default settings for all instances of the time picker. - @param settings object - the new settings to use as defaults (anonymous object) - @return the manager object */ - setDefaults: function (settings) { - extendRemove(this._defaults, settings || {}); - return this; - }, - - /* Attach the time picker to a jQuery selection. - @param target element - the target input field or division or span - @param settings object - the new settings to use for this time picker instance (anonymous) */ - _attachTimepicker: function (target, settings) { - // check for settings on the control itself - in namespace 'time:' - var inlineSettings = null; - for (var attrName in this._defaults) { - var attrValue = target.getAttribute('time:' + attrName); - if (attrValue) { - inlineSettings = inlineSettings || {}; - try { - inlineSettings[attrName] = eval(attrValue); - } catch (err) { - inlineSettings[attrName] = attrValue; - } - } - } - var nodeName = target.nodeName.toLowerCase(); - var inline = (nodeName == 'div' || nodeName == 'span'); - - if (!target.id) { - this.uuid += 1; - target.id = 'tp' + this.uuid; - } - var inst = this._newInst($(target), inline); - inst.settings = $.extend({}, settings || {}, inlineSettings || {}); - if (nodeName == 'input') { - this._connectTimepicker(target, inst); - // init inst.hours and inst.minutes from the input value - this._setTimeFromField(inst); - } else if (inline) { - this._inlineTimepicker(target, inst); - } - - - }, - - /* Create a new instance object. */ - _newInst: function (target, inline) { - var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1'); // escape jQuery meta chars - return { - id: id, input: target, // associated target - inline: inline, // is timepicker inline or not : - tpDiv: (!inline ? this.tpDiv : // presentation div - $('
            ')) - }; - }, - - /* Attach the time picker to an input field. */ - _connectTimepicker: function (target, inst) { - var input = $(target); - inst.append = $([]); - inst.trigger = $([]); - if (input.hasClass(this.markerClassName)) { return; } - this._attachments(input, inst); - input.addClass(this.markerClassName). - keydown(this._doKeyDown). - keyup(this._doKeyUp). - bind("setData.timepicker", function (event, key, value) { - inst.settings[key] = value; - }). - bind("getData.timepicker", function (event, key) { - return this._get(inst, key); - }); - $.data(target, PROP_NAME, inst); - }, - - /* Handle keystrokes. */ - _doKeyDown: function (event) { - var inst = $.timepicker._getInst(event.target); - var handled = true; - inst._keyEvent = true; - if ($.timepicker._timepickerShowing) { - switch (event.keyCode) { - case 9: $.timepicker._hideTimepicker(); - handled = false; - break; // hide on tab out - case 13: - $.timepicker._updateSelectedValue(inst); - $.timepicker._hideTimepicker(); - - return false; // don't submit the form - break; // select the value on enter - case 27: $.timepicker._hideTimepicker(); - break; // hide on escape - default: handled = false; - } - } - else if (event.keyCode == 36 && event.ctrlKey) { // display the time picker on ctrl+home - $.timepicker._showTimepicker(this); - } - else { - handled = false; - } - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } - }, - - /* Update selected time on keyUp */ - /* Added verion 0.0.5 */ - _doKeyUp: function (event) { - var inst = $.timepicker._getInst(event.target); - $.timepicker._setTimeFromField(inst); - $.timepicker._updateTimepicker(inst); - }, - - /* Make attachments based on settings. */ - _attachments: function (input, inst) { - var appendText = this._get(inst, 'appendText'); - var isRTL = this._get(inst, 'isRTL'); - if (inst.append) { inst.append.remove(); } - if (appendText) { - inst.append = $('' + appendText + ''); - input[isRTL ? 'before' : 'after'](inst.append); - } - input.unbind('focus.timepicker', this._showTimepicker); - input.unbind('click.timepicker', this._adjustZIndex); - - if (inst.trigger) { inst.trigger.remove(); } - - var showOn = this._get(inst, 'showOn'); - if (showOn == 'focus' || showOn == 'both') { // pop-up time picker when in the marked field - input.bind("focus.timepicker", this._showTimepicker); - input.bind("click.timepicker", this._adjustZIndex); - } - if (showOn == 'button' || showOn == 'both') { // pop-up time picker when 'button' element is clicked - var button = this._get(inst, 'button'); - $(button).bind("click.timepicker", function () { - if ($.timepicker._timepickerShowing && $.timepicker._lastInput == input[0]) { - $.timepicker._hideTimepicker(); - } else if (!inst.input.is(':disabled')) { - $.timepicker._showTimepicker(input[0]); - } - return false; - }); - - } - }, - - - /* Attach an inline time picker to a div. */ - _inlineTimepicker: function(target, inst) { - var divSpan = $(target); - if (divSpan.hasClass(this.markerClassName)) - return; - divSpan.addClass(this.markerClassName).append(inst.tpDiv). - bind("setData.timepicker", function(event, key, value){ - inst.settings[key] = value; - }).bind("getData.timepicker", function(event, key){ - return this._get(inst, key); - }); - $.data(target, PROP_NAME, inst); - - this._setTimeFromField(inst); - this._updateTimepicker(inst); - inst.tpDiv.show(); - }, - - _adjustZIndex: function(input) { - input = input.target || input; - var inst = $.timepicker._getInst(input); - inst.tpDiv.css('zIndex', $.timepicker._getZIndex(input) +1); - }, - - /* Pop-up the time picker for a given input field. - @param input element - the input field attached to the time picker or - event - if triggered by focus */ - _showTimepicker: function (input) { - input = input.target || input; - if (input.nodeName.toLowerCase() != 'input') { input = $('input', input.parentNode)[0]; } // find from button/image trigger - - if ($.timepicker._isDisabledTimepicker(input) || $.timepicker._lastInput == input) { return; } // already here - - // fix v 0.0.8 - close current timepicker before showing another one - $.timepicker._hideTimepicker(); - - var inst = $.timepicker._getInst(input); - if ($.timepicker._curInst && $.timepicker._curInst != inst) { - $.timepicker._curInst.tpDiv.stop(true, true); - } - var beforeShow = $.timepicker._get(inst, 'beforeShow'); - extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {})); - inst.lastVal = null; - $.timepicker._lastInput = input; - - $.timepicker._setTimeFromField(inst); - - // calculate default position - if ($.timepicker._inDialog) { input.value = ''; } // hide cursor - if (!$.timepicker._pos) { // position below input - $.timepicker._pos = $.timepicker._findPos(input); - $.timepicker._pos[1] += input.offsetHeight; // add the height - } - var isFixed = false; - $(input).parents().each(function () { - isFixed |= $(this).css('position') == 'fixed'; - return !isFixed; - }); - if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled - $.timepicker._pos[0] -= document.documentElement.scrollLeft; - $.timepicker._pos[1] -= document.documentElement.scrollTop; - } - - var offset = { left: $.timepicker._pos[0], top: $.timepicker._pos[1] }; - - $.timepicker._pos = null; - // determine sizing offscreen - inst.tpDiv.css({ position: 'absolute', display: 'block', top: '-1000px' }); - $.timepicker._updateTimepicker(inst); - - - // position with the ui position utility, if loaded - if ( ( ! inst.inline ) && ( typeof $.ui.position == 'object' ) ) { - inst.tpDiv.position({ - of: inst.input, - my: $.timepicker._get( inst, 'myPosition' ), - at: $.timepicker._get( inst, 'atPosition' ), - // offset: $( "#offset" ).val(), - // using: using, - collision: 'flip' - }); - var offset = inst.tpDiv.offset(); - $.timepicker._pos = [offset.top, offset.left]; - } - - - // reset clicked state - inst._hoursClicked = false; - inst._minutesClicked = false; - - // fix width for dynamic number of time pickers - // and adjust position before showing - offset = $.timepicker._checkOffset(inst, offset, isFixed); - inst.tpDiv.css({ position: ($.timepicker._inDialog && $.blockUI ? - 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none', - left: offset.left + 'px', top: offset.top + 'px' - }); - if ( ! inst.inline ) { - var showAnim = $.timepicker._get(inst, 'showAnim'); - var duration = $.timepicker._get(inst, 'duration'); - - var postProcess = function () { - $.timepicker._timepickerShowing = true; - var borders = $.timepicker._getBorders(inst.tpDiv); - inst.tpDiv.find('iframe.ui-timepicker-cover'). // IE6- only - css({ left: -borders[0], top: -borders[1], - width: inst.tpDiv.outerWidth(), height: inst.tpDiv.outerHeight() - }); - }; - - // Fixed the zIndex problem for real (I hope) - FG - v 0.2.9 - $.timepicker._adjustZIndex(input); - //inst.tpDiv.css('zIndex', $.timepicker._getZIndex(input) +1); - - if ($.effects && $.effects[showAnim]) { - inst.tpDiv.show(showAnim, $.timepicker._get(inst, 'showOptions'), duration, postProcess); - } - else { - inst.tpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess); - } - if (!showAnim || !duration) { postProcess(); } - if (inst.input.is(':visible') && !inst.input.is(':disabled')) { inst.input.focus(); } - $.timepicker._curInst = inst; - } - }, - - // This is a copy of the zIndex function of UI core 1.8.?? - // Copied in the timepicker to stay backward compatible. - _getZIndex: function (target) { - var elem = $( target ), position, value; - while ( elem.length && elem[ 0 ] !== document ) { - position = elem.css( "position" ); - if ( position === "absolute" || position === "relative" || position === "fixed" ) { - value = parseInt( elem.css( "zIndex" ), 10 ); - if ( !isNaN( value ) && value !== 0 ) { - return value; - } - } - elem = elem.parent(); - } - }, - - /* Refresh the time picker - @param target element - The target input field or inline container element. */ - _refreshTimepicker: function(target) { - var inst = this._getInst(target); - if (inst) { - this._updateTimepicker(inst); - } - }, - - - /* Generate the time picker content. */ - _updateTimepicker: function (inst) { - inst.tpDiv.empty().append(this._generateHTML(inst)); - this._rebindDialogEvents(inst); - - }, - - _rebindDialogEvents: function (inst) { - var borders = $.timepicker._getBorders(inst.tpDiv), - self = this; - inst.tpDiv - .find('iframe.ui-timepicker-cover') // IE6- only - .css({ left: -borders[0], top: -borders[1], - width: inst.tpDiv.outerWidth(), height: inst.tpDiv.outerHeight() - }) - .end() - // after the picker html is appended bind the click & double click events (faster in IE this way - // then letting the browser interpret the inline events) - // the binding for the minute cells also exists in _updateMinuteDisplay - .find('.ui-timepicker-minute-cell') - .unbind() - .bind("click", { fromDoubleClick:false }, $.proxy($.timepicker.selectMinutes, this)) - .bind("dblclick", { fromDoubleClick:true }, $.proxy($.timepicker.selectMinutes, this)) - .end() - .find('.ui-timepicker-hour-cell') - .unbind() - .bind("click", { fromDoubleClick:false }, $.proxy($.timepicker.selectHours, this)) - .bind("dblclick", { fromDoubleClick:true }, $.proxy($.timepicker.selectHours, this)) - .end() - .find('.ui-timepicker td a') - .unbind() - .bind('mouseout', function () { - $(this).removeClass('ui-state-hover'); - if (this.className.indexOf('ui-timepicker-prev') != -1) $(this).removeClass('ui-timepicker-prev-hover'); - if (this.className.indexOf('ui-timepicker-next') != -1) $(this).removeClass('ui-timepicker-next-hover'); - }) - .bind('mouseover', function () { - if ( ! self._isDisabledTimepicker(inst.inline ? inst.tpDiv.parent()[0] : inst.input[0])) { - $(this).parents('.ui-timepicker-calendar').find('a').removeClass('ui-state-hover'); - $(this).addClass('ui-state-hover'); - if (this.className.indexOf('ui-timepicker-prev') != -1) $(this).addClass('ui-timepicker-prev-hover'); - if (this.className.indexOf('ui-timepicker-next') != -1) $(this).addClass('ui-timepicker-next-hover'); - } - }) - .end() - .find('.' + this._dayOverClass + ' a') - .trigger('mouseover') - .end() - .find('.ui-timepicker-now').bind("click", function(e) { - $.timepicker.selectNow(e); - }).end() - .find('.ui-timepicker-deselect').bind("click",function(e) { - $.timepicker.deselectTime(e); - }).end() - .find('.ui-timepicker-close').bind("click",function(e) { - $.timepicker._hideTimepicker(); - }).end(); - }, - - /* Generate the HTML for the current state of the time picker. */ - _generateHTML: function (inst) { - - var h, m, row, col, html, hoursHtml, minutesHtml = '', - showPeriod = (this._get(inst, 'showPeriod') == true), - showPeriodLabels = (this._get(inst, 'showPeriodLabels') == true), - showLeadingZero = (this._get(inst, 'showLeadingZero') == true), - showHours = (this._get(inst, 'showHours') == true), - showMinutes = (this._get(inst, 'showMinutes') == true), - amPmText = this._get(inst, 'amPmText'), - rows = this._get(inst, 'rows'), - amRows = 0, - pmRows = 0, - amItems = 0, - pmItems = 0, - amFirstRow = 0, - pmFirstRow = 0, - hours = Array(), - hours_options = this._get(inst, 'hours'), - hoursPerRow = null, - hourCounter = 0, - hourLabel = this._get(inst, 'hourText'), - showCloseButton = this._get(inst, 'showCloseButton'), - closeButtonText = this._get(inst, 'closeButtonText'), - showNowButton = this._get(inst, 'showNowButton'), - nowButtonText = this._get(inst, 'nowButtonText'), - showDeselectButton = this._get(inst, 'showDeselectButton'), - deselectButtonText = this._get(inst, 'deselectButtonText'), - showButtonPanel = showCloseButton || showNowButton || showDeselectButton; - - - - // prepare all hours and minutes, makes it easier to distribute by rows - for (h = hours_options.starts; h <= hours_options.ends; h++) { - hours.push (h); - } - hoursPerRow = Math.ceil(hours.length / rows); // always round up - - if (showPeriodLabels) { - for (hourCounter = 0; hourCounter < hours.length; hourCounter++) { - if (hours[hourCounter] < 12) { - amItems++; - } - else { - pmItems++; - } - } - hourCounter = 0; - - amRows = Math.floor(amItems / hours.length * rows); - pmRows = Math.floor(pmItems / hours.length * rows); - - // assign the extra row to the period that is more densly populated - if (rows != amRows + pmRows) { - // Make sure: AM Has Items and either PM Does Not, AM has no rows yet, or AM is more dense - if (amItems && (!pmItems || !amRows || (pmRows && amItems / amRows >= pmItems / pmRows))) { - amRows++; - } else { - pmRows++; - } - } - amFirstRow = Math.min(amRows, 1); - pmFirstRow = amRows + 1; - hoursPerRow = Math.ceil(Math.max(amItems / amRows, pmItems / pmRows)); - } - - - html = ''; - - if (showHours) { - - html += ''; // Close the Hour td - } - - if (showMinutes) { - html += ''; - } - - html += ''; - - - if (showButtonPanel) { - var buttonPanel = ''; - } - html += '
            ' + - '
            ' + - hourLabel + - '
            ' + - ''; - - for (row = 1; row <= rows; row++) { - html += ''; - // AM - if (row == amFirstRow && showPeriodLabels) { - html += ''; - } - // PM - if (row == pmFirstRow && showPeriodLabels) { - html += ''; - } - for (col = 1; col <= hoursPerRow; col++) { - if (showPeriodLabels && row < pmFirstRow && hours[hourCounter] >= 12) { - html += this._generateHTMLHourCell(inst, undefined, showPeriod, showLeadingZero); - } else { - html += this._generateHTMLHourCell(inst, hours[hourCounter], showPeriod, showLeadingZero); - hourCounter++; - } - } - html += ''; - } - html += '
            ' + amPmText[0] + '' + amPmText[1] + '
            ' + // Close the hours cells table - '
            '; - html += this._generateHTMLMinutes(inst); - html += '
            '; - if (showNowButton) { - buttonPanel += ''; - } - if (showDeselectButton) { - buttonPanel += ''; - } - if (showCloseButton) { - buttonPanel += ''; - } - - html += buttonPanel + '
            '; - - /* IE6 IFRAME FIX (taken from datepicker 1.5.3, fixed in 0.1.2 */ - html += ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ? - '' : ''); - - return html; - }, - - /* Special function that update the minutes selection in currently visible timepicker - * called on hour selection when onMinuteShow is defined */ - _updateMinuteDisplay: function (inst) { - var newHtml = this._generateHTMLMinutes(inst); - inst.tpDiv.find('td.ui-timepicker-minutes').html(newHtml); - this._rebindDialogEvents(inst); - // after the picker html is appended bind the click & double click events (faster in IE this way - // then letting the browser interpret the inline events) - // yes I know, duplicate code, sorry -/* .find('.ui-timepicker-minute-cell') - .bind("click", { fromDoubleClick:false }, $.proxy($.timepicker.selectMinutes, this)) - .bind("dblclick", { fromDoubleClick:true }, $.proxy($.timepicker.selectMinutes, this)); -*/ - - }, - - /* - * Generate the minutes table - * This is separated from the _generateHTML function because is can be called separately (when hours changes) - */ - _generateHTMLMinutes: function (inst) { - - var m, row, html = '', - rows = this._get(inst, 'rows'), - minutes = Array(), - minutes_options = this._get(inst, 'minutes'), - minutesPerRow = null, - minuteCounter = 0, - showMinutesLeadingZero = (this._get(inst, 'showMinutesLeadingZero') == true), - onMinuteShow = this._get(inst, 'onMinuteShow'), - minuteLabel = this._get(inst, 'minuteText'); - - if ( ! minutes_options.starts) { - minutes_options.starts = 0; - } - if ( ! minutes_options.ends) { - minutes_options.ends = 59; - } - for (m = minutes_options.starts; m <= minutes_options.ends; m += minutes_options.interval) { - minutes.push(m); - } - minutesPerRow = Math.round(minutes.length / rows + 0.49); // always round up - - /* - * The minutes table - */ - // if currently selected minute is not enabled, we have a problem and need to select a new minute. - if (onMinuteShow && - (onMinuteShow.apply((inst.input ? inst.input[0] : null), [inst.hours , inst.minutes]) == false) ) { - // loop minutes and select first available - for (minuteCounter = 0; minuteCounter < minutes.length; minuteCounter += 1) { - m = minutes[minuteCounter]; - if (onMinuteShow.apply((inst.input ? inst.input[0] : null), [inst.hours, m])) { - inst.minutes = m; - break; - } - } - } - - - - html += '
            ' + - minuteLabel + - '
            ' + - ''; - - minuteCounter = 0; - for (row = 1; row <= rows; row++) { - html += ''; - while (minuteCounter < row * minutesPerRow) { - var m = minutes[minuteCounter]; - var displayText = ''; - if (m !== undefined ) { - displayText = (m < 10) && showMinutesLeadingZero ? "0" + m.toString() : m.toString(); - } - html += this._generateHTMLMinuteCell(inst, m, displayText); - minuteCounter++; - } - html += ''; - } - - html += '
            '; - - return html; - }, - - /* Generate the content of a "Hour" cell */ - _generateHTMLHourCell: function (inst, hour, showPeriod, showLeadingZero) { - - var displayHour = hour; - if ((hour > 12) && showPeriod) { - displayHour = hour - 12; - } - if ((displayHour == 0) && showPeriod) { - displayHour = 12; - } - if ((displayHour < 10) && showLeadingZero) { - displayHour = '0' + displayHour; - } - - var html = ""; - var enabled = true; - var onHourShow = this._get(inst, 'onHourShow'); //custom callback - - if (hour == undefined) { - html = ' '; - return html; - } - - if (onHourShow) { - enabled = onHourShow.apply((inst.input ? inst.input[0] : null), [hour]); - } - - if (enabled) { - html = '' + - '' + - displayHour.toString() + - ''; - } - else { - html = - '' + - '' + - displayHour.toString() + - '' + - ''; - } - return html; - }, - - /* Generate the content of a "Hour" cell */ - _generateHTMLMinuteCell: function (inst, minute, displayText) { - var html = ""; - var enabled = true; - var onMinuteShow = this._get(inst, 'onMinuteShow'); //custom callback - if (onMinuteShow) { - //NEW: 2011-02-03 we should give the hour as a parameter as well! - enabled = onMinuteShow.apply((inst.input ? inst.input[0] : null), [inst.hours,minute]); //trigger callback - } - - if (minute == undefined) { - html = ' '; - return html; - } - - if (enabled) { - html = '' + - '' + - displayText + - ''; - } - else { - - html = '' + - '' + - displayText + - '' + - ''; - } - return html; - }, - - - /* Detach a timepicker from its control. - @param target element - the target input field or division or span */ - _destroyTimepicker: function(target) { - var $target = $(target); - var inst = $.data(target, PROP_NAME); - if (!$target.hasClass(this.markerClassName)) { - return; - } - var nodeName = target.nodeName.toLowerCase(); - $.removeData(target, PROP_NAME); - if (nodeName == 'input') { - inst.append.remove(); - inst.trigger.remove(); - $target.removeClass(this.markerClassName) - .unbind('focus.timepicker', this._showTimepicker) - .unbind('click.timepicker', this._adjustZIndex); - } else if (nodeName == 'div' || nodeName == 'span') - $target.removeClass(this.markerClassName).empty(); - }, - - /* Enable the date picker to a jQuery selection. - @param target element - the target input field or division or span */ - _enableTimepicker: function(target) { - var $target = $(target), - target_id = $target.attr('id'), - inst = $.data(target, PROP_NAME); - - if (!$target.hasClass(this.markerClassName)) { - return; - } - var nodeName = target.nodeName.toLowerCase(); - if (nodeName == 'input') { - target.disabled = false; - var button = this._get(inst, 'button'); - $(button).removeClass('ui-state-disabled').disabled = false; - inst.trigger.filter('button'). - each(function() { this.disabled = false; }).end(); - } - else if (nodeName == 'div' || nodeName == 'span') { - var inline = $target.children('.' + this._inlineClass); - inline.children().removeClass('ui-state-disabled'); - inline.find('button').each( - function() { this.disabled = false } - ) - } - this._disabledInputs = $.map(this._disabledInputs, - function(value) { return (value == target_id ? null : value); }); // delete entry - }, - - /* Disable the time picker to a jQuery selection. - @param target element - the target input field or division or span */ - _disableTimepicker: function(target) { - var $target = $(target); - var inst = $.data(target, PROP_NAME); - if (!$target.hasClass(this.markerClassName)) { - return; - } - var nodeName = target.nodeName.toLowerCase(); - if (nodeName == 'input') { - var button = this._get(inst, 'button'); - - $(button).addClass('ui-state-disabled').disabled = true; - target.disabled = true; - - inst.trigger.filter('button'). - each(function() { this.disabled = true; }).end(); - - } - else if (nodeName == 'div' || nodeName == 'span') { - var inline = $target.children('.' + this._inlineClass); - inline.children().addClass('ui-state-disabled'); - inline.find('button').each( - function() { this.disabled = true } - ) - - } - this._disabledInputs = $.map(this._disabledInputs, - function(value) { return (value == target ? null : value); }); // delete entry - this._disabledInputs[this._disabledInputs.length] = $target.attr('id'); - }, - - /* Is the first field in a jQuery collection disabled as a timepicker? - @param target_id element - the target input field or division or span - @return boolean - true if disabled, false if enabled */ - _isDisabledTimepicker: function (target_id) { - if ( ! target_id) { return false; } - for (var i = 0; i < this._disabledInputs.length; i++) { - if (this._disabledInputs[i] == target_id) { return true; } - } - return false; - }, - - /* Check positioning to remain on screen. */ - _checkOffset: function (inst, offset, isFixed) { - var tpWidth = inst.tpDiv.outerWidth(); - var tpHeight = inst.tpDiv.outerHeight(); - var inputWidth = inst.input ? inst.input.outerWidth() : 0; - var inputHeight = inst.input ? inst.input.outerHeight() : 0; - var viewWidth = document.documentElement.clientWidth + $(document).scrollLeft(); - var viewHeight = document.documentElement.clientHeight + $(document).scrollTop(); - - offset.left -= (this._get(inst, 'isRTL') ? (tpWidth - inputWidth) : 0); - offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0; - offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; - - // now check if datepicker is showing outside window viewport - move to a better place if so. - offset.left -= Math.min(offset.left, (offset.left + tpWidth > viewWidth && viewWidth > tpWidth) ? - Math.abs(offset.left + tpWidth - viewWidth) : 0); - offset.top -= Math.min(offset.top, (offset.top + tpHeight > viewHeight && viewHeight > tpHeight) ? - Math.abs(tpHeight + inputHeight) : 0); - - return offset; - }, - - /* Find an object's position on the screen. */ - _findPos: function (obj) { - var inst = this._getInst(obj); - var isRTL = this._get(inst, 'isRTL'); - while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) { - obj = obj[isRTL ? 'previousSibling' : 'nextSibling']; - } - var position = $(obj).offset(); - return [position.left, position.top]; - }, - - /* Retrieve the size of left and top borders for an element. - @param elem (jQuery object) the element of interest - @return (number[2]) the left and top borders */ - _getBorders: function (elem) { - var convert = function (value) { - return { thin: 1, medium: 2, thick: 3}[value] || value; - }; - return [parseFloat(convert(elem.css('border-left-width'))), - parseFloat(convert(elem.css('border-top-width')))]; - }, - - - /* Close time picker if clicked elsewhere. */ - _checkExternalClick: function (event) { - if (!$.timepicker._curInst) { return; } - var $target = $(event.target); - if ($target[0].id != $.timepicker._mainDivId && - $target.parents('#' + $.timepicker._mainDivId).length == 0 && - !$target.hasClass($.timepicker.markerClassName) && - !$target.hasClass($.timepicker._triggerClass) && - $.timepicker._timepickerShowing && !($.timepicker._inDialog && $.blockUI)) - $.timepicker._hideTimepicker(); - }, - - /* Hide the time picker from view. - @param input element - the input field attached to the time picker */ - _hideTimepicker: function (input) { - var inst = this._curInst; - if (!inst || (input && inst != $.data(input, PROP_NAME))) { return; } - if (this._timepickerShowing) { - var showAnim = this._get(inst, 'showAnim'); - var duration = this._get(inst, 'duration'); - var postProcess = function () { - $.timepicker._tidyDialog(inst); - this._curInst = null; - }; - if ($.effects && $.effects[showAnim]) { - inst.tpDiv.hide(showAnim, $.timepicker._get(inst, 'showOptions'), duration, postProcess); - } - else { - inst.tpDiv[(showAnim == 'slideDown' ? 'slideUp' : - (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess); - } - if (!showAnim) { postProcess(); } - - this._timepickerShowing = false; - - this._lastInput = null; - if (this._inDialog) { - this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); - if ($.blockUI) { - $.unblockUI(); - $('body').append(this.tpDiv); - } - } - this._inDialog = false; - - var onClose = this._get(inst, 'onClose'); - if (onClose) { - onClose.apply( - (inst.input ? inst.input[0] : null), - [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback - } - - } - }, - - - - /* Tidy up after a dialog display. */ - _tidyDialog: function (inst) { - inst.tpDiv.removeClass(this._dialogClass).unbind('.ui-timepicker'); - }, - - /* Retrieve the instance data for the target control. - @param target element - the target input field or division or span - @return object - the associated instance data - @throws error if a jQuery problem getting data */ - _getInst: function (target) { - try { - return $.data(target, PROP_NAME); - } - catch (err) { - throw 'Missing instance data for this timepicker'; - } - }, - - /* Get a setting value, defaulting if necessary. */ - _get: function (inst, name) { - return inst.settings[name] !== undefined ? - inst.settings[name] : this._defaults[name]; - }, - - /* Parse existing time and initialise time picker. */ - _setTimeFromField: function (inst) { - if (inst.input.val() == inst.lastVal) { return; } - var defaultTime = this._get(inst, 'defaultTime'); - - var timeToParse = defaultTime == 'now' ? this._getCurrentTimeRounded(inst) : defaultTime; - if ((inst.inline == false) && (inst.input.val() != '')) { timeToParse = inst.input.val() } - - if (timeToParse instanceof Date) { - inst.hours = timeToParse.getHours(); - inst.minutes = timeToParse.getMinutes(); - } else { - var timeVal = inst.lastVal = timeToParse; - if (timeToParse == '') { - inst.hours = -1; - inst.minutes = -1; - } else { - var time = this.parseTime(inst, timeVal); - inst.hours = time.hours; - inst.minutes = time.minutes; - } - } - - - $.timepicker._updateTimepicker(inst); - }, - - /* Update or retrieve the settings for an existing time picker. - @param target element - the target input field or division or span - @param name object - the new settings to update or - string - the name of the setting to change or retrieve, - when retrieving also 'all' for all instance settings or - 'defaults' for all global defaults - @param value any - the new value for the setting - (omit if above is an object or to retrieve a value) */ - _optionTimepicker: function(target, name, value) { - var inst = this._getInst(target); - if (arguments.length == 2 && typeof name == 'string') { - return (name == 'defaults' ? $.extend({}, $.timepicker._defaults) : - (inst ? (name == 'all' ? $.extend({}, inst.settings) : - this._get(inst, name)) : null)); - } - var settings = name || {}; - if (typeof name == 'string') { - settings = {}; - settings[name] = value; - } - if (inst) { - if (this._curInst == inst) { - this._hideTimepicker(); - } - extendRemove(inst.settings, settings); - this._updateTimepicker(inst); - } - }, - - - /* Set the time for a jQuery selection. - @param target element - the target input field or division or span - @param time String - the new time */ - _setTimeTimepicker: function(target, time) { - var inst = this._getInst(target); - if (inst) { - this._setTime(inst, time); - this._updateTimepicker(inst); - this._updateAlternate(inst, time); - } - }, - - /* Set the time directly. */ - _setTime: function(inst, time, noChange) { - var origHours = inst.hours; - var origMinutes = inst.minutes; - var time = this.parseTime(inst, time); - inst.hours = time.hours; - inst.minutes = time.minutes; - - if ((origHours != inst.hours || origMinutes != inst.minuts) && !noChange) { - inst.input.trigger('change'); - } - this._updateTimepicker(inst); - this._updateSelectedValue(inst); - }, - - /* Return the current time, ready to be parsed, rounded to the closest 5 minute */ - _getCurrentTimeRounded: function (inst) { - var currentTime = new Date(), - currentMinutes = currentTime.getMinutes(), - // round to closest 5 - adjustedMinutes = Math.round( currentMinutes / 5 ) * 5; - currentTime.setMinutes(adjustedMinutes); - return currentTime; - }, - - /* - * Parse a time string into hours and minutes - */ - parseTime: function (inst, timeVal) { - var retVal = new Object(); - retVal.hours = -1; - retVal.minutes = -1; - - var timeSeparator = this._get(inst, 'timeSeparator'), - amPmText = this._get(inst, 'amPmText'), - showHours = this._get(inst, 'showHours'), - showMinutes = this._get(inst, 'showMinutes'), - optionalMinutes = this._get(inst, 'optionalMinutes'), - showPeriod = (this._get(inst, 'showPeriod') == true), - p = timeVal.indexOf(timeSeparator); - - // check if time separator found - if (p != -1) { - retVal.hours = parseInt(timeVal.substr(0, p), 10); - retVal.minutes = parseInt(timeVal.substr(p + 1), 10); - } - // check for hours only - else if ( (showHours) && ( !showMinutes || optionalMinutes ) ) { - retVal.hours = parseInt(timeVal, 10); - } - // check for minutes only - else if ( ( ! showHours) && (showMinutes) ) { - retVal.minutes = parseInt(timeVal, 10); - } - - if (showHours) { - var timeValUpper = timeVal.toUpperCase(); - if ((retVal.hours < 12) && (showPeriod) && (timeValUpper.indexOf(amPmText[1].toUpperCase()) != -1)) { - retVal.hours += 12; - } - // fix for 12 AM - if ((retVal.hours == 12) && (showPeriod) && (timeValUpper.indexOf(amPmText[0].toUpperCase()) != -1)) { - retVal.hours = 0; - } - } - - return retVal; - }, - - selectNow: function(event) { - var id = $(event.target).attr("data-timepicker-instance-id"), - $target = $(id), - inst = this._getInst($target[0]); - //if (!inst || (input && inst != $.data(input, PROP_NAME))) { return; } - var currentTime = new Date(); - inst.hours = currentTime.getHours(); - inst.minutes = currentTime.getMinutes(); - this._updateSelectedValue(inst); - this._updateTimepicker(inst); - this._hideTimepicker(); - }, - - deselectTime: function(event) { - var id = $(event.target).attr("data-timepicker-instance-id"), - $target = $(id), - inst = this._getInst($target[0]); - inst.hours = -1; - inst.minutes = -1; - this._updateSelectedValue(inst); - this._hideTimepicker(); - }, - - - selectHours: function (event) { - var $td = $(event.currentTarget), - id = $td.attr("data-timepicker-instance-id"), - newHours = parseInt($td.attr("data-hour")), - fromDoubleClick = event.data.fromDoubleClick, - $target = $(id), - inst = this._getInst($target[0]), - showMinutes = (this._get(inst, 'showMinutes') == true); - - // don't select if disabled - if ( $.timepicker._isDisabledTimepicker($target.attr('id')) ) { return false } - - $td.parents('.ui-timepicker-hours:first').find('a').removeClass('ui-state-active'); - $td.children('a').addClass('ui-state-active'); - inst.hours = newHours; - - // added for onMinuteShow callback - var onMinuteShow = this._get(inst, 'onMinuteShow'); - if (onMinuteShow) { - // this will trigger a callback on selected hour to make sure selected minute is allowed. - this._updateMinuteDisplay(inst); - } - - this._updateSelectedValue(inst); - - inst._hoursClicked = true; - if ((inst._minutesClicked) || (fromDoubleClick) || (showMinutes == false)) { - $.timepicker._hideTimepicker(); - } - // return false because if used inline, prevent the url to change to a hashtag - return false; - }, - - selectMinutes: function (event) { - var $td = $(event.currentTarget), - id = $td.attr("data-timepicker-instance-id"), - newMinutes = parseInt($td.attr("data-minute")), - fromDoubleClick = event.data.fromDoubleClick, - $target = $(id), - inst = this._getInst($target[0]), - showHours = (this._get(inst, 'showHours') == true); - - // don't select if disabled - if ( $.timepicker._isDisabledTimepicker($target.attr('id')) ) { return false } - - $td.parents('.ui-timepicker-minutes:first').find('a').removeClass('ui-state-active'); - $td.children('a').addClass('ui-state-active'); - - inst.minutes = newMinutes; - this._updateSelectedValue(inst); - - inst._minutesClicked = true; - if ((inst._hoursClicked) || (fromDoubleClick) || (showHours == false)) { - $.timepicker._hideTimepicker(); - // return false because if used inline, prevent the url to change to a hashtag - return false; - } - - // return false because if used inline, prevent the url to change to a hashtag - return false; - }, - - _updateSelectedValue: function (inst) { - var newTime = this._getParsedTime(inst); - if (inst.input) { - inst.input.val(newTime); - inst.input.trigger('change'); - } - var onSelect = this._get(inst, 'onSelect'); - if (onSelect) { onSelect.apply((inst.input ? inst.input[0] : null), [newTime, inst]); } // trigger custom callback - this._updateAlternate(inst, newTime); - return newTime; - }, - - /* this function process selected time and return it parsed according to instance options */ - _getParsedTime: function(inst) { - - if (inst.hours == -1 && inst.minutes == -1) { - return ''; - } - - // default to 0 AM if hours is not valid - if ((inst.hours < inst.hours.starts) || (inst.hours > inst.hours.ends )) { inst.hours = 0; } - // default to 0 minutes if minute is not valid - if ((inst.minutes < inst.minutes.starts) || (inst.minutes > inst.minutes.ends)) { inst.minutes = 0; } - - var period = "", - showPeriod = (this._get(inst, 'showPeriod') == true), - showLeadingZero = (this._get(inst, 'showLeadingZero') == true), - showHours = (this._get(inst, 'showHours') == true), - showMinutes = (this._get(inst, 'showMinutes') == true), - optionalMinutes = (this._get(inst, 'optionalMinutes') == true), - amPmText = this._get(inst, 'amPmText'), - selectedHours = inst.hours ? inst.hours : 0, - selectedMinutes = inst.minutes ? inst.minutes : 0, - displayHours = selectedHours ? selectedHours : 0, - parsedTime = ''; - - if (showPeriod) { - if (inst.hours == 0) { - displayHours = 12; - } - if (inst.hours < 12) { - period = amPmText[0]; - } - else { - period = amPmText[1]; - if (displayHours > 12) { - displayHours -= 12; - } - } - } - - var h = displayHours.toString(); - if (showLeadingZero && (displayHours < 10)) { h = '0' + h; } - - var m = selectedMinutes.toString(); - if (selectedMinutes < 10) { m = '0' + m; } - - if (showHours) { - parsedTime += h; - } - if (showHours && showMinutes && (!optionalMinutes || m != 0)) { - parsedTime += this._get(inst, 'timeSeparator'); - } - if (showMinutes && (!optionalMinutes || m != 0)) { - parsedTime += m; - } - if (showHours) { - if (period.length > 0) { parsedTime += this._get(inst, 'periodSeparator') + period; } - } - - return parsedTime; - }, - - /* Update any alternate field to synchronise with the main field. */ - _updateAlternate: function(inst, newTime) { - var altField = this._get(inst, 'altField'); - if (altField) { // update alternate field too - $(altField).each(function(i,e) { - $(e).val(newTime); - }); - } - }, - - /* This might look unused but it's called by the $.fn.timepicker function with param getTime */ - /* added v 0.2.3 - gitHub issue #5 - Thanks edanuff */ - _getTimeTimepicker : function(input) { - var inst = this._getInst(input); - return this._getParsedTime(inst); - }, - _getHourTimepicker: function(input) { - var inst = this._getInst(input); - if ( inst == undefined) { return -1; } - return inst.hours; - }, - _getMinuteTimepicker: function(input) { - var inst= this._getInst(input); - if ( inst == undefined) { return -1; } - return inst.minutes; - } - - }); - - - - /* Invoke the timepicker functionality. - @param options string - a command, optionally followed by additional parameters or - Object - settings for attaching new timepicker functionality - @return jQuery object */ - $.fn.timepicker = function (options) { - - /* Initialise the time picker. */ - if (!$.timepicker.initialized) { - $(document).mousedown($.timepicker._checkExternalClick). - find('body').append($.timepicker.tpDiv); - $.timepicker.initialized = true; - } - - - - var otherArgs = Array.prototype.slice.call(arguments, 1); - if (typeof options == 'string' && (options == 'getTime' || options == 'getHour' || options == 'getMinute' )) - return $.timepicker['_' + options + 'Timepicker']. - apply($.timepicker, [this[0]].concat(otherArgs)); - if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') - return $.timepicker['_' + options + 'Timepicker']. - apply($.timepicker, [this[0]].concat(otherArgs)); - return this.each(function () { - typeof options == 'string' ? - $.timepicker['_' + options + 'Timepicker']. - apply($.timepicker, [this].concat(otherArgs)) : - $.timepicker._attachTimepicker(this, options); - }); - }; - - /* jQuery extend now ignores nulls! */ - function extendRemove(target, props) { - $.extend(target, props); - for (var name in props) - if (props[name] == null || props[name] == undefined) - target[name] = props[name]; - return target; - }; - - $.timepicker = new Timepicker(); // singleton instance - $.timepicker.initialized = false; - $.timepicker.uuid = new Date().getTime(); - $.timepicker.version = "0.3.1"; - - // Workaround for #4055 - // Add another global to avoid noConflict issues with inline event handlers - window['TP_jQuery_' + tpuuid] = $; - -})(jQuery); diff --git a/3rdparty/timepicker/releases.txt b/3rdparty/timepicker/releases.txt deleted file mode 100755 index 99ecbafdacb5afd8cde12c74ee115f8ba6ce894b..0000000000000000000000000000000000000000 --- a/3rdparty/timepicker/releases.txt +++ /dev/null @@ -1,115 +0,0 @@ -Release 0.3.0 - 27 March 2012 -Fixed a zIndex problem in jQuery Dialog when the user clicked on the input while the timepicker was still visible. -Added Czech translation, thanks David Spohr -Added Swedish translation, thanks Björn Westlin -Added Dutch translation, thanks Lowie Hulzinga -Prevent showing the timepicker dialog with the button when disabled(Thanks ruhley. ref #38) -Add ui-state-disabled class to button trigger when disabled. -Fixed onClose function on first time passes the hours variable as string (Thanks Zanisimo, ref #39) -Added "refresh" method $('selector').timepicker('refresh'); - -Release 0.2.9 - November 13, 2011 -Fixed the zIndex problem and removed the zIndex option (Thanks everyone who reported the problem) -Fix a bug where repeatedly clicking on hour cells made the timepicker very slow. -Added Italian translation, thanks to Serge Margarita. - -Release 0.2.8 - November 5, 2011 -Updated "defaultTime" to allow for Date object (github issue #26) -Fixed the now and deselect buttons in IE - -Release 0.2.7 - October 19, 2011 -Added option to omit minutes in parsed time when user select 0 for minutes. (Thanks tribalvibes, Github issue #23) -Added support for internationalisation (fr, de and ja, Thanks Bernd Plagge). - -Release 0.2.6 - October 12, 2011 -Fixed a bug when input ID have more then one special char. (Thamks Jacqueline Krijnen) -Fixed a bug when parsing hours only or minutes only time. (Thanks protron, github issue #20) -Added 'Now', 'Deselect' and 'Close' buttons. (Thanks Christian Grobmeier for the close button code, github issue #22) - -Release 0.2.5 - September 13, 2011 -Added support for disable and enable. (Suggested by danielrex, github issue #17) -Added an example for 2 timepicker to behave as a period selector (start time and end time). (Thanks Bill Pellowe) -Renamed the stylesheet to jquery.ui.timepicker.css to be more consistent with jQuery UI file name convention. - -Release 0.2.4 - August 5, 2011 -Fixed the hand cursor in the css file. (Thanks Mike Neumegen) -Added position option to use with the jquery ui position utility. -Added option to display only hours or only minutes. - -Release 0.2.3 - July 11, 2011 -Fix github issue #3 : Bug when hours or minutes choices does not divide by number of rows (thanks wukimus) -Changed default behavior of the defaultTime option, if set to '' and input is empty, there will be no highlighted time in the popup (Thanks Rasmus Schultz) -Fix github issue #4 : Error when generating empty minute cell. (Thanks 123Haynes) -Fix github issue #5 : Add functionality for "getTime" option. (Thanks edanuff) -Added the periodSeparator option. (thanks jrchamp) -Fixed "getTime" for inline timepickers. (thanks Mike Neumegen) -Added "getHour" and "getMinute" to get individual values. - -Release 0.2.2 - June 16, 2011 -Fixed a "console.log" line that I forgot to remove before release 0.2.1 - -Release 0.2.1 - June 12, 2011 -Timepicker does not give the focus back to the input any more after time selection. This is similar to the datepicker behaviour and is more natural to the user because it shows the dialog again when the user click on the input again, as expected. -Added options to customize the hours and minutes ranges and interval for more customization. - -Release 0.2 - May 28, 2011 -So in the previous release I mixed up versions and lost some changes, I guess that's what happen when you drink and code. - -Release 0.1.2 - May 26, 2011 -Fixed a bug with inline timepickers that would append a #timepickr hashtag when selecting hours and minutes. -Fixed z-index problem with IE6 (Thanks Graham Bentley) -Added selection of highlighted text when enter is pressed on the input field (Thanks Glen Chiacchieri) -Adjusted some focus problems, now the input gets the focus back when the used click on hours / minutes. - -Release 0.1.something aka the lost release - around April 11 -Fixed a bug for when input Id had a dot in it, it was getting double escaped when it should not. (Thanks Zdenek Machac) -So in 0.1.1 I created a bug that made timepicker changes the location hash, well now it's fixed. (Thanks Lucas Falk) - -Release 0.1.1 - April 6, 2011 -Changed the cells click and dblclick binding for faster rendering in IE6/7 (Thanks Blair Parsons) -Fixed a class naming bug created in 0.1.0 (Thanks Morlion Peter) - -Release 0.1.0 - March 23, 2011 -Fixed some bugs with release 0.0.9 - -Release 0.0.9 - March 22, 2011 -Added zIndex option (Thanks Frank Enderle) -Added option showPeriodLabels that defines if the AM/PM labels are displayed on the left (Thanks Frank Enderle) -Added showOn ['focus'|'button'|'both'] and button options for alternate trigger method - -Release 0.0.8 - Fev 17, 2011 -Fixed close event not triggered when switching to another input with time picker (thanks Stuart Gregg) - -Release 0.0.7 - Fev 10, 2011 -Added function to set time after initialisation :$('#timepicker').timepicker('setTime',newTime); -Added support for disabled period of time : onHourShow and onMinuteShow (thanks Rene Felgentr�ger) - -Release 0.0.6 - Jan 19, 2011 -Added standard "change" event being triggered on the input when the content changes. (Thanks Rasmus Schultz) -Added support for inline timePicker, attached to div or span -Added altField that receive the parsed time value when selected time changes -Added defaultTime value to use when input field is missing (inline) or input value is empty - if defaultTime is missing, current time is used - -Release 0.0.5 - Jan 18, 2011 -Now updating time picker selected value when manually typing in the text field (thanks Rasmus Schultz) -Fixed : with showPeriod: true and showLeadingZero: true, PM hours did not show leading zeros (thanks Chandler May) -Fixed : with showPeriod: true and showLeadingZero: true, Selecting 12 AM shows as 00 AM in the input field, also parsing 12AM did not work correctly (thanks Rasmus Schultz) - -Release 0.0.4 - jan 10, 2011 -changed showLeadingZero to affect only hours, added showMinutesLeadingZero for minutes display -Removed width:100% for tables in css - -Release 0.0.3 - Jan 8, 2011 -Re-added a display:none on the main div (fix a small empty div visible at the bottom of the page before timepicker is called) (Thanks Gertjan van Roekel) -Fixed a problem where the timepicker was never displayed with jquery ui 1.8.7 css, - the problem was the class ui-helper-hidden-accessible, witch I removed. - Thanks Alexander Fietz and StackOverflow : http://stackoverflow.com/questions/4522274/jquery-timepicker-and-jqueryui-1-8-7-conflict - -Release 0.0.2 - Jan 6, 2011 -Updated to include common display options for USA users -Stephen Commisso - Jan 2011 - -As it is a timepicker, I inspired most of the code from the datepicker -Francois Gelinas - Nov 2010 - diff --git a/README b/README index e11ff7d10cdf1cf09b3f11b16aefa02edef47f96..9b113c4f6742e981d1310f0af731120323009295 100644 --- a/README +++ b/README @@ -4,6 +4,7 @@ A personal cloud which runs on your own server. http://ownCloud.org Installation instructions: http://owncloud.org/support +Contribution Guidelines: http://owncloud.org/dev/contribute/ Source code: https://github.com/owncloud Mailing list: https://mail.kde.org/mailman/listinfo/owncloud @@ -16,4 +17,4 @@ Please submit translations via Transifex: https://www.transifex.com/projects/p/owncloud/ For more detailed information about translations: -http://owncloud.org/dev/translation/ \ No newline at end of file +http://owncloud.org/dev/translation/ diff --git a/apps/files/admin.php b/apps/files/admin.php index 547f2bd7ddba5483693a8198c08fa848749a4edc..80fd4f4e4a595a129b873cf29683a0839c19b757 100644 --- a/apps/files/admin.php +++ b/apps/files/admin.php @@ -35,7 +35,7 @@ $post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size')); $post_max_size_possible = OCP\Util::computerFileSize(get_cfg_var('post_max_size')); $maxUploadFilesize = OCP\Util::humanFileSize(min($upload_max_filesize, $post_max_size)); $maxUploadFilesizePossible = OCP\Util::humanFileSize(min($upload_max_filesize_possible, $post_max_size_possible)); -if($_POST) { +if($_POST && OC_Util::isCallRegistered()) { if(isset($_POST['maxUploadSize'])) { if(($setMaxSize = OC_Files::setUploadLimit(OCP\Util::computerFileSize($_POST['maxUploadSize']))) !== false) { $maxUploadFilesize = OCP\Util::humanFileSize($setMaxSize); @@ -49,7 +49,8 @@ if($_POST) { OCP\Config::setSystemValue('allowZipDownload', isset($_POST['allowZipDownload'])); } } -$maxZipInputSize = OCP\Util::humanFileSize(OCP\Config::getSystemValue('maxZipInputSize', OCP\Util::computerFileSize('800 MB'))); +$maxZipInputSizeDefault = OCP\Util::computerFileSize('800 MB'); +$maxZipInputSize = OCP\Util::humanFileSize(OCP\Config::getSystemValue('maxZipInputSize', $maxZipInputSizeDefault)); $allowZipDownload = intval(OCP\Config::getSystemValue('allowZipDownload', true)); OCP\App::setActiveNavigationEntry( "files_administration" ); @@ -63,4 +64,3 @@ $tmpl->assign( 'maxPossibleUploadSize', $maxUploadFilesizePossible); $tmpl->assign( 'allowZipDownload', $allowZipDownload); $tmpl->assign( 'maxZipInputSize', $maxZipInputSize); return $tmpl->fetchPage(); - diff --git a/apps/files/ajax/autocomplete.php b/apps/files/ajax/autocomplete.php index fae38368a85fc0705871090e49442fc9c8bc0e73..b32ba7c3d5bd620b87571e8b158176bebf283e3e 100644 --- a/apps/files/ajax/autocomplete.php +++ b/apps/files/ajax/autocomplete.php @@ -44,7 +44,7 @@ if(OC_Filesystem::file_exists($base) and OC_Filesystem::is_dir($base)) { if(substr(strtolower($file), 0, $queryLen)==$query) { $item=$base.$file; if((!$dirOnly or OC_Filesystem::is_dir($item))) { - $files[]=(object)array('id'=>$item,'label'=>$item,'name'=>$item); + $files[]=(object)array('id'=>$item, 'label'=>$item, 'name'=>$item); } } } diff --git a/apps/files/ajax/list.php b/apps/files/ajax/list.php index 568fe754c0239139c90afa7046ee83180abccad5..cade7e872b30f3f3f64c921cedd0a3ba0011c4e9 100644 --- a/apps/files/ajax/list.php +++ b/apps/files/ajax/list.php @@ -25,7 +25,7 @@ if($doBreadcrumb) { } $breadcrumbNav = new OCP\Template( "files", "part.breadcrumb", "" ); - $breadcrumbNav->assign( "breadcrumb", $breadcrumb ); + $breadcrumbNav->assign( "breadcrumb", $breadcrumb, false ); $data['breadcrumb'] = $breadcrumbNav->fetchPage(); } diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php index 8b3149ef14e35106294be23c8a8c481266b0d067..5612716b7e4692f50b2c598ed26fef54fae34125 100644 --- a/apps/files/ajax/move.php +++ b/apps/files/ajax/move.php @@ -9,9 +9,14 @@ OCP\JSON::callCheck(); // Get data $dir = stripslashes($_GET["dir"]); $file = stripslashes($_GET["file"]); -$target = stripslashes($_GET["target"]); +$target = stripslashes(rawurldecode($_GET["target"])); +if(OC_Filesystem::file_exists($target . '/' . $file)) { + OCP\JSON::error(array("data" => array( "message" => "Could not move $file - File with this name already exists" ))); + exit; +} + if(OC_Files::move($dir, $file, $target, $file)) { OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); } else { diff --git a/apps/files/ajax/newfile.php b/apps/files/ajax/newfile.php index 77d866979c3cfc61921b77fd66314d03f6aca15f..2bac9bb20ba12829211e7f1d1618157fe4cb40b4 100644 --- a/apps/files/ajax/newfile.php +++ b/apps/files/ajax/newfile.php @@ -9,7 +9,7 @@ if(!OC_User::isLoggedIn()) { session_write_close(); // Get the params -$dir = isset( $_REQUEST['dir'] ) ? trim($_REQUEST['dir'], '/\\') : ''; +$dir = isset( $_REQUEST['dir'] ) ? '/'.trim($_REQUEST['dir'], '/\\') : ''; $filename = isset( $_REQUEST['filename'] ) ? trim($_REQUEST['filename'], '/\\') : ''; $content = isset( $_REQUEST['content'] ) ? $_REQUEST['content'] : ''; $source = isset( $_REQUEST['source'] ) ? trim($_REQUEST['source'], '/\\') : ''; @@ -65,6 +65,7 @@ if($source) { $target=$dir.'/'.$filename; $result=OC_Filesystem::file_put_contents($target, $sourceStream); if($result) { + $target = OC_Filesystem::normalizePath($target); $meta = OC_FileCache::get($target); $mime=$meta['mimetype']; $id = OC_FileCache::getId($target); diff --git a/apps/files/ajax/scan.php b/apps/files/ajax/scan.php index d2ec1ab5161c9f51f525c78aedf66216af815a7c..5cd9572d7f99eb3328cfb53edff52f6d98b9834a 100644 --- a/apps/files/ajax/scan.php +++ b/apps/files/ajax/scan.php @@ -21,7 +21,7 @@ if($force or !OC_FileCache::inCache('')) { OC_Cache::clear('fileid/'); //make sure the old fileid's don't mess things up } - OC_FileCache::scan($dir,$eventSource); + OC_FileCache::scan($dir, $eventSource); OC_FileCache::clean(); OCP\DB::commit(); $eventSource->send('success', true); diff --git a/apps/files/ajax/timezone.php b/apps/files/ajax/timezone.php index b71fa3940cb975e24852d2f2d4d61e0639ba1460..b547d162b3e7bf99b88d29b85137a2b29341da70 100644 --- a/apps/files/ajax/timezone.php +++ b/apps/files/ajax/timezone.php @@ -1,5 +1,2 @@ array( "message" => "No file was uploaded. Unknown error" ))); + OCP\JSON::error(array('data' => array( 'message' => 'No file was uploaded. Unknown error' ))); exit(); } foreach ($_FILES['files']['error'] as $error) { if ($error != 0) { $l=OC_L10N::get('files'); $errors = array( - UPLOAD_ERR_OK=>$l->t("There is no error, the file uploaded with success"), - UPLOAD_ERR_INI_SIZE=>$l->t("The uploaded file exceeds the upload_max_filesize directive in php.ini").ini_get('upload_max_filesize'), - UPLOAD_ERR_FORM_SIZE=>$l->t("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"), - UPLOAD_ERR_PARTIAL=>$l->t("The uploaded file was only partially uploaded"), - UPLOAD_ERR_NO_FILE=>$l->t("No file was uploaded"), - UPLOAD_ERR_NO_TMP_DIR=>$l->t("Missing a temporary folder"), + UPLOAD_ERR_OK=>$l->t('There is no error, the file uploaded with success'), + UPLOAD_ERR_INI_SIZE=>$l->t('The uploaded file exceeds the upload_max_filesize directive in php.ini: ') + .ini_get('upload_max_filesize'), + UPLOAD_ERR_FORM_SIZE=>$l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified' + .' in the HTML form'), + UPLOAD_ERR_PARTIAL=>$l->t('The uploaded file was only partially uploaded'), + UPLOAD_ERR_NO_FILE=>$l->t('No file was uploaded'), + UPLOAD_ERR_NO_TMP_DIR=>$l->t('Missing a temporary folder'), UPLOAD_ERR_CANT_WRITE=>$l->t('Failed to write to disk'), ); - OCP\JSON::error(array("data" => array( "message" => $errors[$error] ))); + OCP\JSON::error(array('data' => array( 'message' => $errors[$error] ))); exit(); } } @@ -38,8 +40,8 @@ $totalSize=0; foreach($files['size'] as $size) { $totalSize+=$size; } -if($totalSize>OC_Filesystem::free_space('/')) { - OCP\JSON::error(array("data" => array( "message" => "Not enough space available" ))); +if($totalSize>OC_Filesystem::free_space($dir)) { + OCP\JSON::error(array('data' => array( 'message' => 'Not enough space available' ))); exit(); } @@ -47,11 +49,17 @@ $result=array(); if(strpos($dir, '..') === false) { $fileCount=count($files['name']); for($i=0;$i<$fileCount;$i++) { - $target = OCP\Files::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]); + $target = OCP\Files::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]); + // $path needs to be normalized - this failed within drag'n'drop upload to a sub-folder + $target = OC_Filesystem::normalizePath($target); if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) { $meta = OC_FileCache::get($target); $id = OC_FileCache::getId($target); - $result[]=array( "status" => "success", 'mime'=>$meta['mimetype'],'size'=>$meta['size'], 'id'=>$id, 'name'=>basename($target)); + $result[]=array( 'status' => 'success', + 'mime'=>$meta['mimetype'], + 'size'=>$meta['size'], + 'id'=>$id, + 'name'=>basename($target)); } } OCP\JSON::encodedPrint($result); @@ -60,4 +68,4 @@ if(strpos($dir, '..') === false) { $error='invalid dir'; } -OCP\JSON::error(array('data' => array('error' => $error, "file" => $fileName))); +OCP\JSON::error(array('data' => array('error' => $error, 'file' => $fileName))); diff --git a/apps/files/appinfo/app.php b/apps/files/appinfo/app.php index db3b213ab8decc01ec530a62d3969c4773e91067..108f02930e2619f0fcfbb662a36ab2ba7a77b27b 100644 --- a/apps/files/appinfo/app.php +++ b/apps/files/appinfo/app.php @@ -1,8 +1,12 @@ "files_index", "order" => 0, "href" => OCP\Util::linkTo( "files", "index.php" ), "icon" => OCP\Util::imagePath( "core", "places/home.svg" ), "name" => $l->t("Files") )); +OCP\App::addNavigationEntry( array( "id" => "files_index", + "order" => 0, + "href" => OCP\Util::linkTo( "files", "index.php" ), + "icon" => OCP\Util::imagePath( "core", "places/home.svg" ), + "name" => $l->t("Files") )); OC_Search::registerProvider('OC_Search_Provider_File'); diff --git a/apps/files/appinfo/filesync.php b/apps/files/appinfo/filesync.php index c1fe444cec7ae44531fa12d53f219dbdd55f4a58..cbed56a6de5bc8494191b0accf637c0d0eec7720 100644 --- a/apps/files/appinfo/filesync.php +++ b/apps/files/appinfo/filesync.php @@ -20,23 +20,23 @@ * The final URL will look like http://.../remote.php/filesync/oc_chunked/path/to/file */ -// only need filesystem apps -$RUNTIME_APPTYPES=array('filesystem','authentication'); +// load needed apps +$RUNTIME_APPTYPES=array('filesystem', 'authentication', 'logging'); OC_App::loadApps($RUNTIME_APPTYPES); if(!OC_User::isLoggedIn()) { - if(!isset($_SERVER['PHP_AUTH_USER'])) { - header('WWW-Authenticate: Basic realm="ownCloud Server"'); - header('HTTP/1.0 401 Unauthorized'); - echo 'Valid credentials must be supplied'; - exit(); - } else { - if(!OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) { - exit(); - } - } + if(!isset($_SERVER['PHP_AUTH_USER'])) { + header('WWW-Authenticate: Basic realm="ownCloud Server"'); + header('HTTP/1.0 401 Unauthorized'); + echo 'Valid credentials must be supplied'; + exit(); + } else { + if(!OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) { + exit(); + } + } } -list($type,$file) = explode('/', substr($path_info,1+strlen($service)+1), 2); +list($type, $file) = explode('/', substr($path_info, 1+strlen($service)+1), 2); if ($type != 'oc_chunked') { OC_Response::setStatus(OC_Response::STATUS_NOT_FOUND); diff --git a/apps/files/appinfo/remote.php b/apps/files/appinfo/remote.php index a84216b61b786c6c5fd6e42914f4c3e183449667..1713bcc22ce97302f510aef1dea5f13d42674b1d 100644 --- a/apps/files/appinfo/remote.php +++ b/apps/files/appinfo/remote.php @@ -22,10 +22,13 @@ * License along with this library. If not, see . * */ -// only need filesystem apps -$RUNTIME_APPTYPES=array('filesystem','authentication'); +// load needed apps +$RUNTIME_APPTYPES=array('filesystem', 'authentication', 'logging'); + OC_App::loadApps($RUNTIME_APPTYPES); +OC_Util::obEnd(); + // Backends $authBackend = new OC_Connector_Sabre_Auth(); $lockBackend = new OC_Connector_Sabre_Locks(); @@ -38,9 +41,10 @@ $server = new Sabre_DAV_Server($publicDir); $server->setBaseUri($baseuri); // Load plugins -$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud')); +$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload +$server->addPlugin(new OC_Connector_Sabre_QuotaPlugin()); // And off we go! $server->exec(); diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php new file mode 100644 index 0000000000000000000000000000000000000000..043782a9c04c5cdb5cb9958b0b848ba6f8994f93 --- /dev/null +++ b/apps/files/appinfo/routes.php @@ -0,0 +1,11 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +$this->create('download', 'download{file}') + ->requirements(array('file' => '.*')) + ->actionInclude('files/download.php'); \ No newline at end of file diff --git a/apps/files/appinfo/update.php b/apps/files/appinfo/update.php index bcbbc6035faa2123c4e6ae58f278754be91bccdd..3503678e7c7cef022039abc69d772666321e15fb 100644 --- a/apps/files/appinfo/update.php +++ b/apps/files/appinfo/update.php @@ -3,12 +3,15 @@ // fix webdav properties,add namespace in front of the property, update for OC4.5 $installedVersion=OCP\Config::getAppValue('files', 'installed_version'); if (version_compare($installedVersion, '1.1.6', '<')) { - $query = OC_DB::prepare( "SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`" ); + $query = OC_DB::prepare( 'SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`' ); $result = $query->execute(); - while( $row = $result->fetchRow()){ - if ( $row["propertyname"][0] != '{' ) { - $query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyname` = ? WHERE `userid` = ? AND `propertypath` = ?' ); - $query->execute( array( '{DAV:}' + $row["propertyname"], $row["userid"], $row["propertypath"] )); + $updateQuery = OC_DB::prepare('UPDATE `*PREFIX*properties`' + .' SET `propertyname` = ?' + .' WHERE `userid` = ?' + .' AND `propertypath` = ?'); + while( $row = $result->fetchRow()) { + if ( $row['propertyname'][0] != '{' ) { + $updateQuery->execute(array('{DAV:}' + $row['propertyname'], $row['userid'], $row['propertypath'])); } } } @@ -36,10 +39,11 @@ foreach($filesToRemove as $file) { if(!file_exists($filepath)) { continue; } - $success = OCP\Files::rmdirr($filepath); - if($success === false) { + $success = OCP\Files::rmdirr($filepath); + if($success === false) { //probably not sufficient privileges, give up and give a message. - OCP\Util::writeLog('files','Could not clean /files/ directory. Please remove everything except webdav.php from ' . OC::$SERVERROOT . '/files/', OCP\Util::ERROR); + OCP\Util::writeLog('files', 'Could not clean /files/ directory.' + .' Please remove everything except webdav.php from ' . OC::$SERVERROOT . '/files/', OCP\Util::ERROR); break; - } + } } diff --git a/apps/files/css/files.css b/apps/files/css/files.css index f15cd514241831ae16c6821e07ae0019c5f513a8..0b886fc3fa9213b7dd8c5069235cecb30b44ebda 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -10,18 +10,18 @@ .file_upload_form, #file_newfolder_form { display:inline; float: left; margin-left:0; } #fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; } .file_upload_wrapper, #file_newfolder_name { background-repeat:no-repeat; background-position:.5em .5em; padding-left:2em; } -.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:block; float:left; padding-left:0; overflow:hidden; position:relative; margin:0;} +.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:block; float:left; padding-left:0; overflow:hidden; position:relative; margin:0; margin-left:2px; } .file_upload_wrapper .file_upload_button_wrapper { position:absolute; top:0; left:0; width:100%; height:100%; cursor:pointer; z-index:1000; } -#new { background-color:#5bb75b; float:left; border-top-right-radius:0; border-bottom-right-radius:0; margin:0 0 0 1em; border-right:none; z-index:1010; height:1.3em; } +#new { background-color:#5bb75b; float:left; margin:0 0 0 1em; border-right:none; z-index:1010; height:1.3em; } #new:hover, a.file_upload_button_wrapper:hover + button.file_upload_filename { background-color:#4b964b; } -#new.active { border-bottom-left-radius:0; border-bottom:none; } +#new.active { border-bottom-left-radius:0; border-bottom-right-radius:0; border-bottom:none; } #new>a { padding:.5em 1.2em .3em; color:#fff; text-shadow:0 1px 0 #51a351; } #new>ul { display:none; position:fixed; text-align:left; padding:.5em; background:#f8f8f8; margin-top:0.075em; border:1px solid #ddd; min-width:7em; margin-left:-.5em; z-index:-1; } #new>ul>li { margin:.3em; padding-left:2em; background-repeat:no-repeat; cursor:pointer; padding-bottom:0.1em } #new>ul>li>p { cursor:pointer; } #new>ul>li>input { padding:0.3em; margin:-0.3em; } #new, .file_upload_filename { border:1px solid; border-color:#51a351 #419341 #387038; -moz-box-shadow:0 1px 1px #f8f8f8, 1px 1px 1px #ada inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 1px 1px 1px #ada inset; box-shadow:0 1px 1px #f8f8f8, 1px 1px 1px #ada inset; } -#new .popup { border-top-left-radius:0; } +#new .popup { border-top-left-radius:0; z-index:10; } #file_newfolder_name { background-image:url('%webroot%/core/img/places/folder.svg'); font-weight:normal; width:7em; } .file_upload_start, .file_upload_filename { font-size:1em; } @@ -29,8 +29,7 @@ .file_upload_target { display:none; } .file_upload_start { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; z-index:1; position:absolute; left:0; top:0; width:100%; cursor:pointer;} -.file_upload_filename.active { border-bottom-right-radius:0 } -.file_upload_filename { background-color:#5bb75b; z-index:100; cursor:pointer; border-top-left-radius:0; border-bottom-left-radius:0; background-image: url('%webroot%/core/img/actions/upload-white.svg'); background-repeat: no-repeat; background-position: center; height: 2.29em; width: 2.5em; } +.file_upload_filename { background-color:#5bb75b; z-index:100; cursor:pointer; background-image: url('%webroot%/core/img/actions/upload-white.svg'); background-repeat: no-repeat; background-position: center; height: 2.29em; width: 2.5em; } #upload { position:absolute; right:13.5em; top:0em; } #upload #uploadprogressbar { position:relative; display:inline-block; width:10em; height:1.5em; top:.4em; } @@ -58,13 +57,13 @@ table th#headerDate, table td.date { width:11em; padding:0 .1em 0 1em; text-alig table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; } table td.filename a.name { display:block; height:1.5em; vertical-align:middle; margin-left:3em; } table tr[data-type="dir"] td.filename a.name span.nametext {font-weight:bold; } -table td.filename a.name input, table td.filename a.name form { width:100%; cursor:text; } +table td.filename input.filename { width:100%; cursor:text; } table td.filename a, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:.2em .5em .5em 0; } table td.filename .nametext, .uploadtext, .modified { float:left; padding:.3em 0; } // TODO fix usability bug (accidental file/folder selection) table td.filename .nametext { width:40em; overflow:hidden; text-overflow:ellipsis; } table td.filename .uploadtext { font-weight:normal; margin-left:.5em; } -table td.filename form { float:left; font-size:.85em; } +table td.filename form { font-size:.85em; margin-left:3em; margin-right:3em; } table thead.fixed tr{ position:fixed; top:6.5em; z-index:49; -moz-box-shadow:0 -3px 7px #ddd; -webkit-box-shadow:0 -3px 7px #ddd; box-shadow:0 -3px 7px #ddd; } table thead.fixed { height:2em; } #fileList tr td.filename>input[type=checkbox]:first-child { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; float:left; margin:.7em 0 0 1em; /* bigger clickable area doesn’t work in FF width:2.8em; height:2.4em;*/ -webkit-transition:opacity 200ms; -moz-transition:opacity 200ms; -o-transition:opacity 200ms; transition:opacity 200ms; } @@ -89,4 +88,3 @@ a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; } #scanning-message{ top:40%; left:40%; position:absolute; display:none; } div.crumb a{ padding: 0.9em 0 0.7em 0; } - diff --git a/apps/files/download.php b/apps/files/download.php index ff6aefbbe0fd029ba8143c0ba67dcd36246555d5..6475afb56e07636c395d42ad9769421779036fcd 100644 --- a/apps/files/download.php +++ b/apps/files/download.php @@ -32,7 +32,7 @@ $filename = $_GET["file"]; if(!OC_Filesystem::file_exists($filename)) { header("HTTP/1.0 404 Not Found"); $tmpl = new OCP\Template( '', '404', 'guest' ); - $tmpl->assign('file',$filename); + $tmpl->assign('file', $filename); $tmpl->printPage(); exit; } @@ -44,5 +44,5 @@ header('Content-Disposition: attachment; filename="'.basename($filename).'"'); OCP\Response::disableCaching(); header('Content-Length: '.OC_Filesystem::filesize($filename)); -@ob_end_clean(); +OC_Util::obEnd(); OC_Filesystem::readfile( $filename ); diff --git a/apps/files/index.php b/apps/files/index.php index 493087d26f1155eaaab65869d2c94f7ff1520867..5e644a2a3bb9a5f48c3b93364563bdbef0c1cca3 100644 --- a/apps/files/index.php +++ b/apps/files/index.php @@ -67,7 +67,7 @@ $breadcrumb = array(); $pathtohere = ''; foreach( explode( '/', $dir ) as $i ) { if( $i != '' ) { - $pathtohere .= '/'.str_replace('+','%20', urlencode($i)); + $pathtohere .= '/'.$i; $breadcrumb[] = array( 'dir' => $pathtohere, 'name' => $i ); } } @@ -75,29 +75,29 @@ foreach( explode( '/', $dir ) as $i ) { // make breadcrumb und filelist markup $list = new OCP\Template( 'files', 'part.list', '' ); $list->assign( 'files', $files, false ); -$list->assign( 'baseURL', OCP\Util::linkTo('files', 'index.php').'&dir=', false); +$list->assign( 'baseURL', OCP\Util::linkTo('files', 'index.php').'?dir=', false); $list->assign( 'downloadURL', OCP\Util::linkTo('files', 'download.php').'?file=', false); $breadcrumbNav = new OCP\Template( 'files', 'part.breadcrumb', '' ); $breadcrumbNav->assign( 'breadcrumb', $breadcrumb, false ); -$breadcrumbNav->assign( 'baseURL', OCP\Util::linkTo('files', 'index.php').'&dir=', false); +$breadcrumbNav->assign( 'baseURL', OCP\Util::linkTo('files', 'index.php').'?dir=', false); $upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize')); $post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size')); $maxUploadFilesize = min($upload_max_filesize, $post_max_size); -$freeSpace=OC_Filesystem::free_space('/'); -$freeSpace=max($freeSpace,0); -$maxUploadFilesize = min($maxUploadFilesize ,$freeSpace); +$freeSpace=OC_Filesystem::free_space($dir); +$freeSpace=max($freeSpace, 0); +$maxUploadFilesize = min($maxUploadFilesize, $freeSpace); -$permissions = OCP\Share::PERMISSION_READ; +$permissions = OCP\PERMISSION_READ; if (OC_Filesystem::isUpdatable($dir.'/')) { - $permissions |= OCP\Share::PERMISSION_UPDATE; + $permissions |= OCP\PERMISSION_UPDATE; } if (OC_Filesystem::isDeletable($dir.'/')) { - $permissions |= OCP\Share::PERMISSION_DELETE; + $permissions |= OCP\PERMISSION_DELETE; } if (OC_Filesystem::isSharable($dir.'/')) { - $permissions |= OCP\Share::PERMISSION_SHARE; + $permissions |= OCP\PERMISSION_SHARE; } $tmpl = new OCP\Template( 'files', 'index', 'user' ); diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index e184cbfa9153a041a055aa6fa492744988e35c37..80b9c01f83887176e554ebb72ef29513a88ede99 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -1,191 +1,192 @@ -var FileActions={ - actions:{}, - defaults:{}, - icons:{}, - currentFile:null, - register:function(mime,name,permissions,icon,action){ - if(!FileActions.actions[mime]){ - FileActions.actions[mime]={}; +var FileActions = { + actions: {}, + defaults: {}, + icons: {}, + currentFile: null, + register: function (mime, name, permissions, icon, action) { + if (!FileActions.actions[mime]) { + FileActions.actions[mime] = {}; } if (!FileActions.actions[mime][name]) { FileActions.actions[mime][name] = {}; } FileActions.actions[mime][name]['action'] = action; FileActions.actions[mime][name]['permissions'] = permissions; - FileActions.icons[name]=icon; + FileActions.icons[name] = icon; }, - setDefault:function(mime,name){ - FileActions.defaults[mime]=name; + setDefault: function (mime, name) { + FileActions.defaults[mime] = name; }, - get:function(mime,type,permissions){ - var actions={}; - if(FileActions.actions.all){ - actions=$.extend( actions, FileActions.actions.all ); + get: function (mime, type, permissions) { + var actions = {}; + if (FileActions.actions.all) { + actions = $.extend(actions, FileActions.actions.all); } - if(mime){ - if(FileActions.actions[mime]){ - actions=$.extend( actions, FileActions.actions[mime] ); + if (mime) { + if (FileActions.actions[mime]) { + actions = $.extend(actions, FileActions.actions[mime]); } - var mimePart=mime.substr(0,mime.indexOf('/')); - if(FileActions.actions[mimePart]){ - actions=$.extend( actions, FileActions.actions[mimePart] ); + var mimePart = mime.substr(0, mime.indexOf('/')); + if (FileActions.actions[mimePart]) { + actions = $.extend(actions, FileActions.actions[mimePart]); } } - if(type){//type is 'dir' or 'file' - if(FileActions.actions[type]){ - actions=$.extend( actions, FileActions.actions[type] ); + if (type) {//type is 'dir' or 'file' + if (FileActions.actions[type]) { + actions = $.extend(actions, FileActions.actions[type]); } } var filteredActions = {}; - $.each(actions, function(name, action) { + $.each(actions, function (name, action) { if (action.permissions & permissions) { filteredActions[name] = action.action; } }); return filteredActions; }, - getDefault:function(mime,type,permissions){ - if(mime){ - var mimePart=mime.substr(0,mime.indexOf('/')); + getDefault: function (mime, type, permissions) { + if (mime) { + var mimePart = mime.substr(0, mime.indexOf('/')); } - var name=false; - if(mime && FileActions.defaults[mime]){ - name=FileActions.defaults[mime]; - }else if(mime && FileActions.defaults[mimePart]){ - name=FileActions.defaults[mimePart]; - }else if(type && FileActions.defaults[type]){ - name=FileActions.defaults[type]; - }else{ - name=FileActions.defaults.all; + var name = false; + if (mime && FileActions.defaults[mime]) { + name = FileActions.defaults[mime]; + } else if (mime && FileActions.defaults[mimePart]) { + name = FileActions.defaults[mimePart]; + } else if (type && FileActions.defaults[type]) { + name = FileActions.defaults[type]; + } else { + name = FileActions.defaults.all; } - var actions=this.get(mime,type,permissions); + var actions = this.get(mime, type, permissions); return actions[name]; }, - display:function(parent){ - FileActions.currentFile=parent; - $('#fileList span.fileactions, #fileList td.date a.action').remove(); - var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType(), FileActions.getCurrentPermissions()); - var file=FileActions.getCurrentFile(); - if($('tr').filterAttr('data-file',file).data('renaming')){ + display: function (parent) { + FileActions.currentFile = parent; + var actions = FileActions.get(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions()); + var file = FileActions.getCurrentFile(); + if ($('tr').filterAttr('data-file', file).data('renaming')) { return; } parent.children('a.name').append(''); - var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType(), FileActions.getCurrentPermissions()); - for(name in actions){ + var defaultAction = FileActions.getDefault(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions()); + + var actionHandler = function (event) { + event.stopPropagation(); + event.preventDefault(); + + FileActions.currentFile = event.data.elem; + var file = FileActions.getCurrentFile(); + + event.data.actionFunc(file); + }; + + $.each(actions, function (name, action) { // NOTE: Temporary fix to prevent rename action in root of Shared directory - if (name == 'Rename' && $('#dir').val() == '/Shared') { - continue; + if (name === 'Rename' && $('#dir').val() === '/Shared') { + return true; } - if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){ - var img=FileActions.icons[name]; - if(img.call){ - img=img(file); + + if ((name === 'Download' || action !== defaultAction) && name !== 'Delete') { + var img = FileActions.icons[name]; + if (img.call) { + img = img(file); + } + var html = ''; + if (img) { + html += ' '; } - var html=''; - var element=$(html); - element.data('action',name); - element.click(function(event){ - event.stopPropagation(); - event.preventDefault(); - var action=actions[$(this).data('action')]; - var currentFile=FileActions.getCurrentFile(); - FileActions.hide(); - action(currentFile); - }); - element.hide(); + html += t('files', name) + ''; + + var element = $(html); + element.data('action', name); + //alert(element); + element.on('click',{a:null, elem:parent, actionFunc:actions[name]},actionHandler); parent.find('a.name>span.fileactions').append(element); } - } - if(actions['Delete']){ - var img=FileActions.icons['Delete']; - if(img.call){ - img=img(file); + + }); + + if (actions['Delete']) { + var img = FileActions.icons['Delete']; + if (img.call) { + img = img(file); } // NOTE: Temporary fix to allow unsharing of files in root of Shared folder if ($('#dir').val() == '/Shared') { - var html = ''; } else { - var html=''; } - var element=$(html); - if(img){ - element.append($('')); + var element = $(html); + if (img) { + element.append($('')); } - element.data('action','Delete'); - element.click(function(event){ - event.stopPropagation(); - event.preventDefault(); - var action=actions[$(this).data('action')]; - var currentFile=FileActions.getCurrentFile(); - FileActions.hide(); - action(currentFile); - }); - element.hide(); + element.data('action', actions['Delete']); + element.on('click',{a:null, elem:parent, actionFunc:actions['Delete']},actionHandler); parent.parent().children().last().append(element); } - $('#fileList .action').css('-o-transition-property','none');//temporarly disable - $('#fileList .action').fadeIn(200,function(){ - $('#fileList .action').css('-o-transition-property','opacity'); - }); - return false; }, - hide:function(){ - $('#fileList span.fileactions, #fileList td.date a.action').fadeOut(200,function(){ - $(this).remove(); - }); - }, - getCurrentFile:function(){ + getCurrentFile: function () { return FileActions.currentFile.parent().attr('data-file'); }, - getCurrentMimeType:function(){ + getCurrentMimeType: function () { return FileActions.currentFile.parent().attr('data-mime'); }, - getCurrentType:function(){ + getCurrentType: function () { return FileActions.currentFile.parent().attr('data-type'); }, - getCurrentPermissions:function() { + getCurrentPermissions: function () { return FileActions.currentFile.parent().data('permissions'); } }; -$(document).ready(function(){ - if($('#allowZipDownload').val() == 1){ +$(document).ready(function () { + if ($('#allowZipDownload').val() == 1) { var downloadScope = 'all'; } else { var downloadScope = 'file'; } - FileActions.register(downloadScope,'Download', OC.PERMISSION_READ, function(){return OC.imagePath('core','actions/download');},function(filename){ - window.location=OC.filePath('files', 'ajax', 'download.php') + '&files='+encodeURIComponent(filename)+'&dir='+encodeURIComponent($('#dir').val()); + FileActions.register(downloadScope, 'Download', OC.PERMISSION_READ, function () { + return OC.imagePath('core', 'actions/download'); + }, function (filename) { + window.location = OC.filePath('files', 'ajax', 'download.php') + '?files=' + encodeURIComponent(filename) + '&dir=' + encodeURIComponent($('#dir').val()); + }); + + $('#fileList tr').each(function(){ + FileActions.display($(this).children('td.filename')); }); }); -FileActions.register('all','Delete', OC.PERMISSION_DELETE, function(){return OC.imagePath('core','actions/delete');},function(filename){ - if(Files.cancelUpload(filename)) { - if(filename.substr){ - filename=[filename]; +FileActions.register('all', 'Delete', OC.PERMISSION_DELETE, function () { + return OC.imagePath('core', 'actions/delete'); +}, function (filename) { + if (Files.cancelUpload(filename)) { + if (filename.substr) { + filename = [filename]; } - $.each(filename,function(index,file){ - var filename = $('tr').filterAttr('data-file',file); + $.each(filename, function (index, file) { + var filename = $('tr').filterAttr('data-file', file); filename.hide(); filename.find('input[type="checkbox"]').removeAttr('checked'); filename.removeClass('selected'); }); procesSelection(); - }else{ + } else { FileList.do_delete(filename); } $('.tipsy').remove(); }); // t('files', 'Rename') -FileActions.register('all','Rename', OC.PERMISSION_UPDATE, function(){return OC.imagePath('core','actions/rename');},function(filename){ +FileActions.register('all', 'Rename', OC.PERMISSION_UPDATE, function () { + return OC.imagePath('core', 'actions/rename'); +}, function (filename) { FileList.rename(filename); }); -FileActions.register('dir','Open', OC.PERMISSION_READ, '', function(filename){ - window.location=OC.linkTo('files', 'index.php') + '&dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename); +FileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename) { + window.location = OC.linkTo('files', 'index.php') + '?dir=' + encodeURIComponent($('#dir').val()).replace(/%2F/g, '/') + '/' + encodeURIComponent(filename); }); -FileActions.setDefault('dir','Open'); +FileActions.setDefault('dir', 'Open'); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 100a236872242e88d8db3f31a5ef9e306838088e..5674206632b2daf1bf86cab8d2184b662cb9eb31 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -32,21 +32,23 @@ var FileList={ html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; html+=''; FileList.insertElement(name,'file',$(html).attr('data-file',name)); + var row = $('tr').filterAttr('data-file',name); if(loading){ - $('tr').filterAttr('data-file',name).data('loading',true); + row.data('loading',true); }else{ - $('tr').filterAttr('data-file',name).find('td.filename').draggable(dragOptions); + row.find('td.filename').draggable(dragOptions); } if (hidden) { - $('tr').filterAttr('data-file', name).hide(); + row.hide(); } + FileActions.display(row.find('td.filename')); }, addDir:function(name,size,lastModified,hidden){ var html, td, link_elem, sizeColor, lastModifiedTime, modifiedColor; html = $('').attr({ "data-type": "dir", "data-size": size, "data-file": name, "data-permissions": $('#permissions').val()}); td = $('').attr({"class": "filename", "style": 'background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')' }); td.append(''); - link_elem = $('').attr({ "class": "name", "href": OC.linkTo('files', 'index.php')+"&dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/') }); + link_elem = $('').attr({ "class": "name", "href": OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/') }); link_elem.append($('').addClass('nametext').text(name)); link_elem.append($('').attr({'class': 'uploadtext', 'currentUploads': 0})); td.append(link_elem); @@ -66,11 +68,13 @@ var FileList={ td.append($('').attr({ "class": "modified", "title": formatDate(lastModified), "style": 'color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')' }).text( relative_modified_date(lastModified.getTime() / 1000) )); html.append(td); FileList.insertElement(name,'dir',html); - $('tr').filterAttr('data-file',name).find('td.filename').draggable(dragOptions); - $('tr').filterAttr('data-file',name).find('td.filename').droppable(folderDropOptions); + var row = $('tr').filterAttr('data-file',name); + row.find('td.filename').draggable(dragOptions); + row.find('td.filename').droppable(folderDropOptions); if (hidden) { - $('tr').filterAttr('data-file', name).hide(); + row.hide(); } + FileActions.display(row.find('td.filename')); }, refresh:function(data) { var result = jQuery.parseJSON(data.responseText); @@ -137,30 +141,33 @@ var FileList={ tr=$('tr').filterAttr('data-file',name); tr.data('renaming',true); td=tr.children('td.filename'); - input=$('').val(name); + input=$('').val(name); form=$(''); form.append(input); - td.children('a.name').text(''); - td.children('a.name').append(form); + td.children('a.name').hide(); + td.append(form); input.focus(); form.submit(function(event){ event.stopPropagation(); event.preventDefault(); var newname=input.val(); + if (Files.containsInvalidCharacters(newname)) { + return false; + } if (newname != name) { if (FileList.checkName(name, newname, false)) { newname = name; - } else { + } else { $.get(OC.filePath('files','ajax','rename.php'), { dir : $('#dir').val(), newname: newname, file: name },function(result) { if (!result || result.status == 'error') { OC.dialogs.alert(result.data.message, 'Error moving file'); newname = name; } - tr.data('renaming',false); }); - + } } + tr.data('renaming',false); tr.attr('data-file', newname); var path = td.children('a.name').attr('href'); td.children('a.name').attr('href', path.replace(encodeURIComponent(name), encodeURIComponent(newname))); @@ -169,13 +176,15 @@ var FileList={ } else { var basename=newname; } - td.children('a.name').empty(); - var span=$(''); - span.text(basename); - td.children('a.name').append(span); + td.find('a.name span.nametext').text(basename); if (newname.indexOf('.') > 0 && tr.data('type') != 'dir') { - span.append($(''+newname.substr(newname.lastIndexOf('.'))+'')); + if (td.find('a.name span.extension').length == 0 ) { + td.find('a.name span.nametext').append(''); + } + td.find('a.name span.extension').text(newname.substr(newname.lastIndexOf('.'))); } + form.remove(); + td.children('a.name').show(); return false; }); input.click(function(event){ @@ -189,9 +198,9 @@ var FileList={ checkName:function(oldName, newName, isNewFile) { if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) { if (isNewFile) { - $('#notification').html(escapeHTML(newName)+' '+t('files', 'already exists')+''+t('files', 'replace')+''+t('files', 'suggest name')+''+t('files', 'cancel')+''); + $('#notification').html(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+''+t('files', 'replace')+''+t('files', 'suggest name')+''+t('files', 'cancel')+''); } else { - $('#notification').html(escapeHTML(newName)+' '+t('files', 'already exists')+''+t('files', 'replace')+''+t('files', 'cancel')+''); + $('#notification').html(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+''+t('files', 'replace')+''+t('files', 'cancel')+''); } $('#notification').data('oldName', oldName); $('#notification').data('newName', newName); @@ -238,9 +247,9 @@ var FileList={ FileList.finishReplace(); }; if (isNewFile) { - $('#notification').html(t('files', 'replaced')+' '+newName+''+t('files', 'undo')+''); + $('#notification').html(t('files', 'replaced {new_name}', {new_name: newName})+''+t('files', 'undo')+''); } else { - $('#notification').html(t('files', 'replaced')+' '+newName+' '+t('files', 'with')+' '+oldName+''+t('files', 'undo')+''); + $('#notification').html(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+''+t('files', 'undo')+''); } $('#notification').fadeIn(); }, @@ -264,17 +273,17 @@ var FileList={ if (FileList.lastAction) { FileList.lastAction(); } - + FileList.prepareDeletion(files); - + if (!FileList.useUndo) { FileList.lastAction(); } else { // NOTE: Temporary fix to change the text to unshared for files in root of Shared folder if ($('#dir').val() == '/Shared') { - $('#notification').html(t('files', 'unshared')+' '+ escapeHTML(files) +''+t('files', 'undo')+''); + $('#notification').html(t('files', 'unshared {files}', {'files': escapeHTML(files)})+''+t('files', 'undo')+''); } else { - $('#notification').html(t('files', 'deleted')+' '+ escapeHTML(files)+''+t('files', 'undo')+''); + $('#notification').html(t('files', 'deleted {files}', {'files': escapeHTML(files)})+''+t('files', 'undo')+''); } $('#notification').fadeIn(); } @@ -373,4 +382,7 @@ $(document).ready(function(){ FileList.lastAction(); } }); + $(window).unload(function (){ + $(window).trigger('beforeunload'); + }); }); diff --git a/apps/files/js/files.js b/apps/files/js/files.js index c5333f2fafb16d9a0b058a9f19d3faebe40c0b35..d29732f9b3fc2c337aaf4b62db20106a7c327f37 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -25,6 +25,18 @@ Files={ delete uploadingFiles[index]; }); procesSelection(); + }, + containsInvalidCharacters:function (name) { + var invalid_characters = ['\\', '/', '<', '>', ':', '"', '|', '?', '*']; + for (var i = 0; i < invalid_characters.length; i++) { + if (name.indexOf(invalid_characters[i]) != -1) { + $('#notification').text(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed.")); + $('#notification').fadeIn(); + return true; + } + } + $('#notification').fadeOut(); + return false; } }; $(document).ready(function() { @@ -62,14 +74,6 @@ $(document).ready(function() { return false; }); - // Sets the file-action buttons behaviour : - $('tr').live('mouseenter',function(event) { - FileActions.display($(this).children('td.filename')); - }); - $('tr').live('mouseleave',function(event) { - FileActions.hide(); - }); - var lastChecked; // Sets the file link behaviour : @@ -199,7 +203,7 @@ $(document).ready(function() { $(document).bind('drop dragover', function (e) { e.preventDefault(); // prevent browser from doing anything, if file isn't dropped in dropZone }); - + if ( document.getElementById("data-upload-form") ) { $(function() { $('.file_upload_start').fileupload({ @@ -209,7 +213,7 @@ $(document).ready(function() { var totalSize=0; if(files){ for(var i=0;i0){ @@ -262,7 +274,7 @@ $(document).ready(function() { uploadtext.text(t('files', '1 file uploading')); uploadtext.show(); } else { - uploadtext.text(currentUploads + ' ' + t('files', 'files uploading')); + uploadtext.text(t('files', '{count} files uploading', {count: currentUploads})); } } } @@ -282,11 +294,14 @@ $(document).ready(function() { var fileName = files[i].name var dropTarget = $(e.originalEvent.target).closest('tr'); if(dropTarget && dropTarget.attr('data-type') === 'dir') { // drag&drop upload to folder - var dirName = dropTarget.attr('data-file'); + var dirName = dropTarget.attr('data-file') var jqXHR = $('.file_upload_start').fileupload('send', {files: files[i], formData: function(form) { var formArray = form.serializeArray(); - formArray[1]['value'] = dirName; + // array index 0 contains the max files size + // array index 1 contains the request token + // array index 2 contains the directory + formArray[2]['value'] = dirName; return formArray; }}).success(function(result, textStatus, jqXHR) { var response; @@ -296,7 +311,13 @@ $(document).ready(function() { $('#notification').fadeIn(); } var file=response[0]; + // TODO: this doesn't work if the file name has been changed server side delete uploadingFiles[dirName][file.name]; + if ($.assocArraySize(uploadingFiles[dirName]) == 0) { + delete uploadingFiles[dirName]; + } + + var uploadtext = $('tr').filterAttr('data-type', 'dir').filterAttr('data-file', dirName).find('.uploadtext') var currentUploads = parseInt(uploadtext.attr('currentUploads')); currentUploads -= 1; uploadtext.attr('currentUploads', currentUploads); @@ -307,7 +328,7 @@ $(document).ready(function() { uploadtext.text(''); uploadtext.hide(); } else { - uploadtext.text(currentUploads + ' ' + t('files', 'files uploading')); + uploadtext.text(t('files', '{count} files uploading', {count: currentUploads})); } }) .error(function(jqXHR, textStatus, errorThrown) { @@ -322,7 +343,7 @@ $(document).ready(function() { uploadtext.text(''); uploadtext.hide(); } else { - uploadtext.text(currentUploads + ' ' + t('files', 'files uploading')); + uploadtext.text(t('files', '{count} files uploading', {count: currentUploads})); } $('#notification').hide(); $('#notification').text(t('files', 'Upload cancelled.')); @@ -496,8 +517,10 @@ $(document).ready(function() { $(this).append(input); input.focus(); input.change(function(){ - if(type != 'web' && $(this).val().indexOf('/')!=-1){ - $('#notification').text(t('files','Invalid name, \'/\' is not allowed.')); + if (type != 'web' && Files.containsInvalidCharacters($(this).val())) { + return; + } else if( type == 'folder' && $('#dir').val() == '/' && $(this).val() == 'Shared') { + $('#notification').text(t('files','Invalid folder name. Usage of "Shared" is reserved by Owncloud')); $('#notification').fadeIn(); return; } @@ -678,7 +701,7 @@ function scanFiles(force,dir){ var scannerEventSource=new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force,dir:dir}); scanFiles.cancel=scannerEventSource.close.bind(scannerEventSource); scannerEventSource.listen('scanning',function(data){ - $('#scan-count').text(data.count + ' ' + t('files', 'files scanned')); + $('#scan-count').text(t('files', '{count} files scanned', {count: data.count})); $('#scan-current').text(data.file+'/'); }); scannerEventSource.listen('success',function(success){ @@ -707,7 +730,7 @@ function updateBreadcrumb(breadcrumbHtml) { //options for file drag/dropp var dragOptions={ - distance: 20, revert: 'invalid', opacity: 0.7, + distance: 20, revert: 'invalid', opacity: 0.7, helper: 'clone', stop: function(event, ui) { $('#fileList tr td.filename').addClass('ui-draggable'); } @@ -730,7 +753,7 @@ var folderDropOptions={ } var crumbDropOptions={ drop: function( event, ui ) { - var file=ui.draggable.text().trim(); + var file=ui.draggable.parent().data('file'); var target=$(this).data('dir'); var dir=$('#dir').val(); while(dir.substr(0,1)=='/'){//remove extra leading /'s @@ -788,9 +811,9 @@ function procesSelection(){ var selection=''; if(selectedFolders.length>0){ if(selectedFolders.length==1){ - selection+='1 '+t('files','folder'); + selection+=t('files','1 folder'); }else{ - selection+=selectedFolders.length+' '+t('files','folders'); + selection+=t('files','{count} folders',{count: selectedFolders.length}); } if(selectedFiles.length>0){ selection+=' & '; @@ -798,9 +821,9 @@ function procesSelection(){ } if(selectedFiles.length>0){ if(selectedFiles.length==1){ - selection+='1 '+t('files','file'); + selection+=t('files','1 file'); }else{ - selection+=selectedFiles.length+' '+t('files','files'); + selection+=t('files','{count} files',{count: selectedFiles.length}); } } $('#headerName>span.name').text(selection); @@ -826,7 +849,7 @@ function getSelectedFiles(property){ name:$(element).attr('data-file'), mime:$(element).data('mime'), type:$(element).data('type'), - size:$(element).data('size'), + size:$(element).data('size') }; if(property){ files.push(file[property]); @@ -837,33 +860,11 @@ function getSelectedFiles(property){ return files; } -function relative_modified_date(timestamp) { - var timediff = Math.round((new Date()).getTime() / 1000) - timestamp; - var diffminutes = Math.round(timediff/60); - var diffhours = Math.round(diffminutes/60); - var diffdays = Math.round(diffhours/24); - var diffmonths = Math.round(diffdays/31); - var diffyears = Math.round(diffdays/365); - if(timediff < 60) { return t('files','seconds ago'); } - else if(timediff < 120) { return '1 '+t('files','minute ago'); } - else if(timediff < 3600) { return diffminutes+' '+t('files','minutes ago'); } - //else if($timediff < 7200) { return '1 hour ago'; } - //else if($timediff < 86400) { return $diffhours.' hours ago'; } - else if(timediff < 86400) { return t('files','today'); } - else if(timediff < 172800) { return t('files','yesterday'); } - else if(timediff < 2678400) { return diffdays+' '+t('files','days ago'); } - else if(timediff < 5184000) { return t('files','last month'); } - //else if($timediff < 31556926) { return $diffmonths.' months ago'; } - else if(timediff < 31556926) { return t('files','months ago'); } - else if(timediff < 63113852) { return t('files','last year'); } - else { return diffyears+' '+t('files','years ago'); } -} - function getMimeIcon(mime, ready){ if(getMimeIcon.cache[mime]){ ready(getMimeIcon.cache[mime]); }else{ - $.get( OC.filePath('files','ajax','mimeicon.php')+'?mime='+mime, function(path){ + $.get( OC.filePath('files','ajax','mimeicon.php')+'&mime='+mime, function(path){ getMimeIcon.cache[mime]=path; ready(getMimeIcon.cache[mime]); }); diff --git a/apps/files/l10n/ar.php b/apps/files/l10n/ar.php index a5530851d2efb0ef066f7c4812eefce800cfc956..5740d54f8b1b13c3015ac0451c7ef1353783c24f 100644 --- a/apps/files/l10n/ar.php +++ b/apps/files/l10n/ar.php @@ -1,16 +1,18 @@ "تم ترÙيع الملÙات بنجاح.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "حجم المل٠الذي تريد ترÙيعه أعلى مما upload_max_filesize يسمح به ÙÙŠ مل٠php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "حجم المل٠الذي تريد ترÙيعه أعلى مما MAX_FILE_SIZE يسمح به ÙÙŠ واجهة ال HTML.", "The uploaded file was only partially uploaded" => "تم ترÙيع جزء من الملÙات الذي تريد ترÙيعها Ùقط", "No file was uploaded" => "لم يتم ترÙيع أي من الملÙات", "Missing a temporary folder" => "المجلد المؤقت غير موجود", "Files" => "الملÙات", +"Unshare" => "إلغاء مشاركة", "Delete" => "محذوÙ", +"Close" => "إغلق", "Name" => "الاسم", "Size" => "حجم", "Modified" => "معدل", "Maximum upload size" => "الحد الأقصى لحجم الملÙات التي يمكن رÙعها", +"Save" => "Ø­Ùظ", "New" => "جديد", "Text file" => "ملÙ", "Folder" => "مجلد", diff --git a/apps/files/l10n/bg_BG.php b/apps/files/l10n/bg_BG.php index 86f26a1798cb14793b0c0c8d44fe1cd1a762ef78..b527b0e027fc107f006de14811ab7aaeb2f0bb0c 100644 --- a/apps/files/l10n/bg_BG.php +++ b/apps/files/l10n/bg_BG.php @@ -1,6 +1,5 @@ "Файлът е качен уÑпешно", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Файлът който Ñе опитвате да качите, надвишава зададените ÑтойноÑти в upload_max_filesize в PHP.INI", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Файлът който Ñе опитвате да качите надвишава ÑтойноÑтите в MAX_FILE_SIZE в HTML формата.", "The uploaded file was only partially uploaded" => "Файлът е качен чаÑтично", "No file was uploaded" => "Фахлът не бе качен", @@ -10,23 +9,18 @@ "Delete" => "Изтриване", "Upload Error" => "Грешка при качване", "Upload cancelled." => "Качването е отменено.", -"Invalid name, '/' is not allowed." => "Ðеправилно име – \"/\" не е позволено.", "Name" => "Име", "Size" => "Размер", "Modified" => "Променено", -"folder" => "папка", -"folders" => "папки", -"file" => "файл", "Maximum upload size" => "МакÑ. размер за качване", "0 is unlimited" => "0 означава без ограничение", +"Save" => "ЗапиÑ", "New" => "Ðов", "Text file" => "ТекÑтов файл", "Folder" => "Папка", -"From url" => "От url-адреÑ", "Upload" => "Качване", "Cancel upload" => "Отказване на качването", "Nothing in here. Upload something!" => "ÐÑма нищо, качете нещо!", -"Share" => "СподелÑне", "Download" => "ИзтеглÑне", "Upload too large" => "Файлът е прекалено голÑм", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файловете които Ñе опитвате да качите Ñа по-големи от позволеното за Ñървъра.", diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php index 17432f72a1eeb6574682d9082237caa921a05d22..0866d97bd7486dc9bc41db4783d4cf5219b35aa4 100644 --- a/apps/files/l10n/ca.php +++ b/apps/files/l10n/ca.php @@ -1,6 +1,6 @@ "El fitxer s'ha pujat correctament", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El fitxer de pujada excedeix la directiva upload_max_filesize establerta a php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "L’arxiu que voleu carregar supera el màxim definit en la directiva upload_max_filesize del php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El fitxer de pujada excedeix la directiva MAX_FILE_SIZE especificada al formulari HTML", "The uploaded file was only partially uploaded" => "El fitxer només s'ha pujat parcialment", "No file was uploaded" => "El fitxer no s'ha pujat", @@ -10,43 +10,35 @@ "Unshare" => "Deixa de compartir", "Delete" => "Suprimeix", "Rename" => "Reanomena", -"already exists" => "ja existeix", +"{new_name} already exists" => "{new_name} ja existeix", "replace" => "substitueix", "suggest name" => "sugereix un nom", "cancel" => "cancel·la", -"replaced" => "substituït", +"replaced {new_name}" => "s'ha substituït {new_name}", "undo" => "desfés", -"with" => "per", -"unshared" => "No compartits", -"deleted" => "esborrat", +"replaced {new_name} with {old_name}" => "s'ha substituït {old_name} per {new_name}", +"unshared {files}" => "no compartits {files}", +"deleted {files}" => "eliminats {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "El nóm no és vàlid, '\\', '/', '<', '>', ':', '\"', '|', '?' i '*' no estan permesos.", "generating ZIP-file, it may take some time." => "s'estan generant fitxers ZIP, pot trigar una estona.", "Unable to upload your file as it is a directory or has 0 bytes" => "No es pot pujar el fitxer perquè és una carpeta o té 0 bytes", "Upload Error" => "Error en la pujada", +"Close" => "Tanca", "Pending" => "Pendents", "1 file uploading" => "1 fitxer pujant", -"files uploading" => "fitxers pujant", +"{count} files uploading" => "{count} fitxers en pujada", "Upload cancelled." => "La pujada s'ha cancel·lat.", "File upload is in progress. Leaving the page now will cancel the upload." => "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà.", -"Invalid name, '/' is not allowed." => "El nom no és vàlid, no es permet '/'.", -"files scanned" => "arxius escanejats", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "El nom de la carpeta no és vàlid. L'ús de \"Compartit\" està reservat per a OwnCloud", +"{count} files scanned" => "{count} fitxers escannejats", "error while scanning" => "error durant l'escaneig", "Name" => "Nom", "Size" => "Mida", "Modified" => "Modificat", -"folder" => "carpeta", -"folders" => "carpetes", -"file" => "fitxer", -"files" => "fitxers", -"seconds ago" => "segons enrere", -"minute ago" => "minut enrere", -"minutes ago" => "minuts enrere", -"today" => "avui", -"yesterday" => "ahir", -"days ago" => "dies enrere", -"last month" => "el mes passat", -"months ago" => "mesos enrere", -"last year" => "l'any passat", -"years ago" => "anys enrere", +"1 folder" => "1 carpeta", +"{count} folders" => "{count} carpetes", +"1 file" => "1 fitxer", +"{count} files" => "{count} fitxers", "File handling" => "Gestió de fitxers", "Maximum upload size" => "Mida màxima de pujada", "max. possible: " => "màxim possible:", @@ -58,11 +50,10 @@ "New" => "Nou", "Text file" => "Fitxer de text", "Folder" => "Carpeta", -"From url" => "Des de la url", +"From link" => "Des d'enllaç", "Upload" => "Puja", "Cancel upload" => "Cancel·la la pujada", "Nothing in here. Upload something!" => "Res per aquí. Pugeu alguna cosa!", -"Share" => "Comparteix", "Download" => "Baixa", "Upload too large" => "La pujada és massa gran", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Els fitxers que esteu intentant pujar excedeixen la mida màxima de pujada del servidor", diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php index 04db7316f904a2d6358d5625a37ec32930d64d63..12eb79a1a10b4ac5816fee63a5eb319a271d5f69 100644 --- a/apps/files/l10n/cs_CZ.php +++ b/apps/files/l10n/cs_CZ.php @@ -1,6 +1,6 @@ "Soubor byl odeslán úspěšnÄ›", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Odeslaný soubor pÅ™esáhl svou velikostí parametr upload_max_filesize v php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Odesílaný soubor pÅ™esahuje velikost upload_max_filesize povolenou v php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Odeslaný soubor pÅ™esáhl svou velikostí parametr MAX_FILE_SIZE specifikovaný v formuláři HTML", "The uploaded file was only partially uploaded" => "Soubor byl odeslán pouze ÄásteÄnÄ›", "No file was uploaded" => "Žádný soubor nebyl odeslán", @@ -10,43 +10,35 @@ "Unshare" => "ZruÅ¡it sdílení", "Delete" => "Smazat", "Rename" => "PÅ™ejmenovat", -"already exists" => "již existuje", +"{new_name} already exists" => "{new_name} již existuje", "replace" => "nahradit", "suggest name" => "navrhnout název", "cancel" => "zruÅ¡it", -"replaced" => "nahrazeno", +"replaced {new_name}" => "nahrazeno {new_name}", "undo" => "zpÄ›t", -"with" => "s", -"unshared" => "sdílení zruÅ¡eno", -"deleted" => "smazáno", +"replaced {new_name} with {old_name}" => "nahrazeno {new_name} s {old_name}", +"unshared {files}" => "sdílení zruÅ¡eno pro {files}", +"deleted {files}" => "smazáno {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neplatný název, znaky '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nejsou povoleny.", "generating ZIP-file, it may take some time." => "generuji ZIP soubor, může to nÄ›jakou dobu trvat.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů", "Upload Error" => "Chyba odesílání", +"Close" => "Zavřít", "Pending" => "ÄŒekající", "1 file uploading" => "odesílá se 1 soubor", -"files uploading" => "souborů se odesílá", +"{count} files uploading" => "odesílám {count} souborů", "Upload cancelled." => "Odesílání zruÅ¡eno.", "File upload is in progress. Leaving the page now will cancel the upload." => "Probíhá odesílání souboru. OpuÅ¡tÄ›ní stránky vyústí ve zruÅ¡ení nahrávání.", -"Invalid name, '/' is not allowed." => "Neplatný název, znak '/' není povolen", -"files scanned" => "soubory prohledány", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Neplatný název složky. Použití názvu \"Shared\" je rezervováno pro interní úžití službou Owncloud.", +"{count} files scanned" => "prozkoumáno {count} souborů", "error while scanning" => "chyba pÅ™i prohledávání", "Name" => "Název", "Size" => "Velikost", "Modified" => "ZmÄ›nÄ›no", -"folder" => "složka", -"folders" => "složky", -"file" => "soubor", -"files" => "soubory", -"seconds ago" => "pÅ™ed pár sekundami", -"minute ago" => "pÅ™ed minutou", -"minutes ago" => "pÅ™ed pár minutami", -"today" => "dnes", -"yesterday" => "vÄera", -"days ago" => "pÅ™ed pár dny", -"last month" => "minulý mÄ›síc", -"months ago" => "pÅ™ed pár mÄ›síci", -"last year" => "minulý rok", -"years ago" => "pÅ™ed pár lety", +"1 folder" => "1 složka", +"{count} folders" => "{count} složky", +"1 file" => "1 soubor", +"{count} files" => "{count} soubory", "File handling" => "Zacházení se soubory", "Maximum upload size" => "Maximální velikost pro odesílání", "max. possible: " => "nejvÄ›tší možná: ", @@ -58,11 +50,10 @@ "New" => "Nový", "Text file" => "Textový soubor", "Folder" => "Složka", -"From url" => "Z url", +"From link" => "Z odkazu", "Upload" => "Odeslat", "Cancel upload" => "ZruÅ¡it odesílání", "Nothing in here. Upload something!" => "Žádný obsah. Nahrajte nÄ›co.", -"Share" => "Sdílet", "Download" => "Stáhnout", "Upload too large" => "Odeslaný soubor je příliÅ¡ velký", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Soubory, které se snažíte odeslat, pÅ™ekraÄují limit velikosti odesílání na tomto serveru.", diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php index 5e428c9b2d90e7e53ef0b49bbaff48f74ac0f976..24652622c61af1b4b3d4eb664e6e0a607c99e664 100644 --- a/apps/files/l10n/da.php +++ b/apps/files/l10n/da.php @@ -1,6 +1,5 @@ "Der er ingen fejl, filen blev uploadet med success", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den uploadede fil overskrider upload_max_filesize direktivet i php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uploadede fil overskrider MAX_FILE_SIZE -direktivet som er specificeret i HTML-formularen", "The uploaded file was only partially uploaded" => "Den uploadede file blev kun delvist uploadet", "No file was uploaded" => "Ingen fil blev uploadet", @@ -10,43 +9,33 @@ "Unshare" => "Fjern deling", "Delete" => "Slet", "Rename" => "Omdøb", -"already exists" => "findes allerede", +"{new_name} already exists" => "{new_name} eksisterer allerede", "replace" => "erstat", "suggest name" => "foreslÃ¥ navn", "cancel" => "fortryd", -"replaced" => "erstattet", +"replaced {new_name}" => "erstattede {new_name}", "undo" => "fortryd", -"with" => "med", -"unshared" => "udelt", -"deleted" => "Slettet", +"replaced {new_name} with {old_name}" => "erstattede {new_name} med {old_name}", +"unshared {files}" => "ikke delte {files}", +"deleted {files}" => "slettede {files}", "generating ZIP-file, it may take some time." => "genererer ZIP-fil, det kan tage lidt tid.", "Unable to upload your file as it is a directory or has 0 bytes" => "Kunne ikke uploade din fil, da det enten er en mappe eller er tom", "Upload Error" => "Fejl ved upload", +"Close" => "Luk", "Pending" => "Afventer", "1 file uploading" => "1 fil uploades", -"files uploading" => "filer uploades", +"{count} files uploading" => "{count} filer uploades", "Upload cancelled." => "Upload afbrudt.", "File upload is in progress. Leaving the page now will cancel the upload." => "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.", -"Invalid name, '/' is not allowed." => "Ugyldigt navn, '/' er ikke tilladt.", -"files scanned" => "filer scannet", +"{count} files scanned" => "{count} filer skannet", "error while scanning" => "fejl under scanning", "Name" => "Navn", "Size" => "Størrelse", "Modified" => "Ændret", -"folder" => "mappe", -"folders" => "mapper", -"file" => "fil", -"files" => "filer", -"seconds ago" => "sekunder siden", -"minute ago" => "minut siden", -"minutes ago" => "minutter", -"today" => "i dag", -"yesterday" => "i gÃ¥r", -"days ago" => "dage siden", -"last month" => "sidste mÃ¥ned", -"months ago" => "mÃ¥neder siden", -"last year" => "sidste Ã¥r", -"years ago" => "Ã¥r siden", +"1 folder" => "1 mappe", +"{count} folders" => "{count} mapper", +"1 file" => "1 fil", +"{count} files" => "{count} filer", "File handling" => "FilhÃ¥ndtering", "Maximum upload size" => "Maksimal upload-størrelse", "max. possible: " => "max. mulige: ", @@ -58,11 +47,9 @@ "New" => "Ny", "Text file" => "Tekstfil", "Folder" => "Mappe", -"From url" => "Fra URL", "Upload" => "Upload", "Cancel upload" => "Fortryd upload", "Nothing in here. Upload something!" => "Her er tomt. Upload noget!", -"Share" => "Del", "Download" => "Download", "Upload too large" => "Upload for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload pÃ¥ denne server.", diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index fc07c9b911e3b2d191d321eb0a863fc77c42779d..3989d1915133e0586249a2ee8028d7d8c04f342a 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -1,6 +1,5 @@ "Datei fehlerfrei hochgeladen.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Die Größe der hochzuladenden Datei überschreitet die upload_max_filesize-Richtlinie in php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde", "The uploaded file was only partially uploaded" => "Die Datei wurde nur teilweise hochgeladen.", "No file was uploaded" => "Es wurde keine Datei hochgeladen.", @@ -10,43 +9,35 @@ "Unshare" => "Nicht mehr freigeben", "Delete" => "Löschen", "Rename" => "Umbenennen", -"already exists" => "ist bereits vorhanden", +"{new_name} already exists" => "{new_name} existiert bereits", "replace" => "ersetzen", "suggest name" => "Name vorschlagen", "cancel" => "abbrechen", -"replaced" => "ersetzt", +"replaced {new_name}" => "{new_name} wurde ersetzt", "undo" => "rückgängig machen", -"with" => "mit", -"unshared" => "Nicht mehr freigegeben", -"deleted" => "gelöscht", +"replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}", +"unshared {files}" => "Freigabe von {files} aufgehoben", +"deleted {files}" => "{files} gelöscht", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.", "generating ZIP-file, it may take some time." => "Erstelle ZIP-Datei. Dies kann eine Weile dauern.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.", +"Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.", "Upload Error" => "Fehler beim Upload", +"Close" => "Schließen", "Pending" => "Ausstehend", "1 file uploading" => "Eine Datei wird hoch geladen", -"files uploading" => "Dateien werden hoch geladen", +"{count} files uploading" => "{count} Dateien werden hochgeladen", "Upload cancelled." => "Upload abgebrochen.", -"File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.", -"Invalid name, '/' is not allowed." => "Ungültiger Name: \"/\" ist nicht erlaubt.", -"files scanned" => "Dateien gescannt", +"File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Ungültiger Ordnername. Die Verwendung von \"Shared\" ist ownCloud vorbehalten.", +"{count} files scanned" => "{count} Dateien wurden gescannt", "error while scanning" => "Fehler beim Scannen", "Name" => "Name", "Size" => "Größe", "Modified" => "Bearbeitet", -"folder" => "Ordner", -"folders" => "Ordner", -"file" => "Datei", -"files" => "Dateien", -"seconds ago" => "Sekunden her", -"minute ago" => "Minute her", -"minutes ago" => "Minuten her", -"today" => "Heute", -"yesterday" => "Gestern", -"days ago" => "Tage her", -"last month" => "Letzten Monat", -"months ago" => "Monate her", -"last year" => "Letztes Jahr", -"years ago" => "Jahre her", +"1 folder" => "1 Ordner", +"{count} folders" => "{count} Ordner", +"1 file" => "1 Datei", +"{count} files" => "{count} Dateien", "File handling" => "Dateibehandlung", "Maximum upload size" => "Maximale Upload-Größe", "max. possible: " => "maximal möglich:", @@ -58,11 +49,10 @@ "New" => "Neu", "Text file" => "Textdatei", "Folder" => "Ordner", -"From url" => "Von einer URL", +"From link" => "Von einem Link", "Upload" => "Hochladen", "Cancel upload" => "Upload abbrechen", "Nothing in here. Upload something!" => "Alles leer. Lade etwas hoch!", -"Share" => "Teilen", "Download" => "Herunterladen", "Upload too large" => "Upload zu groß", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server.", diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..fc8ce2f4adb8dd55144645a4781cc3620169d72c --- /dev/null +++ b/apps/files/l10n/de_DE.php @@ -0,0 +1,61 @@ + "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde", +"The uploaded file was only partially uploaded" => "Die Datei wurde nur teilweise hochgeladen.", +"No file was uploaded" => "Es wurde keine Datei hochgeladen.", +"Missing a temporary folder" => "Der temporäre Ordner fehlt.", +"Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte", +"Files" => "Dateien", +"Unshare" => "Nicht mehr freigeben", +"Delete" => "Löschen", +"Rename" => "Umbenennen", +"{new_name} already exists" => "{new_name} existiert bereits", +"replace" => "ersetzen", +"suggest name" => "Name vorschlagen", +"cancel" => "abbrechen", +"replaced {new_name}" => "{new_name} wurde ersetzt", +"undo" => "rückgängig machen", +"replaced {new_name} with {old_name}" => "{old_name} wurde ersetzt durch {new_name}", +"unshared {files}" => "Freigabe für {files} beendet", +"deleted {files}" => "{files} gelöscht", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.", +"generating ZIP-file, it may take some time." => "Erstelle ZIP-Datei. Dies kann eine Weile dauern.", +"Unable to upload your file as it is a directory or has 0 bytes" => "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.", +"Upload Error" => "Fehler beim Upload", +"Close" => "Schließen", +"Pending" => "Ausstehend", +"1 file uploading" => "1 Datei wird hochgeladen", +"{count} files uploading" => "{count} Dateien wurden hochgeladen", +"Upload cancelled." => "Upload abgebrochen.", +"File upload is in progress. Leaving the page now will cancel the upload." => "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Ungültiger Ordnername. Die Verwendung von \"Shared\" ist ownCloud vorbehalten.", +"{count} files scanned" => "{count} Dateien wurden gescannt", +"error while scanning" => "Fehler beim Scannen", +"Name" => "Name", +"Size" => "Größe", +"Modified" => "Bearbeitet", +"1 folder" => "1 Ordner", +"{count} folders" => "{count} Ordner", +"1 file" => "1 Datei", +"{count} files" => "{count} Dateien", +"File handling" => "Dateibehandlung", +"Maximum upload size" => "Maximale Upload-Größe", +"max. possible: " => "maximal möglich:", +"Needed for multi-file and folder downloads." => "Für Mehrfachdatei- und Ordnerdownloads benötigt:", +"Enable ZIP-download" => "ZIP-Download aktivieren", +"0 is unlimited" => "0 bedeutet unbegrenzt", +"Maximum input size for ZIP files" => "Maximale Größe für ZIP-Dateien", +"Save" => "Speichern", +"New" => "Neu", +"Text file" => "Textdatei", +"Folder" => "Ordner", +"From link" => "Von einem Link", +"Upload" => "Hochladen", +"Cancel upload" => "Upload abbrechen", +"Nothing in here. Upload something!" => "Alles leer. Bitte laden Sie etwas hoch!", +"Download" => "Herunterladen", +"Upload too large" => "Der Upload ist zu groß", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server.", +"Files are being scanned, please wait." => "Dateien werden gescannt, bitte warten.", +"Current scanning" => "Scanne" +); diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index ef2e0bd2839a29bc2d275538901e045be88a1896..ddbea421241fb5724ea4660aad3bd7888df82747 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -1,54 +1,46 @@ "Δεν υπάÏχει λάθος, το αÏχείο μεταφοÏτώθηκε επιτυχώς", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Το αÏχείο που μεταφοÏτώθηκε υπεÏβαίνει την οδηγία μέγιστου επιτÏÎµÏ€Ï„Î¿Ï Î¼ÎµÎ³Î­Î¸Î¿Ï…Ï‚ \"upload_max_filesize\" του php.ini", +"There is no error, the file uploaded with success" => "Δεν υπάÏχει σφάλμα, το αÏχείο εστάλει επιτυχώς", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Το απεσταλμένο αÏχείο ξεπεÏνά την οδηγία upload_max_filesize στο php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Το αÏχείο υπεÏβαίνει την οδηγία μέγιστου επιτÏÎµÏ€Ï„Î¿Ï Î¼ÎµÎ³Î­Î¸Î¿Ï…Ï‚ \"MAX_FILE_SIZE\" που έχει οÏιστεί στην HTML φόÏμα", -"The uploaded file was only partially uploaded" => "Το αÏχείο μεταφοÏώθηκε μόνο εν μέÏει", -"No file was uploaded" => "Κανένα αÏχείο δεν μεταφοÏτώθηκε", +"The uploaded file was only partially uploaded" => "Το αÏχείο εστάλει μόνο εν μέÏει", +"No file was uploaded" => "Κανένα αÏχείο δεν στάλθηκε", "Missing a temporary folder" => "Λείπει ο Ï€ÏοσωÏινός φάκελος", "Failed to write to disk" => "Αποτυχία εγγÏαφής στο δίσκο", "Files" => "ΑÏχεία", "Unshare" => "Διακοπή κοινής χÏήσης", "Delete" => "ΔιαγÏαφή", "Rename" => "Μετονομασία", -"already exists" => "υπάÏχει ήδη", +"{new_name} already exists" => "{new_name} υπάÏχει ήδη", "replace" => "αντικατέστησε", "suggest name" => "συνιστώμενο όνομα", "cancel" => "ακÏÏωση", -"replaced" => "αντικαταστάθηκε", +"replaced {new_name}" => "{new_name} αντικαταστάθηκε", "undo" => "αναίÏεση", -"with" => "με", -"unshared" => "Διακόπηκε ο διαμοιÏασμός", -"deleted" => "διαγÏάφηκε", +"replaced {new_name} with {old_name}" => "αντικαταστάθηκε το {new_name} με {old_name}", +"unshared {files}" => "μη διαμοιÏασμένα {files}", +"deleted {files}" => "διαγÏαμμένα {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Μη έγκυÏο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτÏέπονται.", "generating ZIP-file, it may take some time." => "παÏαγωγή αÏχείου ZIP, ίσως διαÏκέσει αÏκετά.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Αδυναμία στην μεταφόÏτωση του αÏχείου σας Î±Ï†Î¿Ï ÎµÎ¯Î½Î±Î¹ φάκελος ή έχει 0 bytes", -"Upload Error" => "Σφάλμα ΜεταφόÏτωσης", +"Unable to upload your file as it is a directory or has 0 bytes" => "Αδυναμία στην αποστολή του αÏχείου σας Î±Ï†Î¿Ï ÎµÎ¯Î½Î±Î¹ φάκελος ή έχει 0 bytes", +"Upload Error" => "Σφάλμα Αποστολής", +"Close" => "Κλείσιμο", "Pending" => "ΕκκÏεμεί", "1 file uploading" => "1 αÏχείο ανεβαίνει", -"files uploading" => "αÏχεία ανεβαίνουν", -"Upload cancelled." => "Η μεταφόÏτωση ακυÏώθηκε.", -"File upload is in progress. Leaving the page now will cancel the upload." => "Η μεταφόÏτωση του αÏχείου βÏίσκεται σε εξέλιξη. Έξοδος από την σελίδα Ï„ÏŽÏα θα ακυÏώσει την μεταφόÏτωση.", -"Invalid name, '/' is not allowed." => "Μη έγκυÏο όνομα, το '/' δεν επιτÏέπεται.", -"files scanned" => "αÏχεία σαÏώθηκαν", +"{count} files uploading" => "{count} αÏχεία ανεβαίνουν", +"Upload cancelled." => "Η αποστολή ακυÏώθηκε.", +"File upload is in progress. Leaving the page now will cancel the upload." => "Η αποστολή του αÏχείου βÏίσκεται σε εξέλιξη. Έξοδος από την σελίδα Ï„ÏŽÏα θα ακυÏώσει την αποστολή.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Μη έγκυÏο όνομα φακέλου. Η χÏήση του \"Shared\" είναι δεσμευμένη από το Owncloud", +"{count} files scanned" => "{count} αÏχεία ανιχνεÏτηκαν", "error while scanning" => "σφάλμα κατά την ανίχνευση", "Name" => "Όνομα", "Size" => "Μέγεθος", "Modified" => "ΤÏοποποιήθηκε", -"folder" => "φάκελος", -"folders" => "φάκελοι", -"file" => "αÏχείο", -"files" => "αÏχεία", -"seconds ago" => "δευτεÏόλεπτα Ï€Ïιν", -"minute ago" => "λεπτό Ï€Ïιν", -"minutes ago" => "λεπτά Ï€Ïιν", -"today" => "σήμεÏα", -"yesterday" => "χτες", -"days ago" => "μέÏες Ï€Ïιν", -"last month" => "τελευταίο μήνα", -"months ago" => "μήνες Ï€Ïιν", -"last year" => "τελευταίο χÏόνο", -"years ago" => "χÏόνια Ï€Ïιν", +"1 folder" => "1 φάκελος", +"{count} folders" => "{count} φάκελοι", +"1 file" => "1 αÏχείο", +"{count} files" => "{count} αÏχεία", "File handling" => "ΔιαχείÏιση αÏχείων", -"Maximum upload size" => "Μέγιστο μέγεθος μεταφόÏτωσης", +"Maximum upload size" => "Μέγιστο μέγεθος αποστολής", "max. possible: " => "μέγιστο δυνατό:", "Needed for multi-file and folder downloads." => "ΑπαÏαίτητο για κατέβασμα πολλαπλών αÏχείων και φακέλων", "Enable ZIP-download" => "ΕνεÏγοποίηση κατεβάσματος ZIP", @@ -58,14 +50,13 @@ "New" => "Îέο", "Text file" => "ΑÏχείο κειμένου", "Folder" => "Φάκελος", -"From url" => "Από την διεÏθυνση", -"Upload" => "ΜεταφόÏτωση", -"Cancel upload" => "ΑκÏÏωση μεταφόÏτωσης", +"From link" => "Από σÏνδεσμο", +"Upload" => "Αποστολή", +"Cancel upload" => "ΑκÏÏωση αποστολής", "Nothing in here. Upload something!" => "Δεν υπάÏχει τίποτα εδώ. Ανέβασε κάτι!", -"Share" => "ΔιαμοιÏασμός", "Download" => "Λήψη", -"Upload too large" => "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ αÏχείο Ï€Ïος μεταφόÏτωση", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Τα αÏχεία που Ï€Ïοσπαθείτε να μεταφοÏτώσετε υπεÏβαίνουν το μέγιστο μέγεθος μεταφόÏτωσης αÏχείων σε αυτόν το διακομιστή.", +"Upload too large" => "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ αÏχείο Ï€Ïος αποστολή", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Τα αÏχεία που Ï€Ïοσπαθείτε να ανεβάσετε υπεÏβαίνουν το μέγιστο μέγεθος αποστολής αÏχείων σε αυτόν το διακομιστή.", "Files are being scanned, please wait." => "Τα αÏχεία σαÏώνονται, παÏακαλώ πεÏιμένετε", "Current scanning" => "ΤÏέχουσα αναζήτηση " ); diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php index 03d44587448fc292133609ff8d21b4a89b97c92b..bdde6d0feceac55915af470e8d0a491122e8a368 100644 --- a/apps/files/l10n/eo.php +++ b/apps/files/l10n/eo.php @@ -1,7 +1,7 @@ "Ne estas eraro, la dosiero alÅutiÄis sukcese", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "La dosiero alÅutita superas la regulon upload_max_filesize el php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "La dosiero alÅutita superas laregulon MAX_FILE_SIZE, kiu estas difinita en la HTML-formularo", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "La dosiero alÅutita superas la regulon upload_max_filesize el php.ini: ", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "La dosiero alÅutita superas la regulon MAX_FILE_SIZE, kiu estas difinita en la HTML-formularo", "The uploaded file was only partially uploaded" => "La alÅutita dosiero nur parte alÅutiÄis", "No file was uploaded" => "Neniu dosiero estas alÅutita", "Missing a temporary folder" => "Mankas tempa dosierujo", @@ -9,29 +9,36 @@ "Files" => "Dosieroj", "Unshare" => "Malkunhavigi", "Delete" => "Forigi", -"already exists" => "jam ekzistas", +"Rename" => "Alinomigi", +"{new_name} already exists" => "{new_name} jam ekzistas", "replace" => "anstataÅ­igi", "suggest name" => "sugesti nomon", "cancel" => "nuligi", -"replaced" => "anstataÅ­igita", +"replaced {new_name}" => "anstataÅ­iÄis {new_name}", "undo" => "malfari", -"with" => "kun", -"unshared" => "malkunhavigita", -"deleted" => "forigita", +"replaced {new_name} with {old_name}" => "anstataÅ­iÄis {new_name} per {old_name}", +"unshared {files}" => "malkunhaviÄis {files}", +"deleted {files}" => "foriÄis {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nevalida nomo: “\\â€, “/â€, “<â€, “>â€, “:â€, “\"â€, “|â€, “?†kaj “*†ne permesatas.", "generating ZIP-file, it may take some time." => "generanta ZIP-dosiero, Äi povas daÅ­ri iom da tempo", "Unable to upload your file as it is a directory or has 0 bytes" => "Ne eblis alÅuti vian dosieron ĉar Äi estas dosierujo aÅ­ havas 0 duumokojn", "Upload Error" => "AlÅuta eraro", +"Close" => "Fermi", "Pending" => "Traktotaj", +"1 file uploading" => "1 dosiero estas alÅutata", +"{count} files uploading" => "{count} dosieroj alÅutatas", "Upload cancelled." => "La alÅuto nuliÄis.", "File upload is in progress. Leaving the page now will cancel the upload." => "DosieralÅuto plenumiÄas. Lasi la paÄon nun nuligus la alÅuton.", -"Invalid name, '/' is not allowed." => "Nevalida nomo, “/†ne estas permesata.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nevalida nomo de dosierujo. Uzo de “Shared†rezervitas de Owncloud", +"{count} files scanned" => "{count} dosieroj skaniÄis", +"error while scanning" => "eraro dum skano", "Name" => "Nomo", "Size" => "Grando", "Modified" => "Modifita", -"folder" => "dosierujo", -"folders" => "dosierujoj", -"file" => "dosiero", -"files" => "dosieroj", +"1 folder" => "1 dosierujo", +"{count} folders" => "{count} dosierujoj", +"1 file" => "1 dosiero", +"{count} files" => "{count} dosierujoj", "File handling" => "Dosieradministro", "Maximum upload size" => "Maksimuma alÅutogrando", "max. possible: " => "maks. ebla: ", @@ -43,11 +50,10 @@ "New" => "Nova", "Text file" => "Tekstodosiero", "Folder" => "Dosierujo", -"From url" => "El URL", +"From link" => "El ligilo", "Upload" => "AlÅuti", "Cancel upload" => "Nuligi alÅuton", "Nothing in here. Upload something!" => "Nenio estas ĉi tie. AlÅutu ion!", -"Share" => "Kunhavigi", "Download" => "ElÅuti", "Upload too large" => "ElÅuto tro larÄa", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "La dosieroj, kiujn vi provas alÅuti, transpasas la maksimuman grandon por dosieralÅutoj en ĉi tiu servilo.", diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php index 3837cf49f99a22e0827288224b6c3fcf6e951a9c..40b9ea9f23f8084733e5c5371abf26d356a37f59 100644 --- a/apps/files/l10n/es.php +++ b/apps/files/l10n/es.php @@ -1,6 +1,6 @@ "No se ha producido ningún error, el archivo se ha subido con éxito", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo que intentas subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML", "The uploaded file was only partially uploaded" => "El archivo que intentas subir solo se subió parcialmente", "No file was uploaded" => "No se ha subido ningún archivo", @@ -10,43 +10,35 @@ "Unshare" => "Dejar de compartir", "Delete" => "Eliminar", "Rename" => "Renombrar", -"already exists" => "ya existe", +"{new_name} already exists" => "{new_name} ya existe", "replace" => "reemplazar", "suggest name" => "sugerir nombre", "cancel" => "cancelar", -"replaced" => "reemplazado", +"replaced {new_name}" => "reemplazado {new_name}", "undo" => "deshacer", -"with" => "con", -"unshared" => "no compartido", -"deleted" => "borrado", +"replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}", +"unshared {files}" => "{files} descompartidos", +"deleted {files}" => "{files} eliminados", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nombre Invalido, \"\\\", \"/\", \"<\", \">\", \":\", \"\", \"|\" \"?\" y \"*\" no están permitidos ", "generating ZIP-file, it may take some time." => "generando un fichero ZIP, puede llevar un tiempo.", "Unable to upload your file as it is a directory or has 0 bytes" => "No ha sido posible subir tu archivo porque es un directorio o tiene 0 bytes", "Upload Error" => "Error al subir el archivo", +"Close" => "cerrrar", "Pending" => "Pendiente", "1 file uploading" => "subiendo 1 archivo", -"files uploading" => "archivos subiendo", +"{count} files uploading" => "Subiendo {count} archivos", "Upload cancelled." => "Subida cancelada.", "File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Salir de la página ahora cancelará la subida.", -"Invalid name, '/' is not allowed." => "Nombre no válido, '/' no está permitido.", -"files scanned" => "archivos escaneados", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nombre de la carpeta invalido. El uso de \"Shared\" esta reservado para Owncloud", +"{count} files scanned" => "{count} archivos escaneados", "error while scanning" => "error escaneando", "Name" => "Nombre", "Size" => "Tamaño", "Modified" => "Modificado", -"folder" => "carpeta", -"folders" => "carpetas", -"file" => "archivo", -"files" => "archivos", -"seconds ago" => "hace segundos", -"minute ago" => "minuto", -"minutes ago" => "hace minutos", -"today" => "hoy", -"yesterday" => "ayer", -"days ago" => "días", -"last month" => "mes pasado", -"months ago" => "hace meses", -"last year" => "año pasado", -"years ago" => "hace años", +"1 folder" => "1 carpeta", +"{count} folders" => "{count} carpetas", +"1 file" => "1 archivo", +"{count} files" => "{count} archivos", "File handling" => "Tratamiento de archivos", "Maximum upload size" => "Tamaño máximo de subida", "max. possible: " => "máx. posible:", @@ -58,11 +50,10 @@ "New" => "Nuevo", "Text file" => "Archivo de texto", "Folder" => "Carpeta", -"From url" => "Desde la URL", +"From link" => "Desde el enlace", "Upload" => "Subir", "Cancel upload" => "Cancelar subida", "Nothing in here. Upload something!" => "Aquí no hay nada. ¡Sube algo!", -"Share" => "Compartir", "Download" => "Descargar", "Upload too large" => "El archivo es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido por este servidor.", diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php index e94a904327ce03c20511a50076f473f66b1aa574..5c7ca37387b72c056018e33e5c8d7b313004ccfe 100644 --- a/apps/files/l10n/es_AR.php +++ b/apps/files/l10n/es_AR.php @@ -1,56 +1,46 @@ "No se han producido errores, el archivo se ha subido con éxito", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El archivo que intentás subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo que intentás subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML", "The uploaded file was only partially uploaded" => "El archivo que intentás subir solo se subió parcialmente", "No file was uploaded" => "El archivo no fue subido", "Missing a temporary folder" => "Falta un directorio temporal", -"Failed to write to disk" => "La escritura en disco falló", +"Failed to write to disk" => "Error al escribir en el disco", "Files" => "Archivos", "Unshare" => "Dejar de compartir", "Delete" => "Borrar", -"Rename" => "cambiar nombre", -"already exists" => "ya existe", +"Rename" => "Cambiar nombre", +"{new_name} already exists" => "{new_name} ya existe", "replace" => "reemplazar", "suggest name" => "sugerir nombre", "cancel" => "cancelar", -"replaced" => "reemplazado", +"replaced {new_name}" => "reemplazado {new_name}", "undo" => "deshacer", -"with" => "con", -"unshared" => "no compartido", -"deleted" => "borrado", +"replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}", +"unshared {files}" => "{files} se dejaron de compartir", +"deleted {files}" => "{files} borrados", "generating ZIP-file, it may take some time." => "generando un archivo ZIP, puede llevar un tiempo.", -"Unable to upload your file as it is a directory or has 0 bytes" => "No fue posible subir tu archivo porque es un directorio o su tamaño es 0 bytes", +"Unable to upload your file as it is a directory or has 0 bytes" => "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes", "Upload Error" => "Error al subir el archivo", +"Close" => "Cerrar", "Pending" => "Pendiente", "1 file uploading" => "Subiendo 1 archivo", -"files uploading" => "Subiendo archivos", +"{count} files uploading" => "Subiendo {count} archivos", "Upload cancelled." => "La subida fue cancelada", "File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.", -"Invalid name, '/' is not allowed." => "Nombre no válido, '/' no está permitido.", -"files scanned" => "archivos escaneados", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nombre del directorio inválido. Usar \"Shared\" está reservado por ownCloud.", +"{count} files scanned" => "{count} archivos escaneados", "error while scanning" => "error mientras se escaneaba", "Name" => "Nombre", "Size" => "Tamaño", "Modified" => "Modificado", -"folder" => "carpeta", -"folders" => "carpetas", -"file" => "archivo", -"files" => "archivos", -"seconds ago" => "segundos atrás", -"minute ago" => "hace un minuto", -"minutes ago" => "minutos atrás", -"today" => "hoy", -"yesterday" => "ayer", -"days ago" => "días atrás", -"last month" => "el mes pasado", -"months ago" => "meses atrás", -"last year" => "el año pasado", -"years ago" => "años atrás", +"1 folder" => "1 directorio", +"{count} folders" => "{count} directorios", +"1 file" => "1 archivo", +"{count} files" => "{count} archivos", "File handling" => "Tratamiento de archivos", "Maximum upload size" => "Tamaño máximo de subida", "max. possible: " => "máx. posible:", -"Needed for multi-file and folder downloads." => "Se necesita para descargas multi-archivo y de carpetas", +"Needed for multi-file and folder downloads." => "Es necesario para descargas multi-archivo y de carpetas", "Enable ZIP-download" => "Habilitar descarga en formato ZIP", "0 is unlimited" => "0 significa ilimitado", "Maximum input size for ZIP files" => "Tamaño máximo para archivos ZIP de entrada", @@ -58,14 +48,13 @@ "New" => "Nuevo", "Text file" => "Archivo de texto", "Folder" => "Carpeta", -"From url" => "Desde la URL", +"From link" => "Desde enlace", "Upload" => "Subir", "Cancel upload" => "Cancelar subida", -"Nothing in here. Upload something!" => "Aquí no hay nada. ¡Subí contenido!", -"Share" => "Compartir", +"Nothing in here. Upload something!" => "No hay nada. ¡Subí contenido!", "Download" => "Descargar", "Upload too large" => "El archivo es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los archivos que intentás subir sobrepasan el tamaño máximo ", -"Files are being scanned, please wait." => "Se están escaneando los archivos, por favor espere.", +"Files are being scanned, please wait." => "Se están escaneando los archivos, por favor esperá.", "Current scanning" => "Escaneo actual" ); diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php index f2721b194e209fcfd8f5979bee5a6b12037a6fb2..0fddbfdca466c2b1084b76ce4099fb5b2b493fed 100644 --- a/apps/files/l10n/et_EE.php +++ b/apps/files/l10n/et_EE.php @@ -1,6 +1,5 @@ "Ãœhtegi viga pole, fail on üles laetud", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Ãœles laetud faili suurus ületab php.ini määratud upload_max_filesize suuruse", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Ãœles laetud faili suurus ületab HTML vormis määratud upload_max_filesize suuruse", "The uploaded file was only partially uploaded" => "Fail laeti üles ainult osaliselt", "No file was uploaded" => "Ãœhtegi faili ei laetud üles", @@ -9,29 +8,36 @@ "Files" => "Failid", "Unshare" => "Lõpeta jagamine", "Delete" => "Kustuta", -"already exists" => "on juba olemas", +"Rename" => "ümber", +"{new_name} already exists" => "{new_name} on juba olemas", "replace" => "asenda", "suggest name" => "soovita nime", "cancel" => "loobu", -"replaced" => "asendatud", +"replaced {new_name}" => "asendatud nimega {new_name}", "undo" => "tagasi", -"with" => "millega", -"unshared" => "jagamata", -"deleted" => "kustutatud", +"replaced {new_name} with {old_name}" => "asendas nime {old_name} nimega {new_name}", +"unshared {files}" => "jagamata {files}", +"deleted {files}" => "kustutatud {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud.", "generating ZIP-file, it may take some time." => "ZIP-faili loomine, see võib veidi aega võtta.", "Unable to upload your file as it is a directory or has 0 bytes" => "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suurus on 0 baiti", "Upload Error" => "Ãœleslaadimise viga", +"Close" => "Sulge", "Pending" => "Ootel", +"1 file uploading" => "1 faili üleslaadimisel", +"{count} files uploading" => "{count} faili üleslaadimist", "Upload cancelled." => "Ãœleslaadimine tühistati.", "File upload is in progress. Leaving the page now will cancel the upload." => "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.", -"Invalid name, '/' is not allowed." => "Vigane nimi, '/' pole lubatud.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Vigane kausta nimi. Nime \"Jagatud\" kasutamine on Owncloudi poolt broneeritud ", +"{count} files scanned" => "{count} faili skännitud", +"error while scanning" => "viga skännimisel", "Name" => "Nimi", "Size" => "Suurus", "Modified" => "Muudetud", -"folder" => "kaust", -"folders" => "kausta", -"file" => "fail", -"files" => "faili", +"1 folder" => "1 kaust", +"{count} folders" => "{count} kausta", +"1 file" => "1 fail", +"{count} files" => "{count} faili", "File handling" => "Failide käsitlemine", "Maximum upload size" => "Maksimaalne üleslaadimise suurus", "max. possible: " => "maks. võimalik: ", @@ -43,11 +49,10 @@ "New" => "Uus", "Text file" => "Tekstifail", "Folder" => "Kaust", -"From url" => "URL-ilt", +"From link" => "Allikast", "Upload" => "Lae üles", "Cancel upload" => "Tühista üleslaadimine", "Nothing in here. Upload something!" => "Siin pole midagi. Lae midagi üles!", -"Share" => "Jaga", "Download" => "Lae alla", "Upload too large" => "Ãœleslaadimine on liiga suur", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele failidele määratud maksimaalse suuruse.", diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php index 94212afe8c22f32eb6965fe851143ad7367fc928..1f1ea6da50bdd510ad6028508b54dc772c510b4c 100644 --- a/apps/files/l10n/eu.php +++ b/apps/files/l10n/eu.php @@ -1,52 +1,43 @@ "Ez da arazorik izan, fitxategia ongi igo da", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Igotako fitxategiaren tamaina php.ini-ko upload_max_filesize direktiban adierazitakoa baino handiagoa da", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Igotako fitxategiaren tamaina HTML inprimakiko MAX_FILESIZE direktiban adierazitakoa baino handiagoa da", "The uploaded file was only partially uploaded" => "Igotako fitxategiaren zati bat baino gehiago ez da igo", "No file was uploaded" => "Ez da fitxategirik igo", "Missing a temporary folder" => "Aldi baterako karpeta falta da", "Failed to write to disk" => "Errore bat izan da diskoan idazterakoan", "Files" => "Fitxategiak", -"Unshare" => "Ez partekatu", +"Unshare" => "Ez elkarbanatu", "Delete" => "Ezabatu", "Rename" => "Berrizendatu", -"already exists" => "dagoeneko existitzen da", +"{new_name} already exists" => "{new_name} dagoeneko existitzen da", "replace" => "ordeztu", "suggest name" => "aholkatu izena", "cancel" => "ezeztatu", -"replaced" => "ordeztua", +"replaced {new_name}" => "ordezkatua {new_name}", "undo" => "desegin", -"with" => "honekin", -"unshared" => "Ez partekatuta", -"deleted" => "ezabatuta", +"replaced {new_name} with {old_name}" => " {new_name}-k {old_name} ordezkatu du", +"unshared {files}" => "elkarbanaketa utzita {files}", +"deleted {files}" => "ezabatuta {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "IZen aliogabea, '\\', '/', '<', '>', ':', '\"', '|', '?' eta '*' ez daude baimenduta.", "generating ZIP-file, it may take some time." => "ZIP-fitxategia sortzen ari da, denbora har dezake", "Unable to upload your file as it is a directory or has 0 bytes" => "Ezin da zure fitxategia igo, karpeta bat da edo 0 byt ditu", "Upload Error" => "Igotzean errore bat suertatu da", +"Close" => "Itxi", "Pending" => "Zain", "1 file uploading" => "fitxategi 1 igotzen", -"files uploading" => "fitxategiak igotzen", +"{count} files uploading" => "{count} fitxategi igotzen", "Upload cancelled." => "Igoera ezeztatuta", "File upload is in progress. Leaving the page now will cancel the upload." => "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du.", -"Invalid name, '/' is not allowed." => "Baliogabeko izena, '/' ezin da erabili. ", -"files scanned" => "fitxategiak eskaneatuta", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Karpeta izen baliogabea. \"Shared\" karpetaren erabilera Owncloudek erreserbatuta dauka", +"{count} files scanned" => "{count} fitxategi eskaneatuta", "error while scanning" => "errore bat egon da eskaneatzen zen bitartean", "Name" => "Izena", "Size" => "Tamaina", "Modified" => "Aldatuta", -"folder" => "karpeta", -"folders" => "Karpetak", -"file" => "fitxategia", -"files" => "fitxategiak", -"seconds ago" => "segundu", -"minute ago" => "minutu", -"minutes ago" => "minutu", -"today" => "gaur", -"yesterday" => "atzo", -"days ago" => "egun", -"last month" => "joan den hilabetean", -"months ago" => "hilabete", -"last year" => "joan den urtean", -"years ago" => "urte", +"1 folder" => "karpeta bat", +"{count} folders" => "{count} karpeta", +"1 file" => "fitxategi bat", +"{count} files" => "{count} fitxategi", "File handling" => "Fitxategien kudeaketa", "Maximum upload size" => "Igo daitekeen gehienezko tamaina", "max. possible: " => "max, posiblea:", @@ -58,11 +49,10 @@ "New" => "Berria", "Text file" => "Testu fitxategia", "Folder" => "Karpeta", -"From url" => "URLtik", +"From link" => "Estekatik", "Upload" => "Igo", "Cancel upload" => "Ezeztatu igoera", "Nothing in here. Upload something!" => "Ez dago ezer. Igo zerbait!", -"Share" => "Elkarbanatu", "Download" => "Deskargatu", "Upload too large" => "Igotakoa handiegia da", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Igotzen saiatzen ari zaren fitxategiak zerbitzari honek igotzeko onartzen duena baino handiagoak dira.", diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php index 979e58c55789762a1ca1d5eda3ca2198cb51e53e..8284593e886f941d945ce074cdb095dc98434284 100644 --- a/apps/files/l10n/fa.php +++ b/apps/files/l10n/fa.php @@ -1,6 +1,5 @@ "هیچ خطایی وجود ندارد Ùایل با موÙقیت بار گذاری شد", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "حداکثر حجم تعیین شده برای بارگذاری در php.ini قابل ویرایش است", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "حداکثر حجم مجاز برای بارگذاری از طریق HTML \nMAX_FILE_SIZE", "The uploaded file was only partially uploaded" => "مقدار Ú©Ù…ÛŒ از Ùایل بارگذاری شده", "No file was uploaded" => "هیچ Ùایلی بارگذاری نشده", @@ -8,26 +7,19 @@ "Failed to write to disk" => "نوشتن بر روی دیسک سخت ناموÙÙ‚ بود", "Files" => "Ùایل ها", "Delete" => "پاک کردن", -"already exists" => "وجود دارد", +"Rename" => "تغییرنام", "replace" => "جایگزین", "cancel" => "لغو", -"replaced" => "جایگزین‌شده", "undo" => "بازگشت", -"with" => "همراه", -"deleted" => "حذ٠شده", "generating ZIP-file, it may take some time." => "در حال ساخت Ùایل Ùشرده ممکن است زمان زیادی به طول بیانجامد", "Unable to upload your file as it is a directory or has 0 bytes" => "ناتوان در بارگذاری یا Ùایل یک پوشه است یا 0بایت دارد", "Upload Error" => "خطا در بار گذاری", +"Close" => "بستن", "Pending" => "در انتظار", "Upload cancelled." => "بار گذاری لغو شد", -"Invalid name, '/' is not allowed." => "نام نامناسب '/' غیرÙعال است", "Name" => "نام", "Size" => "اندازه", "Modified" => "تغییر یاÙته", -"folder" => "پوشه", -"folders" => "پوشه ها", -"file" => "پرونده", -"files" => "پرونده ها", "File handling" => "اداره پرونده ها", "Maximum upload size" => "حداکثر اندازه بارگزاری", "max. possible: " => "حداکثرمقدارممکن:", @@ -35,14 +27,13 @@ "Enable ZIP-download" => "Ùعال سازی بارگیری پرونده های Ùشرده", "0 is unlimited" => "0 نامحدود است", "Maximum input size for ZIP files" => "حداکثرمقدار برای بار گزاری پرونده های Ùشرده", +"Save" => "ذخیره", "New" => "جدید", "Text file" => "Ùایل متنی", "Folder" => "پوشه", -"From url" => "از نشانی", "Upload" => "بارگذاری", "Cancel upload" => "متوق٠کردن بار گذاری", "Nothing in here. Upload something!" => "اینجا هیچ چیز نیست.", -"Share" => "به اشتراک گذاری", "Download" => "بارگیری", "Upload too large" => "حجم بارگذاری بسیار زیاد است", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Ùایلها بیش از حد تعیین شده در این سرور هستند\nمترجم:با تغییر Ùایل php,ini میتوان این محدودیت را برطر٠کرد", diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php index 8e874ad4d95497226a9d36e667609d4e3ed20383..772dabbb392f0eb570167625df17ef1fd3558aa1 100644 --- a/apps/files/l10n/fi_FI.php +++ b/apps/files/l10n/fi_FI.php @@ -1,46 +1,34 @@ "Ei virheitä, tiedosto lähetettiin onnistuneesti", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Lähetetty tiedosto ylittää upload_max_filesize-arvon rajan php.ini-tiedostossa", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan", "The uploaded file was only partially uploaded" => "Tiedoston lähetys onnistui vain osittain", "No file was uploaded" => "Yhtäkään tiedostoa ei lähetetty", "Missing a temporary folder" => "Väliaikaiskansiota ei ole olemassa", "Failed to write to disk" => "Levylle kirjoitus epäonnistui", "Files" => "Tiedostot", +"Unshare" => "Peru jakaminen", "Delete" => "Poista", "Rename" => "Nimeä uudelleen", -"already exists" => "on jo olemassa", +"{new_name} already exists" => "{new_name} on jo olemassa", "replace" => "korvaa", "suggest name" => "ehdota nimeä", "cancel" => "peru", -"replaced" => "korvattu", "undo" => "kumoa", -"with" => "käyttäen", -"deleted" => "poistettu", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Virheellinen nimi, merkit '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' eivät ole sallittuja.", "generating ZIP-file, it may take some time." => "luodaan ZIP-tiedostoa, tämä saattaa kestää hetken.", "Unable to upload your file as it is a directory or has 0 bytes" => "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio", "Upload Error" => "Lähetysvirhe.", +"Close" => "Sulje", "Pending" => "Odottaa", "Upload cancelled." => "Lähetys peruttu.", "File upload is in progress. Leaving the page now will cancel the upload." => "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.", -"Invalid name, '/' is not allowed." => "Virheellinen nimi, merkki '/' ei ole sallittu.", "Name" => "Nimi", "Size" => "Koko", "Modified" => "Muutettu", -"folder" => "kansio", -"folders" => "kansiota", -"file" => "tiedosto", -"files" => "tiedostoa", -"seconds ago" => "sekuntia sitten", -"minute ago" => "minuutti sitten", -"minutes ago" => "minuuttia sitten", -"today" => "tänään", -"yesterday" => "eilen", -"days ago" => "päivää sitten", -"last month" => "viime kuussa", -"months ago" => "kuukautta sitten", -"last year" => "viime vuonna", -"years ago" => "vuotta sitten", +"1 folder" => "1 kansio", +"{count} folders" => "{count} kansiota", +"1 file" => "1 tiedosto", +"{count} files" => "{count} tiedostoa", "File handling" => "Tiedostonhallinta", "Maximum upload size" => "Lähetettävän tiedoston suurin sallittu koko", "max. possible: " => "suurin mahdollinen:", @@ -52,11 +40,9 @@ "New" => "Uusi", "Text file" => "Tekstitiedosto", "Folder" => "Kansio", -"From url" => "Verkko-osoitteesta", "Upload" => "Lähetä", "Cancel upload" => "Peru lähetys", "Nothing in here. Upload something!" => "Täällä ei ole mitään. Lähetä tänne jotakin!", -"Share" => "Jaa", "Download" => "Lataa", "Upload too large" => "Lähetettävä tiedosto on liian suuri", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Lähetettäväksi valitsemasi tiedostot ylittävät palvelimen salliman tiedostokoon rajan.", diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index f58bfa5cc5e6ea2f597bab29e5b9325315fa8dc3..86d476873d075a96f3a326cbd67a16c388c42a8e 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -1,6 +1,6 @@ "Aucune erreur, le fichier a été téléversé avec succès", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Le fichier téléversé excède la valeur de upload_max_filesize spécifiée dans php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Le fichier envoyé dépasse la valeur upload_max_filesize située dans le fichier php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Le fichier téléversé excède la valeur de MAX_FILE_SIZE spécifiée dans le formulaire HTML", "The uploaded file was only partially uploaded" => "Le fichier n'a été que partiellement téléversé", "No file was uploaded" => "Aucun fichier n'a été téléversé", @@ -10,43 +10,35 @@ "Unshare" => "Ne plus partager", "Delete" => "Supprimer", "Rename" => "Renommer", -"already exists" => "existe déjà", +"{new_name} already exists" => "{new_name} existe déjà", "replace" => "remplacer", "suggest name" => "Suggérer un nom", "cancel" => "annuler", -"replaced" => "remplacé", +"replaced {new_name}" => "{new_name} a été replacé", "undo" => "annuler", -"with" => "avec", -"unshared" => "non partagée", -"deleted" => "supprimé", +"replaced {new_name} with {old_name}" => "{new_name} a été remplacé par {old_name}", +"unshared {files}" => "Fichiers non partagés : {files}", +"deleted {files}" => "Fichiers supprimés : {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nom invalide, les caractères '\\', '/', '<', '>', ':', '\"', '|', '?' et '*' ne sont pas autorisés.", "generating ZIP-file, it may take some time." => "Fichier ZIP en cours d'assemblage ; cela peut prendre du temps.", "Unable to upload your file as it is a directory or has 0 bytes" => "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet.", "Upload Error" => "Erreur de chargement", +"Close" => "Fermer", "Pending" => "En cours", "1 file uploading" => "1 fichier en cours de téléchargement", -"files uploading" => "fichiers en cours de téléchargement", +"{count} files uploading" => "{count} fichiers téléversés", "Upload cancelled." => "Chargement annulé.", "File upload is in progress. Leaving the page now will cancel the upload." => "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.", -"Invalid name, '/' is not allowed." => "Nom invalide, '/' n'est pas autorisé.", -"files scanned" => "fichiers indexés", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nom de répertoire invalide. \"Shared\" est réservé par ownCloud", +"{count} files scanned" => "{count} fichiers indexés", "error while scanning" => "erreur lors de l'indexation", "Name" => "Nom", "Size" => "Taille", "Modified" => "Modifié", -"folder" => "dossier", -"folders" => "dossiers", -"file" => "fichier", -"files" => "fichiers", -"seconds ago" => "secondes passées", -"minute ago" => "minute passée", -"minutes ago" => "minutes passées", -"today" => "aujourd'hui", -"yesterday" => "hier", -"days ago" => "jours passés", -"last month" => "mois dernier", -"months ago" => "mois passés", -"last year" => "année dernière", -"years ago" => "années passées", +"1 folder" => "1 dossier", +"{count} folders" => "{count} dossiers", +"1 file" => "1 fichier", +"{count} files" => "{count} fichiers", "File handling" => "Gestion des fichiers", "Maximum upload size" => "Taille max. d'envoi", "max. possible: " => "Max. possible :", @@ -58,11 +50,10 @@ "New" => "Nouveau", "Text file" => "Fichier texte", "Folder" => "Dossier", -"From url" => "Depuis URL", +"From link" => "Depuis le lien", "Upload" => "Envoyer", "Cancel upload" => "Annuler l'envoi", "Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", -"Share" => "Partager", "Download" => "Téléchargement", "Upload too large" => "Fichier trop volumineux", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Les fichiers que vous essayez d'envoyer dépassent la taille maximale permise par ce serveur.", diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php index 77e87ee282cf3e86e90bf528fc02bd1fd5c920b1..5c50e3764cf95008518443c6c769a567da033e1d 100644 --- a/apps/files/l10n/gl.php +++ b/apps/files/l10n/gl.php @@ -1,6 +1,6 @@ "Non hai erros, o ficheiro enviouse correctamente", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O ficheiro enviado supera a directiva upload_max_filesize no php.ini", +"There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado supera a directiva MAX_FILE_SIZE que foi indicada no formulario HTML", "The uploaded file was only partially uploaded" => "O ficheiro enviado foi só parcialmente enviado", "No file was uploaded" => "Non se enviou ningún ficheiro", @@ -9,35 +9,40 @@ "Files" => "Ficheiros", "Unshare" => "Deixar de compartir", "Delete" => "Eliminar", -"already exists" => "xa existe", +"Rename" => "Mudar o nome", +"{new_name} already exists" => "xa existe un {new_name}", "replace" => "substituír", -"suggest name" => "suxira nome", +"suggest name" => "suxerir nome", "cancel" => "cancelar", -"replaced" => "substituído", +"replaced {new_name}" => "substituír {new_name}", "undo" => "desfacer", -"with" => "con", -"unshared" => "non compartido", -"deleted" => "eliminado", -"generating ZIP-file, it may take some time." => "xerando ficheiro ZIP, pode levar un anaco.", +"replaced {new_name} with {old_name}" => "substituír {new_name} polo {old_name}", +"unshared {files}" => "{files} sen compartir", +"deleted {files}" => "{files} eliminados", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten.", +"generating ZIP-file, it may take some time." => "xerando un ficheiro ZIP, o que pode levar un anaco.", "Unable to upload your file as it is a directory or has 0 bytes" => "Non se puido subir o ficheiro pois ou é un directorio ou ten 0 bytes", "Upload Error" => "Erro na subida", +"Close" => "Pechar", "Pending" => "Pendentes", +"1 file uploading" => "1 ficheiro subíndose", +"{count} files uploading" => "{count} ficheiros subíndose", "Upload cancelled." => "Subida cancelada.", "File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida.", -"Invalid name, '/' is not allowed." => "Nome non válido, '/' non está permitido.", -"files scanned" => "ficheiros analizados", -"error while scanning" => "erro mentras analizaba", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nome de cartafol non válido. O uso de \"compartido\" está reservado exclusivamente para ownCloud", +"{count} files scanned" => "{count} ficheiros escaneados", +"error while scanning" => "erro mentres analizaba", "Name" => "Nome", "Size" => "Tamaño", "Modified" => "Modificado", -"folder" => "cartafol", -"folders" => "cartafoles", -"file" => "ficheiro", -"files" => "ficheiros", +"1 folder" => "1 cartafol", +"{count} folders" => "{count} cartafoles", +"1 file" => "1 ficheiro", +"{count} files" => "{count} ficheiros", "File handling" => "Manexo de ficheiro", "Maximum upload size" => "Tamaño máximo de envío", "max. possible: " => "máx. posible: ", -"Needed for multi-file and folder downloads." => "Preciso para descarga de varios ficheiros e cartafoles.", +"Needed for multi-file and folder downloads." => "Precísase para a descarga de varios ficheiros e cartafoles.", "Enable ZIP-download" => "Habilitar a descarga-ZIP", "0 is unlimited" => "0 significa ilimitado", "Maximum input size for ZIP files" => "Tamaño máximo de descarga para os ZIP", @@ -45,14 +50,13 @@ "New" => "Novo", "Text file" => "Ficheiro de texto", "Folder" => "Cartafol", -"From url" => "Desde url", +"From link" => "Dende a ligazón", "Upload" => "Enviar", -"Cancel upload" => "Cancelar subida", -"Nothing in here. Upload something!" => "Nada por aquí. Envíe algo.", -"Share" => "Compartir", +"Cancel upload" => "Cancelar a subida", +"Nothing in here. Upload something!" => "Nada por aquí. Envía algo.", "Download" => "Descargar", "Upload too large" => "Envío demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que trata de subir superan o tamaño máximo permitido neste servidor", -"Files are being scanned, please wait." => "Estanse analizando os ficheiros, espere por favor.", -"Current scanning" => "Análise actual." +"Files are being scanned, please wait." => "Estanse analizando os ficheiros. Agarda.", +"Current scanning" => "Análise actual" ); diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php index 84c669cba315c99c3fde67bf764caa3695f96c43..4c73493211d615d6554ec38923cf85dc03e4076d 100644 --- a/apps/files/l10n/he.php +++ b/apps/files/l10n/he.php @@ -1,27 +1,44 @@ "×œ× ×ירעה תקלה, ×”×§×‘×¦×™× ×”×•×¢×œ×• בהצלחה", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "הקובץ שהועלה חרג מההנחיה upload_max_filesize בקובץ php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "×”×§×‘×¦×™× ×©× ×©×œ×—×• ×—×•×¨×’×™× ×ž×”×’×•×“×œ שצוין בהגדרה upload_max_filesize שבקובץ php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "הקובץ שהועלה חרג מההנחיה MAX_FILE_SIZE שצוינה בטופס ×”Ö¾HTML", "The uploaded file was only partially uploaded" => "הקובץ שהועלה הועלה בצורה חלקית", "No file was uploaded" => "×œ× ×”×•×¢×œ×• קבצי×", "Missing a temporary folder" => "תיקייה זמנית חסרה", "Failed to write to disk" => "הכתיבה לכונן נכשלה", "Files" => "קבצי×", +"Unshare" => "הסר שיתוף", "Delete" => "מחיקה", -"already exists" => "כבר קיי×", +"Rename" => "שינוי ש×", +"{new_name} already exists" => "{new_name} כבר קיי×", +"replace" => "החלפה", +"suggest name" => "הצעת ש×", +"cancel" => "ביטול", +"replaced {new_name}" => "{new_name} הוחלף", +"undo" => "ביטול", +"replaced {new_name} with {old_name}" => "{new_name} הוחלף ב־{old_name}", +"unshared {files}" => "בוטל ×©×™×ª×•×¤× ×©×œ {files}", +"deleted {files}" => "{files} נמחקו", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "×”×©× ×©×’×•×™, ×סור להשתמש ×‘×ª×•×•×™× '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'.", "generating ZIP-file, it may take some time." => "יוצר קובץ ZIP, ×× × ×”×ž×ª×Ÿ.", "Unable to upload your file as it is a directory or has 0 bytes" => "×œ× ×™×›×•×œ להעלות ×ת הקובץ מכיוון שזו תקיה ×ו שמשקל הקובץ 0 בתי×", "Upload Error" => "שגי×ת העל××”", +"Close" => "סגירה", "Pending" => "ממתין", +"1 file uploading" => "קובץ ×חד נשלח", +"{count} files uploading" => "{count} ×§×‘×¦×™× × ×©×œ×—×™×", "Upload cancelled." => "ההעל××” בוטלה.", -"Invalid name, '/' is not allowed." => "×©× ×œ× ×—×•×§×™, '/' ×סור לשימוש.", +"File upload is in progress. Leaving the page now will cancel the upload." => "מתבצעת כעת העל×ת קבצי×. עזיבה של העמוד תבטל ×ת ההעל××”.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "×©× ×”×ª×™×§×™×™×” שגוי. השימוש ×‘×©× â€žShared“ שמור לטובת Owncloud", +"{count} files scanned" => "{count} ×§×‘×¦×™× × ×¡×¨×§×•", +"error while scanning" => "×ירעה שגי××” במהלך הסריקה", "Name" => "ש×", "Size" => "גודל", "Modified" => "זמן שינוי", -"folder" => "תקיה", -"folders" => "תקיות", -"file" => "קובץ", -"files" => "קבצי×", +"1 folder" => "תיקייה ×חת", +"{count} folders" => "{count} תיקיות", +"1 file" => "קובץ ×חד", +"{count} files" => "{count} קבצי×", "File handling" => "טיפול בקבצי×", "Maximum upload size" => "גודל העל××” מקסימלי", "max. possible: " => "המרבי ×”×פשרי: ", @@ -29,14 +46,14 @@ "Enable ZIP-download" => "הפעלת הורדת ZIP", "0 is unlimited" => "0 - ×œ×œ× ×”×’×‘×œ×”", "Maximum input size for ZIP files" => "גודל הקלט המרבי לקובצי ZIP", +"Save" => "שמירה", "New" => "חדש", "Text file" => "קובץ טקסט", "Folder" => "תיקייה", -"From url" => "מכתובת", +"From link" => "מקישור", "Upload" => "העל××”", "Cancel upload" => "ביטול ההעל××”", "Nothing in here. Upload something!" => "×ין ×›×ן ×©×•× ×“×‘×¨. ×ולי ברצונך להעלות משהו?", -"Share" => "שיתוף", "Download" => "הורדה", "Upload too large" => "העל××” גדולה מידי", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "×”×§×‘×¦×™× ×©× ×™×¡×™×ª להעלות חרגו מהגודל המקסימלי להעל×ת ×§×‘×¦×™× ×¢×œ שרת ×–×”.", diff --git a/apps/files/l10n/hr.php b/apps/files/l10n/hr.php index 412c97630d49ef2c475d7283e19076a7972d5af1..4db4ac3f3e3c0a6ffa61efbd4a39657ba9d79b49 100644 --- a/apps/files/l10n/hr.php +++ b/apps/files/l10n/hr.php @@ -1,6 +1,5 @@ "Datoteka je poslana uspjeÅ¡no i bez pogreÅ¡aka", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Poslana datoteka izlazi iz okvira upload_max_size direktive postavljene u php.ini konfiguracijskoj datoteci", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslana datoteka izlazi iz okvira MAX_FILE_SIZE direktive postavljene u HTML obrascu", "The uploaded file was only partially uploaded" => "Datoteka je poslana samo djelomiÄno", "No file was uploaded" => "Ni jedna datoteka nije poslana", @@ -10,43 +9,22 @@ "Unshare" => "Prekini djeljenje", "Delete" => "BriÅ¡i", "Rename" => "Promjeni ime", -"already exists" => "već postoji", "replace" => "zamjeni", "suggest name" => "predloži ime", "cancel" => "odustani", -"replaced" => "zamjenjeno", "undo" => "vrati", -"with" => "sa", -"unshared" => "maknuto djeljenje", -"deleted" => "izbrisano", "generating ZIP-file, it may take some time." => "generiranje ZIP datoteke, ovo može potrajati.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nemoguće poslati datoteku jer je prazna ili je direktorij", "Upload Error" => "PogreÅ¡ka pri slanju", +"Close" => "Zatvori", "Pending" => "U tijeku", "1 file uploading" => "1 datoteka se uÄitava", -"files uploading" => "datoteke se uÄitavaju", "Upload cancelled." => "Slanje poniÅ¡teno.", "File upload is in progress. Leaving the page now will cancel the upload." => "UÄitavanje datoteke. NapuÅ¡tanjem stranice će prekinuti uÄitavanje.", -"Invalid name, '/' is not allowed." => "Neispravan naziv, znak '/' nije dozvoljen.", -"files scanned" => "datoteka skenirana", "error while scanning" => "greÄka prilikom skeniranja", "Name" => "Naziv", "Size" => "VeliÄina", "Modified" => "Zadnja promjena", -"folder" => "mapa", -"folders" => "mape", -"file" => "datoteka", -"files" => "datoteke", -"seconds ago" => "sekundi prije", -"minute ago" => "minutu", -"minutes ago" => "minuta", -"today" => "danas", -"yesterday" => "juÄer", -"days ago" => "dana", -"last month" => "proÅ¡li mjesec", -"months ago" => "mjeseci", -"last year" => "proÅ¡lu godinu", -"years ago" => "godina", "File handling" => "datoteka za rukovanje", "Maximum upload size" => "Maksimalna veliÄina prijenosa", "max. possible: " => "maksimalna moguća: ", @@ -58,11 +36,9 @@ "New" => "novo", "Text file" => "tekstualna datoteka", "Folder" => "mapa", -"From url" => "od URL-a", "Upload" => "PoÅ¡alji", "Cancel upload" => "Prekini upload", "Nothing in here. Upload something!" => "Nema niÄega u ovoj mapi. PoÅ¡alji neÅ¡to!", -"Share" => "podjeli", "Download" => "Preuzmi", "Upload too large" => "Prijenos je preobiman", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke koje pokuÅ¡avate prenijeti prelaze maksimalnu veliÄinu za prijenos datoteka na ovom poslužitelju.", diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php index 0d44e6e157a1c8aefdf87a1b760e908e4999abe3..083d5a391e1d435b46bddf548e82f0e19710381f 100644 --- a/apps/files/l10n/hu_HU.php +++ b/apps/files/l10n/hu_HU.php @@ -1,33 +1,25 @@ "Nincs hiba, a fájl sikeresen feltöltve.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "A feltöltött file meghaladja az upload_max_filesize direktívát a php.ini-ben.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "A feltöltött fájl meghaladja a MAX_FILE_SIZE direktívát ami meghatározott a HTML form-ban.", "The uploaded file was only partially uploaded" => "Az eredeti fájl csak részlegesen van feltöltve.", "No file was uploaded" => "Nem lett fájl feltöltve.", "Missing a temporary folder" => "Hiányzik az ideiglenes könyvtár", "Failed to write to disk" => "Nem írható lemezre", "Files" => "Fájlok", +"Unshare" => "Nem oszt meg", "Delete" => "Törlés", -"already exists" => "már létezik", "replace" => "cserél", "cancel" => "mégse", -"replaced" => "kicserélve", "undo" => "visszavon", -"with" => "-val/-vel", -"deleted" => "törölve", "generating ZIP-file, it may take some time." => "ZIP-fájl generálása, ez eltarthat egy ideig.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nem tölthetÅ‘ fel, mert mappa volt, vagy 0 byte méretű", "Upload Error" => "Feltöltési hiba", +"Close" => "Bezár", "Pending" => "Folyamatban", "Upload cancelled." => "Feltöltés megszakítva", -"Invalid name, '/' is not allowed." => "Érvénytelen név, a '/' nem megengedett", "Name" => "Név", "Size" => "Méret", "Modified" => "Módosítva", -"folder" => "mappa", -"folders" => "mappák", -"file" => "fájl", -"files" => "fájlok", "File handling" => "Fájlkezelés", "Maximum upload size" => "Maximális feltölthetÅ‘ fájlméret", "max. possible: " => "max. lehetséges", @@ -35,14 +27,13 @@ "Enable ZIP-download" => "ZIP-letöltés engedélyezése", "0 is unlimited" => "0 = korlátlan", "Maximum input size for ZIP files" => "ZIP file-ok maximum mérete", +"Save" => "Mentés", "New" => "Új", "Text file" => "Szövegfájl", "Folder" => "Mappa", -"From url" => "URL-bÅ‘l", "Upload" => "Feltöltés", "Cancel upload" => "Feltöltés megszakítása", "Nothing in here. Upload something!" => "Töltsön fel egy fájlt.", -"Share" => "Megosztás", "Download" => "Letöltés", "Upload too large" => "Feltöltés túl nagy", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "A fájlokat amit próbálsz feltölteni meghaladta a legnagyobb fájlméretet ezen a szerveren.", diff --git a/apps/files/l10n/ia.php b/apps/files/l10n/ia.php index 21a0bb52374a9b2e1eefa4082a88ee499f34f342..ada64cd7574ac43a4485a1bbdfaa5db0085173b6 100644 --- a/apps/files/l10n/ia.php +++ b/apps/files/l10n/ia.php @@ -1,12 +1,15 @@ "Le file incargate solmente esseva incargate partialmente", "No file was uploaded" => "Nulle file esseva incargate", +"Missing a temporary folder" => "Manca un dossier temporari", "Files" => "Files", "Delete" => "Deler", +"Close" => "Clauder", "Name" => "Nomine", "Size" => "Dimension", "Modified" => "Modificate", "Maximum upload size" => "Dimension maxime de incargamento", +"Save" => "Salveguardar", "New" => "Nove", "Text file" => "File de texto", "Folder" => "Dossier", diff --git a/apps/files/l10n/id.php b/apps/files/l10n/id.php index 07bccdc597dd4e26d8ab256aee5b5f076bbc8c93..1f8cb444d2641d1214173230543821a26ee305d5 100644 --- a/apps/files/l10n/id.php +++ b/apps/files/l10n/id.php @@ -1,33 +1,25 @@ "Tidak ada galat, berkas sukses diunggah", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "File yang diunggah melampaui directive upload_max_filesize di php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "File yang diunggah melampaui directive MAX_FILE_SIZE yang disebutan dalam form HTML.", "The uploaded file was only partially uploaded" => "Berkas hanya diunggah sebagian", "No file was uploaded" => "Tidak ada berkas yang diunggah", "Missing a temporary folder" => "Kehilangan folder temporer", "Failed to write to disk" => "Gagal menulis ke disk", "Files" => "Berkas", +"Unshare" => "batalkan berbagi", "Delete" => "Hapus", -"already exists" => "sudah ada", "replace" => "mengganti", "cancel" => "batalkan", -"replaced" => "diganti", "undo" => "batal dikerjakan", -"with" => "dengan", -"deleted" => "dihapus", "generating ZIP-file, it may take some time." => "membuat berkas ZIP, ini mungkin memakan waktu.", "Unable to upload your file as it is a directory or has 0 bytes" => "Gagal mengunggah berkas anda karena berupa direktori atau mempunyai ukuran 0 byte", "Upload Error" => "Terjadi Galat Pengunggahan", +"Close" => "tutup", "Pending" => "Menunggu", "Upload cancelled." => "Pengunggahan dibatalkan.", -"Invalid name, '/' is not allowed." => "Kesalahan nama, '/' tidak diijinkan.", "Name" => "Nama", "Size" => "Ukuran", "Modified" => "Dimodifikasi", -"folder" => "folder", -"folders" => "folder-folder", -"file" => "berkas", -"files" => "berkas-berkas", "File handling" => "Penanganan berkas", "Maximum upload size" => "Ukuran unggah maksimum", "max. possible: " => "Kemungkinan maks:", @@ -35,14 +27,13 @@ "Enable ZIP-download" => "Aktifkan unduhan ZIP", "0 is unlimited" => "0 adalah tidak terbatas", "Maximum input size for ZIP files" => "Ukuran masukan maksimal untuk berkas ZIP", +"Save" => "simpan", "New" => "Baru", "Text file" => "Berkas teks", "Folder" => "Folder", -"From url" => "Dari url", "Upload" => "Unggah", "Cancel upload" => "Batal mengunggah", "Nothing in here. Upload something!" => "Tidak ada apa-apa di sini. Unggah sesuatu!", -"Share" => "Bagikan", "Download" => "Unduh", "Upload too large" => "Unggahan terlalu besar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Berkas yang anda coba unggah melebihi ukuran maksimum untuk pengunggahan berkas di server ini.", diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php index 86f2ff84fcf5f925c3961585764ebc374c90e3ed..90b341712200916ae7df51bf19e3dacaa954f741 100644 --- a/apps/files/l10n/it.php +++ b/apps/files/l10n/it.php @@ -1,6 +1,6 @@ "Non ci sono errori, file caricato con successo", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Il file caricato supera il valore upload_max_filesize in php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Il file caricato supera la direttiva upload_max_filesize in php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Il file caricato supera il valore MAX_FILE_SIZE definito nel form HTML", "The uploaded file was only partially uploaded" => "Il file è stato parzialmente caricato", "No file was uploaded" => "Nessun file è stato caricato", @@ -10,43 +10,35 @@ "Unshare" => "Rimuovi condivisione", "Delete" => "Elimina", "Rename" => "Rinomina", -"already exists" => "esiste già", +"{new_name} already exists" => "{new_name} esiste già", "replace" => "sostituisci", "suggest name" => "suggerisci nome", "cancel" => "annulla", -"replaced" => "sostituito", +"replaced {new_name}" => "sostituito {new_name}", "undo" => "annulla", -"with" => "con", -"unshared" => "condivisione rimossa", -"deleted" => "eliminati", +"replaced {new_name} with {old_name}" => "sostituito {new_name} con {old_name}", +"unshared {files}" => "non condivisi {files}", +"deleted {files}" => "eliminati {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non valido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non sono consentiti.", "generating ZIP-file, it may take some time." => "creazione file ZIP, potrebbe richiedere del tempo.", "Unable to upload your file as it is a directory or has 0 bytes" => "Impossibile inviare il file poiché è una cartella o ha dimensione 0 byte", "Upload Error" => "Errore di invio", +"Close" => "Chiudi", "Pending" => "In corso", "1 file uploading" => "1 file in fase di caricamento", -"files uploading" => "file in fase di caricamento", +"{count} files uploading" => "{count} file in fase di caricamentoe", "Upload cancelled." => "Invio annullato", "File upload is in progress. Leaving the page now will cancel the upload." => "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.", -"Invalid name, '/' is not allowed." => "Nome non valido", -"files scanned" => "file analizzati", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nome della cartella non valido. L'uso di \"Shared\" è riservato a ownCloud", +"{count} files scanned" => "{count} file analizzati", "error while scanning" => "errore durante la scansione", "Name" => "Nome", "Size" => "Dimensione", "Modified" => "Modificato", -"folder" => "cartella", -"folders" => "cartelle", -"file" => "file", -"files" => "file", -"seconds ago" => "secondi fa", -"minute ago" => "minuto fa", -"minutes ago" => "minuti fa", -"today" => "oggi", -"yesterday" => "ieri", -"days ago" => "giorni fa", -"last month" => "mese scorso", -"months ago" => "mesi fa", -"last year" => "anno scorso", -"years ago" => "anni fa", +"1 folder" => "1 cartella", +"{count} folders" => "{count} cartelle", +"1 file" => "1 file", +"{count} files" => "{count} file", "File handling" => "Gestione file", "Maximum upload size" => "Dimensione massima upload", "max. possible: " => "numero mass.: ", @@ -58,11 +50,10 @@ "New" => "Nuovo", "Text file" => "File di testo", "Folder" => "Cartella", -"From url" => "Da URL", +"From link" => "Da collegamento", "Upload" => "Carica", "Cancel upload" => "Annulla invio", "Nothing in here. Upload something!" => "Non c'è niente qui. Carica qualcosa!", -"Share" => "Condividi", "Download" => "Scarica", "Upload too large" => "Il file caricato è troppo grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "I file che stai provando a caricare superano la dimensione massima consentita su questo server.", diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php index 7aa246f9644bc4961a8b0c87124443ee822388b3..7b8c3ca4778c4c5a2f3e22b8847aba80c8357287 100644 --- a/apps/files/l10n/ja_JP.php +++ b/apps/files/l10n/ja_JP.php @@ -1,6 +1,6 @@ "エラーã¯ã‚ã‚Šã¾ã›ã‚“。ファイルã®ã‚¢ãƒƒãƒ—ロードã¯æˆåŠŸã—ã¾ã—ãŸ", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯php.iniã®upload_max_filesizeã«è¨­å®šã•ã‚ŒãŸã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯php.ini ã® upload_max_filesize ã«è¨­å®šã•ã‚ŒãŸã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯HTMLã®ãƒ•ã‚©ãƒ¼ãƒ ã«è¨­å®šã•ã‚ŒãŸMAX_FILE_SIZEã«è¨­å®šã•ã‚ŒãŸã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™", "The uploaded file was only partially uploaded" => "ファイルã¯ä¸€éƒ¨åˆ†ã—ã‹ã‚¢ãƒƒãƒ—ロードã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ", "No file was uploaded" => "ファイルã¯ã‚¢ãƒƒãƒ—ロードã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ", @@ -10,43 +10,35 @@ "Unshare" => "共有ã—ãªã„", "Delete" => "削除", "Rename" => "åå‰ã®å¤‰æ›´", -"already exists" => "æ—¢ã«å­˜åœ¨ã—ã¾ã™", +"{new_name} already exists" => "{new_name} ã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™", "replace" => "ç½®ãæ›ãˆ", "suggest name" => "推奨å称", "cancel" => "キャンセル", -"replaced" => "ç½®æ›ï¼š", +"replaced {new_name}" => "{new_name} ã‚’ç½®æ›", "undo" => "å…ƒã«æˆ»ã™", -"with" => "â†", -"unshared" => "未共有", -"deleted" => "削除", +"replaced {new_name} with {old_name}" => "{old_name} ã‚’ {new_name} ã«ç½®æ›", +"unshared {files}" => "未共有 {files}", +"deleted {files}" => "削除 {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "無効ãªåå‰ã€'\\', '/', '<', '>', ':', '\"', '|', '?', '*' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。", "generating ZIP-file, it may take some time." => "ZIPファイルを生æˆä¸­ã§ã™ã€ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„。", -"Unable to upload your file as it is a directory or has 0 bytes" => "アップロード使用ã¨ã—ã¦ã„るファイルãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã€ã‚‚ã—ãã¯ã‚µã‚¤ã‚ºãŒ0ãƒã‚¤ãƒˆã®ãŸã‚ã€ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“。", +"Unable to upload your file as it is a directory or has 0 bytes" => "ディレクトリもã—ãã¯0ãƒã‚¤ãƒˆã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“", "Upload Error" => "アップロードエラー", +"Close" => "é–‰ã˜ã‚‹", "Pending" => "ä¿ç•™", "1 file uploading" => "ファイルを1ã¤ã‚¢ãƒƒãƒ—ロード中", -"files uploading" => "ファイルをアップロード中", +"{count} files uploading" => "{count} ファイルをアップロード中", "Upload cancelled." => "アップロードã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸã€‚", "File upload is in progress. Leaving the page now will cancel the upload." => "ファイル転é€ã‚’実行中ã§ã™ã€‚今ã“ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ç§»å‹•ã™ã‚‹ã¨ã‚¢ãƒƒãƒ—ロードãŒä¸­æ­¢ã•ã‚Œã¾ã™ã€‚", -"Invalid name, '/' is not allowed." => "無効ãªåå‰ã€'/' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。", -"files scanned" => "ファイルをスキャンã—ã¾ã—ãŸ", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "無効ãªãƒ•ã‚©ãƒ«ãƒ€åã§ã™ã€‚\"Shared\" ã®åˆ©ç”¨ã¯ ownCloud ãŒäºˆç´„済ã¿ã§ã™ã€‚", +"{count} files scanned" => "{count} ファイルをスキャン", "error while scanning" => "スキャン中ã®ã‚¨ãƒ©ãƒ¼", "Name" => "åå‰", "Size" => "サイズ", "Modified" => "更新日時", -"folder" => "フォルダ", -"folders" => "フォルダ", -"file" => "ファイル", -"files" => "ファイル", -"seconds ago" => "秒å‰", -"minute ago" => "分å‰", -"minutes ago" => "分å‰", -"today" => "今日", -"yesterday" => "昨日", -"days ago" => "æ—¥å‰", -"last month" => "一月å‰", -"months ago" => "月å‰", -"last year" => "一年å‰", -"years ago" => "å¹´å‰", +"1 folder" => "1 フォルダ", +"{count} folders" => "{count} フォルダ", +"1 file" => "1 ファイル", +"{count} files" => "{count} ファイル", "File handling" => "ファイルæ“作", "Maximum upload size" => "最大アップロードサイズ", "max. possible: " => "最大容é‡: ", @@ -58,11 +50,10 @@ "New" => "æ–°è¦", "Text file" => "テキストファイル", "Folder" => "フォルダ", -"From url" => "URL", +"From link" => "リンク", "Upload" => "アップロード", "Cancel upload" => "アップロードをキャンセル", "Nothing in here. Upload something!" => "ã“ã“ã«ã¯ä½•ã‚‚ã‚ã‚Šã¾ã›ã‚“。何ã‹ã‚¢ãƒƒãƒ—ロードã—ã¦ãã ã•ã„。", -"Share" => "共有", "Download" => "ダウンロード", "Upload too large" => "ファイルサイズãŒå¤§ãã™ãŽã¾ã™", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "アップロードã—よã†ã¨ã—ã¦ã„るファイルã¯ã€ã‚µãƒ¼ãƒã§è¦å®šã•ã‚ŒãŸæœ€å¤§ã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™ã€‚", diff --git a/apps/files/l10n/ka_GE.php b/apps/files/l10n/ka_GE.php new file mode 100644 index 0000000000000000000000000000000000000000..9a73abfbe3bfa764ea5d5203ae868ca39aaa5fa7 --- /dev/null +++ b/apps/files/l10n/ka_GE.php @@ -0,0 +1,58 @@ + "ჭáƒáƒªáƒ“áƒáƒ›áƒ áƒáƒ  დáƒáƒ¤áƒ˜áƒ¥áƒ¡áƒ˜áƒ áƒ“áƒ, ფáƒáƒ˜áƒšáƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული ფáƒáƒ˜áƒšáƒ˜ áƒáƒ­áƒáƒ áƒ‘ებს MAX_FILE_SIZE დირექტივáƒáƒ¡, რáƒáƒ›áƒ”ლიც მითითებულირHTML ფáƒáƒ áƒ›áƒáƒ¨áƒ˜", +"The uploaded file was only partially uploaded" => "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული ფáƒáƒ˜áƒšáƒ˜ მხáƒáƒšáƒáƒ“ ნáƒáƒ¬áƒ˜áƒšáƒáƒ‘რივ áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ", +"No file was uploaded" => "ფáƒáƒ˜áƒšáƒ˜ áƒáƒ  áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ", +"Missing a temporary folder" => "დრáƒáƒ”ბითი სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს", +"Failed to write to disk" => "შეცდáƒáƒ›áƒ დისკზე ჩáƒáƒ¬áƒ”რისáƒáƒ¡", +"Files" => "ფáƒáƒ˜áƒšáƒ”ბი", +"Unshare" => "გáƒáƒ–იáƒáƒ áƒ”ბის მáƒáƒ®áƒ¡áƒœáƒ", +"Delete" => "წáƒáƒ¨áƒšáƒ", +"Rename" => "გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ", +"{new_name} already exists" => "{new_name} უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს", +"replace" => "შეცვლáƒ", +"suggest name" => "სáƒáƒ®áƒ”ლის შემáƒáƒ—áƒáƒ•áƒáƒ–ებáƒ", +"cancel" => "უáƒáƒ áƒ§áƒáƒ¤áƒ", +"replaced {new_name}" => "{new_name} შეცვლილიáƒ", +"undo" => "დáƒáƒ‘რუნებáƒ", +"replaced {new_name} with {old_name}" => "{new_name} შეცვლილირ{old_name}–ით", +"unshared {files}" => "გáƒáƒ–იáƒáƒ áƒ”ბრმáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ {files}", +"deleted {files}" => "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ {files}", +"generating ZIP-file, it may take some time." => "ZIP-ფáƒáƒ˜áƒšáƒ˜áƒ¡ გენერირებáƒ, áƒáƒ›áƒáƒ¡ ჭირდებრგáƒáƒ áƒ™áƒ•áƒ”ული დრáƒ.", +"Unable to upload your file as it is a directory or has 0 bytes" => "თქვენი ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ. ის áƒáƒ áƒ˜áƒ¡ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე დრშეიცáƒáƒ•áƒ¡ 0 ბáƒáƒ˜áƒ¢áƒ¡", +"Upload Error" => "შეცდáƒáƒ›áƒ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვისáƒáƒ¡", +"Close" => "დáƒáƒ®áƒ£áƒ áƒ•áƒ", +"Pending" => "მáƒáƒªáƒ“ის რეჟიმში", +"1 file uploading" => "1 ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ", +"{count} files uploading" => "{count} ფáƒáƒ˜áƒšáƒ˜ იტვირთებáƒ", +"Upload cancelled." => "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრშეჩერებულ იქნáƒ.", +"File upload is in progress. Leaving the page now will cancel the upload." => "მიმდინáƒáƒ áƒ”áƒáƒ‘ს ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ. სხვრგვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ გáƒáƒ›áƒáƒ˜áƒ¬áƒ•áƒ”ვს áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის შეჩერებáƒáƒ¡", +"{count} files scanned" => "{count} ფáƒáƒ˜áƒšáƒ˜ სკáƒáƒœáƒ˜áƒ áƒ”ბულიáƒ", +"error while scanning" => "შეცდáƒáƒ›áƒ სკáƒáƒœáƒ˜áƒ áƒ”ბისáƒáƒ¡", +"Name" => "სáƒáƒ®áƒ”ლი", +"Size" => "ზáƒáƒ›áƒ", +"Modified" => "შეცვლილიáƒ", +"1 folder" => "1 სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე", +"{count} folders" => "{count} სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე", +"1 file" => "1 ფáƒáƒ˜áƒšáƒ˜", +"{count} files" => "{count} ფáƒáƒ˜áƒšáƒ˜", +"File handling" => "ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბáƒ", +"Maximum upload size" => "მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ› áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ის ზáƒáƒ›áƒ", +"max. possible: " => "მáƒáƒ¥áƒ¡. შესáƒáƒ«áƒšáƒ”ბელი:", +"Needed for multi-file and folder downloads." => "სáƒáƒ­áƒ˜áƒ áƒáƒ მულტი ფáƒáƒ˜áƒš áƒáƒœ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ.", +"Enable ZIP-download" => "ZIP-Download–ის ჩáƒáƒ áƒ—ვáƒ", +"0 is unlimited" => "0 is unlimited", +"Maximum input size for ZIP files" => "ZIP ფáƒáƒ˜áƒšáƒ”ბის მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ› დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი ზáƒáƒ›áƒ", +"Save" => "შენáƒáƒ®áƒ•áƒ", +"New" => "áƒáƒ®áƒáƒšáƒ˜", +"Text file" => "ტექსტური ფáƒáƒ˜áƒšáƒ˜", +"Folder" => "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე", +"Upload" => "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ", +"Cancel upload" => "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ", +"Nothing in here. Upload something!" => "áƒáƒ¥ áƒáƒ áƒáƒ¤áƒ”რი áƒáƒ  áƒáƒ áƒ˜áƒ¡. áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ე რáƒáƒ›áƒ”!", +"Download" => "ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ", +"Upload too large" => "áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ი ფáƒáƒ˜áƒšáƒ˜ ძáƒáƒšáƒ˜áƒáƒœ დიდიáƒ", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ რáƒáƒ›áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒáƒ¡áƒáƒª თქვენ áƒáƒžáƒ˜áƒ áƒ”ბთ, áƒáƒ­áƒáƒ áƒ‘ებს სერვერზე დáƒáƒ¨áƒ•áƒ”ბულ მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ›áƒ¡.", +"Files are being scanned, please wait." => "მიმდინáƒáƒ áƒ”áƒáƒ‘ს ფáƒáƒ˜áƒšáƒ”ბის სკáƒáƒœáƒ˜áƒ áƒ”ბáƒ, გთხáƒáƒ•áƒ— დáƒáƒ”ლáƒáƒ“áƒáƒ—.", +"Current scanning" => "მიმდინáƒáƒ áƒ” სკáƒáƒœáƒ˜áƒ áƒ”ბáƒ" +); diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php index e54d696c34eba0c91110e02d3396b6b6f5f02b94..0e2e542678f8096992cff9fbff8e119a7df2d129 100644 --- a/apps/files/l10n/ko.php +++ b/apps/files/l10n/ko.php @@ -1,33 +1,41 @@ "ì—…ë¡œë“œì— ì„±ê³µí•˜ì˜€ìŠµë‹ˆë‹¤.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "업로드한 파ì¼ì´ php.iniì—ì„œ 지정한 upload_max_filesize보다 ë” í¼", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "업로드한 파ì¼ì´ HTML ë¬¸ì„œì— ì§€ì •í•œ MAX_FILE_SIZE보다 ë” í¼", "The uploaded file was only partially uploaded" => "파ì¼ì´ 부분ì ìœ¼ë¡œ 업로드ë¨", "No file was uploaded" => "ì—…ë¡œë“œëœ íŒŒì¼ ì—†ìŒ", "Missing a temporary folder" => "ìž„ì‹œ í´ë”ê°€ 사ë¼ì§", "Failed to write to disk" => "디스í¬ì— 쓰지 못했습니다", "Files" => "파ì¼", +"Unshare" => "공유해제", "Delete" => "ì‚­ì œ", -"already exists" => "ì´ë¯¸ 존재 합니다", +"Rename" => "ì´ë¦„변경", +"{new_name} already exists" => "{new_name} ì´ë¯¸ 존재함", "replace" => "대체", +"suggest name" => "ì´ë¦„ì„ ì œì•ˆ", "cancel" => "취소", -"replaced" => "대체ë¨", +"replaced {new_name}" => "{new_name} 으로 대체", "undo" => "복구", -"with" => "와", -"deleted" => "ì‚­ì œ", +"replaced {new_name} with {old_name}" => "{old_name}ì´ {new_name}으로 대체ë¨", +"unshared {files}" => "{files} 공유해제", +"deleted {files}" => "{files} ì‚­ì œë¨", "generating ZIP-file, it may take some time." => "ZIPíŒŒì¼ ìƒì„±ì— ì‹œê°„ì´ ê±¸ë¦´ 수 있습니다.", "Unable to upload your file as it is a directory or has 0 bytes" => "ì´ íŒŒì¼ì€ 디렉토리ì´ê±°ë‚˜ 0 ë°”ì´íŠ¸ì´ê¸° ë•Œë¬¸ì— ì—…ë¡œë“œ í•  수 없습니다.", "Upload Error" => "업로드 ì—러", +"Close" => "닫기", "Pending" => "보류 중", +"1 file uploading" => "1 íŒŒì¼ ì—…ë¡œë“œì¤‘", +"{count} files uploading" => "{count} íŒŒì¼ ì—…ë¡œë“œì¤‘", "Upload cancelled." => "업로드 취소.", -"Invalid name, '/' is not allowed." => "ìž˜ëª»ëœ ì´ë¦„, '/' ì€ í—ˆìš©ì´ ë˜ì§€ 않습니다.", +"File upload is in progress. Leaving the page now will cancel the upload." => "íŒŒì¼ ì—…ë¡œë“œì„ ì§„í–‰í•©ë‹ˆë‹¤. 페ì´ì§€ë¥¼ 떠나게 ë ê²½ìš° 업로드가 취소ë©ë‹ˆë‹¤.", +"{count} files scanned" => "{count} íŒŒì¼ ìŠ¤ìº”ë˜ì—ˆìŠµë‹ˆë‹¤.", +"error while scanning" => "스캔하는 ë„중 ì—러", "Name" => "ì´ë¦„", "Size" => "í¬ê¸°", "Modified" => "수정ë¨", -"folder" => "í´ë”", -"folders" => "í´ë”", -"file" => "파ì¼", -"files" => "파ì¼", +"1 folder" => "1 í´ë”", +"{count} folders" => "{count} í´ë”", +"1 file" => "1 파ì¼", +"{count} files" => "{count} 파ì¼", "File handling" => "íŒŒì¼ ì²˜ë¦¬", "Maximum upload size" => "최대 업로드 í¬ê¸°", "max. possible: " => "최대. 가능한:", @@ -35,14 +43,14 @@ "Enable ZIP-download" => "ZIP- 다운로드 허용", "0 is unlimited" => "0ì€ ë¬´ì œí•œ 입니다", "Maximum input size for ZIP files" => "ZIP 파ì¼ì— 대한 최대 ìž…ë ¥ í¬ê¸°", +"Save" => "저장", "New" => "새로 만들기", "Text file" => "í…스트 파ì¼", "Folder" => "í´ë”", -"From url" => "URL ì—ì„œ", +"From link" => "From link", "Upload" => "업로드", "Cancel upload" => "업로드 취소", "Nothing in here. Upload something!" => "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤. 업로드할 수 있습니다!", -"Share" => "공유", "Download" => "다운로드", "Upload too large" => "업로드 용량 초과", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ì´ íŒŒì¼ì´ 서버ì—ì„œ 허용하는 최대 업로드 가능 용량보다 í½ë‹ˆë‹¤.", diff --git a/apps/files/l10n/ku_IQ.php b/apps/files/l10n/ku_IQ.php new file mode 100644 index 0000000000000000000000000000000000000000..49995f8df86150a9feba03dc5c3bccc8a0a5c8fb --- /dev/null +++ b/apps/files/l10n/ku_IQ.php @@ -0,0 +1,8 @@ + "داخستن", +"Name" => "ناو", +"Save" => "پاشکه‌وتکردن", +"Folder" => "بوخچه", +"Upload" => "بارکردن", +"Download" => "داگرتن" +); diff --git a/apps/files/l10n/lb.php b/apps/files/l10n/lb.php index a51980348c785e47c9b80924cd991e721e2cce11..229ec3f20244ab3b1772d8aa3b5b72da8a62aa2b 100644 --- a/apps/files/l10n/lb.php +++ b/apps/files/l10n/lb.php @@ -1,6 +1,5 @@ "Keen Feeler, Datei ass komplett ropgelueden ginn", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Déi ropgelueden Datei ass méi grouss wei d'upload_max_filesize Eegenschaft an der php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Déi ropgelueden Datei ass méi grouss wei d'MAX_FILE_SIZE Eegenschaft déi an der HTML form uginn ass", "The uploaded file was only partially uploaded" => "Déi ropgelueden Datei ass nëmmen hallef ropgelueden ginn", "No file was uploaded" => "Et ass keng Datei ropgelueden ginn", @@ -8,26 +7,18 @@ "Failed to write to disk" => "Konnt net op den Disk schreiwen", "Files" => "Dateien", "Delete" => "Läschen", -"already exists" => "existéiert schonn", "replace" => "ersetzen", "cancel" => "ofbriechen", -"replaced" => "ersat", "undo" => "réckgängeg man", -"with" => "mat", -"deleted" => "geläscht", "generating ZIP-file, it may take some time." => "Et gëtt eng ZIP-File generéiert, dëst ka bëssen daueren.", "Unable to upload your file as it is a directory or has 0 bytes" => "Kann deng Datei net eroplueden well et en Dossier ass oder 0 byte grouss ass.", "Upload Error" => "Fehler beim eroplueden", +"Close" => "Zoumaachen", "Upload cancelled." => "Upload ofgebrach.", "File upload is in progress. Leaving the page now will cancel the upload." => "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach.", -"Invalid name, '/' is not allowed." => "Ongültege Numm, '/' net erlaabt.", "Name" => "Numm", "Size" => "Gréisst", "Modified" => "Geännert", -"folder" => "Dossier", -"folders" => "Dossieren", -"file" => "Datei", -"files" => "Dateien", "File handling" => "Fichier handling", "Maximum upload size" => "Maximum Upload Gréisst ", "max. possible: " => "max. méiglech:", @@ -35,14 +26,13 @@ "Enable ZIP-download" => "ZIP-download erlaben", "0 is unlimited" => "0 ass onlimitéiert", "Maximum input size for ZIP files" => "Maximal Gréisst fir ZIP Fichieren", +"Save" => "Späicheren", "New" => "Nei", "Text file" => "Text Fichier", "Folder" => "Dossier", -"From url" => "From URL", "Upload" => "Eroplueden", "Cancel upload" => "Upload ofbriechen", "Nothing in here. Upload something!" => "Hei ass näischt. Lued eppes rop!", -"Share" => "Share", "Download" => "Eroflueden", "Upload too large" => "Upload ze grouss", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.", diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php index 47a79c4a5a020fff138f212b77a0fa9406847d0c..fd9824e0c1990248214ae688c2d4b9ec2aa73ba4 100644 --- a/apps/files/l10n/lt_LT.php +++ b/apps/files/l10n/lt_LT.php @@ -1,40 +1,55 @@ "Klaidų nÄ—ra, failas įkeltas sÄ—kmingai", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Ä®keliamo failo dydis virÅ¡ija upload_max_filesize parametrÄ… php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Ä®keliamo failo dydis virÅ¡ija MAX_FILE_SIZE parametrÄ…, kuris yra nustatytas HTML formoje", "The uploaded file was only partially uploaded" => "Failas buvo įkeltas tik dalinai", "No file was uploaded" => "Nebuvo įkeltas nÄ— vienas failas", "Missing a temporary folder" => "NÄ—ra laikinojo katalogo", "Failed to write to disk" => "Nepavyko įraÅ¡yti į diskÄ…", "Files" => "Failai", +"Unshare" => "Nebesidalinti", "Delete" => "IÅ¡trinti", +"Rename" => "Pervadinti", +"{new_name} already exists" => "{new_name} jau egzistuoja", +"replace" => "pakeisti", +"suggest name" => "pasiÅ«lyti pavadinimÄ…", "cancel" => "atÅ¡aukti", +"replaced {new_name}" => "pakeiskite {new_name}", +"undo" => "anuliuoti", +"replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}", +"unshared {files}" => "nebesidalinti {files}", +"deleted {files}" => "iÅ¡trinti {files}", "generating ZIP-file, it may take some time." => "kuriamas ZIP archyvas, tai gali užtrukti Å¡iek tiek laiko.", "Unable to upload your file as it is a directory or has 0 bytes" => "Neįmanoma įkelti failo - jo dydis gali bÅ«ti 0 bitų arba tai katalogas", "Upload Error" => "Ä®kÄ—limo klaida", +"Close" => "Užverti", "Pending" => "Laukiantis", +"1 file uploading" => "įkeliamas 1 failas", +"{count} files uploading" => "{count} įkeliami failai", "Upload cancelled." => "Ä®kÄ—limas atÅ¡auktas.", -"Invalid name, '/' is not allowed." => "Pavadinime negali bÅ«ti naudojamas ženklas \"/\".", +"File upload is in progress. Leaving the page now will cancel the upload." => "Failo įkÄ—limas pradÄ—tas. Jei paliksite šį puslapį, įkÄ—limas nutrÅ«ks.", +"{count} files scanned" => "{count} praskanuoti failai", +"error while scanning" => "klaida skanuojant", "Name" => "Pavadinimas", "Size" => "Dydis", "Modified" => "Pakeista", -"folder" => "katalogas", -"folders" => "katalogai", -"file" => "failas", -"files" => "failai", +"1 folder" => "1 aplankalas", +"{count} folders" => "{count} aplankalai", +"1 file" => "1 failas", +"{count} files" => "{count} failai", "File handling" => "Failų tvarkymas", "Maximum upload size" => "Maksimalus įkeliamo failo dydis", +"max. possible: " => "maks. galima:", +"Needed for multi-file and folder downloads." => "Reikalinga daugybinui failų ir aplankalų atsisiuntimui.", "Enable ZIP-download" => "Ä®jungti atsisiuntimÄ… ZIP archyvu", "0 is unlimited" => "0 yra neribotas", "Maximum input size for ZIP files" => "Maksimalus ZIP archyvo failo dydis", +"Save" => "IÅ¡saugoti", "New" => "Naujas", "Text file" => "Teksto failas", "Folder" => "Katalogas", -"From url" => "IÅ¡ adreso", "Upload" => "Ä®kelti", "Cancel upload" => "AtÅ¡aukti siuntimÄ…", "Nothing in here. Upload something!" => "ÄŒia tuÅ¡Äia. Ä®kelkite kÄ… nors!", -"Share" => "Dalintis", "Download" => "Atsisiųsti", "Upload too large" => "Ä®kÄ—limui failas per didelis", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Bandomų įkelti failų dydis virÅ¡ija maksimalų leidžiamÄ… Å¡iame serveryje", diff --git a/apps/files/l10n/lv.php b/apps/files/l10n/lv.php index 813d693f94a97558c142dec2fc718f4aa494af5e..333679849182284d32eed63979a177f2125d6162 100644 --- a/apps/files/l10n/lv.php +++ b/apps/files/l10n/lv.php @@ -1,42 +1,41 @@ "Viss kÄrtÄ«bÄ, augÅ¡upielÄde veiksmÄ«ga", "No file was uploaded" => "Neviens fails netika augÅ¡uplÄdÄ“ts", +"Missing a temporary folder" => "TrÅ«kst pagaidu mapes", "Failed to write to disk" => "Nav iespÄ“jams saglabÄt", "Files" => "Faili", +"Unshare" => "PÄrtraukt lÄ«dzdalÄ«Å¡anu", "Delete" => "IzdzÄ“st", -"already exists" => "tÄds fails jau eksistÄ“", +"Rename" => "PÄrdÄ“vÄ“t", "replace" => "aizvietot", +"suggest name" => "Ieteiktais nosaukums", "cancel" => "atcelt", -"replaced" => "aizvietots", "undo" => "vienu soli atpakaļ", -"with" => "ar", -"deleted" => "izdzests", "generating ZIP-file, it may take some time." => "lai uzÄ£enerÄ“tu ZIP failu, kÄds brÄ«dis ir jÄpagaida", "Unable to upload your file as it is a directory or has 0 bytes" => "Nav iespÄ“jams augÅ¡uplÄdÄ“t jÅ«su failu, jo tÄds jau eksistÄ“ vai arÄ« failam nav izmÄ“ra (0 baiti)", "Upload Error" => "AugÅ¡uplÄdÄ“Å¡anas laikÄ radÄs kļūda", "Pending" => "Gaida savu kÄrtu", "Upload cancelled." => "AugÅ¡uplÄde ir atcelta", -"Invalid name, '/' is not allowed." => "Å is simbols '/', nav atļauts.", +"File upload is in progress. Leaving the page now will cancel the upload." => "Notiek augÅ¡upielÄde. Pametot lapu tagad, tiks atcelta augÅ¡upielÄde.", "Name" => "Nosaukums", "Size" => "IzmÄ“rs", "Modified" => "IzmainÄ«ts", -"folder" => "mape", -"folders" => "mapes", -"file" => "fails", -"files" => "faili", +"File handling" => "Failu pÄrvaldÄ«ba", "Maximum upload size" => "MaksimÄlais failu augÅ¡uplÄdes apjoms", "max. possible: " => "maksÄ«mÄlais iespÄ“jamais:", +"Needed for multi-file and folder downloads." => "VajadzÄ«gs vairÄku failu un mapju lejuplÄdei", "Enable ZIP-download" => "IespÄ“jot ZIP lejuplÄdi", "0 is unlimited" => "0 ir neierobežots", +"Save" => "SaglabÄt", "New" => "Jauns", "Text file" => "Teksta fails", "Folder" => "Mape", -"From url" => "No URL saites", "Upload" => "AugÅ¡uplÄdet", "Cancel upload" => "Atcelt augÅ¡uplÄdi", "Nothing in here. Upload something!" => "Te vÄ“l nekas nav. RÄ«kojies, sÄc augÅ¡uplÄdÄ“t", -"Share" => "LÄ«dzdalÄ«t", "Download" => "LejuplÄdÄ“t", "Upload too large" => "Fails ir par lielu lai to augÅ¡uplÄdetu", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "JÅ«su augÅ¡uplÄdÄ“jamie faili pÄrsniedz servera pieļaujamo failu augÅ¡upielÄdes apjomu", "Files are being scanned, please wait." => "Faili Å¡obrÄ«d tiek caurskatÄ«ti, nedaudz jÄpagaida.", "Current scanning" => "Å obrÄ«d tiek pÄrbaudÄ«ti" ); diff --git a/apps/files/l10n/mk.php b/apps/files/l10n/mk.php index f4aee5ba17890152e7bfa3d85d2ca87bc9f6cbb1..c47fdbdbf4ff8da099490bb5a9074359fc482cd6 100644 --- a/apps/files/l10n/mk.php +++ b/apps/files/l10n/mk.php @@ -1,6 +1,5 @@ "Ðема грешка, датотеката беше подигната уÑпешно", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Подигнатата датотека ја надминува upload_max_filesize директивата во php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Подигнатата датотеката ја надминува MAX_FILE_SIZE директивата која беше поÑтавена во HTML формата", "The uploaded file was only partially uploaded" => "Датотеката беше Ñамо делумно подигната.", "No file was uploaded" => "Ðе беше подигната датотека", @@ -11,16 +10,12 @@ "generating ZIP-file, it may take some time." => "Се генерира ZIP фајлот, ќе треба извеÑно време.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðе може да Ñе преземе вашата датотека бидејќи фолдерот во кој Ñе наоѓа фајлот има големина од 0 бајти", "Upload Error" => "Грешка при преземање", +"Close" => "Затвои", "Pending" => "Чека", "Upload cancelled." => "Преземањето е прекинато.", -"Invalid name, '/' is not allowed." => "неиÑправно име, '/' не е дозволено.", "Name" => "Име", "Size" => "Големина", "Modified" => "Променето", -"folder" => "фолдер", -"folders" => "фолдери", -"file" => "датотека", -"files" => "датотеки", "File handling" => "Ракување Ñо датотеки", "Maximum upload size" => "МакÑимална големина за подигање", "max. possible: " => "макÑ. можно:", @@ -28,14 +23,13 @@ "Enable ZIP-download" => "Овозможи ZIP Ñимнување ", "0 is unlimited" => "0 е неограничено", "Maximum input size for ZIP files" => "МакÑимална големина за Ð²Ð½ÐµÑ Ð½Ð° ZIP датотеки", +"Save" => "Сними", "New" => "Ðово", "Text file" => "ТекÑтуална датотека", "Folder" => "Папка", -"From url" => "Од адреÑа", "Upload" => "Подигни", "Cancel upload" => "Откажи прикачување", "Nothing in here. Upload something!" => "Тука нема ништо. Снимете нешто!", -"Share" => "Сподели", "Download" => "Преземи", "Upload too large" => "Датотеката е премногу голема", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Датотеките кои Ñе обидувате да ги подигнете ја надминуваат макÑималната големина за подигнување датотеки на овој Ñервер.", diff --git a/apps/files/l10n/ms_MY.php b/apps/files/l10n/ms_MY.php index bfa47969b3c33439eae44fdf37113e54be20ba65..d7756698d0cca44dfb02607cc5dc37ca1c2ff4de 100644 --- a/apps/files/l10n/ms_MY.php +++ b/apps/files/l10n/ms_MY.php @@ -1,6 +1,5 @@ "Tiada ralat, fail berjaya dimuat naik.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Fail yang dimuat naik melebihi penyata upload_max_filesize dalam php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Fail yang dimuat naik melebihi MAX_FILE_SIZE yang dinyatakan dalam form HTML ", "The uploaded file was only partially uploaded" => "Sebahagian daripada fail telah dimuat naik. ", "No file was uploaded" => "Tiada fail yang dimuat naik", @@ -8,25 +7,17 @@ "Failed to write to disk" => "Gagal untuk disimpan", "Files" => "fail", "Delete" => "Padam", -"already exists" => "Sudah wujud", "replace" => "ganti", "cancel" => "Batal", -"replaced" => "diganti", -"with" => "dengan", -"deleted" => "dihapus", "generating ZIP-file, it may take some time." => "sedang menghasilkan fail ZIP, mungkin mengambil sedikit masa.", "Unable to upload your file as it is a directory or has 0 bytes" => "Tidak boleh memuatnaik fail anda kerana mungkin ianya direktori atau saiz fail 0 bytes", "Upload Error" => "Muat naik ralat", +"Close" => "Tutup", "Pending" => "Dalam proses", "Upload cancelled." => "Muatnaik dibatalkan.", -"Invalid name, '/' is not allowed." => "penggunaa nama tidak sah, '/' tidak dibenarkan.", "Name" => "Nama ", "Size" => "Saiz", "Modified" => "Dimodifikasi", -"folder" => "direktori", -"folders" => "direktori", -"file" => "fail", -"files" => "fail", "File handling" => "Pengendalian fail", "Maximum upload size" => "Saiz maksimum muat naik", "max. possible: " => "maksimum:", @@ -34,14 +25,13 @@ "Enable ZIP-download" => "Aktifkan muatturun ZIP", "0 is unlimited" => "0 adalah tanpa had", "Maximum input size for ZIP files" => "Saiz maksimum input untuk fail ZIP", +"Save" => "Simpan", "New" => "Baru", "Text file" => "Fail teks", "Folder" => "Folder", -"From url" => "Dari url", "Upload" => "Muat naik", "Cancel upload" => "Batal muat naik", "Nothing in here. Upload something!" => "Tiada apa-apa di sini. Muat naik sesuatu!", -"Share" => "Kongsi", "Download" => "Muat turun", "Upload too large" => "Muat naik terlalu besar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server", diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php index cda1d51ed2f80ec9044664f2306ef544f14439fc..e5615a1c29b7945c6dff8019271a7ec1362c6680 100644 --- a/apps/files/l10n/nb_NO.php +++ b/apps/files/l10n/nb_NO.php @@ -1,33 +1,40 @@ "Det er ingen feil. Filen ble lastet opp.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Filstørrelsen overskrider maksgrensedirektivet upload_max_filesize i php.ini-konfigurasjonen.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Filstørrelsen overskrider maksgrensen pÃ¥ MAX_FILE_SIZE som ble oppgitt i HTML-skjemaet", "The uploaded file was only partially uploaded" => "Filopplastningen ble bare delvis gjennomført", "No file was uploaded" => "Ingen fil ble lastet opp", "Missing a temporary folder" => "Mangler en midlertidig mappe", "Failed to write to disk" => "Klarte ikke Ã¥ skrive til disk", "Files" => "Filer", +"Unshare" => "Avslutt deling", "Delete" => "Slett", -"already exists" => "eksisterer allerede", +"Rename" => "Omdøp", +"{new_name} already exists" => "{new_name} finnes allerede", "replace" => "erstatt", +"suggest name" => "foreslÃ¥ navn", "cancel" => "avbryt", -"replaced" => "erstattet", +"replaced {new_name}" => "erstatt {new_name}", "undo" => "angre", -"with" => "med", -"deleted" => "slettet", +"replaced {new_name} with {old_name}" => "erstatt {new_name} med {old_name}", +"deleted {files}" => "slettet {files}", "generating ZIP-file, it may take some time." => "opprettet ZIP-fil, dette kan ta litt tid", "Unable to upload your file as it is a directory or has 0 bytes" => "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes", "Upload Error" => "Opplasting feilet", +"Close" => "Lukk", "Pending" => "Ventende", +"1 file uploading" => "1 fil lastes opp", +"{count} files uploading" => "{count} filer laster opp", "Upload cancelled." => "Opplasting avbrutt.", -"Invalid name, '/' is not allowed." => "Ugyldig navn, '/' er ikke tillatt. ", +"File upload is in progress. Leaving the page now will cancel the upload." => "Filopplasting pÃ¥gÃ¥r. Forlater du siden nÃ¥ avbrytes opplastingen.", +"{count} files scanned" => "{count} filer lest inn", +"error while scanning" => "feil under skanning", "Name" => "Navn", "Size" => "Størrelse", "Modified" => "Endret", -"folder" => "mappe", -"folders" => "mapper", -"file" => "fil", -"files" => "filer", +"1 folder" => "1 mappe", +"{count} folders" => "{count} mapper", +"1 file" => "1 fil", +"{count} files" => "{count} filer", "File handling" => "FilhÃ¥ndtering", "Maximum upload size" => "Maksimum opplastingsstørrelse", "max. possible: " => "max. mulige:", @@ -39,11 +46,9 @@ "New" => "Ny", "Text file" => "Tekstfil", "Folder" => "Mappe", -"From url" => "Fra url", "Upload" => "Last opp", "Cancel upload" => "Avbryt opplasting", "Nothing in here. Upload something!" => "Ingenting her. Last opp noe!", -"Share" => "Del", "Download" => "Last ned", "Upload too large" => "Opplasting for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver Ã¥ laste opp er for store for Ã¥ laste opp til denne serveren.", diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php index 016f7341ab73524588537ed5535c39ccb6814465..093a5430d53a36ab19f8d993c6e6235d9114f2e9 100644 --- a/apps/files/l10n/nl.php +++ b/apps/files/l10n/nl.php @@ -1,6 +1,6 @@ "Geen fout opgetreden, bestand successvol geupload.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Het geüploade bestand is groter dan de upload_max_filesize instelling in php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Het geüploade bestand overscheidt de upload_max_filesize optie in php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Het geüploade bestand is groter dan de MAX_FILE_SIZE richtlijn die is opgegeven in de HTML-formulier", "The uploaded file was only partially uploaded" => "Het bestand is slechts gedeeltelijk geupload", "No file was uploaded" => "Geen bestand geüpload", @@ -10,31 +10,35 @@ "Unshare" => "Stop delen", "Delete" => "Verwijder", "Rename" => "Hernoem", -"already exists" => "bestaat al", +"{new_name} already exists" => "{new_name} bestaat al", "replace" => "vervang", "suggest name" => "Stel een naam voor", "cancel" => "annuleren", -"replaced" => "vervangen", +"replaced {new_name}" => "verving {new_name}", "undo" => "ongedaan maken", -"with" => "door", -"unshared" => "niet gedeeld", -"deleted" => "verwijderd", +"replaced {new_name} with {old_name}" => "verving {new_name} met {old_name}", +"unshared {files}" => "delen gestopt {files}", +"deleted {files}" => "verwijderde {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Onjuiste naam; '\\', '/', '<', '>', ':', '\"', '|', '?' en '*' zijn niet toegestaan.", "generating ZIP-file, it may take some time." => "aanmaken ZIP-file, dit kan enige tijd duren.", "Unable to upload your file as it is a directory or has 0 bytes" => "uploaden van de file mislukt, het is of een directory of de bestandsgrootte is 0 bytes", "Upload Error" => "Upload Fout", +"Close" => "Sluit", "Pending" => "Wachten", +"1 file uploading" => "1 bestand wordt ge-upload", +"{count} files uploading" => "{count} bestanden aan het uploaden", "Upload cancelled." => "Uploaden geannuleerd.", -"File upload is in progress. Leaving the page now will cancel the upload." => "Bestands upload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.", -"Invalid name, '/' is not allowed." => "Ongeldige naam, '/' is niet toegestaan.", -"files scanned" => "Gescande bestanden", +"File upload is in progress. Leaving the page now will cancel the upload." => "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Folder naam niet toegestaan. Het gebruik van \"Shared\" is aan Owncloud voorbehouden", +"{count} files scanned" => "{count} bestanden gescanned", "error while scanning" => "Fout tijdens het scannen", "Name" => "Naam", "Size" => "Bestandsgrootte", "Modified" => "Laatst aangepast", -"folder" => "map", -"folders" => "mappen", -"file" => "bestand", -"files" => "bestanden", +"1 folder" => "1 map", +"{count} folders" => "{count} mappen", +"1 file" => "1 bestand", +"{count} files" => "{count} bestanden", "File handling" => "Bestand", "Maximum upload size" => "Maximale bestandsgrootte voor uploads", "max. possible: " => "max. mogelijk: ", @@ -46,11 +50,10 @@ "New" => "Nieuw", "Text file" => "Tekstbestand", "Folder" => "Map", -"From url" => "Van hyperlink", +"From link" => "Vanaf link", "Upload" => "Upload", "Cancel upload" => "Upload afbreken", "Nothing in here. Upload something!" => "Er bevindt zich hier niets. Upload een bestand!", -"Share" => "Delen", "Download" => "Download", "Upload too large" => "Bestanden te groot", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "De bestanden die u probeert te uploaden zijn groter dan de maximaal toegestane bestandsgrootte voor deze server.", diff --git a/apps/files/l10n/nn_NO.php b/apps/files/l10n/nn_NO.php index 7af37057ce037ec0993a8f991822576ae5260b8c..04e01a39cfc86c3b60e96e8ecec391f8e8a5884a 100644 --- a/apps/files/l10n/nn_NO.php +++ b/apps/files/l10n/nn_NO.php @@ -1,16 +1,17 @@ "Ingen feil, fila vart lasta opp", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den opplasta fila er større enn variabelen upload_max_filesize i php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den opplasta fila er større enn variabelen MAX_FILE_SIZE i HTML-skjemaet", "The uploaded file was only partially uploaded" => "Fila vart berre delvis lasta opp", "No file was uploaded" => "Ingen filer vart lasta opp", "Missing a temporary folder" => "Manglar ei mellombels mappe", "Files" => "Filer", "Delete" => "Slett", +"Close" => "Lukk", "Name" => "Namn", "Size" => "Storleik", "Modified" => "Endra", "Maximum upload size" => "Maksimal opplastingsstorleik", +"Save" => "Lagre", "New" => "Ny", "Text file" => "Tekst fil", "Folder" => "Mappe", diff --git a/apps/files/l10n/oc.php b/apps/files/l10n/oc.php index 3f70761e9035aca492e04e0a01e72ceab0bce277..36bbb433394c6b8095d851cb18d594ccf897ea75 100644 --- a/apps/files/l10n/oc.php +++ b/apps/files/l10n/oc.php @@ -1,6 +1,5 @@ "Amontcargament capitat, pas d'errors", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Lo fichièr amontcargat es tròp bèl per la directiva «upload_max_filesize » del php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lo fichièr amontcargat es mai gròs que la directiva «MAX_FILE_SIZE» especifiada dins lo formulari HTML", "The uploaded file was only partially uploaded" => "Lo fichièr foguèt pas completament amontcargat", "No file was uploaded" => "Cap de fichièrs son estats amontcargats", @@ -10,43 +9,21 @@ "Unshare" => "Non parteja", "Delete" => "Escafa", "Rename" => "Torna nomenar", -"already exists" => "existís jà", "replace" => "remplaça", "suggest name" => "nom prepausat", "cancel" => "anulla", -"replaced" => "remplaçat", "undo" => "defar", -"with" => "amb", -"unshared" => "Non partejat", -"deleted" => "escafat", "generating ZIP-file, it may take some time." => "Fichièr ZIP a se far, aquò pòt trigar un briu.", "Unable to upload your file as it is a directory or has 0 bytes" => "Impossible d'amontcargar lo teu fichièr qu'es un repertòri o que ten pas que 0 octet.", "Upload Error" => "Error d'amontcargar", "Pending" => "Al esperar", "1 file uploading" => "1 fichièr al amontcargar", -"files uploading" => "fichièrs al amontcargar", "Upload cancelled." => "Amontcargar anullat.", "File upload is in progress. Leaving the page now will cancel the upload." => "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. ", -"Invalid name, '/' is not allowed." => "Nom invalid, '/' es pas permis.", -"files scanned" => "Fichièr explorat", "error while scanning" => "error pendant l'exploracion", "Name" => "Nom", "Size" => "Talha", "Modified" => "Modificat", -"folder" => "Dorsièr", -"folders" => "Dorsièrs", -"file" => "fichièr", -"files" => "fichièrs", -"seconds ago" => "secondas", -"minute ago" => "minuta", -"minutes ago" => "minutas", -"today" => "uèi", -"yesterday" => "ièr", -"days ago" => "jorns", -"last month" => "mes passat", -"months ago" => "meses", -"last year" => "an passat", -"years ago" => "ans", "File handling" => "Manejament de fichièr", "Maximum upload size" => "Talha maximum d'amontcargament", "max. possible: " => "max. possible: ", @@ -58,11 +35,9 @@ "New" => "Nòu", "Text file" => "Fichièr de tèxte", "Folder" => "Dorsièr", -"From url" => "Dempuèi l'URL", "Upload" => "Amontcarga", "Cancel upload" => " Anulla l'amontcargar", "Nothing in here. Upload something!" => "Pas res dedins. Amontcarga qualquaren", -"Share" => "Parteja", "Download" => "Avalcarga", "Upload too large" => "Amontcargament tròp gròs", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los fichièrs que sias a amontcargar son tròp pesucs per la talha maxi pel servidor.", diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php index 425c6a5a18dffb99fdcb88e8091c26c355741911..8051eae8c429a161a6962d88b8a8b740bdc36edb 100644 --- a/apps/files/l10n/pl.php +++ b/apps/files/l10n/pl.php @@ -1,6 +1,6 @@ "PrzesÅ‚ano plik", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Rozmiar przesÅ‚anego pliku przekracza maksymalnÄ… wartość dyrektywy upload_max_filesize, zawartÄ… w pliku php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Wgrany plik przekracza wartość upload_max_filesize zdefiniowanÄ… w php.ini: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Rozmiar przesÅ‚anego pliku przekracza maksymalnÄ… wartość dyrektywy upload_max_filesize, zawartÄ… formularzu HTML", "The uploaded file was only partially uploaded" => "Plik przesÅ‚ano tylko częściowo", "No file was uploaded" => "Nie przesÅ‚ano żadnego pliku", @@ -10,43 +10,35 @@ "Unshare" => "Nie udostÄ™pniaj", "Delete" => "Usuwa element", "Rename" => "ZmieÅ„ nazwÄ™", -"already exists" => "Już istnieje", +"{new_name} already exists" => "{new_name} już istnieje", "replace" => "zastap", "suggest name" => "zasugeruj nazwÄ™", "cancel" => "anuluj", -"replaced" => "zastÄ…pione", +"replaced {new_name}" => "zastÄ…piony {new_name}", "undo" => "wróć", -"with" => "z", -"unshared" => "Nie udostÄ™pnione", -"deleted" => "skasuj", +"replaced {new_name} with {old_name}" => "zastÄ…piony {new_name} z {old_name}", +"unshared {files}" => "UdostÄ™pniane wstrzymane {files}", +"deleted {files}" => "usuniÄ™to {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Niepoprawna nazwa, Znaki '\\', '/', '<', '>', ':', '\"', '|', '?' oraz '*'sÄ… niedozwolone.", "generating ZIP-file, it may take some time." => "Generowanie pliku ZIP, może potrwać pewien czas.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nie można wczytać pliku jeÅ›li jest katalogiem lub ma 0 bajtów", "Upload Error" => "BÅ‚Ä…d wczytywania", +"Close" => "Zamknij", "Pending" => "OczekujÄ…ce", "1 file uploading" => "1 plik wczytany", -"files uploading" => "pliki wczytane", +"{count} files uploading" => "{count} przesyÅ‚anie plików", "Upload cancelled." => "Wczytywanie anulowane.", "File upload is in progress. Leaving the page now will cancel the upload." => "WysyÅ‚anie pliku jest w toku. Teraz opuszczajÄ…c stronÄ™ wysyÅ‚anie zostanie anulowane.", -"Invalid name, '/' is not allowed." => "NieprawidÅ‚owa nazwa '/' jest niedozwolone.", -"files scanned" => "Pliki skanowane", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "BÅ‚Ä™dna nazwa folderu. Nazwa \"Shared\" jest zarezerwowana dla Owncloud", +"{count} files scanned" => "{count} pliki skanowane", "error while scanning" => "WystÄ…piÅ‚ bÅ‚Ä…d podczas skanowania", "Name" => "Nazwa", "Size" => "Rozmiar", "Modified" => "Czas modyfikacji", -"folder" => "folder", -"folders" => "foldery", -"file" => "plik", -"files" => "pliki", -"seconds ago" => "sekund temu", -"minute ago" => "minutÄ™ temu", -"minutes ago" => "minut temu", -"today" => "dziÅ›", -"yesterday" => "wczoraj", -"days ago" => "dni temu", -"last month" => "ostani miesiÄ…c", -"months ago" => "miesiÄ™cy temu", -"last year" => "ostatni rok", -"years ago" => "lat temu", +"1 folder" => "1 folder", +"{count} folders" => "{count} foldery", +"1 file" => "1 plik", +"{count} files" => "{count} pliki", "File handling" => "ZarzÄ…dzanie plikami", "Maximum upload size" => "Maksymalny rozmiar wysyÅ‚anego pliku", "max. possible: " => "max. możliwych", @@ -58,11 +50,10 @@ "New" => "Nowy", "Text file" => "Plik tekstowy", "Folder" => "Katalog", -"From url" => "Z adresu", +"From link" => "Z linku", "Upload" => "PrzeÅ›lij", "Cancel upload" => "PrzestaÅ„ wysyÅ‚ać", "Nothing in here. Upload something!" => "Brak zawartoÅ›ci. ProszÄ™ wysÅ‚ać pliki!", -"Share" => "Współdziel", "Download" => "Pobiera element", "Upload too large" => "WysyÅ‚any plik ma za duży rozmiar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Pliki które próbujesz przesÅ‚ać, przekraczajÄ… maksymalnÄ…, dopuszczalnÄ… wielkość.", diff --git a/apps/files/l10n/pl_PL.php b/apps/files/l10n/pl_PL.php new file mode 100644 index 0000000000000000000000000000000000000000..157d9a41e4d097fc664eec8002145d1ff975abe8 --- /dev/null +++ b/apps/files/l10n/pl_PL.php @@ -0,0 +1,3 @@ + "Zapisz" +); diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php index 59ec8a8a018ee6e01d53f21c4371f8bd8e6b4304..97e5c94fb31a7e8ea5888ef666dcf01a4ae26d9d 100644 --- a/apps/files/l10n/pt_BR.php +++ b/apps/files/l10n/pt_BR.php @@ -1,6 +1,6 @@ "Não houve nenhum erro, o arquivo foi transferido com sucesso", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O tamanho do arquivo excede o limed especifiicado em upload_max_filesize no php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O arquivo enviado excede a diretiva upload_max_filesize no php.ini: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O arquivo carregado excede o MAX_FILE_SIZE que foi especificado no formulário HTML", "The uploaded file was only partially uploaded" => "O arquivo foi transferido parcialmente", "No file was uploaded" => "Nenhum arquivo foi transferido", @@ -10,43 +10,35 @@ "Unshare" => "Descompartilhar", "Delete" => "Excluir", "Rename" => "Renomear", -"already exists" => "já existe", +"{new_name} already exists" => "{new_name} já existe", "replace" => "substituir", "suggest name" => "sugerir nome", "cancel" => "cancelar", -"replaced" => "substituido ", +"replaced {new_name}" => "substituído {new_name}", "undo" => "desfazer", -"with" => "com", -"unshared" => "descompartilhado", -"deleted" => "deletado", +"replaced {new_name} with {old_name}" => "Substituído {old_name} por {new_name} ", +"unshared {files}" => "{files} não compartilhados", +"deleted {files}" => "{files} apagados", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome inválido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.", "generating ZIP-file, it may take some time." => "gerando arquivo ZIP, isso pode levar um tempo.", "Unable to upload your file as it is a directory or has 0 bytes" => "Impossível enviar seus arquivo como diretório ou ele tem 0 bytes.", "Upload Error" => "Erro de envio", +"Close" => "Fechar", "Pending" => "Pendente", "1 file uploading" => "enviando 1 arquivo", -"files uploading" => "enviando arquivos", +"{count} files uploading" => "Enviando {count} arquivos", "Upload cancelled." => "Envio cancelado.", "File upload is in progress. Leaving the page now will cancel the upload." => "Upload em andamento. Sair da página agora resultará no cancelamento do envio.", -"Invalid name, '/' is not allowed." => "Nome inválido, '/' não é permitido.", -"files scanned" => "arquivos verificados", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nome de pasta inválido. O nome \"Shared\" é reservado pelo Owncloud", +"{count} files scanned" => "{count} arquivos scaneados", "error while scanning" => "erro durante verificação", "Name" => "Nome", "Size" => "Tamanho", "Modified" => "Modificado", -"folder" => "pasta", -"folders" => "pastas", -"file" => "arquivo", -"files" => "arquivos", -"seconds ago" => "segundos atrás", -"minute ago" => "minuto atrás", -"minutes ago" => "minutos atrás", -"today" => "hoje", -"yesterday" => "ontem", -"days ago" => "dias atrás", -"last month" => "último mês", -"months ago" => "meses atrás", -"last year" => "último ano", -"years ago" => "anos atrás", +"1 folder" => "1 pasta", +"{count} folders" => "{count} pastas", +"1 file" => "1 arquivo", +"{count} files" => "{count} arquivos", "File handling" => "Tratamento de Arquivo", "Maximum upload size" => "Tamanho máximo para carregar", "max. possible: " => "max. possível:", @@ -58,11 +50,10 @@ "New" => "Novo", "Text file" => "Arquivo texto", "Folder" => "Pasta", -"From url" => "URL de origem", +"From link" => "Do link", "Upload" => "Carregar", "Cancel upload" => "Cancelar upload", "Nothing in here. Upload something!" => "Nada aqui.Carrege alguma coisa!", -"Share" => "Compartilhar", "Download" => "Baixar", "Upload too large" => "Arquivo muito grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor.", diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php index 5968769f2a1c22ea5ac93bb7c1441872b8d9269e..8c90fd477143316bcbbb9600d2979535c03f0ffa 100644 --- a/apps/files/l10n/pt_PT.php +++ b/apps/files/l10n/pt_PT.php @@ -1,6 +1,6 @@ "Sem erro, ficheiro enviado com sucesso", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O ficheiro enviado excede a directiva upload_max_filesize no php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado excede o diretivo MAX_FILE_SIZE especificado no formulário HTML", "The uploaded file was only partially uploaded" => "O ficheiro enviado só foi enviado parcialmente", "No file was uploaded" => "Não foi enviado nenhum ficheiro", @@ -10,43 +10,35 @@ "Unshare" => "Deixar de partilhar", "Delete" => "Apagar", "Rename" => "Renomear", -"already exists" => "já existe", +"{new_name} already exists" => "O nome {new_name} já existe", "replace" => "substituir", "suggest name" => "Sugira um nome", "cancel" => "cancelar", -"replaced" => "substituído", +"replaced {new_name}" => "{new_name} substituido", "undo" => "desfazer", -"with" => "com", -"unshared" => "não partilhado", -"deleted" => "apagado", +"replaced {new_name} with {old_name}" => "substituido {new_name} por {old_name}", +"unshared {files}" => "{files} não partilhado(s)", +"deleted {files}" => "{files} eliminado(s)", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome Inválido, os caracteres '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.", "generating ZIP-file, it may take some time." => "a gerar o ficheiro ZIP, poderá demorar algum tempo.", "Unable to upload your file as it is a directory or has 0 bytes" => "Não é possível fazer o envio do ficheiro devido a ser uma pasta ou ter 0 bytes", "Upload Error" => "Erro no envio", +"Close" => "Fechar", "Pending" => "Pendente", "1 file uploading" => "A enviar 1 ficheiro", -"files uploading" => "ficheiros a serem enviados", +"{count} files uploading" => "A carregar {count} ficheiros", "Upload cancelled." => "O envio foi cancelado.", "File upload is in progress. Leaving the page now will cancel the upload." => "Envio de ficheiro em progresso. Irá cancelar o envio se sair da página agora.", -"Invalid name, '/' is not allowed." => "Nome inválido, '/' não permitido.", -"files scanned" => "ficheiros analisados", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nome de pasta inválido! O uso de \"Shared\" (Partilhado) está reservado pelo OwnCloud", +"{count} files scanned" => "{count} ficheiros analisados", "error while scanning" => "erro ao analisar", "Name" => "Nome", "Size" => "Tamanho", "Modified" => "Modificado", -"folder" => "pasta", -"folders" => "pastas", -"file" => "ficheiro", -"files" => "ficheiros", -"seconds ago" => "há segundos", -"minute ago" => "há um minuto", -"minutes ago" => "há minutos", -"today" => "hoje", -"yesterday" => "ontem", -"days ago" => "há dias", -"last month" => "mês passado", -"months ago" => "há meses", -"last year" => "ano passado", -"years ago" => "há anos", +"1 folder" => "1 pasta", +"{count} folders" => "{count} pastas", +"1 file" => "1 ficheiro", +"{count} files" => "{count} ficheiros", "File handling" => "Manuseamento de ficheiros", "Maximum upload size" => "Tamanho máximo de envio", "max. possible: " => "max. possivel: ", @@ -58,11 +50,10 @@ "New" => "Novo", "Text file" => "Ficheiro de texto", "Folder" => "Pasta", -"From url" => "Do endereço", +"From link" => "Da ligação", "Upload" => "Enviar", "Cancel upload" => "Cancelar envio", "Nothing in here. Upload something!" => "Vazio. Envie alguma coisa!", -"Share" => "Partilhar", "Download" => "Transferir", "Upload too large" => "Envio muito grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que está a tentar enviar excedem o tamanho máximo de envio permitido neste servidor.", diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php index 8d651e23827a82423a5084fdccd5ecb5ff7a9cb4..34e8dc8a50ea909142267f6965396f44f2e2b43a 100644 --- a/apps/files/l10n/ro.php +++ b/apps/files/l10n/ro.php @@ -1,6 +1,5 @@ "Nicio eroare, fiÈ™ierul a fost încărcat cu succes", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "FiÈ™ierul are o dimensiune mai mare decât cea specificată în variabila upload_max_filesize din php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "FiÈ™ierul are o dimensiune mai mare decât variabile MAX_FILE_SIZE specificată în formularul HTML", "The uploaded file was only partially uploaded" => "FiÈ™ierul a fost încărcat doar parÈ›ial", "No file was uploaded" => "Niciun fiÈ™ier încărcat", @@ -10,43 +9,22 @@ "Unshare" => "Anulează partajarea", "Delete" => "Șterge", "Rename" => "Redenumire", -"already exists" => "deja există", "replace" => "înlocuire", "suggest name" => "sugerează nume", "cancel" => "anulare", -"replaced" => "înlocuit", "undo" => "Anulează ultima acÈ›iune", -"with" => "cu", -"unshared" => "nepartajat", -"deleted" => "È™ters", "generating ZIP-file, it may take some time." => "se generază fiÈ™ierul ZIP, va dura ceva timp.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nu s-a putut încărca fiÈ™ierul tău deoarece pare să fie un director sau are 0 bytes.", "Upload Error" => "Eroare la încărcare", +"Close" => "ÃŽnchide", "Pending" => "ÃŽn aÈ™teptare", "1 file uploading" => "un fiÈ™ier se încarcă", -"files uploading" => "fiÈ™iere se încarcă", "Upload cancelled." => "ÃŽncărcare anulată.", "File upload is in progress. Leaving the page now will cancel the upload." => "FiÈ™ierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea.", -"Invalid name, '/' is not allowed." => "Nume invalid, '/' nu este permis.", -"files scanned" => "fiÈ™iere scanate", "error while scanning" => "eroare la scanarea", "Name" => "Nume", "Size" => "Dimensiune", "Modified" => "Modificat", -"folder" => "director", -"folders" => "directoare", -"file" => "fiÈ™ier", -"files" => "fiÈ™iere", -"seconds ago" => "secunde în urmă", -"minute ago" => "minut în urmă", -"minutes ago" => "minute în urmă", -"today" => "astăzi", -"yesterday" => "ieri", -"days ago" => "zile în urmă", -"last month" => "ultima lună", -"months ago" => "luni în urmă", -"last year" => "ultimul an", -"years ago" => "ani în urmă", "File handling" => "Manipulare fiÈ™iere", "Maximum upload size" => "Dimensiune maximă admisă la încărcare", "max. possible: " => "max. posibil:", @@ -58,11 +36,9 @@ "New" => "Nou", "Text file" => "FiÈ™ier text", "Folder" => "Dosar", -"From url" => "De la URL", "Upload" => "ÃŽncarcă", "Cancel upload" => "Anulează încărcarea", "Nothing in here. Upload something!" => "Nimic aici. ÃŽncarcă ceva!", -"Share" => "Partajează", "Download" => "Descarcă", "Upload too large" => "FiÈ™ierul încărcat este prea mare", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "FiÈ™ierul care l-ai încărcat a depășită limita maximă admisă la încărcare pe acest server.", diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php index d21d6e3a6d8f685d20d843308bff9af28d3b27a6..5a8f448dc36f155ccd85746f0f1ce9c2293917af 100644 --- a/apps/files/l10n/ru.php +++ b/apps/files/l10n/ru.php @@ -1,6 +1,5 @@ "Файл уÑпешно загружен", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Файл превышает допуÑтимые размеры (опиÑаны как upload_max_filesize в php.ini)", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Файл превышает размер MAX_FILE_SIZE, указаный в HTML-форме", "The uploaded file was only partially uploaded" => "Файл был загружен не полноÑтью", "No file was uploaded" => "Файл не был загружен", @@ -9,29 +8,36 @@ "Files" => "Файлы", "Unshare" => "Отменить публикацию", "Delete" => "Удалить", -"already exists" => "уже ÑущеÑтвует", +"Rename" => "Переименовать", +"{new_name} already exists" => "{new_name} уже ÑущеÑтвует", "replace" => "заменить", "suggest name" => "предложить название", "cancel" => "отмена", -"replaced" => "заменён", +"replaced {new_name}" => "заменено {new_name}", "undo" => "отмена", -"with" => "Ñ", -"unshared" => "Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð°", -"deleted" => "удален", +"replaced {new_name} with {old_name}" => "заменено {new_name} на {old_name}", +"unshared {files}" => "не опубликованные {files}", +"deleted {files}" => "удаленные {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ðеправильное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' недопуÑтимы.", "generating ZIP-file, it may take some time." => "Ñоздание ZIP-файла, Ñто может занÑÑ‚ÑŒ некоторое времÑ.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðе удаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ файл размером 0 байт в каталог", "Upload Error" => "Ошибка загрузки", +"Close" => "Закрыть", "Pending" => "Ожидание", +"1 file uploading" => "загружаетÑÑ 1 файл", +"{count} files uploading" => "{count} файлов загружаетÑÑ", "Upload cancelled." => "Загрузка отменена.", "File upload is in progress. Leaving the page now will cancel the upload." => "Файл в процеÑÑе загрузки. Покинув Ñтраницу вы прервёте загрузку.", -"Invalid name, '/' is not allowed." => "Ðеверное имÑ, '/' не допуÑкаетÑÑ.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Ðе правильное Ð¸Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸. Ð˜Ð¼Ñ \"Shared\" резервировано в Owncloud", +"{count} files scanned" => "{count} файлов проÑканировано", +"error while scanning" => "ошибка во Ð²Ñ€ÐµÐ¼Ñ ÑанированиÑ", "Name" => "Ðазвание", "Size" => "Размер", "Modified" => "Изменён", -"folder" => "папка", -"folders" => "папки", -"file" => "файл", -"files" => "файлы", +"1 folder" => "1 папка", +"{count} folders" => "{count} папок", +"1 file" => "1 файл", +"{count} files" => "{count} файлов", "File handling" => "Управление файлами", "Maximum upload size" => "МакÑимальный размер загружаемого файла", "max. possible: " => "макÑ. возможно: ", @@ -43,11 +49,10 @@ "New" => "Ðовый", "Text file" => "ТекÑтовый файл", "Folder" => "Папка", -"From url" => "С url", +"From link" => "Из ÑÑылки", "Upload" => "Загрузить", "Cancel upload" => "Отмена загрузки", "Nothing in here. Upload something!" => "ЗдеÑÑŒ ничего нет. Загрузите что-нибудь!", -"Share" => "Опубликовать", "Download" => "Скачать", "Upload too large" => "Файл Ñлишком большой", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файлы, которые Ð’Ñ‹ пытаетеÑÑŒ загрузить, превышают лимит Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² на Ñтом Ñервере.", diff --git a/apps/files/l10n/ru_RU.php b/apps/files/l10n/ru_RU.php index 34e9d19ca33aa5a036f73f380da929de200cbc35..5a6c032ed965cfab15da21b0c8921c481a05c6bc 100644 --- a/apps/files/l10n/ru_RU.php +++ b/apps/files/l10n/ru_RU.php @@ -1,6 +1,5 @@ "Ошибка отÑутÑтвует, файл загружен уÑпешно.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Размер загруженного файла превышает заданный в директиве upload_max_filesize в php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Размер загруженного", "The uploaded file was only partially uploaded" => "Загружаемый файл был загружен чаÑтично", "No file was uploaded" => "Файл не был загружен", @@ -10,43 +9,35 @@ "Unshare" => "Скрыть", "Delete" => "Удалить", "Rename" => "Переименовать", -"already exists" => "уже ÑущеÑтвует", +"{new_name} already exists" => "{новое_имÑ} уже ÑущеÑтвует", "replace" => "отмена", "suggest name" => "подобрать название", "cancel" => "отменить", -"replaced" => "заменено", +"replaced {new_name}" => "заменено {новое_имÑ}", "undo" => "отменить дейÑтвие", -"with" => "Ñ", -"unshared" => "Ñкрытый", -"deleted" => "удалено", +"replaced {new_name} with {old_name}" => "заменено {новое_имÑ} Ñ {Ñтарое_имÑ}", +"unshared {files}" => "CовмеÑтное иÑпользование прекращено {файлы}", +"deleted {files}" => "удалено {файлы}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ðекорректное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допуÑтимы.", "generating ZIP-file, it may take some time." => "Создание ZIP-файла, Ñто может занÑÑ‚ÑŒ некоторое времÑ.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðевозможно загрузить файл,\n так как он имеет нулевой размер или ÑвлÑетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÐ¹", "Upload Error" => "Ошибка загрузки", +"Close" => "Закрыть", "Pending" => "Ожидающий решениÑ", "1 file uploading" => "загрузка 1 файла", -"files uploading" => "загрузка файлов", +"{count} files uploading" => "{количеÑтво} загружено файлов", "Upload cancelled." => "Загрузка отменена", "File upload is in progress. Leaving the page now will cancel the upload." => "ПроцеÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файла. ЕÑли покинуть Ñтраницу ÑейчаÑ, загрузка будет отменена.", -"Invalid name, '/' is not allowed." => "Ðеправильное имÑ, '/' не допуÑкаетÑÑ.", -"files scanned" => "файлы отÑканированы", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Ðекорректное Ð¸Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸. Ðименование \"Опубликовано\" зарезервировано ownCloud", +"{count} files scanned" => "{количеÑтво} файлов отÑканировано", "error while scanning" => "ошибка при Ñканировании", "Name" => "ИмÑ", "Size" => "Размер", "Modified" => "Изменен", -"folder" => "папка", -"folders" => "папки", -"file" => "файл", -"files" => "файлы", -"seconds ago" => "Ñекунд назад", -"minute ago" => "минуту назад", -"minutes ago" => "минут назад", -"today" => "ÑегоднÑ", -"yesterday" => "вчера", -"days ago" => "дней назад", -"last month" => "в прошлом меÑÑце", -"months ago" => "меÑÑцев назад", -"last year" => "в прошлом году", -"years ago" => "лет назад", +"1 folder" => "1 папка", +"{count} folders" => "{количеÑтво} папок", +"1 file" => "1 файл", +"{count} files" => "{количеÑтво} файлов", "File handling" => "Работа Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸", "Maximum upload size" => "МакÑимальный размер загружаемого файла", "max. possible: " => "МакÑимально возможный", @@ -58,11 +49,10 @@ "New" => "Ðовый", "Text file" => "ТекÑтовый файл", "Folder" => "Папка", -"From url" => "Из url", +"From link" => "По ÑÑылке", "Upload" => "Загрузить ", "Cancel upload" => "Отмена загрузки", "Nothing in here. Upload something!" => "ЗдеÑÑŒ ничего нет. Загрузите что-нибудь!", -"Share" => "Сделать общим", "Download" => "Загрузить", "Upload too large" => "Загрузка Ñлишком велика", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Размер файлов, которые Ð’Ñ‹ пытаетеÑÑŒ загрузить, превышает макÑимально допуÑтимый размер Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ на данный Ñервер.", diff --git a/apps/files/l10n/si_LK.php b/apps/files/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..e256075896f9fd038efce43b84444cb03bb9dd21 --- /dev/null +++ b/apps/files/l10n/si_LK.php @@ -0,0 +1,48 @@ + "නිවà·à¶»à¶¯à·’ à·€ ගොනුව උඩුගත කෙරිනි", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "උඩුගත කළ ගොනුවේ විà·à·à¶½à¶­à·Šà·€à¶º HTML පà·à¶»à¶¸à¶ºà·š නියම කළ ඇති MAX_FILE_SIZE විà·à·à¶½à¶­à·Šà·€à¶ºà¶§ වඩ෠වà·à¶©à·’ය", +"The uploaded file was only partially uploaded" => "උඩුගත කළ ගොනුවේ කොටසක් පමණක් උඩුගත විය", +"No file was uploaded" => "කිසිදු ගොනවක් උඩුගත නොවිනි", +"Missing a temporary folder" => "තà·à·€à¶šà·à¶½à·’ක ෆොල්ඩරයක් සොයà·à¶œà¶­ නොහà·à¶š", +"Failed to write to disk" => "තà·à¶§à·’ගත කිරීම අසà·à¶»à·Šà¶®à¶šà¶ºà·’", +"Files" => "ගොනු", +"Unshare" => "නොබෙදු", +"Delete" => "මකන්න", +"Rename" => "නà·à·€à¶­ නම් කරන්න", +"replace" => "ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º කරන්න", +"suggest name" => "නමක් යà·à¶¢à¶±à· කරන්න", +"cancel" => "අත් හරින්න", +"undo" => "නිෂ්ප්â€à¶»à¶· කරන්න", +"generating ZIP-file, it may take some time." => "ගොනුවක් සෑදෙමින් පවතී. කෙටි වේලà·à·€à¶šà·Š ගත විය à·„à·à¶š", +"Upload Error" => "උඩුගත කිරීමේ දà·à·à¶ºà¶šà·Š", +"Close" => "වසන්න", +"1 file uploading" => "1 ගොනුවක් උඩගත කෙරේ", +"Upload cancelled." => "උඩුගත කිරීම අත් හරින්න ලදී", +"File upload is in progress. Leaving the page now will cancel the upload." => "උඩුගතකිරීමක් සිදුවේ. පිටුව à·„à·à¶» යà·à¶¸à·™à¶±à·Š එය නà·à·€à¶­à·™à¶±à·” ඇත", +"error while scanning" => "පරීක්ෂ෠කිරීමේදී දà·à·‚යක්", +"Name" => "නම", +"Size" => "ප්â€à¶»à¶¸à·à¶«à¶º", +"Modified" => "වෙනස් කළ", +"1 folder" => "1 ෆොල්ඩරයක්", +"1 file" => "1 ගොනුවක්", +"File handling" => "ගොනු පරිහරණය", +"Maximum upload size" => "උඩුගත කිරීමක උපරිම ප්â€à¶»à¶¸à·à¶«à¶º", +"max. possible: " => "à·„à·à¶šà·’ උපරිමය:", +"Needed for multi-file and folder downloads." => "බහු-ගොනු හ෠ෆොල්ඩර බà·à¶œà¶­ කිරීමට අවà·à·Šâ€à¶ºà¶ºà·’", +"Enable ZIP-download" => "ZIP-බà·à¶œà¶­ කිරීම් සක්â€à¶»à·’ය කරන්න", +"0 is unlimited" => "0 යනු සීමà·à·€à¶šà·Š නà·à¶­à·’ බවය", +"Maximum input size for ZIP files" => "ZIP ගොනු සඳහ෠දà·à¶¸à·’ය à·„à·à¶šà·’ උපරිම විà·à·à¶½à¶­à·€à¶º", +"Save" => "සුරකින්න", +"New" => "නව", +"Text file" => "පෙළ ගොනුව", +"Folder" => "à·†à·à¶½à·Šà¶©à¶»à¶º", +"From link" => "යොමුවෙන්", +"Upload" => "උඩුගත කිරීම", +"Cancel upload" => "උඩුගත කිරීම අත් හරින්න", +"Nothing in here. Upload something!" => "මෙහි කිසිවක් නොමà·à¶­. යමක් උඩුගත කරන්න", +"Download" => "බà·à¶œà¶­ කිරීම", +"Upload too large" => "උඩුගත කිරීම විà·à·à¶½ à·€à·à¶©à·’ය", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "ඔබ උඩුගත කිරීමට තà·à¶­à·Š කරන ගොනු මෙම සේවà·à¶¯à·à¶ºà¶šà¶ºà· උඩුගත කිරීමට ඉඩදී ඇති උපරිම ගොනු විà·à·à¶½à¶­à·Šà·€à¶ºà¶§ වඩ෠වà·à¶©à·’ය", +"Files are being scanned, please wait." => "ගොනු පරික්ෂ෠කෙරේ. මඳක් රà·à¶³à·“ සිටින්න", +"Current scanning" => "වර්තමà·à¶± පරික්ෂà·à·€" +); diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php index 7f8c35650dd6b640c3cfc1701e3300851875c36d..21d9710f6ba3f82b08f47df936770d194748af03 100644 --- a/apps/files/l10n/sk_SK.php +++ b/apps/files/l10n/sk_SK.php @@ -1,6 +1,6 @@ "Nenastala žiadna chyba, súbor bol úspeÅ¡ne nahraný", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Nahraný súbor presiahol direktívu upload_max_filesize v php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Nahraný súbor predÄil konfiguraÄnú direktívu upload_max_filesize v súbore php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Nahrávaný súbor presiahol MAX_FILE_SIZE direktívu, ktorá bola Å¡pecifikovaná v HTML formulári", "The uploaded file was only partially uploaded" => "Nahrávaný súbor bol iba ÄiastoÄne nahraný", "No file was uploaded" => "Žiaden súbor nebol nahraný", @@ -10,43 +10,35 @@ "Unshare" => "NezdielaÅ¥", "Delete" => "OdstrániÅ¥", "Rename" => "PremenovaÅ¥", -"already exists" => "už existuje", +"{new_name} already exists" => "{new_name} už existuje", "replace" => "nahradiÅ¥", "suggest name" => "pomôcÅ¥ s menom", "cancel" => "zruÅ¡iÅ¥", -"replaced" => "zmenené", +"replaced {new_name}" => "prepísaný {new_name}", "undo" => "vrátiÅ¥", -"with" => "s", -"unshared" => "zdielané", -"deleted" => "zmazané", +"replaced {new_name} with {old_name}" => "prepísaný {new_name} súborom {old_name}", +"unshared {files}" => "zdieľanie zruÅ¡ené pre {files}", +"deleted {files}" => "zmazané {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nesprávne meno, '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nie sú povolené hodnoty.", "generating ZIP-file, it may take some time." => "generujem ZIP-súbor, môže to chvíľu trvaÅ¥.", "Unable to upload your file as it is a directory or has 0 bytes" => "Nemôžem nahraÅ¥ súbor lebo je to prieÄinok alebo má 0 bajtov.", -"Upload Error" => "Chyba nahrávania", +"Upload Error" => "Chyba odosielania", +"Close" => "ZavrieÅ¥", "Pending" => "ÄŒaká sa", "1 file uploading" => "1 súbor sa posiela ", -"files uploading" => "súbory sa posielajú", -"Upload cancelled." => "Nahrávanie zruÅ¡ené", +"{count} files uploading" => "{count} súborov odosielaných", +"Upload cancelled." => "Odosielanie zruÅ¡ené", "File upload is in progress. Leaving the page now will cancel the upload." => "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.", -"Invalid name, '/' is not allowed." => "Chybný názov, \"/\" nie je povolené", -"files scanned" => "skontrolovaných súborov", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Nesprávne meno adresára. Použitie slova \"Shared\" (Zdieľané) je vyhradené službou ownCloud.", +"{count} files scanned" => "{count} súborov prehľadaných", "error while scanning" => "chyba poÄas kontroly", "Name" => "Meno", "Size" => "VeľkosÅ¥", "Modified" => "Upravené", -"folder" => "prieÄinok", -"folders" => "prieÄinky", -"file" => "súbor", -"files" => "súbory", -"seconds ago" => "pred sekundami", -"minute ago" => "pred minútou", -"minutes ago" => "pred minútami", -"today" => "dnes", -"yesterday" => "vÄera", -"days ago" => "pred pár dňami", -"last month" => "minulý mesiac", -"months ago" => "pred mesiacmi", -"last year" => "minulý rok", -"years ago" => "pred rokmi", +"1 folder" => "1 prieÄinok", +"{count} folders" => "{count} prieÄinkov", +"1 file" => "1 súbor", +"{count} files" => "{count} súborov", "File handling" => "Nastavenie správanie k súborom", "Maximum upload size" => "Maximálna veľkosÅ¥ odosielaného súboru", "max. possible: " => "najväÄÅ¡ie možné:", @@ -58,14 +50,13 @@ "New" => "Nový", "Text file" => "Textový súbor", "Folder" => "PrieÄinok", -"From url" => "Z url", -"Upload" => "NahraÅ¥", +"From link" => "Z odkazu", +"Upload" => "OdoslaÅ¥", "Cancel upload" => "ZruÅ¡iÅ¥ odosielanie", "Nothing in here. Upload something!" => "Žiadny súbor. Nahrajte nieÄo!", -"Share" => "ZdielaÅ¥", "Download" => "StiahnuÅ¥", "Upload too large" => "Odosielaný súbor je príliÅ¡ veľký", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Súbory ktoré sa snažíte nahraÅ¥ presahujú maximálnu veľkosÅ¥ pre nahratie súborov na tento server.", -"Files are being scanned, please wait." => "Súbory sa práve prehľadávajú, prosím Äakajte.", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Súbory, ktoré sa snažíte nahraÅ¥, presahujú maximálnu veľkosÅ¥ pre nahratie súborov na tento server.", +"Files are being scanned, please wait." => "ÄŒakajte, súbory sú prehľadávané.", "Current scanning" => "Práve prehliadané" ); diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php index 2a733d2c26a4c497516b0736bb040a7380431e88..b9d030c5d5d86b1c462c60bcc4a65caf3a814a87 100644 --- a/apps/files/l10n/sl.php +++ b/apps/files/l10n/sl.php @@ -1,8 +1,7 @@ "Datoteka je bila uspeÅ¡no naložena.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Naložena datoteka presega velikost, ki jo doloÄa parameter upload_max_filesize v datoteki php.ini", +"There is no error, the file uploaded with success" => "Datoteka je uspeÅ¡no naložena brez napak.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Naložena datoteka presega velikost, ki jo doloÄa parameter MAX_FILE_SIZE v HTML obrazcu", -"The uploaded file was only partially uploaded" => "Datoteka je bila le delno naložena", +"The uploaded file was only partially uploaded" => "Datoteka je le delno naložena", "No file was uploaded" => "Nobena datoteka ni bila naložena", "Missing a temporary folder" => "Manjka zaÄasna mapa", "Failed to write to disk" => "Pisanje na disk je spodletelo", @@ -10,50 +9,53 @@ "Unshare" => "Odstrani iz souporabe", "Delete" => "IzbriÅ¡i", "Rename" => "Preimenuj", -"already exists" => "že obstaja", -"replace" => "nadomesti", +"{new_name} already exists" => "{new_name} že obstaja", +"replace" => "zamenjaj", "suggest name" => "predlagaj ime", -"cancel" => "ekliÄi", -"replaced" => "nadomeÅ¡Äen", +"cancel" => "prekliÄi", +"replaced {new_name}" => "zamenjano je ime {new_name}", "undo" => "razveljavi", -"with" => "z", -"unshared" => "odstranjeno iz souporabe", -"deleted" => "izbrisano", -"generating ZIP-file, it may take some time." => "Ustvarjam ZIP datoteko. To lahko traja nekaj Äasa.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Nalaganje ni mogoÄe, saj gre za mapo, ali pa ima datoteka velikost 0 bajtov.", -"Upload Error" => "Napaka pri nalaganju", -"Pending" => "Na Äakanju", -"Upload cancelled." => "Nalaganje je bilo preklicano.", -"File upload is in progress. Leaving the page now will cancel the upload." => "Nalaganje datoteke je v teku. ÄŒe zapustite to stran zdaj, boste nalaganje preklicali.", -"Invalid name, '/' is not allowed." => "Neveljavno ime. Znak '/' ni dovoljen.", -"files scanned" => "pregledanih datotek", +"replaced {new_name} with {old_name}" => "zamenjano ime {new_name} z imenom {old_name}", +"unshared {files}" => "odstranjeno iz souporabe {files}", +"deleted {files}" => "izbrisano {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neveljavno ime, znaki '\\', '/', '<', '>', ':', '\"', '|', '?' in '*' niso dovoljeni.", +"generating ZIP-file, it may take some time." => "Ustvarjanje datoteke ZIP. To lahko traja nekaj Äasa.", +"Unable to upload your file as it is a directory or has 0 bytes" => "PoÅ¡iljanje ni mogoÄe, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov.", +"Upload Error" => "Napaka med nalaganjem", +"Close" => "Zapri", +"Pending" => "V Äakanju ...", +"1 file uploading" => "PoÅ¡iljanje 1 datoteke", +"{count} files uploading" => "nalagam {count} datotek", +"Upload cancelled." => "PoÅ¡iljanje je preklicano.", +"File upload is in progress. Leaving the page now will cancel the upload." => "V teku je poÅ¡iljanje datoteke. ÄŒe zapustite to stran zdaj, bo poÅ¡iljanje preklicano.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Neveljavno ime datoteke. Uporaba mape \"Share\" je rezervirana za ownCloud.", +"{count} files scanned" => "{count} files scanned", "error while scanning" => "napaka med pregledovanjem datotek", "Name" => "Ime", "Size" => "Velikost", "Modified" => "Spremenjeno", -"folder" => "mapa", -"folders" => "mape", -"file" => "datoteka", -"files" => "datoteke", -"File handling" => "Rokovanje z datotekami", -"Maximum upload size" => "NajveÄja velikost za nalaganje", +"1 folder" => "1 mapa", +"{count} folders" => "{count} map", +"1 file" => "1 datoteka", +"{count} files" => "{count} datotek", +"File handling" => "Upravljanje z datotekami", +"Maximum upload size" => "NajveÄja velikost za poÅ¡iljanja", "max. possible: " => "najveÄ mogoÄe:", -"Needed for multi-file and folder downloads." => "Potrebno za prenose veÄih datotek in map.", -"Enable ZIP-download" => "OmogoÄi ZIP-prejemanje", +"Needed for multi-file and folder downloads." => "Uporabljeno za prenos veÄ datotek in map.", +"Enable ZIP-download" => "OmogoÄi prejemanje arhivov ZIP", "0 is unlimited" => "0 je neskonÄno", -"Maximum input size for ZIP files" => "NajveÄja vhodna velikost za ZIP datoteke", +"Maximum input size for ZIP files" => "NajveÄja vhodna velikost za datoteke ZIP", "Save" => "Shrani", "New" => "Nova", "Text file" => "Besedilna datoteka", "Folder" => "Mapa", -"From url" => "Iz url naslova", -"Upload" => "Naloži", -"Cancel upload" => "PrekliÄi nalaganje", +"From link" => "Iz povezave", +"Upload" => "PoÅ¡lji", +"Cancel upload" => "PrekliÄi poÅ¡iljanje", "Nothing in here. Upload something!" => "Tukaj ni niÄesar. Naložite kaj!", -"Share" => "Souporaba", -"Download" => "Prenesi", +"Download" => "Prejmi", "Upload too large" => "Nalaganje ni mogoÄe, ker je preveliko", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke, ki jih želite naložiti, presegajo najveÄjo dovoljeno velikost na tem strežniku.", -"Files are being scanned, please wait." => "Preiskujem datoteke, prosimo poÄakajte.", -"Current scanning" => "Trenutno preiskujem" +"Files are being scanned, please wait." => "Poteka preuÄevanje datotek, poÄakajte ...", +"Current scanning" => "Trenutno poteka preuÄevanje" ); diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php index 99e4b12697c1f395fc6c786ebbef12225f24e6fc..48b258862b542ea824fd421fd076fa1f56b926d7 100644 --- a/apps/files/l10n/sr.php +++ b/apps/files/l10n/sr.php @@ -1,22 +1,62 @@ "Ðема грешке, фајл је уÑпешно поÑлат", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "ПоÑлати фајл превазилази директиву upload_max_filesize из ", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ПоÑлати фајл превазилази директиву MAX_FILE_SIZE која је наведена у ХТМЛ форми", -"The uploaded file was only partially uploaded" => "ПоÑлати фајл је Ñамо делимично отпремљен!", -"No file was uploaded" => "Ðиједан фајл није поÑлат", +"There is no error, the file uploaded with success" => "Ðије дошло до грешке. Датотека је уÑпешно отпремљена.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Отпремљена датотека прелази Ñмерницу upload_max_filesize у датотеци php.ini:", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Отпремљена датотека прелази Ñмерницу MAX_FILE_SIZE која је наведена у HTML обраÑцу", +"The uploaded file was only partially uploaded" => "Датотека је делимично отпремљена", +"No file was uploaded" => "Датотека није отпремљена", "Missing a temporary folder" => "ÐедоÑтаје привремена фаÑцикла", -"Files" => "Фајлови", +"Failed to write to disk" => "Ðе могу да пишем на диÑк", +"Files" => "Датотеке", +"Unshare" => "Укини дељење", "Delete" => "Обриши", -"Name" => "Име", +"Rename" => "Преименуј", +"{new_name} already exists" => "{new_name} већ поÑтоји", +"replace" => "замени", +"suggest name" => "предложи назив", +"cancel" => "откажи", +"replaced {new_name}" => "замењено {new_name}", +"undo" => "опозови", +"replaced {new_name} with {old_name}" => "замењено {new_name} Ñа {old_name}", +"unshared {files}" => "укинуто дељење {files}", +"deleted {files}" => "обриÑано {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ÐеиÑправан назив. Следећи знакови ниÑу дозвољени: \\, /, <, >, :, \", |, ? и *.", +"generating ZIP-file, it may take some time." => "правим ZIP датотеку…", +"Unable to upload your file as it is a directory or has 0 bytes" => "Ðе могу да отпремим датотеку као фаÑциклу или она има 0 бајтова", +"Upload Error" => "Грешка при отпремању", +"Close" => "Затвори", +"Pending" => "Ðа чекању", +"1 file uploading" => "Отпремам 1 датотеку", +"{count} files uploading" => "Отпремам {count} датотеке/а", +"Upload cancelled." => "Отпремање је прекинуто.", +"File upload is in progress. Leaving the page now will cancel the upload." => "Отпремање датотеке је у току. Ðко Ñада напуÑтите Ñтраницу, прекинућете отпремање.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "ÐеиÑправан назив фаÑцикле. „Дељено“ кориÑти Оунклауд.", +"{count} files scanned" => "Скенирано датотека: {count}", +"error while scanning" => "грешка при Ñкенирању", +"Name" => "Ðазив", "Size" => "Величина", -"Modified" => "Задња измена", -"Maximum upload size" => "МакÑимална величина пошиљке", -"New" => "Ðови", -"Text file" => "текÑтуални фајл", +"Modified" => "Измењено", +"1 folder" => "1 фаÑцикла", +"{count} folders" => "{count} фаÑцикле/и", +"1 file" => "1 датотека", +"{count} files" => "{count} датотеке/а", +"File handling" => "Управљање датотекама", +"Maximum upload size" => "Ðајвећа величина датотеке", +"max. possible: " => "највећа величина:", +"Needed for multi-file and folder downloads." => "Ðеопходно за преузимање вишеделних датотека и фаÑцикли.", +"Enable ZIP-download" => "Омогући преузимање у ZIP-у", +"0 is unlimited" => "0 је неограничено", +"Maximum input size for ZIP files" => "Ðајвећа величина ZIP датотека", +"Save" => "Сачувај", +"New" => "Ðова", +"Text file" => "текÑтуална датотека", "Folder" => "фаÑцикла", -"Upload" => "Пошаљи", -"Nothing in here. Upload something!" => "Овде нема ничег. Пошаљите нешто!", +"From link" => "Са везе", +"Upload" => "Отпреми", +"Cancel upload" => "Прекини отпремање", +"Nothing in here. Upload something!" => "Овде нема ничег. Отпремите нешто!", "Download" => "Преузми", -"Upload too large" => "Пошиљка је превелика", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Фајлови које желите да пошаљете превазилазе ограничење макÑималне величине пошиљке на овом Ñерверу." +"Upload too large" => "Датотека је превелика", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Датотеке које желите да отпремите прелазе ограничење у величини.", +"Files are being scanned, please wait." => "Скенирам датотеке…", +"Current scanning" => "Тренутно Ñкенирање" ); diff --git a/apps/files/l10n/sr@latin.php b/apps/files/l10n/sr@latin.php index d8c7ef189898ae4398bc9e1da5f0429c41ecb62c..fddaf5840cea10fe137c9cdc119f8b1731d4dd07 100644 --- a/apps/files/l10n/sr@latin.php +++ b/apps/files/l10n/sr@latin.php @@ -1,16 +1,17 @@ "Nema greÅ¡ke, fajl je uspeÅ¡no poslat", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Poslati fajl prevazilazi direktivu upload_max_filesize iz ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslati fajl prevazilazi direktivu MAX_FILE_SIZE koja je navedena u HTML formi", "The uploaded file was only partially uploaded" => "Poslati fajl je samo delimiÄno otpremljen!", "No file was uploaded" => "Nijedan fajl nije poslat", "Missing a temporary folder" => "Nedostaje privremena fascikla", "Files" => "Fajlovi", "Delete" => "ObriÅ¡i", +"Close" => "Zatvori", "Name" => "Ime", "Size" => "VeliÄina", "Modified" => "Zadnja izmena", "Maximum upload size" => "Maksimalna veliÄina poÅ¡iljke", +"Save" => "Snimi", "Upload" => "PoÅ¡alji", "Nothing in here. Upload something!" => "Ovde nema niÄeg. PoÅ¡aljite neÅ¡to!", "Download" => "Preuzmi", diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php index d5dcf1ad2e8a63acbe65640f5849be8b8486f1f2..bcc849242acc20b24d2a0ef08ce5b720e902ca14 100644 --- a/apps/files/l10n/sv.php +++ b/apps/files/l10n/sv.php @@ -1,6 +1,6 @@ "Inga fel uppstod. Filen laddades upp utan problem", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den uppladdade filen överskrider upload_max_filesize direktivet i php.ini", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Den uppladdade filen överskrider upload_max_filesize direktivet php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uppladdade filen överstiger MAX_FILE_SIZE direktivet som anges i HTML-formulär", "The uploaded file was only partially uploaded" => "Den uppladdade filen var endast delvis uppladdad", "No file was uploaded" => "Ingen fil blev uppladdad", @@ -10,43 +10,35 @@ "Unshare" => "Sluta dela", "Delete" => "Radera", "Rename" => "Byt namn", -"already exists" => "finns redan", +"{new_name} already exists" => "{new_name} finns redan", "replace" => "ersätt", "suggest name" => "föreslÃ¥ namn", "cancel" => "avbryt", -"replaced" => "ersatt", +"replaced {new_name}" => "ersatt {new_name}", "undo" => "Ã¥ngra", -"with" => "med", -"unshared" => "Ej delad", -"deleted" => "raderad", +"replaced {new_name} with {old_name}" => "ersatt {new_name} med {old_name}", +"unshared {files}" => "stoppad delning {files}", +"deleted {files}" => "raderade {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillÃ¥tet.", "generating ZIP-file, it may take some time." => "genererar ZIP-fil, det kan ta lite tid.", "Unable to upload your file as it is a directory or has 0 bytes" => "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes.", "Upload Error" => "Uppladdningsfel", +"Close" => "Stäng", "Pending" => "Väntar", "1 file uploading" => "1 filuppladdning", -"files uploading" => "filer laddas upp", +"{count} files uploading" => "{count} filer laddas upp", "Upload cancelled." => "Uppladdning avbruten.", "File upload is in progress. Leaving the page now will cancel the upload." => "Filuppladdning pÃ¥gÃ¥r. Lämnar du sidan sÃ¥ avbryts uppladdningen.", -"Invalid name, '/' is not allowed." => "Ogiltigt namn, '/' är inte tillÃ¥ten.", -"files scanned" => "filer skannade", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Ogiltigt mappnamn. Ordet \"Delad\" är reserverat av ownCloud.", +"{count} files scanned" => "{count} filer skannade", "error while scanning" => "fel vid skanning", "Name" => "Namn", "Size" => "Storlek", "Modified" => "Ändrad", -"folder" => "mapp", -"folders" => "mappar", -"file" => "fil", -"files" => "filer", -"seconds ago" => "sekunder sedan", -"minute ago" => "minut sedan", -"minutes ago" => "minuter sedan", -"today" => "i dag", -"yesterday" => "i gÃ¥r", -"days ago" => "dagar sedan", -"last month" => "förra mÃ¥naden", -"months ago" => "mÃ¥nader sedan", -"last year" => "förra Ã¥ret", -"years ago" => "Ã¥r sedan", +"1 folder" => "1 mapp", +"{count} folders" => "{count} mappar", +"1 file" => "1 fil", +"{count} files" => "{count} filer", "File handling" => "Filhantering", "Maximum upload size" => "Maximal storlek att ladda upp", "max. possible: " => "max. möjligt:", @@ -58,11 +50,10 @@ "New" => "Ny", "Text file" => "Textfil", "Folder" => "Mapp", -"From url" => "FrÃ¥n webbadress", +"From link" => "FrÃ¥n länk", "Upload" => "Ladda upp", "Cancel upload" => "Avbryt uppladdning", "Nothing in here. Upload something!" => "Ingenting här. Ladda upp nÃ¥got!", -"Share" => "Dela", "Download" => "Ladda ner", "Upload too large" => "För stor uppladdning", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar pÃ¥ servern.", diff --git a/apps/files/l10n/ta_LK.php b/apps/files/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..9399089bc787cee13fd631a72cc2b7a9223fcfb7 --- /dev/null +++ b/apps/files/l10n/ta_LK.php @@ -0,0 +1,61 @@ + "இஙà¯à®•à¯ வழ௠இலà¯à®²à¯ˆ, கோபà¯à®ªà¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¾à®©à®¤à¯ HTML படிவதà¯à®¤à®¿à®²à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ MAX_FILE_SIZE directive ஠விட கூடியதà¯", +"The uploaded file was only partially uploaded" => "பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¾à®©à®¤à¯ பகà¯à®¤à®¿à®¯à®¾à®• மடà¯à®Ÿà¯à®®à¯‡ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯", +"No file was uploaded" => "எநà¯à®¤ கோபà¯à®ªà¯à®®à¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ", +"Missing a temporary folder" => "ஒர௠தறà¯à®•à®¾à®²à®¿à®•à®®à®¾à®© கோபà¯à®ªà¯à®±à¯ˆà®¯à¯ˆ காணவிலà¯à®²à¯ˆ", +"Failed to write to disk" => "வடà¯à®Ÿà®¿à®²à¯ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ", +"Files" => "கோபà¯à®ªà¯à®•à®³à¯", +"Unshare" => "பகிரபà¯à®ªà®Ÿà®¾à®¤à®¤à¯", +"Delete" => "அழிகà¯à®•", +"Rename" => "பெயரà¯à®®à®¾à®±à¯à®±à®®à¯", +"{new_name} already exists" => "{new_name} à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³à®¤à¯", +"replace" => "மாறà¯à®±à®¿à®Ÿà¯à®•", +"suggest name" => "பெயரை பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•", +"cancel" => "இரதà¯à®¤à¯ செயà¯à®•", +"replaced {new_name}" => "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {new_name}", +"undo" => "à®®à¯à®©à¯ செயல௠நீகà¯à®•à®®à¯ ", +"replaced {new_name} with {old_name}" => "{new_name} ஆனத௠{old_name} இனால௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"unshared {files}" => "பகிரபà¯à®ªà®Ÿà®¾à®¤à®¤à¯ {கோபà¯à®ªà¯à®•à®³à¯}", +"deleted {files}" => "நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {கோபà¯à®ªà¯à®•à®³à¯}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± பெயரà¯,'\\', '/', '<', '>', ':', '\"', '|', '?' மறà¯à®±à¯à®®à¯ '*' ஆகியன அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®®à®¾à®Ÿà¯à®Ÿà®¾à®¤à¯.", +"generating ZIP-file, it may take some time." => " ZIP கோபà¯à®ªà¯ உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®•à®¿à®©à¯à®±à®¤à¯, இத௠சில நேரம௠ஆகலாமà¯.", +"Unable to upload your file as it is a directory or has 0 bytes" => "அடைவ௠அலà¯à®²à®¤à¯ 0 bytes ஠கொணà¯à®Ÿà¯à®³à¯à®³à®¤à®¾à®²à¯ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯ˆ பதிவேறà¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ", +"Upload Error" => "பதிவேறà¯à®±à®²à¯ வழà¯", +"Close" => "மூடà¯à®•", +"Pending" => "நிலà¯à®µà¯ˆà®¯à®¿à®²à¯à®³à¯à®³", +"1 file uploading" => "1 கோபà¯à®ªà¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯", +"{count} files uploading" => "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®•à®³à¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®©à¯à®±à®¤à¯", +"Upload cancelled." => "பதிவேறà¯à®±à®²à¯ இரதà¯à®¤à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯", +"File upload is in progress. Leaving the page now will cancel the upload." => "கோபà¯à®ªà¯ பதிவேறà¯à®±à®®à¯ செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ உளà¯à®³à®¤à¯. இநà¯à®¤à®ªà¯ பகà¯à®•à®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ வெறியேறà¯à®µà®¤à®¾à®©à®¤à¯ பதிவேறà¯à®±à®²à¯ˆ இரதà¯à®¤à¯ செயà¯à®¯à¯à®®à¯.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± கோபà¯à®ªà¯à®±à¯ˆ பெயரà¯. \"பகிரà¯à®µà®¿à®©à¯\" பாவனை Owncloud இனால௠ஒதà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯", +"{count} files scanned" => "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®•à®³à¯ வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"error while scanning" => "வரà¯à®Ÿà¯à®®à¯ போதான வழà¯", +"Name" => "பெயரà¯", +"Size" => "அளவà¯", +"Modified" => "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"1 folder" => "1 கோபà¯à®ªà¯à®±à¯ˆ", +"{count} folders" => "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®±à¯ˆà®•à®³à¯", +"1 file" => "1 கோபà¯à®ªà¯", +"{count} files" => "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®•à®³à¯", +"File handling" => "கோபà¯à®ªà¯ கையாளà¯à®¤à®²à¯", +"Maximum upload size" => "பதிவேறà¯à®±à®•à¯à®•à¯‚டிய ஆககà¯à®•à¯‚டிய அளவ௠", +"max. possible: " => "ஆகக௠கூடியதà¯:", +"Needed for multi-file and folder downloads." => "பலà¯à®µà¯‡à®±à¯à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯ மறà¯à®±à¯à®®à¯ கோபà¯à®ªà¯à®±à¯ˆà®•à®³à¯ˆ பதிவிறகà¯à®• தேவையானதà¯.", +"Enable ZIP-download" => "ZIP பதிவிறகà¯à®•à®²à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•", +"0 is unlimited" => "0 ஆனத௠எலà¯à®²à¯ˆà®¯à®±à¯à®±à®¤à¯", +"Maximum input size for ZIP files" => "ZIP கோபà¯à®ªà¯à®•à®³à¯à®•à¯à®•à®¾à®© ஆககà¯à®•à¯‚டிய உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ அளவà¯", +"Save" => "சேமிகà¯à®•", +"New" => "பà¯à®¤à®¿à®¯", +"Text file" => "கோபà¯à®ªà¯ உரை", +"Folder" => "கோபà¯à®ªà¯à®±à¯ˆ", +"From link" => "இணைபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯", +"Upload" => "பதிவேறà¯à®±à¯à®•", +"Cancel upload" => "பதிவேறà¯à®±à®²à¯ˆ இரதà¯à®¤à¯ செயà¯à®•", +"Nothing in here. Upload something!" => "இஙà¯à®•à¯ ஒனà¯à®±à¯à®®à¯ இலà¯à®²à¯ˆ. à®à®¤à®¾à®µà®¤à¯ பதிவேறà¯à®±à¯à®•!", +"Download" => "பதிவிறகà¯à®•à¯à®•", +"Upload too large" => "பதிவேறà¯à®±à®²à¯ மிகபà¯à®ªà¯†à®°à®¿à®¯à®¤à¯", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "நீஙà¯à®•à®³à¯ பதிவேறà¯à®± à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•à¯à®®à¯ கோபà¯à®ªà¯à®•à®³à®¾à®©à®¤à¯ இநà¯à®¤ சேவையகதà¯à®¤à®¿à®²à¯ கோபà¯à®ªà¯ பதிவேறà¯à®±à®•à¯à®•à¯‚டிய ஆககà¯à®•à¯‚டிய அளவிலà¯à®®à¯ கூடியதà¯.", +"Files are being scanned, please wait." => "கோபà¯à®ªà¯à®•à®³à¯ வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®•à®¿à®©à¯à®±à®©, தயவà¯à®šà¯†à®¯à¯à®¤à¯ காதà¯à®¤à®¿à®°à¯à®™à¯à®•à®³à¯.", +"Current scanning" => "தறà¯à®ªà¯‹à®¤à¯ வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®ªà®µà¯ˆ" +); diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php index dc94ddc7de5d0ebb6146e157e89b6cb869e82a68..343138ba126612ec37dd4f998ac82444be85cf31 100644 --- a/apps/files/l10n/th_TH.php +++ b/apps/files/l10n/th_TH.php @@ -1,6 +1,5 @@ "ไม่มีข้อผิดพลาดใดๆ ไฟล์ถูà¸à¸­à¸±à¸žà¹‚หลดเรียบร้อยà¹à¸¥à¹‰à¸§", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "ไฟล์ที่อัพโหลดมีขนาดเà¸à¸´à¸™à¸„ำสั่ง upload_max_filesize ที่ระบุเอาไว้ในไฟล์ php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ไฟล์ที่อัพโหลดมีขนาดเà¸à¸´à¸™à¸„ำสั่ง MAX_FILE_SIZE ที่ระบุเอาไว้ในรูปà¹à¸šà¸šà¸„ำสั่งในภาษา HTML", "The uploaded file was only partially uploaded" => "ไฟล์ที่อัพโหลดยังไม่ได้ถูà¸à¸­à¸±à¸žà¹‚หลดอย่างสมบูรณ์", "No file was uploaded" => "ยังไม่มีไฟล์ที่ถูà¸à¸­à¸±à¸žà¹‚หลด", @@ -10,43 +9,35 @@ "Unshare" => "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูล", "Delete" => "ลบ", "Rename" => "เปลี่ยนชื่อ", -"already exists" => "มีอยู่à¹à¸¥à¹‰à¸§", +"{new_name} already exists" => "{new_name} มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸£à¸°à¸šà¸š", "replace" => "à¹à¸—นที่", "suggest name" => "à¹à¸™à¸°à¸™à¸³à¸Šà¸·à¹ˆà¸­", "cancel" => "ยà¸à¹€à¸¥à¸´à¸", -"replaced" => "à¹à¸—นที่à¹à¸¥à¹‰à¸§", +"replaced {new_name}" => "à¹à¸—นที่ {new_name} à¹à¸¥à¹‰à¸§", "undo" => "เลิà¸à¸—ำ", -"with" => "à¸à¸±à¸š", -"unshared" => "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูลà¹à¸¥à¹‰à¸§", -"deleted" => "ลบà¹à¸¥à¹‰à¸§", +"replaced {new_name} with {old_name}" => "à¹à¸—นที่ {new_name} ด้วย {old_name} à¹à¸¥à¹‰à¸§", +"unshared {files}" => "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¹à¸¥à¹‰à¸§ {files} ไฟล์", +"deleted {files}" => "ลบไฟล์à¹à¸¥à¹‰à¸§ {files} ไฟล์", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ชื่อที่ใช้ไม่ถูà¸à¸•à¹‰à¸­à¸‡, '\\', '/', '<', '>', ':', '\"', '|', '?' à¹à¸¥à¸° '*' ไม่ได้รับอนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ด้", "generating ZIP-file, it may take some time." => "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¹„ฟล์บีบอัด ZIP อาจใช้เวลาสัà¸à¸„รู่", "Unable to upload your file as it is a directory or has 0 bytes" => "ไม่สามารถอัพโหลดไฟล์ของคุณได้ เนื่องจาà¸à¹„ฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¹€à¸›à¹‡à¸™à¹„ดเร็à¸à¸—อรี่หรือมีขนาด 0 ไบต์", "Upload Error" => "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸­à¸±à¸žà¹‚หลด", +"Close" => "ปิด", "Pending" => "อยู่ระหว่างดำเนินà¸à¸²à¸£", "1 file uploading" => "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸žà¹‚หลดไฟล์ 1 ไฟล์", -"files uploading" => "à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดไฟล์", +"{count} files uploading" => "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸žà¹‚หลด {count} ไฟล์", "Upload cancelled." => "à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดถูà¸à¸¢à¸à¹€à¸¥à¸´à¸", "File upload is in progress. Leaving the page now will cancel the upload." => "à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดไฟล์à¸à¸³à¸¥à¸±à¸‡à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸”ำเนินà¸à¸²à¸£ à¸à¸²à¸£à¸­à¸­à¸à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸šà¸™à¸µà¹‰à¸ˆà¸°à¸—ำให้à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดถูà¸à¸¢à¸à¹€à¸¥à¸´à¸", -"Invalid name, '/' is not allowed." => "ชื่อที่ใช้ไม่ถูà¸à¸•à¹‰à¸­à¸‡ '/' ไม่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™", -"files scanned" => "ไฟล์ต่างๆได้รับà¸à¸²à¸£à¸ªà¹à¸à¸™à¹à¸¥à¹‰à¸§", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "ชื่อโฟลเดอร์ที่ใช้ไม่ถูà¸à¸•à¹‰à¸­à¸‡ à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ \"ถูà¸à¹à¸Šà¸£à¹Œ\" ถูà¸à¸ªà¸‡à¸§à¸™à¹„ว้เฉพาะ Owncloud เท่านั้น", +"{count} files scanned" => "สà¹à¸à¸™à¹„ฟล์à¹à¸¥à¹‰à¸§ {count} ไฟล์", "error while scanning" => "พบข้อผิดพลาดในระหว่างà¸à¸²à¸£à¸ªà¹à¸à¸™à¹„ฟล์", "Name" => "ชื่อ", "Size" => "ขนาด", "Modified" => "ปรับปรุงล่าสุด", -"folder" => "โฟลเดอร์", -"folders" => "โฟลเดอร์", -"file" => "ไฟล์", -"files" => "ไฟล์", -"seconds ago" => "วินาที à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰", -"minute ago" => "นาที ที่ผ่านมา", -"minutes ago" => "นาที ที่ผ่านมา", -"today" => "วันนี้", -"yesterday" => "เมื่อวานนี้", -"days ago" => "วัน ที่ผ่านมา", -"last month" => "เดือนที่à¹à¸¥à¹‰à¸§", -"months ago" => "เดือน ที่ผ่านมา", -"last year" => "ปีที่à¹à¸¥à¹‰à¸§", -"years ago" => "ปี ที่ผ่านมา", +"1 folder" => "1 โฟลเดอร์", +"{count} folders" => "{count} โฟลเดอร์", +"1 file" => "1 ไฟล์", +"{count} files" => "{count} ไฟล์", "File handling" => "à¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¹„ฟล์", "Maximum upload size" => "ขนาดไฟล์สูงสุดที่อัพโหลดได้", "max. possible: " => "จำนวนสูงสุดที่สามารถทำได้: ", @@ -58,11 +49,10 @@ "New" => "อัพโหลดไฟล์ใหม่", "Text file" => "ไฟล์ข้อความ", "Folder" => "à¹à¸Ÿà¹‰à¸¡à¹€à¸­à¸à¸ªà¸²à¸£", -"From url" => "จาภurl", +"From link" => "จาà¸à¸¥à¸´à¸‡à¸à¹Œ", "Upload" => "อัพโหลด", "Cancel upload" => "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลด", "Nothing in here. Upload something!" => "ยังไม่มีไฟล์ใดๆอยู่ที่นี่ à¸à¸£à¸¸à¸“าอัพโหลดไฟล์!", -"Share" => "à¹à¸Šà¸£à¹Œ", "Download" => "ดาวน์โหลด", "Upload too large" => "ไฟล์ที่อัพโหลดมีขนาดใหà¸à¹ˆà¹€à¸à¸´à¸™à¹„ป", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ไฟล์ที่คุณพยายามที่จะอัพโหลดมีขนาดเà¸à¸´à¸™à¸à¸§à¹ˆà¸²à¸‚นาดสูงสุดที่à¸à¸³à¸«à¸™à¸”ไว้ให้อัพโหลดได้สำหรับเซิร์ฟเวอร์นี้", diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php index bcbee7c5aca8e73fe1953d8635283714d5b3094a..061ed1f3ae28ee7aea4f48febf9741fbaf3913d9 100644 --- a/apps/files/l10n/tr.php +++ b/apps/files/l10n/tr.php @@ -1,34 +1,34 @@ "Bir hata yok, dosya baÅŸarıyla yüklendi", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Yüklenen dosya php.ini de belirtilen upload_max_filesize sınırını aşıyor", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Yüklenen dosya HTML formundaki MAX_FILE_SIZE sınırını aşıyor", "The uploaded file was only partially uploaded" => "Yüklenen dosyanın sadece bir kısmı yüklendi", "No file was uploaded" => "Hiç dosya yüklenmedi", "Missing a temporary folder" => "Geçici bir klasör eksik", "Failed to write to disk" => "Diske yazılamadı", "Files" => "Dosyalar", +"Unshare" => "Paylaşılmayan", "Delete" => "Sil", -"already exists" => "zaten mevcut", +"Rename" => "Ä°sim deÄŸiÅŸtir.", +"{new_name} already exists" => "{new_name} zaten mevcut", "replace" => "deÄŸiÅŸtir", +"suggest name" => "Öneri ad", "cancel" => "iptal", -"replaced" => "deÄŸiÅŸtirildi", +"replaced {new_name}" => "deÄŸiÅŸtirilen {new_name}", "undo" => "geri al", -"with" => "ile", -"deleted" => "silindi", +"unshared {files}" => "paylaşılmamış {files}", +"deleted {files}" => "silinen {files}", "generating ZIP-file, it may take some time." => "ZIP dosyası oluÅŸturuluyor, biraz sürebilir.", "Unable to upload your file as it is a directory or has 0 bytes" => "Dosyanızın boyutu 0 byte olduÄŸundan veya bir dizin olduÄŸundan yüklenemedi", "Upload Error" => "Yükleme hatası", +"Close" => "Kapat", "Pending" => "Bekliyor", +"1 file uploading" => "1 dosya yüklendi", "Upload cancelled." => "Yükleme iptal edildi.", "File upload is in progress. Leaving the page now will cancel the upload." => "Dosya yükleme iÅŸlemi sürüyor. Åžimdi sayfadan ayrılırsanız iÅŸleminiz iptal olur.", -"Invalid name, '/' is not allowed." => "Geçersiz isim, '/' iÅŸaretine izin verilmiyor.", +"error while scanning" => "tararamada hata oluÅŸdu", "Name" => "Ad", "Size" => "Boyut", "Modified" => "DeÄŸiÅŸtirilme", -"folder" => "dizin", -"folders" => "dizinler", -"file" => "dosya", -"files" => "dosyalar", "File handling" => "Dosya taşıma", "Maximum upload size" => "Maksimum yükleme boyutu", "max. possible: " => "mümkün olan en fazla: ", @@ -36,14 +36,13 @@ "Enable ZIP-download" => "ZIP indirmeyi aktif et", "0 is unlimited" => "0 limitsiz demektir", "Maximum input size for ZIP files" => "ZIP dosyaları için en fazla girdi sayısı", +"Save" => "Kaydet", "New" => "Yeni", "Text file" => "Metin dosyası", "Folder" => "Klasör", -"From url" => "Url'den", "Upload" => "Yükle", "Cancel upload" => "Yüklemeyi iptal et", "Nothing in here. Upload something!" => "Burada hiçbir ÅŸey yok. BirÅŸeyler yükleyin!", -"Share" => "PaylaÅŸ", "Download" => "Ä°ndir", "Upload too large" => "Yüklemeniz çok büyük", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Yüklemeye çalıştığınız dosyalar bu sunucudaki maksimum yükleme boyutunu aşıyor.", diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php index 7e72683b8bae23b239802a6e1524e9bcc573bf2d..00491bcc2d6d6ece35f01741d24d56e608387fde 100644 --- a/apps/files/l10n/uk.php +++ b/apps/files/l10n/uk.php @@ -1,38 +1,59 @@ "Файл уÑпішно відвантажено без помилок.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Розмір відвантаженого файлу перевищує директиву upload_max_filesize в php.ini", +"There is no error, the file uploaded with success" => "Файл уÑпішно вивантажено без помилок.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Розмір Ð·Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” upload_max_filesize параметра в php.ini: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Розмір відвантаженого файлу перевищує директиву MAX_FILE_SIZE вказану в HTML формі", "The uploaded file was only partially uploaded" => "Файл відвантажено лише чаÑтково", "No file was uploaded" => "Ðе відвантажено жодного файлу", "Missing a temporary folder" => "ВідÑутній тимчаÑовий каталог", +"Failed to write to disk" => "ÐевдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати на диÑк", "Files" => "Файли", +"Unshare" => "Заборонити доÑтуп", "Delete" => "Видалити", +"Rename" => "Перейменувати", +"{new_name} already exists" => "{new_name} вже Ñ–Ñнує", +"replace" => "заміна", +"suggest name" => "запропонуйте назву", +"cancel" => "відміна", +"replaced {new_name}" => "замінено {new_name}", "undo" => "відмінити", -"deleted" => "видалені", +"replaced {new_name} with {old_name}" => "замінено {new_name} на {old_name}", +"unshared {files}" => "неопубліковано {files}", +"deleted {files}" => "видалено {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ðевірне ім'Ñ, '\\', '/', '<', '>', ':', '\"', '|', '?' та '*' не дозволені.", "generating ZIP-file, it may take some time." => "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ZIP-файлу, це може зайнÑти певний чаÑ.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ðеможливо завантажити ваш файл тому, що він тека або файл розміром 0 байт", "Upload Error" => "Помилка завантаженнÑ", +"Close" => "Закрити", "Pending" => "ОчікуваннÑ", +"1 file uploading" => "1 файл завантажуєтьÑÑ", +"{count} files uploading" => "{count} файлів завантажуєтьÑÑ", "Upload cancelled." => "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾.", -"Invalid name, '/' is not allowed." => "Ðекоректне ім'Ñ, '/' не дозволено.", +"File upload is in progress. Leaving the page now will cancel the upload." => "ВиконуєтьÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ. Ð—Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ†Ñ–Ñ”Ñ— Ñторінки приведе до відміни завантаженнÑ.", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Ðевірне ім'Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ. ВикориÑÑ‚Ð°Ð½Ð½Ñ \"Shared\" зарезервовано Owncloud", +"{count} files scanned" => "{count} файлів проÑкановано", +"error while scanning" => "помилка при Ñкануванні", "Name" => "Ім'Ñ", "Size" => "Розмір", "Modified" => "Змінено", -"folder" => "тека", -"folders" => "теки", -"file" => "файл", -"files" => "файли", +"1 folder" => "1 папка", +"{count} folders" => "{count} папок", +"1 file" => "1 файл", +"{count} files" => "{count} файлів", +"File handling" => "Робота з файлами", "Maximum upload size" => "МакÑимальний розмір відвантажень", "max. possible: " => "макÑ.можливе:", +"Needed for multi-file and folder downloads." => "Ðеобхідно Ð´Ð»Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸-файлового та каталогового завантаженнÑ.", +"Enable ZIP-download" => "Ðктивувати ZIP-завантаженнÑ", "0 is unlimited" => "0 Ñ” безліміт", +"Maximum input size for ZIP files" => "МакÑимальний розмір завантажуємого ZIP файлу", +"Save" => "Зберегти", "New" => "Створити", "Text file" => "ТекÑтовий файл", "Folder" => "Папка", -"From url" => "З URL", +"From link" => "З поÑиланнÑ", "Upload" => "Відвантажити", "Cancel upload" => "Перервати завантаженнÑ", "Nothing in here. Upload something!" => "Тут нічого немає. Відвантажте що-небудь!", -"Share" => "ПоділитиÑÑ", "Download" => "Завантажити", "Upload too large" => "Файл занадто великий", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файли,що ви намагаєтеÑÑŒ відвантажити перевищують макÑимальний дозволений розмір файлів на цьому Ñервері.", diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php index d6593022d8b7ae7d76c26daf8a70b1d5e8b4fa47..4f58e623178cd2789afb17a87259c5fa7c943455 100644 --- a/apps/files/l10n/vi.php +++ b/apps/files/l10n/vi.php @@ -1,38 +1,46 @@ "Không có lá»—i, các tập tin đã được tải lên thành công", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Những tập tin được tải lên vượt quá upload_max_filesize được chỉ định trong php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Kích thÆ°á»›c những tập tin tải lên vượt quá MAX_FILE_SIZE đã được quy định", "The uploaded file was only partially uploaded" => "Tập tin tải lên má»›i chỉ tải lên được má»™t phần", "No file was uploaded" => "Không có tập tin nào được tải lên", "Missing a temporary folder" => "Không tìm thấy thÆ° mục tạm", -"Failed to write to disk" => "Không thể ghi vào Ä‘Ä©a cứng", +"Failed to write to disk" => "Không thể ghi ", "Files" => "Tập tin", "Unshare" => "Không chia sẽ", "Delete" => "Xóa", -"already exists" => "đã tồn tại", +"Rename" => "Sá»­a tên", +"{new_name} already exists" => "{new_name} đã tồn tại", "replace" => "thay thế", "suggest name" => "tên gợi ý", "cancel" => "hủy", -"replaced" => "đã được thay thế", +"replaced {new_name}" => "đã thay thế {new_name}", "undo" => "lùi lại", -"with" => "vá»›i", -"deleted" => "đã xóa", -"generating ZIP-file, it may take some time." => "Tạo tập tinh ZIP, Ä‘iá»u này có thể mất má»™t ít thá»i gian", +"replaced {new_name} with {old_name}" => "đã thay thế {new_name} bằng {old_name}", +"unshared {files}" => "hủy chia sẽ {files}", +"deleted {files}" => "đã xóa {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' thì không được phép dùng.", +"generating ZIP-file, it may take some time." => "Tạo tập tin ZIP, Ä‘iá»u này có thể làm mất má»™t chút thá»i gian", "Unable to upload your file as it is a directory or has 0 bytes" => "Không thể tải lên tập tin này do nó là má»™t thÆ° mục hoặc kích thÆ°á»›c tập tin bằng 0 byte", "Upload Error" => "Tải lên lá»—i", +"Close" => "Äóng", "Pending" => "Chá»", +"1 file uploading" => "1 tệp tin Ä‘ang được tải lên", +"{count} files uploading" => "{count} tập tin Ä‘ang tải lên", "Upload cancelled." => "Hủy tải lên", "File upload is in progress. Leaving the page now will cancel the upload." => "Tập tin tải lên Ä‘ang được xá»­ lý. Nếu bạn rá»i khá»i trang bây giá» sẽ hủy quá trình này.", -"Invalid name, '/' is not allowed." => "Tên không hợp lệ ,không được phép dùng '/'", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "Tên thÆ° mục không hợp lệ. Sá»­ dụng \"Chia sẻ\" được dành riêng bởi Owncloud", +"{count} files scanned" => "{count} tập tin đã được quét", +"error while scanning" => "lá»—i trong khi quét", "Name" => "Tên", "Size" => "Kích cỡ", "Modified" => "Thay đổi", -"folder" => "folder", -"folders" => "folders", -"file" => "file", -"files" => "files", +"1 folder" => "1 thÆ° mục", +"{count} folders" => "{count} thÆ° mục", +"1 file" => "1 tập tin", +"{count} files" => "{count} tập tin", "File handling" => "Xá»­ lý tập tin", "Maximum upload size" => "Kích thÆ°á»›c tối Ä‘a ", +"max. possible: " => "tối Ä‘a cho phép:", "Needed for multi-file and folder downloads." => "Cần thiết cho tải nhiá»u tập tin và thÆ° mục.", "Enable ZIP-download" => "Cho phép ZIP-download", "0 is unlimited" => "0 là không giá»›i hạn", @@ -40,15 +48,14 @@ "Save" => "LÆ°u", "New" => "Má»›i", "Text file" => "Tập tin văn bản", -"Folder" => "Folder", -"From url" => "Từ url", +"Folder" => "ThÆ° mục", +"From link" => "Từ liên kết", "Upload" => "Tải lên", "Cancel upload" => "Hủy upload", "Nothing in here. Upload something!" => "Không có gì ở đây .Hãy tải lên má»™t cái gì đó !", -"Share" => "Chia sẻ", "Download" => "Tải xuống", -"Upload too large" => "File tải lên quá lá»›n", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Các tập tin bạn Ä‘ang cố gắng tải lên vượt quá kích thÆ°á»›c tối Ä‘a cho phép trên máy chủ này.", +"Upload too large" => "Tập tin tải lên quá lá»›n", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Các tập tin bạn Ä‘ang tải lên vượt quá kích thÆ°á»›c tối Ä‘a cho phép trên máy chủ .", "Files are being scanned, please wait." => "Tập tin Ä‘ang được quét ,vui lòng chá».", "Current scanning" => "Hiện tại Ä‘ang quét" ); diff --git a/apps/files/l10n/zh_CN.GB2312.php b/apps/files/l10n/zh_CN.GB2312.php index 8d4ae972b9b35968e4b4c69e0f7113b92c3f0508..ccf0efff0500330677ef09c69fa791defcc83fe2 100644 --- a/apps/files/l10n/zh_CN.GB2312.php +++ b/apps/files/l10n/zh_CN.GB2312.php @@ -1,6 +1,5 @@ "没有任何错误,文件上传æˆåŠŸäº†", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "上传的文件超过了php.ini指定的upload_max_filesize", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上传的文件超过了HTML表å•æŒ‡å®šçš„MAX_FILE_SIZE", "The uploaded file was only partially uploaded" => "文件åªæœ‰éƒ¨åˆ†è¢«ä¸Šä¼ ", "No file was uploaded" => "没有上传完æˆçš„文件", @@ -10,43 +9,33 @@ "Unshare" => "å–消共享", "Delete" => "删除", "Rename" => "é‡å‘½å", -"already exists" => "å·²ç»å­˜åœ¨äº†", +"{new_name} already exists" => "{new_name} 已存在", "replace" => "替æ¢", "suggest name" => "推èå称", "cancel" => "å–消", -"replaced" => "替æ¢è¿‡äº†", +"replaced {new_name}" => "å·²æ›¿æ¢ {new_name}", "undo" => "撤销", -"with" => "éšç€", -"unshared" => "å·²å–消共享", -"deleted" => "删除", +"replaced {new_name} with {old_name}" => "已用 {old_name} æ›¿æ¢ {new_name}", +"unshared {files}" => "未分享的 {files}", +"deleted {files}" => "已删除的 {files}", "generating ZIP-file, it may take some time." => "正在生æˆZIP文件,è¿™å¯èƒ½éœ€è¦ç‚¹æ—¶é—´", "Unable to upload your file as it is a directory or has 0 bytes" => "ä¸èƒ½ä¸Šä¼ ä½ æŒ‡å®šçš„文件,å¯èƒ½å› ä¸ºå®ƒæ˜¯ä¸ªæ–‡ä»¶å¤¹æˆ–者大å°ä¸º0", "Upload Error" => "上传错误", +"Close" => "关闭", "Pending" => "Pending", "1 file uploading" => "1 个文件正在上传", -"files uploading" => "个文件正在上传", +"{count} files uploading" => "{count} 个文件正在上传", "Upload cancelled." => "上传å–消了", "File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传。关闭页é¢ä¼šå–消上传。", -"Invalid name, '/' is not allowed." => "éžæ³•æ–‡ä»¶å,\"/\"是ä¸è¢«è®¸å¯çš„", -"files scanned" => "文件已扫æ", +"{count} files scanned" => "{count} 个文件已扫æ", "error while scanning" => "扫æ出错", "Name" => "åå­—", "Size" => "大å°", "Modified" => "修改日期", -"folder" => "文件夹", -"folders" => "文件夹", -"file" => "文件", -"files" => "文件", -"seconds ago" => "秒å‰", -"minute ago" => "分钟å‰", -"minutes ago" => "分钟å‰", -"today" => "今天", -"yesterday" => "昨天", -"days ago" => "天å‰", -"last month" => "上个月", -"months ago" => "月å‰", -"last year" => "去年", -"years ago" => "å¹´å‰", +"1 folder" => "1 个文件夹", +"{count} folders" => "{count} 个文件夹", +"1 file" => "1 个文件", +"{count} files" => "{count} 个文件", "File handling" => "文件处ç†ä¸­", "Maximum upload size" => "最大上传大å°", "max. possible: " => "最大å¯èƒ½", @@ -58,11 +47,10 @@ "New" => "新建", "Text file" => "文本文档", "Folder" => "文件夹", -"From url" => "从URL:", +"From link" => "æ¥è‡ªé“¾æŽ¥", "Upload" => "上传", "Cancel upload" => "å–消上传", "Nothing in here. Upload something!" => "这里没有东西.上传点什么!", -"Share" => "分享", "Download" => "下载", "Upload too large" => "上传的文件太大了", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "你正在试图上传的文件超过了此æœåŠ¡å™¨æ”¯æŒçš„最大的文件大å°.", diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php index f2ea43ae81edc65bf791b4babfea40f034b43120..8db652f003e31db998dff1f765217c9098566688 100644 --- a/apps/files/l10n/zh_CN.php +++ b/apps/files/l10n/zh_CN.php @@ -1,6 +1,6 @@ "没有å‘生错误,文件上传æˆåŠŸã€‚", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "上传的文件大å°è¶…过了php.ini 中指定的upload_max_filesize", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上传文件大å°å·²è¶…过php.ini中upload_max_filesize所规定的值", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上传的文件超过了在HTML 表å•ä¸­æŒ‡å®šçš„MAX_FILE_SIZE", "The uploaded file was only partially uploaded" => "åªä¸Šä¼ äº†æ–‡ä»¶çš„一部分", "No file was uploaded" => "文件没有上传", @@ -10,46 +10,38 @@ "Unshare" => "å–消分享", "Delete" => "删除", "Rename" => "é‡å‘½å", -"already exists" => "å·²ç»å­˜åœ¨", +"{new_name} already exists" => "{new_name} 已存在", "replace" => "替æ¢", "suggest name" => "建议å称", "cancel" => "å–消", -"replaced" => "å·²ç»æ›¿æ¢", +"replaced {new_name}" => "æ›¿æ¢ {new_name}", "undo" => "撤销", -"with" => "éšç€", -"unshared" => "å·²å–消分享", -"deleted" => "å·²ç»åˆ é™¤", +"replaced {new_name} with {old_name}" => "已将 {old_name}替æ¢æˆ {new_name}", +"unshared {files}" => "å–消了共享 {files}", +"deleted {files}" => "删除了 {files}", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "无效å称,'\\', '/', '<', '>', ':', '\"', '|', '?' å’Œ '*' ä¸è¢«å…许使用。", "generating ZIP-file, it may take some time." => "æ­£åœ¨ç”Ÿæˆ ZIP 文件,å¯èƒ½éœ€è¦ä¸€äº›æ—¶é—´", "Unable to upload your file as it is a directory or has 0 bytes" => "无法上传文件,因为它是一个目录或者大å°ä¸º 0 字节", "Upload Error" => "上传错误", +"Close" => "关闭", "Pending" => "æ“作等待中", "1 file uploading" => "1个文件上传中", -"files uploading" => "文件上传中", +"{count} files uploading" => "{count} 个文件上传中", "Upload cancelled." => "上传已å–消", "File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传中。现在离开此页会导致上传动作被å–消。", -"Invalid name, '/' is not allowed." => "éžæ³•çš„å称,ä¸å…许使用‘/’。", -"files scanned" => "已扫æ文件", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "无效的文件夹å称。â€Shared“ 是 Owncloud ä¿ç•™å­—符。", +"{count} files scanned" => "{count} 个文件已扫æ。", "error while scanning" => "扫æ时出错", "Name" => "å称", "Size" => "大å°", "Modified" => "修改日期", -"folder" => "文件夹", -"folders" => "文件夹", -"file" => "文件", -"files" => "文件", -"seconds ago" => "几秒å‰", -"minute ago" => "1分钟å‰", -"minutes ago" => "分钟å‰", -"today" => "今天", -"yesterday" => "昨天", -"days ago" => "%d 天å‰", -"last month" => "上月", -"months ago" => "月å‰", -"last year" => "上年", -"years ago" => "几年å‰", +"1 folder" => "1个文件夹", +"{count} folders" => "{count} 个文件夹", +"1 file" => "1 个文件", +"{count} files" => "{count} 个文件", "File handling" => "文件处ç†", "Maximum upload size" => "最大上传大å°", -"max. possible: " => "最大å¯èƒ½: ", +"max. possible: " => "最大å…许: ", "Needed for multi-file and folder downloads." => "多文件和文件夹下载需è¦æ­¤é¡¹ã€‚", "Enable ZIP-download" => "å¯ç”¨ ZIP 下载", "0 is unlimited" => "0 为无é™åˆ¶", @@ -58,14 +50,13 @@ "New" => "新建", "Text file" => "文本文件", "Folder" => "文件夹", -"From url" => "æ¥è‡ªåœ°å€", +"From link" => "æ¥è‡ªé“¾æŽ¥", "Upload" => "上传", "Cancel upload" => "å–消上传", "Nothing in here. Upload something!" => "这里还什么都没有。上传些东西å§ï¼", -"Share" => "共享", "Download" => "下载", "Upload too large" => "上传文件过大", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "您正å°è¯•ä¸Šä¼ çš„文件超过了此æœåŠ¡å™¨å¯ä»¥ä¸Šä¼ çš„最大大å°", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "您正å°è¯•ä¸Šä¼ çš„文件超过了此æœåŠ¡å™¨å¯ä»¥ä¸Šä¼ çš„最大容é‡é™åˆ¶", "Files are being scanned, please wait." => "文件正在被扫æ,请ç¨å€™ã€‚", "Current scanning" => "当å‰æ‰«æ" ); diff --git a/apps/files/l10n/zh_TW.php b/apps/files/l10n/zh_TW.php index 30ab1901a206c8cad78071a726a4f4b0f31f7a4f..5333209eff79f1e4ac714096b5ab3cd5b83b33db 100644 --- a/apps/files/l10n/zh_TW.php +++ b/apps/files/l10n/zh_TW.php @@ -1,25 +1,37 @@ "無錯誤,檔案上傳æˆåŠŸ", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "上傳的檔案超éŽäº† php.ini 中的 upload_max_filesize 設定", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ä¸Šå‚³é»¨æ¡ˆçš„è¶…éŽ HTML 表單中指定 MAX_FILE_SIZE é™åˆ¶", "The uploaded file was only partially uploaded" => "åªæœ‰éƒ¨åˆ†æª”案被上傳", "No file was uploaded" => "無已上傳檔案", "Missing a temporary folder" => "éºå¤±æš«å­˜è³‡æ–™å¤¾", "Failed to write to disk" => "寫入硬碟失敗", "Files" => "檔案", +"Unshare" => "å–消共享", "Delete" => "刪除", -"already exists" => "已經存在", +"Rename" => "é‡æ–°å‘½å", +"{new_name} already exists" => "{new_name} 已經存在", "replace" => "å–代", "cancel" => "å–消", +"replaced {new_name}" => "å·²å–代 {new_name}", +"undo" => "復原", +"replaced {new_name} with {old_name}" => "使用 {new_name} å–代 {old_name}", "generating ZIP-file, it may take some time." => "產生壓縮檔, 它å¯èƒ½éœ€è¦ä¸€æ®µæ™‚é–“.", "Unable to upload your file as it is a directory or has 0 bytes" => "無法上傳您的檔案因為它å¯èƒ½æ˜¯ä¸€å€‹ç›®éŒ„或檔案大å°ç‚º0", "Upload Error" => "上傳發生錯誤", +"Close" => "關閉", +"1 file uploading" => "1 個檔案正在上傳", +"{count} files uploading" => "{count} 個檔案正在上傳", "Upload cancelled." => "上傳å–消", "File upload is in progress. Leaving the page now will cancel the upload." => "檔案上傳中. 離開此é é¢å°‡æœƒå–消上傳.", -"Invalid name, '/' is not allowed." => "無效的å稱, '/'是ä¸è¢«å…許的", +"Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" => "無效的資料夾å稱. \"Shared\" å稱已被 Owncloud 所ä¿ç•™ä½¿ç”¨", +"error while scanning" => "掃æ時發生錯誤", "Name" => "å稱", "Size" => "大å°", "Modified" => "修改", +"1 folder" => "1 個資料夾", +"{count} folders" => "{count} 個資料夾", +"1 file" => "1 個檔案", +"{count} files" => "{count} 個檔案", "File handling" => "檔案處ç†", "Maximum upload size" => "最大上傳容é‡", "max. possible: " => "最大å…許: ", @@ -27,14 +39,13 @@ "Enable ZIP-download" => "啟用 Zip 下載", "0 is unlimited" => "0代表沒有é™åˆ¶", "Maximum input size for ZIP files" => "é‡å°ZIP檔案最大輸入大å°", +"Save" => "儲存", "New" => "新增", "Text file" => "文字檔", "Folder" => "資料夾", -"From url" => "ç”± url ", "Upload" => "上傳", "Cancel upload" => "å–消上傳", "Nothing in here. Upload something!" => "沒有任何æ±è¥¿ã€‚請上傳內容!", -"Share" => "分享", "Download" => "下載", "Upload too large" => "上傳éŽå¤§", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "你試圖上傳的檔案已超éŽä¼ºæœå™¨çš„最大容é‡é™åˆ¶ã€‚ ", diff --git a/apps/files/templates/admin.php b/apps/files/templates/admin.php index c4fe4c86569ad3298a543f450cc9e69dd614af6d..66fec4cd536302f1dda3004f8b035a8717ad97bb 100644 --- a/apps/files/templates/admin.php +++ b/apps/files/templates/admin.php @@ -1,16 +1,25 @@ - +
            t('File handling');?> - '/>(t('max. possible: '); echo $_['maxPossibleUploadSize'] ?>)
            + + '/> + (t('max. possible: '); echo $_['maxPossibleUploadSize'] ?>)
            - />
            + checked="checked" /> +
            - ' title="t( '0 is unlimited' ); ?>" /> -
            + ' + title="t( '0 is unlimited' ); ?>" + disabled="disabled" /> +
            - + +
            -
            + \ No newline at end of file diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index d49f2f4d5d3565cc0d327617acf3de30a7f58e0b..de440a6f79c73fd2454ad45b6e4ca46427d8a4af 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -6,25 +6,42 @@
            t('New');?>
            -
            - - + + + + + - +
            - +
            @@ -47,21 +64,32 @@ t( 'Name' ); ?> - - Download" /> t('Download')?> + + Download" /> + t('Download')?> + t( 'Size' ); ?> t( 'Modified' ); ?> - + - t('Unshare')?> <?php echo $l->t('Unshare')?>" /> + + t('Unshare')?> + <?php echo $l->t('Unshare')?>" /> + - t('Delete')?> <?php echo $l->t('Delete')?>" /> + + t('Delete')?> + <?php echo $l->t('Delete')?>" /> + @@ -74,7 +102,7 @@

            - t('The files you are trying to upload exceed the maximum size for file uploads on this server.');?> + t('The files you are trying to upload exceed the maximum size for file uploads on this server.');?>

            diff --git a/apps/files/templates/part.breadcrumb.php b/apps/files/templates/part.breadcrumb.php index 71b695f65f8198e57b2b15d8d486391ff3862b84..f7b1a6076d894d1455e4770c3e48937e2e4f611c 100644 --- a/apps/files/templates/part.breadcrumb.php +++ b/apps/files/templates/part.breadcrumb.php @@ -1,6 +1,9 @@ -
            svg" data-dir='' style='background-image:url("")'> - "> + $crumb = $_["breadcrumb"][$i]; + $dir = str_replace('+', '%20', urlencode($crumb["dir"])); ?> +
            svg" + data-dir='' + style='background-image:url("")'> +
            - + - + + var publicListView = true; + + var publicListView = false; + - + 200) $relative_date_color = 200; - $name = str_replace('+','%20',urlencode($file['name'])); - $name = str_replace('%2F','/', $name); - $directory = str_replace('+','%20',urlencode($file['directory'])); - $directory = str_replace('%2F','/', $directory); ?> - ' data-permissions=''> - - - + $name = str_replace('+', '%20', urlencode($file['name'])); + $name = str_replace('%2F', '/', $name); + $directory = str_replace('+', '%20', urlencode($file['directory'])); + $directory = str_replace('%2F', '/', $directory); ?> + ' + data-permissions=''> + + style="background-image:url()" + + style="background-image:url()" + + > + + + + + + - + @@ -35,7 +52,19 @@ - - + + + + + + + + - + "التشÙير", +"Exclude the following file types from encryption" => "استبعد أنواع الملÙات التالية من التشÙير", +"None" => "لا شيء", +"Enable Encryption" => "تÙعيل التشÙير" +); diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..d486a82322bb7f4c1e6f73ce9976d2ada7d60747 --- /dev/null +++ b/apps/files_encryption/l10n/de_DE.php @@ -0,0 +1,6 @@ + "Verschlüsselung", +"Exclude the following file types from encryption" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen", +"None" => "Keine", +"Enable Encryption" => "Verschlüsselung aktivieren" +); diff --git a/apps/files_encryption/l10n/fa.php b/apps/files_encryption/l10n/fa.php index 0faa3f3aae70c0d2d07ac463f29fa732b49b04c7..01582e48e60e4d685b2db79aa42e041585ffbdce 100644 --- a/apps/files_encryption/l10n/fa.php +++ b/apps/files_encryption/l10n/fa.php @@ -1,5 +1,6 @@ "رمزگذاری", +"Exclude the following file types from encryption" => "نادیده گرÙتن Ùایل های زیر برای رمز گذاری", "None" => "هیچ‌کدام", "Enable Encryption" => "Ùعال کردن رمزگذاری" ); diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index 1434ff48aac460c13e13d222252c947a29d6ca80..91d155ccad36424efee50b05203a6a5bd6fae413 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -1,6 +1,6 @@ "Encriptado", -"Exclude the following file types from encryption" => "Excluír os seguintes tipos de ficheiro da encriptación", +"Encryption" => "Cifrado", +"Exclude the following file types from encryption" => "Excluír os seguintes tipos de ficheiro do cifrado", "None" => "Nada", -"Enable Encryption" => "Habilitar encriptación" +"Enable Encryption" => "Activar o cifrado" ); diff --git a/apps/files_encryption/l10n/id.php b/apps/files_encryption/l10n/id.php new file mode 100644 index 0000000000000000000000000000000000000000..824ae88304101a447abc016d949678621391d652 --- /dev/null +++ b/apps/files_encryption/l10n/id.php @@ -0,0 +1,6 @@ + "enkripsi", +"Exclude the following file types from encryption" => "pengecualian untuk tipe file berikut dari enkripsi", +"None" => "tidak ada", +"Enable Encryption" => "aktifkan enkripsi" +); diff --git a/apps/files_encryption/l10n/ko.php b/apps/files_encryption/l10n/ko.php new file mode 100644 index 0000000000000000000000000000000000000000..83816bc2f1425787451a21f88743c47abaf1eb3a --- /dev/null +++ b/apps/files_encryption/l10n/ko.php @@ -0,0 +1,6 @@ + "암호화", +"Exclude the following file types from encryption" => "다ìŒíŒŒì¼ 형ì‹ì— 암호화 제외", +"None" => "ì—†ìŒ", +"Enable Encryption" => "암호화 사용" +); diff --git a/apps/files_encryption/l10n/si_LK.php b/apps/files_encryption/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..a29884afffd89dce95dcb191e266bca50476214c --- /dev/null +++ b/apps/files_encryption/l10n/si_LK.php @@ -0,0 +1,6 @@ + "ගුප්ත කේතනය", +"Exclude the following file types from encryption" => "මෙම ගොනු වර්ග ගුප්ත කේතනය කිරීමෙන් බà·à·„à·à¶»à·€ තබන්න", +"None" => "කිසිවක් නà·à¶­", +"Enable Encryption" => "ගුප්ත කේතනය සක්â€à¶»à·’ය කරන්න" +); diff --git a/apps/files_encryption/l10n/sl.php b/apps/files_encryption/l10n/sl.php index 65807910e105305bf00a645ac909350dc1ea1b1c..f62fe781c6aac5d3345f7f08b4dc3054571369d6 100644 --- a/apps/files_encryption/l10n/sl.php +++ b/apps/files_encryption/l10n/sl.php @@ -1,6 +1,6 @@ "Å ifriranje", -"Exclude the following file types from encryption" => "Naslednje vrste datotek naj se ne Å¡ifrirajo", +"Exclude the following file types from encryption" => "Navedene vrste datotek naj ne bodo Å¡ifrirane", "None" => "Brez", "Enable Encryption" => "OmogoÄi Å¡ifriranje" ); diff --git a/apps/files_encryption/l10n/sr.php b/apps/files_encryption/l10n/sr.php new file mode 100644 index 0000000000000000000000000000000000000000..4718780ee5232cc1e6a265810e30805c53383140 --- /dev/null +++ b/apps/files_encryption/l10n/sr.php @@ -0,0 +1,6 @@ + "Шифровање", +"Exclude the following file types from encryption" => "Ðе шифруј Ñледеће типове датотека", +"None" => "Ðишта", +"Enable Encryption" => "Омогући шифровање" +); diff --git a/apps/files_encryption/l10n/ta_LK.php b/apps/files_encryption/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..1d1ef74007edf2d61dfb1d9e9b66c397a9efa4cc --- /dev/null +++ b/apps/files_encryption/l10n/ta_LK.php @@ -0,0 +1,6 @@ + "மறைகà¯à®•à¯à®±à®¿à®¯à¯€à®Ÿà¯", +"Exclude the following file types from encryption" => "மறைகà¯à®•à¯à®±à®¿à®¯à®¾à®•à¯à®•à®²à®¿à®²à¯ பினà¯à®µà®°à¯à®®à¯ கோபà¯à®ªà¯ வகைகளை நீகà¯à®•à®µà¯à®®à¯", +"None" => "ஒனà¯à®±à¯à®®à®¿à®²à¯à®²à¯ˆ", +"Enable Encryption" => "மறைகà¯à®•à¯à®±à®¿à®¯à®¾à®•à¯à®•à®²à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" +); diff --git a/apps/files_encryption/l10n/uk.php b/apps/files_encryption/l10n/uk.php new file mode 100644 index 0000000000000000000000000000000000000000..3c15bb284368fee51bb97314744083b0e9cc4659 --- /dev/null +++ b/apps/files_encryption/l10n/uk.php @@ -0,0 +1,6 @@ + "ШифруваннÑ", +"Exclude the following file types from encryption" => "Ðе шифрувати файли наÑтупних типів", +"None" => "Жоден", +"Enable Encryption" => "Включити шифруваннÑ" +); diff --git a/apps/files_encryption/l10n/vi.php b/apps/files_encryption/l10n/vi.php index cabf2da7dcef9c8824f9cea2a660ad8abf21bdf8..6365084fdc6642578038be515e72db0d9ac4378b 100644 --- a/apps/files_encryption/l10n/vi.php +++ b/apps/files_encryption/l10n/vi.php @@ -1,6 +1,6 @@ "Mã hóa", "Exclude the following file types from encryption" => "Loại trừ các loại tập tin sau đây từ mã hóa", -"None" => "none", +"None" => "Không có gì hết", "Enable Encryption" => "BẬT mã hóa" ); diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 38d8edf28c356fb9e6f4b78441033926d6b763d4..666fedb4e1b459cd0aed29380b41c8832240a05f 100644 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -27,7 +27,8 @@ // - Setting if crypto should be on by default // - Add a setting "Don´t encrypt files larger than xx because of performance reasons" // - Transparent decrypt/encrypt in filesystem.php. Autodetect if a file is encrypted (.encrypted extension) -// - Don't use a password directly as encryption key. but a key which is stored on the server and encrypted with the user password. -> password change faster +// - Don't use a password directly as encryption key, but a key which is stored on the server and encrypted with the +// user password. -> password change faster // - IMPORTANT! Check if the block lenght of the encrypted data stays the same @@ -40,18 +41,18 @@ class OC_Crypt { static private $bf = null; public static function loginListener($params) { - self::init($params['uid'],$params['password']); + self::init($params['uid'], $params['password']); } - public static function init($login,$password) { + public static function init($login, $password) { $view=new OC_FilesystemView('/'); - if(!$view->file_exists('/'.$login)) { + if ( ! $view->file_exists('/'.$login)) { $view->mkdir('/'.$login); } OC_FileProxy::$enabled=false; - if(!$view->file_exists('/'.$login.'/encryption.key')) {// does key exist? - OC_Crypt::createkey($login,$password); + if ( ! $view->file_exists('/'.$login.'/encryption.key')) {// does key exist? + OC_Crypt::createkey($login, $password); } $key=$view->file_get_contents('/'.$login.'/encryption.key'); OC_FileProxy::$enabled=true; @@ -67,36 +68,36 @@ class OC_Crypt { * if the key is left out, the default handeler will be used */ public static function getBlowfish($key='') { - if($key) { + if ($key) { return new Crypt_Blowfish($key); - }else{ - if(!isset($_SESSION['enckey'])) { + } else { + if ( ! isset($_SESSION['enckey'])) { return false; } - if(!self::$bf) { + if ( ! self::$bf) { self::$bf=new Crypt_Blowfish($_SESSION['enckey']); } return self::$bf; } } - public static function createkey($username,$passcode) { + public static function createkey($username, $passcode) { // generate a random key - $key=mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999); + $key=mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999); // encrypt the key with the passcode of the user - $enckey=OC_Crypt::encrypt($key,$passcode); + $enckey=OC_Crypt::encrypt($key, $passcode); // Write the file $proxyEnabled=OC_FileProxy::$enabled; OC_FileProxy::$enabled=false; $view=new OC_FilesystemView('/'.$username); - $view->file_put_contents('/encryption.key',$enckey); + $view->file_put_contents('/encryption.key', $enckey); OC_FileProxy::$enabled=$proxyEnabled; } public static function changekeypasscode($oldPassword, $newPassword) { - if(OCP\User::isLoggedIn()) { + if (OCP\User::isLoggedIn()) { $username=OCP\USER::getUser(); $view=new OC_FilesystemView('/'.$username); @@ -151,7 +152,7 @@ class OC_Crypt { */ public static function encryptFile( $source, $target, $key='') { $handleread = fopen($source, "rb"); - if($handleread!=FALSE) { + if ($handleread!=false) { $handlewrite = fopen($target, "wb"); while (!feof($handleread)) { $content = fread($handleread, 8192); @@ -174,12 +175,12 @@ class OC_Crypt { */ public static function decryptFile( $source, $target, $key='') { $handleread = fopen($source, "rb"); - if($handleread!=FALSE) { + if ($handleread!=false) { $handlewrite = fopen($target, "wb"); while (!feof($handleread)) { $content = fread($handleread, 8192); $enccontent=OC_CRYPT::decrypt( $content, $key); - if(feof($handleread)) { + if (feof($handleread)) { $enccontent=rtrim($enccontent, "\0"); } fwrite($handlewrite, $enccontent); @@ -194,9 +195,9 @@ class OC_Crypt { */ public static function blockEncrypt($data, $key='') { $result=''; - while(strlen($data)) { - $result.=self::encrypt(substr($data,0,8192),$key); - $data=substr($data,8192); + while (strlen($data)) { + $result.=self::encrypt(substr($data, 0, 8192), $key); + $data=substr($data, 8192); } return $result; } @@ -204,15 +205,15 @@ class OC_Crypt { /** * decrypt data in 8192b sized blocks */ - public static function blockDecrypt($data, $key='',$maxLength=0) { + public static function blockDecrypt($data, $key='', $maxLength=0) { $result=''; - while(strlen($data)) { - $result.=self::decrypt(substr($data,0,8192),$key); - $data=substr($data,8192); + while (strlen($data)) { + $result.=self::decrypt(substr($data, 0, 8192), $key); + $data=substr($data, 8192); } - if($maxLength>0) { - return substr($result,0,$maxLength); - }else{ + if ($maxLength>0) { + return substr($result, 0, $maxLength); + } else { return rtrim($result, "\0"); } } diff --git a/apps/files_encryption/lib/cryptstream.php b/apps/files_encryption/lib/cryptstream.php index 721a1b955dffd0c2f9c5b3bb51e0ef6da456e9a6..d516c0c21b22904d8bca4779787bc7a39c1adfdf 100644 --- a/apps/files_encryption/lib/cryptstream.php +++ b/apps/files_encryption/lib/cryptstream.php @@ -23,8 +23,9 @@ /** * transparently encrypted filestream * - * you can use it as wrapper around an existing stream by setting OC_CryptStream::$sourceStreams['foo']=array('path'=>$path,'stream'=>$stream) - * and then fopen('crypt://streams/foo'); + * you can use it as wrapper around an existing stream by setting + * OC_CryptStream::$sourceStreams['foo']=array('path'=>$path, 'stream'=>$stream) + * and then fopen('crypt://streams/foo'); */ class OC_CryptStream{ @@ -37,29 +38,29 @@ class OC_CryptStream{ private static $rootView; public function stream_open($path, $mode, $options, &$opened_path) { - if(!self::$rootView) { + if ( ! self::$rootView) { self::$rootView=new OC_FilesystemView(''); } - $path=str_replace('crypt://','',$path); - if(dirname($path)=='streams' and isset(self::$sourceStreams[basename($path)])) { + $path=str_replace('crypt://', '', $path); + if (dirname($path)=='streams' and isset(self::$sourceStreams[basename($path)])) { $this->source=self::$sourceStreams[basename($path)]['stream']; $this->path=self::$sourceStreams[basename($path)]['path']; $this->size=self::$sourceStreams[basename($path)]['size']; - }else{ + } else { $this->path=$path; - if($mode=='w' or $mode=='w+' or $mode=='wb' or $mode=='wb+') { + if ($mode=='w' or $mode=='w+' or $mode=='wb' or $mode=='wb+') { $this->size=0; - }else{ - $this->size=self::$rootView->filesize($path,$mode); + } else { + $this->size=self::$rootView->filesize($path, $mode); } OC_FileProxy::$enabled=false;//disable fileproxies so we can open the source file - $this->source=self::$rootView->fopen($path,$mode); + $this->source=self::$rootView->fopen($path, $mode); OC_FileProxy::$enabled=true; - if(!is_resource($this->source)) { - OCP\Util::writeLog('files_encryption','failed to open '.$path,OCP\Util::ERROR); + if ( ! is_resource($this->source)) { + OCP\Util::writeLog('files_encryption', 'failed to open '.$path, OCP\Util::ERROR); } } - if(is_resource($this->source)) { + if (is_resource($this->source)) { $this->meta=stream_get_meta_data($this->source); } return is_resource($this->source); @@ -67,7 +68,7 @@ class OC_CryptStream{ public function stream_seek($offset, $whence=SEEK_SET) { $this->flush(); - fseek($this->source,$offset,$whence); + fseek($this->source, $offset, $whence); } public function stream_tell() { @@ -78,20 +79,22 @@ class OC_CryptStream{ //$count will always be 8192 https://bugs.php.net/bug.php?id=21641 //This makes this function a lot simpler but will breake everything the moment it's fixed $this->writeCache=''; - if($count!=8192) { - OCP\Util::writeLog('files_encryption','php bug 21641 no longer holds, decryption will not work',OCP\Util::FATAL); + if ($count!=8192) { + OCP\Util::writeLog('files_encryption', + 'php bug 21641 no longer holds, decryption will not work', + OCP\Util::FATAL); die(); } $pos=ftell($this->source); - $data=fread($this->source,8192); - if(strlen($data)) { + $data=fread($this->source, 8192); + if (strlen($data)) { $result=OC_Crypt::decrypt($data); - }else{ + } else { $result=''; } $length=$this->size-$pos; - if($length<8192) { - $result=substr($result,0,$length); + if ($length<8192) { + $result=substr($result, 0, $length); } return $result; } @@ -99,44 +102,44 @@ class OC_CryptStream{ public function stream_write($data) { $length=strlen($data); $currentPos=ftell($this->source); - if($this->writeCache) { + if ($this->writeCache) { $data=$this->writeCache.$data; $this->writeCache=''; } - if($currentPos%8192!=0) { + if ($currentPos%8192!=0) { //make sure we always start on a block start - fseek($this->source,-($currentPos%8192),SEEK_CUR); - $encryptedBlock=fread($this->source,8192); - fseek($this->source,-($currentPos%8192),SEEK_CUR); + fseek($this->source, -($currentPos%8192), SEEK_CUR); + $encryptedBlock=fread($this->source, 8192); + fseek($this->source, -($currentPos%8192), SEEK_CUR); $block=OC_Crypt::decrypt($encryptedBlock); - $data=substr($block,0,$currentPos%8192).$data; - fseek($this->source,-($currentPos%8192),SEEK_CUR); + $data=substr($block, 0, $currentPos%8192).$data; + fseek($this->source, -($currentPos%8192), SEEK_CUR); } $currentPos=ftell($this->source); - while($remainingLength=strlen($data)>0) { - if($remainingLength<8192) { + while ($remainingLength=strlen($data)>0) { + if ($remainingLength<8192) { $this->writeCache=$data; $data=''; - }else{ - $encrypted=OC_Crypt::encrypt(substr($data,0,8192)); - fwrite($this->source,$encrypted); - $data=substr($data,8192); + } else { + $encrypted=OC_Crypt::encrypt(substr($data, 0, 8192)); + fwrite($this->source, $encrypted); + $data=substr($data, 8192); } } - $this->size=max($this->size,$currentPos+$length); + $this->size=max($this->size, $currentPos+$length); return $length; } - public function stream_set_option($option,$arg1,$arg2) { + public function stream_set_option($option, $arg1, $arg2) { switch($option) { case STREAM_OPTION_BLOCKING: - stream_set_blocking($this->source,$arg1); + stream_set_blocking($this->source, $arg1); break; case STREAM_OPTION_READ_TIMEOUT: - stream_set_timeout($this->source,$arg1,$arg2); + stream_set_timeout($this->source, $arg1, $arg2); break; case STREAM_OPTION_WRITE_BUFFER: - stream_set_write_buffer($this->source,$arg1,$arg2); + stream_set_write_buffer($this->source, $arg1, $arg2); } } @@ -145,7 +148,7 @@ class OC_CryptStream{ } public function stream_lock($mode) { - flock($this->source,$mode); + flock($this->source, $mode); } public function stream_flush() { @@ -157,17 +160,17 @@ class OC_CryptStream{ } private function flush() { - if($this->writeCache) { + if ($this->writeCache) { $encrypted=OC_Crypt::encrypt($this->writeCache); - fwrite($this->source,$encrypted); + fwrite($this->source, $encrypted); $this->writeCache=''; } } public function stream_close() { $this->flush(); - if($this->meta['mode']!='r' and $this->meta['mode']!='rb') { - OC_FileCache::put($this->path,array('encrypted'=>true,'size'=>$this->size),''); + if ($this->meta['mode']!='r' and $this->meta['mode']!='rb') { + OC_FileCache::put($this->path, array('encrypted'=>true, 'size'=>$this->size), ''); } return fclose($this->source); } diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index f61cd1e3773dc53de90f2c7471d579218c88619b..e8dbd95c29d2a242c9a422194e9500d3c21b8c7c 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -35,20 +35,22 @@ class OC_FileProxy_Encryption extends OC_FileProxy{ * @return bool */ private static function shouldEncrypt($path) { - if(is_null(self::$enableEncryption)) { - self::$enableEncryption=(OCP\Config::getAppValue('files_encryption','enable_encryption','true')=='true'); + if (is_null(self::$enableEncryption)) { + self::$enableEncryption=(OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true')=='true'); } - if(!self::$enableEncryption) { + if ( ! self::$enableEncryption) { return false; } - if(is_null(self::$blackList)) { - self::$blackList=explode(',',OCP\Config::getAppValue('files_encryption','type_blacklist','jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg')); + if (is_null(self::$blackList)) { + self::$blackList=explode(',', OCP\Config::getAppValue('files_encryption', + 'type_blacklist', + 'jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg')); } - if(self::isEncrypted($path)) { + if (self::isEncrypted($path)) { return true; } - $extension=substr($path,strrpos($path,'.')+1); - if(array_search($extension,self::$blackList)===false) { + $extension=substr($path, strrpos($path, '.')+1); + if (array_search($extension, self::$blackList)===false) { return true; } } @@ -59,71 +61,71 @@ class OC_FileProxy_Encryption extends OC_FileProxy{ * @return bool */ private static function isEncrypted($path) { - $metadata=OC_FileCache_Cached::get($path,''); + $metadata=OC_FileCache_Cached::get($path, ''); return isset($metadata['encrypted']) and (bool)$metadata['encrypted']; } public function preFile_put_contents($path,&$data) { - if(self::shouldEncrypt($path)) { - if (!is_resource($data)) {//stream put contents should have been converter to fopen + if (self::shouldEncrypt($path)) { + if ( ! is_resource($data)) {//stream put contents should have been converter to fopen $size=strlen($data); $data=OC_Crypt::blockEncrypt($data); - OC_FileCache::put($path,array('encrypted'=>true,'size'=>$size),''); + OC_FileCache::put($path, array('encrypted'=>true,'size'=>$size), ''); } } } - public function postFile_get_contents($path,$data) { - if(self::isEncrypted($path)) { - $cached=OC_FileCache_Cached::get($path,''); - $data=OC_Crypt::blockDecrypt($data,'',$cached['size']); + public function postFile_get_contents($path, $data) { + if (self::isEncrypted($path)) { + $cached=OC_FileCache_Cached::get($path, ''); + $data=OC_Crypt::blockDecrypt($data, '', $cached['size']); } return $data; } public function postFopen($path,&$result) { - if(!$result) { + if ( ! $result) { return $result; } $meta=stream_get_meta_data($result); - if(self::isEncrypted($path)) { + if (self::isEncrypted($path)) { fclose($result); - $result=fopen('crypt://'.$path,$meta['mode']); - }elseif(self::shouldEncrypt($path) and $meta['mode']!='r' and $meta['mode']!='rb') { - if(OC_Filesystem::file_exists($path) and OC_Filesystem::filesize($path)>0) { + $result=fopen('crypt://'.$path, $meta['mode']); + } elseif (self::shouldEncrypt($path) and $meta['mode']!='r' and $meta['mode']!='rb') { + if (OC_Filesystem::file_exists($path) and OC_Filesystem::filesize($path)>0) { //first encrypt the target file so we don't end up with a half encrypted file - OCP\Util::writeLog('files_encryption','Decrypting '.$path.' before writing',OCP\Util::DEBUG); + OCP\Util::writeLog('files_encryption', 'Decrypting '.$path.' before writing', OCP\Util::DEBUG); $tmp=fopen('php://temp'); - OCP\Files::streamCopy($result,$tmp); + OCP\Files::streamCopy($result, $tmp); fclose($result); - OC_Filesystem::file_put_contents($path,$tmp); + OC_Filesystem::file_put_contents($path, $tmp); fclose($tmp); } - $result=fopen('crypt://'.$path,$meta['mode']); + $result=fopen('crypt://'.$path, $meta['mode']); } return $result; } - public function postGetMimeType($path,$mime) { - if(self::isEncrypted($path)) { - $mime=OCP\Files::getMimeType('crypt://'.$path,'w'); + public function postGetMimeType($path, $mime) { + if (self::isEncrypted($path)) { + $mime=OCP\Files::getMimeType('crypt://'.$path, 'w'); } return $mime; } - public function postStat($path,$data) { - if(self::isEncrypted($path)) { - $cached=OC_FileCache_Cached::get($path,''); + public function postStat($path, $data) { + if (self::isEncrypted($path)) { + $cached=OC_FileCache_Cached::get($path, ''); $data['size']=$cached['size']; } return $data; } - public function postFileSize($path,$size) { - if(self::isEncrypted($path)) { - $cached=OC_FileCache_Cached::get($path,''); + public function postFileSize($path, $size) { + if (self::isEncrypted($path)) { + $cached=OC_FileCache_Cached::get($path, ''); return $cached['size']; - }else{ + } else { return $size; } } diff --git a/apps/files_encryption/settings.php b/apps/files_encryption/settings.php index 0a0d4d1abbad68c0e32eba71ee2e471d4cc3d4d5..6b2b03211e270f10cfeeaacecdfadc69e61dd25f 100644 --- a/apps/files_encryption/settings.php +++ b/apps/files_encryption/settings.php @@ -7,12 +7,14 @@ */ $tmpl = new OCP\Template( 'files_encryption', 'settings'); -$blackList=explode(',',OCP\Config::getAppValue('files_encryption','type_blacklist','jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg')); -$enabled=(OCP\Config::getAppValue('files_encryption','enable_encryption','true')=='true'); -$tmpl->assign('blacklist',$blackList); -$tmpl->assign('encryption_enabled',$enabled); +$blackList=explode(',', OCP\Config::getAppValue('files_encryption', + 'type_blacklist', + 'jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg')); +$enabled=(OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true')=='true'); +$tmpl->assign('blacklist', $blackList); +$tmpl->assign('encryption_enabled', $enabled); -OCP\Util::addscript('files_encryption','settings'); -OCP\Util::addscript('core','multiselect'); +OCP\Util::addscript('files_encryption', 'settings'); +OCP\Util::addscript('core', 'multiselect'); -return $tmpl->fetchPage(); +return $tmpl->fetchPage(); \ No newline at end of file diff --git a/apps/files_encryption/templates/settings.php b/apps/files_encryption/templates/settings.php index 55e8cf1542cfb9213d7fc5133fa302e854ac877c..75df784e397760cab701c8c9418e609bc3e203d6 100644 --- a/apps/files_encryption/templates/settings.php +++ b/apps/files_encryption/templates/settings.php @@ -1,12 +1,14 @@
            t('Encryption'); ?> - t("Exclude the following file types from encryption"); ?> + t('Exclude the following file types from encryption'); ?> - > + checked="checked" + id='enable_encryption' > +
            diff --git a/apps/files_encryption/tests/encryption.php b/apps/files_encryption/tests/encryption.php index 89397f6ef2c066f2856470cc6a20fd048e17a8b0..0e119f55bea1b6c4cd2b88cd3829eb046259b330 100644 --- a/apps/files_encryption/tests/encryption.php +++ b/apps/files_encryption/tests/encryption.php @@ -11,46 +11,46 @@ class Test_Encryption extends UnitTestCase { $key=uniqid(); $file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; $source=file_get_contents($file); //nice large text file - $encrypted=OC_Crypt::encrypt($source,$key); - $decrypted=OC_Crypt::decrypt($encrypted,$key); + $encrypted=OC_Crypt::encrypt($source, $key); + $decrypted=OC_Crypt::decrypt($encrypted, $key); $decrypted=rtrim($decrypted, "\0"); - $this->assertNotEqual($encrypted,$source); - $this->assertEqual($decrypted,$source); + $this->assertNotEqual($encrypted, $source); + $this->assertEqual($decrypted, $source); - $chunk=substr($source,0,8192); - $encrypted=OC_Crypt::encrypt($chunk,$key); - $this->assertEqual(strlen($chunk),strlen($encrypted)); - $decrypted=OC_Crypt::decrypt($encrypted,$key); + $chunk=substr($source, 0, 8192); + $encrypted=OC_Crypt::encrypt($chunk, $key); + $this->assertEqual(strlen($chunk), strlen($encrypted)); + $decrypted=OC_Crypt::decrypt($encrypted, $key); $decrypted=rtrim($decrypted, "\0"); - $this->assertEqual($decrypted,$chunk); + $this->assertEqual($decrypted, $chunk); - $encrypted=OC_Crypt::blockEncrypt($source,$key); - $decrypted=OC_Crypt::blockDecrypt($encrypted,$key); - $this->assertNotEqual($encrypted,$source); - $this->assertEqual($decrypted,$source); + $encrypted=OC_Crypt::blockEncrypt($source, $key); + $decrypted=OC_Crypt::blockDecrypt($encrypted, $key); + $this->assertNotEqual($encrypted, $source); + $this->assertEqual($decrypted, $source); $tmpFileEncrypted=OCP\Files::tmpFile(); - OC_Crypt::encryptfile($file,$tmpFileEncrypted,$key); + OC_Crypt::encryptfile($file, $tmpFileEncrypted, $key); $encrypted=file_get_contents($tmpFileEncrypted); - $decrypted=OC_Crypt::blockDecrypt($encrypted,$key); - $this->assertNotEqual($encrypted,$source); - $this->assertEqual($decrypted,$source); + $decrypted=OC_Crypt::blockDecrypt($encrypted, $key); + $this->assertNotEqual($encrypted, $source); + $this->assertEqual($decrypted, $source); $tmpFileDecrypted=OCP\Files::tmpFile(); - OC_Crypt::decryptfile($tmpFileEncrypted,$tmpFileDecrypted,$key); + OC_Crypt::decryptfile($tmpFileEncrypted, $tmpFileDecrypted, $key); $decrypted=file_get_contents($tmpFileDecrypted); - $this->assertEqual($decrypted,$source); + $this->assertEqual($decrypted, $source); $file=OC::$SERVERROOT.'/core/img/weather-clear.png'; $source=file_get_contents($file); //binary file - $encrypted=OC_Crypt::encrypt($source,$key); - $decrypted=OC_Crypt::decrypt($encrypted,$key); + $encrypted=OC_Crypt::encrypt($source, $key); + $decrypted=OC_Crypt::decrypt($encrypted, $key); $decrypted=rtrim($decrypted, "\0"); - $this->assertEqual($decrypted,$source); + $this->assertEqual($decrypted, $source); - $encrypted=OC_Crypt::blockEncrypt($source,$key); - $decrypted=OC_Crypt::blockDecrypt($encrypted,$key); - $this->assertEqual($decrypted,$source); + $encrypted=OC_Crypt::blockEncrypt($source, $key); + $decrypted=OC_Crypt::blockDecrypt($encrypted, $key); + $this->assertEqual($decrypted, $source); } @@ -59,14 +59,14 @@ class Test_Encryption extends UnitTestCase { $file=__DIR__.'/binary'; $source=file_get_contents($file); //binary file - $encrypted=OC_Crypt::encrypt($source,$key); - $decrypted=OC_Crypt::decrypt($encrypted,$key); + $encrypted=OC_Crypt::encrypt($source, $key); + $decrypted=OC_Crypt::decrypt($encrypted, $key); $decrypted=rtrim($decrypted, "\0"); - $this->assertEqual($decrypted,$source); + $this->assertEqual($decrypted, $source); - $encrypted=OC_Crypt::blockEncrypt($source,$key); - $decrypted=OC_Crypt::blockDecrypt($encrypted,$key,strlen($source)); - $this->assertEqual($decrypted,$source); + $encrypted=OC_Crypt::blockEncrypt($source, $key); + $decrypted=OC_Crypt::blockDecrypt($encrypted, $key, strlen($source)); + $this->assertEqual($decrypted, $source); } } diff --git a/apps/files_encryption/tests/proxy.php b/apps/files_encryption/tests/proxy.php index 042011a6c87814157a89a4589216ec81d8562890..5aa617e7472b00d5da4651e93ca61d75ded6463b 100644 --- a/apps/files_encryption/tests/proxy.php +++ b/apps/files_encryption/tests/proxy.php @@ -13,8 +13,8 @@ class Test_CryptProxy extends UnitTestCase { public function setUp() { $user=OC_User::getUser(); - $this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption','true'); - OCP\Config::setAppValue('files_encryption','enable_encryption','true'); + $this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption', 'true'); + OCP\Config::setAppValue('files_encryption', 'enable_encryption', 'true'); $this->oldKey=isset($_SESSION['enckey'])?$_SESSION['enckey']:null; @@ -30,7 +30,7 @@ class Test_CryptProxy extends UnitTestCase { //set up temporary storage OC_Filesystem::clearMounts(); - OC_Filesystem::mount('OC_Filestorage_Temporary',array(),'/'); + OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/'); OC_Filesystem::init('/'.$user.'/files'); @@ -41,8 +41,8 @@ class Test_CryptProxy extends UnitTestCase { } public function tearDown() { - OCP\Config::setAppValue('files_encryption','enable_encryption',$this->oldConfig); - if(!is_null($this->oldKey)) { + OCP\Config::setAppValue('files_encryption', 'enable_encryption', $this->oldConfig); + if ( ! is_null($this->oldKey)) { $_SESSION['enckey']=$this->oldKey; } } @@ -51,16 +51,16 @@ class Test_CryptProxy extends UnitTestCase { $file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; $original=file_get_contents($file); - OC_Filesystem::file_put_contents('/file',$original); + OC_Filesystem::file_put_contents('/file', $original); OC_FileProxy::$enabled=false; $stored=OC_Filesystem::file_get_contents('/file'); OC_FileProxy::$enabled=true; $fromFile=OC_Filesystem::file_get_contents('/file'); - $this->assertNotEqual($original,$stored); - $this->assertEqual(strlen($original),strlen($fromFile)); - $this->assertEqual($original,$fromFile); + $this->assertNotEqual($original, $stored); + $this->assertEqual(strlen($original), strlen($fromFile)); + $this->assertEqual($original, $fromFile); } @@ -72,46 +72,46 @@ class Test_CryptProxy extends UnitTestCase { $view=new OC_FilesystemView('/'.OC_User::getUser()); $userDir='/'.OC_User::getUser().'/files'; - $rootView->file_put_contents($userDir.'/file',$original); + $rootView->file_put_contents($userDir.'/file', $original); OC_FileProxy::$enabled=false; $stored=$rootView->file_get_contents($userDir.'/file'); OC_FileProxy::$enabled=true; - $this->assertNotEqual($original,$stored); + $this->assertNotEqual($original, $stored); $fromFile=$rootView->file_get_contents($userDir.'/file'); - $this->assertEqual($original,$fromFile); + $this->assertEqual($original, $fromFile); $fromFile=$view->file_get_contents('files/file'); - $this->assertEqual($original,$fromFile); + $this->assertEqual($original, $fromFile); } public function testBinary() { $file=__DIR__.'/binary'; $original=file_get_contents($file); - OC_Filesystem::file_put_contents('/file',$original); + OC_Filesystem::file_put_contents('/file', $original); OC_FileProxy::$enabled=false; $stored=OC_Filesystem::file_get_contents('/file'); OC_FileProxy::$enabled=true; $fromFile=OC_Filesystem::file_get_contents('/file'); - $this->assertNotEqual($original,$stored); - $this->assertEqual(strlen($original),strlen($fromFile)); - $this->assertEqual($original,$fromFile); + $this->assertNotEqual($original, $stored); + $this->assertEqual(strlen($original), strlen($fromFile)); + $this->assertEqual($original, $fromFile); $file=__DIR__.'/zeros'; $original=file_get_contents($file); - OC_Filesystem::file_put_contents('/file',$original); + OC_Filesystem::file_put_contents('/file', $original); OC_FileProxy::$enabled=false; $stored=OC_Filesystem::file_get_contents('/file'); OC_FileProxy::$enabled=true; $fromFile=OC_Filesystem::file_get_contents('/file'); - $this->assertNotEqual($original,$stored); - $this->assertEqual(strlen($original),strlen($fromFile)); + $this->assertNotEqual($original, $stored); + $this->assertEqual(strlen($original), strlen($fromFile)); } } diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 39b136207826000704625d693ccef2bf29e683ca..e4af17d47b5b404cc0ab169c255921d76b210170 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -10,27 +10,27 @@ class Test_CryptStream extends UnitTestCase { private $tmpFiles=array(); function testStream() { - $stream=$this->getStream('test1','w',strlen('foobar')); - fwrite($stream,'foobar'); + $stream=$this->getStream('test1', 'w', strlen('foobar')); + fwrite($stream, 'foobar'); fclose($stream); - $stream=$this->getStream('test1','r',strlen('foobar')); - $data=fread($stream,6); + $stream=$this->getStream('test1', 'r', strlen('foobar')); + $data=fread($stream, 6); fclose($stream); - $this->assertEqual('foobar',$data); + $this->assertEqual('foobar', $data); $file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; - $source=fopen($file,'r'); - $target=$this->getStream('test2','w',0); - OCP\Files::streamCopy($source,$target); + $source=fopen($file, 'r'); + $target=$this->getStream('test2', 'w', 0); + OCP\Files::streamCopy($source, $target); fclose($target); fclose($source); - $stream=$this->getStream('test2','r',filesize($file)); + $stream=$this->getStream('test2', 'r', filesize($file)); $data=stream_get_contents($stream); $original=file_get_contents($file); - $this->assertEqual(strlen($original),strlen($data)); - $this->assertEqual($original,$data); + $this->assertEqual(strlen($original), strlen($data)); + $this->assertEqual($original, $data); } /** @@ -40,46 +40,46 @@ class Test_CryptStream extends UnitTestCase { * @param int size * @return resource */ - function getStream($id,$mode,$size) { - if($id==='') { + function getStream($id, $mode, $size) { + if ($id==='') { $id=uniqid(); } - if(!isset($this->tmpFiles[$id])) { + if ( ! isset($this->tmpFiles[$id])) { $file=OCP\Files::tmpFile(); $this->tmpFiles[$id]=$file; - }else{ + } else { $file=$this->tmpFiles[$id]; } - $stream=fopen($file,$mode); - OC_CryptStream::$sourceStreams[$id]=array('path'=>'dummy'.$id,'stream'=>$stream,'size'=>$size); - return fopen('crypt://streams/'.$id,$mode); + $stream=fopen($file, $mode); + OC_CryptStream::$sourceStreams[$id]=array('path'=>'dummy'.$id, 'stream'=>$stream, 'size'=>$size); + return fopen('crypt://streams/'.$id, $mode); } function testBinary() { $file=__DIR__.'/binary'; $source=file_get_contents($file); - $stream=$this->getStream('test','w',strlen($source)); - fwrite($stream,$source); + $stream=$this->getStream('test', 'w', strlen($source)); + fwrite($stream, $source); fclose($stream); - $stream=$this->getStream('test','r',strlen($source)); + $stream=$this->getStream('test', 'r', strlen($source)); $data=stream_get_contents($stream); fclose($stream); - $this->assertEqual(strlen($data),strlen($source)); - $this->assertEqual($source,$data); + $this->assertEqual(strlen($data), strlen($source)); + $this->assertEqual($source, $data); $file=__DIR__.'/zeros'; $source=file_get_contents($file); - $stream=$this->getStream('test2','w',strlen($source)); - fwrite($stream,$source); + $stream=$this->getStream('test2', 'w', strlen($source)); + fwrite($stream, $source); fclose($stream); - $stream=$this->getStream('test2','r',strlen($source)); + $stream=$this->getStream('test2', 'r', strlen($source)); $data=stream_get_contents($stream); fclose($stream); - $this->assertEqual(strlen($data),strlen($source)); - $this->assertEqual($source,$data); + $this->assertEqual(strlen($data), strlen($source)); + $this->assertEqual($source, $data); } } diff --git a/apps/files_external/ajax/addMountPoint.php b/apps/files_external/ajax/addMountPoint.php index e08f805942f0e935258f9016a29bd5f21c034e2e..4cd8871b310c34384f979b0390a4274919cc23b2 100644 --- a/apps/files_external/ajax/addMountPoint.php +++ b/apps/files_external/ajax/addMountPoint.php @@ -10,4 +10,9 @@ if ($_POST['isPersonal'] == 'true') { OCP\JSON::checkAdminUser(); $isPersonal = false; } -OC_Mount_Config::addMountPoint($_POST['mountPoint'], $_POST['class'], $_POST['classOptions'], $_POST['mountType'], $_POST['applicable'], $isPersonal); +OC_Mount_Config::addMountPoint($_POST['mountPoint'], + $_POST['class'], + $_POST['classOptions'], + $_POST['mountType'], + $_POST['applicable'], + $isPersonal); \ No newline at end of file diff --git a/apps/files_external/ajax/addRootCertificate.php b/apps/files_external/ajax/addRootCertificate.php index e0a0239c9543b6fdd4cb3208ce0a43e99e1ee483..be60b415e1b5ff5b24b93de26cd841f83e961557 100644 --- a/apps/files_external/ajax/addRootCertificate.php +++ b/apps/files_external/ajax/addRootCertificate.php @@ -2,24 +2,24 @@ OCP\JSON::checkAppEnabled('files_external'); -if ( !($filename = $_FILES['rootcert_import']['name']) ) { - header("Location: settings/personal.php"); +if ( ! ($filename = $_FILES['rootcert_import']['name']) ) { + header("Location: settings/personal.php"); exit; } -$fh = fopen($_FILES['rootcert_import']['tmp_name'], 'r'); -$data = fread($fh, filesize($_FILES['rootcert_import']['tmp_name'])); +$fh = fopen($_FILES['rootcert_import']['tmp_name'], 'r'); +$data = fread($fh, filesize($_FILES['rootcert_import']['tmp_name'])); fclose($fh); $filename = $_FILES['rootcert_import']['name']; - -$view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_external/uploads'); -if (!$view->file_exists('')) $view->mkdir(''); + +$view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_external/uploads'); +if ( ! $view->file_exists('')) $view->mkdir(''); $isValid = openssl_pkey_get_public($data); //maybe it was just the wrong file format, try to convert it... if ($isValid == false) { - $data = chunk_split(base64_encode($data), 64, "\n"); + $data = chunk_split(base64_encode($data), 64, "\n"); $data = "-----BEGIN CERTIFICATE-----\n".$data."-----END CERTIFICATE-----\n"; $isValid = openssl_pkey_get_public($data); } @@ -29,8 +29,10 @@ if ( $isValid ) { $view->file_put_contents($filename, $data); OC_Mount_Config::createCertificateBundle(); } else { - OCP\Util::writeLog("files_external", "Couldn't import SSL root certificate ($filename), allowed formats: PEM and DER", OCP\Util::WARN); + OCP\Util::writeLog('files_external', + 'Couldn\'t import SSL root certificate ('.$filename.'), allowed formats: PEM and DER', + OCP\Util::WARN); } -header("Location: settings/personal.php"); +header('Location: settings/personal.php'); exit; diff --git a/apps/files_external/ajax/dropbox.php b/apps/files_external/ajax/dropbox.php index f5923940dc90ddd055f5ed48190e29ae5c96793b..58c41d6906263994e36a8c2fc0f250574ba53709 100644 --- a/apps/files_external/ajax/dropbox.php +++ b/apps/files_external/ajax/dropbox.php @@ -16,9 +16,13 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) { $callback = null; } $token = $oauth->getRequestToken(); - OCP\JSON::success(array('data' => array('url' => $oauth->getAuthorizeUrl($callback), 'request_token' => $token['token'], 'request_token_secret' => $token['token_secret']))); + OCP\JSON::success(array('data' => array('url' => $oauth->getAuthorizeUrl($callback), + 'request_token' => $token['token'], + 'request_token_secret' => $token['token_secret']))); } catch (Exception $exception) { - OCP\JSON::error(array('data' => array('message' => 'Fetching request tokens failed. Verify that your Dropbox app key and secret are correct.'))); + OCP\JSON::error(array('data' => array('message' => + 'Fetching request tokens failed. Verify that your Dropbox app key and secret are correct.') + )); } break; case 2: @@ -26,9 +30,12 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) { try { $oauth->setToken($_POST['request_token'], $_POST['request_token_secret']); $token = $oauth->getAccessToken(); - OCP\JSON::success(array('access_token' => $token['token'], 'access_token_secret' => $token['token_secret'])); + OCP\JSON::success(array('access_token' => $token['token'], + 'access_token_secret' => $token['token_secret'])); } catch (Exception $exception) { - OCP\JSON::error(array('data' => array('message' => 'Fetching access tokens failed. Verify that your Dropbox app key and secret are correct.'))); + OCP\JSON::error(array('data' => array('message' => + 'Fetching access tokens failed. Verify that your Dropbox app key and secret are correct.') + )); } } break; diff --git a/apps/files_external/ajax/google.php b/apps/files_external/ajax/google.php index 4cd01c06cc9d9f81c90e05bb014f91707cd5a55a..c76c7618e4d056f711a5bc77196c03f9b9037749 100644 --- a/apps/files_external/ajax/google.php +++ b/apps/files_external/ajax/google.php @@ -14,7 +14,9 @@ if (isset($_POST['step'])) { } else { $callback = null; } - $scope = 'https://docs.google.com/feeds/ https://docs.googleusercontent.com/ https://spreadsheets.google.com/feeds/'; + $scope = 'https://docs.google.com/feeds/' + .' https://docs.googleusercontent.com/' + .' https://spreadsheets.google.com/feeds/'; $url = 'https://www.google.com/accounts/OAuthGetRequestToken?scope='.urlencode($scope); $params = array('scope' => $scope, 'oauth_callback' => $callback); $request = OAuthRequest::from_consumer_and_token($consumer, null, 'GET', $url, $params); @@ -24,24 +26,35 @@ if (isset($_POST['step'])) { parse_str($response, $token); if (isset($token['oauth_token']) && isset($token['oauth_token_secret'])) { $authUrl = 'https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token='.$token['oauth_token']; - OCP\JSON::success(array('data' => array('url' => $authUrl, 'request_token' => $token['oauth_token'], 'request_token_secret' => $token['oauth_token_secret']))); + OCP\JSON::success(array('data' => array('url' => $authUrl, + 'request_token' => $token['oauth_token'], + 'request_token_secret' => $token['oauth_token_secret']))); } else { - OCP\JSON::error(array('data' => array('message' => 'Fetching request tokens failed. Error: '.$response))); + OCP\JSON::error(array('data' => array( + 'message' => 'Fetching request tokens failed. Error: '.$response + ))); } break; case 2: - if (isset($_POST['oauth_verifier']) && isset($_POST['request_token']) && isset($_POST['request_token_secret'])) { + if (isset($_POST['oauth_verifier']) + && isset($_POST['request_token']) + && isset($_POST['request_token_secret']) + ) { $token = new OAuthToken($_POST['request_token'], $_POST['request_token_secret']); $url = 'https://www.google.com/accounts/OAuthGetAccessToken'; - $request = OAuthRequest::from_consumer_and_token($consumer, $token, 'GET', $url, array('oauth_verifier' => $_POST['oauth_verifier'])); + $request = OAuthRequest::from_consumer_and_token($consumer, $token, 'GET', $url, + array('oauth_verifier' => $_POST['oauth_verifier'])); $request->sign_request($sigMethod, $consumer, $token); $response = send_signed_request('GET', $url, array($request->to_header()), null, false); $token = array(); parse_str($response, $token); if (isset($token['oauth_token']) && isset($token['oauth_token_secret'])) { - OCP\JSON::success(array('access_token' => $token['oauth_token'], 'access_token_secret' => $token['oauth_token_secret'])); + OCP\JSON::success(array('access_token' => $token['oauth_token'], + 'access_token_secret' => $token['oauth_token_secret'])); } else { - OCP\JSON::error(array('data' => array('message' => 'Fetching access tokens failed. Error: '.$response))); + OCP\JSON::error(array('data' => array( + 'message' => 'Fetching access tokens failed. Error: '.$response + ))); } } break; diff --git a/apps/files_external/ajax/removeRootCertificate.php b/apps/files_external/ajax/removeRootCertificate.php index 6871b0fd1d4eaea09c6bd9e0110fd2e0d98cd5da..664b3937e97bd6f84c04d27f3de36f6097fb0083 100644 --- a/apps/files_external/ajax/removeRootCertificate.php +++ b/apps/files_external/ajax/removeRootCertificate.php @@ -11,4 +11,3 @@ if ( $view->file_exists($file) ) { $view->unlink($file); OC_Mount_Config::createCertificateBundle(); } - diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 89f346574e2d991e88e50247acd4bbc6fafc2320..0dc983ca8ad0199680611fdd46ec516be79a7e6f 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -142,7 +142,7 @@ $(document).ready(function() { $('td.remove>img').live('click', function() { var tr = $(this).parent().parent(); var mountPoint = $(tr).find('.mountPoint input').val(); - if (!mountPoint) { + if ( ! mountPoint) { var row=this.parentNode.parentNode; $.post(OC.filePath('files_external', 'ajax', 'removeRootCertificate.php'), { cert: row.id }); $(tr).remove(); diff --git a/apps/files_external/l10n/cs_CZ.php b/apps/files_external/l10n/cs_CZ.php index 51951c19bfd96fa8fec49d230e6a5c7e741d6968..8006be1a2f56d77529a7652634d486dfceb01fad 100644 --- a/apps/files_external/l10n/cs_CZ.php +++ b/apps/files_external/l10n/cs_CZ.php @@ -10,7 +10,7 @@ "Backend" => "Podpůrná vrstva", "Configuration" => "Nastavení", "Options" => "Možnosti", -"Applicable" => "Platný", +"Applicable" => "Přístupný pro", "Add mount point" => "PÅ™idat bod pÅ™ipojení", "None set" => "Nenastaveno", "All Users" => "VÅ¡ichni uživatelé", diff --git a/apps/files_external/l10n/de_DE.php b/apps/files_external/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..357968bd462d031adc44e0a6704d89e41762babf --- /dev/null +++ b/apps/files_external/l10n/de_DE.php @@ -0,0 +1,24 @@ + "Zugriff gestattet", +"Error configuring Dropbox storage" => "Fehler beim Einrichten von Dropbox", +"Grant access" => "Zugriff gestatten", +"Fill out all required fields" => "Bitte alle notwendigen Felder füllen", +"Please provide a valid Dropbox app key and secret." => "Bitte tragen Sie einen gültigen Dropbox-App-Key mit Secret ein.", +"Error configuring Google Drive storage" => "Fehler beim Einrichten von Google Drive", +"External Storage" => "Externer Speicher", +"Mount point" => "Mount-Point", +"Backend" => "Backend", +"Configuration" => "Konfiguration", +"Options" => "Optionen", +"Applicable" => "Zutreffend", +"Add mount point" => "Mount-Point hinzufügen", +"None set" => "Nicht definiert", +"All Users" => "Alle Benutzer", +"Groups" => "Gruppen", +"Users" => "Benutzer", +"Delete" => "Löschen", +"Enable User External Storage" => "Externen Speicher für Benutzer aktivieren", +"Allow users to mount their own external storage" => "Erlaubt Benutzern ihre eigenen externen Speicher einzubinden", +"SSL root certificates" => "SSL-Root-Zertifikate", +"Import Root Certificate" => "Root-Zertifikate importieren" +); diff --git a/apps/files_external/l10n/el.php b/apps/files_external/l10n/el.php index c518fca149ee93dfa77ac917e781368e644227aa..a1dae9d488890c17d601c82000e185c87fecd670 100644 --- a/apps/files_external/l10n/el.php +++ b/apps/files_external/l10n/el.php @@ -1,4 +1,10 @@ "ΠÏοσβαση παÏασχέθηκε", +"Error configuring Dropbox storage" => "Σφάλμα Ïυθμίζωντας αποθήκευση Dropbox ", +"Grant access" => "ΠαÏοχή Ï€Ïόσβασης", +"Fill out all required fields" => "ΣυμπληÏώστε όλα τα απαιτοÏμενα πεδία", +"Please provide a valid Dropbox app key and secret." => "ΠαÏακαλοÏμε δώστε έγκυÏο κλειδί Dropbox και μυστικό.", +"Error configuring Google Drive storage" => "Σφάλμα Ïυθμίζωντας αποθήκευση Google Drive ", "External Storage" => "ΕξωτεÏικό Αποθηκευτικό Μέσο", "Mount point" => "Σημείο Ï€ÏοσάÏτησης", "Backend" => "ΣÏστημα υποστήÏιξης", @@ -7,7 +13,7 @@ "Applicable" => "ΕφαÏμόσιμο", "Add mount point" => "ΠÏοσθήκη σημείου Ï€ÏοσάÏτησης", "None set" => "Κανένα επιλεγμένο", -"All Users" => "Όλοι οι χÏήστες", +"All Users" => "Όλοι οι ΧÏήστες", "Groups" => "Ομάδες", "Users" => "ΧÏήστες", "Delete" => "ΔιαγÏαφή", diff --git a/apps/files_external/l10n/eo.php b/apps/files_external/l10n/eo.php index 90819e3352cbde401555a375d3afb68e118d7cc0..97453aafedb92eabac851765877f9cd71cc37799 100644 --- a/apps/files_external/l10n/eo.php +++ b/apps/files_external/l10n/eo.php @@ -1,4 +1,10 @@ "Alirpermeso donita", +"Error configuring Dropbox storage" => "Eraro dum agordado de la memorservo Dropbox", +"Grant access" => "Doni alirpermeson", +"Fill out all required fields" => "Plenigu ĉiujn neprajn kampojn", +"Please provide a valid Dropbox app key and secret." => "Bonvolu provizi Ålosilon de la aplikaĵo Dropbox validan kaj sekretan.", +"Error configuring Google Drive storage" => "Eraro dum agordado de la memorservo Google Drive", "External Storage" => "Malena memorilo", "Mount point" => "Surmetingo", "Backend" => "Motoro", diff --git a/apps/files_external/l10n/et_EE.php b/apps/files_external/l10n/et_EE.php index 280e2664336b3bd8e142d66cba3ebbe275576bcf..86922bc751b3971a94350bf0d04c951655a8ee4f 100644 --- a/apps/files_external/l10n/et_EE.php +++ b/apps/files_external/l10n/et_EE.php @@ -1,4 +1,10 @@ "Ligipääs on antud", +"Error configuring Dropbox storage" => "Viga Dropboxi salvestusruumi seadistamisel", +"Grant access" => "Anna ligipääs", +"Fill out all required fields" => "Täida kõik kohustuslikud lahtrid", +"Please provide a valid Dropbox app key and secret." => "Palun sisesta korrektne Dropboxi rakenduse võti ja salasõna.", +"Error configuring Google Drive storage" => "Viga Google Drive'i salvestusruumi seadistamisel", "External Storage" => "Väline salvestuskoht", "Mount point" => "Ãœhenduspunkt", "Backend" => "Admin", diff --git a/apps/files_external/l10n/gl.php b/apps/files_external/l10n/gl.php index 3830efb70bf97e5bae53e3944e33a096cbda5a74..5024dac4d8c937d5c096eaf6f7aaa7a09a29f245 100644 --- a/apps/files_external/l10n/gl.php +++ b/apps/files_external/l10n/gl.php @@ -1,18 +1,24 @@ "Concedeuse acceso", +"Error configuring Dropbox storage" => "Produciuse un erro ao configurar o almacenamento en Dropbox", +"Grant access" => "Permitir o acceso", +"Fill out all required fields" => "Cubrir todos os campos obrigatorios", +"Please provide a valid Dropbox app key and secret." => "Dá o segredo e a chave correcta do aplicativo de Dropbox.", +"Error configuring Google Drive storage" => "Produciuse un erro ao configurar o almacenamento en Google Drive", "External Storage" => "Almacenamento externo", "Mount point" => "Punto de montaxe", -"Backend" => "Almacén", +"Backend" => "Infraestrutura", "Configuration" => "Configuración", "Options" => "Opcións", -"Applicable" => "Aplicable", -"Add mount point" => "Engadir punto de montaxe", -"None set" => "Non establecido", -"All Users" => "Tódolos usuarios", +"Applicable" => "Aplicábel", +"Add mount point" => "Engadir un punto de montaxe", +"None set" => "Ningún definido", +"All Users" => "Todos os usuarios", "Groups" => "Grupos", "Users" => "Usuarios", "Delete" => "Eliminar", -"Enable User External Storage" => "Habilitar almacenamento externo do usuario", +"Enable User External Storage" => "Activar o almacenamento externo do usuario", "Allow users to mount their own external storage" => "Permitir aos usuarios montar os seus propios almacenamentos externos", -"SSL root certificates" => "Certificados raíz SSL", -"Import Root Certificate" => "Importar Certificado Raíz" +"SSL root certificates" => "Certificados SSL root", +"Import Root Certificate" => "Importar o certificado root" ); diff --git a/apps/files_external/l10n/he.php b/apps/files_external/l10n/he.php index 12dfa62e7c8d018ffb9c6cc87337607dd4964b49..3dc04d4e79c81ef34a48d6232d261b9e3dbb6221 100644 --- a/apps/files_external/l10n/he.php +++ b/apps/files_external/l10n/he.php @@ -1,7 +1,18 @@ "הוענקה גישה", +"Error configuring Dropbox storage" => "×ירעה שגי××” בעת הגדרת ×חסון ב־Dropbox", +"Grant access" => "הענקת גישה", +"Fill out all required fields" => "× × ×œ×ž×œ× ×ת כל השדות הנדרשי×", +"Please provide a valid Dropbox app key and secret." => "× × ×œ×¡×¤×§ קוד ×™×™×©×•× ×•×¡×•×“ ×ª×§× ×™×™× ×©×œ Dropbox.", +"Error configuring Google Drive storage" => "×ירעה שגי××” בעת הגדרת ×חסון ב־Google Drive", "External Storage" => "×חסון חיצוני", +"Mount point" => "נקודת ×¢×’×™× ×”", +"Backend" => "מנגנון", "Configuration" => "הגדרות", "Options" => "×פשרויות", +"Applicable" => "ניתן ליישו×", +"Add mount point" => "הוספת נקודת ×¢×’×™× ×”", +"None set" => "×œ× ×”×•×’×“×¨×”", "All Users" => "כל המשתמשי×", "Groups" => "קבוצות", "Users" => "משתמשי×", diff --git a/apps/files_external/l10n/id.php b/apps/files_external/l10n/id.php new file mode 100644 index 0000000000000000000000000000000000000000..4b7850025f4e845a9165809b20d48ac204e9b7f2 --- /dev/null +++ b/apps/files_external/l10n/id.php @@ -0,0 +1,14 @@ + "akses diberikan", +"Grant access" => "berikan hak akses", +"Fill out all required fields" => "isi semua field yang dibutuhkan", +"External Storage" => "penyimpanan eksternal", +"Configuration" => "konfigurasi", +"Options" => "pilihan", +"Applicable" => "berlaku", +"None set" => "tidak satupun di set", +"All Users" => "semua pengguna", +"Groups" => "grup", +"Users" => "pengguna", +"Delete" => "hapus" +); diff --git a/apps/files_external/l10n/ko.php b/apps/files_external/l10n/ko.php new file mode 100644 index 0000000000000000000000000000000000000000..d44ad88d85c473f7d69b36505ad9b1e7e7afc0dd --- /dev/null +++ b/apps/files_external/l10n/ko.php @@ -0,0 +1,24 @@ + "ì ‘ê·¼ 허가", +"Error configuring Dropbox storage" => "드롭박스 저장공간 구성 ì—러", +"Grant access" => "접근권한 부여", +"Fill out all required fields" => "모든 필요한 í•„ë“œë“¤ì„ ìž…ë ¥í•˜ì„¸ìš”.", +"Please provide a valid Dropbox app key and secret." => "유효한 드롭박스 ì‘용프로그램 키와 비밀번호를 입력해주세요.", +"Error configuring Google Drive storage" => "구글드ë¼ì´ë¸Œ 저장공간 구성 ì—러", +"External Storage" => "확장 저장공간", +"Mount point" => "마운트 í¬ì¸íŠ¸", +"Backend" => "백엔드", +"Configuration" => "설정", +"Options" => "옵션", +"Applicable" => "ì ìš©ê°€ëŠ¥", +"Add mount point" => "마운트 í¬ì¸íŠ¸ 추가", +"None set" => "세트 ì—†ìŒ", +"All Users" => "모든 사용ìž", +"Groups" => "그룹", +"Users" => "사용ìž", +"Delete" => "ì‚­ì œ", +"Enable User External Storage" => "ì‚¬ìš©ìž í™•ìž¥ 저장공간 사용", +"Allow users to mount their own external storage" => "사용ìžë“¤ì—게 ê·¸ë“¤ì˜ í™•ìž¥ 저장공간 마운트 í•˜ëŠ”ê²ƒì„ í—ˆìš©", +"SSL root certificates" => "SSL 루트 ì¸ì¦ì„œ", +"Import Root Certificate" => "루트 ì¸ì¦ì„œ 가져오기" +); diff --git a/apps/files_external/l10n/lt_LT.php b/apps/files_external/l10n/lt_LT.php index 00022aa3d38fce7da7d63d1de56466c6171c60ff..cdb168dd38515e081f5f87921aea5f64e20a4bf2 100644 --- a/apps/files_external/l10n/lt_LT.php +++ b/apps/files_external/l10n/lt_LT.php @@ -1,9 +1,24 @@ "PriÄ—jimas suteiktas", +"Error configuring Dropbox storage" => "Klaida nustatinÄ—jant Dropbox talpyklÄ…", +"Grant access" => "Suteikti priÄ—jimÄ…", +"Fill out all required fields" => "Užpildykite visus reikalingus laukelius", +"Please provide a valid Dropbox app key and secret." => "PraÅ¡ome įvesti teisingus Dropbox \"app key\" ir \"secret\".", +"Error configuring Google Drive storage" => "Klaida nustatinÄ—jant Google Drive talpyklÄ…", +"External Storage" => "IÅ¡orinÄ—s saugyklos", +"Mount point" => "Saugyklos pavadinimas", +"Backend" => "PosistemÄ—s pavadinimas", "Configuration" => "KonfigÅ«racija", "Options" => "Nustatymai", +"Applicable" => "Pritaikyti", +"Add mount point" => "PridÄ—ti iÅ¡orinÄ™ saugyklÄ…", "None set" => "Nieko nepasirinkta", "All Users" => "Visi vartotojai", "Groups" => "GrupÄ—s", "Users" => "Vartotojai", -"Delete" => "IÅ¡trinti" +"Delete" => "IÅ¡trinti", +"Enable User External Storage" => "Ä®jungti vartotojų iÅ¡orines saugyklas", +"Allow users to mount their own external storage" => "Leisti vartotojams pridÄ—ti savo iÅ¡orines saugyklas", +"SSL root certificates" => "SSL sertifikatas", +"Import Root Certificate" => "Ä®kelti pagrindinį sertifikatÄ…" ); diff --git a/apps/files_external/l10n/nl.php b/apps/files_external/l10n/nl.php index 87ab87cfc9f7054726406fcc3b91dd3d8a1ad9fa..d0c0b02b8f865bb780ea849069b9fd44592facff 100644 --- a/apps/files_external/l10n/nl.php +++ b/apps/files_external/l10n/nl.php @@ -11,13 +11,13 @@ "Configuration" => "Configuratie", "Options" => "Opties", "Applicable" => "Van toepassing", -"Add mount point" => "Voeg aankoppelpunt toe", +"Add mount point" => "Aankoppelpunt toevoegen", "None set" => "Niets ingesteld", "All Users" => "Alle gebruikers", "Groups" => "Groepen", "Users" => "Gebruikers", "Delete" => "Verwijder", -"Enable User External Storage" => "Zet gebruiker's externe opslag aan", +"Enable User External Storage" => "Externe opslag voor gebruikers activeren", "Allow users to mount their own external storage" => "Sta gebruikers toe om hun eigen externe opslag aan te koppelen", "SSL root certificates" => "SSL root certificaten", "Import Root Certificate" => "Importeer root certificaat" diff --git a/apps/files_external/l10n/ru.php b/apps/files_external/l10n/ru.php index eeef416a848b429fe6ce2728d42c5fd4a6779d6d..34d34a18edafb54dd0851eb6494cb241e9ce2036 100644 --- a/apps/files_external/l10n/ru.php +++ b/apps/files_external/l10n/ru.php @@ -1,4 +1,10 @@ "ДоÑтуп предоÑтавлен", +"Error configuring Dropbox storage" => "Ошибка при наÑтройке хранилища Dropbox", +"Grant access" => "ПредоÑтавление доÑтупа", +"Fill out all required fields" => "Заполните вÑе обÑзательные полÑ", +"Please provide a valid Dropbox app key and secret." => "ПожалуйÑта, предоÑтавьте дейÑтвующий ключ Dropbox и пароль.", +"Error configuring Google Drive storage" => "Ошибка при наÑтройке хранилища Google Drive", "External Storage" => "Внешний ноÑитель", "Mount point" => "Точка монтированиÑ", "Backend" => "ПодÑиÑтема", diff --git a/apps/files_external/l10n/si_LK.php b/apps/files_external/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..b8e2c5714b3f3d6555578425ceef2fbf1999c80c --- /dev/null +++ b/apps/files_external/l10n/si_LK.php @@ -0,0 +1,24 @@ + "පිවිසීමට à·„à·à¶š", +"Error configuring Dropbox storage" => "Dropbox ගබඩà·à·€ වින්â€à¶ºà·à·ƒ කිරීමේ දà·à·à¶ºà¶šà·Š ඇත", +"Grant access" => "පිවිසුම ලබà·à¶¯à·™à¶±à·Šà¶±", +"Fill out all required fields" => "අත්â€à¶ºà·à·€à·à·Šâ€à¶º තොරතුරු සියල්ල සම්පුර්ණ කරන්න", +"Please provide a valid Dropbox app key and secret." => "කරුණà·à¶šà¶» වලංගු Dropbox යෙදුම් යතුරක් හ෠රහසක් ලබà·à¶¯à·™à¶±à·Šà¶±.", +"Error configuring Google Drive storage" => "Google Drive ගබඩà·à·€ වින්â€à¶ºà·à·ƒ කිරීමේ දà·à·à¶ºà¶šà·Š ඇත", +"External Storage" => "භà·à·„ිර ගබඩà·à·€", +"Mount point" => "මවුන්ට් කළ ස්ථà·à¶±à¶º", +"Backend" => "පසු පද්ධතිය", +"Configuration" => "වින්â€à¶ºà·à·ƒà¶º", +"Options" => "විකල්පයන්", +"Applicable" => "අදà·à·…", +"Add mount point" => "මවුන්ට් කරන ස්ථà·à¶±à¶ºà¶šà·Š එකතු කරන්න", +"None set" => "කිසිවක් නà·à¶­", +"All Users" => "සියළු පරිà·à·“ලකයන්", +"Groups" => "කණ්ඩà·à¶ºà¶¸à·Š", +"Users" => "පරිà·à·“ලකයන්", +"Delete" => "මක෠දමන්න", +"Enable User External Storage" => "පරිà·à·“ලක භà·à·„ිර ගබඩà·à·€à¶±à·Š සක්â€à¶»à·’ය කරන්න", +"Allow users to mount their own external storage" => "පරිà·à·“ලකයන්ට තමà·à¶œà·šà¶¸ භà·à·„ිර ගබඩà·à·€à¶±à·Š මවුන්ට් කිරීමේ අයිතිය දෙන්න", +"SSL root certificates" => "SSL මූල සහතිකයන්", +"Import Root Certificate" => "මූල සහතිකය ආයà·à¶­ කරන්න" +); diff --git a/apps/files_external/l10n/sk_SK.php b/apps/files_external/l10n/sk_SK.php index 04257a8014480abcfefab4a8b00805f61436a47e..04d5e3c7ee42d4f23887635c20ac88c255d2a27b 100644 --- a/apps/files_external/l10n/sk_SK.php +++ b/apps/files_external/l10n/sk_SK.php @@ -1,5 +1,6 @@ "Prístup povolený", +"Error configuring Dropbox storage" => "Chyba pri konfigurácii úložiska Dropbox", "Grant access" => "PovoliÅ¥ prístup", "Fill out all required fields" => "Vyplňte vÅ¡etky vyžadované kolónky", "Please provide a valid Dropbox app key and secret." => "Zadajte platný kÄ¾ÃºÄ aplikácie a heslo Dropbox", diff --git a/apps/files_external/l10n/sl.php b/apps/files_external/l10n/sl.php index f455f8c56fa5519a5946730a32462481677cdce5..713e89578e247c893dc48feede43b05f813b2481 100644 --- a/apps/files_external/l10n/sl.php +++ b/apps/files_external/l10n/sl.php @@ -1,4 +1,10 @@ "Dostop je odobren", +"Error configuring Dropbox storage" => "Napaka nastavljanja shrambe Dropbox", +"Grant access" => "Odobri dostop", +"Fill out all required fields" => "Zapolni vsa zahtevana polja", +"Please provide a valid Dropbox app key and secret." => "VpiÅ¡ite veljaven kljuÄ programa in kodo za Dropbox", +"Error configuring Google Drive storage" => "Napaka nastavljanja shrambe Google Drive", "External Storage" => "Zunanja podatkovna shramba", "Mount point" => "Priklopna toÄka", "Backend" => "Zaledje", @@ -13,6 +19,6 @@ "Delete" => "IzbriÅ¡i", "Enable User External Storage" => "OmogoÄi uporabo zunanje podatkovne shrambe za uporabnike", "Allow users to mount their own external storage" => "Dovoli uporabnikom priklop lastne zunanje podatkovne shrambe", -"SSL root certificates" => "SSL korenski certifikati", -"Import Root Certificate" => "Uvozi korenski certifikat" +"SSL root certificates" => "Korenska potrdila SSL", +"Import Root Certificate" => "Uvozi korensko potrdilo" ); diff --git a/apps/files_external/l10n/ta_LK.php b/apps/files_external/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..1e01b22efa00a75d9b7e220547dc82a514d11794 --- /dev/null +++ b/apps/files_external/l10n/ta_LK.php @@ -0,0 +1,24 @@ + "அனà¯à®®à®¤à®¿ வழஙà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"Error configuring Dropbox storage" => "Dropbox சேமிபà¯à®ªà¯ˆ தகவமைபà¯à®ªà®¤à®¿à®²à¯ வழà¯", +"Grant access" => "அனà¯à®®à®¤à®¿à®¯à¯ˆ வழஙà¯à®•à®²à¯", +"Fill out all required fields" => "தேவையான எலà¯à®²à®¾ பà¯à®²à®™à¯à®•à®³à¯ˆà®¯à¯à®®à¯ நிரபà¯à®ªà¯à®•", +"Please provide a valid Dropbox app key and secret." => "தயவà¯à®šà¯†à®¯à¯à®¤à¯ ஒர௠செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®© Dropbox செயலி சாவி மறà¯à®±à¯à®®à¯ இரகசியதà¯à®¤à¯ˆ வழஙà¯à®•à¯à®•. ", +"Error configuring Google Drive storage" => "Google இயகà¯à®• சேமிபà¯à®ªà®•à®¤à¯à®¤à¯ˆ தகமைபà¯à®ªà®¤à®¿à®²à¯ வழà¯", +"External Storage" => "வெளி சேமிபà¯à®ªà¯", +"Mount point" => "à®à®±à¯à®±à®ªà¯à®ªà¯à®³à¯à®³à®¿", +"Backend" => "பினà¯à®¨à®¿à®²à¯ˆ", +"Configuration" => "தகவமைபà¯à®ªà¯", +"Options" => "தெரிவà¯à®•à®³à¯", +"Applicable" => "பயனà¯à®ªà®Ÿà®¤à¯à®¤à®•à¯à®•", +"Add mount point" => "à®à®±à¯à®±à®ªà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ சேரà¯à®•à¯à®•", +"None set" => "தொகà¯à®ªà¯à®ªà®¿à®²à¯à®²à®¾", +"All Users" => "பயனாளரà¯à®•à®³à¯ எலà¯à®²à®¾à®®à¯", +"Groups" => "கà¯à®´à¯à®•à¯à®•à®³à¯", +"Users" => "பயனாளரà¯", +"Delete" => "நீகà¯à®•à¯à®•", +"Enable User External Storage" => "பயனாளர௠வெளி சேமிபà¯à®ªà¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•", +"Allow users to mount their own external storage" => "பயனாளர௠அவரà¯à®•à®³à¯à®Ÿà¯ˆà®¯ சொநà¯à®¤ வெளியக சேமிபà¯à®ªà¯ˆ à®à®±à¯à®± அனà¯à®®à®¤à®¿à®•à¯à®•", +"SSL root certificates" => "SSL வேர௠சானà¯à®±à®¿à®¤à®´à¯à®•à®³à¯", +"Import Root Certificate" => "வேர௠சானà¯à®±à®¿à®¤à®´à¯ˆ இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®•" +); diff --git a/apps/files_external/l10n/uk.php b/apps/files_external/l10n/uk.php index 79920b9014abf3fd552ce518237668a7f40d0ce0..478342380e3c065b28391ce75ced3e6e122cf1c6 100644 --- a/apps/files_external/l10n/uk.php +++ b/apps/files_external/l10n/uk.php @@ -1,5 +1,24 @@ "ДоÑтуп дозволено", +"Error configuring Dropbox storage" => "Помилка при налаштуванні Ñховища Dropbox", +"Grant access" => "Дозволити доÑтуп", +"Fill out all required fields" => "Заповніть вÑÑ– обов'Ñзкові полÑ", +"Please provide a valid Dropbox app key and secret." => "Будь лаÑка, надайте дійÑний ключ та пароль Dropbox.", +"Error configuring Google Drive storage" => "Помилка при налаштуванні Ñховища Google Drive", +"External Storage" => "Зовнішні Ñховища", +"Mount point" => "Точка монтуваннÑ", +"Backend" => "Backend", +"Configuration" => "ÐалаштуваннÑ", +"Options" => "Опції", +"Applicable" => "Придатний", +"Add mount point" => "Додати точку монтуваннÑ", +"None set" => "Ðе вÑтановлено", +"All Users" => "УÑÑ– кориÑтувачі", "Groups" => "Групи", "Users" => "КориÑтувачі", -"Delete" => "Видалити" +"Delete" => "Видалити", +"Enable User External Storage" => "Ðктивувати кориÑтувацькі зовнішні Ñховища", +"Allow users to mount their own external storage" => "Дозволити кориÑтувачам монтувати влаÑні зовнішні Ñховища", +"SSL root certificates" => "SSL корневі Ñертифікати", +"Import Root Certificate" => "Імпортувати корневі Ñертифікати" ); diff --git a/apps/files_external/l10n/vi.php b/apps/files_external/l10n/vi.php index dd616e9115335eac239855c9273bcf65408416e5..0160692cb65864fc8441d09446f52c2da5692a36 100644 --- a/apps/files_external/l10n/vi.php +++ b/apps/files_external/l10n/vi.php @@ -1,4 +1,10 @@ "Äã cấp quyá»n truy cập", +"Error configuring Dropbox storage" => "Lá»—i cấu hình lÆ°u trữ Dropbox ", +"Grant access" => "Cấp quyá»n truy cập", +"Fill out all required fields" => "Äiá»n vào tất cả các trÆ°á»ng bắt buá»™c", +"Please provide a valid Dropbox app key and secret." => "Xin vui lòng cung cấp má»™t ứng dụng Dropbox hợp lệ và mã bí mật.", +"Error configuring Google Drive storage" => "Lá»—i cấu hình lÆ°u trữ Google Drive", "External Storage" => "LÆ°u trữ ngoài", "Mount point" => "Äiểm gắn", "Backend" => "phụ trợ", diff --git a/apps/files_external/l10n/zh_CN.php b/apps/files_external/l10n/zh_CN.php new file mode 100644 index 0000000000000000000000000000000000000000..247ef7ce95ce3c146d5daca63cfc2529ab4ef2c2 --- /dev/null +++ b/apps/files_external/l10n/zh_CN.php @@ -0,0 +1,24 @@ + "æƒé™å·²æŽˆäºˆã€‚", +"Error configuring Dropbox storage" => "é…ç½®Dropbox存储时出错", +"Grant access" => "授æƒ", +"Fill out all required fields" => "完æˆæ‰€æœ‰å¿…填项", +"Please provide a valid Dropbox app key and secret." => "请æ供有效的Dropbox应用keyå’Œsecret", +"Error configuring Google Drive storage" => "é…ç½®Google Drive存储时出错", +"External Storage" => "外部存储", +"Mount point" => "挂载点", +"Backend" => "åŽç«¯", +"Configuration" => "é…ç½®", +"Options" => "选项", +"Applicable" => "适用的", +"Add mount point" => "增加挂载点", +"None set" => "未设置", +"All Users" => "所有用户", +"Groups" => "组", +"Users" => "用户", +"Delete" => "删除", +"Enable User External Storage" => "å¯ç”¨ç”¨æˆ·å¤–部存储", +"Allow users to mount their own external storage" => "å…许用户挂载自有外部存储", +"SSL root certificates" => "SSLæ ¹è¯ä¹¦", +"Import Root Certificate" => "导入根è¯ä¹¦" +); diff --git a/apps/files_external/l10n/zh_TW.php b/apps/files_external/l10n/zh_TW.php new file mode 100644 index 0000000000000000000000000000000000000000..ab8c4caf24a480f2756b3370c9fb1edaca002a55 --- /dev/null +++ b/apps/files_external/l10n/zh_TW.php @@ -0,0 +1,10 @@ + "外部儲存è£ç½®", +"Mount point" => "掛載點", +"None set" => "尚未設定", +"All Users" => "所有使用者", +"Groups" => "群組", +"Users" => "使用者", +"Delete" => "刪除", +"Import Root Certificate" => "匯入根憑證" +); diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php index 41ec3c70b45ed00471c4b5560846d104da11d72e..235ade06db6271044456ecbbc89acc3015a42bbe 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/amazons3.php @@ -45,7 +45,7 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { if ($response) { $this->objects[$path] = $response; return $response; - // This object could be a folder, a '/' must be at the end of the path + // This object could be a folder, a '/' must be at the end of the path } else if (substr($path, -1) != '/') { $response = $this->s3->get_object_metadata($this->bucket, $path.'/'); if ($response) { @@ -108,11 +108,14 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { $stat['atime'] = time(); $stat['mtime'] = $stat['atime']; $stat['ctime'] = $stat['atime']; - } else if ($object = $this->getObject($path)) { - $stat['size'] = $object['Size']; - $stat['atime'] = time(); - $stat['mtime'] = strtotime($object['LastModified']); - $stat['ctime'] = $stat['mtime']; + } else { + $object = $this->getObject($path); + if ($object) { + $stat['size'] = $object['Size']; + $stat['atime'] = time(); + $stat['mtime'] = strtotime($object['LastModified']); + $stat['ctime'] = $stat['mtime']; + } } if (isset($stat)) { return $stat; @@ -123,12 +126,15 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { public function filetype($path) { if ($path == '' || $path == '/') { return 'dir'; - } else if ($object = $this->getObject($path)) { - // Amazon S3 doesn't have typical folders, this is an alternative method to detect a folder - if (substr($object['Key'], -1) == '/' && $object['Size'] == 0) { - return 'dir'; - } else { - return 'file'; + } else { + $object = $this->getObject($path); + if ($object) { + // Amazon S3 doesn't have typical folders, this is an alternative method to detect a folder + if (substr($object['Key'], -1) == '/' && $object['Size'] == 0) { + return 'dir'; + } else { + return 'file'; + } } } return false; @@ -199,7 +205,9 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { public function writeBack($tmpFile) { if (isset(self::$tempFiles[$tmpFile])) { $handle = fopen($tmpFile, 'r'); - $response = $this->s3->create_object($this->bucket, self::$tempFiles[$tmpFile], array('fileUpload' => $handle)); + $response = $this->s3->create_object($this->bucket, + self::$tempFiles[$tmpFile], + array('fileUpload' => $handle)); if ($response->isOK()) { unlink($tmpFile); } @@ -209,8 +217,11 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common { public function getMimeType($path) { if ($this->filetype($path) == 'dir') { return 'httpd/unix-directory'; - } else if ($object = $this->getObject($path)) { - return $object['ContentType']; + } else { + $object = $this->getObject($path); + if ($object) { + return $object['ContentType']; + } } return false; } diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 0a576f06f1f6884f8e9279fdf4b869f633a7cc8b..87d6886c51e81dc643eebfacebcdba6d19e8b405 100755 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -39,14 +39,64 @@ class OC_Mount_Config { */ public static function getBackends() { return array( - 'OC_Filestorage_Local' => array('backend' => 'Local', 'configuration' => array('datadir' => 'Location')), - 'OC_Filestorage_AmazonS3' => array('backend' => 'Amazon S3', 'configuration' => array('key' => 'Key', 'secret' => '*Secret', 'bucket' => 'Bucket')), - 'OC_Filestorage_Dropbox' => array('backend' => 'Dropbox', 'configuration' => array('configured' => '#configured','app_key' => 'App key', 'app_secret' => 'App secret', 'token' => '#token', 'token_secret' => '#token_secret'), 'custom' => 'dropbox'), - 'OC_Filestorage_FTP' => array('backend' => 'FTP', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure ftps://')), - 'OC_Filestorage_Google' => array('backend' => 'Google Drive', 'configuration' => array('configured' => '#configured', 'token' => '#token', 'token_secret' => '#token secret'), 'custom' => 'google'), - 'OC_Filestorage_SWIFT' => array('backend' => 'OpenStack Swift', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'token' => '*Token', 'root' => '&Root', 'secure' => '!Secure ftps://')), - 'OC_Filestorage_SMB' => array('backend' => 'SMB', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'share' => 'Share', 'root' => '&Root')), - 'OC_Filestorage_DAV' => array('backend' => 'WebDAV', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure https://')) + 'OC_Filestorage_Local' => array( + 'backend' => 'Local', + 'configuration' => array( + 'datadir' => 'Location')), + 'OC_Filestorage_AmazonS3' => array( + 'backend' => 'Amazon S3', + 'configuration' => array( + 'key' => 'Key', + 'secret' => '*Secret', + 'bucket' => 'Bucket')), + 'OC_Filestorage_Dropbox' => array( + 'backend' => 'Dropbox', + 'configuration' => array( + 'configured' => '#configured', + 'app_key' => 'App key', + 'app_secret' => 'App secret', + 'token' => '#token', + 'token_secret' => '#token_secret'), + 'custom' => 'dropbox'), + 'OC_Filestorage_FTP' => array( + 'backend' => 'FTP', + 'configuration' => array( + 'host' => 'URL', + 'user' => 'Username', + 'password' => '*Password', + 'root' => '&Root', + 'secure' => '!Secure ftps://')), + 'OC_Filestorage_Google' => array( + 'backend' => 'Google Drive', + 'configuration' => array( + 'configured' => '#configured', + 'token' => '#token', + 'token_secret' => '#token secret'), + 'custom' => 'google'), + 'OC_Filestorage_SWIFT' => array( + 'backend' => 'OpenStack Swift', + 'configuration' => array( + 'host' => 'URL', + 'user' => 'Username', + 'token' => '*Token', + 'root' => '&Root', + 'secure' => '!Secure ftps://')), + 'OC_Filestorage_SMB' => array( + 'backend' => 'SMB', + 'configuration' => array( + 'host' => 'URL', + 'user' => 'Username', + 'password' => '*Password', + 'share' => 'Share', + 'root' => '&Root')), + 'OC_Filestorage_DAV' => array( + 'backend' => 'WebDAV', + 'configuration' => array( + 'host' => 'URL', + 'user' => 'Username', + 'password' => '*Password', + 'root' => '&Root', + 'secure' => '!Secure https://')) ); } @@ -66,9 +116,14 @@ class OC_Mount_Config { $mountPoint = substr($mountPoint, 13); // Merge the mount point into the current mount points if (isset($system[$mountPoint]) && $system[$mountPoint]['configuration'] == $mount['options']) { - $system[$mountPoint]['applicable']['groups'] = array_merge($system[$mountPoint]['applicable']['groups'], array($group)); + $system[$mountPoint]['applicable']['groups'] + = array_merge($system[$mountPoint]['applicable']['groups'], array($group)); } else { - $system[$mountPoint] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], 'applicable' => array('groups' => array($group), 'users' => array())); + $system[$mountPoint] = array( + 'class' => $mount['class'], + 'backend' => $backends[$mount['class']]['backend'], + 'configuration' => $mount['options'], + 'applicable' => array('groups' => array($group), 'users' => array())); } } } @@ -80,9 +135,13 @@ class OC_Mount_Config { $mountPoint = substr($mountPoint, 13); // Merge the mount point into the current mount points if (isset($system[$mountPoint]) && $system[$mountPoint]['configuration'] == $mount['options']) { - $system[$mountPoint]['applicable']['users'] = array_merge($system[$mountPoint]['applicable']['users'], array($user)); + $system[$mountPoint]['applicable']['users'] + = array_merge($system[$mountPoint]['applicable']['users'], array($user)); } else { - $system[$mountPoint] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], 'applicable' => array('groups' => array(), 'users' => array($user))); + $system[$mountPoint] = array('class' => $mount['class'], + 'backend' => $backends[$mount['class']]['backend'], + 'configuration' => $mount['options'], + 'applicable' => array('groups' => array(), 'users' => array($user))); } } } @@ -103,7 +162,9 @@ class OC_Mount_Config { if (isset($mountPoints[self::MOUNT_TYPE_USER][$uid])) { foreach ($mountPoints[self::MOUNT_TYPE_USER][$uid] as $mountPoint => $mount) { // Remove '/uid/files/' from mount point - $personal[substr($mountPoint, strlen($uid) + 8)] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options']); + $personal[substr($mountPoint, strlen($uid) + 8)] = array('class' => $mount['class'], + 'backend' => $backends[$mount['class']]['backend'], + 'configuration' => $mount['options']); } } return $personal; @@ -120,10 +181,10 @@ class OC_Mount_Config { $dir = $dir.'/'.$pathPart; if ( !$view->file_exists($dir)) { $view->mkdir($dir); - } + } } } - + /** * Add a mount point to the filesystem @@ -135,7 +196,12 @@ class OC_Mount_Config { * @param bool Personal or system mount point i.e. is this being called from the personal or admin page * @return bool */ - public static function addMountPoint($mountPoint, $class, $classOptions, $mountType, $applicable, $isPersonal = false) { + public static function addMountPoint($mountPoint, + $class, + $classOptions, + $mountType, + $applicable, + $isPersonal = false) { if ($isPersonal) { // Verify that the mount point applies for the current user // Prevent non-admin users from mounting local storage @@ -160,7 +226,7 @@ class OC_Mount_Config { self::addMountPointDirectory($view, $path); } break; - case 'group' : + case 'group' : $groupMembers = OC_Group::usersInGroups(array($applicable)); foreach ( $groupMembers as $user ) { $path = $user.'/files/'.ltrim($mountPoint, '/'); @@ -176,7 +242,8 @@ class OC_Mount_Config { // Merge the new mount point into the current mount points if (isset($mountPoints[$mountType])) { if (isset($mountPoints[$mountType][$applicable])) { - $mountPoints[$mountType][$applicable] = array_merge($mountPoints[$mountType][$applicable], $mount[$applicable]); + $mountPoints[$mountType][$applicable] + = array_merge($mountPoints[$mountType][$applicable], $mount[$applicable]); } else { $mountPoints[$mountType] = array_merge($mountPoints[$mountType], $mount); } @@ -231,7 +298,7 @@ class OC_Mount_Config { $file = OC::$SERVERROOT.'/config/mount.php'; } if (is_file($file)) { - $mountPoints = include($file); + $mountPoints = include $file; if (is_array($mountPoints)) { return $mountPoints; } @@ -256,7 +323,7 @@ class OC_Mount_Config { foreach ($data[self::MOUNT_TYPE_GROUP] as $group => $mounts) { $content .= "\t\t'".$group."' => array (\n"; foreach ($mounts as $mountPoint => $mount) { - $content .= "\t\t\t'".$mountPoint."' => ".str_replace("\n", '', var_export($mount, true)).",\n"; + $content .= "\t\t\t'".$mountPoint."' => ".str_replace("\n", '', var_export($mount, true)).", \n"; } $content .= "\t\t),\n"; @@ -285,14 +352,19 @@ class OC_Mount_Config { public static function getCertificates() { $view = \OCP\Files::getStorage('files_external'); $path=\OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").'uploads/'; - if (!is_dir($path)) mkdir($path); + \OCP\Util::writeLog('files_external', 'checking path '.$path, \OCP\Util::INFO); + if ( ! is_dir($path)) { + //path might not exist (e.g. non-standard OC_User::getHome() value) + //in this case create full path using 3rd (recursive=true) parameter. + mkdir($path, 0777, true); + } $result = array(); $handle = opendir($path); - if (!$handle) { + if ( ! $handle) { return array(); } while (false !== ($file = readdir($handle))) { - if($file != '.' && $file != '..') $result[] = $file; + if ($file != '.' && $file != '..') $result[] = $file; } return $result; } diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php index c8220832702b8ad3015545329799941922d333d3..33ca14cab1541fa795b1bcfeda7338e9f75a8977 100755 --- a/apps/files_external/lib/dropbox.php +++ b/apps/files_external/lib/dropbox.php @@ -31,7 +31,12 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { private static $tempFiles = array(); public function __construct($params) { - if (isset($params['configured']) && $params['configured'] == 'true' && isset($params['app_key']) && isset($params['app_secret']) && isset($params['token']) && isset($params['token_secret'])) { + if (isset($params['configured']) && $params['configured'] == 'true' + && isset($params['app_key']) + && isset($params['app_secret']) + && isset($params['token']) + && isset($params['token_secret']) + ) { $this->root=isset($params['root'])?$params['root']:''; $oauth = new Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']); $oauth->setToken($params['token'], $params['token_secret']); @@ -44,7 +49,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { private function getMetaData($path, $list = false) { $path = $this->root.$path; - if (!$list && isset($this->metaData[$path])) { + if ( ! $list && isset($this->metaData[$path])) { return $this->metaData[$path]; } else { if ($list) { @@ -95,7 +100,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { } public function opendir($path) { - if ($contents = $this->getMetaData($path, true)) { + $contents = $this->getMetaData($path, true); + if ($contents) { $files = array(); foreach ($contents as $file) { $files[] = basename($file['path']); @@ -107,7 +113,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { } public function stat($path) { - if ($metaData = $this->getMetaData($path)) { + $metaData = $this->getMetaData($path); + if ($metaData) { $stat['size'] = $metaData['bytes']; $stat['atime'] = time(); $stat['mtime'] = (isset($metaData['modified'])) ? strtotime($metaData['modified']) : time(); @@ -120,11 +127,14 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { public function filetype($path) { if ($path == '' || $path == '/') { return 'dir'; - } else if ($metaData = $this->getMetaData($path)) { - if ($metaData['is_dir'] == 'true') { - return 'dir'; - } else { - return 'file'; + } else { + $metaData = $this->getMetaData($path); + if ($metaData) { + if ($metaData['is_dir'] == 'true') { + return 'dir'; + } else { + return 'file'; + } } } return false; @@ -241,8 +251,11 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common { public function getMimeType($path) { if ($this->filetype($path) == 'dir') { return 'httpd/unix-directory'; - } else if ($metaData = $this->getMetaData($path)) { - return $metaData['mime_type']; + } else { + $metaData = $this->getMetaData($path); + if ($metaData) { + return $metaData['mime_type']; + } } return false; } diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php index 261141455cce8752add3be7627dd4cb3d6ae9836..e796ae446bfe3211950ba1006b560cbcd947213d 100644 --- a/apps/files_external/lib/ftp.php +++ b/apps/files_external/lib/ftp.php @@ -19,13 +19,21 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ $this->host=$params['host']; $this->user=$params['user']; $this->password=$params['password']; - $this->secure=isset($params['secure'])?(bool)$params['secure']:false; + if (isset($params['secure'])) { + if (is_string($params['secure'])) { + $this->secure = ($params['secure'] === 'true'); + } else { + $this->secure = (bool)$params['secure']; + } + } else { + $this->secure = false; + } $this->root=isset($params['root'])?$params['root']:'/'; - if(!$this->root || $this->root[0]!='/') { + if ( ! $this->root || $this->root[0]!='/') { $this->root='/'.$this->root; } //create the root folder if necesary - if (!$this->is_dir('')) { + if ( ! $this->is_dir('')) { $this->mkdir(''); } } @@ -37,13 +45,13 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ */ public function constructUrl($path) { $url='ftp'; - if($this->secure) { + if ($this->secure) { $url.='s'; } $url.='://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path; return $url; } - public function fopen($path,$mode) { + public function fopen($path, $mode) { switch($mode) { case 'r': case 'rb': @@ -53,7 +61,7 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ case 'ab': //these are supported by the wrapper $context = stream_context_create(array('ftp' => array('overwrite' => true))); - return fopen($this->constructUrl($path),$mode,false,$context); + return fopen($this->constructUrl($path), $mode, false, $context); case 'r+': case 'w+': case 'wb+': @@ -63,24 +71,24 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ case 'c': case 'c+': //emulate these - if(strrpos($path,'.')!==false) { - $ext=substr($path,strrpos($path,'.')); - }else{ + if (strrpos($path, '.')!==false) { + $ext=substr($path, strrpos($path, '.')); + } else { $ext=''; } $tmpFile=OCP\Files::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); - if($this->file_exists($path)) { - $this->getFile($path,$tmpFile); + OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); + if ($this->file_exists($path)) { + $this->getFile($path, $tmpFile); } self::$tempFiles[$tmpFile]=$path; - return fopen('close://'.$tmpFile,$mode); + return fopen('close://'.$tmpFile, $mode); } } public function writeBack($tmpFile) { - if(isset(self::$tempFiles[$tmpFile])) { - $this->uploadFile($tmpFile,self::$tempFiles[$tmpFile]); + if (isset(self::$tempFiles[$tmpFile])) { + $this->uploadFile($tmpFile, self::$tempFiles[$tmpFile]); unlink($tmpFile); } } diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index 9b83dcee537876d7a21fa370018686b904dea369..c836a5a07c04b37fbe8b25d63a7d2bc500e2a2d1 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -32,7 +32,10 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { private static $tempFiles = array(); public function __construct($params) { - if (isset($params['configured']) && $params['configured'] == 'true' && isset($params['token']) && isset($params['token_secret'])) { + if (isset($params['configured']) && $params['configured'] == 'true' + && isset($params['token']) + && isset($params['token_secret']) + ) { $consumer_key = isset($params['consumer_key']) ? $params['consumer_key'] : 'anonymous'; $consumer_secret = isset($params['consumer_secret']) ? $params['consumer_secret'] : 'anonymous'; $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret); @@ -44,7 +47,14 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } } - private function sendRequest($uri, $httpMethod, $postData = null, $extraHeaders = null, $isDownload = false, $returnHeaders = false, $isContentXML = true, $returnHTTPCode = false) { + private function sendRequest($uri, + $httpMethod, + $postData = null, + $extraHeaders = null, + $isDownload = false, + $returnHeaders = false, + $isContentXML = true, + $returnHTTPCode = false) { $uri = trim($uri); // create an associative array from each key/value url query param pair. $params = array(); @@ -58,7 +68,11 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { $tempStr .= '&' . urlencode($key) . '=' . urlencode($value); } $uri = preg_replace('/&/', '?', $tempStr, 1); - $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->oauth_token, $httpMethod, $uri, $params); + $request = OAuthRequest::from_consumer_and_token($this->consumer, + $this->oauth_token, + $httpMethod, + $uri, + $params); $request->sign_request($this->sig_method, $this->consumer, $this->oauth_token); $auth_header = $request->to_header(); $headers = array($auth_header, 'GData-Version: 3.0'); @@ -132,6 +146,11 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { return false; } + /** + * Base url for google docs feeds + */ + const BASE_URI='https://docs.google.com/feeds'; + private function getResource($path) { $file = basename($path); if (array_key_exists($file, $this->entries)) { @@ -140,14 +159,14 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { // Strip the file extension; file could be a native Google Docs resource if ($pos = strpos($file, '.')) { $title = substr($file, 0, $pos); - $dom = $this->getFeed('https://docs.google.com/feeds/default/private/full?showfolders=true&title='.$title, 'GET'); + $dom = $this->getFeed(self::BASE_URI.'/default/private/full?showfolders=true&title='.$title, 'GET'); // Check if request was successful and entry exists if ($dom && $entry = $dom->getElementsByTagName('entry')->item(0)) { $this->entries[$file] = $entry; return $entry; } } - $dom = $this->getFeed('https://docs.google.com/feeds/default/private/full?showfolders=true&title='.$file, 'GET'); + $dom = $this->getFeed(self::BASE_URI.'/default/private/full?showfolders=true&title='.$file, 'GET'); // Check if request was successful and entry exists if ($dom && $entry = $dom->getElementsByTagName('entry')->item(0)) { $this->entries[$file] = $entry; @@ -180,20 +199,25 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { $collection = dirname($path); // Check if path parent is root directory if ($collection == '/' || $collection == '\.' || $collection == '.') { - $uri = 'https://docs.google.com/feeds/default/private/full'; - // Get parent content link - } else if ($dom = $this->getResource(basename($collection))) { - $uri = $dom->getElementsByTagName('content')->item(0)->getAttribute('src'); + $uri = self::BASE_URI.'/default/private/full'; + } else { + // Get parent content link + $dom = $this->getResource(basename($collection)); + if ($dom) { + $uri = $dom->getElementsByTagName('content')->item(0)->getAttribute('src'); + } } if (isset($uri)) { $title = basename($path); // Construct post data $postData = ''; $postData .= ''; - $postData .= ''; + $postData .= ''; $postData .= ''; - if ($dom = $this->sendRequest($uri, 'POST', $postData)) { + $dom = $this->sendRequest($uri, 'POST', $postData); + if ($dom) { return true; } } @@ -206,9 +230,10 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { public function opendir($path) { if ($path == '' || $path == '/') { - $next = 'https://docs.google.com/feeds/default/private/full/folder%3Aroot/contents'; + $next = self::BASE_URI.'/default/private/full/folder%3Aroot/contents'; } else { - if ($entry = $this->getResource($path)) { + $entry = $this->getResource($path); + if ($entry) { $next = $entry->getElementsByTagName('content')->item(0)->getAttribute('src'); } else { return false; @@ -230,7 +255,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { foreach ($entries as $entry) { $name = $entry->getElementsByTagName('title')->item(0)->nodeValue; // Google Docs resources don't always include extensions in title - if (!strpos($name, '.')) { + if ( ! strpos($name, '.')) { $extension = $this->getExtension($entry); if ($extension != '') { $name .= '.'.$extension; @@ -251,13 +276,19 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { $stat['atime'] = time(); $stat['mtime'] = time(); $stat['ctime'] = time(); - } else if ($entry = $this->getResource($path)) { - // NOTE: Native resources don't have a file size - $stat['size'] = $entry->getElementsByTagNameNS('http://schemas.google.com/g/2005', 'quotaBytesUsed')->item(0)->nodeValue; -// if (isset($atime = $entry->getElementsByTagNameNS('http://schemas.google.com/g/2005', 'lastViewed')->item(0)->nodeValue)) -// $stat['atime'] = strtotime($entry->getElementsByTagNameNS('http://schemas.google.com/g/2005', 'lastViewed')->item(0)->nodeValue); - $stat['mtime'] = strtotime($entry->getElementsByTagName('updated')->item(0)->nodeValue); - $stat['ctime'] = strtotime($entry->getElementsByTagName('published')->item(0)->nodeValue); + } else { + $entry = $this->getResource($path); + if ($entry) { + // NOTE: Native resources don't have a file size + $stat['size'] = $entry->getElementsByTagNameNS('http://schemas.google.com/g/2005', + 'quotaBytesUsed')->item(0)->nodeValue; + //if (isset($atime = $entry->getElementsByTagNameNS('http://schemas.google.com/g/2005', + // 'lastViewed')->item(0)->nodeValue)) + //$stat['atime'] = strtotime($entry->getElementsByTagNameNS('http://schemas.google.com/g/2005', + // 'lastViewed')->item(0)->nodeValue); + $stat['mtime'] = strtotime($entry->getElementsByTagName('updated')->item(0)->nodeValue); + $stat['ctime'] = strtotime($entry->getElementsByTagName('published')->item(0)->nodeValue); + } } if (isset($stat)) { return $stat; @@ -268,15 +299,18 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { public function filetype($path) { if ($path == '' || $path == '/') { return 'dir'; - } else if ($entry = $this->getResource($path)) { - $categories = $entry->getElementsByTagName('category'); - foreach ($categories as $category) { - if ($category->getAttribute('scheme') == 'http://schemas.google.com/g/2005#kind') { - $type = $category->getAttribute('label'); - if (strlen(strstr($type, 'folder')) > 0) { - return 'dir'; - } else { - return 'file'; + } else { + $entry = $this->getResource($path); + if ($entry) { + $categories = $entry->getElementsByTagName('category'); + foreach ($categories as $category) { + if ($category->getAttribute('scheme') == 'http://schemas.google.com/g/2005#kind') { + $type = $category->getAttribute('label'); + if (strlen(strstr($type, 'folder')) > 0) { + return 'dir'; + } else { + return 'file'; + } } } } @@ -291,14 +325,17 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { public function isUpdatable($path) { if ($path == '' || $path == '/') { return true; - } else if ($entry = $this->getResource($path)) { - // Check if edit or edit-media links exist - $links = $entry->getElementsByTagName('link'); - foreach ($links as $link) { - if ($link->getAttribute('rel') == 'edit') { - return true; - } else if ($link->getAttribute('rel') == 'edit-media') { - return true; + } else { + $entry = $this->getResource($path); + if ($entry) { + // Check if edit or edit-media links exist + $links = $entry->getElementsByTagName('link'); + foreach ($links as $link) { + if ($link->getAttribute('rel') == 'edit') { + return true; + } else if ($link->getAttribute('rel') == 'edit-media') { + return true; + } } } } @@ -316,7 +353,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { public function unlink($path) { // Get resource self link to trash resource - if ($entry = $this->getResource($path)) { + $entry = $this->getResource($path); + if ($entry) { $links = $entry->getElementsByTagName('link'); foreach ($links as $link) { if ($link->getAttribute('rel') == 'self') { @@ -333,7 +371,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } public function rename($path1, $path2) { - if ($entry = $this->getResource($path1)) { + $entry = $this->getResource($path1); + if ($entry) { $collection = dirname($path2); if (dirname($path1) == $collection) { // Get resource edit link to rename resource @@ -348,14 +387,18 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { $title = basename($path2); // Construct post data $postData = ''; - $postData .= ''; + $postData .= ''; $postData .= ''.$title.''; $postData .= ''; $this->sendRequest($uri, 'PUT', $postData); return true; } else { // Move to different collection - if ($collectionEntry = $this->getResource($collection)) { + $collectionEntry = $this->getResource($collection); + if ($collectionEntry) { $feedUri = $collectionEntry->getElementsByTagName('content')->item(0)->getAttribute('src'); // Construct post data $postData = ''; @@ -374,7 +417,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { switch ($mode) { case 'r': case 'rb': - if ($entry = $this->getResource($path)) { + $entry = $this->getResource($path); + if ($entry) { $extension = $this->getExtension($entry); $downloadUri = $entry->getElementsByTagName('content')->item(0)->getAttribute('src'); // TODO Non-native documents don't need these additional parameters @@ -394,8 +438,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { case 'x+': case 'c': case 'c+': - if (strrpos($path,'.') !== false) { - $ext = substr($path,strrpos($path,'.')); + if (strrpos($path, '.') !== false) { + $ext = substr($path, strrpos($path, '.')); } else { $ext = ''; } @@ -420,14 +464,14 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { private function uploadFile($path, $target) { $entry = $this->getResource($target); - if (!$entry) { + if ( ! $entry) { if (dirname($target) == '.' || dirname($target) == '/') { - $uploadUri = 'https://docs.google.com/feeds/upload/create-session/default/private/full/folder%3Aroot/contents'; + $uploadUri = self::BASE_URI.'/upload/create-session/default/private/full/folder%3Aroot/contents'; } else { $entry = $this->getResource(dirname($target)); } } - if (!isset($uploadUri) && $entry) { + if ( ! isset($uploadUri) && $entry) { $links = $entry->getElementsByTagName('link'); foreach ($links as $link) { if ($link->getAttribute('rel') == 'http://schemas.google.com/g/2005#resumable-create-media') { @@ -466,7 +510,9 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } } $end = $i + $chunkSize - 1; - $headers = array('Content-Length: '.$chunkSize, 'Content-Type: '.$mimetype, 'Content-Range: bytes '.$i.'-'.$end.'/'.$size); + $headers = array('Content-Length: '.$chunkSize, + 'Content-Type: '.$mimetype, + 'Content-Range: bytes '.$i.'-'.$end.'/'.$size); $postData = fread($handle, $chunkSize); $result = $this->sendRequest($uploadUri, 'PUT', $postData, $headers, false, true, false, true); if ($result['code'] == '308') { @@ -484,7 +530,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } public function getMimeType($path, $entry = null) { - // Entry can be passed, because extension is required for opendir and the entry can't be cached without the extension + // Entry can be passed, because extension is required for opendir + // and the entry can't be cached without the extension if ($entry == null) { if ($path == '' || $path == '/') { return 'httpd/unix-directory'; @@ -494,8 +541,10 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } if ($entry) { $mimetype = $entry->getElementsByTagName('content')->item(0)->getAttribute('type'); - // Native Google Docs resources often default to text/html, but it may be more useful to default to a corresponding ODF mimetype - // Collections get reported as application/atom+xml, make sure it actually is a folder and fix the mimetype + // Native Google Docs resources often default to text/html, + // but it may be more useful to default to a corresponding ODF mimetype + // Collections get reported as application/atom+xml, + // make sure it actually is a folder and fix the mimetype if ($mimetype == 'text/html' || $mimetype == 'application/atom+xml;type=feed') { $categories = $entry->getElementsByTagName('category'); foreach ($categories as $category) { @@ -512,7 +561,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } else if (strlen(strstr($type, 'drawing')) > 0) { return 'application/vnd.oasis.opendocument.graphics'; } else { - // If nothing matches return text/html, all native Google Docs resources can be exported as text/html + // If nothing matches return text/html, + // all native Google Docs resources can be exported as text/html return 'text/html'; } } @@ -524,10 +574,13 @@ class OC_Filestorage_Google extends OC_Filestorage_Common { } public function free_space($path) { - if ($dom = $this->getFeed('https://docs.google.com/feeds/metadata/default', 'GET')) { + $dom = $this->getFeed(self::BASE_URI.'/metadata/default', 'GET'); + if ($dom) { // NOTE: Native Google Docs resources don't count towards quota - $total = $dom->getElementsByTagNameNS('http://schemas.google.com/g/2005', 'quotaBytesTotal')->item(0)->nodeValue; - $used = $dom->getElementsByTagNameNS('http://schemas.google.com/g/2005', 'quotaBytesUsed')->item(0)->nodeValue; + $total = $dom->getElementsByTagNameNS('http://schemas.google.com/g/2005', + 'quotaBytesTotal')->item(0)->nodeValue; + $used = $dom->getElementsByTagNameNS('http://schemas.google.com/g/2005', + 'quotaBytesUsed')->item(0)->nodeValue; return $total - $used; } return false; diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index eed2582dc99bae46761a9ad9541a635d5f7c1358..071a9cd5f95e398fefa7c9d91d019e9e50cb89c0 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -21,45 +21,46 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ $this->password=$params['password']; $this->share=$params['share']; $this->root=isset($params['root'])?$params['root']:'/'; - if(!$this->root || $this->root[0]!='/') { + if ( ! $this->root || $this->root[0]!='/') { $this->root='/'.$this->root; } - if(substr($this->root,-1,1)!='/') { + if (substr($this->root, -1, 1)!='/') { $this->root.='/'; } - if(!$this->share || $this->share[0]!='/') { + if ( ! $this->share || $this->share[0]!='/') { $this->share='/'.$this->share; } - if(substr($this->share,-1,1)=='/') { - $this->share=substr($this->share,0,-1); + if (substr($this->share, -1, 1)=='/') { + $this->share=substr($this->share, 0, -1); } //create the root folder if necesary - if(!$this->is_dir('')) { + if ( ! $this->is_dir('')) { $this->mkdir(''); } } public function constructUrl($path) { - if(substr($path,-1)=='/') { - $path=substr($path,0,-1); + if (substr($path, -1)=='/') { + $path=substr($path, 0, -1); } return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path; } public function stat($path) { - if(!$path and $this->root=='/') {//mtime doesn't work for shares + if ( ! $path and $this->root=='/') {//mtime doesn't work for shares $mtime=$this->shareMTime(); $stat=stat($this->constructUrl($path)); $stat['mtime']=$mtime; return $stat; - }else{ + } else { return stat($this->constructUrl($path)); } } public function filetype($path) { - return (bool)@$this->opendir($path) ? 'dir' : 'file';//using opendir causes the same amount of requests and caches the content of the folder in one go + // using opendir causes the same amount of requests and caches the content of the folder in one go + return (bool)@$this->opendir($path) ? 'dir' : 'file'; } /** @@ -67,11 +68,12 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ * @param int $time * @return bool */ - public function hasUpdated($path,$time) { - if(!$path and $this->root=='/') { - //mtime doesn't work for shares, but giving the nature of the backend, doing a full update is still just fast enough + public function hasUpdated($path, $time) { + if ( ! $path and $this->root=='/') { + // mtime doesn't work for shares, but giving the nature of the backend, + // doing a full update is still just fast enough return true; - }else{ + } else { $actualTime=$this->filemtime($path); return $actualTime>$time; } @@ -84,9 +86,9 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ $dh=$this->opendir(''); $lastCtime=0; while($file=readdir($dh)) { - if($file!='.' and $file!='..') { + if ($file!='.' and $file!='..') { $ctime=$this->filemtime($file); - if($ctime>$lastCtime) { + if ($ctime>$lastCtime) { $lastCtime=$ctime; } } diff --git a/apps/files_external/lib/streamwrapper.php b/apps/files_external/lib/streamwrapper.php index 7263ef2325395ea882c6f2f8b5795884c5f05b37..a386e3339951dde218b0f3ddb21c92512dc3938e 100644 --- a/apps/files_external/lib/streamwrapper.php +++ b/apps/files_external/lib/streamwrapper.php @@ -15,11 +15,11 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{ } public function rmdir($path) { - if($this->file_exists($path)) { - $succes=rmdir($this->constructUrl($path)); + if ($this->file_exists($path)) { + $succes = rmdir($this->constructUrl($path)); clearstatcache(); return $succes; - }else{ + } else { return false; } } @@ -45,45 +45,43 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{ } public function unlink($path) { - $succes=unlink($this->constructUrl($path)); + $succes = unlink($this->constructUrl($path)); clearstatcache(); return $succes; } - public function fopen($path,$mode) { - return fopen($this->constructUrl($path),$mode); + public function fopen($path, $mode) { + return fopen($this->constructUrl($path), $mode); } public function free_space($path) { return 0; } - public function touch($path,$mtime=null) { - if(is_null($mtime)) { - $fh=$this->fopen($path,'a'); - fwrite($fh,''); + public function touch($path, $mtime = null) { + if (is_null($mtime)) { + $fh = $this->fopen($path, 'a'); + fwrite($fh, ''); fclose($fh); - }else{ + } else { return false;//not supported } } - public function getFile($path,$target) { - return copy($this->constructUrl($path),$target); + public function getFile($path, $target) { + return copy($this->constructUrl($path), $target); } - public function uploadFile($path,$target) { - return copy($path,$this->constructUrl($target)); + public function uploadFile($path, $target) { + return copy($path, $this->constructUrl($target)); } - public function rename($path1,$path2) { - return rename($this->constructUrl($path1),$this->constructUrl($path2)); + public function rename($path1, $path2) { + return rename($this->constructUrl($path1), $this->constructUrl($path2)); } public function stat($path) { return stat($this->constructUrl($path)); } - - } diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php index 4b0b8c25fda50a16469ebe91352e739aa44faf53..a071dfdbb03271a5babd6d649bda9e3ddc8c5933 100644 --- a/apps/files_external/lib/swift.php +++ b/apps/files_external/lib/swift.php @@ -39,8 +39,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @return string */ private function getContainerName($path) { - $path=trim(trim($this->root,'/')."/".$path,'/.'); - return str_replace('/','\\',$path); + $path=trim(trim($this->root, '/')."/".$path, '/.'); + return str_replace('/', '\\', $path); } /** @@ -49,17 +49,17 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @return CF_Container */ private function getContainer($path) { - if($path=='' or $path=='/') { + if ($path=='' or $path=='/') { return $this->rootContainer; } - if(isset($this->containers[$path])) { + if (isset($this->containers[$path])) { return $this->containers[$path]; } - try{ + try { $container=$this->conn->get_container($this->getContainerName($path)); $this->containers[$path]=$container; return $container; - }catch(NoSuchContainerException $e) { + } catch(NoSuchContainerException $e) { return null; } } @@ -70,20 +70,20 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @return CF_Container */ private function createContainer($path) { - if($path=='' or $path=='/' or $path=='.') { + if ($path=='' or $path=='/' or $path=='.') { return $this->conn->create_container($this->getContainerName($path)); } $parent=dirname($path); - if($parent=='' or $parent=='/' or $parent=='.') { + if ($parent=='' or $parent=='/' or $parent=='.') { $parentContainer=$this->rootContainer; - }else{ - if(!$this->containerExists($parent)) { + } else { + if ( ! $this->containerExists($parent)) { $parentContainer=$this->createContainer($parent); - }else{ + } else { $parentContainer=$this->getContainer($parent); } } - $this->addSubContainer($parentContainer,basename($path)); + $this->addSubContainer($parentContainer, basename($path)); return $this->conn->create_container($this->getContainerName($path)); } @@ -93,21 +93,21 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @return CF_Object */ private function getObject($path) { - if(isset($this->objects[$path])) { + if (isset($this->objects[$path])) { return $this->objects[$path]; } $container=$this->getContainer(dirname($path)); - if(is_null($container)) { + if (is_null($container)) { return null; - }else{ + } else { if ($path=="/" or $path=='') { return null; } - try{ + try { $obj=$container->get_object(basename($path)); $this->objects[$path]=$obj; return $obj; - }catch(NoSuchObjectException $e) { + } catch(NoSuchObjectException $e) { return null; } } @@ -119,11 +119,11 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @return array */ private function getObjects($container) { - if(is_null($container)) { + if (is_null($container)) { return array(); - }else{ + } else { $files=$container->get_objects(); - foreach($files as &$file) { + foreach ($files as &$file) { $file=$file->name; } return $files; @@ -137,7 +137,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ */ private function createObject($path) { $container=$this->getContainer(dirname($path)); - if(!is_null($container)) { + if ( ! is_null($container)) { $container=$this->createContainer(dirname($path)); } return $container->create_object(basename($path)); @@ -169,15 +169,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ private function getSubContainers($container) { $tmpFile=OCP\Files::tmpFile(); $obj=$this->getSubContainerFile($container); - try{ + try { $obj->save_to_filename($tmpFile); - }catch(Exception $e) { + } catch(Exception $e) { return array(); } $obj->save_to_filename($tmpFile); $containers=file($tmpFile); unlink($tmpFile); - foreach($containers as &$sub) { + foreach ($containers as &$sub) { $sub=trim($sub); } return $containers; @@ -189,28 +189,28 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @param string name * @return bool */ - private function addSubContainer($container,$name) { - if(!$name) { + private function addSubContainer($container, $name) { + if ( ! $name) { return false; } $tmpFile=OCP\Files::tmpFile(); $obj=$this->getSubContainerFile($container); - try{ + try { $obj->save_to_filename($tmpFile); $containers=file($tmpFile); - foreach($containers as &$sub) { + foreach ($containers as &$sub) { $sub=trim($sub); } - if(array_search($name,$containers)!==false) { + if (array_search($name, $containers)!==false) { unlink($tmpFile); return false; - }else{ - $fh=fopen($tmpFile,'a'); - fwrite($fh,$name."\n"); + } else { + $fh=fopen($tmpFile, 'a'); + fwrite($fh, $name."\n"); } - }catch(Exception $e) { + } catch(Exception $e) { $containers=array(); - file_put_contents($tmpFile,$name."\n"); + file_put_contents($tmpFile, $name."\n"); } $obj->load_from_filename($tmpFile); @@ -224,28 +224,28 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @param string name * @return bool */ - private function removeSubContainer($container,$name) { - if(!$name) { + private function removeSubContainer($container, $name) { + if ( ! $name) { return false; } $tmpFile=OCP\Files::tmpFile(); $obj=$this->getSubContainerFile($container); - try{ + try { $obj->save_to_filename($tmpFile); $containers=file($tmpFile); - }catch(Exception $e) { + } catch (Exception $e) { return false; } - foreach($containers as &$sub) { + foreach ($containers as &$sub) { $sub=trim($sub); } - $i=array_search($name,$containers); - if($i===false) { + $i=array_search($name, $containers); + if ($i===false) { unlink($tmpFile); return false; - }else{ + } else { unset($containers[$i]); - file_put_contents($tmpFile,implode("\n",$containers)."\n"); + file_put_contents($tmpFile, implode("\n", $containers)."\n"); } $obj->load_from_filename($tmpFile); @@ -259,9 +259,9 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @return CF_Object */ private function getSubContainerFile($container) { - try{ + try { return $container->get_object(self::SUBCONTAINER_FILE); - }catch(NoSuchObjectException $e) { + } catch(NoSuchObjectException $e) { return $container->create_object(self::SUBCONTAINER_FILE); } } @@ -271,8 +271,16 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ $this->host=$params['host']; $this->user=$params['user']; $this->root=isset($params['root'])?$params['root']:'/'; - $this->secure=isset($params['secure'])?(bool)$params['secure']:true; - if(!$this->root || $this->root[0]!='/') { + if (isset($params['secure'])) { + if (is_string($params['secure'])) { + $this->secure = ($params['secure'] === 'true'); + } else { + $this->secure = (bool)$params['secure']; + } + } else { + $this->secure = false; + } + if ( ! $this->root || $this->root[0]!='/') { $this->root='/'.$this->root; } $this->auth = new CF_Authentication($this->user, $this->token, null, $this->host); @@ -280,31 +288,31 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ $this->conn = new CF_Connection($this->auth); - if(!$this->containerExists('/')) { + if ( ! $this->containerExists('/')) { $this->rootContainer=$this->createContainer('/'); - }else{ + } else { $this->rootContainer=$this->getContainer('/'); } } public function mkdir($path) { - if($this->containerExists($path)) { + if ($this->containerExists($path)) { return false; - }else{ + } else { $this->createContainer($path); return true; } } public function rmdir($path) { - if(!$this->containerExists($path)) { + if ( ! $this->containerExists($path)) { return false; - }else{ + } else { $this->emptyContainer($path); - if($path!='' and $path!='/') { + if ($path!='' and $path!='/') { $parentContainer=$this->getContainer(dirname($path)); - $this->removeSubContainer($parentContainer,basename($path)); + $this->removeSubContainer($parentContainer, basename($path)); } $this->conn->delete_container($this->getContainerName($path)); @@ -315,12 +323,12 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ private function emptyContainer($path) { $container=$this->getContainer($path); - if(is_null($container)) { + if (is_null($container)) { return; } $subContainers=$this->getSubContainers($container); - foreach($subContainers as $sub) { - if($sub) { + foreach ($subContainers as $sub) { + if ($sub) { $this->emptyContainer($path.'/'.$sub); $this->conn->delete_container($this->getContainerName($path.'/'.$sub)); unset($this->containers[$path.'/'.$sub]); @@ -328,7 +336,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } $objects=$this->getObjects($container); - foreach($objects as $object) { + foreach ($objects as $object) { $container->delete_object($object); unset($this->objects[$path.'/'.$object]); } @@ -337,21 +345,21 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ public function opendir($path) { $container=$this->getContainer($path); $files=$this->getObjects($container); - $i=array_search(self::SUBCONTAINER_FILE,$files); - if($i!==false) { + $i=array_search(self::SUBCONTAINER_FILE, $files); + if ($i!==false) { unset($files[$i]); } $subContainers=$this->getSubContainers($container); - $files=array_merge($files,$subContainers); + $files=array_merge($files, $subContainers); $id=$this->getContainerName($path); OC_FakeDirStream::$dirs[$id]=$files; return opendir('fakedir://'.$id); } public function filetype($path) { - if($this->containerExists($path)) { + if ($this->containerExists($path)) { return 'dir'; - }else{ + } else { return 'file'; } } @@ -365,26 +373,26 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function file_exists($path) { - if($this->is_dir($path)) { + if ($this->is_dir($path)) { return true; - }else{ + } else { return $this->objectExists($path); } } public function file_get_contents($path) { $obj=$this->getObject($path); - if(is_null($obj)) { + if (is_null($obj)) { return false; } return $obj->read(); } - public function file_put_contents($path,$content) { + public function file_put_contents($path, $content) { $obj=$this->getObject($path); - if(is_null($obj)) { + if (is_null($obj)) { $container=$this->getContainer(dirname($path)); - if(is_null($container)) { + if (is_null($container)) { return false; } $obj=$container->create_object(basename($path)); @@ -394,19 +402,19 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ } public function unlink($path) { - if($this->containerExists($path)) { + if ($this->containerExists($path)) { return $this->rmdir($path); } - if($this->objectExists($path)) { + if ($this->objectExists($path)) { $container=$this->getContainer(dirname($path)); $container->delete_object(basename($path)); unset($this->objects[$path]); - }else{ + } else { return false; } } - public function fopen($path,$mode) { + public function fopen($path, $mode) { switch($mode) { case 'r': case 'rb': @@ -432,15 +440,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ case 'c': case 'c+': $tmpFile=$this->getTmpFile($path); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); + OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); self::$tempFiles[$tmpFile]=$path; - return fopen('close://'.$tmpFile,$mode); + return fopen('close://'.$tmpFile, $mode); } } public function writeBack($tmpFile) { - if(isset(self::$tempFiles[$tmpFile])) { - $this->fromTmpFile($tmpFile,self::$tempFiles[$tmpFile]); + if (isset(self::$tempFiles[$tmpFile])) { + $this->fromTmpFile($tmpFile, self::$tempFiles[$tmpFile]); unlink($tmpFile); } } @@ -449,12 +457,12 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ return 1024*1024*1024*8; } - public function touch($path,$mtime=null) { + public function touch($path, $mtime=null) { $obj=$this->getObject($path); - if(is_null($obj)) { + if (is_null($obj)) { return false; } - if(is_null($mtime)) { + if (is_null($mtime)) { $mtime=time(); } @@ -463,23 +471,23 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ $obj->sync_metadata(); } - public function rename($path1,$path2) { + public function rename($path1, $path2) { $sourceContainer=$this->getContainer(dirname($path1)); $targetContainer=$this->getContainer(dirname($path2)); - $result=$sourceContainer->move_object_to(basename($path1),$targetContainer,basename($path2)); + $result=$sourceContainer->move_object_to(basename($path1), $targetContainer, basename($path2)); unset($this->objects[$path1]); - if($result) { + if ($result) { $targetObj=$this->getObject($path2); $this->resetMTime($targetObj); } return $result; } - public function copy($path1,$path2) { + public function copy($path1, $path2) { $sourceContainer=$this->getContainer(dirname($path1)); $targetContainer=$this->getContainer(dirname($path2)); - $result=$sourceContainer->copy_object_to(basename($path1),$targetContainer,basename($path2)); - if($result) { + $result=$sourceContainer->copy_object_to(basename($path1), $targetContainer, basename($path2)); + if ($result) { $targetObj=$this->getObject($path2); $this->resetMTime($targetObj); } @@ -488,7 +496,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ public function stat($path) { $container=$this->getContainer($path); - if (!is_null($container)) { + if ( ! is_null($container)) { return array( 'mtime'=>-1, 'size'=>$container->bytes_used, @@ -498,13 +506,13 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ $obj=$this->getObject($path); - if(is_null($obj)) { + if (is_null($obj)) { return false; } - if(isset($obj->metadata['Mtime']) and $obj->metadata['Mtime']>-1) { + if (isset($obj->metadata['Mtime']) and $obj->metadata['Mtime']>-1) { $mtime=$obj->metadata['Mtime']; - }else{ + } else { $mtime=strtotime($obj->last_modified); } return array( @@ -516,18 +524,18 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ private function getTmpFile($path) { $obj=$this->getObject($path); - if(!is_null($obj)) { + if ( ! is_null($obj)) { $tmpFile=OCP\Files::tmpFile(); $obj->save_to_filename($tmpFile); return $tmpFile; - }else{ + } else { return OCP\Files::tmpFile(); } } - private function fromTmpFile($tmpFile,$path) { + private function fromTmpFile($tmpFile, $path) { $obj=$this->getObject($path); - if(is_null($obj)) { + if (is_null($obj)) { $obj=$this->createObject($path); } $obj->load_from_filename($tmpFile); @@ -539,7 +547,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{ * @param CF_Object obj */ private function resetMTime($obj) { - if(isset($obj->metadata['Mtime'])) { + if (isset($obj->metadata['Mtime'])) { $obj->metadata['Mtime']=-1; $obj->sync_metadata(); } diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php index 5e1858391588925a6617b0218a76a72cfe1bf602..68aca228bc578c4874553dea75e226a6c5c89f68 100644 --- a/apps/files_external/lib/webdav.php +++ b/apps/files_external/lib/webdav.php @@ -22,17 +22,25 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ public function __construct($params) { $host = $params['host']; //remove leading http[s], will be generated in createBaseUri() - if (substr($host,0,8) == "https://") $host = substr($host, 8); - else if (substr($host,0,7) == "http://") $host = substr($host, 7); + if (substr($host, 0, 8) == "https://") $host = substr($host, 8); + else if (substr($host, 0, 7) == "http://") $host = substr($host, 7); $this->host=$host; $this->user=$params['user']; $this->password=$params['password']; - $this->secure=(isset($params['secure']) && $params['secure'] == 'true')?true:false; + if (isset($params['secure'])) { + if (is_string($params['secure'])) { + $this->secure = ($params['secure'] === 'true'); + } else { + $this->secure = (bool)$params['secure']; + } + } else { + $this->secure = false; + } $this->root=isset($params['root'])?$params['root']:'/'; - if(!$this->root || $this->root[0]!='/') { + if ( ! $this->root || $this->root[0]!='/') { $this->root='/'.$this->root; } - if(substr($this->root,-1,1)!='/') { + if (substr($this->root, -1, 1)!='/') { $this->root.='/'; } @@ -44,9 +52,10 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ $this->client = new OC_Connector_Sabre_Client($settings); - if($caview = \OCP\Files::getStorage('files_external')) { + $caview = \OCP\Files::getStorage('files_external'); + if ($caview) { $certPath=\OCP\Config::getSystemValue('datadirectory').$caview->getAbsolutePath("").'rootcerts.crt'; - if (file_exists($certPath)) { + if (file_exists($certPath)) { $this->client->addTrustedCertificates($certPath); } } @@ -56,7 +65,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ private function createBaseUri() { $baseUri='http'; - if($this->secure) { + if ($this->secure) { $baseUri.='s'; } $baseUri.='://'.$this->host.$this->root; @@ -65,39 +74,39 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ public function mkdir($path) { $path=$this->cleanPath($path); - return $this->simpleResponse('MKCOL',$path,null,201); + return $this->simpleResponse('MKCOL', $path, null, 201); } public function rmdir($path) { $path=$this->cleanPath($path); - return $this->simpleResponse('DELETE',$path,null,204); + return $this->simpleResponse('DELETE', $path, null, 204); } public function opendir($path) { $path=$this->cleanPath($path); - try{ - $response=$this->client->propfind($path, array(),1); + try { + $response=$this->client->propfind($path, array(), 1); $id=md5('webdav'.$this->root.$path); OC_FakeDirStream::$dirs[$id]=array(); $files=array_keys($response); array_shift($files);//the first entry is the current directory - foreach($files as $file) { + foreach ($files as $file) { $file = urldecode(basename($file)); OC_FakeDirStream::$dirs[$id][]=$file; } return opendir('fakedir://'.$id); - }catch(Exception $e) { + } catch(Exception $e) { return false; } } public function filetype($path) { $path=$this->cleanPath($path); - try{ + try { $response=$this->client->propfind($path, array('{DAV:}resourcetype')); $responseType=$response["{DAV:}resourcetype"]->resourceType; return (count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file'; - }catch(Exception $e) { + } catch(Exception $e) { error_log($e->getMessage()); \OCP\Util::writeLog("webdav client", \OCP\Util::sanitizeHTML($e->getMessage()), \OCP\Util::ERROR); return false; @@ -114,30 +123,30 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ public function file_exists($path) { $path=$this->cleanPath($path); - try{ + try { $this->client->propfind($path, array('{DAV:}resourcetype')); return true;//no 404 exception - }catch(Exception $e) { + } catch(Exception $e) { return false; } } public function unlink($path) { - return $this->simpleResponse('DELETE',$path,null,204); + return $this->simpleResponse('DELETE', $path, null, 204); } - public function fopen($path,$mode) { + public function fopen($path, $mode) { $path=$this->cleanPath($path); switch($mode) { case 'r': case 'rb': - if(!$this->file_exists($path)) { + if ( ! $this->file_exists($path)) { return false; } //straight up curl instead of sabredav here, sabredav put's the entire get result in memory $curl = curl_init(); $fp = fopen('php://temp', 'r+'); - curl_setopt($curl,CURLOPT_USERPWD,$this->user.':'.$this->password); + curl_setopt($curl, CURLOPT_USERPWD, $this->user.':'.$this->password); curl_setopt($curl, CURLOPT_URL, $this->createBaseUri().$path); curl_setopt($curl, CURLOPT_FILE, $fp); @@ -158,60 +167,60 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ case 'c': case 'c+': //emulate these - if(strrpos($path,'.')!==false) { - $ext=substr($path,strrpos($path,'.')); - }else{ + if (strrpos($path, '.')!==false) { + $ext=substr($path, strrpos($path, '.')); + } else { $ext=''; } $tmpFile=OCP\Files::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); - if($this->file_exists($path)) { - $this->getFile($path,$tmpFile); + OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); + if ($this->file_exists($path)) { + $this->getFile($path, $tmpFile); } self::$tempFiles[$tmpFile]=$path; - return fopen('close://'.$tmpFile,$mode); + return fopen('close://'.$tmpFile, $mode); } } public function writeBack($tmpFile) { - if(isset(self::$tempFiles[$tmpFile])) { - $this->uploadFile($tmpFile,self::$tempFiles[$tmpFile]); + if (isset(self::$tempFiles[$tmpFile])) { + $this->uploadFile($tmpFile, self::$tempFiles[$tmpFile]); unlink($tmpFile); } } public function free_space($path) { $path=$this->cleanPath($path); - try{ + try { $response=$this->client->propfind($path, array('{DAV:}quota-available-bytes')); - if(isset($response['{DAV:}quota-available-bytes'])) { + if (isset($response['{DAV:}quota-available-bytes'])) { return (int)$response['{DAV:}quota-available-bytes']; - }else{ + } else { return 0; } - }catch(Exception $e) { + } catch(Exception $e) { return 0; } } - public function touch($path,$mtime=null) { - if(is_null($mtime)) { + public function touch($path, $mtime=null) { + if (is_null($mtime)) { $mtime=time(); } $path=$this->cleanPath($path); $this->client->proppatch($path, array('{DAV:}lastmodified' => $mtime)); } - public function getFile($path,$target) { - $source=$this->fopen($path,'r'); - file_put_contents($target,$source); + public function getFile($path, $target) { + $source=$this->fopen($path, 'r'); + file_put_contents($target, $source); } - public function uploadFile($path,$target) { - $source=fopen($path,'r'); + public function uploadFile($path, $target) { + $source=fopen($path, 'r'); $curl = curl_init(); - curl_setopt($curl,CURLOPT_USERPWD,$this->user.':'.$this->password); + curl_setopt($curl, CURLOPT_USERPWD, $this->user.':'.$this->password); curl_setopt($curl, CURLOPT_URL, $this->createBaseUri().$target); curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); curl_setopt($curl, CURLOPT_INFILE, $source); // file pointer @@ -221,13 +230,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ curl_close ($curl); } - public function rename($path1,$path2) { + public function rename($path1, $path2) { $path1=$this->cleanPath($path1); $path2=$this->root.$this->cleanPath($path2); - try{ - $response=$this->client->request('MOVE',$path1,null,array('Destination'=>$path2)); + try { + $response=$this->client->request('MOVE', $path1, null, array('Destination'=>$path2)); return true; - }catch(Exception $e) { + } catch(Exception $e) { echo $e; echo 'fail'; var_dump($response); @@ -235,13 +244,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ } } - public function copy($path1,$path2) { + public function copy($path1, $path2) { $path1=$this->cleanPath($path1); $path2=$this->root.$this->cleanPath($path2); - try{ - $response=$this->client->request('COPY',$path1,null,array('Destination'=>$path2)); + try { + $response=$this->client->request('COPY', $path1, null, array('Destination'=>$path2)); return true; - }catch(Exception $e) { + } catch(Exception $e) { echo $e; echo 'fail'; var_dump($response); @@ -251,50 +260,50 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{ public function stat($path) { $path=$this->cleanPath($path); - try{ - $response=$this->client->propfind($path, array('{DAV:}getlastmodified','{DAV:}getcontentlength')); + try { + $response=$this->client->propfind($path, array('{DAV:}getlastmodified', '{DAV:}getcontentlength')); return array( 'mtime'=>strtotime($response['{DAV:}getlastmodified']), 'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0, 'ctime'=>-1, ); - }catch(Exception $e) { + } catch(Exception $e) { return array(); } } public function getMimeType($path) { $path=$this->cleanPath($path); - try{ - $response=$this->client->propfind($path, array('{DAV:}getcontenttype','{DAV:}resourcetype')); + try { + $response=$this->client->propfind($path, array('{DAV:}getcontenttype', '{DAV:}resourcetype')); $responseType=$response["{DAV:}resourcetype"]->resourceType; $type=(count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file'; - if($type=='dir') { + if ($type=='dir') { return 'httpd/unix-directory'; - }elseif(isset($response['{DAV:}getcontenttype'])) { + } elseif (isset($response['{DAV:}getcontenttype'])) { return $response['{DAV:}getcontenttype']; - }else{ + } else { return false; } - }catch(Exception $e) { + } catch(Exception $e) { return false; } } private function cleanPath($path) { - if(!$path || $path[0]=='/') { - return substr($path,1); - }else{ + if ( ! $path || $path[0]=='/') { + return substr($path, 1); + } else { return $path; } } - private function simpleResponse($method,$path,$body,$expected) { + private function simpleResponse($method, $path, $body, $expected) { $path=$this->cleanPath($path); - try{ - $response=$this->client->request($method,$path,$body); + try { + $response=$this->client->request($method, $path, $body); return $response['statusCode']==$expected; - }catch(Exception $e) { + } catch(Exception $e) { return false; } } diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 367ce2bc03e33db6d656cccd8396d1857846381b..5b954eeb50a2f52c32e46c97ba31f7774ac62e46 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -16,18 +16,22 @@ array())); ?> $mount): ?> > - + - + @@ -35,46 +39,75 @@ - - - + + + - + - + - + - + + + - - ' data-applicable-users=''> - - - - + + + - - - + + + - ><?php echo $l->t('Delete'); ?> + class="remove" + style="visibility:hidden;" + ><?php echo $l->t('Delete'); ?> @@ -83,16 +116,22 @@
            - /> + />
            t('Allow users to mount their own external storage'); ?> -
            +
            - + '> @@ -104,13 +143,18 @@ - +
            ><?php echo $l->t('Delete'); ?>class="remove" + style="visibility:hidden;" + ><?php echo $l->t('Delete'); ?>
            - - + +
            \ No newline at end of file diff --git a/apps/files_external/tests/amazons3.php b/apps/files_external/tests/amazons3.php index 725f4ba05daafb449a9c84ede2edf84132325859..39f96fe8e5594db2e0e93b041b0d375a7bd246dc 100644 --- a/apps/files_external/tests/amazons3.php +++ b/apps/files_external/tests/amazons3.php @@ -28,7 +28,7 @@ class Test_Filestorage_AmazonS3 extends Test_FileStorage { public function setUp() { $id = uniqid(); $this->config = include('files_external/tests/config.php'); - if (!is_array($this->config) or !isset($this->config['amazons3']) or !$this->config['amazons3']['run']) { + if ( ! is_array($this->config) or ! isset($this->config['amazons3']) or ! $this->config['amazons3']['run']) { $this->markTestSkipped('AmazonS3 backend not configured'); } $this->config['amazons3']['bucket'] = $id; // Make sure we have a new empty bucket to work in @@ -37,7 +37,8 @@ class Test_Filestorage_AmazonS3 extends Test_FileStorage { public function tearDown() { if ($this->instance) { - $s3 = new AmazonS3(array('key' => $this->config['amazons3']['key'], 'secret' => $this->config['amazons3']['secret'])); + $s3 = new AmazonS3(array('key' => $this->config['amazons3']['key'], + 'secret' => $this->config['amazons3']['secret'])); if ($s3->delete_all_objects($this->id)) { $s3->delete_bucket($this->id); } diff --git a/apps/files_external/tests/dropbox.php b/apps/files_external/tests/dropbox.php index 56319b9f5d7194c560001cd7c4a4c5b6b2520354..304cb3ca38ca97c0e4c32489be4eb7697a9df2c3 100644 --- a/apps/files_external/tests/dropbox.php +++ b/apps/files_external/tests/dropbox.php @@ -12,7 +12,7 @@ class Test_Filestorage_Dropbox extends Test_FileStorage { public function setUp() { $id = uniqid(); $this->config = include('files_external/tests/config.php'); - if (!is_array($this->config) or !isset($this->config['dropbox']) or !$this->config['dropbox']['run']) { + if ( ! is_array($this->config) or ! isset($this->config['dropbox']) or ! $this->config['dropbox']['run']) { $this->markTestSkipped('Dropbox backend not configured'); } $this->config['dropbox']['root'] .= '/' . $id; //make sure we have an new empty folder to work in diff --git a/apps/files_external/tests/ftp.php b/apps/files_external/tests/ftp.php index 4549c4204101903ffca58c24bc38706bb40a05ad..d0404b5f34cdbf11e7618a62c1bfeaf9ea03f8b3 100644 --- a/apps/files_external/tests/ftp.php +++ b/apps/files_external/tests/ftp.php @@ -12,7 +12,7 @@ class Test_Filestorage_FTP extends Test_FileStorage { public function setUp() { $id = uniqid(); $this->config = include('files_external/tests/config.php'); - if (!is_array($this->config) or !isset($this->config['ftp']) or !$this->config['ftp']['run']) { + if ( ! is_array($this->config) or ! isset($this->config['ftp']) or ! $this->config['ftp']['run']) { $this->markTestSkipped('FTP backend not configured'); } $this->config['ftp']['root'] .= '/' . $id; //make sure we have an new empty folder to work in @@ -24,4 +24,26 @@ class Test_Filestorage_FTP extends Test_FileStorage { OCP\Files::rmdirr($this->instance->constructUrl('')); } } + + public function testConstructUrl(){ + $config = array ( 'host' => 'localhost', + 'user' => 'ftp', + 'password' => 'ftp', + 'root' => '/', + 'secure' => false ); + $instance = new OC_Filestorage_FTP($config); + $this->assertEqual('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); + + $config['secure'] = true; + $instance = new OC_Filestorage_FTP($config); + $this->assertEqual('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); + + $config['secure'] = 'false'; + $instance = new OC_Filestorage_FTP($config); + $this->assertEqual('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); + + $config['secure'] = 'true'; + $instance = new OC_Filestorage_FTP($config); + $this->assertEqual('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); + } } diff --git a/apps/files_external/tests/google.php b/apps/files_external/tests/google.php index 46e622cc180fc1c2fceaf0676a4c9bab24ef8b7b..379bf992ff58aa89ed7368e19f43b5c1fdcd3360 100644 --- a/apps/files_external/tests/google.php +++ b/apps/files_external/tests/google.php @@ -27,7 +27,7 @@ class Test_Filestorage_Google extends Test_FileStorage { public function setUp() { $id = uniqid(); $this->config = include('files_external/tests/config.php'); - if (!is_array($this->config) or !isset($this->config['google']) or !$this->config['google']['run']) { + if ( ! is_array($this->config) or ! isset($this->config['google']) or ! $this->config['google']['run']) { $this->markTestSkipped('Google backend not configured'); } $this->config['google']['root'] .= '/' . $id; //make sure we have an new empty folder to work in diff --git a/apps/files_external/tests/smb.php b/apps/files_external/tests/smb.php index 2c03ef5dbd09569646288a3ef288db0d3b864a3e..2d6268ef26959b5a6a66602e75a6c2882da2b04f 100644 --- a/apps/files_external/tests/smb.php +++ b/apps/files_external/tests/smb.php @@ -12,7 +12,7 @@ class Test_Filestorage_SMB extends Test_FileStorage { public function setUp() { $id = uniqid(); $this->config = include('files_external/tests/config.php'); - if (!is_array($this->config) or !isset($this->config['smb']) or !$this->config['smb']['run']) { + if ( ! is_array($this->config) or ! isset($this->config['smb']) or ! $this->config['smb']['run']) { $this->markTestSkipped('Samba backend not configured'); } $this->config['smb']['root'] .= $id; //make sure we have an new empty folder to work in diff --git a/apps/files_external/tests/swift.php b/apps/files_external/tests/swift.php index 8cf2a3abc76e940f61ef330173c18032955f1b3e..8b25db509962202c5088cd0d8cc5601808b3fdd1 100644 --- a/apps/files_external/tests/swift.php +++ b/apps/files_external/tests/swift.php @@ -12,7 +12,7 @@ class Test_Filestorage_SWIFT extends Test_FileStorage { public function setUp() { $id = uniqid(); $this->config = include('files_external/tests/config.php'); - if (!is_array($this->config) or !isset($this->config['swift']) or !$this->config['swift']['run']) { + if ( ! is_array($this->config) or ! isset($this->config['swift']) or ! $this->config['swift']['run']) { $this->markTestSkipped('OpenStack SWIFT backend not configured'); } $this->config['swift']['root'] .= '/' . $id; //make sure we have an new empty folder to work in diff --git a/apps/files_external/tests/webdav.php b/apps/files_external/tests/webdav.php index 2da88f63edd696fea108f565f021b791d8e16bbd..dd938a0c93a757c9be3739641ed594b4faf5e58e 100644 --- a/apps/files_external/tests/webdav.php +++ b/apps/files_external/tests/webdav.php @@ -12,7 +12,7 @@ class Test_Filestorage_DAV extends Test_FileStorage { public function setUp() { $id = uniqid(); $this->config = include('files_external/tests/config.php'); - if (!is_array($this->config) or !isset($this->config['webdav']) or !$this->config['webdav']['run']) { + if ( ! is_array($this->config) or ! isset($this->config['webdav']) or ! $this->config['webdav']['run']) { $this->markTestSkipped('WebDAV backend not configured'); } $this->config['webdav']['root'] .= '/' . $id; //make sure we have an new empty folder to work in diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php index 23f2afea7e13617388349f2a279b72da7e8c97ff..e998626f4a4d1e98ab31e44c7ada9c49c271b291 100644 --- a/apps/files_sharing/appinfo/update.php +++ b/apps/files_sharing/appinfo/update.php @@ -19,11 +19,11 @@ if (version_compare($installedVersion, '0.3', '<')) { $itemType = 'file'; } if ($row['permissions'] == 0) { - $permissions = OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE; + $permissions = OCP\PERMISSION_READ | OCP\PERMISSION_SHARE; } else { - $permissions = OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_SHARE; + $permissions = OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_SHARE; if ($itemType == 'folder') { - $permissions |= OCP\Share::PERMISSION_CREATE; + $permissions |= OCP\PERMISSION_CREATE; } } $pos = strrpos($row['uid_shared_with'], '@'); @@ -55,6 +55,7 @@ if (version_compare($installedVersion, '0.3', '<')) { OC_Util::tearDownFS(); } } + OC_User::setUserId(null); if ($update_error) { OCP\Util::writeLog('files_sharing', 'There were some problems upgrading the sharing of files', OCP\Util::ERROR); } diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index fb4794e0474f6cc6866dde024b322e8b74982567..492014344f7318f6bba9f77e4ffb6c686cdd6199 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -1,11 +1,70 @@ -body { background:#ddd; } -#header { position:fixed; top:0; left:0; right:0; z-index:100; height:2.5em; line-height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; } -#details { color:#fff; } -#header #download { margin-left:2em; font-weight:bold; } -#header #download img { padding-left: 0.1em; padding-right: 0.3em; vertical-align: text-bottom; } -#preview { min-height:30em; margin:50px auto; padding-top:2em; border-bottom:1px solid #f8f8f8; background:#eee; text-align:center; } -#noPreview { display:none; padding-top:5em; } -p.info { width:22em; text-align: center; margin:2em auto; color:#777; text-shadow:#fff 0 1px 0; } -p.info a { font-weight:bold; color:#777; } -#imgframe { width:80%; height: 75%; margin: 0 auto; padding-bottom:2em; } -#imgframe img { max-height:100%; max-width: 100%; } \ No newline at end of file +body { + background:#ddd; +} + +#header { + background:#1d2d44; + box-shadow:0 0 10px rgba(0,0,0,.5), inset 0 -2px 10px #222; + height:2.5em; + left:0; + line-height:2.5em; + position:fixed; + right:0; + top:0; + z-index:100; + padding:.5em; +} + +#details { + color:#fff; +} + +#header #download { + font-weight:700; + margin-left:2em; +} + +#header #download img { + padding-left:.1em; + padding-right:.3em; + vertical-align:text-bottom; +} + +#preview { + background:#eee; + border-bottom:1px solid #f8f8f8; + min-height:30em; + padding-top:2em; + text-align:center; + margin:50px auto; +} + +#noPreview { + display:none; + padding-top:5em; +} + +p.info { + color:#777; + text-align:center; + text-shadow:#fff 0 1px 0; + width:22em; + margin:2em auto; +} + +p.info a { + color:#777; + font-weight:700; +} + +#imgframe { + height:75%; + padding-bottom:2em; + width:80%; + margin:0 auto; +} + +#imgframe img { + max-height:100%; + max-width:100%; +} \ No newline at end of file diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 72663c068c9eb7b8abaeff191bd8adfbf289fc0a..7eb086712f43c1d4ae0a6796bd589e41093d2a54 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -1,36 +1,8 @@ $(document).ready(function() { if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined' && !publicListView) { - OC.Share.loadIcons('file'); - FileActions.register('all', 'Share', OC.PERMISSION_READ, function(filename) { - // Return the correct sharing icon - if (scanFiles.scanning) { return; } // workaround to prevent additional http request block scanning feedback - if ($('#dir').val() == '/') { - var item = $('#dir').val() + filename; - } else { - var item = $('#dir').val() + '/' + filename; - } - // Check if status is in cache - if (OC.Share.statuses[item] === true) { - return OC.imagePath('core', 'actions/public'); - } else if (OC.Share.statuses[item] === false) { - return OC.imagePath('core', 'actions/shared'); - } else { - var last = ''; - var path = OC.Share.dirname(item); - // Search for possible parent folders that are shared - while (path != last) { - if (OC.Share.statuses[path] === true) { - return OC.imagePath('core', 'actions/public'); - } else if (OC.Share.statuses[path] === false) { - return OC.imagePath('core', 'actions/shared'); - } - last = path; - path = OC.Share.dirname(path); - } - return OC.imagePath('core', 'actions/share'); - } - }, function(filename) { + + FileActions.register('all', 'Share', OC.PERMISSION_READ, OC.imagePath('core', 'actions/share'), function(filename) { if ($('#dir').val() == '/') { var item = $('#dir').val() + filename; } else { @@ -59,6 +31,8 @@ $(document).ready(function() { OC.Share.showDropDown(itemType, $(tr).data('id'), appendTo, true, possiblePermissions); } }); + OC.Share.loadIcons('file'); } + }); \ No newline at end of file diff --git a/apps/files_sharing/l10n/de.php b/apps/files_sharing/l10n/de.php index c2fec2154516581bba078f51bca092d4f046c653..7f4cbb1adad59c2c2792ea1856ad692b1ced313d 100644 --- a/apps/files_sharing/l10n/de.php +++ b/apps/files_sharing/l10n/de.php @@ -1,8 +1,8 @@ "Passwort", "Submit" => "Absenden", -"%s shared the folder %s with you" => "%s hat den Ordner %s für dich freigegeben", -"%s shared the file %s with you" => "%s hat die Datei %s für dich freigegeben", +"%s shared the folder %s with you" => "%s hat den Ordner %s mit Dir geteilt", +"%s shared the file %s with you" => "%s hat die Datei %s mit Dir geteilt", "Download" => "Download", "No preview available for" => "Es ist keine Vorschau verfügbar für", "web services under your control" => "Web-Services unter Deiner Kontrolle" diff --git a/apps/files_sharing/l10n/de_DE.php b/apps/files_sharing/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..b92d6d478c9ae99203a0e7fa377742a85a54d067 --- /dev/null +++ b/apps/files_sharing/l10n/de_DE.php @@ -0,0 +1,9 @@ + "Passwort", +"Submit" => "Absenden", +"%s shared the folder %s with you" => "%s hat den Ordner %s mit Ihnen geteilt", +"%s shared the file %s with you" => "%s hat die Datei %s mit Ihnen geteilt", +"Download" => "Download", +"No preview available for" => "Es ist keine Vorschau verfügbar für", +"web services under your control" => "Web-Services unter Ihrer Kontrolle" +); diff --git a/apps/files_sharing/l10n/eo.php b/apps/files_sharing/l10n/eo.php index e71715f0f1f06e47e0f1d0fa200f5e660ace03f5..c598d3aa2c4ac84a3bde24f6ce48d28c377fbb36 100644 --- a/apps/files_sharing/l10n/eo.php +++ b/apps/files_sharing/l10n/eo.php @@ -1,6 +1,8 @@ "Pasvorto", "Submit" => "Sendi", +"%s shared the folder %s with you" => "%s kunhavigis la dosierujon %s kun vi", +"%s shared the file %s with you" => "%s kunhavigis la dosieron %s kun vi", "Download" => "ElÅuti", "No preview available for" => "Ne haveblas antaÅ­vido por", "web services under your control" => "TTT-servoj regataj de vi" diff --git a/apps/files_sharing/l10n/et_EE.php b/apps/files_sharing/l10n/et_EE.php index 94b9b1d7aef06f8960e8e1ac0eca1722f5d7945c..36290ad2787e366e63a12568595dff734dd3648f 100644 --- a/apps/files_sharing/l10n/et_EE.php +++ b/apps/files_sharing/l10n/et_EE.php @@ -1,6 +1,8 @@ "Parool", "Submit" => "Saada", +"%s shared the folder %s with you" => "%s jagas sinuga kausta %s", +"%s shared the file %s with you" => "%s jagas sinuga faili %s", "Download" => "Lae alla", "No preview available for" => "Eelvaadet pole saadaval", "web services under your control" => "veebitenused sinu kontrolli all" diff --git a/apps/files_sharing/l10n/gl.php b/apps/files_sharing/l10n/gl.php index c9644d720e35f163a005f456a09f0d6976bcf8f8..d03f1a5005f49542b65b8637c6bc71221687e4b2 100644 --- a/apps/files_sharing/l10n/gl.php +++ b/apps/files_sharing/l10n/gl.php @@ -1,7 +1,9 @@ "Contrasinal", "Submit" => "Enviar", -"Download" => "Baixar", -"No preview available for" => "Sen vista previa dispoñible para ", +"%s shared the folder %s with you" => "%s compartiu o cartafol %s con vostede", +"%s shared the file %s with you" => "%s compartiu o ficheiro %s con vostede", +"Download" => "Descargar", +"No preview available for" => "Sen vista previa dispoñíbel para", "web services under your control" => "servizos web baixo o seu control" ); diff --git a/apps/files_sharing/l10n/id.php b/apps/files_sharing/l10n/id.php new file mode 100644 index 0000000000000000000000000000000000000000..8897269d989ea4bafc894d8f2919b510e0653852 --- /dev/null +++ b/apps/files_sharing/l10n/id.php @@ -0,0 +1,9 @@ + "kata kunci", +"Submit" => "kirim", +"%s shared the folder %s with you" => "%s membagikan folder %s dengan anda", +"%s shared the file %s with you" => "%s membagikan file %s dengan anda", +"Download" => "unduh", +"No preview available for" => "tidak ada pratinjau tersedia untuk", +"web services under your control" => "servis web dibawah kendali anda" +); diff --git a/apps/files_sharing/l10n/ja_JP.php b/apps/files_sharing/l10n/ja_JP.php index 058e4f2cd7e3d8e6adb08f155f6bed8b359aee7c..02142e2879a98de6b3836b94d8097f1c0e49439d 100644 --- a/apps/files_sharing/l10n/ja_JP.php +++ b/apps/files_sharing/l10n/ja_JP.php @@ -1,8 +1,8 @@ "パスワード", "Submit" => "é€ä¿¡", -"%s shared the folder %s with you" => "%s ã¯ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ %s ã‚’ã‚ãªãŸã¨å…±æœ‰", -"%s shared the file %s with you" => "%s ã¯ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’ã‚ãªãŸã¨å…±æœ‰", +"%s shared the folder %s with you" => "%s ã¯ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ %s ã‚’ã‚ãªãŸã¨å…±æœ‰ä¸­ã§ã™", +"%s shared the file %s with you" => "%s ã¯ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’ã‚ãªãŸã¨å…±æœ‰ä¸­ã§ã™", "Download" => "ダウンロード", "No preview available for" => "プレビューã¯ã‚ã‚Šã¾ã›ã‚“", "web services under your control" => "管ç†ä¸‹ã®ã‚¦ã‚§ãƒ–サービス" diff --git a/apps/files_sharing/l10n/ka_GE.php b/apps/files_sharing/l10n/ka_GE.php new file mode 100644 index 0000000000000000000000000000000000000000..ef42196d2cbf8cc38384b2b9100f433cb4808bec --- /dev/null +++ b/apps/files_sharing/l10n/ka_GE.php @@ -0,0 +1,6 @@ + "პáƒáƒ áƒáƒšáƒ˜", +"Submit" => "გáƒáƒ’ზáƒáƒ•áƒœáƒ", +"Download" => "ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ", +"web services under your control" => "web services under your control" +); diff --git a/apps/files_sharing/l10n/ko.php b/apps/files_sharing/l10n/ko.php new file mode 100644 index 0000000000000000000000000000000000000000..c172da854d8fb8df3e8c577a5bd61d3c0708493c --- /dev/null +++ b/apps/files_sharing/l10n/ko.php @@ -0,0 +1,9 @@ + "비밀번호", +"Submit" => "제출", +"%s shared the folder %s with you" => "%s ê³µìœ ëœ í´ë” %s 당신과 함께", +"%s shared the file %s with you" => "%s ê³µìœ ëœ íŒŒì¼ %s 당신과 함께", +"Download" => "다운로드", +"No preview available for" => "사용가능한 프리뷰가 없습니다.", +"web services under your control" => "ë‹¹ì‹ ì˜ í†µì œí•˜ì— ìžˆëŠ” 웹서비스" +); diff --git a/apps/files_sharing/l10n/nb_NO.php b/apps/files_sharing/l10n/nb_NO.php index 6102b03db744fc72abbc237b04626e11e40574ae..4934c3410674c405f4ea58e4dcc9c3113e0a183c 100644 --- a/apps/files_sharing/l10n/nb_NO.php +++ b/apps/files_sharing/l10n/nb_NO.php @@ -1,6 +1,9 @@ "Størrelse", -"Modified" => "Endret", -"Delete all" => "Slett alle", -"Delete" => "Slett" +"Password" => "Passord", +"Submit" => "Send inn", +"%s shared the folder %s with you" => "%s delte mappen %s med deg", +"%s shared the file %s with you" => "%s delte filen %s med deg", +"Download" => "Last ned", +"No preview available for" => "ForhÃ¥ndsvisning ikke tilgjengelig for", +"web services under your control" => "web tjenester du kontrollerer" ); diff --git a/apps/files_sharing/l10n/ru.php b/apps/files_sharing/l10n/ru.php index 398d9a8bbc3ff89ca8513ede8141b90f539569cc..7fd116e0aae8cca19012b1635167289966c18ca4 100644 --- a/apps/files_sharing/l10n/ru.php +++ b/apps/files_sharing/l10n/ru.php @@ -1,6 +1,8 @@ "Пароль", "Submit" => "Отправить", +"%s shared the folder %s with you" => "%s открыл доÑтуп к папке %s Ð´Ð»Ñ Ð’Ð°Ñ", +"%s shared the file %s with you" => "%s открыл доÑтуп к файлу %s Ð´Ð»Ñ Ð’Ð°Ñ", "Download" => "Скачать", "No preview available for" => "ПредпроÑмотр недоÑтупен длÑ", "web services under your control" => "веб-ÑервиÑÑ‹ под вашим управлением" diff --git a/apps/files_sharing/l10n/si_LK.php b/apps/files_sharing/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..1c69c608178673c4f6bd4ca5aae050b4df68f17d --- /dev/null +++ b/apps/files_sharing/l10n/si_LK.php @@ -0,0 +1,9 @@ + "මුරපදය", +"Submit" => "යොමු කරන්න", +"%s shared the folder %s with you" => "%s ඔබව %s à·†à·à¶½à·Šà¶©à¶»à¶ºà¶§ හවුල් කරගත්තේය", +"%s shared the file %s with you" => "%s ඔබ සමඟ %s ගොනුව බෙදà·à·„දà·à¶œà¶­à·Šà¶­à·šà¶º", +"Download" => "භà·à¶œà¶­ කරන්න", +"No preview available for" => "පූර්වදර්à·à¶±à¶ºà¶šà·Š නොමà·à¶­", +"web services under your control" => "ඔබට පà·à¶½à¶±à¶º කළ à·„à·à¶šà·’ වෙබ් සේවà·à·€à¶±à·Š" +); diff --git a/apps/files_sharing/l10n/sl.php b/apps/files_sharing/l10n/sl.php index 6d5556ea4b00620df0b28d5f065d62d4619efa0e..6bcbb0070b35239b8093856433c3c92c8cb2dc79 100644 --- a/apps/files_sharing/l10n/sl.php +++ b/apps/files_sharing/l10n/sl.php @@ -1,9 +1,9 @@ "Geslo", "Submit" => "PoÅ¡lji", -"%s shared the folder %s with you" => "%s je dal v souporabo z vami mapo %s", -"%s shared the file %s with you" => "%s je dal v souporabo z vami datoteko %s", -"Download" => "Prenesi", +"%s shared the folder %s with you" => "Oseba %s je doloÄila mapo %s za souporabo", +"%s shared the file %s with you" => "Oseba %s je doloÄila datoteko %s za souporabo", +"Download" => "Prejmi", "No preview available for" => "Predogled ni na voljo za", "web services under your control" => "spletne storitve pod vaÅ¡im nadzorom" ); diff --git a/apps/files_sharing/l10n/ta_LK.php b/apps/files_sharing/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..6cf6f6236b7ac0adf86cf4d62278b41441938a35 --- /dev/null +++ b/apps/files_sharing/l10n/ta_LK.php @@ -0,0 +1,9 @@ + "கடவà¯à®šà¯à®šà¯Šà®²à¯", +"Submit" => "சமரà¯à®ªà¯à®ªà®¿à®•à¯à®•à¯à®•", +"%s shared the folder %s with you" => "%s கோபà¯à®ªà¯à®±à¯ˆà®¯à®¾à®©à®¤à¯ %s உடன௠பகிரபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"%s shared the file %s with you" => "%s கோபà¯à®ªà®¾à®©à®¤à¯ %s உடன௠பகிரபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"Download" => "பதிவிறகà¯à®•à¯à®•", +"No preview available for" => "அதறà¯à®•à¯ à®®à¯à®©à¯à®©à¯‹à®•à¯à®•à¯ ஒனà¯à®±à¯à®®à¯ இலà¯à®²à¯ˆ", +"web services under your control" => "வலைய சேவைகள௠உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடà¯à®Ÿà¯à®ªà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®©à¯ கீழ௠உளà¯à®³à®¤à¯" +); diff --git a/apps/files_sharing/l10n/tr.php b/apps/files_sharing/l10n/tr.php new file mode 100644 index 0000000000000000000000000000000000000000..f2e6e5697d629b473966dda9fb59438f7cea5f0d --- /dev/null +++ b/apps/files_sharing/l10n/tr.php @@ -0,0 +1,9 @@ + "Åžifre", +"Submit" => "Gönder", +"%s shared the folder %s with you" => "%s sizinle paylaşılan %s klasör", +"%s shared the file %s with you" => "%s sizinle paylaşılan %s klasör", +"Download" => "Ä°ndir", +"No preview available for" => "Kullanılabilir önizleme yok", +"web services under your control" => "Bilgileriniz güvenli ve ÅŸifreli" +); diff --git a/apps/files_sharing/l10n/uk.php b/apps/files_sharing/l10n/uk.php index 43b86a28c175476002182c0a777ad60cbf349d6b..cdc103ad465be0e0c5dec0df6655bb5a5ca5ed9a 100644 --- a/apps/files_sharing/l10n/uk.php +++ b/apps/files_sharing/l10n/uk.php @@ -1,4 +1,9 @@ "Пароль", -"Download" => "Завантажити" +"Submit" => "Submit", +"%s shared the folder %s with you" => "%s опублікував каталог %s Ð´Ð»Ñ Ð’Ð°Ñ", +"%s shared the file %s with you" => "%s опублікував файл %s Ð´Ð»Ñ Ð’Ð°Ñ", +"Download" => "Завантажити", +"No preview available for" => "Попередній переглÑд недоÑтупний длÑ", +"web services under your control" => "підконтрольні Вам веб-ÑервіÑи" ); diff --git a/apps/files_sharing/l10n/vi.php b/apps/files_sharing/l10n/vi.php index d4faee06bf2fe9b808c3d2ffccb947c6db8cae3f..afeec5c648132a26106ecd7e9d805e378f7edfe0 100644 --- a/apps/files_sharing/l10n/vi.php +++ b/apps/files_sharing/l10n/vi.php @@ -1,6 +1,8 @@ "Mật khẩu", "Submit" => "Xác nhận", +"%s shared the folder %s with you" => "%s đã chia sẻ thÆ° mục %s vá»›i bạn", +"%s shared the file %s with you" => "%s đã chia sẻ tập tin %s vá»›i bạn", "Download" => "Tải vá»", "No preview available for" => "Không có xem trÆ°á»›c cho", "web services under your control" => "dịch vụ web dÆ°á»›i sá»± kiểm soát của bạn" diff --git a/apps/files_sharing/l10n/zh_TW.php b/apps/files_sharing/l10n/zh_TW.php index 27fa634c03df56213f3b56fa729a8821582da2fb..fa4f8075c6e4fb146454efe5ab987df7aaf5e53d 100644 --- a/apps/files_sharing/l10n/zh_TW.php +++ b/apps/files_sharing/l10n/zh_TW.php @@ -1,6 +1,8 @@ "密碼", "Submit" => "é€å‡º", +"%s shared the folder %s with you" => "%s 分享了資料夾 %s 給您", +"%s shared the file %s with you" => "%s 分享了檔案 %s 給您", "Download" => "下載", "No preview available for" => "無法é è¦½" ); diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php index 9a88050592638f3a23630b5ae3bb85c7a3db66dd..ac5852368319b2e848e021fb3be58c8b7406a220 100644 --- a/apps/files_sharing/lib/share/file.php +++ b/apps/files_sharing/lib/share/file.php @@ -97,10 +97,10 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { $file['permissions'] = $item['permissions']; if ($file['type'] == 'file') { // Remove Create permission if type is file - $file['permissions'] &= ~OCP\Share::PERMISSION_CREATE; + $file['permissions'] &= ~OCP\PERMISSION_CREATE; } // NOTE: Temporary fix to allow unsharing of files in root of Shared directory - $file['permissions'] |= OCP\Share::PERMISSION_DELETE; + $file['permissions'] |= OCP\PERMISSION_DELETE; $files[] = $file; } return $files; @@ -113,7 +113,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { } $size += $item['size']; } - return array(0 => array('id' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false, 'type' => 'dir', 'directory' => '', 'permissions' => OCP\Share::PERMISSION_READ)); + return array(0 => array('id' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false, 'type' => 'dir', 'directory' => '', 'permissions' => OCP\PERMISSION_READ)); } else if ($format == self::FORMAT_OPENDIR) { $files = array(); foreach ($items as $item) { diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/share/folder.php index e29e9b7e002fba685424a6b7d1a2f8a7f572314c..d414fcf10fcfeb6c1d22856055b5493aba09cd94 100644 --- a/apps/files_sharing/lib/share/folder.php +++ b/apps/files_sharing/lib/share/folder.php @@ -41,7 +41,7 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share $file['permissions'] = $folder['permissions']; if ($file['type'] == 'file') { // Remove Create permission if type is file - $file['permissions'] &= ~OCP\Share::PERMISSION_CREATE; + $file['permissions'] &= ~OCP\PERMISSION_CREATE; } } return $files; @@ -59,7 +59,7 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share $parents = array(); while ($file = $result->fetchRow()) { $children[] = array('source' => $file['id'], 'file_path' => $file['name']); - // If a child folder is found look inside it + // If a child folder is found look inside it if ($file['mimetype'] == 'httpd/unix-directory') { $parents[] = $file['id']; } diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 6dba76955a0af5b09f3b56c8749e7ca580d4a1fa..50db9166fe7d1702a04c330e343ef7af75c09255 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -108,6 +108,14 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { return $internalPath; } + public function getOwner($target) { + $shared_item = OCP\Share::getItemSharedWith('folder', $target, OC_Share_Backend_File::FORMAT_SHARED_STORAGE); + if ($shared_item) { + return $shared_item[0]["uid_owner"]; + } + return null; + } + public function mkdir($path) { if ($path == '' || $path == '/' || !$this->isCreatable(dirname($path))) { return false; @@ -193,7 +201,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '') { return false; } - return ($this->getPermissions($path) & OCP\Share::PERMISSION_CREATE); + return ($this->getPermissions($path) & OCP\PERMISSION_CREATE); } public function isReadable($path) { @@ -204,21 +212,21 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '') { return false; } - return ($this->getPermissions($path) & OCP\Share::PERMISSION_UPDATE); + return ($this->getPermissions($path) & OCP\PERMISSION_UPDATE); } public function isDeletable($path) { if ($path == '') { return true; } - return ($this->getPermissions($path) & OCP\Share::PERMISSION_DELETE); + return ($this->getPermissions($path) & OCP\PERMISSION_DELETE); } public function isSharable($path) { if ($path == '') { return false; } - return ($this->getPermissions($path) & OCP\Share::PERMISSION_SHARE); + return ($this->getPermissions($path) & OCP\PERMISSION_SHARE); } public function file_exists($path) { @@ -443,7 +451,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { * @param int $time * @return bool */ - public function hasUpdated($path,$time) { + public function hasUpdated($path, $time) { //TODO return false; } diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index e9f318efd9da9c0c213bcf10476de1ec15a6d48f..ac2473687384d792a1530a978f6e57783b007099 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -19,180 +19,260 @@ if (isset($_GET['token'])) { \OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN); } } + +function getID($path) { + // use the share table from the db to find the item source if the file was reshared because shared files + //are not stored in the file cache. + if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") { + $path_parts = explode('/', $path, 5); + $user = $path_parts[1]; + $intPath = '/'.$path_parts[4]; + $query = \OC_DB::prepare('SELECT `item_source` FROM `*PREFIX*share` WHERE `uid_owner` = ? AND `file_target` = ? '); + $result = $query->execute(array($user, $intPath)); + $row = $result->fetchRow(); + $fileSource = $row['item_source']; + } else { + $fileSource = OC_Filecache::getId($path, ''); + } + + return $fileSource; +} // Enf of backward compatibility -if (isset($_GET['file']) || isset($_GET['dir'])) { +/** + * lookup file path and owner by fetching it from the fscache + * needed becaus OC_FileCache::getPath($id, $user) already requires the user + * @param int $id + * @return array + */ +function getPathAndUser($id) { + $query = \OC_DB::prepare('SELECT `user`, `path` FROM `*PREFIX*fscache` WHERE `id` = ?'); + $result = $query->execute(array($id)); + $row = $result->fetchRow(); + return $row; +} + + +if (isset($_GET['t'])) { + $token = $_GET['t']; + $linkItem = OCP\Share::getShareByToken($token); + if (is_array($linkItem) && isset($linkItem['uid_owner'])) { + // seems to be a valid share + $type = $linkItem['item_type']; + $fileSource = $linkItem['file_source']; + $shareOwner = $linkItem['uid_owner']; + + if (OCP\User::userExists($shareOwner) && $fileSource != -1 ) { + + $pathAndUser = getPathAndUser($linkItem['file_source']); + $fileOwner = $pathAndUser['user']; + + //if this is a reshare check the file owner also exists + if ($shareOwner != $fileOwner && ! OCP\User::userExists($fileOwner)) { + OCP\Util::writeLog('share', 'original file owner '.$fileOwner.' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR); + header('HTTP/1.0 404 Not Found'); + $tmpl = new OCP\Template('', '404', 'guest'); + $tmpl->printPage(); + exit(); + } + + //mount filesystem of file owner + OC_Util::setupFS($fileOwner); + } + } +} else if (isset($_GET['file']) || isset($_GET['dir'])) { + OCP\Util::writeLog('share', 'Missing token, trying fallback file/dir links', \OCP\Util::DEBUG); if (isset($_GET['dir'])) { $type = 'folder'; $path = $_GET['dir']; + if(strlen($path)>1 and substr($path, -1, 1)==='/') { + $path=substr($path, 0, -1); + } $baseDir = $path; $dir = $baseDir; } else { $type = 'file'; $path = $_GET['file']; + if(strlen($path)>1 and substr($path, -1, 1)==='/') { + $path=substr($path, 0, -1); + } } - $uidOwner = substr($path, 1, strpos($path, '/', 1) - 1); - if (OCP\User::userExists($uidOwner)) { - OC_Util::setupFS($uidOwner); - $fileSource = OC_Filecache::getId($path, ''); - if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) { - // TODO Fix in the getItems - if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) { + $shareOwner = substr($path, 1, strpos($path, '/', 1) - 1); + + if (OCP\User::userExists($shareOwner)) { + OC_Util::setupFS($shareOwner); + $fileSource = getId($path); + if ($fileSource != -1 ) { + $linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $shareOwner); + $pathAndUser['path'] = $path; + $path_parts = explode('/', $path, 5); + $pathAndUser['user'] = $path_parts[1]; + $fileOwner = $path_parts[1]; + } + } +} + +if ($linkItem) { + if (!isset($linkItem['item_type'])) { + OCP\Util::writeLog('share', 'No item type set for share id: '.$linkItem['id'], \OCP\Util::ERROR); + header('HTTP/1.0 404 Not Found'); + $tmpl = new OCP\Template('', '404', 'guest'); + $tmpl->printPage(); + exit(); + } + if (isset($linkItem['share_with'])) { + // Authenticate share_with + $url = OCP\Util::linkToPublic('files').'&t='.$token; + if (isset($_GET['file'])) { + $url .= '&file='.urlencode($_GET['file']); + } else if (isset($_GET['dir'])) { + $url .= '&dir='.urlencode($_GET['dir']); + } + if (isset($_POST['password'])) { + $password = $_POST['password']; + if ($linkItem['share_type'] == OCP\Share::SHARE_TYPE_LINK) { + // Check Password + $forcePortable = (CRYPT_BLOWFISH != 1); + $hasher = new PasswordHash(8, $forcePortable); + if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $linkItem['share_with']))) { + $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); + $tmpl->assign('URL', $url); + $tmpl->assign('error', true); + $tmpl->printPage(); + exit(); + } else { + // Save item id in session for future requests + $_SESSION['public_link_authenticated'] = $linkItem['id']; + } + } else { + OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type'].' for share id '.$linkItem['id'], \OCP\Util::ERROR); header('HTTP/1.0 404 Not Found'); $tmpl = new OCP\Template('', '404', 'guest'); $tmpl->printPage(); exit(); } - if (isset($linkItem['share_with'])) { - // Check password - if (isset($_GET['file'])) { - $url = OCP\Util::linkToPublic('files').'&file='.$_GET['file']; - } else { - $url = OCP\Util::linkToPublic('files').'&dir='.$_GET['dir']; + // Check if item id is set in session + } else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) { + // Prompt for password + $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); + $tmpl->assign('URL', $url); + $tmpl->printPage(); + exit(); + } + } + $basePath = substr($pathAndUser['path'] , strlen('/'.$fileOwner.'/files')); + $path = $basePath; + if (isset($_GET['path'])) { + $path .= $_GET['path']; + } + if (!$path || !OC_Filesystem::isValidPath($path) || !OC_Filesystem::file_exists($path)) { + OCP\Util::writeLog('share', 'Invalid path '.$path.' for share id '.$linkItem['id'], \OCP\Util::ERROR); + header('HTTP/1.0 404 Not Found'); + $tmpl = new OCP\Template('', '404', 'guest'); + $tmpl->printPage(); + exit(); + } + $dir = dirname($path); + $file = basename($path); + // Download the file + if (isset($_GET['download'])) { + if (isset($_GET['path']) && $_GET['path'] !== '' ) { + if ( isset($_GET['files']) ) { // download selected files + OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); + } else if (isset($_GET['path']) && $_GET['path'] != '' ) { // download a file from a shared directory + OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); + } else { // download the whole shared directory + OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); + } + } else { // download a single shared file + OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); + } + + } else { + OCP\Util::addStyle('files_sharing', 'public'); + OCP\Util::addScript('files_sharing', 'public'); + OCP\Util::addScript('files', 'fileactions'); + $tmpl = new OCP\Template('files_sharing', 'public', 'base'); + $tmpl->assign('uidOwner', $shareOwner); + $tmpl->assign('dir', $dir); + $tmpl->assign('filename', $file); + $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path)); + if (isset($_GET['path'])) { + $getPath = $_GET['path']; + } else { + $getPath = ''; + } + // + $urlLinkIdentifiers= (isset($token)?'&t='.$token:'').(isset($_GET['dir'])?'&dir='.$_GET['dir']:'').(isset($_GET['file'])?'&file='.$_GET['file']:''); + // Show file list + if (OC_Filesystem::is_dir($path)) { + OCP\Util::addStyle('files', 'files'); + OCP\Util::addScript('files', 'files'); + OCP\Util::addScript('files', 'filelist'); + $files = array(); + $rootLength = strlen($basePath) + 1; + foreach (OC_Files::getDirectoryContent($path) as $i) { + $i['date'] = OCP\Util::formatDate($i['mtime']); + if ($i['type'] == 'file') { + $fileinfo = pathinfo($i['name']); + $i['basename'] = $fileinfo['filename']; + $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; } - if (isset($_POST['password'])) { - $password = $_POST['password']; - $storedHash = $linkItem['share_with']; - $forcePortable = (CRYPT_BLOWFISH != 1); - $hasher = new PasswordHash(8, $forcePortable); - if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) { - $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); - $tmpl->assign('URL', $url); - $tmpl->assign('error', true); - $tmpl->printPage(); - exit(); - } else { - // Save item id in session for future requests - $_SESSION['public_link_authenticated'] = $linkItem['id']; - } - // Check if item id is set in session - } else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) { - // Prompt for password - $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); - $tmpl->assign('URL', $url); - $tmpl->printPage(); - exit(); + $i['directory'] = '/'.substr($i['directory'], $rootLength); + if ($i['directory'] == '/') { + $i['directory'] = ''; } + $i['permissions'] = OCP\PERMISSION_READ; + $files[] = $i; } - $path = $linkItem['path']; - if (isset($_GET['path'])) { - $path .= $_GET['path']; - $dir .= $_GET['path']; - if (!OC_Filesystem::file_exists($path)) { - header('HTTP/1.0 404 Not Found'); - $tmpl = new OCP\Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); + // Make breadcrumb + $breadcrumb = array(); + $pathtohere = ''; + + //add base breadcrumb + $breadcrumb[] = array('dir' => '/', 'name' => basename($basePath)); + + //add subdir breadcrumbs + foreach (explode('/', urldecode($_GET['path'])) as $i) { + if ($i != '') { + $pathtohere .= '/'.$i; + $breadcrumb[] = array('dir' => $pathtohere, 'name' => $i); } } - // Download the file - if (isset($_GET['download'])) { - if (isset($_GET['dir'])) { - if ( isset($_GET['files']) ) { // download selected files - OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); - } else if (isset($_GET['path']) && $_GET['path'] != '' ) { // download a file from a shared directory - OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); - } else { // download the whole shared directory - OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); - } - } else { // download a single shared file - OC_Files::get("", $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); - } - + + $list = new OCP\Template('files', 'part.list', ''); + $list->assign('files', $files, false); + $list->assign('publicListView', true); + $list->assign('baseURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&path=', false); + $list->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path=', false); + $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' ); + $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); + $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&path=', false); + $folder = new OCP\Template('files', 'index', ''); + $folder->assign('fileList', $list->fetchPage(), false); + $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); + $folder->assign('isCreatable', false); + $folder->assign('permissions', 0); + $folder->assign('files', $files); + $folder->assign('uploadMaxFilesize', 0); + $folder->assign('uploadMaxHumanFilesize', 0); + $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); + $tmpl->assign('folder', $folder->fetchPage(), false); + $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); + } else { + // Show file preview if viewer is available + if ($type == 'file') { + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download'); } else { - OCP\Util::addStyle('files_sharing', 'public'); - OCP\Util::addScript('files_sharing', 'public'); - OCP\Util::addScript('files', 'fileactions'); - $tmpl = new OCP\Template('files_sharing', 'public', 'base'); - $tmpl->assign('owner', $uidOwner); - // Show file list - if (OC_Filesystem::is_dir($path)) { - OCP\Util::addStyle('files', 'files'); - OCP\Util::addScript('files', 'files'); - OCP\Util::addScript('files', 'filelist'); - $files = array(); - $rootLength = strlen($baseDir) + 1; - foreach (OC_Files::getDirectoryContent($path) as $i) { - $i['date'] = OCP\Util::formatDate($i['mtime']); - if ($i['type'] == 'file') { - $fileinfo = pathinfo($i['name']); - $i['basename'] = $fileinfo['filename']; - $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; - } - $i['directory'] = '/'.substr('/'.$uidOwner.'/files'.$i['directory'], $rootLength); - if ($i['directory'] == '/') { - $i['directory'] = ''; - } - $i['permissions'] = OCP\Share::PERMISSION_READ; - $files[] = $i; - } - // Make breadcrumb - $breadcrumb = array(); - $pathtohere = ''; - $count = 1; - foreach (explode('/', $dir) as $i) { - if ($i != '') { - if ($i != $baseDir) { - $pathtohere .= '/'.$i; - } - if ( strlen($pathtohere) < strlen($_GET['dir'])) { - continue; - } - $breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i); - } - } - $list = new OCP\Template('files', 'part.list', ''); - $list->assign('files', $files, false); - $list->assign('publicListView', true); - $list->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.$_GET['dir'].'&path=', false); - $list->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.$_GET['dir'].'&path=', false); - $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' ); - $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); - $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.$_GET['dir'].'&path=', false); - $folder = new OCP\Template('files', 'index', ''); - $folder->assign('fileList', $list->fetchPage(), false); - $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); - $folder->assign('dir', basename($dir)); - $folder->assign('isCreatable', false); - $folder->assign('permissions', 0); - $folder->assign('files', $files); - $folder->assign('uploadMaxFilesize', 0); - $folder->assign('uploadMaxHumanFilesize', 0); - $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - $tmpl->assign('folder', $folder->fetchPage(), false); - $tmpl->assign('uidOwner', $uidOwner); - $tmpl->assign('dir', basename($dir)); - $tmpl->assign('filename', basename($path)); - $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path)); - $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - if (isset($_GET['path'])) { - $getPath = $_GET['path']; - } else { - $getPath = ''; - } - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.$_GET['dir'].'&path='.$getPath); - } else { - // Show file preview if viewer is available - $tmpl->assign('uidOwner', $uidOwner); - $tmpl->assign('dir', dirname($path)); - $tmpl->assign('filename', basename($path)); - $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path)); - if ($type == 'file') { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&file='.$_GET['file'].'&download'); - } else { - if (isset($_GET['path'])) { - $getPath = $_GET['path']; - } else { - $getPath = ''; - } - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.$_GET['dir'].'&path='.$getPath); - } - } - $tmpl->printPage(); + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); } - exit(); } + $tmpl->printPage(); } + exit(); +} else { + OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG); } header('HTTP/1.0 404 Not Found'); $tmpl = new OCP\Template('', '404', 'guest'); diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index ef81e296d822f9a3a3770d54293e315ce9350cc2..647e1e08a31e4e511f21daa15d915bd34b793b51 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -1,3 +1,11 @@ + @@ -19,7 +27,7 @@ - +
            diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php index 746f89a81391dba71f0bd44020bbd8cae4bf23ba..599d302e6e4b5a820457cd8798cd408d3c44a3ac 100644 --- a/apps/files_versions/appinfo/app.php +++ b/apps/files_versions/appinfo/app.php @@ -5,7 +5,7 @@ OC::$CLASSPATH['OCA_Versions\Storage'] = 'apps/files_versions/lib/versions.php'; OC::$CLASSPATH['OCA_Versions\Hooks'] = 'apps/files_versions/lib/hooks.php'; OCP\App::registerAdmin('files_versions', 'settings'); -OCP\App::registerPersonal('files_versions','settings-personal'); +OCP\App::registerPersonal('files_versions', 'settings-personal'); OCP\Util::addscript('files_versions', 'versions'); diff --git a/apps/files_versions/history.php b/apps/files_versions/history.php index 0ebb34f45e49cfebb6ca3cff2a943c9d0758fec6..deff735cedca9c994016119f70c8b23f1b757cc4 100644 --- a/apps/files_versions/history.php +++ b/apps/files_versions/history.php @@ -22,7 +22,7 @@ */ OCP\User::checkLoggedIn( ); -OCP\Util::addStyle('files_versions','versions'); +OCP\Util::addStyle('files_versions', 'versions'); $tmpl = new OCP\Template( 'files_versions', 'history', 'user' ); if ( isset( $_GET['path'] ) ) { diff --git a/apps/files_versions/js/versions.js b/apps/files_versions/js/versions.js index 07c5655560e0dbf28991b025f49c2574490ca168..b9c54689813be409332a467055674047cf8dd0e5 100644 --- a/apps/files_versions/js/versions.js +++ b/apps/files_versions/js/versions.js @@ -68,12 +68,11 @@ function createVersionsDropdown(filename, files) { data: { source: files }, async: false, success: function( versions ) { - + if (versions) { $.each( versions, function(index, row ) { addVersion( row ); }); - $('#found_versions').chosen(); } else { $('#found_versions').hide(); $('#makelink').hide(); @@ -128,7 +127,7 @@ function createVersionsDropdown(filename, files) { version.appendTo('#found_versions'); } - + $('tr').filterAttr('data-file',filename).addClass('mouseOver'); $('#dropdown').show('blind'); @@ -144,6 +143,6 @@ $(this).click( }); } - + } ); diff --git a/apps/files_versions/l10n/de_DE.php b/apps/files_versions/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..a568112d02db19d2f1cc1561ce743b0fc22dd3e9 --- /dev/null +++ b/apps/files_versions/l10n/de_DE.php @@ -0,0 +1,8 @@ + "Alle Versionen löschen", +"History" => "Historie", +"Versions" => "Versionen", +"This will delete all existing backup versions of your files" => "Dies löscht alle vorhandenen Sicherungsversionen Ihrer Dateien.", +"Files Versioning" => "Dateiversionierung", +"Enable" => "Aktivieren" +); diff --git a/apps/files_versions/l10n/eo.php b/apps/files_versions/l10n/eo.php index d0f89c576d458056ef965838114dd19b7046c22a..0c3835373ef19f659619a00cd5a015d2283b74c7 100644 --- a/apps/files_versions/l10n/eo.php +++ b/apps/files_versions/l10n/eo.php @@ -1,5 +1,8 @@ "Eksvalidigi ĉiujn eldonojn", +"History" => "Historio", "Versions" => "Eldonoj", -"This will delete all existing backup versions of your files" => "Ĉi tio forigos ĉiujn estantajn sekurkopiajn eldonojn de viaj dosieroj" +"This will delete all existing backup versions of your files" => "Ĉi tio forigos ĉiujn estantajn sekurkopiajn eldonojn de viaj dosieroj", +"Files Versioning" => "Dosiereldonigo", +"Enable" => "Kapabligi" ); diff --git a/apps/files_versions/l10n/et_EE.php b/apps/files_versions/l10n/et_EE.php index f1ebd082ad5ba5b11ed08243e9dc224308e71306..f1296f23fcd3a3cea22cf63504c2b6b3c4bc08fa 100644 --- a/apps/files_versions/l10n/et_EE.php +++ b/apps/files_versions/l10n/et_EE.php @@ -1,5 +1,8 @@ "Kõikide versioonide aegumine", +"History" => "Ajalugu", "Versions" => "Versioonid", -"This will delete all existing backup versions of your files" => "See kustutab kõik sinu failidest tehtud varuversiooni" +"This will delete all existing backup versions of your files" => "See kustutab kõik sinu failidest tehtud varuversiooni", +"Files Versioning" => "Failide versioonihaldus", +"Enable" => "Luba" ); diff --git a/apps/files_versions/l10n/gl.php b/apps/files_versions/l10n/gl.php index c0d5937e1b1e0055ce5ef4896529e439dca592a9..f10c1e162639438a4026d11eb4c96048640ec348 100644 --- a/apps/files_versions/l10n/gl.php +++ b/apps/files_versions/l10n/gl.php @@ -1,7 +1,8 @@ "Caducar todas as versións", +"Expire all versions" => "Caducan todas as versións", +"History" => "Historial", "Versions" => "Versións", -"This will delete all existing backup versions of your files" => "Esto eliminará todas as copias de respaldo existentes dos seus ficheiros", -"Files Versioning" => "Versionado de ficheiros", -"Enable" => "Habilitar" +"This will delete all existing backup versions of your files" => "Isto eliminará todas as copias de seguranza que haxa dos seus ficheiros", +"Files Versioning" => "Sistema de versión de ficheiros", +"Enable" => "Activar" ); diff --git a/apps/files_versions/l10n/he.php b/apps/files_versions/l10n/he.php index 09a013f45a8c77c13c94772e83beeea8aee6c0f7..061e88b0dbf54116f2f3e84136e594cbfaeeb21e 100644 --- a/apps/files_versions/l10n/he.php +++ b/apps/files_versions/l10n/he.php @@ -1,5 +1,8 @@ "הפגת תוקף כל הגרס×ות", +"History" => "היסטוריה", "Versions" => "גרס×ות", -"This will delete all existing backup versions of your files" => "פעולה זו תמחק ×ת כל גיבויי הגרס×ות ×”×§×™×™×ž×™× ×©×œ ×”×§×‘×¦×™× ×©×œ×š" +"This will delete all existing backup versions of your files" => "פעולה זו תמחק ×ת כל גיבויי הגרס×ות ×”×§×™×™×ž×™× ×©×œ ×”×§×‘×¦×™× ×©×œ×š", +"Files Versioning" => "שמירת הבדלי גרס×ות של קבצי×", +"Enable" => "הפעלה" ); diff --git a/apps/files_versions/l10n/id.php b/apps/files_versions/l10n/id.php new file mode 100644 index 0000000000000000000000000000000000000000..d8ac66c9763d9a69591d68b86bb7e229ad76cfc6 --- /dev/null +++ b/apps/files_versions/l10n/id.php @@ -0,0 +1,8 @@ + "kadaluarsakan semua versi", +"History" => "riwayat", +"Versions" => "versi", +"This will delete all existing backup versions of your files" => "ini akan menghapus semua versi backup yang ada dari file anda", +"Files Versioning" => "pembuatan versi file", +"Enable" => "aktifkan" +); diff --git a/apps/files_versions/l10n/ko.php b/apps/files_versions/l10n/ko.php new file mode 100644 index 0000000000000000000000000000000000000000..9c14de0962a3adc0367f2095ff6857df2f5d2b53 --- /dev/null +++ b/apps/files_versions/l10n/ko.php @@ -0,0 +1,8 @@ + "모든 ë²„ì „ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤.", +"History" => "역사", +"Versions" => "버전", +"This will delete all existing backup versions of your files" => "당신 파ì¼ì˜ 존재하는 모든 백업 ë²„ì „ì´ ì‚­ì œë ê²ƒìž…니다.", +"Files Versioning" => "íŒŒì¼ ë²„ì „ê´€ë¦¬ì¤‘", +"Enable" => "가능" +); diff --git a/apps/files_versions/l10n/lt_LT.php b/apps/files_versions/l10n/lt_LT.php index b3810d06ec75331952085743e0accfc4519bbe36..3250ddc7c3c51ca11cd11cb4bee29d851e694a58 100644 --- a/apps/files_versions/l10n/lt_LT.php +++ b/apps/files_versions/l10n/lt_LT.php @@ -1,3 +1,8 @@ "Panaikinti visų versijų galiojimÄ…" +"Expire all versions" => "Panaikinti visų versijų galiojimÄ…", +"History" => "Istorija", +"Versions" => "Versijos", +"This will delete all existing backup versions of your files" => "Tai iÅ¡trins visas esamas failo versijas", +"Files Versioning" => "Failų versijos", +"Enable" => "Ä®jungti" ); diff --git a/apps/files_versions/l10n/nb_NO.php b/apps/files_versions/l10n/nb_NO.php index 55cc12113d70d1d0fc0211c5c2c4b9c92bf866c7..b441008db017f50cc106cdd0c997152a7a4fe1c2 100644 --- a/apps/files_versions/l10n/nb_NO.php +++ b/apps/files_versions/l10n/nb_NO.php @@ -1,3 +1,7 @@ "SlÃ¥ pÃ¥ versjonering" +"History" => "Historie", +"Versions" => "Versjoner", +"This will delete all existing backup versions of your files" => "Dette vil slette alle tidligere versjoner av alle filene dine", +"Files Versioning" => "Fil versjonering", +"Enable" => "Aktiver" ); diff --git a/apps/files_versions/l10n/nl.php b/apps/files_versions/l10n/nl.php index 1cf875048d725811f38079b0fc9e817a88092a03..f9b5507621d1bd4ee44a0dba21af78e6117d6af5 100644 --- a/apps/files_versions/l10n/nl.php +++ b/apps/files_versions/l10n/nl.php @@ -4,5 +4,5 @@ "Versions" => "Versies", "This will delete all existing backup versions of your files" => "Dit zal alle bestaande backup versies van uw bestanden verwijderen", "Files Versioning" => "Bestand versies", -"Enable" => "Zet aan" +"Enable" => "Activeer" ); diff --git a/apps/files_versions/l10n/ru.php b/apps/files_versions/l10n/ru.php index f91cae90a146f2b4438a62f2767406b1eedd46b0..d698e90b8b86747138eef47239ed26e1517d8ff5 100644 --- a/apps/files_versions/l10n/ru.php +++ b/apps/files_versions/l10n/ru.php @@ -1,5 +1,8 @@ "ПроÑрочить вÑе верÑии", +"History" => "ИÑториÑ", "Versions" => "ВерÑии", -"This will delete all existing backup versions of your files" => "ОчиÑтить ÑпиÑок верÑий ваших файлов" +"This will delete all existing backup versions of your files" => "ОчиÑтить ÑпиÑок верÑий ваших файлов", +"Files Versioning" => "ВерÑии файлов", +"Enable" => "Включить" ); diff --git a/apps/files_versions/l10n/ru_RU.php b/apps/files_versions/l10n/ru_RU.php index a14258eea87dbe3a763c6f84d1fb5abdd1f0360c..557c2f8e6d19bae1e6662ff176bd0189df9dfafd 100644 --- a/apps/files_versions/l10n/ru_RU.php +++ b/apps/files_versions/l10n/ru_RU.php @@ -2,7 +2,7 @@ "Expire all versions" => "Срок дейÑÑ‚Ð²Ð¸Ñ Ð²Ñех верÑий иÑтекает", "History" => "ИÑториÑ", "Versions" => "ВерÑии", -"This will delete all existing backup versions of your files" => "Это приведет к удалению вÑех ÑущеÑтвующих верÑий резервной копии ваших файлов", +"This will delete all existing backup versions of your files" => "Это приведет к удалению вÑех ÑущеÑтвующих верÑий резервной копии Ваших файлов", "Files Versioning" => "Файлы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÑ€ÑиÑми", "Enable" => "Включить" ); diff --git a/apps/files_versions/l10n/si_LK.php b/apps/files_versions/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..dbddf6dc2e9db674d26697a05d24b04e9859cf1e --- /dev/null +++ b/apps/files_versions/l10n/si_LK.php @@ -0,0 +1,8 @@ + "සියලු අනුවà·à¶¯ අවලංගු කරන්න", +"History" => "ඉතිහà·à·ƒà¶º", +"Versions" => "අනුවà·à¶¯", +"This will delete all existing backup versions of your files" => "මෙයින් ඔබගේ ගොනුවේ රක්à·à·’ත කරනු ලà·à¶¶à·” අනුවà·à¶¯ සියල්ල මක෠දමනු ලà·à¶¶à·š", +"Files Versioning" => "ගොනු අනුවà·à¶¯à¶ºà¶±à·Š", +"Enable" => "සක්â€à¶»à·’ය කරන්න" +); diff --git a/apps/files_versions/l10n/sl.php b/apps/files_versions/l10n/sl.php index 056a17decfee53e2393716d9525d11b2a31d316a..22b890a042dfdda891711e0c104da3088032e5b6 100644 --- a/apps/files_versions/l10n/sl.php +++ b/apps/files_versions/l10n/sl.php @@ -2,7 +2,7 @@ "Expire all versions" => "Zastaraj vse razliÄice", "History" => "Zgodovina", "Versions" => "RazliÄice", -"This will delete all existing backup versions of your files" => "To bo izbrisalo vse obstojeÄe razliÄice varnostnih kopij vaÅ¡ih datotek", +"This will delete all existing backup versions of your files" => "S tem bodo izbrisane vse obstojeÄe razliÄice varnostnih kopij vaÅ¡ih datotek", "Files Versioning" => "Sledenje razliÄicam", "Enable" => "OmogoÄi" ); diff --git a/apps/files_versions/l10n/ta_LK.php b/apps/files_versions/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..f1215b3ecc1097ee8b9c4396127f7eaa51bc501d --- /dev/null +++ b/apps/files_versions/l10n/ta_LK.php @@ -0,0 +1,8 @@ + "எலà¯à®²à®¾ பதிபà¯à®ªà¯à®•à®³à¯à®®à¯ காலாவதியாகிவிடà¯à®Ÿà®¤à¯", +"History" => "வரலாறà¯", +"Versions" => "பதிபà¯à®ªà¯à®•à®³à¯", +"This will delete all existing backup versions of your files" => "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯à®•à¯à®•à®³à®¿à®²à¯ à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³ ஆதாரநகலà¯à®•à®³à®¿à®©à¯ பதிபà¯à®ªà¯à®•à¯à®•à®³à¯ˆ இவை அழிதà¯à®¤à¯à®µà®¿à®Ÿà¯à®®à¯", +"Files Versioning" => "கோபà¯à®ªà¯ பதிபà¯à®ªà¯à®•à®³à¯", +"Enable" => "இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" +); diff --git a/apps/files_versions/l10n/uk.php b/apps/files_versions/l10n/uk.php new file mode 100644 index 0000000000000000000000000000000000000000..7532f755c881699e84ff11f275965e69df458d10 --- /dev/null +++ b/apps/files_versions/l10n/uk.php @@ -0,0 +1,8 @@ + "Термін дії вÑÑ–Ñ… верÑій", +"History" => "ІÑторіÑ", +"Versions" => "ВерÑÑ–Ñ—", +"This will delete all existing backup versions of your files" => "Це призведе до Ð·Ð½Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð²ÑÑ–Ñ… Ñ–Ñнуючих збережених верÑій Ваших файлів", +"Files Versioning" => "ВерÑÑ–Ñ— файлів", +"Enable" => "Включити" +); diff --git a/apps/files_versions/l10n/vi.php b/apps/files_versions/l10n/vi.php index 992c0751d0aa79ba506ded52cdb286b30e9e98da..260c3b6b39c7575432a83f97ad4c51c9561fc8bc 100644 --- a/apps/files_versions/l10n/vi.php +++ b/apps/files_versions/l10n/vi.php @@ -1,5 +1,8 @@ "Hết hạn tất cả các phiên bản", +"History" => "Lịch sá»­", "Versions" => "Phiên bản", -"This will delete all existing backup versions of your files" => "Äiá»u này sẽ xóa tất cả các phiên bản sao lÆ°u hiện có " +"This will delete all existing backup versions of your files" => "Khi bạn thá»±c hiện thao tác này sẽ xóa tất cả các phiên bản sao lÆ°u hiện có ", +"Files Versioning" => "Phiên bản tập tin", +"Enable" => "Bật " ); diff --git a/apps/files_versions/l10n/zh_TW.php b/apps/files_versions/l10n/zh_TW.php new file mode 100644 index 0000000000000000000000000000000000000000..a21fdc85f8d969ae80c40dc923a2d44a7228e4f6 --- /dev/null +++ b/apps/files_versions/l10n/zh_TW.php @@ -0,0 +1,7 @@ + "所有逾期的版本", +"History" => "æ­·å²", +"Versions" => "版本", +"Files Versioning" => "檔案版本化中...", +"Enable" => "啟用" +); diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index 500ce0ef06474ceb0173e8bc75b08c1e0dda320d..e897a81f7af4588de258115ca8f17003b46bdef5 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -64,7 +64,7 @@ class Hooks { $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$params['newpath'].'.v'; if(Storage::isversioned($rel_oldpath)) { $info=pathinfo($abs_newpath); - if(!file_exists($info['dirname'])) mkdir($info['dirname'],0750,true); + if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true); $versions = Storage::getVersions($rel_oldpath); foreach ($versions as $v) { rename($abs_oldpath.$v['version'], $abs_newpath.$v['version']); diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index b68fa28a1ff3e9e01577129cd2cae9ed39f8b3a1..0ccaaf1095dd1079f8c991e089f94d14638bc601 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -58,7 +58,7 @@ class Storage { public function store($filename) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { list($uid, $filename) = self::getUidAndFilename($filename); - $files_view = new \OC_FilesystemView('/'.$uid.'/files'); + $files_view = new \OC_FilesystemView('/'.$uid .'/files'); $users_view = new \OC_FilesystemView('/'.$uid); //check if source file already exist as version to avoid recursions. @@ -73,7 +73,7 @@ class Storage { } // check filetype blacklist - $blacklist=explode(' ',\OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST)); + $blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST)); foreach($blacklist as $bl) { $parts=explode('.', $filename); $ext=end($parts); @@ -95,10 +95,11 @@ class Storage { // check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval) if ($uid == \OCP\User::getUser()) { $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - $versionsFolderName=\OCP\Config::getSystemValue('datadirectory'). $versions_fileview->getAbsolutePath(''); - $matches=glob($versionsFolderName.'/'.$filename.'.v*'); + $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); + $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); + $matches=glob($versionsName.'.v*'); sort($matches); - $parts=explode('.v',end($matches)); + $parts=explode('.v', end($matches)); if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) { return false; } @@ -106,9 +107,9 @@ class Storage { // create all parent folders - $info=pathinfo($filename); + $info=pathinfo($filename); if(!file_exists($versionsFolderName.'/'.$info['dirname'])) { - mkdir($versionsFolderName.'/'.$info['dirname'],0750,true); + mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true); } // store a new version of a file @@ -123,7 +124,7 @@ class Storage { /** * rollback to an old version of a file. */ - public static function rollback($filename,$revision) { + public static function rollback($filename, $revision) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { list($uid, $filename) = self::getUidAndFilename($filename); @@ -152,10 +153,10 @@ class Storage { list($uid, $filename) = self::getUidAndFilename($filename); $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - $versionsFolderName=\OCP\Config::getSystemValue('datadirectory'). $versions_fileview->getAbsolutePath(''); + $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); // check for old versions - $matches=glob($versionsFolderName.$filename.'.v*'); + $matches=glob($versionsName.'.v*'); if(count($matches)>0) { return true; }else{ @@ -175,22 +176,20 @@ class Storage { * @returns array */ public static function getVersions( $filename, $count = 0 ) { - if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { list($uid, $filename) = self::getUidAndFilename($filename); $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - $versionsFolderName = \OCP\Config::getSystemValue('datadirectory'). $versions_fileview->getAbsolutePath(''); + $versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); $versions = array(); - // fetch for old versions - $matches = glob( $versionsFolderName.'/'.$filename.'.v*' ); + $matches = glob( $versionsName.'.v*' ); sort( $matches ); $i = 0; - $files_view = new \OC_FilesystemView('/'.$uid.'/files'); + $files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files'); $local_file = $files_view->getLocalFile($filename); foreach( $matches as $ma ) { @@ -247,10 +246,10 @@ class Storage { list($uid, $filename) = self::getUidAndFilename($filename); $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - $versionsFolderName=\OCP\Config::getSystemValue('datadirectory'). $versions_fileview->getAbsolutePath(''); + $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); // check for old versions - $matches = glob( $versionsFolderName.'/'.$filename.'.v*' ); + $matches = glob( $versionsName.'.v*' ); if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) { @@ -261,7 +260,7 @@ class Storage { foreach( $deleteItems as $de ) { - unlink( $versionsFolderName.'/'.$filename.'.v'.$de ); + unlink( $versionsName.'.v'.$de ); } } diff --git a/apps/files_versions/settings-personal.php b/apps/files_versions/settings-personal.php index 4fb866bd999462979b7c1be5c2e40f65ebe13982..6555bc99c3e193250255c47ab38d34688e89b399 100644 --- a/apps/files_versions/settings-personal.php +++ b/apps/files_versions/settings-personal.php @@ -2,6 +2,6 @@ $tmpl = new OCP\Template( 'files_versions', 'settings-personal'); -OCP\Util::addscript('files_versions','settings-personal'); +OCP\Util::addscript('files_versions', 'settings-personal'); return $tmpl->fetchPage(); diff --git a/apps/user_ldap/appinfo/database.xml b/apps/user_ldap/appinfo/database.xml index a785bbf4221c0b8c745ea56a2c4e2e8c7b3969cf..812e450dde7a444acd7eb7592743ea64604cc09a 100644 --- a/apps/user_ldap/appinfo/database.xml +++ b/apps/user_ldap/appinfo/database.xml @@ -130,7 +130,7 @@ - ldap_group_members + ldap_group_members_index true owncloudname diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index f23285a0dc63a744d5ae9776c9c435b66948ed88..9b54ba18b6ce7a7e7a637397e111f3035abb047d 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -34,22 +34,49 @@ $groupBE = new \OCA\user_ldap\GROUP_LDAP(); $groupBE->setConnector($connector); foreach($objects as $object) { - $fetchDNSql = 'SELECT `ldap_dn`, `owncloud_name` FROM `*PREFIX*ldap_'.$object.'_mapping` WHERE `directory_uuid` = ""'; - $updateSql = 'UPDATE `*PREFIX*ldap_'.$object.'_mapping` SET `ldap_DN` = ?, `directory_uuid` = ? WHERE `ldap_dn` = ?'; + $fetchDNSql = ' + SELECT `ldap_dn`, `owncloud_name`, `directory_uuid` + FROM `*PREFIX*ldap_'.$object.'_mapping`'; + $updateSql = ' + UPDATE `*PREFIX*ldap_'.$object.'_mapping` + SET `ldap_DN` = ?, `directory_uuid` = ? + WHERE `ldap_dn` = ?'; $query = OCP\DB::prepare($fetchDNSql); $res = $query->execute(); $DNs = $res->fetchAll(); $updateQuery = OCP\DB::prepare($updateSql); foreach($DNs as $dn) { - $newDN = mb_strtolower($dn['ldap_dn'], 'UTF-8'); - if($object == 'user') { + $newDN = escapeDN(mb_strtolower($dn['ldap_dn'], 'UTF-8')); + if(!empty($dn['directory_uuid'])) { + $uuid = $dn['directory_uuid']; + } elseif($object == 'user') { $uuid = $userBE->getUUID($newDN); //fix home folder to avoid new ones depending on the configuration $userBE->getHome($dn['owncloud_name']); } else { $uuid = $groupBE->getUUID($newDN); } - $updateQuery->execute(array($newDN, $uuid, $dn['ldap_dn'])); + try { + $updateQuery->execute(array($newDN, $uuid, $dn['ldap_dn'])); + } catch(Exception $e) { + \OCP\Util::writeLog('user_ldap', 'Could not update '.$object.' '.$dn['ldap_dn'].' in the mappings table. ', \OCP\Util::WARN); + } + + } +} + +function escapeDN($dn) { + $aDN = ldap_explode_dn($dn, false); + unset($aDN['count']); + foreach($aDN as $key => $part) { + $value = substr($part, strpos($part, '=')+1); + $escapedValue = strtr($value, Array(','=>'\2c', '='=>'\3d', '+'=>'\2b', + '<'=>'\3c', '>'=>'\3e', ';'=>'\3b', '\\'=>'\5c', + '"'=>'\22', '#'=>'\23')); + $part = str_replace($part, $value, $escapedValue); } + $dn = implode(',', $aDN); + + return $dn; } diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version index 73082a89b3568d934f8e07cbc937cb5a575855cb..b1a5f4781d198d55b7847e2cc091a878567887f2 100644 --- a/apps/user_ldap/appinfo/version +++ b/apps/user_ldap/appinfo/version @@ -1 +1 @@ -0.3.0.0 \ No newline at end of file +0.3.0.1 \ No newline at end of file diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php index bd9f7e0c552b567732264488a28e456078294446..63437310088298b2801f9f1e6bfb78a0f1bb1a88 100644 --- a/apps/user_ldap/group_ldap.php +++ b/apps/user_ldap/group_ldap.php @@ -28,10 +28,11 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { public function setConnector(lib\Connection &$connection) { parent::setConnector($connection); - if(empty($this->connection->ldapGroupFilter) || empty($this->connection->ldapGroupMemberAssocAttr)) { - $this->enabled = false; + $filter = $this->connection->ldapGroupFilter; + $gassoc = $this->connection->ldapGroupMemberAssocAttr; + if(!empty($filter) && !empty($gassoc)) { + $this->enabled = true; } - $this->enabled = true; } /** @@ -96,12 +97,13 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { if(!$this->enabled) { return array(); } - if($this->connection->isCached('getUserGroups'.$uid)) { - return $this->connection->getFromCache('getUserGroups'.$uid); + $cacheKey = 'getUserGroups'.$uid; + if($this->connection->isCached($cacheKey)) { + return $this->connection->getFromCache($cacheKey); } $userDN = $this->username2dn($uid); if(!$userDN) { - $this->connection->writeToCache('getUserGroups'.$uid, array()); + $this->connection->writeToCache($cacheKey, array()); return array(); } @@ -122,9 +124,9 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { $this->connection->ldapGroupFilter, $this->connection->ldapGroupMemberAssocAttr.'='.$uid )); - $groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName,'dn')); + $groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName, 'dn')); $groups = array_unique($this->ownCloudGroupNames($groups), SORT_LOCALE_STRING); - $this->connection->writeToCache('getUserGroups'.$uid, $groups); + $this->connection->writeToCache($cacheKey, $groups); return $groups; } @@ -137,61 +139,72 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { if(!$this->enabled) { return array(); } - $this->groupSearch = $search; - if($this->connection->isCached('usersInGroup'.$gid)) { - $groupUsers = $this->connection->getFromCache('usersInGroup'.$gid); - if(!empty($this->groupSearch)) { - $groupUsers = array_filter($groupUsers, array($this, 'groupMatchesFilter')); - } - if($limit == -1) { - $limit = null; - } - return array_slice($groupUsers, $offset, $limit); + $cachekey = 'usersInGroup-'.$gid.'-'.$search.'-'.$limit.'-'.$offset; + // check for cache of the exact query + $groupUsers = $this->connection->getFromCache($cachekey); + if(!is_null($groupUsers)) { + return $groupUsers; + } + + // check for cache of the query without limit and offset + $groupUsers = $this->connection->getFromCache('usersInGroup-'.$gid.'-'.$search); + if(!is_null($groupUsers)) { + $groupUsers = array_slice($groupUsers, $offset, $limit); + $this->connection->writeToCache($cachekey, $groupUsers); + return $groupUsers; } + if($limit == -1) { + $limit = null; + } $groupDN = $this->groupname2dn($gid); if(!$groupDN) { - $this->connection->writeToCache('usersInGroup'.$gid, array()); + // group couldn't be found, return empty resultset + $this->connection->writeToCache($cachekey, array()); return array(); } $members = $this->readAttribute($groupDN, $this->connection->ldapGroupMemberAssocAttr); if(!$members) { - $this->connection->writeToCache('usersInGroup'.$gid, array()); + //in case users could not be retrieved, return empty resultset + $this->connection->writeToCache($cachekey, array()); return array(); } - $result = array(); + $search = empty($search) ? '*' : '*'.$search.'*'; + $groupUsers = array(); $isMemberUid = (strtolower($this->connection->ldapGroupMemberAssocAttr) == 'memberuid'); foreach($members as $member) { if($isMemberUid) { - $filter = \OCP\Util::mb_str_replace('%uid', $member, $this->connection->ldapLoginFilter, 'UTF-8'); + //we got uids, need to get their DNs to 'tranlsate' them to usernames + $filter = $this->combineFilterWithAnd(array( + \OCP\Util::mb_str_replace('%uid', $member, $this->connection>ldapLoginFilter, 'UTF-8'), + $this->connection->ldapUserDisplayName.'='.$search + )); $ldap_users = $this->fetchListOfUsers($filter, 'dn'); if(count($ldap_users) < 1) { continue; } - $result[] = $this->dn2username($ldap_users[0]); - continue; + $groupUsers[] = $this->dn2username($ldap_users[0]); } else { + //we got DNs, check if we need to filter by search or we can give back all of them + if($search != '*') { + if(!$this->readAttribute($member, $this->connection->ldapUserDisplayName, $this->connection->ldapUserDisplayName.'='.$search)) { + continue; + } + } + // dn2username will also check if the users belong to the allowed base if($ocname = $this->dn2username($member)) { - $result[] = $ocname; + $groupUsers[] = $ocname; } } } - if(!$isMemberUid) { - $result = array_intersect($result, \OCP\User::getUsers()); - } - $groupUsers = array_unique($result, SORT_LOCALE_STRING); - $this->connection->writeToCache('usersInGroup'.$gid, $groupUsers); - - if(!empty($this->groupSearch)) { - $groupUsers = array_filter($groupUsers, array($this, 'groupMatchesFilter')); - } - if($limit == -1) { - $limit = null; - } - return array_slice($groupUsers, $offset, $limit); + natsort($groupUsers); + $this->connection->writeToCache('usersInGroup-'.$gid.'-'.$search, $groupUsers); + $groupUsers = array_slice($groupUsers, $offset, $limit); + $this->connection->writeToCache($cachekey, $groupUsers); + return $groupUsers; } /** @@ -204,22 +217,30 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { if(!$this->enabled) { return array(); } + $cachekey = 'getGroups-'.$search.'-'.$limit.'-'.$offset; - if($this->connection->isCached('getGroups')) { - $ldap_groups = $this->connection->getFromCache('getGroups'); - } else { - $ldap_groups = $this->fetchListOfGroups($this->connection->ldapGroupFilter, array($this->connection->ldapGroupDisplayName, 'dn')); - $ldap_groups = $this->ownCloudGroupNames($ldap_groups); - $this->connection->writeToCache('getGroups', $ldap_groups); - } - $this->groupSearch = $search; - if(!empty($this->groupSearch)) { - $ldap_groups = array_filter($ldap_groups, array($this, 'groupMatchesFilter')); + //Check cache before driving unnecessary searches + \OCP\Util::writeLog('user_ldap', 'getGroups '.$cachekey, \OCP\Util::DEBUG); + $ldap_groups = $this->connection->getFromCache($cachekey); + if(!is_null($ldap_groups)) { + return $ldap_groups; } - if($limit = -1) { + + // if we'd pass -1 to LDAP search, we'd end up in a Protocol error. With a limit of 0, we get 0 results. So we pass null. + if($limit <= 0) { $limit = null; } - return array_slice($ldap_groups, $offset, $limit); + $search = empty($search) ? '*' : '*'.$search.'*'; + $filter = $this->combineFilterWithAnd(array( + $this->connection->ldapGroupFilter, + $this->connection->ldapGroupDisplayName.'='.$search + )); + \OCP\Util::writeLog('user_ldap', 'getGroups Filter '.$filter, \OCP\Util::DEBUG); + $ldap_groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName, 'dn'), $limit, $offset); + $ldap_groups = $this->ownCloudGroupNames($ldap_groups); + + $this->connection->writeToCache($cachekey, $ldap_groups); + return $ldap_groups; } public function groupMatchesFilter($group) { diff --git a/apps/user_ldap/l10n/da.php b/apps/user_ldap/l10n/da.php index f0589b33a93cb264600984087f1bb6d21e7d0cac..cce3de085d2c56f83e93addacbf3a5d30956698b 100644 --- a/apps/user_ldap/l10n/da.php +++ b/apps/user_ldap/l10n/da.php @@ -2,6 +2,7 @@ "Host" => "Host", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Du kan udelade protokollen, medmindre du skal bruge SSL. Start i sÃ¥ fald med ldaps://", "Base DN" => "Base DN", +"User DN" => "Bruger DN", "Password" => "Kodeord", "Port" => "Port", "Use TLS" => "Brug TLS", diff --git a/apps/user_ldap/l10n/de_DE.php b/apps/user_ldap/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..e6288c78af47f89b35e2095a0dca8e6c083dda8c --- /dev/null +++ b/apps/user_ldap/l10n/de_DE.php @@ -0,0 +1,37 @@ + "Host", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://", +"Base DN" => "Basis-DN", +"You can specify Base DN for users and groups in the Advanced tab" => "Sie können Basis-DN für Benutzer und Gruppen in dem \"Erweitert\"-Reiter konfigurieren", +"User DN" => "Benutzer-DN", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "Der DN des Benutzers für LDAP-Bind, z.B.: uid=agent,dc=example,dc=com. Für anonymen Zugriff lassen Sie DN und Passwort leer.", +"Password" => "Passwort", +"For anonymous access, leave DN and Password empty." => "Lassen Sie die Felder von DN und Passwort für anonymen Zugang leer.", +"User Login Filter" => "Benutzer-Login-Filter", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Bestimmt den angewendeten Filter, wenn eine Anmeldung versucht wird. %%uid ersetzt den Benutzernamen bei dem Anmeldeversuch.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "verwenden Sie %%uid Platzhalter, z. B. \"uid=%%uid\"", +"User List Filter" => "Benutzer-Filter-Liste", +"Defines the filter to apply, when retrieving users." => "Definiert den Filter für die Anfrage der Benutzer.", +"without any placeholder, e.g. \"objectClass=person\"." => "ohne Platzhalter, z.B.: \"objectClass=person\"", +"Group Filter" => "Gruppen-Filter", +"Defines the filter to apply, when retrieving groups." => "Definiert den Filter für die Anfrage der Gruppen.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "ohne Platzhalter, z.B.: \"objectClass=posixGroup\"", +"Port" => "Port", +"Base User Tree" => "Basis-Benutzerbaum", +"Base Group Tree" => "Basis-Gruppenbaum", +"Group-Member association" => "Assoziation zwischen Gruppe und Benutzer", +"Use TLS" => "Nutze TLS", +"Do not use it for SSL connections, it will fail." => "Verwenden Sie dies nicht für SSL-Verbindungen, es wird fehlschlagen.", +"Case insensitve LDAP server (Windows)" => "LDAP-Server (Windows: Groß- und Kleinschreibung bleibt unbeachtet)", +"Turn off SSL certificate validation." => "Schalten Sie die SSL-Zertifikatsprüfung aus.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Falls die Verbindung es erfordert, muss das SSL-Zertifikat des LDAP-Server importiert werden.", +"Not recommended, use for testing only." => "Nicht empfohlen, nur zu Testzwecken.", +"User Display Name Field" => "Feld für den Anzeigenamen des Benutzers", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Das LDAP-Attribut für die Generierung des Benutzernamens in ownCloud. ", +"Group Display Name Field" => "Feld für den Anzeigenamen der Gruppe", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Das LDAP-Attribut für die Generierung des Gruppennamens in ownCloud. ", +"in bytes" => "in Bytes", +"in seconds. A change empties the cache." => "in Sekunden. Eine Änderung leert den Cache.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfall trage ein LDAP/AD-Attribut ein.", +"Help" => "Hilfe" +); diff --git a/apps/user_ldap/l10n/eo.php b/apps/user_ldap/l10n/eo.php index 683c60ef840e5f6404b1983c0831b993008f91d0..ef8aff8a39092171a12e83ab913b37e339ca2438 100644 --- a/apps/user_ldap/l10n/eo.php +++ b/apps/user_ldap/l10n/eo.php @@ -22,6 +22,7 @@ "Do not use it for SSL connections, it will fail." => "Ne uzu Äin por SSL-konektoj, Äi malsukcesos.", "Case insensitve LDAP server (Windows)" => "LDAP-servilo blinda je litergrandeco (Vindozo)", "Turn off SSL certificate validation." => "Malkapabligi validkontrolon de SSL-atestiloj.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se la konekto nur funkcias kun ĉi tiu malnepro, enportu la SSL-atestilo de la LDAP-servilo en via ownCloud-servilo.", "Not recommended, use for testing only." => "Ne rekomendata, uzu Äin nur por testoj.", "User Display Name Field" => "Kampo de vidignomo de uzanto", "The LDAP attribute to use to generate the user`s ownCloud name." => "La atributo de LDAP uzota por generi la ownCloud-an nomon de la uzanto.", diff --git a/apps/user_ldap/l10n/et_EE.php b/apps/user_ldap/l10n/et_EE.php index f83142225e2a964e4c6f8f2e4acc8ff58d008801..9752d73c1c0144df67c2f55735f5f7274efb7d86 100644 --- a/apps/user_ldap/l10n/et_EE.php +++ b/apps/user_ldap/l10n/et_EE.php @@ -1,9 +1,14 @@ "Host", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Sa ei saa protokolli ära jätta, välja arvatud siis, kui sa nõuad SSL-ühendust. Sel juhul alusta eesliitega ldaps://", "Base DN" => "Baas DN", +"You can specify Base DN for users and groups in the Advanced tab" => "Sa saad kasutajate ja gruppide baas DN-i määrata lisavalikute vahekaardilt", "User DN" => "Kasutaja DN", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja parool tühjaks.", "Password" => "Parool", +"For anonymous access, leave DN and Password empty." => "Anonüümseks ligipääsuks jäta DN ja parool tühjaks.", "User Login Filter" => "Kasutajanime filter", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime.", "use %%uid placeholder, e.g. \"uid=%%uid\"" => "kasuta %%uid kohatäitjat, nt. \"uid=%%uid\"", "User List Filter" => "Kasutajate nimekirja filter", "Defines the filter to apply, when retrieving users." => "Määrab kasutajaid hankides filtri, mida rakendatakse.", @@ -19,6 +24,7 @@ "Do not use it for SSL connections, it will fail." => "Ära kasuta seda SSL ühenduse jaoks, see ei toimi.", "Case insensitve LDAP server (Windows)" => "Mittetõstutundlik LDAP server (Windows)", "Turn off SSL certificate validation." => "Lülita SSL sertifikaadi kontrollimine välja.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Kui ühendus toimib ainult selle valikuga, siis impordi LDAP serveri SSL sertifikaat oma ownCloud serverisse.", "Not recommended, use for testing only." => "Pole soovitatav, kasuta ainult testimiseks.", "User Display Name Field" => "Kasutaja näidatava nime väli", "The LDAP attribute to use to generate the user`s ownCloud name." => "LDAP omadus, mida kasutatakse kasutaja ownCloudi nime loomiseks.", diff --git a/apps/user_ldap/l10n/gl.php b/apps/user_ldap/l10n/gl.php new file mode 100644 index 0000000000000000000000000000000000000000..efcea02c18078feeabefa88de667ea8a913b2e72 --- /dev/null +++ b/apps/user_ldap/l10n/gl.php @@ -0,0 +1,37 @@ + "Servidor", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podes omitir o protocolo agás que precises de SSL. Nese caso comeza con ldaps://", +"Base DN" => "DN base", +"You can specify Base DN for users and groups in the Advanced tab" => "Podes especificar a DN base para usuarios e grupos na lapela de «Avanzado»", +"User DN" => "DN do usuario", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "O DN do cliente do usuario co que hai que estabelecer unha conexión, p.ex uid=axente, dc=exemplo, dc=com. Para o acceso en anónimo deixa o DN e o contrasinal baleiros.", +"Password" => "Contrasinal", +"For anonymous access, leave DN and Password empty." => "Para o acceso anónimo deixa o DN e o contrasinal baleiros.", +"User Login Filter" => "Filtro de acceso de usuarios", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Define o filtro que se aplica cando se intenta o acceso. %%uid substitúe o nome de usuario e a acción de acceso.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "usar a marca de posición %%uid, p.ex «uid=%%uid»", +"User List Filter" => "Filtro da lista de usuarios", +"Defines the filter to apply, when retrieving users." => "Define o filtro a aplicar cando se recompilan os usuarios.", +"without any placeholder, e.g. \"objectClass=person\"." => "sen ningunha marca de posición, como p.ex \"objectClass=persoa\".", +"Group Filter" => "Filtro de grupo", +"Defines the filter to apply, when retrieving groups." => "Define o filtro a aplicar cando se recompilan os grupos.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "sen ningunha marca de posición, como p.ex \"objectClass=grupoPosix\".", +"Port" => "Porto", +"Base User Tree" => "Base da árbore de usuarios", +"Base Group Tree" => "Base da árbore de grupo", +"Group-Member association" => "Asociación de grupos e membros", +"Use TLS" => "Usar TLS", +"Do not use it for SSL connections, it will fail." => "Non o empregues para conexións SSL: fallará.", +"Case insensitve LDAP server (Windows)" => "Servidor LDAP que non distingue entre maiúsculas e minúsculas (Windows)", +"Turn off SSL certificate validation." => "Apaga a validación do certificado SSL.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a conexión só funciona con esta opción importa o certificado SSL do servidor LDAP no teu servidor ownCloud.", +"Not recommended, use for testing only." => "Non se recomenda. Só para probas.", +"User Display Name Field" => "Campo de mostra do nome de usuario", +"The LDAP attribute to use to generate the user`s ownCloud name." => "O atributo LDAP a empregar para xerar o nome de usuario de ownCloud.", +"Group Display Name Field" => "Campo de mostra do nome de grupo", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "O atributo LDAP úsase para xerar os nomes dos grupos de ownCloud.", +"in bytes" => "en bytes", +"in seconds. A change empties the cache." => "en segundos. Calquera cambio baleira o caché.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixar baleiro para o nome de usuario (por defecto). Noutro caso, especifica un atributo LDAP/AD.", +"Help" => "Axuda" +); diff --git a/apps/user_ldap/l10n/id.php b/apps/user_ldap/l10n/id.php new file mode 100644 index 0000000000000000000000000000000000000000..56619634bab0ee197e7c3c5ddb0db288a6445e98 --- /dev/null +++ b/apps/user_ldap/l10n/id.php @@ -0,0 +1,14 @@ + "host", +"Password" => "kata kunci", +"User Login Filter" => "gunakan saringan login", +"Group Filter" => "saringan grup", +"Port" => "port", +"Use TLS" => "gunakan TLS", +"Do not use it for SSL connections, it will fail." => "jangan gunakan untuk koneksi SSL, itu akan gagal.", +"Turn off SSL certificate validation." => "matikan validasi sertivikat SSL", +"Not recommended, use for testing only." => "tidak disarankan, gunakan hanya untuk pengujian.", +"in bytes" => "dalam bytes", +"in seconds. A change empties the cache." => "dalam detik. perubahan mengosongkan cache", +"Help" => "bantuan" +); diff --git a/apps/user_ldap/l10n/ko.php b/apps/user_ldap/l10n/ko.php new file mode 100644 index 0000000000000000000000000000000000000000..681365d221febf7e16a6b423c6f5f30d18711904 --- /dev/null +++ b/apps/user_ldap/l10n/ko.php @@ -0,0 +1,33 @@ + "호스트", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "ë‹¹ì‹ ì€ í•„ìš”ë¡œí•˜ëŠ” SSLì„ ì œì™¸í•˜ê³ , í”„ë¡œí† ì½œì„ ìƒëžµ í•  수 있습니다. ë‹¤ìŒ ì‹œìž‘ 주소는 LDAPS://", +"Base DN" => "기본 DN", +"You can specify Base DN for users and groups in the Advanced tab" => "ë‹¹ì‹ ì€ ê³ ê¸‰ 탭ì—ì„œ ì‚¬ìš©ìž ë° ê·¸ë£¹ì— ëŒ€í•œ 기본 DNì„ ì§€ì •í•  수 있습니다.", +"User DN" => "ì‚¬ìš©ìž DN", +"Password" => "비밀번호", +"For anonymous access, leave DN and Password empty." => "ìµëª…ì˜ ì ‘ì†ì„ 위해서는 DNê³¼ 비밀번호를 빈ìƒíƒœë¡œ ë‘ë©´ ë©ë‹ˆë‹¤.", +"User Login Filter" => "ì‚¬ìš©ìž ë¡œê·¸ì¸ í•„í„°", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "로그ì¸ì„ ì‹œë„ í•  ë•Œ ì ìš© í•  필터를 ì •ì˜í•©ë‹ˆë‹¤. %%udi는 ë¡œê·¸ì¸ ìž‘ì—…ì˜ ì‚¬ìš©ìž ì´ë¦„ì„ ëŒ€ì²´í•©ë‹ˆë‹¤.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "use %%uid placeholder, e.g. \"uid=%%uid\"", +"User List Filter" => "ì‚¬ìš©ìž ëª©ë¡ í•„í„°", +"Defines the filter to apply, when retrieving users." => "사용ìžë¥¼ 검색 í•  ë•Œ ì ìš© í•  필터를 ì •ì˜í•©ë‹ˆë‹¤.", +"Group Filter" => "그룹 í•„í„°", +"Defines the filter to apply, when retrieving groups." => "ê·¸ë£¹ì„ ê²€ìƒ‰ í•  ë•Œ ì ìš© í•  필터를 ì •ì˜í•©ë‹ˆë‹¤.", +"Port" => "í¬íŠ¸", +"Base User Tree" => "기본 ì‚¬ìš©ìž íŠ¸ë¦¬", +"Base Group Tree" => "기본 그룹 트리", +"Group-Member association" => "그룹 íšŒì› ë™ë£Œ", +"Use TLS" => "TLS 사용", +"Do not use it for SSL connections, it will fail." => "SSLì—°ê²°ì„ ì‚¬ìš©í•˜ì§€ 마세요, ê·¸ê²ƒì€ ì‹¤íŒ¨í• ê²ë‹ˆë‹¤.", +"Case insensitve LDAP server (Windows)" => "insensitve LDAP 서버 (Windows)ì˜ ê²½ìš°", +"Turn off SSL certificate validation." => "SSL ì¸ì¦ì„œ 유효성 검사를 해제합니다.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "ì—°ê²°ì—만 ì´ ì˜µì…˜ì„ ì‚¬ìš©í•  경우 ë‹¹ì‹ ì˜ ownCloud ì„œë²„ì— LDAP ì„œë²„ì˜ SSL ì¸ì¦ì„œë¥¼ 가져옵니다.", +"Not recommended, use for testing only." => "추천하지 ì•ŠìŒ, 테스트로만 사용", +"User Display Name Field" => "ì‚¬ìš©ìž í‘œì‹œ ì´ë¦„ í•„ë“œ", +"The LDAP attribute to use to generate the user`s ownCloud name." => "LDAP ì†ì„±ì€ 사용ìžì˜ ownCloud ì´ë¦„ì„ ìƒì„±í•˜ê¸° 위해 사용합니다.", +"Group Display Name Field" => "그룹 표시 ì´ë¦„ í•„ë“œ", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "LDAP ì†ì„±ì€ ê·¸ë£¹ì˜ ownCloud ì´ë¦„ì„ ìƒì„±í•˜ê¸° 위해 사용합니다.", +"in bytes" => "ë°”ì´íŠ¸", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "ì‚¬ìš©ìž ì´ë¦„(기본값)ì„ ë¹„ì›Œ 둡니다. 그렇지 않으면 LDAP/AD íŠ¹ì„±ì„ ì§€ì •í•©ë‹ˆë‹¤.", +"Help" => "ë„움ë§" +); diff --git a/apps/user_ldap/l10n/nb_NO.php b/apps/user_ldap/l10n/nb_NO.php new file mode 100644 index 0000000000000000000000000000000000000000..a5f4657d0457f94c0f8f5a7560912880d19aa1be --- /dev/null +++ b/apps/user_ldap/l10n/nb_NO.php @@ -0,0 +1,11 @@ + "Passord", +"Group Filter" => "Gruppefilter", +"Port" => "Port", +"Use TLS" => "Bruk TLS", +"Do not use it for SSL connections, it will fail." => "Ikke bruk for SSL tilkoblinger, dette vil ikke fungere.", +"Not recommended, use for testing only." => "Ikke anbefalt, bruk kun for testing", +"in bytes" => "i bytes", +"in seconds. A change empties the cache." => "i sekunder. En endring tømmer bufferen.", +"Help" => "Hjelp" +); diff --git a/apps/user_ldap/l10n/nl.php b/apps/user_ldap/l10n/nl.php new file mode 100644 index 0000000000000000000000000000000000000000..84c36881f9a7d2a50221fa6e00a815b15773eb0c --- /dev/null +++ b/apps/user_ldap/l10n/nl.php @@ -0,0 +1,37 @@ + "Host", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Je kunt het protocol weglaten, tenzij je SSL vereist. Start in dat geval met ldaps://", +"Base DN" => "Basis DN", +"You can specify Base DN for users and groups in the Advanced tab" => "Je kunt het standaard DN voor gebruikers en groepen specificeren in het tab Geavanceerd.", +"User DN" => "Gebruikers DN", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "De DN van de client gebruiker waarmee de verbinding zal worden gemaakt, bijv. uid=agent,dc=example,dc=com. Voor anonieme toegang laat je het DN en het wachtwoord leeg.", +"Password" => "Wachtwoord", +"For anonymous access, leave DN and Password empty." => "Voor anonieme toegang, laat de DN en het wachtwoord leeg.", +"User Login Filter" => "Gebruikers Login Filter", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Definiëerd de toe te passen filter indien er geprobeerd wordt in te loggen. %%uid vervangt de gebruikersnaam in de login actie.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "gebruik %%uid placeholder, bijv. \"uid=%%uid\"", +"User List Filter" => "Gebruikers Lijst Filter", +"Defines the filter to apply, when retrieving users." => "Definiëerd de toe te passen filter voor het ophalen van gebruikers.", +"without any placeholder, e.g. \"objectClass=person\"." => "zonder een placeholder, bijv. \"objectClass=person\"", +"Group Filter" => "Groep Filter", +"Defines the filter to apply, when retrieving groups." => "Definiëerd de toe te passen filter voor het ophalen van groepen.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "zonder een placeholder, bijv. \"objectClass=posixGroup\"", +"Port" => "Poort", +"Base User Tree" => "Basis Gebruikers Structuur", +"Base Group Tree" => "Basis Groupen Structuur", +"Group-Member association" => "Groepslid associatie", +"Use TLS" => "Gebruik TLS", +"Do not use it for SSL connections, it will fail." => "Gebruik niet voor SSL connecties, deze mislukken.", +"Case insensitve LDAP server (Windows)" => "Niet-hoofdlettergevoelige LDAP server (Windows)", +"Turn off SSL certificate validation." => "Schakel SSL certificaat validatie uit.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Als de connectie alleen werkt met deze optie, importeer dan het LDAP server SSL certificaat naar je ownCloud server.", +"Not recommended, use for testing only." => "Niet aangeraden, gebruik alleen voor test doeleinden.", +"User Display Name Field" => "Gebruikers Schermnaam Veld", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Het te gebruiken LDAP attribuut voor het genereren van de ownCloud naam voor de gebruikers.", +"Group Display Name Field" => "Groep Schermnaam Veld", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Het te gebruiken LDAP attribuut voor het genereren van de ownCloud naam voor de groepen.", +"in bytes" => "in bytes", +"in seconds. A change empties the cache." => "in seconden. Een verandering maakt de cache leeg.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Laat leeg voor de gebruikersnaam (standaard). Of, specificeer een LDAP/AD attribuut.", +"Help" => "Help" +); diff --git a/apps/user_ldap/l10n/pt_PT.php b/apps/user_ldap/l10n/pt_PT.php index bf32a295371ed19fd4ab62478f661cb35f8b7e12..a17e1a95923815b319d0125ff298ec51207dbef8 100644 --- a/apps/user_ldap/l10n/pt_PT.php +++ b/apps/user_ldap/l10n/pt_PT.php @@ -1,10 +1,37 @@ "Anfitrião", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Pode omitir o protocolo, excepto se necessitar de SSL. Neste caso, comece com ldaps://", +"Base DN" => "DN base", "You can specify Base DN for users and groups in the Advanced tab" => "Pode especificar o ND Base para utilizadores e grupos no separador Avançado", +"User DN" => "DN do utilizador", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "O DN to cliente ", "Password" => "Palavra-passe", +"For anonymous access, leave DN and Password empty." => "Para acesso anónimo, deixe DN e a Palavra-passe vazios.", +"User Login Filter" => "Filtro de login de utilizador", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Define o filtro a aplicar, para aquando de uma tentativa de login. %%uid substitui o nome de utilizador utilizado.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "Use a variável %%uid , exemplo: \"uid=%%uid\"", +"User List Filter" => "Utilizar filtro", +"Defines the filter to apply, when retrieving users." => "Defina o filtro a aplicar, ao recuperar utilizadores.", +"without any placeholder, e.g. \"objectClass=person\"." => "Sem variável. Exemplo: \"objectClass=pessoa\".", "Group Filter" => "Filtrar por grupo", +"Defines the filter to apply, when retrieving groups." => "Defina o filtro a aplicar, ao recuperar grupos.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "Sem nenhuma variável. Exemplo: \"objectClass=posixGroup\".", "Port" => "Porto", +"Base User Tree" => "Base da árvore de utilizadores.", +"Base Group Tree" => "Base da árvore de grupos.", +"Group-Member association" => "Associar utilizador ao grupo.", +"Use TLS" => "Usar TLS", +"Do not use it for SSL connections, it will fail." => "Não use para ligações SSL, irá falhar.", +"Case insensitve LDAP server (Windows)" => "Servidor LDAP (Windows) não sensível a maiúsculas.", +"Turn off SSL certificate validation." => "Desligar a validação de certificado SSL.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a ligação apenas funcionar com está opção, importe o certificado SSL do servidor LDAP para o seu servidor do ownCloud.", +"Not recommended, use for testing only." => "Não recomendado, utilizado apenas para testes!", +"User Display Name Field" => "Mostrador do nome de utilizador.", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Atributo LDAP para gerar o nome de utilizador do ownCloud.", +"Group Display Name Field" => "Mostrador do nome do grupo.", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Atributo LDAP para gerar o nome do grupo do ownCloud.", "in bytes" => "em bytes", "in seconds. A change empties the cache." => "em segundos. Uma alteração esvazia a cache.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixe vazio para nome de utilizador (padrão). De outro modo, especifique um atributo LDAP/AD.", "Help" => "Ajuda" ); diff --git a/apps/user_ldap/l10n/ru_RU.php b/apps/user_ldap/l10n/ru_RU.php index 8433f39e83cca1bae3875ae51f0010998519e309..d5adb9fffd3dd14930412a99646d053f7dbb2e90 100644 --- a/apps/user_ldap/l10n/ru_RU.php +++ b/apps/user_ldap/l10n/ru_RU.php @@ -4,23 +4,31 @@ "Base DN" => "База DN", "You can specify Base DN for users and groups in the Advanced tab" => "Ð’Ñ‹ можете задать Base DN Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ и групп во вкладке «Дополнительно»", "User DN" => "DN пользователÑ", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN клиентÑкого пользователÑ, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ должна оÑущеÑтвлÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸Ð²Ñзка, например, uid=agent,dc=example,dc=com. Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ доÑтупа оÑтавьте Ð¿Ð¾Ð»Ñ DN и Пароль пуÑтыми.", "Password" => "Пароль", "For anonymous access, leave DN and Password empty." => "Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ доÑтупа оÑтавьте Ð¿Ð¾Ð»Ñ DN и пароль пуÑтыми.", "User Login Filter" => "Фильтр имен пользователей", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Задает фильтр, применÑемый при загрузке пользователÑ. %%uid заменÑет Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¸ входе.", "use %%uid placeholder, e.g. \"uid=%%uid\"" => "иÑпользуйте %%uid заполнитель, например, \"uid=%%uid\"", +"User List Filter" => "Фильтр ÑпиÑка пользователей", +"Defines the filter to apply, when retrieving users." => "Задает фильтр, применÑемый при получении пользователей.", "without any placeholder, e.g. \"objectClass=person\"." => "без каких-либо заполнителей, например, \"objectClass=person\".", "Group Filter" => "Групповой фильтр", +"Defines the filter to apply, when retrieving groups." => "Задает фильтр, применÑемый при получении групп.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "без каких-либо заполнителей, например, \"objectClass=posixGroup\".", "Port" => "Порт", "Base User Tree" => "Базовое дерево пользователей", +"Base Group Tree" => "Базовое дерево групп", "Group-Member association" => "СвÑзь член-группа", "Use TLS" => "ИÑпользовать TLS", "Do not use it for SSL connections, it will fail." => "Ðе иÑпользуйте Ñто SSL-Ñоединений, Ñто не будет выполнено.", "Case insensitve LDAP server (Windows)" => "ÐечувÑтвительный к региÑтру LDAP-Ñервер (Windows)", "Turn off SSL certificate validation." => "Выключить проверку Ñертификата SSL.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "ЕÑли Ñоединение работает только Ñ Ñтой опцией, импортируйте SSL-Ñертификат LDAP Ñервера в ваш ownCloud Ñервер.", "Not recommended, use for testing only." => "Ðе рекомендовано, иÑпользуйте только Ð´Ð»Ñ Ñ‚ÐµÑтированиÑ.", "User Display Name Field" => "Поле, отображаемое как Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ", "The LDAP attribute to use to generate the user`s ownCloud name." => "Ðтрибут LDAP, иÑпользуемый Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ownCloud.", +"Group Display Name Field" => "Поле, отображаемое как Ð¸Ð¼Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Ðтрибут LDAP, иÑпользуемый Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð³Ð¾ имени в ownCloud.", "in bytes" => "в байтах", "in seconds. A change empties the cache." => "в Ñекундах. Изменение очищает кÑш.", diff --git a/apps/user_ldap/l10n/si_LK.php b/apps/user_ldap/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..fc8099e25e505a330e9cf9788e5239fa1e97f198 --- /dev/null +++ b/apps/user_ldap/l10n/si_LK.php @@ -0,0 +1,13 @@ + "සත්කà·à¶»à¶šà¶º", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "SSL අවà·à·Šâ€à¶ºà¶º වන විට පමණක් à·„à·à¶», අන් අවස්ථà·à·€à¶±à·Šà·„ිදී ප්â€à¶»à·œà¶§à·œà¶šà·à¶½à¶º අත් à·„à·à¶»à·’ය à·„à·à¶š. භà·à·€à·’ත෠කරන විට ldaps:// ලෙස ආරම්භ කරන්න", +"Password" => "මුර පදය", +"User Login Filter" => "පරිà·à·“ලක පිවිසුම් පෙරහන", +"User List Filter" => "පරිà·à·“ලක ලà·à¶ºà·’ස්තු පෙරහන", +"Group Filter" => "කණ්ඩà·à¶ºà¶¸à·Š පෙරහන", +"Defines the filter to apply, when retrieving groups." => "කණ්ඩà·à¶ºà¶¸à·Š සොය෠ලබà·à¶œà¶±à·Šà¶±à· විට, යොදන පෙරහන නියම කරයි", +"Port" => "තොට", +"Use TLS" => "TLS භà·à·€à·’ත෠කරන්න", +"Not recommended, use for testing only." => "නිර්දේ෠කළ නොහà·à¶š. පරීක්ෂණ සඳහ෠පමණක් භà·à·€à·’ත කරන්න", +"Help" => "උදව්" +); diff --git a/apps/user_ldap/l10n/sk_SK.php b/apps/user_ldap/l10n/sk_SK.php new file mode 100644 index 0000000000000000000000000000000000000000..2b340c8573d11e420a1425814a30e0d9d104d0f2 --- /dev/null +++ b/apps/user_ldap/l10n/sk_SK.php @@ -0,0 +1,37 @@ + "Hostiteľ", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Môžete vynechaÅ¥ protokol, s výnimkou požadovania SSL. Vtedy zaÄnite s ldaps://", +"Base DN" => "Základné DN", +"You can specify Base DN for users and groups in the Advanced tab" => "V rozšírenom nastavení môžete zadaÅ¥ základné DN pre používateľov a skupiny", +"User DN" => "Používateľské DN", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN klientského používateľa, ku ktorému tvoríte väzbu, napr. uid=agent,dc=example,dc=com. Pre anonymný prístup ponechajte údaje DN a Heslo prázdne.", +"Password" => "Heslo", +"For anonymous access, leave DN and Password empty." => "Pre anonymný prístup ponechajte údaje DN a Heslo prázdne.", +"User Login Filter" => "Filter prihlásenia používateľov", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "UrÄuje použitý filter, pri pokuse o prihlásenie. %%uid nahradzuje používateľské meno v Äinnosti prihlásenia.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "použite zástupný vzor %%uid, napr. \\\"uid=%%uid\\\"", +"User List Filter" => "Filter zoznamov používateľov", +"Defines the filter to apply, when retrieving users." => "Definuje použitý filter, pre získanie používateľov.", +"without any placeholder, e.g. \"objectClass=person\"." => "bez zástupných znakov, napr. \"objectClass=person\"", +"Group Filter" => "Filter skupiny", +"Defines the filter to apply, when retrieving groups." => "Definuje použitý filter, pre získanie skupín.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez zástupných znakov, napr. \"objectClass=posixGroup\"", +"Port" => "Port", +"Base User Tree" => "Základný používateľský strom", +"Base Group Tree" => "Základný skupinový strom", +"Group-Member association" => "Asociácia Älena skupiny", +"Use TLS" => "Použi TLS", +"Do not use it for SSL connections, it will fail." => "Nepoužívajte pre pripojenie SSL, pripojenie zlyhá.", +"Case insensitve LDAP server (Windows)" => "LDAP server nerozliÅ¡uje veľkosÅ¥ znakov (Windows)", +"Turn off SSL certificate validation." => "Vypnúť overovanie SSL certifikátu.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Ak pripojenie pracuje len s touto možnosÅ¥ou, tak importujte SSL certifikát LDAP serveru do vášho servera ownCloud.", +"Not recommended, use for testing only." => "Nie je doporuÄované, len pre testovacie úÄely.", +"User Display Name Field" => "Pole pre zobrazenia mena používateľa", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Atribút LDAP použitý na vygenerovanie mena používateľa ownCloud ", +"Group Display Name Field" => "Pole pre zobrazenie mena skupiny", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Atribút LDAP použitý na vygenerovanie mena skupiny ownCloud ", +"in bytes" => "v bajtoch", +"in seconds. A change empties the cache." => "v sekundách. Zmena vyprázdni vyrovnávaciu pamäť.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Nechajte prázdne pre používateľské meno (predvolené). Inak uveÄte atribút LDAP/AD.", +"Help" => "Pomoc" +); diff --git a/apps/user_ldap/l10n/sl.php b/apps/user_ldap/l10n/sl.php index fd28b6401562b65961d53c554c5159b98595c83f..098224bb31988f97255a5016d49a423e735830eb 100644 --- a/apps/user_ldap/l10n/sl.php +++ b/apps/user_ldap/l10n/sl.php @@ -1,37 +1,37 @@ "Gostitelj", -"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokol lahko izpustite, razen Äe zahtevate SSL. V tem primeru zaÄnite z ldaps://", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokol je lahko izpuÅ¡Äen, Äe ni posebej zahtevan SSL. V tem primeru se mora naslov zaÄeti z ldaps://", "Base DN" => "Osnovni DN", "You can specify Base DN for users and groups in the Advanced tab" => "Osnovni DN za uporabnike in skupine lahko doloÄite v zavihku Napredno", "User DN" => "Uporabnik DN", -"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN uporabnikovega odjemalca, s katerim naj se opravi vezava, npr. uid=agent,dc=example,dc=com. Za anonimni dostop pustite polji DN in geslo prazni.", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN uporabnikovega odjemalca, s katerim naj se opravi vezava, npr. uid=agent,dc=example,dc=com. Za anonimni dostop sta polji DN in geslo prazni.", "Password" => "Geslo", -"For anonymous access, leave DN and Password empty." => "Za anonimni dostop pustite polji DN in geslo prazni.", +"For anonymous access, leave DN and Password empty." => "Za anonimni dostop sta polji DN in geslo prazni.", "User Login Filter" => "Filter prijav uporabnikov", -"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "DoloÄi filter uporabljen pri prijavi. %%uid nadomesti uporaniÅ¡ko ime pri prijavi.", -"use %%uid placeholder, e.g. \"uid=%%uid\"" => "Uporabite ogrado %%uid, npr. \"uid=%%uid\".", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "DoloÄi filter, uporabljen pri prijavi. %%uid nadomesti uporabniÅ¡ko ime za prijavo.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "Uporabite vsebnik %%uid, npr. \"uid=%%uid\".", "User List Filter" => "Filter seznama uporabnikov", "Defines the filter to apply, when retrieving users." => "DoloÄi filter za uporabo med pridobivanjem uporabnikov.", -"without any placeholder, e.g. \"objectClass=person\"." => "Brez katerekoli ograde, npr. \"objectClass=person\".", +"without any placeholder, e.g. \"objectClass=person\"." => "Brez kateregakoli vsebnika, npr. \"objectClass=person\".", "Group Filter" => "Filter skupin", "Defines the filter to apply, when retrieving groups." => "DoloÄi filter za uporabo med pridobivanjem skupin.", -"without any placeholder, e.g. \"objectClass=posixGroup\"." => "Brez katerekoli ograde, npr. \"objectClass=posixGroup\".", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "Brez katerekoli vsebnika, npr. \"objectClass=posixGroup\".", "Port" => "Vrata", "Base User Tree" => "Osnovno uporabniÅ¡ko drevo", "Base Group Tree" => "Osnovno drevo skupine", "Group-Member association" => "Povezava Älana skupine", "Use TLS" => "Uporabi TLS", -"Do not use it for SSL connections, it will fail." => "Ne uporabljajte ga za SSL povezave, saj ne bo delovalo.", -"Case insensitve LDAP server (Windows)" => "LDAP strežnik je neobÄutljiv na velikost Ärk (Windows)", -"Turn off SSL certificate validation." => "OnemogoÄi potrditev veljavnosti SSL certifikata.", -"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "ÄŒe povezava deluje samo s to možnostjo, uvozite SSL potrdilo iz LDAP strežnika v vaÅ¡ ownCloud strežnik.", -"Not recommended, use for testing only." => "Odsvetovano, uporabite le v namene preizkuÅ¡anja.", +"Do not use it for SSL connections, it will fail." => "Uporaba SSL za povezave bo spodletela.", +"Case insensitve LDAP server (Windows)" => "Strežnik LDAP ne upoÅ¡teva velikosti Ärk (Windows)", +"Turn off SSL certificate validation." => "OnemogoÄi potrditev veljavnosti potrdila SSL.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "V primeru, da povezava deluje le s to možnostjo, uvozite potrdilo SSL iz strežnika LDAP na vaÅ¡ strežnik ownCloud.", +"Not recommended, use for testing only." => "Dejanje ni priporoÄeno; uporabljeno naj bo le za preizkuÅ¡anje delovanja.", "User Display Name Field" => "Polje za uporabnikovo prikazano ime", -"The LDAP attribute to use to generate the user`s ownCloud name." => "LDAP atribut uporabljen pri ustvarjanju ownCloud uporabniÅ¡kih imen.", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Atribut LDAP, uporabljen pri ustvarjanju uporabniÅ¡kih imen ownCloud.", "Group Display Name Field" => "Polje za prikazano ime skupine", -"The LDAP attribute to use to generate the groups`s ownCloud name." => "LDAP atribut uporabljen pri ustvarjanju ownCloud imen skupin.", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Atribut LDAP, uporabljen pri ustvarjanju imen skupin ownCloud.", "in bytes" => "v bajtih", "in seconds. A change empties the cache." => "v sekundah. Sprememba izprazni predpomnilnik.", -"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Pustite prazno za uporabniÅ¡ko ime (privzeto). V nasprotnem primeru navedite LDAP/AD atribut.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Pustite prazno za uporabniÅ¡ko ime (privzeto). V nasprotnem primeru navedite atribut LDAP/AD.", "Help" => "PomoÄ" ); diff --git a/apps/user_ldap/l10n/ta_LK.php b/apps/user_ldap/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..2028becaf98aeff9fb823dd23e23dc1b3c5caa03 --- /dev/null +++ b/apps/user_ldap/l10n/ta_LK.php @@ -0,0 +1,27 @@ + "ஓமà¯à®ªà¯à®©à®°à¯", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "நீஙà¯à®•à®³à¯ SSL சேவையை தவிர உடனà¯à®ªà®Ÿà¯ வரைமà¯à®±à¯ˆà®¯à¯ˆ தவிரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯. பிறக௠ldaps:.// உடன௠ஆரமà¯à®ªà®¿à®•à¯à®•à®µà¯à®®à¯", +"Base DN" => "தள DN", +"You can specify Base DN for users and groups in the Advanced tab" => "நீஙà¯à®•à®³à¯ பயனாளரà¯à®•à®³à¯à®•à¯à®•à¯à®®à¯ மேனà¯à®®à¯ˆ ததà¯à®¤à®²à®¿à®²à¯ உளà¯à®³ கà¯à®´à¯à®µà®¿à®±à¯à®•à¯à®®à¯ தள DN ஠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®²à®¾à®®à¯ ", +"User DN" => "பயனாளர௠DN", +"Password" => "கடவà¯à®šà¯à®šà¯Šà®²à¯", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "எநà¯à®¤ ஒதà¯à®•à¯à®•à¯€à®Ÿà¯à®®à¯ இலà¯à®²à®¾à®®à®²à¯, உதாரணமà¯. \"objectClass=posixGroup\".", +"Port" => "தà¯à®±à¯ˆ ", +"Base User Tree" => "தள பயனாளர௠மரமà¯", +"Base Group Tree" => "தள கà¯à®´à¯ மரமà¯", +"Group-Member association" => "கà¯à®´à¯ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ சஙà¯à®•à®®à¯", +"Use TLS" => "TLS ஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯", +"Do not use it for SSL connections, it will fail." => "SSL இணைபà¯à®ªà®¿à®±à¯à®•à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯‡à®£à¯à®Ÿà®¾à®®à¯, அத௠தோலà¯à®µà®¿à®¯à®Ÿà¯ˆà®¯à¯à®®à¯.", +"Case insensitve LDAP server (Windows)" => "உணரà¯à®šà¯à®šà®¿à®¯à®¾à®© LDAP சேவையகம௠(சாளரஙà¯à®•à®³à¯)", +"Turn off SSL certificate validation." => "SSL சானà¯à®±à®¿à®¤à®´à®¿à®©à¯ செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à¯ˆ நிறà¯à®¤à¯à®¤à®¿à®µà®¿à®Ÿà®µà¯à®®à¯", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "இநà¯à®¤ தெரிவà¯à®•à®³à®¿à®²à¯ மடà¯à®Ÿà¯à®®à¯ இணைபà¯à®ªà¯ வேலைசெயà¯à®¤à®¾à®²à¯, உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ owncloud சேவையகதà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ LDAP சேவையகதà¯à®¤à®¿à®©à¯ SSL சானà¯à®±à®¿à®¤à®´à¯ˆ இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯à®µà¯à®®à¯", +"Not recommended, use for testing only." => "பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ, சோதனைகà¯à®•à®¾à®• மடà¯à®Ÿà¯à®®à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯.", +"User Display Name Field" => "பயனாளர௠காடà¯à®šà®¿à®ªà¯à®ªà¯†à®¯à®°à¯ பà¯à®²à®®à¯", +"The LDAP attribute to use to generate the user`s ownCloud name." => "பயனாளரின௠ownCloud பெயரை உரà¯à®µà®¾à®•à¯à®• LDAP பணà¯à®ªà¯à®•à¯à®•à¯‚றை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯.", +"Group Display Name Field" => "கà¯à®´à¯à®µà®¿à®©à¯ காடà¯à®šà®¿ பெயர௠பà¯à®²à®®à¯ ", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "ownCloud கà¯à®´à¯à®•à¯à®•à®³à®¿à®©à¯ பெயரà¯à®•à®³à¯ˆ உரà¯à®µà®¾à®•à¯à®• LDAP பணà¯à®ªà¯à®•à¯à®•à¯‚றை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯.", +"in bytes" => "bytes களில௠", +"in seconds. A change empties the cache." => "செகà¯à®•à®©à¯à®•à®³à®¿à®²à¯. ஒர௠மாறà¯à®±à®®à¯ இடைமாறà¯à®±à¯à®¨à®¿à®©à¯ˆà®µà®•à®¤à¯à®¤à¯ˆ வெறà¯à®±à®¿à®Ÿà®®à®¾à®•à¯à®•à¯à®®à¯.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "பயனாளர௠பெயரிறà¯à®•à¯ வெறà¯à®±à®¿à®Ÿà®®à®¾à®• விடவà¯à®®à¯ (பொத௠இரà¯à®ªà¯à®ªà¯). இலà¯à®²à®¾à®µà®¿à®Ÿà®¿à®©à¯ LDAP/AD பணà¯à®ªà¯à®•à¯à®•à¯‚றை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà¯à®®à¯.", +"Help" => "உதவி" +); diff --git a/apps/user_ldap/l10n/uk.php b/apps/user_ldap/l10n/uk.php index fd6a88d23728587dbedc20722500587af891e5f4..1bbd24f679b61797061f118b78e4812546d4d0a4 100644 --- a/apps/user_ldap/l10n/uk.php +++ b/apps/user_ldap/l10n/uk.php @@ -1,4 +1,37 @@ "ХоÑÑ‚", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Можна не вказувати протокол, Ñкщо вам не потрібен SSL. Тоді почніть з ldaps://", +"Base DN" => "Базовий DN", +"You can specify Base DN for users and groups in the Advanced tab" => "Ви можете задати Базовий DN Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів Ñ– груп на вкладинці Додатково", +"User DN" => "DN КориÑтувача", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN клієнтÑького кориÑтувача Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²'Ñзки, наприклад: uid=agent,dc=example,dc=com. Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ñ–Ð¼Ð½Ð¾Ð³Ð¾ доÑтупу, залиште DN Ñ– Пароль порожніми.", "Password" => "Пароль", +"For anonymous access, leave DN and Password empty." => "Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ñ–Ð¼Ð½Ð¾Ð³Ð¾ доÑтупу, залиште DN Ñ– Пароль порожніми.", +"User Login Filter" => "Фільтр КориÑтувачів, що під'єднуютьÑÑ", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Визначає фільтр, Ñкий заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ Ñпробі входу. %%uid замінює ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача при вході.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "викориÑтовуйте %%uid заповнювач, наприклад: \"uid=%%uid\"", +"User List Filter" => "Фільтр СпиÑку КориÑтувачів", +"Defines the filter to apply, when retrieving users." => "Визначає фільтр, Ñкий заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ отриманні кориÑтувачів", +"without any placeholder, e.g. \"objectClass=person\"." => "без будь-Ñкого заповнювача, наприклад: \"objectClass=person\".", +"Group Filter" => "Фільтр Груп", +"Defines the filter to apply, when retrieving groups." => "Визначає фільтр, Ñкий заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ отриманні груп.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "без будь-Ñкого заповнювача, наприклад: \"objectClass=posixGroup\".", +"Port" => "Порт", +"Base User Tree" => "ОÑновне Дерево КориÑтувачів", +"Base Group Tree" => "ОÑновне Дерево Груп", +"Group-Member association" => "ÐÑÐ¾Ñ†Ñ–Ð°Ñ†Ñ–Ñ Ð“Ñ€ÑƒÐ¿Ð°-Член", +"Use TLS" => "ВикориÑтовуйте TLS", +"Do not use it for SSL connections, it will fail." => "Ðе викориÑтовуйте його Ð´Ð»Ñ SSL з'єднань, це не буде виконано.", +"Case insensitve LDAP server (Windows)" => "Ðечутливий до регіÑтру LDAP Ñервер (Windows)", +"Turn off SSL certificate validation." => "Вимкнути перевірку SSL Ñертифіката.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Якщо з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑ” лише з цією опцією, імпортуйте SSL Ñертифікат LDAP Ñервера у ваший ownCloud Ñервер.", +"Not recommended, use for testing only." => "Ðе рекомендуєтьÑÑ, викориÑтовуйте лише Ð´Ð»Ñ Ñ‚ÐµÑтів.", +"User Display Name Field" => "Поле, Ñке відображає Ім'Ñ ÐšÐ¾Ñ€Ð¸Ñтувача", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Ðтрибут LDAP, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— імен кориÑтувачів ownCloud.", +"Group Display Name Field" => "Поле, Ñке відображає Ім'Ñ Ð“Ñ€ÑƒÐ¿Ð¸", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Ðтрибут LDAP, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— імен груп ownCloud.", +"in bytes" => "в байтах", +"in seconds. A change empties the cache." => "в Ñекундах. Зміна очищує кеш.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Залиште порожнім Ð´Ð»Ñ Ñ–Ð¼ÐµÐ½Ñ– кориÑтувача (за замовчаннÑм). Інакше, вкажіть атрибут LDAP/AD.", "Help" => "Допомога" ); diff --git a/apps/user_ldap/l10n/vi.php b/apps/user_ldap/l10n/vi.php index 7a6ac2665c6666b2fbeb3ad1306bd557747a138b..3d32c8125b88379d18167dc9522689554abce003 100644 --- a/apps/user_ldap/l10n/vi.php +++ b/apps/user_ldap/l10n/vi.php @@ -1,13 +1,37 @@ "Máy chủ", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Bạn có thể bá» qua các giao thức, ngoại trừ SSL. Sau đó bắt đầu vá»›i ldaps://", +"Base DN" => "DN cÆ¡ bản", +"You can specify Base DN for users and groups in the Advanced tab" => "Bạn có thể chỉ định DN cÆ¡ bản cho ngÆ°á»i dùng và các nhóm trong tab Advanced", +"User DN" => "NgÆ°á»i dùng DN", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "Các DN của ngÆ°á»i sá»­ dụng đã được thá»±c hiện, ví dụ nhÆ° uid =agent , dc = example, dc = com. Äể truy cập nặc danh ,DN và mật khẩu trống.", "Password" => "Mật khẩu", +"For anonymous access, leave DN and Password empty." => "Cho phép truy cập nặc danh , DN và mật khẩu trống.", +"User Login Filter" => "Lá»c ngÆ°á»i dùng đăng nhập", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Xác định các bá»™ lá»c để áp dụng, khi đăng nhập . uid%% thay thế tên ngÆ°á»i dùng trong các lần đăng nhập.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "use %%uid placeholder, e.g. \"uid=%%uid\"", +"User List Filter" => "Lá»c danh sách thành viên", +"Defines the filter to apply, when retrieving users." => "Xác định các bá»™ lá»c để áp dụng, khi ngÆ°á»i dụng sá»­ dụng.", +"without any placeholder, e.g. \"objectClass=person\"." => "mà không giữ chá»— nào, ví dụ nhÆ° \"objectClass = person\".", +"Group Filter" => "Bá»™ lá»c nhóm", +"Defines the filter to apply, when retrieving groups." => "Xác định các bá»™ lá»c để áp dụng, khi nhóm sá»­ dụng.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "mà không giữ chá»— nào, ví dụ nhÆ° \"objectClass = osixGroup\".", "Port" => "Cổng", +"Base User Tree" => "Cây ngÆ°á»i dùng cÆ¡ bản", +"Base Group Tree" => "Cây nhóm cÆ¡ bản", +"Group-Member association" => "Nhóm thành viên Cá»™ng đồng", "Use TLS" => "Sá»­ dụng TLS", +"Do not use it for SSL connections, it will fail." => "Kết nối SSL bị lá»—i. ", +"Case insensitve LDAP server (Windows)" => "TrÆ°á»ng hợp insensitve LDAP máy chủ (Windows)", "Turn off SSL certificate validation." => "Tắt xác thá»±c chứng nhận SSL", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Nếu kết nối chỉ hoạt Ä‘á»™ng vá»›i tùy chá»n này, vui lòng import LDAP certificate SSL trong máy chủ ownCloud của bạn.", "Not recommended, use for testing only." => "Không khuyến khích, Chỉ sá»­ dụng để thá»­ nghiệm.", "User Display Name Field" => "Hiển thị tên ngÆ°á»i sá»­ dụng", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Các thuá»™c tính LDAP sá»­ dụng để tạo tên ngÆ°á»i dùng ownCloud.", "Group Display Name Field" => "Hiển thị tên nhóm", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Các thuá»™c tính LDAP sá»­ dụng để tạo các nhóm ownCloud.", "in bytes" => "Theo Byte", +"in seconds. A change empties the cache." => "trong vài giây. Má»™t sá»± thay đổi bá»™ nhá»› cache.", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Äể trống tên ngÆ°á»i dùng (mặc định). Nếu không chỉ định thuá»™c tính LDAP/AD", "Help" => "Giúp đỡ" ); diff --git a/apps/user_ldap/l10n/zh_CN.php b/apps/user_ldap/l10n/zh_CN.php index 5f6200db404673fa3b3fdfb4247e1b0aeb0509ef..bb961d534b739a5e41494757f6bf48206c835a1b 100644 --- a/apps/user_ldap/l10n/zh_CN.php +++ b/apps/user_ldap/l10n/zh_CN.php @@ -1,9 +1,36 @@ "主机", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "å¯ä»¥å¿½ç•¥å议,但如è¦ä½¿ç”¨SSL,则需以ldaps://开头", "Base DN" => "Base DN", "You can specify Base DN for users and groups in the Advanced tab" => "您å¯ä»¥åœ¨é«˜çº§é€‰é¡¹å¡é‡Œä¸ºç”¨æˆ·å’Œç»„指定Base DN", "User DN" => "User DN", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "客户端使用的DN必须与绑定的相åŒï¼Œæ¯”如uid=agent,dc=example,dc=com\n如需匿å访问,将DN和密ç ä¿ç•™ä¸ºç©º", "Password" => "密ç ", +"For anonymous access, leave DN and Password empty." => "å¯ç”¨åŒ¿å访问,将DN和密ç ä¿ç•™ä¸ºç©º", +"User Login Filter" => "用户登录过滤", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "定义当å°è¯•ç™»å½•æ—¶çš„过滤器。 在登录过程中,%%uid将会被用户å替æ¢", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "使用 %%uid作为å ä½ç¬¦ï¼Œä¾‹å¦‚“uid=%%uidâ€", +"User List Filter" => "用户列表过滤", +"Defines the filter to apply, when retrieving users." => "定义拉å–用户时的过滤器", +"without any placeholder, e.g. \"objectClass=person\"." => "没有任何å ä½ç¬¦,如 \"objectClass=person\".", +"Group Filter" => "组过滤", +"Defines the filter to apply, when retrieving groups." => "定义拉å–组信æ¯æ—¶çš„过滤器", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "无需å ä½ç¬¦ï¼Œä¾‹å¦‚\"objectClass=posixGroup\"", "Port" => "端å£", +"Base User Tree" => "基础用户树", +"Base Group Tree" => "基础组树", +"Group-Member association" => "组æˆå‘˜å…³è”", +"Use TLS" => "使用TLS", +"Do not use it for SSL connections, it will fail." => "ä¸è¦åœ¨SSL链接中使用此选项,会导致失败。", +"Case insensitve LDAP server (Windows)" => "大å°å†™æ•æ„ŸLDAPæœåŠ¡å™¨(Windows)", +"Turn off SSL certificate validation." => "关闭SSLè¯ä¹¦éªŒè¯", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "如果链接仅在此选项时å¯ç”¨ï¼Œåœ¨æ‚¨çš„ownCloudæœåŠ¡å™¨ä¸­å¯¼å…¥LDAPæœåŠ¡å™¨çš„SSLè¯ä¹¦ã€‚", +"Not recommended, use for testing only." => "æš‚ä¸æŽ¨è,仅供测试", +"User Display Name Field" => "用户显示å称字段", +"The LDAP attribute to use to generate the user`s ownCloud name." => "用æ¥ç”Ÿæˆç”¨æˆ·çš„ownCloudå称的 LDAP属性", +"Group Display Name Field" => "组显示å称字段", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "用æ¥ç”Ÿæˆç»„çš„ownCloudå称的LDAP属性", +"in bytes" => "字节数", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "将用户å称留空(默认)。å¦åˆ™æŒ‡å®šä¸€ä¸ªLDAP/AD属性", "Help" => "帮助" ); diff --git a/apps/user_ldap/l10n/zh_TW.php b/apps/user_ldap/l10n/zh_TW.php new file mode 100644 index 0000000000000000000000000000000000000000..abc1b03d49dbca9e825c2d44d41e33fa274fc7c2 --- /dev/null +++ b/apps/user_ldap/l10n/zh_TW.php @@ -0,0 +1,6 @@ + "密碼", +"Use TLS" => "使用TLS", +"Turn off SSL certificate validation." => "關閉 SSL 憑證驗證", +"Help" => "說明" +); diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 66007d0953601e94394f7f9593e14c8893b96d7d..042076fe62e881917a5cb0989e835531594f8f2c 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -25,6 +25,8 @@ namespace OCA\user_ldap\lib; abstract class Access { protected $connection; + //never ever check this var directly, always use getPagedSearchResultState + protected $pagedSearchedSuccessful; public function setConnector(Connection &$connection) { $this->connection = $connection; @@ -38,11 +40,13 @@ abstract class Access { * @brief reads a given attribute for an LDAP record identified by a DN * @param $dn the record in question * @param $attr the attribute that shall be retrieved - * @returns the values in an array on success, false otherwise + * if empty, just check the record's existence + * @returns an array of values on success or an empty + * array if $attr is empty, false otherwise * - * Reads an attribute from an LDAP entry + * Reads an attribute from an LDAP entry or check if entry exists */ - public function readAttribute($dn, $attr) { + public function readAttribute($dn, $attr, $filter = 'objectClass=*') { if(!$this->checkConnection()) { \OCP\Util::writeLog('user_ldap', 'No LDAP Connector assigned, access impossible for readAttribute.', \OCP\Util::WARN); return false; @@ -53,13 +57,22 @@ abstract class Access { \OCP\Util::writeLog('user_ldap', 'LDAP resource not available.', \OCP\Util::DEBUG); return false; } - $rr = @ldap_read($cr, $dn, 'objectClass=*', array($attr)); + $rr = @ldap_read($cr, $dn, $filter, array($attr)); + $dn = $this->DNasBaseParameter($dn); if(!is_resource($rr)) { - \OCP\Util::writeLog('user_ldap', 'readAttribute '.$attr.' failed for DN '.$dn, \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', 'readAttribute failed for DN '.$dn, \OCP\Util::DEBUG); //in case an error occurs , e.g. object does not exist return false; } + if (empty($attr)) { + \OCP\Util::writeLog('user_ldap', 'readAttribute: '.$dn.' found', \OCP\Util::DEBUG); + return array(); + } $er = ldap_first_entry($cr, $rr); + if(!is_resource($er)) { + //did not match the filter, return false + return false; + } //LDAP attributes are not case sensitive $result = \OCP\Util::mb_array_change_key_case(ldap_get_attributes($cr, $er), MB_CASE_LOWER, 'UTF-8'); $attr = mb_strtolower($attr, 'UTF-8'); @@ -67,7 +80,13 @@ abstract class Access { if(isset($result[$attr]) && $result[$attr]['count'] > 0) { $values = array(); for($i=0;$i<$result[$attr]['count'];$i++) { - $values[] = $this->resemblesDN($attr) ? $this->sanitizeDN($result[$attr][$i]) : $result[$attr][$i]; + if($this->resemblesDN($attr)) { + $values[] = $this->sanitizeDN($result[$attr][$i]); + } elseif(strtolower($attr) == 'objectguid') { + $values[] = $this->convertObjectGUID2Str($result[$attr][$i]); + } else { + $values[] = $result[$attr][$i]; + } } return $values; } @@ -101,6 +120,21 @@ abstract class Access { //make comparisons and everything work $dn = mb_strtolower($dn, 'UTF-8'); + //escape DN values according to RFC 2253 – this is already done by ldap_explode_dn + //to use the DN in search filters, \ needs to be escaped to \5c additionally + //to use them in bases, we convert them back to simple backslashes in readAttribute() + $replacements = array( + '\,' => '\5c2C', + '\=' => '\5c3D', + '\+' => '\5c2B', + '\<' => '\5c3C', + '\>' => '\5c3E', + '\;' => '\5c3B', + '\"' => '\5c22', + '\#' => '\5c23', + ); + $dn = str_replace(array_keys($replacements),array_values($replacements), $dn); + return $dn; } @@ -209,7 +243,6 @@ abstract class Access { * returns the internal ownCloud name for the given LDAP DN of the user, false on DN outside of search DN */ public function dn2ocname($dn, $ldapname = null, $isUser = true) { - $dn = $this->sanitizeDN($dn); $table = $this->getMapTable($isUser); if($isUser) { $fncFindMappedName = 'findMappedUser'; @@ -339,7 +372,8 @@ abstract class Access { $ownCloudNames = array(); foreach($ldapObjects as $ldapObject) { - $ocname = $this->dn2ocname($ldapObject['dn'], $ldapObject[$nameAttribute], $isUsers); + $nameByLDAP = isset($ldapObject[$nameAttribute]) ? $ldapObject[$nameAttribute] : null; + $ocname = $this->dn2ocname($ldapObject['dn'], $nameByLDAP, $isUsers); if($ocname) { $ownCloudNames[] = $ocname; } @@ -405,7 +439,6 @@ abstract class Access { */ private function mapComponent($dn, $ocname, $isUser = true) { $table = $this->getMapTable($isUser); - $dn = $this->sanitizeDN($dn); $sqlAdjustment = ''; $dbtype = \OCP\Config::getSystemValue('dbtype'); @@ -440,12 +473,12 @@ abstract class Access { return true; } - public function fetchListOfUsers($filter, $attr) { - return $this->fetchList($this->searchUsers($filter, $attr), (count($attr) > 1)); + public function fetchListOfUsers($filter, $attr, $limit = null, $offset = null) { + return $this->fetchList($this->searchUsers($filter, $attr, $limit, $offset), (count($attr) > 1)); } - public function fetchListOfGroups($filter, $attr) { - return $this->fetchList($this->searchGroups($filter, $attr), (count($attr) > 1)); + public function fetchListOfGroups($filter, $attr, $limit = null, $offset = null) { + return $this->fetchList($this->searchGroups($filter, $attr, $limit, $offset), (count($attr) > 1)); } private function fetchList($list, $manyAttributes) { @@ -469,8 +502,8 @@ abstract class Access { * * Executes an LDAP search */ - public function searchUsers($filter, $attr = null) { - return $this->search($filter, $this->connection->ldapBaseUsers, $attr); + public function searchUsers($filter, $attr = null, $limit = null, $offset = null) { + return $this->search($filter, $this->connection->ldapBaseUsers, $attr, $limit, $offset); } /** @@ -481,8 +514,8 @@ abstract class Access { * * Executes an LDAP search */ - public function searchGroups($filter, $attr = null) { - return $this->search($filter, $this->connection->ldapBaseGroups, $attr); + public function searchGroups($filter, $attr = null, $limit = null, $offset = null) { + return $this->search($filter, $this->connection->ldapBaseGroups, $attr, $limit, $offset); } /** @@ -494,29 +527,53 @@ abstract class Access { * * Executes an LDAP search */ - private function search($filter, $base, $attr = null) { + private function search($filter, $base, $attr = null, $limit = null, $offset = null, $skipHandling = false) { if(!is_null($attr) && !is_array($attr)) { $attr = array(mb_strtolower($attr, 'UTF-8')); } - // See if we have a resource + // See if we have a resource, in case not cancel with message $link_resource = $this->connection->getConnectionResource(); - if(is_resource($link_resource)) { - $sr = ldap_search($link_resource, $base, $filter, $attr); - $findings = ldap_get_entries($link_resource, $sr ); - - // if we're here, probably no connection resource is returned. - // to make ownCloud behave nicely, we simply give back an empty array. - if(is_null($findings)) { - return array(); - } - } else { + if(!is_resource($link_resource)) { // Seems like we didn't find any resource. // Return an empty array just like before. \OCP\Util::writeLog('user_ldap', 'Could not search, because resource is missing.', \OCP\Util::DEBUG); return array(); } + //check wether paged search should be attempted + $pagedSearchOK = $this->initPagedSearch($filter, $base, $attr, $limit, $offset); + + $sr = ldap_search($link_resource, $base, $filter, $attr); + if(!$sr) { + \OCP\Util::writeLog('user_ldap', 'Error when searching: '.ldap_error($link_resource).' code '.ldap_errno($link_resource), \OCP\Util::ERROR); + \OCP\Util::writeLog('user_ldap', 'Attempt for Paging? '.print_r($pagedSearchOK, true), \OCP\Util::ERROR); + return array(); + } + $findings = ldap_get_entries($link_resource, $sr ); + if($pagedSearchOK) { + \OCP\Util::writeLog('user_ldap', 'Paged search successful', \OCP\Util::INFO); + ldap_control_paged_result_response($link_resource, $sr, $cookie); + \OCP\Util::writeLog('user_ldap', 'Set paged search cookie '.$cookie, \OCP\Util::INFO); + $this->setPagedResultCookie($filter, $limit, $offset, $cookie); + //browsing through prior pages to get the cookie for the new one + if($skipHandling) { + return; + } + //if count is bigger, then the server does not support paged search. Instead, he did a normal search. We set a flag here, so the callee knows how to deal with it. + if($findings['count'] <= $limit) { + $this->pagedSearchedSuccessful = true; + } + } else { + \OCP\Util::writeLog('user_ldap', 'Paged search failed :(', \OCP\Util::INFO); + } + + // if we're here, probably no connection resource is returned. + // to make ownCloud behave nicely, we simply give back an empty array. + if(is_null($findings)) { + return array(); + } + if(!is_null($attr)) { $selection = array(); $multiarray = false; @@ -556,7 +613,19 @@ abstract class Access { } } } - return $selection; + $findings = $selection; + } + //we slice the findings, when + //a) paged search insuccessful, though attempted + //b) no paged search, but limit set + if((!$this->pagedSearchedSuccessful + && $pagedSearchOK) + || ( + !$pagedSearchOK + && !is_null($limit) + ) + ) { + $findings = array_slice($findings, intval($offset), $limit); } return $findings; } @@ -622,6 +691,7 @@ abstract class Access { } public function areCredentialsValid($name, $password) { + $name = $this->DNasBaseParameter($name); $testConnection = clone $this->connection; $credentials = array( 'ldapAgentName' => $name, @@ -656,7 +726,7 @@ abstract class Access { $this->connection->ldapUuidAttribute = $attribute; return true; } - \OCP\Util::writeLog('user_ldap', 'The looked for uuid attr is not '.$attribute.', result was '.print_r($value,true), \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', 'The looked for uuid attr is not '.$attribute.', result was '.print_r($value, true), \OCP\Util::DEBUG); } return false; @@ -664,6 +734,7 @@ abstract class Access { public function getUUID($dn) { if($this->detectUuidAttribute($dn)) { + \OCP\Util::writeLog('user_ldap', 'UUID Checking \ UUID for '.$dn.' using '. $this->connection->ldapUuidAttribute, \OCP\Util::DEBUG); $uuid = $this->readAttribute($dn, $this->connection->ldapUuidAttribute); if(!is_array($uuid) && $this->connection->ldapOverrideUuidAttribute) { $this->detectUuidAttribute($dn, true); @@ -679,4 +750,135 @@ abstract class Access { } return $uuid; } + + /** + * @brief converts a binary ObjectGUID into a string representation + * @param $oguid the ObjectGUID in it's binary form as retrieved from AD + * @returns String + * + * converts a binary ObjectGUID into a string representation + * http://www.php.net/manual/en/function.ldap-get-values-len.php#73198 + */ + private function convertObjectGUID2Str($oguid) { + $hex_guid = bin2hex($oguid); + $hex_guid_to_guid_str = ''; + for($k = 1; $k <= 4; ++$k) { + $hex_guid_to_guid_str .= substr($hex_guid, 8 - 2 * $k, 2); + } + $hex_guid_to_guid_str .= '-'; + for($k = 1; $k <= 2; ++$k) { + $hex_guid_to_guid_str .= substr($hex_guid, 12 - 2 * $k, 2); + } + $hex_guid_to_guid_str .= '-'; + for($k = 1; $k <= 2; ++$k) { + $hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2); + } + $hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4); + $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20); + + return strtoupper($hex_guid_to_guid_str); + } + + /** + * @brief converts a stored DN so it can be used as base parameter for LDAP queries + * @param $dn the DN + * @returns String + * + * converts a stored DN so it can be used as base parameter for LDAP queries + * internally we store them for usage in LDAP filters + */ + private function DNasBaseParameter($dn) { + return str_replace('\\5c', '\\', $dn); + } + + /** + * @brief get a cookie for the next LDAP paged search + * @param $filter the search filter to identify the correct search + * @param $limit the limit (or 'pageSize'), to identify the correct search well + * @param $offset the offset for the new search to identify the correct search really good + * @returns string containing the key or empty if none is cached + */ + private function getPagedResultCookie($filter, $limit, $offset) { + if($offset == 0) { + return ''; + } + $offset -= $limit; + //we work with cache here + $cachekey = 'lc' . dechex(crc32($filter)) . '-' . $limit . '-' . $offset; + $cookie = $this->connection->getFromCache($cachekey); + if(is_null($cookie)) { + $cookie = ''; + } + return $cookie; + } + + /** + * @brief set a cookie for LDAP paged search run + * @param $filter the search filter to identify the correct search + * @param $limit the limit (or 'pageSize'), to identify the correct search well + * @param $offset the offset for the run search to identify the correct search really good + * @param $cookie string containing the cookie returned by ldap_control_paged_result_response + * @return void + */ + private function setPagedResultCookie($filter, $limit, $offset) { + if(!empty($cookie)) { + $cachekey = 'lc' . dechex(crc32($filter)) . '-' . $limit . '-' . $offset; + $cookie = $this->connection->writeToCache($cachekey, $cookie); + } + } + + /** + * @brief check wether the most recent paged search was successful. It flushed the state var. Use it always after a possible paged search. + * @return true on success, null or false otherwise + */ + public function getPagedSearchResultState() { + $result = $this->pagedSearchedSuccessful; + $this->pagedSearchedSuccessful = null; + return $result; + } + + + /** + * @brief prepares a paged search, if possible + * @param $filter the LDAP filter for the search + * @param $base the LDAP subtree that shall be searched + * @param $attr optional, when a certain attribute shall be filtered outside + * @param $limit + * @param $offset + * + */ + private function initPagedSearch($filter, $base, $attr, $limit, $offset) { + $pagedSearchOK = false; + if($this->connection->hasPagedResultSupport && !is_null($limit)) { + $offset = intval($offset); //can be null + \OCP\Util::writeLog('user_ldap', 'initializing paged search for Filter'.$filter.' base '.$base.' attr '.print_r($attr, true). ' limit ' .$limit.' offset '.$offset, \OCP\Util::DEBUG); + //get the cookie from the search for the previous search, required by LDAP + $cookie = $this->getPagedResultCookie($filter, $limit, $offset); + if(empty($cookie) && ($offset > 0)) { + //no cookie known, although the offset is not 0. Maybe cache run out. We need to start all over *sigh* (btw, Dear Reader, did you need LDAP paged searching was designed by MSFT?) + $reOffset = ($offset - $limit) < 0 ? 0 : $offset - $limit; + //a bit recursive, $offset of 0 is the exit + \OCP\Util::writeLog('user_ldap', 'Looking for cookie L/O '.$limit.'/'.$reOffset, \OCP\Util::INFO); + $this->search($filter, $base, $attr, $limit, $reOffset, true); + $cookie = $this->getPagedResultCookie($filter, $limit, $offset); + //still no cookie? obviously, the server does not like us. Let's skip paging efforts. + //TODO: remember this, probably does not change in the next request... + if(empty($cookie)) { + $cookie = null; + } + } + if(!is_null($cookie)) { + if($offset > 0) { + \OCP\Util::writeLog('user_ldap', 'Cookie '.$cookie, \OCP\Util::INFO); + } + $pagedSearchOK = ldap_control_paged_result($this->connection->getConnectionResource(), $limit, false, $cookie); + \OCP\Util::writeLog('user_ldap', 'Ready for a paged search', \OCP\Util::INFO); + } else { + \OCP\Util::writeLog('user_ldap', 'No paged search for us, Cpt., Limit '.$limit.' Offset '.$offset, \OCP\Util::INFO); + } + } + + return $pagedSearchOK; + } + } \ No newline at end of file diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index bf65d9ad91c8870bc41cf7d0eafe24ce11de1e7d..687e2692270e19bc8cb219e97ad6eebe55de450a 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -56,15 +56,20 @@ class Connection { 'ldapUuidAttribute' => null, 'ldapOverrideUuidAttribute' => null, 'homeFolderNamingRule' => null, + 'hasPagedResultSupport' => false, ); public function __construct($configID = 'user_ldap') { $this->configID = $configID; $this->cache = \OC_Cache::getGlobalCache(); + $this->config['hasPagedResultSupport'] = (function_exists('ldap_control_paged_result') && function_exists('ldap_control_paged_result_response')); + \OCP\Util::writeLog('user_ldap', 'PHP supports paged results? '.print_r($this->config['hasPagedResultSupport'], true), \OCP\Util::INFO); } public function __destruct() { - @ldap_unbind($this->ldapConnectionRes); + if(is_resource($this->ldapConnectionRes)) { + @ldap_unbind($this->ldapConnectionRes); + }; } public function __get($name) { @@ -84,7 +89,7 @@ class Connection { \OCP\Util::writeLog('user_ldap', 'Set config ldapUuidAttribute to '.$value, \OCP\Util::DEBUG); $this->config[$name] = $value; if(!empty($this->configID)) { - \OCP\Config::getAppValue($this->configID, 'ldap_uuid_attribute', $value); + \OCP\Config::setAppValue($this->configID, 'ldap_uuid_attribute', $value); } $changed = true; } @@ -175,22 +180,22 @@ class Connection { * Caches the general LDAP configuration. */ private function readConfiguration($force = false) { - \OCP\Util::writeLog('user_ldap','Checking conf state: isConfigured? '.print_r($this->configured, true).' isForce? '.print_r($force, true).' configID? '.print_r($this->configID, true), \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', 'Checking conf state: isConfigured? '.print_r($this->configured, true).' isForce? '.print_r($force, true).' configID? '.print_r($this->configID, true), \OCP\Util::DEBUG); if((!$this->configured || $force) && !is_null($this->configID)) { - \OCP\Util::writeLog('user_ldap','Reading the configuration', \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', 'Reading the configuration', \OCP\Util::DEBUG); $this->config['ldapHost'] = \OCP\Config::getAppValue($this->configID, 'ldap_host', ''); $this->config['ldapPort'] = \OCP\Config::getAppValue($this->configID, 'ldap_port', 389); - $this->config['ldapAgentName'] = \OCP\Config::getAppValue($this->configID, 'ldap_dn',''); - $this->config['ldapAgentPassword'] = base64_decode(\OCP\Config::getAppValue($this->configID, 'ldap_agent_password','')); + $this->config['ldapAgentName'] = \OCP\Config::getAppValue($this->configID, 'ldap_dn', ''); + $this->config['ldapAgentPassword'] = base64_decode(\OCP\Config::getAppValue($this->configID, 'ldap_agent_password', '')); $this->config['ldapBase'] = \OCP\Config::getAppValue($this->configID, 'ldap_base', ''); - $this->config['ldapBaseUsers'] = \OCP\Config::getAppValue($this->configID, 'ldap_base_users',$this->config['ldapBase']); + $this->config['ldapBaseUsers'] = \OCP\Config::getAppValue($this->configID, 'ldap_base_users', $this->config['ldapBase']); $this->config['ldapBaseGroups'] = \OCP\Config::getAppValue($this->configID, 'ldap_base_groups', $this->config['ldapBase']); - $this->config['ldapTLS'] = \OCP\Config::getAppValue($this->configID, 'ldap_tls',0); + $this->config['ldapTLS'] = \OCP\Config::getAppValue($this->configID, 'ldap_tls', 0); $this->config['ldapNoCase'] = \OCP\Config::getAppValue($this->configID, 'ldap_nocase', 0); $this->config['turnOffCertCheck'] = \OCP\Config::getAppValue($this->configID, 'ldap_turn_off_cert_check', 0); $this->config['ldapUserDisplayName'] = mb_strtolower(\OCP\Config::getAppValue($this->configID, 'ldap_display_name', 'uid'), 'UTF-8'); - $this->config['ldapUserFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_userlist_filter','objectClass=person'); - $this->config['ldapGroupFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_group_filter','(objectClass=posixGroup)'); + $this->config['ldapUserFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_userlist_filter', 'objectClass=person'); + $this->config['ldapGroupFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_group_filter', '(objectClass=posixGroup)'); $this->config['ldapLoginFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_login_filter', '(uid=%uid)'); $this->config['ldapGroupDisplayName'] = mb_strtolower(\OCP\Config::getAppValue($this->configID, 'ldap_group_display_name', 'uid'), 'UTF-8'); $this->config['ldapQuotaAttribute'] = \OCP\Config::getAppValue($this->configID, 'ldap_quota_attr', ''); @@ -258,7 +263,7 @@ class Connection { if(empty($this->config['ldapGroupFilter']) && empty($this->config['ldapGroupMemberAssocAttr'])) { \OCP\Util::writeLog('user_ldap', 'No group filter is specified, LDAP group feature will not be used.', \OCP\Util::INFO); } - if(!in_array($this->config['ldapUuidAttribute'], array('auto','entryuuid', 'nsuniqueid', 'objectguid')) && (!is_null($this->configID))) { + if(!in_array($this->config['ldapUuidAttribute'], array('auto', 'entryuuid', 'nsuniqueid', 'objectguid')) && (!is_null($this->configID))) { \OCP\Config::setAppValue($this->configID, 'ldap_uuid_attribute', 'auto'); \OCP\Util::writeLog('user_ldap', 'Illegal value for the UUID Attribute, reset to autodetect.', \OCP\Util::INFO); } diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php index f765151456a462ea3d1b4c653bc5f8f1737fe4e4..2ee936d29a8d40d296e0e574eb7b9996717c314b 100644 --- a/apps/user_ldap/settings.php +++ b/apps/user_ldap/settings.php @@ -26,16 +26,12 @@ OCP\Util::addscript('user_ldap', 'settings'); OCP\Util::addstyle('user_ldap', 'settings'); if ($_POST) { + $clearCache = false; foreach($params as $param) { if(isset($_POST[$param])) { + $clearCache = true; if('ldap_agent_password' == $param) { OCP\Config::setAppValue('user_ldap', $param, base64_encode($_POST[$param])); - } elseif('ldap_cache_ttl' == $param) { - if(OCP\Config::getAppValue('user_ldap', $param,'') != $_POST[$param]) { - $ldap = new \OCA\user_ldap\lib\Connection('user_ldap'); - $ldap->clearCache(); - OCP\Config::setAppValue('user_ldap', $param, $_POST[$param]); - } } elseif('home_folder_naming_rule' == $param) { $value = empty($_POST[$param]) ? 'opt:username' : 'attr:'.$_POST[$param]; OCP\Config::setAppValue('user_ldap', $param, $value); @@ -54,12 +50,16 @@ if ($_POST) { OCP\Config::setAppValue('user_ldap', $param, 0); } } + if($clearCache) { + $ldap = new \OCA\user_ldap\lib\Connection('user_ldap'); + $ldap->clearCache(); + } } // fill template $tmpl = new OCP\Template( 'user_ldap', 'settings'); foreach($params as $param) { - $value = OCP\Config::getAppValue('user_ldap', $param,''); + $value = OCP\Config::getAppValue('user_ldap', $param, ''); $tmpl->assign($param, $value); } diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php index 3a653ad7208f2d10c8632e22694bb7cd04faf229..d10062c1d9dd8100511092f59e7575dba2076710 100644 --- a/apps/user_ldap/templates/settings.php +++ b/apps/user_ldap/templates/settings.php @@ -29,7 +29,7 @@

            - t('Help');?> + t('Help');?>
            diff --git a/apps/user_ldap/tests/group_ldap.php b/apps/user_ldap/tests/group_ldap.php index b953127d86e74c18f89a314977441a97492c07e4..f99902d32f5cb028b4d922507c2e8af7f0f73e00 100644 --- a/apps/user_ldap/tests/group_ldap.php +++ b/apps/user_ldap/tests/group_ldap.php @@ -29,18 +29,18 @@ class Test_Group_Ldap extends UnitTestCase { OC_Group::useBackend(new OCA\user_ldap\GROUP_LDAP()); $group_ldap = new OCA\user_ldap\GROUP_LDAP(); - $this->assertIsA(OC_Group::getGroups(),gettype(array())); - $this->assertIsA($group_ldap->getGroups(),gettype(array())); + $this->assertIsA(OC_Group::getGroups(), gettype(array())); + $this->assertIsA($group_ldap->getGroups(), gettype(array())); - $this->assertFalse(OC_Group::inGroup('john','dosers'),gettype(false)); - $this->assertFalse($group_ldap->inGroup('john','dosers'),gettype(false)); + $this->assertFalse(OC_Group::inGroup('john', 'dosers'), gettype(false)); + $this->assertFalse($group_ldap->inGroup('john', 'dosers'), gettype(false)); //TODO: check also for expected true result. This backend won't be able to do any modifications, maybe use a dummy for this. - $this->assertIsA(OC_Group::getUserGroups('john doe'),gettype(array())); - $this->assertIsA($group_ldap->getUserGroups('john doe'),gettype(array())); + $this->assertIsA(OC_Group::getUserGroups('john doe'), gettype(array())); + $this->assertIsA($group_ldap->getUserGroups('john doe'), gettype(array())); - $this->assertIsA(OC_Group::usersInGroup('campers'),gettype(array())); - $this->assertIsA($group_ldap->usersInGroup('campers'),gettype(array())); + $this->assertIsA(OC_Group::usersInGroup('campers'), gettype(array())); + $this->assertIsA($group_ldap->usersInGroup('campers'), gettype(array())); } } diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 53a65129108faf0a010b5df2729c8caa216ed4a3..6591d1d5fee1442b0152a279f9f83b9d4b130828 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -29,11 +29,13 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { private function updateQuota($dn) { $quota = null; - if(!empty($this->connection->ldapQuotaDefault)) { - $quota = $this->connection->ldapQuotaDefault; + $quotaDefault = $this->connection->ldapQuotaDefault; + $quotaAttribute = $this->connection->ldapQuotaAttribute; + if(!empty($quotaDefault)) { + $quota = $quotaDefault; } - if(!empty($this->connection->ldapQuotaAttribute)) { - $aQuota = $this->readAttribute($dn, $this->connection->ldapQuotaAttribute); + if(!empty($quotaAttribute)) { + $aQuota = $this->readAttribute($dn, $quotaAttribute); if($aQuota && (count($aQuota) > 0)) { $quota = $aQuota[0]; @@ -46,8 +48,9 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { private function updateEmail($dn) { $email = null; - if(!empty($this->connection->ldapEmailAttribute)) { - $aEmail = $this->readAttribute($dn, $this->connection->ldapEmailAttribute); + $emailAttribute = $this->connection->ldapEmailAttribute; + if(!empty($emailAttribute)) { + $aEmail = $this->readAttribute($dn, $emailAttribute); if($aEmail && (count($aEmail) > 0)) { $email = $aEmail[0]; } @@ -101,24 +104,32 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { * Get a list of all users. */ public function getUsers($search = '', $limit = 10, $offset = 0) { - $ldap_users = $this->connection->getFromCache('getUsers'); - if(is_null($ldap_users)) { - $ldap_users = $this->fetchListOfUsers($this->connection->ldapUserFilter, array($this->connection->ldapUserDisplayName, 'dn')); - $ldap_users = $this->ownCloudUserNames($ldap_users); - $this->connection->writeToCache('getUsers', $ldap_users); - } - $this->userSearch = $search; - if(!empty($this->userSearch)) { - $ldap_users = array_filter($ldap_users, array($this, 'userMatchesFilter')); + $cachekey = 'getUsers-'.$search.'-'.$limit.'-'.$offset; + + //check if users are cached, if so return + $ldap_users = $this->connection->getFromCache($cachekey); + if(!is_null($ldap_users)) { + return $ldap_users; } - if($limit == -1) { + + // if we'd pass -1 to LDAP search, we'd end up in a Protocol error. With a limit of 0, we get 0 results. So we pass null. + if($limit <= 0) { $limit = null; } - return array_slice($ldap_users, $offset, $limit); - } - - public function userMatchesFilter($user) { - return (strripos($user, $this->userSearch) !== false); + $search = empty($search) ? '*' : '*'.$search.'*'; + $filter = $this->combineFilterWithAnd(array( + $this->connection->ldapUserFilter, + $this->connection->ldapUserDisplayName.'='.$search + )); + + \OCP\Util::writeLog('user_ldap', 'getUsers: Options: search '.$search.' limit '.$limit.' offset '.$offset.' Filter: '.$filter, \OCP\Util::DEBUG); + //do the search and translate results to owncloud names + $ldap_users = $this->fetchListOfUsers($filter, array($this->connection->ldapUserDisplayName, 'dn'), $limit, $offset); + $ldap_users = $this->ownCloudUserNames($ldap_users); + \OCP\Util::writeLog('user_ldap', 'getUsers: '.count($ldap_users). ' Users found', \OCP\Util::DEBUG); + + $this->connection->writeToCache($cachekey, $ldap_users); + return $ldap_users; } /** @@ -138,9 +149,8 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { return false; } - //if user really still exists, we will be able to read his objectclass - $objcs = $this->readAttribute($dn, 'objectclass'); - if(!$objcs || empty($objcs)) { + //check if user really still exists by reading its entry + if(!is_array($this->readAttribute($dn, ''))) { $this->connection->writeToCache('userExists'.$uid, false); return false; } diff --git a/apps/user_webdavauth/appinfo/app.php b/apps/user_webdavauth/appinfo/app.php index 3ab323becce5360372cfd026f2c34255ad2e6603..c4c131b7ef0205001588f76ffd6046bf13c21034 100755 --- a/apps/user_webdavauth/appinfo/app.php +++ b/apps/user_webdavauth/appinfo/app.php @@ -23,7 +23,7 @@ require_once 'apps/user_webdavauth/user_webdavauth.php'; -OC_APP::registerAdmin('user_webdavauth','settings'); +OC_APP::registerAdmin('user_webdavauth', 'settings'); OC_User::registerBackend("WEBDAVAUTH"); OC_User::useBackend( "WEBDAVAUTH" ); diff --git a/apps/user_webdavauth/appinfo/info.xml b/apps/user_webdavauth/appinfo/info.xml index 9a8027daee68748ce35375775b9cfa81d1c53691..0d9f529ed1b63ef62e5d2ae3122891af7022c2fd 100755 --- a/apps/user_webdavauth/appinfo/info.xml +++ b/apps/user_webdavauth/appinfo/info.xml @@ -2,10 +2,12 @@ user_webdavauth WebDAV user backend - Authenticate Users by a WebDAV call - 1.0 + Authenticate users by a WebDAV call. You can use any WebDAV server, ownCloud server or other webserver to authenticate. It should return http 200 for right credentials and http 401 for wrong ones. AGPL Frank Karlitschek 4.9 true + + + diff --git a/apps/user_webdavauth/appinfo/version b/apps/user_webdavauth/appinfo/version new file mode 100644 index 0000000000000000000000000000000000000000..a6bbdb5ff48ca824c38bb045326edffa0978c729 --- /dev/null +++ b/apps/user_webdavauth/appinfo/version @@ -0,0 +1 @@ +1.1.0.0 diff --git a/apps/user_webdavauth/l10n/.gitkeep b/apps/user_webdavauth/l10n/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/apps/user_webdavauth/l10n/ar.php b/apps/user_webdavauth/l10n/ar.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/ar.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/ca.php b/apps/user_webdavauth/l10n/ca.php new file mode 100644 index 0000000000000000000000000000000000000000..a59bffb870dbd7124cdf679ad3cc1433a1753ca7 --- /dev/null +++ b/apps/user_webdavauth/l10n/ca.php @@ -0,0 +1,3 @@ + "Adreça WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/cs_CZ.php b/apps/user_webdavauth/l10n/cs_CZ.php new file mode 100644 index 0000000000000000000000000000000000000000..a5b7e56771f9cdc32f229040b0956062121b3d01 --- /dev/null +++ b/apps/user_webdavauth/l10n/cs_CZ.php @@ -0,0 +1,3 @@ + "URL WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/de.php b/apps/user_webdavauth/l10n/de.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/de.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/de_DE.php b/apps/user_webdavauth/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/de_DE.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/el.php b/apps/user_webdavauth/l10n/el.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/el.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/eo.php b/apps/user_webdavauth/l10n/eo.php new file mode 100644 index 0000000000000000000000000000000000000000..b4a2652d33e32b204230fde802c2097c3072851a --- /dev/null +++ b/apps/user_webdavauth/l10n/eo.php @@ -0,0 +1,3 @@ + "WebDAV-a URL: http://" +); diff --git a/apps/user_webdavauth/l10n/es.php b/apps/user_webdavauth/l10n/es.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/es.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/es_AR.php b/apps/user_webdavauth/l10n/es_AR.php new file mode 100644 index 0000000000000000000000000000000000000000..81f2ea1e578b8809ecb9d4ceb2c14c22545a15d3 --- /dev/null +++ b/apps/user_webdavauth/l10n/es_AR.php @@ -0,0 +1,3 @@ + "URL de WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/et_EE.php b/apps/user_webdavauth/l10n/et_EE.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/et_EE.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/eu.php b/apps/user_webdavauth/l10n/eu.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/eu.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/fi_FI.php b/apps/user_webdavauth/l10n/fi_FI.php new file mode 100644 index 0000000000000000000000000000000000000000..070a0ffdaff78ed22f6c63607a398b64baff4451 --- /dev/null +++ b/apps/user_webdavauth/l10n/fi_FI.php @@ -0,0 +1,3 @@ + "WebDAV-osoite: http://" +); diff --git a/apps/user_webdavauth/l10n/fr.php b/apps/user_webdavauth/l10n/fr.php new file mode 100644 index 0000000000000000000000000000000000000000..759d45b230e5aa007196cdb4c2f69ec4ecea2f00 --- /dev/null +++ b/apps/user_webdavauth/l10n/fr.php @@ -0,0 +1,3 @@ + "URL WebDAV : http://" +); diff --git a/apps/user_webdavauth/l10n/gl.php b/apps/user_webdavauth/l10n/gl.php new file mode 100644 index 0000000000000000000000000000000000000000..a5b7e56771f9cdc32f229040b0956062121b3d01 --- /dev/null +++ b/apps/user_webdavauth/l10n/gl.php @@ -0,0 +1,3 @@ + "URL WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/it.php b/apps/user_webdavauth/l10n/it.php new file mode 100644 index 0000000000000000000000000000000000000000..a5b7e56771f9cdc32f229040b0956062121b3d01 --- /dev/null +++ b/apps/user_webdavauth/l10n/it.php @@ -0,0 +1,3 @@ + "URL WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/ja_JP.php b/apps/user_webdavauth/l10n/ja_JP.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/ja_JP.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/ko.php b/apps/user_webdavauth/l10n/ko.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/ko.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/nl.php b/apps/user_webdavauth/l10n/nl.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/nl.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/pl.php b/apps/user_webdavauth/l10n/pl.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/pl.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/pt_BR.php b/apps/user_webdavauth/l10n/pt_BR.php new file mode 100644 index 0000000000000000000000000000000000000000..991c746a2215dc7f979a8c2ed125f404b9010838 --- /dev/null +++ b/apps/user_webdavauth/l10n/pt_BR.php @@ -0,0 +1,3 @@ + "URL do WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/pt_PT.php b/apps/user_webdavauth/l10n/pt_PT.php new file mode 100644 index 0000000000000000000000000000000000000000..1aca5caeff113ba119e6d0147afdd1a45eac6297 --- /dev/null +++ b/apps/user_webdavauth/l10n/pt_PT.php @@ -0,0 +1,3 @@ + "Endereço WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/ru.php b/apps/user_webdavauth/l10n/ru.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/ru.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/ru_RU.php b/apps/user_webdavauth/l10n/ru_RU.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/ru_RU.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/si_LK.php b/apps/user_webdavauth/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..cc5cfb3c9b2aad38015897e48c4fd44922faec45 --- /dev/null +++ b/apps/user_webdavauth/l10n/si_LK.php @@ -0,0 +1,3 @@ + "WebDAV යොමුව: http://" +); diff --git a/apps/user_webdavauth/l10n/sk_SK.php b/apps/user_webdavauth/l10n/sk_SK.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/sk_SK.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/sl.php b/apps/user_webdavauth/l10n/sl.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/sl.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/sv.php b/apps/user_webdavauth/l10n/sv.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/sv.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/ta_LK.php b/apps/user_webdavauth/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/ta_LK.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/th_TH.php b/apps/user_webdavauth/l10n/th_TH.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/th_TH.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/tr.php b/apps/user_webdavauth/l10n/tr.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/tr.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/uk.php b/apps/user_webdavauth/l10n/uk.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/uk.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/vi.php b/apps/user_webdavauth/l10n/vi.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd32954b058d9ad5c43d6604e9ba18e4bd559f3 --- /dev/null +++ b/apps/user_webdavauth/l10n/vi.php @@ -0,0 +1,3 @@ + "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/zh_CN.php b/apps/user_webdavauth/l10n/zh_CN.php new file mode 100644 index 0000000000000000000000000000000000000000..33c77f7d30ec8c61eda2ab98309292ef8ce2d4e9 --- /dev/null +++ b/apps/user_webdavauth/l10n/zh_CN.php @@ -0,0 +1,3 @@ + "WebDAV地å€: http://" +); diff --git a/apps/user_webdavauth/l10n/zh_TW.php b/apps/user_webdavauth/l10n/zh_TW.php new file mode 100644 index 0000000000000000000000000000000000000000..79740561e5ad41e490f03c35b995e1c993a0dd6c --- /dev/null +++ b/apps/user_webdavauth/l10n/zh_TW.php @@ -0,0 +1,3 @@ + "WebDAV ç¶²å€ http://" +); diff --git a/apps/user_webdavauth/settings.php b/apps/user_webdavauth/settings.php index 4f1ddbbefda4a91838bdabad11f11f3c30eb3aeb..497a3385caa687a202b3171c94a0d8ea80a6034f 100755 --- a/apps/user_webdavauth/settings.php +++ b/apps/user_webdavauth/settings.php @@ -21,7 +21,6 @@ * */ -print_r($_POST); if($_POST) { if(isset($_POST['webdav_url'])) { diff --git a/apps/user_webdavauth/templates/settings.php b/apps/user_webdavauth/templates/settings.php index c00c199632af5c8979017f28ef3c5db92c7baf75..e6ca5d97d3c29d15987bf8e3da90426890174016 100755 --- a/apps/user_webdavauth/templates/settings.php +++ b/apps/user_webdavauth/templates/settings.php @@ -1,7 +1,7 @@
            WebDAV Authentication -

            +

            diff --git a/apps/user_webdavauth/user_webdavauth.php b/apps/user_webdavauth/user_webdavauth.php index c36d37c1fa2ef892aa77e82f8a7513e04add3703..839196c114c9e7f948ce301fd1e24592462cbb36 100755 --- a/apps/user_webdavauth/user_webdavauth.php +++ b/apps/user_webdavauth/user_webdavauth.php @@ -30,37 +30,36 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend { public function createUser() { // Can't create user - OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to create users from web frontend using WebDAV user backend',3); + OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to create users from web frontend using WebDAV user backend', 3); return false; } - public function deleteUser() { + public function deleteUser($uid) { // Can't delete user - OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to delete users from web frontend using WebDAV user backend',3); + OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to delete users from web frontend using WebDAV user backend', 3); return false; } public function setPassword ( $uid, $password ) { // We can't change user password - OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to change password for users from web frontend using WebDAV user backend',3); + OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to change password for users from web frontend using WebDAV user backend', 3); return false; } public function checkPassword( $uid, $password ) { - $url= 'http://'.urlencode($uid).':'.urlencode($password).'@'.$this->webdavauth_url; $headers = get_headers($url); if($headers==false) { - OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$this->webdavauth_url.'" ' ,3); + OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$this->webdavauth_url.'" ', 3); return false; } $returncode= substr($headers[0], 9, 3); - if($returncode=='401') { - return false; + if(($returncode=='401') or ($returncode=='403')) { + return(false); }else{ - return true; + return($uid); } } @@ -68,14 +67,15 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend { /* * we don´t know if a user exists without the password. so we have to return false all the time */ - public function userExists( $uid ) { - return false; + public function userExists( $uid ){ + return true; } + /* * we don´t know the users so all we can do it return an empty array here */ - public function getUsers() { + public function getUsers($search = '', $limit = 10, $offset = 0) { $returnArray = array(); return $returnArray; diff --git a/autotest.sh b/autotest.sh index 54f1eda9932ef6f69ddfdf1305f0361da516b375..744bcdbe8f9628b6b98326569e54669e865f5e9c 100755 --- a/autotest.sh +++ b/autotest.sh @@ -9,7 +9,7 @@ DATADIR=data-autotest BASEDIR=$PWD -# create autoconfig for sqlite, mysql and (soon) postgresql +# create autoconfig for sqlite, mysql and postgresql cat > ./tests/autoconfig-sqlite.php < autotest-results-$1.xml - phpunit --log-junit autotest-results-$1.xml --coverage-clover autotest-clover-$1.xml + rm -rf coverage-html-$1 + mkdir coverage-html-$1 + php -f enable_all.php + phpunit --log-junit autotest-results-$1.xml --coverage-clover autotest-clover-$1.xml --coverage-html coverage-html-$1 } # diff --git a/config/config.sample.php b/config/config.sample.php index 09eb6053c240989bddfc332cf3f029b2c1eeaa9a..f531d5f146b2f80b290fbbed45bf98a9bc4fb361 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -30,6 +30,18 @@ $CONFIG = array( /* Force use of HTTPS connection (true = use HTTPS) */ "forcessl" => false, +/* The automatic hostname detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */ +"overwritehost" => "", + +/* The automatic protocol detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the protocol detection. For example "https" */ +"overwriteprotocol" => "", + +/* Enhanced auth forces users to enter their password again when performing potential sensitive actions like creating or deleting users */ +"enhancedauth" => true, + +/* Time in seconds how long an user is authenticated without entering his password again before performing sensitive actions like creating or deleting users etc...*/ +"enhancedauthtime" => 15 * 60, + /* Theme to use for ownCloud */ "theme" => "", @@ -86,6 +98,9 @@ $CONFIG = array( /* Loglevel to start logging at. 0=DEBUG, 1=INFO, 2=WARN, 3=ERROR (default is WARN) */ "loglevel" => "", +/* Lifetime of the remember login cookie, default is 15 days */ +"remember_login_cookie_lifetime" => 60*60*24*15, + /* The directory where the user data is stored, default to data in the owncloud * directory. The sqlite database is also stored here, when sqlite is used. */ @@ -104,4 +119,10 @@ $CONFIG = array( 'writable' => true, ), ), -); \ No newline at end of file + 'user_backends'=>array( + array( + 'class'=>'OC_User_IMAP', + 'arguments'=>array('{imap.gmail.com:993/imap/ssl}INBOX') + ) + ) +); diff --git a/core/ajax/appconfig.php b/core/ajax/appconfig.php index 1b43afa74fbf781d5e8ac3fcacbd6d2a9a0918fc..4f26dedc79760259965859709f424d481047da97 100644 --- a/core/ajax/appconfig.php +++ b/core/ajax/appconfig.php @@ -5,7 +5,6 @@ * See the COPYING-README file. */ -require_once "../../lib/base.php"; OC_Util::checkAdminUser(); OCP\JSON::callCheck(); diff --git a/core/ajax/requesttoken.php b/core/ajax/requesttoken.php deleted file mode 100644 index 96d5402e621d54b485119fd26e12f836d8f1bf1a..0000000000000000000000000000000000000000 --- a/core/ajax/requesttoken.php +++ /dev/null @@ -1,41 +0,0 @@ - -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the license, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. -* If not, see . -* -*/ - -/** - * @file core/ajax/requesttoken.php - * @brief Ajax method to retrieve a fresh request protection token for ajax calls - * @return json: success/error state indicator including a fresh request token - * @author Christian Reiner - */ -require_once '../../lib/base.php'; - -// don't load apps or filesystem for this task -$RUNTIME_NOAPPS = TRUE; -$RUNTIME_NOSETUPFS = TRUE; - -// Sanity checks -// using OCP\JSON::callCheck() below protects the token refreshing itself. -//OCP\JSON::callCheck ( ); -OCP\JSON::checkLoggedIn ( ); -// hand out a fresh token -OCP\JSON::success ( array ( 'token' => OCP\Util::callRegister() ) ); -?> diff --git a/core/ajax/share.php b/core/ajax/share.php index 84e84be5acb77e39993b832e84f4442113f4cd01..41832a3c65901aaee10c1b671b533994fe403f90 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -18,23 +18,29 @@ * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . */ -require_once '../../lib/base.php'; OC_JSON::checkLoggedIn(); OCP\JSON::callCheck(); +OC_App::loadApps(); if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSource'])) { switch ($_POST['action']) { case 'share': if (isset($_POST['shareType']) && isset($_POST['shareWith']) && isset($_POST['permissions'])) { try { - if ((int)$_POST['shareType'] === OCP\Share::SHARE_TYPE_LINK && $_POST['shareWith'] == '') { + $shareType = (int)$_POST['shareType']; + $shareWith = $_POST['shareWith']; + if ($shareType === OCP\Share::SHARE_TYPE_LINK && $shareWith == '') { $shareWith = null; + } + + $token = OCP\Share::shareItem($_POST['itemType'], $_POST['itemSource'], $shareType, $shareWith, $_POST['permissions']); + + if (is_string($token)) { + OC_JSON::success(array('data' => array('token' => $token))); } else { - $shareWith = $_POST['shareWith']; + OC_JSON::success(); } - OCP\Share::shareItem($_POST['itemType'], $_POST['itemSource'], (int)$_POST['shareType'], $shareWith, $_POST['permissions']); - OC_JSON::success(); } catch (Exception $exception) { OC_JSON::error(array('data' => array('message' => $exception->getMessage()))); } diff --git a/core/ajax/translations.php b/core/ajax/translations.php index 75679da2c0466cf904955aabf6fc39013398abfd..e22cbad4708f09979e41273c6eef1bbda2d4f5ba 100644 --- a/core/ajax/translations.php +++ b/core/ajax/translations.php @@ -21,9 +21,6 @@ * */ -// Init owncloud -require_once '../../lib/base.php'; - $app = $_POST["app"]; $l = OC_L10N::get( $app ); diff --git a/core/ajax/vcategories/add.php b/core/ajax/vcategories/add.php index 81fa06dbf19491079955f89d77273b7e70509ede..23d00af70ab8c185ae44ab4780b9bdebf5d5dff3 100644 --- a/core/ajax/vcategories/add.php +++ b/core/ajax/vcategories/add.php @@ -14,24 +14,25 @@ function debug($msg) { OC_Log::write('core', 'ajax/vcategories/add.php: '.$msg, OC_Log::DEBUG); } -require_once '../../../lib/base.php'; -OC_JSON::checkLoggedIn(); -$category = isset($_GET['category'])?strip_tags($_GET['category']):null; -$app = isset($_GET['app'])?$_GET['app']:null; +OCP\JSON::checkLoggedIn(); +OCP\JSON::callCheck(); -if(is_null($app)) { - bailOut(OC_Contacts_App::$l10n->t('Application name not provided.')); -} +$l = OC_L10N::get('core'); + +$category = isset($_POST['category']) ? strip_tags($_POST['category']) : null; +$type = isset($_POST['type']) ? $_POST['type'] : null; -OC_JSON::checkAppEnabled($app); +if(is_null($type)) { + bailOut($l->t('Category type not provided.')); +} if(is_null($category)) { - bailOut(OC_Contacts_App::$l10n->t('No category to add?')); + bailOut($l->t('No category to add?')); } debug(print_r($category, true)); -$categories = new OC_VCategories($app); +$categories = new OC_VCategories($type); if($categories->hasCategory($category)) { bailOut(OC_Contacts_App::$l10n->t('This category already exists: '.$category)); } else { diff --git a/core/ajax/vcategories/addToFavorites.php b/core/ajax/vcategories/addToFavorites.php new file mode 100644 index 0000000000000000000000000000000000000000..52f62d5fc6b0ce0e05846ece12bd9c589921c7b8 --- /dev/null +++ b/core/ajax/vcategories/addToFavorites.php @@ -0,0 +1,38 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +function bailOut($msg) { + OC_JSON::error(array('data' => array('message' => $msg))); + OC_Log::write('core', 'ajax/vcategories/addToFavorites.php: '.$msg, OC_Log::DEBUG); + exit(); +} +function debug($msg) { + OC_Log::write('core', 'ajax/vcategories/addToFavorites.php: '.$msg, OC_Log::DEBUG); +} + +OCP\JSON::checkLoggedIn(); +OCP\JSON::callCheck(); + +$l = OC_L10N::get('core'); + +$id = isset($_POST['id']) ? strip_tags($_POST['id']) : null; +$type = isset($_POST['type']) ? $_POST['type'] : null; + +if(is_null($type)) { + bailOut($l->t('Object type not provided.')); +} + +if(is_null($id)) { + bailOut($l->t('%s ID not provided.', $type)); +} + +$categories = new OC_VCategories($type); +if(!$categories->addToFavorites($id, $type)) { + bailOut($l->t('Error adding %s to favorites.', $id)); +} + +OC_JSON::success(); diff --git a/core/ajax/vcategories/delete.php b/core/ajax/vcategories/delete.php index cd46a25b79df9d898debabb4b49432389fa610a6..dfec378574313f71ffc073d8ae34ac941c637afb 100644 --- a/core/ajax/vcategories/delete.php +++ b/core/ajax/vcategories/delete.php @@ -15,22 +15,26 @@ function debug($msg) { OC_Log::write('core', 'ajax/vcategories/delete.php: '.$msg, OC_Log::DEBUG); } -require_once '../../../lib/base.php'; -OC_JSON::checkLoggedIn(); -$app = isset($_POST['app'])?$_POST['app']:null; -$categories = isset($_POST['categories'])?$_POST['categories']:null; -if(is_null($app)) { - bailOut(OC_Contacts_App::$l10n->t('Application name not provided.')); -} +OCP\JSON::checkLoggedIn(); +OCP\JSON::callCheck(); + +$l = OC_L10N::get('core'); -OC_JSON::checkAppEnabled($app); +$type = isset($_POST['type']) ? $_POST['type'] : null; +$categories = isset($_POST['categories']) ? $_POST['categories'] : null; + +if(is_null($type)) { + bailOut($l->t('Object type not provided.')); +} -debug('The application "'.$app.'" uses the default file. OC_VObjects will not be updated.'); +debug('The application using category type "' + . $type + . '" uses the default file for deletion. OC_VObjects will not be updated.'); if(is_null($categories)) { - bailOut('No categories selected for deletion.'); + bailOut($l->t('No categories selected for deletion.')); } -$vcategories = new OC_VCategories($app); +$vcategories = new OC_VCategories($type); $vcategories->delete($categories); OC_JSON::success(array('data' => array('categories'=>$vcategories->categories()))); diff --git a/core/ajax/vcategories/edit.php b/core/ajax/vcategories/edit.php index a0e67841c5571d1b6489b8ac032ca8c69f78de9c..0387b17576c4353a92c0a842e9d3040b80c09a7c 100644 --- a/core/ajax/vcategories/edit.php +++ b/core/ajax/vcategories/edit.php @@ -15,18 +15,19 @@ function debug($msg) { OC_Log::write('core', 'ajax/vcategories/edit.php: '.$msg, OC_Log::DEBUG); } -require_once '../../../lib/base.php'; OC_JSON::checkLoggedIn(); -$app = isset($_GET['app'])?$_GET['app']:null; -if(is_null($app)) { - bailOut('Application name not provided.'); +$l = OC_L10N::get('core'); + +$type = isset($_GET['type']) ? $_GET['type'] : null; + +if(is_null($type)) { + bailOut($l->t('Category type not provided.')); } -OC_JSON::checkAppEnabled($app); -$tmpl = new OC_TEMPLATE("core", "edit_categories_dialog"); +$tmpl = new OCP\Template("core", "edit_categories_dialog"); -$vcategories = new OC_VCategories($app); +$vcategories = new OC_VCategories($type); $categories = $vcategories->categories(); debug(print_r($categories, true)); $tmpl->assign('categories', $categories); diff --git a/core/ajax/vcategories/favorites.php b/core/ajax/vcategories/favorites.php new file mode 100644 index 0000000000000000000000000000000000000000..db4244d601adb4443d1bb84081166882b564a03a --- /dev/null +++ b/core/ajax/vcategories/favorites.php @@ -0,0 +1,30 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +function bailOut($msg) { + OC_JSON::error(array('data' => array('message' => $msg))); + OC_Log::write('core', 'ajax/vcategories/addToFavorites.php: '.$msg, OC_Log::DEBUG); + exit(); +} +function debug($msg) { + OC_Log::write('core', 'ajax/vcategories/addToFavorites.php: '.$msg, OC_Log::DEBUG); +} + +OCP\JSON::checkLoggedIn(); +OCP\JSON::callCheck(); + +$type = isset($_GET['type']) ? $_GET['type'] : null; + +if(is_null($type)) { + $l = OC_L10N::get('core'); + bailOut($l->t('Object type not provided.')); +} + +$categories = new OC_VCategories($type); +$ids = $categories->getFavorites($type); + +OC_JSON::success(array('ids' => $ids)); diff --git a/core/ajax/vcategories/removeFromFavorites.php b/core/ajax/vcategories/removeFromFavorites.php new file mode 100644 index 0000000000000000000000000000000000000000..ba6e95c249735d3aeed236c6a7cfb2340b5164e6 --- /dev/null +++ b/core/ajax/vcategories/removeFromFavorites.php @@ -0,0 +1,38 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +function bailOut($msg) { + OC_JSON::error(array('data' => array('message' => $msg))); + OC_Log::write('core', 'ajax/vcategories/removeFromFavorites.php: '.$msg, OC_Log::DEBUG); + exit(); +} +function debug($msg) { + OC_Log::write('core', 'ajax/vcategories/removeFromFavorites.php: '.$msg, OC_Log::DEBUG); +} + +OCP\JSON::checkLoggedIn(); +OCP\JSON::callCheck(); + +$l = OC_L10N::get('core'); + +$id = isset($_POST['id']) ? strip_tags($_POST['id']) : null; +$type = isset($_POST['type']) ? $_POST['type'] : null; + +if(is_null($type)) { + bailOut($l->t('Object type not provided.')); +} + +if(is_null($id)) { + bailOut($l->t('%s ID not provided.', $type)); +} + +$categories = new OC_VCategories($type); +if(!$categories->removeFromFavorites($id, $type)) { + bailOut($l->t('Error removing %s from favorites.', $id)); +} + +OC_JSON::success(); diff --git a/core/css/auth.css b/core/css/auth.css index 2dedad5dd0f5b42861bd0c82215f8b04618580af..bce7fa7b71170b859d902b38763ea0121d1eb1ec 100644 --- a/core/css/auth.css +++ b/core/css/auth.css @@ -1,8 +1,39 @@ -h2 { font-size:2em; font-weight:bold; margin-bottom:1em; white-space:nowrap; } -ul.scopes { list-style:disc; } -ul.scopes li { white-space:nowrap; } -h2 img { width: 50% } -#oauth { margin:4em auto 2em; width:20em; } -#allow-auth { background-color:#5c3; text-shadow:#5e3 0 1px 0; color:#fff; --webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #5f3 inset; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #5f3 inset; box-shadow:0 1px 1px #fff, 0 1px 1px #5f3 inset; } -#deny-auth { padding:0; margin:.7em; border:0; background:none; font-size:1.2em; -moz-box-shadow: 0 0 0 #fff, 0 0 0 #fff inset; -webkit-box-shadow: 0 0 0 #fff, 0 0 0 #fff inset; box-shadow: 0 0 0 #fff, 0 0 0 #fff inset; } +h2 { + font-size:2em; + font-weight:700; + margin-bottom:1em; + white-space:nowrap; +} + +ul.scopes { + list-style:disc; +} + +ul.scopes li { + white-space:nowrap; +} + +h2 img { + width:50%; +} + +#oauth { + width:20em; + margin:4em auto 2em; +} + +#allow-auth { + background-color:#5c3; + box-shadow:0 1px 1px #fff, 0 1px 1px #5f3 inset; + color:#fff; + text-shadow:#5e3 0 1px 0; +} + +#deny-auth { + background:none; + border:0; + box-shadow:0 0 0 #fff, 0 0 0 #fff inset; + font-size:1.2em; + margin:.7em; + padding:0; +} \ No newline at end of file diff --git a/core/css/multiselect.css b/core/css/multiselect.css index 040b0f46ed33d4a788a08677430941389bce5f88..99f0e039334120ab495afc903c5aa94ba3537d77 100644 --- a/core/css/multiselect.css +++ b/core/css/multiselect.css @@ -2,10 +2,58 @@ This file is licensed under the Affero General Public License version 3 or later. See the COPYING-README file. */ -ul.multiselectoptions { z-index:49; position:absolute; background-color:#fff; padding-top:.5em; border:1px solid #ddd; border-top:none; -moz-border-radius-bottomleft:.5em; -webkit-border-bottom-left-radius:.5em; border-bottom-left-radius:.5em; -moz-border-radius-bottomright:.5em; -webkit-border-bottom-right-radius:.5em; border-bottom-right-radius:.5em; -moz-box-shadow:0 1px 1px #ddd; -webkit-box-shadow:0 1px 1px #ddd; box-shadow:0 1px 1px #ddd; } -ul.multiselectoptions>li{ white-space:nowrap; overflow: hidden; } -div.multiselect { padding-right:.6em; display:inline; position:relative; display:inline-block; vertical-align: bottom; min-width:100px; max-width:400px; } -div.multiselect.active { background-color:#fff; border-bottom:none; border-bottom-left-radius:0; border-bottom-right-radius:0; z-index:50; position:relative } -div.multiselect>span:first-child { margin-right:2em; float:left; width:90%; overflow:hidden; text-overflow:ellipsis; } -div.multiselect>span:last-child { position:absolute; right:.8em; } -ul.multiselectoptions input.new{ margin:0; padding-bottom:0.2em; padding-top:0.2em; border-top-left-radius:0; border-top-right-radius:0; } + ul.multiselectoptions { + background-color:#fff; + border:1px solid #ddd; + border-bottom-left-radius:.5em; + border-bottom-right-radius:.5em; + border-top:none; + box-shadow:0 1px 1px #ddd; + padding-top:.5em; + position:absolute; + z-index:49; + } + + ul.multiselectoptions>li { + overflow:hidden; + white-space:nowrap; + } + + div.multiselect { + display:inline-block; + max-width:400px; + min-width:100px; + padding-right:.6em; + position:relative; + vertical-align:bottom; + } + + div.multiselect.active { + background-color:#fff; + border-bottom:none; + border-bottom-left-radius:0; + border-bottom-right-radius:0; + position:relative; + z-index:50; + } + + div.multiselect>span:first-child { + float:left; + margin-right:2em; + overflow:hidden; + text-overflow:ellipsis; + width:90%; + } + + div.multiselect>span:last-child { + position:absolute; + right:.8em; + } + + ul.multiselectoptions input.new { + border-top-left-radius:0; + border-top-right-radius:0; + padding-bottom:.2em; + padding-top:.2em; + margin:0; + } \ No newline at end of file diff --git a/core/css/share.css b/core/css/share.css index c2fa051b1293c247c7f23bce7e0a03099195f3d2..5aca731356aab68ef8b3f510a00319998603aa83 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -2,21 +2,71 @@ This file is licensed under the Affero General Public License version 3 or later. See the COPYING-README file. */ -#dropdown { display:block; position:absolute; z-index:500; width:19em; right:0; margin-right:7em; background:#eee; padding:1em; --moz-box-shadow:0 1px 1px #777; -webkit-box-shadow:0 1px 1px #777; box-shadow:0 1px 1px #777; --moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; --moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; } -.reshare { padding-left:0.5em; } -#shareWithList { padding:0.5em; list-style-type: none; } -#shareWithList li { padding-top:0.1em; } -#dropdown label { font-weight:normal; } -#dropdown input[type="checkbox"] { margin:0 0.2em 0 0.5em; } -a.showCruds { display:inline; opacity:.5; } -a.showCruds:hover { opacity:1; } -a.unshare { float:right; display:inline; padding:.3em 0 0 .3em !important; opacity:.5; } -a.unshare:hover { opacity:1; } -#link { border-top:1px solid #ddd; padding-top:0.5em; } -#dropdown input[type="text"], #dropdown input[type="password"] { width:90%; } -#linkText, #linkPass, #expiration { display:none; } -#link #showPassword img { width:12px; padding-left: 0.3em; } -#link label, #expiration label{ padding-left: 0.5em; } \ No newline at end of file + #dropdown { + background:#eee; + border-bottom-left-radius:1em; + border-bottom-right-radius:1em; + box-shadow:0 1px 1px #777; + display:block; + margin-right:7em; + position:absolute; + right:0; + width:19em; + z-index:500; + padding:1em; + } + + #shareWithList { + list-style-type:none; + padding:.5em; + } + + #shareWithList li { + padding-top:.1em; + } + + #dropdown label { + font-weight:400; + } + + #dropdown input[type="checkbox"] { + margin:0 .2em 0 .5em; + } + + a.showCruds { + display:inline; + opacity:.5; + } + + a.unshare { + display:inline; + float:right; + opacity:.5; + padding:.3em 0 0 .3em !important; + } + + #link { + border-top:1px solid #ddd; + padding-top:.5em; + } + + #dropdown input[type="text"],#dropdown input[type="password"] { + width:90%; + } + + #linkText,#linkPass,#expiration { + display:none; + } + + #link #showPassword img { + padding-left:.3em; + width:12px; + } + + .reshare,#link label,#expiration label { + padding-left:.5em; + } + + a.showCruds:hover,a.unshare:hover { + opacity:1; + } \ No newline at end of file diff --git a/core/css/styles.css b/core/css/styles.css index 35ef8c36ddfda2642f80b86f48112721b3bb9c3b..646a760f9894f4338d7f1b6797804b7f6c1f3b8b 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -34,15 +34,17 @@ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', end /* INPUTS */ input[type="text"], input[type="password"] { cursor:text; } -input, textarea, select, button, .button, #quota, div.jp-progress, .pager li a { font-size:1em; width:10em; margin:.3em; padding:.6em .5em .4em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; } -input[type="text"], input[type="password"], input[type="search"] { background:#f8f8f8; color:#555; cursor:text; } +input, textarea, select, button, .button, #quota, div.jp-progress, .pager li a { font-size:1em; font-family:Arial, Verdana, sans-serif; width:10em; margin:.3em; padding:.6em .5em .4em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; } +input[type="text"], input[type="password"], input[type="search"], textarea { background:#f8f8f8; color:#555; cursor:text; } input[type="text"], input[type="password"], input[type="search"] { -webkit-appearance:textfield; -moz-appearance:textfield; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; } input[type="text"]:hover, input[type="text"]:focus, input[type="text"]:active, input[type="password"]:hover, input[type="password"]:focus, input[type="password"]:active, -.searchbox input[type="search"]:hover, .searchbox input[type="search"]:focus, .searchbox input[type="search"]:active { background-color:#fff; color:#333; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } +.searchbox input[type="search"]:hover, .searchbox input[type="search"]:focus, .searchbox input[type="search"]:active, +textarea:hover, textarea:focus, textarea:active { background-color:#fff; color:#333; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } input[type="submit"], input[type="button"], button, .button, #quota, div.jp-progress, select, .pager li a { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, select:hover, select:focus, select:active, input[type="button"]:focus, .button:hover { background:#fff; color:#333; } +input[type="submit"] img, input[type="button"] img, button img, .button img { cursor:pointer; } input[type="checkbox"] { width:auto; } #quota { cursor:default; } @@ -111,10 +113,11 @@ label.infield { cursor: text !important; } #notification { z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position:fixed; left:50%; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; } #notification span { cursor:pointer; font-weight:bold; margin-left:1em; } -.action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; -webkit-transition:opacity 200ms; -moz-transition:opacity 200ms; -o-transition:opacity 200ms; transition:opacity 200ms; } -.action { width: 16px; height: 16px; } +tr .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; -webkit-transition:opacity 200ms; -moz-transition:opacity 200ms; -o-transition:opacity 200ms; transition:opacity 200ms; } +tr:hover .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; } +tr .action { width: 16px; height: 16px; } .header-action { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter:alpha(opacity=80); opacity:.8; } -.action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } +tr:hover .action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } table:not(.nostyle) tr { -webkit-transition:background-color 200ms; -moz-transition:background-color 200ms; -o-transition:background-color 200ms; transition:background-color 200ms; } tbody tr:hover, tr:active { background-color:#f8f8f8; } diff --git a/core/js/eventsource.js b/core/js/eventsource.js index 45c63715a7e85d2ff2912fac82cf3df089b5e5cd..0c2a995f33103f16c32d69f6ab5b8e050aaf28d0 100644 --- a/core/js/eventsource.js +++ b/core/js/eventsource.js @@ -40,9 +40,13 @@ OC.EventSource=function(src,data){ dataStr+=name+'='+encodeURIComponent(data[name])+'&'; } } - dataStr+='requesttoken='+OC.Request.Token; + dataStr+='requesttoken='+OC.EventSource.requesttoken; if(!this.useFallBack && typeof EventSource !='undefined'){ - this.source=new EventSource(src+'?'+dataStr); + var joinChar = '&'; + if(src.indexOf('?') == -1) { + joinChar = '?'; + } + this.source=new EventSource(src+joinChar+dataStr); this.source.onmessage=function(e){ for(var i=0;i'); this.iframe.attr('id',iframeId); this.iframe.hide(); - this.iframe.attr('src',src+'?fallback=true&fallback_id='+OC.EventSource.iframeCount+'&'+dataStr); + + var joinChar = '&'; + if(src.indexOf('?') == -1) { + joinChar = '?'; + } + this.iframe.attr('src',src+joinChar+'fallback=true&fallback_id='+OC.EventSource.iframeCount+'&'+dataStr); $('body').append(this.iframe); this.useFallBack=true; OC.EventSource.iframeCount++ @@ -90,7 +99,7 @@ OC.EventSource.prototype={ lastLength:0,//for fallback listen:function(type,callback){ if(callback && callback.call){ - + if(type){ if(this.useFallBack){ if(!this.listeners[type]){ diff --git a/core/js/jquery.infieldlabel.js b/core/js/jquery.infieldlabel.js index f6a67b66ce163faa59283e64c5e07ebe4ac52787..c7daf61edd806892f6bbcdc5b961b51f08f21ffc 100644 --- a/core/js/jquery.infieldlabel.js +++ b/core/js/jquery.infieldlabel.js @@ -1,140 +1,164 @@ -/* - * In-Field Label jQuery Plugin +/** + * @license In-Field Label jQuery Plugin * http://fuelyourcoding.com/scripts/infield.html * - * Copyright (c) 2009 Doug Neiner + * Copyright (c) 2009-2010 Doug Neiner * Dual licensed under the MIT and GPL licenses. * Uses the same license as jQuery, see: * http://docs.jquery.com/License * - * @version 0.1 + * @version 0.1.6 */ -(function($){ - - $.InFieldLabels = function(label,field, options){ - // To avoid scope issues, use 'base' instead of 'this' - // to reference this class from internal events and functions. - var base = this; - - // Access to jQuery and DOM versions of each element - base.$label = $(label); - base.label = label; - - base.$field = $(field); - base.field = field; - - base.$label.data("InFieldLabels", base); - base.showing = true; - - base.init = function(){ - // Merge supplied options with default options - base.options = $.extend({},$.InFieldLabels.defaultOptions, options); - - // Check if the field is already filled in - if(base.$field.val() != ""){ - base.$label.hide(); - base.showing = false; - }; - - base.$field.focus(function(){ - base.fadeOnFocus(); - }).blur(function(){ - base.checkForEmpty(true); - }).bind('keydown.infieldlabel',function(e){ - // Use of a namespace (.infieldlabel) allows us to - // unbind just this method later - base.hideOnChange(e); - }).change(function(e){ - base.checkForEmpty(); - }).bind('onPropertyChange', function(){ - base.checkForEmpty(); - }); +(function ($) { + + $.InFieldLabels = function (label, field, options) { + // To avoid scope issues, use 'base' instead of 'this' + // to reference this class from internal events and functions. + var base = this; + + // Access to jQuery and DOM versions of each element + base.$label = $(label); + base.label = label; + + base.$field = $(field); + base.field = field; + + base.$label.data("InFieldLabels", base); + base.showing = true; + + base.init = function () { + // Merge supplied options with default options + base.options = $.extend({}, $.InFieldLabels.defaultOptions, options); + + // Check if the field is already filled in + // add a short delay to handle autocomplete + setTimeout(function() { + if (base.$field.val() !== "") { + base.$label.hide(); + base.showing = false; + } + }, 200); + + base.$field.focus(function () { + base.fadeOnFocus(); + }).blur(function () { + base.checkForEmpty(true); + }).bind('keydown.infieldlabel', function (e) { + // Use of a namespace (.infieldlabel) allows us to + // unbind just this method later + base.hideOnChange(e); + }).bind('paste', function (e) { + // Since you can not paste an empty string we can assume + // that the fieldis not empty and the label can be cleared. + base.setOpacity(0.0); + }).change(function (e) { + base.checkForEmpty(); + }).bind('onPropertyChange', function () { + base.checkForEmpty(); + }).bind('keyup.infieldlabel', function () { + base.checkForEmpty() + }); + setInterval(function(){ + if(base.$field.val() != ""){ + base.$label.hide(); + base.showing = false; }; + },100); + }; + + // If the label is currently showing + // then fade it down to the amount + // specified in the settings + base.fadeOnFocus = function () { + if (base.showing) { + base.setOpacity(base.options.fadeOpacity); + } + }; - // If the label is currently showing - // then fade it down to the amount - // specified in the settings - base.fadeOnFocus = function(){ - if(base.showing){ - base.setOpacity(base.options.fadeOpacity); - }; - }; - - base.setOpacity = function(opacity){ - base.$label.stop().animate({ opacity: opacity }, base.options.fadeDuration); - base.showing = (opacity > 0.0); - }; - - // Checks for empty as a fail safe - // set blur to true when passing from - // the blur event - base.checkForEmpty = function(blur){ - if(base.$field.val() == ""){ - base.prepForShow(); - base.setOpacity( blur ? 1.0 : base.options.fadeOpacity ); - } else { - base.setOpacity(0.0); - }; - }; - - base.prepForShow = function(e){ - if(!base.showing) { - // Prepare for a animate in... - base.$label.css({opacity: 0.0}).show(); - - // Reattach the keydown event - base.$field.bind('keydown.infieldlabel',function(e){ - base.hideOnChange(e); - }); - }; - }; - - base.hideOnChange = function(e){ - if( - (e.keyCode == 16) || // Skip Shift - (e.keyCode == 9) // Skip Tab - ) return; - - if(base.showing){ - base.$label.hide(); - base.showing = false; - }; - - // Remove keydown event to save on CPU processing - base.$field.unbind('keydown.infieldlabel'); - }; - - // Run the initialization method - base.init(); + base.setOpacity = function (opacity) { + base.$label.stop().animate({ opacity: opacity }, base.options.fadeDuration); + base.showing = (opacity > 0.0); }; - - $.InFieldLabels.defaultOptions = { - fadeOpacity: 0.5, // Once a field has focus, how transparent should the label be - fadeDuration: 300 // How long should it take to animate from 1.0 opacity to the fadeOpacity + + // Checks for empty as a fail safe + // set blur to true when passing from + // the blur event + base.checkForEmpty = function (blur) { + if (base.$field.val() === "") { + base.prepForShow(); + base.setOpacity(blur ? 1.0 : base.options.fadeOpacity); + } else { + base.setOpacity(0.0); + } }; - - - $.fn.inFieldLabels = function(options){ - return this.each(function(){ - // Find input or textarea based on for= attribute - // The for attribute on the label must contain the ID - // of the input or textarea element - var for_attr = $(this).attr('for'); - if( !for_attr ) return; // Nothing to attach, since the for field wasn't used - - - // Find the referenced input or textarea element - var $field = $( - "input#" + for_attr + "[type='text']," + - "input#" + for_attr + "[type='password']," + - "textarea#" + for_attr - ); - - if( $field.length == 0) return; // Again, nothing to attach - - // Only create object for input[text], input[password], or textarea - (new $.InFieldLabels(this, $field[0], options)); + + base.prepForShow = function (e) { + if (!base.showing) { + // Prepare for a animate in... + base.$label.css({opacity: 0.0}).show(); + + // Reattach the keydown event + base.$field.bind('keydown.infieldlabel', function (e) { + base.hideOnChange(e); }); + } }; - -})(jQuery); \ No newline at end of file + + base.hideOnChange = function (e) { + if ( + (e.keyCode === 16) || // Skip Shift + (e.keyCode === 9) // Skip Tab + ) { + return; + } + + if (base.showing) { + base.$label.hide(); + base.showing = false; + } + + // Remove keydown event to save on CPU processing + base.$field.unbind('keydown.infieldlabel'); + }; + + // Run the initialization method + base.init(); + }; + + $.InFieldLabels.defaultOptions = { + fadeOpacity: 0.5, // Once a field has focus, how transparent should the label be + fadeDuration: 300 // How long should it take to animate from 1.0 opacity to the fadeOpacity + }; + + + $.fn.inFieldLabels = function (options) { + return this.each(function () { + // Find input or textarea based on for= attribute + // The for attribute on the label must contain the ID + // of the input or textarea element + var for_attr = $(this).attr('for'), $field; + if (!for_attr) { + return; // Nothing to attach, since the for field wasn't used + } + + // Find the referenced input or textarea element + $field = $( + "input#" + for_attr + "[type='text']," + + "input#" + for_attr + "[type='search']," + + "input#" + for_attr + "[type='tel']," + + "input#" + for_attr + "[type='url']," + + "input#" + for_attr + "[type='email']," + + "input#" + for_attr + "[type='password']," + + "textarea#" + for_attr + ); + + if ($field.length === 0) { + return; // Again, nothing to attach + } + + // Only create object for input[text], input[password], or textarea + (new $.InFieldLabels(this, $field[0], options)); + }); + }; + +}(jQuery)); \ No newline at end of file diff --git a/core/js/jquery.infieldlabel.min.js b/core/js/jquery.infieldlabel.min.js deleted file mode 100644 index 8f0ab9f7c5ea845477d14fc7b84cf31020354b45..0000000000000000000000000000000000000000 --- a/core/js/jquery.infieldlabel.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * In-Field Label jQuery Plugin - * http://fuelyourcoding.com/scripts/infield.html - * - * Copyright (c) 2009 Doug Neiner - * Dual licensed under the MIT and GPL licenses. - * Uses the same license as jQuery, see: - * http://docs.jquery.com/License - * - * @version 0.1 - */ -(function($){$.InFieldLabels=function(b,c,d){var f=this;f.$label=$(b);f.label=b;f.$field=$(c);f.field=c;f.$label.data("InFieldLabels",f);f.showing=true;f.init=function(){f.options=$.extend({},$.InFieldLabels.defaultOptions,d);if(f.$field.val()!=""){f.$label.hide();f.showing=false};f.$field.focus(function(){f.fadeOnFocus()}).blur(function(){f.checkForEmpty(true)}).bind('keydown.infieldlabel',function(e){f.hideOnChange(e)}).change(function(e){f.checkForEmpty()}).bind('onPropertyChange',function(){f.checkForEmpty()})};f.fadeOnFocus=function(){if(f.showing){f.setOpacity(f.options.fadeOpacity)}};f.setOpacity=function(a){f.$label.stop().animate({opacity:a},f.options.fadeDuration);f.showing=(a>0.0)};f.checkForEmpty=function(a){if(f.$field.val()==""){f.prepForShow();f.setOpacity(a?1.0:f.options.fadeOpacity)}else{f.setOpacity(0.0)}};f.prepForShow=function(e){if(!f.showing){f.$label.css({opacity:0.0}).show();f.$field.bind('keydown.infieldlabel',function(e){f.hideOnChange(e)})}};f.hideOnChange=function(e){if((e.keyCode==16)||(e.keyCode==9))return;if(f.showing){f.$label.hide();f.showing=false};f.$field.unbind('keydown.infieldlabel')};f.init()};$.InFieldLabels.defaultOptions={fadeOpacity:0.5,fadeDuration:300};$.fn.inFieldLabels=function(c){return this.each(function(){var a=$(this).attr('for');if(!a)return;var b=$("input#"+a+"[type='text'],"+"input#"+a+"[type='password'],"+"textarea#"+a);if(b.length==0)return;(new $.InFieldLabels(this,b[0],c))})}})(jQuery); \ No newline at end of file diff --git a/core/js/js.js b/core/js/js.js index ba8020c89edf9b98f2bf839cc08cd4520a167f21..3b4cabe710ba004033ac442c186ba7d8770b0656 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -1,3 +1,19 @@ +/** + * Disable console output unless DEBUG mode is enabled. + * Add + * define('DEBUG', true); + * To the end of config/config.php to enable debug mode. + */ +if (oc_debug !== true) { + if (!window.console) { + window.console = {}; + } + var methods = ['log', 'debug', 'warn', 'info', 'error', 'assert']; + for (var i = 0; i < methods.length; i++) { + console[methods[i]] = function () { }; + } +} + /** * translate a string * @param app the id of the app for which to translate the string @@ -62,7 +78,7 @@ function escapeHTML(s) { * @return string */ function fileDownloadPath(dir, file) { - return OC.filePath('files', 'ajax', 'download.php')+'&files='+encodeURIComponent(file)+'&dir='+encodeURIComponent(dir); + return OC.filePath('files', 'ajax', 'download.php')+'?files='+encodeURIComponent(file)+'&dir='+encodeURIComponent(dir); } var OC={ @@ -95,9 +111,9 @@ var OC={ var isCore=OC.coreApps.indexOf(app)!==-1, link=OC.webroot; if((file.substring(file.length-3) === 'php' || file.substring(file.length-3) === 'css') && !isCore){ - link+='/?app=' + app; + link+='/index.php/apps/' + app; if (file != 'index.php') { - link+='&getfile='; + link+='/'; if(type){ link+=encodeURI(type + '/'); } @@ -113,7 +129,12 @@ var OC={ } link+=file; }else{ - link+='/'; + if ((app == 'settings' || app == 'core' || app == 'search') && type == 'ajax') { + link+='/index.php/'; + } + else { + link+='/'; + } if(!isCore){ link+='apps/'; } @@ -636,7 +657,7 @@ if (!Array.prototype.map){ /** * Filter Jquery selector by attribute value - **/ + */ $.fn.filterAttr = function(attr_name, attr_value) { return this.filter(function() { return $(this).attr(attr_name) === attr_value; }); }; @@ -644,7 +665,7 @@ $.fn.filterAttr = function(attr_name, attr_value) { function humanFileSize(size) { var humanList = ['B', 'kB', 'MB', 'GB', 'TB']; // Calculate Log with base 1024: size = 1024 ** order - var order = Math.floor(Math.log(size) / Math.log(1024)); + var order = size?Math.floor(Math.log(size) / Math.log(1024)):0; // Stay in range of the byte sizes that are defined order = Math.min(humanList.length - 1, order); var readableFormat = humanList[order]; @@ -667,9 +688,32 @@ function formatDate(date){ if(typeof date=='number'){ date=new Date(date); } - var monthNames = [ t('files','January'), t('files','February'), t('files','March'), t('files','April'), t('files','May'), t('files','June'), - t('files','July'), t('files','August'), t('files','September'), t('files','October'), t('files','November'), t('files','December') ]; - return monthNames[date.getMonth()]+' '+date.getDate()+', '+date.getFullYear()+', '+((date.getHours()<10)?'0':'')+date.getHours()+':'+((date.getMinutes()<10)?'0':'')+date.getMinutes(); + return $.datepicker.formatDate(datepickerFormatDate, date)+' '+date.getHours()+':'+((date.getMinutes()<10)?'0':'')+date.getMinutes(); +} + +/** + * takes an absolute timestamp and return a string with a human-friendly relative date + * @param int a Unix timestamp + */ +function relative_modified_date(timestamp) { + var timediff = Math.round((new Date()).getTime() / 1000) - timestamp; + var diffminutes = Math.round(timediff/60); + var diffhours = Math.round(diffminutes/60); + var diffdays = Math.round(diffhours/24); + var diffmonths = Math.round(diffdays/31); + if(timediff < 60) { return t('core','seconds ago'); } + else if(timediff < 120) { return t('core','1 minute ago'); } + else if(timediff < 3600) { return t('core','{minutes} minutes ago',{minutes: diffminutes}); } + else if(timediff < 7200) { return t('core','1 hour ago'); } + else if(timediff < 86400) { return t('core','{hours} hours ago',{hours: diffhours}); } + else if(timediff < 86400) { return t('core','today'); } + else if(timediff < 172800) { return t('core','yesterday'); } + else if(timediff < 2678400) { return t('core','{days} days ago',{days: diffdays}); } + else if(timediff < 5184000) { return t('core','last month'); } + else if(timediff < 31556926) { return t('core','{months} months ago',{months: diffmonths}); } + //else if(timediff < 31556926) { return t('core','months ago'); } + else if(timediff < 63113852) { return t('core','last year'); } + else { return t('core','years ago'); } } /** diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 2467af6112137ce55ed8920c2a55a617ccdc6dbc..28dec97fd307a3d77095e792d2015d6428491245 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -66,39 +66,42 @@ var OCdialogs = { /** * prompt user for input with custom form * fields should be passed in following format: [{text:'prompt text', name:'return name', type:'input type', value: 'dafault value'},...] + * select example var fields=[{text:'Test', name:'test', type:'select', options:[{text:'hallo',value:1},{text:'hallo1',value:2}] }]; * @param fields to display * @param title dialog title * @param callback which will be triggered when user press OK (user answers will be passed to callback in following format: [{name:'return name', value: 'user value'},...]) */ form:function(fields, title, callback, modal) { var content = ''; - for (var a in fields) { - content += ''; - } + + }); content += '
            '+fields[a].text+''; - var type=fields[a].type; + $.each(fields, function(index, val){ + content += '
            '+val.text+''; + var type=val.type; + if (type == 'text' || type == 'checkbox' || type == 'password') { - content += ''; + } else if (type == 'text' || type == 'password' && val.value) { + content += ' value="'+val.value+'">'; } } else if (type == 'select') { - content += ''; } content += '
            '; OCdialogs.message(content, title, OCdialogs.FORM_DIALOG, OCdialogs.OK_CANCEL_BUTTONS, callback, modal); }, @@ -215,9 +218,10 @@ var OCdialogs = { fillFilePicker:function(r, dialog_content_id) { var entry_template = '
            *NAME*
            *LASTMODDATE*
            '; var names = ''; - for (var a in r.data) { - names += entry_template.replace('*LASTMODDATE*', OC.mtime2date(r.data[a].mtime)).replace('*NAME*', r.data[a].name).replace('*MIMETYPEICON*', r.data[a].mimetype_icon).replace('*ENTRYNAME*', r.data[a].name).replace('*ENTRYTYPE*', r.data[a].type); - } + $.each(r.data, function(index, a) { + names += entry_template.replace('*LASTMODDATE*', OC.mtime2date(a.mtime)).replace('*NAME*', a.name).replace('*MIMETYPEICON*', a.mimetype_icon).replace('*ENTRYNAME*', a.name).replace('*ENTRYTYPE*', a.type); + }); + $(dialog_content_id + ' #filelist').html(names); $(dialog_content_id + ' .filepicker_loader').css('visibility', 'hidden'); }, diff --git a/core/js/oc-vcategories.js b/core/js/oc-vcategories.js index c99dd51f53a6fc30f7f1bac68ab85d64aa3a41ff..609703f2cc907d7af515f1e33cdb75a83effbfd5 100644 --- a/core/js/oc-vcategories.js +++ b/core/js/oc-vcategories.js @@ -1,30 +1,48 @@ -var OCCategories={ - edit:function(){ - if(OCCategories.app == undefined) { - OC.dialogs.alert('OCCategories.app is not set!'); - return; +var OCCategories= { + category_favorites:'_$!!$_', + edit:function(type, cb) { + if(!type && !this.type) { + throw { name: 'MissingParameter', message: t('core', 'The object type is not specified.') }; } + type = type ? type : this.type; $('body').append('
            '); - $('#category_dialog').load(OC.filePath('core', 'ajax', 'vcategories/edit.php')+'?app='+OCCategories.app, function(response){ + $('#category_dialog').load( + OC.filePath('core', 'ajax', 'vcategories/edit.php') + '?type=' + type, function(response) { try { var jsondata = jQuery.parseJSON(response); - if(response.status == 'error'){ + if(response.status == 'error') { OC.dialogs.alert(response.data.message, 'Error'); return; } } catch(e) { - $('#edit_categories_dialog').dialog({ + var setEnabled = function(d, enable) { + if(enable) { + d.css('cursor', 'default').find('input,button:not(#category_addbutton)') + .prop('disabled', false).css('cursor', 'default'); + } else { + d.css('cursor', 'wait').find('input,button:not(#category_addbutton)') + .prop('disabled', true).css('cursor', 'wait'); + } + } + var dlg = $('#edit_categories_dialog').dialog({ modal: true, height: 350, minHeight:200, width: 250, minWidth: 200, buttons: { - 'Close': function() { - $(this).dialog("close"); + 'Close': function() { + $(this).dialog('close'); }, 'Delete':function() { - OCCategories.doDelete(); + var categories = $('#categorylist').find('input:checkbox').serialize(); + setEnabled(dlg, false); + OCCategories.doDelete(categories, function() { + setEnabled(dlg, true); + }); }, 'Rescan':function() { - OCCategories.rescan(); + setEnabled(dlg, false); + OCCategories.rescan(function() { + setEnabled(dlg, true); + }); } }, close : function(event, ui) { @@ -32,7 +50,7 @@ var OCCategories={ $('#category_dialog').remove(); }, open : function(event, ui) { - $('#category_addinput').live('input',function(){ + $('#category_addinput').live('input',function() { if($(this).val().length > 0) { $('#category_addbutton').removeAttr('disabled'); } @@ -43,7 +61,7 @@ var OCCategories={ $('#category_addbutton').attr('disabled', 'disabled'); return false; }); - $('#category_addbutton').live('click',function(e){ + $('#category_addbutton').live('click',function(e) { e.preventDefault(); if($('#category_addinput').val().length > 0) { OCCategories.add($('#category_addinput').val()); @@ -55,58 +73,142 @@ var OCCategories={ } }); }, - _processDeleteResult:function(jsondata, status, xhr){ - if(jsondata.status == 'success'){ + _processDeleteResult:function(jsondata) { + if(jsondata.status == 'success') { OCCategories._update(jsondata.data.categories); } else { OC.dialogs.alert(jsondata.data.message, 'Error'); } }, - doDelete:function(){ - var categories = $('#categorylist').find('input:checkbox').serialize(); + favorites:function(type, cb) { + if(!type && !this.type) { + throw { name: 'MissingParameter', message: t('core', 'The object type is not specified.') }; + } + type = type ? type : this.type; + $.getJSON(OC.filePath('core', 'ajax', 'categories/favorites.php'), {type: type},function(jsondata) { + if(typeof cb == 'function') { + cb(jsondata); + } else { + if(jsondata.status === 'success') { + OCCategories._update(jsondata.data.categories); + } else { + OC.dialogs.alert(jsondata.data.message, t('core', 'Error')); + } + } + }); + }, + addToFavorites:function(id, type, cb) { + if(!type && !this.type) { + throw { name: 'MissingParameter', message: t('core', 'The object type is not specified.') }; + } + type = type ? type : this.type; + $.post(OC.filePath('core', 'ajax', 'vcategories/addToFavorites.php'), {id:id, type:type}, function(jsondata) { + if(typeof cb == 'function') { + cb(jsondata); + } else { + if(jsondata.status !== 'success') { + OC.dialogs.alert(jsondata.data.message, 'Error'); + } + } + }); + }, + removeFromFavorites:function(id, type, cb) { + if(!type && !this.type) { + throw { name: 'MissingParameter', message: t('core', 'The object type is not specified.') }; + } + type = type ? type : this.type; + $.post(OC.filePath('core', 'ajax', 'vcategories/removeFromFavorites.php'), {id:id, type:type}, function(jsondata) { + if(typeof cb == 'function') { + cb(jsondata); + } else { + if(jsondata.status !== 'success') { + OC.dialogs.alert(jsondata.data.message, t('core', 'Error')); + } + } + }); + }, + doDelete:function(categories, type, cb) { + if(!type && !this.type) { + throw { name: 'MissingParameter', message: t('core', 'The object type is not specified.') }; + } + type = type ? type : this.type; if(categories == '' || categories == undefined) { OC.dialogs.alert(t('core', 'No categories selected for deletion.'), t('core', 'Error')); return false; } - categories += '&app=' + OCCategories.app; - $.post(OC.filePath(OCCategories.app, 'ajax', 'categories/delete.php'), categories, OCCategories._processDeleteResult) - .error(function(xhr){ - if (xhr.status == 404) { - $.post(OC.filePath('core', 'ajax', 'vcategories/delete.php'), categories, OCCategories._processDeleteResult); - } - }); + var self = this; + var q = categories + '&type=' + type; + if(this.app) { + q += '&app=' + this.app; + $.post(OC.filePath(this.app, 'ajax', 'categories/delete.php'), q, function(jsondata) { + if(typeof cb == 'function') { + cb(jsondata); + } else { + self._processDeleteResult(jsondata); + } + }); + } else { + $.post(OC.filePath('core', 'ajax', 'vcategories/delete.php'), q, function(jsondata) { + if(typeof cb == 'function') { + cb(jsondata); + } else { + self._processDeleteResult(jsondata); + } + }); + } }, - add:function(category){ - $.getJSON(OC.filePath('core', 'ajax', 'vcategories/add.php'),{'category':category, 'app':OCCategories.app},function(jsondata){ - if(jsondata.status == 'success'){ - OCCategories._update(jsondata.data.categories); + add:function(category, type, cb) { + if(!type && !this.type) { + throw { name: 'MissingParameter', message: t('core', 'The object type is not specified.') }; + } + type = type ? type : this.type; + $.post(OC.filePath('core', 'ajax', 'vcategories/add.php'),{'category':category, 'type':type},function(jsondata) { + if(typeof cb == 'function') { + cb(jsondata); } else { - OC.dialogs.alert(jsondata.data.message, 'Error'); + if(jsondata.status === 'success') { + OCCategories._update(jsondata.data.categories); + } else { + OC.dialogs.alert(jsondata.data.message, 'Error'); + } } }); - return false; }, - rescan:function(){ - $.getJSON(OC.filePath(OCCategories.app, 'ajax', 'categories/rescan.php'),function(jsondata, status, xhr){ - if(jsondata.status == 'success'){ - OCCategories._update(jsondata.data.categories); + rescan:function(app, cb) { + if(!app && !this.app) { + throw { name: 'MissingParameter', message: t('core', 'The app name is not specified.') }; + } + app = app ? app : this.app; + $.getJSON(OC.filePath(app, 'ajax', 'categories/rescan.php'),function(jsondata, status, xhr) { + if(typeof cb == 'function') { + cb(jsondata); } else { - OC.dialogs.alert(jsondata.data.message, 'Error'); + if(jsondata.status === 'success') { + OCCategories._update(jsondata.data.categories); + } else { + OC.dialogs.alert(jsondata.data.message, 'Error'); + } } }).error(function(xhr){ if (xhr.status == 404) { - OC.dialogs.alert('The required file ' + OC.filePath(OCCategories.app, 'ajax', 'categories/rescan.php') + ' is not installed!', 'Error'); + var errormessage = t('core', 'The required file {file} is not installed!', + {file: OC.filePath(app, 'ajax', 'categories/rescan.php')}, t('core', 'Error')); + if(typeof cb == 'function') { + cb({status:'error', data:{message:errormessage}}); + } else { + OC.dialogs.alert(errormessage); + } } }); }, - _update:function(categories){ + _update:function(categories) { var categorylist = $('#categorylist'); categorylist.find('li').remove(); for(var category in categories) { var item = '
          • ' + categories[category] + '
          • '; $(item).appendTo(categorylist); } - if(OCCategories.changed != undefined) { + if(typeof OCCategories.changed === 'function') { OCCategories.changed(categories); } } diff --git a/core/js/requesttoken.js b/core/js/requesttoken.js deleted file mode 100644 index 0d78cd7e93b808ee287e96532326699253b7ad08..0000000000000000000000000000000000000000 --- a/core/js/requesttoken.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * ownCloud - * - * @file core/js/requesttoken.js - * @brief Routine to refresh the Request protection request token periodically - * @author Christian Reiner (arkascha) - * @copyright 2011-2012 Christian Reiner - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the license, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. - * If not, see . - * - */ - -OC.Request = { - // the request token - Token: {}, - // the lifespan span (in secs) - Lifespan: {}, - // method to refresh the local request token periodically - Refresh: function(){ - // just a client side console log to preserve efficiency - console.log("refreshing request token (lifebeat)"); - var dfd=new $.Deferred(); - $.ajax({ - type: 'POST', - url: OC.filePath('core','ajax','requesttoken.php'), - cache: false, - data: { }, - dataType: 'json' - }).done(function(response){ - // store refreshed token inside this class - OC.Request.Token=response.token; - dfd.resolve(); - }).fail(dfd.reject); - return dfd; - } -} -// accept requesttoken and lifespan into the OC namespace -OC.Request.Token = oc_requesttoken; -OC.Request.Lifespan = oc_requestlifespan; -// refresh the request token periodically shortly before it becomes invalid on the server side -setInterval(OC.Request.Refresh,Math.floor(1000*OC.Request.Lifespan*0.93)), // 93% of lifespan value, close to when the token expires -// early bind token as additional ajax argument for every single request -$(document).bind('ajaxSend', function(elm, xhr, s){xhr.setRequestHeader('requesttoken', OC.Request.Token);}); diff --git a/core/js/router.js b/core/js/router.js new file mode 100644 index 0000000000000000000000000000000000000000..3562785b3420ef01963ff39b74eccb20f5caa57c --- /dev/null +++ b/core/js/router.js @@ -0,0 +1,78 @@ +OC.router_base_url = OC.webroot + '/index.php/', +OC.Router = { + // register your ajax requests to load after the loading of the routes + // has finished. otherwise you face problems with race conditions + registerLoadedCallback: function(callback){ + this.routes_request.done(callback); + }, + routes_request: $.ajax(OC.router_base_url + 'core/routes.json', { + dataType: 'json', + success: function(jsondata) { + if (jsondata.status === 'success') { + OC.Router.routes = jsondata.data; + } + } + }), + generate:function(name, opt_params) { + if (!('routes' in this)) { + if(this.routes_request.state() != 'resolved') { + console.warn('To avoid race conditions, please register a callback');// wait + } + } + if (!(name in this.routes)) { + throw new Error('The route "' + name + '" does not exist.'); + } + var route = this.routes[name]; + var params = opt_params || {}; + var unusedParams = $.extend(true, {}, params); + var url = ''; + var optional = true; + $(route.tokens).each(function(i, token) { + if ('text' === token[0]) { + url = token[1] + url; + optional = false; + + return; + } + + if ('variable' === token[0]) { + if (false === optional || !(token[3] in route.defaults) + || ((token[3] in params) && params[token[3]] != route.defaults[token[3]])) { + var value; + if (token[3] in params) { + value = params[token[3]]; + delete unusedParams[token[3]]; + } else if (token[3] in route.defaults) { + value = route.defaults[token[3]]; + } else if (optional) { + return; + } else { + throw new Error('The route "' + name + '" requires the parameter "' + token[3] + '".'); + } + + var empty = true === value || false === value || '' === value; + + if (!empty || !optional) { + url = token[1] + encodeURIComponent(value).replace(/%2F/g, '/') + url; + } + + optional = false; + } + + return; + } + + throw new Error('The token type "' + token[0] + '" is not supported.'); + }); + if (url === '') { + url = '/'; + } + + unusedParams = $.param(unusedParams); + if (unusedParams.length > 0) { + url += '?'+unusedParams; + } + + return OC.router_base_url + url; + } +}; diff --git a/core/js/share.js b/core/js/share.js index 7968edebb7ac7751846112e166e0e54005d10e2e..475abb58bffd6b3eea7fba8b1cef0bc539af5bc7 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -10,17 +10,38 @@ OC.Share={ // Load all share icons $.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getItemsSharedStatuses', itemType: itemType }, function(result) { if (result && result.status === 'success') { - $.each(result.data, function(item, hasPrivateLink) { - // Private links override shared in terms of icon display + $.each(result.data, function(item, hasLink) { + OC.Share.statuses[item] = hasLink; + // Links override shared in terms of icon display + if (hasLink) { + var image = OC.imagePath('core', 'actions/public'); + } else { + var image = OC.imagePath('core', 'actions/shared'); + } if (itemType != 'file' && itemType != 'folder') { - if (hasPrivateLink) { - var image = OC.imagePath('core', 'actions/public'); - } else { - var image = OC.imagePath('core', 'actions/shared'); - } $('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center'); + } else { + var file = $('tr').filterAttr('data-file', OC.basename(item)); + if (file.length > 0) { + $(file).find('.fileactions .action').filterAttr('data-action', 'Share').find('img').attr('src', image); + } + var dir = $('#dir').val(); + if (dir.length > 1) { + var last = ''; + var path = dir; + // Search for possible parent folders that are shared + while (path != last) { + if (path == item) { + var img = $('.fileactions .action').filterAttr('data-action', 'Share').find('img'); + if (img.attr('src') != OC.imagePath('core', 'actions/public')) { + img.attr('src', image); + } + } + last = path; + path = OC.Share.dirname(path); + } + } } - OC.Share.statuses[item] = hasPrivateLink; }); } }); @@ -125,11 +146,11 @@ OC.Share={ showDropDown:function(itemType, itemSource, appendTo, link, possiblePermissions) { var data = OC.Share.loadItem(itemType, itemSource); var html = ' diff --git a/core/templates/installation.php b/core/templates/installation.php index 1a05c3fb762e562d0ef506af9064eecfe833dc91..1e7983eae5351038544d4fb2a36b962753425252 100644 --- a/core/templates/installation.php +++ b/core/templates/installation.php @@ -3,7 +3,6 @@ '> '>
            - 0): ?>
              @@ -19,7 +18,20 @@
            - + +
            + t('Security Warning');?> + t('No secure random number generator is available, please enable the PHP OpenSSL extension.');?> +
            + t('Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account.');?> +
            + + +
            + t('Security Warning');?> + t('Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root.');?> +
            +
            t( 'Create an admin account' ); ?>

            @@ -61,7 +73,7 @@

            MySQL t( 'will be used' ); ?>.

            - /> + /> @@ -72,7 +84,7 @@ - /> + /> @@ -82,7 +94,7 @@ - /> + />
            @@ -99,7 +111,7 @@

            - +

            diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php index f78b6ff8bbd47eb0f815d771eb3264900b0a295c..47f4b423b3e92b80b16a02f9950643baa5612a77 100644 --- a/core/templates/layout.base.php +++ b/core/templates/layout.base.php @@ -8,10 +8,10 @@ diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 6f59e18a8e1bc9509435dd45fa47d08911fe6b2d..e83d9e1a6829854230243a6b8cd1e393c71f9d4d 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -8,10 +8,14 @@ diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index b6d8a7604a2320b9af482079fef9f55069872573..ba5053edecf8e430e848e14fad60d49982e8be1a 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -8,15 +8,26 @@ +
            '; } ?> - - t('Lost your password?'); ?> +
              + +
            • + t('Automatic logon rejected!'); ?>
              + t('If you did not change your password recently, your account may be compromised!'); ?>
              + t('Please change your password to secure your account again.'); ?> +
            • + +
            • + t('Lost your password?'); ?> +
            • + +

            autocomplete="on" required /> diff --git a/core/templates/verify.php b/core/templates/verify.php new file mode 100644 index 0000000000000000000000000000000000000000..600eaca05b753d73795b29dfb8e28c583db3510b --- /dev/null +++ b/core/templates/verify.php @@ -0,0 +1,18 @@ + +

            +
              +
            • + t('Security Warning!'); ?>
              + t("Please verify your password.
              For security reasons you may be occasionally asked to enter your password again."); ?>
              +
            • +
            +

            + +

            +

            + + +

            + +
            + diff --git a/cron.php b/cron.php index f13b284b818d06f504824885798beb16467ccf88..a202ca60bad7ac93bcad6c3f68a8f1c6de0523f3 100644 --- a/cron.php +++ b/cron.php @@ -23,9 +23,18 @@ // Unfortunately we need this class for shutdown function class my_temporary_cron_class { public static $sent = false; + public static $lockfile = ""; + public static $keeplock = false; } +// We use this function to handle (unexpected) shutdowns function handleUnexpectedShutdown() { + // Delete lockfile + if( !my_temporary_cron_class::$keeplock && file_exists( my_temporary_cron_class::$lockfile )) { + unlink( my_temporary_cron_class::$lockfile ); + } + + // Say goodbye if the app did not shutdown properly if( !my_temporary_cron_class::$sent ) { if( OC::$CLI ) { echo 'Unexpected error!'.PHP_EOL; @@ -47,8 +56,11 @@ if( !OC_Config::getValue( 'installed', false )) { // Handle unexpected errors register_shutdown_function('handleUnexpectedShutdown'); +// Delete temp folder +OC_Helper::cleanTmpNoClean(); + // Exit if background jobs are disabled! -$appmode = OC_Appconfig::getValue( 'core', 'backgroundjobs_mode', 'ajax' ); +$appmode = OC_BackgroundJob::getExecutionType(); if( $appmode == 'none' ) { my_temporary_cron_class::$sent = true; if( OC::$CLI ) { @@ -61,29 +73,42 @@ if( $appmode == 'none' ) { } if( OC::$CLI ) { + // Create lock file first + my_temporary_cron_class::$lockfile = OC_Config::getValue( "datadirectory", OC::$SERVERROOT.'/data' ).'/cron.lock'; + + // We call ownCloud from the CLI (aka cron) if( $appmode != 'cron' ) { - OC_Appconfig::setValue( 'core', 'backgroundjobs_mode', 'cron' ); + // Use cron in feature! + OC_BackgroundJob::setExecutionType('cron' ); } // check if backgroundjobs is still running - $pid = OC_Appconfig::getValue( 'core', 'backgroundjobs_pid', false ); - if( $pid !== false ) { - // FIXME: check if $pid is still alive (*nix/mswin). if so then exit + if( file_exists( my_temporary_cron_class::$lockfile )) { + my_temporary_cron_class::$keeplock = true; + my_temporary_cron_class::$sent = true; + echo "Another instance of cron.php is still running!"; + exit( 1 ); } - // save pid - OC_Appconfig::setValue( 'core', 'backgroundjobs_pid', getmypid()); + + // Create a lock file + touch( my_temporary_cron_class::$lockfile ); // Work OC_BackgroundJob_Worker::doAllSteps(); } else{ + // We call cron.php from some website if( $appmode == 'cron' ) { + // Cron is cron :-P OC_JSON::error( array( 'data' => array( 'message' => 'Backgroundjobs are using system cron!'))); } else{ + // Work and success :-) OC_BackgroundJob_Worker::doNextStep(); OC_JSON::success(); } } + +// done! my_temporary_cron_class::$sent = true; exit(); diff --git a/db_structure.xml b/db_structure.xml index 99a30cb6137aab440c3290c0b4725c6707eb5329..db43ef21140650496e2deb352818064340f98f4f 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -46,6 +46,13 @@ ascending + + appconfig_config_key_index + + configkey + ascending + + @@ -257,6 +264,13 @@ true 64 + + group_admin_uid + + uid + ascending + + @@ -581,6 +595,21 @@ false + + token + text + + false + 32 + + + + token_index + + token + ascending + + @@ -671,4 +700,125 @@ + + + *dbprefix*vcategory + + + + + id + integer + 0 + true + 1 + true + 4 + + + + uid + text + + true + 64 + + + + type + text + + true + 64 + + + + category + text + + true + 255 + + + + uid_index + + uid + ascending + + + + + type_index + + type + ascending + + + + + category_index + + category + ascending + + + + +
            + + + + *dbprefix*vcategory_to_object + + + + + objid + integer + 0 + true + true + 4 + + + + categoryid + integer + 0 + true + true + 4 + + + + type + text + + true + 64 + + + + true + true + category_object_index + + categoryid + ascending + + + objid + ascending + + + type + ascending + + + + + +
            + diff --git a/files/webdav.php b/files/webdav.php index e7292d5a19f0c2e8a85048149323821b0d4633f9..87dd019196922c21308c4c920c5c1ebde531c347 100644 --- a/files/webdav.php +++ b/files/webdav.php @@ -24,24 +24,7 @@ */ // only need filesystem apps -$RUNTIME_APPTYPES=array('filesystem','authentication'); +$RUNTIME_APPTYPES=array('filesystem', 'authentication'); require_once '../lib/base.php'; - -// Backends -$authBackend = new OC_Connector_Sabre_Auth(); -$lockBackend = new OC_Connector_Sabre_Locks(); - -// Create ownCloud Dir -$publicDir = new OC_Connector_Sabre_Directory(''); - -// Fire up server -$server = new Sabre_DAV_Server($publicDir); -$server->setBaseUri(OC::$WEBROOT. '/files/webdav.php'); - -// Load plugins -$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); -$server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); -$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload - -// And off we go! -$server->exec(); +$baseuri = OC::$WEBROOT. '/files/webdav.php'; +require_once 'apps/files/appinfo/remote.php'; diff --git a/index.php b/index.php index 12b2d8f406d1d9b7504e036ca3ba72d60e7ff12b..bf0b287a64b60064248386a7c9e822bfc68d6b6d 100755 --- a/index.php +++ b/index.php @@ -21,7 +21,7 @@ * */ -$RUNTIME_NOAPPS = TRUE; //no apps, yet +$RUNTIME_NOAPPS = true; //no apps, yet require_once 'lib/base.php'; diff --git a/l10n/.tx/config b/l10n/.tx/config index cd29b6ae77b556c86cd18074c3a269a0459f8d55..2aac0feedc58583490ae805aa438a5242e109c0a 100644 --- a/l10n/.tx/config +++ b/l10n/.tx/config @@ -52,3 +52,9 @@ source_file = templates/user_ldap.pot source_lang = en type = PO +[owncloud.user_webdavauth] +file_filter = /user_webdavauth.po +source_file = templates/user_webdavauth.pot +source_lang = en +type = PO + diff --git a/l10n/af/admin_dependencies_chk.po b/l10n/af/admin_dependencies_chk.po deleted file mode 100644 index cc514c3f092edce328f17ca3dd6c5936af895192..0000000000000000000000000000000000000000 --- a/l10n/af/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/af/admin_migrate.po b/l10n/af/admin_migrate.po deleted file mode 100644 index 6801bee56d5ded11ff930dd5ca1f6670250c8af0..0000000000000000000000000000000000000000 --- a/l10n/af/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/af/bookmarks.po b/l10n/af/bookmarks.po deleted file mode 100644 index f9c5316dd5dc3cb48676e28fd33226a87e564466..0000000000000000000000000000000000000000 --- a/l10n/af/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/af/calendar.po b/l10n/af/calendar.po deleted file mode 100644 index c4363ac1ae7eadb1efcce2717602a376c262f81d..0000000000000000000000000000000000000000 --- a/l10n/af/calendar.po +++ /dev/null @@ -1,813 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/af/contacts.po b/l10n/af/contacts.po deleted file mode 100644 index f8979aa76870ac260b3d0b05d9db521aa1ee1f8b..0000000000000000000000000000000000000000 --- a/l10n/af/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/af/core.po b/l10n/af/core.po index b341411ef2f73738909887a799e99e69d317dfd5..d2470d10b9266200af4b9ebd98661f18750f1127 100644 --- a/l10n/af/core.po +++ b/l10n/af/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" +"POT-Creation-Date: 2012-10-18 02:03+0200\n" +"PO-Revision-Date: 2012-10-18 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" "MIME-Version: 1.0\n" @@ -29,55 +29,55 @@ msgstr "" msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 msgid "Settings" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "January" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "February" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "March" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "April" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "May" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "June" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "July" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "August" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "September" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "October" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "November" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "December" msgstr "" @@ -105,8 +105,8 @@ msgstr "" msgid "No categories selected for deletion." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 +#: js/share.js:509 msgid "Error" msgstr "" @@ -123,15 +123,11 @@ msgid "Error while changing permissions" msgstr "" #: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +msgid "Shared with you and the group {group} by {owner}" msgstr "" #: js/share.js:132 -msgid "Shared with you by" +msgid "Shared with you by {owner}" msgstr "" #: js/share.js:137 @@ -146,7 +142,8 @@ msgstr "" msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:147 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" @@ -171,50 +168,46 @@ msgid "Resharing is not allowed" msgstr "" #: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +msgid "Shared in {item} with {user}" msgstr "" #: js/share.js:271 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:283 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:285 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:288 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:291 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:294 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:297 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:322 js/share.js:484 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:497 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:509 msgid "Error setting expiration date" msgstr "" @@ -238,12 +231,12 @@ msgstr "" msgid "Login failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -299,52 +292,77 @@ msgstr "" msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:38 msgid "web services under your control" msgstr "" @@ -352,15 +370,29 @@ msgstr "" msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +407,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/af/files.po b/l10n/af/files.po index b7a6a22ae8f93ebbe01afb504326b6d6571067bd..5f5576757327f99a9d90836f1f4f2129e94a6067 100644 --- a/l10n/af/files.po +++ b/l10n/af/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" +"POT-Creation-Date: 2012-10-19 02:03+0200\n" +"PO-Revision-Date: 2012-10-19 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" "MIME-Version: 1.0\n" @@ -63,152 +63,152 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:194 js/filelist.js:196 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:194 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:243 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:243 js/filelist.js:245 js/filelist.js:277 js/filelist.js:279 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:245 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:277 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:279 +msgid "deleted {files}" msgstr "" #: js/files.js:179 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:242 js/files.js:347 js/files.js:377 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:262 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:265 js/files.js:310 js/files.js:325 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:328 js/files.js:361 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:430 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 +#: js/files.js:500 msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:681 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:689 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:762 templates/index.php:48 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:763 templates/index.php:56 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:764 templates/index.php:58 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:791 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:793 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:801 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" +#: js/files.js:803 +msgid "{count} files" msgstr "" -#: js/files.js:833 +#: js/files.js:846 msgid "seconds ago" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:847 +msgid "1 minute ago" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:848 +msgid "{minutes} minutes ago" msgstr "" -#: js/files.js:838 +#: js/files.js:851 msgid "today" msgstr "" -#: js/files.js:839 +#: js/files.js:852 msgid "yesterday" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:853 +msgid "{days} days ago" msgstr "" -#: js/files.js:841 +#: js/files.js:854 msgid "last month" msgstr "" -#: js/files.js:843 +#: js/files.js:856 msgid "months ago" msgstr "" -#: js/files.js:844 +#: js/files.js:857 msgid "last year" msgstr "" -#: js/files.js:845 +#: js/files.js:858 msgid "years ago" msgstr "" diff --git a/l10n/af/files_pdfviewer.po b/l10n/af/files_pdfviewer.po deleted file mode 100644 index 142a114dc5cb1a77f744765323a9a6925eaaef47..0000000000000000000000000000000000000000 --- a/l10n/af/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/af/files_texteditor.po b/l10n/af/files_texteditor.po deleted file mode 100644 index 167f82535888035f71d30d46bd019643fabe2aea..0000000000000000000000000000000000000000 --- a/l10n/af/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/af/gallery.po b/l10n/af/gallery.po deleted file mode 100644 index 4b3c3a0b90705f649821b60e4c2d217fb17685f5..0000000000000000000000000000000000000000 --- a/l10n/af/gallery.po +++ /dev/null @@ -1,94 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Afrikaans (http://www.transifex.net/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/af/media.po b/l10n/af/media.po deleted file mode 100644 index 6ef8fb90646ea65388c89ad9756f7d341b2fc422..0000000000000000000000000000000000000000 --- a/l10n/af/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Afrikaans (http://www.transifex.net/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/af/tasks.po b/l10n/af/tasks.po deleted file mode 100644 index ced9b6ce1218ef1125ae3e02b45e92e4bf50b836..0000000000000000000000000000000000000000 --- a/l10n/af/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/af/user_migrate.po b/l10n/af/user_migrate.po deleted file mode 100644 index f1829f1329f45acf7fcdb0ee96d9e73cc9b55f8d..0000000000000000000000000000000000000000 --- a/l10n/af/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/af/user_openid.po b/l10n/af/user_openid.po deleted file mode 100644 index 7d05e13987686e13711578133001cb941b5fb955..0000000000000000000000000000000000000000 --- a/l10n/af/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/ar/admin_dependencies_chk.po b/l10n/ar/admin_dependencies_chk.po deleted file mode 100644 index cd7fa85a2b223bd3de4d03ea871da089794ab036..0000000000000000000000000000000000000000 --- a/l10n/ar/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/ar/admin_migrate.po b/l10n/ar/admin_migrate.po deleted file mode 100644 index 9dcf129cad3fcb7cf91afe45cd044b981079929f..0000000000000000000000000000000000000000 --- a/l10n/ar/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/ar/bookmarks.po b/l10n/ar/bookmarks.po deleted file mode 100644 index 50d8ccbf671c9225f0235cd3e6c846d619446564..0000000000000000000000000000000000000000 --- a/l10n/ar/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/ar/calendar.po b/l10n/ar/calendar.po deleted file mode 100644 index 947cca6fda01de8923d0b4fc137d02676e585a53..0000000000000000000000000000000000000000 --- a/l10n/ar/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 09:47+0000\n" -"Last-Translator: blackcoder \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "ليس جميع الجداول الزمنيه محÙوضه مؤقة" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "كل شيء محÙوض مؤقة" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "لم يتم العثور على جدول الزمني" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "لم يتم العثور على احداث" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "جدول زمني خاطئ" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "التوقيت الجديد" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "تم تغيير المنطقة الزمنية" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "طلب غير Ù…Ùهوم" - -#: appinfo/app.php:37 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "الجدول الزمني" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "ddd M/d" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "عيد ميلاد" - -#: lib/app.php:122 -msgid "Business" -msgstr "عمل" - -#: lib/app.php:123 -msgid "Call" -msgstr "إتصال" - -#: lib/app.php:124 -msgid "Clients" -msgstr "الزبائن" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "المرسل" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "عطلة" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ø£Ùكار" - -#: lib/app.php:128 -msgid "Journey" -msgstr "رحلة" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "يوبيل" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "إجتماع" - -#: lib/app.php:131 -msgid "Other" -msgstr "شيء آخر" - -#: lib/app.php:132 -msgid "Personal" -msgstr "شخصي" - -#: lib/app.php:133 -msgid "Projects" -msgstr "مشاريع" - -#: lib/app.php:134 -msgid "Questions" -msgstr "اسئلة" - -#: lib/app.php:135 -msgid "Work" -msgstr "العمل" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "من قبل" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "غير مسمى" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "جدول زمني جديد" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "لا يعاد" - -#: lib/object.php:373 -msgid "Daily" -msgstr "يومي" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "أسبوعي" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "كل نهاية الأسبوع" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "كل اسبوعين" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "شهري" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "سنوي" - -#: lib/object.php:388 -msgid "never" -msgstr "بتاتا" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "حسب تسلسل الحدوث" - -#: lib/object.php:390 -msgid "by date" -msgstr "حسب التاريخ" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "حسب يوم الشهر" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "حسب يوم الاسبوع" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "الأثنين" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "الثلاثاء" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "الاربعاء" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "الخميس" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "الجمعه" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "السبت" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "الاحد" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "الاحداث باسبوع الشهر" - -#: lib/object.php:428 -msgid "first" -msgstr "أول" - -#: lib/object.php:429 -msgid "second" -msgstr "ثاني" - -#: lib/object.php:430 -msgid "third" -msgstr "ثالث" - -#: lib/object.php:431 -msgid "fourth" -msgstr "رابع" - -#: lib/object.php:432 -msgid "fifth" -msgstr "خامس" - -#: lib/object.php:433 -msgid "last" -msgstr "أخير" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "كانون الثاني" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "شباط" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "آذار" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "نيسان" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "أيار" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "حزيران" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "تموز" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "آب" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "أيلول" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "تشرين الاول" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "تشرين الثاني" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "كانون الاول" - -#: lib/object.php:488 -msgid "by events date" -msgstr "حسب تاريخ الحدث" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "حسب يوم السنه" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "حسب رقم الاسبوع" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "حسب اليوم Ùˆ الشهر" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "تاريخ" - -#: lib/search.php:43 -msgid "Cal." -msgstr "تقويم" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "أحد" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "أثن." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "ثلا." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "أرب." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "خمي." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "جمع." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "سبت" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Ùƒ2" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "شبا." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "آذا." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "نيس." - -#: templates/calendar.php:8 -msgid "May." -msgstr "أيا." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "كل النهار" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "خانات خالية من المعلومات" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "عنوان" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "من تاريخ" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "إلى تاريخ" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "إلى يوم" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "إلى وقت" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "هذا الحدث ينتهي قبل أن يبدأ" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "خطأ ÙÙŠ قاعدة البيانات" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "إسبوع" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "شهر" - -#: templates/calendar.php:41 -msgid "List" -msgstr "قائمة" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "اليوم" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "جداولك الزمنيه" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "وصلة CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "جداول زمنيه مشتركه" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "لا يوجد جداول زمنيه مشتركه" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "شارك الجدول الزمني" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "تحميل" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "تعديل" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "حذÙ" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "مشاركه من قبل" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "جدول زمني جديد" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "عادل الجدول الزمني" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "الاسم المرئي" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "حالي" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "لون الجدول الزمني" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "إحÙظ" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "أرسل" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "إلغاء" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "عادل حدث" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "تصدير المعلومات" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "تÙاصيل الحدث" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "يعاد" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "تنبيه" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "الحضور" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "شارك" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "عنوان الحدث" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Ùئة" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "اÙصل الÙئات بالÙواصل" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "عدل الÙئات" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "حدث ÙÙŠ يوم كامل" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "من" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "إلى" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "خيارات متقدمة" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "مكان" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "مكان الحدث" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "مواصÙات" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "وص٠الحدث" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "إعادة" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "تعديلات متقدمه" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "اختر ايام الاسبوع" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "اختر الايام" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "Ùˆ التواريخ حسب يوم السنه." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "Ùˆ الاحداث حسب يوم الشهر." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "اختر الاشهر" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "اختر الاسابيع" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "Ùˆ الاحداث حسب اسبوع السنه" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "المده الÙاصله" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "نهايه" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "الاحداث" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "انشاء جدول زمني جديد" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "أدخل مل٠التقويم" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "أسم الجدول الزمني الجديد" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "إدخال" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "أغلق الحوار" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "إضاÙØ© حدث جديد" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "شاهد الحدث" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "لم يتم اختيار الÙئات" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "من" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "ÙÙŠ" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "المنطقة الزمنية" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24 ساعة" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12 ساعة" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "المستخدمين" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "اختر المستخدمين" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "يمكن تعديله" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "مجموعات" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "اختر المجموعات" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "حدث عام" diff --git a/l10n/ar/contacts.po b/l10n/ar/contacts.po deleted file mode 100644 index 9740f17457ca5d34815db2af2d6906aed88c6fed..0000000000000000000000000000000000000000 --- a/l10n/ar/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "خطء خلال توقي٠كتاب العناوين." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "خطء خلال تعديل كتاب العناوين" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "خطء خلال اضاÙØ© معرÙÙ‡ جديده." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "لا يمكنك اضاÙÙ‡ صÙÙ‡ خاليه." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "يجب ملء على الاقل خانه واحده من العنوان." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "المعلومات الموجودة ÙÙŠ ال vCard غير صحيحة. الرجاء إعادة تحديث الصÙحة." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "المعارÙ" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "هذا ليس دÙتر عناوينك." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "لم يتم العثور على الشخص." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "الوظيÙØ©" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "البيت" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "الهات٠المحمول" - -#: lib/app.php:203 -msgid "Text" -msgstr "معلومات إضاÙية" - -#: lib/app.php:204 -msgid "Voice" -msgstr "صوت" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "الÙاكس" - -#: lib/app.php:207 -msgid "Video" -msgstr "الÙيديو" - -#: lib/app.php:208 -msgid "Pager" -msgstr "الرنان" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "تاريخ الميلاد" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "معرÙÙ‡" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "أض٠شخص " - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "كتب العناوين" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "المؤسسة" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "حذÙ" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Ù…Ùضل" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "الهاتÙ" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "البريد الالكتروني" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "عنوان" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "انزال المعرÙÙ‡" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "امحي المعرÙÙ‡" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "نوع" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "العنوان البريدي" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "إضاÙØ©" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "المدينة" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "المنطقة" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "رقم المنطقة" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "البلد" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "كتاب العناوين" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "انزال" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "تعديل" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "كتاب عناوين جديد" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Ø­Ùظ" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "الغاء" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/ar/core.po b/l10n/ar/core.po index d15bbe4a7cd3b26191554c5432271719c86608a4..06b34280efd35b8ca4f74941d72be7ae127033dd 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "تعديلات" -#: js/js.js:645 -msgid "January" +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:645 -msgid "February" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:645 -msgid "March" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:645 -msgid "April" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:645 -msgid "May" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:645 -msgid "June" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:646 -msgid "July" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:646 -msgid "August" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:646 -msgid "September" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:646 -msgid "October" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:646 -msgid "November" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:646 -msgid "December" +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" -msgstr "" +msgstr "الغاء" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "كلمة السر" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "إلغاء مشاركة" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "سو٠نرسل لك بريد يحتوي على وصلة لتجديد كلمة السر." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "تم طلب" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "محاولة دخول Ùاشلة!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "إسم المستخدم" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "طلب تعديل" @@ -294,74 +327,189 @@ msgstr "لم يتم إيجاد" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" -msgstr "" +msgstr "عدل الÙئات" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" +msgstr "أدخل" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" msgstr "" #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "أضÙ
            مستخدم رئيسي " -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "خيارات متقدمة" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "مجلد المعلومات" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "أسس قاعدة البيانات" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "سيتم استخدمه" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "مستخدم قاعدة البيانات" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "كلمة سر مستخدم قاعدة البيانات" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "إسم قاعدة البيانات" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "خادم قاعدة البيانات" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "انهاء التعديلات" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "الاحد" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "الأثنين" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "الثلاثاء" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "الاربعاء" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "الخميس" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "الجمعه" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "السبت" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "كانون الثاني" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "شباط" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "آذار" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "نيسان" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "أيار" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "حزيران" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "تموز" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "آب" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "أيلول" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "تشرين الاول" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "تشرين الثاني" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "كانون الاول" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "خدمات الوب تحت تصرÙÙƒ" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "الخروج" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "هل نسيت كلمة السر؟" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "تذكر" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "أدخل" @@ -376,3 +524,17 @@ msgstr "السابق" #: templates/part.pagenavi.php:20 msgid "next" msgstr "التالي" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/ar/files.po b/l10n/ar/files.po index 34c24504f7ba42da56527914e0afa6785ad77f74..2f8cead51f34a5c0a9e518503a4742db8499d530 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/files.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,194 +23,165 @@ msgid "There is no error, the file uploaded with success" msgstr "تم ترÙيع الملÙات بنجاح." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "حجم المل٠الذي تريد ترÙيعه أعلى مما upload_max_filesize يسمح به ÙÙŠ مل٠php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "حجم المل٠الذي تريد ترÙيعه أعلى مما MAX_FILE_SIZE يسمح به ÙÙŠ واجهة ال HTML." -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "تم ترÙيع جزء من الملÙات الذي تريد ترÙيعها Ùقط" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "لم يتم ترÙيع أي من الملÙات" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "المجلد المؤقت غير موجود" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "الملÙات" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "إلغاء مشاركة" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "محذوÙ" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "إغلق" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "الاسم" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "حجم" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "معدل" -#: js/files.js:777 -msgid "folder" -msgstr "" - -#: js/files.js:779 -msgid "folders" -msgstr "" - -#: js/files.js:787 -msgid "file" -msgstr "" - -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:838 -msgid "today" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -221,80 +192,76 @@ msgstr "" msgid "Maximum upload size" msgstr "الحد الأقصى لحجم الملÙات التي يمكن رÙعها" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Ø­Ùظ" #: templates/index.php:7 msgid "New" msgstr "جديد" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ملÙ" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "مجلد" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "إرÙع" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "لا يوجد شيء هنا. إرÙع بعض الملÙات!" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "تحميل" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "حجم الترÙيع أعلى من المسموح" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "حجم الملÙات التي تريد ترÙيعها أعلى من المسموح على الخادم." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/ar/files_encryption.po b/l10n/ar/files_encryption.po index 18f508df5b4a09720e00bbdc0d33914bb7178cb3..1d2de3d76f25f02ec56327c1e6cd898ee02b90b8 100644 --- a/l10n/ar/files_encryption.po +++ b/l10n/ar/files_encryption.po @@ -3,32 +3,33 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-13 00:05+0100\n" +"PO-Revision-Date: 2012-11-12 13:20+0000\n" +"Last-Translator: TYMAH \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" #: templates/settings.php:3 msgid "Encryption" -msgstr "" +msgstr "التشÙير" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "" +msgstr "استبعد أنواع الملÙات التالية من التشÙير" #: templates/settings.php:5 msgid "None" -msgstr "" +msgstr "لا شيء" #: templates/settings.php:10 msgid "Enable Encryption" -msgstr "" +msgstr "تÙعيل التشÙير" diff --git a/l10n/ar/files_pdfviewer.po b/l10n/ar/files_pdfviewer.po deleted file mode 100644 index 91492d720c39bde7d5c8b159a6fc247c9516b31e..0000000000000000000000000000000000000000 --- a/l10n/ar/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ar/files_texteditor.po b/l10n/ar/files_texteditor.po deleted file mode 100644 index ed1f96fd6c30e0d142bc98245d13e19adbd23485..0000000000000000000000000000000000000000 --- a/l10n/ar/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ar/gallery.po b/l10n/ar/gallery.po deleted file mode 100644 index ad8e0279b35bdc7d99e0e69f902fe46f764a1dc0..0000000000000000000000000000000000000000 --- a/l10n/ar/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Arabic (http://www.transifex.net/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "اعادة البحث" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "رجوع" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/ar/impress.po b/l10n/ar/impress.po deleted file mode 100644 index 5bbc9f2fbc1394d3cae1e8af8003cff2bcd592cd..0000000000000000000000000000000000000000 --- a/l10n/ar/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/ar/lib.po b/l10n/ar/lib.po index 562af94ac63701e384854036de1851b87ec64695..fc9b90e3d69d4fe3cca5f230d14ed3241f69caef 100644 --- a/l10n/ar/lib.po +++ b/l10n/ar/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "المساعدة" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "شخصي" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "تعديلات" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "المستخدمين" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "لم يتم التأكد من الشخصية بنجاح" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "الملÙات" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "معلومات إضاÙية" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/ar/media.po b/l10n/ar/media.po deleted file mode 100644 index b72ad0a3ec11ec3d4df1e9b0a8a473d9a54276ad..0000000000000000000000000000000000000000 --- a/l10n/ar/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 09:27+0000\n" -"Last-Translator: blackcoder \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "الموسيقى" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "أض٠الالبوم الى القائمه" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "إلعب" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "تجميد" - -#: templates/music.php:5 -msgid "Previous" -msgstr "السابق" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "التالي" - -#: templates/music.php:7 -msgid "Mute" -msgstr "إلغاء الصوت" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "تشغيل الصوت" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "إعادة البحث عن ملÙات الموسيقى" - -#: templates/music.php:37 -msgid "Artist" -msgstr "الÙنان" - -#: templates/music.php:38 -msgid "Album" -msgstr "الألبوم" - -#: templates/music.php:39 -msgid "Title" -msgstr "العنوان" diff --git a/l10n/ar/settings.po b/l10n/ar/settings.po index ebaf57acc9f1baab2959f5b3d09d23216356aaad..e84963aded2b24e00931652c88f0a3184ebb33bc 100644 --- a/l10n/ar/settings.po +++ b/l10n/ar/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,168 +19,84 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "تم تغيير ال OpenID" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "طلبك غير Ù…Ùهوم" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "لم يتم التأكد من الشخصية بنجاح" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "تم تغيير اللغة" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "" #: js/personal.js:69 msgid "Saving..." -msgstr "" +msgstr "Ø­Ùظ" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -203,7 +119,7 @@ msgstr "" #: templates/help.php:9 msgid "Documentation" -msgstr "" +msgstr "التوثيق" #: templates/help.php:10 msgid "Managing Big Files" @@ -213,21 +129,21 @@ msgstr "" msgid "Ask a question" msgstr "إسأل سؤال" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "الاتصال بقاعدة بيانات المساعدة لم يتم بنجاح" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "إذهب هنالك بنÙسك" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "الجواب" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -236,7 +152,7 @@ msgstr "" #: templates/personal.php:13 msgid "Download" -msgstr "" +msgstr "انزال" #: templates/personal.php:19 msgid "Your password was changed" @@ -286,6 +202,16 @@ msgstr "ساعد ÙÙŠ الترجمه" msgid "use this address to connect to your ownCloud in your file manager" msgstr "إستخدم هذا العنوان للإتصال ب ownCloud داخل نظام الملÙات " +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "الاسم" @@ -308,7 +234,7 @@ msgstr "" #: templates/users.php:55 templates/users.php:138 msgid "Other" -msgstr "" +msgstr "شيء آخر" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" diff --git a/l10n/ar/tasks.po b/l10n/ar/tasks.po deleted file mode 100644 index baa311388ff5b76ed4679aafe4b1b150159383c9..0000000000000000000000000000000000000000 --- a/l10n/ar/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/ar/user_migrate.po b/l10n/ar/user_migrate.po deleted file mode 100644 index 6a29ae80a3dd49175b324995d291d8968acf360f..0000000000000000000000000000000000000000 --- a/l10n/ar/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/ar/user_openid.po b/l10n/ar/user_openid.po deleted file mode 100644 index 7063958b17353ced2fe57ebbcbd7968027d0d2dc..0000000000000000000000000000000000000000 --- a/l10n/ar/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/ar/files_odfviewer.po b/l10n/ar/user_webdavauth.po similarity index 62% rename from l10n/ar/files_odfviewer.po rename to l10n/ar/user_webdavauth.po index 75c766b017b41575f4a235dd129d3271b7798b30..dcf1788ab57e023c2d0cd90718789e2439af434c 100644 --- a/l10n/ar/files_odfviewer.po +++ b/l10n/ar/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-13 00:05+0100\n" +"PO-Revision-Date: 2012-11-12 13:18+0000\n" +"Last-Translator: TYMAH \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/ar_SA/admin_dependencies_chk.po b/l10n/ar_SA/admin_dependencies_chk.po deleted file mode 100644 index defa48d8f6f7ff051d4cf915e5f6d3ce057fa858..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/ar_SA/admin_migrate.po b/l10n/ar_SA/admin_migrate.po deleted file mode 100644 index 04ac5b2dfb18b7439f2d7a9ccc8fd3b6140b2d71..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/ar_SA/bookmarks.po b/l10n/ar_SA/bookmarks.po deleted file mode 100644 index 476c475f4605662f4a38bf1923458b49608da5e5..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/ar_SA/calendar.po b/l10n/ar_SA/calendar.po deleted file mode 100644 index 8229289fd361457e13bed1adc70ad94e2265e40c..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/calendar.po +++ /dev/null @@ -1,813 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/ar_SA/contacts.po b/l10n/ar_SA/contacts.po deleted file mode 100644 index 26cc5d2266eefcc46448d4090d389e8be17f1e8a..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/ar_SA/core.po b/l10n/ar_SA/core.po index e63e571d91db15facc957378edbd09246c724052..9f65ed02399bea291078951b197f95591dab9539 100644 --- a/l10n/ar_SA/core.po +++ b/l10n/ar_SA/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" +"POT-Creation-Date: 2012-10-18 02:03+0200\n" +"PO-Revision-Date: 2012-10-18 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" "MIME-Version: 1.0\n" @@ -29,55 +29,55 @@ msgstr "" msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 msgid "Settings" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "January" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "February" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "March" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "April" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "May" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "June" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "July" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "August" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "September" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "October" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "November" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "December" msgstr "" @@ -105,8 +105,8 @@ msgstr "" msgid "No categories selected for deletion." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 +#: js/share.js:509 msgid "Error" msgstr "" @@ -123,15 +123,11 @@ msgid "Error while changing permissions" msgstr "" #: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +msgid "Shared with you and the group {group} by {owner}" msgstr "" #: js/share.js:132 -msgid "Shared with you by" +msgid "Shared with you by {owner}" msgstr "" #: js/share.js:137 @@ -146,7 +142,8 @@ msgstr "" msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:147 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" @@ -171,50 +168,46 @@ msgid "Resharing is not allowed" msgstr "" #: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +msgid "Shared in {item} with {user}" msgstr "" #: js/share.js:271 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:283 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:285 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:288 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:291 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:294 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:297 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:322 js/share.js:484 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:497 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:509 msgid "Error setting expiration date" msgstr "" @@ -238,12 +231,12 @@ msgstr "" msgid "Login failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -299,52 +292,77 @@ msgstr "" msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:38 msgid "web services under your control" msgstr "" @@ -352,15 +370,29 @@ msgstr "" msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +407,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/ar_SA/files.po b/l10n/ar_SA/files.po index dd926c43632f7eb1dfc1de0d01f42e698a54a889..7e87201ab779d94c6164d4f4b40eaa877c56c301 100644 --- a/l10n/ar_SA/files.po +++ b/l10n/ar_SA/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" +"POT-Creation-Date: 2012-10-19 02:03+0200\n" +"PO-Revision-Date: 2012-10-19 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" "MIME-Version: 1.0\n" @@ -63,152 +63,152 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:194 js/filelist.js:196 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:194 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:243 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:243 js/filelist.js:245 js/filelist.js:277 js/filelist.js:279 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:245 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:277 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:279 +msgid "deleted {files}" msgstr "" #: js/files.js:179 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:242 js/files.js:347 js/files.js:377 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:262 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:265 js/files.js:310 js/files.js:325 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:328 js/files.js:361 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:430 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 +#: js/files.js:500 msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:681 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:689 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:762 templates/index.php:48 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:763 templates/index.php:56 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:764 templates/index.php:58 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:791 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:793 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:801 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" +#: js/files.js:803 +msgid "{count} files" msgstr "" -#: js/files.js:833 +#: js/files.js:846 msgid "seconds ago" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:847 +msgid "1 minute ago" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:848 +msgid "{minutes} minutes ago" msgstr "" -#: js/files.js:838 +#: js/files.js:851 msgid "today" msgstr "" -#: js/files.js:839 +#: js/files.js:852 msgid "yesterday" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:853 +msgid "{days} days ago" msgstr "" -#: js/files.js:841 +#: js/files.js:854 msgid "last month" msgstr "" -#: js/files.js:843 +#: js/files.js:856 msgid "months ago" msgstr "" -#: js/files.js:844 +#: js/files.js:857 msgid "last year" msgstr "" -#: js/files.js:845 +#: js/files.js:858 msgid "years ago" msgstr "" diff --git a/l10n/ar_SA/files_pdfviewer.po b/l10n/ar_SA/files_pdfviewer.po deleted file mode 100644 index 8a2c2b3fff1f8e202f0b06f0b390f189386b4d3f..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ar_SA/files_texteditor.po b/l10n/ar_SA/files_texteditor.po deleted file mode 100644 index 384e4edc4d05ed62db1cba169dbc10ce167fefdd..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ar_SA/gallery.po b/l10n/ar_SA/gallery.po deleted file mode 100644 index 9d60ea7bc6d39c94187393fe0dfe3e164443c1dd..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/gallery.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2012-07-25 19:30+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/ar_SA/media.po b/l10n/ar_SA/media.po deleted file mode 100644 index 9f152efa4215a791af3ca716e367b0471c3a9891..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2011-08-13 02:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/ar_SA/tasks.po b/l10n/ar_SA/tasks.po deleted file mode 100644 index 69ac800c5e75cab8d5207a86276dce123850edd5..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/ar_SA/user_migrate.po b/l10n/ar_SA/user_migrate.po deleted file mode 100644 index c49cdec6c68e6012baad87884539eabf0a1ca0de..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/ar_SA/user_openid.po b/l10n/ar_SA/user_openid.po deleted file mode 100644 index bf485303a2e91827e48870849fd29941ef6b8c63..0000000000000000000000000000000000000000 --- a/l10n/ar_SA/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/bg_BG/admin_dependencies_chk.po b/l10n/bg_BG/admin_dependencies_chk.po deleted file mode 100644 index a90db6fe74f5058ce0934de60d6f41f5bfc27914..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/bg_BG/admin_migrate.po b/l10n/bg_BG/admin_migrate.po deleted file mode 100644 index 758123404549467c278c4c29a0b83351c0ad8c9f..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/bg_BG/bookmarks.po b/l10n/bg_BG/bookmarks.po deleted file mode 100644 index b55c57ce25185855130c4ef8fb0608966f466568..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Yasen Pramatarov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-30 09:53+0000\n" -"Last-Translator: Yasen Pramatarov \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Отметки" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "неозаглавено" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Завлачете това в лентата Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ на браузъра Ñи и го натиÑкайте, когато иÑкате да отметнете бързо нÑÐºÐ¾Ñ Ñтраница:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "ОтмÑтане" - -#: templates/list.php:13 -msgid "Address" -msgstr "ÐдреÑ" - -#: templates/list.php:14 -msgid "Title" -msgstr "Заглавие" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Етикети" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° отметката" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "ÐÑмате отметки" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Бутон за отметки
            " diff --git a/l10n/bg_BG/calendar.po b/l10n/bg_BG/calendar.po deleted file mode 100644 index 856d98f8e4348dd940e3a00e839259cc0636363f..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Stefan Ilivanov , 2011. -# Yasen Pramatarov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Ðе Ñа открити календари." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ðе Ñа открити ÑъбитиÑ." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Грешка при внаÑÑне" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ðов чаÑови поÑÑ:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ЧаÑовата зона е Ñменена" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ðевалидна заÑвка" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Календар" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Роджен ден" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Клиенти" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Празници" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Идеи" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Пътуване" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Среща" - -#: lib/app.php:131 -msgid "Other" -msgstr "Друго" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Лично" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Проекти" - -#: lib/app.php:134 -msgid "Questions" -msgstr "ВъпроÑи" - -#: lib/app.php:135 -msgid "Work" -msgstr "Работа" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ðов календар" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ðе Ñе повтарÑ" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Дневно" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Седмично" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Ð’Ñеки делничен ден" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "ДвуÑедмично" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "МеÑечно" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Годишно" - -#: lib/object.php:388 -msgid "never" -msgstr "никога" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Понеделник" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Вторник" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "СрÑда" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Четвъртък" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Петък" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Събота" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "ÐеделÑ" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Ð’Ñички дни" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "ЛипÑват полета" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Заглавие" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Седмица" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "МеÑец" - -#: templates/calendar.php:41 -msgid "List" -msgstr "СпиÑък" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "ДнеÑ" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Вашите календари" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Споделени календари" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "ÐÑма Ñподелени календари" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "СподелÑне на календар" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "ИзтеглÑне" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "ПромÑна" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Изтриване" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ðов календар" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Промени календар" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Екранно име" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ðктивен" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "ЦвÑÑ‚ на календара" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "ЗапиÑ" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Продължи" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Отказ" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "ПромÑна на Ñъбитие" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "ИзнаÑÑне" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "СподелÑне" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Ðаименование" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "КатегориÑ" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Отделете категориите ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Редактиране на категориите" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Целодневно Ñъбитие" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "От" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "До" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Разширени наÑтройки" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "ЛокациÑ" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "ЛокациÑ" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "ОпиÑание" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "ОпиÑание" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Повтори" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Ñъздаване на нов календар" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Изберете календар" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Име на Ð½Ð¾Ð²Ð¸Ñ ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "ВнаÑÑне" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "ЗатварÑне на прозореца" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Ðово Ñъбитие" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Преглед на Ñъбитие" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "ÐÑма избрани категории" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ЧаÑова зона" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Групи" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/bg_BG/contacts.po b/l10n/bg_BG/contacts.po deleted file mode 100644 index 28690adf4db6858ac2cc2145d9a00c3aa87f5248..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index ff661733f9fc408e5f583161cd5240be29103458..1bb3279a2dfa259b5392e3909140c204592dfa98 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/core.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,208 +21,241 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "КатегориÑта вече ÑъщеÑтвува:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "ÐÑма избрани категории за изтриване" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "ÐаÑтройки" -#: js/js.js:645 -msgid "January" -msgstr "Януари" +#: js/js.js:688 +msgid "seconds ago" +msgstr "" -#: js/js.js:645 -msgid "February" -msgstr "Февруари" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "" -#: js/js.js:645 -msgid "March" -msgstr "Март" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Ðприл" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Май" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Юни" +#: js/js.js:693 +msgid "today" +msgstr "" -#: js/js.js:646 -msgid "July" -msgstr "Юли" +#: js/js.js:694 +msgid "yesterday" +msgstr "" -#: js/js.js:646 -msgid "August" -msgstr "ÐвгуÑÑ‚" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "Септември" +#: js/js.js:696 +msgid "last month" +msgstr "" -#: js/js.js:646 -msgid "October" -msgstr "Октомври" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Ðоември" +#: js/js.js:698 +msgid "months ago" +msgstr "" -#: js/js.js:646 -msgid "December" -msgstr "Декември" +#: js/js.js:699 +msgid "last year" +msgstr "" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Отказ" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ðе" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Добре" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "ÐÑма избрани категории за изтриване" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Грешка" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Парола" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -235,19 +268,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Ще получите връзка за нулиране на паролата Ви." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "ЗаÑвено" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Входа пропадна!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Потребител" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Ðулиране на заÑвка" @@ -299,72 +332,187 @@ msgstr "облакът не намерен" msgid "Edit categories" msgstr "Редактиране на категориите" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "ДобавÑне" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Създаване на админ профил" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Разширено" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° данни" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Конфигуриране на базата" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "ще Ñе ползва" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Потребител за базата" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Парола за базата" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Име на базата" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "ХоÑÑ‚ за базата" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Завършване на наÑтройките" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "ÐеделÑ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Понеделник" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Вторник" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "СрÑда" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Четвъртък" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Петък" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Събота" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Януари" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Февруари" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Март" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Ðприл" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Май" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Юни" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Юли" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Септември" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Октомври" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Ðоември" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Декември" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Изход" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Забравена парола?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "запомни" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Вход" @@ -379,3 +527,17 @@ msgstr "пред." #: templates/part.pagenavi.php:20 msgid "next" msgstr "Ñледващо" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index a084c7d44a0e2e3817227648a1ece42f75818b81..aec7865e43129b5d7b6b7b55c830a5955825c4ee 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,194 +24,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Файлът е качен уÑпешно" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Файлът който Ñе опитвате да качите, надвишава зададените ÑтойноÑти в upload_max_filesize в PHP.INI" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Файлът който Ñе опитвате да качите надвишава ÑтойноÑтите в MAX_FILE_SIZE в HTML формата." -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Файлът е качен чаÑтично" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Фахлът не бе качен" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "ЛипÑва временната папка" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Грешка при Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° диÑка" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Файлове" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Изтриване" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Грешка при качване" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Качването е отменено." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ðеправилно име – \"/\" не е позволено." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Име" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Размер" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Променено" -#: js/files.js:777 -msgid "folder" -msgstr "папка" - -#: js/files.js:779 -msgid "folders" -msgstr "папки" - -#: js/files.js:787 -msgid "file" -msgstr "файл" - -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:839 -msgid "yesterday" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -222,80 +193,76 @@ msgstr "" msgid "Maximum upload size" msgstr "МакÑ. размер за качване" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 означава без ограничение" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "ЗапиÑ" #: templates/index.php:7 msgid "New" msgstr "Ðов" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ТекÑтов файл" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Папка" -#: templates/index.php:11 -msgid "From url" -msgstr "От url-адреÑ" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Качване" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Отказване на качването" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "ÐÑма нищо, качете нещо!" -#: templates/index.php:50 -msgid "Share" -msgstr "СподелÑне" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "ИзтеглÑне" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Файлът е прекалено голÑм" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Файловете които Ñе опитвате да качите Ñа по-големи от позволеното за Ñървъра." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Файловете Ñе претърÑват, изчакайте." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/bg_BG/files_pdfviewer.po b/l10n/bg_BG/files_pdfviewer.po deleted file mode 100644 index e38e0c3fcb88bb11df700df29953a7399ca139d0..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/bg_BG/files_texteditor.po b/l10n/bg_BG/files_texteditor.po deleted file mode 100644 index 17803a57746e1351d91166d0fd9bc016cf2aaf1c..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/bg_BG/gallery.po b/l10n/bg_BG/gallery.po deleted file mode 100644 index 2bf1a654c1d47bd07320cbb3843bcb2f563a0609..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/gallery.po +++ /dev/null @@ -1,94 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/bg_BG/impress.po b/l10n/bg_BG/impress.po deleted file mode 100644 index 35269e2e7009ac827607e551904dbb205e0b5581..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/bg_BG/lib.po b/l10n/bg_BG/lib.po index f6ce9e2d63830dc386dd566352a324a175522ea9..3ba99f9b10dcb364cab9d91691fb0bcc40551088 100644 --- a/l10n/bg_BG/lib.po +++ b/l10n/bg_BG/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Лично" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/bg_BG/media.po b/l10n/bg_BG/media.po deleted file mode 100644 index 48b61366ff7ffbff83a05df0e90256ca05e40d89..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Stefan Ilivanov , 2011. -# Yasen Pramatarov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-30 09:39+0000\n" -"Last-Translator: Yasen Pramatarov \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "Музика" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "ДобавÑне на албума към ÑпиÑъка за изпълнение" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "ПуÑни" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Пауза" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Предишна" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Следваща" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Отнеми" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Върни" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Повторно Ñканиране" - -#: templates/music.php:37 -msgid "Artist" -msgstr "ÐртиÑÑ‚" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ðлбум" - -#: templates/music.php:39 -msgid "Title" -msgstr "Заглавие" diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index 09ad3dd9b37e404c22414575f6fb6ad2eb14e5b7..3b8329c58bef07811cd1a42c8df98b259f8d624c 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +20,73 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Е-пощата е запиÑана" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ðеправилна е-поща" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID е Ñменено" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ðевалидна заÑвка" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Езика е Ñменен" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Изключване" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Включване" @@ -91,97 +94,10 @@ msgstr "Включване" msgid "Saving..." msgstr "ЗапиÑване..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -214,21 +130,21 @@ msgstr "" msgid "Ask a question" msgstr "Задайте въпроÑ" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Проблеми при Ñвързване Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰Ð½Ð°Ñ‚Ð° база" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Отидете ръчно." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Отговор" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -287,6 +203,16 @@ msgstr "Помощ за превода" msgid "use this address to connect to your ownCloud in your file manager" msgstr "ползвай този Ð°Ð´Ñ€ÐµÑ Ð·Ð° връзка Ñ Ð’Ð°ÑˆÐ¸Ñ ownCloud във Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð¼ÐµÐ½Ð¸Ð´Ð¶ÑŠÑ€" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Име" @@ -309,7 +235,7 @@ msgstr "Квота по подразбиране" #: templates/users.php:55 templates/users.php:138 msgid "Other" -msgstr "" +msgstr "Друго" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" diff --git a/l10n/bg_BG/tasks.po b/l10n/bg_BG/tasks.po deleted file mode 100644 index 3f26e086ecc49b940df0de9592da774fe2bbeab8..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/bg_BG/user_migrate.po b/l10n/bg_BG/user_migrate.po deleted file mode 100644 index 37fb22aebf7b326cd9852a7b8efd92ffaa9ac43e..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/bg_BG/user_openid.po b/l10n/bg_BG/user_openid.po deleted file mode 100644 index be71873b6429ed3e8ecea64d38e2a158ffe3021e..0000000000000000000000000000000000000000 --- a/l10n/bg_BG/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/bg_BG/files_odfviewer.po b/l10n/bg_BG/user_webdavauth.po similarity index 74% rename from l10n/bg_BG/files_odfviewer.po rename to l10n/bg_BG/user_webdavauth.po index 255b592f4981b28e063ea9b5e25d8fac7547d325..54b239e5f9a014e4a979e9e1c26bb5fe2b4a10ac 100644 --- a/l10n/bg_BG/files_odfviewer.po +++ b/l10n/bg_BG/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg_BG\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/ca/admin_dependencies_chk.po b/l10n/ca/admin_dependencies_chk.po deleted file mode 100644 index 1c5aef0e667155102b2f8a6a88fac7b27392c169..0000000000000000000000000000000000000000 --- a/l10n/ca/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 18:28+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "El mòdul php-json és necessari per moltes aplicacions per comunicacions internes" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "El mòdul php-curl és necessari per mostrar el títol de la pàgina quan s'afegeixen adreces d'interès" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "El mòdul php-gd és necessari per generar miniatures d'imatges" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "El mòdul php-ldap és necessari per connectar amb el servidor ldap" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "El mòdul php-zip és necessari per baixar múltiples fitxers de cop" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "El mòdul php-mb_multibyte és necessari per gestionar correctament la codificació." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "El mòdul php-ctype és necessari per validar dades." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "El mòdul php-xml és necessari per compatir els fitxers amb webdav." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "La directiva allow_url_fopen de php.ini hauria d'establir-se en 1 per accedir a la base de coneixements dels servidors OCS" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "El mòdul php-pdo és necessari per desar les dades d'ownCloud en una base de dades." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Estat de dependències" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Usat per:" diff --git a/l10n/ca/admin_migrate.po b/l10n/ca/admin_migrate.po deleted file mode 100644 index 285f752c6ad5f7c0abb3bf38ed4bcc2a3eb5d0b7..0000000000000000000000000000000000000000 --- a/l10n/ca/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 18:22+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Exporta aquesta instància de ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Això crearà un fitxer comprimit amb les dades d'aquesta instància ownCloud.\n Escolliu el tipus d'exportació:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Exporta" diff --git a/l10n/ca/bookmarks.po b/l10n/ca/bookmarks.po deleted file mode 100644 index c7e3b09a6052db6e61b2617194ffc6bb660e72b9..0000000000000000000000000000000000000000 --- a/l10n/ca/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-29 02:03+0200\n" -"PO-Revision-Date: 2012-07-28 13:38+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Adreces d'interès" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "sense nom" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Arrossegueu-ho al navegador i feu-hi un clic quan volgueu marcar ràpidament una adreça d'interès:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Llegeix més tard" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adreça" - -#: templates/list.php:14 -msgid "Title" -msgstr "Títol" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Etiquetes" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Desa l'adreça d'interès" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "No teniu adreces d'interès" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Bookmarklet
            " diff --git a/l10n/ca/calendar.po b/l10n/ca/calendar.po deleted file mode 100644 index 3976c559bb6c15e85e61a8f544859d9e4818aca2..0000000000000000000000000000000000000000 --- a/l10n/ca/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-12 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 11:20+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "No tots els calendaris estan en memòria" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Sembla que tot està en memòria" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "No s'han trobat calendaris." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "No s'han trobat events." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Calendari erroni" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "El fitxer no contenia esdeveniments o aquests ja estaven desats en el vostre caledari" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "els esdeveniments s'han desat en el calendari nou" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Ha fallat la importació" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "els esdveniments s'han desat en el calendari" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nova zona horària:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "La zona horària ha canviat" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Sol.licitud no vàlida" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendari" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd d/M" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd d/M" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "d [MMM ][yyyy ]{'—' d MMM yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, d MMM, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Aniversari" - -#: lib/app.php:122 -msgid "Business" -msgstr "Feina" - -#: lib/app.php:123 -msgid "Call" -msgstr "Trucada" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clients" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Remitent" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Vacances" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idees" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Viatge" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Sant" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Reunió" - -#: lib/app.php:131 -msgid "Other" -msgstr "Altres" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personal" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projectes" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Preguntes" - -#: lib/app.php:135 -msgid "Work" -msgstr "Feina" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "per" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "sense nom" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Calendari nou" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "No es repeteix" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Diari" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Mensual" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Cada setmana" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Bisetmanalment" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensualment" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Cada any" - -#: lib/object.php:388 -msgid "never" -msgstr "mai" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "per aparicions" - -#: lib/object.php:390 -msgid "by date" -msgstr "per data" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "per dia del mes" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "per dia de la setmana" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Dilluns" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Dimarts" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Dimecres" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Dijous" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Divendres" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Dissabte" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Diumenge" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "esdeveniments la setmana del mes" - -#: lib/object.php:428 -msgid "first" -msgstr "primer" - -#: lib/object.php:429 -msgid "second" -msgstr "segon" - -#: lib/object.php:430 -msgid "third" -msgstr "tercer" - -#: lib/object.php:431 -msgid "fourth" -msgstr "quart" - -#: lib/object.php:432 -msgid "fifth" -msgstr "cinquè" - -#: lib/object.php:433 -msgid "last" -msgstr "últim" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Gener" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Febrer" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Març" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Abril" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maig" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juny" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juliol" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Agost" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Setembre" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Octubre" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembre" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Desembre" - -#: lib/object.php:488 -msgid "by events date" -msgstr "per data d'esdeveniments" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "per ahir(s)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "per número(s) de la setmana" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "per dia del mes" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Dg." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Dl." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Dm." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Dc." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Dj." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Dv." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Ds." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Gen." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Febr." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Març" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Abr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Maig" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Juny" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Ag." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Set." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Oct." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Des." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Tot el dia" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Els camps que falten" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Títol" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Des de la data" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Des de l'hora" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Fins a la data" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Fins a l'hora" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "L'esdeveniment acaba abans que comenci" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Hi ha un error de base de dades" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Setmana" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mes" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Llista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Avui" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Configuració" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Els vostres calendaris" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Enllaç CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendaris compartits" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "No hi ha calendaris compartits" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Comparteix el calendari" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Baixa" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Edita" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Suprimeix" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "compartit amb vós" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Calendari nou" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Edita el calendari" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Mostra el nom" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Actiu" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Color del calendari" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Desa" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Envia" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Cancel·la" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Edició d'un esdeveniment" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exporta" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Eventinfo" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Repetició" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarma" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Assistents" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Comparteix" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Títol de l'esdeveniment" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categoria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separeu les categories amb comes" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Edita categories" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Esdeveniment de tot el dia" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Des de" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Fins a" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Opcions avançades" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Ubicació" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Ubicació de l'esdeveniment" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Descripció" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Descripció de l'esdeveniment" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Repetició" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avançat" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Dies de la setmana seleccionats" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Seleccionar dies" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "i dies d'esdeveniment de l'any." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "i dies d'esdeveniment del mes." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Seleccionar mesos" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Seleccionar setmanes" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "i setmanes d'esdeveniment de l'any." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Interval" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Final" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "aparicions" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "crea un nou calendari" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importa un fitxer de calendari" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Escolliu un calendari" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nom del nou calendari" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Escolliu un nom disponible!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Ja hi ha un calendari amb aquest nom. Si continueu, els calendaris es combinaran." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importa" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Tanca el diàleg" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Crea un nou esdeveniment" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Mostra un event" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "No hi ha categories seleccionades" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "a" - -#: templates/settings.php:10 -msgid "General" -msgstr "General" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zona horària" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Actualitza la zona horària automàticament" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Format horari" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Comença la setmana en " - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Memòria de cau" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Neteja la memòria de cau pels esdeveniments amb repetició" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URLs" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Adreça de sincronització del calendari CalDAV" - -#: templates/settings.php:87 -msgid "more info" -msgstr "més informació" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Adreça primària (Kontact et al)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "IOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Enllaç(os) iCalendar només de lectura" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Usuaris" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "seleccioneu usuaris" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Editable" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grups" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "seleccioneu grups" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "fes-ho public" diff --git a/l10n/ca/contacts.po b/l10n/ca/contacts.po deleted file mode 100644 index d7fbb584694b83cd3f147abcf1172be67c50ab5f..0000000000000000000000000000000000000000 --- a/l10n/ca/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 08:24+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Error en (des)activar la llibreta d'adreces." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "no s'ha establert la id." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "No es pot actualitzar la llibreta d'adreces amb un nom buit" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Error en actualitzar la llibreta d'adreces." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "No heu facilitat cap ID" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Error en establir la suma de verificació." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "No heu seleccionat les categories a eliminar." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "No s'han trobat llibretes d'adreces." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "No s'han trobat contactes." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "S'ha produït un error en afegir el contacte." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "no s'ha establert el nom de l'element." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "No s'ha pogut processar el contacte:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "No es pot afegir una propietat buida." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Almenys heu d'omplir un dels camps d'adreça." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Esteu intentant afegir una propietat duplicada:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "Falta el paràmetre IM." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "IM desconegut:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "La informació de la vCard és incorrecta. Carregueu la pàgina de nou." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Falta la ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Error en analitzar la ID de la VCard: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "no s'ha establert la suma de verificació." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "La informació de la vCard és incorrecta. Carregueu de nou la pàgina:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Alguna cosa ha anat FUBAR." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "No s'ha tramès cap ID de contacte." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Error en llegir la foto del contacte." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Error en desar el fitxer temporal." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "La foto carregada no és vàlida." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "falta la ID del contacte." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "No heu tramès el camí de la foto." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "El fitxer no existeix:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Error en carregar la imatge." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Error en obtenir l'objecte contacte." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Error en obtenir la propietat PHOTO." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Error en desar el contacte." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Error en modificar la mida de la imatge" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Error en retallar la imatge" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Error en crear la imatge temporal" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Error en trobar la imatge:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Error en carregar contactes a l'emmagatzemament." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "No hi ha errors, el fitxer s'ha carregat correctament" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "El fitxer carregat supera la directiva upload_max_filesize de php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "El fitxer carregat supera la directiva MAX_FILE_SIZE especificada al formulari HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "El fitxer només s'ha carregat parcialment" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "No s'ha carregat cap fitxer" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Falta un fitxer temporal" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "No s'ha pogut desar la imatge temporal: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "No s'ha pogut carregar la imatge temporal: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "No s'ha carregat cap fitxer. Error desconegut" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Contactes" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Aquesta funcionalitat encara no està implementada" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "No implementada" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "No s'ha pogut obtenir una adreça vàlida." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Error" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "No teniu permisos per afegir contactes a " - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Seleccioneu una de les vostres llibretes d'adreces" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Error de permisos" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Aquesta propietat no pot ser buida." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "No s'han pogut serialitzar els elements." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' s'ha cridat sense argument de tipus. Informeu-ne a bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Edita el nom" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "No s'han seleccionat fitxers per a la pujada." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "El fitxer que intenteu pujar excedeix la mida màxima de pujada en aquest servidor." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Error en carregar la imatge de perfil." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Seleccioneu un tipus" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Heu marcat eliminar alguns contactes, però encara no s'han eliminat. Espereu mentre s'esborren." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Voleu fusionar aquestes llibretes d'adreces?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultat: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importat, " - -#: js/loader.js:49 -msgid " failed." -msgstr " fallada." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "El nom a mostrar no pot ser buit" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "No s'ha trobat la llibreta d'adreces: " - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Aquesta no és la vostra llibreta d'adreces" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "No s'ha trobat el contacte." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Feina" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Casa" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Altres" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mòbil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Text" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Veu" - -#: lib/app.php:205 -msgid "Message" -msgstr "Missatge" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Vídeo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Paginador" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Aniversari" - -#: lib/app.php:253 -msgid "Business" -msgstr "Negocis" - -#: lib/app.php:254 -msgid "Call" -msgstr "Trucada" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Clients" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Emissari" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Vacances" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Idees" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Viatge" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Aniversari" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Reunió" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Personal" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projectes" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Preguntes" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Aniversari de {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contacte" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "No teniu permisos per editar aquest contacte" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "No teniu permisos per esborrar aquest contacte" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Afegeix un contacte" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importa" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Configuració" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Llibretes d'adreces" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Tanca" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Dreceres de teclat" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navegació" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Següent contacte de la llista" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Contacte anterior de la llista" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Expandeix/col·lapsa la llibreta d'adreces" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Llibreta d'adreces següent" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Llibreta d'adreces anterior" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Accions" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Carrega de nou la llista de contactes" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Afegeix un contacte nou" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Afegeix una llibreta d'adreces nova" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Esborra el contacte" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Elimina la foto a carregar" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Elimina la foto actual" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Edita la foto actual" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Carrega una foto nova" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Selecciona una foto de ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format personalitzat, Nom curt, Nom sencer, Invertit o Invertit amb coma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Edita detalls del nom" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organització" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Suprimeix" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Sobrenom" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Escriviu el sobrenom" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Adreça web" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Vés a la web" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grups" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separeu els grups amb comes" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Edita els grups" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferit" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Especifiqueu una adreça de correu electrònic correcta" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Escriviu una adreça de correu electrònic" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Envia per correu electrònic a l'adreça" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Elimina l'adreça de correu electrònic" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Escriviu el número de telèfon" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Elimina el número de telèfon" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Elimina IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Visualitza al mapa" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Edita els detalls de l'adreça" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Afegiu notes aquí." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Afegeix un camp" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telèfon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Correu electrònic" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Missatgeria instantània" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adreça" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Baixa el contacte" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Suprimeix el contacte" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "La imatge temporal ha estat eliminada de la memòria de cau." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Edita l'adreça" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tipus" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Adreça postal" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Adreça" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Carrer i número" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Addicional" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Número d'apartament, etc." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Ciutat" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Comarca" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "p. ex. Estat o província " - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Codi postal" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Codi postal" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "País" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Llibreta d'adreces" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Prefix honorífic:" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Srta" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Sra" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Sr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Senyor" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Sra" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Nom específic" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Noms addicionals" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Nom de familia" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Sufix honorífic:" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importa un fitxer de contactes" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Escolliu la llibreta d'adreces" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "crea una llibreta d'adreces nova" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nom de la nova llibreta d'adreces" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "S'estan important contactes" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "No teniu contactes a la llibreta d'adreces." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Afegeix un contacte" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Selecccioneu llibretes d'adreces" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Escriviu un nom" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Escriviu una descripció" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Adreces de sincronització CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "més informació" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Adreça primària (Kontact i al)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Mostra l'enllaç CardDav" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Mostra l'enllaç VCF només de lectura" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Comparteix" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Baixa" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Edita" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nova llibreta d'adreces" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nom" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Descripció" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Desa" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Cancel·la" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Més..." diff --git a/l10n/ca/core.po b/l10n/ca/core.po index dcfd7d3d0c390d665d71c1b1f3189e9dfdca98ae..010ddb24cb8cdb8987dc8e47cfbbd22cfb14b303 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 02:03+0200\n" -"PO-Revision-Date: 2012-10-01 08:49+0000\n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-16 08:21+0000\n" "Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -19,208 +19,241 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "No s'ha facilitat cap nom per l'aplicació." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "No s'ha especificat el tipus de categoria." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "No voleu afegir cap categoria?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Aquesta categoria ja existeix:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "No s'ha proporcionat el tipus d'objecte." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "No s'ha proporcionat la ID %s." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Error en afegir %s als preferits." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "No hi ha categories per eliminar." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Error en eliminar %s dels preferits." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Arranjament" -#: js/js.js:645 -msgid "January" -msgstr "Gener" +#: js/js.js:704 +msgid "seconds ago" +msgstr "segons enrere" -#: js/js.js:645 -msgid "February" -msgstr "Febrer" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "fa 1 minut" -#: js/js.js:645 -msgid "March" -msgstr "Març" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "fa {minutes} minuts" -#: js/js.js:645 -msgid "April" -msgstr "Abril" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "fa 1 hora" -#: js/js.js:645 -msgid "May" -msgstr "Maig" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "fa {hours} hores" -#: js/js.js:645 -msgid "June" -msgstr "Juny" +#: js/js.js:709 +msgid "today" +msgstr "avui" -#: js/js.js:646 -msgid "July" -msgstr "Juliol" +#: js/js.js:710 +msgid "yesterday" +msgstr "ahir" -#: js/js.js:646 -msgid "August" -msgstr "Agost" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "fa {days} dies" -#: js/js.js:646 -msgid "September" -msgstr "Setembre" +#: js/js.js:712 +msgid "last month" +msgstr "el mes passat" -#: js/js.js:646 -msgid "October" -msgstr "Octubre" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "fa {months} mesos" -#: js/js.js:646 -msgid "November" -msgstr "Novembre" +#: js/js.js:714 +msgid "months ago" +msgstr "mesos enrere" -#: js/js.js:646 -msgid "December" -msgstr "Desembre" +#: js/js.js:715 +msgid "last year" +msgstr "l'any passat" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "anys enrere" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Escull" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Cancel·la" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "No" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Sí" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "D'acord" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "No hi ha categories per eliminar." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "No s'ha especificat el tipus d'objecte." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:493 -#: js/share.js:505 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Error" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "No s'ha especificat el nom de l'aplicació." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "El figtxer requerit {file} no està instal·lat!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Error en compartir" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Error en deixar de compartir" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Error en canviar els permisos" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Compartit amb vós i amb el grup" - -#: js/share.js:130 -msgid "by" -msgstr "per" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Compartit amb vos i amb el grup {group} per {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "compartit amb vós per" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Compartit amb vos per {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Comparteix amb" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Comparteix amb enllaç" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Protegir amb contrasenya" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Contrasenya" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Estableix la data d'expiració" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Data d'expiració" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Comparteix per correu electrònic" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "No s'ha trobat ningú" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "No es permet compartir de nou" -#: js/share.js:250 -msgid "Shared in" -msgstr "Compartit en" - -#: js/share.js:250 -msgid "with" -msgstr "amb" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Compartit en {item} amb {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Deixa de compartir" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "pot editar" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "control d'accés" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "crea" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "actualitza" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "elimina" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "comparteix" -#: js/share.js:321 js/share.js:480 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Protegeix amb contrasenya" -#: js/share.js:493 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Error en eliminar la data d'expiració" -#: js/share.js:505 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Error en establir la data d'expiració" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "estableix de nou la contrasenya Owncloud" @@ -233,15 +266,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Rebreu un enllaç al correu electrònic per reiniciar la contrasenya." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Sol·licitat" +msgid "Reset email send." +msgstr "S'ha enviat el correu reinicialització" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "No s'ha pogut iniciar la sessió" +msgid "Request failed!" +msgstr "El requeriment ha fallat!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nom d'usuari" @@ -297,72 +330,187 @@ msgstr "No s'ha trobat el núvol" msgid "Edit categories" msgstr "Edita les categories" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Afegeix" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Avís de seguretat" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "No està disponible el generador de nombres aleatoris segurs, habiliteu l'extensió de PHP OpenSSL." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Sense un generador de nombres aleatoris segurs un atacant podria predir els senyals per restablir la contrasenya i prendre-us el compte." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "La carpeta de dades i els fitxers provablement són accessibles des d'internet. El fitxer .htaccess que proporciona ownCloud no funciona. Us recomanem que configureu el vostre servidor web de manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de la carpeta arrel del servidor web." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea un compte d'administrador" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avançat" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Carpeta de dades" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configura la base de dades" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "s'usarà" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Usuari de la base de dades" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Contrasenya de la base de dades" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nom de la base de dades" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Espai de taula de la base de dades" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Ordinador central de la base de dades" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Acaba la configuració" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Diumenge" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Dilluns" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Dimarts" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Dimecres" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Dijous" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Divendres" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Dissabte" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Gener" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Febrer" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Març" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Abril" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Maig" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Juny" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Juliol" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Agost" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Setembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Octubre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Novembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Desembre" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "controleu els vostres serveis web" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Surt" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "L'ha rebutjat l'acceditació automàtica!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Se no heu canviat la contrasenya recentment el vostre compte pot estar compromès!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Canvieu la contrasenya de nou per assegurar el vostre compte." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Heu perdut la contrasenya?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "recorda'm" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Inici de sessió" @@ -377,3 +525,17 @@ msgstr "anterior" #: templates/part.pagenavi.php:20 msgid "next" msgstr "següent" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Avís de seguretat!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Comproveu la vostra contrasenya.
            Per raons de seguretat se us pot demanar escriure de nou la vostra contrasenya." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Comprova" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index b78da53d8b9c75d505a4be9d3dd706eab4c18df6..478d4fded6ca0bf33c539b847936c555c9a527a0 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/files.po @@ -6,14 +6,15 @@ # , 2012. # , 2012. # , 2012. +# Josep Tomàs , 2012. # , 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 02:02+0200\n" -"PO-Revision-Date: 2012-10-01 08:52+0000\n" -"Last-Translator: rogerc \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 16:57+0000\n" +"Last-Translator: Josep Tomàs \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,195 +27,166 @@ msgid "There is no error, the file uploaded with success" msgstr "El fitxer s'ha pujat correctament" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "El fitxer de pujada excedeix la directiva upload_max_filesize establerta a php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "L’arxiu que voleu carregar supera el màxim definit en la directiva upload_max_filesize del php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "El fitxer de pujada excedeix la directiva MAX_FILE_SIZE especificada al formulari HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "El fitxer només s'ha pujat parcialment" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "El fitxer no s'ha pujat" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "S'ha perdut un fitxer temporal" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Ha fallat en escriure al disc" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Fitxers" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Deixa de compartir" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Suprimeix" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Reanomena" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "ja existeix" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} ja existeix" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "substitueix" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "sugereix un nom" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "cancel·la" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "substituït" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "s'ha substituït {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "desfés" -#: js/filelist.js:241 -msgid "with" -msgstr "per" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "s'ha substituït {old_name} per {new_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "no compartits {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "No compartits" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "eliminats {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "esborrat" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "El nóm no és vàlid, '\\', '/', '<', '>', ':', '\"', '|', '?' i '*' no estan permesos." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "s'estan generant fitxers ZIP, pot trigar una estona." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "No es pot pujar el fitxer perquè és una carpeta o té 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Error en la pujada" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Tanca" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Pendents" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 fitxer pujant" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "fitxers pujant" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} fitxers en pujada" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "La pujada s'ha cancel·lat." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "El nom no és vàlid, no es permet '/'." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "El nom de la carpeta no és vàlid. L'ús de \"Compartit\" està reservat per a OwnCloud" -#: js/files.js:668 -msgid "files scanned" -msgstr "arxius escanejats" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} fitxers escannejats" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "error durant l'escaneig" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nom" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Mida" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificat" -#: js/files.js:778 -msgid "folder" -msgstr "carpeta" - -#: js/files.js:780 -msgid "folders" -msgstr "carpetes" - -#: js/files.js:788 -msgid "file" -msgstr "fitxer" - -#: js/files.js:790 -msgid "files" -msgstr "fitxers" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "segons enrere" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minut enrere" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "minuts enrere" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 carpeta" -#: js/files.js:839 -msgid "today" -msgstr "avui" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} carpetes" -#: js/files.js:840 -msgid "yesterday" -msgstr "ahir" +#: js/files.js:824 +msgid "1 file" +msgstr "1 fitxer" -#: js/files.js:841 -msgid "days ago" -msgstr "dies enrere" - -#: js/files.js:842 -msgid "last month" -msgstr "el mes passat" - -#: js/files.js:844 -msgid "months ago" -msgstr "mesos enrere" - -#: js/files.js:845 -msgid "last year" -msgstr "l'any passat" - -#: js/files.js:846 -msgid "years ago" -msgstr "anys enrere" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} fitxers" #: templates/admin.php:5 msgid "File handling" @@ -224,27 +196,27 @@ msgstr "Gestió de fitxers" msgid "Maximum upload size" msgstr "Mida màxima de pujada" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "màxim possible:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Necessari per fitxers múltiples i baixada de carpetes" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Activa la baixada ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 és sense límit" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Mida màxima d'entrada per fitxers ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Desa" @@ -252,52 +224,48 @@ msgstr "Desa" msgid "New" msgstr "Nou" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Fitxer de text" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Carpeta" -#: templates/index.php:11 -msgid "From url" -msgstr "Des de la url" +#: templates/index.php:14 +msgid "From link" +msgstr "Des d'enllaç" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Puja" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Cancel·la la pujada" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Res per aquí. Pugeu alguna cosa!" -#: templates/index.php:50 -msgid "Share" -msgstr "Comparteix" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Baixa" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "La pujada és massa gran" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Els fitxers que esteu intentant pujar excedeixen la mida màxima de pujada del servidor" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "S'estan escanejant els fitxers, espereu" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Actualment escanejant" diff --git a/l10n/ca/files_pdfviewer.po b/l10n/ca/files_pdfviewer.po deleted file mode 100644 index 9645c269ddde967f337bd4d651e7eb39a77ef526..0000000000000000000000000000000000000000 --- a/l10n/ca/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ca/files_texteditor.po b/l10n/ca/files_texteditor.po deleted file mode 100644 index 9e62b3f7a2cae5d4a43573423ade2b949bd20d1f..0000000000000000000000000000000000000000 --- a/l10n/ca/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ca/gallery.po b/l10n/ca/gallery.po deleted file mode 100644 index 7be2fa1525474d376035efa0672440cac74c8b5a..0000000000000000000000000000000000000000 --- a/l10n/ca/gallery.po +++ /dev/null @@ -1,59 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-27 02:02+0200\n" -"PO-Revision-Date: 2012-07-26 07:08+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Fotos" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Comperteix la galeria" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Error: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Error intern" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Passi de diapositives" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Enrera" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Elimina la confirmació" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Voleu eliminar l'àlbum" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Canvia el nom de l'àlbum" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nom nou de l'àlbum" diff --git a/l10n/ca/impress.po b/l10n/ca/impress.po deleted file mode 100644 index 198ff99c6d45fac7e4d4d8107cf78ed25c31d729..0000000000000000000000000000000000000000 --- a/l10n/ca/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/ca/lib.po b/l10n/ca/lib.po index e43b91310b549121789c699b0d61142ad0af8983..0bdb8f916ecacb15dc8e816aab11ec2af1e86e6c 100644 --- a/l10n/ca/lib.po +++ b/l10n/ca/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-04 02:01+0200\n" -"PO-Revision-Date: 2012-09-03 10:11+0000\n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-16 08:22+0000\n" "Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -18,43 +18,43 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Ajuda" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Personal" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Configuració" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Usuaris" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Aplicacions" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Administració" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "La baixada en ZIP està desactivada." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Els fitxers s'han de baixar d'un en un." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Torna a Fitxers" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Els fitxers seleccionats son massa grans per generar un fitxer zip." @@ -62,7 +62,7 @@ msgstr "Els fitxers seleccionats son massa grans per generar un fitxer zip." msgid "Application is not enabled" msgstr "L'aplicació no està habilitada" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Error d'autenticació" @@ -70,57 +70,84 @@ msgstr "Error d'autenticació" msgid "Token expired. Please reload page." msgstr "El testimoni ha expirat. Torneu a carregar la pàgina." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Fitxers" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Text" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Imatges" + +#: template.php:103 msgid "seconds ago" msgstr "segons enrere" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "fa 1 minut" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "fa %d minuts" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "fa 1 hora" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "fa %d hores" + +#: template.php:108 msgid "today" msgstr "avui" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "ahir" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "fa %d dies" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "el mes passat" -#: template.php:96 -msgid "months ago" -msgstr "mesos enrere" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "fa %d mesos" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "l'any passat" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "fa anys" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s està disponible. Obtén més informació" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "actualitzat" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "la comprovació d'actualitzacions està desactivada" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "No s'ha trobat la categoria \"%s\"" diff --git a/l10n/ca/media.po b/l10n/ca/media.po deleted file mode 100644 index 4d41f39ffe580eee085336b93043ef71fc97dbe9..0000000000000000000000000000000000000000 --- a/l10n/ca/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Catalan (http://www.transifex.net/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Música" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Reprodueix" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausa" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Anterior" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Següent" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Mut" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Activa el so" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Explora de nou la col·lecció" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Àlbum" - -#: templates/music.php:39 -msgid "Title" -msgstr "Títol" diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index 15ab377f6fbf730f108b8ef10a4a272c8eb3a960..b17a5d30e30114ad5e0a4be3bc7e3b4a6da7aace 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/settings.po @@ -6,14 +6,15 @@ # , 2012. # , 2012. # , 2012. +# Josep Tomàs , 2012. # , 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:05+0200\n" -"PO-Revision-Date: 2012-10-09 07:31+0000\n" -"Last-Translator: rogerc \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: Josep Tomàs \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,70 +22,73 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "No s'ha pogut carregar la llista des de l'App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Error d'autenticació" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "El grup ja existeix" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "No es pot afegir el grup" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "No s'ha pogut activar l'apliació" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "S'ha desat el correu electrònic" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "El correu electrònic no és vàlid" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID ha canviat" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Sol.licitud no vàlida" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "No es pot eliminar el grup" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Error d'autenticació" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "No es pot eliminar l'usuari" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "S'ha canviat l'idioma" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Els administradors no es poden eliminar del grup admin" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "No es pot afegir l'usuari al grup %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "No es pot eliminar l'usuari del grup %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Desactiva" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Activa" @@ -92,97 +96,10 @@ msgstr "Activa" msgid "Saving..." msgstr "S'està desant..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Català" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Avís de seguretat" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "La carpeta de dades i els vostres fitxersprobablement són accessibles des d'Internet. La fitxer .htaccess que ownCloud proporciona no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Executar una tasca de cada pàgina carregada" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php està registrat en un servei webcron. Feu una crida a la pàgina cron.php a l'arrel de ownCloud cada minut a través de http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Utilitzeu el sistema de servei cron. Cridar el arxiu cron.php de la carpeta owncloud cada minut utilitzant el sistema de tasques cron." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Compartir" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Activa l'API de compartir" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Permet que les aplicacions usin l'API de compartir" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Permet enllaços" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Permet als usuaris compartir elements amb el públic amb enllaços" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Permet compartir de nou" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Permet als usuaris comparir elements ja compartits amb ells" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Permet als usuaris compartir amb qualsevol" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Permet als usuaris compartir només amb usuaris del seu grup" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Registre" - -#: templates/admin.php:116 -msgid "More" -msgstr "Més" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Desenvolupat per la comunitat ownCloud, el codi font té llicència AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Afegiu la vostra aplicació" @@ -215,22 +132,22 @@ msgstr "Gestió de fitxers grans" msgid "Ask a question" msgstr "Feu una pregunta" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemes per connectar amb la base de dades d'ajuda." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Vés-hi manualment." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Resposta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Ha utilitzat %s de la %s disponible" +msgid "You have used %s of the available %s" +msgstr "Heu utilitzat %s d'un total disponible de %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -288,6 +205,16 @@ msgstr "Ajudeu-nos amb la traducció" msgid "use this address to connect to your ownCloud in your file manager" msgstr "useu aquesta adreça per connectar-vos a ownCloud des del gestor de fitxers" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Desenvolupat per la comunitat ownCloud, el codi font té llicència AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nom" diff --git a/l10n/ca/tasks.po b/l10n/ca/tasks.po deleted file mode 100644 index b96519e57fad302f962ac1a2e5984367c13f04a5..0000000000000000000000000000000000000000 --- a/l10n/ca/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 18:37+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "data/hora incorrecta" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Tasques" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Cap categoria" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Sense especificar" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=major" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=mitjana" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=inferior" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Elimina el resum" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Percentatge completat no vàlid" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Prioritat no vàlida" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Afegeix una tasca" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Ordena per" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Ordena per llista" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Ordena els complets" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Ordena per ubicació" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Ordena per prioritat" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Ordena per etiqueta" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Carregant les tasques..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Important" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Més" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Menys" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Elimina" diff --git a/l10n/ca/user_migrate.po b/l10n/ca/user_migrate.po deleted file mode 100644 index c603e775e46ab2ac3a3787cf482ff0f9ee82f811..0000000000000000000000000000000000000000 --- a/l10n/ca/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 08:04+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Exporta" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Alguna cosa ha anat malament en generar el fitxer d'exportació" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "S'ha produït un error" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Exportar el compte d'usuari" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Això crearà un fitxer comprimit que conté el vostre compte ownCloud." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Importar el compte d'usuari" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "zip d'usuari ownCloud" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importa" diff --git a/l10n/ca/user_openid.po b/l10n/ca/user_openid.po deleted file mode 100644 index 35c53f5627fba29e05a663ea1975030bc166460b..0000000000000000000000000000000000000000 --- a/l10n/ca/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 18:41+0000\n" -"Last-Translator: rogerc \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Això és un punt final de servidor OpenID. Per més informació consulteu" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identitat:" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Domini:" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Usuari:" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Inici de sessió" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Error:No heu seleccionat cap usuari" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "podeu autenticar altres llocs web amb aquesta adreça" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Servidor OpenID autoritzat" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "La vostra adreça a Wordpress, Identi.ca …" diff --git a/l10n/ca/files_odfviewer.po b/l10n/ca/user_webdavauth.po similarity index 61% rename from l10n/ca/files_odfviewer.po rename to l10n/ca/user_webdavauth.po index e41b59b03caac87c35a14ab14ae10c5ead0a213c..55cf858935748a471232c1ddbf526cbbbbad1773 100644 --- a/l10n/ca/files_odfviewer.po +++ b/l10n/ca/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 09:25+0000\n" +"Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "Adreça WebDAV: http://" diff --git a/l10n/cs_CZ/admin_dependencies_chk.po b/l10n/cs_CZ/admin_dependencies_chk.po deleted file mode 100644 index 82774f6a248961ec325b02af7df7bd5e33ec2180..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Martin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-18 02:01+0200\n" -"PO-Revision-Date: 2012-08-17 15:37+0000\n" -"Last-Translator: Martin \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Modul php-json je tÅ™eba pro vzájemnou komunikaci mnoha aplikací" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Modul php-curl je tÅ™eba pro zobrazení titulu strany v okamžiku pÅ™idání záložky" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Modul php-gd je tÅ™eba pro tvorbu náhledů VaÅ¡ich obrázků" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Modul php-ldap je tÅ™eba pro pÅ™ipojení na Váš ldap server" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Modul php-zip je tÅ™eba pro souběžné stahování souborů" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Modul php-mb_multibyte je tÅ™eba pro správnou funkci kódování." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Modul php-ctype je tÅ™eba k ověřování dat." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Modul php-xml je tÅ™eba ke sdílení souborů prostÅ™ednictvím WebDAV." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Příkaz allow_url_fopen ve VaÅ¡em php.ini souboru by mÄ›l být nastaven na 1 kvůli získávání informací z OCS serverů" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Modul php-pdo je tÅ™eba pro ukládání dat ownCloud do databáze" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Status závislostí" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Používáno:" diff --git a/l10n/cs_CZ/admin_migrate.po b/l10n/cs_CZ/admin_migrate.po deleted file mode 100644 index a43f6e5be06d4795098c7d3eb0a7e82ffbc0c839..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Martin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 10:35+0000\n" -"Last-Translator: Martin \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Export této instance ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Bude vytvoÅ™en komprimovaný soubor obsahující data této instance ownCloud.⎠Zvolte typ exportu:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Export" diff --git a/l10n/cs_CZ/bookmarks.po b/l10n/cs_CZ/bookmarks.po deleted file mode 100644 index a6d7d19a244329c0d02625bfbb065fdfd7030779..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Martin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 09:44+0000\n" -"Last-Translator: Martin \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Záložky" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "nepojmenovaný" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "PÅ™etáhnÄ›te do VaÅ¡eho prohlížeÄe a klinÄ›te, pokud si pÅ™ejete rychle uložit stranu do záložek:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "PÅ™eÄíst pozdÄ›ji" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adresa" - -#: templates/list.php:14 -msgid "Title" -msgstr "Název" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Tagy" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Uložit záložku" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Nemáte žádné záložky" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Záložky
            " diff --git a/l10n/cs_CZ/calendar.po b/l10n/cs_CZ/calendar.po deleted file mode 100644 index f06317221c05fbe9366b1168c58f57714ec1f24c..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/calendar.po +++ /dev/null @@ -1,816 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jan Krejci , 2011, 2012. -# Martin , 2011, 2012. -# Michal HruÅ¡ecký , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 09:41+0000\n" -"Last-Translator: Martin \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "V pamÄ›ti nejsou uloženy kompletnÄ› vÅ¡echny kalendáře" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Zdá se, že vÅ¡e je kompletnÄ› uloženo v pamÄ›ti" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Žádné kalendáře nenalezeny." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Žádné události nenalezeny." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Nesprávný kalendář" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Soubor, obsahující vÅ¡echny záznamy nebo je prázdný, je již uložen ve VaÅ¡em kalendáři." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "Záznam byl uložen v novém kalendáři" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Import selhal" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "záznamů bylo uloženo ve VaÅ¡em kalendáři" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nová Äasová zóna:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ÄŒasová zóna byla zmÄ›nÄ›na" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Chybný požadavek" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendář" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM rrrr" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "d. MMM[ yyyy]{ '—' d.[ MMM] yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, rrrr" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Narozeniny" - -#: lib/app.php:122 -msgid "Business" -msgstr "Obchodní" - -#: lib/app.php:123 -msgid "Call" -msgstr "Hovor" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klienti" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "DoruÄovatel" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Prázdniny" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Nápady" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Cesta" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "VýroÄí" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Schůzka" - -#: lib/app.php:131 -msgid "Other" -msgstr "Další" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Osobní" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekty" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Dotazy" - -#: lib/app.php:135 -msgid "Work" -msgstr "Pracovní" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "od" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "nepojmenováno" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nový kalendář" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Neopakuje se" - -#: lib/object.php:373 -msgid "Daily" -msgstr "DennÄ›" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "TýdnÄ›" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Každý vÅ¡ední den" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Jednou za dva týdny" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "MÄ›síÄnÄ›" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "RoÄnÄ›" - -#: lib/object.php:388 -msgid "never" -msgstr "nikdy" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "podle výskytu" - -#: lib/object.php:390 -msgid "by date" -msgstr "podle data" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "podle dne v mÄ›síci" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "podle dne v týdnu" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "PondÄ›lí" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Úterý" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "StÅ™eda" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "ÄŒtvrtek" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Pátek" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sobota" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "NedÄ›le" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "týdenní události v mÄ›síci" - -#: lib/object.php:428 -msgid "first" -msgstr "první" - -#: lib/object.php:429 -msgid "second" -msgstr "druhý" - -#: lib/object.php:430 -msgid "third" -msgstr "tÅ™etí" - -#: lib/object.php:431 -msgid "fourth" -msgstr "Ätvrtý" - -#: lib/object.php:432 -msgid "fifth" -msgstr "pátý" - -#: lib/object.php:433 -msgid "last" -msgstr "poslední" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Leden" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Únor" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "BÅ™ezen" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Duben" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "KvÄ›ten" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "ÄŒerven" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "ÄŒervenec" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Srpen" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Září" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Říjen" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Listopad" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Prosinec" - -#: lib/object.php:488 -msgid "by events date" -msgstr "podle data události" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "po dni (dnech)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "podle Äísel týdnů" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "podle dne a mÄ›síce" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Datum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Ne" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Po" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Út" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "St" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "ÄŒt" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Pá" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "So" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Ne" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "únor" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "bÅ™ezen" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "duben" - -#: templates/calendar.php:8 -msgid "May." -msgstr "kvÄ›ten" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Äerven" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Äervenec" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "srpen" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "září" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "říjen" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "listopad" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "prosinec" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Celý den" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "ChybÄ›jící pole" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Název" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Od data" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Od" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Do data" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Do" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Akce konÄí pÅ™ed zahájením" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Chyba v databázi" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "týden" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "mÄ›síc" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Seznam" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "dnes" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Nastavení" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "VaÅ¡e kalendáře" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav odkaz" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Sdílené kalendáře" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Žádné sdílené kalendáře" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Sdílet kalendář" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Stáhnout" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Editovat" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Odstranit" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "sdíleno s vámi uživatelem" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nový kalendář" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Editovat kalendář" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Zobrazované jméno" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktivní" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Barva kalendáře" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Uložit" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Potvrdit" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Storno" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Editovat událost" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Export" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informace o události" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Opakující se" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "ÚÄastníci" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Sdílet" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Název události" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorie" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Kategorie oddÄ›lené Äárkami" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Upravit kategorie" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Celodenní událost" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "od" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "do" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "PokroÄilé volby" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "UmístÄ›ní" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Místo konání události" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Popis" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Popis události" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Opakování" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "PokroÄilé" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Vybrat dny v týdnu" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Vybrat dny" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "a denní události v roce" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "a denní události v mÄ›síci" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Vybrat mÄ›síce" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Vybrat týdny" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "a týden s událostmi v roce" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Interval" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Konec" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "výskyty" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "vytvoÅ™it nový kalendář" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importovat soubor kalendáře" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Vyberte prosím kalendář" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Název nového kalendáře" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Použijte volné jméno!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Kalendář s trímto názvem již existuje. Pokud název použijete, stejnojmenné kalendáře budou slouÄeny." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Import" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Zavřít dialog" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "VytvoÅ™it novou událost" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Zobrazit událost" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Žádné kategorie nevybrány" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "z" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "v" - -#: templates/settings.php:10 -msgid "General" -msgstr "Hlavní" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ÄŒasové pásmo" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Obnovit auronaricky Äasovou zónu." - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Formát Äasu" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Týden zaÄína v" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Paměť" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Vymazat paměť pro opakuijísí se záznamy" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URLs" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Kalendář CalDAV synchronizuje adresy" - -#: templates/settings.php:87 -msgid "more info" -msgstr "podrobnosti" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Primární adresa (veÅ™ejná)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Odkaz(y) kalendáře pouze pro Ätení" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Uživatelé" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "vybrat uživatele" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Upravovatelné" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Skupiny" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "vybrat skupiny" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "zveÅ™ejnit" diff --git a/l10n/cs_CZ/contacts.po b/l10n/cs_CZ/contacts.po deleted file mode 100644 index 9b1fa750be141502c2e3f37d31dd88e1664b1b39..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jan Krejci , 2011, 2012. -# Martin , 2011, 2012. -# Michal HruÅ¡ecký , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 07:58+0000\n" -"Last-Translator: Jan Krejci \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Chyba pÅ™i (de)aktivaci adresáře." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id neni nastaveno." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Nelze aktualizovat adresář s prázdným jménem." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Chyba pÅ™i aktualizaci adresáře." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "ID nezadáno" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Chyba pÅ™i nastavování kontrolního souÄtu." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Žádné kategorie nebyly vybrány k smazání." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Žádný adresář nenalezen." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Žádné kontakty nenalezeny." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "BÄ›hem pÅ™idávání kontaktu nastala chyba." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "jméno elementu není nastaveno." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Nelze analyzovat kontakty" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Nelze pÅ™idat prazdný údaj." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Musí být uveden nejménÄ› jeden z adresních údajů" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Pokoušíte se pÅ™idat duplicitní atribut: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "ChybÄ›jící parametr IM" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "Neznámý IM:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informace o vCard je nesprávná. Obnovte stránku, prosím." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Chybí ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Chyba pÅ™i parsování VCard pro ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "kontrolní souÄet není nastaven." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informace o vCard je nesprávná. Obnovte stránku, prosím." - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "NÄ›co se pokazilo. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Nebylo nastaveno ID kontaktu." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Chyba pÅ™i naÄítání fotky kontaktu." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Chyba pÅ™i ukládání doÄasného souboru." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "NaÄítaná fotka je vadná." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Chybí ID kontaktu." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Žádná fotka nebyla nahrána." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Soubor neexistuje:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Chyba pÅ™i naÄítání obrázku." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Chyba pÅ™i pÅ™evzetí objektu kontakt." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Chyba pÅ™i získávání fotky." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Chyba pÅ™i ukládání kontaktu." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Chyba pÅ™i zmÄ›nÄ› velikosti obrázku." - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Chyba pÅ™i osekávání obrázku." - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Chyba pÅ™i vytváření doÄasného obrázku." - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Chyba pÅ™i hledání obrázku:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Chyba pÅ™i nahrávání kontaktů do úložiÅ¡tÄ›." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Nevyskytla se žádná chyba, soubor byl úspěšnÄ› nahrán" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Nahrávaný soubor pÅ™ekraÄuje nastavení upload_max_filesize directive v php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Nahrávaný soubor pÅ™ekraÄuje nastavení MAX_FILE_SIZE z voleb HTML formuláře" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Nahrávaný soubor se nahrál pouze z Äásti" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Žádný soubor nebyl nahrán" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Chybí doÄasný adresář" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Nemohu uložit doÄasný obrázek: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Nemohu naÄíst doÄasný obrázek: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Soubor nebyl odeslán. Neznámá chyba" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Kontakty" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Bohužel, tato funkce nebyla jeÅ¡tÄ› implementována." - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Neimplementováno" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Nelze získat platnou adresu." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Chyba" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "Nemáte práva pÅ™idat kontakt do" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Prosím vyberte jeden z vaÅ¡ich adresářů" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Chyba přístupových práv" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Tento parametr nemuže zůstat nevyplnÄ›n." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Prvky nelze pÅ™evést.." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' voláno bez argumentu. Prosím oznamte chybu na bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Upravit jméno" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Žádné soubory nebyly vybrány k nahrání." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Soubor, který se pokoušíte odeslat, pÅ™esahuje maximální povolenou velikost." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Chyba pÅ™i otevírání obrázku profilu" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Vybrat typ" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "NÄ›které kontakty jsou oznaÄeny ke smazání. PoÄkete prosím na dokonÄení operace." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Chcete spojit tyto adresáře?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Výsledek: " - -#: js/loader.js:49 -msgid " imported, " -msgstr "importováno v pořádku," - -#: js/loader.js:49 -msgid " failed." -msgstr "neimportováno." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Zobrazované jméno nemůže zůstat prázdné." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Adresář nenalezen:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Toto není Váš adresář." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakt nebyl nalezen." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Pracovní" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Domácí" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Ostatní" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Text" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Hlas" - -#: lib/app.php:205 -msgid "Message" -msgstr "Zpráva" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Narozeniny" - -#: lib/app.php:253 -msgid "Business" -msgstr "Pracovní" - -#: lib/app.php:254 -msgid "Call" -msgstr "Volat" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Klienti" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Dodavatel" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Prázdniny" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Nápady" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Cestování" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubileum" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Schůzka" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Osobní" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projekty" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Dotazy" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Narozeniny {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "Nemáte práva editovat tento kontakt" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "Nemáte práva smazat tento kontakt" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "PÅ™idat kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Import" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Nastavení" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adresáře" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Zavřít" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Klávesoví zkratky" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigace" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Následující kontakt v seznamu" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "PÅ™edchozí kontakt v seznamu" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Rozbalit/sbalit aktuální Adresář" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Následující Adresář" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "PÅ™edchozí Adresář" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Akce" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "ObÄerstvit seznam kontaktů" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "PÅ™idat kontakt" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "PÅ™edat nový Adresář" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Odstranit aktuální kontakt" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "PÅ™etáhnÄ›te sem fotku pro její nahrání" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Smazat souÄasnou fotku" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Upravit souÄasnou fotku" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Nahrát novou fotku" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Vybrat fotku z ownCloudu" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formát vlastní, kÅ™estní, celé jméno, obrácenÄ› nebo obrácenÄ› oddelené Äárkami" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Upravit podrobnosti jména" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizace" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Odstranit" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "PÅ™ezdívka" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Zadejte pÅ™ezdívku" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Web" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "PÅ™ejít na web" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd. mm. yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Skupiny" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "OddÄ›lte skupiny Äárkami" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Upravit skupiny" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferovaný" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Prosím zadejte platnou e-mailovou adresu" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Zadat e-mailovou adresu" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Odeslat na adresu" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Smazat e-mail" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Zadat telefoní Äíslo" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Smazat telefoní Äíslo" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Smazat IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Zobrazit na mapÄ›" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Upravit podrobnosti adresy" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Zde můžete pÅ™ipsat poznámky." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "PÅ™idat políÄko" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Instant Messaging" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresa" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Poznámka" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Stáhnout kontakt" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Odstranit kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Obrázek byl odstranÄ›n z doÄasné pamÄ›ti." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Upravit adresu" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Typ" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "PO box" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Ulice" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Ulice a Äíslo" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Rozšířené" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Byt Äíslo atd." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "MÄ›sto" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Kraj" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "NapÅ™. stát nebo okres" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "PSÄŒ" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "PSÄŒ" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "ZemÄ›" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adresář" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Tituly pÅ™ed" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "SleÄna" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Ms" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Pan" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Paní" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "KÅ™estní jméno" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Další jména" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Příjmení" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Tituly za" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "JUDr." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "MUDr." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "ml." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "st." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importovat soubor kontaktů" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Prosím zvolte adresář" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "vytvoÅ™it nový adresář" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Jméno nového adresáře" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importování kontaktů" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Nemáte žádné kontakty v adresáři." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "PÅ™idat kontakt" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Vybrat Adresář" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Vložte jméno" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Vložte popis" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Adresa pro synchronizaci pomocí CardDAV:" - -#: templates/settings.php:3 -msgid "more info" -msgstr "víc informací" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Hlavní adresa (Kontakt etc)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Zobrazit odklaz CardDAV:" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Zobrazit odkaz VCF pouze pro Ätení" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Sdílet" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Stažení" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editovat" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nový adresář" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Název" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Popis" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Uložit" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Storno" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Více..." diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index b589fce4cd95def45069f81ab48b518f41b32729..2f47e270ac5b9c7e0b2db11d71461e9f17d1b5ea 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-30 02:02+0200\n" -"PO-Revision-Date: 2012-09-29 08:16+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 10:10+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -21,208 +21,241 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nezadán název aplikace." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Nezadán typ kategorie." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Žádná kategorie k pÅ™idání?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Tato kategorie již existuje: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Nezadán typ objektu." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "Nezadáno ID %s." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Chyba pÅ™i pÅ™idávání %s k oblíbeným." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Žádné kategorie nebyly vybrány ke smazání." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Chyba pÅ™i odebírání %s z oblíbených." + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Nastavení" -#: js/js.js:645 -msgid "January" -msgstr "Leden" +#: js/js.js:688 +msgid "seconds ago" +msgstr "pÅ™ed pár vteÅ™inami" -#: js/js.js:645 -msgid "February" -msgstr "Únor" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "pÅ™ed minutou" -#: js/js.js:645 -msgid "March" -msgstr "BÅ™ezen" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "pÅ™ed {minutes} minutami" -#: js/js.js:645 -msgid "April" -msgstr "Duben" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "pÅ™ed hodinou" -#: js/js.js:645 -msgid "May" -msgstr "KvÄ›ten" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "pÅ™ed {hours} hodinami" -#: js/js.js:645 -msgid "June" -msgstr "ÄŒerven" +#: js/js.js:693 +msgid "today" +msgstr "dnes" -#: js/js.js:646 -msgid "July" -msgstr "ÄŒervenec" +#: js/js.js:694 +msgid "yesterday" +msgstr "vÄera" -#: js/js.js:646 -msgid "August" -msgstr "Srpen" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "pÅ™ed {days} dny" -#: js/js.js:646 -msgid "September" -msgstr "Září" +#: js/js.js:696 +msgid "last month" +msgstr "minulý mesíc" -#: js/js.js:646 -msgid "October" -msgstr "Říjen" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "pÅ™ed {months} mÄ›síci" -#: js/js.js:646 -msgid "November" -msgstr "Listopad" +#: js/js.js:698 +msgid "months ago" +msgstr "pÅ™ed mÄ›síci" -#: js/js.js:646 -msgid "December" -msgstr "Prosinec" +#: js/js.js:699 +msgid "last year" +msgstr "minulý rok" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "pÅ™ed lety" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Vybrat" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "ZruÅ¡it" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ne" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ano" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Žádné kategorie nebyly vybrány ke smazání." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Není urÄen typ objektu." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Chyba" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Není urÄen název aplikace." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Požadovaný soubor {file} není nainstalován." + +#: js/share.js:124 msgid "Error while sharing" msgstr "Chyba pÅ™i sdílení" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Chyba pÅ™i ruÅ¡ení sdílení" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Chyba pÅ™i zmÄ›nÄ› oprávnÄ›ní" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "S Vámi a skupinou" - -#: js/share.js:130 -msgid "by" -msgstr "sdílí" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "S Vámi a skupinou {group} sdílí {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "S Vámi sdílí" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "S Vámi sdílí {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Sdílet s" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Sdílet s odkazem" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Chránit heslem" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Heslo" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Nastavit datum vyprÅ¡ení platnosti" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Datum vyprÅ¡ení platnosti" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Sdílet e-mailem:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Žádní lidé nenalezeni" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Sdílení již sdílené položky není povoleno" -#: js/share.js:250 -msgid "Shared in" -msgstr "Sdíleno v" - -#: js/share.js:250 -msgid "with" -msgstr "s" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Sdíleno v {item} s {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "ZruÅ¡it sdílení" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "lze upravovat" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "řízení přístupu" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "vytvoÅ™it" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "aktualizovat" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "smazat" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "sdílet" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "ChránÄ›no heslem" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Chyba pÅ™i odstraňování data vyprÅ¡ení platnosti" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Chyba pÅ™i nastavení data vyprÅ¡ení platnosti" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Obnovení hesla pro ownCloud" @@ -235,15 +268,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Bude Vám e-mailem zaslán odkaz pro obnovu hesla." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Požadováno" +msgid "Reset email send." +msgstr "Obnovovací e-mail odeslán." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "PÅ™ihlášení selhalo." +msgid "Request failed!" +msgstr "Požadavek selhal." -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Uživatelské jméno" @@ -299,72 +332,187 @@ msgstr "Cloud nebyl nalezen" msgid "Edit categories" msgstr "Upravit kategorie" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "PÅ™idat" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "BezpeÄnostní upozornÄ›ní" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Není dostupný žádný bezpeÄný generátor náhodných Äísel. Povolte, prosím, rozšíření OpenSSL v PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Bez bezpeÄného generátoru náhodných Äísel může útoÄník pÅ™edpovÄ›dÄ›t token pro obnovu hesla a pÅ™evzít kontrolu nad Vaším úÄtem." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Váš adresář dat a vÅ¡echny VaÅ¡e soubory jsou pravdÄ›podobnÄ› přístupné z internetu. Soubor .htaccess, který je poskytován ownCloud, nefunguje. DůraznÄ› Vám doporuÄujeme nastavit váš webový server tak, aby nebyl adresář dat přístupný, nebo pÅ™esunout adresář dat mimo koÅ™enovou složku dokumentů webového serveru." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "VytvoÅ™it úÄet správce" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "PokroÄilé" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Složka s daty" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Nastavit databázi" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "bude použito" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Uživatel databáze" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Heslo databáze" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Název databáze" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Tabulkový prostor databáze" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Hostitel databáze" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "DokonÄit nastavení" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "NedÄ›le" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "PondÄ›lí" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Úterý" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "StÅ™eda" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "ÄŒtvrtek" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Pátek" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Sobota" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Leden" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Únor" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "BÅ™ezen" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Duben" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "KvÄ›ten" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "ÄŒerven" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "ÄŒervenec" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Srpen" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Září" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Říjen" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Listopad" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Prosinec" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "webové služby pod Vaší kontrolou" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Odhlásit se" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatické pÅ™ihlášení odmítnuto." + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "V nedávné dobÄ› jste nezmÄ›nili své heslo, Váš úÄet může být kompromitován." + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Změňte, prosím, své heslo pro opÄ›tovné zabezpeÄení VaÅ¡eho úÄtu." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Ztratili jste své heslo?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "zapamatovat si" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "PÅ™ihlásit" @@ -379,3 +527,17 @@ msgstr "pÅ™edchozí" #: templates/part.pagenavi.php:20 msgid "next" msgstr "následující" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "BezpeÄnostní upozornÄ›ní." + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Ověřte, prosím, své heslo.
            Z bezpeÄnostních důvodů můžete být obÄas požádáni o jeho opÄ›tovné zadání." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Ověřit" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index 423a5045da8277c10ee2b15332f5c874e2bf45c2..ae2e46823560979a4c2d3af72eeb30bb4eb27ac8 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 12:01+0000\n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 05:15+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -25,195 +25,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Soubor byl odeslán úspěšnÄ›" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Odeslaný soubor pÅ™esáhl svou velikostí parametr upload_max_filesize v php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Odesílaný soubor pÅ™esahuje velikost upload_max_filesize povolenou v php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Odeslaný soubor pÅ™esáhl svou velikostí parametr MAX_FILE_SIZE specifikovaný v formuláři HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Soubor byl odeslán pouze ÄásteÄnÄ›" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Žádný soubor nebyl odeslán" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Chybí adresář pro doÄasné soubory" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Zápis na disk selhal" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Soubory" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "ZruÅ¡it sdílení" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Smazat" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "PÅ™ejmenovat" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "již existuje" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} již existuje" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "nahradit" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "navrhnout název" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "zruÅ¡it" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "nahrazeno" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "nahrazeno {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "zpÄ›t" -#: js/filelist.js:241 -msgid "with" -msgstr "s" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "nahrazeno {new_name} s {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "sdílení zruÅ¡eno pro {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "sdílení zruÅ¡eno" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "smazáno {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "smazáno" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Neplatný název, znaky '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nejsou povoleny." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "generuji ZIP soubor, může to nÄ›jakou dobu trvat." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Chyba odesílání" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Zavřít" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "ÄŒekající" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "odesílá se 1 soubor" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "souborů se odesílá" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "odesílám {count} souborů" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Odesílání zruÅ¡eno." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Probíhá odesílání souboru. OpuÅ¡tÄ›ní stránky vyústí ve zruÅ¡ení nahrávání." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Neplatný název, znak '/' není povolen" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Neplatný název složky. Použití názvu \"Shared\" je rezervováno pro interní úžití službou Owncloud." -#: js/files.js:668 -msgid "files scanned" -msgstr "soubory prohledány" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "prozkoumáno {count} souborů" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "chyba pÅ™i prohledávání" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Název" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Velikost" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "ZmÄ›nÄ›no" -#: js/files.js:778 -msgid "folder" -msgstr "složka" - -#: js/files.js:780 -msgid "folders" -msgstr "složky" - -#: js/files.js:788 -msgid "file" -msgstr "soubor" - -#: js/files.js:790 -msgid "files" -msgstr "soubory" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "pÅ™ed pár sekundami" - -#: js/files.js:835 -msgid "minute ago" -msgstr "pÅ™ed minutou" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "pÅ™ed pár minutami" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 složka" -#: js/files.js:839 -msgid "today" -msgstr "dnes" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} složky" -#: js/files.js:840 -msgid "yesterday" -msgstr "vÄera" +#: js/files.js:824 +msgid "1 file" +msgstr "1 soubor" -#: js/files.js:841 -msgid "days ago" -msgstr "pÅ™ed pár dny" - -#: js/files.js:842 -msgid "last month" -msgstr "minulý mÄ›síc" - -#: js/files.js:844 -msgid "months ago" -msgstr "pÅ™ed pár mÄ›síci" - -#: js/files.js:845 -msgid "last year" -msgstr "minulý rok" - -#: js/files.js:846 -msgid "years ago" -msgstr "pÅ™ed pár lety" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} soubory" #: templates/admin.php:5 msgid "File handling" @@ -223,27 +194,27 @@ msgstr "Zacházení se soubory" msgid "Maximum upload size" msgstr "Maximální velikost pro odesílání" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "nejvÄ›tší možná: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "PotÅ™ebné pro více-souborové stahování a stahování složek." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Povolit ZIP-stahování" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 znamená bez omezení" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maximální velikost vstupu pro ZIP soubory" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Uložit" @@ -251,52 +222,48 @@ msgstr "Uložit" msgid "New" msgstr "Nový" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Textový soubor" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Složka" -#: templates/index.php:11 -msgid "From url" -msgstr "Z url" +#: templates/index.php:14 +msgid "From link" +msgstr "Z odkazu" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Odeslat" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "ZruÅ¡it odesílání" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Žádný obsah. Nahrajte nÄ›co." -#: templates/index.php:50 -msgid "Share" -msgstr "Sdílet" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Stáhnout" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Odeslaný soubor je příliÅ¡ velký" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Soubory, které se snažíte odeslat, pÅ™ekraÄují limit velikosti odesílání na tomto serveru." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Soubory se prohledávají, prosím Äekejte." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Aktuální prohledávání" diff --git a/l10n/cs_CZ/files_external.po b/l10n/cs_CZ/files_external.po index 0f20d9e72e1e35ddaa6979940459ba9a0c21b2df..6fc4812bb0b07316c55a7edd5ff25a09bedeeded 100644 --- a/l10n/cs_CZ/files_external.po +++ b/l10n/cs_CZ/files_external.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-04 02:04+0200\n" -"PO-Revision-Date: 2012-10-03 08:09+0000\n" +"POT-Creation-Date: 2012-11-03 00:00+0100\n" +"PO-Revision-Date: 2012-11-02 10:04+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -67,7 +67,7 @@ msgstr "Možnosti" #: templates/settings.php:11 msgid "Applicable" -msgstr "Platný" +msgstr "Přístupný pro" #: templates/settings.php:23 msgid "Add mount point" diff --git a/l10n/cs_CZ/files_pdfviewer.po b/l10n/cs_CZ/files_pdfviewer.po deleted file mode 100644 index 87f8e0f3ff922b151e9cc802418b85813968ad3c..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/cs_CZ/files_texteditor.po b/l10n/cs_CZ/files_texteditor.po deleted file mode 100644 index 6c9ac9a372c30fd6d297467069283c17f110c69d..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/cs_CZ/gallery.po b/l10n/cs_CZ/gallery.po deleted file mode 100644 index f24db5838a04eb4649bead8265d1ebc1a3eec773..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/gallery.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jan Krejci , 2012. -# Martin , 2012. -# Michal HruÅ¡ecký , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 09:30+0000\n" -"Last-Translator: Martin \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Obrázky" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Sdílet galerii" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Chyba: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "VnitÅ™ní chyba" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "PÅ™ehrávání" diff --git a/l10n/cs_CZ/impress.po b/l10n/cs_CZ/impress.po deleted file mode 100644 index 0b19a018bc3bf10eab339f0355786eed2571a831..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/cs_CZ/lib.po b/l10n/cs_CZ/lib.po index eb0f3cb40a730dffa34e60ec15af7fdf8a58bdb8..dd8693c6c82a4d92fc95fd439fb29f666dc8b3b3 100644 --- a/l10n/cs_CZ/lib.po +++ b/l10n/cs_CZ/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-06 02:02+0200\n" -"PO-Revision-Date: 2012-09-05 13:37+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 10:08+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -19,43 +19,43 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "NápovÄ›da" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Osobní" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Nastavení" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Uživatelé" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Aplikace" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Administrace" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Stahování ZIPu je vypnuto." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Soubory musí být stahovány jednotlivÄ›." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "ZpÄ›t k souborům" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Vybrané soubory jsou příliÅ¡ velké pro vytvoÅ™ení zip souboru." @@ -63,7 +63,7 @@ msgstr "Vybrané soubory jsou příliÅ¡ velké pro vytvoÅ™ení zip souboru." msgid "Application is not enabled" msgstr "Aplikace není povolena" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Chyba ověření" @@ -71,57 +71,84 @@ msgstr "Chyba ověření" msgid "Token expired. Please reload page." msgstr "Token vyprÅ¡el. Obnovte prosím stránku." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Soubory" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Text" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Obrázky" + +#: template.php:103 msgid "seconds ago" msgstr "pÅ™ed vteÅ™inami" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "pÅ™ed 1 minutou" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "pÅ™ed %d minutami" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "pÅ™ed hodinou" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "pÅ™ed %d hodinami" + +#: template.php:108 msgid "today" msgstr "dnes" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "vÄera" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "pÅ™ed %d dny" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "minulý mÄ›síc" -#: template.php:96 -msgid "months ago" -msgstr "pÅ™ed mÄ›síci" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "PÅ™ed %d mÄ›síci" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "loni" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "pÅ™ed lety" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s je dostupná. Získat více informací" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "aktuální" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "kontrola aktualizací je vypnuta" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Nelze nalézt kategorii \"%s\"" diff --git a/l10n/cs_CZ/media.po b/l10n/cs_CZ/media.po deleted file mode 100644 index adefdadc3b1835654f296d5c56edebe03fa99e5a..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jan Krejci , 2011. -# Martin , 2011. -# Michal HruÅ¡ecký , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.net/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Hudba" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "PÅ™ehrát" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pauza" - -#: templates/music.php:5 -msgid "Previous" -msgstr "PÅ™edchozí" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Další" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Vypnout zvuk" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Zapnout zvuk" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Znovu prohledat " - -#: templates/music.php:37 -msgid "Artist" -msgstr "UmÄ›lec" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Název" diff --git a/l10n/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index 3fe9dd8a58f274a76f6dbd3dbd5efa621b6ba4f4..e2e213e5fcbf148e24fc0c6957e76561fe175717 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/settings.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:05+0200\n" -"PO-Revision-Date: 2012-10-09 08:35+0000\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -23,70 +23,73 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Nelze naÄíst seznam z App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Chyba ověření" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Skupina již existuje" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Nelze pÅ™idat skupinu" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Nelze povolit aplikaci." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-mail uložen" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Neplatný e-mail" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID zmÄ›nÄ›no" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Neplatný požadavek" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Nelze smazat skupinu" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Chyba ověření" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Nelze smazat uživatele" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Jazyk byl zmÄ›nÄ›n" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Správci se nemohou odebrat sami ze skupiny správců" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Nelze pÅ™idat uživatele do skupiny %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Nelze odstranit uživatele ze skupiny %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Zakázat" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Povolit" @@ -94,97 +97,10 @@ msgstr "Povolit" msgid "Saving..." msgstr "Ukládám..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "ÄŒesky" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "BezpeÄnostní varování" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Váš adresář dat a soubory jsou pravdÄ›podobnÄ› přístupné z internetu. Soubor .htacces, který ownCloud poskytuje nefunguje. DoporuÄujeme Vám abyste nastavili Váš webový server tak, aby nebylo možno pÅ™istupovat do adresáře s daty, nebo pÅ™esunuli adresář dat mimo koÅ™enovou složku dokumentů webového serveru." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Spustit jednu úlohu s každou naÄtenou stránkou" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php je registrován u služby webcron. Zavolá stránku cron.php v koÅ™enovém adresáři owncloud každou minutu skrze http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Použít systémovou službu cron. Zavolat soubor cron.php ze složky owncloud pomocí systémové úlohy cron každou minutu." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Sdílení" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Povolit API sdílení" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Povolit aplikacím používat API sdílení" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Povolit odkazy" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Povolit uživatelům sdílet položky s veÅ™ejností pomocí odkazů" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Povolit znovu-sdílení" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Povolit uživatelům znovu sdílet položky, které jsou pro nÄ› sdíleny" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Povolit uživatelům sdílet s kýmkoliv" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Povolit uživatelům sdílet pouze s uživateli v jejich skupinách" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Záznam" - -#: templates/admin.php:116 -msgid "More" -msgstr "Více" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Vyvinuto komunitou ownCloud, zdrojový kód je licencován pod AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "PÅ™idat Vaší aplikaci" @@ -217,22 +133,22 @@ msgstr "Správa velkých souborů" msgid "Ask a question" msgstr "Zeptat se" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problémy s pÅ™ipojením k databázi s nápovÄ›dou." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "PÅ™ejít ruÄnÄ›." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "OdpovÄ›Ä" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Použili jste %s z dostupných %s" +msgid "You have used %s of the available %s" +msgstr "Používáte %s z %s dostupných" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -290,6 +206,16 @@ msgstr "Pomoci s pÅ™ekladem" msgid "use this address to connect to your ownCloud in your file manager" msgstr "tuto adresu použijte pro pÅ™ipojení k ownCloud ve VaÅ¡em správci souborů" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Vyvinuto komunitou ownCloud, zdrojový kód je licencován pod AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Jméno" diff --git a/l10n/cs_CZ/tasks.po b/l10n/cs_CZ/tasks.po deleted file mode 100644 index 26605819167f1bef8755357a2983a8d5a65e6dd6..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Michal HruÅ¡ecký , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 19:57+0000\n" -"Last-Translator: Michal HruÅ¡ecký \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Neplatné datum/Äas" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Úkoly" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Bez kategorie" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=nejvyšší" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=stÅ™ední" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=nejnižší" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Neplatná priorita" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "PÅ™idat úkol" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "NaÄítám úkoly..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Důležité" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Více" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "MénÄ›" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Smazat" diff --git a/l10n/cs_CZ/user_migrate.po b/l10n/cs_CZ/user_migrate.po deleted file mode 100644 index 74cee0cec42fcc2266069d08fb0cb9247c0d990f..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Martin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 09:51+0000\n" -"Last-Translator: Martin \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Export" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "BÄ›hem vytváření souboru exportu doÅ¡lo k chybÄ›" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Nastala chyba" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Export VaÅ¡eho uživatelského úÄtu" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Bude vytvoÅ™en komprimovaný soubor, obsahující Váš ownCloud úÄet." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Import uživatelského úÄtu" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "Zip soubor uživatele ownCloud" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Import" diff --git a/l10n/cs_CZ/user_openid.po b/l10n/cs_CZ/user_openid.po deleted file mode 100644 index f2fe13f33452c884e753627bc29fbd8334de1bbc..0000000000000000000000000000000000000000 --- a/l10n/cs_CZ/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Martin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 09:48+0000\n" -"Last-Translator: Martin \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Toto je OpenID server endpoint. Více informací na" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identita: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Oblast: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Uživatel: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Login" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Chyba: Uživatel není zvolen" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "s touto adresou se můžete autrorizovat na další strany" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Autorizovaný OpenID poskytovatel" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "VaÅ¡e adresa na Wordpressu, Identi.ca, …" diff --git a/l10n/cs_CZ/files_odfviewer.po b/l10n/cs_CZ/user_webdavauth.po similarity index 65% rename from l10n/cs_CZ/files_odfviewer.po rename to l10n/cs_CZ/user_webdavauth.po index 68d606283518a27a94bf80236f7f9693eab50bfd..6f4e008376ec9dcba6df756a51df8d130b479131 100644 --- a/l10n/cs_CZ/files_odfviewer.po +++ b/l10n/cs_CZ/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Tomáš Chvátal , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-11 00:01+0100\n" +"PO-Revision-Date: 2012-11-10 10:16+0000\n" +"Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "URL WebDAV: http://" diff --git a/l10n/da/admin_dependencies_chk.po b/l10n/da/admin_dependencies_chk.po deleted file mode 100644 index a0e629c133936e95bfe44dcde7bd0fb9587d1470..0000000000000000000000000000000000000000 --- a/l10n/da/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/da/admin_migrate.po b/l10n/da/admin_migrate.po deleted file mode 100644 index 33fa6f79201f9c8b06d1cf98c57d20da06d2706a..0000000000000000000000000000000000000000 --- a/l10n/da/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-21 02:03+0200\n" -"PO-Revision-Date: 2012-08-20 14:56+0000\n" -"Last-Translator: ressel \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Eksporter ownCloud instans" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Eksporter" diff --git a/l10n/da/bookmarks.po b/l10n/da/bookmarks.po deleted file mode 100644 index 7d336705b21f1c60b95c212beaa7b95ccfe2bdbe..0000000000000000000000000000000000000000 --- a/l10n/da/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/da/calendar.po b/l10n/da/calendar.po deleted file mode 100644 index 5933d87709dfc8e9579b99d25c2e8c3c4d8c5a9f..0000000000000000000000000000000000000000 --- a/l10n/da/calendar.po +++ /dev/null @@ -1,819 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# Morten Juhl-Johansen Zölde-Fejér , 2011, 2012. -# Pascal d'Hermilly , 2011. -# , 2012. -# Thomas Tanghus <>, 2012. -# Thomas Tanghus , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-21 02:03+0200\n" -"PO-Revision-Date: 2012-08-20 14:34+0000\n" -"Last-Translator: ressel \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Ikke alle kalendere er fuldstændig cached" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Der blev ikke fundet nogen kalendere." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Der blev ikke fundet nogen begivenheder." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Forkert kalender" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Filen indeholdt enten ingen begivenheder eller alle begivenheder er allerede gemt i din kalender." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "begivenheder er gemt i den nye kalender" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "import mislykkedes" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "begivenheder er gemt i din kalender" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ny tidszone:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Tidszone ændret" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ugyldig forespørgsel" - -#: appinfo/app.php:37 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM åååå" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ åååå]{ '—'[ MMM] d åååå}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, åååå" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Fødselsdag" - -#: lib/app.php:122 -msgid "Business" -msgstr "Forretning" - -#: lib/app.php:123 -msgid "Call" -msgstr "Ring" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Kunder" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Leverance" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Helligdage" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideér" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Rejse" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubilæum" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Møde" - -#: lib/app.php:131 -msgid "Other" -msgstr "Andet" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Privat" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekter" - -#: lib/app.php:134 -msgid "Questions" -msgstr "SpørgsmÃ¥l" - -#: lib/app.php:135 -msgid "Work" -msgstr "Arbejde" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "af" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "unavngivet" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ny Kalender" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Gentages ikke" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Daglig" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Ugentlig" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Alle hverdage" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Hver anden uge" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "MÃ¥nedlig" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Ã…rlig" - -#: lib/object.php:388 -msgid "never" -msgstr "aldrig" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "efter forekomster" - -#: lib/object.php:390 -msgid "by date" -msgstr "efter dato" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "efter dag i mÃ¥neden" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "efter ugedag" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Mandag" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Tirsdag" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Onsdag" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Torsdag" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Fredag" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Lørdag" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "øndag" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "begivenhedens uge i mÃ¥neden" - -#: lib/object.php:428 -msgid "first" -msgstr "første" - -#: lib/object.php:429 -msgid "second" -msgstr "anden" - -#: lib/object.php:430 -msgid "third" -msgstr "tredje" - -#: lib/object.php:431 -msgid "fourth" -msgstr "fjerde" - -#: lib/object.php:432 -msgid "fifth" -msgstr "femte" - -#: lib/object.php:433 -msgid "last" -msgstr "sidste" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januar" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februar" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Marts" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maj" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "December" - -#: lib/object.php:488 -msgid "by events date" -msgstr "efter begivenheders dato" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "efter dag(e) i Ã¥ret" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "efter ugenummer/-numre" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "efter dag og mÃ¥ned" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Dato" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Søn." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Man." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Tir." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Ons." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Tor." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Fre." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Lør." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Apr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Maj" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Aug." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Okt." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dec." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Hele dagen" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Manglende felter" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titel" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Fra dato" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Fra tidspunkt" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Til dato" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Til tidspunkt" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Begivenheden slutter, inden den begynder" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Der var en fejl i databasen" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Uge" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "MÃ¥ned" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Liste" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "I dag" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Indstillinger" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Dine kalendere" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav-link" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Delte kalendere" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Ingen delte kalendere" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Del kalender" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Hent" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Rediger" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Slet" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "delt af dig" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ny kalender" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Rediger kalender" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Vist navn" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiv" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalenderfarve" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Gem" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Send" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Annuller" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Redigér en begivenhed" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Eksporter" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Begivenhedsinfo" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Gentagende" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Deltagere" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Del" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Titel pÃ¥ begivenheden" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategori" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Opdel kategorier med kommaer" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Rediger kategorier" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Heldagsarrangement" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Fra" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Til" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Avancerede indstillinger" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Sted" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Placering af begivenheden" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Beskrivelse" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Beskrivelse af begivenheden" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Gentag" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avanceret" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Vælg ugedage" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Vælg dage" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "og begivenhedens dag i Ã¥ret." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "og begivenhedens sag pÃ¥ mÃ¥neden" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Vælg mÃ¥neder" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Vælg uger" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "og begivenhedens uge i Ã¥ret." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Interval" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Afslutning" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "forekomster" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "opret en ny kalender" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importer en kalenderfil" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Vælg en kalender" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Navn pÃ¥ ny kalender" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "En kalender med dette navn findes allerede. Hvis du fortsætter alligevel, vil disse kalendere blive sammenlagt." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importer" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Luk dialog" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Opret en ny begivenhed" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Vis en begivenhed" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Ingen categorier valgt" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "fra" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "kl." - -#: templates/settings.php:10 -msgid "General" -msgstr "Generel" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Tidszone" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Opdater tidszone automatisk" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24T" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12T" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "flere oplysninger" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Brugere" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "Vælg brugere" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Redigerbar" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupper" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "Vælg grupper" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "Offentliggør" diff --git a/l10n/da/contacts.po b/l10n/da/contacts.po deleted file mode 100644 index 8a658ef13655ba0dfd0338c2d6dd8a96b6ea60d8..0000000000000000000000000000000000000000 --- a/l10n/da/contacts.po +++ /dev/null @@ -1,957 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# Morten Juhl-Johansen Zölde-Fejér , 2011, 2012. -# Pascal d'Hermilly , 2011. -# Thomas Tanghus <>, 2012. -# Thomas Tanghus , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Fejl ved (de)aktivering af adressebogen" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "Intet ID medsendt." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Kan ikke opdatére adressebogen med et tomt navn." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Fejl ved opdatering af adressebog" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Intet ID medsendt" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Kunne ikke sætte checksum." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Der ikke valgt nogle grupper at slette." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Der blev ikke fundet nogen adressebøger." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Der blev ikke fundet nogen kontaktpersoner." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Der opstod en fejl ved tilføjelse af kontaktpersonen." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "Elementnavnet er ikke medsendt." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Kan ikke tilføje en egenskab uden indhold." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Der skal udfyldes mindst et adressefelt." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Kan ikke tilføje overlappende element." - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informationen om vCard er forkert. Genindlæs siden." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Manglende ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Kunne ikke indlæse VCard med ID'et: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "Checksum er ikke medsendt." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informationen om dette VCard stemmer ikke. Genindlæs venligst siden: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Noget gik grueligt galt. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Ingen ID for kontakperson medsendt." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Kunne ikke indlæse foto for kontakperson." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Kunne ikke gemme midlertidig fil." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Billedet under indlæsning er ikke gyldigt." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Kontaktperson ID mangler." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Der blev ikke medsendt en sti til fotoet." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Filen eksisterer ikke:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Kunne ikke indlæse billede." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Fejl ved indlæsning af kontaktpersonobjektet." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Fejl ved indlæsning af PHOTO feltet." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Kunne ikke gemme kontaktpersonen." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Kunne ikke ændre billedets størrelse" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Kunne ikke beskære billedet" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Kunne ikke oprette midlertidigt billede" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Kunne ikke finde billedet: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Kunne ikke uploade kontaktepersoner til midlertidig opbevaring." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Der skete ingen fejl, filen blev succesfuldt uploadet" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Den uploadede fil er større end upload_max_filesize indstillingen i php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Den uploadede fil overstiger MAX_FILE_SIZE indstilingen, som specificeret i HTML formularen" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Filen blev kun delvist uploadet." - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Ingen fil uploadet" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Manglende midlertidig mappe." - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Kunne ikke gemme midlertidigt billede: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Kunne ikke indlæse midlertidigt billede" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Ingen fil blev uploadet. Ukendt fejl." - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontaktpersoner" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Denne funktion er desværre ikke implementeret endnu" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Ikke implementeret" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Kunne ikke finde en gyldig adresse." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Fejl" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Dette felt mÃ¥ ikke være tomt." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Kunne ikke serialisere elementerne." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' kaldet uden typeargument. Indrapporter fejl pÃ¥ bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Rediger navn" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Der er ikke valgt nogen filer at uploade." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Dr." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Vælg type" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultat:" - -#: js/loader.js:49 -msgid " imported, " -msgstr " importeret " - -#: js/loader.js:49 -msgid " failed." -msgstr " fejl." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Dette er ikke din adressebog." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontaktperson kunne ikke findes." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Arbejde" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Hjemme" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "SMS" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Telefonsvarer" - -#: lib/app.php:205 -msgid "Message" -msgstr "Besked" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Personsøger" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Fødselsdag" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}s fødselsdag" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontaktperson" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Tilføj kontaktperson" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importer" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adressebøger" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Luk" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Drop foto for at uploade" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Slet nuværende foto" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Rediger nuværende foto" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Upload nyt foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Vælg foto fra ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formatter som valgfrit, fuldt navn, efternavn først eller efternavn først med komma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Rediger navnedetaljer." - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisation" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Slet" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Kaldenavn" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Indtast kaldenavn" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-åååå" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupper" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Opdel gruppenavne med kommaer" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Rediger grupper" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Foretrukken" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Indtast venligst en gyldig email-adresse." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Indtast email-adresse" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Send mail til adresse" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Slet email-adresse" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Indtast telefonnummer" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Slet telefonnummer" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Vis pÃ¥ kort" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Rediger adresse detaljer" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Tilføj noter her." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Tilføj element" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresse" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Note" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Download kontaktperson" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Slet kontaktperson" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Det midlertidige billede er ikke længere tilgængeligt." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Rediger adresse" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Type" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postboks" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Udvidet" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "By" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Region" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postnummer" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Land" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adressebog" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Foranstillede titler" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Frøken" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Fru" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Hr." - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Fru" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Fornavn" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Mellemnavne" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Efternavn" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Efterstillede titler" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "Cand. Jur." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importer fil med kontaktpersoner" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Vælg venligst adressebog" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Opret ny adressebog" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Navn pÃ¥ ny adressebog" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importerer kontaktpersoner" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Du har ingen kontaktpersoner i din adressebog." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Tilføj kontaktpeson." - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV synkroniserings adresse" - -#: templates/settings.php:3 -msgid "more info" -msgstr "mere info" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Primær adresse (Kontak m. fl.)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Download" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Rediger" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Ny adressebog" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Gem" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Fortryd" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/da/core.po b/l10n/da/core.po index 0612baf36cc4a014227e9eeac88c45cf5e93786c..bfb971646be68ccbaa4509f20255584ef6f81de1 100644 --- a/l10n/da/core.po +++ b/l10n/da/core.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" -"PO-Revision-Date: 2012-10-12 17:45+0000\n" -"Last-Translator: Ole Holm Frandsen \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,208 +24,241 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Applikationens navn ikke medsendt" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ingen kategori at tilføje?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Denne kategori eksisterer allerede: " -#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Ingen kategorier valgt" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Indstillinger" -#: js/js.js:670 -msgid "January" -msgstr "Januar" +#: js/js.js:688 +msgid "seconds ago" +msgstr "sekunder siden" -#: js/js.js:670 -msgid "February" -msgstr "Februar" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 minut siden" -#: js/js.js:670 -msgid "March" -msgstr "Marts" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{minutes} minutter siden" -#: js/js.js:670 -msgid "April" -msgstr "April" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:670 -msgid "May" -msgstr "Maj" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:670 -msgid "June" -msgstr "Juni" +#: js/js.js:693 +msgid "today" +msgstr "i dag" -#: js/js.js:671 -msgid "July" -msgstr "Juli" +#: js/js.js:694 +msgid "yesterday" +msgstr "i gÃ¥r" -#: js/js.js:671 -msgid "August" -msgstr "August" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{days} dage siden" -#: js/js.js:671 -msgid "September" -msgstr "September" +#: js/js.js:696 +msgid "last month" +msgstr "sidste mÃ¥ned" -#: js/js.js:671 -msgid "October" -msgstr "Oktober" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:671 -msgid "November" -msgstr "November" +#: js/js.js:698 +msgid "months ago" +msgstr "mÃ¥neder siden" -#: js/js.js:671 -msgid "December" -msgstr "December" +#: js/js.js:699 +msgid "last year" +msgstr "sidste Ã¥r" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "Ã¥r siden" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Vælg" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Fortryd" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nej" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "OK" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Ingen kategorier valgt" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Fejl" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Fejl under deling" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Fejl under annullering af deling" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Fejl under justering af rettigheder" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Delt med dig og gruppen" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Delt med dig og gruppen {group} af {owner}" -#: js/share.js:130 -msgid "by" -msgstr "af" - -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Delt med dig af" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Delt med dig af {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Del med" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Del med link" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Beskyt med adgangskode" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Kodeord" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Vælg udløbsdato" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Udløbsdato" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Del via email:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Ingen personer fundet" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Videredeling ikke tilladt" -#: js/share.js:250 -msgid "Shared in" -msgstr "Delt i" - -#: js/share.js:250 -msgid "with" -msgstr "med" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Delt i {item} med {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Fjern deling" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "kan redigere" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "Adgangskontrol" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "opret" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "opdater" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "slet" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "del" -#: js/share.js:322 js/share.js:484 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Beskyttet med adgangskode" -#: js/share.js:497 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Fejl ved fjernelse af udløbsdato" -#: js/share.js:509 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Fejl under sætning af udløbsdato" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Nulstil ownCloud kodeord" @@ -238,15 +271,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Du vil modtage et link til at nulstille dit kodeord via email." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Forespugt" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Login fejlede!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Brugernavn" @@ -302,72 +335,187 @@ msgstr "Sky ikke fundet" msgid "Edit categories" msgstr "Rediger kategorier" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Tilføj" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Sikkerhedsadvarsel" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Ingen sikker tilfældighedsgenerator til tal er tilgængelig. Aktiver venligst OpenSSL udvidelsen." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Uden en sikker tilfældighedsgenerator til tal kan en angriber mÃ¥ske gætte dit gendan kodeord og overtage din konto" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Din data mappe og dine filer er muligvis tilgængelige fra internettet. .htaccess filen som ownCloud leverer virker ikke. Vi anbefaler pÃ¥ det kraftigste at du konfigurerer din webserver pÃ¥ en mÃ¥ske sÃ¥ data mappen ikke længere er tilgængelig eller at du flytter data mappen uden for webserverens dokument rod. " + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Opret en administratorkonto" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avanceret" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datamappe" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfigurer databasen" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "vil blive brugt" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Databasebruger" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Databasekodeord" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Navn pÃ¥ database" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Database tabelplads" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Databasehost" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Afslut opsætning" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Søndag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Mandag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Tirsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Onsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Torsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Fredag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Lørdag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Marts" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Maj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "December" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "Webtjenester under din kontrol" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Log ud" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatisk login afvist!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Hvis du ikke har ændret din adgangskode for nylig, har nogen muligvis tiltvunget sig adgang til din konto!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Skift adgangskode for at sikre din konto igen." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Mistet dit kodeord?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "husk" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Log ind" @@ -382,3 +530,17 @@ msgstr "forrige" #: templates/part.pagenavi.php:20 msgid "next" msgstr "næste" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Sikkerhedsadvarsel!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Verificer din adgangskode.
            Af sikkerhedsÃ¥rsager kan du lejlighedsvist blive bedt om at indtaste din adgangskode igen." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verificer" diff --git a/l10n/da/files.po b/l10n/da/files.po index a5e95472c711c47606dc39a0b50251b0f05a2218..2b9b44a91699c496d00ca527497e30391915b8a7 100644 --- a/l10n/da/files.po +++ b/l10n/da/files.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" -"PO-Revision-Date: 2012-10-12 17:48+0000\n" -"Last-Translator: Ole Holm Frandsen \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,195 +29,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Der er ingen fejl, filen blev uploadet med success" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Den uploadede fil overskrider upload_max_filesize direktivet i php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Den uploadede fil overskrider MAX_FILE_SIZE -direktivet som er specificeret i HTML-formularen" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Den uploadede file blev kun delvist uploadet" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ingen fil blev uploadet" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Mangler en midlertidig mappe" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Fejl ved skrivning til disk." -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Filer" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Fjern deling" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Slet" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Omdøb" -#: js/filelist.js:192 js/filelist.js:194 -msgid "already exists" -msgstr "findes allerede" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} eksisterer allerede" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "erstat" -#: js/filelist.js:192 +#: js/filelist.js:201 msgid "suggest name" msgstr "foreslÃ¥ navn" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "fortryd" -#: js/filelist.js:241 js/filelist.js:243 -msgid "replaced" -msgstr "erstattet" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "erstattede {new_name}" -#: js/filelist.js:241 js/filelist.js:243 js/filelist.js:275 js/filelist.js:277 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "fortryd" -#: js/filelist.js:243 -msgid "with" -msgstr "med" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "erstattede {new_name} med {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "ikke delte {files}" -#: js/filelist.js:275 -msgid "unshared" -msgstr "udelt" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "slettede {files}" -#: js/filelist.js:277 -msgid "deleted" -msgstr "Slettet" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "genererer ZIP-fil, det kan tage lidt tid." -#: js/files.js:214 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kunne ikke uploade din fil, da det enten er en mappe eller er tom" -#: js/files.js:214 +#: js/files.js:218 msgid "Upload Error" msgstr "Fejl ved upload" -#: js/files.js:242 js/files.js:347 js/files.js:377 +#: js/files.js:235 +msgid "Close" +msgstr "Luk" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Afventer" -#: js/files.js:262 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 fil uploades" -#: js/files.js:265 js/files.js:310 js/files.js:325 -msgid "files uploading" -msgstr "filer uploades" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} filer uploades" -#: js/files.js:328 js/files.js:361 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Upload afbrudt." -#: js/files.js:430 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret." -#: js/files.js:500 -msgid "Invalid name, '/' is not allowed." -msgstr "Ugyldigt navn, '/' er ikke tilladt." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:681 -msgid "files scanned" -msgstr "filer scannet" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} filer skannet" -#: js/files.js:689 +#: js/files.js:712 msgid "error while scanning" msgstr "fejl under scanning" -#: js/files.js:762 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Navn" -#: js/files.js:763 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Størrelse" -#: js/files.js:764 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Ændret" -#: js/files.js:791 -msgid "folder" -msgstr "mappe" - -#: js/files.js:793 -msgid "folders" -msgstr "mapper" - -#: js/files.js:801 -msgid "file" -msgstr "fil" - -#: js/files.js:803 -msgid "files" -msgstr "filer" - -#: js/files.js:847 -msgid "seconds ago" -msgstr "sekunder siden" - -#: js/files.js:848 -msgid "minute ago" -msgstr "minut siden" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 mappe" -#: js/files.js:849 -msgid "minutes ago" -msgstr "minutter" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} mapper" -#: js/files.js:852 -msgid "today" -msgstr "i dag" +#: js/files.js:824 +msgid "1 file" +msgstr "1 fil" -#: js/files.js:853 -msgid "yesterday" -msgstr "i gÃ¥r" - -#: js/files.js:854 -msgid "days ago" -msgstr "dage siden" - -#: js/files.js:855 -msgid "last month" -msgstr "sidste mÃ¥ned" - -#: js/files.js:857 -msgid "months ago" -msgstr "mÃ¥neder siden" - -#: js/files.js:858 -msgid "last year" -msgstr "sidste Ã¥r" - -#: js/files.js:859 -msgid "years ago" -msgstr "Ã¥r siden" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} filer" #: templates/admin.php:5 msgid "File handling" @@ -227,27 +198,27 @@ msgstr "FilhÃ¥ndtering" msgid "Maximum upload size" msgstr "Maksimal upload-størrelse" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. mulige: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Nødvendigt for at kunne downloade mapper og flere filer ad gangen." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Muliggør ZIP-download" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 er ubegrænset" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maksimal størrelse pÃ¥ ZIP filer" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Gem" @@ -255,52 +226,48 @@ msgstr "Gem" msgid "New" msgstr "Ny" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tekstfil" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Mappe" -#: templates/index.php:11 -msgid "From url" -msgstr "Fra URL" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Upload" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Fortryd upload" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Her er tomt. Upload noget!" -#: templates/index.php:50 -msgid "Share" -msgstr "Del" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Download" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Upload for stor" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload pÃ¥ denne server." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Filerne bliver indlæst, vent venligst." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Indlæser" diff --git a/l10n/da/files_pdfviewer.po b/l10n/da/files_pdfviewer.po deleted file mode 100644 index 781bfdac2e42bd79e7cd35ef6c8d7e0d35a4ca8c..0000000000000000000000000000000000000000 --- a/l10n/da/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/da/files_texteditor.po b/l10n/da/files_texteditor.po deleted file mode 100644 index cb994d6b9227ce148de2cab04c620c552889e510..0000000000000000000000000000000000000000 --- a/l10n/da/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/da/gallery.po b/l10n/da/gallery.po deleted file mode 100644 index 43c5fd2a9e27b1a222e483ca463b600e5466f829..0000000000000000000000000000000000000000 --- a/l10n/da/gallery.po +++ /dev/null @@ -1,97 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Morten Juhl-Johansen Zölde-Fejér , 2012. -# Thomas Tanghus <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Danish (http://www.transifex.net/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Billeder" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Indstillinger" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Genindlæs" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Stop" - -#: templates/index.php:18 -msgid "Share" -msgstr "Del" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Tilbage" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Fjern bekræftelse" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Ønsker du at fjerne albummet" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Ændre albummets navn" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nyt album navn" diff --git a/l10n/da/impress.po b/l10n/da/impress.po deleted file mode 100644 index 80c9eb2ed8055ae33d137a4e5d8e5c0e545df3fe..0000000000000000000000000000000000000000 --- a/l10n/da/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/da/lib.po b/l10n/da/lib.po index 04ff6d58074bf44564a924a5bd65c830458f2b32..76cd064267c87861ae9648aaa212526cb28d098e 100644 --- a/l10n/da/lib.po +++ b/l10n/da/lib.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-24 02:02+0200\n" -"PO-Revision-Date: 2012-09-23 06:51+0000\n" -"Last-Translator: Morten Juhl-Johansen Zölde-Fejér \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -43,19 +43,19 @@ msgstr "Apps" msgid "Admin" msgstr "Admin" -#: files.php:309 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP-download er slÃ¥et fra." -#: files.php:310 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Filer skal downloades en for en." -#: files.php:310 files.php:335 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Tilbage til Filer" -#: files.php:334 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "De markerede filer er for store til at generere en ZIP-fil." @@ -63,7 +63,7 @@ msgstr "De markerede filer er for store til at generere en ZIP-fil." msgid "Application is not enabled" msgstr "Programmet er ikke aktiveret" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Adgangsfejl" @@ -71,57 +71,84 @@ msgstr "Adgangsfejl" msgid "Token expired. Please reload page." msgstr "Adgang er udløbet. Genindlæs siden." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Filer" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "SMS" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "sekunder siden" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 minut siden" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minutter siden" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "I dag" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "I gÃ¥r" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d dage siden" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "Sidste mÃ¥ned" -#: template.php:96 -msgid "months ago" -msgstr "mÃ¥neder siden" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "Sidste Ã¥r" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "Ã¥r siden" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s er tilgængelig. FÃ¥ mere information" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "opdateret" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "Check for opdateringer er deaktiveret" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/da/media.po b/l10n/da/media.po deleted file mode 100644 index ba051b121a5eb45742b24b2413084ce2c73011fb..0000000000000000000000000000000000000000 --- a/l10n/da/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Morten Juhl-Johansen Zölde-Fejér , 2011. -# Pascal d'Hermilly , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Danish (http://www.transifex.net/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musik" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Afspil" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pause" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Forrige" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Næste" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Lydløs" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Lyd til" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Genskan Samling" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Kunstner" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titel" diff --git a/l10n/da/settings.po b/l10n/da/settings.po index 136582efaf0111a2e628f696d6e2a4f3e338054d..948c398c0767e56fcbf44ef00dcaae9ff01bdeed 100644 --- a/l10n/da/settings.po +++ b/l10n/da/settings.po @@ -16,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:05+0200\n" -"PO-Revision-Date: 2012-10-12 17:31+0000\n" -"Last-Translator: Ole Holm Frandsen \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,70 +26,73 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Kunne ikke indlæse listen fra App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Adgangsfejl" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Gruppen findes allerede" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Gruppen kan ikke oprettes" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Applikationen kunne ikke aktiveres." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email adresse gemt" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ugyldig email adresse" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID ændret" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ugyldig forespørgsel" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Gruppen kan ikke slettes" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Adgangsfejl" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Bruger kan ikke slettes" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Sprog ændret" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Brugeren kan ikke tilføjes til gruppen %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Brugeren kan ikke fjernes fra gruppen %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Deaktiver" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Aktiver" @@ -97,97 +100,10 @@ msgstr "Aktiver" msgid "Saving..." msgstr "Gemmer..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Dansk" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Sikkerhedsadvarsel" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Din datamappe og dine filer er formentligt tilgængelige fra internettet.\n.htaccess-filen, som ownCloud leverer, fungerer ikke. Vi anbefaler stærkt, at du opsætter din server pÃ¥ en mÃ¥de, sÃ¥ datamappen ikke længere er direkte tilgængelig, eller at du flytter datamappen udenfor serverens tilgængelige rodfilsystem." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Udfør en opgave med hver side indlæst" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php er registreret hos en webcron-tjeneste. Kald cron.php-siden i ownClouds rodmappe en gang i minuttet over http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "vend systemets cron-tjeneste. Kald cron.php-filen i ownCloud-mappen ved hjælp af systemets cronjob en gang i minuttet." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Deling" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Aktiver dele API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Tillad apps a bruge dele APIen" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Tillad links" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Tillad brugere at dele elementer med offentligheden med links" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Tillad gendeling" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Tillad brugere at dele elementer, som er blevet delt med dem, videre til andre" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Tillad brugere at dele med hvem som helst" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Tillad kun deling med brugere i brugerens egen gruppe" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mere" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Udviklet af ownClouds community, og kildekoden er underlagt licensen AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Tilføj din App" @@ -220,22 +136,22 @@ msgstr "HÃ¥ndter store filer" msgid "Ask a question" msgstr "Stil et spørgsmÃ¥l" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemer med at forbinde til hjælpe-databasen." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "GÃ¥ derhen manuelt." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Svar" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Du har brugt %s af de tilgængelige %s" +msgid "You have used %s of the available %s" +msgstr "" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -293,6 +209,16 @@ msgstr "Hjælp med oversættelsen" msgid "use this address to connect to your ownCloud in your file manager" msgstr "benyt denne adresse til at forbinde til din ownCloud i din filbrowser" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Udviklet af ownClouds community, og kildekoden er underlagt licensen AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Navn" diff --git a/l10n/da/tasks.po b/l10n/da/tasks.po deleted file mode 100644 index 5c9900db1eb621bfef418c7e720297ba5c11ee68..0000000000000000000000000000000000000000 --- a/l10n/da/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-21 02:03+0200\n" -"PO-Revision-Date: 2012-08-20 14:43+0000\n" -"Last-Translator: ressel \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Ugyldig dato/tid" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Opgaver" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Ingen kategori" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Uspecificeret" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=højeste" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=mellem" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=laveste" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Tom beskrivelse" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Tilføj opgave" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Indlæser opgaver..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "vigtigt" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Mere" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Mindre" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Slet" diff --git a/l10n/da/user_ldap.po b/l10n/da/user_ldap.po index 1d331efa3c5abe9ac3774de14b7a38af27aa94a1..95a083e9f1ea2fbb04671c592b656f172bf6c986 100644 --- a/l10n/da/user_ldap.po +++ b/l10n/da/user_ldap.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Frederik Lassen , 2012. # Morten Juhl-Johansen Zölde-Fejér , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 02:02+0200\n" -"PO-Revision-Date: 2012-09-25 14:13+0000\n" -"Last-Translator: Morten Juhl-Johansen Zölde-Fejér \n" +"POT-Creation-Date: 2012-10-24 02:02+0200\n" +"PO-Revision-Date: 2012-10-23 09:31+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,7 +39,7 @@ msgstr "" #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "Bruger DN" #: templates/settings.php:10 msgid "" diff --git a/l10n/da/user_migrate.po b/l10n/da/user_migrate.po deleted file mode 100644 index 3c03fa73962e3370c1b88d9001e6529636dd162f..0000000000000000000000000000000000000000 --- a/l10n/da/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/da/user_openid.po b/l10n/da/user_openid.po deleted file mode 100644 index a9fdd710c8abda4ea9a98ce034c60fba6faa16a2..0000000000000000000000000000000000000000 --- a/l10n/da/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/da/files_odfviewer.po b/l10n/da/user_webdavauth.po similarity index 73% rename from l10n/da/files_odfviewer.po rename to l10n/da/user_webdavauth.po index 755f4010e9d47b5b5d081df4bbaa24474580dfb0..d91890971df00e52b3c070aee42a300a0ef8a5e6 100644 --- a/l10n/da/files_odfviewer.po +++ b/l10n/da/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/de/admin_dependencies_chk.po b/l10n/de/admin_dependencies_chk.po deleted file mode 100644 index f36baa4f39016c2caf9710313049e19620fe4eee..0000000000000000000000000000000000000000 --- a/l10n/de/admin_dependencies_chk.po +++ /dev/null @@ -1,77 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Maurice Preuß <>, 2012. -# , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:01+0200\n" -"PO-Revision-Date: 2012-08-23 10:05+0000\n" -"Last-Translator: traductor \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Das Modul php-json wird von vielen Anwendungen zur internen Kommunikation benötigt." - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Das Modul php-curl wird benötigt, um den Titel der Seite für die Lesezeichen hinzuzufügen." - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Das Modul php-gd wird für die Erzeugung der Vorschaubilder benötigt." - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Das Modul php-ldap wird für die Verbindung mit dem LDAP-Server benötigt." - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Das Modul php-zip wird für den gleichzeitigen Download mehrerer Dateien benötigt." - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Das Modul php_mb_multibyte wird benötigt, um das Encoding richtig zu handhaben." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Das Modul php-ctype wird benötigt, um Daten zu prüfen." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Das Modul php-xml wird benötigt, um Dateien über WebDAV zu teilen." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Die Richtlinie allow_url_fopen in Ihrer php.ini sollte auf 1 gesetzt werden, um die Wissensbasis vom OCS-Server abrufen." - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Das Modul php-pdo wird benötigt, um Daten in der Datenbank zu speichern." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Status der Abhängigkeiten" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Benutzt von:" diff --git a/l10n/de/admin_migrate.po b/l10n/de/admin_migrate.po deleted file mode 100644 index d4a6b315a18786a9932397b9aa9a2740b865271d..0000000000000000000000000000000000000000 --- a/l10n/de/admin_migrate.po +++ /dev/null @@ -1,34 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:02+0200\n" -"PO-Revision-Date: 2012-08-14 13:34+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Diese ownCloud-Instanz exportieren." - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Dies wird eine komprimierte Datei erzeugen, welche die Daten dieser ownCloud-Instanz enthält.\n Bitte wählen Sie den Exporttyp:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Exportieren" diff --git a/l10n/de/bookmarks.po b/l10n/de/bookmarks.po deleted file mode 100644 index 8383c62a138556714651d7f8c24f53988ebc806a..0000000000000000000000000000000000000000 --- a/l10n/de/bookmarks.po +++ /dev/null @@ -1,63 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Phi Lieb <>, 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 09:38+0000\n" -"Last-Translator: traductor \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Lesezeichen" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "unbenannt" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Ziehen Sie dies zu Ihren Browser-Lesezeichen und klicken Sie darauf, wenn Sie eine Website schnell den Lesezeichen hinzufügen wollen." - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Später lesen" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adresse" - -#: templates/list.php:14 -msgid "Title" -msgstr "Titel" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Tags" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Lesezeichen speichern" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Sie haben keine Lesezeichen" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Bookmarklet
            " diff --git a/l10n/de/calendar.po b/l10n/de/calendar.po deleted file mode 100644 index 5ef155057e94ea91d9187d7fd39171d6cdc06aed..0000000000000000000000000000000000000000 --- a/l10n/de/calendar.po +++ /dev/null @@ -1,824 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -# , 2012. -# , 2011, 2012. -# Jan-Christoph Borchardt , 2011. -# Jan-Christoph Borchardt , 2011. -# Marcel Kühlhorn , 2012. -# , 2012. -# , 2012. -# Phi Lieb <>, 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 09:20+0000\n" -"Last-Translator: traductor \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Noch sind nicht alle Kalender zwischengespeichert." - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Es sieht so aus, als wäre alles vollständig zwischengespeichert." - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Keine Kalender gefunden." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Keine Termine gefunden." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Falscher Kalender" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Entweder enthielt die Datei keine Termine oder alle Termine waren bereits im Kalender gespeichert." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "Der Termin wurde im neuen Kalender gespeichert." - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Import fehlgeschlagen" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "Der Termin wurde im Kalender gespeichert." - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Neue Zeitzone:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zeitzone geändert" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Fehlerhafte Anfrage" - -#: appinfo/app.php:37 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd d.M" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd d.M" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, d. MMM yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Geburtstag" - -#: lib/app.php:122 -msgid "Business" -msgstr "Geschäftlich" - -#: lib/app.php:123 -msgid "Call" -msgstr "Anruf" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Kunden" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Lieferant" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Urlaub" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideen" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Reise" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubiläum" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Treffen" - -#: lib/app.php:131 -msgid "Other" -msgstr "Anderes" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Persönlich" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekte" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Fragen" - -#: lib/app.php:135 -msgid "Work" -msgstr "Arbeit" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "von" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "unbenannt" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Neuer Kalender" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "einmalig" - -#: lib/object.php:373 -msgid "Daily" -msgstr "täglich" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "wöchentlich" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "jeden Wochentag" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "jede zweite Woche" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "monatlich" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "jährlich" - -#: lib/object.php:388 -msgid "never" -msgstr "niemals" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "nach Terminen" - -#: lib/object.php:390 -msgid "by date" -msgstr "nach Datum" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "an einem Monatstag" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "an einem Wochentag" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Montag" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Dienstag" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Mittwoch" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Donnerstag" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Freitag" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Samstag" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Sonntag" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "Woche des Monats vom Termin" - -#: lib/object.php:428 -msgid "first" -msgstr "erste" - -#: lib/object.php:429 -msgid "second" -msgstr "zweite" - -#: lib/object.php:430 -msgid "third" -msgstr "dritte" - -#: lib/object.php:431 -msgid "fourth" -msgstr "vierte" - -#: lib/object.php:432 -msgid "fifth" -msgstr "fünfte" - -#: lib/object.php:433 -msgid "last" -msgstr "letzte" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januar" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februar" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "März" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mai" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Dezember" - -#: lib/object.php:488 -msgid "by events date" -msgstr "nach Tag des Termins" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "nach Tag des Jahres" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "nach Wochennummer" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "nach Tag und Monat" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Datum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "So" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Mo" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Di" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Mi" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Do" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Fr" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Sa" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mär." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Apr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Mai" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Aug." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Okt." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dez." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Ganztags" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "fehlende Felder" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titel" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Startdatum" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Startzeit" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Enddatum" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Endzeit" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Der Termin hört auf, bevor er angefangen hat." - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Datenbankfehler" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Woche" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Monat" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Liste" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Heute" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Einstellungen" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Deine Kalender" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDAV-Link" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Geteilte Kalender" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Keine geteilten Kalender" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Kalender teilen" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Herunterladen" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Bearbeiten" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Löschen" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "Geteilt mit dir von" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Neuer Kalender" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Kalender bearbeiten" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Anzeigename" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiv" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalenderfarbe" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Speichern" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Bestätigen" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Abbrechen" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Ereignis bearbeiten" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportieren" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Termininfo" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Wiederholen" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Teilnehmer" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Teilen" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Name" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorie" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Kategorien mit Kommas trennen" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Kategorien ändern" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Ganztägiges Ereignis" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "von" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "bis" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Erweiterte Optionen" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Ort" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Ort" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Beschreibung" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Beschreibung" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "wiederholen" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Erweitert" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Wochentage auswählen" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Tage auswählen" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "und den Tag des Jahres vom Termin" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "und den Tag des Monats vom Termin" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Monate auswählen" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Wochen auswählen" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "und den Tag des Jahres vom Termin" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervall" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Ende" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "Termine" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Neuen Kalender anlegen" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Kalenderdatei importieren" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Wählen Sie bitte einen Kalender." - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Kalendername" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Wählen Sie einen verfügbaren Namen." - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Ein Kalender mit diesem Namen existiert bereits. Sollten Sie fortfahren, werden die beiden Kalender zusammengeführt." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importieren" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Dialog schließen" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Neues Ereignis" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Termin öffnen" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Keine Kategorie ausgewählt" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "von" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "um" - -#: templates/settings.php:10 -msgid "General" -msgstr "Allgemein" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zeitzone" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Zeitzone automatisch aktualisieren" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Zeitformat" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24 Stunden" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12 Stunden" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Erster Wochentag" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Zwischenspeicher" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Lösche den Zwischenspeicher für wiederholende Veranstaltungen" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URLs" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "CalDAV-Kalender gleicht Adressen ab" - -#: templates/settings.php:87 -msgid "more info" -msgstr "weitere Informationen" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Primäre Adresse (Kontakt u.a.)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Nur lesende(r) iCalender-Link(s)" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Benutzer" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "Benutzer auswählen" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "editierbar" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Gruppen" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "Gruppen auswählen" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "Veröffentlichen" diff --git a/l10n/de/contacts.po b/l10n/de/contacts.po deleted file mode 100644 index 74a5bee2a88024216b8f493bc705fb03a9d4a9c8..0000000000000000000000000000000000000000 --- a/l10n/de/contacts.po +++ /dev/null @@ -1,970 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# , 2012. -# , 2012. -# , 2011. -# Jan-Christoph Borchardt , 2011. -# Jan-Christoph Borchardt , 2011. -# Marcel Kühlhorn , 2012. -# Melvin Gundlach , 2012. -# Michael Krell , 2012. -# , 2012. -# , 2012. -# , 2012. -# Phi Lieb <>, 2012. -# Susi <>, 2012. -# , 2012. -# Thomas Müller <>, 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 08:07+0000\n" -"Last-Translator: traductor \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "(De-)Aktivierung des Adressbuches fehlgeschlagen" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID ist nicht angegeben." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Adressbuch kann nicht mir leeren Namen aktualisiert werden." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Adressbuch aktualisieren fehlgeschlagen." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Keine ID angegeben" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Fehler beim Setzen der Prüfsumme." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Keine Kategorien zum Löschen ausgewählt." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Keine Adressbücher gefunden." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Keine Kontakte gefunden." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Erstellen des Kontakts fehlgeschlagen." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "Kein Name für das Element angegeben." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Konnte folgenden Kontakt nicht verarbeiten:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Feld darf nicht leer sein." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Mindestens eines der Adressfelder muss ausgefüllt werden." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Versuche doppelte Eigenschaft hinzuzufügen: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "IM-Parameter fehlt." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "IM unbekannt:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Die Information der vCard ist fehlerhaft. Bitte aktualisieren Sie die Seite." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Fehlende ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Fehler beim Einlesen der VCard für die ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "Keine Prüfsumme angegeben." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Die Informationen zur vCard sind fehlerhaft. Bitte Seite neu laden: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Irgendwas ist hier so richtig schief gelaufen. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Es wurde keine Kontakt-ID übermittelt." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Fehler beim Auslesen des Kontaktfotos." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Fehler beim Speichern der temporären Datei." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Das Kontaktfoto ist fehlerhaft." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Keine Kontakt-ID angegeben." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Kein Foto-Pfad übermittelt." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Datei existiert nicht: " - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Fehler beim Laden des Bildes." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Fehler beim Abruf des Kontakt-Objektes." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Fehler beim Abrufen der PHOTO-Eigenschaft." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Fehler beim Speichern des Kontaktes." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Fehler bei der Größenänderung des Bildes" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Fehler beim Zuschneiden des Bildes" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Fehler beim Erstellen des temporären Bildes" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Fehler beim Suchen des Bildes: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Ãœbertragen der Kontakte fehlgeschlagen." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Alles bestens, Datei erfolgreich übertragen." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Datei größer, als durch die upload_max_filesize Direktive in php.ini erlaubt" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Datei größer, als die MAX_FILE_SIZE Direktive erlaubt, die im HTML Formular spezifiziert ist" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Datei konnte nur teilweise übertragen werden" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Keine Datei konnte übertragen werden." - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Kein temporärer Ordner vorhanden" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Konnte das temporäre Bild nicht speichern:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Konnte das temporäre Bild nicht laden:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Keine Datei hochgeladen. Unbekannter Fehler" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Kontakte" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Diese Funktion steht leider noch nicht zur Verfügung" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Nicht verfügbar" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Konnte keine gültige Adresse abrufen." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Fehler" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "Sie besitzen nicht die erforderlichen Rechte, um Kontakte hinzuzufügen" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Bitte wählen Sie eines Ihrer Adressbücher aus." - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Berechtigungsfehler" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Dieses Feld darf nicht leer sein." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Konnte Elemente nicht serialisieren" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' wurde ohne Argumente aufgerufen. Bitte melden Sie dies auf bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Name ändern" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Keine Datei(en) zum Hochladen ausgewählt." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Die Datei, die Sie hochladen möchten, überschreitet die maximale Größe für Datei-Uploads auf diesem Server." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Fehler beim Laden des Profilbildes." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Wähle Typ" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Einige zum Löschen markiert Kontakte wurden noch nicht gelöscht. Bitte warten." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Möchten Sie diese Adressbücher zusammenführen?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Ergebnis: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importiert, " - -#: js/loader.js:49 -msgid " failed." -msgstr " fehlgeschlagen." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Der Anzeigename darf nicht leer sein." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Adressbuch nicht gefunden:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Dies ist nicht Ihr Adressbuch." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakt konnte nicht gefunden werden." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Arbeit" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Zuhause" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Andere" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Text" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Anruf" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mitteilung" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Geburtstag" - -#: lib/app.php:253 -msgid "Business" -msgstr "Geschäftlich" - -#: lib/app.php:254 -msgid "Call" -msgstr "Anruf" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Kunden" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Lieferant" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Feiertage" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ideen" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Reise" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubiläum" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Besprechung" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Persönlich" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projekte" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Fragen" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Geburtstag von {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "Sie besitzen nicht die erforderlichen Rechte, um diesen Kontakt zu bearbeiten." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "Sie besitzen nicht die erforderlichen Rechte, um diesen Kontakte zu löschen." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Kontakt hinzufügen" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importieren" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Einstellungen" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adressbücher" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Schließen" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Tastaturbefehle" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigation" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Nächster Kontakt aus der Liste" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Vorheriger Kontakt aus der Liste" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Ausklappen/Einklappen des Adressbuches" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Nächstes Adressbuch" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Vorheriges Adressbuch" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Aktionen" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Kontaktliste neu laden" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Neuen Kontakt hinzufügen" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Neues Adressbuch hinzufügen" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Aktuellen Kontakt löschen" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Ziehen Sie ein Foto zum Hochladen hierher" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Derzeitiges Foto löschen" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Foto ändern" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Neues Foto hochladen" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Foto aus der ownCloud auswählen" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format benutzerdefiniert, Kurzname, Vollname, Rückwärts oder Rückwärts mit Komma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Name ändern" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisation" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Löschen" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Spitzname" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Spitzname angeben" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Webseite" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Webseite aufrufen" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd.mm.yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Gruppen" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Gruppen mit Komma getrennt" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Gruppen editieren" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Bevorzugt" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Bitte eine gültige E-Mail-Adresse angeben." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "E-Mail-Adresse angeben" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "E-Mail an diese Adresse schreiben" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "E-Mail-Adresse löschen" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Telefonnummer angeben" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Telefonnummer löschen" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "IM löschen" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Auf Karte anzeigen" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Adressinformationen ändern" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Füge hier Notizen ein." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Feld hinzufügen" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-Mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Instant Messaging" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresse" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Notiz" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Kontakt herunterladen" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Kontakt löschen" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Das temporäre Bild wurde aus dem Cache gelöscht." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Adresse ändern" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Typ" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postfach" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Straßenanschrift" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Straße und Nummer" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Erweitert" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Wohnungsnummer usw." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Stadt" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Region" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Z.B. Staat oder Bezirk" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postleitzahl" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "PLZ" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Land" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adressbuch" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Höflichkeitspräfixe" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Frau" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Frau" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Herr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Herr" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Frau" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Vorname" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Zusätzliche Namen" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Familienname" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Höflichkeitssuffixe" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "Dr. Jur." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "Dr. med." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "DGOM" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "MChiro" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Hochwohlgeborenen" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Senior" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Kontaktdatei importieren" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Bitte Adressbuch auswählen" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Neues Adressbuch erstellen" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Name des neuen Adressbuchs" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Kontakte werden importiert" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Sie haben keine Kontakte im Adressbuch." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Kontakt hinzufügen" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Wähle Adressbuch" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Name eingeben" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Beschreibung eingeben" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV Sync-Adressen" - -#: templates/settings.php:3 -msgid "more info" -msgstr "mehr Informationen" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Primäre Adresse (für Kontakt o.ä.)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "CardDav-Link anzeigen" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Schreibgeschützten VCF-Link anzeigen" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Teilen" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Herunterladen" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Bearbeiten" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Neues Adressbuch" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Name" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Beschreibung" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Speichern" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Abbrechen" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Mehr..." diff --git a/l10n/de/core.po b/l10n/de/core.po index 27511ab1ee120d51c9e5966278e46db389503d6f..5171950e1ac8bebf8135cd7b726bcb4fc439c8e8 100644 --- a/l10n/de/core.po +++ b/l10n/de/core.po @@ -11,6 +11,7 @@ # Jan-Christoph Borchardt , 2011. # , 2012. # Marcel Kühlhorn , 2012. +# , 2012. # , 2012. # , 2012. # Phi Lieb <>, 2012. @@ -20,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 07:55+0000\n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 09:33+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -30,229 +31,262 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Der Anwendungsname wurde nicht angegeben." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Kategorie nicht angegeben." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Keine Kategorie hinzuzufügen?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Kategorie existiert bereits:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Objekttyp nicht angegeben." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID nicht angegeben." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Fehler beim Hinzufügen von %s zu den Favoriten." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Es wurde keine Kategorien zum Löschen ausgewählt." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Fehler beim Entfernen von %s von den Favoriten." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Einstellungen" -#: js/js.js:645 -msgid "January" -msgstr "Januar" +#: js/js.js:704 +msgid "seconds ago" +msgstr "Gerade eben" -#: js/js.js:645 -msgid "February" -msgstr "Februar" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "vor einer Minute" -#: js/js.js:645 -msgid "March" -msgstr "März" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "Vor {minutes} Minuten" -#: js/js.js:645 -msgid "April" -msgstr "April" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Vor einer Stunde" -#: js/js.js:645 -msgid "May" -msgstr "Mai" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "Vor {hours} Stunden" -#: js/js.js:645 -msgid "June" -msgstr "Juni" +#: js/js.js:709 +msgid "today" +msgstr "Heute" -#: js/js.js:646 -msgid "July" -msgstr "Juli" +#: js/js.js:710 +msgid "yesterday" +msgstr "Gestern" -#: js/js.js:646 -msgid "August" -msgstr "August" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "Vor {days} Tag(en)" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:712 +msgid "last month" +msgstr "Letzten Monat" -#: js/js.js:646 -msgid "October" -msgstr "Oktober" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "Vor {months} Monaten" -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:714 +msgid "months ago" +msgstr "Vor Monaten" -#: js/js.js:646 -msgid "December" -msgstr "Dezember" +#: js/js.js:715 +msgid "last year" +msgstr "Letztes Jahr" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "Vor Jahren" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Auswählen" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Abbrechen" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nein" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "OK" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Es wurde keine Kategorien zum Löschen ausgewählt." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Der Objekttyp ist nicht angegeben." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:493 -#: js/share.js:505 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Fehler" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Der App-Name ist nicht angegeben." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Die benötigte Datei {file} ist nicht installiert." + +#: js/share.js:124 msgid "Error while sharing" msgstr "Fehler beim Freigeben" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Fehler beim Aufheben der Freigabe" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "Fehler beim Ändern der Rechte" - -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Für Dich und folgende Gruppe freigegeben" +msgstr "Fehler beim Ändern der Rechte" -#: js/share.js:130 -msgid "by" -msgstr "mit" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "{owner} hat dies für Dich und die Gruppe {group} freigegeben" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Dies wurde mit dir geteilt von" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "{owner} hat dies für Dich freigegeben" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Freigeben für" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Ãœber einen Link freigeben" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Passwortschutz" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Passwort" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Setze ein Ablaufdatum" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Ablaufdatum" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Ãœber eine E-Mail freigeben:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Niemand gefunden" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Weiterverteilen ist nicht erlaubt" -#: js/share.js:250 -msgid "Shared in" -msgstr "Freigegeben in" - -#: js/share.js:250 -msgid "with" -msgstr "mit" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Für {user} in {item} freigegeben" + +#: js/share.js:292 msgid "Unshare" msgstr "Freigabe aufheben" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "kann bearbeiten" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "Zugriffskontrolle" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "erstellen" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "aktualisieren" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "löschen" -#: js/share.js:297 +#: js/share.js:318 msgid "share" -msgstr "teilen" +msgstr "freigeben" -#: js/share.js:321 js/share.js:480 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "Durch ein Passwort geschützt" -#: js/share.js:493 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "Fehler beim entfernen des Ablaufdatums" -#: js/share.js:505 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "Fehler beim Setzen des Ablaufdatums" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud-Passwort zurücksetzen" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" -msgstr "Nutzen Sie den nachfolgenden Link, um Ihr Passwort zurückzusetzen: {link}" +msgstr "Nutze den nachfolgenden Link, um Dein Passwort zurückzusetzen: {link}" #: lostpassword/templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "Du erhälst einen Link per E-Mail, um Dein Passwort zurückzusetzen." +msgstr "Du erhältst einen Link per E-Mail, um Dein Passwort zurückzusetzen." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Angefragt" +msgid "Reset email send." +msgstr "Die E-Mail zum Zurücksetzen wurde versendet." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Login fehlgeschlagen!" +msgid "Request failed!" +msgstr "Die Anfrage schlug fehl!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Benutzername" @@ -262,7 +296,7 @@ msgstr "Beantrage Zurücksetzung" #: lostpassword/templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "Ihr Passwort wurde zurückgesetzt." +msgstr "Dein Passwort wurde zurückgesetzt." #: lostpassword/templates/resetpassword.php:5 msgid "To login page" @@ -308,72 +342,187 @@ msgstr "Cloud nicht gefunden" msgid "Edit categories" msgstr "Kategorien bearbeiten" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Hinzufügen" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Sicherheitswarnung" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktiviere die PHP-Erweiterung für OpenSSL." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Konten zu übernehmen." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Dein Datenverzeichnis und deine Datein sind vielleicht vom Internet aus erreichbar. Die .htaccess Datei, die ownCloud verwendet, arbeitet nicht richtig. Wir schlagen Dir dringend vor, dass du deinen Webserver so konfigurierst, dass das Datenverzeichnis nicht länger erreichbar ist oder, dass du dein Datenverzeichnis aus dem Dokumenten-root des Webservers bewegst." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Administrator-Konto anlegen" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Fortgeschritten" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datenverzeichnis" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Datenbank einrichten" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "wird verwendet" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Datenbank-Benutzer" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Datenbank-Passwort" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Datenbank-Name" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Datenbank-Tablespace" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Datenbank-Host" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Installation abschließen" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Sonntag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Montag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Dienstag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Mittwoch" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Donnerstag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Freitag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Samstag" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Januar" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Februar" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "März" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Dezember" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "Web-Services unter Ihrer Kontrolle" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Abmelden" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatischer Login zurückgewiesen!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Wenn Du Dein Passwort nicht vor kurzem geändert hast, könnte Dein\nAccount kompromittiert sein!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Bitte ändere Dein Passwort, um Deinen Account wieder zu schützen." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Passwort vergessen?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "merken" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Einloggen" @@ -388,3 +537,17 @@ msgstr "Zurück" #: templates/part.pagenavi.php:20 msgid "next" msgstr "Weiter" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Sicherheitswarnung!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Bitte bestätige Dein Passwort.
            Aus Sicherheitsgründen wirst Du hierbei gebeten, Dein Passwort erneut einzugeben." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Bestätigen" diff --git a/l10n/de/files.po b/l10n/de/files.po index e2635a4a0b11b5339ac1dddbe262c4b36fd3c47f..c2615d7bf122f3b22d6699bb2afbc4115b2b31f8 100644 --- a/l10n/de/files.po +++ b/l10n/de/files.po @@ -5,7 +5,9 @@ # Translators: # , 2012. # , 2012. +# I Robot , 2012. # I Robot , 2012. +# Jan-Christoph Borchardt , 2012. # Jan-Christoph Borchardt , 2011. # Jan-Christoph Borchardt , 2011. # , 2012. @@ -22,9 +24,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 02:02+0200\n" -"PO-Revision-Date: 2012-09-27 22:31+0000\n" -"Last-Translator: Mirodin \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,195 +39,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Datei fehlerfrei hochgeladen." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Die Größe der hochzuladenden Datei überschreitet die upload_max_filesize-Richtlinie in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Die Datei wurde nur teilweise hochgeladen." -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Es wurde keine Datei hochgeladen." -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Temporärer Ordner fehlt." -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Fehler beim Schreiben auf die Festplatte" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Dateien" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Nicht mehr freigeben" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Löschen" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Umbenennen" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "ist bereits vorhanden" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} existiert bereits" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "Name vorschlagen" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "abbrechen" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "ersetzt" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} wurde ersetzt" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "rückgängig machen" -#: js/filelist.js:241 -msgid "with" -msgstr "mit" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{old_name} ersetzt durch {new_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "Freigabe von {files} aufgehoben" -#: js/filelist.js:273 -msgid "unshared" -msgstr "Nicht mehr freigegeben" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} gelöscht" -#: js/filelist.js:275 -msgid "deleted" -msgstr "gelöscht" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Erstelle ZIP-Datei. Dies kann eine Weile dauern." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist." +msgstr "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Fehler beim Upload" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Schließen" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Ausstehend" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "Eine Datei wird hoch geladen" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "Dateien werden hoch geladen" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} Dateien werden hochgeladen" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Upload abgebrochen." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen." +msgstr "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ungültiger Name: \"/\" ist nicht erlaubt." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Ungültiger Ordnername. Die Verwendung von \"Shared\" ist ownCloud vorbehalten." -#: js/files.js:668 -msgid "files scanned" -msgstr "Dateien gescannt" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} Dateien wurden gescannt" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "Fehler beim Scannen" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Name" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Größe" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Bearbeitet" -#: js/files.js:778 -msgid "folder" -msgstr "Ordner" - -#: js/files.js:780 -msgid "folders" -msgstr "Ordner" - -#: js/files.js:788 -msgid "file" -msgstr "Datei" - -#: js/files.js:790 -msgid "files" -msgstr "Dateien" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "Sekunden her" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 Ordner" -#: js/files.js:835 -msgid "minute ago" -msgstr "Minute her" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} Ordner" -#: js/files.js:836 -msgid "minutes ago" -msgstr "Minuten her" +#: js/files.js:824 +msgid "1 file" +msgstr "1 Datei" -#: js/files.js:839 -msgid "today" -msgstr "Heute" - -#: js/files.js:840 -msgid "yesterday" -msgstr "Gestern" - -#: js/files.js:841 -msgid "days ago" -msgstr "Tage her" - -#: js/files.js:842 -msgid "last month" -msgstr "Letzten Monat" - -#: js/files.js:844 -msgid "months ago" -msgstr "Monate her" - -#: js/files.js:845 -msgid "last year" -msgstr "Letztes Jahr" - -#: js/files.js:846 -msgid "years ago" -msgstr "Jahre her" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} Dateien" #: templates/admin.php:5 msgid "File handling" @@ -235,27 +208,27 @@ msgstr "Dateibehandlung" msgid "Maximum upload size" msgstr "Maximale Upload-Größe" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "maximal möglich:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Für Mehrfachdatei- und Ordnerdownloads benötigt:" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "ZIP-Download aktivieren" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 bedeutet unbegrenzt" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maximale Größe für ZIP-Dateien" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Speichern" @@ -263,52 +236,48 @@ msgstr "Speichern" msgid "New" msgstr "Neu" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Textdatei" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Ordner" -#: templates/index.php:11 -msgid "From url" -msgstr "Von einer URL" +#: templates/index.php:14 +msgid "From link" +msgstr "Von einem Link" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Hochladen" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Upload abbrechen" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Alles leer. Lade etwas hoch!" -#: templates/index.php:50 -msgid "Share" -msgstr "Teilen" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Herunterladen" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Upload zu groß" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Dateien werden gescannt, bitte warten." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Scanne" diff --git a/l10n/de/files_pdfviewer.po b/l10n/de/files_pdfviewer.po deleted file mode 100644 index a792a00b211c37b075b83eff422c435f98b08202..0000000000000000000000000000000000000000 --- a/l10n/de/files_pdfviewer.po +++ /dev/null @@ -1,43 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# I Robot , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:21+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "Zurück" - -#: js/viewer.js:23 -msgid "Next" -msgstr "Weiter" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index c3fe25897e1d4deb5841d33e021a00c880920632..b48b1dfa72bdad923f1bd0fb0b6a18e0ff337550 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 09:08+0000\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 21:36+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -33,12 +33,12 @@ msgstr "Absenden" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "%s hat den Ordner %s für dich freigegeben" +msgstr "%s hat den Ordner %s mit Dir geteilt" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "%s hat die Datei %s für dich freigegeben" +msgstr "%s hat die Datei %s mit Dir geteilt" #: templates/public.php:14 templates/public.php:30 msgid "Download" @@ -48,6 +48,6 @@ msgstr "Download" msgid "No preview available for" msgstr "Es ist keine Vorschau verfügbar für" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" msgstr "Web-Services unter Deiner Kontrolle" diff --git a/l10n/de/files_texteditor.po b/l10n/de/files_texteditor.po deleted file mode 100644 index ec6268275102442363372174e198291193cdabb6..0000000000000000000000000000000000000000 --- a/l10n/de/files_texteditor.po +++ /dev/null @@ -1,45 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# I Robot , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:01+0200\n" -"PO-Revision-Date: 2012-08-25 23:26+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "Regulärer Ausdruck" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "Speichern" - -#: js/editor.js:74 -msgid "Close" -msgstr "Schliessen" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "Speichern..." - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "Ein Fehler ist aufgetreten" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "Einige Änderungen wurde noch nicht gespeichert; klicken Sie hier um zurückzukehren." diff --git a/l10n/de/gallery.po b/l10n/de/gallery.po deleted file mode 100644 index ec9656fa93f0129f188055c00d14757d98cfee27..0000000000000000000000000000000000000000 --- a/l10n/de/gallery.po +++ /dev/null @@ -1,63 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Bartek , 2012. -# Marcel Kühlhorn , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-25 22:14+0200\n" -"PO-Revision-Date: 2012-07-25 20:05+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Bilder" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Galerie teilen" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Fehler:" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Interner Fehler" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Slideshow" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Zurück" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Bestätigung entfernen" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Soll das Album entfernt werden" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Albumname ändern" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Neuer Albumname" diff --git a/l10n/de/impress.po b/l10n/de/impress.po deleted file mode 100644 index bdf9e101c81cf1d418bf9259949c2141cf56522d..0000000000000000000000000000000000000000 --- a/l10n/de/impress.po +++ /dev/null @@ -1,23 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# I Robot , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:01+0200\n" -"PO-Revision-Date: 2012-08-25 23:27+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "Dokumentation" diff --git a/l10n/de/lib.po b/l10n/de/lib.po index edc1f6056a0ae5f4041530bec57ad0eb3c37c81f..8671e9349beac49f8dfb5d358a20cd870b1e5eb6 100644 --- a/l10n/de/lib.po +++ b/l10n/de/lib.po @@ -4,6 +4,9 @@ # # Translators: # , 2012. +# I Robot , 2012. +# Jan-Christoph Borchardt , 2012. +# Marcel Kühlhorn , 2012. # Phi Lieb <>, 2012. # , 2012. # , 2012. @@ -11,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 02:03+0200\n" -"PO-Revision-Date: 2012-10-01 23:58+0000\n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 09:35+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -45,19 +48,19 @@ msgstr "Apps" msgid "Admin" msgstr "Administrator" -#: files.php:327 +#: files.php:361 msgid "ZIP download is turned off." msgstr "Der ZIP-Download ist deaktiviert." -#: files.php:328 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Die Dateien müssen einzeln heruntergeladen werden." -#: files.php:328 files.php:353 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Zurück zu \"Dateien\"" -#: files.php:352 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Die gewählten Dateien sind zu groß, um eine ZIP-Datei zu erstellen." @@ -65,7 +68,7 @@ msgstr "Die gewählten Dateien sind zu groß, um eine ZIP-Datei zu erstellen." msgid "Application is not enabled" msgstr "Die Anwendung ist nicht aktiviert" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Authentifizierungs-Fehler" @@ -73,57 +76,84 @@ msgstr "Authentifizierungs-Fehler" msgid "Token expired. Please reload page." msgstr "Token abgelaufen. Bitte lade die Seite neu." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Dateien" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Text" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Bilder" + +#: template.php:103 msgid "seconds ago" -msgstr "Vor wenigen Sekunden" +msgstr "Gerade eben" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "Vor einer Minute" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "Vor %d Minuten" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "Vor einer Stunde" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "Vor %d Stunden" + +#: template.php:108 msgid "today" msgstr "Heute" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "Gestern" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "Vor %d Tag(en)" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "Letzten Monat" -#: template.php:96 -msgid "months ago" -msgstr "Vor Monaten" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "Vor %d Monaten" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "Letztes Jahr" -#: template.php:98 +#: template.php:114 msgid "years ago" -msgstr "Vor Jahren" +msgstr "Vor wenigen Jahren" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s ist verfügbar. Weitere Informationen" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "aktuell" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "Die Update-Ãœberprüfung ist ausgeschaltet" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Die Kategorie \"%s\" konnte nicht gefunden werden." diff --git a/l10n/de/media.po b/l10n/de/media.po deleted file mode 100644 index 4cb691b5ffd77a7965628342c485a9404cfe8091..0000000000000000000000000000000000000000 --- a/l10n/de/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -# Jan-Christoph Borchardt , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: German (http://www.transifex.net/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musik" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Abspielen" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pause" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Vorheriges" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Nächstes" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Ton aus" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Ton an" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Sammlung erneut scannen" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Künstler" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titel" diff --git a/l10n/de/settings.po b/l10n/de/settings.po index a4dd374031815bd04fee78f408b17aeb274d4c90..4d80da3751f8068a96b606a7a66e099e430fb06d 100644 --- a/l10n/de/settings.po +++ b/l10n/de/settings.po @@ -6,12 +6,15 @@ # , 2011, 2012. # , 2012. # , 2012. +# I Robot , 2012. # I Robot , 2012. # Jan-Christoph Borchardt , 2011. # Jan T , 2012. # , 2012. # , 2012. # Marcel Kühlhorn , 2012. +# , 2012. +# , 2012. # , 2012. # , 2012. # Phi Lieb <>, 2012. @@ -21,9 +24,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:05+0200\n" -"PO-Revision-Date: 2012-10-12 22:12+0000\n" -"Last-Translator: Mirodin \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 13:54+0000\n" +"Last-Translator: AndryXY \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,70 +34,73 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Die Liste der Anwendungen im Store konnte nicht geladen werden." -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Fehler bei der Anmeldung" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Gruppe existiert bereits" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Gruppe konnte nicht angelegt werden" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "App konnte nicht aktiviert werden." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-Mail Adresse gespeichert" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ungültige E-Mail Adresse" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID geändert" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ungültige Anfrage" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Gruppe konnte nicht gelöscht werden" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Fehler bei der Anmeldung" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Benutzer konnte nicht gelöscht werden" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Sprache geändert" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Administratoren können sich nicht selbst aus der Admin-Gruppe löschen." + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Deaktivieren" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Aktivieren" @@ -102,96 +108,9 @@ msgstr "Aktivieren" msgid "Saving..." msgstr "Speichern..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" -msgstr "Deutsch" - -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Sicherheitshinweis" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ihr Datenverzeichnis ist möglicher Weise aus dem Internet erreichbar. Die .htaccess-Datei von ownCloud funktioniert nicht. Wir raten Ihnen dringend, dass Sie Ihren Webserver dahingehend konfigurieren, dass Ihr Datenverzeichnis nicht länger aus dem Internet erreichbar ist, oder Sie verschieben das Datenverzeichnis außerhalb des Wurzelverzeichnisses des Webservers." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron-Jobs" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Führe eine Aufgabe bei jeder geladenen Seite aus." - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php ist bei einem Webcron-Dienst registriert. Ruf die Seite cron.php im ownCloud-Root minütlich per HTTP auf." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Benutze den System-Crondienst. Bitte ruf die cron.php im ownCloud-Ordner über einen System-Cronjob minütlich auf." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Freigabe" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Freigabe-API aktivieren" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Erlaubt Anwendungen, die Freigabe-API zu nutzen" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Links erlauben" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Erlaube Nutzern, Dateien mithilfe von Links öffentlich zu teilen" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Erneutes Teilen erlauben" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Erlaubt Nutzern, Dateien die mit ihnen geteilt wurden, erneut zu teilen" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Erlaubet Nutzern mit jedem zu Teilen" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Erlaubet Nutzern nur das Teilen in ihrer Gruppe" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mehr" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Entwickelt von der ownCloud-Community, der Quellcode ist unter der AGPL lizenziert." +msgstr "Deutsch (Persönlich)" #: templates/apps.php:10 msgid "Add your App" @@ -225,21 +144,21 @@ msgstr "Große Dateien verwalten" msgid "Ask a question" msgstr "Stelle eine Frage" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Probleme bei der Verbindung zur Hilfe-Datenbank." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Datenbank direkt besuchen." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Antwort" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "Du verwendest %s der verfügbaren %s" #: templates/personal.php:12 @@ -296,7 +215,17 @@ msgstr "Hilf bei der Ãœbersetzung" #: templates/personal.php:51 msgid "use this address to connect to your ownCloud in your file manager" -msgstr "Benutzen Sie diese Adresse, um Ihre ownCloud mit Ihrem Dateimanager zu verbinden." +msgstr "Verwende diese Adresse, um Deine ownCloud mit Deinem Dateimanager zu verbinden." + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Entwickelt von der ownCloud-Community, der Quellcode ist unter der AGPL lizenziert." #: templates/users.php:21 templates/users.php:76 msgid "Name" diff --git a/l10n/de/tasks.po b/l10n/de/tasks.po deleted file mode 100644 index 2ad6b64b48756a375113dfb4dfeb341695f35e50..0000000000000000000000000000000000000000 --- a/l10n/de/tasks.po +++ /dev/null @@ -1,109 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 10:09+0000\n" -"Last-Translator: traductor \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Datum/Uhrzeit ungültig" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Aufgaben" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Keine Kategorie" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Nicht angegeben" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1 = am höchsten" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5 = Durchschnitt" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9 = am niedrigsten" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Leere Zusammenfassung" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Ungültige Prozent abgeschlossen" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Falsche Priorität" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Aufgabe hinzufügen" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Nach Fälligkeit sortieren" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Nach Kategorie sortieren " - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Nach Fertigstellung sortieren" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Nach Ort sortieren" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Nach Priorität sortieren" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Nach Label sortieren" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Lade Aufgaben ..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Wichtig" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Mehr" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Weniger" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Löschen" diff --git a/l10n/de/user_migrate.po b/l10n/de/user_migrate.po deleted file mode 100644 index aada5dbfb256607934fcacec34398b73a61a14b9..0000000000000000000000000000000000000000 --- a/l10n/de/user_migrate.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 10:16+0000\n" -"Last-Translator: traductor \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Export" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Beim Export der Datei ist etwas schiefgegangen." - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Es ist ein Fehler aufgetreten." - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Ihr Konto exportieren" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Eine komprimierte Datei wird erzeugt, die Ihr ownCloud-Konto enthält." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Konto importieren" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "Zip-Archiv mit Benutzerdaten" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importieren" diff --git a/l10n/de/user_openid.po b/l10n/de/user_openid.po deleted file mode 100644 index 9f5a660af87f68546a422a10f66ed2629e29d02d..0000000000000000000000000000000000000000 --- a/l10n/de/user_openid.po +++ /dev/null @@ -1,57 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 10:17+0000\n" -"Last-Translator: traductor \n" -"Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Dies ist ein OpenID-Server-Endpunkt. Weitere Informationen finden Sie unter:" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identität: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Bereich: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Benutzer: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Anmelden" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Fehler: Kein Benutzer ausgewählt" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "Sie können sich auf anderen Seiten mit dieser Adresse authentifizieren." - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Authorisierter OpenID-Anbieter" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Ihre Adresse bei Wordpress, Identi.ca, …" diff --git a/l10n/de/files_odfviewer.po b/l10n/de/user_webdavauth.po similarity index 59% rename from l10n/de/files_odfviewer.po rename to l10n/de/user_webdavauth.po index 8d81b0d266eab293dccc544fbfad3e22e9d82272..8a1620f09d19af0e6c5aea8258f9bacfdd1ae970 100644 --- a/l10n/de/files_odfviewer.po +++ b/l10n/de/user_webdavauth.po @@ -3,21 +3,22 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# I Robot , 2012. +# , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:21+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-14 00:02+0100\n" +"PO-Revision-Date: 2012-11-13 18:15+0000\n" +"Last-Translator: Mirodin \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "Schliessen" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po new file mode 100644 index 0000000000000000000000000000000000000000..5f55bdc4b1e6bbf231bfcba99b0835a25a47bb9d --- /dev/null +++ b/l10n/de_DE/core.po @@ -0,0 +1,553 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2011-2012. +# , 2011. +# , 2012. +# , 2012. +# , 2011. +# I Robot , 2012. +# Jan-Christoph Borchardt , 2011. +# , 2012. +# Marcel Kühlhorn , 2012. +# , 2012. +# , 2012. +# Phi Lieb <>, 2012. +# , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 09:33+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Kategorie nicht angegeben." + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "Keine Kategorie hinzuzufügen?" + +#: ajax/vcategories/add.php:37 +msgid "This category already exists: " +msgstr "Kategorie existiert bereits:" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Objekttyp nicht angegeben." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID nicht angegeben." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Fehler beim Hinzufügen von %s zu den Favoriten." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Es wurden keine Kategorien zum Löschen ausgewählt." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Fehler beim Entfernen von %s von den Favoriten." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +msgid "Settings" +msgstr "Einstellungen" + +#: js/js.js:704 +msgid "seconds ago" +msgstr "Gerade eben" + +#: js/js.js:705 +msgid "1 minute ago" +msgstr "Vor 1 Minute" + +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "Vor {minutes} Minuten" + +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Vor einer Stunde" + +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "Vor {hours} Stunden" + +#: js/js.js:709 +msgid "today" +msgstr "Heute" + +#: js/js.js:710 +msgid "yesterday" +msgstr "Gestern" + +#: js/js.js:711 +msgid "{days} days ago" +msgstr "Vor {days} Tag(en)" + +#: js/js.js:712 +msgid "last month" +msgstr "Letzten Monat" + +#: js/js.js:713 +msgid "{months} months ago" +msgstr "Vor {months} Monaten" + +#: js/js.js:714 +msgid "months ago" +msgstr "Vor Monaten" + +#: js/js.js:715 +msgid "last year" +msgstr "Letztes Jahr" + +#: js/js.js:716 +msgid "years ago" +msgstr "Vor Jahren" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "Auswählen" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "Abbrechen" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "Nein" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "Ja" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "OK" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Der Objekttyp ist nicht angegeben." + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 +msgid "Error" +msgstr "Fehler" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Der App-Name ist nicht angegeben." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Die benötigte Datei {file} ist nicht installiert." + +#: js/share.js:124 +msgid "Error while sharing" +msgstr "Fehler bei der Freigabe" + +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "Fehler bei der Aufhebung der Freigabe" + +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "Fehler bei der Änderung der Rechte" + +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Durch {owner} für Sie und die Gruppe {group} freigegeben." + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Durch {owner} für Sie freigegeben." + +#: js/share.js:158 +msgid "Share with" +msgstr "Freigeben für" + +#: js/share.js:163 +msgid "Share with link" +msgstr "Ãœber einen Link freigeben" + +#: js/share.js:164 +msgid "Password protect" +msgstr "Passwortschutz" + +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 +msgid "Password" +msgstr "Passwort" + +#: js/share.js:173 +msgid "Set expiration date" +msgstr "Setze ein Ablaufdatum" + +#: js/share.js:174 +msgid "Expiration date" +msgstr "Ablaufdatum" + +#: js/share.js:206 +msgid "Share via email:" +msgstr "Mittels einer E-Mail freigeben:" + +#: js/share.js:208 +msgid "No people found" +msgstr "Niemand gefunden" + +#: js/share.js:235 +msgid "Resharing is not allowed" +msgstr "Das Weiterverteilen ist nicht erlaubt" + +#: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Freigegeben in {item} von {user}" + +#: js/share.js:292 +msgid "Unshare" +msgstr "Freigabe aufheben" + +#: js/share.js:304 +msgid "can edit" +msgstr "kann bearbeiten" + +#: js/share.js:306 +msgid "access control" +msgstr "Zugriffskontrolle" + +#: js/share.js:309 +msgid "create" +msgstr "erstellen" + +#: js/share.js:312 +msgid "update" +msgstr "aktualisieren" + +#: js/share.js:315 +msgid "delete" +msgstr "löschen" + +#: js/share.js:318 +msgid "share" +msgstr "freigeben" + +#: js/share.js:343 js/share.js:514 js/share.js:516 +msgid "Password protected" +msgstr "Durch ein Passwort geschützt" + +#: js/share.js:527 +msgid "Error unsetting expiration date" +msgstr "Fehler beim Entfernen des Ablaufdatums" + +#: js/share.js:539 +msgid "Error setting expiration date" +msgstr "Fehler beim Setzen des Ablaufdatums" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "ownCloud-Passwort zurücksetzen" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "Nutzen Sie den nachfolgenden Link, um Ihr Passwort zurückzusetzen: {link}" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen." + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "E-Mail zum Zurücksetzen des Passworts gesendet." + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "Die Anfrage schlug fehl!" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 +msgid "Username" +msgstr "Benutzername" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "Beantrage Zurücksetzung" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "Ihr Passwort wurde zurückgesetzt." + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "Zur Login-Seite" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "Neues Passwort" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "Passwort zurücksetzen" + +#: strings.php:5 +msgid "Personal" +msgstr "Persönlich" + +#: strings.php:6 +msgid "Users" +msgstr "Benutzer" + +#: strings.php:7 +msgid "Apps" +msgstr "Anwendungen" + +#: strings.php:8 +msgid "Admin" +msgstr "Admin" + +#: strings.php:9 +msgid "Help" +msgstr "Hilfe" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "Zugriff verboten" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "Cloud nicht gefunden" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "Kategorien bearbeiten" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "Hinzufügen" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Sicherheitshinweis" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktivieren Sie die PHP-Erweiterung für OpenSSL." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage, die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Ihr Konto zu übernehmen." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich über das Internet erreichbar. Die von ownCloud bereitgestellte .htaccess Datei funktioniert nicht. Wir empfehlen Ihnen dringend, Ihren Webserver so zu konfigurieren, dass das Datenverzeichnis nicht mehr über das Internet erreichbar ist. Alternativ können Sie auch das Datenverzeichnis aus dem Dokumentenverzeichnis des Webservers verschieben." + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "Administrator-Konto anlegen" + +#: templates/installation.php:48 +msgid "Advanced" +msgstr "Fortgeschritten" + +#: templates/installation.php:50 +msgid "Data folder" +msgstr "Datenverzeichnis" + +#: templates/installation.php:57 +msgid "Configure the database" +msgstr "Datenbank einrichten" + +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 +msgid "will be used" +msgstr "wird verwendet" + +#: templates/installation.php:105 +msgid "Database user" +msgstr "Datenbank-Benutzer" + +#: templates/installation.php:109 +msgid "Database password" +msgstr "Datenbank-Passwort" + +#: templates/installation.php:113 +msgid "Database name" +msgstr "Datenbank-Name" + +#: templates/installation.php:121 +msgid "Database tablespace" +msgstr "Datenbank-Tablespace" + +#: templates/installation.php:127 +msgid "Database host" +msgstr "Datenbank-Host" + +#: templates/installation.php:132 +msgid "Finish setup" +msgstr "Installation abschließen" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Sonntag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Montag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Dienstag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Mittwoch" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Donnerstag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Freitag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Samstag" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Januar" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Februar" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "März" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Dezember" + +#: templates/layout.guest.php:42 +msgid "web services under your control" +msgstr "Web-Services unter Ihrer Kontrolle" + +#: templates/layout.user.php:45 +msgid "Log out" +msgstr "Abmelden" + +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatische Anmeldung verweigert." + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Wenn Sie Ihr Passwort nicht vor kurzem geändert haben, könnte Ihr\nAccount kompromittiert sein!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Bitte ändern Sie Ihr Passwort, um Ihr Konto wieder zu sichern." + +#: templates/login.php:15 +msgid "Lost your password?" +msgstr "Passwort vergessen?" + +#: templates/login.php:27 +msgid "remember" +msgstr "merken" + +#: templates/login.php:28 +msgid "Log in" +msgstr "Einloggen" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "Sie wurden abgemeldet." + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "Zurück" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "Weiter" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Sicherheitshinweis!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Bitte überprüfen Sie Ihr Passwort.
            Aus Sicherheitsgründen werden Sie gelegentlich aufgefordert, Ihr Passwort erneut einzugeben." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Ãœberprüfen" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po new file mode 100644 index 0000000000000000000000000000000000000000..b991af5cb125a9ef22b835a9b8a02bcdf2daba92 --- /dev/null +++ b/l10n/de_DE/files.po @@ -0,0 +1,284 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +# , 2012. +# , 2012. +# I Robot , 2012. +# I Robot , 2012. +# Jan-Christoph Borchardt , 2012. +# Jan-Christoph Borchardt , 2011. +# Jan-Christoph Borchardt , 2011. +# , 2012. +# , 2012. +# Marcel Kühlhorn , 2012. +# Michael Krell , 2012. +# , 2012. +# , 2012. +# Phi Lieb <>, 2012. +# , 2012. +# Thomas Müller <>, 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen." + +#: ajax/upload.php:21 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:23 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde" + +#: ajax/upload.php:25 +msgid "The uploaded file was only partially uploaded" +msgstr "Die Datei wurde nur teilweise hochgeladen." + +#: ajax/upload.php:26 +msgid "No file was uploaded" +msgstr "Es wurde keine Datei hochgeladen." + +#: ajax/upload.php:27 +msgid "Missing a temporary folder" +msgstr "Der temporäre Ordner fehlt." + +#: ajax/upload.php:28 +msgid "Failed to write to disk" +msgstr "Fehler beim Schreiben auf die Festplatte" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "Dateien" + +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 +msgid "Unshare" +msgstr "Nicht mehr freigeben" + +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 +msgid "Delete" +msgstr "Löschen" + +#: js/fileactions.js:181 +msgid "Rename" +msgstr "Umbenennen" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} existiert bereits" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "replace" +msgstr "ersetzen" + +#: js/filelist.js:201 +msgid "suggest name" +msgstr "Name vorschlagen" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "cancel" +msgstr "abbrechen" + +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} wurde ersetzt" + +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 +msgid "undo" +msgstr "rückgängig machen" + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{old_name} wurde ersetzt durch {new_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "Freigabe für {files} beendet" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} gelöscht" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig." + +#: js/files.js:183 +msgid "generating ZIP-file, it may take some time." +msgstr "Erstelle ZIP-Datei. Dies kann eine Weile dauern." + +#: js/files.js:218 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist." + +#: js/files.js:218 +msgid "Upload Error" +msgstr "Fehler beim Upload" + +#: js/files.js:235 +msgid "Close" +msgstr "Schließen" + +#: js/files.js:254 js/files.js:368 js/files.js:398 +msgid "Pending" +msgstr "Ausstehend" + +#: js/files.js:274 +msgid "1 file uploading" +msgstr "1 Datei wird hochgeladen" + +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} Dateien wurden hochgeladen" + +#: js/files.js:349 js/files.js:382 +msgid "Upload cancelled." +msgstr "Upload abgebrochen." + +#: js/files.js:451 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen." + +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Ungültiger Ordnername. Die Verwendung von \"Shared\" ist ownCloud vorbehalten." + +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} Dateien wurden gescannt" + +#: js/files.js:712 +msgid "error while scanning" +msgstr "Fehler beim Scannen" + +#: js/files.js:785 templates/index.php:65 +msgid "Name" +msgstr "Name" + +#: js/files.js:786 templates/index.php:76 +msgid "Size" +msgstr "Größe" + +#: js/files.js:787 templates/index.php:78 +msgid "Modified" +msgstr "Bearbeitet" + +#: js/files.js:814 +msgid "1 folder" +msgstr "1 Ordner" + +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} Ordner" + +#: js/files.js:824 +msgid "1 file" +msgstr "1 Datei" + +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} Dateien" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "Dateibehandlung" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "Maximale Upload-Größe" + +#: templates/admin.php:9 +msgid "max. possible: " +msgstr "maximal möglich:" + +#: templates/admin.php:12 +msgid "Needed for multi-file and folder downloads." +msgstr "Für Mehrfachdatei- und Ordnerdownloads benötigt:" + +#: templates/admin.php:14 +msgid "Enable ZIP-download" +msgstr "ZIP-Download aktivieren" + +#: templates/admin.php:17 +msgid "0 is unlimited" +msgstr "0 bedeutet unbegrenzt" + +#: templates/admin.php:19 +msgid "Maximum input size for ZIP files" +msgstr "Maximale Größe für ZIP-Dateien" + +#: templates/admin.php:23 +msgid "Save" +msgstr "Speichern" + +#: templates/index.php:7 +msgid "New" +msgstr "Neu" + +#: templates/index.php:10 +msgid "Text file" +msgstr "Textdatei" + +#: templates/index.php:12 +msgid "Folder" +msgstr "Ordner" + +#: templates/index.php:14 +msgid "From link" +msgstr "Von einem Link" + +#: templates/index.php:35 +msgid "Upload" +msgstr "Hochladen" + +#: templates/index.php:43 +msgid "Cancel upload" +msgstr "Upload abbrechen" + +#: templates/index.php:57 +msgid "Nothing in here. Upload something!" +msgstr "Alles leer. Bitte laden Sie etwas hoch!" + +#: templates/index.php:71 +msgid "Download" +msgstr "Herunterladen" + +#: templates/index.php:103 +msgid "Upload too large" +msgstr "Der Upload ist zu groß" + +#: templates/index.php:105 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server." + +#: templates/index.php:110 +msgid "Files are being scanned, please wait." +msgstr "Dateien werden gescannt, bitte warten." + +#: templates/index.php:113 +msgid "Current scanning" +msgstr "Scanne" diff --git a/l10n/de_DE/files_encryption.po b/l10n/de_DE/files_encryption.po new file mode 100644 index 0000000000000000000000000000000000000000..52f9f34a774f3f51394df8784f37bbf4ee1e6916 --- /dev/null +++ b/l10n/de_DE/files_encryption.po @@ -0,0 +1,35 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 21:33+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:3 +msgid "Encryption" +msgstr "Verschlüsselung" + +#: templates/settings.php:4 +msgid "Exclude the following file types from encryption" +msgstr "Die folgenden Dateitypen von der Verschlüsselung ausnehmen" + +#: templates/settings.php:5 +msgid "None" +msgstr "Keine" + +#: templates/settings.php:10 +msgid "Enable Encryption" +msgstr "Verschlüsselung aktivieren" diff --git a/l10n/de_DE/files_external.po b/l10n/de_DE/files_external.po new file mode 100644 index 0000000000000000000000000000000000000000..f17be8ed3d89f3a2d4fe9786d4160cafd8e714c9 --- /dev/null +++ b/l10n/de_DE/files_external.po @@ -0,0 +1,110 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +# I Robot , 2012. +# , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 21:34+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "Zugriff gestattet" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "Fehler beim Einrichten von Dropbox" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "Zugriff gestatten" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "Bitte alle notwendigen Felder füllen" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "Bitte tragen Sie einen gültigen Dropbox-App-Key mit Secret ein." + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "Fehler beim Einrichten von Google Drive" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "Externer Speicher" + +#: templates/settings.php:7 templates/settings.php:19 +msgid "Mount point" +msgstr "Mount-Point" + +#: templates/settings.php:8 +msgid "Backend" +msgstr "Backend" + +#: templates/settings.php:9 +msgid "Configuration" +msgstr "Konfiguration" + +#: templates/settings.php:10 +msgid "Options" +msgstr "Optionen" + +#: templates/settings.php:11 +msgid "Applicable" +msgstr "Zutreffend" + +#: templates/settings.php:23 +msgid "Add mount point" +msgstr "Mount-Point hinzufügen" + +#: templates/settings.php:54 templates/settings.php:62 +msgid "None set" +msgstr "Nicht definiert" + +#: templates/settings.php:63 +msgid "All Users" +msgstr "Alle Benutzer" + +#: templates/settings.php:64 +msgid "Groups" +msgstr "Gruppen" + +#: templates/settings.php:69 +msgid "Users" +msgstr "Benutzer" + +#: templates/settings.php:77 templates/settings.php:107 +msgid "Delete" +msgstr "Löschen" + +#: templates/settings.php:87 +msgid "Enable User External Storage" +msgstr "Externen Speicher für Benutzer aktivieren" + +#: templates/settings.php:88 +msgid "Allow users to mount their own external storage" +msgstr "Erlaubt Benutzern ihre eigenen externen Speicher einzubinden" + +#: templates/settings.php:99 +msgid "SSL root certificates" +msgstr "SSL-Root-Zertifikate" + +#: templates/settings.php:113 +msgid "Import Root Certificate" +msgstr "Root-Zertifikate importieren" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po new file mode 100644 index 0000000000000000000000000000000000000000..c1d9610ac763311f86cabfc7be8c973cbd9a7bf7 --- /dev/null +++ b/l10n/de_DE/files_sharing.po @@ -0,0 +1,53 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +# I Robot , 2012. +# , 2012. +# , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 21:36+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "Passwort" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "Absenden" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "%s hat den Ordner %s mit Ihnen geteilt" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "%s hat die Datei %s mit Ihnen geteilt" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "Download" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "Es ist keine Vorschau verfügbar für" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "Web-Services unter Ihrer Kontrolle" diff --git a/l10n/de_DE/files_versions.po b/l10n/de_DE/files_versions.po new file mode 100644 index 0000000000000000000000000000000000000000..c9f8e08c2e549df2c932b95170b219b3d9c9a55a --- /dev/null +++ b/l10n/de_DE/files_versions.po @@ -0,0 +1,47 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +# I Robot , 2012. +# , 2012. +# , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 21:36+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/settings-personal.js:31 templates/settings-personal.php:10 +msgid "Expire all versions" +msgstr "Alle Versionen löschen" + +#: js/versions.js:16 +msgid "History" +msgstr "Historie" + +#: templates/settings-personal.php:4 +msgid "Versions" +msgstr "Versionen" + +#: templates/settings-personal.php:7 +msgid "This will delete all existing backup versions of your files" +msgstr "Dies löscht alle vorhandenen Sicherungsversionen Ihrer Dateien." + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "Dateiversionierung" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "Aktivieren" diff --git a/l10n/de_DE/lib.po b/l10n/de_DE/lib.po new file mode 100644 index 0000000000000000000000000000000000000000..66fe1bc1e032b2d9921f9c47ebb6251f24f24eb7 --- /dev/null +++ b/l10n/de_DE/lib.po @@ -0,0 +1,159 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +# , 2012. +# Jan-Christoph Borchardt , 2012. +# Marcel Kühlhorn , 2012. +# Phi Lieb <>, 2012. +# , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 09:34+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app.php:285 +msgid "Help" +msgstr "Hilfe" + +#: app.php:292 +msgid "Personal" +msgstr "Persönlich" + +#: app.php:297 +msgid "Settings" +msgstr "Einstellungen" + +#: app.php:302 +msgid "Users" +msgstr "Benutzer" + +#: app.php:309 +msgid "Apps" +msgstr "Apps" + +#: app.php:311 +msgid "Admin" +msgstr "Administrator" + +#: files.php:361 +msgid "ZIP download is turned off." +msgstr "Der ZIP-Download ist deaktiviert." + +#: files.php:362 +msgid "Files need to be downloaded one by one." +msgstr "Die Dateien müssen einzeln heruntergeladen werden." + +#: files.php:362 files.php:387 +msgid "Back to Files" +msgstr "Zurück zu \"Dateien\"" + +#: files.php:386 +msgid "Selected files too large to generate zip file." +msgstr "Die gewählten Dateien sind zu groß, um eine ZIP-Datei zu erstellen." + +#: json.php:28 +msgid "Application is not enabled" +msgstr "Die Anwendung ist nicht aktiviert" + +#: json.php:39 json.php:64 json.php:77 json.php:89 +msgid "Authentication error" +msgstr "Authentifizierungs-Fehler" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "Token abgelaufen. Bitte laden Sie die Seite neu." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Dateien" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Text" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Bilder" + +#: template.php:103 +msgid "seconds ago" +msgstr "Gerade eben" + +#: template.php:104 +msgid "1 minute ago" +msgstr "Vor einer Minute" + +#: template.php:105 +#, php-format +msgid "%d minutes ago" +msgstr "Vor %d Minuten" + +#: template.php:106 +msgid "1 hour ago" +msgstr "Vor einer Stunde" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "Vor %d Stunden" + +#: template.php:108 +msgid "today" +msgstr "Heute" + +#: template.php:109 +msgid "yesterday" +msgstr "Gestern" + +#: template.php:110 +#, php-format +msgid "%d days ago" +msgstr "Vor %d Tag(en)" + +#: template.php:111 +msgid "last month" +msgstr "Letzten Monat" + +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "Vor %d Monaten" + +#: template.php:113 +msgid "last year" +msgstr "Letztes Jahr" + +#: template.php:114 +msgid "years ago" +msgstr "Vor wenigen Jahren" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "%s ist verfügbar. Weitere Informationen" + +#: updater.php:77 +msgid "up to date" +msgstr "aktuell" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "Die Update-Ãœberprüfung ist ausgeschaltet" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Die Kategorie \"%s\" konnte nicht gefunden werden." diff --git a/l10n/de_DE/settings.po b/l10n/de_DE/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..064c038d5768c2fb37a9ff7dc806c239156c0730 --- /dev/null +++ b/l10n/de_DE/settings.po @@ -0,0 +1,263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2011-2012. +# , 2012. +# , 2012. +# I Robot , 2012. +# I Robot , 2012. +# Jan-Christoph Borchardt , 2011. +# Jan T , 2012. +# , 2012. +# , 2012. +# Marcel Kühlhorn , 2012. +# , 2012. +# , 2012. +# Phi Lieb <>, 2012. +# , 2012. +# , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 21:41+0000\n" +"Last-Translator: seeed \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "Die Liste der Anwendungen im Store konnte nicht geladen werden." + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "Die Gruppe existiert bereits" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "Die Gruppe konnte nicht angelegt werden" + +#: ajax/enableapp.php:12 +msgid "Could not enable app. " +msgstr "Die Anwendung konnte nicht aktiviert werden." + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "E-Mail-Adresse gespeichert" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "Ungültige E-Mail-Adresse" + +#: ajax/openid.php:13 +msgid "OpenID Changed" +msgstr "OpenID geändert" + +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "Ungültige Anfrage" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "Die Gruppe konnte nicht gelöscht werden" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Fehler bei der Anmeldung" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "Der Benutzer konnte nicht gelöscht werden" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "Sprache geändert" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Administratoren können sich nicht selbst aus der admin-Gruppe löschen" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden" + +#: js/apps.js:28 js/apps.js:67 +msgid "Disable" +msgstr "Deaktivieren" + +#: js/apps.js:28 js/apps.js:55 +msgid "Enable" +msgstr "Aktivieren" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "Speichern..." + +#: personal.php:42 personal.php:43 +msgid "__language_name__" +msgstr "Deutsch (Förmlich: Sie)" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "Fügen Sie Ihre Anwendung hinzu" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "Weitere Anwendungen" + +#: templates/apps.php:27 +msgid "Select an App" +msgstr "Wählen Sie eine Anwendung aus" + +#: templates/apps.php:31 +msgid "See application page at apps.owncloud.com" +msgstr "Weitere Anwendungen finden Sie auf apps.owncloud.com" + +#: templates/apps.php:32 +msgid "-licensed by " +msgstr "-lizenziert von " + +#: templates/help.php:9 +msgid "Documentation" +msgstr "Dokumentation" + +#: templates/help.php:10 +msgid "Managing Big Files" +msgstr "Große Dateien verwalten" + +#: templates/help.php:11 +msgid "Ask a question" +msgstr "Stellen Sie eine Frage" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "Probleme bei der Verbindung zur Hilfe-Datenbank." + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "Datenbank direkt besuchen." + +#: templates/help.php:31 +msgid "Answer" +msgstr "Antwort" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "Sie verwenden %s der verfügbaren %s" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "Desktop- und mobile Clients für die Synchronisation" + +#: templates/personal.php:13 +msgid "Download" +msgstr "Download" + +#: templates/personal.php:19 +msgid "Your password was changed" +msgstr "Ihr Passwort wurde geändert." + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "Das Passwort konnte nicht geändert werden" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "Aktuelles Passwort" + +#: templates/personal.php:22 +msgid "New password" +msgstr "Neues Passwort" + +#: templates/personal.php:23 +msgid "show" +msgstr "zeigen" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "Passwort ändern" + +#: templates/personal.php:30 +msgid "Email" +msgstr "E-Mail" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "Ihre E-Mail-Adresse" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "Bitte tragen Sie eine E-Mail-Adresse ein, um die Passwort-Wiederherstellung zu aktivieren." + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "Sprache" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "Helfen Sie bei der Ãœbersetzung" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "Benutzen Sie diese Adresse, um Ihre ownCloud mit Ihrem Dateimanager zu verbinden." + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Entwickelt von der ownCloud-Community, der Quellcode ist unter der AGPL lizenziert." + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "Name" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "Passwort" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "Gruppen" + +#: templates/users.php:32 +msgid "Create" +msgstr "Anlegen" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "Standard-Quota" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "Andere" + +#: templates/users.php:80 templates/users.php:112 +msgid "Group Admin" +msgstr "Gruppenadministrator" + +#: templates/users.php:82 +msgid "Quota" +msgstr "Quota" + +#: templates/users.php:146 +msgid "Delete" +msgstr "Löschen" diff --git a/l10n/de_DE/user_ldap.po b/l10n/de_DE/user_ldap.po new file mode 100644 index 0000000000000000000000000000000000000000..430a4290235cc552f266d1b8d3a50d7179fe85db --- /dev/null +++ b/l10n/de_DE/user_ldap.po @@ -0,0 +1,176 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +# I Robot , 2012. +# Maurice Preuß <>, 2012. +# , 2012. +# Phi Lieb <>, 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 21:41+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:8 +msgid "Host" +msgstr "Host" + +#: templates/settings.php:8 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://" + +#: templates/settings.php:9 +msgid "Base DN" +msgstr "Basis-DN" + +#: templates/settings.php:9 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "Sie können Basis-DN für Benutzer und Gruppen in dem \"Erweitert\"-Reiter konfigurieren" + +#: templates/settings.php:10 +msgid "User DN" +msgstr "Benutzer-DN" + +#: templates/settings.php:10 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "Der DN des Benutzers für LDAP-Bind, z.B.: uid=agent,dc=example,dc=com. Für anonymen Zugriff lassen Sie DN und Passwort leer." + +#: templates/settings.php:11 +msgid "Password" +msgstr "Passwort" + +#: templates/settings.php:11 +msgid "For anonymous access, leave DN and Password empty." +msgstr "Lassen Sie die Felder von DN und Passwort für anonymen Zugang leer." + +#: templates/settings.php:12 +msgid "User Login Filter" +msgstr "Benutzer-Login-Filter" + +#: templates/settings.php:12 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "Bestimmt den angewendeten Filter, wenn eine Anmeldung versucht wird. %%uid ersetzt den Benutzernamen bei dem Anmeldeversuch." + +#: templates/settings.php:12 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "verwenden Sie %%uid Platzhalter, z. B. \"uid=%%uid\"" + +#: templates/settings.php:13 +msgid "User List Filter" +msgstr "Benutzer-Filter-Liste" + +#: templates/settings.php:13 +msgid "Defines the filter to apply, when retrieving users." +msgstr "Definiert den Filter für die Anfrage der Benutzer." + +#: templates/settings.php:13 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "ohne Platzhalter, z.B.: \"objectClass=person\"" + +#: templates/settings.php:14 +msgid "Group Filter" +msgstr "Gruppen-Filter" + +#: templates/settings.php:14 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "Definiert den Filter für die Anfrage der Gruppen." + +#: templates/settings.php:14 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "ohne Platzhalter, z.B.: \"objectClass=posixGroup\"" + +#: templates/settings.php:17 +msgid "Port" +msgstr "Port" + +#: templates/settings.php:18 +msgid "Base User Tree" +msgstr "Basis-Benutzerbaum" + +#: templates/settings.php:19 +msgid "Base Group Tree" +msgstr "Basis-Gruppenbaum" + +#: templates/settings.php:20 +msgid "Group-Member association" +msgstr "Assoziation zwischen Gruppe und Benutzer" + +#: templates/settings.php:21 +msgid "Use TLS" +msgstr "Nutze TLS" + +#: templates/settings.php:21 +msgid "Do not use it for SSL connections, it will fail." +msgstr "Verwenden Sie dies nicht für SSL-Verbindungen, es wird fehlschlagen." + +#: templates/settings.php:22 +msgid "Case insensitve LDAP server (Windows)" +msgstr "LDAP-Server (Windows: Groß- und Kleinschreibung bleibt unbeachtet)" + +#: templates/settings.php:23 +msgid "Turn off SSL certificate validation." +msgstr "Schalten Sie die SSL-Zertifikatsprüfung aus." + +#: templates/settings.php:23 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "Falls die Verbindung es erfordert, muss das SSL-Zertifikat des LDAP-Server importiert werden." + +#: templates/settings.php:23 +msgid "Not recommended, use for testing only." +msgstr "Nicht empfohlen, nur zu Testzwecken." + +#: templates/settings.php:24 +msgid "User Display Name Field" +msgstr "Feld für den Anzeigenamen des Benutzers" + +#: templates/settings.php:24 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "Das LDAP-Attribut für die Generierung des Benutzernamens in ownCloud. " + +#: templates/settings.php:25 +msgid "Group Display Name Field" +msgstr "Feld für den Anzeigenamen der Gruppe" + +#: templates/settings.php:25 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "Das LDAP-Attribut für die Generierung des Gruppennamens in ownCloud. " + +#: templates/settings.php:27 +msgid "in bytes" +msgstr "in Bytes" + +#: templates/settings.php:29 +msgid "in seconds. A change empties the cache." +msgstr "in Sekunden. Eine Änderung leert den Cache." + +#: templates/settings.php:30 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfall trage ein LDAP/AD-Attribut ein." + +#: templates/settings.php:32 +msgid "Help" +msgstr "Hilfe" diff --git a/l10n/de_DE/user_webdavauth.po b/l10n/de_DE/user_webdavauth.po new file mode 100644 index 0000000000000000000000000000000000000000..76e04750deee0537b45703e7812c65cd8b19fe05 --- /dev/null +++ b/l10n/de_DE/user_webdavauth.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-14 00:02+0100\n" +"PO-Revision-Date: 2012-11-13 18:15+0000\n" +"Last-Translator: Mirodin \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/el/admin_dependencies_chk.po b/l10n/el/admin_dependencies_chk.po deleted file mode 100644 index 68230095964afe067678ce954920209eec90f12a..0000000000000000000000000000000000000000 --- a/l10n/el/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Efstathios Iosifidis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:01+0200\n" -"PO-Revision-Date: 2012-08-23 13:39+0000\n" -"Last-Translator: Efstathios Iosifidis \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Κατάσταση εξαÏτήσεων" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "ΧÏησιμοποιήθηκε από:" diff --git a/l10n/el/admin_migrate.po b/l10n/el/admin_migrate.po deleted file mode 100644 index 2d17139f4a0c82b672286100b826ce135ecff134..0000000000000000000000000000000000000000 --- a/l10n/el/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Efstathios Iosifidis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:01+0200\n" -"PO-Revision-Date: 2012-08-23 13:41+0000\n" -"Last-Translator: Efstathios Iosifidis \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Αυτό θα δημιουÏγήσει ένα συμπιεσμένο αÏχείο που θα πεÏιέχει τα δεδομένα από αυτό το ownCloud.\n ΠαÏακαλώ επιλέξτε τον Ï„Ïπο εξαγωγής:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Εξαγωγή" diff --git a/l10n/el/bookmarks.po b/l10n/el/bookmarks.po deleted file mode 100644 index 0030d2d3959cefc8f30c48efcd193c8c2557f750..0000000000000000000000000000000000000000 --- a/l10n/el/bookmarks.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Efstathios Iosifidis , 2012. -# Efstathios Iosifidis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-29 02:03+0200\n" -"PO-Revision-Date: 2012-07-28 11:33+0000\n" -"Last-Translator: Efstathios Iosifidis \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Σελιδοδείκτες" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "ανώνυμο" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "ΣÏÏετε αυτό στους σελιδοδείκτες του πεÏιηγητή σας και κάντε κλικ επάνω του, όταν θέλετε να Ï€Ïοσθέσετε σÏντομα μια ιστοσελίδα ως σελιδοδείκτη:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Ανάγνωση αÏγότεÏα" - -#: templates/list.php:13 -msgid "Address" -msgstr "ΔιεÏθυνση" - -#: templates/list.php:14 -msgid "Title" -msgstr "Τίτλος" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Ετικέτες" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Αποθήκευση σελιδοδείκτη" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Δεν έχετε σελιδοδείκτες" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "ΕφαÏμογίδιο Σελιδοδεικτών
            " diff --git a/l10n/el/calendar.po b/l10n/el/calendar.po deleted file mode 100644 index b8bca2723980e30b0db6cd9d92be0395f4261913..0000000000000000000000000000000000000000 --- a/l10n/el/calendar.po +++ /dev/null @@ -1,818 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# Dimitris M. , 2012. -# Efstathios Iosifidis , 2012. -# Marios Bekatoros <>, 2012. -# Petros Kyladitis , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Δεν έχει δημιουÏγηθεί λανθάνουσα μνήμη για όλα τα ημεÏολόγια" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Όλα έχουν αποθηκευτεί στη cache" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Δε βÏέθηκαν ημεÏολόγια." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Δε βÏέθηκαν γεγονότα." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Λάθος ημεÏολόγιο" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Το αÏχείο που πεÏιέχει είτε κανένα γεγονός είτε όλα τα γεγονότα έχουν ήδη αποθηκευτεί στο ημεÏολόγιό σας." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "τα συμβάντα αποθηκεÏτηκαν σε ένα νέο ημεÏολόγιο" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Η εισαγωγή απέτυχε" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "το συμβάν αποθηκεÏτηκε στο ημεÏολογιό σου" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Îέα ζώνη ÏŽÏας:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Η ζώνη ÏŽÏας άλλαξε" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Μη έγκυÏο αίτημα" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "ΗμεÏολόγιο" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Γενέθλια" - -#: lib/app.php:122 -msgid "Business" -msgstr "ΕπιχείÏηση" - -#: lib/app.php:123 -msgid "Call" -msgstr "Κλήση" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Πελάτες" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "ΠÏομηθευτής" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Διακοπές" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ιδέες" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Ταξίδι" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "ΓιοÏτή" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Συνάντηση" - -#: lib/app.php:131 -msgid "Other" -msgstr "Άλλο" - -#: lib/app.php:132 -msgid "Personal" -msgstr "ΠÏοσωπικό" - -#: lib/app.php:133 -msgid "Projects" -msgstr "ΈÏγα" - -#: lib/app.php:134 -msgid "Questions" -msgstr "ΕÏωτήσεις" - -#: lib/app.php:135 -msgid "Work" -msgstr "ΕÏγασία" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "από" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "ανώνυμο" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Îέα ΗμεÏολόγιο" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Μη επαναλαμβανόμενο" - -#: lib/object.php:373 -msgid "Daily" -msgstr "ΚαθημεÏινά" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Εβδομαδιαία" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Κάθε μέÏα" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "ΔÏο φοÏές την εβδομάδα" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Μηνιαία" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Ετήσια" - -#: lib/object.php:388 -msgid "never" -msgstr "ποτέ" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "κατά συχνότητα Ï€Ïόσβασης" - -#: lib/object.php:390 -msgid "by date" -msgstr "κατά ημεÏομηνία" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "κατά ημέÏα" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "κατά εβδομάδα" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "ΔευτέÏα" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "ΤÏίτη" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "ΤετάÏτη" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Πέμπτη" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "ΠαÏασκευή" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Σάββατο" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "ΚυÏιακή" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "συμβάντα της εβδομάδας του μήνα" - -#: lib/object.php:428 -msgid "first" -msgstr "Ï€Ïώτο" - -#: lib/object.php:429 -msgid "second" -msgstr "δεÏτεÏο" - -#: lib/object.php:430 -msgid "third" -msgstr "Ï„Ïίτο" - -#: lib/object.php:431 -msgid "fourth" -msgstr "τέταÏτο" - -#: lib/object.php:432 -msgid "fifth" -msgstr "πέμπτο" - -#: lib/object.php:433 -msgid "last" -msgstr "τελευταίο" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "ΙανουάÏιος" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "ΦεβÏουάÏιος" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "ΜάÏτιος" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "ΑπÏίλιος" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Μάϊος" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "ΙοÏνιος" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "ΙοÏλιος" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "ΑÏγουστος" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "ΣεπτέμβÏιος" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "ΟκτώβÏιος" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "ÎοέμβÏιος" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "ΔεκέμβÏιος" - -#: lib/object.php:488 -msgid "by events date" -msgstr "κατά ημεÏομηνία συμβάντων" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "κατά ημέÏα(ες) του έτους" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "κατά εβδομάδα(ες)" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "κατά ημέÏα και μήνα" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "ΗμεÏομηνία" - -#: lib/search.php:43 -msgid "Cal." -msgstr "ΗμεÏ." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "ΚυÏ." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Δευ." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "ΤÏί." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Τετ." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Πέμ." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "ΠαÏ." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Σάβ." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Ιαν." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Φεβ." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "ΜάÏ." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "ΑπÏ." - -#: templates/calendar.php:8 -msgid "May." -msgstr "ΜαÎ." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "ΙοÏν." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "ΙοÏλ." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "ΑÏγ." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Σεπ." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Οκτ." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Îοέ." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Δεκ." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "ΟλοήμεÏο" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Πεδία που λείπουν" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Τίτλος" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Από ΗμεÏομηνία" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Από ÎÏα" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Έως ΗμεÏομηνία" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Έως ÎÏα" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Το συμβάν ολοκληÏώνεται Ï€Ïιν από την έναÏξή του" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "ΥπήÏξε σφάλμα στη βάση δεδομένων" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Εβδομάδα" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Μήνας" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Λίστα" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "ΣήμεÏα" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Τα ημεÏολόγια σου" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "ΣÏνδεση CalDAV" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "ΚοινόχÏηστα ημεÏολόγια" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Δεν υπάÏχουν κοινόχÏηστα ημεÏολόγια" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "ΔιαμοίÏασε ένα ημεÏολόγιο" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Λήψη" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "ΕπεξεÏγασία" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "ΔιαγÏαφή" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "μοιÏάστηκε μαζί σας από " - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Îέο ημεÏολόγιο" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "ΕπεξεÏγασία ημεÏολογίου" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "ΠÏοβολή ονόματος" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "ΕνεÏγό" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "ΧÏώμα ημεÏολογίου" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Αποθήκευση" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Υποβολή" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "ΑκÏÏωση" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "ΕπεξεÏγασία ενός γεγονότος" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Εξαγωγή" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "ΠληÏοφοÏίες γεγονότος" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Επαναλαμβανόμενο" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Ειδοποίηση" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Συμμετέχοντες" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "ΔιαμοίÏασε" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Τίτλος συμβάντος" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "ΚατηγοÏία" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "ΔιαχώÏισε τις κατηγοÏίες με κόμμα" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "ΕπεξεÏγασία κατηγοÏιών" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "ΟλοήμεÏο συμβάν" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Από" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Έως" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Επιλογές για Ï€ÏοχωÏημένους" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Τοποθεσία" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Τοποθεσία συμβάντος" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "ΠεÏιγÏαφή" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "ΠεÏιγÏαφή του συμβάντος" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Επαναλαμβανόμενο" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Για Ï€ÏοχωÏημένους" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Επιλογή ημεÏών εβδομάδας" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Επιλογή ημεÏών" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "και των ημεÏών του χÏόνου που υπάÏχουν συμβάντα." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "και των ημεÏών του μήνα που υπάÏχουν συμβάντα." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Επιλογή μηνών" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Επιλογή εβδομάδων" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "και των εβδομάδων του χÏόνου που υπάÏουν συμβάντα." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Διάστημα" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Τέλος" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "πεÏιστατικά" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "δημιουÏγία νέου ημεÏολογίου" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Εισαγωγή αÏχείου ημεÏολογίου" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "ΠαÏακαλώ επέλεξε ένα ημεÏολόγιο" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Όνομα νέου ημεÏολογίου" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Επέλεξε ένα διαθέσιμο όνομα!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Ένα ημεÏολόγιο με αυτό το όνομα υπάÏχει ήδη. Εάν θέλετε να συνεχίσετε, αυτά τα 2 ημεÏολόγια θα συγχωνευθοÏν." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Εισαγωγή" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Κλείσιμο Διαλόγου" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "ΔημιουÏγήστε ένα νέο συμβάν" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Εμφάνισε ένα γεγονός" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Δεν επελέγησαν κατηγοÏίες" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "του" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "στο" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Ζώνη ÏŽÏας" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24ω" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12ω" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Cache" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "ΕκκαθάÏιση λανθάνουσας μνήμης για επανάληψη γεγονότων" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "ΔιευθÏνσεις συγχÏÎ¿Î½Î¹ÏƒÎ¼Î¿Ï Î·Î¼ÎµÏολογίου CalDAV" - -#: templates/settings.php:87 -msgid "more info" -msgstr "πεÏισσότεÏες πλÏοφοÏίες" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "ΚÏÏια ΔιεÏθυνση(Επαφή και άλλα)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr " iCalendar link(s) μόνο για ανάγνωση" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "ΧÏήστες" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "επέλεξε χÏήστες" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "ΕπεξεÏγάσιμο" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Ομάδες" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "Επέλεξε ομάδες" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "κάνε το δημόσιο" diff --git a/l10n/el/contacts.po b/l10n/el/contacts.po deleted file mode 100644 index ddb35e2e8c3348dbbc68df054aaad980c13ebb18..0000000000000000000000000000000000000000 --- a/l10n/el/contacts.po +++ /dev/null @@ -1,959 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# Dimitris M. , 2012. -# Efstathios Iosifidis , 2012. -# Marios Bekatoros <>, 2012. -# Nisok Kosin , 2012. -# Petros Kyladitis , 2011, 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 07:34+0000\n" -"Last-Translator: Nisok Kosin \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Σφάλμα (απ)ενεÏγοποίησης βιβλίου διευθÏνσεων" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "δεν οÏίστηκε id" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Δε μποÏεί να γίνει αλλαγή βιβλίου διευθÏνσεων χωÏίς όνομα" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Σφάλμα ενημέÏωσης βιβλίου διευθÏνσεων." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Δε δόθηκε ID" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Λάθος κατά τον οÏισμό checksum " - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Δε επελέγησαν κατηγοÏίες για διαγÏαφή" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Δε βÏέθηκε βιβλίο διευθÏνσεων" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Δεν βÏέθηκαν επαφές" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Σφάλμα κατά την Ï€Ïοσθήκη επαφής." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "δεν οÏίστηκε όνομα στοιχείου" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Δε αναγνώστηκε η επαφή" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "ΑδÏνατη Ï€Ïοσθήκη κενής ιδιότητας." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "ΠÏέπει να συμπληÏωθεί τουλάχιστον ένα από τα παιδία διεÏθυνσης." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "ΠÏοσπάθεια Ï€Ïοσθήκης διπλότυπης ιδιότητας:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "Λείπει IM παÏάμετÏος." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "Άγνωστο IM:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Οι πληÏοφοÏίες σχετικά με vCard είναι εσφαλμένες. ΠαÏακαλώ επαναφοÏτώστε τη σελίδα." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Λείπει ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Σφάλμα κατά την ανάγνωση του VCard για το ID:\"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "δε οÏίστηκε checksum " - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Οι πληÏοφοÏίες για τη vCard είναι λανθασμένες.ΠαÏακαλώ ξαναφοÏτώστε τη σελίδα: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Κάτι χάθηκε στο άγνωστο. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Δε υπεβλήθει ID επαφής" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Σφάλμα ανάγνωσης εικόνας επαφής" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Σφάλμα αποθήκευσης Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Η φοÏτωμένη φωτογÏαφία δεν είναι έγκυÏη" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Λείπει ID επαφής" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Δε δόθηκε διαδÏομή εικόνας" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Το αÏχείο δεν υπάÏχει:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Σφάλμα φόÏτωσης εικόνας" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Σφάλμα κατά τη λήψη αντικειμένου επαφής" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Σφάλμα κατά τη λήψη ιδιοτήτων ΦΩΤΟΓΡΑΦΙΑΣ." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Σφάλμα κατά την αποθήκευση επαφής." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Σφάλμα κατά την αλλαγή μεγέθους εικόνας" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Σφάλμα κατά την πεÏικοπή εικόνας" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Σφάλμα κατά την δημιουÏγία Ï€ÏοσωÏινής εικόνας" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Σφάλμα κατά την εÏÏεση της εικόνας: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Σφάλμα κατά την αποθήκευση επαφών" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Δεν υπάÏχει σφάλμα, το αÏχείο ανέβηκε με επιτυχία " - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Το μέγεθος του αÏχείου ξεπεÏνάει το upload_max_filesize του php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Το ανεβασμένο αÏχείο υπεÏβαίνει το MAX_FILE_SIZE που οÏίζεται στην HTML φόÏμα" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Το αÏχείο ανέβηκε μεÏικώς" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Δεν ανέβηκε κάποιο αÏχείο" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Λείπει ο Ï€ÏοσωÏινός φάκελος" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Δεν ήταν δυνατή η αποθήκευση της Ï€ÏοσωÏινής εικόνας: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Δεν ήταν δυνατή η φόÏτωση της Ï€ÏοσωÏινής εικόνας: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Δεν ανέβηκε κάποιο αÏχείο. Άγνωστο σφάλμα" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Επαφές" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "ΛυποÏμαστε, αυτή η λειτουÏγία δεν έχει υλοποιηθεί ακόμα" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Δεν έχει υλοποιηθεί" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Αδυναμία λήψης έγκυÏης διεÏθυνσης" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Σφάλμα" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "Δεν έχετε επαÏκή δικαιώματα για Ï€Ïοσθέσετε επαφές στο " - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "ΠαÏακαλοÏμε επιλέξτε ένα από τα δικάς σας βιβλία διευθÏνσεων." - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Σφάλμα δικαιωμάτων" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Το πεδίο δεν Ï€Ïέπει να είναι άδειο." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "ΑδÏνατο να μπουν σε σειÏά τα στοιχεία" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "το 'deleteProperty' καλέστηκε χωÏίς without type argument. ΠαÏακαλώ αναφέÏατε στο bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Αλλαγή ονόματος" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Δεν επιλέχτηκαν αÏχεία για μεταφόÏτωση" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Το αÏχείο που Ï€Ïοσπαθείτε να ανεβάσετε υπεÏβαίνει το μέγιστο μέγεθος για τις Ï€Ïοσθήκες αÏχείων σε αυτόν τον server." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Σφάλμα στην φόÏτωση εικόνας Ï€Ïοφίλ." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Επιλογή Ï„Ïπου" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Κάποιες επαφές σημειώθηκαν Ï€Ïος διαγÏαφή,δεν έχουν διαγÏαφεί ακόμα. ΠαÏακαλώ πεÏιμένετε μέχÏι να διαγÏαφοÏν." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Επιθυμείτε να συγχωνεÏσετε αυτά τα δÏο βιβλία διευθÏνσεων?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Αποτέλεσμα: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " εισάγεται," - -#: js/loader.js:49 -msgid " failed." -msgstr " απέτυχε." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Το όνομα Ï€Ïοβολής δεν μποÏεί να είναι κενό. " - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Το βιβλίο διευθÏνσεων δεν βÏέθηκε:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Αυτό δεν είναι το βιβλίο διευθÏνσεων σας." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Η επαφή δεν μπόÏεσε να βÏεθεί." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "ΕÏγασία" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Σπίτι" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Άλλο" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Κινητό" - -#: lib/app.php:203 -msgid "Text" -msgstr "Κείμενο" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Ομιλία" - -#: lib/app.php:205 -msgid "Message" -msgstr "Μήνυμα" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Φαξ" - -#: lib/app.php:207 -msgid "Video" -msgstr "Βίντεο" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Βομβητής" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Διαδίκτυο" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Γενέθλια" - -#: lib/app.php:253 -msgid "Business" -msgstr "ΕπιχείÏηση" - -#: lib/app.php:254 -msgid "Call" -msgstr "Κάλεσε" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Πελάτες" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "ΠÏομηθευτής" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Διακοπές" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ιδέες" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Ταξίδι" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Ιωβηλαίο" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Συνάντηση" - -#: lib/app.php:263 -msgid "Personal" -msgstr "ΠÏοσωπικό" - -#: lib/app.php:264 -msgid "Projects" -msgstr "ΈÏγα" - -#: lib/app.php:265 -msgid "Questions" -msgstr "ΕÏωτήσεις" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} έχει Γενέθλια" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Επαφή" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "Δεν διαθέτε επαÏκή δικαιώματα για την επεξεÏγασία αυτής της επαφής." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "Δεν διαθέτε επαÏκή δικαιώματα για την διαγÏαφή αυτής της επαφής." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "ΠÏοσθήκη επαφής" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Εισαγωγή" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Ρυθμίσεις" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Βιβλία διευθÏνσεων" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Κλείσιμο " - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "ΣυντομεÏσεις πλητÏολογίου" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Πλοήγηση" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Επόμενη επαφή στη λίστα" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "ΠÏοηγοÏμενη επαφή στη λίστα" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Ανάπτυξη/σÏμπτυξη Ï„Ïέχοντος βιβλίου διευθÏνσεων" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Επόμενο βιβλίο διευθÏνσεων" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "ΠÏοηγοÏμενο βιβλίο διευθÏνσεων" - -#: templates/index.php:54 -msgid "Actions" -msgstr "ΕνέÏγειες" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Ανανέωσε τη λίστα επαφών" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "ΠÏοσθήκη νέας επαφής" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "ΠÏοσθήκη νέου βιβλίου επαφών" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "ΔιαγÏαφή Ï„Ïέχουσας επαφής" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Ρίξε μια φωτογÏαφία για ανέβασμα" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "ΔιαγÏαφή Ï„Ïέχουσας φωτογÏαφίας" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "ΕπεξεÏγασία Ï„Ïέχουσας φωτογÏαφίας" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Ανέβασε νέα φωτογÏαφία" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Επέλεξε φωτογÏαφία από το ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format custom, Όνομα, Επώνυμο, ΑντίστÏοφο ή ΑντίστÏοφο με κόμμα" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Αλλάξτε τις λεπτομέÏειες ονόματος" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "ΟÏγανισμός" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "ΔιαγÏαφή" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "ΠαÏατσοÏκλι" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Εισάγετε παÏατσοÏκλι" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Ιστότοπος" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Πήγαινε στον ιστότοπο" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "ΗΗ-ΜΜ-ΕΕΕΕ" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Ομάδες" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "ΔιαχώÏισε τις ομάδες με κόμμα " - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "ΕπεξεÏγασία ομάδων" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "ΠÏοτιμώμενο" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "ΠαÏακαλώ εισήγαγε μια έγκυÏη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Εισήγαγε διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Αποστολή σε διεÏθυνση" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "ΔιαγÏαφή διεÏθυνση email" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Εισήγαγε αÏιθμό τηλεφώνου" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "ΔιέγÏαψε αÏιθμό τηλεφώνου" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "ΔιαγÏαφή IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "ΠÏοβολή στο χάÏτη" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "ΕπεξεÏγασία λεπτομεÏειών διεÏθυνσης" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "ΠÏόσθεσε τις σημειώσεις εδώ" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "ΠÏοσθήκη πεδίου" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Τηλέφωνο" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Άμεσα μυνήματα" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "ΔιεÏθυνση" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Σημείωση" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Λήψη επαφής" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "ΔιαγÏαφή επαφής" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Η Ï€ÏοσωÏινή εικόνα αφαιÏέθηκε από την κÏυφή μνήμη." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "ΕπεξεÏγασία διεÏθυνσης" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "ΤÏπος" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Ταχ. ΘυÏίδα" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "ΔιεÏθυνση οδοÏ" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Οδός και αÏιθμός" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Εκτεταμένη" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "ΑÏιθμός διαμεÏίσματος" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Πόλη" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "ΠεÏιοχή" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Π.χ. Πολιτεία ή επαÏχεία" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Τ.Κ." - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "ΤαχυδÏομικός Κωδικός" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "ΧώÏα" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Βιβλίο διευθÏνσεων" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Ï€Ïοθέματα" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Δις" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Κα" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Κα" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "ΣεÏ" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Κα" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "ΔÏ." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Όνομα" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Επιπλέον ονόματα" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Επώνυμο" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "καταλήξεις" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Εισαγωγή αÏχείου επαφών" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "ΠαÏακαλώ επέλεξε βιβλίο διευθÏνσεων" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "ΔημιουÏγία νέου βιβλίου διευθÏνσεων" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Όνομα νέου βιβλίου διευθÏνσεων" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Εισαγωγή επαφών" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Δεν έχεις επαφές στο βιβλίο διευθÏνσεων" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "ΠÏοσθήκη επαφής" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Επέλεξε βιβλίο διευθÏνσεων" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Εισαγωγή ονόματος" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Εισαγωγή πεÏιγÏαφής" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "συγχÏονισμός διευθÏνσεων μέσω CardDAV " - -#: templates/settings.php:3 -msgid "more info" -msgstr "πεÏισσότεÏες πληÏοφοÏίες" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "ΚÏÏια διεÏθυνση" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Εμφάνιση συνδέσμου CardDav" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Εμφάνιση συνδέσμου VCF μόνο για ανάγνωση" - -#: templates/settings.php:26 -msgid "Share" -msgstr "ΜοιÏάσου" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Λήψη" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "ΕπεξεÏγασία" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Îέο βιβλίο διευθÏνσεων" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Όνομα" - -#: templates/settings.php:45 -msgid "Description" -msgstr "ΠεÏιγÏαφή" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Αποθήκευση" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "ΑκÏÏωση" - -#: templates/settings.php:52 -msgid "More..." -msgstr "ΠεÏισσότεÏα..." diff --git a/l10n/el/core.po b/l10n/el/core.po index 7edf2b29dd9cfd9abd08dfade77e1d03c240ae61..a7902cb5aef1641249280bc97a1b3e971f38b31c 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.po @@ -3,18 +3,20 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# axil Pι , 2012. # Dimitris M. , 2012. # Efstathios Iosifidis , 2012. +# Efstathios Iosifidis , 2012. # Marios Bekatoros <>, 2012. # , 2011. -# Petros Kyladitis , 2011, 2012. +# Petros Kyladitis , 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-01 02:04+0200\n" -"PO-Revision-Date: 2012-09-30 17:27+0000\n" -"Last-Translator: Dimitris M. \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-19 23:56+0000\n" +"Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,210 +24,243 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Δε Ï€ÏοσδιοÏίστηκε όνομα εφαÏμογής" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Δεν δώθηκε Ï„Ïπος κατηγοÏίας." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" -msgstr "Δεν έχετε να Ï€Ïοστέσθέσεται μια κα" +msgstr "Δεν έχετε κατηγοÏία να Ï€Ïοσθέσετε;" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " -msgstr "Αυτή η κατηγοÏία υπάÏχει ήδη" +msgstr "Αυτή η κατηγοÏία υπάÏχει ήδη:" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Δεν δώθηκε Ï„Ïπος αντικειμένου." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "Δεν δώθηκε η ID για %s." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Σφάλμα Ï€Ïοσθήκης %s στα αγαπημένα." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Δεν επιλέχτηκαν κατηγοÏίες για διαγÏαφή." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Σφάλμα αφαίÏεσης %s από τα αγαπημένα." -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Ρυθμίσεις" -#: js/js.js:645 -msgid "January" -msgstr "ΙανουάÏιος" +#: js/js.js:704 +msgid "seconds ago" +msgstr "δευτεÏόλεπτα Ï€Ïιν" -#: js/js.js:645 -msgid "February" -msgstr "ΦεβÏουάÏιος" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 λεπτό Ï€Ïιν" -#: js/js.js:645 -msgid "March" -msgstr "ΜάÏτιος" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} λεπτά Ï€Ïιν" -#: js/js.js:645 -msgid "April" -msgstr "ΑπÏίλιος" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 ÏŽÏα Ï€Ïιν" -#: js/js.js:645 -msgid "May" -msgstr "Μάϊος" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} ÏŽÏες Ï€Ïιν" -#: js/js.js:645 -msgid "June" -msgstr "ΙοÏνιος" +#: js/js.js:709 +msgid "today" +msgstr "σήμεÏα" -#: js/js.js:646 -msgid "July" -msgstr "ΙοÏλιος" +#: js/js.js:710 +msgid "yesterday" +msgstr "χτες" -#: js/js.js:646 -msgid "August" -msgstr "ΑÏγουστος" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} ημέÏες Ï€Ïιν" -#: js/js.js:646 -msgid "September" -msgstr "ΣεπτέμβÏιος" +#: js/js.js:712 +msgid "last month" +msgstr "τελευταίο μήνα" -#: js/js.js:646 -msgid "October" -msgstr "ΟκτώβÏιος" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} μήνες Ï€Ïιν" -#: js/js.js:646 -msgid "November" -msgstr "ÎοέμβÏιος" +#: js/js.js:714 +msgid "months ago" +msgstr "μήνες Ï€Ïιν" -#: js/js.js:646 -msgid "December" -msgstr "ΔεκέμβÏιος" +#: js/js.js:715 +msgid "last year" +msgstr "τελευταίο χÏόνο" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "χÏόνια Ï€Ïιν" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Επιλέξτε" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" -msgstr "ΑκÏÏωση" +msgstr "ΆκυÏο" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Όχι" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Îαι" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Οκ" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Δεν επιλέχτηκαν κατηγοÏίες για διαγÏαφή" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Δεν καθοÏίστηκε ο Ï„Ïπος του αντικειμένου." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Σφάλμα" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Δεν καθοÏίστηκε το όνομα της εφαÏμογής." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Το απαιτοÏμενο αÏχείο {file} δεν εγκαταστάθηκε!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Σφάλμα κατά τον διαμοιÏασμό" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Σφάλμα κατά το σταμάτημα του διαμοιÏασμοÏ" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Σφάλμα κατά την αλλαγή των δικαιωμάτων" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "ΔιαμοιÏασμένο με εσένα και την ομάδα" - -#: js/share.js:130 -msgid "by" -msgstr "από" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "ΔιαμοιÏάστηκε με σας και με την ομάδα {group} του {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "ΜοιÏάστηκε μαζί σας από " +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "ΔιαμοιÏάστηκε με σας από τον {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "ΔιαμοιÏασμός με" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "ΔιαμοιÏασμός με σÏνδεσμο" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "ΠÏοστασία κωδικοÏ" +msgstr "ΠÏοστασία συνθηματικοÏ" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" -msgstr "Κωδικός" +msgstr "Συνθηματικό" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "ΟÏισμός ημ. λήξης" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "ΗμεÏομηνία λήξης" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "ΔιαμοιÏασμός μέσω email:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Δεν βÏέθηκε άνθÏωπος" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "ΞαναμοιÏασμός δεν επιτÏέπεται" -#: js/share.js:250 -msgid "Shared in" -msgstr "ΔιαμοιÏάστηκε με" - -#: js/share.js:250 -msgid "with" -msgstr "με" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "ΔιαμοιÏασμός του {item} με τον {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "Σταμάτημα μοιÏάσματος" +msgstr "Σταμάτημα διαμοιÏασμοÏ" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "δυνατότητα αλλαγής" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "έλεγχος Ï€Ïόσβασης" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "δημιουÏγία" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "ανανέωση" +msgstr "ενημέÏωση" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "διαγÏαφή" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "διαμοιÏασμός" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" -msgstr "ΠÏοστασία με κωδικό" +msgstr "ΠÏοστασία με συνθηματικό" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "Σφάλμα κατά την διαγÏαφή της ημ. λήξης" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "Σφάλμα κατά τον οÏισμό ημ. λήξης" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" -msgstr "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï ownCloud" +msgstr "ΕπαναφοÏά ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ownCloud" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" @@ -236,15 +271,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Θα λάβετε ένα σÏνδεσμο για να επαναφέÏετε τον κωδικό Ï€Ïόσβασής σας μέσω ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Ζητήθησαν" +msgid "Reset email send." +msgstr "Η επαναφοÏά του email στάλθηκε." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Η σÏνδεση απέτυχε!" +msgid "Request failed!" +msgstr "Η αίτηση απέτυχε!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Όνομα ΧÏήστη" @@ -262,11 +297,11 @@ msgstr "Σελίδα εισόδου" #: lostpassword/templates/resetpassword.php:8 msgid "New password" -msgstr "Îέος κωδικός" +msgstr "Îέο συνθηματικό" #: lostpassword/templates/resetpassword.php:11 msgid "Reset password" -msgstr "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" +msgstr "ΕπαναφοÏά συνθηματικοÏ" #: strings.php:5 msgid "Personal" @@ -294,78 +329,193 @@ msgstr "Δεν επιτÏέπεται η Ï€Ïόσβαση" #: templates/404.php:12 msgid "Cloud not found" -msgstr "Δεν βÏέθηκε σÏννεφο" +msgstr "Δεν βÏέθηκε νέφος" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" -msgstr "ΕπεξεÏγασία κατηγοÏίας" +msgstr "ΕπεξεÏγασία κατηγοÏιών" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "ΠÏοσθήκη" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "ΠÏοειδοποίηση Ασφαλείας" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Δεν είναι διαθέσιμο το Ï€Ïόσθετο δημιουÏγίας τυχαίων αÏιθμών ασφαλείας, παÏακαλώ ενεÏγοποιήστε το Ï€Ïόσθετο της PHP, OpenSSL." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "ΧωÏίς το Ï€Ïόσθετο δημιουÏγίας τυχαίων αÏιθμών ασφαλείας, μποÏεί να διαÏÏεÏσει ο λογαÏιασμός σας από επιθέσεις στο διαδίκτυο." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Ο κατάλογος data και τα αÏχεία σας πιθανόν να είναι διαθέσιμα στο διαδίκτυο. Το αÏχείο .htaccess που παÏέχει το ownCloud δεν δουλεÏει. Σας Ï€Ïοτείνουμε ανεπιφÏλακτα να Ïυθμίσετε το διακομιστή σας με τέτοιο Ï„Ïόπο ώστε ο κατάλογος data να μην είναι πλέον Ï€Ïοσβάσιμος ή να μετακινήσετε τον κατάλογο data έξω από τον κατάλογο του διακομιστή." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "ΔημιουÏγήστε έναν λογαÏιασμό διαχειÏιστή" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Για Ï€ÏοχωÏημένους" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Φάκελος δεδομένων" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" -msgstr "ΔιαμόÏφωση της βάσης δεδομένων" +msgstr "ΡÏθμιση της βάσης δεδομένων" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "θα χÏησιμοποιηθοÏν" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "ΧÏήστης της βάσης δεδομένων" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" -msgstr "Κωδικός Ï€Ïόσβασης βάσης δεδομένων" +msgstr "Συνθηματικό βάσης δεδομένων" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Όνομα βάσης δεδομένων" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Κενά Πινάκων Βάσης Δεδομένων" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Διακομιστής βάσης δεδομένων" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "ΟλοκλήÏωση εγκατάστασης" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "ΚυÏιακή" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "ΔευτέÏα" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "ΤÏίτη" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "ΤετάÏτη" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Πέμπτη" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "ΠαÏασκευή" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Σάββατο" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "ΙανουάÏιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "ΦεβÏουάÏιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "ΜάÏτιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "ΑπÏίλιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Μάϊος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "ΙοÏνιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "ΙοÏλιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "ΑÏγουστος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "ΣεπτέμβÏιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "ΟκτώβÏιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "ÎοέμβÏιος" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "ΔεκέμβÏιος" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "ΥπηÏεσίες web υπό τον έλεγχό σας" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "ΑποσÏνδεση" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "ΑποÏÏίφθηκε η αυτόματη σÏνδεση!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Εάν δεν αλλάξατε το συνθηματικό σας Ï€Ïοσφάτως, ο λογαÏιασμός μποÏεί να έχει διαÏÏεÏσει!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "ΠαÏακαλώ αλλάξτε το συνθηματικό σας για να ασφαλίσετε πάλι τον λογαÏιασμό σας." + +#: templates/login.php:15 msgid "Lost your password?" -msgstr "Ξεχάσατε τον κωδικό σας;" +msgstr "Ξεχάσατε το συνθηματικό σας;" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" -msgstr "να με θυμάσαι" +msgstr "απομνημόνευση" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Είσοδος" @@ -380,3 +530,17 @@ msgstr "Ï€ÏοηγοÏμενο" #: templates/part.pagenavi.php:20 msgid "next" msgstr "επόμενο" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "ΠÏοειδοποίηση Ασφαλείας!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "ΠαÏακαλώ επιβεβαιώστε το συνθηματικό σας.
            Για λόγους ασφαλείας μποÏεί να εÏωτάστε να εισάγετε ξανά το συνθηματικό σας." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Επαλήθευση" diff --git a/l10n/el/files.po b/l10n/el/files.po index 1d6375014dc291bfeb2eb52d6edd3c06baf51923..85209f363a5348be00d5d05c653c9400d95db5b3 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.po @@ -8,13 +8,14 @@ # Efstathios Iosifidis , 2012. # Marios Bekatoros <>, 2012. # Petros Kyladitis , 2011-2012. +# Γιάννης Ανθυμίδης , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 01:41+0000\n" -"Last-Translator: Dimitris M. \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 11:20+0000\n" +"Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,198 +25,169 @@ msgstr "" #: ajax/upload.php:20 msgid "There is no error, the file uploaded with success" -msgstr "Δεν υπάÏχει λάθος, το αÏχείο μεταφοÏτώθηκε επιτυχώς" +msgstr "Δεν υπάÏχει σφάλμα, το αÏχείο εστάλει επιτυχώς" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Το αÏχείο που μεταφοÏτώθηκε υπεÏβαίνει την οδηγία μέγιστου επιτÏÎµÏ€Ï„Î¿Ï Î¼ÎµÎ³Î­Î¸Î¿Ï…Ï‚ \"upload_max_filesize\" του php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Το απεσταλμένο αÏχείο ξεπεÏνά την οδηγία upload_max_filesize στο php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Το αÏχείο υπεÏβαίνει την οδηγία μέγιστου επιτÏÎµÏ€Ï„Î¿Ï Î¼ÎµÎ³Î­Î¸Î¿Ï…Ï‚ \"MAX_FILE_SIZE\" που έχει οÏιστεί στην HTML φόÏμα" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" -msgstr "Το αÏχείο μεταφοÏώθηκε μόνο εν μέÏει" +msgstr "Το αÏχείο εστάλει μόνο εν μέÏει" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" -msgstr "Κανένα αÏχείο δεν μεταφοÏτώθηκε" +msgstr "Κανένα αÏχείο δεν στάλθηκε" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Λείπει ο Ï€ÏοσωÏινός φάκελος" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Αποτυχία εγγÏαφής στο δίσκο" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "ΑÏχεία" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Διακοπή κοινής χÏήσης" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "ΔιαγÏαφή" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Μετονομασία" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "υπάÏχει ήδη" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} υπάÏχει ήδη" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "αντικατέστησε" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "συνιστώμενο όνομα" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "ακÏÏωση" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "αντικαταστάθηκε" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} αντικαταστάθηκε" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "αναίÏεση" -#: js/filelist.js:241 -msgid "with" -msgstr "με" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "αντικαταστάθηκε το {new_name} με {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "μη διαμοιÏασμένα {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "Διακόπηκε ο διαμοιÏασμός" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "διαγÏαμμένα {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "διαγÏάφηκε" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Μη έγκυÏο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτÏέπονται." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "παÏαγωγή αÏχείου ZIP, ίσως διαÏκέσει αÏκετά." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "Αδυναμία στην μεταφόÏτωση του αÏχείου σας Î±Ï†Î¿Ï ÎµÎ¯Î½Î±Î¹ φάκελος ή έχει 0 bytes" +msgstr "Αδυναμία στην αποστολή του αÏχείου σας Î±Ï†Î¿Ï ÎµÎ¯Î½Î±Î¹ φάκελος ή έχει 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" -msgstr "Σφάλμα ΜεταφόÏτωσης" +msgstr "Σφάλμα Αποστολής" + +#: js/files.js:235 +msgid "Close" +msgstr "Κλείσιμο" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "ΕκκÏεμεί" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 αÏχείο ανεβαίνει" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "αÏχεία ανεβαίνουν" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} αÏχεία ανεβαίνουν" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." -msgstr "Η μεταφόÏτωση ακυÏώθηκε." +msgstr "Η αποστολή ακυÏώθηκε." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "Η μεταφόÏτωση του αÏχείου βÏίσκεται σε εξέλιξη. Έξοδος από την σελίδα Ï„ÏŽÏα θα ακυÏώσει την μεταφόÏτωση." +msgstr "Η αποστολή του αÏχείου βÏίσκεται σε εξέλιξη. Έξοδος από την σελίδα Ï„ÏŽÏα θα ακυÏώσει την αποστολή." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Μη έγκυÏο όνομα, το '/' δεν επιτÏέπεται." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Μη έγκυÏο όνομα φακέλου. Η χÏήση του \"Shared\" είναι δεσμευμένη από το Owncloud" -#: js/files.js:668 -msgid "files scanned" -msgstr "αÏχεία σαÏώθηκαν" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} αÏχεία ανιχνεÏτηκαν" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "σφάλμα κατά την ανίχνευση" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Όνομα" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Μέγεθος" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "ΤÏοποποιήθηκε" -#: js/files.js:778 -msgid "folder" -msgstr "φάκελος" - -#: js/files.js:780 -msgid "folders" -msgstr "φάκελοι" - -#: js/files.js:788 -msgid "file" -msgstr "αÏχείο" - -#: js/files.js:790 -msgid "files" -msgstr "αÏχεία" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "δευτεÏόλεπτα Ï€Ïιν" - -#: js/files.js:835 -msgid "minute ago" -msgstr "λεπτό Ï€Ïιν" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "λεπτά Ï€Ïιν" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 φάκελος" -#: js/files.js:839 -msgid "today" -msgstr "σήμεÏα" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} φάκελοι" -#: js/files.js:840 -msgid "yesterday" -msgstr "χτες" +#: js/files.js:824 +msgid "1 file" +msgstr "1 αÏχείο" -#: js/files.js:841 -msgid "days ago" -msgstr "μέÏες Ï€Ïιν" - -#: js/files.js:842 -msgid "last month" -msgstr "τελευταίο μήνα" - -#: js/files.js:844 -msgid "months ago" -msgstr "μήνες Ï€Ïιν" - -#: js/files.js:845 -msgid "last year" -msgstr "τελευταίο χÏόνο" - -#: js/files.js:846 -msgid "years ago" -msgstr "χÏόνια Ï€Ïιν" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} αÏχεία" #: templates/admin.php:5 msgid "File handling" @@ -223,29 +195,29 @@ msgstr "ΔιαχείÏιση αÏχείων" #: templates/admin.php:7 msgid "Maximum upload size" -msgstr "Μέγιστο μέγεθος μεταφόÏτωσης" +msgstr "Μέγιστο μέγεθος αποστολής" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "μέγιστο δυνατό:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "ΑπαÏαίτητο για κατέβασμα πολλαπλών αÏχείων και φακέλων" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "ΕνεÏγοποίηση κατεβάσματος ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 για απεÏιόÏιστο" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Μέγιστο μέγεθος για αÏχεία ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Αποθήκευση" @@ -253,52 +225,48 @@ msgstr "Αποθήκευση" msgid "New" msgstr "Îέο" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ΑÏχείο κειμένου" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Φάκελος" -#: templates/index.php:11 -msgid "From url" -msgstr "Από την διεÏθυνση" +#: templates/index.php:14 +msgid "From link" +msgstr "Από σÏνδεσμο" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" -msgstr "ΜεταφόÏτωση" +msgstr "Αποστολή" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" -msgstr "ΑκÏÏωση μεταφόÏτωσης" +msgstr "ΑκÏÏωση αποστολής" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Δεν υπάÏχει τίποτα εδώ. Ανέβασε κάτι!" -#: templates/index.php:50 -msgid "Share" -msgstr "ΔιαμοιÏασμός" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Λήψη" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" -msgstr "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ αÏχείο Ï€Ïος μεταφόÏτωση" +msgstr "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ αÏχείο Ï€Ïος αποστολή" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "Τα αÏχεία που Ï€Ïοσπαθείτε να μεταφοÏτώσετε υπεÏβαίνουν το μέγιστο μέγεθος μεταφόÏτωσης αÏχείων σε αυτόν το διακομιστή." +msgstr "Τα αÏχεία που Ï€Ïοσπαθείτε να ανεβάσετε υπεÏβαίνουν το μέγιστο μέγεθος αποστολής αÏχείων σε αυτόν το διακομιστή." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Τα αÏχεία σαÏώνονται, παÏακαλώ πεÏιμένετε" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "ΤÏέχουσα αναζήτηση " diff --git a/l10n/el/files_external.po b/l10n/el/files_external.po index 6bb867891c09b59ecd16ce12029b22dca8edf299..261b71a5b76a01fb8e3adf50d2f02b8a2108add1 100644 --- a/l10n/el/files_external.po +++ b/l10n/el/files_external.po @@ -6,13 +6,15 @@ # Efstathios Iosifidis , 2012. # Nisok Kosin , 2012. # Petros Kyladitis , 2012. +# Γιάννης , 2012. +# Γιάννης Ανθυμίδης , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-14 02:05+0200\n" +"PO-Revision-Date: 2012-10-13 20:42+0000\n" +"Last-Translator: Γιάννης Ανθυμίδης \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,27 +24,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "ΠÏοσβαση παÏασχέθηκε" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Σφάλμα Ïυθμίζωντας αποθήκευση Dropbox " #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "ΠαÏοχή Ï€Ïόσβασης" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "ΣυμπληÏώστε όλα τα απαιτοÏμενα πεδία" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "ΠαÏακαλοÏμε δώστε έγκυÏο κλειδί Dropbox και μυστικό." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Σφάλμα Ïυθμίζωντας αποθήκευση Google Drive " #: templates/settings.php:3 msgid "External Storage" @@ -78,7 +80,7 @@ msgstr "Κανένα επιλεγμένο" #: templates/settings.php:63 msgid "All Users" -msgstr "Όλοι οι χÏήστες" +msgstr "Όλοι οι ΧÏήστες" #: templates/settings.php:64 msgid "Groups" diff --git a/l10n/el/files_pdfviewer.po b/l10n/el/files_pdfviewer.po deleted file mode 100644 index ccc6193a0bf3991686e218db8746d9ae288566ff..0000000000000000000000000000000000000000 --- a/l10n/el/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/el/files_texteditor.po b/l10n/el/files_texteditor.po deleted file mode 100644 index c449b1118455b3d9790f25465bb292a0c921ecfc..0000000000000000000000000000000000000000 --- a/l10n/el/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/el/gallery.po b/l10n/el/gallery.po deleted file mode 100644 index 57be7acc264489e0e7357b671c65f1c8c386a9ea..0000000000000000000000000000000000000000 --- a/l10n/el/gallery.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dimitris M. , 2012. -# Efstathios Iosifidis , 2012. -# Efstathios Iosifidis , 2012. -# Marios Bekatoros <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-27 02:02+0200\n" -"PO-Revision-Date: 2012-07-26 08:11+0000\n" -"Last-Translator: Marios Bekatoros <>\n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Εικόνες" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Κοινοποίηση συλλογής" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Σφάλμα: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "ΕσωτεÏικό σφάλμα" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "ΠÏοβολή Διαφανειών" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "ΕπιστÏοφή" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "ΑφαίÏεση επιβεβαίωσης" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Θέλετε να αφαιÏέσετε το άλμπουμ" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Αλλάξτε το όνομα του άλμπουμ" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Îέο όνομα άλμπουμ" diff --git a/l10n/el/impress.po b/l10n/el/impress.po deleted file mode 100644 index f6cd7154530336f082de706324506e7187904529..0000000000000000000000000000000000000000 --- a/l10n/el/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/el/lib.po b/l10n/el/lib.po index 754ee2ab0df55d122bd59143582b29fad809802d..c58bb7b0af68fe96e2732b2a65a7e4bf463b8215 100644 --- a/l10n/el/lib.po +++ b/l10n/el/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-20 02:05+0200\n" -"PO-Revision-Date: 2012-09-19 23:21+0000\n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-16 17:32+0000\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -42,19 +42,19 @@ msgstr "ΕφαÏμογές" msgid "Admin" msgstr "ΔιαχειÏιστής" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Η λήψη ZIP απενεÏγοποιήθηκε." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Τα αÏχεία Ï€Ïέπει να ληφθοÏν ένα-ένα." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Πίσω στα ΑÏχεία" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Τα επιλεγμένα αÏχεία είναι μεγάλα ώστε να δημιουÏγηθεί αÏχείο zip." @@ -62,7 +62,7 @@ msgstr "Τα επιλεγμένα αÏχεία είναι μεγάλα ώστε msgid "Application is not enabled" msgstr "Δεν ενεÏγοποιήθηκε η εφαÏμογή" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Σφάλμα πιστοποίησης" @@ -70,57 +70,84 @@ msgstr "Σφάλμα πιστοποίησης" msgid "Token expired. Please reload page." msgstr "Το αναγνωÏιστικό έληξε. ΠαÏακαλώ φοÏτώστε ξανά την σελίδα." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "ΑÏχεία" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Κείμενο" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Εικόνες" + +#: template.php:103 msgid "seconds ago" msgstr "δευτεÏόλεπτα Ï€Ïιν" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 λεπτό Ï€Ïιν" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d λεπτά Ï€Ïιν" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 ÏŽÏα Ï€Ïιν" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d ÏŽÏες Ï€Ïιν" + +#: template.php:108 msgid "today" msgstr "σήμεÏα" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "χθές" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d ημέÏες Ï€Ïιν" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "τον Ï€ÏοηγοÏμενο μήνα" -#: template.php:96 -msgid "months ago" -msgstr "μήνες Ï€Ïιν" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d μήνες Ï€Ïιν" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "τον Ï€ÏοηγοÏμενο χÏόνο" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "χÏόνια Ï€Ïιν" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s είναι διαθέσιμα. Δείτε πεÏισσότεÏες πληÏοφοÏίες" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "ενημεÏωμένο" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "ο έλεγχος ενημεÏώσεων είναι απενεÏγοποιημένος" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Αδυναμία εÏÏεσης κατηγοÏίας \"%s\"" diff --git a/l10n/el/media.po b/l10n/el/media.po deleted file mode 100644 index 4d82e044e37a90a30e5e7ae3d62796856f49df7c..0000000000000000000000000000000000000000 --- a/l10n/el/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Petros Kyladitis , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Greek (http://www.transifex.net/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Μουσική" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "ΑναπαÏαγωγή" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "ΠαÏση" - -#: templates/music.php:5 -msgid "Previous" -msgstr "ΠÏοηγοÏμενο" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Επόμενο" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Σίγαση" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "ΕπαναφοÏά ήχου" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "ΕπανασάÏωση συλλογής" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Καλλιτέχνης" - -#: templates/music.php:38 -msgid "Album" -msgstr "Άλμπουμ" - -#: templates/music.php:39 -msgid "Title" -msgstr "Τίτλος" diff --git a/l10n/el/settings.po b/l10n/el/settings.po index 89a0c27429985b6866293b9c6c3000c9f759c258..62961834e0ef5b3f949ced027a35e6a3e8ecb6ff 100644 --- a/l10n/el/settings.po +++ b/l10n/el/settings.po @@ -6,18 +6,21 @@ # Dimitris M. , 2012. # Efstathios Iosifidis , 2012. # Efstathios Iosifidis , 2012. +# , 2012. # , 2012. # Marios Bekatoros <>, 2012. # Nisok Kosin , 2012. +# , 2011. # , 2011. # Petros Kyladitis , 2011-2012. +# Γιάννης Ανθυμίδης , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 11:21+0000\n" +"Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,70 +28,73 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Σφάλμα στην φόÏτωση της λίστας από το App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Σφάλμα πιστοποίησης" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Η ομάδα υπάÏχει ήδη" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Αδυναμία Ï€Ïοσθήκης ομάδας" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Αδυναμία ενεÏγοποίησης εφαÏμογής " -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" -msgstr "Το Email αποθηκεÏτηκε " +msgstr "Το email αποθηκεÏτηκε " -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Μη έγκυÏο email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "Το OpenID άλλαξε" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Μη έγκυÏο αίτημα" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Αδυναμία διαγÏαφής ομάδας" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Σφάλμα πιστοποίησης" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Αδυναμία διαγÏαφής χÏήστη" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Η γλώσσα άλλαξε" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Οι διαχειÏιστές δεν μποÏοÏν να αφαιÏέσουν τους εαυτοÏÏ‚ τους από την ομάδα των διαχειÏιστών" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Αδυναμία Ï€Ïοσθήκη χÏήστη στην ομάδα %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Αδυναμία αφαίÏεσης χÏήστη από την ομάδα %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "ΑπενεÏγοποίηση" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "ΕνεÏγοποίηση" @@ -96,112 +102,25 @@ msgstr "ΕνεÏγοποίηση" msgid "Saving..." msgstr "Αποθήκευση..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__όνομα_γλώσσας__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "ΠÏοειδοποίηση Ασφαλείας" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ο κατάλογος δεδομένων και τα αÏχεία σας είναι πιθανότατα Ï€Ïοσβάσιμα από το διαδίκτυο. Το αÏχείο .htaccess που παÏέχει το owncloud, δεν λειτουÏγεί. Σας συνιστοÏμε να Ïυθμίσετε τον εξυπηÏετητή σας έτσι ώστε ο κατάλογος δεδομένων να μην είναι πλεον Ï€Ïοσβάσιμος ή μετακινήστε τον κατάλογο δεδομένων εκτός του καταλόγου document του εξυπηÏετητή σας." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Εκτέλεση μιας εÏγασίας με κάθε σελίδα που φοÏτώνεται" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "Το cron.php είναι καταχωÏημένο στην υπηÏεσία webcron. Îα καλείται μια φοÏά το λεπτό η σελίδα cron.php από τον root του owncloud μέσω http" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "ΧÏήση υπηÏεσίας συστήματος cron. Îα καλείται μια φοÏά το λεπτό, το αÏχείο cron.php από τον φάκελο του owncloud μέσω του cronjob του συστήματος." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "ΔιαμοιÏασμός" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "ΕνεÏγοποίηση API ΔιαμοιÏασμοÏ" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Îα επιτÏέπεται στις εφαÏμογές να χÏησιμοποιοÏν το API ΔιαμοιÏασμοÏ" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Îα επιτÏέπονται σÏνδεσμοι" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Îα επιτÏέπεται στους χÏήστες να διαμοιÏάζονται δημόσια με συνδέσμους" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Îα επιτÏέπεται ο επαναδιαμοιÏασμός" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Îα επιτÏέπεται στους χÏήστες να διαμοιÏάζουν ότι τους έχει διαμοιÏαστεί" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Îα επιτÏέπεται ο διαμοιÏασμός με οποιονδήποτε" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Îα επιτÏέπεται ο διαμοιÏασμός μόνο με χÏήστες της ίδιας ομάδας" - -#: templates/admin.php:88 -msgid "Log" -msgstr "ΑÏχείο καταγÏαφής" - -#: templates/admin.php:116 -msgid "More" -msgstr "ΠεÏισσότεÏο" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "ΑναπτÏχθηκε από την κοινότητα ownCloud, ο πηγαίος κώδικας είναι υπό άδεια χÏήσης AGPL." - #: templates/apps.php:10 msgid "Add your App" -msgstr "ΠÏόσθεσε τη δικιά σου εφαÏμογή " +msgstr "ΠÏόσθεστε τη Δικιά σας ΕφαÏμογή" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "ΠεÏισσότεÏες ΕφαÏμογές" #: templates/apps.php:27 msgid "Select an App" -msgstr "Επιλέξτε μια εφαÏμογή" +msgstr "Επιλέξτε μια ΕφαÏμογή" #: templates/apps.php:31 msgid "See application page at apps.owncloud.com" -msgstr "Η σελίδα εφαÏμογών στο apps.owncloud.com" +msgstr "Δείτε την σελίδα εφαÏμογών στο apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " @@ -213,28 +132,28 @@ msgstr "ΤεκμηÏίωση" #: templates/help.php:10 msgid "Managing Big Files" -msgstr "ΔιαχείÏιση μεγάλων αÏχείων" +msgstr "ΔιαχείÏιση Μεγάλων ΑÏχείων" #: templates/help.php:11 msgid "Ask a question" msgstr "Ρωτήστε μια εÏώτηση" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "ΠÏοβλήματα κατά τη σÏνδεση με τη βάση δεδομένων βοήθειας." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "ΧειÏοκίνητη μετάβαση." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Απάντηση" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Έχετε χÏησιμοποιήσει %s από τα διαθέσιμα %s" +msgid "You have used %s of the available %s" +msgstr "ΧÏησιμοποιήσατε %s από διαθέσιμα %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -274,7 +193,7 @@ msgstr "Email" #: templates/personal.php:31 msgid "Your email address" -msgstr "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας" +msgstr "Η διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας" #: templates/personal.php:32 msgid "Fill in an email address to enable password recovery" @@ -286,11 +205,21 @@ msgstr "Γλώσσα" #: templates/personal.php:44 msgid "Help translate" -msgstr "Βοηθήστε στην μετάφÏαση" +msgstr "Βοηθήστε στη μετάφÏαση" #: templates/personal.php:51 msgid "use this address to connect to your ownCloud in your file manager" -msgstr "χÏησιμοποιήστε αυτή τη διεÏθυνση για να συνδεθείτε στο ownCloud σας από το διαχειÏιστή αÏχείων σας" +msgstr "χÏησιμοποιήστε αυτήν τη διεÏθυνση για να συνδεθείτε στο ownCloud σας από το διαχειÏιστή αÏχείων σας" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "ΑναπτÏχθηκε από την κοινότητα ownCloud, ο πηγαίος κώδικας είναι υπό άδεια χÏήσης AGPL." #: templates/users.php:21 templates/users.php:76 msgid "Name" @@ -310,7 +239,7 @@ msgstr "ΔημιουÏγία" #: templates/users.php:35 msgid "Default Quota" -msgstr "ΠÏοεπιλεγμένο ÏŒÏιο" +msgstr "ΠÏοεπιλεγμένο ÎŒÏιο" #: templates/users.php:55 templates/users.php:138 msgid "Other" @@ -322,7 +251,7 @@ msgstr "Ομάδα ΔιαχειÏιστών" #: templates/users.php:82 msgid "Quota" -msgstr "ΣÏνολο χώÏου" +msgstr "ΣÏνολο ΧώÏου" #: templates/users.php:146 msgid "Delete" diff --git a/l10n/el/tasks.po b/l10n/el/tasks.po deleted file mode 100644 index 3e9b76003275dfec620766f935180620956f4250..0000000000000000000000000000000000000000 --- a/l10n/el/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Nisok Kosin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 08:53+0000\n" -"Last-Translator: Nisok Kosin \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Μην έγκυÏη ημεÏομηνία / ÏŽÏα" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "ΕÏγασίες" - -#: js/tasks.js:415 -msgid "No category" -msgstr "ΧωÏίς κατηγοÏία" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Μη οÏισμένο" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=υψηλότεÏο" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=μέτÏιο" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=χαμηλότεÏο" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Άδεια πεÏίληψη" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Μη έγκυÏο ποσοστό ολοκλήÏωσης" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Μη έγκυÏη Ï€ÏοτεÏαιότητα " - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "ΠÏοσθήκη εÏγασίας" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "ΦόÏτωση εÏγασιών..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Σημαντικό " - -#: templates/tasks.php:23 -msgid "More" -msgstr "ΠεÏισσότεÏα" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "ΛιγότεÏα" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "ΔιαγÏαφή" diff --git a/l10n/el/user_migrate.po b/l10n/el/user_migrate.po deleted file mode 100644 index 51b56b84a266821aeb276673048945f12f718eb8..0000000000000000000000000000000000000000 --- a/l10n/el/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Efstathios Iosifidis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 13:37+0000\n" -"Last-Translator: Efstathios Iosifidis \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Εξαγωγή" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "ΠαÏουσιάστηκε σφάλμα" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Εξαγωγή του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï‡Ïήστη σας" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Αυτό θα δημιουÏγήσει ένα συμπιεσμένο αÏχείο που θα πεÏιέχει τον λογαÏιασμό σας ownCloud." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Εισαγωγή λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï‡Ïήστη" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Εισαγωγή" diff --git a/l10n/el/user_openid.po b/l10n/el/user_openid.po deleted file mode 100644 index 8d833ab11d24143b0acd9053de30d9de9ed0b882..0000000000000000000000000000000000000000 --- a/l10n/el/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Nisok Kosin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 08:57+0000\n" -"Last-Translator: Nisok Kosin \n" -"Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Ταυτότητα: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "ΧÏήστης: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "ΣÏνδεση" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Σφάλμα: Δεν έχει επιλεχθεί κάποιος χÏήστης" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Εξουσιοδοτημένος παÏοχέας OpenID" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Η διευθυνσή σας σε Wordpress, Identi.ca, …" diff --git a/l10n/el/files_odfviewer.po b/l10n/el/user_webdavauth.po similarity index 60% rename from l10n/el/files_odfviewer.po rename to l10n/el/user_webdavauth.po index 5e6d54efe4d1cc15c6ffc8b2da7ec7d5f3d905d8..6a11e198943d9129446de05112aacf1c7ad8dcbd 100644 --- a/l10n/el/files_odfviewer.po +++ b/l10n/el/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dimitris M. , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 20:12+0000\n" +"Last-Translator: Dimitris M. \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/eo/admin_dependencies_chk.po b/l10n/eo/admin_dependencies_chk.po deleted file mode 100644 index 5fb88e68aed8a552d5bd949e3bf9e5b82a367c36..0000000000000000000000000000000000000000 --- a/l10n/eo/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 20:59+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "La modulo php-json necesas por komuniko inter la multaj aplikaĵoj" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "La modulo php-curl necesas por venigi la paÄotitolon dum aldono de legosigno" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "La modulo php-gd necesas por krei bildetojn." - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "La modulo php-ldap necesas por konekti al via LDAP-servilo." - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "La modulo php-zip necesas por elÅuti plurajn dosierojn per unu fojo." - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "La modulo php-mb_multibyte necesas por Äuste administri la kodprezenton." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "La modulo php-ctype necesas por validkontroli datumojn." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "La modulo php-xml necesas por kunhavigi dosierojn per WebDAV." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "La ordono allow_url_fopen de via php.ini devus valori 1 por ricevi scibazon el OCS-serviloj" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "La modulo php-pdo necesas por konservi datumojn de ownCloud en datumbazo." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Stato de dependoj" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Uzata de:" diff --git a/l10n/eo/admin_migrate.po b/l10n/eo/admin_migrate.po deleted file mode 100644 index 61384915c2afa1a37cd333f1c447644df127639e..0000000000000000000000000000000000000000 --- a/l10n/eo/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 20:32+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Malenporti ĉi tiun aperon de ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Ĉi tio kreos densigitan dosieron, kiu enhavos la datumojn de ĉi tiu apero de ownCloud.\nBonvolu elekti la tipon de malenportado:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Malenporti" diff --git a/l10n/eo/bookmarks.po b/l10n/eo/bookmarks.po deleted file mode 100644 index 926278cd289c181860a8f3185926c1e889e0945b..0000000000000000000000000000000000000000 --- a/l10n/eo/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-04 02:02+0200\n" -"PO-Revision-Date: 2012-08-03 22:44+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Legosignoj" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "nenomita" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Åœovu tion ĉi al la legosignoj de via TTT-legilo kaj klaku Äin, se vi volas rapide legosignigi TTT-paÄon:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Legi poste" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adreso" - -#: templates/list.php:14 -msgid "Title" -msgstr "Titolo" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Etikedoj" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Konservi legosignon" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Vi havas neniun legosignon" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/eo/calendar.po b/l10n/eo/calendar.po deleted file mode 100644 index 4fc02e02b0c7e98017a36532f7950449309c425b..0000000000000000000000000000000000000000 --- a/l10n/eo/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 14:17+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Ne ĉiuj kalendaroj estas tute kaÅmemorigitaj" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Ĉio Åajnas tute kaÅmemorigita" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Neniu kalendaro troviÄis." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Neniu okazaĵo troviÄis." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "MalÄusta kalendaro" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "AÅ­ la dosiero enhavas neniun okazaĵon aÅ­ ĉiuj okazaĵoj jam estas konservitaj en via kalendaro." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "okazaĵoj estas konservitaj en la nova kalendaro" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Enporto malsukcesis" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "okazaĵoj estas konservitaj en via kalendaro" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nova horozono:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "La horozono estas ÅanÄita" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Nevalida peto" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendaro" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd d/M" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd d/M" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "d MMM[ yyyy]{ '—'d[ MMM] yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, d-a de MMM yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "NaskiÄotago" - -#: lib/app.php:122 -msgid "Business" -msgstr "Negoco" - -#: lib/app.php:123 -msgid "Call" -msgstr "Voko" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klientoj" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Livero" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Ferioj" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideoj" - -#: lib/app.php:128 -msgid "Journey" -msgstr "VojaÄo" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileo" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Rendevuo" - -#: lib/app.php:131 -msgid "Other" -msgstr "Alia" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Persona" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projektoj" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Demandoj" - -#: lib/app.php:135 -msgid "Work" -msgstr "Laboro" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "de" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "nenomita" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nova kalendaro" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ĉi tio ne ripetiÄas" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Tage" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Semajne" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Labortage" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Semajnduope" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Monate" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Jare" - -#: lib/object.php:388 -msgid "never" -msgstr "neniam" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "laÅ­ aperoj" - -#: lib/object.php:390 -msgid "by date" -msgstr "laÅ­ dato" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "laÅ­ monattago" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "laÅ­ semajntago" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "lundo" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "mardo" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "merkredo" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "ĵaÅ­do" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "vendredo" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "sabato" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "dimanĉo" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "la monatsemajno de la okazaĵo" - -#: lib/object.php:428 -msgid "first" -msgstr "unua" - -#: lib/object.php:429 -msgid "second" -msgstr "dua" - -#: lib/object.php:430 -msgid "third" -msgstr "tria" - -#: lib/object.php:431 -msgid "fourth" -msgstr "kvara" - -#: lib/object.php:432 -msgid "fifth" -msgstr "kvina" - -#: lib/object.php:433 -msgid "last" -msgstr "lasta" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januaro" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februaro" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Marto" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Aprilo" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Majo" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Junio" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Julio" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "AÅ­gusto" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Septembro" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktobro" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembro" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Decembro" - -#: lib/object.php:488 -msgid "by events date" -msgstr "laÅ­ okazaĵdato" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "laÅ­ jartago(j)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "laÅ­ semajnnumero(j)" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "laÅ­ tago kaj monato" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Dato" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "dim." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "lun." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "mar." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "mer." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "ĵaÅ­." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "ven." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "sab." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Apr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Maj." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "AÅ­g." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Okt." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dec." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "La tuta tago" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Mankas iuj kampoj" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titolo" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "ekde la dato" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "ekde la horo" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Äis la dato" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Äis la horo" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "La okazaĵo finas antaÅ­ komenci" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Datumbaza malsukceso okazis" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Semajno" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Monato" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Listo" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "HodiaÅ­" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Agordo" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Viaj kalendaroj" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav-a ligilo" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Kunhavigitaj kalendaroj" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Neniu kunhavigita kalendaro" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Kunhavigi kalendaron" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "ElÅuti" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Redakti" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Forigi" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "kunhavigita kun vi fare de" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nova kalendaro" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Redakti la kalendaron" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Montrota nomo" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiva" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalendarokoloro" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Konservi" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Sendi" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Nuligi" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Redakti okazaĵon" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Elporti" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informo de okazaĵo" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Ripetata" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarmo" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Ĉeestontoj" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Kunhavigi" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Okazaĵotitolo" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorio" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Disigi kategoriojn per komoj" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Redakti kategoriojn" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "La tuta tago" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Ekde" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Äœis" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Altnivela agordo" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Loko" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Loko de okazaĵo" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Priskribo" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Okazaĵopriskribo" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ripeti" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Altnivelo" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Elekti semajntagojn" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Elekti tagojn" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "kaj la jartago de la okazaĵo." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "kaj la monattago de la okazaĵo." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Elekti monatojn" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Elekti semajnojn" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "kaj la jarsemajno de la okazaĵo." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalo" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Fino" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "aperoj" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Krei novan kalendaron" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Enporti kalendarodosieron" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Bonvolu elekti kalendaron" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nomo de la nova kalendaro" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Prenu haveblan nomon!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Kalendaro kun ĉi tiu nomo jam ekzastas. Se vi malgraÅ­e daÅ­ros, ĉi tiuj kalendaroj kunfandiÄos." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Enporti" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Fermi la dialogon" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Krei okazaĵon" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Vidi okazaĵon" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Neniu kategorio elektita" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "ĉe" - -#: templates/settings.php:10 -msgid "General" -msgstr "Äœenerala" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Horozono" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "AÅ­tomate Äisdatigi la horozonon" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Horoformo" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Komenci semajnon je" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "KaÅmemoro" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "ForviÅi kaÅmemoron por ripeto de okazaĵoj" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URL-oj" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "sinkronigaj adresoj por CalDAV-kalendaroj" - -#: templates/settings.php:87 -msgid "more info" -msgstr "pli da informo" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Ĉefa adreso (Kontact kaj aliaj)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Nurlegebla(j) iCalendar-ligilo(j)" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Uzantoj" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "elekti uzantojn" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Redaktebla" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupoj" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "elekti grupojn" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "publikigi" diff --git a/l10n/eo/contacts.po b/l10n/eo/contacts.po deleted file mode 100644 index 3d95d0c4484eee19122e0007d61387ca1f1188de..0000000000000000000000000000000000000000 --- a/l10n/eo/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Eraro dum (mal)aktivigo de adresaro." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "identigilo ne agordiÄis." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Ne eblas Äisdatigi adresaron kun malplena nomo." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Eraro dum Äisdatigo de adresaro." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Neniu identigilo proviziÄis." - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Eraro dum agordado de kontrolsumo." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Neniu kategorio elektiÄis por forigi." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Neniu adresaro troviÄis." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Neniu kontakto troviÄis." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Eraro okazis dum aldono de kontakto." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "eronomo ne agordiÄis." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Ne eblis analizi kontakton:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Ne eblas aldoni malplenan propraĵon." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "AlmenaÅ­ unu el la adreskampoj necesas pleniÄi." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Provante aldoni duobligitan propraĵon:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informo pri vCard estas malÄusta. Bonvolu reÅargi la paÄon." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Mankas identigilo" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Eraro dum analizo de VCard por identigilo:" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "kontrolsumo ne agordiÄis." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informo pri vCard malÄustas. Bonvolu reÅargi la paÄon:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Io FUBAR-is." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Neniu kontaktidentigilo sendiÄis." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Eraro dum lego de kontakta foto." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Eraro dum konservado de provizora dosiero." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "La alÅutata foto ne validas." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Kontaktidentigilo mankas." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Neniu vojo al foto sendiÄis." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Dosiero ne ekzistas:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Eraro dum Åargado de bildo." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Eraro dum ekhaviÄis kontakta objekto." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Eraro dum ekhaviÄis la propraĵon PHOTO." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Eraro dum konserviÄis kontakto." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Eraro dum aligrandiÄis bildo" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Eraro dum stuciÄis bildo." - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Eraro dum kreiÄis provizora bildo." - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Eraro dum serĉo de bildo: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Eraro dum alÅutiÄis kontaktoj al konservejo." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Ne estas eraro, la dosiero alÅutiÄis sukcese." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "La alÅutita dosiero transpasas la preskribon upload_max_filesize en php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "La alÅutita dosiero transpasas la preskribon MAX_FILE_SIZE kiu specifiÄis en la HTML-formularo" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "la alÅutita dosiero nur parte alÅutiÄis" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Neniu dosiero alÅutiÄis." - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Mankas provizora dosierujo." - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Ne eblis konservi provizoran bildon: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Ne eblis Åargi provizoran bildon: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Neniu dosiero alÅutiÄis. Nekonata eraro." - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontaktoj" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Pardonu, ĉi tiu funkcio ankoraÅ­ ne estas realigita." - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Ne disponebla" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Ne eblis ekhavi validan adreson." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Eraro" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Ĉi tiu propraĵo devas ne esti malplena." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Ne eblis seriigi erojn." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Redakti nomon" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Neniu dosiero elektita por alÅuto." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "La dosiero, kiun vi provas alÅuti, transpasas la maksimuman grandon por dosieraj alÅutoj en ĉi tiu servilo." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Elektu tipon" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Rezulto: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " enportoj, " - -#: js/loader.js:49 -msgid " failed." -msgstr "malsukcesoj." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Adresaro ne troviÄis:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ĉi tiu ne estas via adresaro." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Ne eblis trovi la kontakton." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Laboro" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Hejmo" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Alia" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "PoÅtelefono" - -#: lib/app.php:203 -msgid "Text" -msgstr "Teksto" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voĉo" - -#: lib/app.php:205 -msgid "Message" -msgstr "MesaÄo" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fakso" - -#: lib/app.php:207 -msgid "Video" -msgstr "Videaĵo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Televokilo" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Interreto" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "NaskiÄotago" - -#: lib/app.php:253 -msgid "Business" -msgstr "Negoco" - -#: lib/app.php:254 -msgid "Call" -msgstr "Voko" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Klientoj" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Liveranto" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Ferioj" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ideoj" - -#: lib/app.php:259 -msgid "Journey" -msgstr "VojaÄo" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubileo" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Kunveno" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Persona" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projektoj" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Demandoj" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "NaskiÄtago de {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakto" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Aldoni kontakton" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Enporti" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Agordo" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adresaroj" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Fermi" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Fulmoklavoj" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigado" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Jena kontakto en la listo" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Maljena kontakto en la listo" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Jena adresaro" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Maljena adresaro" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Agoj" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "RefreÅigi la kontaktoliston" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Aldoni novan kontakton" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Aldoni novan adresaron" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Forigi la nunan kontakton" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Demeti foton por alÅuti" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Forigi nunan foton" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Redakti nunan foton" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "AlÅuti novan foton" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Elekti foton el ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Propra formo, Mallonga nomo, Longa nomo, Inversa aÅ­ Inversa kun komo" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Redakti detalojn de nomo" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizaĵo" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Forigi" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Kromnomo" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Enigu kromnomon" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "TTT-ejo" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.iuejo.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Iri al TTT-ejon" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "yyyy-mm-dd" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupoj" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Disigi grupojn per komoj" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Redakti grupojn" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferata" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Bonvolu specifi validan retpoÅtadreson." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Enigi retpoÅtadreson" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "RetpoÅtmesaÄo al adreso" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Forigi retpoÅþadreson" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Enigi telefonnumeron" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Forigi telefonnumeron" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Vidi en mapo" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Redakti detalojn de adreso" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Aldoni notojn ĉi tie." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Aldoni kampon" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefono" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "RetpoÅtadreso" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adreso" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Noto" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "ElÅuti kontakton" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Forigi kontakton" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "La provizora bildo estas forigita de la kaÅmemoro." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Redakti adreson" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tipo" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Abonkesto" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Stratadreso" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Strato kaj numero" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Etendita" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Urbo" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regiono" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "PoÅtokodo" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "PoÅtkodo" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Lando" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adresaro" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Honoraj antaÅ­metaĵoj" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "f-ino" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "s-ino" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "s-ro" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "s-ro" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "s-ino" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "d-ro" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Persona nomo" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Pliaj nomoj" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Familia nomo" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Honoraj postmetaĵoj" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Enporti kontaktodosieron" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Bonvolu elekti adresaron" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "krei novan adresaron" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nomo de nova adresaro" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Enportante kontaktojn" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Vi ne havas kontaktojn en via adresaro" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Aldoni kontakton" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Elektu adresarojn" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Enigu nomon" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Enigu priskribon" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "adresoj por CardDAV-sinkronigo" - -#: templates/settings.php:3 -msgid "more info" -msgstr "pli da informo" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Ĉefa adreso (por Kontakt kaj aliaj)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Montri CardDav-ligilon" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Montri nur legeblan VCF-ligilon" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "ElÅuti" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Redakti" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nova adresaro" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nomo" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Priskribo" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Konservi" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Nuligi" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Pli..." diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 1d81d9fb2a73bcabb876e99505f7b7660561567a..517787299a0247938b22d691897c9072701ce151 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/core.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-02 23:10+0000\n" +"Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,208 +20,241 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nomo de aplikaĵo ne proviziiÄis." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Ne proviziÄis tipon de kategorio." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ĉu neniu kategorio estas aldonota?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Ĉi tiu kategorio jam ekzistas: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Ne proviziÄis tipon de objekto." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "Ne proviziÄis ID-on de %s." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Eraro dum aldono de %s al favoratoj." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Neniu kategorio elektiÄis por forigo." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Eraro dum forigo de %s el favoratoj." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Agordo" -#: js/js.js:645 -msgid "January" -msgstr "Januaro" +#: js/js.js:704 +msgid "seconds ago" +msgstr "sekundoj antaÅ­e" -#: js/js.js:645 -msgid "February" -msgstr "Februaro" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "antaÅ­ 1 minuto" -#: js/js.js:645 -msgid "March" -msgstr "Marto" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "antaÅ­ {minutes} minutoj" -#: js/js.js:645 -msgid "April" -msgstr "Aprilo" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "antaÅ­ 1 horo" -#: js/js.js:645 -msgid "May" -msgstr "Majo" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "antaÅ­ {hours} horoj" -#: js/js.js:645 -msgid "June" -msgstr "Junio" +#: js/js.js:709 +msgid "today" +msgstr "hodiaÅ­" -#: js/js.js:646 -msgid "July" -msgstr "Julio" +#: js/js.js:710 +msgid "yesterday" +msgstr "hieraÅ­" -#: js/js.js:646 -msgid "August" -msgstr "AÅ­gusto" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "antaÅ­ {days} tagoj" -#: js/js.js:646 -msgid "September" -msgstr "Septembro" +#: js/js.js:712 +msgid "last month" +msgstr "lastamonate" -#: js/js.js:646 -msgid "October" -msgstr "Oktobro" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "antaÅ­ {months} monatoj" -#: js/js.js:646 -msgid "November" -msgstr "Novembro" +#: js/js.js:714 +msgid "months ago" +msgstr "monatoj antaÅ­e" -#: js/js.js:646 -msgid "December" -msgstr "Decembro" +#: js/js.js:715 +msgid "last year" +msgstr "lastajare" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "jaroj antaÅ­e" + +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Elekti" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Nuligi" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ne" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Jes" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Akcepti" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Neniu kategorio elektiÄis por forigo." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Ne indikiÄis tipo de la objekto." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "Eraro" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Ne indikiÄis nomo de la aplikaĵo." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "La necesa dosiero {file} ne instaliÄis!" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "Eraro dum kunhavigo" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "Eraro dum malkunhavigo" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" - -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +msgstr "Eraro dum ÅanÄo de permesoj" -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Kunhavigita kun vi kaj la grupo {group} de {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Kunhavigita kun vi de {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Kunhavigi kun" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Kunhavigi per ligilo" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Protekti per pasvorto" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Pasvorto" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Agordi limdaton" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Limdato" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Kunhavigi per retpoÅto:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Ne troviÄis gento" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Rekunhavigo ne permesatas" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Kunhavigita en {item} kun {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Malkunhavigi" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "povas redakti" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "alirkontrolo" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "krei" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "Äisdatigi" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "forigi" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "kunhavigi" -#: js/share.js:317 js/share.js:476 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" -msgstr "" +msgstr "Protektita per pasvorto" -#: js/share.js:489 +#: js/share.js:533 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Eraro dum malagordado de limdato" -#: js/share.js:501 +#: js/share.js:545 msgid "Error setting expiration date" -msgstr "" +msgstr "Eraro dum agordado de limdato" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "La pasvorto de ownCloud restariÄis." @@ -234,19 +267,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Vi ricevos ligilon retpoÅte por rekomencigi vian pasvorton." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Petita" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Ensaluto malsukcesis!" +msgid "Request failed!" +msgstr "Peto malsukcesis!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Uzantonomo" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Peti rekomencigon" @@ -298,72 +331,187 @@ msgstr "La nubo ne estas trovita" msgid "Edit categories" msgstr "Redakti kategoriojn" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Aldoni" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Sekureca averto" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Ne disponeblas sekura generilo de hazardaj numeroj; bonvolu kapabligi la OpenSSL-kromaĵon por PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Krei administran konton" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Progresinta" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datuma dosierujo" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Agordi la datumbazon" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "estos uzata" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Datumbaza uzanto" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Datumbaza pasvorto" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Datumbaza nomo" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Datumbaza tabelospaco" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Datumbaza gastigo" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Fini la instalon" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "dimanĉo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "lundo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "mardo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "merkredo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "ĵaÅ­do" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "vendredo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "sabato" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Januaro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Februaro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Marto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Aprilo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Majo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Junio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Julio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "AÅ­gusto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Septembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Oktobro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Novembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Decembro" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "TTT-servoj sub via kontrolo" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Elsaluti" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Se vi ne ÅanÄis vian pasvorton lastatempe, via konto eble kompromitas!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Bonvolu ÅanÄi vian pasvorton por sekurigi vian konton ree." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Ĉu vi perdis vian pasvorton?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "memori" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Ensaluti" @@ -378,3 +526,17 @@ msgstr "maljena" #: templates/part.pagenavi.php:20 msgid "next" msgstr "jena" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Sekureca averto!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Bonvolu kontroli vian pasvorton.
            Pro sekureco, oni okaze povas peti al vi enigi vian pasvorton ree." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Kontroli" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index 11d070fa2372829139b64cdbf56472b346ba68c1..98d1dba639fd23a161531c357c834d827d605f1a 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 22:06+0000\n" +"Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +24,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Ne estas eraro, la dosiero alÅutiÄis sukcese" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "La dosiero alÅutita superas la regulon upload_max_filesize el php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "La dosiero alÅutita superas la regulon upload_max_filesize el php.ini: " -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" -msgstr "La dosiero alÅutita superas laregulon MAX_FILE_SIZE, kiu estas difinita en la HTML-formularo" +msgstr "La dosiero alÅutita superas la regulon MAX_FILE_SIZE, kiu estas difinita en la HTML-formularo" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "La alÅutita dosiero nur parte alÅutiÄis" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Neniu dosiero estas alÅutita" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Mankas tempa dosierujo" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Malsukcesis skribo al disko" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Dosieroj" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Malkunhavigi" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Forigi" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Alinomigi" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "jam ekzistas" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} jam ekzistas" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "anstataÅ­igi" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "sugesti nomon" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "nuligi" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "anstataÅ­igita" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "anstataÅ­iÄis {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "malfari" -#: js/filelist.js:241 -msgid "with" -msgstr "kun" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "anstataÅ­iÄis {new_name} per {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "malkunhaviÄis {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "malkunhavigita" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "foriÄis {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "forigita" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nevalida nomo: “\\â€, “/â€, “<â€, “>â€, “:â€, “\"â€, “|â€, “?†kaj “*†ne permesatas." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "generanta ZIP-dosiero, Äi povas daÅ­ri iom da tempo" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ne eblis alÅuti vian dosieron ĉar Äi estas dosierujo aÅ­ havas 0 duumokojn" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "AlÅuta eraro" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Fermi" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Traktotaj" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 dosiero estas alÅutata" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} dosieroj alÅutatas" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "La alÅuto nuliÄis." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "DosieralÅuto plenumiÄas. Lasi la paÄon nun nuligus la alÅuton." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nevalida nomo, “/†ne estas permesata." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nevalida nomo de dosierujo. Uzo de “Shared†rezervitas de Owncloud" -#: js/files.js:667 -msgid "files scanned" -msgstr "" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} dosieroj skaniÄis" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "eraro dum skano" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nomo" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Grando" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modifita" -#: js/files.js:777 -msgid "folder" -msgstr "dosierujo" - -#: js/files.js:779 -msgid "folders" -msgstr "dosierujoj" - -#: js/files.js:787 -msgid "file" -msgstr "dosiero" - -#: js/files.js:789 -msgid "files" -msgstr "dosieroj" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 dosierujo" -#: js/files.js:843 -msgid "months ago" -msgstr "" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} dosierujoj" -#: js/files.js:844 -msgid "last year" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 dosiero" -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} dosierujoj" #: templates/admin.php:5 msgid "File handling" @@ -222,27 +193,27 @@ msgstr "Dosieradministro" msgid "Maximum upload size" msgstr "Maksimuma alÅutogrando" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "maks. ebla: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Necesa por elÅuto de pluraj dosieroj kaj dosierujoj." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Kapabligi ZIP-elÅuton" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 signifas senlime" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maksimuma enirgrando por ZIP-dosieroj" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Konservi" @@ -250,52 +221,48 @@ msgstr "Konservi" msgid "New" msgstr "Nova" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tekstodosiero" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Dosierujo" -#: templates/index.php:11 -msgid "From url" -msgstr "El URL" +#: templates/index.php:14 +msgid "From link" +msgstr "El ligilo" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "AlÅuti" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Nuligi alÅuton" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Nenio estas ĉi tie. AlÅutu ion!" -#: templates/index.php:50 -msgid "Share" -msgstr "Kunhavigi" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "ElÅuti" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "ElÅuto tro larÄa" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "La dosieroj, kiujn vi provas alÅuti, transpasas la maksimuman grandon por dosieralÅutoj en ĉi tiu servilo." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Dosieroj estas skanataj, bonvolu atendi." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Nuna skano" diff --git a/l10n/eo/files_external.po b/l10n/eo/files_external.po index 2ef114a330c833aa78e2be1867fe20d5c92d9194..ea8451b7f4df2648e22796e4eaa0b83703bba766 100644 --- a/l10n/eo/files_external.po +++ b/l10n/eo/files_external.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-14 02:05+0200\n" +"PO-Revision-Date: 2012-10-13 05:00+0000\n" +"Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +20,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "Alirpermeso donita" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Eraro dum agordado de la memorservo Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Doni alirpermeson" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Plenigu ĉiujn neprajn kampojn" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "Bonvolu provizi Ålosilon de la aplikaĵo Dropbox validan kaj sekretan." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Eraro dum agordado de la memorservo Google Drive" #: templates/settings.php:3 msgid "External Storage" diff --git a/l10n/eo/files_pdfviewer.po b/l10n/eo/files_pdfviewer.po deleted file mode 100644 index 14fae82ce83ccd7906da95031bfe197ee39c58e4..0000000000000000000000000000000000000000 --- a/l10n/eo/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/eo/files_sharing.po b/l10n/eo/files_sharing.po index dc0d47ec89ba671f0ffd4b8c28496247c426e482..e9778f8450ca1a365ab5657580360f77ebb1934f 100644 --- a/l10n/eo/files_sharing.po +++ b/l10n/eo/files_sharing.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-14 02:05+0200\n" +"PO-Revision-Date: 2012-10-13 03:01+0000\n" +"Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,12 +29,12 @@ msgstr "Sendi" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s kunhavigis la dosierujon %s kun vi" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s kunhavigis la dosieron %s kun vi" #: templates/public.php:14 templates/public.php:30 msgid "Download" @@ -44,6 +44,6 @@ msgstr "ElÅuti" msgid "No preview available for" msgstr "Ne haveblas antaÅ­vido por" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" msgstr "TTT-servoj regataj de vi" diff --git a/l10n/eo/files_texteditor.po b/l10n/eo/files_texteditor.po deleted file mode 100644 index 65715031621df9fce384606334fcf7be56bd1cd7..0000000000000000000000000000000000000000 --- a/l10n/eo/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/eo/files_versions.po b/l10n/eo/files_versions.po index ef4f6f190dde623e9ab3da6e53490bd3122fdc4b..644156033198530a5422d074d95f7aa195037e4b 100644 --- a/l10n/eo/files_versions.po +++ b/l10n/eo/files_versions.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-14 02:05+0200\n" +"PO-Revision-Date: 2012-10-13 02:50+0000\n" +"Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,7 +24,7 @@ msgstr "Eksvalidigi ĉiujn eldonojn" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "Historio" #: templates/settings-personal.php:4 msgid "Versions" @@ -36,8 +36,8 @@ msgstr "Ĉi tio forigos ĉiujn estantajn sekurkopiajn eldonojn de viaj dosieroj" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "Dosiereldonigo" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Kapabligi" diff --git a/l10n/eo/gallery.po b/l10n/eo/gallery.po deleted file mode 100644 index df1ecedeaf29c7ae828a2f45f99607e5d3cb9179..0000000000000000000000000000000000000000 --- a/l10n/eo/gallery.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Michael Moroni , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Esperanto (http://www.transifex.net/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Bildoj" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Agordo" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Reskani" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Halti" - -#: templates/index.php:18 -msgid "Share" -msgstr "Kunhavigi" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "AntaÅ­en" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Forigi konfirmadon" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Ĉu vi volas forigi la albumon?" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "ÅœanÄi albumnomon" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nova albumnomo" diff --git a/l10n/eo/impress.po b/l10n/eo/impress.po deleted file mode 100644 index 930ca99a87947d1b89eb6d5091c7e544903bede5..0000000000000000000000000000000000000000 --- a/l10n/eo/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/eo/lib.po b/l10n/eo/lib.po index 5e677a604558e5b2b00f87606b837d926a462e78..b4a219e21a2448bb69952376cec8230bed2196d6 100644 --- a/l10n/eo/lib.po +++ b/l10n/eo/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-09 02:01+0200\n" -"PO-Revision-Date: 2012-09-08 21:50+0000\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 21:42+0000\n" "Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -42,19 +42,19 @@ msgstr "Aplikaĵoj" msgid "Admin" msgstr "Administranto" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "ZIP-elÅuto estas malkapabligita." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Dosieroj devas elÅutiÄi unuope." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Reen al la dosieroj" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "La elektitaj dosieroj tro grandas por genero de ZIP-dosiero." @@ -62,7 +62,7 @@ msgstr "La elektitaj dosieroj tro grandas por genero de ZIP-dosiero." msgid "Application is not enabled" msgstr "La aplikaĵo ne estas kapabligita" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "AÅ­tentiga eraro" @@ -70,57 +70,84 @@ msgstr "AÅ­tentiga eraro" msgid "Token expired. Please reload page." msgstr "Ä´etono eksvalidiÄis. Bonvolu reÅargi la paÄon." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Dosieroj" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Teksto" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Bildoj" + +#: template.php:103 msgid "seconds ago" msgstr "sekundojn antaÅ­e" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "antaÅ­ 1 minuto" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "antaÅ­ %d minutoj" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "antaÅ­ 1 horo" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "antaÅ­ %d horoj" + +#: template.php:108 msgid "today" msgstr "hodiaÅ­" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "hieraÅ­" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "antaÅ­ %d tagoj" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "lasta monato" -#: template.php:96 -msgid "months ago" -msgstr "monatojn antaÅ­e" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "antaÅ­ %d monatoj" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "lasta jaro" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "jarojn antaÅ­e" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s haveblas. Ekhavu pli da informo" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "Äisdata" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "Äisdateckontrolo estas malkapabligita" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Ne troviÄis kategorio “%sâ€" diff --git a/l10n/eo/media.po b/l10n/eo/media.po deleted file mode 100644 index 135087b52cc66f2225cfb85e0bae3dd07721dd27..0000000000000000000000000000000000000000 --- a/l10n/eo/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -# Michael Moroni , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 16:47+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "Muziko" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "Aldoni albumon al ludlisto" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Ludi" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "PaÅ­zigi" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Maljena" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Jena" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Silentigi" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Malsilentigi" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Reskani la aron" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artisto" - -#: templates/music.php:38 -msgid "Album" -msgstr "Albumo" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titolo" diff --git a/l10n/eo/settings.po b/l10n/eo/settings.po index 88f5e5f3574bdd32e66313b0ea616b6801267f40..49a5a9135e40a6e5a0b264a896170817bd5f5154 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 22:14+0000\n" +"Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +19,73 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Ne eblis Åargi liston el aplikaĵovendejo" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "AÅ­tentiga eraro" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "La grupo jam ekzistas" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "Ne eblis aldoni la grupon" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Ne eblis kapabligi la aplikaĵon." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "La retpoÅtadreso konserviÄis" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Nevalida retpoÅtadreso" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "La agordo de OpenID estas ÅanÄita" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Nevalida peto" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "Ne eblis forigi la grupon" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "AÅ­tentiga eraro" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "Ne eblis forigi la uzanton" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "La lingvo estas ÅanÄita" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Administrantoj ne povas forigi sin mem el la administra grupo." + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "Ne eblis aldoni la uzanton al la grupo %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "Ne eblis forigi la uzantan el la grupo %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Malkapabligi" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Kapabligi" @@ -90,104 +93,17 @@ msgstr "Kapabligi" msgid "Saving..." msgstr "Konservante..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Esperanto" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Sekureca averto" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Protokolo" - -#: templates/admin.php:116 -msgid "More" -msgstr "Pli" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Aldonu vian aplikaĵon" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Pli da aplikaĵoj" #: templates/apps.php:27 msgid "Select an App" @@ -199,7 +115,7 @@ msgstr "Vidu la paÄon pri aplikaĵoj ĉe apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "-permesilhavigita de " #: templates/help.php:9 msgid "Documentation" @@ -213,22 +129,22 @@ msgstr "Administrante grandajn dosierojn" msgid "Ask a question" msgstr "Faru demandon" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemoj okazis dum konektado al la helpa datumbazo." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Iri tien mane." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Respondi" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "Vi uzas %s el la haveblaj %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -240,7 +156,7 @@ msgstr "ElÅuti" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Via pasvorto ÅanÄiÄis" #: templates/personal.php:20 msgid "Unable to change your password" @@ -286,6 +202,16 @@ msgstr "Helpu traduki" msgid "use this address to connect to your ownCloud in your file manager" msgstr "uzu ĉi tiun adreson por konektiÄi al via ownCloud per via dosieradministrilo" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Ellaborita de la komunumo de ownCloud, la fontokodo publikas laÅ­ la permesilo AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nomo" diff --git a/l10n/eo/tasks.po b/l10n/eo/tasks.po deleted file mode 100644 index c53752bc4ccbbb0e99e0028c064c3ff9c4e71a15..0000000000000000000000000000000000000000 --- a/l10n/eo/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 14:52+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Nevalida dato/horo" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Taskoj" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Neniu kategorio" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Nespecifita" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=plej alta" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=meza" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=plej malalta" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Malplena resumo" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Nevalida plenuma elcento" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Nevalida pligravo" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Aldoni taskon" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Ordigi laÅ­ limdato" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Ordigi laÅ­ listo" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Ordigi laÅ­ plenumo" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Ordigi laÅ­ loko" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Ordigi laÅ­ pligravo" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Ordigi laÅ­ etikedo" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Åœargante taskojn..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Grava" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Pli" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Malpli" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Forigi" diff --git a/l10n/eo/user_ldap.po b/l10n/eo/user_ldap.po index ff8480473e14d7269f4e859a363497db04bf900f..0f048daf6be7008592f2a743650ff59351d3ebbc 100644 --- a/l10n/eo/user_ldap.po +++ b/l10n/eo/user_ldap.po @@ -8,15 +8,15 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-30 02:02+0200\n" -"PO-Revision-Date: 2012-08-29 20:31+0000\n" +"POT-Creation-Date: 2012-10-14 02:05+0200\n" +"PO-Revision-Date: 2012-10-13 05:41+0000\n" "Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: templates/settings.php:8 msgid "Host" @@ -130,7 +130,7 @@ msgstr "Malkapabligi validkontrolon de SSL-atestiloj." msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Se la konekto nur funkcias kun ĉi tiu malnepro, enportu la SSL-atestilo de la LDAP-servilo en via ownCloud-servilo." #: templates/settings.php:23 msgid "Not recommended, use for testing only." diff --git a/l10n/eo/user_migrate.po b/l10n/eo/user_migrate.po deleted file mode 100644 index 27ea6386b0bc5d89e4b9e61848fe3b5f1def4b7f..0000000000000000000000000000000000000000 --- a/l10n/eo/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 19:36+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Malenporti" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Io malsukcesis dum la enportota dosiero generiÄis" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Eraro okazis" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Malenporti vian uzantokonton" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Ĉi tio kreos densigitan dosieron, kiu enhavas vian konton de ownCloud." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Enporti uzantokonton" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "ZIP-dosiero de uzanto de ownCloud" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Enporti" diff --git a/l10n/eo/user_openid.po b/l10n/eo/user_openid.po deleted file mode 100644 index 237164674bb16dd42a3ceab549598f95c3b968fe..0000000000000000000000000000000000000000 --- a/l10n/eo/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mariano , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 21:05+0000\n" -"Last-Translator: Mariano \n" -"Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Ĉi tio estas finpunkto de OpenID-servilo. Por pli da informo, vidu" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Idento: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Regno: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Uzanto: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Ensaluti" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Eraro: neniu uzanto estas elektita" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "Vi povas ensaluti en aliaj ejoj per tiu ĉi adreso" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Rajtigita OpenID-provizanto" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Via adreso ĉe Wordpress, Identi.ca…" diff --git a/l10n/eo/files_odfviewer.po b/l10n/eo/user_webdavauth.po similarity index 60% rename from l10n/eo/files_odfviewer.po rename to l10n/eo/user_webdavauth.po index ebc4993230eb72f5d7ae9f5407dc9622ac342208..cb6f7a47384b6acd19ee8abfa530d03ba62fb2f6 100644 --- a/l10n/eo/files_odfviewer.po +++ b/l10n/eo/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Mariano , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 00:01+0100\n" +"PO-Revision-Date: 2012-11-23 19:41+0000\n" +"Last-Translator: Mariano \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eo\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV-a URL: http://" diff --git a/l10n/es/admin_dependencies_chk.po b/l10n/es/admin_dependencies_chk.po deleted file mode 100644 index acbf8db12a8b6cedda51f01aee8faaafed21b6d5..0000000000000000000000000000000000000000 --- a/l10n/es/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Javier Llorente , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:01+0200\n" -"PO-Revision-Date: 2012-08-23 09:25+0000\n" -"Last-Translator: Javier Llorente \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Estado de las dependencias" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Usado por:" diff --git a/l10n/es/admin_migrate.po b/l10n/es/admin_migrate.po deleted file mode 100644 index fd2230f4c7d10810658b0350aecfa141c7ef257e..0000000000000000000000000000000000000000 --- a/l10n/es/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 04:59+0000\n" -"Last-Translator: juanman \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Exportar esta instancia de ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Se creará un archivo comprimido que contendrá los datos de esta instancia de owncloud.\n Por favor elegir el tipo de exportación:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Exportar" diff --git a/l10n/es/bookmarks.po b/l10n/es/bookmarks.po deleted file mode 100644 index d00d8c372b484b3e1dedbfaa96b22b405f5e29eb..0000000000000000000000000000000000000000 --- a/l10n/es/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-30 02:02+0200\n" -"PO-Revision-Date: 2012-07-29 04:30+0000\n" -"Last-Translator: juanman \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Marcadores" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "sin nombre" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Arrastra desde aquí a los marcadores de tu navegador, y haz clic cuando quieras marcar una página web rápidamente:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Leer después" - -#: templates/list.php:13 -msgid "Address" -msgstr "Dirección" - -#: templates/list.php:14 -msgid "Title" -msgstr "Título" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Etiquetas" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Guardar marcador" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "No tienes marcadores" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Bookmarklet
            " diff --git a/l10n/es/calendar.po b/l10n/es/calendar.po deleted file mode 100644 index 06a6465879a5f5494cc66358f8125cbab4b8d668..0000000000000000000000000000000000000000 --- a/l10n/es/calendar.po +++ /dev/null @@ -1,819 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Javier Llorente , 2012. -# , 2011, 2012. -# oSiNaReF <>, 2012. -# , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Aún no se han guardado en caché todos los calendarios" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Parece que se ha guardado todo en caché" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "No se encontraron calendarios." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "No se encontraron eventos." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Calendario incorrecto" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "El archivo no contiene eventos o ya existen en tu calendario." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "Los eventos han sido guardados en el nuevo calendario" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Fallo en la importación" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "eventos se han guardado en tu calendario" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nueva zona horaria:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zona horaria cambiada" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Petición no válida" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendario" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Cumpleaños" - -#: lib/app.php:122 -msgid "Business" -msgstr "Negocios" - -#: lib/app.php:123 -msgid "Call" -msgstr "Llamada" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clientes" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Entrega" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Festivos" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideas" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Viaje" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Aniversario" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Reunión" - -#: lib/app.php:131 -msgid "Other" -msgstr "Otro" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personal" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Proyectos" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Preguntas" - -#: lib/app.php:135 -msgid "Work" -msgstr "Trabajo" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "por" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "Sin nombre" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nuevo calendario" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "No se repite" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Diariamente" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Semanalmente" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Días de semana laboral" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Cada 2 semanas" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensualmente" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Anualmente" - -#: lib/object.php:388 -msgid "never" -msgstr "nunca" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "por ocurrencias" - -#: lib/object.php:390 -msgid "by date" -msgstr "por fecha" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "por día del mes" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "por día de la semana" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Lunes" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Martes" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Miércoles" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Jueves" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Viernes" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sábado" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Domingo" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "eventos de la semana del mes" - -#: lib/object.php:428 -msgid "first" -msgstr "primer" - -#: lib/object.php:429 -msgid "second" -msgstr "segundo" - -#: lib/object.php:430 -msgid "third" -msgstr "tercer" - -#: lib/object.php:431 -msgid "fourth" -msgstr "cuarto" - -#: lib/object.php:432 -msgid "fifth" -msgstr "quinto" - -#: lib/object.php:433 -msgid "last" -msgstr "último" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Enero" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Febrero" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Marzo" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Abril" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mayo" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Junio" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Julio" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Agosto" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Septiembre" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Octubre" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Noviembre" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Diciembre" - -#: lib/object.php:488 -msgid "by events date" -msgstr "por fecha de los eventos" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "por día(s) del año" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "por número(s) de semana" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "por día y mes" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Fecha" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Dom." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Lun." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Mar." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Mier." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Jue." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Vie." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Sab." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Ene." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Abr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "May." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Ago." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Oct." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dic." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Todo el día" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Los campos que faltan" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Título" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Desde la fecha" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Desde la hora" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Hasta la fecha" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Hasta la hora" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "El evento termina antes de que comience" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Se ha producido un error en la base de datos" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Semana" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mes" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hoy" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Tus calendarios" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Enlace a CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendarios compartidos" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Calendarios no compartidos" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Compartir calendario" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Descargar" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Editar" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Eliminar" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "compartido contigo por" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nuevo calendario" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Editar calendario" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Nombre" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Activo" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Color del calendario" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Guardar" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Guardar" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Editar un evento" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportar" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Información del evento" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Repetición" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarma" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Asistentes" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Compartir" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Título del evento" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categoría" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separar categorías con comas" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Editar categorías" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Todo el día" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Desde" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Hasta" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Opciones avanzadas" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Lugar" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Lugar del evento" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Descripción" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Descripción del evento" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Repetir" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avanzado" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Seleccionar días de la semana" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Seleccionar días" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "y el día del año de los eventos." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "y el día del mes de los eventos." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Seleccionar meses" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Seleccionar semanas" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "y la semana del año de los eventos." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalo" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Fin" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "ocurrencias" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Crear un nuevo calendario" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importar un archivo de calendario" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Por favor, escoge un calendario" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nombre del nuevo calendario" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "¡Elige un nombre disponible!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Ya existe un calendario con este nombre. Si continúas, se combinarán los calendarios." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importar" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Cerrar diálogo" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Crear un nuevo evento" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Ver un evento" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Ninguna categoría seleccionada" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "a las" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zona horaria" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Caché" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Limpiar caché de eventos recurrentes" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Direcciones de sincronización de calendario CalDAV:" - -#: templates/settings.php:87 -msgid "more info" -msgstr "Más información" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Dirección principal (Kontact y otros)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Enlace(s) iCalendar de sólo lectura" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Usuarios" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "seleccionar usuarios" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Editable" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupos" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "seleccionar grupos" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "hacerlo público" diff --git a/l10n/es/contacts.po b/l10n/es/contacts.po deleted file mode 100644 index b437840d41c7e1a8e7052ac96c2055cca866f1fd..0000000000000000000000000000000000000000 --- a/l10n/es/contacts.po +++ /dev/null @@ -1,958 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Javier Llorente , 2012. -# , 2011, 2012. -# oSiNaReF <>, 2012. -# , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Error al (des)activar libreta de direcciones." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "no se ha puesto ninguna ID." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "No se puede actualizar una libreta de direcciones sin nombre." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Error al actualizar la libreta de direcciones." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "No se ha proporcionado una ID" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Error al establecer la suma de verificación." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "No se seleccionaron categorías para borrar." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "No se encontraron libretas de direcciones." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "No se encontraron contactos." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Se ha producido un error al añadir el contacto." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "no se ha puesto ningún nombre de elemento." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "No se puede añadir una propiedad vacía." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Al menos uno de los campos de direcciones se tiene que rellenar." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Intentando añadir una propiedad duplicada: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "Falta un parámetro del MI." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "MI desconocido:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "La información sobre el vCard es incorrecta. Por favor vuelve a cargar la página." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Falta la ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Error al analizar el VCard para la ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "no se ha puesto ninguna suma de comprobación." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "La información sobre la vCard es incorrecta. Por favor, recarga la página:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Plof. Algo ha fallado." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "No se ha mandado ninguna ID de contacto." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Error leyendo fotografía del contacto." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Error al guardar archivo temporal." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "La foto que se estaba cargando no es válida." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Falta la ID del contacto." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "No se ha introducido la ruta de la foto." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Archivo inexistente:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Error cargando imagen." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Fallo al coger el contacto." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Fallo al coger las propiedades de la foto ." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Fallo al salvar un contacto" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Fallo al cambiar de tamaño una foto" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Fallo al cortar el tamaño de la foto" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Fallo al crear la foto temporal" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Fallo al encontrar la imagen" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Error al subir contactos al almacenamiento." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "No hay ningún error, el archivo se ha subido con éxito" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "El archivo subido sobrepasa la directiva upload_max_filesize de php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "El archivo subido sobrepasa la directiva MAX_FILE_SIZE especificada en el formulario HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "El archivo se ha subido parcialmente" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "No se ha subido ningún archivo" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Falta la carpeta temporal" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Fallo no pudo salvar a una imagen temporal" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Fallo no pudo cargara de una imagen temporal" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Fallo no se subió el fichero" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Contactos" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Perdón esta función no esta aún implementada" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "No esta implementada" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Fallo : no hay dirección valida" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Fallo" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Este campo no puede estar vacío." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Fallo no podido ordenar los elementos" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "La propiedad de \"borrar\" se llamado sin argumentos envia fallos a\nbugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Edita el Nombre" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "No hay ficheros seleccionados para subir" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "El fichero que quieres subir excede el tamaño máximo permitido en este servidor." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Selecciona el tipo" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultado :" - -#: js/loader.js:49 -msgid " imported, " -msgstr "Importado." - -#: js/loader.js:49 -msgid " failed." -msgstr "Fallo." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Esta no es tu agenda de contactos." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "No se ha podido encontrar el contacto." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "Google Talk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Trabajo" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Particular" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Otro" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Móvil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Texto" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voz" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mensaje" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Vídeo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Localizador" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Cumpleaños" - -#: lib/app.php:253 -msgid "Business" -msgstr "Negocio" - -#: lib/app.php:254 -msgid "Call" -msgstr "Llamada" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Clientes" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Vacaciones" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ideas" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Jornada" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Reunión" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Personal" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Proyectos" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Preguntas" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Cumpleaños de {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contacto" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Añadir contacto" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importar" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Configuración" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Libretas de direcciones" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Cierra." - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Atajos de teclado" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navegación" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Siguiente contacto en la lista" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Anterior contacto en la lista" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Acciones" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Refrescar la lista de contactos" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Añadir un nuevo contacto" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Añadir nueva libreta de direcciones" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Eliminar contacto actual" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Suelta una foto para subirla" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Eliminar fotografía actual" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Editar fotografía actual" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Subir nueva fotografía" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Seleccionar fotografía desde ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formato personalizado, nombre abreviado, nombre completo, al revés o al revés con coma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Editar los detalles del nombre" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organización" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Borrar" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Alias" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Introduce un alias" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Sitio Web" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.unsitio.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Ir al sitio Web" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupos" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separa los grupos con comas" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editar grupos" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferido" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Por favor especifica una dirección de correo electrónico válida." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Introduce una dirección de correo electrónico" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Enviar por correo a la dirección" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Eliminar dirección de correo electrónico" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Introduce un número de teléfono" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Eliminar número de teléfono" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Mensajero instantáneo" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Ver en el mapa" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Editar detalles de la dirección" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Añade notas aquí." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Añadir campo" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Teléfono" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Correo electrónico" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Mensajería instantánea" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Dirección" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Descargar contacto" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Eliminar contacto" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "La foto temporal se ha borrado del cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Editar dirección" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tipo" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Código postal" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Calle y número" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Extendido" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Número del apartamento, etc." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Ciudad" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Región" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Ej: región o provincia" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Código postal" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Código postal" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "País" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Libreta de direcciones" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Prefijos honoríficos" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Srta" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Sra." - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Sr." - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Señor" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Sra" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Nombre" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Nombres adicionales" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Apellido" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Sufijos honoríficos" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Don" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importar archivo de contactos" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Por favor escoge la agenda" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "crear una nueva agenda" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nombre de la nueva agenda" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importando contactos" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "No hay contactos en tu agenda." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Añadir contacto" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Introducir nombre" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Introducir descripción" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Sincronizando direcciones" - -#: templates/settings.php:3 -msgid "more info" -msgstr "más información" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Dirección primaria (Kontact et al)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Compartir" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Descargar" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editar" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nueva libreta de direcciones" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nombre" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Descripción" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Guardar" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Más..." diff --git a/l10n/es/core.po b/l10n/es/core.po index 98e33ab2a08bb0fbc6ba7ced6fafe5215a8457c4..034d5efe2b36874c889a60a07f08b1d824fce0d0 100644 --- a/l10n/es/core.po +++ b/l10n/es/core.po @@ -3,21 +3,22 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Javier Llorente , 2012. -# , 2011, 2012. +# , 2011-2012. # oSiNaReF <>, 2012. # Raul Fernandez Garcia , 2012. # , 2012. # , 2011. # Rubén Trujillo , 2012. -# , 2011, 2012. +# , 2011-2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-30 02:02+0200\n" -"PO-Revision-Date: 2012-09-29 20:46+0000\n" +"POT-Creation-Date: 2012-11-18 00:01+0100\n" +"PO-Revision-Date: 2012-11-17 08:47+0000\n" "Last-Translator: Raul Fernandez Garcia \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -26,208 +27,241 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nombre de la aplicación no provisto." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Tipo de categoria no proporcionado." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "¿Ninguna categoría para añadir?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Esta categoría ya existe: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "ipo de objeto no proporcionado." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID no proporcionado." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Error añadiendo %s a los favoritos." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "No hay categorías seleccionadas para borrar." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Error eliminando %s de los favoritos." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Ajustes" -#: js/js.js:645 -msgid "January" -msgstr "Enero" +#: js/js.js:704 +msgid "seconds ago" +msgstr "hace segundos" -#: js/js.js:645 -msgid "February" -msgstr "Febrero" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "hace 1 minuto" -#: js/js.js:645 -msgid "March" -msgstr "Marzo" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "hace {minutes} minutos" -#: js/js.js:645 -msgid "April" -msgstr "Abril" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Hace 1 hora" -#: js/js.js:645 -msgid "May" -msgstr "Mayo" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "Hace {hours} horas" -#: js/js.js:645 -msgid "June" -msgstr "Junio" +#: js/js.js:709 +msgid "today" +msgstr "hoy" -#: js/js.js:646 -msgid "July" -msgstr "Julio" +#: js/js.js:710 +msgid "yesterday" +msgstr "ayer" -#: js/js.js:646 -msgid "August" -msgstr "Agosto" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "hace {days} días" -#: js/js.js:646 -msgid "September" -msgstr "Septiembre" +#: js/js.js:712 +msgid "last month" +msgstr "mes pasado" -#: js/js.js:646 -msgid "October" -msgstr "Octubre" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "Hace {months} meses" -#: js/js.js:646 -msgid "November" -msgstr "Noviembre" +#: js/js.js:714 +msgid "months ago" +msgstr "hace meses" -#: js/js.js:646 -msgid "December" -msgstr "Diciembre" +#: js/js.js:715 +msgid "last year" +msgstr "año pasado" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "hace años" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Seleccionar" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Cancelar" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "No" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Sí" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Aceptar" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "No hay categorías seleccionadas para borrar." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "El tipo de objeto no se ha especificado." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Fallo" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "El nombre de la app no se ha especificado." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "El fichero {file} requerido, no está instalado." + +#: js/share.js:124 msgid "Error while sharing" msgstr "Error compartiendo" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Error descompartiendo" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Error cambiando permisos" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Comprtido contigo y con el grupo" - -#: js/share.js:130 -msgid "by" -msgstr "por" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Compartido contigo y el grupo {group} por {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Compartido contigo por" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Compartido contigo por {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Compartir con" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "Enlace de compartir con " +msgstr "Compartir con enlace" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Protegido por contraseña" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Contraseña" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Establecer fecha de caducidad" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Fecha de caducidad" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "compartido via e-mail:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "No se encontró gente" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "No se permite compartir de nuevo" -#: js/share.js:250 -msgid "Shared in" -msgstr "Compartido en" - -#: js/share.js:250 -msgid "with" -msgstr "con" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Compartido en {item} con {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "No compartir" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "puede editar" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "control de acceso" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "crear" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "modificar" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "eliminar" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "compartir" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "Protegido por contraseña" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "Error al eliminar la fecha de caducidad" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "Error estableciendo fecha de caducidad" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Reiniciar contraseña de ownCloud" @@ -240,15 +274,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Recibirás un enlace por correo electrónico para restablecer tu contraseña" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Pedido" +msgid "Reset email send." +msgstr "Email de reconfiguración enviado." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "¡Fallo al iniciar sesión!" +msgid "Request failed!" +msgstr "Pedido fallado!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nombre de usuario" @@ -304,72 +338,187 @@ msgstr "No se ha encontrado la nube" msgid "Edit categories" msgstr "Editar categorías" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Añadir" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Advertencia de seguridad" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "No está disponible un generador de números aleatorios seguro, por favor habilite la extensión OpenSSL de PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Sin un generador de números aleatorios seguro un atacante podría predecir los tokens de reinicio de su contraseña y tomar control de su cuenta." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Su directorio de datos y sus archivos están probablemente accesibles desde internet. El archivo .htaccess que ownCloud provee no está funcionando. Sugerimos fuertemente que configure su servidor web de manera que el directorio de datos ya no esté accesible o mueva el directorio de datos fuera del documento raíz de su servidor web." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea una cuenta de administrador" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avanzado" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Directorio de almacenamiento" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configurar la base de datos" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "se utilizarán" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Usuario de la base de datos" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Contraseña de la base de datos" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nombre de la base de datos" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Espacio de tablas de la base de datos" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Host de la base de datos" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Completar la instalación" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Domingo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Lunes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Martes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Miércoles" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Jueves" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Viernes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sábado" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Enero" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Febrero" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Marzo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Abril" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Mayo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Junio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Julio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Agosto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Septiembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Octubre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Noviembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Diciembre" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "servicios web bajo tu control" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Salir" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "¡Inicio de sesión automático rechazado!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Si usted no ha cambiado su contraseña recientemente, ¡puede que su cuenta esté comprometida!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Por favor cambie su contraseña para asegurar su cuenta nuevamente." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "¿Has perdido tu contraseña?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "recuérdame" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Entrar" @@ -384,3 +533,17 @@ msgstr "anterior" #: templates/part.pagenavi.php:20 msgid "next" msgstr "siguiente" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "¡Advertencia de seguridad!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Por favor verifique su contraseña.
            Por razones de seguridad se le puede volver a preguntar ocasionalmente la contraseña." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verificar" diff --git a/l10n/es/files.po b/l10n/es/files.po index edab4fc1363c8aa8213e3fe08a5f84c4d45ef427..8925d2d93dfe1149abba1a1b8fc42f08b94ce58b 100644 --- a/l10n/es/files.po +++ b/l10n/es/files.po @@ -3,18 +3,20 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Agustin Ferrario <>, 2012. +# , 2012. # Javier Llorente , 2012. # , 2012. # Rubén Trujillo , 2012. -# , 2011, 2012. +# , 2011-2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 18:08+0000\n" -"Last-Translator: scambra \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 20:49+0000\n" +"Last-Translator: xsergiolpx \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,195 +29,166 @@ msgid "There is no error, the file uploaded with success" msgstr "No se ha producido ningún error, el archivo se ha subido con éxito" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "El archivo que intentas subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "El archivo que intentas subir solo se subió parcialmente" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "No se ha subido ningún archivo" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Falta un directorio temporal" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "La escritura en disco ha fallado" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Archivos" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Dejar de compartir" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Eliminar" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Renombrar" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "ya existe" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} ya existe" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "reemplazar" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "sugerir nombre" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "reemplazado" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "reemplazado {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "deshacer" -#: js/filelist.js:241 -msgid "with" -msgstr "con" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "reemplazado {new_name} con {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "{files} descompartidos" -#: js/filelist.js:273 -msgid "unshared" -msgstr "no compartido" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} eliminados" -#: js/filelist.js:275 -msgid "deleted" -msgstr "borrado" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nombre Invalido, \"\\\", \"/\", \"<\", \">\", \":\", \"\", \"|\" \"?\" y \"*\" no están permitidos " -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "generando un fichero ZIP, puede llevar un tiempo." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "No ha sido posible subir tu archivo porque es un directorio o tiene 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Error al subir el archivo" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "cerrrar" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Pendiente" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "subiendo 1 archivo" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "archivos subiendo" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "Subiendo {count} archivos" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Subida cancelada." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "La subida del archivo está en proceso. Salir de la página ahora cancelará la subida." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nombre no válido, '/' no está permitido." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nombre de la carpeta invalido. El uso de \"Shared\" esta reservado para Owncloud" -#: js/files.js:668 -msgid "files scanned" -msgstr "archivos escaneados" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} archivos escaneados" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "error escaneando" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nombre" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Tamaño" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificado" -#: js/files.js:778 -msgid "folder" -msgstr "carpeta" - -#: js/files.js:780 -msgid "folders" -msgstr "carpetas" - -#: js/files.js:788 -msgid "file" -msgstr "archivo" - -#: js/files.js:790 -msgid "files" -msgstr "archivos" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "hace segundos" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minuto" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "hace minutos" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 carpeta" -#: js/files.js:839 -msgid "today" -msgstr "hoy" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} carpetas" -#: js/files.js:840 -msgid "yesterday" -msgstr "ayer" +#: js/files.js:824 +msgid "1 file" +msgstr "1 archivo" -#: js/files.js:841 -msgid "days ago" -msgstr "días" - -#: js/files.js:842 -msgid "last month" -msgstr "mes pasado" - -#: js/files.js:844 -msgid "months ago" -msgstr "hace meses" - -#: js/files.js:845 -msgid "last year" -msgstr "año pasado" - -#: js/files.js:846 -msgid "years ago" -msgstr "hace años" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} archivos" #: templates/admin.php:5 msgid "File handling" @@ -225,27 +198,27 @@ msgstr "Tratamiento de archivos" msgid "Maximum upload size" msgstr "Tamaño máximo de subida" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "máx. posible:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Se necesita para descargas multi-archivo y de carpetas" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Habilitar descarga en ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 es ilimitado" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Tamaño máximo para archivos ZIP de entrada" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Guardar" @@ -253,52 +226,48 @@ msgstr "Guardar" msgid "New" msgstr "Nuevo" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Archivo de texto" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Carpeta" -#: templates/index.php:11 -msgid "From url" -msgstr "Desde la URL" +#: templates/index.php:14 +msgid "From link" +msgstr "Desde el enlace" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Subir" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Cancelar subida" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Aquí no hay nada. ¡Sube algo!" -#: templates/index.php:50 -msgid "Share" -msgstr "Compartir" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Descargar" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "El archivo es demasiado grande" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido por este servidor." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Se están escaneando los archivos, por favor espere." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Ahora escaneando" diff --git a/l10n/es/files_pdfviewer.po b/l10n/es/files_pdfviewer.po deleted file mode 100644 index 1b4c74ef327a3d92fe82578a29056848e42330bb..0000000000000000000000000000000000000000 --- a/l10n/es/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/es/files_texteditor.po b/l10n/es/files_texteditor.po deleted file mode 100644 index 51dd6d7810c8299e52e4dbdec00e044eb48294f4..0000000000000000000000000000000000000000 --- a/l10n/es/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/es/gallery.po b/l10n/es/gallery.po deleted file mode 100644 index 8a67c7718712f06d1232646590bd01cea1c72f22..0000000000000000000000000000000000000000 --- a/l10n/es/gallery.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Javier Llorente , 2012. -# , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 02:01+0200\n" -"PO-Revision-Date: 2012-07-25 23:13+0000\n" -"Last-Translator: juanman \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Imágenes" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Compartir galería" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Fallo " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Fallo interno" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Presentación" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Atrás" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Borrar confirmación" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "¿Quieres eliminar el álbum" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Cambiar nombre al álbum" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nuevo nombre de álbum" diff --git a/l10n/es/impress.po b/l10n/es/impress.po deleted file mode 100644 index 45ece5e5e6fdf1a6d4d5dbbbe912e0cb3a8f201d..0000000000000000000000000000000000000000 --- a/l10n/es/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/es/lib.po b/l10n/es/lib.po index a98b88c383d5fc51fdb690b9185fbdf8205e166d..179b6bff7d6861372c8e54750848a06be757f250 100644 --- a/l10n/es/lib.po +++ b/l10n/es/lib.po @@ -4,58 +4,60 @@ # # Translators: # , 2012. +# Raul Fernandez Garcia , 2012. # Rubén Trujillo , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-02 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 18:23+0000\n" -"Last-Translator: Rubén Trujillo \n" +"POT-Creation-Date: 2012-11-18 00:01+0100\n" +"PO-Revision-Date: 2012-11-17 08:43+0000\n" +"Last-Translator: Raul Fernandez Garcia \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Ayuda" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Personal" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Ajustes" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Usuarios" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Aplicaciones" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Administración" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "La descarga en ZIP está desactivada." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Los archivos deben ser descargados uno por uno." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Volver a Archivos" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Los archivos seleccionados son demasiado grandes para generar el archivo zip." @@ -63,7 +65,7 @@ msgstr "Los archivos seleccionados son demasiado grandes para generar el archivo msgid "Application is not enabled" msgstr "La aplicación no está habilitada" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Error de autenticación" @@ -71,57 +73,84 @@ msgstr "Error de autenticación" msgid "Token expired. Please reload page." msgstr "Token expirado. Por favor, recarga la página." -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Archivos" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Texto" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Imágenes" + +#: template.php:103 msgid "seconds ago" msgstr "hace segundos" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "hace 1 minuto" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "hace %d minutos" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "Hace 1 hora" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "Hace %d horas" + +#: template.php:108 msgid "today" msgstr "hoy" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "ayer" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "hace %d días" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "este mes" -#: template.php:95 -msgid "months ago" -msgstr "hace meses" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "Hace %d meses" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "este año" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "hace años" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s está disponible. Obtén más información" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "actualizado" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "comprobar actualizaciones está desactivado" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "No puede encontrar la categoria \"%s\"" diff --git a/l10n/es/media.po b/l10n/es/media.po deleted file mode 100644 index d1c84d0e8b12ab048e40a8dd4e78ffa0c56dd09c..0000000000000000000000000000000000000000 --- a/l10n/es/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Javier Llorente , 2012. -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Música" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Reproducir" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausa" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Anterior" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Siguiente" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Silenciar" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Quitar silencio" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Buscar canciones nuevas" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ãlbum" - -#: templates/music.php:39 -msgid "Title" -msgstr "Título" diff --git a/l10n/es/settings.po b/l10n/es/settings.po index ef87a1c16ba71f2239150c24dba59e903f487738..8e8c25c4e24d7cbea5433e0b334ec30651528f4b 100644 --- a/l10n/es/settings.po +++ b/l10n/es/settings.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Art O. Pal , 2012. # , 2012. # Javier Llorente , 2012. # , 2011-2012. @@ -12,14 +13,14 @@ # , 2012. # , 2011. # Rubén Trujillo , 2012. -# , 2011, 2012. +# , 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:05+0200\n" -"PO-Revision-Date: 2012-10-09 15:22+0000\n" -"Last-Translator: Rubén Trujillo \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: xsergiolpx \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,70 +28,73 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Imposible cargar la lista desde el App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Error de autenticación" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "El grupo ya existe" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "No se pudo añadir el grupo" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "No puedo habilitar la app." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Correo guardado" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Correo no válido" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID cambiado" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Solicitud no válida" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "No se pudo eliminar el grupo" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Error de autenticación" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "No se pudo eliminar el usuario" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Idioma cambiado" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Los administradores no se pueden eliminar a ellos mismos del grupo de administrador" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Imposible añadir el usuario al grupo %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Imposible eliminar al usuario del grupo %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Desactivar" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Activar" @@ -98,97 +102,10 @@ msgstr "Activar" msgid "Saving..." msgstr "Guardando..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Castellano" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Advertencia de seguridad" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "El directorio de datos -data- y sus archivos probablemente son accesibles desde internet. El archivo .htaccess que provee ownCloud no está funcionando. Recomendamos fuertemente que configure su servidor web de forma que el directorio de datos ya no sea accesible o mueva el directorio de datos fuera de la raíz de documentos del servidor web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Ejecutar una tarea con cada página cargada" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php está registrado como un servicio del webcron. Llama a la página de cron.php en la raíz de owncloud cada minuto sobre http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Usar el servicio de cron del sitema. Llame al fichero cron.php en la carpeta de owncloud via servidor cronjob cada minuto." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Compartir" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Activar API de compartición" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Permitir a las aplicaciones usar la API de compartición" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Permitir enlaces" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Permitir a los usuarios compartir elementos públicamente con enlaces" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Permitir re-compartir" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Permitir a los usuarios compartir elementos compartidos con ellos de nuevo" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Permitir a los usuarios compartir con cualquiera" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Permitir a los usuarios compartir con usuarios en sus grupos" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Registro" - -#: templates/admin.php:116 -msgid "More" -msgstr "Más" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Añade tu aplicación" @@ -221,22 +138,22 @@ msgstr "Administra archivos grandes" msgid "Ask a question" msgstr "Hacer una pregunta" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemas al conectar con la base de datos de ayuda." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Ir manualmente" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Respuesta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Ha usado %s de %s disponible" +msgid "You have used %s of the available %s" +msgstr "Ha usado %s de %s disponibles" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -294,6 +211,16 @@ msgstr "Ayúdanos a traducir" msgid "use this address to connect to your ownCloud in your file manager" msgstr "utiliza esta dirección para conectar a tu ownCloud desde tu gestor de archivos" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nombre" diff --git a/l10n/es/tasks.po b/l10n/es/tasks.po deleted file mode 100644 index c7be467fb0c76f610a976bd3b2a1da9d6068d775..0000000000000000000000000000000000000000 --- a/l10n/es/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-18 02:01+0200\n" -"PO-Revision-Date: 2012-08-17 17:39+0000\n" -"Last-Translator: juanman \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Fecha/hora inválida" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Tareas" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Sin categoría" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Sin especificar" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=mayor" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=media" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=menor" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Resumen vacío" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Porcentaje completado inválido" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Prioridad inválida" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Agregar tarea" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Ordenar por" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Ordenar por lista" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Ordenar por completadas" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Ordenar por ubicación" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Ordenar por prioridad" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Ordenar por etiqueta" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Cargando tareas..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Importante" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Más" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Menos" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Borrar" diff --git a/l10n/es/user_migrate.po b/l10n/es/user_migrate.po deleted file mode 100644 index fbd0617741826df75e26a14b628a4916a804e40b..0000000000000000000000000000000000000000 --- a/l10n/es/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Javier Llorente , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 09:30+0000\n" -"Last-Translator: Javier Llorente \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Exportar" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "Zip de usuario de ownCloud" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importar" diff --git a/l10n/es/user_openid.po b/l10n/es/user_openid.po deleted file mode 100644 index efed4f72da8174012cb428e9bd0832063b2ce6e3..0000000000000000000000000000000000000000 --- a/l10n/es/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Javier Llorente , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 09:24+0000\n" -"Last-Translator: Javier Llorente \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identidad: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Usuario: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Iniciar sesión" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/es/files_odfviewer.po b/l10n/es/user_webdavauth.po similarity index 60% rename from l10n/es/files_odfviewer.po rename to l10n/es/user_webdavauth.po index aaf62e020a2468f77e24030a07cc2e9304a126d4..905074ada98e2ec9ee5ca92e191c44763e5a76cd 100644 --- a/l10n/es/files_odfviewer.po +++ b/l10n/es/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Art O. Pal , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 17:28+0000\n" +"Last-Translator: Art O. Pal \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index fdae03f14c3a02058d637a6c43c61ef84fce0ced..0db84f4454b0b611e52cf58d85071cbf0abc3a01 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/core.po @@ -4,12 +4,13 @@ # # Translators: # , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 02:03+0200\n" -"PO-Revision-Date: 2012-10-01 14:58+0000\n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 09:55+0000\n" "Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -18,208 +19,241 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nombre de la aplicación no provisto." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Tipo de categoría no provisto. " -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "¿Ninguna categoría para añadir?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Esta categoría ya existe: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Tipo de objeto no provisto. " + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID no provista. " + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Error al agregar %s a favoritos. " + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "No hay categorías seleccionadas para borrar." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Error al remover %s de favoritos. " + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Ajustes" -#: js/js.js:645 -msgid "January" -msgstr "Enero" +#: js/js.js:704 +msgid "seconds ago" +msgstr "segundos atrás" -#: js/js.js:645 -msgid "February" -msgstr "Febrero" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "hace 1 minuto" -#: js/js.js:645 -msgid "March" -msgstr "Marzo" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "hace {minutes} minutos" -#: js/js.js:645 -msgid "April" -msgstr "Abril" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Hace 1 hora" -#: js/js.js:645 -msgid "May" -msgstr "Mayo" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} horas atrás" -#: js/js.js:645 -msgid "June" -msgstr "Junio" +#: js/js.js:709 +msgid "today" +msgstr "hoy" -#: js/js.js:646 -msgid "July" -msgstr "Julio" +#: js/js.js:710 +msgid "yesterday" +msgstr "ayer" -#: js/js.js:646 -msgid "August" -msgstr "Agosto" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "hace {days} días" -#: js/js.js:646 -msgid "September" -msgstr "Septiembre" +#: js/js.js:712 +msgid "last month" +msgstr "el mes pasado" -#: js/js.js:646 -msgid "October" -msgstr "Octubre" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} meses atrás" -#: js/js.js:646 -msgid "November" -msgstr "Noviembre" +#: js/js.js:714 +msgid "months ago" +msgstr "meses atrás" -#: js/js.js:646 -msgid "December" -msgstr "Diciembre" +#: js/js.js:715 +msgid "last year" +msgstr "el año pasado" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "años atrás" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Elegir" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Cancelar" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "No" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Sí" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Aceptar" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "No hay categorías seleccionadas para borrar." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "El tipo de objeto no esta especificado. " -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:493 -#: js/share.js:505 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Error" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "El nombre de la aplicación no esta especificado." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "¡El archivo requerido {file} no está instalado!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Error al compartir" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Error en el procedimiento de " -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Error al cambiar permisos" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Compartido con vos y con el grupo" - -#: js/share.js:130 -msgid "by" -msgstr "por" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Compartido con vos y el grupo {group} por {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Compartido con vos por" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Compartido con vos por {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Compartir con" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Compartir con link" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Proteger con contraseña " -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Contraseña" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Asignar fecha de vencimiento" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Fecha de vencimiento" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "compartido a través de e-mail:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "No se encontraron usuarios" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "No se permite volver a compartir" -#: js/share.js:250 -msgid "Shared in" -msgstr "Compartido en" - -#: js/share.js:250 -msgid "with" -msgstr "con" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Compartido en {item} con {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Remover compartir" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "puede editar" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "control de acceso" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "crear" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "actualizar" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" -msgstr "remover" +msgstr "borrar" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "compartir" -#: js/share.js:321 js/share.js:480 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "Protegido por contraseña" -#: js/share.js:493 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "Error al remover la fecha de caducidad" -#: js/share.js:505 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "Error al asignar fecha de vencimiento" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Restablecer contraseña de ownCloud" @@ -232,15 +266,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Vas a recibir un enlace por e-mail para restablecer tu contraseña" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Pedido" +msgid "Reset email send." +msgstr "Reiniciar envío de email." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "¡Fallo al iniciar sesión!" +msgid "Request failed!" +msgstr "Error en el pedido!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nombre de usuario" @@ -250,7 +284,7 @@ msgstr "Solicitar restablecimiento" #: lostpassword/templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "Tu contraseña ha sido restablecida" +msgstr "Tu contraseña fue restablecida" #: lostpassword/templates/resetpassword.php:5 msgid "To login page" @@ -290,78 +324,193 @@ msgstr "Acceso denegado" #: templates/404.php:12 msgid "Cloud not found" -msgstr "No se encontró owncloud" +msgstr "No se encontró ownCloud" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" msgstr "Editar categorías" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" -msgstr "Añadir" +msgstr "Agregar" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Advertencia de seguridad" #: templates/installation.php:24 -msgid "Create an admin account" -msgstr "Creá una cuenta de administrador" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "No hay disponible ningún generador de números aleatorios seguro. Por favor habilitá la extensión OpenSSL de PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Sin un generador de números aleatorios seguro un atacante podría predecir los tokens de reinicio de tu contraseña y tomar control de tu cuenta." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Tu directorio de datos y tus archivos son probablemente accesibles desde internet. El archivo .htaccess provisto por ownCloud no está funcionando. Te sugerimos que configures tu servidor web de manera que el directorio de datos ya no esté accesible, o que muevas el directorio de datos afuera del directorio raíz de tu servidor web." #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "Crear una cuenta de administrador" + +#: templates/installation.php:48 msgid "Advanced" msgstr "Avanzado" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Directorio de almacenamiento" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configurar la base de datos" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "se utilizarán" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Usuario de la base de datos" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Contraseña de la base de datos" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nombre de la base de datos" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Espacio de tablas de la base de datos" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Host de la base de datos" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Completar la instalación" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Domingo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Lunes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Martes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Miércoles" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Jueves" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Viernes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sábado" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Enero" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Febrero" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Marzo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Abril" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Mayo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Junio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Julio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Agosto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Septiembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Octubre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Noviembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Diciembre" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "servicios web sobre los que tenés control" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Cerrar la sesión" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "¡El inicio de sesión automático fue rechazado!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "¡Si no cambiaste tu contraseña recientemente, puede ser que tu cuenta esté comprometida!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Por favor, cambiá tu contraseña para fortalecer nuevamente la seguridad de tu cuenta." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "¿Perdiste tu contraseña?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "recordame" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Entrar" @@ -376,3 +525,17 @@ msgstr "anterior" #: templates/part.pagenavi.php:20 msgid "next" msgstr "siguiente" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "¡Advertencia de seguridad!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Por favor, verificá tu contraseña.
            Por razones de seguridad, puede ser que que te pregunte ocasionalmente la contraseña." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verificar" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index 072de5c06f63ce0b16f75449b4ef9bd7bf669b6f..90dafb22af3ae22e6828e25f53a781d55e5483c9 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_AR/files.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 09:21+0000\n" -"Last-Translator: cjtess \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,195 +23,166 @@ msgid "There is no error, the file uploaded with success" msgstr "No se han producido errores, el archivo se ha subido con éxito" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "El archivo que intentás subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "El archivo que intentás subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "El archivo que intentás subir solo se subió parcialmente" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "El archivo no fue subido" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Falta un directorio temporal" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" -msgstr "La escritura en disco falló" +msgstr "Error al escribir en el disco" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Archivos" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Dejar de compartir" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Borrar" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "cambiar nombre" +msgstr "Cambiar nombre" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "ya existe" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} ya existe" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "reemplazar" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "sugerir nombre" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "reemplazado" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "reemplazado {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "deshacer" -#: js/filelist.js:241 -msgid "with" -msgstr "con" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "reemplazado {new_name} con {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "no compartido" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "{files} se dejaron de compartir" -#: js/filelist.js:275 -msgid "deleted" -msgstr "borrado" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} borrados" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "generando un archivo ZIP, puede llevar un tiempo." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "No fue posible subir tu archivo porque es un directorio o su tamaño es 0 bytes" +msgstr "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Error al subir el archivo" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Cerrar" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Pendiente" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "Subiendo 1 archivo" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "Subiendo archivos" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "Subiendo {count} archivos" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "La subida fue cancelada" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nombre no válido, '/' no está permitido." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nombre del directorio inválido. Usar \"Shared\" está reservado por ownCloud." -#: js/files.js:668 -msgid "files scanned" -msgstr "archivos escaneados" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} archivos escaneados" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "error mientras se escaneaba" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nombre" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Tamaño" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificado" -#: js/files.js:778 -msgid "folder" -msgstr "carpeta" - -#: js/files.js:780 -msgid "folders" -msgstr "carpetas" - -#: js/files.js:788 -msgid "file" -msgstr "archivo" - -#: js/files.js:790 -msgid "files" -msgstr "archivos" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "segundos atrás" - -#: js/files.js:835 -msgid "minute ago" -msgstr "hace un minuto" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 directorio" -#: js/files.js:836 -msgid "minutes ago" -msgstr "minutos atrás" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} directorios" -#: js/files.js:839 -msgid "today" -msgstr "hoy" +#: js/files.js:824 +msgid "1 file" +msgstr "1 archivo" -#: js/files.js:840 -msgid "yesterday" -msgstr "ayer" - -#: js/files.js:841 -msgid "days ago" -msgstr "días atrás" - -#: js/files.js:842 -msgid "last month" -msgstr "el mes pasado" - -#: js/files.js:844 -msgid "months ago" -msgstr "meses atrás" - -#: js/files.js:845 -msgid "last year" -msgstr "el año pasado" - -#: js/files.js:846 -msgid "years ago" -msgstr "años atrás" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} archivos" #: templates/admin.php:5 msgid "File handling" @@ -221,27 +192,27 @@ msgstr "Tratamiento de archivos" msgid "Maximum upload size" msgstr "Tamaño máximo de subida" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "máx. posible:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." -msgstr "Se necesita para descargas multi-archivo y de carpetas" +msgstr "Es necesario para descargas multi-archivo y de carpetas" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Habilitar descarga en formato ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 significa ilimitado" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Tamaño máximo para archivos ZIP de entrada" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Guardar" @@ -249,52 +220,48 @@ msgstr "Guardar" msgid "New" msgstr "Nuevo" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Archivo de texto" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Carpeta" -#: templates/index.php:11 -msgid "From url" -msgstr "Desde la URL" +#: templates/index.php:14 +msgid "From link" +msgstr "Desde enlace" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Subir" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Cancelar subida" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" -msgstr "Aquí no hay nada. ¡Subí contenido!" - -#: templates/index.php:50 -msgid "Share" -msgstr "Compartir" +msgstr "No hay nada. ¡Subí contenido!" -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Descargar" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "El archivo es demasiado grande" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Los archivos que intentás subir sobrepasan el tamaño máximo " -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." -msgstr "Se están escaneando los archivos, por favor espere." +msgstr "Se están escaneando los archivos, por favor esperá." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Escaneo actual" diff --git a/l10n/es_AR/lib.po b/l10n/es_AR/lib.po index 07b048d92ade8c990bdc6f32235ed5dae62878ac..d7c4a911766125fbe83094158a2f216aef634bd5 100644 --- a/l10n/es_AR/lib.po +++ b/l10n/es_AR/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-25 02:02+0200\n" -"PO-Revision-Date: 2012-09-24 04:22+0000\n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 09:56+0000\n" "Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -42,19 +42,19 @@ msgstr "Aplicaciones" msgid "Admin" msgstr "Administración" -#: files.php:310 +#: files.php:361 msgid "ZIP download is turned off." msgstr "La descarga en ZIP está desactivada." -#: files.php:311 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Los archivos deben ser descargados de a uno." -#: files.php:311 files.php:336 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Volver a archivos" -#: files.php:335 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Los archivos seleccionados son demasiado grandes para generar el archivo zip." @@ -62,7 +62,7 @@ msgstr "Los archivos seleccionados son demasiado grandes para generar el archivo msgid "Application is not enabled" msgstr "La aplicación no está habilitada" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Error de autenticación" @@ -70,57 +70,84 @@ msgstr "Error de autenticación" msgid "Token expired. Please reload page." msgstr "Token expirado. Por favor, recargá la página." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Archivos" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Texto" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Imágenes" + +#: template.php:103 msgid "seconds ago" msgstr "hace unos segundos" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "hace 1 minuto" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "hace %d minutos" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 hora atrás" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d horas atrás" + +#: template.php:108 msgid "today" msgstr "hoy" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "ayer" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "hace %d días" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "este mes" -#: template.php:96 -msgid "months ago" -msgstr "hace meses" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d meses atrás" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "este año" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "hace años" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s está disponible. Conseguí más información" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "actualizado" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "comprobar actualizaciones está desactivado" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "No fue posible encontrar la categoría \"%s\"" diff --git a/l10n/es_AR/settings.po b/l10n/es_AR/settings.po index bad107a5f86fc070141666aa5cdb93db01035da0..b52e9fbc915d60cb6a323e065a966bf96f8c744e 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-11 02:04+0200\n" -"PO-Revision-Date: 2012-10-10 06:43+0000\n" -"Last-Translator: cjtess \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,70 +18,73 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Imposible cargar la lista desde el App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Error al autenticar" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "El grupo ya existe" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "No fue posible añadir el grupo" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "No se puede habilitar la aplicación." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "e-mail guardado" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "el e-mail no es válido " -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID cambiado" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Solicitud no válida" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "No fue posible eliminar el grupo" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Error al autenticar" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "No fue posible eliminar el usuario" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Idioma cambiado" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "No fue posible añadir el usuario al grupo %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "No es posible eliminar al usuario del grupo %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Desactivar" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Activar" @@ -89,97 +92,10 @@ msgstr "Activar" msgid "Saving..." msgstr "Guardando..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Castellano (Argentina)" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Advertencia de seguridad" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "El directorio de datos -data- y los archivos que contiene, probablemente son accesibles desde internet. El archivo .htaccess que provee ownCloud no está funcionando. Recomendamos fuertemente que configures su servidor web de forma que el directorio de datos ya no sea accesible o que muevas el directorio de datos fuera de la raíz de documentos del servidor web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Ejecutar una tarea con cada página cargada" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php está registrado como un servicio del webcron. Llamá a la página de cron.php en la raíz de ownCloud cada minuto sobre http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Usar el servicio de cron del sistema. Llamá al archivo cron.php en la carpeta de ownCloud via servidor cronjob cada minuto." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Compartir" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Activar API de compartición" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Permitir a las aplicaciones usar la API de compartición" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Permitir enlaces" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Permitir a los usuarios compartir elementos públicamente con enlaces" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Permitir re-compartir" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Permitir a los usuarios compartir elementos ya compartidos" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Permitir a los usuarios compartir con cualquiera" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Permitir a los usuarios compartir con usuarios en sus grupos" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Registro" - -#: templates/admin.php:116 -msgid "More" -msgstr "Más" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Añadí tu aplicación" @@ -212,22 +128,22 @@ msgstr "Administrar archivos grandes" msgid "Ask a question" msgstr "Hacer una pregunta" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemas al conectar con la base de datos de ayuda." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Ir de forma manual" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Respuesta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Usaste %s de %s disponible" +msgid "You have used %s of the available %s" +msgstr "Usaste %s de los %s disponibles" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -285,6 +201,16 @@ msgstr "Ayudanos a traducir" msgid "use this address to connect to your ownCloud in your file manager" msgstr "usá esta dirección para conectarte a tu ownCloud desde tu gestor de archivos" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nombre" diff --git a/l10n/es_AR/user_webdavauth.po b/l10n/es_AR/user_webdavauth.po new file mode 100644 index 0000000000000000000000000000000000000000..85a8f008f812acdd6f0c5485ed1874e4ce9304e9 --- /dev/null +++ b/l10n/es_AR/user_webdavauth.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-13 00:05+0100\n" +"PO-Revision-Date: 2012-11-12 10:49+0000\n" +"Last-Translator: cjtess \n" +"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "URL de WebDAV: http://" diff --git a/l10n/et_EE/admin_dependencies_chk.po b/l10n/et_EE/admin_dependencies_chk.po deleted file mode 100644 index 4e1dc1ab0c853f14c5412eaf29f4d017cb7d399c..0000000000000000000000000000000000000000 --- a/l10n/et_EE/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 06:47+0000\n" -"Last-Translator: Rivo Zängov \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "php-json moodul on vajalik paljude rakenduse poolt omvahelise suhtlemise jaoks" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "php-curl moodul on vajalik lehe pealkirja tõmbamiseks järjehoidja lisamisel" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "php-gd moodul on vajalik sinu piltidest pisipiltide loomiseks" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "php-ldap moodul on vajalik sinu ldap serveriga ühendumiseks" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "php-zip moodul on vajalik mitme faili korraga alla laadimiseks" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "php-mb_multibyte moodul on vajalik kodeerimise korrektseks haldamiseks." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "php-ctype moodul on vajalik andmete kontrollimiseks." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "php-xml moodul on vajalik failide jagamiseks webdav-iga." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Sinu php.ini failis oleva direktiivi allow_url_fopen väärtuseks peaks määrama 1, et saaks tõmmata teadmistebaasi OCS-i serveritest" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "php-pdo moodul on vajalik owncloudi andmete salvestamiseks andmebaasi." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Sõltuvuse staatus" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Kasutab :" diff --git a/l10n/et_EE/admin_migrate.po b/l10n/et_EE/admin_migrate.po deleted file mode 100644 index 1e02b7240900453de0253354bf108b2c5f74f6b9..0000000000000000000000000000000000000000 --- a/l10n/et_EE/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 06:41+0000\n" -"Last-Translator: Rivo Zängov \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Ekspordi see ownCloudi paigaldus" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "See loob pakitud faili, milles on sinu owncloudi paigalduse andmed.\n Palun vali eksporditava faili tüüp:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Ekspordi" diff --git a/l10n/et_EE/bookmarks.po b/l10n/et_EE/bookmarks.po deleted file mode 100644 index 91cf36ab0d43188b5aee97de3ed6bd90acf9369c..0000000000000000000000000000000000000000 --- a/l10n/et_EE/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-31 10:22+0000\n" -"Last-Translator: Rivo Zängov \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Järjehoidjad" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "nimetu" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Loe hiljem" - -#: templates/list.php:13 -msgid "Address" -msgstr "Aadress" - -#: templates/list.php:14 -msgid "Title" -msgstr "Pealkiri" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Sildid" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Salvesta järjehoidja" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Sul pole järjehoidjaid" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/et_EE/calendar.po b/l10n/et_EE/calendar.po deleted file mode 100644 index 9a8efeb0287c807ce1b403c5b93a123f207ba4ed..0000000000000000000000000000000000000000 --- a/l10n/et_EE/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Kalendreid ei leitud." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ãœritusi ei leitud." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Vale kalender" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Uus ajavöönd:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Ajavöönd on muudetud" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Vigane päring" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Sünnipäev" - -#: lib/app.php:122 -msgid "Business" -msgstr "Äri" - -#: lib/app.php:123 -msgid "Call" -msgstr "Helista" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Kliendid" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Kohaletoimetaja" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Pühad" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideed" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Reis" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Juubel" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Kohtumine" - -#: lib/app.php:131 -msgid "Other" -msgstr "Muu" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Isiklik" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projektid" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Küsimused" - -#: lib/app.php:135 -msgid "Work" -msgstr "Töö" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "nimetu" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Uus kalender" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ei kordu" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Iga päev" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Iga nädal" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Igal nädalapäeval" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Ãœle nädala" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Igal kuul" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Igal aastal" - -#: lib/object.php:388 -msgid "never" -msgstr "mitte kunagi" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "toimumiskordade järgi" - -#: lib/object.php:390 -msgid "by date" -msgstr "kuupäeva järgi" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "kuu päeva järgi" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "nädalapäeva järgi" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Esmaspäev" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Teisipäev" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Kolmapäev" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Neljapäev" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Reede" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Laupäev" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Pühapäev" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "ürituse kuu nädal" - -#: lib/object.php:428 -msgid "first" -msgstr "esimene" - -#: lib/object.php:429 -msgid "second" -msgstr "teine" - -#: lib/object.php:430 -msgid "third" -msgstr "kolmas" - -#: lib/object.php:431 -msgid "fourth" -msgstr "neljas" - -#: lib/object.php:432 -msgid "fifth" -msgstr "viies" - -#: lib/object.php:433 -msgid "last" -msgstr "viimane" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Jaanuar" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Veebruar" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Märts" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Aprill" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mai" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juuni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juuli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktoober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Detsember" - -#: lib/object.php:488 -msgid "by events date" -msgstr "ürituste kuupäeva järgi" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "aasta päeva(de) järgi" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "nädala numbri(te) järgi" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "kuu ja päeva järgi" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Kuupäev" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Kogu päev" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Puuduvad väljad" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Pealkiri" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Alates kuupäevast" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Alates kellaajast" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Kuni kuupäevani" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Kuni kellaajani" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Ãœritus lõpeb enne, kui see algab" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Tekkis andmebaasi viga" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Nädal" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Kuu" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Nimekiri" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Täna" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Sinu kalendrid" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav Link" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Jagatud kalendrid" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Jagatud kalendreid pole" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Jaga kalendrit" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Lae alla" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Muuda" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Kustuta" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "jagas sinuga" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Uus kalender" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Muuda kalendrit" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Näidatav nimi" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiivne" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalendri värv" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Salvesta" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "OK" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Loobu" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Muuda sündmust" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Ekspordi" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Ãœrituse info" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Kordamine" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Osalejad" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Jaga" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Sündmuse pealkiri" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategooria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Eralda kategooriad komadega" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Muuda kategooriaid" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Kogu päeva sündmus" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Alates" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Kuni" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Lisavalikud" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Asukoht" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Sündmuse toimumiskoht" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Kirjeldus" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Sündmuse kirjeldus" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Korda" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Täpsem" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Vali nädalapäevad" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Vali päevad" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "ja ürituse päev aastas." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "ja ürituse päev kuus." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Vali kuud" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Vali nädalad" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "ja ürituse nädal aastas." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervall" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Lõpp" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "toimumiskordi" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "loo uus kalender" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Impordi kalendrifail" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Uue kalendri nimi" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Impordi" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Sulge dialoogiaken" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Loo sündmus" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Vaata üritust" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Ãœhtegi kategooriat pole valitud" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "/" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "kell" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Ajavöönd" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Kasutajad" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "valitud kasutajad" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Muudetav" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupid" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "valitud grupid" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "tee avalikuks" diff --git a/l10n/et_EE/contacts.po b/l10n/et_EE/contacts.po deleted file mode 100644 index 076195c05e4b0c95a78a24fdeb58f03c2fe78654..0000000000000000000000000000000000000000 --- a/l10n/et_EE/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Viga aadressiraamatu (de)aktiveerimisel." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID on määramata." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Tühja nimega aadressiraamatut ei saa uuendada." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Viga aadressiraamatu uuendamisel." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "ID-d pole sisestatud" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Viga kontrollsumma määramisel." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Kustutamiseks pole valitud ühtegi kategooriat." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Ei leitud ühtegi aadressiraamatut." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Ãœhtegi kontakti ei leitud." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Konktakti lisamisel tekkis viga." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "elemendi nime pole määratud." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Tühja omadust ei saa lisada." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Vähemalt üks aadressiväljadest peab olema täidetud." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Proovitakse lisada topeltomadust: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Visiitkaardi info pole korrektne. Palun lae leht uuesti." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Puudub ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Viga VCard-ist ID parsimisel: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "kontrollsummat pole määratud." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "vCard info pole korrektne. Palun lae lehekülg uuesti: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Midagi läks tõsiselt metsa." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Kontakti ID-d pole sisestatud." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Viga kontakti foto lugemisel." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Viga ajutise faili salvestamisel." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Laetav pilt pole korrektne pildifail." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Kontakti ID puudub." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Foto asukohta pole määratud." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Faili pole olemas:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Viga pildi laadimisel." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Viga kontakti objekti hankimisel." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Viga PHOTO omaduse hankimisel." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Viga kontakti salvestamisel." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Viga pildi suuruse muutmisel" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Viga pildi lõikamisel" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Viga ajutise pildi loomisel" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Viga pildi leidmisel: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Viga kontaktide üleslaadimisel kettale." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Ãœhtegi tõrget polnud, fail on üles laetud" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Ãœleslaetud fail ületab php.ini failis määratud upload_max_filesize suuruse" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Ãœleslaetud fail ületab MAX_FILE_SIZE suuruse, mis on HTML vormi jaoks määratud" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Fail laeti üles ainult osaliselt" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Ãœhtegi faili ei laetud üles" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Ajutiste failide kaust puudub" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Ajutise pildi salvestamine ebaõnnestus: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Ajutise pildi laadimine ebaõnnestus: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Ãœhtegi faili ei laetud üles. Tundmatu viga" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontaktid" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Vabandust, aga see funktsioon pole veel valmis" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Pole implementeeritud" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Kehtiva aadressi hankimine ebaõnnestus" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Viga" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "See omadus ei tohi olla tühi." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Muuda nime" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Ãœleslaadimiseks pole faile valitud." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Vali tüüp" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Tulemus: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " imporditud, " - -#: js/loader.js:49 -msgid " failed." -msgstr " ebaõnnestus." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "See pole sinu aadressiraamat." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakti ei leitud." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Töö" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Kodu" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobiil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Tekst" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Hääl" - -#: lib/app.php:205 -msgid "Message" -msgstr "Sõnum" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faks" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Piipar" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Sünnipäev" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} sünnipäev" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Lisa kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Impordi" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Aadressiraamatud" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Sule" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Lohista üleslaetav foto siia" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Kustuta praegune foto" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Muuda praegust pilti" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Lae üles uus foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Vali foto ownCloudist" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Kohandatud vorming, Lühike nimi, Täielik nimi, vastupidine või vastupidine komadega" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Muuda nime üksikasju" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisatsioon" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Kustuta" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Hüüdnimi" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Sisesta hüüdnimi" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd.mm.yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupid" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Eralda grupid komadega" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Muuda gruppe" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Eelistatud" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Palun sisesta korrektne e-posti aadress." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Sisesta e-posti aadress" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Kiri aadressile" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Kustuta e-posti aadress" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Sisesta telefoninumber" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Kustuta telefoninumber" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Vaata kaardil" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Muuda aaressi infot" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Lisa märkmed siia." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Lisa väli" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-post" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Aadress" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Märkus" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Lae kontakt alla" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Kustuta kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Ajutine pilt on puhvrist eemaldatud." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Muuda aadressi" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tüüp" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postkontori postkast" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Laiendatud" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Linn" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Piirkond" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postiindeks" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Riik" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Aadressiraamat" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Eesliited" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Preili" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Pr" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Hr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Härra" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Proua" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Eesnimi" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Lisanimed" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Perekonnanimi" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Järelliited" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Senior." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Impordi kontaktifail" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Palun vali aadressiraamat" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "loo uus aadressiraamat" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Uue aadressiraamatu nimi" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Kontaktide importimine" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Sinu aadressiraamatus pole ühtegi kontakti." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Lisa kontakt" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV sünkroniseerimise aadressid" - -#: templates/settings.php:3 -msgid "more info" -msgstr "lisainfo" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Peamine aadress" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Lae alla" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Muuda" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Uus aadressiraamat" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Salvesta" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Loobu" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index 81a2ab9c72d9f9ee692ee3b4a5cf2342e6f64e63..016395b94924aa754e28faad7a81ded7a31a7b09 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/core.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Rivo Zängov , 2011, 2012. +# Rivo Zängov , 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Rakenduse nime pole sisestatud." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Pole kategooriat, mida lisada?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "See kategooria on juba olemas: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Kustutamiseks pole kategooriat valitud." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Seaded" -#: js/js.js:645 -msgid "January" -msgstr "Jaanuar" +#: js/js.js:688 +msgid "seconds ago" +msgstr "sekundit tagasi" -#: js/js.js:645 -msgid "February" -msgstr "Veebruar" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 minut tagasi" -#: js/js.js:645 -msgid "March" -msgstr "Märts" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{minutes} minutit tagasi" -#: js/js.js:645 -msgid "April" -msgstr "Aprill" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mai" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Juuni" +#: js/js.js:693 +msgid "today" +msgstr "täna" -#: js/js.js:646 -msgid "July" -msgstr "Juuli" +#: js/js.js:694 +msgid "yesterday" +msgstr "eile" -#: js/js.js:646 -msgid "August" -msgstr "August" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{days} päeva tagasi" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:696 +msgid "last month" +msgstr "viimasel kuul" -#: js/js.js:646 -msgid "October" -msgstr "Oktoober" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:698 +msgid "months ago" +msgstr "kuu tagasi" -#: js/js.js:646 -msgid "December" -msgstr "Detsember" +#: js/js.js:699 +msgid "last year" +msgstr "viimasel aastal" + +#: js/js.js:700 +msgid "years ago" +msgstr "aastat tagasi" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Vali" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Loobu" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ei" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Jah" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Kustutamiseks pole kategooriat valitud." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Viga" -#: js/share.js:103 -msgid "Error while sharing" +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:114 -msgid "Error while unsharing" +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:121 -msgid "Error while changing permissions" -msgstr "" +#: js/share.js:124 +msgid "Error while sharing" +msgstr "Viga jagamisel" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "Viga jagamise lõpetamisel" -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "Viga õiguste muutmisel" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Sinuga jagas {owner}" + +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Jaga" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Jaga lingiga" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Parooliga kaitstud" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Parool" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Määra aegumise kuupäev" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Aegumise kuupäev" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Jaga e-postiga:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Ãœhtegi inimest ei leitud" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" +msgstr "Edasijagamine pole lubatud" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Lõpeta jagamine" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "saab muuta" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "ligipääsukontroll" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "loo" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "uuenda" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "kustuta" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "jaga" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" -msgstr "" +msgstr "Parooliga kaitstud" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Viga aegumise kuupäeva eemaldamisel" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" -msgstr "" +msgstr "Viga aegumise kuupäeva määramisel" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud parooli taastamine" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Sinu parooli taastamise link saadetakse sulle e-postile." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Kohustuslik" +msgid "Reset email send." +msgstr "Taastamise e-kiri on saadetud." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Sisselogimine ebaõnnestus!" +msgid "Request failed!" +msgstr "Päring ebaõnnestus!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Kasutajanimi" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Päringu taastamine" @@ -296,72 +329,187 @@ msgstr "Pilve ei leitud" msgid "Edit categories" msgstr "Muuda kategooriaid" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Lisa" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Turvahoiatus" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Loo admini konto" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Lisavalikud" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Andmete kaust" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Seadista andmebaasi" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "kasutatakse" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Andmebaasi kasutaja" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Andmebaasi parool" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Andmebasi nimi" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "Andmebaasi tabeliruum" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Andmebaasi host" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Lõpeta seadistamine" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Pühapäev" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Esmaspäev" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Teisipäev" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Kolmapäev" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Neljapäev" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Reede" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Laupäev" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Jaanuar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Veebruar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Märts" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Aprill" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Juuni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Juuli" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktoober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Detsember" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "veebiteenused sinu kontrolli all" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Logi välja" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automaatne sisselogimine lükati tagasi!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Kui sa ei muutnud oma parooli hiljut, siis võib su kasutajakonto olla ohustatud!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Palun muuda parooli, et oma kasutajakonto uuesti turvata." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Kaotasid oma parooli?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "pea meeles" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Logi sisse" @@ -376,3 +524,17 @@ msgstr "eelm" #: templates/part.pagenavi.php:20 msgid "next" msgstr "järgm" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "turvahoiatus!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Kinnita" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index 4aedcde54d1a7d2a07d5988ddf2f055e38fbe361..9c1c0fadb7bf6181d457273e5b5a3a7da2cd54d2 100644 --- a/l10n/et_EE/files.po +++ b/l10n/et_EE/files.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Rivo Zängov , 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,195 +24,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Ãœhtegi viga pole, fail on üles laetud" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Ãœles laetud faili suurus ületab php.ini määratud upload_max_filesize suuruse" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Ãœles laetud faili suurus ületab HTML vormis määratud upload_max_filesize suuruse" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Fail laeti üles ainult osaliselt" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ãœhtegi faili ei laetud üles" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Ajutiste failide kaust puudub" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Kettale kirjutamine ebaõnnestus" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Failid" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Lõpeta jagamine" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Kustuta" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "ümber" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "on juba olemas" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} on juba olemas" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "asenda" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "soovita nime" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "loobu" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "asendatud" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "asendatud nimega {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "tagasi" -#: js/filelist.js:241 -msgid "with" -msgstr "millega" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "asendas nime {old_name} nimega {new_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "jagamata" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "jagamata {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "kustutatud" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "kustutatud {files}" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "ZIP-faili loomine, see võib veidi aega võtta." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suurus on 0 baiti" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Ãœleslaadimise viga" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Sulge" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Ootel" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 faili üleslaadimisel" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} faili üleslaadimist" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Ãœleslaadimine tühistati." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Vigane nimi, '/' pole lubatud." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Vigane kausta nimi. Nime \"Jagatud\" kasutamine on Owncloudi poolt broneeritud " -#: js/files.js:667 -msgid "files scanned" -msgstr "" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} faili skännitud" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "viga skännimisel" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nimi" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Suurus" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Muudetud" -#: js/files.js:777 -msgid "folder" -msgstr "kaust" - -#: js/files.js:779 -msgid "folders" -msgstr "kausta" - -#: js/files.js:787 -msgid "file" -msgstr "fail" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 kaust" -#: js/files.js:789 -msgid "files" -msgstr "faili" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} kausta" -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 fail" -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} faili" #: templates/admin.php:5 msgid "File handling" @@ -221,27 +193,27 @@ msgstr "Failide käsitlemine" msgid "Maximum upload size" msgstr "Maksimaalne üleslaadimise suurus" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "maks. võimalik: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Vajalik mitme faili ja kausta allalaadimiste jaoks." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Luba ZIP-ina allalaadimine" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 tähendab piiramatut" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maksimaalne ZIP-faili sisestatava faili suurus" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Salvesta" @@ -249,52 +221,48 @@ msgstr "Salvesta" msgid "New" msgstr "Uus" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tekstifail" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Kaust" -#: templates/index.php:11 -msgid "From url" -msgstr "URL-ilt" +#: templates/index.php:14 +msgid "From link" +msgstr "Allikast" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Lae üles" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Tühista üleslaadimine" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Siin pole midagi. Lae midagi üles!" -#: templates/index.php:50 -msgid "Share" -msgstr "Jaga" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Lae alla" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Ãœleslaadimine on liiga suur" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele failidele määratud maksimaalse suuruse." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Faile skannitakse, palun oota" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Praegune skannimine" diff --git a/l10n/et_EE/files_external.po b/l10n/et_EE/files_external.po index b1353d14f41f1dc70cf730b6c93bfb45cc5f43b2..bb927c828240ab757d34afda157b4842b56af07a 100644 --- a/l10n/et_EE/files_external.po +++ b/l10n/et_EE/files_external.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-21 02:03+0200\n" +"PO-Revision-Date: 2012-10-20 20:16+0000\n" +"Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +20,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "Ligipääs on antud" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Viga Dropboxi salvestusruumi seadistamisel" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Anna ligipääs" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Täida kõik kohustuslikud lahtrid" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "Palun sisesta korrektne Dropboxi rakenduse võti ja salasõna." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Viga Google Drive'i salvestusruumi seadistamisel" #: templates/settings.php:3 msgid "External Storage" diff --git a/l10n/et_EE/files_pdfviewer.po b/l10n/et_EE/files_pdfviewer.po deleted file mode 100644 index 3354f9e2ccc57e269a3cba5a9023b81a43a41d53..0000000000000000000000000000000000000000 --- a/l10n/et_EE/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index e877c9e1c2588f0ffa6ecdc328aeb38b54a50bf5..c0302f73c0695ae76080e335801022aa77ce5aff 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-30 00:01+0100\n" +"PO-Revision-Date: 2012-10-29 22:43+0000\n" +"Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,12 +29,12 @@ msgstr "Saada" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s jagas sinuga kausta %s" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s jagas sinuga faili %s" #: templates/public.php:14 templates/public.php:30 msgid "Download" @@ -44,6 +44,6 @@ msgstr "Lae alla" msgid "No preview available for" msgstr "Eelvaadet pole saadaval" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" msgstr "veebitenused sinu kontrolli all" diff --git a/l10n/et_EE/files_texteditor.po b/l10n/et_EE/files_texteditor.po deleted file mode 100644 index 134962433934f40812af53b6dd48efa53675aa93..0000000000000000000000000000000000000000 --- a/l10n/et_EE/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/et_EE/files_versions.po b/l10n/et_EE/files_versions.po index 33dc90ce2ff93db61e7bed32e78726d54af1391e..a0d4710bcd42126317ec1100fe73c63bfbb3e838 100644 --- a/l10n/et_EE/files_versions.po +++ b/l10n/et_EE/files_versions.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-21 02:03+0200\n" +"PO-Revision-Date: 2012-10-20 20:09+0000\n" +"Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,7 +24,7 @@ msgstr "Kõikide versioonide aegumine" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "Ajalugu" #: templates/settings-personal.php:4 msgid "Versions" @@ -36,8 +36,8 @@ msgstr "See kustutab kõik sinu failidest tehtud varuversiooni" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "Failide versioonihaldus" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Luba" diff --git a/l10n/et_EE/gallery.po b/l10n/et_EE/gallery.po deleted file mode 100644 index 1b844f2ca997c0222cca1ac1d857f9ec72c4081e..0000000000000000000000000000000000000000 --- a/l10n/et_EE/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Pildid" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Seaded" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Skänni uuesti" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Peata" - -#: templates/index.php:18 -msgid "Share" -msgstr "Jaga" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Tagasi" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Eemaldamise kinnitus" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Kas sa soovid albumit eemaldada" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Muuda albumi nime" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Uue albumi nimi" diff --git a/l10n/et_EE/impress.po b/l10n/et_EE/impress.po deleted file mode 100644 index 85746c64843d762a90799e935e78d2881193bdd0..0000000000000000000000000000000000000000 --- a/l10n/et_EE/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/et_EE/lib.po b/l10n/et_EE/lib.po index da4dcfe526905ef29a841240a4d8d4aa21c9cae2..f617ebc7835e135a00694ae354373ee674709cb2 100644 --- a/l10n/et_EE/lib.po +++ b/l10n/et_EE/lib.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-12 02:01+0200\n" -"PO-Revision-Date: 2012-09-11 10:18+0000\n" -"Last-Translator: Rivo Zängov \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +42,19 @@ msgstr "Rakendused" msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP-ina allalaadimine on välja lülitatud." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Failid tuleb alla laadida ükshaaval." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Tagasi failide juurde" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Valitud failid on ZIP-faili loomiseks liiga suured." @@ -62,7 +62,7 @@ msgstr "Valitud failid on ZIP-faili loomiseks liiga suured." msgid "Application is not enabled" msgstr "Rakendus pole sisse lülitatud" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Autentimise viga" @@ -70,57 +70,84 @@ msgstr "Autentimise viga" msgid "Token expired. Please reload page." msgstr "Kontrollkood aegus. Paelun lae leht uuesti." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Failid" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Tekst" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Pildid" + +#: template.php:103 msgid "seconds ago" msgstr "sekundit tagasi" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 minut tagasi" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minutit tagasi" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "täna" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "eile" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d päeva tagasi" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "eelmisel kuul" -#: template.php:96 -msgid "months ago" -msgstr "kuud tagasi" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "eelmisel aastal" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "aastat tagasi" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s on saadaval. Vaata lisainfot" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "ajakohane" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "uuenduste kontrollimine on välja lülitatud" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/et_EE/media.po b/l10n/et_EE/media.po deleted file mode 100644 index 8be81b35e4f27b33ad46248f298b25b2458e040a..0000000000000000000000000000000000000000 --- a/l10n/et_EE/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Muusika" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Esita" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Paus" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Eelmine" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Järgmine" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Vaikseks" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Hääl tagasi" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Skänni kollekttsiooni uuesti" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Esitaja" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Pealkiri" diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po index 38300967e5c411e1790787b7b512a6e77bbe30be..d758c91271da395cde9bd4d1eebed462b7505789 100644 --- a/l10n/et_EE/settings.po +++ b/l10n/et_EE/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +19,73 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "App Sotre'i nimekirja laadimine ebaõnnestus" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Autentimise viga" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Grupp on juba olemas" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Keela grupi lisamine" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Rakenduse sisselülitamine ebaõnnestus." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Kiri on salvestatud" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Vigane e-post" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID on muudetud" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Vigane päring" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Keela grupi kustutamine" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Autentimise viga" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Keela kasutaja kustutamine" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Keel on muudetud" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Kasutajat ei saa lisada gruppi %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Kasutajat ei saa eemaldada grupist %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Lülita välja" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Lülita sisse" @@ -90,104 +93,17 @@ msgstr "Lülita sisse" msgid "Saving..." msgstr "Salvestamine..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Eesti" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Turvahoiatus" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Ajastatud töö" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Luba jagamise API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Luba rakendustel kasutada jagamise API-t" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Luba linke" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Luba kasutajatel jagada kirjeid avalike linkidega" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Luba edasijagamine" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Luba kasutajatel jagada edasi kirjeid, mida on neile jagatud" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Luba kasutajatel kõigiga jagada" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Luba kasutajatel jagada kirjeid ainult nende grupi liikmetele, millesse nad ise kuuluvad" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Logi" - -#: templates/admin.php:116 -msgid "More" -msgstr "Veel" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Lisa oma rakendus" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Veel rakendusi" #: templates/apps.php:27 msgid "Select an App" @@ -213,21 +129,21 @@ msgstr "Suurte failide haldamine" msgid "Ask a question" msgstr "Küsi küsimus" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Probleemid abiinfo andmebaasiga ühendumisel." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Mine sinna käsitsi." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Vasta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -240,7 +156,7 @@ msgstr "Lae alla" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Sinu parooli on muudetud" #: templates/personal.php:20 msgid "Unable to change your password" @@ -286,6 +202,16 @@ msgstr "Aita tõlkida" msgid "use this address to connect to your ownCloud in your file manager" msgstr "kasuta seda aadressi oma ownCloudiga ühendamiseks failihalduriga" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nimi" diff --git a/l10n/et_EE/tasks.po b/l10n/et_EE/tasks.po deleted file mode 100644 index 042e2c4864fbc1775271a09ec822eb7bd4b4616c..0000000000000000000000000000000000000000 --- a/l10n/et_EE/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 06:36+0000\n" -"Last-Translator: Rivo Zängov \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Vigane kuupäev/kellaaeg" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Ãœlesanded" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Kategooriat pole" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Määramata" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=kõrgeim" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=keskmine" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=madalaim" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Tühi kokkuvõte" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Vigane edenemise protsent" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Vigane tähtsus" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Lisa ülesanne" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Tähtaja järgi" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Nimekirja järgi" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Edenemise järgi" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Asukoha järgi" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Tähtsuse järjekorras" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Sildi järgi" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Ãœlesannete laadimine..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Tähtis" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Rohkem" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Vähem" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Kustuta" diff --git a/l10n/et_EE/user_ldap.po b/l10n/et_EE/user_ldap.po index d955f91c9ddce25bbda67689748b575c5970ff66..ccccf7cb20ac799d049db889be1a3ab51e2964b1 100644 --- a/l10n/et_EE/user_ldap.po +++ b/l10n/et_EE/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-12 02:01+0200\n" -"PO-Revision-Date: 2012-09-11 10:46+0000\n" +"POT-Creation-Date: 2012-10-30 00:01+0100\n" +"PO-Revision-Date: 2012-10-29 22:48+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -25,7 +25,7 @@ msgstr "Host" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "Sa ei saa protokolli ära jätta, välja arvatud siis, kui sa nõuad SSL-ühendust. Sel juhul alusta eesliitega ldaps://" #: templates/settings.php:9 msgid "Base DN" @@ -33,7 +33,7 @@ msgstr "Baas DN" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" +msgstr "Sa saad kasutajate ja gruppide baas DN-i määrata lisavalikute vahekaardilt" #: templates/settings.php:10 msgid "User DN" @@ -44,7 +44,7 @@ msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja parool tühjaks." #: templates/settings.php:11 msgid "Password" @@ -52,7 +52,7 @@ msgstr "Parool" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "Anonüümseks ligipääsuks jäta DN ja parool tühjaks." #: templates/settings.php:12 msgid "User Login Filter" @@ -63,7 +63,7 @@ msgstr "Kasutajanime filter" msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime." #: templates/settings.php:12 #, php-format @@ -130,7 +130,7 @@ msgstr "Lülita SSL sertifikaadi kontrollimine välja." msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Kui ühendus toimib ainult selle valikuga, siis impordi LDAP serveri SSL sertifikaat oma ownCloud serverisse." #: templates/settings.php:23 msgid "Not recommended, use for testing only." diff --git a/l10n/et_EE/user_migrate.po b/l10n/et_EE/user_migrate.po deleted file mode 100644 index 88aea1413865941586c0d92d0c6bf2158588ef3f..0000000000000000000000000000000000000000 --- a/l10n/et_EE/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/et_EE/user_openid.po b/l10n/et_EE/user_openid.po deleted file mode 100644 index 8be57b5de20cb6dd7acef1ef73c79cb6c0a5d586..0000000000000000000000000000000000000000 --- a/l10n/et_EE/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Rivo Zängov , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 06:48+0000\n" -"Last-Translator: Rivo Zängov \n" -"Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "See on OpenID serveri lõpp-punkt. Lisainfot vaata" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identiteet: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Tsoon: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/et_EE/files_odfviewer.po b/l10n/et_EE/user_webdavauth.po similarity index 61% rename from l10n/et_EE/files_odfviewer.po rename to l10n/et_EE/user_webdavauth.po index 986289e67a605c2946d711f33f92676b72a8275c..06fb9adc8f9067bed8fa6557aa8c2a2266a025c8 100644 --- a/l10n/et_EE/files_odfviewer.po +++ b/l10n/et_EE/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Rivo Zängov , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-30 00:03+0100\n" +"PO-Revision-Date: 2012-11-29 21:18+0000\n" +"Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: et_EE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/eu/admin_dependencies_chk.po b/l10n/eu/admin_dependencies_chk.po deleted file mode 100644 index 92e7dfc1a3cb972e0e9fe48bca547b348b59b714..0000000000000000000000000000000000000000 --- a/l10n/eu/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/eu/admin_migrate.po b/l10n/eu/admin_migrate.po deleted file mode 100644 index c810a7d4520867d3cf8568ddacb1d858f0d90fec..0000000000000000000000000000000000000000 --- a/l10n/eu/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/eu/bookmarks.po b/l10n/eu/bookmarks.po deleted file mode 100644 index d443167a5bab75c36ef9a045687e71dbc35d85f5..0000000000000000000000000000000000000000 --- a/l10n/eu/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/eu/calendar.po b/l10n/eu/calendar.po deleted file mode 100644 index 9617f72ac3bd36109b142819dbe514479b9f6850..0000000000000000000000000000000000000000 --- a/l10n/eu/calendar.po +++ /dev/null @@ -1,816 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Asier Urio Larrea , 2011. -# Piarres Beobide , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Egutegi guztiak ez daude guztiz cacheatuta" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Dena guztiz cacheatuta dagoela dirudi" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Ez da egutegirik aurkitu." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ez da gertaerarik aurkitu." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Egutegi okerra" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Fitxategiak ez zuen gertaerarik edo gertaera guztiak dagoeneko egutegian gordeta zeuden." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "gertaerak egutegi berrian gorde dira" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Inportazioak huts egin du" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "gertaerak zure egutegian gorde dira" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ordu-zonalde berria" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Ordu-zonaldea aldatuta" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Baliogabeko eskaera" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Egutegia" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "yyyy MMMM" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Jaioteguna" - -#: lib/app.php:122 -msgid "Business" -msgstr "Negozioa" - -#: lib/app.php:123 -msgid "Call" -msgstr "Deia" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Bezeroak" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Banatzailea" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Oporrak" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideiak" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Bidaia" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Urteurrena" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Bilera" - -#: lib/app.php:131 -msgid "Other" -msgstr "Bestelakoa" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Pertsonala" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Proiektuak" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Galderak" - -#: lib/app.php:135 -msgid "Work" -msgstr "Lana" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "izengabea" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Egutegi berria" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ez da errepikatzen" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Egunero" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Astero" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Asteko egun guztietan" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Bi-Astero" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Hilabetero" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Urtero" - -#: lib/object.php:388 -msgid "never" -msgstr "inoiz" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "errepikapen kopuruagatik" - -#: lib/object.php:390 -msgid "by date" -msgstr "dataren arabera" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "hileko egunaren arabera" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "asteko egunaren arabera" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Astelehena" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Asteartea" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Asteazkena" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Osteguna" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Ostirala" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Larunbata" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Igandea" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "gertaeraren hilabeteko astea" - -#: lib/object.php:428 -msgid "first" -msgstr "lehenengoa" - -#: lib/object.php:429 -msgid "second" -msgstr "bigarrean" - -#: lib/object.php:430 -msgid "third" -msgstr "hirugarrena" - -#: lib/object.php:431 -msgid "fourth" -msgstr "laugarrena" - -#: lib/object.php:432 -msgid "fifth" -msgstr "bostgarrena" - -#: lib/object.php:433 -msgid "last" -msgstr "azkena" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Urtarrila" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Otsaila" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Martxoa" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Apirila" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maiatza" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Ekaina" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Uztaila" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Abuztua" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Iraila" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Urria" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Azaroa" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Abendua" - -#: lib/object.php:488 -msgid "by events date" -msgstr "gertaeren dataren arabera" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "urteko egunaren arabera" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "aste zenbaki(ar)en arabera" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "eguna eta hilabetearen arabera" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Eg." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "ig." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "al." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "ar." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "az." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "og." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "ol." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "lr." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "urt." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "ots." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "api." - -#: templates/calendar.php:8 -msgid "May." -msgstr "mai." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "eka." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "uzt." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "abu." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "ira." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "urr." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "aza." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "abe." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Egun guztia" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Eremuak faltan" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Izenburua" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Hasierako Data" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Hasierako Ordua" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Bukaerako Data" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Bukaerako Ordua" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Gertaera hasi baino lehen bukatzen da" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Datu-baseak huts egin du" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Astea" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Hilabetea" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Zerrenda" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Gaur" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Zure egutegiak" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav lotura" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Elkarbanatutako egutegiak" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Ez dago elkarbanatutako egutegirik" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Elkarbanatu egutegia" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Deskargatu" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Editatu" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Ezabatu" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "honek zurekin elkarbanatu du" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Egutegi berria" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Editatu egutegia" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Bistaratzeko izena" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiboa" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Egutegiaren kolorea" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Gorde" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Bidali" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Ezeztatu" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Editatu gertaera" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportatu" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Gertaeraren informazioa" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Errepikapena" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarma" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Partaideak" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Elkarbanatu" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Gertaeraren izenburua" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategoria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Banatu kategoriak komekin" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Editatu kategoriak" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Egun osoko gertaera" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Hasiera" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Bukaera" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Aukera aurreratuak" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Kokalekua" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Gertaeraren kokalekua" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Deskribapena" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Gertaeraren deskribapena" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Errepikatu" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Aurreratua" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Hautatu asteko egunak" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Hautatu egunak" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "eta gertaeraren urteko eguna." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "eta gertaeraren hilabeteko eguna." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Hautatu hilabeteak" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Hautatu asteak" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "eta gertaeraren urteko astea." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Tartea" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Amaiera" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "errepikapenak" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "sortu egutegi berria" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Inportatu egutegi fitxategi bat" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Mesedez aukeratu egutegi bat." - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Egutegi berriaren izena" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Hartu eskuragarri dagoen izen bat!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Izen hau duen egutegi bat dagoeneko existitzen da. Hala ere jarraitzen baduzu, egutegi hauek elkartuko dira." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importatu" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Itxi lehioa" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Sortu gertaera berria" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Ikusi gertaera bat" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Ez da kategoriarik hautatu" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Ordu-zonaldea" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Cache" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Ezabatu gertaera errepikakorren cachea" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Egutegiaren CalDAV sinkronizazio helbideak" - -#: templates/settings.php:87 -msgid "more info" -msgstr "informazio gehiago" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Helbide nagusia" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Erabiltzaileak" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "hautatutako erabiltzaileak" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Editagarria" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Taldeak" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "hautatutako taldeak" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "publikoa egin" diff --git a/l10n/eu/contacts.po b/l10n/eu/contacts.po deleted file mode 100644 index 3cb1eea28f00914c3f92c681adc7ef74e364cecb..0000000000000000000000000000000000000000 --- a/l10n/eu/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Asier Urio Larrea , 2011. -# Piarres Beobide , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Errore bat egon da helbide-liburua (des)gaitzen" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "IDa ez da ezarri." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Ezin da helbide liburua eguneratu izen huts batekin." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Errore bat egon da helbide liburua eguneratzen." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Ez da IDrik eman" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Errorea kontrol-batura ezartzean." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Ez dira ezabatzeko kategoriak hautatu." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Ez da helbide libururik aurkitu." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Ez da kontakturik aurkitu." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Errore bat egon da kontaktua gehitzerakoan" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "elementuaren izena ez da ezarri." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Ezin izan da kontaktua analizatu:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Ezin da propieta hutsa gehitu." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Behintzat helbide eremuetako bat bete behar da." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Propietate bikoiztuta gehitzen saiatzen ari zara:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "vCard-aren inguruko informazioa okerra da. Mesedez birkargatu orrialdea." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID falta da" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Errorea VCard analizatzean hurrengo IDrako: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "Kontrol-batura ezarri gabe dago." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "vCard honen informazioa ez da zuzena.Mezedez birkargatu orria:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Ez da kontaktuaren IDrik eman." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Errore bat izan da kontaktuaren argazkia igotzerakoan." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Errore bat izan da aldi bateko fitxategia gordetzerakoan." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Kargatzen ari den argazkia ez da egokia." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Kontaktuaren IDa falta da." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Ez da argazkiaren bide-izenik eman." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Fitxategia ez da existitzen:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Errore bat izan da irudia kargatzearkoan." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Errore bat izan da kontaktu objetua lortzean." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Errore bat izan da PHOTO propietatea lortzean." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Errore bat izan da kontaktua gordetzean." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Errore bat izan da irudiaren tamaina aldatzean" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Errore bat izan da irudia mozten" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Errore bat izan da aldi bateko irudia sortzen" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Ezin izan da irudia aurkitu:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Errore bat egon da kontaktuak biltegira igotzerakoan." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Ez da errorerik egon, fitxategia ongi igo da" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Igotako fitxategia php.ini fitxategiko upload_max_filesize direktiba baino handiagoa da" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Igotako fitxategia HTML formularioan zehaztutako MAX_FILE_SIZE direktiba baino handidagoa da." - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Igotako fitxategiaren zati bat bakarrik igo da" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Ez da fitxategirik igo" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Aldi bateko karpeta falta da" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Ezin izan da aldi bateko irudia gorde:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Ezin izan da aldi bateko irudia kargatu:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Ez da fitxategirik igo. Errore ezezaguna" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontaktuak" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Barkatu, aukera hau ez da oriandik inplementatu" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Inplementatu gabe" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Ezin izan da eposta baliagarri bat hartu." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Errorea" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Propietate hau ezin da hutsik egon." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Ezin izan dira elementuak serializatu." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' argumenturik gabe deitu da. Mezedez abisatu bugs.owncloud.org-en" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Editatu izena" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Ez duzu igotzeko fitxategirik hautatu." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Igo nahi duzun fitxategia zerbitzariak onartzen duen tamaina baino handiagoa da." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Hautatu mota" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Emaitza:" - -#: js/loader.js:49 -msgid " imported, " -msgstr " inportatua, " - -#: js/loader.js:49 -msgid " failed." -msgstr "huts egin du." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Hau ez da zure helbide liburua." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Ezin izan da kontaktua aurkitu." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Lana" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Etxea" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Bestelakoa" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mugikorra" - -#: lib/app.php:203 -msgid "Text" -msgstr "Testua" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Ahotsa" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mezua" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax-a" - -#: lib/app.php:207 -msgid "Video" -msgstr "Bideoa" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Bilagailua" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Jaioteguna" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "Deia" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Bezeroak" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Oporrak" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ideiak" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Bidaia" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Bilera" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Pertsonala" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Proiektuak" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Galderak" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}ren jaioteguna" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontaktua" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Gehitu kontaktua" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Inportatu" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Ezarpenak" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Helbide Liburuak" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Itxi" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Teklatuaren lasterbideak" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Nabigazioa" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Hurrengoa kontaktua zerrendan" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Aurreko kontaktua zerrendan" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Zabaldu/tolestu uneko helbide-liburua" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Ekintzak" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Gaurkotu kontaktuen zerrenda" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Gehitu kontaktu berria" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Gehitu helbide-liburu berria" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Ezabatu uneko kontaktuak" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Askatu argazkia igotzeko" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Ezabatu oraingo argazkia" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Editatu oraingo argazkia" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Igo argazki berria" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Hautatu argazki bat ownCloudetik" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Editatu izenaren zehaztasunak" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Erakundea" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Ezabatu" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Ezizena" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Sartu ezizena" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Web orria" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.webgunea.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Web orrira joan" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "yyyy-mm-dd" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Taldeak" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Banatu taldeak komekin" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editatu taldeak" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Hobetsia" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Mesedez sartu eposta helbide egoki bat" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Sartu eposta helbidea" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Bidali helbidera" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Ezabatu eposta helbidea" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Sartu telefono zenbakia" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Ezabatu telefono zenbakia" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Ikusi mapan" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Editatu helbidearen zehaztasunak" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Gehitu oharrak hemen." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Gehitu eremua" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefonoa" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Eposta" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Helbidea" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Oharra" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Deskargatu kontaktua" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Ezabatu kontaktua" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Aldi bateko irudia cachetik ezabatu da." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Editatu helbidea" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Mota" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Posta kutxa" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Kalearen helbidea" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Kalea eta zenbakia" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Hedatua" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Etxe zenbakia eab." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Hiria" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Eskualdea" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Posta kodea" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Posta kodea" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Herrialdea" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Helbide-liburua" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Inporatu kontaktuen fitxategia" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Mesedez, aukeratu helbide liburua" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "sortu helbide liburu berria" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Helbide liburuaren izena" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Kontaktuak inportatzen" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Ez duzu kontakturik zure helbide liburuan." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Gehitu kontaktua" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Hautatu helbide-liburuak" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Sartu izena" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Sartu deskribapena" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV sinkronizazio helbideak" - -#: templates/settings.php:3 -msgid "more info" -msgstr "informazio gehiago" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Helbide nagusia" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Deskargatu" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editatu" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Helbide-liburu berria" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Gorde" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Ezeztatu" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index 8eef5491204b451867640abca3857ff2a1f8dcf3..0aa8ffd8d17ff4694bf1ff40e324c5e2016204b3 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-04 02:04+0200\n" -"PO-Revision-Date: 2012-10-03 08:35+0000\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-11-25 23:09+0000\n" "Last-Translator: asieriko \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -19,208 +19,241 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Aplikazioaren izena falta da" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Kategoria mota ez da zehaztu." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ez dago gehitzeko kategoriarik?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Kategoria hau dagoeneko existitzen da:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Objetu mota ez da zehaztu." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID mota ez da zehaztu." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Errorea gertatu da %s gogokoetara gehitzean." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Ez da ezabatzeko kategoriarik hautatu." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Errorea gertatu da %s gogokoetatik ezabatzean." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Ezarpenak" -#: js/js.js:645 -msgid "January" -msgstr "Urtarrila" +#: js/js.js:704 +msgid "seconds ago" +msgstr "segundu" -#: js/js.js:645 -msgid "February" -msgstr "Otsaila" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "orain dela minutu 1" -#: js/js.js:645 -msgid "March" -msgstr "Martxoa" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "orain dela {minutes} minutu" -#: js/js.js:645 -msgid "April" -msgstr "Apirila" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "orain dela ordu bat" -#: js/js.js:645 -msgid "May" -msgstr "Maiatza" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "orain dela {hours} ordu" -#: js/js.js:645 -msgid "June" -msgstr "Ekaina" +#: js/js.js:709 +msgid "today" +msgstr "gaur" -#: js/js.js:646 -msgid "July" -msgstr "Uztaila" +#: js/js.js:710 +msgid "yesterday" +msgstr "atzo" -#: js/js.js:646 -msgid "August" -msgstr "Abuztua" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "orain dela {days} egun" -#: js/js.js:646 -msgid "September" -msgstr "Iraila" +#: js/js.js:712 +msgid "last month" +msgstr "joan den hilabetean" -#: js/js.js:646 -msgid "October" -msgstr "Urria" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "orain dela {months} hilabete" -#: js/js.js:646 -msgid "November" -msgstr "Azaroa" +#: js/js.js:714 +msgid "months ago" +msgstr "hilabete" -#: js/js.js:646 -msgid "December" -msgstr "Abendua" +#: js/js.js:715 +msgid "last year" +msgstr "joan den urtean" + +#: js/js.js:716 +msgid "years ago" +msgstr "urte" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Aukeratu" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Ezeztatu" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ez" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Bai" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ados" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Ez da ezabatzeko kategoriarik hautatu." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Objetu mota ez dago zehaztuta." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:494 -#: js/share.js:506 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "Errorea" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "App izena ez dago zehaztuta." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Beharrezkoa den {file} fitxategia ez dago instalatuta!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Errore bat egon da elkarbanatzean" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Errore bat egon da elkarbanaketa desegitean" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Errore bat egon da baimenak aldatzean" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Zurekin eta taldearekin elkarbanatuta" - -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "{owner}-k zu eta {group} taldearekin partekatuta" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Honek zurekin elkarbanatuta:" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "{owner}-k zurekin partekatuta" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Elkarbanatu honekin" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Elkarbanatu lotura batekin" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Babestu pasahitzarekin" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Pasahitza" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Ezarri muga data" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Muga data" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Elkarbanatu eposta bidez:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Ez da inor aurkitu" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Berriz elkarbanatzea ez dago baimendua" -#: js/share.js:250 -msgid "Shared in" -msgstr "Elkarbanatua hemen:" - -#: js/share.js:250 -msgid "with" -msgstr "honekin" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "{user}ekin {item}-n partekatuta" + +#: js/share.js:292 msgid "Unshare" msgstr "Ez elkarbanatu" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "editatu dezake" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "sarrera kontrola" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "sortu" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "eguneratu" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "ezabatu" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "elkarbanatu" -#: js/share.js:322 js/share.js:481 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" msgstr "Pasahitzarekin babestuta" -#: js/share.js:494 +#: js/share.js:533 msgid "Error unsetting expiration date" msgstr "Errorea izan da muga data kentzean" -#: js/share.js:506 +#: js/share.js:545 msgid "Error setting expiration date" msgstr "Errore bat egon da muga data ezartzean" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud-en pasahitza berrezarri" @@ -233,15 +266,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Zure pashitza berrezartzeko lotura bat jasoko duzu Epostaren bidez." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Eskatuta" +msgid "Reset email send." +msgstr "Berrezartzeko eposta bidali da." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Saio hasierak huts egin du!" +msgid "Request failed!" +msgstr "Eskariak huts egin du!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Erabiltzaile izena" @@ -297,72 +330,187 @@ msgstr "Ez da hodeia aurkitu" msgid "Edit categories" msgstr "Editatu kategoriak" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Gehitu" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Segurtasun abisua" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Ez dago hausazko zenbaki sortzaile segururik eskuragarri, mesedez gatiu PHP OpenSSL extensioa." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Hausazko zenbaki sortzaile segururik gabe erasotzaile batek pasahitza berrezartzeko kodeak iragarri ditzake eta zure kontuaz jabetu." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Zure data karpeta eta zure fitxategiak internetetik zuzenean eskuragarri egon daitezke. ownCloudek emandako .htaccess fitxategia ez du bere lana egiten. Aholkatzen dizugu zure web zerbitzaria ongi konfiguratzea data karpeta eskuragarri ez izateko edo data karpeta web zerbitzariaren dokumentu errotik mugitzea." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Sortu kudeatzaile kontu bat" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Aurreratua" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datuen karpeta" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfiguratu datu basea" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "erabiliko da" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Datubasearen erabiltzailea" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Datubasearen pasahitza" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Datubasearen izena" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Datu basearen taula-lekua" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Datubasearen hostalaria" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Bukatu konfigurazioa" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Igandea" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Astelehena" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Asteartea" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Asteazkena" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Osteguna" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Ostirala" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Larunbata" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Urtarrila" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Otsaila" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Martxoa" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Apirila" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Maiatza" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Ekaina" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Uztaila" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Abuztua" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Iraila" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Urria" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Azaroa" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Abendua" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "web zerbitzuak zure kontrolpean" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Saioa bukatu" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Saio hasiera automatikoa ez onartuta!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Zure pasahitza orain dela gutxi ez baduzu aldatu, zure kontua arriskuan egon daiteke!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Mesedez aldatu zure pasahitza zure kontua berriz segurtatzeko." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Galdu duzu pasahitza?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "gogoratu" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Hasi saioa" @@ -377,3 +525,17 @@ msgstr "aurrekoa" #: templates/part.pagenavi.php:20 msgid "next" msgstr "hurrengoa" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Segurtasun abisua" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Mesedez egiaztatu zure pasahitza.
            Segurtasun arrazoiengatik noizbehinka zure pasahitza berriz sartzea eska diezazukegu." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Egiaztatu" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index 47d4c288f1a34cfb69e59b00d0f6334c5912ca47..31ff303707b0bce18dd4c4422d56362d2d047a4f 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-04 02:04+0200\n" -"PO-Revision-Date: 2012-10-03 07:58+0000\n" -"Last-Translator: asieriko \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +24,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Ez da arazorik izan, fitxategia ongi igo da" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Igotako fitxategiaren tamaina php.ini-ko upload_max_filesize direktiban adierazitakoa baino handiagoa da" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Igotako fitxategiaren tamaina HTML inprimakiko MAX_FILESIZE direktiban adierazitakoa baino handiagoa da" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Igotako fitxategiaren zati bat baino gehiago ez da igo" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ez da fitxategirik igo" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Aldi baterako karpeta falta da" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Errore bat izan da diskoan idazterakoan" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Fitxategiak" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "Ez partekatu" +msgstr "Ez elkarbanatu" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Ezabatu" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Berrizendatu" -#: js/filelist.js:189 js/filelist.js:191 -msgid "already exists" -msgstr "dagoeneko existitzen da" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} dagoeneko existitzen da" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "ordeztu" -#: js/filelist.js:189 +#: js/filelist.js:201 msgid "suggest name" msgstr "aholkatu izena" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "ezeztatu" -#: js/filelist.js:238 js/filelist.js:240 -msgid "replaced" -msgstr "ordeztua" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "ordezkatua {new_name}" -#: js/filelist.js:238 js/filelist.js:240 js/filelist.js:272 js/filelist.js:274 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "desegin" -#: js/filelist.js:240 -msgid "with" -msgstr "honekin" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr " {new_name}-k {old_name} ordezkatu du" -#: js/filelist.js:272 -msgid "unshared" -msgstr "Ez partekatuta" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "elkarbanaketa utzita {files}" -#: js/filelist.js:274 -msgid "deleted" -msgstr "ezabatuta" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "ezabatuta {files}" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "IZen aliogabea, '\\', '/', '<', '>', ':', '\"', '|', '?' eta '*' ez daude baimenduta." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "ZIP-fitxategia sortzen ari da, denbora har dezake" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ezin da zure fitxategia igo, karpeta bat da edo 0 byt ditu" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Igotzean errore bat suertatu da" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Itxi" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Zain" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "fitxategi 1 igotzen" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "fitxategiak igotzen" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} fitxategi igotzen" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Igoera ezeztatuta" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Baliogabeko izena, '/' ezin da erabili. " +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Karpeta izen baliogabea. \"Shared\" karpetaren erabilera Owncloudek erreserbatuta dauka" -#: js/files.js:668 -msgid "files scanned" -msgstr "fitxategiak eskaneatuta" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} fitxategi eskaneatuta" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "errore bat egon da eskaneatzen zen bitartean" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Izena" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Tamaina" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Aldatuta" -#: js/files.js:778 -msgid "folder" -msgstr "karpeta" - -#: js/files.js:780 -msgid "folders" -msgstr "Karpetak" - -#: js/files.js:788 -msgid "file" -msgstr "fitxategia" - -#: js/files.js:790 -msgid "files" -msgstr "fitxategiak" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "segundu" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minutu" +#: js/files.js:814 +msgid "1 folder" +msgstr "karpeta bat" -#: js/files.js:836 -msgid "minutes ago" -msgstr "minutu" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} karpeta" -#: js/files.js:839 -msgid "today" -msgstr "gaur" +#: js/files.js:824 +msgid "1 file" +msgstr "fitxategi bat" -#: js/files.js:840 -msgid "yesterday" -msgstr "atzo" - -#: js/files.js:841 -msgid "days ago" -msgstr "egun" - -#: js/files.js:842 -msgid "last month" -msgstr "joan den hilabetean" - -#: js/files.js:844 -msgid "months ago" -msgstr "hilabete" - -#: js/files.js:845 -msgid "last year" -msgstr "joan den urtean" - -#: js/files.js:846 -msgid "years ago" -msgstr "urte" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} fitxategi" #: templates/admin.php:5 msgid "File handling" @@ -222,27 +193,27 @@ msgstr "Fitxategien kudeaketa" msgid "Maximum upload size" msgstr "Igo daitekeen gehienezko tamaina" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max, posiblea:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Beharrezkoa fitxategi-anitz eta karpeten deskargarako." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Gaitu ZIP-deskarga" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 mugarik gabe esan nahi du" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ZIP fitxategien gehienezko tamaina" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Gorde" @@ -250,52 +221,48 @@ msgstr "Gorde" msgid "New" msgstr "Berria" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Testu fitxategia" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Karpeta" -#: templates/index.php:11 -msgid "From url" -msgstr "URLtik" +#: templates/index.php:14 +msgid "From link" +msgstr "Estekatik" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Igo" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Ezeztatu igoera" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Ez dago ezer. Igo zerbait!" -#: templates/index.php:50 -msgid "Share" -msgstr "Elkarbanatu" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Deskargatu" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Igotakoa handiegia da" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Igotzen saiatzen ari zaren fitxategiak zerbitzari honek igotzeko onartzen duena baino handiagoak dira." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Fitxategiak eskaneatzen ari da, itxoin mezedez." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Orain eskaneatzen ari da" diff --git a/l10n/eu/files_odfviewer.po b/l10n/eu/files_odfviewer.po deleted file mode 100644 index 3f9ec980ab341c5ab255f2e4dc9e5dea0074febc..0000000000000000000000000000000000000000 --- a/l10n/eu/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/eu/files_pdfviewer.po b/l10n/eu/files_pdfviewer.po deleted file mode 100644 index f45d8ef655eaa19ee05c4b5868bdc7d0a7ac7b55..0000000000000000000000000000000000000000 --- a/l10n/eu/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/eu/files_texteditor.po b/l10n/eu/files_texteditor.po deleted file mode 100644 index 859179f561dd323a8eb25ed87284874ba333063a..0000000000000000000000000000000000000000 --- a/l10n/eu/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/eu/gallery.po b/l10n/eu/gallery.po deleted file mode 100644 index e9794f69fa3c6c37a737432ab9b4be34cfee0e35..0000000000000000000000000000000000000000 --- a/l10n/eu/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Basque (http://www.transifex.net/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Argazkiak" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Ezarpenak" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Bireskaneatu" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Gelditu" - -#: templates/index.php:18 -msgid "Share" -msgstr "Elkarbanatu" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Atzera" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Ezabatu konfirmazioa" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Albuma ezabatu nahi al duzu" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Aldatu albumaren izena" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Album berriaren izena" diff --git a/l10n/eu/lib.po b/l10n/eu/lib.po index 1fd4db54aa20dd03a8a3bd28783527ac3f024f12..9442caf83a921c3215d0b1d580081bdef59ba845 100644 --- a/l10n/eu/lib.po +++ b/l10n/eu/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-04 02:01+0200\n" -"PO-Revision-Date: 2012-09-03 13:06+0000\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-11-25 23:10+0000\n" "Last-Translator: asieriko \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -18,43 +18,43 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Laguntza" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Pertsonala" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Ezarpenak" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Erabiltzaileak" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Aplikazioak" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "ZIP deskarga ez dago gaituta." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Fitxategiak banan-banan deskargatu behar dira." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Itzuli fitxategietara" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Hautatuko fitxategiak oso handiak dira zip fitxategia sortzeko." @@ -62,7 +62,7 @@ msgstr "Hautatuko fitxategiak oso handiak dira zip fitxategia sortzeko." msgid "Application is not enabled" msgstr "Aplikazioa ez dago gaituta" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Autentikazio errorea" @@ -70,57 +70,84 @@ msgstr "Autentikazio errorea" msgid "Token expired. Please reload page." msgstr "Tokena iraungitu da. Mesedez birkargatu orria." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Fitxategiak" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Testua" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Irudiak" + +#: template.php:103 msgid "seconds ago" msgstr "orain dela segundu batzuk" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "orain dela minutu 1" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "orain dela %d minutu" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "orain dela ordu bat" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "orain dela %d ordu" + +#: template.php:108 msgid "today" msgstr "gaur" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "atzo" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "orain dela %d egun" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "joan den hilabetea" -#: template.php:96 -msgid "months ago" -msgstr "orain dela hilabete batzuk" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "orain dela %d hilabete" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "joan den urtea" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "orain dela urte batzuk" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s eskuragarri dago. Lortu informazio gehiago" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "eguneratuta" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "eguneraketen egiaztapena ez dago gaituta" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Ezin da \"%s\" kategoria aurkitu" diff --git a/l10n/eu/media.po b/l10n/eu/media.po deleted file mode 100644 index 468d2fba323639658fad814ad1bfcbcab87a5516..0000000000000000000000000000000000000000 --- a/l10n/eu/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Asier Urio Larrea , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Basque (http://www.transifex.net/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musika" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Erreproduzitu" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausarazi" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Aurrekoa" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Hurrengoa" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Mututu" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Ez Mututu" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Bireskaneatu Bilduma" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Albuma" - -#: templates/music.php:39 -msgid "Title" -msgstr "Izenburua" diff --git a/l10n/eu/settings.po b/l10n/eu/settings.po index 8c96b50fa57e719f931497007278623d063729d6..58ef06e8a6602a342440fb1b89eb805e6ea0a501 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +20,73 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Ezin izan da App Dendatik zerrenda kargatu" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Autentifikazio errorea" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Taldea dagoeneko existitzenda" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Ezin izan da taldea gehitu" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Ezin izan da aplikazioa gaitu." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Eposta gorde da" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Baliogabeko eposta" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID aldatuta" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Baliogabeko eskaria" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Ezin izan da taldea ezabatu" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Autentifikazio errorea" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Ezin izan da erabiltzailea ezabatu" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Hizkuntza aldatuta" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Ezin izan da erabiltzailea %s taldera gehitu" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Ezin izan da erabiltzailea %s taldetik ezabatu" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Ez-gaitu" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Gaitu" @@ -91,104 +94,17 @@ msgstr "Gaitu" msgid "Saving..." msgstr "Gordetzen..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Euskera" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Segurtasun abisua" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Zure data karpeta eta zure fitxategiak internetetik zuzenean eskuragarri egon daitezke. ownCloudek emandako .htaccess fitxategia ez du bere lana egiten. Aholkatzen dizugu zure web zerbitzaria ongi konfiguratzea data karpeta eskuragarri ez izateko edo data karpeta web zerbitzariaren dokumentu errotik mugitzea." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Exekutatu zeregin bat orri karga bakoitzean" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php webcron zerbitzu batean erregistratua dago. Deitu cron.php orria ownclouden erroan minuturo http bidez." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Erabili sistemaren cron zerbitzua. Deitu cron.php fitxategia owncloud karpetan minuturo sistemaren cron lan baten bidez." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Partekatzea" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Gaitu Partekatze APIa" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Baimendu aplikazioak Partekatze APIa erabiltzeko" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Baimendu loturak" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Baimendu erabiltzaileak loturen bidez fitxategiak publikoki partekatzen" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Baimendu birpartekatzea" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Baimendu erabiltzaileak haiekin partekatutako fitxategiak berriz ere partekatzen" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Baimendu erabiltzaileak edonorekin partekatzen" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Baimendu erabiltzaileak bakarrik bere taldeko erabiltzaileekin partekatzen" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Egunkaria" - -#: templates/admin.php:116 -msgid "More" -msgstr "Gehiago" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "ownCloud komunitateak garatuta, itubruru kodeaAGPL lizentziarekin banatzen da." - #: templates/apps.php:10 msgid "Add your App" msgstr "Gehitu zure aplikazioa" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "App gehiago" #: templates/apps.php:27 msgid "Select an App" @@ -214,22 +130,22 @@ msgstr "Fitxategi handien kudeaketa" msgid "Ask a question" msgstr "Egin galdera bat" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Arazoak daude laguntza datubasera konektatzeko." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Joan hara eskuz." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Erantzun" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Eskuragarri dituzun %setik %s erabili duzu" +msgid "You have used %s of the available %s" +msgstr "Dagoeneko %s erabili duzu eskuragarri duzun %setatik" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -287,6 +203,16 @@ msgstr "Lagundu itzultzen" msgid "use this address to connect to your ownCloud in your file manager" msgstr "erabili helbide hau zure fitxategi kudeatzailean zure ownCloudera konektatzeko" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "ownCloud komunitateak garatuta, itubruru kodeaAGPL lizentziarekin banatzen da." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Izena" diff --git a/l10n/eu/tasks.po b/l10n/eu/tasks.po deleted file mode 100644 index 4ed8bae41d3ee3c858f353521cfb77e205e6fbe9..0000000000000000000000000000000000000000 --- a/l10n/eu/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/eu/user_migrate.po b/l10n/eu/user_migrate.po deleted file mode 100644 index 395533a4806f0f50a1ddd9b9e42e85e03da75d90..0000000000000000000000000000000000000000 --- a/l10n/eu/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/eu/user_openid.po b/l10n/eu/user_openid.po deleted file mode 100644 index 917f83859aadbf039634cdabd30ba4ecfc677931..0000000000000000000000000000000000000000 --- a/l10n/eu/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/eu/impress.po b/l10n/eu/user_webdavauth.po similarity index 61% rename from l10n/eu/impress.po rename to l10n/eu/user_webdavauth.po index 29fd6a225e2ccdb54d7d04a4a7fa7ceeca1db59d..eca9edb6ff5683d30a51017eca7b7e4f733e8470 100644 --- a/l10n/eu/impress.po +++ b/l10n/eu/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-26 00:01+0100\n" +"PO-Revision-Date: 2012-11-25 22:56+0000\n" +"Last-Translator: asieriko \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/eu_ES/admin_dependencies_chk.po b/l10n/eu_ES/admin_dependencies_chk.po deleted file mode 100644 index 931550cd288125e933e5bdd9cbd684937b284051..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/eu_ES/admin_migrate.po b/l10n/eu_ES/admin_migrate.po deleted file mode 100644 index 9bc05a4241eba2a4dd5b9de8b8918ca367882a90..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/eu_ES/bookmarks.po b/l10n/eu_ES/bookmarks.po deleted file mode 100644 index c012dfcd46508ed9ad474e828a2e897a3203f596..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/eu_ES/calendar.po b/l10n/eu_ES/calendar.po deleted file mode 100644 index 24f487f526e2559fced41abb24650477c310bd88..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/calendar.po +++ /dev/null @@ -1,813 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/eu_ES/contacts.po b/l10n/eu_ES/contacts.po deleted file mode 100644 index 0ef5f51a80f02b5db68de71b76c3b18f1a952555..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/eu_ES/core.po b/l10n/eu_ES/core.po index 96133924d3e88449c89c1aef5350a3bf7b861d2f..0bb862f9f47059a059912366d5142fc1a628e367 100644 --- a/l10n/eu_ES/core.po +++ b/l10n/eu_ES/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" +"POT-Creation-Date: 2012-10-18 02:03+0200\n" +"PO-Revision-Date: 2012-10-18 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" "MIME-Version: 1.0\n" @@ -29,55 +29,55 @@ msgstr "" msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 msgid "Settings" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "January" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "February" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "March" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "April" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "May" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "June" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "July" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "August" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "September" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "October" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "November" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "December" msgstr "" @@ -105,8 +105,8 @@ msgstr "" msgid "No categories selected for deletion." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 +#: js/share.js:509 msgid "Error" msgstr "" @@ -123,15 +123,11 @@ msgid "Error while changing permissions" msgstr "" #: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +msgid "Shared with you and the group {group} by {owner}" msgstr "" #: js/share.js:132 -msgid "Shared with you by" +msgid "Shared with you by {owner}" msgstr "" #: js/share.js:137 @@ -146,7 +142,8 @@ msgstr "" msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:147 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" @@ -171,50 +168,46 @@ msgid "Resharing is not allowed" msgstr "" #: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +msgid "Shared in {item} with {user}" msgstr "" #: js/share.js:271 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:283 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:285 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:288 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:291 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:294 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:297 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:322 js/share.js:484 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:497 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:509 msgid "Error setting expiration date" msgstr "" @@ -238,12 +231,12 @@ msgstr "" msgid "Login failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -299,52 +292,77 @@ msgstr "" msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:38 msgid "web services under your control" msgstr "" @@ -352,15 +370,29 @@ msgstr "" msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +407,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/eu_ES/files.po b/l10n/eu_ES/files.po index e697b9cd624592ae8717438ee202451578c13316..473f8ab054c92782400375a31590267f9f9bca09 100644 --- a/l10n/eu_ES/files.po +++ b/l10n/eu_ES/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" +"POT-Creation-Date: 2012-10-19 02:03+0200\n" +"PO-Revision-Date: 2012-10-19 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" "MIME-Version: 1.0\n" @@ -63,152 +63,152 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:194 js/filelist.js:196 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:194 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:243 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:243 js/filelist.js:245 js/filelist.js:277 js/filelist.js:279 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:245 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:277 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:279 +msgid "deleted {files}" msgstr "" #: js/files.js:179 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:242 js/files.js:347 js/files.js:377 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:262 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:265 js/files.js:310 js/files.js:325 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:328 js/files.js:361 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:430 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 +#: js/files.js:500 msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:681 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:689 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:762 templates/index.php:48 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:763 templates/index.php:56 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:764 templates/index.php:58 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:791 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:793 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:801 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" +#: js/files.js:803 +msgid "{count} files" msgstr "" -#: js/files.js:833 +#: js/files.js:846 msgid "seconds ago" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:847 +msgid "1 minute ago" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:848 +msgid "{minutes} minutes ago" msgstr "" -#: js/files.js:838 +#: js/files.js:851 msgid "today" msgstr "" -#: js/files.js:839 +#: js/files.js:852 msgid "yesterday" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:853 +msgid "{days} days ago" msgstr "" -#: js/files.js:841 +#: js/files.js:854 msgid "last month" msgstr "" -#: js/files.js:843 +#: js/files.js:856 msgid "months ago" msgstr "" -#: js/files.js:844 +#: js/files.js:857 msgid "last year" msgstr "" -#: js/files.js:845 +#: js/files.js:858 msgid "years ago" msgstr "" diff --git a/l10n/eu_ES/files_odfviewer.po b/l10n/eu_ES/files_odfviewer.po deleted file mode 100644 index ae252d7f3c18dcd1dec60f638bfcdda306664bb9..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/eu_ES/files_pdfviewer.po b/l10n/eu_ES/files_pdfviewer.po deleted file mode 100644 index 9dace38e4083f904c97301199817c2b6492f42fb..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/eu_ES/files_texteditor.po b/l10n/eu_ES/files_texteditor.po deleted file mode 100644 index f4fbf12ae54455d2d7d844ccf747a1795f2d1120..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/eu_ES/gallery.po b/l10n/eu_ES/gallery.po deleted file mode 100644 index 54096c308b2797225d994c19b0287b11cee6aadd..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/gallery.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-01-15 13:48+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/eu_ES/impress.po b/l10n/eu_ES/impress.po deleted file mode 100644 index f3819cec39ff0aa3eda424d5b6e436f84ba85776..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/eu_ES/media.po b/l10n/eu_ES/media.po deleted file mode 100644 index 7b6fee29b9cc2395960c243f8e4f12299e1a465a..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2011-08-13 02:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/eu_ES/tasks.po b/l10n/eu_ES/tasks.po deleted file mode 100644 index aad5eb88c3160f4cffb3751b370c2dbae02b8404..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/eu_ES/user_migrate.po b/l10n/eu_ES/user_migrate.po deleted file mode 100644 index 7a3cda2309630d285e47168bb6ade6955fc5c1d9..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/eu_ES/user_openid.po b/l10n/eu_ES/user_openid.po deleted file mode 100644 index 7016da797dd9aba7bdc3fbf5347327b400e51255..0000000000000000000000000000000000000000 --- a/l10n/eu_ES/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/owncloud/language/eu_ES/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: eu_ES\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/fa/admin_dependencies_chk.po b/l10n/fa/admin_dependencies_chk.po deleted file mode 100644 index 265e0c6cd7c704409c3a7f38bc468c5844999bcd..0000000000000000000000000000000000000000 --- a/l10n/fa/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/fa/bookmarks.po b/l10n/fa/bookmarks.po deleted file mode 100644 index c4649e206bb87c8c1c7151d0241fc25769da6596..0000000000000000000000000000000000000000 --- a/l10n/fa/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mohammad Dashtizadeh , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 20:19+0000\n" -"Last-Translator: Mohammad Dashtizadeh \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "نشانک‌ها" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "بدون‌نام" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "آدرس" - -#: templates/list.php:14 -msgid "Title" -msgstr "عنوان" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "ذخیره نشانک" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "شما هیچ نشانکی ندارید" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/fa/calendar.po b/l10n/fa/calendar.po deleted file mode 100644 index 1702670824e4762ccfca67c24a6f2e8803f7284f..0000000000000000000000000000000000000000 --- a/l10n/fa/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Hossein nag , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "هیچ تقویمی پیدا نشد" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "هیچ رویدادی پیدا نشد" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "تقویم اشتباه" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "زمان محلی جدید" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "زمان محلی تغییر یاÙت" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "درخواست نامعتبر" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "تقویم" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "DDD m[ yyyy]{ '—'[ DDD] m yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "روزتولد" - -#: lib/app.php:122 -msgid "Business" -msgstr "تجارت" - -#: lib/app.php:123 -msgid "Call" -msgstr "تماس گرÙتن" - -#: lib/app.php:124 -msgid "Clients" -msgstr "مشتریان" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "نجات" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "روزهای تعطیل" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "ایده ها" - -#: lib/app.php:128 -msgid "Journey" -msgstr "سÙر" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "سالگرد" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "ملاقات" - -#: lib/app.php:131 -msgid "Other" -msgstr "دیگر" - -#: lib/app.php:132 -msgid "Personal" -msgstr "شخصی" - -#: lib/app.php:133 -msgid "Projects" -msgstr "پروژه ها" - -#: lib/app.php:134 -msgid "Questions" -msgstr "سوالات" - -#: lib/app.php:135 -msgid "Work" -msgstr "کار" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "نام گذاری نشده" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "تقویم جدید" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "تکرار نکنید" - -#: lib/object.php:373 -msgid "Daily" -msgstr "روزانه" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Ù‡Ùتهگی" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "هرروز Ù‡Ùته" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "دوهÙته" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "ماهانه" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "سالانه" - -#: lib/object.php:388 -msgid "never" -msgstr "هرگز" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "به وسیله ظهور" - -#: lib/object.php:390 -msgid "by date" -msgstr "به وسیله تاریخ" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "به وسیله روزهای ماه" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "به وسیله روز های Ù‡Ùته" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "دوشنبه" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "سه شنبه" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "چهارشنبه" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "پنجشنبه" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "جمعه" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "شنبه" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "یکشنبه" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "رویداد های Ù‡Ùته هایی از ماه" - -#: lib/object.php:428 -msgid "first" -msgstr "اولین" - -#: lib/object.php:429 -msgid "second" -msgstr "دومین" - -#: lib/object.php:430 -msgid "third" -msgstr "سومین" - -#: lib/object.php:431 -msgid "fourth" -msgstr "چهارمین" - -#: lib/object.php:432 -msgid "fifth" -msgstr "پنجمین" - -#: lib/object.php:433 -msgid "last" -msgstr "آخرین" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "ژانویه" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Ùبریه" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "مارس" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "آوریل" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Ù…ÛŒ" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "ژوءن" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "جولای" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "آگوست" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "سپتامبر" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "اکتبر" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "نوامبر" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "دسامبر" - -#: lib/object.php:488 -msgid "by events date" -msgstr "به وسیله رویداد های روزانه" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "به وسیله روز های سال(ها)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "به وسیله شماره Ù‡Ùته(ها)" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "به وسیله روز Ùˆ ماه" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "تاریخ" - -#: lib/search.php:43 -msgid "Cal." -msgstr "تقویم." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "هرروز" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Ùیلد های Ú¯Ù… شده" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "عنوان" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "از تاریخ" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "از ساعت" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "به تاریخ" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "به ساعت" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "رویداد قبل از شروع شدن تمام شده!" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "یک پایگاه داده Ùرو مانده است" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Ù‡Ùته" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "ماه" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Ùهرست" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "امروز" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "تقویم های شما" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav Link" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "تقویمهای به اشترک گذاری شده" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "هیچ تقویمی به اشتراک گذارده نشده" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "تقویم را به اشتراک بگذارید" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "بارگیری" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "ویرایش" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "پاک کردن" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "به اشتراک گذارده شده به وسیله" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "تقویم جدید" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "ویرایش تقویم" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "نام برای نمایش" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ùعال" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "رنگ تقویم" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "ذخیره سازی" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "ارسال" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "انصراÙ" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "ویرایش رویداد" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "خروجی گرÙتن" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "اطلاعات رویداد" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "در حال تکرار کردن" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "هشدار" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "شرکت کنندگان" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "به اشتراک گذاردن" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "عنوان رویداد" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "نوع" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "گروه ها را به وسیله درنگ نما از هم جدا کنید" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "ویرایش گروه" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "رویداد های روزانه" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "از" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "به" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "تنظیمات حرÙÙ‡ ای" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "منطقه" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "منطقه رویداد" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "توضیحات" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "توضیحات درباره رویداد" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "تکرار" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "پیشرÙته" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "انتخاب روز های Ù‡Ùته " - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "انتخاب روز ها" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "Ùˆ رویداد های روز از سال" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "Ùˆ رویداد های روز از ماه" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "انتخاب ماه ها" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "انتخاب Ù‡Ùته ها" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "Ùˆ رویداد Ù‡Ùته ها از سال" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Ùاصله" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "پایان" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "ظهور" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "یک تقویم جدید ایجاد کنید" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "یک پرونده حاوی تقویم وارد کنید" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "نام تقویم جدید" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "ورودی دادن" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "بستن دیالوگ" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "یک رویداد ایجاد کنید" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "دیدن یک رویداد" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "هیچ گروهی انتخاب نشده" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "از" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "در" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "زمان محلی" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24 ساعت" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12 ساعت" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "کاربرها" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "انتخاب شناسه ها" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "قابل ویرایش" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "گروه ها" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "انتخاب گروه ها" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "عمومی سازی" diff --git a/l10n/fa/contacts.po b/l10n/fa/contacts.po deleted file mode 100644 index 92daf2d9db21b3b331e6b276cf8ebcdc851507ac..0000000000000000000000000000000000000000 --- a/l10n/fa/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Hossein nag , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "خطا در (غیر) Ùعال سازی کتابچه نشانه ها" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "شناسه تعیین نشده" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "نمی توانید کتابچه نشانی ها را با یک نام خالی بروزرسانی کنید" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "خطا در هنگام بروزرسانی کتابچه نشانی ها" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "هیچ شناسه ای ارائه نشده" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "خطا در تنظیم checksum" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "هیچ گروهی برای حذ٠شدن در نظر گرÙته نشده" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "هیچ کتابچه نشانی پیدا نشد" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "هیچ شخصی پیدا نشد" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "یک خطا در اÙزودن اطلاعات شخص مورد نظر" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "نام اصلی تنظیم نشده است" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "نمیتوان یک خاصیت خالی ایجاد کرد" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "At least one of the address fields has to be filled out. " - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "امتحان کردن برای وارد کردن مشخصات تکراری" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "اطلاعات درمورد vCard شما اشتباه است لطÙا صÙحه را دوباره بار گذاری کنید" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "نشانی Ú¯Ù… شده" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "خطا در تجزیه کارت ویزا برای شناسه:" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "checksum تنظیم شده نیست" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "اطلاعات کارت ویزا شما غلط است لطÙا صÙحه را دوباره بارگزاری کنید" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "چند چیز به FUBAR رÙتند" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "هیچ اطلاعاتی راجع به شناسه ارسال نشده" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "خطا در خواندن اطلاعات تصویر" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "خطا در ذخیره پرونده موقت" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "بارگزاری تصویر امکان پذیر نیست" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "اطلاعات شناسه Ú¯Ù… شده" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "هیچ نشانی از تصویرارسال نشده" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "پرونده وجود ندارد" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "خطا در بارگزاری تصویر" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "خطا در گرÙتن اطلاعات شخص" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "خطا در درباÙت تصویر ویژگی شخصی" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "خطا در ذخیره سازی اطلاعات" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "خطا در تغییر دادن اندازه تصویر" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "خطا در برداشت تصویر" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "خطا در ساخت تصویر temporary" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "خطا در پیدا کردن تصویر:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "خطا در هنگام بارگذاری Ùˆ ذخیره سازی" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "هیچ خطایی نیست بارگذاری پرونده موÙقیت آمیز بود" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "حجم آپلود از طریق Php.ini تعیین Ù…ÛŒ شود" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "حداکثر حجم قابل بار گذاری از طریق HTML MAX_FILE_SIZE است" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "پرونده بارگذاری شده Ùقط تاحدودی بارگذاری شده" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "هیچ پروندهای بارگذاری نشده" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "یک پوشه موقت Ú¯Ù… شده" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "قابلیت ذخیره تصویر موقت وجود ندارد:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "قابلیت بارگذاری تصویر موقت وجود ندارد:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "هیچ Ùایلی آپلود نشد.خطای ناشناس" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "اشخاص" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "با عرض پوزش،این قابلیت هنوز اجرا نشده است" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "انجام نشد" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Couldn't get a valid address." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "خطا" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "این ویژگی باید به صورت غیر تهی عمل کند" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "قابلیت مرتب سازی عناصر وجود ندارد" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "پاک کردن ویژگی بدون استدلال انجام شده.لطÙا این مورد را گزارش دهید:bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "نام تغییر" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "هیچ Ùایلی برای آپلود انتخاب نشده است" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "حجم Ùایل بسیار بیشتر از حجم تنظیم شده در تنظیمات سرور است" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "نوع را انتخاب کنید" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "نتیجه:" - -#: js/loader.js:49 -msgid " imported, " -msgstr "وارد شد،" - -#: js/loader.js:49 -msgid " failed." -msgstr "ناموÙÙ‚" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "این کتابچه ÛŒ نشانه های شما نیست" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "اتصال ویا تماسی یاÙت نشد" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "کار" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "خانه" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "موبایل" - -#: lib/app.php:203 -msgid "Text" -msgstr "متن" - -#: lib/app.php:204 -msgid "Voice" -msgstr "صدا" - -#: lib/app.php:205 -msgid "Message" -msgstr "پیغام" - -#: lib/app.php:206 -msgid "Fax" -msgstr "دورنگار:" - -#: lib/app.php:207 -msgid "Video" -msgstr "رسانه تصویری" - -#: lib/app.php:208 -msgid "Pager" -msgstr "صÙحه" - -#: lib/app.php:215 -msgid "Internet" -msgstr "اینترنت" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "روزتولد" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "روز تولد {name} است" - -#: lib/search.php:15 -msgid "Contact" -msgstr "اشخاص" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "اÙزودن اطلاعات شخص مورد نظر" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "وارد کردن" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "کتابچه ÛŒ نشانی ها" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "بستن" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "تصویر را به اینجا بکشید تا بار گذازی شود" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "پاک کردن تصویر کنونی" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "ویرایش تصویر کنونی" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "بار گذاری یک تصویر جدید" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "انتخاب یک تصویر از ابر های شما" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format custom, Short name, Full name, Reverse or Reverse with comma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "ویرایش نام جزئیات" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "نهاد(ارگان)" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "پاک کردن" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "نام مستعار" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "یک نام مستعار وارد کنید" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "گروه ها" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "جدا کردن گروه ها به وسیله درنگ نما" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "ویرایش گروه ها" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "مقدم" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "لطÙا یک پست الکترونیکی معتبر وارد کنید" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "یک پست الکترونیکی وارد کنید" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "به نشانی ارسال شد" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "پاک کردن نشانی پست الکترونیکی" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "شماره تلÙÙ† راوارد کنید" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "پاک کردن شماره تلÙÙ†" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "دیدن روی نقشه" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "ویرایش جزئیات نشانی ها" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "اینجا یادداشت ها را بیاÙزایید" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "اضاÙÙ‡ کردن Ùیلد" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "شماره تلÙÙ†" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "نشانی پست الکترنیک" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "نشانی" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "یادداشت" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "دانلود مشخصات اشخاص" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "پاک کردن اطلاعات شخص مورد نظر" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "تصویر موقت از Ú©Ø´ پاک شد." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "ویرایش نشانی" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "نوع" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "صندوق پستی" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "تمدید شده" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "شهر" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "ناحیه" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "کد پستی" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "کشور" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "کتابچه ÛŒ نشانی ها" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "پیشوند های محترمانه" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "خانم" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "خانم" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "آقا" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "آقا" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "خانم" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "دکتر" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "نام معلوم" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "نام های دیگر" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "نام خانوادگی" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "پسوند های محترم" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "دکتری" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "وارد کردن پرونده حاوی اطلاعات" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "لطÙا یک کتابچه نشانی انتخاب کنید" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "یک کتابچه نشانی بسازید" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "نام کتابچه نشانی جدید" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "وارد کردن اشخاص" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "شماهیچ شخصی در کتابچه نشانی خود ندارید" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "اÙزودن اطلاعات شخص مورد نظر" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV syncing addresses " - -#: templates/settings.php:3 -msgid "more info" -msgstr "اطلاعات بیشتر" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "نشانی اولیه" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X " - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "بارگیری" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "ویرایش" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "کتابچه نشانه های جدید" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "ذخیره سازی" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "انصراÙ" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index 18c5c3f42c99f9369ae0907851e001208bd8a03f..aaf10805b2317edef3b0e61d6e9b4aa0f1104b58 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "نام برنامه پیدا نشد" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "آیا گروه دیگری برای اÙزودن ندارید" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "این گروه از قبل اضاÙÙ‡ شده" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "هیج دسته ای برای پاک شدن انتخاب نشده است" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "تنظیمات" -#: js/js.js:645 -msgid "January" -msgstr "ژانویه" +#: js/js.js:688 +msgid "seconds ago" +msgstr "ثانیه‌ها پیش" -#: js/js.js:645 -msgid "February" -msgstr "Ùبریه" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 دقیقه پیش" -#: js/js.js:645 -msgid "March" -msgstr "مارس" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "آوریل" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Ù…ÛŒ" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "ژوئن" +#: js/js.js:693 +msgid "today" +msgstr "امروز" -#: js/js.js:646 -msgid "July" -msgstr "جولای" +#: js/js.js:694 +msgid "yesterday" +msgstr "دیروز" -#: js/js.js:646 -msgid "August" -msgstr "آگوست" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "سپتامبر" +#: js/js.js:696 +msgid "last month" +msgstr "ماه قبل" -#: js/js.js:646 -msgid "October" -msgstr "اکتبر" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "نوامبر" +#: js/js.js:698 +msgid "months ago" +msgstr "ماه‌های قبل" -#: js/js.js:646 -msgid "December" -msgstr "دسامبر" +#: js/js.js:699 +msgid "last year" +msgstr "سال قبل" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "سال‌های قبل" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "منصر٠شدن" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "نه" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "بله" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "قبول" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "هیج دسته ای برای پاک شدن انتخاب نشده است" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "خطا" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "گذرواژه" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "ایجاد" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "پسورد ابرهای شما تغییرکرد" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "شما یک نامه الکترونیکی حاوی یک لینک جهت بازسازی گذرواژه دریاÙت خواهید کرد." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "درخواست" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "ورود ناموÙÙ‚ بود" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "شناسه" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "درخواست دوباره سازی" @@ -296,72 +329,187 @@ msgstr "پیدا نشد" msgid "Edit categories" msgstr "ویرایش گروه ها" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "اÙزودن" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "اخطار امنیتی" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "لطÙا یک شناسه برای مدیر بسازید" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "حرÙÙ‡ ای" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "پوشه اطلاعاتی" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "پایگاه داده برنامه ریزی شدند" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "استÙاده خواهد شد" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "شناسه پایگاه داده" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "پسورد پایگاه داده" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "نام پایگاه داده" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "هاست پایگاه داده" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "اتمام نصب" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "یکشنبه" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "دوشنبه" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "سه شنبه" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "چهارشنبه" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "پنجشنبه" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "جمعه" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "شنبه" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "ژانویه" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Ùبریه" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "مارس" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "آوریل" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Ù…ÛŒ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "ژوئن" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "جولای" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "آگوست" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "سپتامبر" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "اکتبر" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "نوامبر" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "دسامبر" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "سرویس وب تحت کنترل شما" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "خروج" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "آیا گذرواژه تان را به یاد نمی آورید؟" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "بیاد آوری" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "ورود" @@ -376,3 +524,17 @@ msgstr "بازگشت" #: templates/part.pagenavi.php:20 msgid "next" msgstr "بعدی" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index c5f1da76fed74767f42f4029ab5db736bce2b568..7e13f99c90f6630699b23e40b2594b3628c4a2ab 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,194 +25,165 @@ msgid "There is no error, the file uploaded with success" msgstr "هیچ خطایی وجود ندارد Ùایل با موÙقیت بار گذاری شد" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "حداکثر حجم تعیین شده برای بارگذاری در php.ini قابل ویرایش است" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "حداکثر حجم مجاز برای بارگذاری از طریق HTML \nMAX_FILE_SIZE" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "مقدار Ú©Ù…ÛŒ از Ùایل بارگذاری شده" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "هیچ Ùایلی بارگذاری نشده" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "یک پوشه موقت Ú¯Ù… شده است" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "نوشتن بر روی دیسک سخت ناموÙÙ‚ بود" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Ùایل ها" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "پاک کردن" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "تغییرنام" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "وجود دارد" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "جایگزین" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "لغو" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "جایگزین‌شده" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "بازگشت" -#: js/filelist.js:241 -msgid "with" -msgstr "همراه" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "حذ٠شده" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "در حال ساخت Ùایل Ùشرده ممکن است زمان زیادی به طول بیانجامد" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ناتوان در بارگذاری یا Ùایل یک پوشه است یا 0بایت دارد" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "خطا در بار گذاری" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "بستن" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "در انتظار" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "بار گذاری لغو شد" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "نام نامناسب '/' غیرÙعال است" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "نام" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "اندازه" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "تغییر یاÙته" -#: js/files.js:777 -msgid "folder" -msgstr "پوشه" - -#: js/files.js:779 -msgid "folders" -msgstr "پوشه ها" - -#: js/files.js:787 -msgid "file" -msgstr "پرونده" - -#: js/files.js:789 -msgid "files" -msgstr "پرونده ها" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:841 -msgid "last month" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:843 -msgid "months ago" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -223,80 +194,76 @@ msgstr "اداره پرونده ها" msgid "Maximum upload size" msgstr "حداکثر اندازه بارگزاری" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "حداکثرمقدارممکن:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "احتیاج پیدا خواهد شد برای چند پوشه Ùˆ پرونده" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Ùعال سازی بارگیری پرونده های Ùشرده" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 نامحدود است" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "حداکثرمقدار برای بار گزاری پرونده های Ùشرده" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "ذخیره" #: templates/index.php:7 msgid "New" msgstr "جدید" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Ùایل متنی" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "پوشه" -#: templates/index.php:11 -msgid "From url" -msgstr "از نشانی" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "بارگذاری" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "متوق٠کردن بار گذاری" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "اینجا هیچ چیز نیست." -#: templates/index.php:50 -msgid "Share" -msgstr "به اشتراک گذاری" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "بارگیری" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "حجم بارگذاری بسیار زیاد است" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Ùایلها بیش از حد تعیین شده در این سرور هستند\nمترجم:با تغییر Ùایل php,ini میتوان این محدودیت را برطر٠کرد" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "پرونده ها در حال بازرسی هستند لطÙا صبر کنید" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "بازرسی کنونی" diff --git a/l10n/fa/files_encryption.po b/l10n/fa/files_encryption.po index d1409ea24bfb3f42d433b5e0423e9da273bb6da3..74f153d436e403f7f17a5da2a5cbb2d5034d438d 100644 --- a/l10n/fa/files_encryption.po +++ b/l10n/fa/files_encryption.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Mohammad Dashtizadeh , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 20:18+0000\n" -"Last-Translator: Mohammad Dashtizadeh \n" +"POT-Creation-Date: 2012-11-15 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 08:31+0000\n" +"Last-Translator: basir \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:3 msgid "Encryption" @@ -24,7 +25,7 @@ msgstr "رمزگذاری" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "" +msgstr "نادیده گرÙتن Ùایل های زیر برای رمز گذاری" #: templates/settings.php:5 msgid "None" diff --git a/l10n/fa/files_pdfviewer.po b/l10n/fa/files_pdfviewer.po deleted file mode 100644 index bf8f950d5ea48301d8eadcb9a40253c1093a0338..0000000000000000000000000000000000000000 --- a/l10n/fa/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/fa/files_texteditor.po b/l10n/fa/files_texteditor.po deleted file mode 100644 index 2360c9358cc38488821f0931a37a4c9d1f2e0cb2..0000000000000000000000000000000000000000 --- a/l10n/fa/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/fa/gallery.po b/l10n/fa/gallery.po deleted file mode 100644 index 72ce4351953bb023f0133f2d211236734a9f503b..0000000000000000000000000000000000000000 --- a/l10n/fa/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Hossein nag , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Persian (http://www.transifex.net/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "تصاویر" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "تنظیمات" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "بازرسی دوباره" - -#: templates/index.php:17 -msgid "Stop" -msgstr "توقÙ" - -#: templates/index.php:18 -msgid "Share" -msgstr "به اشتراک گذاری" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "بازگشت" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "پاک کردن تصدیق" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "آیا مایل به پاک کردن آلبوم هستید؟" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "تغییر نام آلبوم" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "نام آلبوم جدید" diff --git a/l10n/fa/impress.po b/l10n/fa/impress.po deleted file mode 100644 index 7f9e9429ff5a4740890825797408e53fc85df952..0000000000000000000000000000000000000000 --- a/l10n/fa/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/fa/lib.po b/l10n/fa/lib.po index 589e967a94fc93de891d941da060f9e756d50e73..44408cc66f79f752cf5ad993cbcfc529c163425f 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/lib.po @@ -8,53 +8,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "راه‌نما" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "شخصی" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "تنظیمات" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "کاربران" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "مدیر" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -62,65 +62,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "خطا در اعتبار سنجی" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "پرونده‌ها" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "متن" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "ثانیه‌ها پیش" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 دقیقه پیش" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d دقیقه پیش" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "امروز" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "دیروز" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "ماه قبل" -#: template.php:95 -msgid "months ago" -msgstr "ماه‌های قبل" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "سال قبل" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "سال‌های قبل" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/fa/media.po b/l10n/fa/media.po deleted file mode 100644 index bd920337bac138a06416b857569e236903ccea8a..0000000000000000000000000000000000000000 --- a/l10n/fa/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Hossein nag , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Persian (http://www.transifex.net/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "موسیقی" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "پخش کردن" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "توق٠کوتاه" - -#: templates/music.php:5 -msgid "Previous" -msgstr "قبلی" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "بعدی" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Ø®ÙÙ‡ کردن" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "باز گشایی صدا" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "دوباره بازرسی مجموعه ها" - -#: templates/music.php:37 -msgid "Artist" -msgstr "هنرمند" - -#: templates/music.php:38 -msgid "Album" -msgstr "آلبوم" - -#: templates/music.php:39 -msgid "Title" -msgstr "عنوان" diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index 1d5a04b48a1ab7da633230c35837560ac80dd24a..e0c3b853c8997701dd14fb0b4765cb4e63e807fd 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/settings.po @@ -3,15 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Hossein nag , 2012. +# , 2012. # vahid chakoshy , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: ho2o2oo \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +21,73 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" -msgstr "" +msgstr "قادر به بارگذاری لیست از Ùروشگاه اپ نیستم" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "ایمیل ذخیره شد" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "ایمیل غیر قابل قبول" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID تغییر کرد" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "درخواست غیر قابل قبول" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "خطا در اعتبار سنجی" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "زبان تغییر کرد" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "غیرÙعال" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Ùعال" @@ -90,97 +95,10 @@ msgstr "Ùعال" msgid "Saving..." msgstr "درحال ذخیره ..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "اخطار امنیتی" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "کارنامه" - -#: templates/admin.php:116 -msgid "More" -msgstr "بیشتر" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "برنامه خود را بیاÙزایید" @@ -213,21 +131,21 @@ msgstr "مدیریت پرونده های بزرگ" msgid "Ask a question" msgstr "یک سوال بپرسید" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "مشکلاتی برای وصل شدن به پایگاه داده Ú©Ù…Ú©ÛŒ" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "بروید آنجا به صورت دستی" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "پاسخ" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -240,7 +158,7 @@ msgstr "بارگیری" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "رمز عبور شما تغییر یاÙت" #: templates/personal.php:20 msgid "Unable to change your password" @@ -286,6 +204,16 @@ msgstr "به ترجمه آن Ú©Ù…Ú© کنید" msgid "use this address to connect to your ownCloud in your file manager" msgstr "از این نشانی برای وصل شدن به ابرهایتان در مدیرپرونده استÙاده کنید" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "نام" diff --git a/l10n/fa/tasks.po b/l10n/fa/tasks.po deleted file mode 100644 index 90c396946ba5456b9cd58416484dc7a09e7c5694..0000000000000000000000000000000000000000 --- a/l10n/fa/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Mohammad Dashtizadeh , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 19:59+0000\n" -"Last-Translator: Mohammad Dashtizadeh \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "وظایÙ" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=بیش‌ترین" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=متوسط" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=کم‌ترین" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "درحال بارگزاری وظایÙ" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "مهم" - -#: templates/tasks.php:23 -msgid "More" -msgstr "بیش‌تر" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "کم‌تر" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "حذÙ" diff --git a/l10n/fa/user_migrate.po b/l10n/fa/user_migrate.po deleted file mode 100644 index dbd3fc6600f21175de37a2a76e37144943c4a708..0000000000000000000000000000000000000000 --- a/l10n/fa/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/fa/user_openid.po b/l10n/fa/user_openid.po deleted file mode 100644 index abfc372d3c7e6f75450f412c57a9da502be9da07..0000000000000000000000000000000000000000 --- a/l10n/fa/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/fa/files_odfviewer.po b/l10n/fa/user_webdavauth.po similarity index 74% rename from l10n/fa/files_odfviewer.po rename to l10n/fa/user_webdavauth.po index 9a3288832d1c3e021e11a6ec1632a79b128df54c..aedbab154750225366189484279f7f15f0dba495 100644 --- a/l10n/fa/files_odfviewer.po +++ b/l10n/fa/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/fi/admin_dependencies_chk.po b/l10n/fi/admin_dependencies_chk.po deleted file mode 100644 index c3fe2f98228a40ea86871c56da5942729d8bda5c..0000000000000000000000000000000000000000 --- a/l10n/fi/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/fi/admin_migrate.po b/l10n/fi/admin_migrate.po deleted file mode 100644 index 3aea7a7ce5d83b721195c82cf136e8d592a7c417..0000000000000000000000000000000000000000 --- a/l10n/fi/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/fi/bookmarks.po b/l10n/fi/bookmarks.po deleted file mode 100644 index eb0373eb8ac688240698a3d7688566a45a408175..0000000000000000000000000000000000000000 --- a/l10n/fi/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-09 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/fi/calendar.po b/l10n/fi/calendar.po deleted file mode 100644 index 9b551fc88c9841f4b22d69acb9f55a1b63418dea..0000000000000000000000000000000000000000 --- a/l10n/fi/calendar.po +++ /dev/null @@ -1,813 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/fi/contacts.po b/l10n/fi/contacts.po deleted file mode 100644 index da37fef417417ddc89fb7f0107d5709e2b9d075d..0000000000000000000000000000000000000000 --- a/l10n/fi/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/fi/core.po b/l10n/fi/core.po index f44a41d09a277f7723acd215d54fc49c875aa46f..a291bd3898726ff638aec3508e04c014ace18000 100644 --- a/l10n/fi/core.po +++ b/l10n/fi/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" +"POT-Creation-Date: 2012-10-18 02:03+0200\n" +"PO-Revision-Date: 2012-10-18 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" @@ -29,55 +29,55 @@ msgstr "" msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 msgid "Settings" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "January" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "February" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "March" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "April" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "May" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "June" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "July" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "August" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "September" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "October" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "November" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "December" msgstr "" @@ -105,8 +105,8 @@ msgstr "" msgid "No categories selected for deletion." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 +#: js/share.js:509 msgid "Error" msgstr "" @@ -123,15 +123,11 @@ msgid "Error while changing permissions" msgstr "" #: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +msgid "Shared with you and the group {group} by {owner}" msgstr "" #: js/share.js:132 -msgid "Shared with you by" +msgid "Shared with you by {owner}" msgstr "" #: js/share.js:137 @@ -146,7 +142,8 @@ msgstr "" msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:147 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" @@ -171,50 +168,46 @@ msgid "Resharing is not allowed" msgstr "" #: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +msgid "Shared in {item} with {user}" msgstr "" #: js/share.js:271 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:283 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:285 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:288 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:291 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:294 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:297 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:322 js/share.js:484 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:497 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:509 msgid "Error setting expiration date" msgstr "" @@ -238,12 +231,12 @@ msgstr "" msgid "Login failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -299,52 +292,77 @@ msgstr "" msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:38 msgid "web services under your control" msgstr "" @@ -352,15 +370,29 @@ msgstr "" msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +407,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/fi/files.po b/l10n/fi/files.po index 5f2a86b485688f96e18c8c3e1de441591568eb8a..0c0826b0f8966e193a93d9eed623c8bf5ac2586e 100644 --- a/l10n/fi/files.po +++ b/l10n/fi/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" +"POT-Creation-Date: 2012-10-19 02:03+0200\n" +"PO-Revision-Date: 2012-10-19 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" @@ -63,152 +63,152 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:194 js/filelist.js:196 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:194 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:243 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:243 js/filelist.js:245 js/filelist.js:277 js/filelist.js:279 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:245 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:277 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:279 +msgid "deleted {files}" msgstr "" #: js/files.js:179 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:242 js/files.js:347 js/files.js:377 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:262 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:265 js/files.js:310 js/files.js:325 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:328 js/files.js:361 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:430 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 +#: js/files.js:500 msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:681 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:689 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:762 templates/index.php:48 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:763 templates/index.php:56 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:764 templates/index.php:58 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:791 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:793 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:801 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" +#: js/files.js:803 +msgid "{count} files" msgstr "" -#: js/files.js:833 +#: js/files.js:846 msgid "seconds ago" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:847 +msgid "1 minute ago" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:848 +msgid "{minutes} minutes ago" msgstr "" -#: js/files.js:838 +#: js/files.js:851 msgid "today" msgstr "" -#: js/files.js:839 +#: js/files.js:852 msgid "yesterday" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:853 +msgid "{days} days ago" msgstr "" -#: js/files.js:841 +#: js/files.js:854 msgid "last month" msgstr "" -#: js/files.js:843 +#: js/files.js:856 msgid "months ago" msgstr "" -#: js/files.js:844 +#: js/files.js:857 msgid "last year" msgstr "" -#: js/files.js:845 +#: js/files.js:858 msgid "years ago" msgstr "" diff --git a/l10n/fi/files_odfviewer.po b/l10n/fi/files_odfviewer.po deleted file mode 100644 index e64ad2105359d85ce6351ea65717d585a502ef44..0000000000000000000000000000000000000000 --- a/l10n/fi/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/fi/files_pdfviewer.po b/l10n/fi/files_pdfviewer.po deleted file mode 100644 index 7e2c2ec64827fe029f6b02605568fec2a722ec5a..0000000000000000000000000000000000000000 --- a/l10n/fi/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/fi/files_texteditor.po b/l10n/fi/files_texteditor.po deleted file mode 100644 index 07f6f6ca27bef0635830b0cd4c6a539f2789bc89..0000000000000000000000000000000000000000 --- a/l10n/fi/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/fi/gallery.po b/l10n/fi/gallery.po deleted file mode 100644 index 786216a0af1a1602f9413c695f916a92c7bf3c5b..0000000000000000000000000000000000000000 --- a/l10n/fi/gallery.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-09 02:02+0200\n" -"PO-Revision-Date: 2012-01-15 13:48+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/fi/impress.po b/l10n/fi/impress.po deleted file mode 100644 index 60c70f400fdbceb1cf27e9c2f5b3eacf1d392ec4..0000000000000000000000000000000000000000 --- a/l10n/fi/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/fi/media.po b/l10n/fi/media.po deleted file mode 100644 index d0e3eab9bdedd53289a09ecc7147a03df0e1117c..0000000000000000000000000000000000000000 --- a/l10n/fi/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-09 02:02+0200\n" -"PO-Revision-Date: 2011-08-13 02:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/fi/tasks.po b/l10n/fi/tasks.po deleted file mode 100644 index 91f222dac375a105fe77cabe3166aaf5d474d241..0000000000000000000000000000000000000000 --- a/l10n/fi/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/fi/user_migrate.po b/l10n/fi/user_migrate.po deleted file mode 100644 index cd3ef8ef5a96adb3c326cf72b5e0f4cb44655b77..0000000000000000000000000000000000000000 --- a/l10n/fi/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/fi/user_openid.po b/l10n/fi/user_openid.po deleted file mode 100644 index a6f5b6048de246058d4768dede8418fe73a8e748..0000000000000000000000000000000000000000 --- a/l10n/fi/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/fi_FI/admin_dependencies_chk.po b/l10n/fi_FI/admin_dependencies_chk.po deleted file mode 100644 index a9a1eac7b0a062edf3f9fdf29b96a33a37535b45..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jiri Grönroos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:01+0200\n" -"PO-Revision-Date: 2012-08-23 13:01+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "php-gd-moduuli vaaditaan, jotta kuvista on mahdollista luoda esikatselukuvia" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "php-ldap-moduuli vaaditaan, jotta yhteys ldap-palvelimeen on mahdollista" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "php-zip-moduuli vaaditaan, jotta useiden tiedostojen samanaikainen lataus on mahdollista" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "php-xml-moduuli vaaditaan, jotta tiedostojen jako webdavia käyttäen on mahdollista" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "php-pdo-moduuli tarvitaan, jotta ownCloud-tietojen tallennus tietokantaan on mahdollista" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Riippuvuuksien tila" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Käyttökohde:" diff --git a/l10n/fi_FI/admin_migrate.po b/l10n/fi_FI/admin_migrate.po deleted file mode 100644 index ce68f4275d70b8cde589a1bd160831d4b488900f..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jiri Grönroos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-17 00:44+0200\n" -"PO-Revision-Date: 2012-08-16 10:55+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Vie tämä ownCloud-istanssi" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Vie" diff --git a/l10n/fi_FI/bookmarks.po b/l10n/fi_FI/bookmarks.po deleted file mode 100644 index 70bd07ab62f1d2b18ac0f0c5e80a759bb8adb056..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jiri Grönroos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:21+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Kirjanmerkit" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "nimetön" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Vedä tämä selaimesi kirjanmerkkipalkkiin ja napsauta sitä, kun haluat lisätä kirjanmerkin nopeasti:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Lue myöhemmin" - -#: templates/list.php:13 -msgid "Address" -msgstr "Osoite" - -#: templates/list.php:14 -msgid "Title" -msgstr "Otsikko" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Tunnisteet" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Tallenna kirjanmerkki" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Sinulla ei ole kirjanmerkkejä" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Kirjanmerkitsin
            " diff --git a/l10n/fi_FI/calendar.po b/l10n/fi_FI/calendar.po deleted file mode 100644 index 6b129f3ee911b90480336a1815286f5ca63e1066..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/calendar.po +++ /dev/null @@ -1,816 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jiri Grönroos , 2012. -# Johannes Korpela <>, 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 12:14+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Kalentereita ei löytynyt" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Tapahtumia ei löytynyt." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Väärä kalenteri" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Tiedosto ei joko sisältänyt tapahtumia tai vaihtoehtoisesti kaikki tapahtumat on jo tallennettu kalenteriisi." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Tuonti epäonnistui" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "tapahtumaa on tallennettu kalenteriisi" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Uusi aikavyöhyke:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Aikavyöhyke vaihdettu" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Virheellinen pyyntö" - -#: appinfo/app.php:37 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalenteri" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Syntymäpäivä" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "Ota yhteyttä" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Asiakkaat" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Toimittaja" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Vapaapäivät" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideat" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Matkustus" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Vuosipäivät" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Tapaamiset" - -#: lib/app.php:131 -msgid "Other" -msgstr "Muut" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Henkilökohtainen" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projektit" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Kysymykset" - -#: lib/app.php:135 -msgid "Work" -msgstr "Työ" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "nimetön" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Uusi kalenteri" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ei toistoa" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Päivittäin" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Viikottain" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Arkipäivisin" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Joka toinen viikko" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Kuukausittain" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Vuosittain" - -#: lib/object.php:388 -msgid "never" -msgstr "Ei koskaan" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Maanantai" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Tiistai" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Keskiviikko" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Torstai" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Perjantai" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Lauantai" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Sunnuntai" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "ensimmäinen" - -#: lib/object.php:429 -msgid "second" -msgstr "toinen" - -#: lib/object.php:430 -msgid "third" -msgstr "kolmas" - -#: lib/object.php:431 -msgid "fourth" -msgstr "neljäs" - -#: lib/object.php:432 -msgid "fifth" -msgstr "viides" - -#: lib/object.php:433 -msgid "last" -msgstr "viimeinen" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Tammikuu" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Helmikuu" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Maaliskuu" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Huhtikuu" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Toukokuu" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Kesäkuu" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Heinäkuu" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Elokuu" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Syyskuu" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Lokakuu" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Marraskuu" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Joulukuu" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Päivämäärä" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Su" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Ma" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Ti" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Ke" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "To" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Pe" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "La" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Tammi" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Helmi" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Maalis" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Huhti" - -#: templates/calendar.php:8 -msgid "May." -msgstr "Touko" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Kesä" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Heinä" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Elo" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Syys" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Loka" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Marras" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Joulu" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Koko päivä" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Puuttuvat kentät" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Otsikko" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Tapahtuma päättyy ennen alkamistaan" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Tapahtui tietokantavirhe" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Viikko" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Kuukausi" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Tänään" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Asetukset" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Omat kalenterisi" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav-linkki" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Jaetut kalenterit" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Ei jaettuja kalentereita" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Jaa kalenteri" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Lataa" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Muokkaa" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Poista" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "kanssasi jaettu" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Uusi kalenteri" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Muokkaa kalenteria" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Kalenterin nimi" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiivinen" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalenterin väri" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Tallenna" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Talleta" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Peru" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Muokkaa tapahtumaa" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Vie" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Tapahtumatiedot" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Toisto" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Hälytys" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Osallistujat" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Jaa" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Tapahtuman otsikko" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Luokka" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Erota luokat pilkuilla" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Muokkaa luokkia" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Koko päivän tapahtuma" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Alkaa" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Päättyy" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Tarkemmat asetukset" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Sijainti" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Tapahtuman sijainti" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Kuvaus" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Tapahtuman kuvaus" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Toisto" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Valitse viikonpäivät" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Valitse päivät" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Valitse kuukaudet" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Valitse viikot" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalli" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "luo uusi kalenteri" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Tuo kalenteritiedosto" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Valitse kalenteri" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Uuden kalenterin nimi" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Samalla nimellä on jo olemassa kalenteri. Jos jatkat kaikesta huolimatta, kalenterit yhdistetään." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Tuo" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Sulje ikkuna" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Luo uusi tapahtuma" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Avaa tapahtuma" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Luokkia ei ole valittu" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "Yleiset" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Aikavyöhyke" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Päivitä aikavyöhykkeet automaattisesti" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Ajan näyttömuoto" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24 tuntia" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12 tuntia" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Viikon alkamispäivä" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Kalenterin CalDAV-synkronointiosoitteet" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Ensisijainen osoite (Kontact ja muut vastaavat)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Käyttäjät" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "valitse käyttäjät" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Muoktattava" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Ryhmät" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "valitse ryhmät" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "aseta julkiseksi" diff --git a/l10n/fi_FI/contacts.po b/l10n/fi_FI/contacts.po deleted file mode 100644 index a80843bf7e87562c8c289df146f001cba1cddd82..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/contacts.po +++ /dev/null @@ -1,956 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jesse Jaara , 2012. -# Jiri Grönroos , 2012. -# Johannes Korpela <>, 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Virhe päivitettäessä osoitekirjaa." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Virhe asettaessa tarkistussummaa." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Luokkia ei ole valittu poistettavaksi." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Osoitekirjoja ei löytynyt." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Yhteystietoja ei löytynyt." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Virhe yhteystietoa lisättäessä." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Tyhjää ominaisuutta ei voi lisätä." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Vähintään yksi osoitekenttä tulee täyttää." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "vCardin tiedot eivät kelpaa. Lataa sivu uudelleen." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Virhe jäsennettäessä vCardia tunnisteelle: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Virhe tallennettaessa tilapäistiedostoa." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Kuvan polkua ei annettu." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Tiedostoa ei ole olemassa:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Virhe kuvaa ladatessa." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Virhe yhteystietoa tallennettaessa." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Virhe asettaessa kuvaa uuteen kokoon" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Virhe rajatessa kuvaa" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Virhe luotaessa väliaikaista kuvaa" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Ei virhettä, tiedosto lähetettiin onnistuneesti" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Lähetetyn tiedoston koko ylittää upload_max_filesize-asetuksen arvon php.ini-tiedostossa" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Lähetetty tiedosto lähetettiin vain osittain" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Tiedostoa ei lähetetty" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Tilapäiskansio puuttuu" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Väliaikaiskuvan tallennus epäonnistui:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Väliaikaiskuvan lataus epäonnistui:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Tiedostoa ei lähetetty. Tuntematon virhe" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Yhteystiedot" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Virhe" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Muokkaa nimeä" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Tiedostoja ei ole valittu lähetettäväksi." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Virhe profiilikuvaa ladatessa." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Valitse tyyppi" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Jotkin yhteystiedot on merkitty poistettaviksi, mutta niitä ei ole vielä poistettu. Odota hetki, että kyseiset yhteystiedot poistetaan." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Haluatko yhdistää nämä osoitekirjat?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Tulos: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " tuotu, " - -#: js/loader.js:49 -msgid " failed." -msgstr " epäonnistui." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Näyttönimi ei voi olla tyhjä." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Osoitekirjaa ei löytynyt:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Tämä ei ole osoitekirjasi." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Yhteystietoa ei löytynyt." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "Google Talk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Työ" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Koti" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Muu" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobiili" - -#: lib/app.php:203 -msgid "Text" -msgstr "Teksti" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Ääni" - -#: lib/app.php:205 -msgid "Message" -msgstr "Viesti" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faksi" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Hakulaite" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Syntymäpäivä" - -#: lib/app.php:253 -msgid "Business" -msgstr "Työ" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Kysymykset" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Henkilön {name} syntymäpäivä" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Yhteystieto" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Lisää yhteystieto" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Tuo" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Asetukset" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Osoitekirjat" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Sulje" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Pikanäppäimet" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Seuraava yhteystieto luettelossa" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Edellinen yhteystieto luettelossa" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Seuraava osoitekirja" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Edellinen osoitekirja" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Toiminnot" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Päivitä yhteystietoluettelo" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Lisää uusi yhteystieto" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Lisää uusi osoitekirja" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Poista nykyinen yhteystieto" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Poista nykyinen valokuva" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Muokkaa nykyistä valokuvaa" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Lähetä uusi valokuva" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Valitse valokuva ownCloudista" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Muokkaa nimitietoja" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisaatio" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Poista" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Kutsumanimi" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Anna kutsumanimi" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Verkkosivu" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Siirry verkkosivulle" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Ryhmät" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Erota ryhmät pilkuilla" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Muokkaa ryhmiä" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Ensisijainen" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Anna kelvollinen sähköpostiosoite." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Anna sähköpostiosoite" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Lähetä sähköpostia" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Poista sähköpostiosoite" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Anna puhelinnumero" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Poista puhelinnumero" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Pikaviestin" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Näytä kartalla" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Muokkaa osoitetietoja" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Lisää huomiot tähän." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Lisää kenttä" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Puhelin" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Sähköposti" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Osoite" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Huomio" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Lataa yhteystieto" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Poista yhteystieto" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Väliaikainen kuva on poistettu välimuistista." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Muokkaa osoitetta" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tyyppi" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postilokero" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Katuosoite" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Katu ja numero" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Laajennettu" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Asunnon numero jne." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Paikkakunta" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Alue" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postinumero" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Postinumero" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Maa" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Osoitekirja" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Etunimi" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Lisänimet" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Sukunimi" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Tuo yhteystiedon sisältävä tiedosto" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Valitse osoitekirja" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "luo uusi osoitekirja" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Uuden osoitekirjan nimi" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Tuodaan yhteystietoja" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Osoitekirjassasi ei ole yhteystietoja." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Lisää yhteystieto" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Valitse osoitekirjat" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Anna nimi" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Anna kuvaus" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV-synkronointiosoitteet" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Näytä CardDav-linkki" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Näytä vain luku -muodossa oleva VCF-linkki" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Jaa" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Lataa" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Muokkaa" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Uusi osoitekirja" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nimi" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Kuvaus" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Tallenna" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Peru" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Lisää..." diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 1d64256ea079814efc2ce115a229c849ed54c009..a5d1642b013cb632b19fd88b40001b6b4712c98a 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/core.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:04+0200\n" -"PO-Revision-Date: 2012-10-11 18:01+0000\n" -"Last-Translator: variaatiox \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 20:59+0000\n" +"Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,208 +24,241 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Sovelluksen nimeä ei määritelty." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ei lisättävää luokkaa?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Tämä luokka on jo olemassa: " -#: js/js.js:229 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Luokkia ei valittu poistettavaksi." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Asetukset" -#: js/js.js:661 -msgid "January" -msgstr "Tammikuu" +#: js/js.js:688 +msgid "seconds ago" +msgstr "sekuntia sitten" -#: js/js.js:661 -msgid "February" -msgstr "Helmikuu" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 minuutti sitten" -#: js/js.js:661 -msgid "March" -msgstr "Maaliskuu" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{minutes} minuuttia sitten" -#: js/js.js:661 -msgid "April" -msgstr "Huhtikuu" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "1 tunti sitten" -#: js/js.js:661 -msgid "May" -msgstr "Toukokuu" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "{hours} tuntia sitten" -#: js/js.js:661 -msgid "June" -msgstr "Kesäkuu" +#: js/js.js:693 +msgid "today" +msgstr "tänään" -#: js/js.js:662 -msgid "July" -msgstr "Heinäkuu" +#: js/js.js:694 +msgid "yesterday" +msgstr "eilen" -#: js/js.js:662 -msgid "August" -msgstr "Elokuu" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{days} päivää sitten" -#: js/js.js:662 -msgid "September" -msgstr "Syyskuu" +#: js/js.js:696 +msgid "last month" +msgstr "viime kuussa" -#: js/js.js:662 -msgid "October" -msgstr "Lokakuu" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "{months} kuukautta sitten" -#: js/js.js:662 -msgid "November" -msgstr "Marraskuu" +#: js/js.js:698 +msgid "months ago" +msgstr "kuukautta sitten" -#: js/js.js:662 -msgid "December" -msgstr "Joulukuu" +#: js/js.js:699 +msgid "last year" +msgstr "viime vuonna" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "vuotta sitten" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Valitse" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Peru" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ei" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Kyllä" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Luokkia ei valittu poistettavaksi." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Virhe" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Sovelluksen nimeä ei ole määritelty." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Vaadittua tiedostoa {file} ei ole asennettu!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Virhe jaettaessa" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Virhe jakoa peruttaessa" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Virhe oikeuksia muuttaessa" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Jaettu sinulle ja ryhmälle" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Jaa linkillä" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Suojaa salasanalla" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Salasana" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Aseta päättymispäivä" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Päättymispäivä" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Jaa sähköpostilla:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Henkilöitä ei löytynyt" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Jakaminen uudelleen ei ole salittu" -#: js/share.js:250 -msgid "Shared in" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:250 -msgid "with" -msgstr "kanssa" - -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "Peru jakaminen" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "voi muokata" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "Pääsyn hallinta" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "luo" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "päivitä" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "poista" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "jaa" -#: js/share.js:322 js/share.js:484 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Salasanasuojattu" -#: js/share.js:497 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Virhe purettaessa eräpäivää" -#: js/share.js:509 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Virhe päättymispäivää asettaessa" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud-salasanan nollaus" @@ -238,15 +271,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Saat sähköpostitse linkin nollataksesi salasanan." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Tilattu" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Kirjautuminen epäonnistui!" +msgid "Request failed!" +msgstr "Pyyntö epäonnistui!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Käyttäjätunnus" @@ -302,72 +335,187 @@ msgstr "Pilveä ei löydy" msgid "Edit categories" msgstr "Muokkaa luokkia" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Lisää" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Turvallisuusvaroitus" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Data-kansio ja tiedostot ovat ehkä saavutettavissa Internetistä. .htaccess-tiedosto, jolla kontrolloidaan pääsyä, ei toimi. Suosittelemme, että muutat web-palvelimesi asetukset niin ettei data-kansio ole enää pääsyä tai siirrät data-kansion pois web-palvelimen tiedostojen juuresta." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Luo ylläpitäjän tunnus" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Lisäasetukset" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datakansio" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Muokkaa tietokantaa" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "käytetään" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Tietokannan käyttäjä" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Tietokannan salasana" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Tietokannan nimi" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Tietokannan taulukkotila" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Tietokantapalvelin" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Viimeistele asennus" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Sunnuntai" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Maanantai" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Tiistai" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Keskiviikko" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Torstai" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Perjantai" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Lauantai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Tammikuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Helmikuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Maaliskuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Huhtikuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Toukokuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Kesäkuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Heinäkuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Elokuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Syyskuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Lokakuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Marraskuu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Joulukuu" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "verkkopalvelut hallinnassasi" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Kirjaudu ulos" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automaattinen sisäänkirjautuminen hylättiin!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Jos et vaihtanut salasanaasi äskettäin, tilisi saattaa olla murrettu." + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Vaihda salasanasi suojataksesi tilisi uudelleen." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Unohditko salasanasi?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "muista" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Kirjaudu sisään" @@ -382,3 +530,17 @@ msgstr "edellinen" #: templates/part.pagenavi.php:20 msgid "next" msgstr "seuraava" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Turvallisuusvaroitus!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Vahvista salasanasi.
            Turvallisuussyistä sinulta saatetaan ajoittain kysyä salasanasi uudelleen." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Vahvista" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index 361afe1ce0c8420862f700949df02ca1d626191c..e96dbeabb503903537ee8dabaf23102ffcb660a7 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/files.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 12:21+0000\n" -"Last-Translator: Jiri Grönroos \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,195 +27,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Ei virheitä, tiedosto lähetettiin onnistuneesti" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Lähetetty tiedosto ylittää upload_max_filesize-arvon rajan php.ini-tiedostossa" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Tiedoston lähetys onnistui vain osittain" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Yhtäkään tiedostoa ei lähetetty" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Väliaikaiskansiota ei ole olemassa" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Levylle kirjoitus epäonnistui" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Tiedostot" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "Peru jakaminen" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Poista" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Nimeä uudelleen" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "on jo olemassa" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} on jo olemassa" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "korvaa" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "ehdota nimeä" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "peru" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "korvattu" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "kumoa" -#: js/filelist.js:241 -msgid "with" -msgstr "käyttäen" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "poistettu" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Virheellinen nimi, merkit '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' eivät ole sallittuja." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "luodaan ZIP-tiedostoa, tämä saattaa kestää hetken." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Lähetysvirhe." -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Sulje" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Odottaa" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Lähetys peruttu." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Virheellinen nimi, merkki '/' ei ole sallittu." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:668 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nimi" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Koko" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Muutettu" -#: js/files.js:778 -msgid "folder" -msgstr "kansio" - -#: js/files.js:780 -msgid "folders" -msgstr "kansiota" - -#: js/files.js:788 -msgid "file" -msgstr "tiedosto" - -#: js/files.js:790 -msgid "files" -msgstr "tiedostoa" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 kansio" -#: js/files.js:834 -msgid "seconds ago" -msgstr "sekuntia sitten" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} kansiota" -#: js/files.js:835 -msgid "minute ago" -msgstr "minuutti sitten" +#: js/files.js:824 +msgid "1 file" +msgstr "1 tiedosto" -#: js/files.js:836 -msgid "minutes ago" -msgstr "minuuttia sitten" - -#: js/files.js:839 -msgid "today" -msgstr "tänään" - -#: js/files.js:840 -msgid "yesterday" -msgstr "eilen" - -#: js/files.js:841 -msgid "days ago" -msgstr "päivää sitten" - -#: js/files.js:842 -msgid "last month" -msgstr "viime kuussa" - -#: js/files.js:844 -msgid "months ago" -msgstr "kuukautta sitten" - -#: js/files.js:845 -msgid "last year" -msgstr "viime vuonna" - -#: js/files.js:846 -msgid "years ago" -msgstr "vuotta sitten" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} tiedostoa" #: templates/admin.php:5 msgid "File handling" @@ -225,27 +196,27 @@ msgstr "Tiedostonhallinta" msgid "Maximum upload size" msgstr "Lähetettävän tiedoston suurin sallittu koko" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "suurin mahdollinen:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Tarvitaan useampien tiedostojen ja kansioiden latausta varten." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Ota ZIP-paketin lataaminen käytöön" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 on rajoittamaton" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ZIP-tiedostojen enimmäiskoko" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Tallenna" @@ -253,52 +224,48 @@ msgstr "Tallenna" msgid "New" msgstr "Uusi" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tekstitiedosto" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Kansio" -#: templates/index.php:11 -msgid "From url" -msgstr "Verkko-osoitteesta" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Lähetä" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Peru lähetys" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Täällä ei ole mitään. Lähetä tänne jotakin!" -#: templates/index.php:50 -msgid "Share" -msgstr "Jaa" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Lataa" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Lähetettävä tiedosto on liian suuri" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Lähetettäväksi valitsemasi tiedostot ylittävät palvelimen salliman tiedostokoon rajan." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Tiedostoja tarkistetaan, odota hetki." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Tämänhetkinen tutkinta" diff --git a/l10n/fi_FI/files_pdfviewer.po b/l10n/fi_FI/files_pdfviewer.po deleted file mode 100644 index cdccaec4c78f2fb32bf4aada216fafcd0dfd0056..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/fi_FI/files_texteditor.po b/l10n/fi_FI/files_texteditor.po deleted file mode 100644 index 69c3672db6f2d0a3207bc57137a841916767cb7f..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/fi_FI/gallery.po b/l10n/fi_FI/gallery.po deleted file mode 100644 index 275d7d08abee5e35db3637e37647cff28a3b8e4a..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/gallery.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jesse Jaara , 2012. -# Jiri Grönroos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-27 02:02+0200\n" -"PO-Revision-Date: 2012-07-26 10:43+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Kuvat" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Jaa galleria" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Virhe: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Sisäinen virhe" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Diaesitys" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Takaisin" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Poiston vahvistus" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Tahdotko poistaa albumin" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Muuta albumin nimeä" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Uuden albumin nimi" diff --git a/l10n/fi_FI/impress.po b/l10n/fi_FI/impress.po deleted file mode 100644 index ccf18fac855c5425a21d2fcdfffa1c76cee7bd3a..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/fi_FI/lib.po b/l10n/fi_FI/lib.po index 961500dae1ee34e049bd8565f99d70a48367566e..0669c281cf6bd7d4d5b5e6856b594e1fe59f71b3 100644 --- a/l10n/fi_FI/lib.po +++ b/l10n/fi_FI/lib.po @@ -8,53 +8,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 13:35+0200\n" -"PO-Revision-Date: 2012-09-01 10:01+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 20:58+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Ohje" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Henkilökohtainen" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Asetukset" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Käyttäjät" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Sovellukset" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Ylläpitäjä" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP-lataus on poistettu käytöstä." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Tiedostot on ladattava yksittäin." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Takaisin tiedostoihin" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Valitut tiedostot ovat liian suurikokoisia mahtuakseen zip-tiedostoon." @@ -62,7 +62,7 @@ msgstr "Valitut tiedostot ovat liian suurikokoisia mahtuakseen zip-tiedostoon." msgid "Application is not enabled" msgstr "Sovellusta ei ole otettu käyttöön" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Todennusvirhe" @@ -70,57 +70,84 @@ msgstr "Todennusvirhe" msgid "Token expired. Please reload page." msgstr "Valtuutus vanheni. Lataa sivu uudelleen." -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Tiedostot" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Teksti" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Kuvat" + +#: template.php:103 msgid "seconds ago" msgstr "sekuntia sitten" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 minuutti sitten" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minuuttia sitten" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 tunti sitten" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d tuntia sitten" + +#: template.php:108 msgid "today" msgstr "tänään" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "eilen" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d päivää sitten" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "viime kuussa" -#: template.php:95 -msgid "months ago" -msgstr "kuukautta sitten" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d kuukautta sitten" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "viime vuonna" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "vuotta sitten" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s on saatavilla. Lue lisätietoja" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "ajan tasalla" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "päivitysten tarkistus on pois käytöstä" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Luokkaa \"%s\" ei löytynyt" diff --git a/l10n/fi_FI/media.po b/l10n/fi_FI/media.po deleted file mode 100644 index 86efa19e5d3e915fd1de8e8b7f5514996b873e1b..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jesse Jaara , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Finnish (Finland) (http://www.transifex.net/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musiikki" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Toista" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Tauko" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Edellinen" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Seuraava" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Mykistä" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Palauta äänet" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Etsi uusia kappaleita" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Esittäjä" - -#: templates/music.php:38 -msgid "Album" -msgstr "Albumi" - -#: templates/music.php:39 -msgid "Title" -msgstr "Nimi" diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index 98dc0286ad0a3120cdc6f5fdc89edd166fe70e4e..d7f6f888d437674512cb9834536889ff0861b9f0 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +20,73 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Ei pystytä lataamaan listaa sovellusvarastosta (App Store)" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Todennusvirhe" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Ryhmä on jo olemassa" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Ryhmän lisäys epäonnistui" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Sovelluksen käyttöönotto epäonnistui." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Sähköposti tallennettu" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Virheellinen sähköposti" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID on vaihdettu" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Virheellinen pyyntö" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Ryhmän poisto epäonnistui" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Todennusvirhe" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Käyttäjän poisto epäonnistui" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Kieli on vaihdettu" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Käyttäjän tai ryhmän %s lisääminen ei onnistu" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Käyttäjän poistaminen ryhmästä %s ei onnistu" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Poista käytöstä" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Käytä" @@ -91,108 +94,21 @@ msgstr "Käytä" msgid "Saving..." msgstr "Tallennetaan..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "_kielen_nimi_" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Turvallisuusvaroitus" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Data-kansio ja tiedostot ovat ehkä saavutettavissa Internetistä. .htaccess-tiedosto, jolla kontrolloidaan pääsyä, ei toimi. Suosittelemme, että muutat web-palvelimesi asetukset niin ettei data-kansio ole enää pääsyä tai siirrät data-kansion pois web-palvelimen tiedostojen juuresta." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Jakaminen" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Ota käyttöön jaon ohjelmoitirajapinta (Share API)" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Salli sovellusten käyttää jaon ohjelmointirajapintaa (Share API)" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Salli linkit" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Salli käyttäjien jakaa kohteita julkisesti linkkejä käyttäen" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Salli uudelleenjako" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Salli käyttäjien jakaa heille itselleen jaettuja tietoja edelleen" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Salli käyttäjien jakaa kohteita kenen tahansa kanssa" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Salli käyttäjien jakaa kohteita vain omien ryhmien jäsenten kesken" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Loki" - -#: templates/admin.php:116 -msgid "More" -msgstr "Lisää" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Kehityksestä on vastannut ownCloud-yhteisö, lähdekoodi on julkaistu lisenssin AGPL alaisena." - #: templates/apps.php:10 msgid "Add your App" -msgstr "Lisää ohjelmasi" +msgstr "Lisää sovelluksesi" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Lisää sovelluksia" #: templates/apps.php:27 msgid "Select an App" -msgstr "Valitse ohjelma" +msgstr "Valitse sovellus" #: templates/apps.php:31 msgid "See application page at apps.owncloud.com" @@ -214,22 +130,22 @@ msgstr "Suurten tiedostojen hallinta" msgid "Ask a question" msgstr "Kysy jotain" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Virhe yhdistettäessä tietokantaan." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." -msgstr "Ohje löytyy sieltä." +msgstr "Siirry sinne itse." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Vastaus" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Käytössäsi on %s/%s" +msgid "You have used %s of the available %s" +msgstr "Käytössäsi on %s/%s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -287,6 +203,16 @@ msgstr "Auta kääntämisessä" msgid "use this address to connect to your ownCloud in your file manager" msgstr "voit yhdistää tiedostonhallintasovelluksellasi ownCloudiin käyttämällä tätä osoitetta" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Kehityksestä on vastannut ownCloud-yhteisö, lähdekoodi on julkaistu lisenssin AGPL alaisena." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nimi" diff --git a/l10n/fi_FI/tasks.po b/l10n/fi_FI/tasks.po deleted file mode 100644 index b8857baee6d5415ed0951a39d82290ccf9483707..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jiri Grönroos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 13:23+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Virheellinen päivä tai aika" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Tehtävät" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Ei luokkaa" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Määrittelemätön" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=korkein" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=keskitaso" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=matalin" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Tyhjä yhteenveto" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Virheellinen prioriteetti" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Lisää tehtävä" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Ladataan tehtäviä..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Tärkeä" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Enemmän" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Vähemmän" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Poista" diff --git a/l10n/fi_FI/user_migrate.po b/l10n/fi_FI/user_migrate.po deleted file mode 100644 index b0ab6824519f903092fd8228d1b3209b0d9d6fab..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jiri Grönroos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-17 00:44+0200\n" -"PO-Revision-Date: 2012-08-16 11:06+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Vie" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Jokin meni pieleen vientiä suorittaessa" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Tapahtui virhe" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Vie käyttäjätilisi" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Tämä luo ownCloud-käyttäjätilisi sisältävän pakatun tiedoston." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Tuo käyttäjätili" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Tuo" diff --git a/l10n/fi_FI/user_openid.po b/l10n/fi_FI/user_openid.po deleted file mode 100644 index 36900815c79bdeab7a3f02fae8bd6579e52a1f59..0000000000000000000000000000000000000000 --- a/l10n/fi_FI/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jiri Grönroos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 11:37+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identiteetti: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Alue: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Käyttäjä: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Kirjaudu" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Virhe: Käyttäjää ei valittu" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/fi_FI/files_odfviewer.po b/l10n/fi_FI/user_webdavauth.po similarity index 60% rename from l10n/fi_FI/files_odfviewer.po rename to l10n/fi_FI/user_webdavauth.po index b6ab6054fe6eafec4615e4af46ebba11eae6511f..b3fa002d0f33d98c7fd49f8ce4cadbb2268ec3bd 100644 --- a/l10n/fi_FI/files_odfviewer.po +++ b/l10n/fi_FI/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Jiri Grönroos , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 11:43+0000\n" +"Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi_FI\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV-osoite: http://" diff --git a/l10n/fr/admin_dependencies_chk.po b/l10n/fr/admin_dependencies_chk.po deleted file mode 100644 index 36480849becb51b093e4c560e5c5fec2178e236b..0000000000000000000000000000000000000000 --- a/l10n/fr/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Romain DEP. , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:02+0200\n" -"PO-Revision-Date: 2012-08-14 15:59+0000\n" -"Last-Translator: Romain DEP. \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Le module php-json est requis pour l'inter-communication de nombreux modules." - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Le module php-curl est requis afin de rapatrier le titre des pages lorsque vous ajoutez un marque-pages." - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Le module php-gd est requis afin de permettre la création d'aperçus pour vos images." - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Le module php-ldap est requis afin de permettre la connexion à votre serveur ldap." - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Le module php-zip est requis pour le téléchargement simultané de plusieurs fichiers." - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Le module php-mb_multibyte est requis pour une gestion correcte des encodages." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Le module php-ctype est requis pour la validation des données." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Le module php-xml est requis pour le partage de fichiers via webdav." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "La directive allow_url_fopen de votre fichier php.ini doit être à la valeur 1 afin de permettre le rapatriement de la base de connaissance depuis les serveurs OCS." - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "le module php-pdo est requis pour le stockage des données ownCloud en base de données." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Statut des dépendances" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Utilisé par :" diff --git a/l10n/fr/admin_migrate.po b/l10n/fr/admin_migrate.po deleted file mode 100644 index a3f34310cc100595880d6a0850669602f90c9455..0000000000000000000000000000000000000000 --- a/l10n/fr/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Romain DEP. , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:02+0200\n" -"PO-Revision-Date: 2012-08-14 15:51+0000\n" -"Last-Translator: Romain DEP. \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Exporter cette instance ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Ceci va créer une archive compressée contenant les données de cette instance ownCloud.\n Veuillez choisir le type d'export :" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Exporter" diff --git a/l10n/fr/bookmarks.po b/l10n/fr/bookmarks.po deleted file mode 100644 index f3f172409f29d966efe1141629cb8a53015bd480..0000000000000000000000000000000000000000 --- a/l10n/fr/bookmarks.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Geoffrey Guerrier , 2012. -# Romain DEP. , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-31 00:26+0000\n" -"Last-Translator: Romain DEP. \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Favoris" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "sans titre" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Glissez ceci dans les favoris de votre navigateur, et cliquer dessus lorsque vous souhaitez ajouter la page en cours à vos marques-pages :" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Lire plus tard" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adresse" - -#: templates/list.php:14 -msgid "Title" -msgstr "Titre" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Étiquettes" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Sauvegarder le favori" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Vous n'avez aucun favori" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Gestionnaire de favoris
            " diff --git a/l10n/fr/calendar.po b/l10n/fr/calendar.po deleted file mode 100644 index c69485641c7de9f4076498925a397acee1c69521..0000000000000000000000000000000000000000 --- a/l10n/fr/calendar.po +++ /dev/null @@ -1,822 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# , 2011. -# Jan-Christoph Borchardt , 2011. -# Nahir Mohamed , 2012. -# Nicolas , 2012. -# , 2012. -# , 2011, 2012. -# Romain DEP. , 2012. -# Yann Yann , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Tous les calendriers ne sont pas mis en cache" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Tout semble être en cache" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Aucun calendrier n'a été trouvé." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Aucun événement n'a été trouvé." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Mauvais calendrier" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Soit le fichier ne contient aucun événement soit tous les événements sont déjà enregistrés dans votre calendrier." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "Les événements ont été enregistrés dans le nouveau calendrier" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Échec de l'import" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "Les événements ont été enregistrés dans votre calendrier" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nouveau fuseau horaire :" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Fuseau horaire modifié" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Requête invalide" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendrier" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd d/M" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd d/M" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, d MMM, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Anniversaire" - -#: lib/app.php:122 -msgid "Business" -msgstr "Professionnel" - -#: lib/app.php:123 -msgid "Call" -msgstr "Appel" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clientèle" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Livraison" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Vacances" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idées" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Déplacement" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubilé" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Meeting" - -#: lib/app.php:131 -msgid "Other" -msgstr "Autre" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personnel" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projets" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Questions" - -#: lib/app.php:135 -msgid "Work" -msgstr "Travail" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "par" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "sans-nom" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nouveau Calendrier" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Pas de répétition" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Tous les jours" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Hebdomadaire" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Quotidien" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Bi-hebdomadaire" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensuel" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Annuel" - -#: lib/object.php:388 -msgid "never" -msgstr "jamais" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "par occurrences" - -#: lib/object.php:390 -msgid "by date" -msgstr "par date" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "par jour du mois" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "par jour de la semaine" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Lundi" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Mardi" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Mercredi" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Jeudi" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Vendredi" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Samedi" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Dimanche" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "événements du mois par semaine" - -#: lib/object.php:428 -msgid "first" -msgstr "premier" - -#: lib/object.php:429 -msgid "second" -msgstr "deuxième" - -#: lib/object.php:430 -msgid "third" -msgstr "troisième" - -#: lib/object.php:431 -msgid "fourth" -msgstr "quatrième" - -#: lib/object.php:432 -msgid "fifth" -msgstr "cinquième" - -#: lib/object.php:433 -msgid "last" -msgstr "dernier" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Janvier" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Février" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Mars" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Avril" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mai" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juin" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juillet" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Août" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Septembre" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Octobre" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembre" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Décembre" - -#: lib/object.php:488 -msgid "by events date" -msgstr "par date d’événements" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "par jour(s) de l'année" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "par numéro de semaine(s)" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "par jour et mois" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Date" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Dim." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Lun." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Mar." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Mer." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Jeu" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Ven." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Sam." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Fév." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mars" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Avr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Mai" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Juin" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Juil." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Août" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Oct." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Déc." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Journée entière" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Champs manquants" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titre" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "De la date" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "De l'heure" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "A la date" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "A l'heure" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "L'évènement s'est terminé avant qu'il ne commence" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Il y a eu un échec dans la base de donnée" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Semaine" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mois" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Liste" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Aujourd'hui" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Vos calendriers" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Lien CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendriers partagés" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Aucun calendrier partagé" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Partager le calendrier" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Télécharger" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Éditer" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Supprimer" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "partagé avec vous par" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nouveau calendrier" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Éditer le calendrier" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Nom d'affichage" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Actif" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Couleur du calendrier" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Sauvegarder" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Soumettre" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Annuler" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Éditer un événement" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exporter" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Événement" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Occurences" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarmes" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Participants" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Partage" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Titre de l'événement" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Catégorie" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Séparer les catégories par des virgules" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Modifier les catégories" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Journée entière" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "De" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "À" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Options avancées" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Emplacement" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Emplacement de l'événement" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Description" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Description de l'événement" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Répétition" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avancé" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Sélection des jours de la semaine" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Sélection des jours" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "et les événements de l'année par jour." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "et les événements du mois par jour." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Sélection des mois" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Sélection des semaines" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "et les événements de l'année par semaine." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalle" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Fin" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "occurrences" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Créer un nouveau calendrier" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importer un fichier de calendriers" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Veuillez sélectionner un calendrier" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nom pour le nouveau calendrier" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Choisissez un nom disponible !" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Un calendrier de ce nom existe déjà. Si vous choisissez de continuer les calendriers seront fusionnés." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importer" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Fermer la fenêtre" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Créer un nouvel événement" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Voir un événement" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Aucune catégorie sélectionnée" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "à" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Fuseau horaire" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Cache" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Nettoyer le cache des événements répétitifs" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Adresses de synchronisation des calendriers CalDAV" - -#: templates/settings.php:87 -msgid "more info" -msgstr "plus d'infos" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Adresses principales (Kontact et assimilés)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "lien(s) iCalendar en lecture seule" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Utilisateurs" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "sélectionner les utilisateurs" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Modifiable" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Groupes" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "sélectionner les groupes" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "rendre public" diff --git a/l10n/fr/contacts.po b/l10n/fr/contacts.po deleted file mode 100644 index 3415f7b733aa9c090049fa64e6d66ae71a4c89d7..0000000000000000000000000000000000000000 --- a/l10n/fr/contacts.po +++ /dev/null @@ -1,964 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Borjan Tchakaloff , 2012. -# Cyril Glapa , 2012. -# , 2011. -# , 2011, 2012. -# , 2012. -# Jan-Christoph Borchardt , 2011. -# , 2012. -# Nahir Mohamed , 2012. -# Nicolas , 2012. -# Robert Di Rosa <>, 2012. -# , 2011, 2012. -# Romain DEP. , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 13:55+0000\n" -"Last-Translator: MathieuP \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Des erreurs se sont produites lors de l'activation/désactivation du carnet d'adresses." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "L'ID n'est pas défini." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Impossible de mettre à jour le carnet d'adresses avec un nom vide." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Erreur lors de la mise à jour du carnet d'adresses." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Aucun ID fourni" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Erreur lors du paramétrage du hachage." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Pas de catégories sélectionnées pour la suppression." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Pas de carnet d'adresses trouvé." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Aucun contact trouvé." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Une erreur s'est produite lors de l'ajout du contact." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "Le champ Nom n'est pas défini." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Impossible de lire le contact :" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Impossible d'ajouter un champ vide." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Au moins un des champs d'adresses doit être complété." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Ajout d'une propriété en double:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "Paramètre de Messagerie Instantanée manquants." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "Messagerie Instantanée inconnue" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Les informations relatives à cette vCard sont incorrectes. Veuillez recharger la page." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID manquant" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Erreur lors de l'analyse du VCard pour l'ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "L'hachage n'est pas défini." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "L'informatiion à propos de la vCard est incorrect. Merci de rafraichir la page:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Quelque chose est FUBAR." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Aucun ID de contact envoyé" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Erreur de lecture de la photo du contact." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Erreur de sauvegarde du fichier temporaire." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "La photo chargée est invalide." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "L'ID du contact est manquant." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Le chemin de la photo n'a pas été envoyé." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Fichier inexistant:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Erreur lors du chargement de l'image." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Erreur lors de l'obtention de l'objet contact" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Erreur lors de l'obtention des propriétés de la photo" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Erreur de sauvegarde du contact" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Erreur de redimensionnement de l'image" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Erreur lors du rognage de l'image" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Erreur de création de l'image temporaire" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Erreur pour trouver l'image :" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Erreur lors de l'envoi des contacts vers le stockage." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Il n'y a pas d'erreur, le fichier a été envoyé avec succes." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Le fichier envoyé dépasse la directive upload_max_filesize dans php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Le fichier envoyé dépasse la directive MAX_FILE_SIZE qui est spécifiée dans le formulaire HTML." - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Le fichier envoyé n'a été que partiellement envoyé." - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Pas de fichier envoyé." - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Absence de dossier temporaire." - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Impossible de sauvegarder l'image temporaire :" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Impossible de charger l'image temporaire :" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Aucun fichier n'a été chargé. Erreur inconnue" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Contacts" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Désolé cette fonctionnalité n'a pas encore été implémentée" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Pas encore implémenté" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Impossible de trouver une adresse valide." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Erreur" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "Vous n'avez pas l'autorisation d'ajouter des contacts à" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Veuillez sélectionner l'un de vos carnets d'adresses." - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Erreur de permission" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Cette valeur ne doit pas être vide" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Impossible de sérialiser les éléments." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' a été appelé sans type d'arguments. Merci de rapporter un bug à bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Éditer le nom" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Aucun fichiers choisis pour être chargés" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Le fichier que vous tentez de charger dépasse la taille maximum de fichier autorisée sur ce serveur." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Erreur pendant le chargement de la photo de profil." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Sélectionner un type" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Certains contacts sont marqués pour être supprimés, mais ne le sont pas encore. Veuillez attendre que l'opération se termine." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Voulez-vous fusionner ces carnets d'adresses ?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Résultat :" - -#: js/loader.js:49 -msgid " imported, " -msgstr "importé," - -#: js/loader.js:49 -msgid " failed." -msgstr "échoué." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Le nom d'affichage ne peut pas être vide." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Carnet d'adresse introuvable : " - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ce n'est pas votre carnet d'adresses." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Ce contact n'a pu être trouvé." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "Messagerie Instantanée" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Travail" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Domicile" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Autre" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobile" - -#: lib/app.php:203 -msgid "Text" -msgstr "Texte" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voix" - -#: lib/app.php:205 -msgid "Message" -msgstr "Message" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Vidéo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Bipeur" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Anniversaire" - -#: lib/app.php:253 -msgid "Business" -msgstr "Business" - -#: lib/app.php:254 -msgid "Call" -msgstr "Appel" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Clients" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Livreur" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Vacances" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Idées" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Trajet" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubilé" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Rendez-vous" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Personnel" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projets" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Questions" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Anniversaire de {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contact" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "Vous n'avez pas l'autorisation de modifier ce contact." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "Vous n'avez pas l'autorisation de supprimer ce contact." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Ajouter un Contact" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importer" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Paramètres" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Carnets d'adresses" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Fermer" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Raccourcis clavier" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigation" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Contact suivant dans la liste" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Contact précédent dans la liste" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Dé/Replier le carnet d'adresses courant" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Carnet d'adresses suivant" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Carnet d'adresses précédent" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Actions" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Actualiser la liste des contacts" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Ajouter un nouveau contact" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Ajouter un nouveau carnet d'adresses" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Effacer le contact sélectionné" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Glisser une photo pour l'envoi" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Supprimer la photo actuelle" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Editer la photo actuelle" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Envoyer une nouvelle photo" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Sélectionner une photo depuis ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formatage personnalisé, Nom court, Nom complet, Inversé, Inversé avec virgule" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Editer les noms" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Société" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Supprimer" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Surnom" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Entrer un surnom" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Page web" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Allez à la page web" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "jj-mm-aaaa" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Groupes" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Séparer les groupes avec des virgules" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editer les groupes" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Préféré" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Merci d'entrer une adresse e-mail valide." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Entrer une adresse e-mail" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Envoyer à l'adresse" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Supprimer l'adresse e-mail" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Entrer un numéro de téléphone" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Supprimer le numéro de téléphone" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Supprimer la Messagerie Instantanée" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Voir sur une carte" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Editer les adresses" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Ajouter des notes ici." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Ajouter un champ." - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Téléphone" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Messagerie instantanée" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresse" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Note" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Télécharger le contact" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Supprimer le contact" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "L'image temporaire a été supprimée du cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Editer l'adresse" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Type" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Boîte postale" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Adresse postale" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Rue et numéro" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Étendu" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Numéro d'appartement, etc." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Ville" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Région" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Ex: état ou province" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Code postal" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Code postal" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Pays" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Carnet d'adresses" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Préfixe hon." - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Mlle" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Mme" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "M." - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Mme" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Prénom" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Nom supplémentaires" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Nom de famille" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Suffixes hon." - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importer un fichier de contacts" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Choisissez le carnet d'adresses SVP" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Créer un nouveau carnet d'adresses" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nom du nouveau carnet d'adresses" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importation des contacts" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Il n'y a pas de contact dans votre carnet d'adresses." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Ajouter un contact" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Choix du carnet d'adresses" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Saisissez le nom" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Saisissez une description" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Synchronisation des contacts CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "Plus d'infos" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Adresse principale" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Afficher le lien CardDav" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Afficher les liens VCF en lecture seule" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Partager" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Télécharger" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Modifier" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nouveau Carnet d'adresses" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nom" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Description" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Sauvegarder" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Annuler" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Plus…" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index aec436ebe736ac50c678937d82de21cb9aac73a3..28f66a6fa27c030779373947756a7ea12fdf83d6 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/core.po @@ -4,6 +4,7 @@ # # Translators: # Christophe Lherieau , 2012. +# , 2012. # , 2012. # Guillaume Paumier , 2012. # Nahir Mohamed , 2012. @@ -14,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-01 02:04+0200\n" -"PO-Revision-Date: 2012-09-30 15:52+0000\n" +"POT-Creation-Date: 2012-11-26 00:01+0100\n" +"PO-Revision-Date: 2012-11-25 00:59+0000\n" "Last-Translator: Romain DEP. \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -24,208 +25,241 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nom de l'application non fourni." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Type de catégorie non spécifié." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Pas de catégorie à ajouter ?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Cette catégorie existe déjà : " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Type d'objet non spécifié." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "L'identifiant de %s n'est pas spécifié." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Erreur lors de l'ajout de %s aux favoris." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Aucune catégorie sélectionnée pour suppression" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Erreur lors de la suppression de %s des favoris." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Paramètres" -#: js/js.js:645 -msgid "January" -msgstr "janvier" +#: js/js.js:704 +msgid "seconds ago" +msgstr "il y a quelques secondes" -#: js/js.js:645 -msgid "February" -msgstr "février" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "il y a une minute" -#: js/js.js:645 -msgid "March" -msgstr "mars" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "il y a {minutes} minutes" -#: js/js.js:645 -msgid "April" -msgstr "avril" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Il y a une heure" -#: js/js.js:645 -msgid "May" -msgstr "mai" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "Il y a {hours} heures" -#: js/js.js:645 -msgid "June" -msgstr "juin" +#: js/js.js:709 +msgid "today" +msgstr "aujourd'hui" -#: js/js.js:646 -msgid "July" -msgstr "juillet" +#: js/js.js:710 +msgid "yesterday" +msgstr "hier" -#: js/js.js:646 -msgid "August" -msgstr "août" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "il y a {days} jours" -#: js/js.js:646 -msgid "September" -msgstr "septembre" +#: js/js.js:712 +msgid "last month" +msgstr "le mois dernier" -#: js/js.js:646 -msgid "October" -msgstr "octobre" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "Il y a {months} mois" -#: js/js.js:646 -msgid "November" -msgstr "novembre" +#: js/js.js:714 +msgid "months ago" +msgstr "il y a plusieurs mois" -#: js/js.js:646 -msgid "December" -msgstr "décembre" +#: js/js.js:715 +msgid "last year" +msgstr "l'année dernière" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "il y a plusieurs années" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Choisir" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Annuler" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Non" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Oui" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Aucune catégorie sélectionnée pour suppression" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Le type d'objet n'est pas spécifié." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Erreur" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Le nom de l'application n'est pas spécifié." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Le fichier requis {file} n'est pas installé !" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Erreur lors de la mise en partage" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Erreur lors de l'annulation du partage" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Erreur lors du changement des permissions" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Partagé avec vous ainsi qu'avec le groupe" - -#: js/share.js:130 -msgid "by" -msgstr "par" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Partagé par {owner} avec vous et le groupe {group}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Partagé avec vous par" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Partagé avec vous par {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Partager avec" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Partager via lien" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Protéger par un mot de passe" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Mot de passe" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Spécifier la date d'expiration" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Date d'expiration" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Partager via e-mail :" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Aucun utilisateur trouvé" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Le repartage n'est pas autorisé" -#: js/share.js:250 -msgid "Shared in" -msgstr "Partagé dans" - -#: js/share.js:250 -msgid "with" -msgstr "avec" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Partagé dans {item} avec {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Ne plus partager" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "édition autorisée" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "contrôle des accès" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "créer" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "mettre à jour" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "supprimer" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "partager" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "Protégé par un mot de passe" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "Un erreur est survenue pendant la suppression de la date d'expiration" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "Erreur lors de la spécification de la date d'expiration" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Réinitialisation de votre mot de passe Owncloud" @@ -238,15 +272,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Vous allez recevoir un e-mail contenant un lien pour réinitialiser votre mot de passe." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Demande envoyée" +msgid "Reset email send." +msgstr "Mail de réinitialisation envoyé." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Nom d'utilisateur ou e-mail invalide" +msgid "Request failed!" +msgstr "La requête a échoué !" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nom d'utilisateur" @@ -302,72 +336,187 @@ msgstr "Introuvable" msgid "Edit categories" msgstr "Modifier les catégories" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Ajouter" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Avertissement de sécutité" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Aucun générateur de nombre aléatoire sécurisé n'est disponible, veuillez activer l'extension PHP OpenSSL" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Sans générateur de nombre aléatoire sécurisé, un attaquant peut être en mesure de prédire les jetons de réinitialisation du mot de passe, et ainsi prendre le contrôle de votre compte utilisateur." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Votre dossier data et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess fourni par ownCloud ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de manière à ce que le dossier data ne soit plus accessible ou bien de déplacer le dossier data en dehors du dossier racine des documents du serveur web." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Créer un compte administrateur" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avancé" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Répertoire des données" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configurer la base de données" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "sera utilisé" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Utilisateur pour la base de données" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Mot de passe de la base de données" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nom de la base de données" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Tablespaces de la base de données" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Serveur de la base de données" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Terminer l'installation" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Dimanche" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Lundi" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Mardi" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Mercredi" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Jeudi" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Vendredi" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Samedi" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "janvier" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "février" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "mars" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "avril" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "mai" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "juin" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "juillet" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "août" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "septembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "octobre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "novembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "décembre" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "services web sous votre contrôle" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Se déconnecter" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Connexion automatique rejetée !" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Si vous n'avez pas changé votre mot de passe récemment, votre compte risque d'être compromis !" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Veuillez changer votre mot de passe pour sécuriser à nouveau votre compte." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Mot de passe perdu ?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "se souvenir de moi" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Connexion" @@ -382,3 +531,17 @@ msgstr "précédent" #: templates/part.pagenavi.php:20 msgid "next" msgstr "suivant" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Alerte de sécurité !" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Veuillez vérifier votre mot de passe.
            Par sécurité il vous sera occasionnellement demandé d'entrer votre mot de passe de nouveau." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Vérification" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index b4ed9df3a69b7ebcbd4e767debbf58c83b341d18..b0fb5e1a70e5f65b788ecee4d7d16e8c5794dede 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -11,15 +11,16 @@ # Guillaume Paumier , 2012. # , 2012. # Nahir Mohamed , 2012. +# Robert Di Rosa <>, 2012. # , 2011. # Romain DEP. , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 12:42+0000\n" -"Last-Translator: Christophe Lherieau \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 10:24+0000\n" +"Last-Translator: Robert Di Rosa <>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,195 +33,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Aucune erreur, le fichier a été téléversé avec succès" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Le fichier téléversé excède la valeur de upload_max_filesize spécifiée dans php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Le fichier envoyé dépasse la valeur upload_max_filesize située dans le fichier php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Le fichier téléversé excède la valeur de MAX_FILE_SIZE spécifiée dans le formulaire HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Le fichier n'a été que partiellement téléversé" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Aucun fichier n'a été téléversé" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Il manque un répertoire temporaire" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Erreur d'écriture sur le disque" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Fichiers" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Ne plus partager" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Supprimer" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Renommer" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "existe déjà" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} existe déjà" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "remplacer" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "Suggérer un nom" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "annuler" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "remplacé" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} a été replacé" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "annuler" -#: js/filelist.js:241 -msgid "with" -msgstr "avec" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{new_name} a été remplacé par {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "Fichiers non partagés : {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "non partagée" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "Fichiers supprimés : {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "supprimé" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nom invalide, les caractères '\\', '/', '<', '>', ':', '\"', '|', '?' et '*' ne sont pas autorisés." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Fichier ZIP en cours d'assemblage ; cela peut prendre du temps." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Erreur de chargement" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Fermer" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "En cours" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 fichier en cours de téléchargement" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "fichiers en cours de téléchargement" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} fichiers téléversés" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Chargement annulé." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nom invalide, '/' n'est pas autorisé." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nom de répertoire invalide. \"Shared\" est réservé par ownCloud" -#: js/files.js:668 -msgid "files scanned" -msgstr "fichiers indexés" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} fichiers indexés" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "erreur lors de l'indexation" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nom" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Taille" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modifié" -#: js/files.js:778 -msgid "folder" -msgstr "dossier" - -#: js/files.js:780 -msgid "folders" -msgstr "dossiers" - -#: js/files.js:788 -msgid "file" -msgstr "fichier" - -#: js/files.js:790 -msgid "files" -msgstr "fichiers" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "secondes passées" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minute passée" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "minutes passées" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 dossier" -#: js/files.js:839 -msgid "today" -msgstr "aujourd'hui" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} dossiers" -#: js/files.js:840 -msgid "yesterday" -msgstr "hier" +#: js/files.js:824 +msgid "1 file" +msgstr "1 fichier" -#: js/files.js:841 -msgid "days ago" -msgstr "jours passés" - -#: js/files.js:842 -msgid "last month" -msgstr "mois dernier" - -#: js/files.js:844 -msgid "months ago" -msgstr "mois passés" - -#: js/files.js:845 -msgid "last year" -msgstr "année dernière" - -#: js/files.js:846 -msgid "years ago" -msgstr "années passées" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} fichiers" #: templates/admin.php:5 msgid "File handling" @@ -230,27 +202,27 @@ msgstr "Gestion des fichiers" msgid "Maximum upload size" msgstr "Taille max. d'envoi" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "Max. possible :" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Nécessaire pour le téléchargement de plusieurs fichiers et de dossiers." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Activer le téléchargement ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 est illimité" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Taille maximale pour les fichiers ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Sauvegarder" @@ -258,52 +230,48 @@ msgstr "Sauvegarder" msgid "New" msgstr "Nouveau" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Fichier texte" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Dossier" -#: templates/index.php:11 -msgid "From url" -msgstr "Depuis URL" +#: templates/index.php:14 +msgid "From link" +msgstr "Depuis le lien" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Envoyer" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Annuler l'envoi" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Il n'y a rien ici ! Envoyez donc quelque chose :)" -#: templates/index.php:50 -msgid "Share" -msgstr "Partager" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Téléchargement" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Fichier trop volumineux" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Les fichiers que vous essayez d'envoyer dépassent la taille maximale permise par ce serveur." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Les fichiers sont en cours d'analyse, veuillez patienter." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Analyse en cours" diff --git a/l10n/fr/files_pdfviewer.po b/l10n/fr/files_pdfviewer.po deleted file mode 100644 index ce9bb24515ad87595d8df7f33d3c642885455306..0000000000000000000000000000000000000000 --- a/l10n/fr/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/fr/files_texteditor.po b/l10n/fr/files_texteditor.po deleted file mode 100644 index 3b4cb02d2c13e112d83da357e538e522bd997dce..0000000000000000000000000000000000000000 --- a/l10n/fr/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/fr/gallery.po b/l10n/fr/gallery.po deleted file mode 100644 index ea45c42e53b45c76213ff7075755c483ff5a0558..0000000000000000000000000000000000000000 --- a/l10n/fr/gallery.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Nahir Mohamed , 2012. -# , 2012. -# Romain DEP. , 2012. -# Soul Kim , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-27 02:02+0200\n" -"PO-Revision-Date: 2012-07-26 09:05+0000\n" -"Last-Translator: Romain DEP. \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Images" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Partager la galerie" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Erreur :" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Erreur interne" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Diaporama" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Retour" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Enlever la confirmation" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Voulez-vous supprimer l'album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Modifier le nom de l'album" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nouveau nom de l'album" diff --git a/l10n/fr/impress.po b/l10n/fr/impress.po deleted file mode 100644 index 3323106c6ef9b63a25c47d4a088e5fc9ceb87fae..0000000000000000000000000000000000000000 --- a/l10n/fr/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/fr/lib.po b/l10n/fr/lib.po index 7eaa311dfdaf6ad2f4b12af398ee6c6d9a7a1977..7617ac30e7ddf2ff45d6f7ecabd6e2e06465011e 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/lib.po @@ -9,53 +9,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-02 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 16:36+0000\n" +"POT-Creation-Date: 2012-11-26 00:01+0100\n" +"PO-Revision-Date: 2012-11-25 00:56+0000\n" "Last-Translator: Romain DEP. \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Aide" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Personnel" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Paramètres" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Utilisateurs" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Applications" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Administration" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "Téléchargement ZIP désactivé." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Les fichiers nécessitent d'être téléchargés un par un." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Retour aux Fichiers" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Les fichiers sélectionnés sont trop volumineux pour être compressés." @@ -63,7 +63,7 @@ msgstr "Les fichiers sélectionnés sont trop volumineux pour être compressés. msgid "Application is not enabled" msgstr "L'application n'est pas activée" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Erreur d'authentification" @@ -71,57 +71,84 @@ msgstr "Erreur d'authentification" msgid "Token expired. Please reload page." msgstr "La session a expiré. Veuillez recharger la page." -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Fichiers" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Texte" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Images" + +#: template.php:103 msgid "seconds ago" msgstr "à l'instant" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "il y a 1 minute" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "il y a %d minutes" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "Il y a une heure" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "Il y a %d heures" + +#: template.php:108 msgid "today" msgstr "aujourd'hui" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "hier" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "il y a %d jours" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "le mois dernier" -#: template.php:95 -msgid "months ago" -msgstr "il y a plusieurs mois" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "Il y a %d mois" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "l'année dernière" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "il y a plusieurs années" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s est disponible. Obtenez plus d'informations" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "À jour" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "la vérification des mises à jour est désactivée" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Impossible de trouver la catégorie \"%s\"" diff --git a/l10n/fr/media.po b/l10n/fr/media.po deleted file mode 100644 index 9f757f487cffc2aef79b91485ae3a3fbba3b12f8..0000000000000000000000000000000000000000 --- a/l10n/fr/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Nahir Mohamed , 2012. -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 11:57+0000\n" -"Last-Translator: MathieuP \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "Musique" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "Ajouter l'album à la playlist" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Lire" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pause" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Précédent" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Suivant" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Muet" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Audible" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Réanalyser la Collection" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artiste" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titre" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index ef847eb487893de367c87827f53cc2b0a18b2b77..c3e8712f322a1d477b9343a1a8eaad18e5c4d56a 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/settings.po @@ -13,15 +13,16 @@ # , 2012. # Nahir Mohamed , 2012. # , 2012. +# Robert Di Rosa <>, 2012. # , 2011, 2012. # Romain DEP. , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 10:26+0000\n" +"Last-Translator: Robert Di Rosa <>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,70 +30,73 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Impossible de charger la liste depuis l'App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Erreur d'authentification" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Ce groupe existe déjà" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Impossible d'ajouter le groupe" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Impossible d'activer l'Application" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-mail sauvegardé" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "E-mail invalide" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "Identifiant OpenID changé" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Requête invalide" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Impossible de supprimer le groupe" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Erreur d'authentification" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Impossible de supprimer l'utilisateur" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Langue changée" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Les administrateurs ne peuvent pas se retirer eux-mêmes du groupe admin" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Impossible d'ajouter l'utilisateur au groupe %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Impossible de supprimer l'utilisateur du groupe %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Désactiver" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Activer" @@ -100,104 +104,17 @@ msgstr "Activer" msgid "Saving..." msgstr "Sauvegarde..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Français" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Alertes de sécurité" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Votre répertoire de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess fourni avec ownCloud ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce répertoire ne soit plus accessible, ou bien de déplacer le répertoire de données à l'extérieur de la racine du serveur web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Exécute une tâche à chaque chargement de page" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php est enregistré en tant que service webcron. Veuillez appeler la page cron.php située à la racine du serveur ownCoud via http toute les minutes." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Utilise le service cron du système. Appelle le fichier cron.php du répertoire owncloud toutes les minutes grâce à une tâche cron du système." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Partage" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Activer l'API de partage" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Autoriser les applications à utiliser l'API de partage" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Autoriser les liens" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Autoriser les utilisateurs à partager du contenu public avec des liens" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Autoriser le re-partage" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Autoriser les utilisateurs à partager des éléments déjà partagés entre eux" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Autoriser les utilisateurs à partager avec tout le monde" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Autoriser les utilisateurs à ne partager qu'avec les utilisateurs dans leurs groupes" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Journaux" - -#: templates/admin.php:116 -msgid "More" -msgstr "Plus" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Développé par la communauté ownCloud, le code source est publié sous license AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Ajoutez votre application" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Plus d'applications…" #: templates/apps.php:27 msgid "Select an App" @@ -223,21 +140,21 @@ msgstr "Gérer les gros fichiers" msgid "Ask a question" msgstr "Poser une question" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problème de connexion à la base de données d'aide." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "S'y rendre manuellement." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Réponse" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "Vous avez utilisé %s des %s disponibles" #: templates/personal.php:12 @@ -296,6 +213,16 @@ msgstr "Aidez à traduire" msgid "use this address to connect to your ownCloud in your file manager" msgstr "utilisez cette adresse pour vous connecter à votre ownCloud depuis un explorateur de fichiers" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Développé par la communauté ownCloud, le code source est publié sous license AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nom" diff --git a/l10n/fr/tasks.po b/l10n/fr/tasks.po deleted file mode 100644 index 8bb451354c8e6e8a5c9759865d7e081bcbee888c..0000000000000000000000000000000000000000 --- a/l10n/fr/tasks.po +++ /dev/null @@ -1,109 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Romain DEP. , 2012. -# Xavier BOUTEVILLAIN , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 12:01+0000\n" -"Last-Translator: MathieuP \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "date/heure invalide" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Tâches" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Sans catégorie" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Non spécifié" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=le plus important" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=importance moyenne" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=le moins important" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Résumé vide" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Pourcentage d'achèvement invalide" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Priorité invalide" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Ajouter une tâche" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Echéance tâche" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Liste tâche" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Tâche réalisée" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Lieu" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Priorité" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Etiquette tâche" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Chargement des tâches…" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Important" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Plus" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Moins" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Supprimer" diff --git a/l10n/fr/user_migrate.po b/l10n/fr/user_migrate.po deleted file mode 100644 index 2b2802bbc837508dda933a7fed4e21280e264c9a..0000000000000000000000000000000000000000 --- a/l10n/fr/user_migrate.po +++ /dev/null @@ -1,53 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Romain DEP. , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 12:00+0000\n" -"Last-Translator: MathieuP \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Exporter" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Une erreur s'est produite pendant la génération du fichier d'export" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Une erreur s'est produite" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Exportez votre compte utilisateur" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Cette action va créer une archive compressée qui contiendra les données de votre compte ownCloud." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Importer un compte utilisateur" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "Archive Zip de l'utilisateur" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importer" diff --git a/l10n/fr/user_openid.po b/l10n/fr/user_openid.po deleted file mode 100644 index df7952aa7ccea706eabc4198adf99b6c075ad129..0000000000000000000000000000000000000000 --- a/l10n/fr/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Romain DEP. , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 16:05+0000\n" -"Last-Translator: Romain DEP. \n" -"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Ce serveur est un point d'accès OpenID. Pour plus d'informations, veuillez consulter" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identité : " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Domaine : " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Utilisateur : " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Connexion" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Erreur : Aucun nom d'utilisateur n'a été saisi" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "vous pouvez vous authentifier sur d'autres sites grâce à cette adresse" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Fournisseur d'identité OpenID autorisé" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Votre adresse Wordpress, Identi.ca, …" diff --git a/l10n/fr/files_odfviewer.po b/l10n/fr/user_webdavauth.po similarity index 58% rename from l10n/fr/files_odfviewer.po rename to l10n/fr/user_webdavauth.po index 43bbf42f0f8e5bdf99375222e23d003a6c493ab2..ef3cebf77049a6de2e6e7c8f5444ee5199c25dd4 100644 --- a/l10n/fr/files_odfviewer.po +++ b/l10n/fr/user_webdavauth.po @@ -3,20 +3,22 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Robert Di Rosa <>, 2012. +# Romain DEP. , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-26 00:01+0100\n" +"PO-Revision-Date: 2012-11-25 00:28+0000\n" +"Last-Translator: Romain DEP. \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "URL WebDAV : http://" diff --git a/l10n/gl/admin_dependencies_chk.po b/l10n/gl/admin_dependencies_chk.po deleted file mode 100644 index 09e5576eba141bae578e4333f335b96723464937..0000000000000000000000000000000000000000 --- a/l10n/gl/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/gl/admin_migrate.po b/l10n/gl/admin_migrate.po deleted file mode 100644 index 7684dc62ca7abbe05717a7c694df4488522c6690..0000000000000000000000000000000000000000 --- a/l10n/gl/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Xosé M. Lamas , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 06:27+0000\n" -"Last-Translator: Xosé M. Lamas \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Exporta esta instancia de ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Esto creará un ficheiro comprimido que contén os datos de esta instancia de ownCloud.\nPor favor escolla o modo de exportación:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Exportar" diff --git a/l10n/gl/bookmarks.po b/l10n/gl/bookmarks.po deleted file mode 100644 index 9086620a94e9f611b2c7227b7bd9449603d21fb5..0000000000000000000000000000000000000000 --- a/l10n/gl/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/gl/calendar.po b/l10n/gl/calendar.po deleted file mode 100644 index d9a060f2dc23fa401093198a0749b3bab3550eca..0000000000000000000000000000000000000000 --- a/l10n/gl/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# antiparvos , 2012. -# Xosé M. Lamas , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Non se atoparon calendarios." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Non se atoparon eventos." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Calendario equivocado" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Novo fuso horario:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Fuso horario trocado" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Petición non válida" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendario" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "d MMM[ yyyy]{ '—'d [ MMM] yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d,yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Aniversario" - -#: lib/app.php:122 -msgid "Business" -msgstr "Traballo" - -#: lib/app.php:123 -msgid "Call" -msgstr "Chamada" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clientes" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Remitente" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Vacacións" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideas" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Viaxe" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Aniversario especial" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Reunión" - -#: lib/app.php:131 -msgid "Other" -msgstr "Outro" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Persoal" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Proxectos" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Preguntas" - -#: lib/app.php:135 -msgid "Work" -msgstr "Traballo" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "sen nome" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Novo calendario" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Non se repite" - -#: lib/object.php:373 -msgid "Daily" -msgstr "A diario" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Semanalmente" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Todas as semanas" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Cada dúas semanas" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensual" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Anual" - -#: lib/object.php:388 -msgid "never" -msgstr "nunca" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "por acontecementos" - -#: lib/object.php:390 -msgid "by date" -msgstr "por data" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "por día do mes" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "por día da semana" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Luns" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Martes" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Mércores" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Xoves" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Venres" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sábado" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Domingo" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "semana dos eventos no mes" - -#: lib/object.php:428 -msgid "first" -msgstr "primeiro" - -#: lib/object.php:429 -msgid "second" -msgstr "segundo" - -#: lib/object.php:430 -msgid "third" -msgstr "terceiro" - -#: lib/object.php:431 -msgid "fourth" -msgstr "cuarto" - -#: lib/object.php:432 -msgid "fifth" -msgstr "quinto" - -#: lib/object.php:433 -msgid "last" -msgstr "último" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Xaneiro" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Febreiro" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Marzo" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Abril" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maio" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Xuño" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Xullo" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Agosto" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Setembro" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Outubro" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembro" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Decembro" - -#: lib/object.php:488 -msgid "by events date" -msgstr "por data dos eventos" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "por dia(s) do ano" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "por número(s) de semana" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "por día e mes" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Todo o dia" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Faltan campos" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Título" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Desde a data" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Desde a hora" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "á data" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "á hora" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "O evento remata antes de iniciarse" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Produciuse un erro na base de datos" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Semana" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mes" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hoxe" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Os seus calendarios" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Ligazón CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendarios compartidos" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Sen calendarios compartidos" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Compartir calendario" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Descargar" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Editar" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Borrar" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "compartido con vostede por" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Novo calendario" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Editar calendario" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Mostrar nome" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Activo" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Cor do calendario" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Gardar" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Enviar" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Editar un evento" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportar" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Info do evento" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Repetido" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarma" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Participantes" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Compartir" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Título do evento" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categoría" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separe as categorías con comas" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Editar categorías" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Eventos do día" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Desde" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "a" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Opcións avanzadas" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Localización" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Localización do evento" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Descrición" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Descrición do evento" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Repetir" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avanzado" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Seleccionar días da semana" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Seleccionar días" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "e día dos eventos no ano." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "e día dos eventos no mes." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Seleccione meses" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Seleccionar semanas" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "e semana dos eventos no ano." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalo" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Fin" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "acontecementos" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "crear un novo calendario" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importar un ficheiro de calendario" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nome do novo calendario" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importar" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Pechar diálogo" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Crear un novo evento" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Ver un evento" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Non seleccionou as categorías" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "a" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Fuso horario" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Usuarios" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "escoller usuarios" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Editable" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupos" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "escoller grupos" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "facer público" diff --git a/l10n/gl/contacts.po b/l10n/gl/contacts.po deleted file mode 100644 index 5ee98a039df05992d68f3560700410b10db0e19a..0000000000000000000000000000000000000000 --- a/l10n/gl/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# antiparvos , 2012. -# Xosé M. Lamas , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Produciuse un erro (des)activando a axenda." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "non se estableceu o id." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Non se pode actualizar a libreta de enderezos sen completar o nome." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Produciuse un erro actualizando a axenda." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Non se proveeu ID" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Erro establecendo a suma de verificación" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Non se seleccionaron categorías para borrado." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Non se atoparon libretas de enderezos." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Non se atoparon contactos." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Produciuse un erro engadindo o contacto." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "non se nomeou o elemento." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Non se pode engadir unha propiedade baleira." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Polo menos un dos campos do enderezo ten que ser cuberto." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Tentando engadir propiedade duplicada: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "A información sobre a vCard é incorrecta. Por favor volva cargar a páxina." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID perdido" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Erro procesando a VCard para o ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "non se estableceu a suma de verificación." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "A información sobre a vCard é incorrecta. Por favor, recargue a páxina: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Non se enviou ningún ID de contacto." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Erro lendo a fotografía do contacto." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Erro gardando o ficheiro temporal." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "A fotografía cargada non é válida." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Falta o ID do contacto." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Non se enviou a ruta a unha foto." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "O ficheiro non existe:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Erro cargando imaxe." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Erro obtendo o obxeto contacto." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Erro obtendo a propiedade PHOTO." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Erro gardando o contacto." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Erro cambiando o tamaño da imaxe" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Erro recortando a imaxe" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Erro creando a imaxe temporal" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Erro buscando a imaxe: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Erro subindo os contactos ao almacén." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Non houbo erros, o ficheiro subeuse con éxito" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "O ficheiro subido supera a directiva upload_max_filesize no php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "O ficheiro subido supera a directiva MAX_FILE_SIZE especificada no formulario HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "O ficheiro so foi parcialmente subido" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Non se subeu ningún ficheiro" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Falta o cartafol temporal" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Non se puido gardar a imaxe temporal: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Non se puido cargar a imaxe temporal: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Non se subeu ningún ficheiro. Erro descoñecido." - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Contactos" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Sentímolo, esta función aínda non foi implementada." - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Non implementada." - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Non se puido obter un enderezo de correo válido." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Erro" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Esta propiedade non pode quedar baldeira." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Non se puido serializar os elementos." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' chamado sen argumento. Por favor, informe en bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Editar nome" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Sen ficheiros escollidos para subir." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "O ficheiro que tenta subir supera o tamaño máximo permitido neste servidor." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Seleccione tipo" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultado: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importado, " - -#: js/loader.js:49 -msgid " failed." -msgstr " fallou." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Esta non é a súa axenda." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Non se atopou o contacto." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Traballo" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Casa" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Móbil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Texto" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voz" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mensaxe" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Vídeo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Paxinador" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Aniversario" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Cumpleanos de {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contacto" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Engadir contacto" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importar" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Axendas" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Pechar" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Solte a foto a subir" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Borrar foto actual" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Editar a foto actual" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Subir unha nova foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Escoller foto desde ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formato personalizado, Nome corto, Nome completo, Inverso ou Inverso con coma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Editar detalles do nome" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organización" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Eliminar" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Apodo" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Introuza apodo" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupos" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separe grupos con comas" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editar grupos" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferido" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Por favor indique un enderezo de correo electrónico válido." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Introduza enderezo de correo electrónico" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Correo ao enderezo" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Borrar enderezo de correo electrónico" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Introducir número de teléfono" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Borrar número de teléfono" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Ver no mapa" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Editar detalles do enderezo" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Engadir aquí as notas." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Engadir campo" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Teléfono" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Correo electrónico" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Enderezo" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Descargar contacto" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Borrar contacto" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "A imaxe temporal foi eliminada da caché." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Editar enderezo" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Escribir" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Apartado de correos" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Ampliado" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Cidade" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Autonomía" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Código postal" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "País" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Axenda" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Prefixos honoríficos" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Srta" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Sra/Srta" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Sr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Sra" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Apodo" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Nomes adicionais" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Nome familiar" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Sufixos honorarios" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importar un ficheiro de contactos" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Por favor escolla unha libreta de enderezos" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "crear unha nova libreta de enderezos" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nome da nova libreta de enderezos" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importando contactos" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Non ten contactos na súa libreta de enderezos." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Engadir contacto" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Enderezos CardDAV a sincronizar" - -#: templates/settings.php:3 -msgid "more info" -msgstr "máis información" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Enderezo primario (Kontact et al)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Descargar" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editar" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nova axenda" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Gardar" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index e1324b3c423a43241effc1bf581702622e673e42..fa4fed8860859c3171600aaff95d6a5f74835d46 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/core.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 22:35+0000\n" +"Last-Translator: Miguel Branco \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,233 +19,266 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Non se indicou o nome do aplicativo." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Non se indicou o tipo de categoría" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Sen categoría que engadir?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Esta categoría xa existe: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Non se forneceu o tipo de obxecto." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "Non se deu o ID %s." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Erro ao engadir %s aos favoritos." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Non hai categorías seleccionadas para eliminar." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Erro ao eliminar %s dos favoritos." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" -msgstr "Preferencias" +msgstr "Configuracións" -#: js/js.js:645 -msgid "January" -msgstr "Xaneiro" +#: js/js.js:704 +msgid "seconds ago" +msgstr "segundos atrás" -#: js/js.js:645 -msgid "February" -msgstr "Febreiro" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "hai 1 minuto" -#: js/js.js:645 -msgid "March" -msgstr "Marzo" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} minutos atrás" -#: js/js.js:645 -msgid "April" -msgstr "Abril" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "hai 1 hora" -#: js/js.js:645 -msgid "May" -msgstr "Maio" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} horas atrás" -#: js/js.js:645 -msgid "June" -msgstr "Xuño" +#: js/js.js:709 +msgid "today" +msgstr "hoxe" -#: js/js.js:646 -msgid "July" -msgstr "Xullo" +#: js/js.js:710 +msgid "yesterday" +msgstr "onte" -#: js/js.js:646 -msgid "August" -msgstr "Agosto" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} días atrás" -#: js/js.js:646 -msgid "September" -msgstr "Setembro" +#: js/js.js:712 +msgid "last month" +msgstr "último mes" -#: js/js.js:646 -msgid "October" -msgstr "Outubro" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} meses atrás" -#: js/js.js:646 -msgid "November" -msgstr "Novembro" +#: js/js.js:714 +msgid "months ago" +msgstr "meses atrás" -#: js/js.js:646 -msgid "December" -msgstr "Nadal" +#: js/js.js:715 +msgid "last year" +msgstr "último ano" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "anos atrás" + +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Escoller" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Cancelar" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Non" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Si" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" -msgstr "Ok" +msgstr "Aceptar" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Non hai categorías seleccionadas para eliminar." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Non se especificou o tipo de obxecto." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Erro" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Non se especificou o nome do aplicativo." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Non está instalado o ficheiro {file} que se precisa" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "Erro compartindo" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "Erro ao deixar de compartir" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" - -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +msgstr "Erro ao cambiar os permisos" -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Compartido contigo e co grupo {group} de {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Compartido contigo por {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Compartir con" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Compartir ca ligazón" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Protexido con contrasinais" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Contrasinal" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Definir a data de caducidade" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Data de caducidade" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Compartir por correo electrónico:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Non se atopou xente" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Non se acepta volver a compartir" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Compartido en {item} con {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Deixar de compartir" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "pode editar" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "control de acceso" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "crear" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "actualizar" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "borrar" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "compartir" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" -msgstr "" +msgstr "Protexido con contrasinal" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Erro ao quitar a data de caducidade" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" -msgstr "" +msgstr "Erro ao definir a data de caducidade" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Restablecer contrasinal de ownCloud" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" -msgstr "Use a seguinte ligazón para restablecer o contrasinal: {link}" +msgstr "Usa a seguinte ligazón para restablecer o contrasinal: {link}" #: lostpassword/templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." msgstr "Recibirá unha ligazón por correo electrónico para restablecer o contrasinal" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Solicitado" +msgid "Reset email send." +msgstr "Restablecer o envío por correo." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Fallou a conexión." +msgid "Request failed!" +msgstr "Fallo na petición" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nome de usuario" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Petición de restablecemento" @@ -295,74 +328,189 @@ msgstr "Nube non atopada" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" -msgstr "Editar categorias" +msgstr "Editar categorías" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Engadir" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Aviso de seguridade" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Non hai un xerador de números aleatorios dispoñíbel. Activa o engadido de OpenSSL para PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Sen un xerador de números aleatorios seguro podería acontecer que predicindo as cadeas de texto de reinicio de contrasinais se afagan coa túa conta." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "O teu cartafol de datos e os teus ficheiros son seguramente accesibles a través de internet. O ficheiro .htaccess que ownCloud fornece non está empregándose. Suxírese que configures o teu servidor web de tal maneira que o cartafol de datos non estea accesíbel ou movas o cartafol de datos fóra do root do directorio de datos do servidor web." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Crear unha contra de administrador" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avanzado" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Cartafol de datos" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configurar a base de datos" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "será utilizado" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Usuario da base de datos" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Contrasinal da base de datos" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nome da base de datos" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "Táboa de espazos da base de datos" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Servidor da base de datos" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" -msgstr "Rematar configuración" +msgstr "Rematar a configuración" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Domingo" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Luns" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Martes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Mércores" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Xoves" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Venres" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sábado" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Xaneiro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Febreiro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Marzo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Abril" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Maio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Xuño" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Xullo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Agosto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Setembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Outubro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Novembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Decembro" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "servizos web baixo o seu control" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Desconectar" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Rexeitouse a entrada automática" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Se non fixeches cambios de contrasinal recentemente é posíbel que a túa conta estea comprometida!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Cambia de novo o teu contrasinal para asegurar a túa conta." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Perdeu o contrasinal?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "lembrar" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Conectar" @@ -377,3 +525,17 @@ msgstr "anterior" #: templates/part.pagenavi.php:20 msgid "next" msgstr "seguinte" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Advertencia de seguranza" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Verifica o teu contrasinal.
            Por motivos de seguridade pode que ocasionalmente se che pregunte de novo polo teu contrasinal." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verificar" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index d55fcad4c60ff5f313929d128817be2ce4f05f79..d44302b22d10ae60adaf613c0ca382880a90a77e 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 21:51+0000\n" +"Last-Translator: Miguel Branco \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,198 +21,169 @@ msgstr "" #: ajax/upload.php:20 msgid "There is no error, the file uploaded with success" -msgstr "Non hai erros, o ficheiro enviouse correctamente" +msgstr "Non hai erros. O ficheiro enviouse correctamente" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "O ficheiro enviado supera a directiva upload_max_filesize no php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "O ficheiro enviado supera a directiva MAX_FILE_SIZE que foi indicada no formulario HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "O ficheiro enviado foi só parcialmente enviado" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Non se enviou ningún ficheiro" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Falta un cartafol temporal" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Erro ao escribir no disco" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Ficheiros" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Deixar de compartir" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Eliminar" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Mudar o nome" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "xa existe" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "xa existe un {new_name}" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "substituír" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "suxira nome" +msgstr "suxerir nome" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "substituído" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "substituír {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "desfacer" -#: js/filelist.js:241 -msgid "with" -msgstr "con" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "substituír {new_name} polo {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "non compartido" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "{files} sen compartir" -#: js/filelist.js:275 -msgid "deleted" -msgstr "eliminado" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} eliminados" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." -msgstr "xerando ficheiro ZIP, pode levar un anaco." +msgstr "xerando un ficheiro ZIP, o que pode levar un anaco." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Non se puido subir o ficheiro pois ou é un directorio ou ten 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Erro na subida" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Pechar" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Pendentes" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 ficheiro subíndose" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} ficheiros subíndose" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Subida cancelada." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nome non válido, '/' non está permitido." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nome de cartafol non válido. O uso de \"compartido\" está reservado exclusivamente para ownCloud" -#: js/files.js:667 -msgid "files scanned" -msgstr "ficheiros analizados" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} ficheiros escaneados" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "erro mentras analizaba" +msgstr "erro mentres analizaba" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nome" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Tamaño" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificado" -#: js/files.js:777 -msgid "folder" -msgstr "cartafol" - -#: js/files.js:779 -msgid "folders" -msgstr "cartafoles" - -#: js/files.js:787 -msgid "file" -msgstr "ficheiro" - -#: js/files.js:789 -msgid "files" -msgstr "ficheiros" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 cartafol" -#: js/files.js:840 -msgid "days ago" -msgstr "" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} cartafoles" -#: js/files.js:841 -msgid "last month" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 ficheiro" -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} ficheiros" #: templates/admin.php:5 msgid "File handling" @@ -222,27 +193,27 @@ msgstr "Manexo de ficheiro" msgid "Maximum upload size" msgstr "Tamaño máximo de envío" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "máx. posible: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." -msgstr "Preciso para descarga de varios ficheiros e cartafoles." +msgstr "Precísase para a descarga de varios ficheiros e cartafoles." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Habilitar a descarga-ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 significa ilimitado" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Tamaño máximo de descarga para os ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Gardar" @@ -250,52 +221,48 @@ msgstr "Gardar" msgid "New" msgstr "Novo" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Ficheiro de texto" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Cartafol" -#: templates/index.php:11 -msgid "From url" -msgstr "Desde url" +#: templates/index.php:14 +msgid "From link" +msgstr "Dende a ligazón" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Enviar" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" -msgstr "Cancelar subida" +msgstr "Cancelar a subida" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" -msgstr "Nada por aquí. Envíe algo." - -#: templates/index.php:50 -msgid "Share" -msgstr "Compartir" +msgstr "Nada por aquí. Envía algo." -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Descargar" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Envío demasiado grande" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Os ficheiros que trata de subir superan o tamaño máximo permitido neste servidor" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." -msgstr "Estanse analizando os ficheiros, espere por favor." +msgstr "Estanse analizando os ficheiros. Agarda." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" -msgstr "Análise actual." +msgstr "Análise actual" diff --git a/l10n/gl/files_encryption.po b/l10n/gl/files_encryption.po index 42f3744efd33f39b3b95bce2e09f8f734b0dad44..367cd2cd0637af76eeebdabbbb91e7129f070226 100644 --- a/l10n/gl/files_encryption.po +++ b/l10n/gl/files_encryption.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-19 02:02+0200\n" -"PO-Revision-Date: 2012-09-18 10:02+0000\n" -"Last-Translator: Xosé M. Lamas \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 22:19+0000\n" +"Last-Translator: Miguel Branco \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,11 +20,11 @@ msgstr "" #: templates/settings.php:3 msgid "Encryption" -msgstr "Encriptado" +msgstr "Cifrado" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "Excluír os seguintes tipos de ficheiro da encriptación" +msgstr "Excluír os seguintes tipos de ficheiro do cifrado" #: templates/settings.php:5 msgid "None" @@ -32,4 +32,4 @@ msgstr "Nada" #: templates/settings.php:10 msgid "Enable Encryption" -msgstr "Habilitar encriptación" +msgstr "Activar o cifrado" diff --git a/l10n/gl/files_external.po b/l10n/gl/files_external.po index 27bf750eeb0b5351aac16e526f170294410f6a05..2f60b9cf9e831279fa387d61c80457e2ffe18758 100644 --- a/l10n/gl/files_external.po +++ b/l10n/gl/files_external.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Xosé M. Lamas , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-30 00:03+0100\n" +"PO-Revision-Date: 2012-11-29 16:06+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +21,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "Concedeuse acceso" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Produciuse un erro ao configurar o almacenamento en Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Permitir o acceso" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Cubrir todos os campos obrigatorios" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "Dá o segredo e a chave correcta do aplicativo de Dropbox." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Produciuse un erro ao configurar o almacenamento en Google Drive" #: templates/settings.php:3 msgid "External Storage" @@ -52,7 +53,7 @@ msgstr "Punto de montaxe" #: templates/settings.php:8 msgid "Backend" -msgstr "Almacén" +msgstr "Infraestrutura" #: templates/settings.php:9 msgid "Configuration" @@ -64,19 +65,19 @@ msgstr "Opcións" #: templates/settings.php:11 msgid "Applicable" -msgstr "Aplicable" +msgstr "Aplicábel" #: templates/settings.php:23 msgid "Add mount point" -msgstr "Engadir punto de montaxe" +msgstr "Engadir un punto de montaxe" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" -msgstr "Non establecido" +msgstr "Ningún definido" #: templates/settings.php:63 msgid "All Users" -msgstr "Tódolos usuarios" +msgstr "Todos os usuarios" #: templates/settings.php:64 msgid "Groups" @@ -92,7 +93,7 @@ msgstr "Eliminar" #: templates/settings.php:87 msgid "Enable User External Storage" -msgstr "Habilitar almacenamento externo do usuario" +msgstr "Activar o almacenamento externo do usuario" #: templates/settings.php:88 msgid "Allow users to mount their own external storage" @@ -100,8 +101,8 @@ msgstr "Permitir aos usuarios montar os seus propios almacenamentos externos" #: templates/settings.php:99 msgid "SSL root certificates" -msgstr "Certificados raíz SSL" +msgstr "Certificados SSL root" #: templates/settings.php:113 msgid "Import Root Certificate" -msgstr "Importar Certificado Raíz" +msgstr "Importar o certificado root" diff --git a/l10n/gl/files_pdfviewer.po b/l10n/gl/files_pdfviewer.po deleted file mode 100644 index c9dc9eb36b86dc1824a0008be3e7136c31c854de..0000000000000000000000000000000000000000 --- a/l10n/gl/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index 4fdd23736cdba72b99dae6a07de26b0a4d118d09..f6b83fbd6548c6a18eaad847114f7cef4446f6f0 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Xosé M. Lamas , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-30 00:03+0100\n" +"PO-Revision-Date: 2012-11-29 16:08+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,24 +27,24 @@ msgstr "Contrasinal" msgid "Submit" msgstr "Enviar" -#: templates/public.php:9 +#: templates/public.php:17 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s compartiu o cartafol %s con vostede" -#: templates/public.php:11 +#: templates/public.php:19 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s compartiu o ficheiro %s con vostede" -#: templates/public.php:14 templates/public.php:30 +#: templates/public.php:22 templates/public.php:38 msgid "Download" -msgstr "Baixar" +msgstr "Descargar" -#: templates/public.php:29 +#: templates/public.php:37 msgid "No preview available for" -msgstr "Sen vista previa dispoñible para " +msgstr "Sen vista previa dispoñíbel para" -#: templates/public.php:37 +#: templates/public.php:43 msgid "web services under your control" msgstr "servizos web baixo o seu control" diff --git a/l10n/gl/files_texteditor.po b/l10n/gl/files_texteditor.po deleted file mode 100644 index a6074b2906eaf263f6cccdb5f99eeef467cb8221..0000000000000000000000000000000000000000 --- a/l10n/gl/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/gl/files_versions.po b/l10n/gl/files_versions.po index 05d15205747d7ef79d75fe57b13d578e2c270abc..aeb062c08df14b98a799220ad6c9ee19f54a3c69 100644 --- a/l10n/gl/files_versions.po +++ b/l10n/gl/files_versions.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# Miguel Branco , 2012. # Xosé M. Lamas , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-30 00:03+0100\n" +"PO-Revision-Date: 2012-11-29 16:08+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,11 +22,11 @@ msgstr "" #: js/settings-personal.js:31 templates/settings-personal.php:10 msgid "Expire all versions" -msgstr "Caducar todas as versións" +msgstr "Caducan todas as versións" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "Historial" #: templates/settings-personal.php:4 msgid "Versions" @@ -32,12 +34,12 @@ msgstr "Versións" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "Esto eliminará todas as copias de respaldo existentes dos seus ficheiros" +msgstr "Isto eliminará todas as copias de seguranza que haxa dos seus ficheiros" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "Versionado de ficheiros" +msgstr "Sistema de versión de ficheiros" #: templates/settings.php:4 msgid "Enable" -msgstr "Habilitar" +msgstr "Activar" diff --git a/l10n/gl/gallery.po b/l10n/gl/gallery.po deleted file mode 100644 index 2a62856bb0f512266989ff1a826e85b650275654..0000000000000000000000000000000000000000 --- a/l10n/gl/gallery.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# antiparvos , 2012. -# Xosé M. Lamas , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Galician (http://www.transifex.net/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Fotografías" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Configuración" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Analizar de novo" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Parar" - -#: templates/index.php:18 -msgid "Share" -msgstr "Compartir" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Atrás" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Eliminar confirmación" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Quere eliminar o album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Trocar o nome do album" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Novo nome do album" diff --git a/l10n/gl/impress.po b/l10n/gl/impress.po deleted file mode 100644 index fe806d8cc67516c7c2537f11b08a28b1323af89b..0000000000000000000000000000000000000000 --- a/l10n/gl/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/gl/lib.po b/l10n/gl/lib.po index 677bba794df922633517a7121af99b848198593a..ff45072b3db0e31492fa40daaecdd3038e84c9cf 100644 --- a/l10n/gl/lib.po +++ b/l10n/gl/lib.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Miguel Branco , 2012. # Xosé M. Lamas , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-19 02:02+0200\n" -"PO-Revision-Date: 2012-09-18 09:28+0000\n" -"Last-Translator: Xosé M. Lamas \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 22:32+0000\n" +"Last-Translator: Miguel Branco \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,7 +29,7 @@ msgstr "Personal" #: app.php:297 msgid "Settings" -msgstr "Preferencias" +msgstr "Configuracións" #: app.php:302 msgid "Users" @@ -36,91 +37,118 @@ msgstr "Usuarios" #: app.php:309 msgid "Apps" -msgstr "Apps" +msgstr "Aplicativos" #: app.php:311 msgid "Admin" msgstr "Administración" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." -msgstr "Descargas ZIP está deshabilitadas" +msgstr "As descargas ZIP están desactivadas" -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." -msgstr "Os ficheiros necesitan ser descargados de un en un" +msgstr "Os ficheiros necesitan ser descargados de un en un." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" -msgstr "Voltar a ficheiros" +msgstr "Volver aos ficheiros" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." -msgstr "Os ficheiros seleccionados son demasiado grandes para xerar un ficheiro ZIP" +msgstr "Os ficheiros seleccionados son demasiado grandes como para xerar un ficheiro zip." #: json.php:28 msgid "Application is not enabled" -msgstr "O aplicativo non está habilitado" +msgstr "O aplicativo non está activado" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Erro na autenticación" #: json.php:51 msgid "Token expired. Please reload page." -msgstr "Testemuño caducado. Por favor recargue a páxina." +msgstr "Token caducado. Recarga a páxina." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Ficheiros" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Texto" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Imaxes" + +#: template.php:103 msgid "seconds ago" msgstr "hai segundos" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "hai 1 minuto" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "hai %d minutos" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 hora antes" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d horas antes" + +#: template.php:108 msgid "today" msgstr "hoxe" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "onte" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "hai %d días" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "último mes" -#: template.php:96 -msgid "months ago" -msgstr "meses atrás" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d meses antes" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "último ano" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "anos atrás" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "%s está dispoñible. Obteña máis información" +msgstr "%s está dispoñible. Obtén máis información" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "ao día" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" -msgstr "comprobación de actualizacións está deshabilitada" +msgstr "a comprobación de actualizacións está desactivada" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Non se puido atopar a categoría «%s»" diff --git a/l10n/gl/media.po b/l10n/gl/media.po deleted file mode 100644 index 16f55e5225d5275b7c2149e5106b18e08449b447..0000000000000000000000000000000000000000 --- a/l10n/gl/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# antiparvos , 2012. -# Xosé M. Lamas , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Galician (http://www.transifex.net/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Música" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Reproducir" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausar" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Anterior" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Seguinte" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Silenciar" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Restaurar volume" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Analizar a colección de novo" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ãlbun" - -#: templates/music.php:39 -msgid "Title" -msgstr "Título" diff --git a/l10n/gl/settings.po b/l10n/gl/settings.po index 276b7836779ee1791088f0c3b704842016672f47..335d35593ba6145e3448b980ae0d1cea6fe56631 100644 --- a/l10n/gl/settings.po +++ b/l10n/gl/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 21:49+0000\n" +"Last-Translator: Miguel Branco \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,175 +19,91 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Non se puido cargar a lista desde a App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Erro na autenticación" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "O grupo xa existe" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "Non se pode engadir o grupo" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Con se puido activar o aplicativo." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Correo electrónico gardado" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "correo electrónico non válido" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "Mudou o OpenID" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Petición incorrecta" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "Non se pode eliminar o grupo." -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Erro na autenticación" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "Non se pode eliminar o usuario" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "O idioma mudou" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Os administradores non se pode eliminar a si mesmos do grupo admin" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "Non se puido engadir o usuario ao grupo %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "Non se puido eliminar o usuario do grupo %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" -msgstr "Deshabilitar" +msgstr "Desactivar" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" -msgstr "Habilitar" +msgstr "Activar" #: js/personal.js:69 msgid "Saving..." msgstr "Gardando..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Galego" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Aviso de seguridade" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Conectar" - -#: templates/admin.php:116 -msgid "More" -msgstr "Máis" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Engade o teu aplicativo" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Máis aplicativos" #: templates/apps.php:27 msgid "Select an App" @@ -199,7 +115,7 @@ msgstr "Vexa a páxina do aplicativo en apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "-licenciado por" #: templates/help.php:9 msgid "Documentation" @@ -213,22 +129,22 @@ msgstr "Xestionar Grandes Ficheiros" msgid "Ask a question" msgstr "Pregunte" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemas conectando coa base de datos de axuda" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Ir manualmente." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Resposta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "Tes usados %s do total dispoñíbel de %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -240,7 +156,7 @@ msgstr "Descargar" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "O seu contrasinal foi cambiado" #: templates/personal.php:20 msgid "Unable to change your password" @@ -286,6 +202,16 @@ msgstr "Axude na tradución" msgid "use this address to connect to your ownCloud in your file manager" msgstr "utilice este enderezo para conectar ao seu ownCloud no xestor de ficheiros" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Desenvolvido pola comunidade ownCloud, o código fonte está baixo a licenza AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nome" @@ -304,7 +230,7 @@ msgstr "Crear" #: templates/users.php:35 msgid "Default Quota" -msgstr "Cuota por omisión" +msgstr "Cota por omisión" #: templates/users.php:55 templates/users.php:138 msgid "Other" @@ -312,7 +238,7 @@ msgstr "Outro" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "" +msgstr "Grupo Admin" #: templates/users.php:82 msgid "Quota" diff --git a/l10n/gl/tasks.po b/l10n/gl/tasks.po deleted file mode 100644 index 39ebfcde7c505e745056c20184727114837916df..0000000000000000000000000000000000000000 --- a/l10n/gl/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/gl/user_ldap.po b/l10n/gl/user_ldap.po index 84304f7f0a9247c71923886248095f7f3fa263da..ba881709d965768b5d47af3ead745e3466cb942a 100644 --- a/l10n/gl/user_ldap.po +++ b/l10n/gl/user_ldap.po @@ -3,168 +3,169 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Miguel Branco, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 18:13+0000\n" +"Last-Translator: Miguel Branco \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: templates/settings.php:8 msgid "Host" -msgstr "" +msgstr "Servidor" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "Podes omitir o protocolo agás que precises de SSL. Nese caso comeza con ldaps://" #: templates/settings.php:9 msgid "Base DN" -msgstr "" +msgstr "DN base" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" +msgstr "Podes especificar a DN base para usuarios e grupos na lapela de «Avanzado»" #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "DN do usuario" #: templates/settings.php:10 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "O DN do cliente do usuario co que hai que estabelecer unha conexión, p.ex uid=axente, dc=exemplo, dc=com. Para o acceso en anónimo deixa o DN e o contrasinal baleiros." #: templates/settings.php:11 msgid "Password" -msgstr "" +msgstr "Contrasinal" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "Para o acceso anónimo deixa o DN e o contrasinal baleiros." #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "Filtro de acceso de usuarios" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "Define o filtro que se aplica cando se intenta o acceso. %%uid substitúe o nome de usuario e a acción de acceso." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "usar a marca de posición %%uid, p.ex «uid=%%uid»" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "Filtro da lista de usuarios" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "Define o filtro a aplicar cando se recompilan os usuarios." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "" +msgstr "sen ningunha marca de posición, como p.ex \"objectClass=persoa\"." #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "Filtro de grupo" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "Define o filtro a aplicar cando se recompilan os grupos." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "" +msgstr "sen ningunha marca de posición, como p.ex \"objectClass=grupoPosix\"." #: templates/settings.php:17 msgid "Port" -msgstr "" +msgstr "Porto" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "Base da árbore de usuarios" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "Base da árbore de grupo" #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "Asociación de grupos e membros" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "Usar TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "Non o empregues para conexións SSL: fallará." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "Servidor LDAP que non distingue entre maiúsculas e minúsculas (Windows)" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "Apaga a validación do certificado SSL." #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Se a conexión só funciona con esta opción importa o certificado SSL do servidor LDAP no teu servidor ownCloud." #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "Non se recomenda. Só para probas." #: templates/settings.php:24 msgid "User Display Name Field" -msgstr "" +msgstr "Campo de mostra do nome de usuario" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "O atributo LDAP a empregar para xerar o nome de usuario de ownCloud." #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "Campo de mostra do nome de grupo" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "O atributo LDAP úsase para xerar os nomes dos grupos de ownCloud." #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "en bytes" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." -msgstr "" +msgstr "en segundos. Calquera cambio baleira o caché." #: templates/settings.php:30 msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "" +msgstr "Deixar baleiro para o nome de usuario (por defecto). Noutro caso, especifica un atributo LDAP/AD." #: templates/settings.php:32 msgid "Help" -msgstr "" +msgstr "Axuda" diff --git a/l10n/gl/user_migrate.po b/l10n/gl/user_migrate.po deleted file mode 100644 index b36741c479ecbcae86f6fc8b2db22eaa3f85b3de..0000000000000000000000000000000000000000 --- a/l10n/gl/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/gl/user_openid.po b/l10n/gl/user_openid.po deleted file mode 100644 index 6566b274dfeb17fa4d1df05881326441f0259bd9..0000000000000000000000000000000000000000 --- a/l10n/gl/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/gl/files_odfviewer.po b/l10n/gl/user_webdavauth.po similarity index 61% rename from l10n/gl/files_odfviewer.po rename to l10n/gl/user_webdavauth.po index 8508ffbb8eb735346b5b3c91cac48eae82300a01..f2bbfc16c9166dc6dbee4f18db184816edb83370 100644 --- a/l10n/gl/files_odfviewer.po +++ b/l10n/gl/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Miguel Branco, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 16:27+0000\n" +"Last-Translator: Miguel Branco \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "URL WebDAV: http://" diff --git a/l10n/he/admin_dependencies_chk.po b/l10n/he/admin_dependencies_chk.po deleted file mode 100644 index 01c45eae4c9a67d70e86b5094b4982ad65b75460..0000000000000000000000000000000000000000 --- a/l10n/he/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/he/admin_migrate.po b/l10n/he/admin_migrate.po deleted file mode 100644 index 6968c6351efc6aca3fc7825fe1498b023e8279ec..0000000000000000000000000000000000000000 --- a/l10n/he/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/he/bookmarks.po b/l10n/he/bookmarks.po deleted file mode 100644 index 14546978e037bd5cd6e05313d089075095a1d8b2..0000000000000000000000000000000000000000 --- a/l10n/he/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/he/calendar.po b/l10n/he/calendar.po deleted file mode 100644 index 2cbab15c82820594bf4fef771034a0e058ca1ae4..0000000000000000000000000000000000000000 --- a/l10n/he/calendar.po +++ /dev/null @@ -1,817 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Elad Alfassa , 2011. -# , 2012. -# , 2011. -# Yaron Shahrabani , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "×œ× × ×ž×¦×ו לוחות שנה." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "×œ× × ×ž×¦×ו ×ירועי×." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "לוח שנה ×œ× × ×›×•×Ÿ" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "×זור זמן חדש:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "×זור זמן השתנה" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "בקשה ×œ× ×—×•×§×™×ª" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "×— שנה" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "d MMM [ yyyy]{ '—'d[ MMM] yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "×™×•× ×”×•×œ×“×ª" - -#: lib/app.php:122 -msgid "Business" -msgstr "עסקי×" - -#: lib/app.php:123 -msgid "Call" -msgstr "שיחה" - -#: lib/app.php:124 -msgid "Clients" -msgstr "לקוחות" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "משלוח" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "×—×’×™×" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "רעיונות" - -#: lib/app.php:128 -msgid "Journey" -msgstr "מסע" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "יובל" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "פגישה" - -#: lib/app.php:131 -msgid "Other" -msgstr "×חר" - -#: lib/app.php:132 -msgid "Personal" -msgstr "×ישי" - -#: lib/app.php:133 -msgid "Projects" -msgstr "פרוייקטי×" - -#: lib/app.php:134 -msgid "Questions" -msgstr "ש×לות" - -#: lib/app.php:135 -msgid "Work" -msgstr "עבודה" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "×œ×œ× ×©×" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "לוח שנה חדש" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "×œ×œ× ×—×–×¨×”" - -#: lib/object.php:373 -msgid "Daily" -msgstr "יומי" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "שבועי" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "כל ×™×•× ×¢×‘×•×“×”" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "דו שבועי" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "חודשי" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "שנתי" - -#: lib/object.php:388 -msgid "never" -msgstr "×œ×¢×•×œ× ×œ×" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "לפי מופעי×" - -#: lib/object.php:390 -msgid "by date" -msgstr "לפי ת×ריך" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "לפי ×”×™×•× ×‘×—×•×“×©" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "לפי ×”×™×•× ×‘×©×‘×•×¢" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "×™×•× ×©× ×™" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "×™×•× ×©×œ×™×©×™" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "×™×•× ×¨×‘×™×¢×™" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "×™×•× ×—×ž×™×©×™" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "×™×•× ×©×™×©×™" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "שבת" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "×™×•× ×¨×שון" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "שבוע בחודש לציון הפעילות" - -#: lib/object.php:428 -msgid "first" -msgstr "ר×שון" - -#: lib/object.php:429 -msgid "second" -msgstr "שני" - -#: lib/object.php:430 -msgid "third" -msgstr "שלישי" - -#: lib/object.php:431 -msgid "fourth" -msgstr "רביעי" - -#: lib/object.php:432 -msgid "fifth" -msgstr "חמישי" - -#: lib/object.php:433 -msgid "last" -msgstr "×חרון" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "ינו×ר" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "פברו×ר" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "מרץ" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "×פריל" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "מ××™" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "יוני" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "יולי" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "×וגוסט" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "ספטמבר" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "×וקטובר" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "נובמבר" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "דצמבר" - -#: lib/object.php:488 -msgid "by events date" -msgstr "לפי ת×ריכי ×”×ירועי×" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "לפי ×™×ž×™× ×‘×©× ×”" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "לפי מספרי השבועות" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "לפי ×™×•× ×•×—×•×“×©" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "ת×ריך" - -#: lib/search.php:43 -msgid "Cal." -msgstr "לוח שנה" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "היו×" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "שדות חסרי×" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "כותרת" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "מת×ריך" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "משעה" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "עד ת×ריך" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "עד שעה" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "×”×ירוע ×ž×¡×ª×™×™× ×¢×•×“ לפני שהתחיל" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "×ירע כשל במסד הנתוני×" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "שבוע" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "חודש" - -#: templates/calendar.php:41 -msgid "List" -msgstr "רשימה" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "היו×" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "לוחות השנה שלך" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "קישור CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "לוחות שנה מושתפי×" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "×ין לוחות שנה משותפי×" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "שיתוף לוח שנה" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "הורדה" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "עריכה" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "מחיקה" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "שותף ×תך על ידי" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "לוח שנה חדש" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "עריכת לוח שנה" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "×©× ×ª×¦×•×’×”" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "פעיל" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "צבע לוח שנה" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "שמירה" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "שליחה" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "ביטול" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "עריכת ×ירוע" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "יצו×" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "פרטי ×”×ירוע" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "חוזר" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "תזכורת" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "משתתפי×" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "שיתוף" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "כותרת ×”×ירוע" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "קטגוריה" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "הפרדת קטגוריות בפסיק" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "עריכת קטגוריות" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "×ירוע של כל היו×" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "מ×ת" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "עבור" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "×פשרויות מתקדמות" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "מיקו×" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "×ž×™×§×•× ×”×ירוע" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "תי×ור" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "תי×ור ×”×ירוע" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "חזרה" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "מתקד×" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "יש לבחור ×™×ž×™× ×‘×©×‘×•×¢" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "יש לבחור בימי×" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "×•×™×•× ×”×ירוע בשנה." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "×•×™×•× ×”×ירוע בחודש." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "יש לבחור בחודשי×" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "יש לבחור בשבועות" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "ומספור השבוע הפעיל בשנה." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "משך" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "סיו×" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "מופעי×" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "יצירת לוח שנה חדש" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "×™×‘×•× ×§×•×‘×¥ לוח שנה" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "×©× ×œ×•×— השנה החדש" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "יבו×" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "סגירת הדו־שיח" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "יצירת ×ירוע חדש" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "צפייה ב×ירוע" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "×œ× × ×‘×—×¨×• קטגוריות" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "מתוך" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "בשנה" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "×זור זמן" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24 שעות" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12 שעות" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "משתמשי×" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "× × ×œ×‘×—×•×¨ במשתמשי×" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "ניתן לעריכה" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "קבוצות" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "בחירת קבוצות" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "הפיכה לציבורי" diff --git a/l10n/he/contacts.po b/l10n/he/contacts.po deleted file mode 100644 index df2a4bdc4e74a32a7ad5b0e608e6b488b6172ea8..0000000000000000000000000000000000000000 --- a/l10n/he/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2011. -# Yaron Shahrabani , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "שגי××” בהפעלה ×ו בנטרול פנקס הכתובות." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "מספר מזהה ×œ× × ×§×‘×¢." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "××™ ×פשר לעדכן ספר כתובות ×œ×œ× ×©×" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "שגי××” בעדכון פנקס הכתובות." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "×œ× ×¦×•×™×Ÿ מזהה" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "שגי××” בהגדרת נתוני הביקורת." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "×œ× × ×‘×—×•×¨ קטגוריות למחיקה." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "×œ× × ×ž×¦×ו פנקסי כתובות." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "×œ× × ×ž×¦×ו ×נשי קשר." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "×ירעה שגי××” בעת הוספת ×יש הקשר." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "×©× ×”×למנט ×œ× × ×§×‘×¢." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "×œ× × ×™×ª×Ÿ להוסיף מ×פיין ריק." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "יש ×œ×ž×œ× ×œ×¤×—×•×ª ×חד משדות הכתובת." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "ניסיון להוספת מ×פיין כפול: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "המידע ×ודות vCard ×ינו נכון. × × ×œ×˜×¢×•×Ÿ מחדש ×ת הדף." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "מזהה חסר" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "שגי××” בפענוח ×” VCard עבור מספר המזהה: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "×¡×™×›×•× ×‘×™×§×•×¨×ª ×œ× × ×§×‘×¢." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "המידע עבור ×” vCard ×ינו נכון. ×× × ×˜×¢×Ÿ ×ת העמוד: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "משהו ×œ× ×”×ª× ×”×œ כצפוי." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "מספר מזהה של ×ישר הקשר ×œ× × ×©×œ×—." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "שגי××” בקרי×ת תמונת ×יש הקשר." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "שגי××” בשמירת קובץ זמני." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "התמונה הנטענת ××™× ×” תקנית." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "מספר מזהה של ×ישר הקשר חסר." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "כתובת התמונה ×œ× × ×©×œ×—×”" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "קובץ ×œ× ×§×™×™×:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "שגי××” בטעינת התמונה." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "שגי××” בקבלת ×ובי×קט ×יש הקשר" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "שגי××” בקבלת מידע של תמונה" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "שגי××” בשמירת ×יש הקשר" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "שגי××” בשינוי גודל התמונה" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "התרשה שגי××” בהעל×ת ×נשי הקשר ל×כסון." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "×œ× ×”×ª×¨×—×©×” שגי××”, הקובץ הועלה בהצלחה" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "גודל הקובץ שהועלה גדול מהערך upload_max_filesize שמוגדר בקובץ php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "הקובץ שהועלה גדוך מהערך MAX_FILE_SIZE שהוגדר בתופס HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "הקובץ הועלה ב×ופן חלקי בלבד" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "×©×•× ×§×•×‘×¥ ×œ× ×”×•×¢×œ×”" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "תקיה זמנית חסרה" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "×נשי קשר" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "זהו ×ינו ספר הכתובות שלך" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "×œ× × ×™×ª×Ÿ ל×תר ×יש קשר" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "עבודה" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "בית" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "נייד" - -#: lib/app.php:203 -msgid "Text" -msgstr "טקסט" - -#: lib/app.php:204 -msgid "Voice" -msgstr "קולי" - -#: lib/app.php:205 -msgid "Message" -msgstr "הודעה" - -#: lib/app.php:206 -msgid "Fax" -msgstr "פקס" - -#: lib/app.php:207 -msgid "Video" -msgstr "ויד×ו" - -#: lib/app.php:208 -msgid "Pager" -msgstr "זימונית" - -#: lib/app.php:215 -msgid "Internet" -msgstr "×ינטרנט" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "×™×•× ×”×•×œ×“×ª" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "×™×•× ×”×”×•×œ×“×ª של {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "×יש קשר" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "הוספת ×יש קשר" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "יב×" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "פנקסי כתובות" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "גרור ושחרר תמונה בשביל להעלות" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "מחק תמונה נוכחית" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "ערוך תמונה נוכחית" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "העלה תמונה חדשה" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "בחר תמונה מ ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "ערוך פרטי ש×" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "×רגון" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "מחיקה" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "כינוי" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "הכנס כינוי" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "קבוצות" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "הפרד קבוצות ×¢× ×¤×¡×™×§×™×" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "ערוך קבוצות" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "מועדף" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "×× × ×”×–×Ÿ כתובת דו×\"ל חוקית" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "הזן כתובת דו×\"ל" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "כתובת" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "מחק כתובת דו×\"ל" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "הכנס מספר טלפון" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "מחק מספר טלפון" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "ר××” במפה" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "ערוך פרטי כתובת" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "הוסף הערות ×›×ן." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "הוסף שדה" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "טלפון" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "דו×ר ×לקטרוני" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "כתובת" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "הערה" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "הורדת ×יש קשר" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "מחיקת ×יש קשר" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "ערוך כתובת" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "סוג" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "×ª× ×“×•×ר" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "מורחב" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "עיר" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "×זור" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "מיקוד" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "מדינה" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "פנקס כתובות" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "קידומות ש×" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "גב'" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "גב'" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "מר'" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "×דון" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "גב'" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "ד\"ר" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "ש×" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "שמות נוספי×" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "×©× ×ž×©×¤×—×”" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "סיומות ש×" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "×™×‘× ×§×•×‘×¥ ×נשי קשר" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "×× × ×‘×—×¨ ספר כתובות" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "צור ספר כתובות חדש" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "×©× ×¡×¤×¨ כתובות החדש" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "×ž×™×‘× ×נשי קשר" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "×יך לך ×נשי קשר בספר הכתובות" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "הוסף ×יש קשר" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV מסנכרן כתובות" - -#: templates/settings.php:3 -msgid "more info" -msgstr "מידע נוסף" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "כתובת ר×שית" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "הורדה" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "עריכה" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "פנקס כתובות חדש" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "שמירה" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "ביטול" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/he/core.po b/l10n/he/core.po index 715be471e84d4129e67860a229c80fc60e6e40e3..7595b432486d2e73b08f25deab438a98353f8161 100644 --- a/l10n/he/core.po +++ b/l10n/he/core.po @@ -6,14 +6,14 @@ # Dovix Dovix , 2012. # , 2012. # , 2011. -# Yaron Shahrabani , 2011, 2012. +# Yaron Shahrabani , 2011-2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 06:47+0000\n" +"Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,208 +21,241 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "×©× ×”×™×™×©×•× ×œ× ×¡×•×¤×§." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "סוג הקטגוריה ×œ× ×¡×•×¤×§." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "×ין קטגוריה להוספה?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "קטגוריה ×–×ת כבר קיימת: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "סוג הפריט ×œ× ×¡×•×¤×§." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "מזהה %s ×œ× ×¡×•×¤×§." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "×ירעה שגי××” בעת הוספת %s למועדפי×." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "×œ× × ×‘×—×¨×• קטגוריות למחיקה" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "שגי××” בהסרת %s מהמועדפי×." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "הגדרות" -#: js/js.js:645 -msgid "January" -msgstr "ינו×ר" +#: js/js.js:704 +msgid "seconds ago" +msgstr "שניות" -#: js/js.js:645 -msgid "February" -msgstr "פברו×ר" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "לפני דקה ×חת" -#: js/js.js:645 -msgid "March" -msgstr "מרץ" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "לפני {minutes} דקות" -#: js/js.js:645 -msgid "April" -msgstr "×פריל" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "לפני שעה" -#: js/js.js:645 -msgid "May" -msgstr "מ××™" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "לפני {hours} שעות" -#: js/js.js:645 -msgid "June" -msgstr "יוני" +#: js/js.js:709 +msgid "today" +msgstr "היו×" -#: js/js.js:646 -msgid "July" -msgstr "יולי" +#: js/js.js:710 +msgid "yesterday" +msgstr "×תמול" -#: js/js.js:646 -msgid "August" -msgstr "×וגוסט" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "לפני {days} ימי×" -#: js/js.js:646 -msgid "September" -msgstr "ספטמבר" +#: js/js.js:712 +msgid "last month" +msgstr "חודש שעבר" -#: js/js.js:646 -msgid "October" -msgstr "×וקטובר" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "לפני {months} חודשי×" -#: js/js.js:646 -msgid "November" -msgstr "נובמבר" +#: js/js.js:714 +msgid "months ago" +msgstr "חודשי×" -#: js/js.js:646 -msgid "December" -msgstr "דצמבר" +#: js/js.js:715 +msgid "last year" +msgstr "שנה שעברה" + +#: js/js.js:716 +msgid "years ago" +msgstr "שני×" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "בחירה" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "ביטול" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "ל×" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "כן" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "בסדר" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "×œ× × ×‘×—×¨×• קטגוריות למחיקה" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "סוג הפריט ×œ× ×¦×•×™×Ÿ." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "שגי××”" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "×©× ×”×™×™×©×•× ×œ× ×¦×•×™×Ÿ." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "הקובץ הנדרש {file} ×ינו מותקן!" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "שגי××” במהלך השיתוף" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "שגי××” במהלך ביטול השיתוף" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" +msgstr "שגי××” במהלך שינוי ההגדרות" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "שותף ×תך ×•×¢× ×”×§×‘×•×¦×” {group} שבבעלות {owner}" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "שותף ×תך על ידי {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "שיתוף ×¢×" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "שיתוף ×¢× ×§×™×©×•×¨" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "×”×’× ×” בססמה" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "ססמה" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "הגדרת ת×ריך תפוגה" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "ת×ריך התפוגה" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "שיתוף ב×מצעות דו×״ל:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "×œ× × ×ž×¦×ו ×נשי×" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "×סור לעשות שיתוף מחדש" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "שותף תחת {item} ×¢× {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "הסר שיתוף" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "ניתן לערוך" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "בקרת גישה" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "יצירה" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "עדכון" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "מחיקה" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "שיתוף" -#: js/share.js:317 js/share.js:476 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" -msgstr "" +msgstr "מוגן בססמה" -#: js/share.js:489 +#: js/share.js:533 msgid "Error unsetting expiration date" -msgstr "" +msgstr "×ירעה שגי××” בביטול ת×ריך התפוגה" -#: js/share.js:501 +#: js/share.js:545 msgid "Error setting expiration date" -msgstr "" +msgstr "×ירעה שגי××” בעת הגדרת ת×ריך התפוגה" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "×יפוס הססמה של ownCloud" @@ -235,19 +268,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "יישלח לתיבת הדו×״ל שלך קישור ל×יפוס הססמה." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "נדרש" +msgid "Reset email send." +msgstr "×יפוס שליחת דו×״ל." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "הכניסה נכשלה!" +msgid "Request failed!" +msgstr "הבקשה נכשלה!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "×©× ×ž×©×ª×ž×©" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "בקשת ×יפוס" @@ -299,72 +332,187 @@ msgstr "ענן ×œ× × ×ž×¦×" msgid "Edit categories" msgstr "עריכת הקטגוריות" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "הוספה" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "×זהרת ×בטחה" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "×ין מחולל ×ž×¡×¤×¨×™× ×קר××™×™× ×ž×ובטח, × × ×œ×”×¤×¢×™×œ ×ת ההרחבה OpenSSL ב־PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "×œ×œ× ×ž×—×•×œ×œ ×ž×¡×¤×¨×™× ×קר××™×™× ×ž×ובטח תוקף יכול ×œ× ×‘× ×ת מחרוזות ×יפוס הססמה ולהשתלט על החשבון שלך." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "יתכן שתיקיית ×”× ×ª×•× ×™× ×•×”×§×‘×¦×™× ×©×œ×š × ×’×™×©×™× ×“×¨×š ×”×ינטרנט. קובץ ה־‎.htaccess שמסופק על ידי ownCloud כנר××” ×ינו עובד. ×נו ×ž×ž×œ×™×¦×™× ×‘×—×•× ×œ×”×’×“×™×¨ ×ת שרת ×”×ינטרנט שלך בדרך שבה תיקיית ×”× ×ª×•× ×™× ×œ× ×ª×”×™×” זמינה עוד ×ו להעביר ×ת תיקיית ×”× ×ª×•× ×™× ×ž×—×•×¥ לספריית העל של שרת ×”×ינטרנט." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "יצירת חשבון מנהל" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "מתקד×" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "תיקיית נתוני×" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "הגדרת מסד הנתוני×" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "ינוצלו" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "×©× ×ž×©×ª×ž×© במסד הנתוני×" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "ססמת מסד הנתוני×" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "×©× ×ž×¡×“ הנתוני×" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "מרחב הכתובות של מסד הנתוני×" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "שרת בסיס נתוני×" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "×¡×™×•× ×”×ª×§× ×”" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "×™×•× ×¨×שון" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "×™×•× ×©× ×™" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "×™×•× ×©×œ×™×©×™" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "×™×•× ×¨×‘×™×¢×™" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "×™×•× ×—×ž×™×©×™" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "×™×•× ×©×™×©×™" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "שבת" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "ינו×ר" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "פברו×ר" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "מרץ" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "×פריל" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "מ××™" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "יוני" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "יולי" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "×וגוסט" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "ספטמבר" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "×וקטובר" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "נובמבר" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "דצמבר" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "שירותי רשת בשליטתך" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "התנתקות" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "בקשת הכניסה ×”×וטומטית נדחתה!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "×× ×œ× ×©×™× ×™×ª ×ת ססמתך ל×חרונה, יתכן שחשבונך נפגע!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "× × ×œ×©× ×•×ª ×ת הססמה שלך כדי ל×בטח ×ת חשבונך מחדש." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "שכחת ×ת ססמתך?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "שמירת הססמה" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "כניסה" @@ -379,3 +527,17 @@ msgstr "הקוד×" #: templates/part.pagenavi.php:20 msgid "next" msgstr "הב×" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "×זהרת ×בטחה!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "× × ×œ×מת ×ת הססמה שלך.
            מטעמי ×בטחה יתכן שתופיע בקשה להזין ×ת הססמה שוב." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "×ימות" diff --git a/l10n/he/files.po b/l10n/he/files.po index 2e585d9a6704ecb26f6c0bb31587945fbd03fa8e..2d18545dbb65a2280722f3938cbc68538fbc6b14 100644 --- a/l10n/he/files.po +++ b/l10n/he/files.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 06:37+0000\n" +"Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,195 +26,166 @@ msgid "There is no error, the file uploaded with success" msgstr "×œ× ×ירעה תקלה, ×”×§×‘×¦×™× ×”×•×¢×œ×• בהצלחה" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "הקובץ שהועלה חרג מההנחיה upload_max_filesize בקובץ php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "×”×§×‘×¦×™× ×©× ×©×œ×—×• ×—×•×¨×’×™× ×ž×”×’×•×“×œ שצוין בהגדרה upload_max_filesize שבקובץ php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "הקובץ שהועלה חרג מההנחיה MAX_FILE_SIZE שצוינה בטופס ×”Ö¾HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "הקובץ שהועלה הועלה בצורה חלקית" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "×œ× ×”×•×¢×œ×• קבצי×" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "תיקייה זמנית חסרה" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "הכתיבה לכונן נכשלה" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "קבצי×" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "הסר שיתוף" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "מחיקה" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "שינוי ש×" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "כבר קיי×" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} כבר קיי×" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" -msgstr "" +msgstr "החלפה" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "הצעת ש×" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" -msgstr "" +msgstr "ביטול" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} הוחלף" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" -msgstr "" +msgstr "ביטול" -#: js/filelist.js:241 -msgid "with" -msgstr "" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{new_name} הוחלף ב־{old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "בוטל ×©×™×ª×•×¤× ×©×œ {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} נמחקו" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "×”×©× ×©×’×•×™, ×סור להשתמש ×‘×ª×•×•×™× '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "יוצר קובץ ZIP, ×× × ×”×ž×ª×Ÿ." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "×œ× ×™×›×•×œ להעלות ×ת הקובץ מכיוון שזו תקיה ×ו שמשקל הקובץ 0 בתי×" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "שגי×ת העל××”" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "סגירה" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "ממתין" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "קובץ ×חד נשלח" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} ×§×‘×¦×™× × ×©×œ×—×™×" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "ההעל××” בוטלה." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" +msgstr "מתבצעת כעת העל×ת קבצי×. עזיבה של העמוד תבטל ×ת ההעל××”." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "×©× ×œ× ×—×•×§×™, '/' ×סור לשימוש." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "×©× ×”×ª×™×§×™×™×” שגוי. השימוש ×‘×©× â€žShared“ שמור לטובת Owncloud" -#: js/files.js:667 -msgid "files scanned" -msgstr "" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} ×§×‘×¦×™× × ×¡×¨×§×•" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "×ירעה שגי××” במהלך הסריקה" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "ש×" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "גודל" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "זמן שינוי" -#: js/files.js:777 -msgid "folder" -msgstr "תקיה" - -#: js/files.js:779 -msgid "folders" -msgstr "תקיות" - -#: js/files.js:787 -msgid "file" -msgstr "קובץ" - -#: js/files.js:789 -msgid "files" -msgstr "קבצי×" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" +#: js/files.js:814 +msgid "1 folder" +msgstr "תיקייה ×חת" -#: js/files.js:838 -msgid "today" -msgstr "" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} תיקיות" -#: js/files.js:839 -msgid "yesterday" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "קובץ ×חד" -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} קבצי×" #: templates/admin.php:5 msgid "File handling" @@ -224,80 +195,76 @@ msgstr "טיפול בקבצי×" msgid "Maximum upload size" msgstr "גודל העל××” מקסימלי" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "המרבי ×”×פשרי: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "נחוץ להורדה של ריבוי ×§×‘×¦×™× ×ו תיקיות." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "הפעלת הורדת ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 - ×œ×œ× ×”×’×‘×œ×”" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "גודל הקלט המרבי לקובצי ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "שמירה" #: templates/index.php:7 msgid "New" msgstr "חדש" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "קובץ טקסט" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "תיקייה" -#: templates/index.php:11 -msgid "From url" -msgstr "מכתובת" +#: templates/index.php:14 +msgid "From link" +msgstr "מקישור" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "העל××”" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "ביטול ההעל××”" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "×ין ×›×ן ×©×•× ×“×‘×¨. ×ולי ברצונך להעלות משהו?" -#: templates/index.php:50 -msgid "Share" -msgstr "שיתוף" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "הורדה" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "העל××” גדולה מידי" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "×”×§×‘×¦×™× ×©× ×™×¡×™×ª להעלות חרגו מהגודל המקסימלי להעל×ת ×§×‘×¦×™× ×¢×œ שרת ×–×”." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "×”×§×‘×¦×™× × ×¡×¨×§×™×, × × ×œ×”×ž×ª×™×Ÿ." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "הסריקה הנוכחית" diff --git a/l10n/he/files_external.po b/l10n/he/files_external.po index 0b3be3a33b99b820e9f1dd1d3679ee32c7235500..bf65ccc3564c69f5c2f26bbdbfef90f60a7d3531 100644 --- a/l10n/he/files_external.po +++ b/l10n/he/files_external.po @@ -4,13 +4,14 @@ # # Translators: # Tomer Cohen , 2012. +# Yaron Shahrabani , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 07:19+0000\n" +"Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +21,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "הוענקה גישה" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "×ירעה שגי××” בעת הגדרת ×חסון ב־Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "הענקת גישה" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "× × ×œ×ž×œ× ×ת כל השדות הנדרשי×" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "× × ×œ×¡×¤×§ קוד ×™×™×©×•× ×•×¡×•×“ ×ª×§× ×™×™× ×©×œ Dropbox." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "×ירעה שגי××” בעת הגדרת ×חסון ב־Google Drive" #: templates/settings.php:3 msgid "External Storage" @@ -48,11 +49,11 @@ msgstr "×חסון חיצוני" #: templates/settings.php:7 templates/settings.php:19 msgid "Mount point" -msgstr "" +msgstr "נקודת ×¢×’×™× ×”" #: templates/settings.php:8 msgid "Backend" -msgstr "" +msgstr "מנגנון" #: templates/settings.php:9 msgid "Configuration" @@ -64,15 +65,15 @@ msgstr "×פשרויות" #: templates/settings.php:11 msgid "Applicable" -msgstr "" +msgstr "ניתן ליישו×" #: templates/settings.php:23 msgid "Add mount point" -msgstr "" +msgstr "הוספת נקודת ×¢×’×™× ×”" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" -msgstr "" +msgstr "×œ× ×”×•×’×“×¨×”" #: templates/settings.php:63 msgid "All Users" diff --git a/l10n/he/files_pdfviewer.po b/l10n/he/files_pdfviewer.po deleted file mode 100644 index 5ae16f8b58686bdfa3ed5ef3875200f4a4c28ae1..0000000000000000000000000000000000000000 --- a/l10n/he/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/he/files_texteditor.po b/l10n/he/files_texteditor.po deleted file mode 100644 index 1992f89c84c80743add5eb5501c22d46bd9cdabf..0000000000000000000000000000000000000000 --- a/l10n/he/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/he/files_versions.po b/l10n/he/files_versions.po index 20cfd9e7379561c3d913acb03fa37f88fc66fd85..6c4367359de3f204c48541f0fa96bf65d0fc2ff1 100644 --- a/l10n/he/files_versions.po +++ b/l10n/he/files_versions.po @@ -4,13 +4,14 @@ # # Translators: # Tomer Cohen , 2012. +# Yaron Shahrabani , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 07:21+0000\n" +"Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,7 +25,7 @@ msgstr "הפגת תוקף כל הגרס×ות" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "היסטוריה" #: templates/settings-personal.php:4 msgid "Versions" @@ -36,8 +37,8 @@ msgstr "פעולה זו תמחק ×ת כל גיבויי הגרס×ות הקיי #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "שמירת הבדלי גרס×ות של קבצי×" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "הפעלה" diff --git a/l10n/he/gallery.po b/l10n/he/gallery.po deleted file mode 100644 index d2e1ed419a3cabee27af556be9982aab07d9ad4b..0000000000000000000000000000000000000000 --- a/l10n/he/gallery.po +++ /dev/null @@ -1,94 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Hebrew (http://www.transifex.net/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/he/impress.po b/l10n/he/impress.po deleted file mode 100644 index 722a7c44e18efd3ebff510f9849dcb27e31d1e8c..0000000000000000000000000000000000000000 --- a/l10n/he/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/he/lib.po b/l10n/he/lib.po index d85313a6ab8cd1cf61417e99b6c4604dda65edd9..de97f2df8845d53a76057c7f4538cd0e25d79e68 100644 --- a/l10n/he/lib.po +++ b/l10n/he/lib.po @@ -4,13 +4,14 @@ # # Translators: # Tomer Cohen , 2012. +# Yaron Shahrabani , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-05 02:01+0200\n" -"PO-Revision-Date: 2012-09-04 23:19+0000\n" -"Last-Translator: Tomer Cohen \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 06:32+0000\n" +"Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,43 +19,43 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "עזרה" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "×ישי" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "הגדרות" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "משתמשי×" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "יישומי×" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "מנהל" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "הורדת ZIP כבויה" -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "יש להוריד ×ת ×”×§×‘×¦×™× ×חד ×חרי השני." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "חזרה לקבצי×" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×’×“×•×œ×™× ×ž×™×“×™ ליצירת קובץ zip." @@ -62,7 +63,7 @@ msgstr "×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×’×“×•×œ×™× ×ž×™×“×™ ליצירת קובץ msgid "Application is not enabled" msgstr "×™×™×©×•×ž×™× ××™× × ×ž×•×¤×¢×œ×™×" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "שגי×ת הזדהות" @@ -70,57 +71,84 @@ msgstr "שגי×ת הזדהות" msgid "Token expired. Please reload page." msgstr "פג תוקף. × × ×œ×˜×¢×•×Ÿ שוב ×ת הדף." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "קבצי×" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "טקסט" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "תמונות" + +#: template.php:103 msgid "seconds ago" msgstr "שניות" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "לפני דקה ×חת" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "לפני %d דקות" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "לפני שעה" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "לפני %d שעות" + +#: template.php:108 msgid "today" msgstr "היו×" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "×תמול" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "לפני %d ימי×" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "חודש שעבר" -#: template.php:96 -msgid "months ago" -msgstr "חודשי×" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "לפני %d חודשי×" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "שנה שעברה" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "שני×" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s זמין. קבלת מידע נוסף" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "עדכני" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "בדיקת ×¢×“×›×•× ×™× ×ž× ×•×˜×¨×œ×ª" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת הקטגוריה „%s“" diff --git a/l10n/he/media.po b/l10n/he/media.po deleted file mode 100644 index 993c46955ba1bf526130a3aed72a0c6548d48438..0000000000000000000000000000000000000000 --- a/l10n/he/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Hebrew (http://www.transifex.net/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "מוזיקה" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "נגן" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "השהה" - -#: templates/music.php:5 -msgid "Previous" -msgstr "קוד×" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "הב×" - -#: templates/music.php:7 -msgid "Mute" -msgstr "השתק" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "בטל השתקה" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "סריקת ×וסף מחדש" - -#: templates/music.php:37 -msgid "Artist" -msgstr "מבצע" - -#: templates/music.php:38 -msgid "Album" -msgstr "×לבו×" - -#: templates/music.php:39 -msgid "Title" -msgstr "כותרת" diff --git a/l10n/he/settings.po b/l10n/he/settings.po index 28b90c629a24e187a9b14b84ab2df1110b42cb75..50e610dd37102893f0031b1eeecc5e92c31b6955 100644 --- a/l10n/he/settings.po +++ b/l10n/he/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +20,73 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ לטעון רשימה מה־App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "הקבוצה כבר קיימת" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להוסיף קבוצה" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להפעיל ×ת היישו×" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "הדו×״ל נשמר" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "דו×״ל ×œ× ×—×•×§×™" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID השתנה" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "בקשה ×œ× ×—×•×§×™×ª" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ למחוק ×ת הקבוצה" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "שגי×ת הזדהות" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ למחוק ×ת המשתמש" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "שפה השתנתה" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "×ž× ×”×œ×™× ×œ× ×™×›×•×œ×™× ×œ×”×¡×™×¨ ×ת ×¢×¦×ž× ×ž×§×‘×•×¦×ª המנהלי×" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להוסיף משתמש לקבוצה %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להסיר משתמש מהקבוצה %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "בטל" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "הפעל" @@ -91,104 +94,17 @@ msgstr "הפעל" msgid "Saving..." msgstr "שומר.." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "עברית" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "יומן" - -#: templates/admin.php:116 -msgid "More" -msgstr "עוד" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "הוספת ×”×™×™×©×•× ×©×œ×š" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "×™×™×©×•×ž×™× × ×•×¡×¤×™×" #: templates/apps.php:27 msgid "Select an App" @@ -200,7 +116,7 @@ msgstr "צפה בעמוד ×”×™×©×•× ×‘ apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "ברישיון לטובת " #: templates/help.php:9 msgid "Documentation" @@ -214,22 +130,22 @@ msgstr "ניהול ×§×‘×¦×™× ×’×“×•×œ×™×" msgid "Ask a question" msgstr "ש×ל ש×לה" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "בעיות בהתחברות לבסיס נתוני העזרה" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "גש ×œ×©× ×‘×ופן ידני" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "מענה" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "השתמשת ב־%s מתוך %s ×”×–×ž×™× ×™× ×œ×š" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -241,7 +157,7 @@ msgstr "הורדה" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "הססמה שלך הוחלפה" #: templates/personal.php:20 msgid "Unable to change your password" @@ -287,6 +203,16 @@ msgstr "עזרה בתרגו×" msgid "use this address to connect to your ownCloud in your file manager" msgstr "השתמש בכתובת זו כדי להתחבר ל־ownCloude שלך ממנהל הקבצי×" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "פותח על די קהילתownCloud, קוד המקור מוגן ברישיון AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "ש×" @@ -313,7 +239,7 @@ msgstr "×חר" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "" +msgstr "מנהל הקבוצה" #: templates/users.php:82 msgid "Quota" diff --git a/l10n/he/tasks.po b/l10n/he/tasks.po deleted file mode 100644 index 7f26426e1cd8da09b1cdc99bcdc2438f39a47631..0000000000000000000000000000000000000000 --- a/l10n/he/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/he/user_migrate.po b/l10n/he/user_migrate.po deleted file mode 100644 index 0a4f2c67393e0d68cbe0b186b540b5e80ed3f8d6..0000000000000000000000000000000000000000 --- a/l10n/he/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/he/user_openid.po b/l10n/he/user_openid.po deleted file mode 100644 index 58c09141c7a0d76b6cefe2bc78ec4ca29b5c4b1a..0000000000000000000000000000000000000000 --- a/l10n/he/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/he/files_odfviewer.po b/l10n/he/user_webdavauth.po similarity index 73% rename from l10n/he/files_odfviewer.po rename to l10n/he/user_webdavauth.po index e493bf5cb56bf60f80aa3287fd47d49b1e5409a8..a47de1367d9cafd0bb66d58f7fa5485b69921f8e 100644 --- a/l10n/he/files_odfviewer.po +++ b/l10n/he/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/hi/core.po b/l10n/hi/core.po index b6cb8ef89bedfd562749f4b4fa8415fa012386e6..70a515c30935b79c16b7525ff64be8b55f76c408 100644 --- a/l10n/hi/core.po +++ b/l10n/hi/core.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Omkar Tapale , 2012. # Sanjay Rabidas , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,239 +19,272 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "" -#: js/js.js:645 -msgid "January" +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:645 -msgid "February" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:645 -msgid "March" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:645 -msgid "April" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:645 -msgid "May" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:645 -msgid "June" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:646 -msgid "July" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:646 -msgid "August" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:646 -msgid "September" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:646 -msgid "October" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:646 -msgid "November" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:646 -msgid "December" +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "पासवरà¥à¤¡" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" -msgstr "" +msgstr "आगे दिये गये लिंक का उपयोग पासवरà¥à¤¡ बदलने के लिये किजीये: {link}" #: lostpassword/templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "पासवरà¥à¤¡ बदलने कि लिंक आपको ई-मेल दà¥à¤µà¤¾à¤°à¤¾ भेजी जायेगी|" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" +msgid "Reset email send." msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" +msgid "Request failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ का नाम" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" #: lostpassword/templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "आपका पासवरà¥à¤¡ बदला गया है" #: lostpassword/templates/resetpassword.php:5 msgid "To login page" @@ -258,7 +292,7 @@ msgstr "" #: lostpassword/templates/resetpassword.php:8 msgid "New password" -msgstr "" +msgstr "नया पासवरà¥à¤¡" #: lostpassword/templates/resetpassword.php:11 msgid "Reset password" @@ -296,72 +330,187 @@ msgstr "कà¥à¤²à¥Œà¤¡ नहीं मिला " msgid "Edit categories" msgstr "" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤• खाता बनाà¤à¤" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "उनà¥à¤¨à¤¤" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "डेटाबेस कॉनà¥à¤«à¤¼à¤¿à¤—र करें " -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "डेटाबेस उपयोगकरà¥à¤¤à¤¾" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "डेटाबेस पासवरà¥à¤¡" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "सेटअप समापà¥à¤¤ करे" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -376,3 +525,17 @@ msgstr "पिछला" #: templates/part.pagenavi.php:20 msgid "next" msgstr "अगला" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/hi/files.po b/l10n/hi/files.po index cc9c0f501ffaab72f6d8f80245861d1281c545a5..1c494c435f9ca233660b3ad99204837923267544 100644 --- a/l10n/hi/files.po +++ b/l10n/hi/files.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,194 +22,165 @@ msgid "There is no error, the file uploaded with success" msgstr "" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" -msgstr "" - -#: js/files.js:779 -msgid "folders" -msgstr "" - -#: js/files.js:787 -msgid "file" -msgstr "" - -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:838 -msgid "today" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -220,27 +191,27 @@ msgstr "" msgid "Maximum upload size" msgstr "" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "" @@ -248,52 +219,48 @@ msgstr "" msgid "New" msgstr "" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/hi/lib.po b/l10n/hi/lib.po index c7209b64c42ff334689ac7dc8be686706996cb1e..310d410a6e996bf71e02404c143d33f4637d92ec 100644 --- a/l10n/hi/lib.po +++ b/l10n/hi/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "" @@ -69,57 +69,84 @@ msgstr "" msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/hi/settings.po b/l10n/hi/settings.po index b18f3570c50b7d39a9653603482cd2135c95163f..4f0ccd14335f85deca6a400c3c2ba2e51cd651c0 100644 --- a/l10n/hi/settings.po +++ b/l10n/hi/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,70 +17,73 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "" @@ -88,97 +91,10 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -211,21 +127,21 @@ msgstr "" msgid "Ask a question" msgstr "" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -250,7 +166,7 @@ msgstr "" #: templates/personal.php:22 msgid "New password" -msgstr "" +msgstr "नया पासवरà¥à¤¡" #: templates/personal.php:23 msgid "show" @@ -284,13 +200,23 @@ msgstr "" msgid "use this address to connect to your ownCloud in your file manager" msgstr "" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "" #: templates/users.php:23 templates/users.php:77 msgid "Password" -msgstr "" +msgstr "पासवरà¥à¤¡" #: templates/users.php:26 templates/users.php:78 templates/users.php:98 msgid "Groups" diff --git a/l10n/ar_SA/files_odfviewer.po b/l10n/hi/user_webdavauth.po similarity index 59% rename from l10n/ar_SA/files_odfviewer.po rename to l10n/hi/user_webdavauth.po index abff78f829aff9a72f85ed68776dc0e1be01628d..d4e892dd4b4b666a5ea3a61e4af93efc72120b47 100644 --- a/l10n/ar_SA/files_odfviewer.po +++ b/l10n/hi/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" +"Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/hr/admin_dependencies_chk.po b/l10n/hr/admin_dependencies_chk.po deleted file mode 100644 index 5278ae63b010a4a51d5a41b016ceccdf8b4186e5..0000000000000000000000000000000000000000 --- a/l10n/hr/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/hr/admin_migrate.po b/l10n/hr/admin_migrate.po deleted file mode 100644 index 6b445e7e51d8d1d0a6093f122a1a805eba74fe76..0000000000000000000000000000000000000000 --- a/l10n/hr/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/hr/bookmarks.po b/l10n/hr/bookmarks.po deleted file mode 100644 index b9e98477cfefcc7934d818250f51ae3d6d86674e..0000000000000000000000000000000000000000 --- a/l10n/hr/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/hr/calendar.po b/l10n/hr/calendar.po deleted file mode 100644 index e848e042a0028c7a39b5882be389a412c84b9875..0000000000000000000000000000000000000000 --- a/l10n/hr/calendar.po +++ /dev/null @@ -1,816 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Davor Kustec , 2011. -# Domagoj Delimar , 2012. -# Thomas SilaÄ‘i , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Nisu pronaÄ‘eni kalendari" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "DogaÄ‘aj nije pronaÄ‘en." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "PogreÅ¡an kalendar" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nova vremenska zona:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Vremenska zona promijenjena" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Neispravan zahtjev" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendar" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "RoÄ‘endan" - -#: lib/app.php:122 -msgid "Business" -msgstr "Poslovno" - -#: lib/app.php:123 -msgid "Call" -msgstr "Poziv" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klijenti" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "DostavljaÄ" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Praznici" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideje" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Putovanje" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Obljetnica" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Sastanak" - -#: lib/app.php:131 -msgid "Other" -msgstr "Ostalo" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Osobno" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekti" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Pitanja" - -#: lib/app.php:135 -msgid "Work" -msgstr "Posao" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "bezimeno" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Novi kalendar" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ne ponavlja se" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Dnevno" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Tjedno" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Svakog radnog dana" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Dvotjedno" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "MjeseÄno" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "GodiÅ¡nje" - -#: lib/object.php:388 -msgid "never" -msgstr "nikad" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "po pojavama" - -#: lib/object.php:390 -msgid "by date" -msgstr "po datum" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "po dana mjeseca" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "po tjednu" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "ponedeljak" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "utorak" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "srijeda" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Äetvrtak" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "petak" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "subota" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "nedelja" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "prvi" - -#: lib/object.php:429 -msgid "second" -msgstr "drugi" - -#: lib/object.php:430 -msgid "third" -msgstr "treći" - -#: lib/object.php:431 -msgid "fourth" -msgstr "Äetvrti" - -#: lib/object.php:432 -msgid "fifth" -msgstr "peti" - -#: lib/object.php:433 -msgid "last" -msgstr "zadnji" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "sijeÄanj" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "veljaÄa" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "ožujak" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "travanj" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "svibanj" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "lipanj" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "srpanj" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "kolovoz" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "rujan" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "listopad" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "studeni" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "prosinac" - -#: lib/object.php:488 -msgid "by events date" -msgstr "po datumu dogaÄ‘aja" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "po godini(-nama)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "po broju tjedna(-ana)" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "po danu i mjeseca" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "datum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Cijeli dan" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Nedostaju polja" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Naslov" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Datum od" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Vrijeme od" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Datum do" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Vrijeme do" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "DogaÄ‘aj zavrÅ¡ava prije nego poÄinje" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "PogreÅ¡ka u bazi podataka" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Tjedan" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mjesec" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Danas" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "VaÅ¡i kalendari" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav poveznica" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Podijeljeni kalendari" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Nema zajedniÄkih kalendara" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Podjeli kalendar" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Spremi lokalno" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Uredi" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "BriÅ¡i" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "podijeljeno s vama od " - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Novi kalendar" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Uredi kalendar" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Naziv" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktivan" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Boja kalendara" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Spremi" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Potvrdi" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Odustani" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Uredi dogaÄ‘aj" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Izvoz" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informacije o dogaÄ‘aju" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Ponavljanje" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Polaznici" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Podijeli" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Naslov dogaÄ‘aja" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorija" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Odvoji kategorije zarezima" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Uredi kategorije" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Cjelodnevni dogaÄ‘aj" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Od" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Za" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Napredne mogućnosti" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Lokacija" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Lokacija dogaÄ‘aja" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Opis" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Opis dogaÄ‘aja" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ponavljanje" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Napredno" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Odaberi dane u tjednu" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Odaberi dane" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Odaberi mjesece" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Odaberi tjedne" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Interval" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Kraj" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "pojave" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "stvori novi kalendar" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Uvozite datoteku kalendara" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Ime novog kalendara" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Uvoz" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Zatvori dijalog" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Unesi novi dogaÄ‘aj" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Vidjeti dogaÄ‘aj" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nema odabranih kategorija" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "od" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "na" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Vremenska zona" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Korisnici" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "odaberi korisnike" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Može se ureÄ‘ivati" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupe" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "izaberite grupe" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "podjeli s javnošću" diff --git a/l10n/hr/contacts.po b/l10n/hr/contacts.po deleted file mode 100644 index 1e98b0080737ae7487434665502b103f378f3790..0000000000000000000000000000000000000000 --- a/l10n/hr/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Davor Kustec , 2011, 2012. -# Domagoj Delimar , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "PogreÅ¡ka pri (de)aktivaciji adresara." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id nije postavljen." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Ne mogu ažurirati adresar sa praznim nazivom." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "PogreÅ¡ka pri ažuriranju adresara." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Nema dodijeljenog ID identifikatora" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "PogreÅ¡ka pri postavljanju checksuma." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Niti jedna kategorija nije odabrana za brisanje." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nema adresara." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nema kontakata." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Dogodila se pogreÅ¡ka prilikom dodavanja kontakta." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "naziv elementa nije postavljen." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Prazno svojstvo se ne može dodati." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Morate ispuniti barem jedno od adresnih polja." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "PokuÅ¡ali ste dodati duplo svojstvo:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informacija o vCard je neispravna. Osvježite stranicu." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Nedostupan ID identifikator" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "PogreÅ¡ka pri raÅ¡Älanjivanju VCard za ID:" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "checksum nije postavljen." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informacije o VCard su pogreÅ¡ne. Molimo, uÄitajte ponovno stranicu:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "NeÅ¡to je otiÅ¡lo... krivo..." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "ID kontakta nije podneÅ¡en." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "PogreÅ¡ka pri Äitanju kontakt fotografije." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "PogreÅ¡ka pri spremanju privremene datoteke." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Fotografija nije valjana." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "ID kontakta nije dostupan." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Putanja do fotografije nije podneÅ¡ena." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Datoteka ne postoji:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "PogreÅ¡ka pri uÄitavanju slike." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "PogreÅ¡ka pri slanju kontakata." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Nema pogreÅ¡ke, datoteka je poslana uspjeÅ¡no." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "VeliÄina poslane datoteke prelazi veliÄinu prikazanu u upload_max_filesize direktivi u konfiguracijskoj datoteci php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Poslana datoteka prelazi veliÄinu prikazanu u MAX_FILE_SIZE direktivi u HTML formi" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Poslana datoteka je parcijalno poslana" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Datoteka nije poslana" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Nedostaje privremeni direktorij" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontakti" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ovo nije vaÅ¡ adresar." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakt ne postoji." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Posao" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Kuća" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobitel" - -#: lib/app.php:203 -msgid "Text" -msgstr "Tekst" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Glasovno" - -#: lib/app.php:205 -msgid "Message" -msgstr "Poruka" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "RoÄ‘endan" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} RoÄ‘endan" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Dodaj kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Uvezi" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adresari" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Dovucite fotografiju za slanje" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Uredi trenutnu sliku" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Uredi detalje imena" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizacija" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "ObriÅ¡i" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Nadimak" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Unesi nadimank" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupe" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Uredi grupe" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferirano" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Unesi email adresu" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Unesi broj telefona" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Prikaži na karti" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Uredi detalje adrese" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Dodaj biljeÅ¡ke ovdje." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Dodaj polje" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresa" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "BiljeÅ¡ka" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Preuzmi kontakt" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "IzbriÅ¡i kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Uredi adresu" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tip" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "PoÅ¡tanski Pretinac" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "ProÅ¡ireno" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Grad" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regija" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "PoÅ¡tanski broj" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Država" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adresar" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Preuzimanje" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Uredi" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Novi adresar" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Spremi" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Prekini" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/hr/core.po b/l10n/hr/core.po index cc72990a914cdb6fd109586ac03ce7d819d065ce..981e11e0d1e70832f25979fa47a5ea19b355c97c 100644 --- a/l10n/hr/core.po +++ b/l10n/hr/core.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-08 02:03+0200\n" -"PO-Revision-Date: 2012-10-07 15:56+0000\n" -"Last-Translator: fposavec \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,208 +21,241 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Ime aplikacije nije pribavljeno." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Nemate kategorija koje možete dodati?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Ova kategorija već postoji: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Nema odabranih kategorija za brisanje." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Postavke" -#: js/js.js:645 -msgid "January" -msgstr "SijeÄanj" +#: js/js.js:688 +msgid "seconds ago" +msgstr "sekundi prije" -#: js/js.js:645 -msgid "February" -msgstr "VeljaÄa" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "" -#: js/js.js:645 -msgid "March" -msgstr "Ožujak" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Travanj" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Svibanj" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Lipanj" +#: js/js.js:693 +msgid "today" +msgstr "danas" -#: js/js.js:646 -msgid "July" -msgstr "Srpanj" +#: js/js.js:694 +msgid "yesterday" +msgstr "juÄer" -#: js/js.js:646 -msgid "August" -msgstr "Kolovoz" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "Rujan" +#: js/js.js:696 +msgid "last month" +msgstr "proÅ¡li mjesec" -#: js/js.js:646 -msgid "October" -msgstr "Listopad" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Studeni" +#: js/js.js:698 +msgid "months ago" +msgstr "mjeseci" -#: js/js.js:646 -msgid "December" -msgstr "Prosinac" +#: js/js.js:699 +msgid "last year" +msgstr "proÅ¡lu godinu" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "godina" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Izaberi" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Odustani" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ne" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Da" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "U redu" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Nema odabranih kategorija za brisanje." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:494 -#: js/share.js:506 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "PogreÅ¡ka" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "GreÅ¡ka prilikom djeljenja" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "GreÅ¡ka prilikom iskljuÄivanja djeljenja" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "GreÅ¡ka prilikom promjena prava" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Dijeli sa tobom i grupom" - -#: js/share.js:130 -msgid "by" -msgstr "preko" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Dijeljeno sa tobom preko " +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Djeli sa" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Djeli preko link-a" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "ZaÅ¡titi lozinkom" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Lozinka" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Postavi datum isteka" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Datum isteka" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Dijeli preko email-a:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Osobe nisu pronaÄ‘ene" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Ponovo dijeljenje nije dopuÅ¡teno" -#: js/share.js:250 -msgid "Shared in" -msgstr "Dijeljeno u" - -#: js/share.js:250 -msgid "with" -msgstr "sa" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:292 msgid "Unshare" msgstr "Makni djeljenje" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "može mjenjat" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "kontrola pristupa" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "kreiraj" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "ažuriraj" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "izbriÅ¡i" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "djeli" -#: js/share.js:322 js/share.js:481 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "ZaÅ¡tita lozinkom" -#: js/share.js:494 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "GreÅ¡ka prilikom brisanja datuma isteka" -#: js/share.js:506 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "GreÅ¡ka prilikom postavljanja datuma isteka" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud resetiranje lozinke" @@ -235,15 +268,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Primit ćete link kako biste poniÅ¡tili zaporku putem e-maila." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Zahtijevano" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Prijava nije uspjela!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "KorisniÄko ime" @@ -299,72 +332,187 @@ msgstr "Cloud nije pronaÄ‘en" msgid "Edit categories" msgstr "Uredi kategorije" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Dodaj" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Stvori administratorski raÄun" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Dodatno" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Mapa baze podataka" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfiguriraj bazu podataka" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "će se koristiti" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Korisnik baze podataka" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Lozinka baze podataka" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Ime baze podataka" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Database tablespace" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Poslužitelj baze podataka" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "ZavrÅ¡i postavljanje" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "nedelja" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "ponedeljak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "utorak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "srijeda" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Äetvrtak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "petak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "subota" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "SijeÄanj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "VeljaÄa" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Ožujak" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Travanj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Svibanj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Lipanj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Srpanj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Kolovoz" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Rujan" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Listopad" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Studeni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Prosinac" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "web usluge pod vaÅ¡om kontrolom" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Odjava" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Izgubili ste lozinku?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "zapamtiti" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Prijava" @@ -379,3 +527,17 @@ msgstr "prethodan" #: templates/part.pagenavi.php:20 msgid "next" msgstr "sljedeći" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index 5cdd0eb8894b4a1a4e9ea7c68b5dc9c4ae5fca26..7a1464ff148b6fa6b668e8d3a4757b944aebef9f 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-08 02:02+0200\n" -"PO-Revision-Date: 2012-10-07 16:01+0000\n" -"Last-Translator: fposavec \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,195 +25,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Datoteka je poslana uspjeÅ¡no i bez pogreÅ¡aka" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Poslana datoteka izlazi iz okvira upload_max_size direktive postavljene u php.ini konfiguracijskoj datoteci" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Poslana datoteka izlazi iz okvira MAX_FILE_SIZE direktive postavljene u HTML obrascu" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Datoteka je poslana samo djelomiÄno" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ni jedna datoteka nije poslana" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Nedostaje privremena mapa" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Neuspjelo pisanje na disk" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Datoteke" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Prekini djeljenje" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "BriÅ¡i" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Promjeni ime" -#: js/filelist.js:189 js/filelist.js:191 -msgid "already exists" -msgstr "već postoji" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "zamjeni" -#: js/filelist.js:189 +#: js/filelist.js:201 msgid "suggest name" msgstr "predloži ime" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "odustani" -#: js/filelist.js:238 js/filelist.js:240 -msgid "replaced" -msgstr "zamjenjeno" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:238 js/filelist.js:240 js/filelist.js:272 js/filelist.js:274 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "vrati" -#: js/filelist.js:240 -msgid "with" -msgstr "sa" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:272 -msgid "unshared" -msgstr "maknuto djeljenje" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" -#: js/filelist.js:274 -msgid "deleted" -msgstr "izbrisano" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "generiranje ZIP datoteke, ovo može potrajati." -#: js/files.js:213 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nemoguće poslati datoteku jer je prazna ili je direktorij" -#: js/files.js:213 +#: js/files.js:218 msgid "Upload Error" msgstr "PogreÅ¡ka pri slanju" -#: js/files.js:241 js/files.js:346 js/files.js:376 +#: js/files.js:235 +msgid "Close" +msgstr "Zatvori" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "U tijeku" -#: js/files.js:261 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 datoteka se uÄitava" -#: js/files.js:264 js/files.js:309 js/files.js:324 -msgid "files uploading" -msgstr "datoteke se uÄitavaju" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "" -#: js/files.js:327 js/files.js:360 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Slanje poniÅ¡teno." -#: js/files.js:429 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "UÄitavanje datoteke. NapuÅ¡tanjem stranice će prekinuti uÄitavanje." -#: js/files.js:499 -msgid "Invalid name, '/' is not allowed." -msgstr "Neispravan naziv, znak '/' nije dozvoljen." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:676 -msgid "files scanned" -msgstr "datoteka skenirana" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "" -#: js/files.js:684 +#: js/files.js:712 msgid "error while scanning" msgstr "greÄka prilikom skeniranja" -#: js/files.js:757 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Naziv" -#: js/files.js:758 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "VeliÄina" -#: js/files.js:759 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Zadnja promjena" -#: js/files.js:786 -msgid "folder" -msgstr "mapa" - -#: js/files.js:788 -msgid "folders" -msgstr "mape" - -#: js/files.js:796 -msgid "file" -msgstr "datoteka" - -#: js/files.js:798 -msgid "files" -msgstr "datoteke" - -#: js/files.js:842 -msgid "seconds ago" -msgstr "sekundi prije" - -#: js/files.js:843 -msgid "minute ago" -msgstr "minutu" - -#: js/files.js:844 -msgid "minutes ago" -msgstr "minuta" - -#: js/files.js:847 -msgid "today" -msgstr "danas" - -#: js/files.js:848 -msgid "yesterday" -msgstr "juÄer" - -#: js/files.js:849 -msgid "days ago" -msgstr "dana" - -#: js/files.js:850 -msgid "last month" -msgstr "proÅ¡li mjesec" +#: js/files.js:814 +msgid "1 folder" +msgstr "" -#: js/files.js:852 -msgid "months ago" -msgstr "mjeseci" +#: js/files.js:816 +msgid "{count} folders" +msgstr "" -#: js/files.js:853 -msgid "last year" -msgstr "proÅ¡lu godinu" +#: js/files.js:824 +msgid "1 file" +msgstr "" -#: js/files.js:854 -msgid "years ago" -msgstr "godina" +#: js/files.js:826 +msgid "{count} files" +msgstr "" #: templates/admin.php:5 msgid "File handling" @@ -223,27 +194,27 @@ msgstr "datoteka za rukovanje" msgid "Maximum upload size" msgstr "Maksimalna veliÄina prijenosa" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "maksimalna moguća: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Potrebno za preuzimanje viÅ¡e datoteke i mape" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Omogući ZIP-preuzimanje" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 je \"bez limita\"" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maksimalna veliÄina za ZIP datoteke" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Snimi" @@ -251,52 +222,48 @@ msgstr "Snimi" msgid "New" msgstr "novo" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "tekstualna datoteka" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "mapa" -#: templates/index.php:11 -msgid "From url" -msgstr "od URL-a" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "PoÅ¡alji" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Prekini upload" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Nema niÄega u ovoj mapi. PoÅ¡alji neÅ¡to!" -#: templates/index.php:50 -msgid "Share" -msgstr "podjeli" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Preuzmi" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Prijenos je preobiman" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Datoteke koje pokuÅ¡avate prenijeti prelaze maksimalnu veliÄinu za prijenos datoteka na ovom poslužitelju." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Datoteke se skeniraju, molimo priÄekajte." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Trenutno skeniranje" diff --git a/l10n/hr/files_pdfviewer.po b/l10n/hr/files_pdfviewer.po deleted file mode 100644 index 711c71bc86453f4e701e38cd7ebdbee83d9dc797..0000000000000000000000000000000000000000 --- a/l10n/hr/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/hr/files_texteditor.po b/l10n/hr/files_texteditor.po deleted file mode 100644 index 31c7b3bc4e2c9118e3f69043a4c5df8ef3120362..0000000000000000000000000000000000000000 --- a/l10n/hr/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/hr/gallery.po b/l10n/hr/gallery.po deleted file mode 100644 index 3bfe413c2855b3cea3eb5194c578eb6b1f9333c8..0000000000000000000000000000000000000000 --- a/l10n/hr/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Domagoj Delimar , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Croatian (http://www.transifex.net/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Slike" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Postavke" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Ponovo oÄitaj" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Zaustavi" - -#: templates/index.php:18 -msgid "Share" -msgstr "Podijeli" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Natrag" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Ukloni potvrdu" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Želite li ukloniti album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Promijeni ime albuma" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Novo ime albuma" diff --git a/l10n/hr/impress.po b/l10n/hr/impress.po deleted file mode 100644 index b66fc94ed8e9bce26b0f33005e49f999043bdf70..0000000000000000000000000000000000000000 --- a/l10n/hr/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/hr/lib.po b/l10n/hr/lib.po index a9682726b85ac2e3d5df173d3b5322517bcace57..80301078e43298af288527ebab9b4dbbd3317a69 100644 --- a/l10n/hr/lib.po +++ b/l10n/hr/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "Pomoć" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Osobno" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Postavke" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "Korisnici" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "GreÅ¡ka kod autorizacije" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 -msgid "seconds ago" +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Datoteke" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Tekst" + +#: search/provider/file.php:29 +msgid "Images" msgstr "" -#: template.php:87 +#: template.php:103 +msgid "seconds ago" +msgstr "sekundi prije" + +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 -msgid "today" +#: template.php:106 +msgid "1 hour ago" msgstr "" -#: template.php:92 -msgid "yesterday" +#: template.php:107 +#, php-format +msgid "%d hours ago" msgstr "" -#: template.php:93 +#: template.php:108 +msgid "today" +msgstr "danas" + +#: template.php:109 +msgid "yesterday" +msgstr "juÄer" + +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" -msgstr "" +msgstr "proÅ¡li mjesec" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" -msgstr "" +msgstr "proÅ¡lu godinu" -#: template.php:97 +#: template.php:114 msgid "years ago" -msgstr "" +msgstr "godina" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/hr/media.po b/l10n/hr/media.po deleted file mode 100644 index aa4711f5d5d663ef2a80cb4b76db7381072ede96..0000000000000000000000000000000000000000 --- a/l10n/hr/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Davor Kustec , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Croatian (http://www.transifex.net/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Glazba" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Reprodukcija" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pauza" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Prethodna" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Sljedeća" - -#: templates/music.php:7 -msgid "Mute" -msgstr "UtiÅ¡aj zvuk" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "UkljuÄi zvuk" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Ponovi skeniranje kolekcije" - -#: templates/music.php:37 -msgid "Artist" -msgstr "IzvoÄ‘aÄ" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Naslov" diff --git a/l10n/hr/settings.po b/l10n/hr/settings.po index 3be9de17ecbcdd938e5ed2ab680f06bdbe53821b..5410216db219ce20d2ef08d860a69d4092d99dec 100644 --- a/l10n/hr/settings.po +++ b/l10n/hr/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +20,73 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Nemogićnost uÄitavanja liste sa Apps Stora" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "GreÅ¡ka kod autorizacije" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email spremljen" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Neispravan email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID promijenjen" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Neispravan zahtjev" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "GreÅ¡ka kod autorizacije" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Jezik promijenjen" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "IskljuÄi" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "UkljuÄi" @@ -91,97 +94,10 @@ msgstr "UkljuÄi" msgid "Saving..." msgstr "Spremanje..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__ime_jezika__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "dnevnik" - -#: templates/admin.php:116 -msgid "More" -msgstr "viÅ¡e" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Dodajte vaÅ¡u aplikaciju" @@ -214,21 +130,21 @@ msgstr "Upravljanje velikih datoteka" msgid "Ask a question" msgstr "Postavite pitanje" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problem pri spajanju na bazu podataka pomoći" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Idite tamo ruÄno." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Odgovor" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -287,6 +203,16 @@ msgstr "Pomoć prevesti" msgid "use this address to connect to your ownCloud in your file manager" msgstr "koristite ovu adresu za spajanje na Cloud u vaÅ¡em upravitelju datoteka" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Ime" diff --git a/l10n/hr/tasks.po b/l10n/hr/tasks.po deleted file mode 100644 index 210a819f64c98d54c7a42734427f822349f1067c..0000000000000000000000000000000000000000 --- a/l10n/hr/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/hr/user_migrate.po b/l10n/hr/user_migrate.po deleted file mode 100644 index edbfa8b17645821b89ee3df2ba2e849af4af7e74..0000000000000000000000000000000000000000 --- a/l10n/hr/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/hr/user_openid.po b/l10n/hr/user_openid.po deleted file mode 100644 index 1f9e7c5ad595e9111a7889e3212b31de456e60ed..0000000000000000000000000000000000000000 --- a/l10n/hr/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/hr/files_odfviewer.po b/l10n/hr/user_webdavauth.po similarity index 75% rename from l10n/hr/files_odfviewer.po rename to l10n/hr/user_webdavauth.po index ad4066e3f624e68b7d7e8b3fab307094d81c622c..8837bf71d7321fc24605bf6f0d56f556134f1361 100644 --- a/l10n/hr/files_odfviewer.po +++ b/l10n/hr/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/hu_HU/admin_dependencies_chk.po b/l10n/hu_HU/admin_dependencies_chk.po deleted file mode 100644 index 1dad50f27ac8b0990773c2b43eeb3a20f55eb001..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/hu_HU/admin_migrate.po b/l10n/hu_HU/admin_migrate.po deleted file mode 100644 index f23b87abaa34a868bb9ef245d539bac996c99e75..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/hu_HU/bookmarks.po b/l10n/hu_HU/bookmarks.po deleted file mode 100644 index 4fe0e566ab13f56bc560a001dd8e81215d867de7..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/hu_HU/calendar.po b/l10n/hu_HU/calendar.po deleted file mode 100644 index 4e689ee90eb853543457b3d982f9cf7b9efc9c10..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Adam Toth , 2012. -# Peter Borsa , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Nem található naptár" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Nem található esemény" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Hibás naptár" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Új idÅ‘zóna" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "IdÅ‘zóna megváltozott" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Érvénytelen kérés" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Naptár" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "nnn" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "nnn H/n" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "nnnn H/n" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "HHHH éééé" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "nnnn, HHH n, éééé" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Születésap" - -#: lib/app.php:122 -msgid "Business" -msgstr "Ãœzlet" - -#: lib/app.php:123 -msgid "Call" -msgstr "Hívás" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Kliensek" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Szállító" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Ãœnnepek" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ötletek" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Utazás" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Évforduló" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Találkozó" - -#: lib/app.php:131 -msgid "Other" -msgstr "Egyéb" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Személyes" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projektek" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Kérdések" - -#: lib/app.php:135 -msgid "Work" -msgstr "Munka" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "névtelen" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Új naptár" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Nem ismétlÅ‘dik" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Napi" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Heti" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Minden hétköznap" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Kéthetente" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Havi" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Évi" - -#: lib/object.php:388 -msgid "never" -msgstr "soha" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "elÅ‘fordulás szerint" - -#: lib/object.php:390 -msgid "by date" -msgstr "dátum szerint" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "hónap napja szerint" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "hét napja szerint" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "HétfÅ‘" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Kedd" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Szerda" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Csütörtök" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Péntek" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Szombat" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Vasárnap" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "hónap heteinek sorszáma" - -#: lib/object.php:428 -msgid "first" -msgstr "elsÅ‘" - -#: lib/object.php:429 -msgid "second" -msgstr "második" - -#: lib/object.php:430 -msgid "third" -msgstr "harmadik" - -#: lib/object.php:431 -msgid "fourth" -msgstr "negyedik" - -#: lib/object.php:432 -msgid "fifth" -msgstr "ötödik" - -#: lib/object.php:433 -msgid "last" -msgstr "utolsó" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Január" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Február" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Március" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Ãprilis" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Május" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Június" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Július" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Augusztus" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Szeptember" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Október" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "December" - -#: lib/object.php:488 -msgid "by events date" -msgstr "az esemény napja szerint" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "az év napja(i) szerint" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "a hét sorszáma szerint" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "nap és hónap szerint" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Dátum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Naptár" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Egész nap" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Hiányzó mezÅ‘k" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Cím" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Napjától" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "IdÅ‘tÅ‘l" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Napig" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Ideig" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Az esemény véget ér a kezdés elÅ‘tt." - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Adatbázis hiba történt" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Hét" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Hónap" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Ma" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Naptárjaid" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDAV link" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Megosztott naptárak" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Nincs megosztott naptár" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Naptármegosztás" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Letöltés" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Szerkesztés" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Törlés" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "megosztotta veled: " - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Új naptár" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Naptár szerkesztése" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Megjelenítési név" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktív" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Naptár szín" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Mentés" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Beküldés" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Mégse" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Esemény szerkesztése" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Export" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Eseményinfó" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "IsmétlÅ‘dÅ‘" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Riasztás" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "RésztvevÅ‘k" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Megosztás" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Az esemény címe" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategória" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "VesszÅ‘vel válaszd el a kategóriákat" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Kategóriák szerkesztése" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Egész napos esemény" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "EttÅ‘l" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Eddig" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Haladó beállítások" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Hely" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Az esemény helyszíne" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Leírás" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Az esemény leírása" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ismétlés" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Haladó" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Hétköznapok kiválasztása" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Napok kiválasztása" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "és az éves esemény napja." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "és a havi esemény napja." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Hónapok kiválasztása" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Hetek kiválasztása" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "és az heti esemény napja." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "IdÅ‘köz" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Vége" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "elÅ‘fordulások" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "új naptár létrehozása" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Naptár-fájl importálása" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Új naptár neve" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importálás" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Párbeszédablak bezárása" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Új esemény létrehozása" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Esemény megtekintése" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nincs kiválasztott kategória" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr ", tulaj " - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr ", " - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "IdÅ‘zóna" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Felhasználók" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "válassz felhasználókat" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "SzerkeszthetÅ‘" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Csoportok" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "válassz csoportokat" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "nyilvánossá tétel" diff --git a/l10n/hu_HU/contacts.po b/l10n/hu_HU/contacts.po deleted file mode 100644 index e1ab92a5a44343a563628b6219c28063dd6999d6..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/contacts.po +++ /dev/null @@ -1,956 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Adam Toth , 2012. -# , 2011. -# Peter Borsa , 2011. -# Tamas Nagy , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Címlista (de)aktiválása sikertelen" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID nincs beállítva" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Ãœres névvel nem frissíthetÅ‘ a címlista" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Hiba a címlista frissítésekor" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Nincs ID megadva" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Hiba az ellenÅ‘rzőösszeg beállításakor" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Nincs kiválasztva törlendÅ‘ kategória" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nem található címlista" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nem található kontakt" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Hiba a kapcsolat hozzáadásakor" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "az elem neve nincs beállítva" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Nem adható hozzá üres tulajdonság" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Legalább egy címmezÅ‘ kitöltendÅ‘" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Kísérlet dupla tulajdonság hozzáadására: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "A vCardról szóló információ helytelen. Töltsd újra az oldalt." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Hiányzó ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "VCard elemzése sikertelen a következÅ‘ ID-hoz: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "az ellenÅ‘rzőösszeg nincs beállítva" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Helytelen információ a vCardról. Töltse újra az oldalt: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Valami balul sült el." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Nincs ID megadva a kontakthoz" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "A kontakt képének beolvasása sikertelen" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Ideiglenes fájl mentése sikertelen" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "A kép érvénytelen" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Hiányzik a kapcsolat ID" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Nincs fénykép-útvonal megadva" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "A fájl nem létezik:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Kép betöltése sikertelen" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "A kontakt-objektum feldolgozása sikertelen" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "A PHOTO-tulajdonság feldolgozása sikertelen" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "A kontakt mentése sikertelen" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Képméretezés sikertelen" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Képvágás sikertelen" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Ideiglenes kép létrehozása sikertelen" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "A kép nem található" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Hiba a kapcsolatok feltöltésekor" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Nincs hiba, a fájl sikeresen feltöltÅ‘dött" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "A feltöltött fájl mérete meghaladja az upload_max_filesize értéket a php.ini-ben" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "A feltöltött fájl mérete meghaladja a HTML form-ban megadott MAX_FILE_SIZE értéket" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "A fájl csak részlegesen lett feltöltve" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Nincs feltöltött fájl" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Hiányzik az ideiglenes könyvtár" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Ideiglenes kép létrehozása sikertelen" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Ideiglenes kép betöltése sikertelen" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Nem történt feltöltés. Ismeretlen hiba" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kapcsolatok" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Sajnáljuk, ez a funkció még nem támogatott" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Nem támogatott" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Érvényes cím lekérése sikertelen" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Hiba" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Ezt a tulajdonságot muszáj kitölteni" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Sorbarakás sikertelen" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "A 'deleteProperty' argumentum nélkül lett meghívva. Kérjük, jelezze a hibát." - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Név szerkesztése" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Nincs kiválasztva feltöltendÅ‘ fájl" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "A feltöltendÅ‘ fájl mérete meghaladja a megengedett mértéket" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Típus kiválasztása" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Eredmény: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " beimportálva, " - -#: js/loader.js:49 -msgid " failed." -msgstr " sikertelen" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ez nem a te címjegyzéked." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kapcsolat nem található." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Munkahelyi" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Otthoni" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobiltelefonszám" - -#: lib/app.php:203 -msgid "Text" -msgstr "Szöveg" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Hang" - -#: lib/app.php:205 -msgid "Message" -msgstr "Ãœzenet" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Személyhívó" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Születésnap" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} születésnapja" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kapcsolat" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Kapcsolat hozzáadása" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Import" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Címlisták" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Bezár" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Húzza ide a feltöltendÅ‘ képet" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Aktuális kép törlése" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Aktuális kép szerkesztése" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Új kép feltöltése" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Kép kiválasztása ownCloud-ból" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formátum egyedi, Rövid név, Teljes név, Visszafelé vagy Visszafelé vesszÅ‘vel" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Név részleteinek szerkesztése" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Szervezet" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Törlés" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Becenév" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Becenév megadása" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "yyyy-mm-dd" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Csoportok" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "VesszÅ‘vel válassza el a csoportokat" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Csoportok szerkesztése" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "ElÅ‘nyben részesített" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Adjon meg érvényes email címet" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Adja meg az email címet" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Postai cím" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Email cím törlése" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Adja meg a telefonszámot" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Telefonszám törlése" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Megtekintés a térképen" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Cím részleteinek szerkesztése" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Megjegyzések" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "MezÅ‘ hozzáadása" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefonszám" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Cím" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Jegyzet" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Kapcsolat letöltése" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Kapcsolat törlése" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Az ideiglenes kép el lett távolítva a gyorsítótárból" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Cím szerkesztése" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Típus" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postafiók" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Kiterjesztett" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Város" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Megye" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Irányítószám" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Ország" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Címlista" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "ElÅ‘tag" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Miss" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Ms" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Mr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Mrs" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Teljes név" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "További nevek" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Családnév" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Utótag" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Ifj." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Id." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Kapcsolat-fájl importálása" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Válassza ki a címlistát" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Címlista létrehozása" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Új címlista neve" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Kapcsolatok importálása" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Nincsenek kapcsolatok a címlistában" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Kapcsolat hozzáadása" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV szinkronizációs címek" - -#: templates/settings.php:3 -msgid "more info" -msgstr "további információ" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "ElsÅ‘dleges cím" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Letöltés" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Szerkesztés" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Új címlista" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Mentés" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Mégsem" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index 0b0e753c080a794388aebfc08921b512485fe124..7f656a4ac7ff3dba5f0afe626a8f7e47b4bc31cb 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/core.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,208 +20,241 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Alkalmazásnév hiányzik" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Nincs hozzáadandó kategória?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Ez a kategória már létezik" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Nincs törlésre jelölt kategória" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Beállítások" -#: js/js.js:645 -msgid "January" -msgstr "Január" +#: js/js.js:688 +msgid "seconds ago" +msgstr "másodperccel ezelÅ‘tt" -#: js/js.js:645 -msgid "February" -msgstr "Február" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 perccel ezelÅ‘tt" -#: js/js.js:645 -msgid "March" -msgstr "Március" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Ãprilis" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Május" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Június" +#: js/js.js:693 +msgid "today" +msgstr "ma" -#: js/js.js:646 -msgid "July" -msgstr "Július" +#: js/js.js:694 +msgid "yesterday" +msgstr "tegnap" -#: js/js.js:646 -msgid "August" -msgstr "Augusztus" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "Szeptember" +#: js/js.js:696 +msgid "last month" +msgstr "múlt hónapban" -#: js/js.js:646 -msgid "October" -msgstr "Október" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:698 +msgid "months ago" +msgstr "hónappal ezelÅ‘tt" -#: js/js.js:646 -msgid "December" -msgstr "December" +#: js/js.js:699 +msgid "last year" +msgstr "tavaly" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "évvel ezelÅ‘tt" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Mégse" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nem" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Igen" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Nincs törlésre jelölt kategória" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Hiba" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Jelszó" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Nem oszt meg" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "létrehozás" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud jelszó-visszaállítás" @@ -234,19 +267,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Egy e-mailben kap értesítést a jelszóváltoztatás módjáról." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Kérés elküldve" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Belépés sikertelen!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Felhasználónév" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Visszaállítás igénylése" @@ -298,72 +331,187 @@ msgstr "A felhÅ‘ nem található" msgid "Edit categories" msgstr "Kategóriák szerkesztése" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Hozzáadás" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Biztonsági figyelmeztetés" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Rendszergazdafiók létrehozása" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Haladó" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Adatkönyvtár" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Adatbázis konfigurálása" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "használva lesz" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Adatbázis felhasználónév" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Adatbázis jelszó" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Adatbázis név" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Adatbázis szerver" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Beállítás befejezése" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Vasárnap" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "HétfÅ‘" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Kedd" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Szerda" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Csütörtök" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Péntek" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Szombat" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Január" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Február" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Március" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Ãprilis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Május" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Június" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Július" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Augusztus" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Szeptember" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Október" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "December" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "webszolgáltatások az irányításod alatt" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Kilépés" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Elfelejtett jelszó?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "emlékezzen" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Bejelentkezés" @@ -378,3 +526,17 @@ msgstr "ElÅ‘zÅ‘" #: templates/part.pagenavi.php:20 msgid "next" msgstr "KövetkezÅ‘" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index bd28c3b21e4abe710848bbfcaf182660ed879704..cddd901f0787dc12153f3ee13de35f8016244c2f 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,194 +25,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Nincs hiba, a fájl sikeresen feltöltve." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "A feltöltött file meghaladja az upload_max_filesize direktívát a php.ini-ben." +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "A feltöltött fájl meghaladja a MAX_FILE_SIZE direktívát ami meghatározott a HTML form-ban." -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Az eredeti fájl csak részlegesen van feltöltve." -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nem lett fájl feltöltve." -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Hiányzik az ideiglenes könyvtár" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Nem írható lemezre" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Fájlok" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "Nem oszt meg" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Törlés" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "már létezik" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "cserél" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "mégse" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "kicserélve" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "visszavon" -#: js/filelist.js:241 -msgid "with" -msgstr "-val/-vel" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "törölve" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "ZIP-fájl generálása, ez eltarthat egy ideig." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nem tölthetÅ‘ fel, mert mappa volt, vagy 0 byte méretű" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Feltöltési hiba" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Bezár" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Folyamatban" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Feltöltés megszakítva" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Érvénytelen név, a '/' nem megengedett" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Név" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Méret" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Módosítva" -#: js/files.js:777 -msgid "folder" -msgstr "mappa" - -#: js/files.js:779 -msgid "folders" -msgstr "mappák" - -#: js/files.js:787 -msgid "file" -msgstr "fájl" - -#: js/files.js:789 -msgid "files" -msgstr "fájlok" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:838 -msgid "today" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -223,80 +194,76 @@ msgstr "Fájlkezelés" msgid "Maximum upload size" msgstr "Maximális feltölthetÅ‘ fájlméret" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. lehetséges" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Kötegelt file- vagy mappaletöltéshez szükséges" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "ZIP-letöltés engedélyezése" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 = korlátlan" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ZIP file-ok maximum mérete" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Mentés" #: templates/index.php:7 msgid "New" msgstr "Új" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Szövegfájl" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Mappa" -#: templates/index.php:11 -msgid "From url" -msgstr "URL-bÅ‘l" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Feltöltés" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Feltöltés megszakítása" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Töltsön fel egy fájlt." -#: templates/index.php:50 -msgid "Share" -msgstr "Megosztás" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Letöltés" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Feltöltés túl nagy" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "A fájlokat amit próbálsz feltölteni meghaladta a legnagyobb fájlméretet ezen a szerveren." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "File-ok vizsgálata, kis türelmet" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Aktuális vizsgálat" diff --git a/l10n/hu_HU/files_pdfviewer.po b/l10n/hu_HU/files_pdfviewer.po deleted file mode 100644 index 1499ece9d1547e8a58436c1ed9ad203f57961120..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/hu_HU/files_texteditor.po b/l10n/hu_HU/files_texteditor.po deleted file mode 100644 index bf2f4e4b51c2c4b7540864c213217ae6f4c5fb98..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/hu_HU/gallery.po b/l10n/hu_HU/gallery.po deleted file mode 100644 index 2953d7adda80b12f0db746dbf8b19d5d182f9420..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Adam Toth , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.net/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Képek" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Beállítások" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Újravizsgálás" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Ãllj" - -#: templates/index.php:18 -msgid "Share" -msgstr "Megosztás" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Vissza" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "MegerÅ‘sítés eltávolítása" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "El akarja távolítani az albumot?" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Albumnév megváltoztatása" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Új albumnév" diff --git a/l10n/hu_HU/impress.po b/l10n/hu_HU/impress.po deleted file mode 100644 index 4c5473d27ed772f64274ceb705f8de8db6f7f6e0..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/hu_HU/lib.po b/l10n/hu_HU/lib.po index ddbcd4f2d02937a237aa3e69178167a5662c210f..18f4e74d072f2d3af51b17f2dbb313e9841aeac3 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/lib.po @@ -8,53 +8,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Súgó" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Személyes" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Beállítások" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Felhasználók" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Alkalmazások" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP-letöltés letiltva" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "A file-okat egyenként kell letölteni" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Vissza a File-okhoz" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Túl nagy file-ok a zip-generáláshoz" @@ -62,7 +62,7 @@ msgstr "Túl nagy file-ok a zip-generáláshoz" msgid "Application is not enabled" msgstr "Az alkalmazás nincs engedélyezve" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Hitelesítési hiba" @@ -70,57 +70,84 @@ msgstr "Hitelesítési hiba" msgid "Token expired. Please reload page." msgstr "A token lejárt. Frissítsd az oldalt." -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Fájlok" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Szöveg" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "másodperccel ezelÅ‘tt" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 perccel ezelÅ‘tt" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d perccel ezelÅ‘tt" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "ma" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "tegnap" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d évvel ezelÅ‘tt" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "múlt hónapban" -#: template.php:95 -msgid "months ago" -msgstr "hónappal ezelÅ‘tt" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "tavaly" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "évvel ezelÅ‘tt" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/hu_HU/media.po b/l10n/hu_HU/media.po deleted file mode 100644 index aead2550d9b507770d5530dcee56707fc041ded3..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Adam Toth , 2012. -# Peter Borsa , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.net/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Zene" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Lejátszás" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Szünet" - -#: templates/music.php:5 -msgid "Previous" -msgstr "ElÅ‘zÅ‘" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "KövetkezÅ‘" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Némítás" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Némítás megszüntetése" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Gyűjtemény újraolvasása" - -#: templates/music.php:37 -msgid "Artist" -msgstr "ElÅ‘adó" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Cím" diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index b465fe6a335f2d1f438378eec9024a4841fac364..f83e6251d1b3c7d67804add2d72eeb894064971d 100644 --- a/l10n/hu_HU/settings.po +++ b/l10n/hu_HU/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +19,73 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Nem tölthetÅ‘ le a lista az App Store-ból" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Hitelesítési hiba" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email mentve" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Hibás email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID megváltozott" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Érvénytelen kérés" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Hitelesítési hiba" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "A nyelv megváltozott" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Letiltás" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Engedélyezés" @@ -90,97 +93,10 @@ msgstr "Engedélyezés" msgid "Saving..." msgstr "Mentés..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Biztonsági figyelmeztetés" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Napló" - -#: templates/admin.php:116 -msgid "More" -msgstr "Tovább" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "App hozzáadása" @@ -213,21 +129,21 @@ msgstr "Nagy fájlok kezelése" msgid "Ask a question" msgstr "Tégy fel egy kérdést" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Sikertelen csatlakozás a Súgó adatbázishoz" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Menj oda kézzel" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Válasz" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -286,6 +202,16 @@ msgstr "Segíts lefordítani!" msgid "use this address to connect to your ownCloud in your file manager" msgstr "Használd ezt a címet hogy csatlakozz a saját ownCloud rendszeredhez a fájlkezelÅ‘dben" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Név" diff --git a/l10n/hu_HU/tasks.po b/l10n/hu_HU/tasks.po deleted file mode 100644 index 73f8d611037e19d0b243036cdc3ac501b75eba8d..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/hu_HU/user_migrate.po b/l10n/hu_HU/user_migrate.po deleted file mode 100644 index ba51abb24d95d30d3c21d2469c122e3646f93c6b..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/hu_HU/user_openid.po b/l10n/hu_HU/user_openid.po deleted file mode 100644 index bc86ad58968e77c5a08b75e58f8635db6d1058c7..0000000000000000000000000000000000000000 --- a/l10n/hu_HU/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/hu_HU/files_odfviewer.po b/l10n/hu_HU/user_webdavauth.po similarity index 74% rename from l10n/hu_HU/files_odfviewer.po rename to l10n/hu_HU/user_webdavauth.po index 159ec8745238ae828ff4e2a2af45c63295d7129f..cdb772c8e4671248f321c4cf5363a420c131c9b8 100644 --- a/l10n/hu_HU/files_odfviewer.po +++ b/l10n/hu_HU/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu_HU\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/hy/admin_dependencies_chk.po b/l10n/hy/admin_dependencies_chk.po deleted file mode 100644 index c649d0fc44d59f232752da59f14dc0b805de0165..0000000000000000000000000000000000000000 --- a/l10n/hy/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/hy/admin_migrate.po b/l10n/hy/admin_migrate.po deleted file mode 100644 index 2affc03615a0f5d02b5957b0fbc5b12e6c2f8fd8..0000000000000000000000000000000000000000 --- a/l10n/hy/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/hy/bookmarks.po b/l10n/hy/bookmarks.po deleted file mode 100644 index 74aef2630193c66083ce91e652c8d4baebcb1424..0000000000000000000000000000000000000000 --- a/l10n/hy/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/hy/calendar.po b/l10n/hy/calendar.po deleted file mode 100644 index 2187e755864c3fb9c9ad9eaf17272f1bfa42f3ec..0000000000000000000000000000000000000000 --- a/l10n/hy/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Arman Poghosyan , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Õ•Ö€Õ¡ÖÕ¸Ö‚ÕµÖ" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "Ô±ÕµÕ¬" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Ô±Õ´Õ«Õ½" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Ô±ÕµÕ½Ö…Ö€" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Ô²Õ¥Õ¼Õ¶Õ¥Õ¬" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Õ‹Õ¶Õ»Õ¥Õ¬" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "ÕŠÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Õ€Õ¡Õ½Õ¿Õ¡Õ¿Õ¥Õ¬" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Õ†Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/hy/contacts.po b/l10n/hy/contacts.po deleted file mode 100644 index 4cffb4779e5a06971cf132c322f371c27ad36f82..0000000000000000000000000000000000000000 --- a/l10n/hy/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/hy/core.po b/l10n/hy/core.po index 7a03a8bcd298a2307763337687741defbbafbfe9..868a6e0e91c3950b3ad24df3b04694fbaf70b6bb 100644 --- a/l10n/hy/core.po +++ b/l10n/hy/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" +"POT-Creation-Date: 2012-10-18 02:03+0200\n" +"PO-Revision-Date: 2012-10-18 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" @@ -29,55 +29,55 @@ msgstr "" msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 msgid "Settings" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "January" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "February" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "March" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "April" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "May" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "June" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "July" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "August" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "September" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "October" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "November" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "December" msgstr "" @@ -105,8 +105,8 @@ msgstr "" msgid "No categories selected for deletion." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 +#: js/share.js:509 msgid "Error" msgstr "" @@ -123,15 +123,11 @@ msgid "Error while changing permissions" msgstr "" #: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +msgid "Shared with you and the group {group} by {owner}" msgstr "" #: js/share.js:132 -msgid "Shared with you by" +msgid "Shared with you by {owner}" msgstr "" #: js/share.js:137 @@ -146,7 +142,8 @@ msgstr "" msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:147 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" @@ -171,50 +168,46 @@ msgid "Resharing is not allowed" msgstr "" #: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +msgid "Shared in {item} with {user}" msgstr "" #: js/share.js:271 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:283 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:285 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:288 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:291 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:294 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:297 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:322 js/share.js:484 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:497 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:509 msgid "Error setting expiration date" msgstr "" @@ -238,12 +231,12 @@ msgstr "" msgid "Login failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -299,52 +292,77 @@ msgstr "" msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:38 msgid "web services under your control" msgstr "" @@ -352,15 +370,29 @@ msgstr "" msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +407,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/hy/files.po b/l10n/hy/files.po index c512f61b7853650f387935379461a7cd1b79d3ea..57f0d5ce5f88bce2835e13999c40ec96754c572c 100644 --- a/l10n/hy/files.po +++ b/l10n/hy/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" +"POT-Creation-Date: 2012-10-19 02:03+0200\n" +"PO-Revision-Date: 2012-10-19 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" @@ -63,152 +63,152 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:194 js/filelist.js:196 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:194 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:243 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:243 js/filelist.js:245 js/filelist.js:277 js/filelist.js:279 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:245 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:277 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:279 +msgid "deleted {files}" msgstr "" #: js/files.js:179 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:242 js/files.js:347 js/files.js:377 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:262 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:265 js/files.js:310 js/files.js:325 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:328 js/files.js:361 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:430 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 +#: js/files.js:500 msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:681 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:689 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:762 templates/index.php:48 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:763 templates/index.php:56 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:764 templates/index.php:58 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:791 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:793 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:801 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" +#: js/files.js:803 +msgid "{count} files" msgstr "" -#: js/files.js:833 +#: js/files.js:846 msgid "seconds ago" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:847 +msgid "1 minute ago" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:848 +msgid "{minutes} minutes ago" msgstr "" -#: js/files.js:838 +#: js/files.js:851 msgid "today" msgstr "" -#: js/files.js:839 +#: js/files.js:852 msgid "yesterday" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:853 +msgid "{days} days ago" msgstr "" -#: js/files.js:841 +#: js/files.js:854 msgid "last month" msgstr "" -#: js/files.js:843 +#: js/files.js:856 msgid "months ago" msgstr "" -#: js/files.js:844 +#: js/files.js:857 msgid "last year" msgstr "" -#: js/files.js:845 +#: js/files.js:858 msgid "years ago" msgstr "" diff --git a/l10n/hy/files_odfviewer.po b/l10n/hy/files_odfviewer.po deleted file mode 100644 index bdc26a3a67acd2fa433feb74dccec30e26db5363..0000000000000000000000000000000000000000 --- a/l10n/hy/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/hy/files_pdfviewer.po b/l10n/hy/files_pdfviewer.po deleted file mode 100644 index 7b725e07b84839146b155b1e2d2bb2ef1ae3e732..0000000000000000000000000000000000000000 --- a/l10n/hy/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/hy/files_texteditor.po b/l10n/hy/files_texteditor.po deleted file mode 100644 index e9e8f856c93008d137c872590900fe52577a56cb..0000000000000000000000000000000000000000 --- a/l10n/hy/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/hy/gallery.po b/l10n/hy/gallery.po deleted file mode 100644 index c9eb3b260a826958f67040e71cc89aa0a79ff701..0000000000000000000000000000000000000000 --- a/l10n/hy/gallery.po +++ /dev/null @@ -1,94 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Armenian (http://www.transifex.net/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/hy/impress.po b/l10n/hy/impress.po deleted file mode 100644 index 78bcd125e1a8be817e2190f94874760124d8628b..0000000000000000000000000000000000000000 --- a/l10n/hy/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/hy/media.po b/l10n/hy/media.po deleted file mode 100644 index fb40ed0755f536428bfbb6fa1adf3a6d0bb1bb02..0000000000000000000000000000000000000000 --- a/l10n/hy/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Armenian (http://www.transifex.net/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/hy/tasks.po b/l10n/hy/tasks.po deleted file mode 100644 index d459a98917c377fb752b5e22ced51fe0e88ce5ba..0000000000000000000000000000000000000000 --- a/l10n/hy/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/hy/user_migrate.po b/l10n/hy/user_migrate.po deleted file mode 100644 index b834f8ceeeef7aaec4975e249272eea240cbd5e8..0000000000000000000000000000000000000000 --- a/l10n/hy/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/hy/user_openid.po b/l10n/hy/user_openid.po deleted file mode 100644 index ccf243a3aa0e37ee6fb4ee34ed23258c6051640a..0000000000000000000000000000000000000000 --- a/l10n/hy/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/ia/admin_dependencies_chk.po b/l10n/ia/admin_dependencies_chk.po deleted file mode 100644 index 1ac2e890832ff18dc24777c1327767fa5b72abb7..0000000000000000000000000000000000000000 --- a/l10n/ia/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/ia/admin_migrate.po b/l10n/ia/admin_migrate.po deleted file mode 100644 index c767ecf34f8a20aaa8531cb7faf614bf7121c62d..0000000000000000000000000000000000000000 --- a/l10n/ia/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/ia/bookmarks.po b/l10n/ia/bookmarks.po deleted file mode 100644 index 1848a204c0a4c45a448e68de67fc216929c4d77a..0000000000000000000000000000000000000000 --- a/l10n/ia/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/ia/calendar.po b/l10n/ia/calendar.po deleted file mode 100644 index 1f9814996359efdacaf1136585e86c9bc301ff1a..0000000000000000000000000000000000000000 --- a/l10n/ia/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Emilio Sepúlveda , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Necun calendarios trovate." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Nulle eventos trovate." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nove fuso horari" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Requesta invalide." - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendario" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Anniversario de nativitate" - -#: lib/app.php:122 -msgid "Business" -msgstr "Affaires" - -#: lib/app.php:123 -msgid "Call" -msgstr "Appello" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clientes" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Dies feriate" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Incontro" - -#: lib/app.php:131 -msgid "Other" -msgstr "Altere" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personal" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projectos" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Demandas" - -#: lib/app.php:135 -msgid "Work" -msgstr "Travalio" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "sin nomine" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nove calendario" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Non repite" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Quotidian" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Septimanal" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Cata die" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensual" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Cata anno" - -#: lib/object.php:388 -msgid "never" -msgstr "nunquam" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "per data" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Lunedi" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Martedi" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Mercuridi" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Jovedi" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Venerdi" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sabbato" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Dominica" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "prime" - -#: lib/object.php:429 -msgid "second" -msgstr "secunde" - -#: lib/object.php:430 -msgid "third" -msgstr "tertie" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "ultime" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "januario" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februario" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Martio" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mai" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Junio" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Julio" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Augusto" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Septembre" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Octobre" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembre" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Decembre" - -#: lib/object.php:488 -msgid "by events date" -msgstr "per data de eventos" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "per dia e mense" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Omne die" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Campos incomplete" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titulo" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Data de initio" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Hora de initio" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Data de fin" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Hora de fin" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Septimana" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mense" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hodie" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Tu calendarios" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Discarga" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Modificar" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Deler" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nove calendario" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Modificar calendario" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Active" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Color de calendario" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Salveguardar" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Inviar" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Cancellar" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Modificar evento" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportar" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Compartir" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Titulo del evento." - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categoria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Modificar categorias" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Ab" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "A" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Optiones avantiate" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Loco" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Loco del evento." - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Description" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Description del evento" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Repeter" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avantiate" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Seliger dies del septimana" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Seliger dies" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Seliger menses" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Seliger septimanas" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervallo" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Fin" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "crear un nove calendario" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importar un file de calendario" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nomine del calendario" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importar" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Clauder dialogo" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Crear un nove evento" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Vide un evento" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nulle categorias seligite" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "in" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Fuso horari" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Usatores" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Gruppos" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/ia/contacts.po b/l10n/ia/contacts.po deleted file mode 100644 index 8b6bbeb6752f0b493142436aac77ade0ab1c0359..0000000000000000000000000000000000000000 --- a/l10n/ia/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Emilio Sepúlveda , 2011. -# Emilio Sepúlveda , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nulle adressario trovate" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nulle contactos trovate." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Non pote adder proprietate vacue." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Error durante le scriptura in le file temporari" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Il habeva un error durante le cargamento del imagine." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Nulle file esseva incargate." - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Manca un dossier temporari" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Contactos" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Iste non es tu libro de adresses" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Contacto non poterea esser legite" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Travalio" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Domo" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobile" - -#: lib/app.php:203 -msgid "Text" -msgstr "Texto" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voce" - -#: lib/app.php:205 -msgid "Message" -msgstr "Message" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Anniversario" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contacto" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Adder contacto" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importar" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adressarios" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Deler photo currente" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Modificar photo currente" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Incargar nove photo" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Seliger photo ex ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisation" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Deler" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Pseudonymo" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Inserer pseudonymo" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Gruppos" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Modificar gruppos" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferite" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Entrar un adresse de e-posta" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Deler adresse de E-posta" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Entrar un numero de telephono" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Deler numero de telephono" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Vider in un carta" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Adder notas hic" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Adder campo" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Phono" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-posta" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresse" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Discargar contacto" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Deler contacto" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Modificar adresses" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Typo" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Cassa postal" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Extendite" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Citate" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Region" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Codice postal" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Pais" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adressario" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Prefixos honorific" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Senioretta" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Sr." - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Sra." - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Nomine date" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Nomines additional" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Nomine de familia" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Suffixos honorific" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importar un file de contactos" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Per favor selige le adressario" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Crear un nove adressario" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nomine del nove gruppo:" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Adder adressario" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "plus info" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Discargar" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Modificar" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nove adressario" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Salveguardar" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Cancellar" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/ia/core.po b/l10n/ia/core.po index 76ea29ba15ca912dfd2ae289e421173cdc326401..f068f3fb585d13f55c4e45d2e0ca675dadd134fc 100644 --- a/l10n/ia/core.po +++ b/l10n/ia/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Iste categoria jam existe:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Configurationes" -#: js/js.js:645 -msgid "January" +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:645 -msgid "February" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:645 -msgid "March" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:645 -msgid "April" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:645 -msgid "May" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:645 -msgid "June" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:646 -msgid "July" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:646 -msgid "August" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:646 -msgid "September" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:646 -msgid "October" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:646 -msgid "November" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:646 -msgid "December" +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" -msgstr "" +msgstr "Cancellar" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Contrasigno" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Reinitialisation del contrasigno de ownCLoud" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Requestate" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Initio de session fallite!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nomine de usator" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Requestar reinitialisation" @@ -296,72 +329,187 @@ msgstr "Nube non trovate" msgid "Edit categories" msgstr "Modificar categorias" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Adder" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Crear un conto de administration" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avantiate" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Dossier de datos" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configurar le base de datos" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "essera usate" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Usator de base de datos" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Contrasigno de base de datos" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nomine de base de datos" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Hospite de base de datos" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Dominica" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Lunedi" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Martedi" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Mercuridi" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Jovedi" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Venerdi" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Sabbato" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "januario" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februario" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Martio" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Junio" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Julio" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Augusto" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Septembre" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Octobre" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Novembre" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Decembre" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "servicios web sub tu controlo" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Clauder le session" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Tu perdeva le contrasigno?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "memora" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Aperir session" @@ -376,3 +524,17 @@ msgstr "prev" #: templates/part.pagenavi.php:20 msgid "next" msgstr "prox" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index 193354c48b257c183b2e158038b7661183399400..3f93aeb396137ebf5a4e219e9a3ca1894a5348b7 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,194 +24,165 @@ msgid "There is no error, the file uploaded with success" msgstr "" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Le file incargate solmente esseva incargate partialmente" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nulle file esseva incargate" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" -msgstr "" +msgstr "Manca un dossier temporari" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Files" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Deler" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Clauder" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nomine" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Dimension" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificate" -#: js/files.js:777 -msgid "folder" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -222,80 +193,76 @@ msgstr "" msgid "Maximum upload size" msgstr "Dimension maxime de incargamento" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Salveguardar" #: templates/index.php:7 msgid "New" msgstr "Nove" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "File de texto" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Dossier" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Incargar" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Nihil hic. Incarga alcun cosa!" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Discargar" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Incargamento troppo longe" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/ia/files_pdfviewer.po b/l10n/ia/files_pdfviewer.po deleted file mode 100644 index 46c46d9c816edfd6521cd2ad1017b42b877c8e0b..0000000000000000000000000000000000000000 --- a/l10n/ia/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ia/files_texteditor.po b/l10n/ia/files_texteditor.po deleted file mode 100644 index a7f1af65067826186cd8ddb8d929cba7166aa90d..0000000000000000000000000000000000000000 --- a/l10n/ia/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ia/gallery.po b/l10n/ia/gallery.po deleted file mode 100644 index 3e8249066f6a7e6cc8fb58dcaca154e06ca1e6e0..0000000000000000000000000000000000000000 --- a/l10n/ia/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Emilio Sepúlveda , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Interlingua (http://www.transifex.net/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Rescannar" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Retro" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/ia/impress.po b/l10n/ia/impress.po deleted file mode 100644 index 0f36f5ce300554d66f0a4146254d3cdf8c0bf2d3..0000000000000000000000000000000000000000 --- a/l10n/ia/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/ia/lib.po b/l10n/ia/lib.po index ea036a2639920b49c7842199679e2e6ec4c9e022..ac4ffabd499c1dc587ae63cc850073c0ddf9ed16 100644 --- a/l10n/ia/lib.po +++ b/l10n/ia/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "Adjuta" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Personal" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Configurationes" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "Usatores" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "" @@ -69,57 +69,84 @@ msgstr "" msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Files" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Texto" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/ia/media.po b/l10n/ia/media.po deleted file mode 100644 index 4da59fbd03d7a50060ee99a322016a5ce8c6e34a..0000000000000000000000000000000000000000 --- a/l10n/ia/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Emilio Sepúlveda , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Interlingua (http://www.transifex.net/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musica" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Reproducer" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausa" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Previe" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Proxime" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Mute" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Con sono" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Rescannar collection" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titulo" diff --git a/l10n/ia/settings.po b/l10n/ia/settings.po index 2e3506c56926d3137797dd74a0764369b95450f7..45647784aedb0cc3619956ffcafd5cb1e4b87ab5 100644 --- a/l10n/ia/settings.po +++ b/l10n/ia/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +19,73 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID cambiate" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Requesta invalide" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Linguage cambiate" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "" @@ -90,97 +93,10 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Interlingua" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Registro" - -#: templates/admin.php:116 -msgid "More" -msgstr "Plus" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Adder tu application" @@ -213,21 +129,21 @@ msgstr "" msgid "Ask a question" msgstr "Facer un question" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Responsa" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -286,6 +202,16 @@ msgstr "Adjuta a traducer" msgid "use this address to connect to your ownCloud in your file manager" msgstr "usa iste addresse pro connecter a tu ownCloud in tu administrator de files" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nomine" diff --git a/l10n/ia/tasks.po b/l10n/ia/tasks.po deleted file mode 100644 index be00099555c15b3e2a266ad4b58a966a60c4f139..0000000000000000000000000000000000000000 --- a/l10n/ia/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/ia/user_migrate.po b/l10n/ia/user_migrate.po deleted file mode 100644 index b581cb2029f4eae35a4ab4ad3e64ca0e28cd4ee0..0000000000000000000000000000000000000000 --- a/l10n/ia/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/ia/user_openid.po b/l10n/ia/user_openid.po deleted file mode 100644 index a3e999d4377ae9a6b2d76f8e633f450c621cba78..0000000000000000000000000000000000000000 --- a/l10n/ia/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/ia/files_odfviewer.po b/l10n/ia/user_webdavauth.po similarity index 73% rename from l10n/ia/files_odfviewer.po rename to l10n/ia/user_webdavauth.po index 566f1c5b671573f1d659faf9de601a735ec81602..7a2ab1d26f292aca5905a857abb1dd5a93749f7b 100644 --- a/l10n/ia/files_odfviewer.po +++ b/l10n/ia/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ia\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/id/admin_dependencies_chk.po b/l10n/id/admin_dependencies_chk.po deleted file mode 100644 index ae358d17af8160b10bbf82d387fab32c28c6919f..0000000000000000000000000000000000000000 --- a/l10n/id/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/id/bookmarks.po b/l10n/id/bookmarks.po deleted file mode 100644 index d9e1fba3acad03560ecc205ce466b7f488954676..0000000000000000000000000000000000000000 --- a/l10n/id/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/id/calendar.po b/l10n/id/calendar.po deleted file mode 100644 index 9b2e6aaf97c83b73af2c9631b868f5f1431abb19..0000000000000000000000000000000000000000 --- a/l10n/id/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Muhammad Radifar , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zona waktu telah diubah" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Permintaan tidak sah" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Tidak akan mengulangi" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Harian" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Mingguan" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Setiap Hari Minggu" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Dwi-mingguan" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Bulanan" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Tahunan" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Semua Hari" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Judul" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Minggu" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Bulan" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hari ini" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Unduh" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Sunting" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Sunting kalender" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Namatampilan" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktif" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Warna kalender" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Sampaikan" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Sunting agenda" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Judul Agenda" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategori" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Agenda di Semua Hari" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Dari" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Ke" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Lokasi" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Lokasi Agenda" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Deskripsi" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Deskripsi dari Agenda" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ulangi" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Buat agenda baru" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zonawaktu" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/id/contacts.po b/l10n/id/contacts.po deleted file mode 100644 index 0b3df912c24ad1cab5604eaafd8489f0de207198..0000000000000000000000000000000000000000 --- a/l10n/id/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/id/core.po b/l10n/id/core.po index 1cd079372c466f6518624ea1c6f35b2d9c29b4f4..f6cf57fdffc3eeab0c2b9b9be624faffc7beadc5 100644 --- a/l10n/id/core.po +++ b/l10n/id/core.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Muhammad Fauzan , 2012. # Muhammad Panji , 2012. # Muhammad Radifar , 2011. @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,208 +21,241 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nama aplikasi tidak diberikan." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Tidak ada kategori yang akan ditambahkan?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Kategori ini sudah ada:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Tidak ada kategori terpilih untuk penghapusan." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Setelan" -#: js/js.js:645 -msgid "January" -msgstr "Januari" +#: js/js.js:688 +msgid "seconds ago" +msgstr "beberapa detik yang lalu" -#: js/js.js:645 -msgid "February" -msgstr "Februari" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 menit lalu" -#: js/js.js:645 -msgid "March" -msgstr "Maret" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "April" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mei" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Juni" +#: js/js.js:693 +msgid "today" +msgstr "hari ini" -#: js/js.js:646 -msgid "July" -msgstr "Juli" +#: js/js.js:694 +msgid "yesterday" +msgstr "kemarin" -#: js/js.js:646 -msgid "August" -msgstr "Agustus" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:696 +msgid "last month" +msgstr "bulan kemarin" -#: js/js.js:646 -msgid "October" -msgstr "Oktober" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Nopember" +#: js/js.js:698 +msgid "months ago" +msgstr "beberapa bulan lalu" -#: js/js.js:646 -msgid "December" -msgstr "Desember" +#: js/js.js:699 +msgid "last year" +msgstr "tahun kemarin" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "beberapa tahun lalu" + +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "pilih" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Batalkan" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Tidak" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ya" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Oke" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Tidak ada kategori terpilih untuk penghapusan." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" +msgstr "gagal" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:103 -msgid "Error while sharing" +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:114 +#: js/share.js:124 +msgid "Error while sharing" +msgstr "gagal ketika membagikan" + +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "gagal ketika membatalkan pembagian" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" +msgstr "gagal ketika merubah perijinan" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "dibagikan dengan anda dan grup {group} oleh {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "dibagikan dengan anda oleh {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "bagikan dengan" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "bagikan dengan tautan" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "lindungi dengan kata kunci" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Password" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "set tanggal kadaluarsa" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "tanggal kadaluarsa" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "berbagi memlalui surel:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "tidak ada orang ditemukan" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "berbagi ulang tidak diperbolehkan" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "dibagikan dalam {item} dengan {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "batalkan berbagi" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "dapat merubah" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "kontrol akses" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "buat baru" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "baharui" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "hapus" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "bagikan" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" -msgstr "" +msgstr "dilindungi kata kunci" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" -msgstr "" +msgstr "gagal melepas tanggal kadaluarsa" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" -msgstr "" +msgstr "gagal memasang tanggal kadaluarsa" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "reset password ownCloud" @@ -234,19 +268,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Anda akan mendapatkan link untuk mereset password anda lewat Email." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Telah diminta" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Login gagal!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Username" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Meminta reset" @@ -298,72 +332,187 @@ msgstr "Cloud tidak ditemukan" msgid "Edit categories" msgstr "Edit kategori" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Tambahkan" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "peringatan keamanan" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "tanpa generator angka acak, penyerang mungkin dapat menebak token reset kata kunci dan mengambil alih akun anda." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Buat sebuah akun admin" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Tingkat Lanjut" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Folder data" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfigurasi database" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "akan digunakan" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Pengguna database" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Password database" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nama database" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "tablespace basis data" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Host database" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Selesaikan instalasi" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "minggu" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "senin" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "selasa" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "rabu" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "kamis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "jumat" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "sabtu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januari" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februari" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Maret" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mei" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Agustus" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Nopember" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Desember" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "web service dibawah kontrol anda" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Keluar" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "login otomatis ditolak!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "apabila anda tidak merubah kata kunci belakangan ini, akun anda dapat di gunakan orang lain!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "mohon ubah kata kunci untuk mengamankan akun anda" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Lupa password anda?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "selalu login" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Masuk" @@ -378,3 +527,17 @@ msgstr "sebelum" #: templates/part.pagenavi.php:20 msgid "next" msgstr "selanjutnya" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "peringatan keamanan!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "mohon periksa kembali kata kunci anda.
            untuk alasan keamanan,anda akan sesekali diminta untuk memasukan kata kunci lagi." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "periksa kembali" diff --git a/l10n/id/files.po b/l10n/id/files.po index a24bba4147a2b21b4c9a436e0d2672631c443f22..4c752ed6c0b898afa744de61bd201aaa40621259 100644 --- a/l10n/id/files.po +++ b/l10n/id/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,194 +25,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Tidak ada galat, berkas sukses diunggah" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "File yang diunggah melampaui directive upload_max_filesize di php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "File yang diunggah melampaui directive MAX_FILE_SIZE yang disebutan dalam form HTML." -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Berkas hanya diunggah sebagian" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Tidak ada berkas yang diunggah" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Kehilangan folder temporer" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Gagal menulis ke disk" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Berkas" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "batalkan berbagi" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Hapus" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "sudah ada" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "mengganti" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "batalkan" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "diganti" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "batal dikerjakan" -#: js/filelist.js:241 -msgid "with" -msgstr "dengan" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "dihapus" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "membuat berkas ZIP, ini mungkin memakan waktu." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Gagal mengunggah berkas anda karena berupa direktori atau mempunyai ukuran 0 byte" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Terjadi Galat Pengunggahan" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "tutup" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Menunggu" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Pengunggahan dibatalkan." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Kesalahan nama, '/' tidak diijinkan." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nama" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Ukuran" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Dimodifikasi" -#: js/files.js:777 -msgid "folder" -msgstr "folder" - -#: js/files.js:779 -msgid "folders" -msgstr "folder-folder" - -#: js/files.js:787 -msgid "file" -msgstr "berkas" - -#: js/files.js:789 -msgid "files" -msgstr "berkas-berkas" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:838 -msgid "today" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -223,80 +194,76 @@ msgstr "Penanganan berkas" msgid "Maximum upload size" msgstr "Ukuran unggah maksimum" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "Kemungkinan maks:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Dibutuhkan untuk multi-berkas dan unduhan folder" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Aktifkan unduhan ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 adalah tidak terbatas" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Ukuran masukan maksimal untuk berkas ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "simpan" #: templates/index.php:7 msgid "New" msgstr "Baru" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Berkas teks" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Folder" -#: templates/index.php:11 -msgid "From url" -msgstr "Dari url" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Unggah" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Batal mengunggah" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Tidak ada apa-apa di sini. Unggah sesuatu!" -#: templates/index.php:50 -msgid "Share" -msgstr "Bagikan" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Unduh" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Unggahan terlalu besar" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Berkas yang anda coba unggah melebihi ukuran maksimum untuk pengunggahan berkas di server ini." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Berkas sedang dipindai, silahkan tunggu." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Sedang memindai" diff --git a/l10n/id/files_encryption.po b/l10n/id/files_encryption.po index 82e011fadab484232f71fba2991dc17765c74664..5ab924354cbc2440169f1a73eae44d1ebf8f6f92 100644 --- a/l10n/id/files_encryption.po +++ b/l10n/id/files_encryption.po @@ -3,32 +3,33 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-10-21 02:03+0200\n" +"PO-Revision-Date: 2012-10-20 23:08+0000\n" +"Last-Translator: elmakong \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:3 msgid "Encryption" -msgstr "" +msgstr "enkripsi" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "" +msgstr "pengecualian untuk tipe file berikut dari enkripsi" #: templates/settings.php:5 msgid "None" -msgstr "" +msgstr "tidak ada" #: templates/settings.php:10 msgid "Enable Encryption" -msgstr "" +msgstr "aktifkan enkripsi" diff --git a/l10n/id/files_external.po b/l10n/id/files_external.po index f9773aeb643356726687a317fd0acd5aa105bd55..87060eb50f201ca7be5dcec4e7894d2938b9eff5 100644 --- a/l10n/id/files_external.po +++ b/l10n/id/files_external.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-21 02:03+0200\n" +"PO-Revision-Date: 2012-10-20 23:34+0000\n" +"Last-Translator: elmakong \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +20,7 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "akses diberikan" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" @@ -27,11 +28,11 @@ msgstr "" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "berikan hak akses" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "isi semua field yang dibutuhkan" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." @@ -43,7 +44,7 @@ msgstr "" #: templates/settings.php:3 msgid "External Storage" -msgstr "" +msgstr "penyimpanan eksternal" #: templates/settings.php:7 templates/settings.php:19 msgid "Mount point" @@ -55,15 +56,15 @@ msgstr "" #: templates/settings.php:9 msgid "Configuration" -msgstr "" +msgstr "konfigurasi" #: templates/settings.php:10 msgid "Options" -msgstr "" +msgstr "pilihan" #: templates/settings.php:11 msgid "Applicable" -msgstr "" +msgstr "berlaku" #: templates/settings.php:23 msgid "Add mount point" @@ -71,23 +72,23 @@ msgstr "" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" -msgstr "" +msgstr "tidak satupun di set" #: templates/settings.php:63 msgid "All Users" -msgstr "" +msgstr "semua pengguna" #: templates/settings.php:64 msgid "Groups" -msgstr "" +msgstr "grup" #: templates/settings.php:69 msgid "Users" -msgstr "" +msgstr "pengguna" #: templates/settings.php:77 templates/settings.php:107 msgid "Delete" -msgstr "" +msgstr "hapus" #: templates/settings.php:87 msgid "Enable User External Storage" diff --git a/l10n/id/files_pdfviewer.po b/l10n/id/files_pdfviewer.po deleted file mode 100644 index a9fc081e1854bd3cce1affa9637eee4cc1647e18..0000000000000000000000000000000000000000 --- a/l10n/id/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index 8acea84a1ef327a255d01182f07d1bf7e6ef284d..95854936367c856715936d98e41c0b86c1d183ca 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-21 02:03+0200\n" +"PO-Revision-Date: 2012-10-20 23:29+0000\n" +"Last-Translator: elmakong \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,30 +20,30 @@ msgstr "" #: templates/authenticate.php:4 msgid "Password" -msgstr "" +msgstr "kata kunci" #: templates/authenticate.php:6 msgid "Submit" -msgstr "" +msgstr "kirim" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s membagikan folder %s dengan anda" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s membagikan file %s dengan anda" #: templates/public.php:14 templates/public.php:30 msgid "Download" -msgstr "" +msgstr "unduh" #: templates/public.php:29 msgid "No preview available for" -msgstr "" +msgstr "tidak ada pratinjau tersedia untuk" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" -msgstr "" +msgstr "servis web dibawah kendali anda" diff --git a/l10n/id/files_texteditor.po b/l10n/id/files_texteditor.po deleted file mode 100644 index 754e5072994361f014d05b68073534f83d138d6c..0000000000000000000000000000000000000000 --- a/l10n/id/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/id/files_versions.po b/l10n/id/files_versions.po index 41ffd9c7525438facb68140938ff9e9770c37056..5b9201c347e79240d06eb1c8c5dcadc45c5a6d27 100644 --- a/l10n/id/files_versions.po +++ b/l10n/id/files_versions.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-21 02:03+0200\n" +"PO-Revision-Date: 2012-10-20 23:40+0000\n" +"Last-Translator: elmakong \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: js/settings-personal.js:31 templates/settings-personal.php:10 msgid "Expire all versions" -msgstr "" +msgstr "kadaluarsakan semua versi" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "riwayat" #: templates/settings-personal.php:4 msgid "Versions" -msgstr "" +msgstr "versi" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "" +msgstr "ini akan menghapus semua versi backup yang ada dari file anda" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "pembuatan versi file" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "aktifkan" diff --git a/l10n/id/gallery.po b/l10n/id/gallery.po deleted file mode 100644 index 6b4c75eae942adfe99fd2b633426afd92f7a0882..0000000000000000000000000000000000000000 --- a/l10n/id/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Muhammad Panji , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Indonesian (http://www.transifex.net/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Gambar" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Setting" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Scan ulang" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Berhenti" - -#: templates/index.php:18 -msgid "Share" -msgstr "Bagikan" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Kembali" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Hapus konfirmasi" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Apakah anda ingin menghapus album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Ubah nama album" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nama album baru" diff --git a/l10n/id/impress.po b/l10n/id/impress.po deleted file mode 100644 index dfec96ea44fe70924d767d0ba3664e03b0fe788b..0000000000000000000000000000000000000000 --- a/l10n/id/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/id/lib.po b/l10n/id/lib.po index 3193d5c4dd2ca9be5dfaccfd0c20f74938884f1d..4987faad0d443e426cadc292110a73d66b23441b 100644 --- a/l10n/id/lib.po +++ b/l10n/id/lib.po @@ -3,123 +3,151 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "bantu" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "perseorangan" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "pengaturan" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "pengguna" -#: app.php:312 +#: app.php:309 msgid "Apps" -msgstr "" +msgstr "aplikasi" -#: app.php:314 +#: app.php:311 msgid "Admin" -msgstr "" +msgstr "admin" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." -msgstr "" +msgstr "download ZIP sedang dimatikan" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." -msgstr "" +msgstr "file harus di unduh satu persatu" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" -msgstr "" +msgstr "kembali ke daftar file" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." -msgstr "" +msgstr "file yang dipilih terlalu besar untuk membuat file zip" #: json.php:28 msgid "Application is not enabled" -msgstr "" +msgstr "aplikasi tidak diaktifkan" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "autentikasi bermasalah" #: json.php:51 msgid "Token expired. Please reload page." +msgstr "token kadaluarsa.mohon perbaharui laman." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" msgstr "" -#: template.php:86 -msgid "seconds ago" +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "teks" + +#: search/provider/file.php:29 +msgid "Images" msgstr "" -#: template.php:87 +#: template.php:103 +msgid "seconds ago" +msgstr "beberapa detik yang lalu" + +#: template.php:104 msgid "1 minute ago" -msgstr "" +msgstr "1 menit lalu" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" +msgstr "%d menit lalu" + +#: template.php:106 +msgid "1 hour ago" msgstr "" -#: template.php:91 -msgid "today" +#: template.php:107 +#, php-format +msgid "%d hours ago" msgstr "" -#: template.php:92 +#: template.php:108 +msgid "today" +msgstr "hari ini" + +#: template.php:109 msgid "yesterday" -msgstr "" +msgstr "kemarin" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" -msgstr "" +msgstr "%d hari lalu" -#: template.php:94 +#: template.php:111 msgid "last month" -msgstr "" +msgstr "bulan kemarin" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" -msgstr "" +msgstr "tahun kemarin" -#: template.php:97 +#: template.php:114 msgid "years ago" -msgstr "" +msgstr "beberapa tahun lalu" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "" +msgstr "%s tersedia. dapatkan info lebih lanjut" -#: updater.php:68 +#: updater.php:77 msgid "up to date" -msgstr "" +msgstr "terbaru" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" +msgstr "pengecekan pembaharuan sedang non-aktifkan" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" msgstr "" diff --git a/l10n/id/media.po b/l10n/id/media.po deleted file mode 100644 index 5d6c3e38ec1d9d4a24cdc47781f35bf93f189789..0000000000000000000000000000000000000000 --- a/l10n/id/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Muhammad Radifar , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Indonesian (http://www.transifex.net/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musik" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Mainkan" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Jeda" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Sebelumnya" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Selanjutnya" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Nonaktifkan suara" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Aktifkan suara" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Pindai ulang Koleksi" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artis" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Judul" diff --git a/l10n/id/settings.po b/l10n/id/settings.po index 500bd511e869c575dd2b1e8b274a1000bf44c327..478557f09e06f2472703d69a347675b2a8385e64 100644 --- a/l10n/id/settings.po +++ b/l10n/id/settings.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Muhammad Fauzan , 2012. # Muhammad Panji , 2012. # Muhammad Radifar , 2011. @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +21,73 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email tersimpan" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Email tidak sah" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID telah dirubah" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Permintaan tidak valid" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "autentikasi bermasalah" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Bahasa telah diganti" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "NonAktifkan" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Aktifkan" @@ -91,97 +95,10 @@ msgstr "Aktifkan" msgid "Saving..." msgstr "Menyimpan..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Peringatan Keamanan" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Lebih" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Tambahkan App anda" @@ -214,21 +131,21 @@ msgstr "Mengelola berkas besar" msgid "Ask a question" msgstr "Ajukan pertanyaan" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Bermasalah saat menghubungi database bantuan." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Pergi kesana secara manual." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Jawab" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -253,7 +170,7 @@ msgstr "Password saat ini" #: templates/personal.php:22 msgid "New password" -msgstr "Password baru" +msgstr "kata kunci baru" #: templates/personal.php:23 msgid "show" @@ -287,6 +204,16 @@ msgstr "Bantu menerjemahkan" msgid "use this address to connect to your ownCloud in your file manager" msgstr "gunakan alamat ini untuk terhubung dengan ownCloud anda dalam file manager anda" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nama" diff --git a/l10n/id/tasks.po b/l10n/id/tasks.po deleted file mode 100644 index bea6e2596fe4bf4775253acdf881852e4ceef6ae..0000000000000000000000000000000000000000 --- a/l10n/id/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/id/user_ldap.po b/l10n/id/user_ldap.po index 5d7f42dc6af9d18dbe6cc9427cd6773966b84280..8069104219ec3b62fbcbbf68052a4cc73d4d7247 100644 --- a/l10n/id/user_ldap.po +++ b/l10n/id/user_ldap.po @@ -3,23 +3,24 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-22 02:02+0200\n" +"PO-Revision-Date: 2012-10-21 05:36+0000\n" +"Last-Translator: elmakong \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:8 msgid "Host" -msgstr "" +msgstr "host" #: templates/settings.php:8 msgid "" @@ -47,7 +48,7 @@ msgstr "" #: templates/settings.php:11 msgid "Password" -msgstr "" +msgstr "kata kunci" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." @@ -55,7 +56,7 @@ msgstr "" #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "gunakan saringan login" #: templates/settings.php:12 #, php-format @@ -83,7 +84,7 @@ msgstr "" #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "saringan grup" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." @@ -95,7 +96,7 @@ msgstr "" #: templates/settings.php:17 msgid "Port" -msgstr "" +msgstr "port" #: templates/settings.php:18 msgid "Base User Tree" @@ -111,11 +112,11 @@ msgstr "" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "gunakan TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "jangan gunakan untuk koneksi SSL, itu akan gagal." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" @@ -123,7 +124,7 @@ msgstr "" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "matikan validasi sertivikat SSL" #: templates/settings.php:23 msgid "" @@ -133,7 +134,7 @@ msgstr "" #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "tidak disarankan, gunakan hanya untuk pengujian." #: templates/settings.php:24 msgid "User Display Name Field" @@ -153,11 +154,11 @@ msgstr "" #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "dalam bytes" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." -msgstr "" +msgstr "dalam detik. perubahan mengosongkan cache" #: templates/settings.php:30 msgid "" @@ -167,4 +168,4 @@ msgstr "" #: templates/settings.php:32 msgid "Help" -msgstr "" +msgstr "bantuan" diff --git a/l10n/id/user_migrate.po b/l10n/id/user_migrate.po deleted file mode 100644 index 8ff8940b53f7055b8f896dffdf7daf80f4c2d864..0000000000000000000000000000000000000000 --- a/l10n/id/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/id/user_openid.po b/l10n/id/user_openid.po deleted file mode 100644 index 426a6396684f71e3818762f047f62e0d026d0193..0000000000000000000000000000000000000000 --- a/l10n/id/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/id/files_odfviewer.po b/l10n/id/user_webdavauth.po similarity index 74% rename from l10n/id/files_odfviewer.po rename to l10n/id/user_webdavauth.po index 7680253aef3fa998189004d09f64fdddf90b10cd..68181d4405cb81b228a1fdcda925d0952bd1c3d7 100644 --- a/l10n/id/files_odfviewer.po +++ b/l10n/id/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/id_ID/admin_dependencies_chk.po b/l10n/id_ID/admin_dependencies_chk.po deleted file mode 100644 index 359c14556bb001745d2077b562c73f0f0ffb3600..0000000000000000000000000000000000000000 --- a/l10n/id_ID/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/id_ID/admin_migrate.po b/l10n/id_ID/admin_migrate.po deleted file mode 100644 index 129c39c8d73513b4e74bd2c33be8012204e9ca1c..0000000000000000000000000000000000000000 --- a/l10n/id_ID/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/id_ID/bookmarks.po b/l10n/id_ID/bookmarks.po deleted file mode 100644 index f954c1e8a4c31dca75331c4dc0110992933205be..0000000000000000000000000000000000000000 --- a/l10n/id_ID/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/id_ID/calendar.po b/l10n/id_ID/calendar.po deleted file mode 100644 index ebef9b9adec1fc2f5164ef2bc029ec08426987ce..0000000000000000000000000000000000000000 --- a/l10n/id_ID/calendar.po +++ /dev/null @@ -1,813 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/id_ID/contacts.po b/l10n/id_ID/contacts.po deleted file mode 100644 index a7964324daacedfe1d52b6f5699d1a018da72fa3..0000000000000000000000000000000000000000 --- a/l10n/id_ID/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/id_ID/core.po b/l10n/id_ID/core.po index d0c351df95d1812bc76d788b290965850355b550..0b89da36b9feb46360d7270cb68300ce60a3fb17 100644 --- a/l10n/id_ID/core.po +++ b/l10n/id_ID/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" +"POT-Creation-Date: 2012-10-18 02:03+0200\n" +"PO-Revision-Date: 2012-10-18 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" "MIME-Version: 1.0\n" @@ -29,55 +29,55 @@ msgstr "" msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 msgid "Settings" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "January" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "February" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "March" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "April" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "May" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "June" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "July" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "August" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "September" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "October" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "November" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "December" msgstr "" @@ -105,8 +105,8 @@ msgstr "" msgid "No categories selected for deletion." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 +#: js/share.js:509 msgid "Error" msgstr "" @@ -123,15 +123,11 @@ msgid "Error while changing permissions" msgstr "" #: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +msgid "Shared with you and the group {group} by {owner}" msgstr "" #: js/share.js:132 -msgid "Shared with you by" +msgid "Shared with you by {owner}" msgstr "" #: js/share.js:137 @@ -146,7 +142,8 @@ msgstr "" msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:147 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" @@ -171,50 +168,46 @@ msgid "Resharing is not allowed" msgstr "" #: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +msgid "Shared in {item} with {user}" msgstr "" #: js/share.js:271 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:283 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:285 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:288 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:291 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:294 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:297 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:322 js/share.js:484 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:497 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:509 msgid "Error setting expiration date" msgstr "" @@ -238,12 +231,12 @@ msgstr "" msgid "Login failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -299,52 +292,77 @@ msgstr "" msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:38 msgid "web services under your control" msgstr "" @@ -352,15 +370,29 @@ msgstr "" msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +407,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/id_ID/files.po b/l10n/id_ID/files.po index a4212970ad40f89d968d1cf5a2ffe47797e6bfe4..02959503b9d1cf912271f98e56e9ecb4f109e2e7 100644 --- a/l10n/id_ID/files.po +++ b/l10n/id_ID/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" +"POT-Creation-Date: 2012-10-19 02:03+0200\n" +"PO-Revision-Date: 2012-10-19 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" "MIME-Version: 1.0\n" @@ -63,152 +63,152 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:194 js/filelist.js:196 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:194 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:243 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:243 js/filelist.js:245 js/filelist.js:277 js/filelist.js:279 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:245 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:277 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:279 +msgid "deleted {files}" msgstr "" #: js/files.js:179 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:242 js/files.js:347 js/files.js:377 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:262 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:265 js/files.js:310 js/files.js:325 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:328 js/files.js:361 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:430 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 +#: js/files.js:500 msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:681 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:689 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:762 templates/index.php:48 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:763 templates/index.php:56 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:764 templates/index.php:58 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:791 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:793 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:801 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" +#: js/files.js:803 +msgid "{count} files" msgstr "" -#: js/files.js:833 +#: js/files.js:846 msgid "seconds ago" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:847 +msgid "1 minute ago" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:848 +msgid "{minutes} minutes ago" msgstr "" -#: js/files.js:838 +#: js/files.js:851 msgid "today" msgstr "" -#: js/files.js:839 +#: js/files.js:852 msgid "yesterday" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:853 +msgid "{days} days ago" msgstr "" -#: js/files.js:841 +#: js/files.js:854 msgid "last month" msgstr "" -#: js/files.js:843 +#: js/files.js:856 msgid "months ago" msgstr "" -#: js/files.js:844 +#: js/files.js:857 msgid "last year" msgstr "" -#: js/files.js:845 +#: js/files.js:858 msgid "years ago" msgstr "" diff --git a/l10n/id_ID/files_odfviewer.po b/l10n/id_ID/files_odfviewer.po deleted file mode 100644 index 0f3cc53112bc521eef9f6efdd20b8ceed774d1fa..0000000000000000000000000000000000000000 --- a/l10n/id_ID/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/id_ID/files_pdfviewer.po b/l10n/id_ID/files_pdfviewer.po deleted file mode 100644 index 395dc8b4c1288eb9813a1dd8629b782845de89f6..0000000000000000000000000000000000000000 --- a/l10n/id_ID/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/id_ID/files_texteditor.po b/l10n/id_ID/files_texteditor.po deleted file mode 100644 index a94adcdcf361710384a180de10cbd843878e86ee..0000000000000000000000000000000000000000 --- a/l10n/id_ID/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/id_ID/gallery.po b/l10n/id_ID/gallery.po deleted file mode 100644 index 6d62fde891dea3d3ff2a16cf6b0bbf68abcf1429..0000000000000000000000000000000000000000 --- a/l10n/id_ID/gallery.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2012-07-25 19:30+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/id_ID/impress.po b/l10n/id_ID/impress.po deleted file mode 100644 index d5c02597729e1f35df85aa86937ffc5cb80ab01d..0000000000000000000000000000000000000000 --- a/l10n/id_ID/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/id_ID/media.po b/l10n/id_ID/media.po deleted file mode 100644 index 1db3e2f400f0858cc57dcec255ff39377fb3536a..0000000000000000000000000000000000000000 --- a/l10n/id_ID/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2011-08-13 02:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/id_ID/tasks.po b/l10n/id_ID/tasks.po deleted file mode 100644 index cf74571c756aa8b4603691044da0d8ed60ac1192..0000000000000000000000000000000000000000 --- a/l10n/id_ID/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/id_ID/user_migrate.po b/l10n/id_ID/user_migrate.po deleted file mode 100644 index fd3779f871c946840c2452ed04ec74c539d827a0..0000000000000000000000000000000000000000 --- a/l10n/id_ID/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/id_ID/user_openid.po b/l10n/id_ID/user_openid.po deleted file mode 100644 index 42b92de9fa085a3abe6014fa032a2e661c55d02c..0000000000000000000000000000000000000000 --- a/l10n/id_ID/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/owncloud/language/id_ID/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: id_ID\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/it/admin_dependencies_chk.po b/l10n/it/admin_dependencies_chk.po deleted file mode 100644 index 46d1082e634f81bac9328206a2a0f1d1661fdd3c..0000000000000000000000000000000000000000 --- a/l10n/it/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 05:51+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Il modulo php-json è richiesto per l'intercomunicazione di diverse applicazioni" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Il modulo php-curl è richiesto per scaricare il titolo della pagina quando si aggiunge un segnalibro" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Il modulo php-gd è richiesto per creare miniature delle tue immagini" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Il modulo php-ldap è richiesto per collegarsi a un server ldap" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Il modulo php-zip è richiesto per scaricare diversi file contemporaneamente" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Il modulo php-mb_multibyte è richiesto per gestire correttamente la codifica." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Il modulo php-ctype è richiesto per la validazione dei dati." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Il modulo php-xml è richiesto per condividere i file con webdav." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "La direttiva allow_url_fopen del tuo php.ini deve essere impostata a 1 per recuperare la base di conoscenza dai server di OCS" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Il modulo php-pdo è richiesto per archiviare i dati di ownCloud in un database." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Stato delle dipendenze" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Usato da:" diff --git a/l10n/it/admin_migrate.po b/l10n/it/admin_migrate.po deleted file mode 100644 index 2da23d877f83029fd3db6364265ecab573ea2ac1..0000000000000000000000000000000000000000 --- a/l10n/it/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 05:47+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Esporta questa istanza di ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Questa operazione creerà un file compresso che contiene i dati dell'istanza di ownCloud. Scegli il tipo di esportazione:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Esporta" diff --git a/l10n/it/bookmarks.po b/l10n/it/bookmarks.po deleted file mode 100644 index 7ed1ded6a77cab558984ec1000347462424cc276..0000000000000000000000000000000000000000 --- a/l10n/it/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-30 08:36+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Segnalibri" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "senza nome" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Quando vuoi creare rapidamente un segnalibro, trascinalo sui segnalibri del browser e fai clic su di esso:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Leggi dopo" - -#: templates/list.php:13 -msgid "Address" -msgstr "Indirizzo" - -#: templates/list.php:14 -msgid "Title" -msgstr "Titolo" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Tag" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Salva segnalibro" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Non hai segnalibri" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Bookmarklet
            " diff --git a/l10n/it/calendar.po b/l10n/it/calendar.po deleted file mode 100644 index efdc82532d89cc3defcd69aa1e07a541c62ef5f8..0000000000000000000000000000000000000000 --- a/l10n/it/calendar.po +++ /dev/null @@ -1,821 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Andrea Scarpino , 2011. -# , 2011. -# , 2012. -# Francesco Apruzzese , 2011. -# Lorenzo Beltrami , 2011. -# , 2011, 2012. -# , 2011. -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-12 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 07:01+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Non tutti i calendari sono mantenuti completamente in cache" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Tutto sembra essere mantenuto completamente in cache" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Nessun calendario trovato." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Nessun evento trovato." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Calendario sbagliato" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Il file non conteneva alcun evento o tutti gli eventi erano già salvati nel tuo calendario." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "gli eventi sono stati salvati nel nuovo calendario" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Importazione non riuscita" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "gli eventi sono stati salvati nel tuo calendario" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nuovo fuso orario:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Fuso orario cambiato" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Richiesta non valida" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendario" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd d/M" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd d/M" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, d MMM yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Compleanno" - -#: lib/app.php:122 -msgid "Business" -msgstr "Azienda" - -#: lib/app.php:123 -msgid "Call" -msgstr "Chiama" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clienti" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Consegna" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Vacanze" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idee" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Viaggio" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Anniversario" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Riunione" - -#: lib/app.php:131 -msgid "Other" -msgstr "Altro" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personale" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Progetti" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Domande" - -#: lib/app.php:135 -msgid "Work" -msgstr "Lavoro" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "da" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "senza nome" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nuovo calendario" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Non ripetere" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Giornaliero" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Settimanale" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Ogni giorno della settimana" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Ogni due settimane" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensile" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Annuale" - -#: lib/object.php:388 -msgid "never" -msgstr "mai" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "per occorrenze" - -#: lib/object.php:390 -msgid "by date" -msgstr "per data" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "per giorno del mese" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "per giorno della settimana" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Lunedì" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Martedì" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Mercoledì" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Giovedì" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Venerdì" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sabato" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Domenica" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "settimana del mese degli eventi" - -#: lib/object.php:428 -msgid "first" -msgstr "primo" - -#: lib/object.php:429 -msgid "second" -msgstr "secondo" - -#: lib/object.php:430 -msgid "third" -msgstr "terzo" - -#: lib/object.php:431 -msgid "fourth" -msgstr "quarto" - -#: lib/object.php:432 -msgid "fifth" -msgstr "quinto" - -#: lib/object.php:433 -msgid "last" -msgstr "ultimo" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Gennaio" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Febbraio" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Marzo" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Aprile" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maggio" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Giugno" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Luglio" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Agosto" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Settembre" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Ottobre" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembre" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Dicembre" - -#: lib/object.php:488 -msgid "by events date" -msgstr "per data evento" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "per giorno/i dell'anno" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "per numero/i settimana" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "per giorno e mese" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Dom." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Lun." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Mar." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Mer." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Gio." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Ven." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Sab." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Gen." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Apr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Mag." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Giu." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Lug." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Ago." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Set." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Ott." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dic." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Tutti il giorno" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Campi mancanti" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titolo" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Dal giorno" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Ora iniziale" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Al giorno" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Ora finale" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "L'evento finisce prima d'iniziare" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Si è verificato un errore del database" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Settimana" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mese" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Elenco" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Oggi" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Impostazioni" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "I tuoi calendari" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Collegamento CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendari condivisi" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Nessun calendario condiviso" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Condividi calendario" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Scarica" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Modifica" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Elimina" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "condiviso con te da" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nuovo calendario" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Modifica calendario" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Nome visualizzato" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Attivo" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Colore calendario" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Salva" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Invia" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Annulla" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Modifica un evento" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Esporta" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informazioni evento" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Ripetizione" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Avviso" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Partecipanti" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Condividi" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Titolo dell'evento" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categoria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Categorie separate da virgole" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Modifica le categorie" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Evento che occupa tutta la giornata" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Da" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "A" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Opzioni avanzate" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Luogo" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Luogo dell'evento" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Descrizione" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Descrizione dell'evento" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ripeti" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avanzato" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Seleziona i giorni della settimana" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Seleziona i giorni" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "e il giorno dell'anno degli eventi." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "e il giorno del mese degli eventi." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Seleziona i mesi" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Seleziona le settimane" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "e la settimana dell'anno degli eventi." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervallo" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Fine" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "occorrenze" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Crea un nuovo calendario" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importa un file di calendario" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Scegli un calendario" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nome del nuovo calendario" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Usa un nome disponibile!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Un calendario con questo nome esiste già. Se continui, i due calendari saranno uniti." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importa" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Chiudi la finestra di dialogo" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Crea un nuovo evento" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Visualizza un evento" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nessuna categoria selezionata" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "di" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "alle" - -#: templates/settings.php:10 -msgid "General" -msgstr "Generale" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Fuso orario" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Aggiorna automaticamente il fuso orario" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Formato orario" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "La settimana inizia il" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Cache" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Cancella gli eventi che si ripetono dalla cache" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URL" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Indirizzi di sincronizzazione calendari CalDAV" - -#: templates/settings.php:87 -msgid "more info" -msgstr "ulteriori informazioni" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Indirizzo principale (Kontact e altri)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Collegamento(i) iCalendar sola lettura" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Utenti" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "seleziona utenti" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Modificabile" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Gruppi" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "seleziona gruppi" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "rendi pubblico" diff --git a/l10n/it/contacts.po b/l10n/it/contacts.po deleted file mode 100644 index 3512cf8d11c0965e898954fa922b5fbc6430afc2..0000000000000000000000000000000000000000 --- a/l10n/it/contacts.po +++ /dev/null @@ -1,956 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Francesco Apruzzese , 2011. -# , 2011, 2012. -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 05:41+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Errore nel (dis)attivare la rubrica." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID non impostato." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Impossibile aggiornare una rubrica senza nome." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Errore durante l'aggiornamento della rubrica." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Nessun ID fornito" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Errore di impostazione del codice di controllo." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Nessuna categoria selezionata per l'eliminazione." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nessuna rubrica trovata." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nessun contatto trovato." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Si è verificato un errore nell'aggiunta del contatto." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "il nome dell'elemento non è impostato." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Impossibile elaborare il contatto: " - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Impossibile aggiungere una proprietà vuota." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Deve essere inserito almeno un indirizzo." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "P" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "Parametro IM mancante." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "IM sconosciuto:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informazioni sulla vCard non corrette. Ricarica la pagina." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID mancante" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Errore in fase di elaborazione del file VCard per l'ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "il codice di controllo non è impostato." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Le informazioni della vCard non sono corrette. Ricarica la pagina: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Qualcosa è andato storto. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Nessun ID di contatto inviato." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Errore di lettura della foto del contatto." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Errore di salvataggio del file temporaneo." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "La foto caricata non è valida." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Manca l'ID del contatto." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Non è stato inviato alcun percorso a una foto." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Il file non esiste:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Errore di caricamento immagine." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Errore di recupero dell'oggetto contatto." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Errore di recupero della proprietà FOTO." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Errore di salvataggio del contatto." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Errore di ridimensionamento dell'immagine" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Errore di ritaglio dell'immagine" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Errore durante la creazione dell'immagine temporanea" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Errore durante la ricerca dell'immagine: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Errore di invio dei contatti in archivio." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Non ci sono errori, il file è stato inviato correttamente" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Il file inviato supera la direttiva upload_max_filesize nel php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Il file inviato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Il file è stato inviato solo parzialmente" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Nessun file è stato inviato" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Manca una cartella temporanea" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Impossibile salvare l'immagine temporanea: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Impossibile caricare l'immagine temporanea: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Nessun file è stato inviato. Errore sconosciuto" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Contatti" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Siamo spiacenti, questa funzionalità non è stata ancora implementata" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Non implementata" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Impossibile ottenere un indirizzo valido." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Errore" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "Non hai i permessi per aggiungere contatti a" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Seleziona una delle tue rubriche." - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Errore relativo ai permessi" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Questa proprietà non può essere vuota." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Impossibile serializzare gli elementi." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' invocata senza l'argomento di tipo. Segnalalo a bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Modifica il nome" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Nessun file selezionato per l'invio" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Il file che stai cercando di inviare supera la dimensione massima per l'invio dei file su questo server." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Errore durante il caricamento dell'immagine di profilo." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Seleziona il tipo" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Alcuni contatti sono marcati per l'eliminazione, ma non sono stati ancora rimossi. Attendi fino al completamento dell'operazione." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Vuoi unire queste rubriche?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Risultato: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importato, " - -#: js/loader.js:49 -msgid " failed." -msgstr " non riuscito." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Il nome visualizzato non può essere vuoto." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Rubrica non trovata:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Questa non è la tua rubrica." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Il contatto non può essere trovato." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Lavoro" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Casa" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Altro" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Cellulare" - -#: lib/app.php:203 -msgid "Text" -msgstr "Testo" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voce" - -#: lib/app.php:205 -msgid "Message" -msgstr "Messaggio" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Cercapersone" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Compleanno" - -#: lib/app.php:253 -msgid "Business" -msgstr "Lavoro" - -#: lib/app.php:254 -msgid "Call" -msgstr "Chiama" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Client" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Corriere" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Festività" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Idee" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Viaggio" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Anniversario" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Riunione" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Personale" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Progetti" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Domande" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Data di nascita di {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contatto" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "Non hai i permessi per modificare questo contatto." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "Non hai i permessi per eliminare questo contatto." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Aggiungi contatto" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importa" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Impostazioni" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Rubriche" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Chiudi" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Scorciatoie da tastiera" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigazione" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Contatto successivo in elenco" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Contatto precedente in elenco" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Espandi/Contrai la rubrica corrente" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Rubrica successiva" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Rubrica precedente" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Azioni" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Aggiorna l'elenco dei contatti" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Aggiungi un nuovo contatto" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Aggiungi una nuova rubrica" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Elimina il contatto corrente" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Rilascia una foto da inviare" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Elimina la foto corrente" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Modifica la foto corrente" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Invia una nuova foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Seleziona la foto da ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formato personalizzato, nome breve, nome completo, invertito o invertito con virgola" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Modifica dettagli del nome" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizzazione" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Elimina" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Pseudonimo" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Inserisci pseudonimo" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Sito web" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Vai al sito web" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "gg-mm-aaaa" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Gruppi" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separa i gruppi con virgole" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Modifica gruppi" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferito" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Specifica un indirizzo email valido" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Inserisci indirizzo email" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Invia per email" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Elimina l'indirizzo email" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Inserisci il numero di telefono" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Elimina il numero di telefono" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Client di messaggistica istantanea" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Elimina IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Visualizza sulla mappa" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Modifica dettagli dell'indirizzo" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Aggiungi qui le note." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Aggiungi campo" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefono" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Messaggistica istantanea" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Indirizzo" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Scarica contatto" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Elimina contatto" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "L'immagine temporanea è stata rimossa dalla cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Modifica indirizzo" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tipo" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Casella postale" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Indirizzo" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Via e numero" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Esteso" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Numero appartamento ecc." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Città" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regione" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Ad es. stato o provincia" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "CAP" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "CAP" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Stato" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Rubrica" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Prefissi onorifici" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Sig.na" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Sig.ra" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Sig." - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sig." - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Sig.ra" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dott." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Nome" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Nomi aggiuntivi" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Cognome" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Suffissi onorifici" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importa un file di contatti" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Scegli la rubrica" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "crea una nuova rubrica" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nome della nuova rubrica" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importazione contatti" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Non hai contatti nella rubrica." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Aggiungi contatto" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Seleziona rubriche" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Inserisci il nome" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Inserisci una descrizione" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Indirizzi di sincronizzazione CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "altre informazioni" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Indirizzo principale (Kontact e altri)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Mostra collegamento CardDav" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Mostra collegamento VCF in sola lettura" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Condividi" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Scarica" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Modifica" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nuova rubrica" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nome" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Descrizione" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Salva" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Annulla" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Altro..." diff --git a/l10n/it/core.po b/l10n/it/core.po index 6127433b0fe842052fd3e9208635b529ddb500d4..9dc57ce2eaaf8d89298544a703c161c6303b8e5d 100644 --- a/l10n/it/core.po +++ b/l10n/it/core.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-30 02:02+0200\n" -"PO-Revision-Date: 2012-09-29 05:31+0000\n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-15 23:19+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -22,208 +22,241 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nome dell'applicazione non fornito." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Tipo di categoria non fornito." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Nessuna categoria da aggiungere?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Questa categoria esiste già: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Tipo di oggetto non fornito." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "ID %s non fornito." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Errore durante l'aggiunta di %s ai preferiti." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Nessuna categoria selezionata per l'eliminazione." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Errore durante la rimozione di %s dai preferiti." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Impostazioni" -#: js/js.js:645 -msgid "January" -msgstr "Gennaio" +#: js/js.js:704 +msgid "seconds ago" +msgstr "secondi fa" -#: js/js.js:645 -msgid "February" -msgstr "Febbraio" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "Un minuto fa" -#: js/js.js:645 -msgid "March" -msgstr "Marzo" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} minuti fa" -#: js/js.js:645 -msgid "April" -msgstr "Aprile" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 ora fa" -#: js/js.js:645 -msgid "May" -msgstr "Maggio" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} ore fa" -#: js/js.js:645 -msgid "June" -msgstr "Giugno" +#: js/js.js:709 +msgid "today" +msgstr "oggi" -#: js/js.js:646 -msgid "July" -msgstr "Luglio" +#: js/js.js:710 +msgid "yesterday" +msgstr "ieri" -#: js/js.js:646 -msgid "August" -msgstr "Agosto" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} giorni fa" -#: js/js.js:646 -msgid "September" -msgstr "Settembre" +#: js/js.js:712 +msgid "last month" +msgstr "mese scorso" -#: js/js.js:646 -msgid "October" -msgstr "Ottobre" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} mesi fa" -#: js/js.js:646 -msgid "November" -msgstr "Novembre" +#: js/js.js:714 +msgid "months ago" +msgstr "mesi fa" -#: js/js.js:646 -msgid "December" -msgstr "Dicembre" +#: js/js.js:715 +msgid "last year" +msgstr "anno scorso" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "anni fa" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Scegli" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Annulla" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "No" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Sì" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Nessuna categoria selezionata per l'eliminazione." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Il tipo di oggetto non è specificato." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Errore" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Il nome dell'applicazione non è specificato." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Il file richiesto {file} non è installato!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Errore durante la condivisione" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Errore durante la rimozione della condivisione" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Errore durante la modifica dei permessi" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Condiviso con te e con il gruppo" - -#: js/share.js:130 -msgid "by" -msgstr "da" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Condiviso con te e con il gruppo {group} da {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Condiviso con te da" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Condiviso con te da {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Condividi con" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Condividi con collegamento" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Proteggi con password" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Password" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Imposta data di scadenza" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Data di scadenza" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Condividi tramite email:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Non sono state trovate altre persone" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "La ri-condivisione non è consentita" -#: js/share.js:250 -msgid "Shared in" -msgstr "Condiviso in" - -#: js/share.js:250 -msgid "with" -msgstr "con" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Condiviso in {item} con {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Rimuovi condivisione" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "può modificare" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "controllo d'accesso" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "creare" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "aggiornare" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "eliminare" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "condividere" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Protetta da password" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Errore durante la rimozione della data di scadenza" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Errore durante l'impostazione della data di scadenza" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Ripristino password di ownCloud" @@ -236,15 +269,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Riceverai un collegamento per ripristinare la tua password via email" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Richiesto" +msgid "Reset email send." +msgstr "Email di ripristino inviata." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Accesso non riuscito!" +msgid "Request failed!" +msgstr "Richiesta non riuscita!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nome utente" @@ -300,72 +333,187 @@ msgstr "Nuvola non trovata" msgid "Edit categories" msgstr "Modifica le categorie" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Aggiungi" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Avviso di sicurezza" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Non è disponibile alcun generatore di numeri casuali sicuro. Abilita l'estensione OpenSSL di PHP" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Senza un generatore di numeri casuali sicuro, un malintenzionato potrebbe riuscire a individuare i token di ripristino delle password e impossessarsi del tuo account." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet. Il file .htaccess fornito da ownCloud non funziona. Ti suggeriamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o sposta tale cartella fuori dalla radice del sito." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea un account amministratore" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avanzate" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Cartella dati" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configura il database" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "sarà utilizzato" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Utente del database" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Password del database" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nome del database" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Spazio delle tabelle del database" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Host del database" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Termina la configurazione" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Domenica" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Lunedì" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Martedì" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Mercoledì" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Giovedì" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Venerdì" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sabato" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Gennaio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Febbraio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Marzo" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Aprile" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Maggio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Giugno" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Luglio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Agosto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Settembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Ottobre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Novembre" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Dicembre" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "servizi web nelle tue mani" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Esci" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Accesso automatico rifiutato." + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Se non hai cambiato la password recentemente, il tuo account potrebbe essere stato compromesso." + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Cambia la password per rendere nuovamente sicuro il tuo account." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Hai perso la password?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "ricorda" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Accedi" @@ -380,3 +528,17 @@ msgstr "precedente" #: templates/part.pagenavi.php:20 msgid "next" msgstr "successivo" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Avviso di sicurezza" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Verifica la tua password.
            Per motivi di sicurezza, potresti ricevere una richiesta di digitare nuovamente la password." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verifica" diff --git a/l10n/it/files.po b/l10n/it/files.po index 0677f2ddd4413cb5498fc19d3c3340c199c29197..062fa2906fdfbeeaf9fa9acf4373dbf22838a958 100644 --- a/l10n/it/files.po +++ b/l10n/it/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 12:00+0000\n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 01:41+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -26,195 +26,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Non ci sono errori, file caricato con successo" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Il file caricato supera il valore upload_max_filesize in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Il file caricato supera la direttiva upload_max_filesize in php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Il file caricato supera il valore MAX_FILE_SIZE definito nel form HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Il file è stato parzialmente caricato" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nessun file è stato caricato" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Cartella temporanea mancante" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Scrittura su disco non riuscita" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "File" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Rimuovi condivisione" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Elimina" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Rinomina" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "esiste già" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} esiste già" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "sostituisci" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "suggerisci nome" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "annulla" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "sostituito" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "sostituito {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "annulla" -#: js/filelist.js:241 -msgid "with" -msgstr "con" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "sostituito {new_name} con {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "non condivisi {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "condivisione rimossa" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "eliminati {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "eliminati" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nome non valido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non sono consentiti." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "creazione file ZIP, potrebbe richiedere del tempo." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Impossibile inviare il file poiché è una cartella o ha dimensione 0 byte" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Errore di invio" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Chiudi" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "In corso" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 file in fase di caricamento" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "file in fase di caricamento" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} file in fase di caricamentoe" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Invio annullato" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nome non valido" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nome della cartella non valido. L'uso di \"Shared\" è riservato a ownCloud" -#: js/files.js:668 -msgid "files scanned" -msgstr "file analizzati" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} file analizzati" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "errore durante la scansione" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nome" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Dimensione" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificato" -#: js/files.js:778 -msgid "folder" -msgstr "cartella" - -#: js/files.js:780 -msgid "folders" -msgstr "cartelle" - -#: js/files.js:788 -msgid "file" -msgstr "file" - -#: js/files.js:790 -msgid "files" -msgstr "file" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "secondi fa" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minuto fa" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "minuti fa" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 cartella" -#: js/files.js:839 -msgid "today" -msgstr "oggi" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} cartelle" -#: js/files.js:840 -msgid "yesterday" -msgstr "ieri" +#: js/files.js:824 +msgid "1 file" +msgstr "1 file" -#: js/files.js:841 -msgid "days ago" -msgstr "giorni fa" - -#: js/files.js:842 -msgid "last month" -msgstr "mese scorso" - -#: js/files.js:844 -msgid "months ago" -msgstr "mesi fa" - -#: js/files.js:845 -msgid "last year" -msgstr "anno scorso" - -#: js/files.js:846 -msgid "years ago" -msgstr "anni fa" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} file" #: templates/admin.php:5 msgid "File handling" @@ -224,27 +195,27 @@ msgstr "Gestione file" msgid "Maximum upload size" msgstr "Dimensione massima upload" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "numero mass.: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Necessario per lo scaricamento di file multipli e cartelle." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Abilita scaricamento ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 è illimitato" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Dimensione massima per i file ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Salva" @@ -252,52 +223,48 @@ msgstr "Salva" msgid "New" msgstr "Nuovo" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "File di testo" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Cartella" -#: templates/index.php:11 -msgid "From url" -msgstr "Da URL" +#: templates/index.php:14 +msgid "From link" +msgstr "Da collegamento" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Carica" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Annulla invio" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Non c'è niente qui. Carica qualcosa!" -#: templates/index.php:50 -msgid "Share" -msgstr "Condividi" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Scarica" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Il file caricato è troppo grande" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "I file che stai provando a caricare superano la dimensione massima consentita su questo server." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Scansione dei file in corso, attendi" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Scansione corrente" diff --git a/l10n/it/files_pdfviewer.po b/l10n/it/files_pdfviewer.po deleted file mode 100644 index 3f4595ffe2ae31a8227be4728aa0a3b6fd114980..0000000000000000000000000000000000000000 --- a/l10n/it/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/it/files_texteditor.po b/l10n/it/files_texteditor.po deleted file mode 100644 index 747a70244c9b70207b4194695f929d2e45e06cdc..0000000000000000000000000000000000000000 --- a/l10n/it/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/it/gallery.po b/l10n/it/gallery.po deleted file mode 100644 index d60292cea1537bd7530717aa8e24b52750ba1762..0000000000000000000000000000000000000000 --- a/l10n/it/gallery.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 02:01+0200\n" -"PO-Revision-Date: 2012-07-25 20:36+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Immagini" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Condividi la galleria" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Errore: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Errore interno" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Presentazione" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Indietro" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Rimuovi conferma" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Vuoi rimuovere l'album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Cambia il nome dell'album" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nuovo nome dell'album" diff --git a/l10n/it/impress.po b/l10n/it/impress.po deleted file mode 100644 index 31e6171b4d5c95c985f7d2e8cc6f12adfb6ab26a..0000000000000000000000000000000000000000 --- a/l10n/it/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/it/lib.po b/l10n/it/lib.po index c8853c8257d6634c00ebe552488a41a42dc768ef..093eca463d15c92df299c1dc0b90561068dc7b82 100644 --- a/l10n/it/lib.po +++ b/l10n/it/lib.po @@ -8,53 +8,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 13:35+0200\n" -"PO-Revision-Date: 2012-09-01 08:39+0000\n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-15 23:21+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Aiuto" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Personale" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Impostazioni" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Utenti" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Applicazioni" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Lo scaricamento in formato ZIP è stato disabilitato." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "I file devono essere scaricati uno alla volta." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Torna ai file" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "I file selezionati sono troppo grandi per generare un file zip." @@ -62,7 +62,7 @@ msgstr "I file selezionati sono troppo grandi per generare un file zip." msgid "Application is not enabled" msgstr "L'applicazione non è abilitata" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Errore di autenticazione" @@ -70,57 +70,84 @@ msgstr "Errore di autenticazione" msgid "Token expired. Please reload page." msgstr "Token scaduto. Ricarica la pagina." -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "File" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Testo" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Immagini" + +#: template.php:103 msgid "seconds ago" msgstr "secondi fa" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 minuto fa" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minuti fa" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 ora fa" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d ore fa" + +#: template.php:108 msgid "today" msgstr "oggi" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "ieri" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d giorni fa" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "il mese scorso" -#: template.php:95 -msgid "months ago" -msgstr "mesi fa" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d mesi fa" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "l'anno scorso" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "anni fa" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s è disponibile. Ottieni ulteriori informazioni" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "aggiornato" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "il controllo degli aggiornamenti è disabilitato" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Impossibile trovare la categoria \"%s\"" diff --git a/l10n/it/media.po b/l10n/it/media.po deleted file mode 100644 index 054877623e527c5f31800df75a4bd0e976780876..0000000000000000000000000000000000000000 --- a/l10n/it/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Francesco Apruzzese , 2011. -# , 2011. -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Italian (http://www.transifex.net/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musica" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Riproduci" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausa" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Precedente" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Successivo" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Disattiva audio" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Riattiva audio" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Nuova scansione collezione" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titolo" diff --git a/l10n/it/settings.po b/l10n/it/settings.po index b79343b9d118e50799f89acbc3d404a88f7c996f..2313377614a5c57c7a40de49c002f48cbe2d1392 100644 --- a/l10n/it/settings.po +++ b/l10n/it/settings.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:05+0200\n" -"PO-Revision-Date: 2012-10-09 00:10+0000\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -24,70 +24,73 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Impossibile caricare l'elenco dall'App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Errore di autenticazione" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Il gruppo esiste già" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Impossibile aggiungere il gruppo" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Impossibile abilitare l'applicazione." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email salvata" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Email non valida" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID modificato" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Richiesta non valida" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Impossibile eliminare il gruppo" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Errore di autenticazione" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Impossibile eliminare l'utente" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Lingua modificata" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Gli amministratori non possono rimuovere se stessi dal gruppo di amministrazione" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Impossibile aggiungere l'utente al gruppo %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Impossibile rimuovere l'utente dal gruppo %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Disabilita" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Abilita" @@ -95,97 +98,10 @@ msgstr "Abilita" msgid "Saving..." msgstr "Salvataggio in corso..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Italiano" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Avviso di sicurezza" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet.\nIl file .htaccess fornito da ownCloud non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile e spostare la cartella fuori dalla radice del server web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Esegui un'operazione per ogni pagina caricata" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php è registrato su un servizio webcron. Chiama la pagina cron.php nella radice di owncloud ogni minuto su http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Usa il servizio cron di sistema. Chiama il file cron.php nella cartella di owncloud tramite una pianificazione del cron di sistema ogni minuto." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Condivisione" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Abilita API di condivisione" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Consenti alle applicazioni di utilizzare le API di condivisione" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Consenti collegamenti" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Consenti agli utenti di condividere elementi al pubblico con collegamenti" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Consenti la ri-condivisione" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Consenti agli utenti di condividere elementi già condivisi" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Consenti agli utenti di condividere con chiunque" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Consenti agli utenti di condividere con gli utenti del proprio gruppo" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Registro" - -#: templates/admin.php:116 -msgid "More" -msgstr "Altro" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Sviluppato dalla comunità di ownCloud, il codice sorgente è licenziato nei termini della AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Aggiungi la tua applicazione" @@ -218,22 +134,22 @@ msgstr "Gestione file grandi" msgid "Ask a question" msgstr "Fai una domanda" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemi di connessione al database di supporto." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Raggiungilo manualmente." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Risposta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Hai utilizzato %s dei %s disponibili" +msgid "You have used %s of the available %s" +msgstr "Hai utilizzato %s dei %s disponibili" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -291,6 +207,16 @@ msgstr "Migliora la traduzione" msgid "use this address to connect to your ownCloud in your file manager" msgstr "usa questo indirizzo per connetterti al tuo ownCloud dal gestore file" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Sviluppato dalla comunità di ownCloud, il codice sorgente è licenziato nei termini della AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nome" diff --git a/l10n/it/tasks.po b/l10n/it/tasks.po deleted file mode 100644 index 6e5f07a0873a6d896cec5ecee4ec28ee3c549c86..0000000000000000000000000000000000000000 --- a/l10n/it/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 06:00+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Ora/Data non valida" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Attività" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Nessuna categoria" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Non specificata" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=massima" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=media" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=minima" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Riepilogo vuoto" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Percentuale di completamento non valida" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Priorità non valida" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Aggiungi attività" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Ordina per scadenza" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Ordina per elenco" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Ordina per completamento" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Ordina per posizione" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Ordina per priorità" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Ordina per etichetta" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Caricamento attività in corso..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Importante" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Più" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Meno" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Elimina" diff --git a/l10n/it/user_migrate.po b/l10n/it/user_migrate.po deleted file mode 100644 index 9c918e027c5d5e582879d7344ce534ad7050ee63..0000000000000000000000000000000000000000 --- a/l10n/it/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 11:55+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Esporta" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Si è verificato un errore durante la creazione del file di esportazione" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Si è verificato un errore" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Esporta il tuo account utente" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Questa operazione creerà un file compresso che contiene il tuo account ownCloud." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Importa account utente" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "Zip account utente" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importa" diff --git a/l10n/it/user_openid.po b/l10n/it/user_openid.po deleted file mode 100644 index b8036426bc97f4123f5cb241a04bf2a13c895d70..0000000000000000000000000000000000000000 --- a/l10n/it/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Vincenzo Reale , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-23 02:03+0200\n" -"PO-Revision-Date: 2012-08-22 20:39+0000\n" -"Last-Translator: Vincenzo Reale \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Questo è un server OpenID. Per ulteriori informazioni, vedi " - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identità: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Dominio: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Utente: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Accesso" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Errore: nessun utente selezionato" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "puoi autenticarti ad altri siti con questo indirizzo" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Fornitore OpenID autorizzato" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Il tuo indirizzo su Wordpress, Identi.ca, …" diff --git a/l10n/it/files_odfviewer.po b/l10n/it/user_webdavauth.po similarity index 59% rename from l10n/it/files_odfviewer.po rename to l10n/it/user_webdavauth.po index 0fae9bc23f9902d4ba5912359a5721d130e39bd1..a2580c8fe863ed6668d2340545afc2e529218d40 100644 --- a/l10n/it/files_odfviewer.po +++ b/l10n/it/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Vincenzo Reale , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 14:45+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "URL WebDAV: http://" diff --git a/l10n/ja_JP/admin_dependencies_chk.po b/l10n/ja_JP/admin_dependencies_chk.po deleted file mode 100644 index be8f217eba16999201c034616960e85d71c350ac..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 03:08+0000\n" -"Last-Translator: Daisuke Deguchi \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "php-jsonモジュールã¯ã‚¢ãƒ—リケーション間ã®å†…部通信ã«å¿…è¦ã§ã™" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "php-curlモジュールã¯ãƒ–ックマーク追加時ã®ãƒšãƒ¼ã‚¸ã‚¿ã‚¤ãƒˆãƒ«å–å¾—ã«å¿…è¦ã§ã™" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "php-gdモジュールã¯ã‚µãƒ ãƒã‚¤ãƒ«ç”»åƒã®ç”Ÿæˆã«å¿…è¦ã§ã™" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "php-ldapモジュールã¯LDAPサーãƒã¸ã®æŽ¥ç¶šã«å¿…è¦ã§ã™" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "php-zipモジュールã¯è¤‡æ•°ãƒ•ã‚¡ã‚¤ãƒ«ã®åŒæ™‚ダウンロードã«å¿…è¦ã§ã™" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "php-mb_multibyteモジュールã¯ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã‚’æ­£ã—ã扱ã†ãŸã‚ã«å¿…è¦ã§ã™" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "php-ctypeモジュールã¯ãƒ‡ãƒ¼ã‚¿ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã«å¿…è¦ã§ã™" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "php-xmlモジュールã¯WebDAVã§ã®ãƒ•ã‚¡ã‚¤ãƒ«å…±æœ‰ã«å¿…è¦ã§ã™" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "php.iniã®allow_url_fopenã¯OCSサーãƒã‹ã‚‰çŸ¥è­˜ãƒ™ãƒ¼ã‚¹ã‚’å–å¾—ã™ã‚‹ãŸã‚ã«1ã«è¨­å®šã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "php-pdoモジュールã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ownCloudã®ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ãŸã‚ã«å¿…è¦ã§ã™" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "ä¾å­˜é–¢ä¿‚ã®çŠ¶æ³" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "利用先 :" diff --git a/l10n/ja_JP/admin_migrate.po b/l10n/ja_JP/admin_migrate.po deleted file mode 100644 index 4411d9e77cda2e25803426ee48a0600d8d98f29d..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-17 00:44+0200\n" -"PO-Revision-Date: 2012-08-16 05:29+0000\n" -"Last-Translator: Daisuke Deguchi \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "ownCloudをエクスãƒãƒ¼ãƒˆ" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "ã“ã®ownCloudã®ãƒ‡ãƒ¼ã‚¿ã‚’å«ã‚€åœ§ç¸®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã—ã¾ã™ã€‚\nエクスãƒãƒ¼ãƒˆã®ç¨®é¡žã‚’é¸æŠžã—ã¦ãã ã•ã„:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "エクスãƒãƒ¼ãƒˆ" diff --git a/l10n/ja_JP/bookmarks.po b/l10n/ja_JP/bookmarks.po deleted file mode 100644 index a708697103daada4555b39dd3257d77ba9c985c7..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/ja_JP/calendar.po b/l10n/ja_JP/calendar.po deleted file mode 100644 index 605bf02d2ef3f0f85783c93b81b698d258363dc3..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-22 02:03+0200\n" -"PO-Revision-Date: 2012-08-21 02:29+0000\n" -"Last-Translator: Daisuke Deguchi \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "ã™ã¹ã¦ã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã¯å®Œå…¨ã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•ã‚Œã¦ã„ã¾ã›ã‚“" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "ã™ã¹ã¦å®Œå…¨ã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•ã‚Œã¦ã„ã‚‹ã¨æ€ã‚ã‚Œã¾ã™" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "カレンダーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "イベントãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "誤ã£ãŸã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã§ã™" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "イベントã®ç„¡ã„ã‚‚ã—ãã¯ã™ã¹ã¦ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’å«ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ—¢ã«ã‚ãªãŸã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã«ä¿å­˜ã•ã‚Œã¦ã„ã¾ã™ã€‚" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "イベントã¯æ–°ã—ã„カレンダーã«ä¿å­˜ã•ã‚Œã¾ã—ãŸ" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "インãƒãƒ¼ãƒˆã«å¤±æ•—" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "イベントã¯ã‚ãªãŸã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã«ä¿å­˜ã•ã‚Œã¾ã—ãŸ" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "æ–°ã—ã„タイムゾーン:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "タイムゾーンãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "無効ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ã™" - -#: appinfo/app.php:37 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "カレンダー" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "dddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "M月dæ—¥ (dddd)" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "M月dæ—¥ (dddd)" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "yyyyå¹´M月" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "yyyyå¹´M月dæ—¥{ '~' [yyyyå¹´][M月]dæ—¥}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "yyyyå¹´M月dæ—¥ (dddd)" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "誕生日" - -#: lib/app.php:122 -msgid "Business" -msgstr "ビジãƒã‚¹" - -#: lib/app.php:123 -msgid "Call" -msgstr "電話をã‹ã‘ã‚‹" - -#: lib/app.php:124 -msgid "Clients" -msgstr "顧客" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "é‹é€ä¼šç¤¾" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "休日" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "アイデア" - -#: lib/app.php:128 -msgid "Journey" -msgstr "æ—…è¡Œ" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "記念祭" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "ミーティング" - -#: lib/app.php:131 -msgid "Other" -msgstr "ãã®ä»–" - -#: lib/app.php:132 -msgid "Personal" -msgstr "個人" - -#: lib/app.php:133 -msgid "Projects" -msgstr "プロジェクト" - -#: lib/app.php:134 -msgid "Questions" -msgstr "質å•äº‹é …" - -#: lib/app.php:135 -msgid "Work" -msgstr "週ã®å§‹ã¾ã‚Š" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "ã«ã‚ˆã‚‹" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "ç„¡å" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "æ–°ã—ãカレンダーを作æˆ" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "ç¹°ã‚Šè¿”ã•ãªã„" - -#: lib/object.php:373 -msgid "Daily" -msgstr "毎日" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "毎週" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "毎平日" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "2週間ã”ã¨" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "毎月" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "毎年" - -#: lib/object.php:388 -msgid "never" -msgstr "ç„¡ã—" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "回数ã§æŒ‡å®š" - -#: lib/object.php:390 -msgid "by date" -msgstr "日付ã§æŒ‡å®š" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "æ—¥ã«ã¡ã§æŒ‡å®š" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "曜日ã§æŒ‡å®š" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "月" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "ç«" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "æ°´" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "木" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "金" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "土" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "æ—¥" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "予定ã®ã‚る週を指定" - -#: lib/object.php:428 -msgid "first" -msgstr "1週目" - -#: lib/object.php:429 -msgid "second" -msgstr "2週目" - -#: lib/object.php:430 -msgid "third" -msgstr "3週目" - -#: lib/object.php:431 -msgid "fourth" -msgstr "4週目" - -#: lib/object.php:432 -msgid "fifth" -msgstr "5週目" - -#: lib/object.php:433 -msgid "last" -msgstr "最終週" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "1月" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "2月" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "3月" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "4月" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "5月" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "6月" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "7月" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "8月" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "9月" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "10月" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "11月" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "12月" - -#: lib/object.php:488 -msgid "by events date" -msgstr "日付ã§æŒ‡å®š" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "日番å·ã§æŒ‡å®š" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "週番å·ã§æŒ‡å®š" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "月ã¨æ—¥ã§æŒ‡å®š" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "日付" - -#: lib/search.php:43 -msgid "Cal." -msgstr "カレンダー" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "æ—¥" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "月" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "ç«" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "æ°´" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "木" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "金" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "土" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "1月" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "2月" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "3月" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "4月" - -#: templates/calendar.php:8 -msgid "May." -msgstr "5月" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "6月" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "7月" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "8月" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "9月" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "10月" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "11月" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "12月" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "終日" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "é …ç›®ãŒã‚ã‚Šã¾ã›ã‚“" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "タイトル" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "開始日" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "開始時間" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "終了日" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "終了時間" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "イベント終了時間ãŒé–‹å§‹æ™‚間より先ã§ã™" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "データベースã®ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã—ãŸ" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "週" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "月" - -#: templates/calendar.php:41 -msgid "List" -msgstr "予定リスト" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "今日" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "設定" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "ã‚ãªãŸã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDavã¸ã®ãƒªãƒ³ã‚¯" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "共有カレンダー" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "共有カレンダーã¯ã‚ã‚Šã¾ã›ã‚“" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "カレンダーを共有ã™ã‚‹" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "ダウンロード" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "編集" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "削除" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "共有者" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "æ–°ã—ã„カレンダー" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "カレンダーを編集" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "表示å" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "アクティブ" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "カレンダーã®è‰²" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "ä¿å­˜" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "完了" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "キャンセル" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "イベントを編集" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "エクスãƒãƒ¼ãƒˆ" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "イベント情報" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "ç¹°ã‚Šè¿”ã—" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "アラーム" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "å‚加者" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "共有" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "イベントã®ã‚¿ã‚¤ãƒˆãƒ«" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "カテゴリー" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "カテゴリをコンマã§åŒºåˆ‡ã‚‹" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "カテゴリを編集" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "終日イベント" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "開始" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "終了" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "詳細設定" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "場所" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "イベントã®å ´æ‰€" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "メモ" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "イベントã®èª¬æ˜Ž" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "ç¹°ã‚Šè¿”ã—" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "詳細設定" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "曜日を指定" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "日付を指定" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "対象ã®å¹´ã‚’é¸æŠžã™ã‚‹ã€‚" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "対象ã®æœˆã‚’é¸æŠžã™ã‚‹ã€‚" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "月を指定ã™ã‚‹" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "週を指定ã™ã‚‹" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "対象ã®é€±ã‚’é¸æŠžã™ã‚‹ã€‚" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "é–“éš”" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "ç¹°ã‚Šè¿”ã™æœŸé–“" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "回繰り返ã™" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "æ–°è¦ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã®ä½œæˆ" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "カレンダーファイルをインãƒãƒ¼ãƒˆ" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "カレンダーをé¸æŠžã—ã¦ãã ã•ã„" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "æ–°è¦ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã®å称" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "利用å¯èƒ½ãªåå‰ã‚’指定ã—ã¦ãã ã•ã„ï¼" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "ã“ã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼åã¯ã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚ã‚‚ã—続行ã™ã‚‹å ´åˆã¯ã€ã“れらã®ã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ã¯ãƒžãƒ¼ã‚¸ã•ã‚Œã¾ã™ã€‚" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "インãƒãƒ¼ãƒˆ" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "ダイアログを閉ã˜ã‚‹" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "æ–°ã—ã„イベントを作æˆ" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "イベントを閲覧" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "カテゴリãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "of" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "at" - -#: templates/settings.php:10 -msgid "General" -msgstr "一般" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "タイムゾーン" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "自動的ã«ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã‚’æ›´æ–°" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "時刻ã®è¡¨ç¤ºå½¢å¼" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "1週間ã®åˆã‚ã®æ›œæ—¥" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "キャッシュ" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "ç¹°ã‚Šè¿”ã—イベントã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’クリア" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URL" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "CalDAVカレンダーã®åŒæœŸç”¨ã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: templates/settings.php:87 -msgid "more info" -msgstr "ã•ã‚‰ã«" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "プライマリアドレス(コンタクト等)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "読ã¿å–り専用ã®iCalendarリンク" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "ユーザ" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "ユーザをé¸æŠž" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "編集å¯èƒ½" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "グループ" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "グループをé¸æŠž" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "公開ã™ã‚‹" diff --git a/l10n/ja_JP/contacts.po b/l10n/ja_JP/contacts.po deleted file mode 100644 index 0cf04a8a0a9c7f042a8aa2d561fe33f9a373c592..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 02:39+0000\n" -"Last-Translator: ttyn \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "アドレス帳ã®æœ‰åŠ¹ï¼ç„¡åŠ¹åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "idãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "空白ã®åå‰ã§ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã‚’æ›´æ–°ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "アドレス帳ã®æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "IDãŒæä¾›ã•ã‚Œã¦ã„ã¾ã›ã‚“" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®è¨­å®šã‚¨ãƒ©ãƒ¼ã€‚" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "削除ã™ã‚‹ã‚«ãƒ†ã‚´ãƒªãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "アドレス帳ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "連絡先ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "連絡先ã®è¿½åŠ ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "è¦ç´ åãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "連絡先を解æžã§ãã¾ã›ã‚“ã§ã—ãŸ:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "é …ç›®ã®æ–°è¦è¿½åŠ ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "ä½æ‰€ã®é …ç›®ã®ã†ã¡ï¼‘ã¤ã¯å…¥åŠ›ã—ã¦ä¸‹ã•ã„。" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "é‡è¤‡ã™ã‚‹å±žæ€§ã‚’追加: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "IMã®ãƒ‘ラメータãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "ä¸æ˜ŽãªIM:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "vCardã®æƒ…å ±ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™ã€‚ページをリロードã—ã¦ä¸‹ã•ã„。" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "IDãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "VCardã‹ã‚‰IDã®æŠ½å‡ºã‚¨ãƒ©ãƒ¼: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "vCardã®æƒ…å ±ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。ページをå†èª­ã¿è¾¼ã¿ã—ã¦ãã ã•ã„: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "何ã‹ãŒFUBARã¸ç§»å‹•ã—ã¾ã—ãŸã€‚" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "連絡先IDã¯ç™»éŒ²ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "連絡先写真ã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "一時ファイルã®ä¿å­˜ã‚¨ãƒ©ãƒ¼ã€‚" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "写真ã®èª­ã¿è¾¼ã¿ã¯ç„¡åŠ¹ã§ã™ã€‚" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "連絡先 IDãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "写真ã®ãƒ‘スãŒç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "ファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "ç”»åƒã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "連絡先オブジェクトã®å–得エラー。" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "写真属性ã®å–得エラー。" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "連絡先ã®ä¿å­˜ã‚¨ãƒ©ãƒ¼ã€‚" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "ç”»åƒã®ãƒªã‚µã‚¤ã‚ºã‚¨ãƒ©ãƒ¼" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "ç”»åƒã®åˆ‡ã‚ŠæŠœãエラー" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "一時画åƒã®ç”Ÿæˆã‚¨ãƒ©ãƒ¼" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "ç”»åƒæ¤œç´¢ã‚¨ãƒ©ãƒ¼: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "ストレージã¸ã®é€£çµ¡å…ˆã®ã‚¢ãƒƒãƒ—ロードエラー。" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "エラーã¯ã‚ã‚Šã¾ã›ã‚“。ファイルã®ã‚¢ãƒƒãƒ—ロードã¯æˆåŠŸã—ã¾ã—ãŸ" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "アップロードファイル㯠php.ini 内㮠upload_max_filesize ã®åˆ¶é™ã‚’超ãˆã¦ã„ã¾ã™" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "アップロードファイルã¯HTMLフォームã§æŒ‡å®šã•ã‚ŒãŸ MAX_FILE_SIZE ã®åˆ¶é™ã‚’超ãˆã¦ã„ã¾ã™" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "アップロードファイルã¯ä¸€éƒ¨åˆ†ã ã‘アップロードã•ã‚Œã¾ã—ãŸ" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "ファイルã¯ã‚¢ãƒƒãƒ—ロードã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "一時ä¿å­˜ãƒ•ã‚©ãƒ«ãƒ€ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "一時的ãªç”»åƒã®ä¿å­˜ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "一時的ãªç”»åƒã®èª­ã¿è¾¼ã¿ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "ファイルã¯ä½•ã‚‚アップロードã•ã‚Œã¦ã„ã¾ã›ã‚“。ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "連絡先" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "申ã—訳ã‚ã‚Šã¾ã›ã‚“。ã“ã®æ©Ÿèƒ½ã¯ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "未実装" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "有効ãªã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "エラー" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "連絡先を追加ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "アドレス帳を一ã¤é¸æŠžã—ã¦ãã ã•ã„" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "権é™ã‚¨ãƒ©ãƒ¼" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "ã“ã®å±žæ€§ã¯ç©ºã«ã§ãã¾ã›ã‚“。" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "è¦ç´ ã‚’シリアライズã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' ã¯åž‹ã®å¼•æ•°ç„¡ã—ã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸã€‚bugs.owncloud.org ã¸å ±å‘Šã—ã¦ãã ã•ã„。" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "åå‰ã‚’編集" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "アップロードã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "アップロードã—よã†ã¨ã—ã¦ã„るファイルã¯ã€ã“ã®ã‚µãƒ¼ãƒã®æœ€å¤§ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ロードサイズを超ãˆã¦ã„ã¾ã™ã€‚" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "プロファイルã®ç”»åƒã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "タイプをé¸æŠž" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "ã„ãã¤ã‹ã®é€£çµ¡å…ˆãŒå‰Šé™¤ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™ãŒã€ã¾ã å‰Šé™¤ã•ã‚Œã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã¾ã§ãŠå¾…ã¡ãã ã•ã„。" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "ã“れらã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã‚’マージã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ" - -#: js/loader.js:49 -msgid "Result: " -msgstr "çµæžœ: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " をインãƒãƒ¼ãƒˆã€ " - -#: js/loader.js:49 -msgid " failed." -msgstr " ã¯å¤±æ•—ã—ã¾ã—ãŸã€‚" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "表示åã¯ç©ºã«ã§ãã¾ã›ã‚“。" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "アドレス帳ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "ã“ã‚Œã¯ã‚ãªãŸã®é›»è©±å¸³ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "連絡先を見ã¤ã‘る事ãŒã§ãã¾ã›ã‚“。" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "Googleトーク" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "勤務先" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "ä½å±…" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "ãã®ä»–" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "æºå¸¯é›»è©±" - -#: lib/app.php:203 -msgid "Text" -msgstr "TTY TDD" - -#: lib/app.php:204 -msgid "Voice" -msgstr "音声番å·" - -#: lib/app.php:205 -msgid "Message" -msgstr "メッセージ" - -#: lib/app.php:206 -msgid "Fax" -msgstr "FAX" - -#: lib/app.php:207 -msgid "Video" -msgstr "テレビ電話" - -#: lib/app.php:208 -msgid "Pager" -msgstr "ãƒã‚±ãƒ™ãƒ«" - -#: lib/app.php:215 -msgid "Internet" -msgstr "インターãƒãƒƒãƒˆ" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "誕生日" - -#: lib/app.php:253 -msgid "Business" -msgstr "ビジãƒã‚¹" - -#: lib/app.php:254 -msgid "Call" -msgstr "電話" - -#: lib/app.php:255 -msgid "Clients" -msgstr "顧客" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "é‹é€ä¼šç¤¾" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "休日" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "アイデア" - -#: lib/app.php:259 -msgid "Journey" -msgstr "æ—…è¡Œ" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "記念祭" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "打ã¡åˆã‚ã›" - -#: lib/app.php:263 -msgid "Personal" -msgstr "個人" - -#: lib/app.php:264 -msgid "Projects" -msgstr "プロジェクト" - -#: lib/app.php:265 -msgid "Questions" -msgstr "質å•" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}ã®èª•ç”Ÿæ—¥" - -#: lib/search.php:15 -msgid "Contact" -msgstr "連絡先" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "ã“ã®é€£çµ¡å…ˆã‚’編集ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "ã“ã®é€£çµ¡å…ˆã‚’削除ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "連絡先ã®è¿½åŠ " - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "インãƒãƒ¼ãƒˆ" - -#: templates/index.php:18 -msgid "Settings" -msgstr "設定" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "アドレス帳" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "é–‰ã˜ã‚‹" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "キーボードショートカット" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "ナビゲーション" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "リスト内ã®æ¬¡ã®é€£çµ¡å…ˆ" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "リスト内ã®å‰ã®é€£çµ¡å…ˆ" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "ç¾åœ¨ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã‚’展開ã™ã‚‹ï¼æŠ˜ã‚ŠãŸãŸã‚€" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "次ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "å‰ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³" - -#: templates/index.php:54 -msgid "Actions" -msgstr "アクション" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "連絡先リストをå†èª­è¾¼ã™ã‚‹" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "æ–°ã—ã„連絡先を追加" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "æ–°ã—ã„アドレス帳を追加" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "ç¾åœ¨ã®é€£çµ¡å…ˆã‚’削除" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "写真をドロップã—ã¦ã‚¢ãƒƒãƒ—ロード" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "ç¾åœ¨ã®å†™çœŸã‚’削除" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "ç¾åœ¨ã®å†™çœŸã‚’編集" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "æ–°ã—ã„写真をアップロード" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "ownCloudã‹ã‚‰å†™çœŸã‚’é¸æŠž" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "編集フォーマットã€ã‚·ãƒ§ãƒ¼ãƒˆãƒãƒ¼ãƒ ã€ãƒ•ãƒ«ãƒãƒ¼ãƒ ã€é€†é †ã€ã‚«ãƒ³ãƒžåŒºåˆ‡ã‚Šã®é€†é †" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "åå‰ã®è©³ç´°ã‚’編集" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "所属" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "削除" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "ニックãƒãƒ¼ãƒ " - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "ニックãƒãƒ¼ãƒ ã‚’入力" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "ウェブサイト" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Webサイトã¸ç§»å‹•" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "yyyy-mm-dd" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "グループ" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "コンマã§ã‚°ãƒ«ãƒ¼ãƒ—を分割" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "グループを編集" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "推奨" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定ã—ã¦ãã ã•ã„。" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "メールアドレスを入力" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "アドレスã¸ãƒ¡ãƒ¼ãƒ«ã‚’é€ã‚‹" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "メールアドレスを削除" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "電話番å·ã‚’入力" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "電話番å·ã‚’削除" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "インスタントメッセンジャー" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "IMを削除" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "地図ã§è¡¨ç¤º" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "ä½æ‰€ã®è©³ç´°ã‚’編集" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "ã“ã“ã«ãƒ¡ãƒ¢ã‚’追加。" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "項目を追加" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "電話番å·" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "メールアドレス" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "インスタントメッセージ" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "ä½æ‰€" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "メモ" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "連絡先ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "連絡先ã®å‰Šé™¤" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "一時画åƒã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "ä½æ‰€ã‚’編集" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "種類" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "ç§æ›¸ç®±" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "ä½æ‰€1" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "番地" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "ä½æ‰€2" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "アパートåç­‰" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "都市" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "都é“府県" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "例:æ±äº¬éƒ½ã€å¤§é˜ªåºœ" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "郵便番å·" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "郵便番å·" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "国å" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "アドレス帳" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "敬称" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Miss" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Ms" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Mr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Mrs" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "å" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "ミドルãƒãƒ¼ãƒ " - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "姓" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "称å·" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "連絡先ファイルをインãƒãƒ¼ãƒˆ" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "アドレス帳をé¸æŠžã—ã¦ãã ã•ã„" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "æ–°ã—ã„アドレス帳を作æˆ" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "æ–°ã—ã„アドレスブックã®åå‰" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "連絡先をインãƒãƒ¼ãƒˆ" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "アドレス帳ã«é€£çµ¡å…ˆãŒç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "連絡先を追加" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "アドレス帳をé¸æŠžã—ã¦ãã ã•ã„" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "åå‰ã‚’入力" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "説明を入力ã—ã¦ãã ã•ã„" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAVåŒæœŸã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: templates/settings.php:3 -msgid "more info" -msgstr "詳細情報" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "プライマリアドレス(Kontact 他)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "CarDavリンクを表示" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "読ã¿å–り専用ã®VCFリンクを表示" - -#: templates/settings.php:26 -msgid "Share" -msgstr "共有" - -#: templates/settings.php:29 -msgid "Download" -msgstr "ダウンロード" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "編集" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "æ–°è¦ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³" - -#: templates/settings.php:44 -msgid "Name" -msgstr "åå‰" - -#: templates/settings.php:45 -msgid "Description" -msgstr "説明" - -#: templates/settings.php:46 -msgid "Save" -msgstr "ä¿å­˜" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "å–り消ã—" - -#: templates/settings.php:52 -msgid "More..." -msgstr "ã‚‚ã£ã¨..." diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index 9ab3f59c8b39e0cf0a78b7478cbb81734f9d566e..571d8a38dc75b756ccc3b67900687492a85506a5 100644 --- a/l10n/ja_JP/core.po +++ b/l10n/ja_JP/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 02:03+0200\n" -"PO-Revision-Date: 2012-10-01 08:51+0000\n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 08:03+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -19,208 +19,241 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "アプリケーションåã¯æä¾›ã•ã‚Œã¦ã„ã¾ã›ã‚“。" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "カテゴリタイプã¯æä¾›ã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "追加ã™ã‚‹ã‚«ãƒ†ã‚´ãƒªã¯ã‚ã‚Šã¾ã›ã‚“ã‹ï¼Ÿ" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "ã“ã®ã‚«ãƒ†ã‚´ãƒªã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "オブジェクトタイプã¯æä¾›ã•ã‚Œã¦ã„ã¾ã›ã‚“。" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID ã¯æä¾›ã•ã‚Œã¦ã„ã¾ã›ã‚“。" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "ãŠæ°—ã«å…¥ã‚Šã« %s を追加エラー" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "削除ã™ã‚‹ã‚«ãƒ†ã‚´ãƒªãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰ %s ã®å‰Šé™¤ã‚¨ãƒ©ãƒ¼" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "設定" -#: js/js.js:645 -msgid "January" -msgstr "1月" +#: js/js.js:704 +msgid "seconds ago" +msgstr "秒å‰" -#: js/js.js:645 -msgid "February" -msgstr "2月" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 分å‰" -#: js/js.js:645 -msgid "March" -msgstr "3月" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} 分å‰" -#: js/js.js:645 -msgid "April" -msgstr "4月" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 時間å‰" -#: js/js.js:645 -msgid "May" -msgstr "5月" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} 時間å‰" -#: js/js.js:645 -msgid "June" -msgstr "6月" +#: js/js.js:709 +msgid "today" +msgstr "今日" -#: js/js.js:646 -msgid "July" -msgstr "7月" +#: js/js.js:710 +msgid "yesterday" +msgstr "昨日" -#: js/js.js:646 -msgid "August" -msgstr "8月" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} æ—¥å‰" -#: js/js.js:646 -msgid "September" -msgstr "9月" +#: js/js.js:712 +msgid "last month" +msgstr "一月å‰" -#: js/js.js:646 -msgid "October" -msgstr "10月" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} 月å‰" -#: js/js.js:646 -msgid "November" -msgstr "11月" +#: js/js.js:714 +msgid "months ago" +msgstr "月å‰" -#: js/js.js:646 -msgid "December" -msgstr "12月" +#: js/js.js:715 +msgid "last year" +msgstr "一年å‰" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "å¹´å‰" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "é¸æŠž" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "キャンセル" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "ã„ã„ãˆ" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "ã¯ã„" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "OK" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "削除ã™ã‚‹ã‚«ãƒ†ã‚´ãƒªãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "オブジェクタイプãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:493 -#: js/share.js:505 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "エラー" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "アプリåãŒã—ã¦ã„ã•ã‚Œã¦ã„ã¾ã›ã‚“。" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "å¿…è¦ãªãƒ•ã‚¡ã‚¤ãƒ« {file} ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼" + +#: js/share.js:124 msgid "Error while sharing" msgstr "共有ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "共有解除ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "権é™å¤‰æ›´ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "ã‚ãªãŸã¨ã‚°ãƒ«ãƒ¼ãƒ—ã§å…±æœ‰ä¸­" - -#: js/share.js:130 -msgid "by" -msgstr "ã«ã‚ˆã‚Š" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "ã‚ãªãŸã¨ {owner} ã®ã‚°ãƒ«ãƒ¼ãƒ— {group} ã§å…±æœ‰ä¸­" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "ã‚ãªãŸã¨å…±æœ‰" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "{owner} ã¨å…±æœ‰ä¸­" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "共有者" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "URLリンクã§å…±æœ‰" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "パスワードä¿è­·" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "パスワード" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "有効期é™ã‚’設定" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "有効期é™" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "メール経由ã§å…±æœ‰:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "å†å…±æœ‰ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: js/share.js:250 -msgid "Shared in" -msgstr "ã®ä¸­ã§å…±æœ‰ä¸­" - -#: js/share.js:250 -msgid "with" -msgstr "ã¨" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "{item} 内㧠{user} ã¨å…±æœ‰ä¸­" + +#: js/share.js:292 msgid "Unshare" msgstr "共有解除" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "編集å¯èƒ½" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "アクセス権é™" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "作æˆ" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "æ›´æ–°" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "削除" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "共有" -#: js/share.js:321 js/share.js:480 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "パスワードä¿è­·" -#: js/share.js:493 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "有効期é™ã®æœªè¨­å®šã‚¨ãƒ©ãƒ¼" -#: js/share.js:505 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "有効期é™ã®è¨­å®šã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloudã®ãƒ‘スワードをリセットã—ã¾ã™" @@ -233,15 +266,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "メールã§ãƒ‘スワードをリセットã™ã‚‹ãƒªãƒ³ã‚¯ãŒå±Šãã¾ã™ã€‚" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "é€ä¿¡ã•ã‚Œã¾ã—ãŸ" +msgid "Reset email send." +msgstr "リセットメールをé€ä¿¡ã—ã¾ã™ã€‚" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "ログインã«å¤±æ•—ã—ã¾ã—ãŸï¼" +msgid "Request failed!" +msgstr "リクエスト失敗ï¼" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "ユーザå" @@ -297,72 +330,187 @@ msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“" msgid "Edit categories" msgstr "カテゴリを編集" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "追加" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "セキュリティ警告" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "セキュアãªä¹±æ•°ç”Ÿæˆå™¨ãŒåˆ©ç”¨å¯èƒ½ã§ã¯ã‚ã‚Šã¾ã›ã‚“。PHPã®OpenSSL拡張を有効ã«ã—ã¦ä¸‹ã•ã„。" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "セキュアãªä¹±æ•°ç”Ÿæˆå™¨ãŒç„¡ã„å ´åˆã€æ”»æ’ƒè€…ã¯ãƒ‘スワードリセットã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚’予測ã—ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ä¹—ã£å–られるå¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "データディレクトリã¨ãƒ•ã‚¡ã‚¤ãƒ«ãŒæらãインターãƒãƒƒãƒˆã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã£ã¦ã„ã¾ã™ã€‚ownCloudãŒæä¾›ã™ã‚‹ .htaccessファイルãŒæ©Ÿèƒ½ã—ã¦ã„ã¾ã›ã‚“。データディレクトリを全ãアクセスã§ããªã„よã†ã«ã™ã‚‹ã‹ã€ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ウェブサーãƒã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆãƒ«ãƒ¼ãƒˆã®å¤–ã«ç½®ãよã†ã«ã‚¦ã‚§ãƒ–サーãƒã‚’設定ã™ã‚‹ã“ã¨ã‚’å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚ " + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "管ç†è€…アカウントを作æˆã—ã¦ãã ã•ã„" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "詳細設定" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "データフォルダ" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "データベースを設定ã—ã¦ãã ã•ã„" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "ãŒä½¿ç”¨ã•ã‚Œã¾ã™" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "データベースã®ãƒ¦ãƒ¼ã‚¶å" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "データベースã®ãƒ‘スワード" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "データベースå" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "データベースã®è¡¨é ˜åŸŸ" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "データベースã®ãƒ›ã‚¹ãƒˆå" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "セットアップを完了ã—ã¾ã™" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "æ—¥" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "ç«" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "æ°´" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "木" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "金" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "土" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "1月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "2月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "3月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "4月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "5月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "6月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "7月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "8月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "9月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "10月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "11月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "12月" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "管ç†ä¸‹ã«ã‚るウェブサービス" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "ログアウト" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "自動ログインã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸï¼" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "最近パスワードを変更ã—ã¦ã„ãªã„å ´åˆã€ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯å±é™ºã«ã•ã‚‰ã•ã‚Œã¦ã„ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "アカウントä¿è­·ã®ç‚ºã€ãƒ‘スワードをå†åº¦ã®å¤‰æ›´ã‚’ãŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "パスワードを忘れã¾ã—ãŸã‹ï¼Ÿ" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "パスワードを記憶ã™ã‚‹" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "ログイン" @@ -377,3 +525,17 @@ msgstr "å‰" #: templates/part.pagenavi.php:20 msgid "next" msgstr "次" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "セキュリティ警告ï¼" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "パスワードã®ç¢ºèª
            セキュリティ上ã®ç†ç”±ã«ã‚ˆã‚Šãƒ‘スワードã®å†å…¥åŠ›ã‚’ãŠé¡˜ã„ã—ã¾ã™ã€‚" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "確èª" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index 786548648ce6c4db947847e2e9f077fdd954714c..3f253361a8a512123fe79156419bd76cac499dbc 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/files.po @@ -4,14 +4,16 @@ # # Translators: # Daisuke Deguchi , 2012. +# Daisuke Deguchi , 2012. +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 02:02+0200\n" -"PO-Revision-Date: 2012-09-27 00:51+0000\n" -"Last-Translator: Daisuke Deguchi \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 01:53+0000\n" +"Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +26,166 @@ msgid "There is no error, the file uploaded with success" msgstr "エラーã¯ã‚ã‚Šã¾ã›ã‚“。ファイルã®ã‚¢ãƒƒãƒ—ロードã¯æˆåŠŸã—ã¾ã—ãŸ" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯php.iniã®upload_max_filesizeã«è¨­å®šã•ã‚ŒãŸã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯php.ini ã® upload_max_filesize ã«è¨­å®šã•ã‚ŒãŸã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯HTMLã®ãƒ•ã‚©ãƒ¼ãƒ ã«è¨­å®šã•ã‚ŒãŸMAX_FILE_SIZEã«è¨­å®šã•ã‚ŒãŸã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "ファイルã¯ä¸€éƒ¨åˆ†ã—ã‹ã‚¢ãƒƒãƒ—ロードã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "ファイルã¯ã‚¢ãƒƒãƒ—ロードã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "テンãƒãƒ©ãƒªãƒ•ã‚©ãƒ«ãƒ€ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "ディスクã¸ã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "ファイル" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "共有ã—ãªã„" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "削除" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "åå‰ã®å¤‰æ›´" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "æ—¢ã«å­˜åœ¨ã—ã¾ã™" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} ã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "ç½®ãæ›ãˆ" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "推奨å称" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "キャンセル" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "ç½®æ›ï¼š" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} ã‚’ç½®æ›" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "å…ƒã«æˆ»ã™" -#: js/filelist.js:241 -msgid "with" -msgstr "â†" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{old_name} ã‚’ {new_name} ã«ç½®æ›" -#: js/filelist.js:273 -msgid "unshared" -msgstr "未共有" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "未共有 {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "削除" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "削除 {files}" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "無効ãªåå‰ã€'\\', '/', '<', '>', ':', '\"', '|', '?', '*' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "ZIPファイルを生æˆä¸­ã§ã™ã€ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„。" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "アップロード使用ã¨ã—ã¦ã„るファイルãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã€ã‚‚ã—ãã¯ã‚µã‚¤ã‚ºãŒ0ãƒã‚¤ãƒˆã®ãŸã‚ã€ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“。" +msgstr "ディレクトリもã—ãã¯0ãƒã‚¤ãƒˆã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "アップロードエラー" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "é–‰ã˜ã‚‹" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "ä¿ç•™" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "ファイルを1ã¤ã‚¢ãƒƒãƒ—ロード中" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "ファイルをアップロード中" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} ファイルをアップロード中" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "アップロードã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸã€‚" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ファイル転é€ã‚’実行中ã§ã™ã€‚今ã“ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ç§»å‹•ã™ã‚‹ã¨ã‚¢ãƒƒãƒ—ロードãŒä¸­æ­¢ã•ã‚Œã¾ã™ã€‚" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "無効ãªåå‰ã€'/' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "無効ãªãƒ•ã‚©ãƒ«ãƒ€åã§ã™ã€‚\"Shared\" ã®åˆ©ç”¨ã¯ ownCloud ãŒäºˆç´„済ã¿ã§ã™ã€‚" -#: js/files.js:668 -msgid "files scanned" -msgstr "ファイルをスキャンã—ã¾ã—ãŸ" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} ファイルをスキャン" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "スキャン中ã®ã‚¨ãƒ©ãƒ¼" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "åå‰" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "サイズ" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "更新日時" -#: js/files.js:778 -msgid "folder" -msgstr "フォルダ" - -#: js/files.js:780 -msgid "folders" -msgstr "フォルダ" - -#: js/files.js:788 -msgid "file" -msgstr "ファイル" - -#: js/files.js:790 -msgid "files" -msgstr "ファイル" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "秒å‰" - -#: js/files.js:835 -msgid "minute ago" -msgstr "分å‰" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "分å‰" - -#: js/files.js:839 -msgid "today" -msgstr "今日" - -#: js/files.js:840 -msgid "yesterday" -msgstr "昨日" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 フォルダ" -#: js/files.js:841 -msgid "days ago" -msgstr "æ—¥å‰" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} フォルダ" -#: js/files.js:842 -msgid "last month" -msgstr "一月å‰" +#: js/files.js:824 +msgid "1 file" +msgstr "1 ファイル" -#: js/files.js:844 -msgid "months ago" -msgstr "月å‰" - -#: js/files.js:845 -msgid "last year" -msgstr "一年å‰" - -#: js/files.js:846 -msgid "years ago" -msgstr "å¹´å‰" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} ファイル" #: templates/admin.php:5 msgid "File handling" @@ -222,27 +195,27 @@ msgstr "ファイルæ“作" msgid "Maximum upload size" msgstr "最大アップロードサイズ" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "最大容é‡: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "複数ファイルãŠã‚ˆã³ãƒ•ã‚©ãƒ«ãƒ€ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«å¿…è¦" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "ZIPå½¢å¼ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’有効ã«ã™ã‚‹" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0を指定ã—ãŸå ´åˆã¯ç„¡åˆ¶é™" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ZIPファイルã¸ã®æœ€å¤§å…¥åŠ›ã‚µã‚¤ã‚º" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "ä¿å­˜" @@ -250,52 +223,48 @@ msgstr "ä¿å­˜" msgid "New" msgstr "æ–°è¦" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "テキストファイル" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "フォルダ" -#: templates/index.php:11 -msgid "From url" -msgstr "URL" +#: templates/index.php:14 +msgid "From link" +msgstr "リンク" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "アップロード" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "アップロードをキャンセル" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "ã“ã“ã«ã¯ä½•ã‚‚ã‚ã‚Šã¾ã›ã‚“。何ã‹ã‚¢ãƒƒãƒ—ロードã—ã¦ãã ã•ã„。" -#: templates/index.php:50 -msgid "Share" -msgstr "共有" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "ダウンロード" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "ファイルサイズãŒå¤§ãã™ãŽã¾ã™" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "アップロードã—よã†ã¨ã—ã¦ã„るファイルã¯ã€ã‚µãƒ¼ãƒã§è¦å®šã•ã‚ŒãŸæœ€å¤§ã‚µã‚¤ã‚ºã‚’超ãˆã¦ã„ã¾ã™ã€‚" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "ファイルをスキャンã—ã¦ã„ã¾ã™ã€ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„。" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "スキャン中" diff --git a/l10n/ja_JP/files_pdfviewer.po b/l10n/ja_JP/files_pdfviewer.po deleted file mode 100644 index 910d0963593a5276120d64452b53ba03a342cbbb..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ja_JP/files_sharing.po b/l10n/ja_JP/files_sharing.po index 0fc95c194485f06c617e1e740a03d2be90548ef2..28be75107c8229b68f9d0b692f0e460ec3b7df04 100644 --- a/l10n/ja_JP/files_sharing.po +++ b/l10n/ja_JP/files_sharing.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-23 02:01+0200\n" -"PO-Revision-Date: 2012-09-22 00:56+0000\n" -"Last-Translator: ttyn \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 11:01+0000\n" +"Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -30,12 +30,12 @@ msgstr "é€ä¿¡" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "%s ã¯ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ %s ã‚’ã‚ãªãŸã¨å…±æœ‰" +msgstr "%s ã¯ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ %s ã‚’ã‚ãªãŸã¨å…±æœ‰ä¸­ã§ã™" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "%s ã¯ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’ã‚ãªãŸã¨å…±æœ‰" +msgstr "%s ã¯ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’ã‚ãªãŸã¨å…±æœ‰ä¸­ã§ã™" #: templates/public.php:14 templates/public.php:30 msgid "Download" @@ -45,6 +45,6 @@ msgstr "ダウンロード" msgid "No preview available for" msgstr "プレビューã¯ã‚ã‚Šã¾ã›ã‚“" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" msgstr "管ç†ä¸‹ã®ã‚¦ã‚§ãƒ–サービス" diff --git a/l10n/ja_JP/files_texteditor.po b/l10n/ja_JP/files_texteditor.po deleted file mode 100644 index ab61c0af522f4660a827c177fe4beb2a9eaa7f1d..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ja_JP/gallery.po b/l10n/ja_JP/gallery.po deleted file mode 100644 index 75913ac9a7a7f24a6e6f31b2c359ff6c6740a1c4..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Japanese (Japan) (http://www.transifex.net/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "写真" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "設定" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "å†ã‚¹ã‚­ãƒ£ãƒ³" - -#: templates/index.php:17 -msgid "Stop" -msgstr "åœæ­¢" - -#: templates/index.php:18 -msgid "Share" -msgstr "共有" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "戻る" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "承èªã‚’å–ã‚Šã‚„ã‚" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "アルãƒãƒ ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "アルãƒãƒ åを変更ã™ã‚‹" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "æ–°ã—ã„アルãƒãƒ å" diff --git a/l10n/ja_JP/impress.po b/l10n/ja_JP/impress.po deleted file mode 100644 index 360c0eca04e2ecd44dffda3f3c08256c14ad1b03..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/ja_JP/lib.po b/l10n/ja_JP/lib.po index d9b410fa885f3e4a4f4e6c7800a4ea79b5975959..2f16f6575407be20ac8e5086499e8f06c0a3a6a9 100644 --- a/l10n/ja_JP/lib.po +++ b/l10n/ja_JP/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-04 02:01+0200\n" -"PO-Revision-Date: 2012-09-03 15:55+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 00:37+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -18,43 +18,43 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "ヘルプ" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "個人設定" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "設定" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "ユーザ" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "アプリ" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "管ç†è€…" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIPダウンロードã¯ç„¡åŠ¹ã§ã™ã€‚" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "ファイルã¯1ã¤ãšã¤ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "ファイルã«æˆ»ã‚‹" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ZIPファイルã®ç”Ÿæˆã«ã¯å¤§ãã™ãŽã¾ã™ã€‚" @@ -62,7 +62,7 @@ msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ZIPファイルã®ç”Ÿæˆã«ã¯å¤§ãã™ãŽã¾ msgid "Application is not enabled" msgstr "アプリケーションã¯ç„¡åŠ¹ã§ã™" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "èªè¨¼ã‚¨ãƒ©ãƒ¼" @@ -70,57 +70,84 @@ msgstr "èªè¨¼ã‚¨ãƒ©ãƒ¼" msgid "Token expired. Please reload page." msgstr "トークンãŒç„¡åŠ¹ã«ãªã‚Šã¾ã—ãŸã€‚ページをå†èª­è¾¼ã—ã¦ãã ã•ã„。" -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "ファイル" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "TTY TDD" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "ç”»åƒ" + +#: template.php:103 msgid "seconds ago" msgstr "秒å‰" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1分å‰" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d 分å‰" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 時間å‰" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d 時間å‰" + +#: template.php:108 msgid "today" msgstr "今日" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "昨日" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d æ—¥å‰" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "先月" -#: template.php:96 -msgid "months ago" -msgstr "月å‰" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d 分å‰" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "昨年" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "å¹´å‰" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚詳細情報 を確èªãã ã•ã„" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "最新ã§ã™" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "æ›´æ–°ãƒã‚§ãƒƒã‚¯ã¯ç„¡åŠ¹ã§ã™" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "カテゴリ \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" diff --git a/l10n/ja_JP/media.po b/l10n/ja_JP/media.po deleted file mode 100644 index ef58f5e08792ec3242ec9b773782696dac162ec8..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Japanese (Japan) (http://www.transifex.net/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "ミュージック" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "å†ç”Ÿ" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "一時åœæ­¢" - -#: templates/music.php:5 -msgid "Previous" -msgstr "å‰" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "次" - -#: templates/music.php:7 -msgid "Mute" -msgstr "ミュート" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "ミュート解除" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "コレクションã®å†ã‚¹ã‚­ãƒ£ãƒ³" - -#: templates/music.php:37 -msgid "Artist" -msgstr "アーティスト" - -#: templates/music.php:38 -msgid "Album" -msgstr "アルãƒãƒ " - -#: templates/music.php:39 -msgid "Title" -msgstr "曲å" diff --git a/l10n/ja_JP/settings.po b/l10n/ja_JP/settings.po index 8cbf0d2223643a96f91a8d92e9999428c9412078..8d92134dba54dacf94a959c22de59226f1b9e5f6 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/settings.po @@ -4,14 +4,15 @@ # # Translators: # Daisuke Deguchi , 2012. +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +20,73 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "アプリストアã‹ã‚‰ãƒªã‚¹ãƒˆã‚’ロードã§ãã¾ã›ã‚“" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "èªè¨¼ã‚¨ãƒ©ãƒ¼" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "グループã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "グループを追加ã§ãã¾ã›ã‚“" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "アプリを有効ã«ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "メールアドレスをä¿å­˜ã—ã¾ã—ãŸ" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "無効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenIDãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "無効ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ã™" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "グループを削除ã§ãã¾ã›ã‚“" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "èªè¨¼ã‚¨ãƒ©ãƒ¼" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "ユーザを削除ã§ãã¾ã›ã‚“" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "言語ãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "管ç†è€…ã¯è‡ªèº«ã‚’管ç†è€…グループã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "ユーザをグループ %s ã«è¿½åŠ ã§ãã¾ã›ã‚“" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "ユーザをグループ %s ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "無効" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "有効" @@ -90,104 +94,17 @@ msgstr "有効" msgid "Saving..." msgstr "ä¿å­˜ä¸­..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Japanese (日本語)" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "セキュリティ警告" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "データディレクトリã¨ãƒ•ã‚¡ã‚¤ãƒ«ãŒæらãインターãƒãƒƒãƒˆã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã£ã¦ã„ã¾ã™ã€‚ownCloudãŒæä¾›ã™ã‚‹ .htaccessファイルãŒæ©Ÿèƒ½ã—ã¦ã„ã¾ã›ã‚“。データディレクトリを全ãアクセスã§ããªã„よã†ã«ã™ã‚‹ã‹ã€ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ウェブサーãƒã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆãƒ«ãƒ¼ãƒˆã®å¤–ã«ç½®ãよã†ã«ã‚¦ã‚§ãƒ–サーãƒã‚’設定ã™ã‚‹ã“ã¨ã‚’å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "cron(自動定期実行)" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "å„ページã®èª­ã¿è¾¼ã¿æ™‚ã«ã‚¿ã‚¹ã‚¯ã‚’1ã¤å®Ÿè¡Œã™ã‚‹" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php 㯠webcron サービスã¨ã—ã¦ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚HTTP経由ã§1分間ã«1回ã®é »åº¦ã§ owncloud ã®ãƒ«ãƒ¼ãƒˆãƒšãƒ¼ã‚¸å†…ã® cron.php ページを呼ã³å‡ºã—ã¾ã™ã€‚" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "システムã®cronサービスを利用ã™ã‚‹ã€‚1分ã«1回ã®é »åº¦ã§ã‚·ã‚¹ãƒ†ãƒ ã®cronジョブã«ã‚ˆã‚Šowncloudフォルダ内ã®cron.phpファイルを呼ã³å‡ºã—ã¦ãã ã•ã„。" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "共有中" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Share APIを有効" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Share APIã®ä½¿ç”¨ã‚’アプリケーションã«è¨±å¯" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "リンクを許å¯" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "ユーザーãŒãƒªãƒ³ã‚¯ã«ã‚ˆã‚‹å…¬é–‹ã§ã‚¢ã‚¤ãƒ†ãƒ ã‚’共有ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ã™ã‚‹" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "å†å…±æœ‰ã‚’許å¯" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "ユーザーãŒå…±æœ‰ã•ã‚Œã¦ã„るアイテムをã•ã‚‰ã«å…±æœ‰ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ã™ã‚‹" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "ユーザーãŒèª°ã«ã§ã‚‚共有出æ¥ã‚‹ã‚ˆã†ã«ã™ã‚‹" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "ユーザーãŒã‚°ãƒ«ãƒ¼ãƒ—ã®äººã«ã—ã‹å…±æœ‰å‡ºæ¥ãªã„よã†ã«ã™ã‚‹" - -#: templates/admin.php:88 -msgid "Log" -msgstr "ログ" - -#: templates/admin.php:116 -msgid "More" -msgstr "ã‚‚ã£ã¨" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "ownCloud communityã«ã‚ˆã‚Šé–‹ç™ºã•ã‚Œã¦ã„ã¾ã™ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã¯ã€AGPL ライセンスã«ã‚ˆã‚Šæä¾›ã•ã‚Œã¦ã„ã¾ã™ã€‚" - #: templates/apps.php:10 msgid "Add your App" msgstr "アプリを追加" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "ã•ã‚‰ã«ã‚¢ãƒ—リを表示" #: templates/apps.php:27 msgid "Select an App" @@ -213,22 +130,22 @@ msgstr "大ããªãƒ•ã‚¡ã‚¤ãƒ«ã‚’扱ã†ã«ã¯" msgid "Ask a question" msgstr "質å•ã—ã¦ãã ã•ã„" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "ヘルプデータベースã¸ã®æŽ¥ç¶šæ™‚ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "手動ã§ç§»å‹•ã—ã¦ãã ã•ã„。" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "解答" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "ç¾åœ¨ï½¤%s / %s を利用ã—ã¦ã„ã¾ã™" +msgid "You have used %s of the available %s" +msgstr "ç¾åœ¨ã€%s / %s を利用ã—ã¦ã„ã¾ã™" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -286,6 +203,16 @@ msgstr "翻訳ã«å”力ã™ã‚‹" msgid "use this address to connect to your ownCloud in your file manager" msgstr "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§ã‚ãªãŸã®ownCloudã«æŽ¥ç¶šã™ã‚‹éš›ã¯ã€ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’使用ã—ã¦ãã ã•ã„" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "ownCloud communityã«ã‚ˆã‚Šé–‹ç™ºã•ã‚Œã¦ã„ã¾ã™ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã¯ã€AGPL ライセンスã«ã‚ˆã‚Šæä¾›ã•ã‚Œã¦ã„ã¾ã™ã€‚" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "åå‰" diff --git a/l10n/ja_JP/tasks.po b/l10n/ja_JP/tasks.po deleted file mode 100644 index 13b0423ca16beec7dfbcdd5ef207314e99b81818..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/tasks.po +++ /dev/null @@ -1,108 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 03:40+0000\n" -"Last-Translator: ttyn \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "無効ãªæ—¥ä»˜ï¼æ™‚刻" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "タスク" - -#: js/tasks.js:415 -msgid "No category" -msgstr "カテゴリ無ã—" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "未指定" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=高" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=中" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=低" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "è¦æ—¨ãŒæœªè¨˜å…¥" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "進æ—ï¼…ãŒä¸æ­£" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "無効ãªå„ªå…ˆåº¦" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "タスクを追加" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "期日ã§ä¸¦ã¹æ›¿ãˆ" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "リストã§ä¸¦ã³æ›¿ãˆ" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "完了ã§ä¸¦ã¹æ›¿ãˆ" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "場所ã§ä¸¦ã¹æ›¿ãˆ" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "優先度ã§ä¸¦ã¹æ›¿ãˆ" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "ラベルã§ä¸¦ã¹æ›¿ãˆ" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "タスクをロード中..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "é‡è¦" - -#: templates/tasks.php:23 -msgid "More" -msgstr "詳細" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "é–‰ã˜ã‚‹" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "削除" diff --git a/l10n/ja_JP/user_migrate.po b/l10n/ja_JP/user_migrate.po deleted file mode 100644 index 71b2c612ed61c79839f6f9445a359a0c9bb4422f..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-17 00:44+0200\n" -"PO-Revision-Date: 2012-08-16 05:28+0000\n" -"Last-Translator: Daisuke Deguchi \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "エクスãƒãƒ¼ãƒˆ" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã®ç”Ÿæˆæ™‚ã«ä½•ã‹ä¸å…·åˆãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "ユーザアカウントã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "ã‚ãªãŸã®ownCloudアカウントをå«ã‚€åœ§ç¸®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã—ã¾ã™ã€‚" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "ユーザアカウントをインãƒãƒ¼ãƒˆ" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "ownCloudユーザZip" - -#: templates/settings.php:17 -msgid "Import" -msgstr "インãƒãƒ¼ãƒˆ" diff --git a/l10n/ja_JP/user_openid.po b/l10n/ja_JP/user_openid.po deleted file mode 100644 index 5fe4094e68341f74c486a9e167c0207cb6c8afe2..0000000000000000000000000000000000000000 --- a/l10n/ja_JP/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daisuke Deguchi , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 06:36+0000\n" -"Last-Translator: Daisuke Deguchi \n" -"Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "ã“ã‚Œã¯OpenIDサーãƒã®ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã§ã™ã€‚詳細ã¯ä¸‹è¨˜ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "識別å­: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "レルム: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "ユーザ: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "ログイン" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "エラー: ユーザãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "ä»–ã®ã‚µã‚¤ãƒˆã«ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã§èªè¨¼ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "èªè¨¼ã•ã‚ŒãŸOpenIDプロãƒã‚¤ãƒ€" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Wordpressã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã€Identi.ca々" diff --git a/l10n/ja_JP/files_odfviewer.po b/l10n/ja_JP/user_webdavauth.po similarity index 59% rename from l10n/ja_JP/files_odfviewer.po rename to l10n/ja_JP/user_webdavauth.po index 75c2c65bbfa33770aeb863c150f8ca60c840f752..7cf5205b76d4c681679a75396007a5f571e0c04a 100644 --- a/l10n/ja_JP/files_odfviewer.po +++ b/l10n/ja_JP/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Daisuke Deguchi , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-14 00:02+0100\n" +"PO-Revision-Date: 2012-11-13 03:13+0000\n" +"Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ja_JP\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po new file mode 100644 index 0000000000000000000000000000000000000000..3e4540171a4ef6a771e96cc7aa1e4403018b1821 --- /dev/null +++ b/l10n/ka_GE/core.po @@ -0,0 +1,540 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "áƒáƒ  áƒáƒ áƒ˜áƒ¡ კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ დáƒáƒ¡áƒáƒ›áƒáƒ¢áƒ”ბლáƒáƒ“?" + +#: ajax/vcategories/add.php:37 +msgid "This category already exists: " +msgstr "კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "სáƒáƒ áƒ”დáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბელი კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ áƒ©áƒ”ული " + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 +msgid "Settings" +msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები" + +#: js/js.js:688 +msgid "seconds ago" +msgstr "წáƒáƒ›áƒ˜áƒ¡ წინ" + +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 წუთის წინ" + +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{minutes} წუთის წინ" + +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" + +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" + +#: js/js.js:693 +msgid "today" +msgstr "დღეს" + +#: js/js.js:694 +msgid "yesterday" +msgstr "გუშინ" + +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{days} დღის წინ" + +#: js/js.js:696 +msgid "last month" +msgstr "გáƒáƒ¡áƒ£áƒš თვეში" + +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" + +#: js/js.js:698 +msgid "months ago" +msgstr "თვის წინ" + +#: js/js.js:699 +msgid "last year" +msgstr "ბáƒáƒšáƒ წელს" + +#: js/js.js:700 +msgid "years ago" +msgstr "წლის წინ" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "áƒáƒ áƒ©áƒ”ვáƒ" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "უáƒáƒ áƒ§áƒáƒ¤áƒ" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "áƒáƒ áƒ" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "კი" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "დიáƒáƒ®" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 +msgid "Error" +msgstr "შეცდáƒáƒ›áƒ" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 +msgid "Error while sharing" +msgstr "შეცდáƒáƒ›áƒ გáƒáƒ–იáƒáƒ áƒ”ბის დრáƒáƒ¡" + +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "შეცდáƒáƒ›áƒ გáƒáƒ–იáƒáƒ áƒ”ბის გáƒáƒ£áƒ¥áƒ›áƒ”ბის დრáƒáƒ¡" + +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "შეცდáƒáƒ›áƒ დáƒáƒ¨áƒ•áƒ”ბის ცვლილების დრáƒáƒ¡" + +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:158 +msgid "Share with" +msgstr "გáƒáƒ£áƒ–იáƒáƒ áƒ”" + +#: js/share.js:163 +msgid "Share with link" +msgstr "გáƒáƒ£áƒ–იáƒáƒ áƒ” ლინკით" + +#: js/share.js:164 +msgid "Password protect" +msgstr "პáƒáƒ áƒáƒšáƒ˜áƒ— დáƒáƒªáƒ•áƒ" + +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 +msgid "Password" +msgstr "პáƒáƒ áƒáƒšáƒ˜" + +#: js/share.js:173 +msgid "Set expiration date" +msgstr "მიუთითე ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ დრáƒ" + +#: js/share.js:174 +msgid "Expiration date" +msgstr "ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ დრáƒ" + +#: js/share.js:206 +msgid "Share via email:" +msgstr "გáƒáƒáƒ–იáƒáƒ áƒ” მეილზე" + +#: js/share.js:208 +msgid "No people found" +msgstr "გვერდი áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნáƒáƒžáƒáƒ•áƒœáƒ˜" + +#: js/share.js:235 +msgid "Resharing is not allowed" +msgstr "მეáƒáƒ áƒ”ჯერ გáƒáƒ–იáƒáƒ áƒ”ბრáƒáƒ  áƒáƒ áƒ˜áƒ¡ დáƒáƒ¨áƒ•áƒ”ბული" + +#: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:292 +msgid "Unshare" +msgstr "გáƒáƒ–იáƒáƒ áƒ”ბის მáƒáƒ®áƒ¡áƒœáƒ" + +#: js/share.js:304 +msgid "can edit" +msgstr "შეგიძლირშეცვლáƒ" + +#: js/share.js:306 +msgid "access control" +msgstr "დáƒáƒ¨áƒ•áƒ”ბის კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜" + +#: js/share.js:309 +msgid "create" +msgstr "შექმნáƒ" + +#: js/share.js:312 +msgid "update" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" + +#: js/share.js:315 +msgid "delete" +msgstr "წáƒáƒ¨áƒšáƒ" + +#: js/share.js:318 +msgid "share" +msgstr "გáƒáƒ–იáƒáƒ áƒ”ბáƒ" + +#: js/share.js:343 js/share.js:512 js/share.js:514 +msgid "Password protected" +msgstr "პáƒáƒ áƒáƒšáƒ˜áƒ— დáƒáƒªáƒ£áƒšáƒ˜" + +#: js/share.js:525 +msgid "Error unsetting expiration date" +msgstr "შეცდáƒáƒ›áƒ ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ დრáƒáƒ¡" + +#: js/share.js:537 +msgid "Error setting expiration date" +msgstr "შეცდáƒáƒ›áƒ ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ მითითების დრáƒáƒ¡" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "ownCloud პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე შემდეგი ლინკი პáƒáƒ áƒáƒšáƒ˜áƒ¡ შესáƒáƒªáƒ•áƒšáƒ”ლáƒáƒ“: {link}" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "თქვენ მáƒáƒ’ივáƒáƒ— პáƒáƒ áƒáƒšáƒ˜áƒ¡ შესáƒáƒªáƒ•áƒšáƒ”ლი ლინკი მეილზე" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 +msgid "Username" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "რესეტის მáƒáƒ—ხáƒáƒ•áƒœáƒ" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "თქვენი პáƒáƒ áƒáƒšáƒ˜ შეცვლილიáƒ" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "შესვლის გვერდზე" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "áƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "პáƒáƒ áƒáƒšáƒ˜áƒ¡ რესეტი" + +#: strings.php:5 +msgid "Personal" +msgstr "პირáƒáƒ“ი" + +#: strings.php:6 +msgid "Users" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები" + +#: strings.php:7 +msgid "Apps" +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" + +#: strings.php:8 +msgid "Admin" +msgstr "áƒáƒ“მინი" + +#: strings.php:9 +msgid "Help" +msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "წვდáƒáƒ›áƒ áƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒšáƒ˜áƒ" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "ღრუბელი áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბის გáƒáƒ¤áƒ áƒ—ხილებáƒ" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "შემთხვევითი სიმბáƒáƒšáƒáƒ”ბის გენერáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს, გთხáƒáƒ•áƒ— ჩáƒáƒ áƒ—áƒáƒ— PHP OpenSSL გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒ." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "შემთხვევითი სიმბáƒáƒšáƒáƒ”ბის გენერáƒáƒ¢áƒáƒ áƒ˜áƒ¡ გáƒáƒ áƒ”შე, შემტევმრშეიძლებრáƒáƒ›áƒáƒ˜áƒªáƒœáƒáƒ¡ თქვენი პáƒáƒ áƒáƒšáƒ˜ შეგიცვáƒáƒšáƒáƒ— ის დრდáƒáƒ”უფლáƒáƒ¡ თქვენს ექáƒáƒ£áƒœáƒ—ს." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "შექმენი áƒáƒ“მინ ექáƒáƒ£áƒœáƒ¢áƒ˜" + +#: templates/installation.php:48 +msgid "Advanced" +msgstr "Advanced" + +#: templates/installation.php:50 +msgid "Data folder" +msgstr "მáƒáƒœáƒáƒªáƒ”მთრსáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" + +#: templates/installation.php:57 +msgid "Configure the database" +msgstr "ბáƒáƒ–ის კáƒáƒœáƒ¤áƒ˜áƒ’ურირებáƒ" + +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 +msgid "will be used" +msgstr "გáƒáƒ›áƒáƒ§áƒ”ნებული იქნებáƒ" + +#: templates/installation.php:105 +msgid "Database user" +msgstr "ბáƒáƒ–ის მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი" + +#: templates/installation.php:109 +msgid "Database password" +msgstr "ბáƒáƒ–ის პáƒáƒ áƒáƒšáƒ˜" + +#: templates/installation.php:113 +msgid "Database name" +msgstr "ბáƒáƒ–ის სáƒáƒ®áƒ”ლი" + +#: templates/installation.php:121 +msgid "Database tablespace" +msgstr "ბáƒáƒ–ის ცხრილის ზáƒáƒ›áƒ" + +#: templates/installation.php:127 +msgid "Database host" +msgstr "ბáƒáƒ–ის ჰáƒáƒ¡áƒ¢áƒ˜" + +#: templates/installation.php:132 +msgid "Finish setup" +msgstr "კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ¡ დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბáƒ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "კვირáƒ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "áƒáƒ áƒ¨áƒáƒ‘áƒáƒ—ი" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "ხუთშáƒáƒ‘áƒáƒ—ი" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "შáƒáƒ‘áƒáƒ—ი" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "იáƒáƒœáƒ•áƒáƒ áƒ˜" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "თებერვáƒáƒšáƒ˜" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "მáƒáƒ áƒ¢áƒ˜" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "áƒáƒžáƒ áƒ˜áƒšáƒ˜" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "მáƒáƒ˜áƒ¡áƒ˜" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "ივნისი" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "ივლისი" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "áƒáƒ’ვისტáƒ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "სექტემბერი" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "ნáƒáƒ”მბერი" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "დეკემბერი" + +#: templates/layout.guest.php:41 +msgid "web services under your control" +msgstr "თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ ქვეშ მყáƒáƒ¤áƒ˜ ვებ სერვისები" + +#: templates/layout.user.php:44 +msgid "Log out" +msgstr "გáƒáƒ›áƒáƒ¡áƒ•áƒšáƒ" + +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შესვლრუáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 +msgid "Lost your password?" +msgstr "დáƒáƒ’áƒáƒ•áƒ˜áƒ¬áƒ§áƒ“áƒáƒ— პáƒáƒ áƒáƒšáƒ˜?" + +#: templates/login.php:27 +msgid "remember" +msgstr "დáƒáƒ›áƒáƒ®áƒ¡áƒáƒ•áƒ áƒ”ბáƒ" + +#: templates/login.php:28 +msgid "Log in" +msgstr "შესვლáƒ" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "თქვენ გáƒáƒ›áƒáƒ®áƒ•áƒ”დით სისტემიდáƒáƒœ" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "წინáƒ" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "შემდეგი" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბის გáƒáƒ¤áƒ áƒ—ხილებáƒ!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "შემáƒáƒ¬áƒ›áƒ”ბáƒ" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po new file mode 100644 index 0000000000000000000000000000000000000000..5e3078f50485ba10ce23eafe4b335d158f93360d --- /dev/null +++ b/l10n/ka_GE/files.po @@ -0,0 +1,267 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "ჭáƒáƒªáƒ“áƒáƒ›áƒ áƒáƒ  დáƒáƒ¤áƒ˜áƒ¥áƒ¡áƒ˜áƒ áƒ“áƒ, ფáƒáƒ˜áƒšáƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ" + +#: ajax/upload.php:21 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:23 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული ფáƒáƒ˜áƒšáƒ˜ áƒáƒ­áƒáƒ áƒ‘ებს MAX_FILE_SIZE დირექტივáƒáƒ¡, რáƒáƒ›áƒ”ლიც მითითებულირHTML ფáƒáƒ áƒ›áƒáƒ¨áƒ˜" + +#: ajax/upload.php:25 +msgid "The uploaded file was only partially uploaded" +msgstr "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული ფáƒáƒ˜áƒšáƒ˜ მხáƒáƒšáƒáƒ“ ნáƒáƒ¬áƒ˜áƒšáƒáƒ‘რივ áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ" + +#: ajax/upload.php:26 +msgid "No file was uploaded" +msgstr "ფáƒáƒ˜áƒšáƒ˜ áƒáƒ  áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ" + +#: ajax/upload.php:27 +msgid "Missing a temporary folder" +msgstr "დრáƒáƒ”ბითი სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს" + +#: ajax/upload.php:28 +msgid "Failed to write to disk" +msgstr "შეცდáƒáƒ›áƒ დისკზე ჩáƒáƒ¬áƒ”რისáƒáƒ¡" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "ფáƒáƒ˜áƒšáƒ”ბი" + +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 +msgid "Unshare" +msgstr "გáƒáƒ–იáƒáƒ áƒ”ბის მáƒáƒ®áƒ¡áƒœáƒ" + +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 +msgid "Delete" +msgstr "წáƒáƒ¨áƒšáƒ" + +#: js/fileactions.js:181 +msgid "Rename" +msgstr "გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "replace" +msgstr "შეცვლáƒ" + +#: js/filelist.js:201 +msgid "suggest name" +msgstr "სáƒáƒ®áƒ”ლის შემáƒáƒ—áƒáƒ•áƒáƒ–ებáƒ" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "cancel" +msgstr "უáƒáƒ áƒ§áƒáƒ¤áƒ" + +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} შეცვლილიáƒ" + +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 +msgid "undo" +msgstr "დáƒáƒ‘რუნებáƒ" + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{new_name} შეცვლილირ{old_name}–ით" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "გáƒáƒ–იáƒáƒ áƒ”ბრმáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ {files}" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ {files}" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 +msgid "generating ZIP-file, it may take some time." +msgstr "ZIP-ფáƒáƒ˜áƒšáƒ˜áƒ¡ გენერირებáƒ, áƒáƒ›áƒáƒ¡ ჭირდებრგáƒáƒ áƒ™áƒ•áƒ”ული დრáƒ." + +#: js/files.js:218 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "თქვენი ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ. ის áƒáƒ áƒ˜áƒ¡ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე დრშეიცáƒáƒ•áƒ¡ 0 ბáƒáƒ˜áƒ¢áƒ¡" + +#: js/files.js:218 +msgid "Upload Error" +msgstr "შეცდáƒáƒ›áƒ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვისáƒáƒ¡" + +#: js/files.js:235 +msgid "Close" +msgstr "დáƒáƒ®áƒ£áƒ áƒ•áƒ" + +#: js/files.js:254 js/files.js:368 js/files.js:398 +msgid "Pending" +msgstr "მáƒáƒªáƒ“ის რეჟიმში" + +#: js/files.js:274 +msgid "1 file uploading" +msgstr "1 ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" + +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} ფáƒáƒ˜áƒšáƒ˜ იტვირთებáƒ" + +#: js/files.js:349 js/files.js:382 +msgid "Upload cancelled." +msgstr "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრშეჩერებულ იქნáƒ." + +#: js/files.js:451 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ. სხვრგვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ გáƒáƒ›áƒáƒ˜áƒ¬áƒ•áƒ”ვს áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის შეჩერებáƒáƒ¡" + +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" + +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} ფáƒáƒ˜áƒšáƒ˜ სკáƒáƒœáƒ˜áƒ áƒ”ბულიáƒ" + +#: js/files.js:712 +msgid "error while scanning" +msgstr "შეცდáƒáƒ›áƒ სკáƒáƒœáƒ˜áƒ áƒ”ბისáƒáƒ¡" + +#: js/files.js:785 templates/index.php:65 +msgid "Name" +msgstr "სáƒáƒ®áƒ”ლი" + +#: js/files.js:786 templates/index.php:76 +msgid "Size" +msgstr "ზáƒáƒ›áƒ" + +#: js/files.js:787 templates/index.php:78 +msgid "Modified" +msgstr "შეცვლილიáƒ" + +#: js/files.js:814 +msgid "1 folder" +msgstr "1 სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" + +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" + +#: js/files.js:824 +msgid "1 file" +msgstr "1 ფáƒáƒ˜áƒšáƒ˜" + +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} ფáƒáƒ˜áƒšáƒ˜" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბáƒ" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ› áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ის ზáƒáƒ›áƒ" + +#: templates/admin.php:9 +msgid "max. possible: " +msgstr "მáƒáƒ¥áƒ¡. შესáƒáƒ«áƒšáƒ”ბელი:" + +#: templates/admin.php:12 +msgid "Needed for multi-file and folder downloads." +msgstr "სáƒáƒ­áƒ˜áƒ áƒáƒ მულტი ფáƒáƒ˜áƒš áƒáƒœ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ." + +#: templates/admin.php:14 +msgid "Enable ZIP-download" +msgstr "ZIP-Download–ის ჩáƒáƒ áƒ—ვáƒ" + +#: templates/admin.php:17 +msgid "0 is unlimited" +msgstr "0 is unlimited" + +#: templates/admin.php:19 +msgid "Maximum input size for ZIP files" +msgstr "ZIP ფáƒáƒ˜áƒšáƒ”ბის მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ› დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი ზáƒáƒ›áƒ" + +#: templates/admin.php:23 +msgid "Save" +msgstr "შენáƒáƒ®áƒ•áƒ" + +#: templates/index.php:7 +msgid "New" +msgstr "áƒáƒ®áƒáƒšáƒ˜" + +#: templates/index.php:10 +msgid "Text file" +msgstr "ტექსტური ფáƒáƒ˜áƒšáƒ˜" + +#: templates/index.php:12 +msgid "Folder" +msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" + +#: templates/index.php:14 +msgid "From link" +msgstr "" + +#: templates/index.php:35 +msgid "Upload" +msgstr "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" + +#: templates/index.php:43 +msgid "Cancel upload" +msgstr "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" + +#: templates/index.php:57 +msgid "Nothing in here. Upload something!" +msgstr "áƒáƒ¥ áƒáƒ áƒáƒ¤áƒ”რი áƒáƒ  áƒáƒ áƒ˜áƒ¡. áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ე რáƒáƒ›áƒ”!" + +#: templates/index.php:71 +msgid "Download" +msgstr "ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" + +#: templates/index.php:103 +msgid "Upload too large" +msgstr "áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ი ფáƒáƒ˜áƒšáƒ˜ ძáƒáƒšáƒ˜áƒáƒœ დიდიáƒ" + +#: templates/index.php:105 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ რáƒáƒ›áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒáƒ¡áƒáƒª თქვენ áƒáƒžáƒ˜áƒ áƒ”ბთ, áƒáƒ­áƒáƒ áƒ‘ებს სერვერზე დáƒáƒ¨áƒ•áƒ”ბულ მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ›áƒ¡." + +#: templates/index.php:110 +msgid "Files are being scanned, please wait." +msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს ფáƒáƒ˜áƒšáƒ”ბის სკáƒáƒœáƒ˜áƒ áƒ”ბáƒ, გთხáƒáƒ•áƒ— დáƒáƒ”ლáƒáƒ“áƒáƒ—." + +#: templates/index.php:113 +msgid "Current scanning" +msgstr "მიმდინáƒáƒ áƒ” სკáƒáƒœáƒ˜áƒ áƒ”ბáƒ" diff --git a/l10n/ko/admin_migrate.po b/l10n/ka_GE/files_encryption.po similarity index 52% rename from l10n/ko/admin_migrate.po rename to l10n/ka_GE/files_encryption.po index 65b1d84b61936d478666877b71921278bf244eaf..3cdf3ae4e91573ddbe67e013787cfff11399b095 100644 --- a/l10n/ko/admin_migrate.po +++ b/l10n/ka_GE/files_encryption.po @@ -7,26 +7,28 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" +"POT-Creation-Date: 2012-10-22 02:02+0200\n" +"PO-Revision-Date: 2012-08-12 22:33+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:3 -msgid "Export this ownCloud instance" +msgid "Encryption" msgstr "" #: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" +msgid "Exclude the following file types from encryption" +msgstr "" + +#: templates/settings.php:5 +msgid "None" msgstr "" -#: templates/settings.php:12 -msgid "Export" +#: templates/settings.php:10 +msgid "Enable Encryption" msgstr "" diff --git a/l10n/ka_GE/files_external.po b/l10n/ka_GE/files_external.po new file mode 100644 index 0000000000000000000000000000000000000000..68ea705a40279a62576852436556ce6df1c7e017 --- /dev/null +++ b/l10n/ka_GE/files_external.po @@ -0,0 +1,106 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-22 02:02+0200\n" +"PO-Revision-Date: 2012-08-12 22:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "" + +#: templates/settings.php:7 templates/settings.php:19 +msgid "Mount point" +msgstr "" + +#: templates/settings.php:8 +msgid "Backend" +msgstr "" + +#: templates/settings.php:9 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:10 +msgid "Options" +msgstr "" + +#: templates/settings.php:11 +msgid "Applicable" +msgstr "" + +#: templates/settings.php:23 +msgid "Add mount point" +msgstr "" + +#: templates/settings.php:54 templates/settings.php:62 +msgid "None set" +msgstr "" + +#: templates/settings.php:63 +msgid "All Users" +msgstr "" + +#: templates/settings.php:64 +msgid "Groups" +msgstr "" + +#: templates/settings.php:69 +msgid "Users" +msgstr "" + +#: templates/settings.php:77 templates/settings.php:107 +msgid "Delete" +msgstr "" + +#: templates/settings.php:87 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:88 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:99 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:113 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/ka_GE/files_sharing.po b/l10n/ka_GE/files_sharing.po new file mode 100644 index 0000000000000000000000000000000000000000..8b33377df96078b2716c263771ec1712a6649a2d --- /dev/null +++ b/l10n/ka_GE/files_sharing.po @@ -0,0 +1,49 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-27 00:01+0200\n" +"PO-Revision-Date: 2012-10-26 12:58+0000\n" +"Last-Translator: drlinux64 \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "პáƒáƒ áƒáƒšáƒ˜" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "გáƒáƒ’ზáƒáƒ•áƒœáƒ" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "web services under your control" diff --git a/l10n/ka_GE/files_versions.po b/l10n/ka_GE/files_versions.po new file mode 100644 index 0000000000000000000000000000000000000000..8d38b072b0fa7fe7bb40269aa03adfd3c60429ad --- /dev/null +++ b/l10n/ka_GE/files_versions.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-22 02:02+0200\n" +"PO-Revision-Date: 2012-08-12 22:37+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/settings-personal.js:31 templates/settings-personal.php:10 +msgid "Expire all versions" +msgstr "" + +#: js/versions.js:16 +msgid "History" +msgstr "" + +#: templates/settings-personal.php:4 +msgid "Versions" +msgstr "" + +#: templates/settings-personal.php:7 +msgid "This will delete all existing backup versions of your files" +msgstr "" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "" diff --git a/l10n/ka_GE/lib.po b/l10n/ka_GE/lib.po new file mode 100644 index 0000000000000000000000000000000000000000..3011c8854f700d77dc4ad88d655f026f975cf421 --- /dev/null +++ b/l10n/ka_GE/lib.po @@ -0,0 +1,153 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: app.php:285 +msgid "Help" +msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" + +#: app.php:292 +msgid "Personal" +msgstr "პირáƒáƒ“ი" + +#: app.php:297 +msgid "Settings" +msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები" + +#: app.php:302 +msgid "Users" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი" + +#: app.php:309 +msgid "Apps" +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" + +#: app.php:311 +msgid "Admin" +msgstr "áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ˜" + +#: files.php:332 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:333 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:333 files.php:358 +msgid "Back to Files" +msgstr "" + +#: files.php:357 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:64 json.php:77 json.php:89 +msgid "Authentication error" +msgstr "áƒáƒ•áƒ—ენტიფიკáƒáƒªáƒ˜áƒ˜áƒ¡ შეცდáƒáƒ›áƒ" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "ფáƒáƒ˜áƒšáƒ”ბი" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ტექსტი" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 +msgid "seconds ago" +msgstr "წáƒáƒ›áƒ˜áƒ¡ წინ" + +#: template.php:104 +msgid "1 minute ago" +msgstr "1 წუთის წინ" + +#: template.php:105 +#, php-format +msgid "%d minutes ago" +msgstr "" + +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 +msgid "today" +msgstr "დღეს" + +#: template.php:109 +msgid "yesterday" +msgstr "გუშინ" + +#: template.php:110 +#, php-format +msgid "%d days ago" +msgstr "" + +#: template.php:111 +msgid "last month" +msgstr "გáƒáƒ¡áƒ£áƒš თვეში" + +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" + +#: template.php:113 +msgid "last year" +msgstr "ბáƒáƒšáƒ წელს" + +#: template.php:114 +msgid "years ago" +msgstr "წლის წინ" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "" + +#: updater.php:77 +msgid "up to date" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბულიáƒ" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბის ძებნრგáƒáƒ—იშულიáƒ" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/ka_GE/settings.po b/l10n/ka_GE/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..b957617cec3435ec1ad0ee45ae402e93920fe792 --- /dev/null +++ b/l10n/ka_GE/settings.po @@ -0,0 +1,248 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბის სირვერ ჩáƒáƒ›áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—რApp Store" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "ჯგუფი უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "ჯგუფის დáƒáƒ›áƒáƒ¢áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ" + +#: ajax/enableapp.php:12 +msgid "Could not enable app. " +msgstr "ვერ მáƒáƒ®áƒ”რხდრáƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ áƒ—ვáƒ." + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "იმეილი შენáƒáƒ®áƒ£áƒšáƒ˜áƒ" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ იმეილი" + +#: ajax/openid.php:13 +msgid "OpenID Changed" +msgstr "OpenID შეცვლილიáƒ" + +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ მáƒáƒ—ხáƒáƒ•áƒœáƒ" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "ჯგუფის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "áƒáƒ•áƒ—ენტიფიკáƒáƒªáƒ˜áƒ˜áƒ¡ შეცდáƒáƒ›áƒ" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "ენრშეცვლილიáƒ" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის დáƒáƒ›áƒáƒ¢áƒ”ბრვერ მáƒáƒ®áƒ”ხდრჯგუფში %s" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”ხდრჯგუფიდáƒáƒœ %s" + +#: js/apps.js:28 js/apps.js:67 +msgid "Disable" +msgstr "გáƒáƒ›áƒáƒ áƒ—ვáƒ" + +#: js/apps.js:28 js/apps.js:55 +msgid "Enable" +msgstr "ჩáƒáƒ áƒ—ვáƒ" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "შენáƒáƒ®áƒ•áƒ..." + +#: personal.php:42 personal.php:43 +msgid "__language_name__" +msgstr "__language_name__" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "დáƒáƒáƒ›áƒáƒ¢áƒ” შენი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "უფრრმეტი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" + +#: templates/apps.php:27 +msgid "Select an App" +msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ" + +#: templates/apps.php:31 +msgid "See application page at apps.owncloud.com" +msgstr "ნáƒáƒ®áƒ”თ áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ გვერდი apps.owncloud.com –ზე" + +#: templates/apps.php:32 +msgid "-licensed by " +msgstr "-ლიცენსირებულირ" + +#: templates/help.php:9 +msgid "Documentation" +msgstr "დáƒáƒ™áƒ£áƒ›áƒ”ნტáƒáƒªáƒ˜áƒ" + +#: templates/help.php:10 +msgid "Managing Big Files" +msgstr "დიდი ფáƒáƒ˜áƒšáƒ”ბის მენეჯმენტი" + +#: templates/help.php:11 +msgid "Ask a question" +msgstr "დáƒáƒ¡áƒ•áƒ˜áƒ— შეკითხვáƒ" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბის ბáƒáƒ–áƒáƒ¡áƒ—áƒáƒœ წვდáƒáƒ›áƒ˜áƒ¡ პრáƒáƒ‘ლემáƒ" + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "წáƒáƒ“ი იქ შენით." + +#: templates/help.php:31 +msgid "Answer" +msgstr "პáƒáƒ¡áƒ£áƒ®áƒ˜" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "დესკტáƒáƒž დრმáƒáƒ‘ილური კლიენტების სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ" + +#: templates/personal.php:13 +msgid "Download" +msgstr "ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" + +#: templates/personal.php:19 +msgid "Your password was changed" +msgstr "თქვენი პáƒáƒ áƒáƒšáƒ˜ შეიცვáƒáƒšáƒ" + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "თქვენი პáƒáƒ áƒáƒšáƒ˜ áƒáƒ  შეიცვáƒáƒšáƒ" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "მიმდინáƒáƒ áƒ” პáƒáƒ áƒáƒšáƒ˜" + +#: templates/personal.php:22 +msgid "New password" +msgstr "áƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜" + +#: templates/personal.php:23 +msgid "show" +msgstr "გáƒáƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ" + +#: templates/personal.php:30 +msgid "Email" +msgstr "იმეილი" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "თქვენი იმეილ მისáƒáƒ›áƒáƒ áƒ—ი" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "შეáƒáƒ•áƒ¡áƒ”თ იმეილ მისáƒáƒ›áƒáƒ áƒ—ის ველი პáƒáƒ áƒáƒšáƒ˜áƒ¡ áƒáƒ¦áƒ¡áƒáƒ“გენáƒáƒ“" + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "ენáƒ" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "თáƒáƒ áƒ’მნის დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე შემდეგი მისáƒáƒ›áƒáƒ áƒ—ი ownCloud–თáƒáƒœ დáƒáƒ¡áƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბლáƒáƒ“ შენს ფáƒáƒ˜áƒšáƒ›áƒ”ნეჯერში" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "სáƒáƒ®áƒ”ლი" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "პáƒáƒ áƒáƒšáƒ˜" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "ჯგუფი" + +#: templates/users.php:32 +msgid "Create" +msgstr "შექმნáƒ" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ქვáƒáƒ¢áƒ" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "სხვáƒ" + +#: templates/users.php:80 templates/users.php:112 +msgid "Group Admin" +msgstr "ჯგუფის áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ˜" + +#: templates/users.php:82 +msgid "Quota" +msgstr "ქვáƒáƒ¢áƒ" + +#: templates/users.php:146 +msgid "Delete" +msgstr "წáƒáƒ¨áƒšáƒ" diff --git a/l10n/ka_GE/user_ldap.po b/l10n/ka_GE/user_ldap.po new file mode 100644 index 0000000000000000000000000000000000000000..bdf29a00b31ff1f25fe03e705e461e2755f6db71 --- /dev/null +++ b/l10n/ka_GE/user_ldap.po @@ -0,0 +1,170 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-22 02:02+0200\n" +"PO-Revision-Date: 2012-08-12 22:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: templates/settings.php:8 +msgid "Host" +msgstr "" + +#: templates/settings.php:8 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/settings.php:9 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:9 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:10 +msgid "User DN" +msgstr "" + +#: templates/settings.php:10 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:11 +msgid "Password" +msgstr "" + +#: templates/settings.php:11 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:12 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:13 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:13 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:13 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:14 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:14 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "" + +#: templates/settings.php:14 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "" + +#: templates/settings.php:17 +msgid "Port" +msgstr "" + +#: templates/settings.php:18 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:19 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:20 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:21 +msgid "Use TLS" +msgstr "" + +#: templates/settings.php:21 +msgid "Do not use it for SSL connections, it will fail." +msgstr "" + +#: templates/settings.php:22 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:23 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:23 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "" + +#: templates/settings.php:23 +msgid "Not recommended, use for testing only." +msgstr "" + +#: templates/settings.php:24 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:24 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:25 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:25 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:27 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:29 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:30 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:32 +msgid "Help" +msgstr "" diff --git a/l10n/af/files_odfviewer.po b/l10n/ka_GE/user_webdavauth.po similarity index 58% rename from l10n/af/files_odfviewer.po rename to l10n/ka_GE/user_webdavauth.po index ec66648874b39049a3c707ddba594ef14d939ee8..16ce800e33b02226ea3d63366e7f110be702945f 100644 --- a/l10n/af/files_odfviewer.po +++ b/l10n/ka_GE/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/ko/admin_dependencies_chk.po b/l10n/ko/admin_dependencies_chk.po deleted file mode 100644 index a6510ce3a87ec3a086efc85261f0ed3127cb043f..0000000000000000000000000000000000000000 --- a/l10n/ko/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/ko/bookmarks.po b/l10n/ko/bookmarks.po deleted file mode 100644 index 1992ba3b141844bc413ae911b94d89b556cc2104..0000000000000000000000000000000000000000 --- a/l10n/ko/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/ko/calendar.po b/l10n/ko/calendar.po deleted file mode 100644 index 89b070aa85893590656c6596701c975f9b5260d0..0000000000000000000000000000000000000000 --- a/l10n/ko/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Shinjo Park , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "ë‹¬ë ¥ì´ ì—†ìŠµë‹ˆë‹¤" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "ì¼ì •ì´ 없습니다" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "ìž˜ëª»ëœ ë‹¬ë ¥" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "새로운 시간대 설정" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "시간대 변경ë¨" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "ìž˜ëª»ëœ ìš”ì²­" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "달력" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "ìƒì¼" - -#: lib/app.php:122 -msgid "Business" -msgstr "사업" - -#: lib/app.php:123 -msgid "Call" -msgstr "통화" - -#: lib/app.php:124 -msgid "Clients" -msgstr "í´ë¼ì´ì–¸íŠ¸" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "배송" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "공휴ì¼" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "ìƒê°" - -#: lib/app.php:128 -msgid "Journey" -msgstr "여행" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "기ë…ì¼" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "미팅" - -#: lib/app.php:131 -msgid "Other" -msgstr "기타" - -#: lib/app.php:132 -msgid "Personal" -msgstr "ê°œì¸" - -#: lib/app.php:133 -msgid "Projects" -msgstr "프로ì íŠ¸" - -#: lib/app.php:134 -msgid "Questions" -msgstr "질문" - -#: lib/app.php:135 -msgid "Work" -msgstr "ìž‘ì—…" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "ìµëª…ì˜" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "새로운 달력" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "반복 ì—†ìŒ" - -#: lib/object.php:373 -msgid "Daily" -msgstr "매ì¼" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "매주" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "매주 특정 ìš”ì¼" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "2주마다" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "매월" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "매년" - -#: lib/object.php:388 -msgid "never" -msgstr "전혀" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "번 ì´í›„" - -#: lib/object.php:390 -msgid "by date" -msgstr "날짜" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "ì›”" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "주" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "월요ì¼" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "화요ì¼" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "수요ì¼" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "목요ì¼" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "금요ì¼" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "토요ì¼" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "ì¼ìš”ì¼" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "ì´ë‹¬ì˜ í•œ 주 ì¼ì •" - -#: lib/object.php:428 -msgid "first" -msgstr "첫번째" - -#: lib/object.php:429 -msgid "second" -msgstr "ë‘번째" - -#: lib/object.php:430 -msgid "third" -msgstr "세번째" - -#: lib/object.php:431 -msgid "fourth" -msgstr "네번째" - -#: lib/object.php:432 -msgid "fifth" -msgstr "다섯번째" - -#: lib/object.php:433 -msgid "last" -msgstr "마지막" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "1ì›”" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "2ì›”" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "3ì›”" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "4ì›”" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "5ì›”" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "6ì›”" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "7ì›”" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "8ì›”" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "9ì›”" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "10ì›”" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "11ì›”" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "12ì›”" - -#: lib/object.php:488 -msgid "by events date" -msgstr "ì´ë²¤íŠ¸ 날짜 순" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "날짜 번호 순" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "주 번호 순" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "날짜 순" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "날짜" - -#: lib/search.php:43 -msgid "Cal." -msgstr "달력" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "매ì¼" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "ê¸°ìž…ëž€ì´ ë¹„ì–´ìžˆìŠµë‹ˆë‹¤" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "제목" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "시작날짜" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "시작시간" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "마침 날짜" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "마침 시간" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "마침ì¼ì •ì´ 시작ì¼ì • 보다 빠릅니다. " - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "ë°ì´í„°ë² ì´ìŠ¤ ì—러입니다." - -#: templates/calendar.php:39 -msgid "Week" -msgstr "주" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "달" - -#: templates/calendar.php:41 -msgid "List" -msgstr "목ë¡" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "오늘" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "ë‚´ 달력" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav ë§í¬" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "공유 달력" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "달력 공유하지 ì•ŠìŒ" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "달력 공유" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "다운로드" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "편집" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "ì‚­ì œ" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "ë¡œ ì¸í•´ 당신과 함께 공유" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "새로운 달력" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "달력 편집" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "표시 ì´ë¦„" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "활성" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "달력 색ìƒ" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "저장" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "보내기" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "취소" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "ì´ë²¤íŠ¸ 편집" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "출력" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "ì¼ì • ì •ë³´" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "반복" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "알람" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "ì°¸ì„ìž" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "공유" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "ì´ë²¤íŠ¸ 제목" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "분류" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "쉼표로 카테고리 구분" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "카테고리 수정" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "ì¢…ì¼ ì´ë²¤íŠ¸" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "시작" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "ë" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "고급 설정" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "위치" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "ì´ë²¤íŠ¸ 위치" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "설명" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "ì´ë²¤íŠ¸ 설명" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "반복" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "고급" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "ìš”ì¼ ì„ íƒ" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "날짜 ì„ íƒ" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "그리고 ì´ í•´ì˜ ì¼ì •" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "그리고 ì´ ë‹¬ì˜ ì¼ì •" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "달 ì„ íƒ" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "주 ì„ íƒ" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "그리고 ì´ í•´ì˜ ì£¼ê°„ ì¼ì •" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "간격" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "ë" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "번 ì´í›„" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "새 달력 만들기" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "달력 íŒŒì¼ ê°€ì ¸ì˜¤ê¸°" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "새 달력 ì´ë¦„" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "ìž…ë ¥" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "대화 마침" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "새 ì´ë²¤íŠ¸ 만들기" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "ì¼ì • 보기" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "ì„ íƒëœ 카테고리 ì—†ìŒ" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "ì˜" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "ì—ì„œ" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "시간대" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24시간" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12시간" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "사용ìž" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "ì‚¬ìš©ìž ì„ íƒ" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "편집 가능" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "그룹" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "ì„ íƒ ê·¸ë£¹" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "공개" diff --git a/l10n/ko/contacts.po b/l10n/ko/contacts.po deleted file mode 100644 index 410011e08251b7cfb4314d78cc41f22c261b5f78..0000000000000000000000000000000000000000 --- a/l10n/ko/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Shinjo Park , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "주소ë¡ì„ (비)활성화하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ì•„ì´ë””ê°€ 설정ë˜ì–´ 있지 않습니다. " - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "주소ë¡ì— ì´ë¦„ëž€ì´ ë¹„ì–´ìžˆìœ¼ë©´ ì—…ë°ì´íŠ¸ë¥¼ í•  수 없습니다. " - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "주소ë¡ì„ ì—…ë°ì´íŠ¸í•  수 없습니다." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "제공ë˜ëŠ” ì•„ì´ë”” ì—†ìŒ" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "오류 검사합계 설정" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "ì‚­ì œ 카테고리를 ì„ íƒí•˜ì§€ 않았습니다. " - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "주소ë¡ì„ ì°¾ì„ ìˆ˜ 없습니다." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "ì—°ë½ì²˜ë¥¼ ì°¾ì„ ìˆ˜ 없습니다." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "ì—°ë½ì²˜ë¥¼ 추가하는 중 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "element ì´ë¦„ì´ ì„¤ì •ë˜ì§€ 않았습니다." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "빈 ì†ì„±ì„ 추가할 수 없습니다." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "최소한 í•˜ë‚˜ì˜ ì£¼ì†Œë¡ í•­ëª©ì„ ìž…ë ¥í•´ì•¼ 합니다." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "중복 ì†ì„± 추가 ì‹œë„: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "vCard ì •ë³´ê°€ 올바르지 않습니다. 페ì´ì§€ë¥¼ 새로 고치십시오." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ì•„ì´ë”” 분실" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "ì•„ì´ë””ì— ëŒ€í•œ VCard ë¶„ì„ ì˜¤ë¥˜" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "ì²´í¬ì„¬ì´ 설정ë˜ì§€ 않았습니다." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr " vCardì— ëŒ€í•œ ì •ë³´ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. 페ì´ì§€ë¥¼ 다시 로드하세요:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "ì ‘ì† ì•„ì´ë””ê°€ 기입ë˜ì§€ 않았습니다." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "사진 ì½ê¸° 오류" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "ìž„ì‹œ 파ì¼ì„ 저장하는 ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. " - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "로딩 ì‚¬ì§„ì´ ìœ íš¨í•˜ì§€ 않습니다. " - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "ì ‘ì† ì•„ì´ë””ê°€ 없습니다. " - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "사진 경로가 제출ë˜ì§€ 않았습니다. " - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "파ì¼ì´ 존재하지 않습니다. " - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "로딩 ì´ë¯¸ì§€ 오류입니다." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "ì—°ë½ì²˜ 개체를 가져오는 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. " - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "사진 ì†ì„±ì„ 가져오는 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. " - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "ì—°ë½ì²˜ 저장 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "ì´ë¯¸ì§€ í¬ê¸° ì¡°ì • 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "ì´ë¯¸ì§€ë¥¼ ìžë¥´ë˜ 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "ìž„ì‹œ ì´ë¯¸ì§€ë¥¼ ìƒì„± 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "ì´ë¯¸ì§€ë¥¼ ì°¾ë˜ ì¤‘ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "스토리지 ì—러 업로드 ì—°ë½ì²˜." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "ì˜¤ë¥˜ì—†ì´ íŒŒì¼ì—…로드 성공." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "php.ini 형ì‹ìœ¼ë¡œ 업로드 ëœ ì´ íŒŒì¼ì€ MAX_FILE_SIZE를 초과하였다." - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "HTML형ì‹ìœ¼ë¡œ 업로드 ëœ ì´ íŒŒì¼ì€ MAX_FILE_SIZE를 초과하였다." - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "ì´ ì—…ë¡œë“œëœ íŒŒì¼ì€ 부분ì ìœ¼ë¡œë§Œ 업로드 ë˜ì—ˆìŠµë‹ˆë‹¤." - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "파ì¼ì´ 업로드 ë˜ì–´ìžˆì§€ 않습니다" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "ìž„ì‹œ í´ë” 분실" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "ìž„ì‹œ ì´ë¯¸ì§€ë¥¼ 저장할 수 없습니다:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "ìž„ì‹œ ì´ë¯¸ì§€ë¥¼ 불러올 수 없습니다. " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "파ì¼ì´ 업로드 ë˜ì§€ 않았습니다. ì•Œ 수 없는 오류." - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "ì—°ë½ì²˜" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "죄송합니다. ì´ ê¸°ëŠ¥ì€ ì•„ì§ êµ¬í˜„ë˜ì§€ 않았습니다. " - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "구현ë˜ì§€ ì•ŠìŒ" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "유효한 주소를 ì–»ì„ ìˆ˜ 없습니다." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "오류" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "요소를 ì§ë ¬í™” í•  수 없습니다." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty'ê°€ 문서형ì‹ì´ ì—†ì´ ë¶ˆë ¤ì™”ìŠµë‹ˆë‹¤. bugs.owncloud.orgì— ë³´ê³ í•´ì£¼ì„¸ìš”. " - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "ì´ë¦„ 편집" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "업로드를 위한 파ì¼ì´ ì„ íƒë˜ì§€ 않았습니다. " - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "ì´ íŒŒì¼ì€ ì´ ì„œë²„ íŒŒì¼ ì—…ë¡œë“œ 최대 ìš©ëŸ‰ì„ ì´ˆê³¼ 합니다. " - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "유형 ì„ íƒ" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "ê²°ê³¼:" - -#: js/loader.js:49 -msgid " imported, " -msgstr "불러오기," - -#: js/loader.js:49 -msgid " failed." -msgstr "실패." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "ë‚´ 주소ë¡ì´ 아닙니다." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "ì—°ë½ì²˜ë¥¼ ì°¾ì„ ìˆ˜ 없습니다." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "ì§ìž¥" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "ìžíƒ" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "휴대í°" - -#: lib/app.php:203 -msgid "Text" -msgstr "ë¬¸ìž ë²ˆí˜¸" - -#: lib/app.php:204 -msgid "Voice" -msgstr "ìŒì„± 번호" - -#: lib/app.php:205 -msgid "Message" -msgstr "메세지" - -#: lib/app.php:206 -msgid "Fax" -msgstr "팩스 번호" - -#: lib/app.php:207 -msgid "Video" -msgstr "ì˜ìƒ 번호" - -#: lib/app.php:208 -msgid "Pager" -msgstr "호출기" - -#: lib/app.php:215 -msgid "Internet" -msgstr "ì¸í„°ë„·" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "ìƒì¼" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{ì´ë¦„}ì˜ ìƒì¼" - -#: lib/search.php:15 -msgid "Contact" -msgstr "ì—°ë½ì²˜" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "ì—°ë½ì²˜ 추가" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "ìž…ë ¥" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "주소ë¡" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "닫기" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Drop photo to upload" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "현재 사진 ì‚­ì œ" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "현재 사진 편집" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "새로운 사진 업로드" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "ownCloudì—ì„œ 사진 ì„ íƒ" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format custom, Short name, Full name, Reverse or Reverse with comma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "ì´ë¦„ ì„¸ë¶€ì‚¬í•­ì„ íŽ¸ì§‘í•©ë‹ˆë‹¤. " - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "ì¡°ì§" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "ì‚­ì œ" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "별명" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "별명 ìž…ë ¥" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "ì¼-ì›”-ë…„" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "그룹" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "쉼표로 그룹 구분" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "그룹 편집" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "선호함" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "올바른 ì´ë©”ì¼ ì£¼ì†Œë¥¼ 입력하세요." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "ì´ë©”ì¼ ì£¼ì†Œ ìž…ë ¥" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "ì´ë©”ì¼ ì£¼ì†Œ ì‚­ì œ" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "전화번호 ìž…ë ¥" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "전화번호 ì‚­ì œ" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "지ë„ì—ì„œ 보기" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "ìƒì„¸ 주소 수정" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "ì—¬ê¸°ì— ë…¸íŠ¸ 추가." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "íŒŒì¼ ì¶”ê°€" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "ì „í™” 번호" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "ì „ìž ìš°íŽ¸" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "주소" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "노트" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "ì—°ë½ì²˜ 다운로드" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "ì—°ë½ì²˜ ì‚­ì œ" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "ìž„ì‹œ ì´ë¯¸ì§€ê°€ ìºì‹œì—ì„œ 제거 ë˜ì—ˆìŠµë‹ˆë‹¤. " - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "주소 수정" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "종류" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "사서함" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "확장" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "ë„ì‹œ" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "지역" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "우편 번호" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "êµ­ê°€" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "주소ë¡" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Hon. prefixes" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Miss" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Ms" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Mr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Mrs" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Given name" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "추가 ì´ë¦„" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "성" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Hon. suffixes" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "ì—°ë½ì²˜ íŒŒì¼ ìž…ë ¥" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "주소ë¡ì„ ì„ íƒí•´ 주세요." - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "새 ì£¼ì†Œë¡ ë§Œë“¤ê¸°" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "새 ì£¼ì†Œë¡ ì´ë¦„" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "ì—°ë½ì²˜ ìž…ë ¥" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "ë‹¹ì‹ ì˜ ì£¼ì†Œë¡ì—는 ì—°ë½ì²˜ê°€ 없습니다. " - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "ì—°ë½ì²˜ 추가" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV 주소 ë™ê¸°í™”" - -#: templates/settings.php:3 -msgid "more info" -msgstr "ë” ë§Žì€ ì •ë³´" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "기본 주소 (Kontact et al)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "다운로드" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "편집" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "새 주소ë¡" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "저장" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "취소" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index abd9275c62e011a7bd71781cfde96ddf99affab1..4f2ad6145ebe7862106f078cbab18989a8bb63cc 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/core.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. # , 2012. # Shinjo Park , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 07:04+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,208 +20,241 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ì´ë¦„ì´ ê·œì •ë˜ì–´ 있지 않습니다. " +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "카테고리 íƒ€ìž…ì´ ì œê³µë˜ì§€ 않습니다." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "추가할 카테고리가 없습니까?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "ì´ ì¹´í…Œê³ ë¦¬ëŠ” ì´ë¯¸ 존재합니다:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "오브ì íŠ¸ íƒ€ìž…ì´ ì œê³µë˜ì§€ 않습니다." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s IDê°€ 제공ë˜ì§€ 않습니다." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "ì¦ê²¨ì°¾ê¸°ì— %s 를 ì¶”ê°€í•˜ëŠ”ë° ì—러발ìƒ." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "ì‚­ì œ 카테고리를 ì„ íƒí•˜ì§€ 않았습니다." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "ì¦ê²¨ì°¾ê¸°ë¡œ 부터 %s 를 ì œê±°í•˜ëŠ”ë° ì—러발ìƒ" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "설정" -#: js/js.js:645 -msgid "January" -msgstr "1ì›”" +#: js/js.js:704 +msgid "seconds ago" +msgstr "ì´ˆ ì „" -#: js/js.js:645 -msgid "February" -msgstr "2ì›”" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 분 ì „" -#: js/js.js:645 -msgid "March" -msgstr "3ì›”" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} 분 ì „" -#: js/js.js:645 -msgid "April" -msgstr "4ì›”" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 시간 ì „" -#: js/js.js:645 -msgid "May" -msgstr "5ì›”" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} 시간 ì „" -#: js/js.js:645 -msgid "June" -msgstr "6ì›”" +#: js/js.js:709 +msgid "today" +msgstr "오늘" -#: js/js.js:646 -msgid "July" -msgstr "7ì›”" +#: js/js.js:710 +msgid "yesterday" +msgstr "ì–´ì œ" -#: js/js.js:646 -msgid "August" -msgstr "8ì›”" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} ì¼ ì „" -#: js/js.js:646 -msgid "September" -msgstr "9ì›”" +#: js/js.js:712 +msgid "last month" +msgstr "지난 달" -#: js/js.js:646 -msgid "October" -msgstr "10ì›”" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} 달 ì „" -#: js/js.js:646 -msgid "November" -msgstr "11ì›”" +#: js/js.js:714 +msgid "months ago" +msgstr "달 ì „" -#: js/js.js:646 -msgid "December" -msgstr "12ì›”" +#: js/js.js:715 +msgid "last year" +msgstr "지난 í•´" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "ë…„ ì „" + +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "ì„ íƒ" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "취소" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "아니오" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "예" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "승ë½" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "ì‚­ì œ 카테고리를 ì„ íƒí•˜ì§€ 않았습니다." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "ê°ì²´ ìœ í˜•ì´ ì§€ì •ë˜ì§€ 않았습니다." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "ì—러" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "ì‘용프로그램 ì´ë¦„ì´ ì§€ì •ë˜ì§€ 않았습니다." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "필요한 íŒŒì¼ {file} ì´ ì¸ìŠ¤í†¨ë˜ì§€ 않았습니다!" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "ê³µìœ í•˜ë˜ ì¤‘ì— ì—러발ìƒ" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "ê³µìœ í•´ì œí•˜ë˜ ì¤‘ì— ì—러발ìƒ" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" +msgstr "권한변경 ì¤‘ì— ì—러발ìƒ" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "비밀번호 보호" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "암호" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "만료ì¼ìž 설정" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "만료ì¼" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "via ì´ë©”ì¼ë¡œ 공유" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "ë°œê²¬ëœ ì‚¬ëžŒ ì—†ìŒ" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" +msgstr "재공유는 허용ë˜ì§€ 않습니다" -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "공유해제" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "편집 가능" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "ì»¨íŠ¸ë¡¤ì— ì ‘ê·¼" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "만들기" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "ì—…ë°ì´íŠ¸" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "ì‚­ì œ" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "공유" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" -msgstr "" +msgstr "패스워드로 보호ë¨" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" -msgstr "" +msgstr "만료ì¼ìž í•´ì œ ì—러" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" -msgstr "" +msgstr "만료ì¼ìž 설정 ì—러" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud 비밀번호 재설정" @@ -233,19 +267,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "ì „ìž ìš°íŽ¸ìœ¼ë¡œ 암호 재설정 ë§í¬ë¥¼ 보냈습니다." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "요청함" +msgid "Reset email send." +msgstr "리셋 ì´ë©”ì¼ì„ 보냈습니다." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "ë¡œê·¸ì¸ ì‹¤íŒ¨!" +msgid "Request failed!" +msgstr "ìš”ì²­ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "ì‚¬ìš©ìž ì´ë¦„" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "요청 초기화" @@ -297,72 +331,187 @@ msgstr "í´ë¼ìš°ë“œë¥¼ ì°¾ì„ ìˆ˜ 없습니다" msgid "Edit categories" msgstr "카테고리 편집" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "추가" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "보안 경고" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "안전한 난수 ìƒì„±ê¸°ê°€ 사용가능하지 않습니다. PHPì˜ OpenSSL í™•ìž¥ì„ ì„¤ì •í•´ì£¼ì„¸ìš”." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "안전한 난수 ìƒì„±ê¸°ì—†ì´ëŠ” 공격ìžê°€ ê·€í•˜ì˜ ê³„ì •ì„ í†µí•´ 비밀번호 재설정 토í°ì„ 예측하여 ì–»ì„수 있습니다." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "ë‹¹ì‹ ì˜ ë°ì´í„° 디렉토리 ë° íŒŒì¼ì„ ì¸í„°ë„·ì—ì„œ 액세스 í•  수 있습니다. ownCloudê°€ 제공하는 .htaccess 파ì¼ì´ ìž‘ë™í•˜ì§€ 않습니다. 우리는 ë°ì´í„° 디렉토리를 ë”ì´ìƒ ì ‘ê·¼ í•  수 ì—†ë„ë¡ ì›¹ì„œë²„ì˜ ë£¨íŠ¸ 외부로 ë°ì´í„° 디렉토리를 ì´ë™í•˜ëŠ” ë°©ì‹ì˜ 웹 서버를 구성하는 ê²ƒì´ ì¢‹ë‹¤ê³  강력하게 제안합니다." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "ê´€ë¦¬ìž ê³„ì •ì„ ë§Œë“œì‹­ì‹œì˜¤" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "고급" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "ìžë£Œ í´ë”" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "ë°ì´í„°ë² ì´ìŠ¤ 구성" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "사용 ë  ê²ƒìž„" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "ë°ì´í„°ë² ì´ìŠ¤ 사용ìž" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "ë°ì´í„°ë² ì´ìŠ¤ 암호" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "ë°ì´í„°ë² ì´ìŠ¤ ì´ë¦„" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "ë°ì´í„°ë² ì´ìŠ¤ í…Œì´ë¸”공간" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "ë°ì´í„°ë² ì´ìŠ¤ 호스트" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "설치 완료" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "ì¼ìš”ì¼" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "월요ì¼" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "화요ì¼" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "수요ì¼" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "목요ì¼" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "금요ì¼" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "토요ì¼" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "1ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "2ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "3ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "4ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "5ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "6ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "7ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "8ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "9ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "10ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "11ì›”" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "12ì›”" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "ë‚´ê°€ 관리하는 웹 서비스" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "로그아웃" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "ìžë™ 로그ì¸ì´ ê±°ì ˆë˜ì—ˆìŠµë‹ˆë‹¤!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "ë‹¹ì‹ ì˜ ë¹„ë°€ë²ˆí˜¸ë¥¼ ìµœê·¼ì— ë³€ê²½í•˜ì§€ 않았다면, ë‹¹ì‹ ì˜ ê³„ì •ì€ ë¬´ë‹¨ë„ìš© ë  ìˆ˜ 있습니다." + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "당신 ê³„ì •ì˜ ì•ˆì „ì„ ìœ„í•´ 비밀번호를 변경해 주세요." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "암호를 잊으셨습니까?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "기억하기" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "로그ì¸" @@ -377,3 +526,17 @@ msgstr "ì´ì „" #: templates/part.pagenavi.php:20 msgid "next" msgstr "다ìŒ" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "보안경고!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "ë‹¹ì‹ ì˜ ë¹„ë°€ë²ˆí˜¸ë¥¼ ì¸ì¦í•´ì£¼ì„¸ìš”.
            보안ìƒì˜ ì´ìœ ë¡œ ë‹¹ì‹ ì€ ê²½ìš°ì— ë”°ë¼ ì•”í˜¸ë¥¼ 다시 입력하ë¼ëŠ” 메시지가 표시 ë  ìˆ˜ 있습니다." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "ì¸ì¦" diff --git a/l10n/ko/files.po b/l10n/ko/files.po index fdbc75250d43bde2bac9a4a02464c80d5d405365..9e15a4f302b092e5810b776823b4a37416e6c252 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/files.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. # , 2012. # Shinjo Park , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +25,166 @@ msgid "There is no error, the file uploaded with success" msgstr "ì—…ë¡œë“œì— ì„±ê³µí•˜ì˜€ìŠµë‹ˆë‹¤." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "업로드한 파ì¼ì´ php.iniì—ì„œ 지정한 upload_max_filesize보다 ë” í¼" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "업로드한 파ì¼ì´ HTML ë¬¸ì„œì— ì§€ì •í•œ MAX_FILE_SIZE보다 ë” í¼" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "파ì¼ì´ 부분ì ìœ¼ë¡œ 업로드ë¨" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "ì—…ë¡œë“œëœ íŒŒì¼ ì—†ìŒ" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "ìž„ì‹œ í´ë”ê°€ 사ë¼ì§" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "디스í¬ì— 쓰지 못했습니다" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "파ì¼" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "공유해제" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "ì‚­ì œ" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "ì´ë¦„변경" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "ì´ë¯¸ 존재 합니다" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} ì´ë¯¸ 존재함" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "대체" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "ì´ë¦„ì„ ì œì•ˆ" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "취소" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "대체ë¨" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} 으로 대체" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "복구" -#: js/filelist.js:241 -msgid "with" -msgstr "와" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{old_name}ì´ {new_name}으로 대체ë¨" -#: js/filelist.js:273 -msgid "unshared" -msgstr "" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "{files} 공유해제" -#: js/filelist.js:275 -msgid "deleted" -msgstr "ì‚­ì œ" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} ì‚­ì œë¨" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "ZIPíŒŒì¼ ìƒì„±ì— ì‹œê°„ì´ ê±¸ë¦´ 수 있습니다." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ì´ íŒŒì¼ì€ 디렉토리ì´ê±°ë‚˜ 0 ë°”ì´íŠ¸ì´ê¸° ë•Œë¬¸ì— ì—…ë¡œë“œ í•  수 없습니다." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "업로드 ì—러" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "닫기" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "보류 중" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 íŒŒì¼ ì—…ë¡œë“œì¤‘" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} íŒŒì¼ ì—…ë¡œë“œì¤‘" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "업로드 취소." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" - -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "ìž˜ëª»ëœ ì´ë¦„, '/' ì€ í—ˆìš©ì´ ë˜ì§€ 않습니다." +msgstr "íŒŒì¼ ì—…ë¡œë“œì„ ì§„í–‰í•©ë‹ˆë‹¤. 페ì´ì§€ë¥¼ 떠나게 ë ê²½ìš° 업로드가 취소ë©ë‹ˆë‹¤." -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:675 +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} íŒŒì¼ ìŠ¤ìº”ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "스캔하는 ë„중 ì—러" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "ì´ë¦„" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "í¬ê¸°" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "수정ë¨" -#: js/files.js:777 -msgid "folder" -msgstr "í´ë”" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 í´ë”" -#: js/files.js:779 -msgid "folders" -msgstr "í´ë”" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} í´ë”" -#: js/files.js:787 -msgid "file" -msgstr "파ì¼" +#: js/files.js:824 +msgid "1 file" +msgstr "1 파ì¼" -#: js/files.js:789 -msgid "files" -msgstr "파ì¼" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} 파ì¼" #: templates/admin.php:5 msgid "File handling" @@ -222,80 +194,76 @@ msgstr "íŒŒì¼ ì²˜ë¦¬" msgid "Maximum upload size" msgstr "최대 업로드 í¬ê¸°" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "최대. 가능한:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "멀티 íŒŒì¼ ë° í´ë” ë‹¤ìš´ë¡œë“œì— í•„ìš”." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "ZIP- 다운로드 허용" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0ì€ ë¬´ì œí•œ 입니다" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ZIP 파ì¼ì— 대한 최대 ìž…ë ¥ í¬ê¸°" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "저장" #: templates/index.php:7 msgid "New" msgstr "새로 만들기" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "í…스트 파ì¼" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "í´ë”" -#: templates/index.php:11 -msgid "From url" -msgstr "URL ì—ì„œ" +#: templates/index.php:14 +msgid "From link" +msgstr "From link" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "업로드" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "업로드 취소" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤. 업로드할 수 있습니다!" -#: templates/index.php:50 -msgid "Share" -msgstr "공유" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "다운로드" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "업로드 용량 초과" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "ì´ íŒŒì¼ì´ 서버ì—ì„œ 허용하는 최대 업로드 가능 용량보다 í½ë‹ˆë‹¤." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "파ì¼ì„ 검색중입니다, 기다려 주십시오." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "커런트 스ìºë‹" diff --git a/l10n/ko/files_encryption.po b/l10n/ko/files_encryption.po index 4f31caefbd762cd1035c2b602fe68dd6e682947f..4039e55eb0b580543969bdda48e9870b75a9d2b6 100644 --- a/l10n/ko/files_encryption.po +++ b/l10n/ko/files_encryption.po @@ -3,32 +3,33 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 09:52+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:3 msgid "Encryption" -msgstr "" +msgstr "암호화" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "" +msgstr "다ìŒíŒŒì¼ 형ì‹ì— 암호화 제외" #: templates/settings.php:5 msgid "None" -msgstr "" +msgstr "ì—†ìŒ" #: templates/settings.php:10 msgid "Enable Encryption" -msgstr "" +msgstr "암호화 사용" diff --git a/l10n/ko/files_external.po b/l10n/ko/files_external.po index ada8ee0b4684965a4b70b77ce8f627ba61d7bb5e..77bee80532bf10a58f540d0607388fcd09a2a795 100644 --- a/l10n/ko/files_external.po +++ b/l10n/ko/files_external.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 09:51+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,88 +20,88 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "ì ‘ê·¼ 허가" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "드롭박스 저장공간 구성 ì—러" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "접근권한 부여" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "모든 필요한 í•„ë“œë“¤ì„ ìž…ë ¥í•˜ì„¸ìš”." #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "유효한 드롭박스 ì‘용프로그램 키와 비밀번호를 입력해주세요." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "구글드ë¼ì´ë¸Œ 저장공간 구성 ì—러" #: templates/settings.php:3 msgid "External Storage" -msgstr "" +msgstr "확장 저장공간" #: templates/settings.php:7 templates/settings.php:19 msgid "Mount point" -msgstr "" +msgstr "마운트 í¬ì¸íŠ¸" #: templates/settings.php:8 msgid "Backend" -msgstr "" +msgstr "백엔드" #: templates/settings.php:9 msgid "Configuration" -msgstr "" +msgstr "설정" #: templates/settings.php:10 msgid "Options" -msgstr "" +msgstr "옵션" #: templates/settings.php:11 msgid "Applicable" -msgstr "" +msgstr "ì ìš©ê°€ëŠ¥" #: templates/settings.php:23 msgid "Add mount point" -msgstr "" +msgstr "마운트 í¬ì¸íŠ¸ 추가" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" -msgstr "" +msgstr "세트 ì—†ìŒ" #: templates/settings.php:63 msgid "All Users" -msgstr "" +msgstr "모든 사용ìž" #: templates/settings.php:64 msgid "Groups" -msgstr "" +msgstr "그룹" #: templates/settings.php:69 msgid "Users" -msgstr "" +msgstr "사용ìž" #: templates/settings.php:77 templates/settings.php:107 msgid "Delete" -msgstr "" +msgstr "ì‚­ì œ" #: templates/settings.php:87 msgid "Enable User External Storage" -msgstr "" +msgstr "ì‚¬ìš©ìž í™•ìž¥ 저장공간 사용" #: templates/settings.php:88 msgid "Allow users to mount their own external storage" -msgstr "" +msgstr "사용ìžë“¤ì—게 ê·¸ë“¤ì˜ í™•ìž¥ 저장공간 마운트 í•˜ëŠ”ê²ƒì„ í—ˆìš©" #: templates/settings.php:99 msgid "SSL root certificates" -msgstr "" +msgstr "SSL 루트 ì¸ì¦ì„œ" #: templates/settings.php:113 msgid "Import Root Certificate" -msgstr "" +msgstr "루트 ì¸ì¦ì„œ 가져오기" diff --git a/l10n/ko/files_pdfviewer.po b/l10n/ko/files_pdfviewer.po deleted file mode 100644 index a29b407be8a460bcb05bbb44498c8e37b1d6d1d0..0000000000000000000000000000000000000000 --- a/l10n/ko/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ko/files_sharing.po b/l10n/ko/files_sharing.po index 3b01080f8d54fc1a9fba38b73ce1f6bcde4a20ff..d4b5001cfc34a0d86820d8dc0ee309eb07a06699 100644 --- a/l10n/ko/files_sharing.po +++ b/l10n/ko/files_sharing.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 09:46+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,30 +20,30 @@ msgstr "" #: templates/authenticate.php:4 msgid "Password" -msgstr "" +msgstr "비밀번호" #: templates/authenticate.php:6 msgid "Submit" -msgstr "" +msgstr "제출" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s ê³µìœ ëœ í´ë” %s 당신과 함께" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s ê³µìœ ëœ íŒŒì¼ %s 당신과 함께" #: templates/public.php:14 templates/public.php:30 msgid "Download" -msgstr "" +msgstr "다운로드" #: templates/public.php:29 msgid "No preview available for" -msgstr "" +msgstr "사용가능한 프리뷰가 없습니다." -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" -msgstr "" +msgstr "ë‹¹ì‹ ì˜ í†µì œí•˜ì— ìžˆëŠ” 웹서비스" diff --git a/l10n/ko/files_texteditor.po b/l10n/ko/files_texteditor.po deleted file mode 100644 index 6beeb686b9e72da6e54bf23ab251dd90f6961738..0000000000000000000000000000000000000000 --- a/l10n/ko/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ko/files_versions.po b/l10n/ko/files_versions.po index 58730e41e0bb3b7eb98a33cf2890c954f8cdcfad..7476cb578345c1c33243d9cde36273705de22975 100644 --- a/l10n/ko/files_versions.po +++ b/l10n/ko/files_versions.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 09:43+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: js/settings-personal.js:31 templates/settings-personal.php:10 msgid "Expire all versions" -msgstr "" +msgstr "모든 ë²„ì „ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤." #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "역사" #: templates/settings-personal.php:4 msgid "Versions" -msgstr "" +msgstr "버전" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "" +msgstr "당신 파ì¼ì˜ 존재하는 모든 백업 ë²„ì „ì´ ì‚­ì œë ê²ƒìž…니다." #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "íŒŒì¼ ë²„ì „ê´€ë¦¬ì¤‘" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "가능" diff --git a/l10n/ko/gallery.po b/l10n/ko/gallery.po deleted file mode 100644 index 8a972e4ec9a2a0992f1d25fdf14b38cbd39074e7..0000000000000000000000000000000000000000 --- a/l10n/ko/gallery.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Shinjo Park , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Korean (http://www.transifex.net/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "사진" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "세팅" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "재검색" - -#: templates/index.php:17 -msgid "Stop" -msgstr "정지" - -#: templates/index.php:18 -msgid "Share" -msgstr "공유" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "뒤로" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "ì‚­ì œ 승ì¸" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "ì•¨ë²”ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "앨범 ì´ë¦„ 변경" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "새로운 앨범 ì´ë¦„" diff --git a/l10n/ko/impress.po b/l10n/ko/impress.po deleted file mode 100644 index c7be0756da3f0c3d05ab10994d4e0b9abfc3d496..0000000000000000000000000000000000000000 --- a/l10n/ko/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/ko/lib.po b/l10n/ko/lib.po index bf494197c62c90590eb5230ed9022a015d96dfcb..c4e82579bc2665f3de7030c1b8e6802a20c880c3 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/lib.po @@ -3,123 +3,151 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 06:19+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "ë„움ë§" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "ê°œì¸ì˜" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "설정" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "사용ìž" -#: app.php:312 +#: app.php:309 msgid "Apps" -msgstr "" +msgstr "어플리케ì´ì…˜" -#: app.php:314 +#: app.php:311 msgid "Admin" -msgstr "" +msgstr "관리ìž" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." -msgstr "" +msgstr "ZIP 다운로드가 꺼졌습니다." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." -msgstr "" +msgstr "íŒŒì¼ ì°¨ë¡€ëŒ€ë¡œ 다운로드가 필요합니다." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" -msgstr "" +msgstr "파ì¼ë¡œ ëŒì•„가기" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." -msgstr "" +msgstr "zip íŒŒì¼ ìƒì„±í•˜ê¸° 위한 너무 ë§Žì€ íŒŒì¼ë“¤ì´ ì„ íƒë˜ì—ˆìŠµë‹ˆë‹¤." #: json.php:28 msgid "Application is not enabled" -msgstr "" +msgstr "ì‘ìš©í”„ë¡œê·¸ëž¨ì´ ì‚¬ìš© 가능하지 않습니다." -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "ì¸ì¦ 오류" #: json.php:51 msgid "Token expired. Please reload page." -msgstr "" +msgstr "í† í° ë§Œë£Œ. 페ì´ì§€ë¥¼ 새로고침 해주세요." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "파ì¼" -#: template.php:86 +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ë¬¸ìž ë²ˆí˜¸" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "그림" + +#: template.php:103 msgid "seconds ago" -msgstr "" +msgstr "ì´ˆ ì „" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" -msgstr "" +msgstr "1분 ì „" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" -msgstr "" +msgstr "%d 분 ì „" + +#: template.php:106 +msgid "1 hour ago" +msgstr "1 시간 ì „" -#: template.php:91 +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d 시간 ì „" + +#: template.php:108 msgid "today" -msgstr "" +msgstr "오늘" -#: template.php:92 +#: template.php:109 msgid "yesterday" -msgstr "" +msgstr "ì–´ì œ" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" -msgstr "" +msgstr "%d ì¼ ì „" -#: template.php:94 +#: template.php:111 msgid "last month" -msgstr "" +msgstr "지난 달" -#: template.php:95 -msgid "months ago" -msgstr "" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d 달 ì „" -#: template.php:96 +#: template.php:113 msgid "last year" -msgstr "" +msgstr "지난 í•´" -#: template.php:97 +#: template.php:114 msgid "years ago" -msgstr "" +msgstr "ìž‘ë…„" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "" +msgstr "%sì€ ê°€ëŠ¥í•©ë‹ˆë‹¤. ë” ìžì„¸í•œ 정보는 ì´ê³³ìœ¼ë¡œ.." -#: updater.php:68 +#: updater.php:77 msgid "up to date" -msgstr "" +msgstr "최신" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" -msgstr "" +msgstr "ì—…ë°ì´íŠ¸ 확ì¸ì´ 비활성화 ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "\"%s\" 카테고리를 ì°¾ì„ ìˆ˜ 없습니다." diff --git a/l10n/ko/media.po b/l10n/ko/media.po deleted file mode 100644 index 5b1734b80726b9a1b74404c0e0ad35dd4103f6de..0000000000000000000000000000000000000000 --- a/l10n/ko/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Shinjo Park , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Korean (http://www.transifex.net/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "ìŒì•…" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "재ìƒ" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "ì¼ì‹œ 정지" - -#: templates/music.php:5 -msgid "Previous" -msgstr "ì´ì „" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "다ìŒ" - -#: templates/music.php:7 -msgid "Mute" -msgstr "ìŒì†Œê±°" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "ìŒì†Œê±° í•´ì œ" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "모ìŒì§‘ 재검색" - -#: templates/music.php:37 -msgid "Artist" -msgstr "ìŒì•…ê°€" - -#: templates/music.php:38 -msgid "Album" -msgstr "앨범" - -#: templates/music.php:39 -msgid "Title" -msgstr "제목" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index 96159fb9e9373ad03b68c9ad3964cc8c94d33e9d..1b4bacb26b9327ed1fdfdfa34a3e7d5c7cd09aa9 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/settings.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. # , 2012. # Shinjo Park , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +20,73 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "앱 스토어ì—ì„œ 목ë¡ì„ 가져올 수 없습니다" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "ì¸ì¦ 오류" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "ê·¸ë£¹ì´ ì´ë¯¸ 존재합니다." -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "그룹추가가 불가능합니다." -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "ì‘용프로그램 가능하지 않습니다." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "ì´ë©”ì¼ ì €ìž¥" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "ìž˜ëª»ëœ ì´ë©”ì¼" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID 변경ë¨" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "ìž˜ëª»ëœ ìš”ì²­" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "그룹 삭제가 불가능합니다." -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "ì¸ì¦ 오류" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "ì‚¬ìš©ìž ì‚­ì œê°€ 불가능합니다." -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "언어가 변경ë˜ì—ˆìŠµë‹ˆë‹¤" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "%s ê·¸ë£¹ì— ì‚¬ìš©ìž ì¶”ê°€ê°€ 불가능합니다." -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "%s 그룹으로부터 ì‚¬ìš©ìž ì œê±°ê°€ 불가능합니다." -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "비활성화" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "활성화" @@ -90,104 +94,17 @@ msgstr "활성화" msgid "Saving..." msgstr "저장..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "한국어" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "보안 경고" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "í¬ë¡ " - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "로그" - -#: templates/admin.php:116 -msgid "More" -msgstr "ë”" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "앱 추가" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "ë”ë§Žì€ ì‘용프로그램들" #: templates/apps.php:27 msgid "Select an App" @@ -199,7 +116,7 @@ msgstr "application page at apps.owncloud.comì„ ë³´ì‹œì˜¤." #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "-licensed by " #: templates/help.php:9 msgid "Documentation" @@ -213,22 +130,22 @@ msgstr "í° íŒŒì¼ ê´€ë¦¬" msgid "Ask a question" msgstr "질문하기" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "ë°ì´í„°ë² ì´ìŠ¤ì— 연결하는 ë° ë¬¸ì œê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "ì§ì ‘ ê°ˆ 수 있습니다." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "대답" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "You have used %s of the available %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -240,7 +157,7 @@ msgstr "다운로드" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "ë‹¹ì‹ ì˜ ë¹„ë°€ë²ˆí˜¸ê°€ 변경ë˜ì—ˆìŠµë‹ˆë‹¤." #: templates/personal.php:20 msgid "Unable to change your password" @@ -286,6 +203,16 @@ msgstr "번역 ë•ê¸°" msgid "use this address to connect to your ownCloud in your file manager" msgstr "íŒŒì¼ ê´€ë¦¬ìžì—ì„œ ë‚´ ownCloudì— ì—°ê²°í•  ë•Œ ì´ ì£¼ì†Œë¥¼ 사용하십시오" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "ownCloud communityì— ì˜í•´ì„œ 개발ë˜ì—ˆìŠµë‹ˆë‹¤. 소스코드는 AGPLì— ë”°ë¼ ì‚¬ìš©ì´ í—ˆê°€ë©ë‹ˆë‹¤." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "ì´ë¦„" diff --git a/l10n/ko/tasks.po b/l10n/ko/tasks.po deleted file mode 100644 index 58c447717b42b04d77acd69be22e1b0684fe9db0..0000000000000000000000000000000000000000 --- a/l10n/ko/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/ko/user_ldap.po b/l10n/ko/user_ldap.po index cf6aa7842daa0e1db72bf99bee95a1b67640123a..5084f863d1ac54ee1915ef0905ff05e073929269 100644 --- a/l10n/ko/user_ldap.po +++ b/l10n/ko/user_ldap.po @@ -3,40 +3,41 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 06:34+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:8 msgid "Host" -msgstr "" +msgstr "호스트" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "ë‹¹ì‹ ì€ í•„ìš”ë¡œí•˜ëŠ” SSLì„ ì œì™¸í•˜ê³ , í”„ë¡œí† ì½œì„ ìƒëžµ í•  수 있습니다. ë‹¤ìŒ ì‹œìž‘ 주소는 LDAPS://" #: templates/settings.php:9 msgid "Base DN" -msgstr "" +msgstr "기본 DN" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" +msgstr "ë‹¹ì‹ ì€ ê³ ê¸‰ 탭ì—ì„œ ì‚¬ìš©ìž ë° ê·¸ë£¹ì— ëŒ€í•œ 기본 DNì„ ì§€ì •í•  수 있습니다." #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "ì‚¬ìš©ìž DN" #: templates/settings.php:10 msgid "" @@ -47,35 +48,35 @@ msgstr "" #: templates/settings.php:11 msgid "Password" -msgstr "" +msgstr "비밀번호" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "ìµëª…ì˜ ì ‘ì†ì„ 위해서는 DNê³¼ 비밀번호를 빈ìƒíƒœë¡œ ë‘ë©´ ë©ë‹ˆë‹¤." #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "ì‚¬ìš©ìž ë¡œê·¸ì¸ í•„í„°" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "로그ì¸ì„ ì‹œë„ í•  ë•Œ ì ìš© í•  필터를 ì •ì˜í•©ë‹ˆë‹¤. %%udi는 ë¡œê·¸ì¸ ìž‘ì—…ì˜ ì‚¬ìš©ìž ì´ë¦„ì„ ëŒ€ì²´í•©ë‹ˆë‹¤." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "use %%uid placeholder, e.g. \"uid=%%uid\"" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "ì‚¬ìš©ìž ëª©ë¡ í•„í„°" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "사용ìžë¥¼ 검색 í•  ë•Œ ì ìš© í•  필터를 ì •ì˜í•©ë‹ˆë‹¤." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." @@ -83,11 +84,11 @@ msgstr "" #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "그룹 í•„í„°" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "ê·¸ë£¹ì„ ê²€ìƒ‰ í•  ë•Œ ì ìš© í•  필터를 ì •ì˜í•©ë‹ˆë‹¤." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." @@ -95,65 +96,65 @@ msgstr "" #: templates/settings.php:17 msgid "Port" -msgstr "" +msgstr "í¬íŠ¸" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "기본 ì‚¬ìš©ìž íŠ¸ë¦¬" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "기본 그룹 트리" #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "그룹 íšŒì› ë™ë£Œ" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "TLS 사용" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "SSLì—°ê²°ì„ ì‚¬ìš©í•˜ì§€ 마세요, ê·¸ê²ƒì€ ì‹¤íŒ¨í• ê²ë‹ˆë‹¤." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "insensitve LDAP 서버 (Windows)ì˜ ê²½ìš°" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "SSL ì¸ì¦ì„œ 유효성 검사를 해제합니다." #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "ì—°ê²°ì—만 ì´ ì˜µì…˜ì„ ì‚¬ìš©í•  경우 ë‹¹ì‹ ì˜ ownCloud ì„œë²„ì— LDAP ì„œë²„ì˜ SSL ì¸ì¦ì„œë¥¼ 가져옵니다." #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "추천하지 ì•ŠìŒ, 테스트로만 사용" #: templates/settings.php:24 msgid "User Display Name Field" -msgstr "" +msgstr "ì‚¬ìš©ìž í‘œì‹œ ì´ë¦„ í•„ë“œ" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "LDAP ì†ì„±ì€ 사용ìžì˜ ownCloud ì´ë¦„ì„ ìƒì„±í•˜ê¸° 위해 사용합니다." #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "그룹 표시 ì´ë¦„ í•„ë“œ" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "LDAP ì†ì„±ì€ ê·¸ë£¹ì˜ ownCloud ì´ë¦„ì„ ìƒì„±í•˜ê¸° 위해 사용합니다." #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "ë°”ì´íŠ¸" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." @@ -163,8 +164,8 @@ msgstr "" msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "" +msgstr "ì‚¬ìš©ìž ì´ë¦„(기본값)ì„ ë¹„ì›Œ 둡니다. 그렇지 않으면 LDAP/AD íŠ¹ì„±ì„ ì§€ì •í•©ë‹ˆë‹¤." #: templates/settings.php:32 msgid "Help" -msgstr "" +msgstr "ë„움ë§" diff --git a/l10n/ko/user_migrate.po b/l10n/ko/user_migrate.po deleted file mode 100644 index 5d9886e7058f0bd76059f04a7b9c0f548e71d940..0000000000000000000000000000000000000000 --- a/l10n/ko/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/ko/user_openid.po b/l10n/ko/user_openid.po deleted file mode 100644 index aaa8bf48371c20dc31a843d16945450c8db01e48..0000000000000000000000000000000000000000 --- a/l10n/ko/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/ko/files_odfviewer.po b/l10n/ko/user_webdavauth.po similarity index 60% rename from l10n/ko/files_odfviewer.po rename to l10n/ko/user_webdavauth.po index 2be8c176ae87d7fac2cd0bf810872e851b2b9313..b0ed4619eccb6ff6952e7fe65bbd650adf626d51 100644 --- a/l10n/ko/files_odfviewer.po +++ b/l10n/ko/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# 남ìžì‚¬ëžŒ , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 10:07+0000\n" +"Last-Translator: 남ìžì‚¬ëžŒ \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index 01e916f1ebfca1c452581cca287fdd0443147063..158446fd52122912692102f2577ae482912a992e 100644 --- a/l10n/ku_IQ/core.po +++ b/l10n/ku_IQ/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-11 02:04+0200\n" -"PO-Revision-Date: 2012-10-10 15:25+0000\n" -"Last-Translator: kurdboy \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:229 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "ده‌ستكاری" -#: js/js.js:661 -msgid "January" +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:661 -msgid "February" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:661 -msgid "March" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:661 -msgid "April" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:661 -msgid "May" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:661 -msgid "June" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:662 -msgid "July" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:662 -msgid "August" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:662 -msgid "September" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:662 -msgid "October" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:662 -msgid "November" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:662 -msgid "December" +#: js/js.js:699 +msgid "last year" msgstr "" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" +msgstr "هه‌ڵه" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "وشەی تێپەربو" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:322 js/share.js:484 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:497 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:509 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -232,17 +265,17 @@ msgid "You will receive a link to reset your password via Email." msgstr "" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" +msgid "Reset email send." msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" +msgid "Request failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" -msgstr "" +msgstr "ناوی به‌کارهێنه‌ر" #: lostpassword/templates/lostpassword.php:14 msgid "Request reset" @@ -296,72 +329,187 @@ msgstr "هیچ نه‌دۆزرایه‌وه‌" msgid "Edit categories" msgstr "" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" +msgstr "زیادکردن" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" msgstr "" #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "هه‌ڵبژاردنی پیشكه‌وتوو" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "زانیاری Ùۆڵده‌ر" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "به‌كارهێنه‌ری داتابه‌یس" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "وشه‌ی نهێنی داتا به‌یس" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "ناوی داتابه‌یس" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "هۆستی داتابه‌یس" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "كۆتایی هات ده‌ستكاریه‌كان" -#: templates/layout.guest.php:38 -msgid "web services under your control" +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" msgstr "" -#: templates/layout.user.php:34 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:41 +msgid "web services under your control" +msgstr "ڕاژه‌ی وێب له‌ژێر چاودێریت دایه" + +#: templates/layout.user.php:44 msgid "Log out" msgstr "چوونەدەرەوە" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -376,3 +524,17 @@ msgstr "پێشتر" #: templates/part.pagenavi.php:20 msgid "next" msgstr "دواتر" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index 49231949ee84101c0b04280e39cce5105d78555f..749a057b1c181c5106137c1205b01a496b28dc9c 100644 --- a/l10n/ku_IQ/files.po +++ b/l10n/ku_IQ/files.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-07 02:03+0200\n" -"PO-Revision-Date: 2011-08-13 02:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,194 +22,165 @@ msgid "There is no error, the file uploaded with success" msgstr "" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:189 js/filelist.js:191 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:189 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:238 js/filelist.js:240 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:238 js/filelist.js:240 js/filelist.js:272 js/filelist.js:274 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:240 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:272 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:274 -msgid "deleted" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:215 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:215 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:243 js/files.js:348 js/files.js:378 +#: js/files.js:235 +msgid "Close" +msgstr "داخستن" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:263 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:266 js/files.js:311 js/files.js:326 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:329 js/files.js:362 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:432 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:502 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:679 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:687 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:760 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" -msgstr "" +msgstr "ناو" -#: js/files.js:761 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "" -#: js/files.js:762 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "" -#: js/files.js:789 -msgid "folder" -msgstr "" - -#: js/files.js:791 -msgid "folders" -msgstr "" - -#: js/files.js:799 -msgid "file" -msgstr "" - -#: js/files.js:801 -msgid "files" -msgstr "" - -#: js/files.js:845 -msgid "seconds ago" -msgstr "" - -#: js/files.js:846 -msgid "minute ago" -msgstr "" - -#: js/files.js:847 -msgid "minutes ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:850 -msgid "today" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:851 -msgid "yesterday" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:852 -msgid "days ago" -msgstr "" - -#: js/files.js:853 -msgid "last month" -msgstr "" - -#: js/files.js:855 -msgid "months ago" -msgstr "" - -#: js/files.js:856 -msgid "last year" -msgstr "" - -#: js/files.js:857 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -220,80 +191,76 @@ msgstr "" msgid "Maximum upload size" msgstr "" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "پاشکه‌وتکردن" #: templates/index.php:7 msgid "New" msgstr "" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" -msgstr "" +msgstr "بوخچه" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" -msgstr "" +msgstr "بارکردن" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" -msgstr "" +msgstr "داگرتن" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/ku_IQ/lib.po b/l10n/ku_IQ/lib.po index d1f55c8d5ea2baaeae1d0001227d59f99af5766a..ab5cb3ada24d3db306d1d908566d61bffcfcc4b1 100644 --- a/l10n/ku_IQ/lib.po +++ b/l10n/ku_IQ/lib.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-07 02:04+0200\n" -"PO-Revision-Date: 2012-07-27 22:23+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" #: app.php:285 msgid "Help" -msgstr "" +msgstr "یارمەتی" #: app.php:292 msgid "Personal" @@ -27,11 +27,11 @@ msgstr "" #: app.php:297 msgid "Settings" -msgstr "" +msgstr "ده‌ستكاری" #: app.php:302 msgid "Users" -msgstr "" +msgstr "به‌كارهێنه‌ر" #: app.php:309 msgid "Apps" @@ -41,19 +41,19 @@ msgstr "" msgid "Admin" msgstr "" -#: files.php:327 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:328 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:328 files.php:353 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:352 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "" @@ -69,57 +69,84 @@ msgstr "" msgid "Token expired. Please reload page." msgstr "" -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:96 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index 2865e2d0f7b82c96c5187312b14c2d3481ddc0c9..c64763c9cfc2621044c98b7d281d0e975ad5ca33 100644 --- a/l10n/ku_IQ/settings.po +++ b/l10n/ku_IQ/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,168 +17,84 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" -msgstr "" +msgstr "چالاککردن" #: js/personal.js:69 msgid "Saving..." -msgstr "" +msgstr "پاشکه‌وتده‌کات..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -201,7 +117,7 @@ msgstr "" #: templates/help.php:9 msgid "Documentation" -msgstr "" +msgstr "به‌ڵگه‌نامه" #: templates/help.php:10 msgid "Managing Big Files" @@ -211,21 +127,21 @@ msgstr "" msgid "Ask a question" msgstr "" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -234,7 +150,7 @@ msgstr "" #: templates/personal.php:13 msgid "Download" -msgstr "" +msgstr "داگرتن" #: templates/personal.php:19 msgid "Your password was changed" @@ -250,7 +166,7 @@ msgstr "" #: templates/personal.php:22 msgid "New password" -msgstr "" +msgstr "وشەی نهێنی نوێ" #: templates/personal.php:23 msgid "show" @@ -262,7 +178,7 @@ msgstr "" #: templates/personal.php:30 msgid "Email" -msgstr "" +msgstr "ئیمه‌یل" #: templates/personal.php:31 msgid "Your email address" @@ -284,13 +200,23 @@ msgstr "" msgid "use this address to connect to your ownCloud in your file manager" msgstr "" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" -msgstr "" +msgstr "ناو" #: templates/users.php:23 templates/users.php:77 msgid "Password" -msgstr "" +msgstr "وشەی تێپەربو" #: templates/users.php:26 templates/users.php:78 templates/users.php:98 msgid "Groups" diff --git a/l10n/ku_IQ/user_webdavauth.po b/l10n/ku_IQ/user_webdavauth.po new file mode 100644 index 0000000000000000000000000000000000000000..c600370b57188c56af635f390779fcd14a43e41e --- /dev/null +++ b/l10n/ku_IQ/user_webdavauth.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ku_IQ\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "" diff --git a/l10n/lb/admin_dependencies_chk.po b/l10n/lb/admin_dependencies_chk.po deleted file mode 100644 index f49abb281402180c23976b811d0572e4fd5242cf..0000000000000000000000000000000000000000 --- a/l10n/lb/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/lb/admin_migrate.po b/l10n/lb/admin_migrate.po deleted file mode 100644 index a4912b42c8372a590f63f571b59e34311bb612b3..0000000000000000000000000000000000000000 --- a/l10n/lb/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/lb/bookmarks.po b/l10n/lb/bookmarks.po deleted file mode 100644 index 024a705e2433f2731476312733a5b3adac9b8466..0000000000000000000000000000000000000000 --- a/l10n/lb/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/lb/calendar.po b/l10n/lb/calendar.po deleted file mode 100644 index 389711175964cd0aeb59ee5d16de259915a277bc..0000000000000000000000000000000000000000 --- a/l10n/lb/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Keng Kalenner fonnt." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Keng Evenementer fonnt." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Falschen Kalenner" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nei Zäitzone:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zäitzon geännert" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ongülteg Requête" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalenner" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Gebuertsdag" - -#: lib/app.php:122 -msgid "Business" -msgstr "Geschäftlech" - -#: lib/app.php:123 -msgid "Call" -msgstr "Uruff" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clienten" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Liwwerant" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Vakanzen" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideeën" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Dag" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubiläum" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Meeting" - -#: lib/app.php:131 -msgid "Other" -msgstr "Aner" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Perséinlech" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projeten" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Froen" - -#: lib/app.php:135 -msgid "Work" -msgstr "Aarbecht" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Neien Kalenner" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Widderhëlt sech net" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Deeglech" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "All Woch" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "All Wochendag" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "All zweet Woch" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "All Mount" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "All Joer" - -#: lib/object.php:388 -msgid "never" -msgstr "ni" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "no Virkommes" - -#: lib/object.php:390 -msgid "by date" -msgstr "no Datum" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "no Mount-Dag" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "no Wochendag" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Méindes" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Dënschdes" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Mëttwoch" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Donneschdes" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Freides" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Samschdes" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Sonndes" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "éischt" - -#: lib/object.php:429 -msgid "second" -msgstr "Sekonn" - -#: lib/object.php:430 -msgid "third" -msgstr "Drëtt" - -#: lib/object.php:431 -msgid "fourth" -msgstr "Féiert" - -#: lib/object.php:432 -msgid "fifth" -msgstr "Fënneft" - -#: lib/object.php:433 -msgid "last" -msgstr "Läscht" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januar" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februar" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Mäerz" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Abrëll" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mee" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Dezember" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Datum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "All Dag" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Felder déi feelen" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titel" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Vun Datum" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Vun Zäit" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Bis Datum" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Bis Zäit" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "D'Evenement hält op ier et ufänkt" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "En Datebank Feeler ass opgetrueden" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Woch" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mount" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lescht" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Haut" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Deng Kalenneren" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav Link" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Gedeelte Kalenneren" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Keng gedeelten Kalenneren" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Eroflueden" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Editéieren" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Läschen" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Neien Kalenner" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Kalenner editéieren" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Numm" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiv" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Fuerf vum Kalenner" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Späicheren" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Fortschécken" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Ofbriechen" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Evenement editéieren" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Export" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Titel vum Evenement" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorie" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Ganz-Dag Evenement" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Vun" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Fir" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Avancéiert Optiounen" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Uert" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Uert vum Evenement" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Beschreiwung" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Beschreiwung vum Evenement" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Widderhuelen" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Erweidert" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Wochendeeg auswielen" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Deeg auswielen" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Méint auswielen" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Wochen auswielen" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervall" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Enn" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "Virkommes" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "E neie Kalenner uleeën" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "E Kalenner Fichier importéieren" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Numm vum neie Kalenner" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Import" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Dialog zoumaachen" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "En Evenement maachen" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zäitzon" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/lb/contacts.po b/l10n/lb/contacts.po deleted file mode 100644 index 2d22dc6b1e6e8a6769b5dedc2f2a9dbad1d8a40c..0000000000000000000000000000000000000000 --- a/l10n/lb/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Fehler beim (de)aktivéieren vum Adressbuch." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID ass net gesat." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Fehler beim updaten vum Adressbuch." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Keng ID uginn" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Fehler beim setzen vun der Checksum." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Keng Kategorien fir ze läschen ausgewielt." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Keen Adressbuch fonnt." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Keng Kontakter fonnt." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Fehler beim bäisetzen vun engem Kontakt." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Ka keng eidel Proprietéit bäisetzen." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Probéieren duebel Proprietéit bäi ze setzen:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informatioun iwwert vCard ass net richteg. Lued d'Säit wegl nei." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID fehlt" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Kontakt ID ass net mat geschéckt ginn." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Fehler beim liesen vun der Kontakt Photo." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Fehler beim späicheren vum temporäre Fichier." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Déi geluede Photo ass net gülteg." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Kontakt ID fehlt." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Fichier existéiert net:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Fehler beim lueden vum Bild." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Et ass kee Fichier ropgeluede ginn" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontakter" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Fehler" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultat: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importéiert, " - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Dat do ass net däin Adressbuch." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Konnt den Kontakt net fannen." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Aarbecht" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Doheem" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "GSM" - -#: lib/app.php:203 -msgid "Text" -msgstr "SMS" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voice" - -#: lib/app.php:205 -msgid "Message" -msgstr "Message" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Gebuertsdag" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} säi Gebuertsdag" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Kontakt bäisetzen" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adressbicher " - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Zoumaachen" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Firma" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Läschen" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Spëtznumm" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Gëff e Spëtznumm an" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Gruppen" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Gruppen editéieren" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Telefonsnummer aginn" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Telefonsnummer läschen" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Op da Kaart uweisen" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Adress Detailer editéieren" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adress" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Note" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Kontakt eroflueden" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Kontakt läschen" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Typ" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postleetzuel" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Erweidert" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Staat" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regioun" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postleetzuel" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Land" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adressbuch" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "M" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Mme" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Virnumm" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Weider Nimm" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Famillje Numm" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Download" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editéieren" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Neit Adressbuch" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Späicheren" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Ofbriechen" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 80b7b61b14c53016ce5a28ac66910533c533ce07..89fe2cfec9dfb4adc2a274ad86565bbf9b0fae79 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Numm vun der Applikatioun ass net uginn." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Keng Kategorie fir bäizesetzen?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Des Kategorie existéiert schonn:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Keng Kategorien ausgewielt fir ze läschen." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Astellungen" -#: js/js.js:645 -msgid "January" -msgstr "Januar" +#: js/js.js:688 +msgid "seconds ago" +msgstr "" -#: js/js.js:645 -msgid "February" -msgstr "Februar" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "" -#: js/js.js:645 -msgid "March" -msgstr "Mäerz" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Abrëll" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mee" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Juni" +#: js/js.js:693 +msgid "today" +msgstr "" -#: js/js.js:646 -msgid "July" -msgstr "Juli" +#: js/js.js:694 +msgid "yesterday" +msgstr "" -#: js/js.js:646 -msgid "August" -msgstr "August" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:696 +msgid "last month" +msgstr "" -#: js/js.js:646 -msgid "October" -msgstr "Oktober" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:698 +msgid "months ago" +msgstr "" -#: js/js.js:646 -msgid "December" -msgstr "Dezember" +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" +msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Ofbriechen" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nee" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Jo" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "OK" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Keng Kategorien ausgewielt fir ze läschen." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Fehler" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Passwuert" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "erstellen" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud Passwuert reset" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Du kriss en Link fir däin Passwuert nei ze setzen via Email geschéckt." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Gefrot" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Falschen Login!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Benotzernumm" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Reset ufroen" @@ -296,72 +329,187 @@ msgstr "Cloud net fonnt" msgid "Edit categories" msgstr "Kategorien editéieren" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Bäisetzen" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Sécherheets Warnung" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "En Admin Account uleeën" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Advanced" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Daten Dossier" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Datebank konfiguréieren" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "wärt benotzt ginn" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Datebank Benotzer" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Datebank Passwuert" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Datebank Numm" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Datebank Tabelle-Gréisst" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Datebank Server" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Installatioun ofschléissen" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Sonndes" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Méindes" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Dënschdes" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Mëttwoch" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Donneschdes" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Freides" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Samschdes" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Mäerz" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Abrëll" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mee" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Dezember" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "Web Servicer ënnert denger Kontroll" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Ausloggen" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Passwuert vergiess?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "verhalen" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Log dech an" @@ -376,3 +524,17 @@ msgstr "zeréck" #: templates/part.pagenavi.php:20 msgid "next" msgstr "weider" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index 582e344c385e469effce09fb37fd86af9f5fee92..d4f89d14eac95770a6a419c63f17313ee4ed7bee 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/files.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,194 +23,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Keen Feeler, Datei ass komplett ropgelueden ginn" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Déi ropgelueden Datei ass méi grouss wei d'upload_max_filesize Eegenschaft an der php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Déi ropgelueden Datei ass méi grouss wei d'MAX_FILE_SIZE Eegenschaft déi an der HTML form uginn ass" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Déi ropgelueden Datei ass nëmmen hallef ropgelueden ginn" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Et ass keng Datei ropgelueden ginn" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Et feelt en temporären Dossier" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Konnt net op den Disk schreiwen" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Dateien" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Läschen" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "existéiert schonn" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "ofbriechen" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "ersat" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "réckgängeg man" -#: js/filelist.js:241 -msgid "with" -msgstr "mat" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "geläscht" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Et gëtt eng ZIP-File generéiert, dëst ka bëssen daueren." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kann deng Datei net eroplueden well et en Dossier ass oder 0 byte grouss ass." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Fehler beim eroplueden" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Zoumaachen" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Upload ofgebrach." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ongültege Numm, '/' net erlaabt." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Numm" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Gréisst" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Geännert" -#: js/files.js:777 -msgid "folder" -msgstr "Dossier" - -#: js/files.js:779 -msgid "folders" -msgstr "Dossieren" - -#: js/files.js:787 -msgid "file" -msgstr "Datei" - -#: js/files.js:789 -msgid "files" -msgstr "Dateien" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:841 -msgid "last month" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:843 -msgid "months ago" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -221,80 +192,76 @@ msgstr "Fichier handling" msgid "Maximum upload size" msgstr "Maximum Upload Gréisst " -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. méiglech:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Gett gebraucht fir multi-Fichier an Dossier Downloads." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "ZIP-download erlaben" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 ass onlimitéiert" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maximal Gréisst fir ZIP Fichieren" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Späicheren" #: templates/index.php:7 msgid "New" msgstr "Nei" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Text Fichier" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Dossier" -#: templates/index.php:11 -msgid "From url" -msgstr "From URL" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Eroplueden" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Upload ofbriechen" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Hei ass näischt. Lued eppes rop!" -#: templates/index.php:50 -msgid "Share" -msgstr "Share" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Eroflueden" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Upload ze grouss" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Fichieren gi gescannt, war weg." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Momentane Scan" diff --git a/l10n/lb/files_pdfviewer.po b/l10n/lb/files_pdfviewer.po deleted file mode 100644 index a7665ab24e838e91dfedff65a2741d1cef894ddb..0000000000000000000000000000000000000000 --- a/l10n/lb/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/lb/files_texteditor.po b/l10n/lb/files_texteditor.po deleted file mode 100644 index abffc55df0638b5d07b3f5d685bb103f703297b8..0000000000000000000000000000000000000000 --- a/l10n/lb/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/lb/gallery.po b/l10n/lb/gallery.po deleted file mode 100644 index 933f3228917519386e3fc2adf569ab374ee59d97..0000000000000000000000000000000000000000 --- a/l10n/lb/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Luxembourgish (http://www.transifex.net/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Fotoen" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Astellungen" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Nei scannen" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Stop" - -#: templates/index.php:18 -msgid "Share" -msgstr "Deelen" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Zeréck" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Konfirmatioun läschen" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Wëlls de den Album läschen" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Album Numm änneren" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Neien Numm fir den Album" diff --git a/l10n/lb/impress.po b/l10n/lb/impress.po deleted file mode 100644 index a03f893b0f703704b9bcba4f13bac530392c5213..0000000000000000000000000000000000000000 --- a/l10n/lb/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index 8aa81edb8f7865bab131d32be0cd7d69f0083ee5..b164e98f222dd52110c48475fcc9f1d4f0d71286 100644 --- a/l10n/lb/lib.po +++ b/l10n/lb/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Perséinlech" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Astellungen" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "Authentifikatioun's Fehler" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "SMS" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/lb/media.po b/l10n/lb/media.po deleted file mode 100644 index cd44542ece05f37078ff4f51e43a3537e6c89abc..0000000000000000000000000000000000000000 --- a/l10n/lb/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Luxembourgish (http://www.transifex.net/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musek" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Ofspillen" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Paus" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Zeréck" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Weider" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Toun ausmaachen" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Toun umaachen" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Kollektioun nei scannen" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artist" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titel" diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index c3137a61f32907cb7f07667fa8c411cb605caf8f..2b969101b5fd579efe0100dcd734a80e5fa09b7e 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,70 +18,73 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Konnt Lescht net vum App Store lueden" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Authentifikatioun's Fehler" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-mail gespäichert" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ongülteg e-mail" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID huet geännert" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ongülteg Requête" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Authentifikatioun's Fehler" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Sprooch huet geännert" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Ofschalten" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Aschalten" @@ -89,97 +92,10 @@ msgstr "Aschalten" msgid "Saving..." msgstr "Speicheren..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Sécherheets Warnung" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Share API aschalten" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Erlab Apps d'Share API ze benotzen" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Links erlaben" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Resharing erlaben" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Useren erlaben mat egal wiem ze sharen" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Useren nëmmen erlaben mat Useren aus hirer Grupp ze sharen" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Méi" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Setz deng App bei" @@ -212,21 +128,21 @@ msgstr "Grouss Fichieren verwalten" msgid "Ask a question" msgstr "Stell eng Fro" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemer sinn opgetrueden beim Versuch sech un d'Hëllef Datebank ze verbannen." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Gei manuell dohinner." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Äntwert" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -285,6 +201,16 @@ msgstr "Hëllef iwwersetzen" msgid "use this address to connect to your ownCloud in your file manager" msgstr "benotz dës Adress fir dech un deng ownCloud iwwert däin Datei Manager ze verbannen" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Numm" diff --git a/l10n/lb/tasks.po b/l10n/lb/tasks.po deleted file mode 100644 index 62a9a4b722b71567bcb44aab2af95473b5c62063..0000000000000000000000000000000000000000 --- a/l10n/lb/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/lb/user_migrate.po b/l10n/lb/user_migrate.po deleted file mode 100644 index 7ecbf9a92b6f5be66bcb2d133d2ffc31f83a879d..0000000000000000000000000000000000000000 --- a/l10n/lb/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/lb/user_openid.po b/l10n/lb/user_openid.po deleted file mode 100644 index 785483e735099541faf2517634c7119fc2c906a1..0000000000000000000000000000000000000000 --- a/l10n/lb/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/lb/files_odfviewer.po b/l10n/lb/user_webdavauth.po similarity index 73% rename from l10n/lb/files_odfviewer.po rename to l10n/lb/user_webdavauth.po index 1ce99cf81a85b45d7e43ec31a8b971199a60c98c..242212f8edc5b13688787c1808c4b80c2ff8b19e 100644 --- a/l10n/lb/files_odfviewer.po +++ b/l10n/lb/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lb\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/lt_LT/admin_dependencies_chk.po b/l10n/lt_LT/admin_dependencies_chk.po deleted file mode 100644 index 3cf43f2491e273b507df1809da987a1d42139248..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-23 02:02+0200\n" -"PO-Revision-Date: 2012-08-22 13:30+0000\n" -"Last-Translator: Dr. ROX \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Php-json modulis yra reikalingas duomenų keitimuisi tarp programų" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Php-curl modulis automatiÅ¡kai nuskaito tinklapio pavadinimÄ… kuomet iÅ¡saugoma žymelÄ—." - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Php-gd modulis yra naudojamas paveikslÄ—lių miniatiÅ«roms kurti." - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Php-ldap modulis yra reikalingas prisijungimui prie jÅ«sų ldap serverio" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Php-zip modulis yra reikalingas kelių failų atsiuntimui iÅ¡ karto." - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Php-mb_multibyte modulis yra naudojamas apdoroti įvairius teksto kodavimo formatus." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Php-ctype modulis yra reikalingas duomenų tikrinimui." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Php-xml modulis yra reikalingas failų dalinimuisi naudojant webdav." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "allow_url_fopen direktyva turÄ—tų bÅ«ti nustatyta į \"1\" jei norite automatiÅ¡kai gauti žinių bazÄ—s informacijÄ… iÅ¡ OCS serverių." - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Php-pdo modulis yra reikalingas duomenų saugojimui į owncloud duomenų bazÄ™." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "PriklausomybÄ—s" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Naudojama:" diff --git a/l10n/lt_LT/admin_migrate.po b/l10n/lt_LT/admin_migrate.po deleted file mode 100644 index 8f3d5927fff5b1eb5e36581e4c010fc18b95ee38..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-23 02:02+0200\n" -"PO-Revision-Date: 2012-08-22 14:12+0000\n" -"Last-Translator: Dr. ROX \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Eksportuoti Å¡iÄ… ownCloud instaliacijÄ…" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Bus sukurtas archyvas su visais owncloud duomenimis ir failais.\n Pasirinkite eksportavimo tipÄ…:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Eksportuoti" diff --git a/l10n/lt_LT/bookmarks.po b/l10n/lt_LT/bookmarks.po deleted file mode 100644 index 4593ae1ec6fa3228619fcf616dce3cc7510a5413..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-23 02:02+0200\n" -"PO-Revision-Date: 2012-08-22 12:36+0000\n" -"Last-Translator: Dr. ROX \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "be pavadinimo" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/lt_LT/calendar.po b/l10n/lt_LT/calendar.po deleted file mode 100644 index 9d116aac12f63fd606ea3e55c53e0c5d600638e4..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Kalendorių nerasta." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ä®vykių nerasta." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Ne tas kalendorius" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nauja laiko juosta:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Laiko zona pakeista" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Klaidinga užklausa" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendorius" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Gimtadienis" - -#: lib/app.php:122 -msgid "Business" -msgstr "Verslas" - -#: lib/app.php:123 -msgid "Call" -msgstr "SkambuÄiai" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klientai" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Vykdytojas" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "IÅ¡eiginÄ—s" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "IdÄ—jos" - -#: lib/app.php:128 -msgid "Journey" -msgstr "KelionÄ—" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubiliejus" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Susitikimas" - -#: lib/app.php:131 -msgid "Other" -msgstr "Kiti" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Asmeniniai" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projektai" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Klausimai" - -#: lib/app.php:135 -msgid "Work" -msgstr "Darbas" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "be pavadinimo" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Naujas kalendorius" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Nekartoti" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Kasdien" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "KiekvienÄ… savaitÄ™" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "KiekvienÄ… savaitÄ—s dienÄ…" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Kas dvi savaites" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "KiekvienÄ… mÄ—nesį" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Kiekvienais metais" - -#: lib/object.php:388 -msgid "never" -msgstr "niekada" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "pagal datÄ…" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "pagal mÄ—nesio dienÄ…" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "pagal savaitÄ—s dienÄ…" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Pirmadienis" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Antradienis" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "TreÄiadienis" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Ketvirtadienis" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Penktadienis" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Å eÅ¡tadienis" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Sekmadienis" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Sausis" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Vasaris" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Kovas" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Balandis" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Gegužė" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Birželis" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Liepa" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "RugpjÅ«tis" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "RugsÄ—jis" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Spalis" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Lapkritis" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Gruodis" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Visa diena" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "TrÅ«kstami laukai" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Pavadinimas" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Nuo datos" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Nuo laiko" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Iki datos" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Iki laiko" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Ä®vykis baigiasi anksÄiau nei jis prasideda" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Ä®vyko duomenų bazÄ—s klaida" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "SavaitÄ—" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "MÄ—nuo" - -#: templates/calendar.php:41 -msgid "List" -msgstr "SÄ…raÅ¡as" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Å iandien" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "JÅ«sų kalendoriai" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav adresas" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Bendri kalendoriai" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Bendrų kalendorių nÄ—ra" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Dalintis kalendoriumi" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Atsisiųsti" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Keisti" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Trinti" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Naujas kalendorius" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Taisyti kalendorių" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Pavadinimas" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Naudojamas" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalendoriaus spalva" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "IÅ¡saugoti" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "IÅ¡saugoti" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "AtÅ¡aukti" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Taisyti įvykį" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Eksportuoti" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informacija" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Pasikartojantis" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Priminimas" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Dalyviai" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Dalintis" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Ä®vykio pavadinimas" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorija" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Atskirkite kategorijas kableliais" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Redaguoti kategorijas" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Visos dienos įvykis" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Nuo" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Iki" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Papildomi nustatymai" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Vieta" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Ä®vykio vieta" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "ApraÅ¡ymas" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Ä®vykio apraÅ¡ymas" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Kartoti" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Pasirinkite savaitÄ—s dienas" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Pasirinkite dienas" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Pasirinkite mÄ—nesius" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Pasirinkite savaites" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalas" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Pabaiga" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "sukurti naujÄ… kalendorių" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importuoti kalendoriaus failÄ…" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Naujo kalendoriaus pavadinimas" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importuoti" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Uždaryti" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Sukurti naujÄ… įvykį" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "PeržiÅ«rÄ—ti įvykį" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nepasirinktos jokios katagorijos" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Laiko juosta" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24val" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12val" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Vartotojai" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "pasirinkti vartotojus" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Redaguojamas" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "GrupÄ—s" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "pasirinkti grupes" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "vieÅ¡inti" diff --git a/l10n/lt_LT/contacts.po b/l10n/lt_LT/contacts.po deleted file mode 100644 index 963907b29745c2d0abb2e567982b00450000bf0c..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Klaida (de)aktyvuojant adresų knygÄ…." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Kontaktų nerasta." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Pridedant kontaktÄ… įvyko klaida." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informacija apie vCard yra neteisinga. " - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Klaida skaitant kontakto nuotraukÄ…." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Netinkama įkeliama nuotrauka." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Failas neegzistuoja:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Klaida įkeliant nuotraukÄ…." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Failas įkeltas sÄ—kmingai, be klaidų" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Ä®keliamo failo dydis virÅ¡ija upload_max_filesize nustatymÄ… php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Ä®keliamo failo dydis virÅ¡ija MAX_FILE_SIZE nustatymÄ…, kuris naudojamas HTML formoje." - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Failas buvo įkeltas tik dalinai" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Nebuvo įkeltas joks failas" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontaktai" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Tai ne jÅ«sų adresų knygelÄ—." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontaktas nerastas" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Darbo" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Namų" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobilusis" - -#: lib/app.php:203 -msgid "Text" -msgstr "ŽinuÄių" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Balso" - -#: lib/app.php:205 -msgid "Message" -msgstr "ŽinutÄ—" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faksas" - -#: lib/app.php:207 -msgid "Video" -msgstr "Vaizdo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "PraneÅ¡imų gaviklis" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internetas" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Gimtadienis" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontaktas" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "PridÄ—ti kontaktÄ…" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adresų knygos" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizacija" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Trinti" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Slapyvardis" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Ä®veskite slapyvardį" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefonas" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "El. paÅ¡tas" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresas" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Atsisųsti kontaktÄ…" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "IÅ¡trinti kontaktÄ…" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tipas" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "PaÅ¡to dėžutÄ—" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Miestas" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regionas" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "PaÅ¡to indeksas" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Å alis" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adresų knyga" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Atsisiųsti" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Keisti" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nauja adresų knyga" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "IÅ¡saugoti" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "AtÅ¡aukti" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index 130c447211eecfaba1d565999861bb7dd8484c07..6354588982752574dd19ed9ed64ce63f93069e34 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/core.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Dr. ROX , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +19,241 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nepateiktas programos pavadinimas." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "NepridÄ—site jokios kategorijos?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Tokia kategorija jau yra:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Trynimui nepasirinkta jokia kategorija." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Nustatymai" -#: js/js.js:645 -msgid "January" -msgstr "Sausis" +#: js/js.js:688 +msgid "seconds ago" +msgstr "prieÅ¡ sekundÄ™" -#: js/js.js:645 -msgid "February" -msgstr "Vasaris" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "PrieÅ¡ 1 minutÄ™" -#: js/js.js:645 -msgid "March" -msgstr "Kovas" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "PrieÅ¡ {count} minutes" -#: js/js.js:645 -msgid "April" -msgstr "Balandis" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Gegužė" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Birželis" +#: js/js.js:693 +msgid "today" +msgstr "Å¡iandien" -#: js/js.js:646 -msgid "July" -msgstr "Liepa" +#: js/js.js:694 +msgid "yesterday" +msgstr "vakar" -#: js/js.js:646 -msgid "August" -msgstr "RugpjÅ«tis" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "PrieÅ¡ {days} dienas" -#: js/js.js:646 -msgid "September" -msgstr "RugsÄ—jis" +#: js/js.js:696 +msgid "last month" +msgstr "praeitÄ… mÄ—nesį" -#: js/js.js:646 -msgid "October" -msgstr "Spalis" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Lapkritis" +#: js/js.js:698 +msgid "months ago" +msgstr "prieÅ¡ mÄ—nesį" -#: js/js.js:646 -msgid "December" -msgstr "Gruodis" +#: js/js.js:699 +msgid "last year" +msgstr "praeitais metais" + +#: js/js.js:700 +msgid "years ago" +msgstr "prieÅ¡ metus" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Pasirinkite" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "AtÅ¡aukti" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ne" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Taip" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Gerai" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Trynimui nepasirinkta jokia kategorija." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Klaida" -#: js/share.js:103 -msgid "Error while sharing" +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:114 -msgid "Error while unsharing" +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:121 -msgid "Error while changing permissions" -msgstr "" +#: js/share.js:124 +msgid "Error while sharing" +msgstr "Klaida, dalijimosi metu" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "Klaida, kai atÅ¡aukiamas dalijimasis" -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "Klaida, keiÄiant privilegijas" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Pasidalino su Jumis ir {group} grupe {owner}" + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Pasidalino su Jumis {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Dalintis su" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Dalintis nuoroda" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Apsaugotas slaptažodžiu" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Slaptažodis" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Nustatykite galiojimo laikÄ…" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Galiojimo laikas" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Dalintis per el. paÅ¡tÄ…:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Žmonių nerasta" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Dalijinasis iÅ¡naujo negalimas" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Pasidalino {item} su {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Nesidalinti" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "gali redaguoti" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "priÄ—jimo kontrolÄ—" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "sukurti" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "atnaujinti" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "iÅ¡trinti" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "dalintis" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" -msgstr "" +msgstr "Apsaugota slaptažodžiu" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Klaida nuimant galiojimo laikÄ…" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" -msgstr "" +msgstr "Klaida nustatant galiojimo laikÄ…" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud slaptažodžio atkÅ«rimas" @@ -232,19 +266,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Elektroniniu paÅ¡tu gausite nuorodÄ…, su kuria galÄ—site iÅ¡ naujo nustatyti slaptažodį." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Užklausta" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Prisijungti nepavyko!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Prisijungimo vardas" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "PraÅ¡yti nustatymo iÅ¡ najo" @@ -296,72 +330,187 @@ msgstr "Negalima rasti" msgid "Edit categories" msgstr "Redaguoti kategorijas" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "PridÄ—ti" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Saugumo praneÅ¡imas" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Saugaus atsitiktinių skaiÄių generatoriaus nÄ—ra, praÅ¡ome įjungti PHP OpenSSL modulį." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Be saugaus atsitiktinių skaiÄių generatoriaus, piktavaliai gali atspÄ—ti JÅ«sų slaptažodį ir pasisavinti paskyrÄ…." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "JÅ«sų duomenų aplankalas ir JÅ«sų failai turbÅ«t yra pasiekiami per internetÄ…. Failas .htaccess, kuris duodamas, neveikia. Mes rekomenduojame susitvarkyti savo nustatymsu taip, kad failai nebÅ«tų pasiekiami per internetÄ…, arba persikelti juos kitur." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Sukurti administratoriaus paskyrÄ…" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "IÅ¡plÄ—stiniai" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Duomenų katalogas" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Nustatyti duomenų bazÄ™" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "bus naudojama" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Duomenų bazÄ—s vartotojas" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Duomenų bazÄ—s slaptažodis" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Duomenų bazÄ—s pavadinimas" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "Duomenų bazÄ—s loginis saugojimas" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Duomenų bazÄ—s serveris" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Baigti diegimÄ…" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Sekmadienis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Pirmadienis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Antradienis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "TreÄiadienis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Ketvirtadienis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Penktadienis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Å eÅ¡tadienis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Sausis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Vasaris" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Kovas" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Balandis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Gegužė" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Birželis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Liepa" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "RugpjÅ«tis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "RugsÄ—jis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Spalis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Lapkritis" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Gruodis" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "jÅ«sų valdomos web paslaugos" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Atsijungti" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatinis prisijungimas atmestas!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Jei paskutinių metu nekeitÄ—te savo slaptažodžio, JÅ«sų paskyra gali bÅ«ti pavojuje!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "PraÅ¡ome pasikeisti slaptažodį dar kartÄ…, dÄ—l paskyros saugumo." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "PamirÅ¡ote slaptažodį?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "prisiminti" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Prisijungti" @@ -376,3 +525,17 @@ msgstr "atgal" #: templates/part.pagenavi.php:20 msgid "next" msgstr "kitas" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Saugumo praneÅ¡imas!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Prašome patvirtinti savo vartotoją.
            DÄ—l saugumo, slaptažodžio patvirtinimas bus reikalaujamas įvesti kas kiek laiko." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Patvirtinti" diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index 60cfe9abe22acb66ce4fbd8ca69177b7c7d50718..ef30d7726ce86adc1ccd3173a0661a194045d6bf 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/files.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Denisas KulumbegaÅ¡vili <>, 2012. # Dr. ROX , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +25,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Klaidų nÄ—ra, failas įkeltas sÄ—kmingai" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Ä®keliamo failo dydis virÅ¡ija upload_max_filesize parametrÄ… php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Ä®keliamo failo dydis virÅ¡ija MAX_FILE_SIZE parametrÄ…, kuris yra nustatytas HTML formoje" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Failas buvo įkeltas tik dalinai" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nebuvo įkeltas nÄ— vienas failas" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "NÄ—ra laikinojo katalogo" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Nepavyko įraÅ¡yti į diskÄ…" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Failai" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "Nebesidalinti" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "IÅ¡trinti" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Pervadinti" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} jau egzistuoja" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" -msgstr "" +msgstr "pakeisti" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "pasiÅ«lyti pavadinimÄ…" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "atÅ¡aukti" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "pakeiskite {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" -msgstr "" +msgstr "anuliuoti" -#: js/filelist.js:241 -msgid "with" -msgstr "" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "pakeiskite {new_name} į {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "nebesidalinti {files}" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "iÅ¡trinti {files}" -#: js/filelist.js:275 -msgid "deleted" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "kuriamas ZIP archyvas, tai gali užtrukti Å¡iek tiek laiko." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Neįmanoma įkelti failo - jo dydis gali bÅ«ti 0 bitų arba tai katalogas" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Ä®kÄ—limo klaida" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Užverti" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Laukiantis" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "įkeliamas 1 failas" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} įkeliami failai" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Ä®kÄ—limas atÅ¡auktas." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" - -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Pavadinime negali bÅ«ti naudojamas ženklas \"/\"." +msgstr "Failo įkÄ—limas pradÄ—tas. Jei paliksite šį puslapį, įkÄ—limas nutrÅ«ks." -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:675 +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} praskanuoti failai" + +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "klaida skanuojant" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Pavadinimas" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Dydis" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Pakeista" -#: js/files.js:777 -msgid "folder" -msgstr "katalogas" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 aplankalas" -#: js/files.js:779 -msgid "folders" -msgstr "katalogai" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} aplankalai" -#: js/files.js:787 -msgid "file" -msgstr "failas" +#: js/files.js:824 +msgid "1 file" +msgstr "1 failas" -#: js/files.js:789 -msgid "files" -msgstr "failai" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} failai" #: templates/admin.php:5 msgid "File handling" @@ -222,80 +194,76 @@ msgstr "Failų tvarkymas" msgid "Maximum upload size" msgstr "Maksimalus įkeliamo failo dydis" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " -msgstr "" +msgstr "maks. galima:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." -msgstr "" +msgstr "Reikalinga daugybinui failų ir aplankalų atsisiuntimui." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Ä®jungti atsisiuntimÄ… ZIP archyvu" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 yra neribotas" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maksimalus ZIP archyvo failo dydis" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "IÅ¡saugoti" #: templates/index.php:7 msgid "New" msgstr "Naujas" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Teksto failas" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Katalogas" -#: templates/index.php:11 -msgid "From url" -msgstr "IÅ¡ adreso" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Ä®kelti" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "AtÅ¡aukti siuntimÄ…" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "ÄŒia tuÅ¡Äia. Ä®kelkite kÄ… nors!" -#: templates/index.php:50 -msgid "Share" -msgstr "Dalintis" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Atsisiųsti" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Ä®kÄ—limui failas per didelis" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Bandomų įkelti failų dydis virÅ¡ija maksimalų leidžiamÄ… Å¡iame serveryje" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Skenuojami failai, praÅ¡ome palaukti." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Å iuo metu skenuojama" diff --git a/l10n/lt_LT/files_external.po b/l10n/lt_LT/files_external.po index db97f6a46ad73ee07ee1465c67bc7115377029ce..e1cfb8f0970674a792dd85217db5bc8c95e11905 100644 --- a/l10n/lt_LT/files_external.po +++ b/l10n/lt_LT/files_external.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Dr. ROX , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-01 00:01+0100\n" +"PO-Revision-Date: 2012-10-31 14:42+0000\n" +"Last-Translator: Dr. ROX \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,39 +21,39 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "PriÄ—jimas suteiktas" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Klaida nustatinÄ—jant Dropbox talpyklÄ…" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Suteikti priÄ—jimÄ…" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Užpildykite visus reikalingus laukelius" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "PraÅ¡ome įvesti teisingus Dropbox \"app key\" ir \"secret\"." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Klaida nustatinÄ—jant Google Drive talpyklÄ…" #: templates/settings.php:3 msgid "External Storage" -msgstr "" +msgstr "IÅ¡orinÄ—s saugyklos" #: templates/settings.php:7 templates/settings.php:19 msgid "Mount point" -msgstr "" +msgstr "Saugyklos pavadinimas" #: templates/settings.php:8 msgid "Backend" -msgstr "" +msgstr "PosistemÄ—s pavadinimas" #: templates/settings.php:9 msgid "Configuration" @@ -64,11 +65,11 @@ msgstr "Nustatymai" #: templates/settings.php:11 msgid "Applicable" -msgstr "" +msgstr "Pritaikyti" #: templates/settings.php:23 msgid "Add mount point" -msgstr "" +msgstr "PridÄ—ti iÅ¡orinÄ™ saugyklÄ…" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" @@ -92,16 +93,16 @@ msgstr "IÅ¡trinti" #: templates/settings.php:87 msgid "Enable User External Storage" -msgstr "" +msgstr "Ä®jungti vartotojų iÅ¡orines saugyklas" #: templates/settings.php:88 msgid "Allow users to mount their own external storage" -msgstr "" +msgstr "Leisti vartotojams pridÄ—ti savo iÅ¡orines saugyklas" #: templates/settings.php:99 msgid "SSL root certificates" -msgstr "" +msgstr "SSL sertifikatas" #: templates/settings.php:113 msgid "Import Root Certificate" -msgstr "" +msgstr "Ä®kelti pagrindinį sertifikatÄ…" diff --git a/l10n/lt_LT/files_pdfviewer.po b/l10n/lt_LT/files_pdfviewer.po deleted file mode 100644 index e224f4ccb57a7e7dc4dbd9d49d4b93e1d32ce804..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/lt_LT/files_texteditor.po b/l10n/lt_LT/files_texteditor.po deleted file mode 100644 index bd2a8dbff169e1c819e21815a0852c9965d910cf..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/lt_LT/files_versions.po b/l10n/lt_LT/files_versions.po index 9e25e32816896436f8bd69e13574c9ea50f25c02..2e5b37e12fcf5a99bf335edcacd76f1d320b4963 100644 --- a/l10n/lt_LT/files_versions.po +++ b/l10n/lt_LT/files_versions.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Dr. ROX , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 16:56+0000\n" +"Last-Translator: andrejuseu \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,20 +25,20 @@ msgstr "Panaikinti visų versijų galiojimÄ…" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "Istorija" #: templates/settings-personal.php:4 msgid "Versions" -msgstr "" +msgstr "Versijos" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "" +msgstr "Tai iÅ¡trins visas esamas failo versijas" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "Failų versijos" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Ä®jungti" diff --git a/l10n/lt_LT/gallery.po b/l10n/lt_LT/gallery.po deleted file mode 100644 index 383e3cf66f931d9b450f9d75d39e25eec13ba65b..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.net/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Nuotraukos" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Nustatymai" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Atnaujinti" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Sustabdyti" - -#: templates/index.php:18 -msgid "Share" -msgstr "Dalintis" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Atgal" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "IÅ¡jungti patvirtinimÄ…" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Ar tikrai norite paÅ¡alinti albumÄ…" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Keisti albumo pavadinimÄ…" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Naujo albumo pavadinimas" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index 4240cfb1d2e7c4412dee1bfb4284096e15551aac..8ef5110cd74133cfbec86e588b4ec87adef2ed3d 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/lib.po @@ -3,58 +3,59 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Dr. ROX , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Pagalba" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Asmeniniai" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Nustatymai" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Vartotojai" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Programos" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Administravimas" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP atsisiuntimo galimybÄ— yra iÅ¡jungta." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Failai turi bÅ«ti parsiunÄiami vienas po kito." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Atgal į Failus" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Pasirinkti failai per dideli archyvavimui į ZIP." @@ -62,65 +63,92 @@ msgstr "Pasirinkti failai per dideli archyvavimui į ZIP." msgid "Application is not enabled" msgstr "Programa neįjungta" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Autentikacijos klaida" #: json.php:51 msgid "Token expired. Please reload page." +msgstr "Sesija baigÄ—si. PraÅ¡ome perkrauti puslapį." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Failai" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ŽinuÄių" + +#: search/provider/file.php:29 +msgid "Images" msgstr "" -#: template.php:86 +#: template.php:103 msgid "seconds ago" -msgstr "" +msgstr "prieÅ¡ kelias sekundes" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "prieÅ¡ 1 minutÄ™" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "prieÅ¡ %d minuÄių" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "Å¡iandien" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "vakar" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "prieÅ¡ %d dienų" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "praÄ—jusį mÄ—nesį" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "pereitais metais" -#: template.php:97 +#: template.php:114 msgid "years ago" -msgstr "" +msgstr "prieÅ¡ metus" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "" +msgstr "%s yra galimas. PlatesnÄ— informacija Äia" -#: updater.php:68 +#: updater.php:77 msgid "up to date" -msgstr "" +msgstr "pilnai atnaujinta" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" +msgstr "atnaujinimų tikrinimas iÅ¡jungtas" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" msgstr "" diff --git a/l10n/lt_LT/media.po b/l10n/lt_LT/media.po deleted file mode 100644 index c466de33beb73da3f484c349e62401a43376f53f..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.net/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Muzika" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Groti" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pristabdyti" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Atgal" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Kitas" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Nutildyti" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Ä®jungti garsÄ…" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Atnaujinti kolekcijÄ…" - -#: templates/music.php:37 -msgid "Artist" -msgstr "AtlikÄ—jas" - -#: templates/music.php:38 -msgid "Album" -msgstr "Albumas" - -#: templates/music.php:39 -msgid "Title" -msgstr "Pavadinimas" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index 621a2aa61a1fcdffc4ac89fc0d3777e615c783a8..10dd1bb7eb1883c1794c517fadfbd919d0779a69 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/settings.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Dr. ROX , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,70 +19,73 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Neįmanoma įkelti sÄ…raÅ¡o iÅ¡ Programų Katalogo" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Nepavyksta įjungti aplikacijos." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "El. paÅ¡tas iÅ¡saugotas" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Netinkamas el. paÅ¡tas" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID pakeistas" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Klaidinga užklausa" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Autentikacijos klaida" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Kalba pakeista" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "IÅ¡jungti" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Ä®jungti" @@ -89,104 +93,17 @@ msgstr "Ä®jungti" msgid "Saving..." msgstr "Saugoma.." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Kalba" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Saugumo įspÄ—jimas" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Žurnalas" - -#: templates/admin.php:116 -msgid "More" -msgstr "Daugiau" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "PridÄ—ti programÄ—lÄ™" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Daugiau aplikacijų" #: templates/apps.php:27 msgid "Select an App" @@ -198,7 +115,7 @@ msgstr "" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "- autorius" #: templates/help.php:9 msgid "Documentation" @@ -212,21 +129,21 @@ msgstr "" msgid "Ask a question" msgstr "Užduoti klausimÄ…" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemos jungiantis prie duomenų bazÄ—s" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Atsakyti" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -239,7 +156,7 @@ msgstr "Atsisiųsti" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "JÅ«sų slaptažodis buvo pakeistas" #: templates/personal.php:20 msgid "Unable to change your password" @@ -285,6 +202,16 @@ msgstr "PadÄ—kite iÅ¡versti" msgid "use this address to connect to your ownCloud in your file manager" msgstr "naudokite šį adresÄ…, jei norite pasiekti savo ownCloud per failų tvarkyklÄ™" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Vardas" diff --git a/l10n/lt_LT/tasks.po b/l10n/lt_LT/tasks.po deleted file mode 100644 index 4d53aef5a79ca1e94611b081bde09a8e0c570791..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-23 02:03+0200\n" -"PO-Revision-Date: 2012-08-22 14:05+0000\n" -"Last-Translator: Dr. ROX \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Netinkama data/laikas" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Be kategorijos" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "TuÅ¡Äias apraÅ¡ymas" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Netinkamas baigimo procentas" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "SvarbÅ«s" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Daugiau" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Mažiau" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "IÅ¡trinti" diff --git a/l10n/lt_LT/user_migrate.po b/l10n/lt_LT/user_migrate.po deleted file mode 100644 index a0c8819f796d4b9afd470ca2b52fa3279d2317d6..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dr. ROX , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-23 02:03+0200\n" -"PO-Revision-Date: 2012-08-22 13:34+0000\n" -"Last-Translator: Dr. ROX \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Eksportuoti" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Ä®vyko klaida kuriant eksportuojamÄ… failÄ…" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Ä®vyko klaida" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Eksportuoti jÅ«sų vartotojo paskyrÄ…" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Bus sukurtas suglaudintas failas su jÅ«sų ownCloud vartotojo paskyra." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Importuoti vartotojo paskyrÄ…" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "ownCloud vartotojo paskyros Zip archyvas" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importuoti" diff --git a/l10n/lt_LT/user_openid.po b/l10n/lt_LT/user_openid.po deleted file mode 100644 index 9567cf6ec3a0da29e29cb5f11bf9512bf513eb8e..0000000000000000000000000000000000000000 --- a/l10n/lt_LT/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/lt_LT/files_odfviewer.po b/l10n/lt_LT/user_webdavauth.po similarity index 76% rename from l10n/lt_LT/files_odfviewer.po rename to l10n/lt_LT/user_webdavauth.po index 9fdcfb4a0c0e355dab53ec2d7846e94e513bd5eb..1b326476bf53abdca2b4db11809daad52e2940e6 100644 --- a/l10n/lt_LT/files_odfviewer.po +++ b/l10n/lt_LT/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/lv/admin_dependencies_chk.po b/l10n/lv/admin_dependencies_chk.po deleted file mode 100644 index 0ad70f3449105be5ef98c4cf0fdac9837ea7c839..0000000000000000000000000000000000000000 --- a/l10n/lv/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/lv/admin_migrate.po b/l10n/lv/admin_migrate.po deleted file mode 100644 index 2be34daece467d5a9f9f278443462303652ccb50..0000000000000000000000000000000000000000 --- a/l10n/lv/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/lv/bookmarks.po b/l10n/lv/bookmarks.po deleted file mode 100644 index 2114fcd31a9a7ee5fe776ce7aae5957e3d5d2bf5..0000000000000000000000000000000000000000 --- a/l10n/lv/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/lv/calendar.po b/l10n/lv/calendar.po deleted file mode 100644 index f3a17a29c46467c6c13a30c8faa427e0c6bc72be..0000000000000000000000000000000000000000 --- a/l10n/lv/calendar.po +++ /dev/null @@ -1,813 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/lv/contacts.po b/l10n/lv/contacts.po deleted file mode 100644 index 206e0cb05d45188516e5eccd552297e55dcefb4f..0000000000000000000000000000000000000000 --- a/l10n/lv/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/lv/core.po b/l10n/lv/core.po index a28f72fdd52a3346eced52d45ed1e31da1858ea6..673a73d1da684204f90a0dfbb56601dc8f23f8eb 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "IestatÄ«jumi" -#: js/js.js:645 -msgid "January" +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:645 -msgid "February" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:645 -msgid "March" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:645 -msgid "April" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:645 -msgid "May" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:645 -msgid "June" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:646 -msgid "July" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:646 -msgid "August" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:646 -msgid "September" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:646 -msgid "October" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:646 -msgid "November" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:646 -msgid "December" +#: js/js.js:699 +msgid "last year" msgstr "" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" +msgstr "Kļūme" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Parole" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "PÄrtraukt lÄ«dzdalÄ«Å¡anu" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "JÅ«s savÄ epastÄ saņemsiet interneta saiti, caur kuru varÄ“siet atjaunot paroli." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "ObligÄts" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "NeizdevÄs ielogoties." +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "LietotÄjvÄrds" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "PieprasÄ«t paroles maiņu" @@ -296,72 +329,187 @@ msgstr "MÄkonis netika atrasts" msgid "Edit categories" msgstr "" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "BrÄ«dinÄjums par droÅ¡Ä«bu" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datu mape" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "NokonfigurÄ“t datubÄzi" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "tiks izmantots" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "DatubÄzes lietotÄjs" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "DatubÄzes parole" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "DatubÄzes nosaukums" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "DatubÄzes mÄjvieta" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Pabeigt uzstÄdÄ«jumus" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Izlogoties" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "AizmirsÄt paroli?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "atcerÄ“ties" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Ielogoties" @@ -376,3 +524,17 @@ msgstr "iepriekÅ¡Ä“jÄ" #: templates/part.pagenavi.php:20 msgid "next" msgstr "nÄkamÄ" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/lv/files.po b/l10n/lv/files.po index ae81cbe59e03b9d4694a114409a560db8f8da14c..09760c280aa8858296b450da5f8b861568f9401e 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/files.po @@ -4,13 +4,14 @@ # # Translators: # , 2012. +# Imants Liepiņš , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,281 +21,248 @@ msgstr "" #: ajax/upload.php:20 msgid "There is no error, the file uploaded with success" -msgstr "" +msgstr "Viss kÄrtÄ«bÄ, augÅ¡upielÄde veiksmÄ«ga" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Neviens fails netika augÅ¡uplÄdÄ“ts" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" -msgstr "" +msgstr "TrÅ«kst pagaidu mapes" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Nav iespÄ“jams saglabÄt" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Faili" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "PÄrtraukt lÄ«dzdalÄ«Å¡anu" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "IzdzÄ“st" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "PÄrdÄ“vÄ“t" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "tÄds fails jau eksistÄ“" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "aizvietot" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "Ieteiktais nosaukums" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "atcelt" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "aizvietots" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "vienu soli atpakaļ" -#: js/filelist.js:241 -msgid "with" -msgstr "ar" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "izdzests" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "lai uzÄ£enerÄ“tu ZIP failu, kÄds brÄ«dis ir jÄpagaida" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nav iespÄ“jams augÅ¡uplÄdÄ“t jÅ«su failu, jo tÄds jau eksistÄ“ vai arÄ« failam nav izmÄ“ra (0 baiti)" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "AugÅ¡uplÄdÄ“Å¡anas laikÄ radÄs kļūda" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Gaida savu kÄrtu" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "AugÅ¡uplÄde ir atcelta" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" +msgstr "Notiek augÅ¡upielÄde. Pametot lapu tagad, tiks atcelta augÅ¡upielÄde." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Å is simbols '/', nav atļauts." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nosaukums" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "IzmÄ“rs" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "IzmainÄ«ts" -#: js/files.js:777 -msgid "folder" -msgstr "mape" - -#: js/files.js:779 -msgid "folders" -msgstr "mapes" - -#: js/files.js:787 -msgid "file" -msgstr "fails" - -#: js/files.js:789 -msgid "files" -msgstr "faili" - -#: js/files.js:833 -msgid "seconds ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 msgid "File handling" -msgstr "" +msgstr "Failu pÄrvaldÄ«ba" #: templates/admin.php:7 msgid "Maximum upload size" msgstr "MaksimÄlais failu augÅ¡uplÄdes apjoms" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "maksÄ«mÄlais iespÄ“jamais:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." -msgstr "" +msgstr "VajadzÄ«gs vairÄku failu un mapju lejuplÄdei" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "IespÄ“jot ZIP lejuplÄdi" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 ir neierobežots" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "SaglabÄt" #: templates/index.php:7 msgid "New" msgstr "Jauns" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Teksta fails" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Mape" -#: templates/index.php:11 -msgid "From url" -msgstr "No URL saites" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "AugÅ¡uplÄdet" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Atcelt augÅ¡uplÄdi" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Te vÄ“l nekas nav. RÄ«kojies, sÄc augÅ¡uplÄdÄ“t" -#: templates/index.php:50 -msgid "Share" -msgstr "LÄ«dzdalÄ«t" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "LejuplÄdÄ“t" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Fails ir par lielu lai to augÅ¡uplÄdetu" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "" +msgstr "JÅ«su augÅ¡uplÄdÄ“jamie faili pÄrsniedz servera pieļaujamo failu augÅ¡upielÄdes apjomu" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Faili Å¡obrÄ«d tiek caurskatÄ«ti, nedaudz jÄpagaida." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Å obrÄ«d tiek pÄrbaudÄ«ti" diff --git a/l10n/lv/files_pdfviewer.po b/l10n/lv/files_pdfviewer.po deleted file mode 100644 index 06441aecdabcd4d06882671b30d1c8e4b9e1d965..0000000000000000000000000000000000000000 --- a/l10n/lv/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/lv/files_texteditor.po b/l10n/lv/files_texteditor.po deleted file mode 100644 index e0c9f6755086a9e09cbe694c5751cddf61a4a09d..0000000000000000000000000000000000000000 --- a/l10n/lv/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/lv/gallery.po b/l10n/lv/gallery.po deleted file mode 100644 index 03b337f7da5e9e94c6a77f22bf825676c3c17969..0000000000000000000000000000000000000000 --- a/l10n/lv/gallery.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-27 02:02+0200\n" -"PO-Revision-Date: 2012-01-15 13:48+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/lv/impress.po b/l10n/lv/impress.po deleted file mode 100644 index 1685472a3e540177292e6888d477e6ade82d8533..0000000000000000000000000000000000000000 --- a/l10n/lv/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/lv/lib.po b/l10n/lv/lib.po index b7c5c4178093ec671287c64254c293391036f197..8ef8b7d506081c4a52daa882cc297744b719361f 100644 --- a/l10n/lv/lib.po +++ b/l10n/lv/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "PalÄ«dzÄ«ba" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "PersonÄ«gi" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "IestatÄ«jumi" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "LietotÄji" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "IelogoÅ¡anÄs kļūme" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Faili" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/lv/media.po b/l10n/lv/media.po deleted file mode 100644 index 8f717c8e6ef5be738245d4946f589827a7d83009..0000000000000000000000000000000000000000 --- a/l10n/lv/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-27 02:02+0200\n" -"PO-Revision-Date: 2011-08-13 02:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/lv/settings.po b/l10n/lv/settings.po index f5872cc17bb39fcc1adb4c1e31c58f57905cd3b0..bb71a36d28ae8ab64fbeb1d45d5b24a25e30bef5 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/settings.po @@ -4,13 +4,14 @@ # # Translators: # , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,70 +19,73 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Nebija iespÄ“jams lejuplÄdÄ“t sarakstu no aplikÄciju veikala" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "IelogoÅ¡anÄs kļūme" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "Grupa jau eksistÄ“" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "Nevar pievienot grupu" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Nevar ieslÄ“gt aplikÄciju." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Epasts tika saglabÄts" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Nepareizs epasts" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID nomainÄ«ts" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Nepareizs vaicÄjums" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "Nevar izdzÄ“st grupu" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "IelogoÅ¡anÄs kļūme" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "Nevar izdzÄ“st lietotÄju" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Valoda tika nomainÄ«ta" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "Nevar pievienot lietotÄju grupai %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "Nevar noņemt lietotÄju no grupas %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Atvienot" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Pievienot" @@ -89,104 +93,17 @@ msgstr "Pievienot" msgid "Saving..." msgstr "SaglabÄ..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__valodas_nosaukums__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "BrÄ«dinÄjums par droÅ¡Ä«bu" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "VairÄk" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Pievieno savu aplikÄciju" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "VairÄk aplikÄciju" #: templates/apps.php:27 msgid "Select an App" @@ -198,7 +115,7 @@ msgstr "Apskatie aplikÄciju lapu - apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "-licencÄ“ts no " #: templates/help.php:9 msgid "Documentation" @@ -212,22 +129,22 @@ msgstr "RÄ«koties ar apjomÄ«giem failiem" msgid "Ask a question" msgstr "Uzdod jautajumu" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "ProblÄ“mas ar datubÄzes savienojumu" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Nokļūt tur paÅ¡rocÄ«gi" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "AtbildÄ“t" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "JÅ«s lietojat %s no pieejamajiem %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -239,7 +156,7 @@ msgstr "LejuplÄdÄ“t" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "JÅ«ru parole tika nomainÄ«ta" #: templates/personal.php:20 msgid "Unable to change your password" @@ -285,6 +202,16 @@ msgstr "PalÄ«dzi tulkot" msgid "use this address to connect to your ownCloud in your file manager" msgstr "izmanto Å¡o adresi lai ielogotos ownCloud no sava failu pÄrlÅ«ka" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "IzstrÄdÄjusiownCloud kopiena,pirmkodukurÅ¡ ir licencÄ“ts zem AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "VÄrds" diff --git a/l10n/lv/tasks.po b/l10n/lv/tasks.po deleted file mode 100644 index 20b56238ac7fe6370ea87e875c84646bef752df9..0000000000000000000000000000000000000000 --- a/l10n/lv/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/lv/user_migrate.po b/l10n/lv/user_migrate.po deleted file mode 100644 index d54da6a081a64100a2dfcf045a0e0f0007a1597c..0000000000000000000000000000000000000000 --- a/l10n/lv/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/lv/user_openid.po b/l10n/lv/user_openid.po deleted file mode 100644 index 2dbaa488ad754e8b8579e91e0a5a563a9aa65ae6..0000000000000000000000000000000000000000 --- a/l10n/lv/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/lv/files_odfviewer.po b/l10n/lv/user_webdavauth.po similarity index 78% rename from l10n/lv/files_odfviewer.po rename to l10n/lv/user_webdavauth.po index ef357e02f1e59279b8798c969f9d671471acd765..afb2045c92c6acfa1414f9ad02ac565c835dd6c2 100644 --- a/l10n/lv/files_odfviewer.po +++ b/l10n/lv/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/mk/admin_dependencies_chk.po b/l10n/mk/admin_dependencies_chk.po deleted file mode 100644 index 18aee717b6da6d284297aeb4909dedf3e40849d5..0000000000000000000000000000000000000000 --- a/l10n/mk/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/mk/admin_migrate.po b/l10n/mk/admin_migrate.po deleted file mode 100644 index f692f219857fd595a1e34813c1bd2f04c0e6c446..0000000000000000000000000000000000000000 --- a/l10n/mk/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/mk/bookmarks.po b/l10n/mk/bookmarks.po deleted file mode 100644 index 547a2c5da28afc295dc5766992ae21f496a9e7fe..0000000000000000000000000000000000000000 --- a/l10n/mk/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/mk/calendar.po b/l10n/mk/calendar.po deleted file mode 100644 index 6dfc90153f108280acf127cd0b921c84f0a093db..0000000000000000000000000000000000000000 --- a/l10n/mk/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Miroslav Jovanovic , 2012. -# Miroslav Jovanovic , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Ðе Ñе најдени календари." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ðе Ñе најдени наÑтани." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Погрешен календар" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ðова временÑка зона:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ВременÑката зона е променета" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ðеправилно барање" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Календар" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ддд" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ддд Ðœ/д" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "дддд Ðœ/д" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "ММММ гггг" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "дддд, МММ д, гггг" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Роденден" - -#: lib/app.php:122 -msgid "Business" -msgstr "Деловно" - -#: lib/app.php:123 -msgid "Call" -msgstr "Повикај" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Клиенти" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "ДоÑтавувач" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Празници" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Идеи" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Патување" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Јубилеј" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "СоÑтанок" - -#: lib/app.php:131 -msgid "Other" -msgstr "ОÑтанато" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Лично" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Проекти" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Прашања" - -#: lib/app.php:135 -msgid "Work" -msgstr "Работа" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "неименувано" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ðов календар" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ðе Ñе повторува" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Дневно" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Седмично" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Секој работен ден" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Дво-Ñедмично" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "МеÑечно" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Годишно" - -#: lib/object.php:388 -msgid "never" -msgstr "никогаш" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "по наÑтан" - -#: lib/object.php:390 -msgid "by date" -msgstr "по датум" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "по ден во меÑецот" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "по работен ден" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Понеделник" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Вторник" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Среда" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Четврток" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Петок" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Сабота" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Ðедела" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "Ñедмични наÑтани од меÑец" - -#: lib/object.php:428 -msgid "first" -msgstr "прв" - -#: lib/object.php:429 -msgid "second" -msgstr "втор" - -#: lib/object.php:430 -msgid "third" -msgstr "трет" - -#: lib/object.php:431 -msgid "fourth" -msgstr "четврт" - -#: lib/object.php:432 -msgid "fifth" -msgstr "пет" - -#: lib/object.php:433 -msgid "last" -msgstr "поÑледен" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Јануари" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Февруари" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Март" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Ðприл" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Мај" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Јуни" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Јули" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "ÐвгуÑÑ‚" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Септември" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Октомври" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Ðоември" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Декември" - -#: lib/object.php:488 -msgid "by events date" -msgstr "по датумот на наÑтанот" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "по вчерашните" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "по број на Ñедмицата" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "по ден и меÑец" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Датум" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Кал." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Цел ден" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Полиња кои недоÑтаÑуваат" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "ÐаÑлов" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Од датум" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Од време" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "До датум" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "До време" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Овој наÑтан завршува пред за почне" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Имаше проблем Ñо базата" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Седмица" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "МеÑец" - -#: templates/calendar.php:41 -msgid "List" -msgstr "ЛиÑта" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "ДенеÑка" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Ваши календари" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Ð’Ñ€Ñка за CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Споделени календари" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Ðема Ñподелени календари" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Сподели календар" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Преземи" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Уреди" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Избриши" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "Споделен Ñо Ð²Ð°Ñ Ð¾Ð´" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ðов календар" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Уреди календар" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Име за приказ" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ðктивен" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Боја на календарот" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Сними" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Прати" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Откажи" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Уреди наÑтан" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Извези" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Инфо за наÑтан" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Повторување" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Ðларм" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "ПриÑутни" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Сподели" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "ÐаÑлов на наÑтанот" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Категорија" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Одвоете ги категориите Ñо запирка" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Уреди категории" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Целодневен наÑтан" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Од" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "До" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Ðапредни опции" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Локација" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Локација на наÑтанот" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "ОпиÑ" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "ÐžÐ¿Ð¸Ñ Ð½Ð° наÑтанот" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Повтори" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Ðапредно" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Избери работни денови" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Избери денови" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "и наÑтаните ден од година." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "и наÑтаните ден од меÑец." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Избери меÑеци" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Избери Ñедмици" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "и наÑтаните Ñедмица од година." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "интервал" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Крај" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "повторувања" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Ñоздади нов календар" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "ВнеÑи календар од датотека " - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Име на новиот календар" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Увези" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Затвори дијалог" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Создади нов наÑтан" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Погледај наÑтан" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Ðема избрано категории" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "од" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "на" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ВременÑка зона" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24ч" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12ч" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "КориÑници" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "избери кориÑници" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Изменливо" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Групи" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "избери групи" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "направи јавно" diff --git a/l10n/mk/contacts.po b/l10n/mk/contacts.po deleted file mode 100644 index 5ad0cf28317c6353b2758113dc21e1979e63c89a..0000000000000000000000000000000000000000 --- a/l10n/mk/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Miroslav Jovanovic , 2012. -# Miroslav Jovanovic , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Грешка (де)активирање на адреÑарот." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ид не е поÑтавено." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Ðеможе да Ñе ажурира адреÑар Ñо празно име." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Грешка при ажурирање на адреÑарот." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Ðема доÑтавено ИД" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Грешка во поÑтавување Ñума за проверка." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Ðема избрано категории за бришење." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Ðе Ñе најдени адреÑари." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Ðе Ñе најдени контакти." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Имаше грешка при додавање на контактот." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "име за елементот не е поÑтавена." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Ðеможе да Ñе додаде празна вредноÑÑ‚." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Барем една од полињата за адреÑа треба да биде пополнето." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Се обидовте да внеÑете дупликат вредноÑÑ‚:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Информацијата за vCard не е точна. Ве молам превчитајте ја Ñтраницава." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ÐедоÑтаÑува ИД" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Грешка при парÑирање VCard за ИД: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "Ñумата за проверка не е поÑтавена." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Информацијата за vCard не е точна. Ве молам превчитајте ја Ñтраницава:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Ðешто Ñе раÑипа." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Ðе беше доÑтавено ИД за контакт." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Грешка во читање на контакт фотографија." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Грешка во Ñнимање на привремена датотека." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Фотографијата која Ñе вчитува е невалидна." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "ИД за контакт недоÑтаÑува." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Ðе беше поднеÑена патека за фотографија." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Ðе поÑтои датотеката:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Грешка во вчитување на Ñлика." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Грешка при преземањето на контакт објектот," - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Грешка при утврдувањето на карактериÑтиките на фотографијата." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Грешка при Ñнимање на контактите." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Грешка при Ñкалирање на фотографијата" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Грешка при Ñечење на фотографијата" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Грешка при креирањето на привремената фотографија" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Грешка при наоѓањето на фотографијата:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Грешка во Ñнимање на контактите на диÑк." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Датотеката беше уÑпешно подигната." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Големината на датотеката ја надминува upload_max_filesize директивата во php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Големината на датотеката ја надминува MAX_FILE_SIZE директивата која беше Ñпецифицирана во HTML формата" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Датотеката беше Ñамо делумно подигната." - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Ðе беше подигната датотека." - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "ÐедоÑтаÑува привремена папка" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Ðе можеше да Ñе Ñними привремената фотографија:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Ðе можеше да Ñе вчита привремената фотографија:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Ðиту еден фајл не Ñе вчита. Ðепозната грешка" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Контакти" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Жалам, оваа функционалноÑÑ‚ уште не е имплементирана" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Ðе е имплементирано" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Ðе можев да добијам иÑправна адреÑа." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Грешка" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "СвојÑтвото не Ñмее да биде празно." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Ðе може да Ñе Ñеријализираат елементите." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' повикан без тип на аргументот. Пријавете грешка/проблем на bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Уреди го името" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Ðиту еден фајл не е избран за вчитување." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Датотеката која Ñе обидувате да ја префрлите ја надминува макÑималната големина дефинирана за Ð¿Ñ€ÐµÐ½Ð¾Ñ Ð½Ð° овој Ñервер." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Одбери тип" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Резултат: " - -#: js/loader.js:49 -msgid " imported, " -msgstr "увезено," - -#: js/loader.js:49 -msgid " failed." -msgstr "неуÑпешно." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ова не е во Вашиот адреÑар." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Контактот неможе да биде најден." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Работа" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Дома" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Мобилен" - -#: lib/app.php:203 -msgid "Text" -msgstr "ТекÑÑ‚" - -#: lib/app.php:204 -msgid "Voice" -msgstr "ГлаÑ" - -#: lib/app.php:205 -msgid "Message" -msgstr "Порака" - -#: lib/app.php:206 -msgid "Fax" -msgstr "ФакÑ" - -#: lib/app.php:207 -msgid "Video" -msgstr "Видео" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Пејџер" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Интернет" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Роденден" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Роденден на {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Контакт" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Додади контакт" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "ВнеÑи" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "ÐдреÑари" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Затвои" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Довлечкај фотографија за да Ñе подигне" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Избриши моментална фотографија" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Уреди моментална фотографија" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Подигни нова фотографија" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Изберете фотографија од ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Прилагоден формат, кратко име, цело име, обратно или обратно Ñо запирка" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Уреди детали за име" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Организација" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Избриши" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Прекар" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "ВнеÑи прекар" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Групи" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Одвоете ги групите Ñо запирка" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Уреди групи" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Претпочитано" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Ве молам внеÑете правилна адреÑа за е-пошта." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "ВнеÑете е-пошта" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Прати порака до адреÑа" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Избриши адреÑа за е-пошта" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "ВнеÑете телефонÑки број" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Избриши телефонÑки број" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Погледајте на мапа" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Уреди детали за адреÑа" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "ВнеÑете забелешки тука." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Додади поле" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Телефон" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Е-пошта" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "ÐдреÑа" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Забелешка" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Преземи го контактот" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Избриши го контактот" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Привремената Ñлика е отÑтранета од кешот." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Уреди адреÑа" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Тип" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "ПоштенÑки фах" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Дополнително" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Град" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Регион" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "ПоштенÑки код" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Држава" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "ÐдреÑар" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "ПрефикÑи за титула" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Г-ца" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Г-ѓа" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Г-дин" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Сер" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Г-ѓа" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Др" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Лично име" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Дополнителни имиња" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Презиме" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "СуфикÑи за титула" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "Д.Ðœ." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Д-Ñ€" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Помлад." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "ПоÑтар." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "ВнеÑи датотека Ñо контакти" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Ве молам изберете адреÑар" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "креирај нов адреÑар" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Име на новиот адреÑар" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "ВнеÑување контакти" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Ðемате контакти во Вашиот адреÑар." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Додади контакт" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "ÐдреÑа за Ñинхронизација Ñо CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "повеќе информации" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Примарна адреÑа" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Преземи" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Уреди" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Ðов адреÑар" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Сними" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Откажи" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index 367a70fb295a6af038fe614b74ed1f183868835a..d2948b19cf0c2a7183d2383efa3354d9dc27f13c 100644 --- a/l10n/mk/core.po +++ b/l10n/mk/core.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,208 +20,241 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Име за апликацијата не е доÑтавено." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ðема категорија да Ñе додаде?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Оваа категорија веќе поÑтои:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Ðе е одбрана категорија за бришење." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "ПоÑтавки" -#: js/js.js:645 -msgid "January" -msgstr "Јануари" +#: js/js.js:688 +msgid "seconds ago" +msgstr "" -#: js/js.js:645 -msgid "February" -msgstr "Февруари" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "" -#: js/js.js:645 -msgid "March" -msgstr "Март" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Ðприл" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Мај" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Јуни" +#: js/js.js:693 +msgid "today" +msgstr "" -#: js/js.js:646 -msgid "July" -msgstr "Јули" +#: js/js.js:694 +msgid "yesterday" +msgstr "" -#: js/js.js:646 -msgid "August" -msgstr "ÐвгуÑÑ‚" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "Септември" +#: js/js.js:696 +msgid "last month" +msgstr "" -#: js/js.js:646 -msgid "October" -msgstr "Октомври" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Ðоември" +#: js/js.js:698 +msgid "months ago" +msgstr "" -#: js/js.js:646 -msgid "December" -msgstr "Декември" +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" +msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Откажи" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ðе" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Во ред" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Ðе е одбрана категорија за бришење." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Грешка" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Лозинка" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "креирај" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "реÑетирање на лозинка за ownCloud" @@ -234,19 +267,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Ќе добиете врÑка по е-пошта за да може да ја реÑетирате Вашата лозинка." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Побарано" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Ðајавата не уÑпеа!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "КориÑничко име" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Побарајте реÑетирање" @@ -298,72 +331,187 @@ msgstr "Облакот не е најден" msgid "Edit categories" msgstr "Уреди категории" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Додади" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Ðаправете админиÑтраторÑка Ñметка" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Ðапредно" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Фолдер Ñо податоци" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Конфигурирај ја базата" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "ќе биде кориÑтено" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "КориÑник на база" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Лозинка на база" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Име на база" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Сервер Ñо база" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Заврши го подеÑувањето" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Ðедела" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Понеделник" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Вторник" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Среда" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Четврток" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Петок" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Сабота" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Јануари" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Февруари" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Март" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Ðприл" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Мај" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Јуни" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Јули" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Септември" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Октомври" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Ðоември" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Декември" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "веб ÑервиÑи под Ваша контрола" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Одјава" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Ја заборавивте лозинката?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "запамти" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Ðајава" @@ -378,3 +526,17 @@ msgstr "претходно" #: templates/part.pagenavi.php:20 msgid "next" msgstr "Ñледно" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index c04e3640bb65d46b544fd34846808f4167707b38..6ff02992220575b76e37cd1debd8fca3184d46ff 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,194 +25,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Ðема грешка, датотеката беше подигната уÑпешно" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Подигнатата датотека ја надминува upload_max_filesize директивата во php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Подигнатата датотеката ја надминува MAX_FILE_SIZE директивата која беше поÑтавена во HTML формата" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Датотеката беше Ñамо делумно подигната." -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ðе беше подигната датотека" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Ðе поÑтои привремена папка" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "ÐеуÑпеав да запишам на диÑк" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Датотеки" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Избриши" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Се генерира ZIP фајлот, ќе треба извеÑно време." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðе може да Ñе преземе вашата датотека бидејќи фолдерот во кој Ñе наоѓа фајлот има големина од 0 бајти" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Грешка при преземање" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Затвои" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Чека" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Преземањето е прекинато." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "неиÑправно име, '/' не е дозволено." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Име" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Големина" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Променето" -#: js/files.js:777 -msgid "folder" -msgstr "фолдер" - -#: js/files.js:779 -msgid "folders" -msgstr "фолдери" - -#: js/files.js:787 -msgid "file" -msgstr "датотека" - -#: js/files.js:789 -msgid "files" -msgstr "датотеки" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:838 -msgid "today" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:839 -msgid "yesterday" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -223,80 +194,76 @@ msgstr "Ракување Ñо датотеки" msgid "Maximum upload size" msgstr "МакÑимална големина за подигање" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "макÑ. можно:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Потребно за Ñимнување повеќе-датотеки и папки." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Овозможи ZIP Ñимнување " -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 е неограничено" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "МакÑимална големина за Ð²Ð½ÐµÑ Ð½Ð° ZIP датотеки" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Сними" #: templates/index.php:7 msgid "New" msgstr "Ðово" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ТекÑтуална датотека" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Папка" -#: templates/index.php:11 -msgid "From url" -msgstr "Од адреÑа" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Подигни" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Откажи прикачување" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Тука нема ништо. Снимете нешто!" -#: templates/index.php:50 -msgid "Share" -msgstr "Сподели" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Преземи" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Датотеката е премногу голема" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Датотеките кои Ñе обидувате да ги подигнете ја надминуваат макÑималната големина за подигнување датотеки на овој Ñервер." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Се Ñкенираат датотеки, ве молам почекајте." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Моментално Ñкенирам" diff --git a/l10n/mk/files_pdfviewer.po b/l10n/mk/files_pdfviewer.po deleted file mode 100644 index a6cb756a0a237dc63ab3e3723d4d357a57a78446..0000000000000000000000000000000000000000 --- a/l10n/mk/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/mk/files_texteditor.po b/l10n/mk/files_texteditor.po deleted file mode 100644 index 0164432b9091c5a1eab1559f22b57d21bc8cc763..0000000000000000000000000000000000000000 --- a/l10n/mk/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/mk/gallery.po b/l10n/mk/gallery.po deleted file mode 100644 index ec987f8a1d2822351f7516c4a3c196fff697649b..0000000000000000000000000000000000000000 --- a/l10n/mk/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Miroslav Jovanovic , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Macedonian (http://www.transifex.net/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Слики" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Параметри" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "РеÑкенирај" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Стоп" - -#: templates/index.php:18 -msgid "Share" -msgstr "Сподели" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Ðазад" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Тргни потврда" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Дали Ñакате да го отÑтраните албумот" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Измени име на албумот" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Ðово има на албумот" diff --git a/l10n/mk/impress.po b/l10n/mk/impress.po deleted file mode 100644 index 5948fc5ec3c89b7816ca557494708ad48c433256..0000000000000000000000000000000000000000 --- a/l10n/mk/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/mk/lib.po b/l10n/mk/lib.po index 626e9dc54f20dd675085df392cd5442091ddcc20..4be426c9be1e209f36000905b0cc2acf948a30b5 100644 --- a/l10n/mk/lib.po +++ b/l10n/mk/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "Помош" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Лично" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Параметри" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "КориÑници" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "" @@ -69,57 +69,84 @@ msgstr "" msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Датотеки" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/mk/media.po b/l10n/mk/media.po deleted file mode 100644 index 70a02ba7a64adabb28c7571747b400daf21ddb9d..0000000000000000000000000000000000000000 --- a/l10n/mk/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Georgi Stanojevski , 2012. -# , 2012. -# Miroslav Jovanovic , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Macedonian (http://www.transifex.net/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Музика" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Пушти" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Пауза" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Претходно" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Следно" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Занеми" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Пушти глаÑ" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "РеÑкенирај ја колекцијата" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Изведувач" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ðлбум" - -#: templates/music.php:39 -msgid "Title" -msgstr "ÐаÑлов" diff --git a/l10n/mk/settings.po b/l10n/mk/settings.po index 5711a85b378b6c6a1f57d6306a3f9d9c867cc4f3..b295cb7b667585c9f85246495c15152ac57ec022 100644 --- a/l10n/mk/settings.po +++ b/l10n/mk/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +19,73 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "ЕлектронÑката пошта е Ñнимена" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "ÐеиÑправна електронÑка пошта" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID Ñменето" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "неправилно барање" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Јазикот е Ñменет" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Оневозможи" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Овозможи" @@ -90,97 +93,10 @@ msgstr "Овозможи" msgid "Saving..." msgstr "Снимам..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "ЗапиÑник" - -#: templates/admin.php:116 -msgid "More" -msgstr "Повеќе" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Додадете ја Вашата апликација" @@ -213,21 +129,21 @@ msgstr "Управување Ñо големи датотеки" msgid "Ask a question" msgstr "ПоÑтави прашање" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Проблем при поврзување Ñо базата за помош" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Оди таму рачно." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Одговор" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -286,6 +202,16 @@ msgstr "Помогни во преводот" msgid "use this address to connect to your ownCloud in your file manager" msgstr "кориÑтете ја оваа адреÑа во менаџерот за датотеки да Ñе поврзете Ñо Вашиот ownCloud" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Име" diff --git a/l10n/mk/tasks.po b/l10n/mk/tasks.po deleted file mode 100644 index f06174892d7a010745cbf0d0f9577c111b72aeda..0000000000000000000000000000000000000000 --- a/l10n/mk/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/mk/user_migrate.po b/l10n/mk/user_migrate.po deleted file mode 100644 index 06c88c2599fc7a4592de51830c3888fc7444f2e1..0000000000000000000000000000000000000000 --- a/l10n/mk/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/mk/user_openid.po b/l10n/mk/user_openid.po deleted file mode 100644 index 3636c401f61c144b583e9edd4a7fb12a0ec4de87..0000000000000000000000000000000000000000 --- a/l10n/mk/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/mk/files_odfviewer.po b/l10n/mk/user_webdavauth.po similarity index 79% rename from l10n/mk/files_odfviewer.po rename to l10n/mk/user_webdavauth.po index 77205c755f2df1c5cb3d50c60f25a9e430d3c391..7392ade6853070e3fb3223632bc48befa783649a 100644 --- a/l10n/mk/files_odfviewer.po +++ b/l10n/mk/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mk\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/ms_MY/admin_dependencies_chk.po b/l10n/ms_MY/admin_dependencies_chk.po deleted file mode 100644 index 00564b0cf2ac383bc6f91d8d53ef838b7b03d4de..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/ms_MY/admin_migrate.po b/l10n/ms_MY/admin_migrate.po deleted file mode 100644 index 30cd1e1be644a91be4b78d55330bb32b3bac4656..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/ms_MY/bookmarks.po b/l10n/ms_MY/bookmarks.po deleted file mode 100644 index 06c58f9a8687ddf23b4ce625401c889e3e8260e0..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/ms_MY/calendar.po b/l10n/ms_MY/calendar.po deleted file mode 100644 index b7b41176326ba28d681dda4b58a7793af96ca164..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/calendar.po +++ /dev/null @@ -1,818 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Ahmed Noor Kader Mustajir Md Eusoff , 2012. -# , 2011, 2012. -# Hadri Hilmi , 2012. -# Hafiz Ismail , 2012. -# Zulhilmi Rosnin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Tiada kalendar dijumpai." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Tiada agenda dijumpai." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Silap kalendar" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Timezone Baru" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zon waktu diubah" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Permintaan tidak sah" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendar" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "dd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Hari lahir" - -#: lib/app.php:122 -msgid "Business" -msgstr "Perniagaan" - -#: lib/app.php:123 -msgid "Call" -msgstr "Panggilan" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klien" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Penghantar" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Cuti" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idea" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Perjalanan" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubli" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Perjumpaan" - -#: lib/app.php:131 -msgid "Other" -msgstr "Lain" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Peribadi" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projek" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Soalan" - -#: lib/app.php:135 -msgid "Work" -msgstr "Kerja" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "tiada nama" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Kalendar baru" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Tidak berulang" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Harian" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Mingguan" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Setiap hari minggu" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Dua kali seminggu" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Bulanan" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Tahunan" - -#: lib/object.php:388 -msgid "never" -msgstr "jangan" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "dari kekerapan" - -#: lib/object.php:390 -msgid "by date" -msgstr "dari tarikh" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "dari haribulan" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "dari hari minggu" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Isnin" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Selasa" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Rabu" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Khamis" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Jumaat" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sabtu" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Ahad" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "event minggu dari bulan" - -#: lib/object.php:428 -msgid "first" -msgstr "pertama" - -#: lib/object.php:429 -msgid "second" -msgstr "kedua" - -#: lib/object.php:430 -msgid "third" -msgstr "ketiga" - -#: lib/object.php:431 -msgid "fourth" -msgstr "keempat" - -#: lib/object.php:432 -msgid "fifth" -msgstr "kelima" - -#: lib/object.php:433 -msgid "last" -msgstr "akhir" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januari" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februari" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Mac" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mei" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Jun" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Julai" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Ogos" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Disember" - -#: lib/object.php:488 -msgid "by events date" -msgstr "dari tarikh event" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "dari tahun" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "dari nombor minggu" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "dari hari dan bulan" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Tarikh" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kalendar" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Sepanjang hari" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Ruangan tertinggal" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Tajuk" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Dari tarikh" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Masa Dari" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Sehingga kini" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Semasa" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Peristiwa berakhir sebelum bermula" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Terdapat kegagalan pada pengkalan data" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Minggu" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Bulan" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Senarai" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hari ini" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Kalendar anda" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Pautan CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Kalendar Kongsian" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Tiada kalendar kongsian" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Kongsi Kalendar" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Muat turun" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Edit" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Hapus" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "dikongsi dengan kamu oleh" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Kalendar baru" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Edit kalendar" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Paparan nama" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktif" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Warna kalendar" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Simpan" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Hantar" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Batal" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Edit agenda" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Export" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Maklumat agenda" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Pengulangan" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Penggera" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Jemputan" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Berkongsi" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Tajuk agenda" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "kategori" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Asingkan kategori dengan koma" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Sunting Kategori" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Agenda di sepanjang hari " - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Dari" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "ke" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Pilihan maju" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Lokasi" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Lokasi agenda" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Huraian" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Huraian agenda" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ulang" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Maju" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Pilih hari minggu" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Pilih hari" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "dan hari event dalam tahun." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "dan hari event dalam bulan." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Pilih bulan" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Pilih minggu" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "dan event mingguan dalam setahun." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Tempoh" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Tamat" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "Peristiwa" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Cipta kalendar baru" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Import fail kalendar" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nama kalendar baru" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Import" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Tutup dialog" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Buat agenda baru" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Papar peristiwa" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Tiada kategori dipilih" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "dari" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "di" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zon waktu" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Pengguna" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "Pilih pengguna" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Boleh disunting" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Kumpulan-kumpulan" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "pilih kumpulan-kumpulan" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "jadikan tontonan awam" diff --git a/l10n/ms_MY/contacts.po b/l10n/ms_MY/contacts.po deleted file mode 100644 index f3b425c71f262671b025ff920ef9849a727cd7a2..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/contacts.po +++ /dev/null @@ -1,957 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Ahmed Noor Kader Mustajir Md Eusoff , 2012. -# , 2012. -# Hadri Hilmi , 2012. -# Hafiz Ismail , 2012. -# Zulhilmi Rosnin , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Ralat nyahaktif buku alamat." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID tidak ditetapkan." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Tidak boleh kemaskini buku alamat dengan nama yang kosong." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Masalah mengemaskini buku alamat." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "tiada ID diberi" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Ralat menetapkan checksum." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Tiada kategori dipilih untuk dibuang." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Tiada buku alamat dijumpai." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Tiada kenalan dijumpai." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Terdapat masalah menambah maklumat." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "nama elemen tidak ditetapkan." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Tidak boleh menambah ruang kosong." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Sekurangnya satu ruangan alamat perlu diisikan." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Cuba untuk letak nilai duplikasi:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Maklumat vCard tidak tepat. Sila reload semula halaman ini." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID Hilang" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Ralat VCard untuk ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "checksum tidak ditetapkan." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Maklumat tentang vCard tidak betul." - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Sesuatu tidak betul." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Tiada ID kenalan yang diberi." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Ralat pada foto kenalan." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Ralat menyimpan fail sementara" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Foto muatan tidak sah." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "ID Kenalan telah hilang." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Tiada direktori gambar yang diberi." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Fail tidak wujud:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Ralat pada muatan imej." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Ralat mendapatkan objek pada kenalan." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Ralat mendapatkan maklumat gambar." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Ralat menyimpan kenalan." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Ralat mengubah saiz imej" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Ralat memotong imej" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Ralat mencipta imej sementara" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Ralat mencari imej: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Ralat memuatnaik senarai kenalan." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Tiada ralat berlaku, fail berjaya dimuatnaik" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Saiz fail yang dimuatnaik melebihi upload_max_filesize yang ditetapkan dalam php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Saiz fail yang dimuatnaik melebihi MAX_FILE_SIZE yang ditetapkan dalam borang HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Fail yang dimuatnaik tidak lengkap" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Tiada fail dimuatnaik" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Direktori sementara hilang" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Tidak boleh menyimpan imej sementara: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Tidak boleh membuka imej sementara: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Tiada fail dimuatnaik. Ralat tidak diketahui." - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Hubungan-hubungan" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Maaf, fungsi ini masih belum boleh diguna lagi" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Tidak digunakan" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Tidak boleh mendapat alamat yang sah." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Ralat" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Nilai ini tidak boleh kosong." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Tidak boleh menggabungkan elemen." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' dipanggil tanpa argumen taip. Sila maklumkan di bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Ubah nama" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Tiada fail dipilih untuk muatnaik." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Fail yang ingin dimuatnaik melebihi saiz yang dibenarkan." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "PIlih jenis" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Hasil: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " import, " - -#: js/loader.js:49 -msgid " failed." -msgstr " gagal." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Buku alamat tidak ditemui:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ini bukan buku alamat anda." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Hubungan tidak dapat ditemui" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Kerja" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Rumah" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Lain" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mudah alih" - -#: lib/app.php:203 -msgid "Text" -msgstr "Teks" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Suara" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mesej" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Alat Kelui" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Hari lahir" - -#: lib/app.php:253 -msgid "Business" -msgstr "Perniagaan" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "klien" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Hari kelepasan" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Idea" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Perjalanan" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubli" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Mesyuarat" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Peribadi" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projek" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Hari Lahir {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Hubungan" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Tambah kenalan" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Import" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Tetapan" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Senarai Buku Alamat" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Tutup" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Buku alamat seterusnya" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Buku alamat sebelumnya" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Letak foto disini untuk muatnaik" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Padam foto semasa" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Ubah foto semasa" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Muatnaik foto baru" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Pilih foto dari ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format bebas, Nama pendek, Nama penuh, Unduran dengan koma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Ubah butiran nama" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisasi" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Padam" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Nama Samaran" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Masukkan nama samaran" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Kumpulan" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Asingkan kumpulan dengan koma" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Ubah kumpulan" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Pilihan" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Berikan alamat emel yang sah." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Masukkan alamat emel" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Hantar ke alamat" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Padam alamat emel" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Masukkan nombor telefon" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Padam nombor telefon" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Lihat pada peta" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Ubah butiran alamat" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Letak nota disini." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Letak ruangan" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Emel" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Alamat" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Muat turun hubungan" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Padam hubungan" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Imej sementara telah dibuang dari cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Ubah alamat" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Jenis" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Peti surat" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Sambungan" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "bandar" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Wilayah" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Poskod" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Negara" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Buku alamat" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Awalan nama" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Cik" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Cik" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Encik" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Tuan" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Puan" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Nama diberi" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Nama tambahan" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Nama keluarga" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Awalan nama" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Import fail kenalan" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Sila pilih buku alamat" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Cipta buku alamat baru" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nama buku alamat" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Import senarai kenalan" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Anda tidak mempunyai sebarang kenalan didalam buku alamat." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Letak kenalan" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Pilih Buku Alamat" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Masukkan nama" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Masukkan keterangan" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "alamat selarian CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "maklumat lanjut" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Alamat utama" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Muat naik" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Sunting" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Buku Alamat Baru" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nama" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Keterangan" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Simpan" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Batal" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Lagi..." diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index 006132e2091931b016e7f97937903ab555d77452..d333a3793792723c62580e2ed005b7f0aecfaaa9 100644 --- a/l10n/ms_MY/core.po +++ b/l10n/ms_MY/core.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,208 +20,241 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "nama applikasi tidak disediakan" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Tiada kategori untuk di tambah?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Kategori ini telah wujud" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "tiada kategori dipilih untuk penghapusan" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Tetapan" -#: js/js.js:645 -msgid "January" -msgstr "Januari" +#: js/js.js:688 +msgid "seconds ago" +msgstr "" -#: js/js.js:645 -msgid "February" -msgstr "Februari" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "" -#: js/js.js:645 -msgid "March" -msgstr "Mac" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "April" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mei" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Jun" +#: js/js.js:693 +msgid "today" +msgstr "" -#: js/js.js:646 -msgid "July" -msgstr "Julai" +#: js/js.js:694 +msgid "yesterday" +msgstr "" -#: js/js.js:646 -msgid "August" -msgstr "Ogos" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:696 +msgid "last month" +msgstr "" -#: js/js.js:646 -msgid "October" -msgstr "Oktober" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:698 +msgid "months ago" +msgstr "" -#: js/js.js:646 -msgid "December" -msgstr "Disember" +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" +msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Batal" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Tidak" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ya" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "tiada kategori dipilih untuk penghapusan" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Ralat" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Kata laluan" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Set semula kata lalaun ownCloud" @@ -234,19 +267,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Anda akan menerima pautan untuk menetapkan semula kata laluan anda melalui emel" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Meminta" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Log masuk gagal!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nama pengguna" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Permintaan set semula" @@ -298,72 +331,187 @@ msgstr "Awan tidak dijumpai" msgid "Edit categories" msgstr "Edit kategori" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Tambah" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Amaran keselamatan" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "buat akaun admin" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Maju" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Fail data" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfigurasi pangkalan data" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "akan digunakan" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Nama pengguna pangkalan data" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Kata laluan pangkalan data" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nama pangkalan data" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Hos pangkalan data" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Setup selesai" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Ahad" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Isnin" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Selasa" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Rabu" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Khamis" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Jumaat" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Sabtu" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januari" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februari" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Mac" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mei" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Jun" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Julai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Ogos" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Disember" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "Perkhidmatan web di bawah kawalan anda" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Log keluar" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Hilang kata laluan?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "ingat" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Log masuk" @@ -378,3 +526,17 @@ msgstr "sebelum" #: templates/part.pagenavi.php:20 msgid "next" msgstr "seterus" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index 49c390d75c49e5982f91fa94312f89956c6729c8..02844fd34d338a1c560727e120dfe2f2f9f50203 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/files.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,194 +26,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Tiada ralat, fail berjaya dimuat naik." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Fail yang dimuat naik melebihi penyata upload_max_filesize dalam php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Fail yang dimuat naik melebihi MAX_FILE_SIZE yang dinyatakan dalam form HTML " -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Sebahagian daripada fail telah dimuat naik. " -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Tiada fail yang dimuat naik" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Folder sementara hilang" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Gagal untuk disimpan" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "fail" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Padam" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "Sudah wujud" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "ganti" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "Batal" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "diganti" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" -msgstr "dengan" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "dihapus" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "sedang menghasilkan fail ZIP, mungkin mengambil sedikit masa." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Tidak boleh memuatnaik fail anda kerana mungkin ianya direktori atau saiz fail 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Muat naik ralat" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Tutup" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Dalam proses" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Muatnaik dibatalkan." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "penggunaa nama tidak sah, '/' tidak dibenarkan." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nama " -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Saiz" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Dimodifikasi" -#: js/files.js:777 -msgid "folder" -msgstr "direktori" - -#: js/files.js:779 -msgid "folders" -msgstr "direktori" - -#: js/files.js:787 -msgid "file" -msgstr "fail" - -#: js/files.js:789 -msgid "files" -msgstr "fail" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:841 -msgid "last month" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:843 -msgid "months ago" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -224,80 +195,76 @@ msgstr "Pengendalian fail" msgid "Maximum upload size" msgstr "Saiz maksimum muat naik" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "maksimum:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Diperlukan untuk muatturun fail pelbagai " -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Aktifkan muatturun ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 adalah tanpa had" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Saiz maksimum input untuk fail ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Simpan" #: templates/index.php:7 msgid "New" msgstr "Baru" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Fail teks" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Folder" -#: templates/index.php:11 -msgid "From url" -msgstr "Dari url" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Muat naik" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Batal muat naik" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Tiada apa-apa di sini. Muat naik sesuatu!" -#: templates/index.php:50 -msgid "Share" -msgstr "Kongsi" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Muat turun" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Muat naik terlalu besar" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Fail sedang diimbas, harap bersabar." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Imbasan semasa" diff --git a/l10n/ms_MY/files_pdfviewer.po b/l10n/ms_MY/files_pdfviewer.po deleted file mode 100644 index b0e03a94e5160a00637e1f5493c62d6e04aa6931..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ms_MY/files_texteditor.po b/l10n/ms_MY/files_texteditor.po deleted file mode 100644 index f2549258136d19ce8c4c9996d5d65594ee7153fc..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ms_MY/gallery.po b/l10n/ms_MY/gallery.po deleted file mode 100644 index 7dbe8487c18c1e990d7eec6d30b76e47f2ec89d9..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/gallery.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Hafiz Ismail , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Imbas semula" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Kembali" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/ms_MY/impress.po b/l10n/ms_MY/impress.po deleted file mode 100644 index a7a5b4117aed17eac3819bc16323c3298188d9c9..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/ms_MY/lib.po b/l10n/ms_MY/lib.po index 35fe79aada3f20c4e6fe8878297162a09ac74945..57990c29b6bc0bacb38c7b7d34014f9eb391942c 100644 --- a/l10n/ms_MY/lib.po +++ b/l10n/ms_MY/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Peribadi" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Tetapan" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "Pengguna" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "Ralat pengesahan" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Fail-fail" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Teks" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/ms_MY/media.po b/l10n/ms_MY/media.po deleted file mode 100644 index 50375f61fe877fbae8212d2eb1c4cf5486181f6f..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Muzik" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Main" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Jeda" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Sebelum" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Seterus" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Bisu" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Nyahbisu" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Imbas semula koleksi" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artis" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Judul" diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po index 05cfde61facdb2671901a2ff4932c6394f313c88..1de42e3e9c3ddc135d7fcba2d77cec1c47d5db48 100644 --- a/l10n/ms_MY/settings.po +++ b/l10n/ms_MY/settings.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,70 +21,73 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Ralat pengesahan" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Emel disimpan" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Emel tidak sah" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID diubah" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Permintaan tidak sah" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Ralat pengesahan" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Bahasa diubah" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Nyahaktif" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Aktif" @@ -92,97 +95,10 @@ msgstr "Aktif" msgid "Saving..." msgstr "Simpan..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "_nama_bahasa_" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Amaran keselamatan" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Lanjutan" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Tambah apps anda" @@ -215,21 +131,21 @@ msgstr "Mengurus Fail Besar" msgid "Ask a question" msgstr "Tanya soalan" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Masalah menghubung untuk membantu pengkalan data" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Pergi ke sana secara manual" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Jawapan" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -288,6 +204,16 @@ msgstr "Bantu terjemah" msgid "use this address to connect to your ownCloud in your file manager" msgstr "guna alamat ini untuk menyambung owncloud anda dalam pengurus fail anda" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nama" diff --git a/l10n/ms_MY/tasks.po b/l10n/ms_MY/tasks.po deleted file mode 100644 index 6a67235eeee1ab9db6ae37bd4d8de5e0d7339587..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/ms_MY/user_migrate.po b/l10n/ms_MY/user_migrate.po deleted file mode 100644 index f4e730b7c83544800b23b6bd0e3986a0452c678c..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/ms_MY/user_openid.po b/l10n/ms_MY/user_openid.po deleted file mode 100644 index 867a3bb737071277578681631a7434d25bab9fc8..0000000000000000000000000000000000000000 --- a/l10n/ms_MY/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/ms_MY/files_odfviewer.po b/l10n/ms_MY/user_webdavauth.po similarity index 74% rename from l10n/ms_MY/files_odfviewer.po rename to l10n/ms_MY/user_webdavauth.po index 0aa22023e5cfa44bec8ea7360e5a9bdf14a665fd..b0d74e1bab31a87a1477117d354a5d7a0ab1c501 100644 --- a/l10n/ms_MY/files_odfviewer.po +++ b/l10n/ms_MY/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ms_MY\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/nb_NO/admin_dependencies_chk.po b/l10n/nb_NO/admin_dependencies_chk.po deleted file mode 100644 index 94de202861f18a406e0d661df8706cb6c19fcf3a..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 22:55+0000\n" -"Last-Translator: runesudden \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Modulen php-jason blir benyttet til inter kommunikasjon" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Modulen php-curl blir brukt til Ã¥ hente sidetittelen nÃ¥r bokmerke blir lagt til" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Modulen php-gd blir benyttet til Ã¥ lage miniatyr av bildene dine" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Modulen php-ldap benyttes for Ã¥ koble til din ldapserver" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Modulen php-zup benyttes til Ã¥ laste ned flere filer pÃ¥ en gang." - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Modulen php-mb_multibyte benyttes til Ã¥ hÃ¥ndtere korrekt tegnkoding." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Modulen php-ctype benyttes til Ã¥ validere data." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Modulen php-xml benyttes til Ã¥ dele filer med webdav" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Direktivet allow_url_fopen i php.ini bør settes til 1 for Ã¥ kunne hente kunnskapsbasen fra OCS-servere" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Modulen php-pdo benyttes til Ã¥ lagre ownCloud data i en database." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Avhengighetsstatus" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Benyttes av:" diff --git a/l10n/nb_NO/admin_migrate.po b/l10n/nb_NO/admin_migrate.po deleted file mode 100644 index 12728fa65ed17ace69f83a1b37a64dcacf98db0a..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Arvid Nornes , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:01+0200\n" -"PO-Revision-Date: 2012-08-23 17:37+0000\n" -"Last-Translator: Arvid Nornes \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Eksporter denne ownCloud forekomsten" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Dette vil opprette en komprimert fil som inneholder dataene fra denne ownCloud forekomsten.⎠Vennligst velg eksporttype:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Eksport" diff --git a/l10n/nb_NO/bookmarks.po b/l10n/nb_NO/bookmarks.po deleted file mode 100644 index 6ab8bac5805d14429f2ae0041d0059d5530313d4..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/bookmarks.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Arvid Nornes , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 22:58+0000\n" -"Last-Translator: runesudden \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Bokmerker" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "uten navn" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Dra denne over din nettlesers bokmerker og klikk den, hvis du ønsker Ã¥ hurtig legge til bokmerke for en nettside" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Les senere" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adresse" - -#: templates/list.php:14 -msgid "Title" -msgstr "Tittel" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Etikett" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Lagre bokmerke" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Du har ingen bokmerker" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Bokmerke
            " diff --git a/l10n/nb_NO/calendar.po b/l10n/nb_NO/calendar.po deleted file mode 100644 index b001de5a2621e7b6d254dc084ba2b8239681c599..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/calendar.po +++ /dev/null @@ -1,818 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -# Arvid Nornes , 2012. -# Christer Eriksson , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Ingen kalendere funnet" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ingen hendelser funnet" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Feil kalender" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ny tidssone:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Tidssone endret" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ugyldig forespørsel" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Bursdag" - -#: lib/app.php:122 -msgid "Business" -msgstr "Forretninger" - -#: lib/app.php:123 -msgid "Call" -msgstr "Ring" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Kunder" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Ferie" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideér" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Reise" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileum" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Møte" - -#: lib/app.php:131 -msgid "Other" -msgstr "Annet" - -#: lib/app.php:132 -msgid "Personal" -msgstr "ersonlig" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Prosjekter" - -#: lib/app.php:134 -msgid "Questions" -msgstr "SpørsmÃ¥l" - -#: lib/app.php:135 -msgid "Work" -msgstr "Arbeid" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "uten navn" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ny kalender" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Gjentas ikke" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Daglig" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Ukentlig" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Hver ukedag" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Annenhver uke" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "MÃ¥nedlig" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Ã…rlig" - -#: lib/object.php:388 -msgid "never" -msgstr "aldri" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "etter hyppighet" - -#: lib/object.php:390 -msgid "by date" -msgstr "etter dato" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "etter dag i mÃ¥ned" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "etter ukedag" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Mandag" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Tirsdag" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Onsdag" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Torsdag" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Fredag" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Lørdag" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Søndag" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "begivenhetens uke denne mÃ¥neden" - -#: lib/object.php:428 -msgid "first" -msgstr "første" - -#: lib/object.php:429 -msgid "second" -msgstr "andre" - -#: lib/object.php:430 -msgid "third" -msgstr "tredje" - -#: lib/object.php:431 -msgid "fourth" -msgstr "fjerde" - -#: lib/object.php:432 -msgid "fifth" -msgstr "femte" - -#: lib/object.php:433 -msgid "last" -msgstr "siste" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januar" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februar" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Mars" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mai" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Desember" - -#: lib/object.php:488 -msgid "by events date" -msgstr "etter hendelsenes dato" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "etter dag i Ã¥ret" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "etter ukenummer/-numre" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "etter dag og mÃ¥ned" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Dato" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Hele dagen " - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Manglende felt" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Tittel" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Fra dato" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Fra tidspunkt" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Til dato" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Til tidspunkt" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "En hendelse kan ikke slutte før den har begynt." - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Det oppstod en databasefeil." - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Uke" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "ned" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Liste" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "I dag" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Dine kalendere" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav-lenke" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Delte kalendere" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Ingen delte kalendere" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Del Kalender" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Last ned" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Endre" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Slett" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "delt med deg" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ny kalender" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Rediger kalender" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Visningsnavn" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiv" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalenderfarge" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Lagre" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Lagre" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Avbryt" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Rediger en hendelse" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Eksporter" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Hendelsesinformasjon" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Gjentas" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Deltakere" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Del" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Hendelsestittel" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategori" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separer kategorier med komma" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Rediger kategorier" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Hele dagen-hendelse" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Fra" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Til" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Avanserte innstillinger" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Sted" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Hendelsessted" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Beskrivelse" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Hendelesebeskrivelse" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Gjenta" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avansert" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Velg ukedager" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Velg dager" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "og hendelsenes dag i Ã¥ret." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "og hendelsenes dag i mÃ¥neden." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Velg mÃ¥neder" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Velg uker" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "og hendelsenes uke i Ã¥ret." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervall" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Slutt" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "forekomster" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Lag en ny kalender" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importer en kalenderfil" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Navn pÃ¥ ny kalender:" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importer" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Lukk dialog" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Opprett en ny hendelse" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Se pÃ¥ hendelse" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Ingen kategorier valgt" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Tidssone" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24 t" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12 t" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Brukere" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "valgte brukere" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Redigerbar" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupper" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "velg grupper" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "gjør offentlig" diff --git a/l10n/nb_NO/contacts.po b/l10n/nb_NO/contacts.po deleted file mode 100644 index 524dec3bd0d5aa7a79c753508fd273eedb93b1be..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/contacts.po +++ /dev/null @@ -1,956 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Christer Eriksson , 2012. -# Daniel , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Et problem oppsto med Ã¥ (de)aktivere adresseboken." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id er ikke satt." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Kan ikke oppdatere adressebøker uten navn." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Et problem oppsto med Ã¥ oppdatere adresseboken." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Ingen ID angitt" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Ingen kategorier valgt for sletting." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Ingen adressebok funnet." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Ingen kontakter funnet." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Et problem oppsto med Ã¥ legge til kontakten." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Kan ikke legge til tomt felt." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Minst en av adressefeltene mÃ¥ oppgis." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informasjonen om vCard-filen er ikke riktig. Last inn siden pÃ¥ nytt." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Manglende ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Noe gikk fryktelig galt." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Klarte ikke Ã¥ lese kontaktbilde." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Klarte ikke Ã¥ lagre midlertidig fil." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Bildet som lastes inn er ikke gyldig." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Kontakt-ID mangler." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Ingen filsti ble lagt inn." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Filen eksisterer ikke:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Klarte ikke Ã¥ laste bilde." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Klarte ikke Ã¥ lagre kontakt." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Klarte ikke Ã¥ endre størrelse pÃ¥ bildet" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Klarte ikke Ã¥ beskjære bildet" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Klarte ikke Ã¥ lage et midlertidig bilde" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Kunne ikke finne bilde:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Klarte ikke Ã¥ laste opp kontakter til lagringsplassen" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Pust ut, ingen feil. Filen ble lastet opp problemfritt" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Filen du prøvde Ã¥ laste opp var større enn grensen upload_max_filesize i php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Filen du prøvde Ã¥ laste opp var større enn grensen satt i MAX_FILE_SIZE i HTML-skjemaet." - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Filen du prøvde Ã¥ laste opp ble kun delvis lastet opp" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Ingen filer ble lastet opp" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Mangler midlertidig mappe" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Kunne ikke lagre midlertidig bilde:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Kunne ikke laste midlertidig bilde:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Ingen filer ble lastet opp. Ukjent feil." - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontakter" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Feil" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Endre navn" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Ingen filer valgt for opplasting." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Filen du prøver Ã¥ laste opp er for stor." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Velg type" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultat:" - -#: js/loader.js:49 -msgid " imported, " -msgstr "importert," - -#: js/loader.js:49 -msgid " failed." -msgstr "feilet." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Dette er ikke dine adressebok." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakten ble ikke funnet." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Arbeid" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Hjem" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Tekst" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Svarer" - -#: lib/app.php:205 -msgid "Message" -msgstr "Melding" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faks" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internett" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Bursdag" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}s bursdag" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Ny kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importer" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adressebøker" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Lukk" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Dra bilder hit for Ã¥ laste opp" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Fjern nÃ¥værende bilde" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Rediger nÃ¥værende bilde" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Last opp nytt bilde" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Velg bilde fra ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Endre detaljer rundt navn" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisasjon" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Slett" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Kallenavn" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Skriv inn kallenavn" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-åååå" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupper" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Skill gruppene med komma" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Endre grupper" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Foretrukket" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Vennligst angi en gyldig e-postadresse." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Skriv inn e-postadresse" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Send e-post til adresse" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Fjern e-postadresse" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Skriv inn telefonnummer" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Fjern telefonnummer" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Se pÃ¥ kart" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Endre detaljer rundt adresse" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Legg inn notater her." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Legg til felt" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-post" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresse" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Notat" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Hend ned kontakten" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Slett kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Det midlertidige bildet er fjernet fra cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Endre adresse" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Type" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postboks" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Utvidet" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "By" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "OmrÃ¥det" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postnummer" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Land" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adressebok" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Ærestitler" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Frøken" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Herr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Fru" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Fornavn" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Ev. mellomnavn" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Etternavn" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Titler" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Stipendiat" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sr." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importer en fil med kontakter." - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Vennligst velg adressebok" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Lag ny adressebok" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Navn pÃ¥ ny adressebok" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importerer kontakter" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Du har ingen kontakter i din adressebok" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Ny kontakt" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Synkroniseringsadresse for CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "mer info" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Hent ned" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Rediger" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Ny adressebok" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Lagre" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Avbryt" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index 3a89a7bb4bcade25225a806b9d855fb71d93635a..97332c4a8a25441114068ad3f21f256d40123dfd 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/core.po @@ -6,15 +6,16 @@ # , 2011, 2012. # Christer Eriksson , 2012. # Daniel , 2012. +# , 2012. # , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,208 +23,241 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Applikasjonsnavn ikke angitt." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ingen kategorier Ã¥ legge til?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Denne kategorien finnes allerede:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Ingen kategorier merket for sletting." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Innstillinger" -#: js/js.js:645 -msgid "January" -msgstr "Januar" +#: js/js.js:688 +msgid "seconds ago" +msgstr "sekunder siden" -#: js/js.js:645 -msgid "February" -msgstr "Februar" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 minutt siden" -#: js/js.js:645 -msgid "March" -msgstr "Mars" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{minutes} minutter siden" -#: js/js.js:645 -msgid "April" -msgstr "April" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mai" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Juni" +#: js/js.js:693 +msgid "today" +msgstr "i dag" -#: js/js.js:646 -msgid "July" -msgstr "Juli" +#: js/js.js:694 +msgid "yesterday" +msgstr "i gÃ¥r" -#: js/js.js:646 -msgid "August" -msgstr "August" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{days} dager siden" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:696 +msgid "last month" +msgstr "forrige mÃ¥ned" -#: js/js.js:646 -msgid "October" -msgstr "Oktober" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:698 +msgid "months ago" +msgstr "mÃ¥neder siden" -#: js/js.js:646 -msgid "December" -msgstr "Desember" +#: js/js.js:699 +msgid "last year" +msgstr "forrige Ã¥r" + +#: js/js.js:700 +msgid "years ago" +msgstr "Ã¥r siden" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Velg" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Avbryt" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nei" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Ingen kategorier merket for sletting." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Feil" -#: js/share.js:103 -msgid "Error while sharing" +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:114 -msgid "Error while unsharing" +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:121 -msgid "Error while changing permissions" +#: js/share.js:124 +msgid "Error while sharing" +msgstr "Feil under deling" + +#: js/share.js:135 +msgid "Error while unsharing" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:142 +msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Del med" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Del med link" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Passordbeskyttet" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Passord" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Set utløpsdato" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Utløpsdato" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Del pÃ¥ epost" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Ingen personer funnet" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Avslutt deling" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "kan endre" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "tilgangskontroll" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "opprett" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "oppdater" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "slett" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "del" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" -msgstr "" +msgstr "Passordbeskyttet" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" -msgstr "" +msgstr "Kan ikke sette utløpsdato" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Tilbakestill ownCloud passord" @@ -236,19 +270,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Du burde motta detaljer om Ã¥ tilbakestille passordet ditt via epost." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Anmodning" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Innloggingen var ikke vellykket." +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Brukernavn" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Anmod tilbakestilling" @@ -300,72 +334,187 @@ msgstr "Sky ikke funnet" msgid "Edit categories" msgstr "Rediger kategorier" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Legg til" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Sikkerhetsadvarsel" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "opprett en administrator-konto" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avansert" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datamappe" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfigurer databasen" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "vil bli brukt" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Databasebruker" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Databasepassord" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Databasenavn" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "Database tabellomrÃ¥de" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Databasevert" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Fullfør oppsetting" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Søndag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Mandag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Tirsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Onsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Torsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Fredag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Lørdag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Mars" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Desember" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "nettjenester under din kontroll" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Logg ut" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatisk pÃ¥logging avvist!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Hvis du ikke har endret passordet ditt nylig kan kontoen din være kompromitert" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Vennligst skift passord for Ã¥ gjøre kontoen din sikker igjen." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Mistet passordet ditt?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "husk" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Logg inn" @@ -380,3 +529,17 @@ msgstr "forrige" #: templates/part.pagenavi.php:20 msgid "next" msgstr "neste" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Sikkerhetsadvarsel!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verifiser" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index 3a28425725c2873993be08b0559fbc1aca89263a..ad0cf919ea0019b5e0e9e0164cd5eef68fc8e5dd 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/files.po @@ -7,15 +7,17 @@ # Arvid Nornes , 2012. # Christer Eriksson , 2012. # Daniel , 2012. +# , 2012. # , 2012. # , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,195 +30,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Det er ingen feil. Filen ble lastet opp." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Filstørrelsen overskrider maksgrensedirektivet upload_max_filesize i php.ini-konfigurasjonen." +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Filstørrelsen overskrider maksgrensen pÃ¥ MAX_FILE_SIZE som ble oppgitt i HTML-skjemaet" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Filopplastningen ble bare delvis gjennomført" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ingen fil ble lastet opp" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Mangler en midlertidig mappe" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Klarte ikke Ã¥ skrive til disk" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Filer" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "Avslutt deling" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Slett" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Omdøp" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "eksisterer allerede" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} finnes allerede" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "erstatt" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "foreslÃ¥ navn" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "avbryt" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "erstattet" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "erstatt {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "angre" -#: js/filelist.js:241 -msgid "with" -msgstr "med" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "erstatt {new_name} med {old_name}" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "slettet" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "slettet {files}" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "opprettet ZIP-fil, dette kan ta litt tid" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Opplasting feilet" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Lukk" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Ventende" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 fil lastes opp" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} filer laster opp" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Opplasting avbrutt." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" +msgstr "Filopplasting pÃ¥gÃ¥r. Forlater du siden nÃ¥ avbrytes opplastingen." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ugyldig navn, '/' er ikke tillatt. " - -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:675 +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} filer lest inn" + +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "feil under skanning" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Navn" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Størrelse" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Endret" -#: js/files.js:777 -msgid "folder" -msgstr "mappe" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 mappe" -#: js/files.js:779 -msgid "folders" -msgstr "mapper" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} mapper" -#: js/files.js:787 -msgid "file" -msgstr "fil" +#: js/files.js:824 +msgid "1 file" +msgstr "1 fil" -#: js/files.js:789 -msgid "files" -msgstr "filer" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} filer" #: templates/admin.php:5 msgid "File handling" @@ -226,27 +199,27 @@ msgstr "FilhÃ¥ndtering" msgid "Maximum upload size" msgstr "Maksimum opplastingsstørrelse" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. mulige:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Nødvendig for Ã¥ laste ned mapper og mer enn én fil om gangen." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Aktiver nedlasting av ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 er ubegrenset" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maksimal størrelse pÃ¥ ZIP-filer" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Lagre" @@ -254,52 +227,48 @@ msgstr "Lagre" msgid "New" msgstr "Ny" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tekstfil" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Mappe" -#: templates/index.php:11 -msgid "From url" -msgstr "Fra url" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Last opp" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Avbryt opplasting" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Ingenting her. Last opp noe!" -#: templates/index.php:50 -msgid "Share" -msgstr "Del" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Last ned" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Opplasting for stor" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filene du prøver Ã¥ laste opp er for store for Ã¥ laste opp til denne serveren." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Skanner etter filer, vennligst vent." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "PÃ¥gÃ¥ende skanning" diff --git a/l10n/nb_NO/files_pdfviewer.po b/l10n/nb_NO/files_pdfviewer.po deleted file mode 100644 index e036a75c1b4373666c2e031cfed54624fe3d4be7..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/nb_NO/files_sharing.po b/l10n/nb_NO/files_sharing.po index f449d2b5d8df83345a2adfffa25187506bfa2323..8f4798597a079a1a6755cb7a9c93b7c48965550b 100644 --- a/l10n/nb_NO/files_sharing.po +++ b/l10n/nb_NO/files_sharing.po @@ -4,13 +4,14 @@ # # Translators: # Arvid Nornes , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-31 00:01+0100\n" +"PO-Revision-Date: 2012-10-30 12:47+0000\n" +"Last-Translator: hdalgrav \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,30 +21,30 @@ msgstr "" #: templates/authenticate.php:4 msgid "Password" -msgstr "" +msgstr "Passord" #: templates/authenticate.php:6 msgid "Submit" -msgstr "" +msgstr "Send inn" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s delte mappen %s med deg" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s delte filen %s med deg" #: templates/public.php:14 templates/public.php:30 msgid "Download" -msgstr "" +msgstr "Last ned" #: templates/public.php:29 msgid "No preview available for" -msgstr "" +msgstr "ForhÃ¥ndsvisning ikke tilgjengelig for" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" -msgstr "" +msgstr "web tjenester du kontrollerer" diff --git a/l10n/nb_NO/files_texteditor.po b/l10n/nb_NO/files_texteditor.po deleted file mode 100644 index 0086fe9d648cd4cd40dfc18608401ee647f7c7b5..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/nb_NO/files_versions.po b/l10n/nb_NO/files_versions.po index de2fd2c9766330843393111a3673cf853af3d7ee..bd8d0fed59ef59c93426e575f811fa626e8c08b7 100644 --- a/l10n/nb_NO/files_versions.po +++ b/l10n/nb_NO/files_versions.po @@ -4,13 +4,14 @@ # # Translators: # Arvid Nornes , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-31 00:01+0100\n" +"PO-Revision-Date: 2012-10-30 12:48+0000\n" +"Last-Translator: hdalgrav \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,20 +25,20 @@ msgstr "" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "Historie" #: templates/settings-personal.php:4 msgid "Versions" -msgstr "" +msgstr "Versjoner" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "" +msgstr "Dette vil slette alle tidligere versjoner av alle filene dine" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "Fil versjonering" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Aktiver" diff --git a/l10n/nb_NO/gallery.po b/l10n/nb_NO/gallery.po deleted file mode 100644 index cf8525c3105e0d75eb9eb787f3a90fe513ba2738..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/gallery.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Christer Eriksson , 2012. -# Daniel , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:01+0000\n" -"Last-Translator: runesudden \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:42 -msgid "Pictures" -msgstr "Bilder" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Del galleri" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Feil:" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Intern feil" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Lysbildefremvisning" diff --git a/l10n/nb_NO/impress.po b/l10n/nb_NO/impress.po deleted file mode 100644 index 8222542fcc3cfcd78c0830c73d0d0f14df439ec4..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/nb_NO/lib.po b/l10n/nb_NO/lib.po index 4a78161719d0d6898146cd667ee1180e1e69bdd8..266ba36b0692bebc0224369136d04737cbd90b1a 100644 --- a/l10n/nb_NO/lib.po +++ b/l10n/nb_NO/lib.po @@ -4,58 +4,60 @@ # # Translators: # Arvid Nornes , 2012. +# , 2012. # , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Hjelp" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Personlig" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Innstillinger" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Brukere" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Apper" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP-nedlasting av avslÃ¥tt" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Filene mÃ¥ lastes ned en om gangen" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Tilbake til filer" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "De valgte filene er for store til Ã¥ kunne generere ZIP-fil" @@ -63,7 +65,7 @@ msgstr "De valgte filene er for store til Ã¥ kunne generere ZIP-fil" msgid "Application is not enabled" msgstr "Applikasjon er ikke pÃ¥slÃ¥tt" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Autentiseringsfeil" @@ -71,57 +73,84 @@ msgstr "Autentiseringsfeil" msgid "Token expired. Please reload page." msgstr "Symbol utløpt. Vennligst last inn siden pÃ¥ nytt." -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Filer" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Tekst" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Bilder" + +#: template.php:103 msgid "seconds ago" msgstr "sekunder siden" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 minuitt siden" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minutter siden" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "i dag" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "i gÃ¥r" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d dager siden" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "forrige mÃ¥ned" -#: template.php:95 -msgid "months ago" -msgstr "mÃ¥neder siden" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "i fjor" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "Ã¥r siden" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "" +msgstr "%s er tilgjengelig. FÃ¥ mer informasjon" -#: updater.php:68 +#: updater.php:77 msgid "up to date" -msgstr "" +msgstr "oppdatert" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" +msgstr "versjonssjekk er avslÃ¥tt" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" msgstr "" diff --git a/l10n/nb_NO/media.po b/l10n/nb_NO/media.po deleted file mode 100644 index b6d932f8772127d79d1a76d34485d2aceb49069a..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.net/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musikk" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Spill" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pause" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Forrige" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Neste" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Demp" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Skru pÃ¥ lyd" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Skan samling pÃ¥ nytt" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artist" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Tittel" diff --git a/l10n/nb_NO/settings.po b/l10n/nb_NO/settings.po index 0089568671f98ba8aa022f8b7ed7569d2a300319..ab234540e2573735e6e87576c051f162a2248078 100644 --- a/l10n/nb_NO/settings.po +++ b/l10n/nb_NO/settings.po @@ -7,15 +7,16 @@ # Arvid Nornes , 2012. # Christer Eriksson , 2012. # Daniel , 2012. +# , 2012. # , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,70 +24,73 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Lasting av liste fra App Store feilet." -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Autentikasjonsfeil" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "Gruppen finnes allerede" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "Kan ikke legge til gruppe" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Kan ikke aktivere app." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Epost lagret" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ugyldig epost" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID endret" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ugyldig forespørsel" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "Kan ikke slette gruppe" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Autentikasjonsfeil" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "Kan ikke slette bruker" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "SprÃ¥k endret" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "Kan ikke legge bruker til gruppen %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "Kan ikke slette bruker fra gruppen %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "SlÃ¥ avBehandle " -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "SlÃ¥ pÃ¥" @@ -94,104 +98,17 @@ msgstr "SlÃ¥ pÃ¥" msgid "Saving..." msgstr "Lagrer..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Sikkerhetsadvarsel" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Logg" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mer" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Legg til din App" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Flere Apps" #: templates/apps.php:27 msgid "Select an App" @@ -217,21 +134,21 @@ msgstr "HÃ¥ndtere store filer" msgid "Ask a question" msgstr "Still et spørsmÃ¥l" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemer med Ã¥ koble til hjelp-databasen" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "GÃ¥ dit manuelt" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Svar" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -244,7 +161,7 @@ msgstr "Last ned" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Passord har blitt endret" #: templates/personal.php:20 msgid "Unable to change your password" @@ -290,6 +207,16 @@ msgstr "Bidra til oversettelsen" msgid "use this address to connect to your ownCloud in your file manager" msgstr "bruk denne adressen for Ã¥ koble til din ownCloud gjennom filhÃ¥ndtereren" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Navn" diff --git a/l10n/nb_NO/tasks.po b/l10n/nb_NO/tasks.po deleted file mode 100644 index bf07aa76d0eace4b748862d5cd3771baf7ddda28..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Arvid Nornes , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 17:17+0000\n" -"Last-Translator: Arvid Nornes \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "feil i dato/klokkeslett" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Oppgaver" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Ingen kategori" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Uspesifisert" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=høyest" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=middels" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=lavest" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Feil i prosent fullført" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Ulovlig prioritet" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Legg til oppgave" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Henter oppgaver..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Viktig" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Mer" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Mindre" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Slett" diff --git a/l10n/nb_NO/user_ldap.po b/l10n/nb_NO/user_ldap.po index 2208bdc9acd06c37bead17eb869f731168698714..1ebfbe8b54464c6ccd3e489432617d318e43f248 100644 --- a/l10n/nb_NO/user_ldap.po +++ b/l10n/nb_NO/user_ldap.po @@ -3,19 +3,20 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-31 00:01+0100\n" +"PO-Revision-Date: 2012-10-30 13:08+0000\n" +"Last-Translator: hdalgrav \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: templates/settings.php:8 msgid "Host" @@ -47,7 +48,7 @@ msgstr "" #: templates/settings.php:11 msgid "Password" -msgstr "" +msgstr "Passord" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." @@ -83,7 +84,7 @@ msgstr "" #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "Gruppefilter" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." @@ -95,7 +96,7 @@ msgstr "" #: templates/settings.php:17 msgid "Port" -msgstr "" +msgstr "Port" #: templates/settings.php:18 msgid "Base User Tree" @@ -111,11 +112,11 @@ msgstr "" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "Bruk TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "Ikke bruk for SSL tilkoblinger, dette vil ikke fungere." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" @@ -133,7 +134,7 @@ msgstr "" #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "Ikke anbefalt, bruk kun for testing" #: templates/settings.php:24 msgid "User Display Name Field" @@ -153,11 +154,11 @@ msgstr "" #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "i bytes" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." -msgstr "" +msgstr "i sekunder. En endring tømmer bufferen." #: templates/settings.php:30 msgid "" @@ -167,4 +168,4 @@ msgstr "" #: templates/settings.php:32 msgid "Help" -msgstr "" +msgstr "Hjelp" diff --git a/l10n/nb_NO/user_migrate.po b/l10n/nb_NO/user_migrate.po deleted file mode 100644 index 2e2605cb75e8f8b3520e3eb59da35c2ab5b13248..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/nb_NO/user_openid.po b/l10n/nb_NO/user_openid.po deleted file mode 100644 index cf98d889a4970e60cbae1376efd30a122053cc85..0000000000000000000000000000000000000000 --- a/l10n/nb_NO/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/nb_NO/files_odfviewer.po b/l10n/nb_NO/user_webdavauth.po similarity index 74% rename from l10n/nb_NO/files_odfviewer.po rename to l10n/nb_NO/user_webdavauth.po index 61ad61a7fe921636cb5b1aaf1e065e409f93b4b2..8029f4ff58a2de1e6a5aff2ff53e6218990a320a 100644 --- a/l10n/nb_NO/files_odfviewer.po +++ b/l10n/nb_NO/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nb_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/nl/admin_dependencies_chk.po b/l10n/nl/admin_dependencies_chk.po deleted file mode 100644 index 436ece1cdef7c534ebb2138237cf8f27e2a9ab2a..0000000000000000000000000000000000000000 --- a/l10n/nl/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/nl/admin_migrate.po b/l10n/nl/admin_migrate.po deleted file mode 100644 index aa9f340dcd5647e1aafe9b62bd9eb3b12e1852a1..0000000000000000000000000000000000000000 --- a/l10n/nl/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Richard Bos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 16:56+0000\n" -"Last-Translator: Richard Bos \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Exporteer deze ownCloud instantie" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Dit maakt een gecomprimeerd bestand, met de inhoud van deze ownCloud instantie. Kies het export type:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Exporteer" diff --git a/l10n/nl/bookmarks.po b/l10n/nl/bookmarks.po deleted file mode 100644 index 598af3f83a9b3def01af499b588f98586b8c9baf..0000000000000000000000000000000000000000 --- a/l10n/nl/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Richard Bos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 19:06+0000\n" -"Last-Translator: Richard Bos \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Bladwijzers" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "geen naam" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Sleep dit naar uw browser bladwijzers en klik erop, wanneer u een webpagina snel wilt voorzien van een bladwijzer:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Lees later" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adres" - -#: templates/list.php:14 -msgid "Title" -msgstr "Titel" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Tags" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Bewaar bookmark" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "U heeft geen bookmarks" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/nl/calendar.po b/l10n/nl/calendar.po deleted file mode 100644 index 5c283653c4871f2869f57a8efc5f0886443f9678..0000000000000000000000000000000000000000 --- a/l10n/nl/calendar.po +++ /dev/null @@ -1,820 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# , 2011. -# Erik Bent , 2012. -# , 2012. -# , 2012. -# , 2012. -# Richard Bos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 08:53+0000\n" -"Last-Translator: Richard Bos \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Niet alle agenda's zijn volledig gecached" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Alles lijkt volledig gecached te zijn" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Geen kalenders gevonden." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Geen gebeurtenissen gevonden." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Verkeerde kalender" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Het bestand bevat geen gebeurtenissen of alle gebeurtenissen worden al in uw agenda bewaard." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "De gebeurtenissen worden in de nieuwe agenda bewaard" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "import is gefaald" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "de gebeurtenissen zijn in uw agenda opgeslagen " - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nieuwe tijdszone:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Tijdzone is veranderd" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ongeldige aanvraag" - -#: appinfo/app.php:41 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd d.M" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd d.M" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "d[ MMM][ yyyy]{ '—' d MMM yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, d. MMM yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Verjaardag" - -#: lib/app.php:122 -msgid "Business" -msgstr "Zakelijk" - -#: lib/app.php:123 -msgid "Call" -msgstr "Bellen" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klanten" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Leverancier" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Vakantie" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideeën" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Reis" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileum" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Vergadering" - -#: lib/app.php:131 -msgid "Other" -msgstr "Ander" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Persoonlijk" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projecten" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Vragen" - -#: lib/app.php:135 -msgid "Work" -msgstr "Werk" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "door" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "onbekend" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nieuwe Kalender" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Wordt niet herhaald" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Dagelijks" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Wekelijks" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Elke weekdag" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Tweewekelijks" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Maandelijks" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Jaarlijks" - -#: lib/object.php:388 -msgid "never" -msgstr "nooit meer" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "volgens gebeurtenissen" - -#: lib/object.php:390 -msgid "by date" -msgstr "op datum" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "per dag van de maand" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "op weekdag" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Maandag" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Dinsdag" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Woensdag" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Donderdag" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Vrijdag" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Zaterdag" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Zondag" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "gebeurtenissen week van maand" - -#: lib/object.php:428 -msgid "first" -msgstr "eerste" - -#: lib/object.php:429 -msgid "second" -msgstr "tweede" - -#: lib/object.php:430 -msgid "third" -msgstr "derde" - -#: lib/object.php:431 -msgid "fourth" -msgstr "vierde" - -#: lib/object.php:432 -msgid "fifth" -msgstr "vijfde" - -#: lib/object.php:433 -msgid "last" -msgstr "laatste" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januari" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februari" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Maart" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mei" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Augustus" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "December" - -#: lib/object.php:488 -msgid "by events date" -msgstr "volgens evenementsdatum" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "volgens jaardag(en)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "volgens weeknummer(s)" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "per dag en maand" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Datum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Zon." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Maa." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Din." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Woe." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Don." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Vrij." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Zat." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Maa." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Apr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Mei." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Aug." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Okt." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dec." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Hele dag" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "missende velden" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titel" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Begindatum" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Begintijd" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Einddatum" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Eindtijd" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Het evenement eindigt voordat het begint" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Er was een databasefout" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Week" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Maand" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lijst" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Vandaag" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Instellingen" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Je kalenders" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav Link" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Gedeelde kalenders" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Geen gedeelde kalenders" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Deel kalender" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Download" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Bewerken" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Verwijderen" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "gedeeld met jou door" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nieuwe kalender" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Bewerk kalender" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Weergavenaam" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Actief" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalender kleur" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Opslaan" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Opslaan" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Annuleren" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Bewerken van een afspraak" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exporteren" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Geberurtenisinformatie" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Herhalend" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Deelnemers" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Delen" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Titel van de afspraak" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categorie" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Gescheiden door komma's" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Wijzig categorieën" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Hele dag" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Van" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Aan" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Geavanceerde opties" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Locatie" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Locatie van de afspraak" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Beschrijving" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Beschrijving van het evenement" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Herhalen" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Geavanceerd" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Selecteer weekdagen" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Selecteer dagen" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "en de gebeurtenissen dag van het jaar" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "en de gebeurtenissen dag van de maand" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Selecteer maanden" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Selecteer weken" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "en de gebeurtenissen week van het jaar" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Interval" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Einde" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "gebeurtenissen" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Maak een nieuw agenda" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importeer een agenda bestand" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Kies een agenda" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Naam van de nieuwe agenda" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Kies een beschikbare naam!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Een agenda met deze naam bestaat al. Als u doorgaat, worden deze agenda's samengevoegd" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importeer" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Sluit venster" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Maak een nieuwe afspraak" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Bekijk een gebeurtenis" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Geen categorieën geselecteerd" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "van" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "op" - -#: templates/settings.php:10 -msgid "General" -msgstr "Algemeen" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Tijdzone" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Werk de tijdzone automatisch bij" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Tijd formaat" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24uur" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12uur" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Begin de week op" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Cache" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Leeg cache voor repeterende gebeurtenissen" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URLs" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Agenda CalDAV synchronisatie adres" - -#: templates/settings.php:87 -msgid "more info" -msgstr "meer informatie" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Primary adres (voor Kontact en dergelijke)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Alleen lezen iCalendar link(en)" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Gebruikers" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "kies gebruikers" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Te wijzigen" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Groepen" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "kies groep" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "maak publiek" diff --git a/l10n/nl/contacts.po b/l10n/nl/contacts.po deleted file mode 100644 index fd2159c7acbcc89d2ad41ac28ba5b9d913cd7e40..0000000000000000000000000000000000000000 --- a/l10n/nl/contacts.po +++ /dev/null @@ -1,958 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# , 2011. -# Erik Bent , 2012. -# , 2012. -# , 2012. -# Richard Bos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 16:50+0000\n" -"Last-Translator: Richard Bos \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Fout bij het (de)activeren van het adresboek." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id is niet ingesteld." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Kan adresboek zonder naam niet wijzigen" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Fout bij het updaten van het adresboek." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Geen ID opgegeven" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Instellen controlegetal mislukt" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Geen categorieën geselecteerd om te verwijderen." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Geen adresboek gevonden" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Geen contracten gevonden" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Er was een fout bij het toevoegen van het contact." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "onderdeel naam is niet opgegeven." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Kon het contact niet verwerken" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Kan geen lege eigenschap toevoegen." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Minstens één van de adresvelden moet ingevuld worden." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Eigenschap bestaat al: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "IM parameter ontbreekt" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "Onbekende IM:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informatie over de vCard is onjuist. Herlaad de pagina." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Ontbrekend ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Fout bij inlezen VCard voor ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "controlegetal is niet opgegeven." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informatie over vCard is fout. Herlaad de pagina: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Er ging iets totaal verkeerd. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Geen contact ID opgestuurd." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Lezen van contact foto mislukt." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Tijdelijk bestand opslaan mislukt." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "De geladen foto is niet goed." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Contact ID ontbreekt." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Geen fotopad opgestuurd." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Bestand bestaat niet:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Fout bij laden plaatje." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Fout om contact object te verkrijgen" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Fout om PHOTO eigenschap te verkrijgen" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Fout om contact op te slaan" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Fout tijdens aanpassen plaatje" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Fout tijdens aanpassen plaatje" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Fout om een tijdelijk plaatje te maken" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Fout kan plaatje niet vinden:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Fout bij opslaan van contacten." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "De upload van het bestand is goedgegaan." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Het bestand overschrijdt de upload_max_filesize instelling in php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Het bestand overschrijdt de MAX_FILE_SIZE instelling dat is opgegeven in het HTML formulier" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Het bestand is gedeeltelijk geüpload" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Er is geen bestand geüpload" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Er ontbreekt een tijdelijke map" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Kan tijdelijk plaatje niet op slaan:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Kan tijdelijk plaatje niet op laden:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Er was geen bestand geladen. Onbekende fout" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Contacten" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Sorry, deze functionaliteit is nog niet geïmplementeerd" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Niet geïmplementeerd" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Kan geen geldig adres krijgen" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Fout" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "U hebt geen permissie om contacten toe te voegen aan" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Selecteer één van uw eigen adresboeken" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Permissie fout" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Dit veld mag niet leeg blijven" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Kan de elementen niet serializen" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' aangeroepen zonder type argument. Rapporteer dit a.u.b. via http://bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Pas naam aan" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Geen bestanden geselecteerd voor upload." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Het bestand dat u probeert te uploaden overschrijdt de maximale bestand grootte voor bestand uploads voor deze server." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Fout profiel plaatje kan niet worden geladen." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Selecteer type" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Enkele contacten zijn gemarkeerd om verwijderd te worden, maar zijn nog niet verwijderd. Wacht totdat ze zijn verwijderd." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Wilt u deze adresboeken samenvoegen?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultaat:" - -#: js/loader.js:49 -msgid " imported, " -msgstr "geïmporteerd," - -#: js/loader.js:49 -msgid " failed." -msgstr "gefaald." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Displaynaam mag niet leeg zijn." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Adresboek niet gevonden:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Dit is niet uw adresboek." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Contact kon niet worden gevonden." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Werk" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Thuis" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Anders" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobiel" - -#: lib/app.php:203 -msgid "Text" -msgstr "Tekst" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Stem" - -#: lib/app.php:205 -msgid "Message" -msgstr "Bericht" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pieper" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Verjaardag" - -#: lib/app.php:253 -msgid "Business" -msgstr "Business" - -#: lib/app.php:254 -msgid "Call" -msgstr "Bel" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Klanten" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Leverancier" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Vakanties" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ideeën" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Reis" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubileum" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Vergadering" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Persoonlijk" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projecten" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Vragen" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}'s verjaardag" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contact" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "U heeft geen permissie om dit contact te bewerken." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "U heeft geen permissie om dit contact te verwijderen." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Contact toevoegen" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importeer" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Instellingen" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adresboeken" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Sluiten" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Sneltoetsen" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigatie" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Volgende contact in de lijst" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Vorige contact in de lijst" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Uitklappen / inklappen huidig adresboek" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Volgende adresboek" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Vorige adresboek" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Acties" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Vernieuw contact lijst" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Voeg nieuw contact toe" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Voeg nieuw adresboek toe" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Verwijder huidig contact" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Verwijder foto uit upload" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Verwijdere huidige foto" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Wijzig huidige foto" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Upload nieuwe foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Selecteer foto uit ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formateer aangepast, Korte naam, Volledige naam, Achteruit of Achteruit met komma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Wijzig naam gegevens" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisatie" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Verwijderen" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Roepnaam" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Voer roepnaam in" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Website" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.willekeurigesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Ga naar website" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Groepen" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Gebruik komma bij meerder groepen" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Wijzig groepen" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Voorkeur" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Geef een geldig email adres op." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Voer email adres in" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Mail naar adres" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Verwijder email adres" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Voer telefoonnummer in" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Verwijdere telefoonnummer" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Verwijder IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Bekijk op een kaart" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Wijzig adres gegevens" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Voeg notitie toe" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Voeg veld toe" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefoon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Instant Messaging" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adres" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Notitie" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Download contact" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Verwijder contact" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Het tijdelijke plaatje is uit de cache verwijderd." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Wijzig adres" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Type" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postbus" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Adres" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Straat en nummer" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Uitgebreide" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Apartement nummer" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Stad" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regio" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Provincie" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postcode" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Postcode" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Land" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adresboek" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Hon. prefixes" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Mw" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Mw" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "M" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "M" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Mw" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "M" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Voornaam" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Extra namen" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Achternaam" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importeer een contacten bestand" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Kies een adresboek" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Maak een nieuw adresboek" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Naam van nieuw adresboek" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importeren van contacten" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Je hebt geen contacten in je adresboek" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Contactpersoon toevoegen" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Selecteer adresboeken" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Naam" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Beschrijving" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV synchroniseert de adressen" - -#: templates/settings.php:3 -msgid "more info" -msgstr "meer informatie" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Standaardadres" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "IOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Laat CardDav link zien" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Laat alleen lezen VCF link zien" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Deel" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Download" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Bewerken" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nieuw Adresboek" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Naam" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Beschrijving" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Opslaan" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Anuleren" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Meer..." diff --git a/l10n/nl/core.po b/l10n/nl/core.po index 1f7c606ba22ebaa182c1717b68c66116805ac6c5..5eeb0f021c8a76fc5095ef904bc5a8f6a15971c9 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/core.po @@ -3,21 +3,27 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André Koot , 2012. # , 2011. # , 2012. # Erik Bent , 2012. # , 2011. # , 2012. # , 2011. +# , 2012. +# Martin Wildeman , 2012. # , 2012. # Richard Bos , 2012. +# , 2012. +# , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" -"PO-Revision-Date: 2012-10-12 20:18+0000\n" -"Last-Translator: Richard Bos \n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-11-18 13:25+0000\n" +"Last-Translator: Len \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,208 +31,241 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Applicatie naam niet gegeven." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Categorie type niet opgegeven." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Geen categorie toevoegen?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " -msgstr "De categorie bestaat al." +msgstr "Deze categorie bestaat al." + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Object type niet opgegeven." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID niet opgegeven." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Toevoegen van %s aan favorieten is mislukt." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Geen categorie geselecteerd voor verwijdering." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Verwijderen %s van favorieten is mislukt." -#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Instellingen" -#: js/js.js:670 -msgid "January" -msgstr "Januari" +#: js/js.js:704 +msgid "seconds ago" +msgstr "seconden geleden" -#: js/js.js:670 -msgid "February" -msgstr "Februari" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 minuut geleden" -#: js/js.js:670 -msgid "March" -msgstr "Maart" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} minuten geleden" -#: js/js.js:670 -msgid "April" -msgstr "April" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 uur geleden" -#: js/js.js:670 -msgid "May" -msgstr "Mei" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} uren geleden" -#: js/js.js:670 -msgid "June" -msgstr "Juni" +#: js/js.js:709 +msgid "today" +msgstr "vandaag" -#: js/js.js:671 -msgid "July" -msgstr "Juli" +#: js/js.js:710 +msgid "yesterday" +msgstr "gisteren" -#: js/js.js:671 -msgid "August" -msgstr "Augustus" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} dagen geleden" -#: js/js.js:671 -msgid "September" -msgstr "September" +#: js/js.js:712 +msgid "last month" +msgstr "vorige maand" -#: js/js.js:671 -msgid "October" -msgstr "Oktober" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} maanden geleden" -#: js/js.js:671 -msgid "November" -msgstr "November" +#: js/js.js:714 +msgid "months ago" +msgstr "maanden geleden" -#: js/js.js:671 -msgid "December" -msgstr "December" +#: js/js.js:715 +msgid "last year" +msgstr "vorig jaar" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "jaar geleden" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Kies" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Annuleren" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nee" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Geen categorie geselecteerd voor verwijdering." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Het object type is niet gespecificeerd." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Fout" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "De app naam is niet gespecificeerd." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Het vereiste bestand {file} is niet geïnstalleerd!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Fout tijdens het delen" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Fout tijdens het stoppen met delen" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Fout tijdens het veranderen van permissies" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Gedeeld me u en de groep" - -#: js/share.js:130 -msgid "by" -msgstr "door" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Gedeeld met u en de groep {group} door {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Gedeeld met u door" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Gedeeld met u door {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Deel met" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Deel met link" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "Passeerwoord beveiliging" +msgstr "Wachtwoord beveiliging" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Wachtwoord" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "Zet vervaldatum" +msgstr "Stel vervaldatum in" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Vervaldatum" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Deel via email:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Geen mensen gevonden" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Verder delen is niet toegestaan" -#: js/share.js:250 -msgid "Shared in" -msgstr "Gedeeld in" - -#: js/share.js:250 -msgid "with" -msgstr "met" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Gedeeld in {item} met {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Stop met delen" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "kan wijzigen" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "toegangscontrole" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "maak" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "bijwerken" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "verwijderen" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "deel" -#: js/share.js:322 js/share.js:484 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" -msgstr "Passeerwoord beveiligd" +msgstr "Wachtwoord beveiligd" -#: js/share.js:497 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "Fout tijdens het verwijderen van de verval datum" -#: js/share.js:509 +#: js/share.js:539 msgid "Error setting expiration date" -msgstr "Fout tijdens het configureren van de vervaldatum" +msgstr "Fout tijdens het instellen van de vervaldatum" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud wachtwoord herstellen" @@ -236,18 +275,18 @@ msgstr "Gebruik de volgende link om je wachtwoord te resetten: {link}" #: lostpassword/templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "U ontvangt een link om je wachtwoord opnieuw in te stellen via e-mail." +msgstr "U ontvangt een link om uw wachtwoord opnieuw in te stellen via e-mail." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Gevraagd" +msgid "Reset email send." +msgstr "Reset e-mail verstuurd." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Login mislukt!" +msgid "Request failed!" +msgstr "Verzoek mislukt!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Gebruikersnaam" @@ -303,72 +342,187 @@ msgstr "Cloud niet gevonden" msgid "Edit categories" msgstr "Wijzigen categorieën" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Toevoegen" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Beveiligingswaarschuwing" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Er kon geen willekeurig nummer worden gegenereerd. Zet de PHP OpenSSL extentie aan." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Zonder random nummer generator is het mogelijk voor een aanvaller om de reset tokens van wachtwoorden te voorspellen. Dit kan leiden tot het inbreken op uw account." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Uw data is waarschijnlijk toegankelijk vanaf net internet. Het .htaccess bestand dat ownCloud levert werkt niet goed. U wordt aangeraden om de configuratie van uw webserver zodanig aan te passen dat de data folders niet meer publiekelijk toegankelijk zijn. U kunt ook de data folder verplaatsen naar een folder buiten de webserver document folder." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Maak een beheerdersaccount aan" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Geavanceerd" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Gegevensmap" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" -msgstr "Configureer de databank" +msgstr "Configureer de database" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "zal gebruikt worden" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" -msgstr "Gebruiker databank" +msgstr "Gebruiker database" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" -msgstr "Wachtwoord databank" +msgstr "Wachtwoord database" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" -msgstr "Naam databank" +msgstr "Naam database" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Database tablespace" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Database server" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Installatie afronden" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Zondag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Maandag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Dinsdag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Woensdag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Donderdag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Vrijdag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Zaterdag" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "januari" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "februari" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "maart" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "april" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "mei" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "juni" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "juli" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "augustus" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "september" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "oktober" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "november" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "december" + +#: templates/layout.guest.php:42 msgid "web services under your control" -msgstr "webdiensten die je beheerst" +msgstr "Webdiensten in eigen beheer" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Afmelden" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatische aanmelding geweigerd!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Als u uw wachtwoord niet onlangs heeft aangepast, kan uw account overgenomen zijn!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Wijzig uw wachtwoord zodat uw account weer beveiligd is." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Uw wachtwoord vergeten?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "onthoud gegevens" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Meld je aan" @@ -383,3 +537,17 @@ msgstr "vorige" #: templates/part.pagenavi.php:20 msgid "next" msgstr "volgende" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Beveiligingswaarschuwing!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Verifieer uw wachtwoord!
            Om veiligheidsredenen wordt u regelmatig gevraagd uw wachtwoord in te geven." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verifieer" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index da97c5575eac0b6d647c8db49c411d096b203b76..bb78a69078c1fb7cccfbda2edb4b097f5439e664 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/files.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André Koot , 2012. # , 2011. # , 2011. # , 2012. @@ -10,15 +11,16 @@ # , 2011. # , 2012. # , 2011. +# , 2012. # , 2012. # Richard Bos , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 09:15+0000\n" +"Last-Translator: Len \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,195 +33,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Geen fout opgetreden, bestand successvol geupload." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Het geüploade bestand is groter dan de upload_max_filesize instelling in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Het geüploade bestand overscheidt de upload_max_filesize optie in php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Het geüploade bestand is groter dan de MAX_FILE_SIZE richtlijn die is opgegeven in de HTML-formulier" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Het bestand is slechts gedeeltelijk geupload" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Geen bestand geüpload" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Een tijdelijke map mist" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Schrijven naar schijf mislukt" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Bestanden" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Stop delen" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Verwijder" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Hernoem" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "bestaat al" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} bestaat al" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "vervang" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "Stel een naam voor" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "annuleren" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "vervangen" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "verving {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "ongedaan maken" -#: js/filelist.js:241 -msgid "with" -msgstr "door" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "verving {new_name} met {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "delen gestopt {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "niet gedeeld" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "verwijderde {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "verwijderd" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Onjuiste naam; '\\', '/', '<', '>', ':', '\"', '|', '?' en '*' zijn niet toegestaan." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "aanmaken ZIP-file, dit kan enige tijd duren." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "uploaden van de file mislukt, het is of een directory of de bestandsgrootte is 0 bytes" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Upload Fout" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Sluit" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Wachten" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 bestand wordt ge-upload" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} bestanden aan het uploaden" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Uploaden geannuleerd." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "Bestands upload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload." +msgstr "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ongeldige naam, '/' is niet toegestaan." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Folder naam niet toegestaan. Het gebruik van \"Shared\" is aan Owncloud voorbehouden" -#: js/files.js:667 -msgid "files scanned" -msgstr "Gescande bestanden" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} bestanden gescanned" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "Fout tijdens het scannen" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Naam" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Bestandsgrootte" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Laatst aangepast" -#: js/files.js:777 -msgid "folder" -msgstr "map" - -#: js/files.js:779 -msgid "folders" -msgstr "mappen" - -#: js/files.js:787 -msgid "file" -msgstr "bestand" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 map" -#: js/files.js:789 -msgid "files" -msgstr "bestanden" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} mappen" -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 bestand" -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} bestanden" #: templates/admin.php:5 msgid "File handling" @@ -229,27 +202,27 @@ msgstr "Bestand" msgid "Maximum upload size" msgstr "Maximale bestandsgrootte voor uploads" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. mogelijk: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Nodig voor meerdere bestanden en mappen downloads." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Zet ZIP-download aan" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 is ongelimiteerd" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maximale grootte voor ZIP bestanden" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Opslaan" @@ -257,52 +230,48 @@ msgstr "Opslaan" msgid "New" msgstr "Nieuw" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tekstbestand" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Map" -#: templates/index.php:11 -msgid "From url" -msgstr "Van hyperlink" +#: templates/index.php:14 +msgid "From link" +msgstr "Vanaf link" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Upload" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Upload afbreken" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Er bevindt zich hier niets. Upload een bestand!" -#: templates/index.php:50 -msgid "Share" -msgstr "Delen" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Download" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Bestanden te groot" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "De bestanden die u probeert te uploaden zijn groter dan de maximaal toegestane bestandsgrootte voor deze server." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Bestanden worden gescand, even wachten." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Er wordt gescand" diff --git a/l10n/nl/files_external.po b/l10n/nl/files_external.po index a3bf337db111566ccb0e5c6f34206faad485857c..98f19c36b8d495c5719ee3f0ffa8a3becf26af51 100644 --- a/l10n/nl/files_external.po +++ b/l10n/nl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" -"PO-Revision-Date: 2012-10-12 19:43+0000\n" +"POT-Creation-Date: 2012-10-28 00:01+0200\n" +"PO-Revision-Date: 2012-10-27 09:42+0000\n" "Last-Translator: Richard Bos \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -68,7 +68,7 @@ msgstr "Van toepassing" #: templates/settings.php:23 msgid "Add mount point" -msgstr "Voeg aankoppelpunt toe" +msgstr "Aankoppelpunt toevoegen" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" @@ -92,7 +92,7 @@ msgstr "Verwijder" #: templates/settings.php:87 msgid "Enable User External Storage" -msgstr "Zet gebruiker's externe opslag aan" +msgstr "Externe opslag voor gebruikers activeren" #: templates/settings.php:88 msgid "Allow users to mount their own external storage" diff --git a/l10n/nl/files_pdfviewer.po b/l10n/nl/files_pdfviewer.po deleted file mode 100644 index ff6e8c5e201202271f5cefd9392a412a5c276739..0000000000000000000000000000000000000000 --- a/l10n/nl/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/nl/files_texteditor.po b/l10n/nl/files_texteditor.po deleted file mode 100644 index c73a062cdbb5d9f7c47a2aed6d5fced61b75dcca..0000000000000000000000000000000000000000 --- a/l10n/nl/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/nl/files_versions.po b/l10n/nl/files_versions.po index 5db59a412264143697a40165742fab0779e52e3f..0328e198c572bbcfb679767d0cb607dab3308805 100644 --- a/l10n/nl/files_versions.po +++ b/l10n/nl/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-24 02:01+0200\n" -"PO-Revision-Date: 2012-09-23 14:45+0000\n" +"POT-Creation-Date: 2012-10-28 00:01+0200\n" +"PO-Revision-Date: 2012-10-27 08:43+0000\n" "Last-Translator: Richard Bos \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -40,4 +40,4 @@ msgstr "Bestand versies" #: templates/settings.php:4 msgid "Enable" -msgstr "Zet aan" +msgstr "Activeer" diff --git a/l10n/nl/gallery.po b/l10n/nl/gallery.po deleted file mode 100644 index 4297c4c4792418baf75d41966f302fb3151dacaf..0000000000000000000000000000000000000000 --- a/l10n/nl/gallery.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Erik Bent , 2012. -# , 2012. -# Richard Bos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 16:54+0000\n" -"Last-Translator: Richard Bos \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:42 -msgid "Pictures" -msgstr "Plaatjes" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Deel gallerie" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Fout:" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Interne fout" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Diashow" diff --git a/l10n/nl/impress.po b/l10n/nl/impress.po deleted file mode 100644 index 2232e105985522cff37fa460602525030d2f47c8..0000000000000000000000000000000000000000 --- a/l10n/nl/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/nl/lib.po b/l10n/nl/lib.po index cd2b08ab96298cbf382bf6d68cda57191d62bb60..f8ebea3c492ef47cbc23d737e3c9990a44753922 100644 --- a/l10n/nl/lib.po +++ b/l10n/nl/lib.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Richard Bos , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:05+0200\n" -"PO-Revision-Date: 2012-10-12 20:43+0000\n" -"Last-Translator: Richard Bos \n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-16 05:45+0000\n" +"Last-Translator: Len \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -40,21 +42,21 @@ msgstr "Apps" #: app.php:311 msgid "Admin" -msgstr "Administrator" +msgstr "Beheerder" -#: files.php:328 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP download is uitgeschakeld." -#: files.php:329 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Bestanden moeten één voor één worden gedownload." -#: files.php:329 files.php:354 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Terug naar bestanden" -#: files.php:353 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "De geselecteerde bestanden zijn te groot om een zip bestand te maken." @@ -62,7 +64,7 @@ msgstr "De geselecteerde bestanden zijn te groot om een zip bestand te maken." msgid "Application is not enabled" msgstr "De applicatie is niet actief" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Authenticatie fout" @@ -70,45 +72,67 @@ msgstr "Authenticatie fout" msgid "Token expired. Please reload page." msgstr "Token verlopen. Herlaad de pagina." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Bestanden" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Tekst" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Afbeeldingen" + +#: template.php:103 msgid "seconds ago" msgstr "seconden geleden" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 minuut geleden" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minuten geleden" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 uur geleden" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d uren geleden" + +#: template.php:108 msgid "today" msgstr "vandaag" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "gisteren" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d dagen geleden" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "vorige maand" -#: template.php:96 -msgid "months ago" -msgstr "maanden geleden" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d maanden geleden" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "vorig jaar" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "jaar geleden" @@ -124,3 +148,8 @@ msgstr "bijgewerkt" #: updater.php:80 msgid "updates check is disabled" msgstr "Meest recente versie controle is uitgeschakeld" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Kon categorie \"%s\" niet vinden" diff --git a/l10n/nl/media.po b/l10n/nl/media.po deleted file mode 100644 index f06251189b0e868cd1b60f8c05a2668a2e166350..0000000000000000000000000000000000000000 --- a/l10n/nl/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# , 2011. -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Dutch (http://www.transifex.net/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Muziek" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Afspelen" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pauzeer" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Vorige" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Volgende" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Dempen" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Dempen uit" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Collectie opnieuw scannen" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artiest" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titel" diff --git a/l10n/nl/settings.po b/l10n/nl/settings.po index 0090a534ed6e9202fbe121fee5b17780d9de2a0c..1b28da61ba6c59845971b772224a72e0a0ebf360 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/settings.po @@ -10,15 +10,16 @@ # , 2011, 2012. # , 2012. # , 2011. +# , 2012. # , 2012. # Richard Bos , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-13 02:05+0200\n" -"PO-Revision-Date: 2012-10-12 19:36+0000\n" -"Last-Translator: Richard Bos \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: Len \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,70 +27,73 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Kan de lijst niet van de App store laden" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Authenticatie fout" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Groep bestaat al" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Niet in staat om groep toe te voegen" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Kan de app. niet activeren" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-mail bewaard" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ongeldige e-mail" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID is aangepast" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ongeldig verzoek" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Niet in staat om groep te verwijderen" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Authenticatie fout" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Niet in staat om gebruiker te verwijderen" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Taal aangepast" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Admins kunnen zichzelf niet uit de admin groep verwijderen" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Niet in staat om gebruiker toe te voegen aan groep %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Niet in staat om gebruiker te verwijderen uit groep %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Uitschakelen" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Inschakelen" @@ -97,100 +101,13 @@ msgstr "Inschakelen" msgid "Saving..." msgstr "Aan het bewaren....." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Nederlands" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Veiligheidswaarschuwing" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Uw data folder en uw bestanden zijn hoogst waarschijnlijk vanaf het internet bereikbaar. Het .htaccess bestand dat ownCloud meelevert werkt niet. Het is ten zeerste aangeraden om uw webserver zodanig te configureren, dat de data folder niet bereikbaar is vanaf het internet of verplaatst uw data folder naar een locatie buiten de webserver document root." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Voer één taak uit met elke pagina die wordt geladen" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php is bij een webcron dienst geregistreerd. Roep de cron.php pagina in de owncloud root via http één maal per minuut op." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Gebruik de systeem cron dienst. Gebruik, eens per minuut, het bestand cron.php in de owncloud map via de systeem cronjob." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Delen" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Zet de Deel API aan" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Sta apps toe om de Deel API te gebruiken" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Sta links toe" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Sta gebruikers toe om items via links publiekelijk te maken" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Sta verder delen toe" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Sta gebruikers toe om items nogmaals te delen" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Sta gebruikers toe om met iedereen te delen" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Sta gebruikers toe om alleen met gebruikers in hun groepen te delen" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Meer" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Ontwikkeld door de ownCloud gemeenschap, de bron code is gelicenseerd onder de AGPL." - #: templates/apps.php:10 msgid "Add your App" -msgstr "Voeg je App toe" +msgstr "App toevoegen" #: templates/apps.php:11 msgid "More Apps" @@ -214,32 +131,32 @@ msgstr "Documentatie" #: templates/help.php:10 msgid "Managing Big Files" -msgstr "Onderhoud van grote bestanden" +msgstr "Instellingen voor grote bestanden" #: templates/help.php:11 msgid "Ask a question" msgstr "Stel een vraag" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemen bij het verbinden met de helpdatabank." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Ga er zelf heen." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Beantwoord" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Je hebt %s gebruikt van de beschikbare %s" +msgid "You have used %s of the available %s" +msgstr "U heeft %s van de %s beschikbaren gebruikt" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" -msgstr "Desktop en mobiele synchronisatie apparaten" +msgstr "Desktop en mobiele synchronisatie applicaties" #: templates/personal.php:13 msgid "Download" @@ -271,15 +188,15 @@ msgstr "Wijzig wachtwoord" #: templates/personal.php:30 msgid "Email" -msgstr "mailadres" +msgstr "E-mailadres" #: templates/personal.php:31 msgid "Your email address" -msgstr "Jouw mailadres" +msgstr "Uw e-mailadres" #: templates/personal.php:32 msgid "Fill in an email address to enable password recovery" -msgstr "Vul een mailadres in om je wachtwoord te kunnen herstellen" +msgstr "Vul een e-mailadres in om wachtwoord reset uit te kunnen voeren" #: templates/personal.php:38 templates/personal.php:39 msgid "Language" @@ -291,7 +208,17 @@ msgstr "Help met vertalen" #: templates/personal.php:51 msgid "use this address to connect to your ownCloud in your file manager" -msgstr "gebruik dit adres om verbinding te maken met ownCloud in uw bestandsbeheerprogramma" +msgstr "Gebruik het bovenstaande adres om verbinding te maken met ownCloud in uw bestandbeheerprogramma" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Ontwikkeld door de ownCloud gemeenschap, de bron code is gelicenseerd onder de AGPL." #: templates/users.php:21 templates/users.php:76 msgid "Name" @@ -319,7 +246,7 @@ msgstr "Andere" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "Groep Administrator" +msgstr "Groep beheerder" #: templates/users.php:82 msgid "Quota" diff --git a/l10n/nl/tasks.po b/l10n/nl/tasks.po deleted file mode 100644 index f413e75158dfafae832789d42e1adb7c3f23d861..0000000000000000000000000000000000000000 --- a/l10n/nl/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/nl/user_ldap.po b/l10n/nl/user_ldap.po index e40f9e685f10e7206cf87195a4c23b1eb2425ae5..e6819a7693788a1345cbeb2a91d1a7d132c031d5 100644 --- a/l10n/nl/user_ldap.po +++ b/l10n/nl/user_ldap.po @@ -3,168 +3,169 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-13 00:05+0100\n" +"PO-Revision-Date: 2012-11-12 09:35+0000\n" +"Last-Translator: Len \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: templates/settings.php:8 msgid "Host" -msgstr "" +msgstr "Host" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "Je kunt het protocol weglaten, tenzij je SSL vereist. Start in dat geval met ldaps://" #: templates/settings.php:9 msgid "Base DN" -msgstr "" +msgstr "Basis DN" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" +msgstr "Je kunt het standaard DN voor gebruikers en groepen specificeren in het tab Geavanceerd." #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "Gebruikers DN" #: templates/settings.php:10 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "De DN van de client gebruiker waarmee de verbinding zal worden gemaakt, bijv. uid=agent,dc=example,dc=com. Voor anonieme toegang laat je het DN en het wachtwoord leeg." #: templates/settings.php:11 msgid "Password" -msgstr "" +msgstr "Wachtwoord" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "Voor anonieme toegang, laat de DN en het wachtwoord leeg." #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "Gebruikers Login Filter" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "Definiëerd de toe te passen filter indien er geprobeerd wordt in te loggen. %%uid vervangt de gebruikersnaam in de login actie." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "gebruik %%uid placeholder, bijv. \"uid=%%uid\"" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "Gebruikers Lijst Filter" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "Definiëerd de toe te passen filter voor het ophalen van gebruikers." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "" +msgstr "zonder een placeholder, bijv. \"objectClass=person\"" #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "Groep Filter" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "Definiëerd de toe te passen filter voor het ophalen van groepen." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "" +msgstr "zonder een placeholder, bijv. \"objectClass=posixGroup\"" #: templates/settings.php:17 msgid "Port" -msgstr "" +msgstr "Poort" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "Basis Gebruikers Structuur" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "Basis Groupen Structuur" #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "Groepslid associatie" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "Gebruik TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "Gebruik niet voor SSL connecties, deze mislukken." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "Niet-hoofdlettergevoelige LDAP server (Windows)" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "Schakel SSL certificaat validatie uit." #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Als de connectie alleen werkt met deze optie, importeer dan het LDAP server SSL certificaat naar je ownCloud server." #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "Niet aangeraden, gebruik alleen voor test doeleinden." #: templates/settings.php:24 msgid "User Display Name Field" -msgstr "" +msgstr "Gebruikers Schermnaam Veld" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "Het te gebruiken LDAP attribuut voor het genereren van de ownCloud naam voor de gebruikers." #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "Groep Schermnaam Veld" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "Het te gebruiken LDAP attribuut voor het genereren van de ownCloud naam voor de groepen." #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "in bytes" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." -msgstr "" +msgstr "in seconden. Een verandering maakt de cache leeg." #: templates/settings.php:30 msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "" +msgstr "Laat leeg voor de gebruikersnaam (standaard). Of, specificeer een LDAP/AD attribuut." #: templates/settings.php:32 msgid "Help" -msgstr "" +msgstr "Help" diff --git a/l10n/nl/user_migrate.po b/l10n/nl/user_migrate.po deleted file mode 100644 index cf6e2f0cd31c06ed3f5ec8341356481c067a8e38..0000000000000000000000000000000000000000 --- a/l10n/nl/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/nl/user_openid.po b/l10n/nl/user_openid.po deleted file mode 100644 index 4b7c8f7370fa91b9f6b7577f65c60f187635a4f8..0000000000000000000000000000000000000000 --- a/l10n/nl/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Richard Bos , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 19:20+0000\n" -"Last-Translator: Richard Bos \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Dit is een OpenID server. Voor meer informatie, zie" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identiteit: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Realm: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Gebruiker: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Login" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Fout: Geen gebruiker geselecteerd" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "u kan met dit adres bij andere sites authenticeren" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Geautoriseerde OpenID provider" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Uw adres bij Wordpress, Identi.ca, …" diff --git a/l10n/nl/files_odfviewer.po b/l10n/nl/user_webdavauth.po similarity index 60% rename from l10n/nl/files_odfviewer.po rename to l10n/nl/user_webdavauth.po index 5825a94a3fd117f4fca743dc5b373d8ced2dfbe0..a9532440298ce8809bae55bd7c9aa82a4569144b 100644 --- a/l10n/nl/files_odfviewer.po +++ b/l10n/nl/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Richard Bos , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 15:21+0000\n" +"Last-Translator: Richard Bos \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/nn_NO/admin_dependencies_chk.po b/l10n/nn_NO/admin_dependencies_chk.po deleted file mode 100644 index e15c7820ec8fe0b4f756434c033735e4d15d617b..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/nn_NO/admin_migrate.po b/l10n/nn_NO/admin_migrate.po deleted file mode 100644 index 5509000343735faa659e81ec90bdd28f347dcccf..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/nn_NO/bookmarks.po b/l10n/nn_NO/bookmarks.po deleted file mode 100644 index 0eb3cfe7ed46048e31f7ab0e54a44f5bd2cce57a..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/nn_NO/calendar.po b/l10n/nn_NO/calendar.po deleted file mode 100644 index 97f56855aecef4017c1895c9a353c3a829a34013..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Feil kalender" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ny tidssone:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Endra tidssone" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ugyldig førespurnad" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Bursdag" - -#: lib/app.php:122 -msgid "Business" -msgstr "Forretning" - -#: lib/app.php:123 -msgid "Call" -msgstr "Telefonsamtale" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klientar" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Forsending" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Høgtid" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idear" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Reise" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileum" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Møte" - -#: lib/app.php:131 -msgid "Other" -msgstr "Anna" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personleg" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Prosjekt" - -#: lib/app.php:134 -msgid "Questions" -msgstr "SpørsmÃ¥l" - -#: lib/app.php:135 -msgid "Work" -msgstr "Arbeid" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ny kalender" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ikkje gjenta" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Kvar dag" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Kvar veke" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Kvar vekedag" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Annakvar veke" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Kvar mÃ¥nad" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Kvart Ã¥r" - -#: lib/object.php:388 -msgid "never" -msgstr "aldri" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "av førekomstar" - -#: lib/object.php:390 -msgid "by date" -msgstr "av dato" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "av mÃ¥nadsdag" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "av vekedag" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "MÃ¥ndag" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Tysdag" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Onsdag" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Torsdag" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Fredag" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Laurdag" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Søndag" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "hendingas veke av mÃ¥nad" - -#: lib/object.php:428 -msgid "first" -msgstr "første" - -#: lib/object.php:429 -msgid "second" -msgstr "andre" - -#: lib/object.php:430 -msgid "third" -msgstr "tredje" - -#: lib/object.php:431 -msgid "fourth" -msgstr "fjerde" - -#: lib/object.php:432 -msgid "fifth" -msgstr "femte" - -#: lib/object.php:433 -msgid "last" -msgstr "siste" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januar" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februar" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Mars" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mai" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Desember" - -#: lib/object.php:488 -msgid "by events date" -msgstr "av hendingsdato" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "av Ã¥rsdag(ar)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "av vekenummer" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "av dag og mÃ¥nad" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Dato" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Heile dagen" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Manglande felt" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Tittel" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "FrÃ¥ dato" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "FrÃ¥ tid" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Til dato" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Til tid" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Hendinga endar før den startar" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Det oppstod ein databasefeil" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Veke" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "MÃ¥nad" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Liste" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "I dag" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav-lenkje" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Last ned" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Endra" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Slett" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ny kalender" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Endra kalendarar" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Visingsnamn" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiv" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalenderfarge" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Lagra" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Lagra" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Avbryt" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Endra ein hending" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Eksporter" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Tittel pÃ¥ hendinga" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategori" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Heildagshending" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "FrÃ¥" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Til" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Avanserte alternativ" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Stad" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Stad for hendinga" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Skildring" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Skildring av hendinga" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Gjenta" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avansert" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Vel vekedagar" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Vel dagar" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "og hendingane dag for Ã¥r." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "og hendingane dag for mÃ¥nad." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Vel mÃ¥nedar" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Vel veker" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "og hendingane veke av Ã¥ret." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervall" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Ende" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "førekomstar" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Lag ny kalender" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importer ei kalenderfil" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Namn for ny kalender" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importer" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Steng dialog" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Opprett ei ny hending" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Tidssone" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24t" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12t" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/nn_NO/contacts.po b/l10n/nn_NO/contacts.po deleted file mode 100644 index aee7e8725621197d9c772efed9e745922b957778..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Ein feil oppstod ved (de)aktivering av adressebok." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Eit problem oppstod ved Ã¥ oppdatere adresseboka." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Det kom ei feilmelding dÃ¥ kontakta vart lagt til." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Kan ikkje leggja til tomt felt." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Minst eit av adressefelta mÃ¥ fyllast ut." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informasjonen om vCard-et er feil, ver venleg og last sida pÃ¥ nytt." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kotaktar" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Dette er ikkje di adressebok." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Fann ikkje kontakten." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Arbeid" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Heime" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Tekst" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Tale" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faks" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Personsøkjar" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Bursdag" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Legg til kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adressebøker" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisasjon" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Slett" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Føretrekt" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefonnummer" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Epost" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresse" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Last ned kontakt" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Slett kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Skriv" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postboks" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Utvida" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Stad" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Region/fylke" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postnummer" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Land" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adressebok" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Last ned" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Endra" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Ny adressebok" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Lagre" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Kanseller" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index d2c8eef0fb9a779937b9061009ec35b26630311d..9102a6e6a3d83b066de1f3a6645f1814389c024d 100644 --- a/l10n/nn_NO/core.po +++ b/l10n/nn_NO/core.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,208 +19,241 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Innstillingar" -#: js/js.js:645 -msgid "January" +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:645 -msgid "February" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:645 -msgid "March" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:645 -msgid "April" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:645 -msgid "May" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:645 -msgid "June" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:646 -msgid "July" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:646 -msgid "August" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:646 -msgid "September" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:646 -msgid "October" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:646 -msgid "November" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:646 -msgid "December" +#: js/js.js:699 +msgid "last year" msgstr "" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" -msgstr "" +msgstr "Kanseller" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" +msgstr "Feil" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:103 +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Passord" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -233,19 +266,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Du vil fÃ¥ ei lenkje for Ã¥ nullstilla passordet via epost." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Førespurt" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Feil ved innlogging!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Brukarnamn" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Be om nullstilling" @@ -297,72 +330,187 @@ msgstr "Fann ikkje skyen" msgid "Edit categories" msgstr "" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" +msgstr "Legg til" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" msgstr "" #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Lag ein admin-konto" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avansert" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datamappe" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfigurer databasen" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "vil bli nytta" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Databasebrukar" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Databasepassord" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Databasenamn" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Databasetenar" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Fullfør oppsettet" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Søndag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "MÃ¥ndag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Tysdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Onsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Torsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Fredag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Laurdag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Mars" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Desember" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "Vev tjenester under din kontroll" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Logg ut" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Gløymt passordet?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "hugs" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Logg inn" @@ -377,3 +525,17 @@ msgstr "førre" #: templates/part.pagenavi.php:20 msgid "next" msgstr "neste" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 7dc3daff6d21f113d03f6a3fbdffa6a741098ef5..4fb42612d8240b247ccdcd6237dc1b0ebc28e8f0 100644 --- a/l10n/nn_NO/files.po +++ b/l10n/nn_NO/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,194 +24,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Ingen feil, fila vart lasta opp" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Den opplasta fila er større enn variabelen upload_max_filesize i php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Den opplasta fila er større enn variabelen MAX_FILE_SIZE i HTML-skjemaet" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Fila vart berre delvis lasta opp" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ingen filer vart lasta opp" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Manglar ei mellombels mappe" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Filer" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Slett" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Lukk" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Namn" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Storleik" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Endra" -#: js/files.js:777 -msgid "folder" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -222,80 +193,76 @@ msgstr "" msgid "Maximum upload size" msgstr "Maksimal opplastingsstorleik" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Lagre" #: templates/index.php:7 msgid "New" msgstr "Ny" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tekst fil" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Mappe" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Last opp" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Ingenting her. Last noko opp!" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Last ned" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "For stor opplasting" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filene du prøver Ã¥ laste opp er større enn maksgrensa til denne tenaren." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/nn_NO/files_pdfviewer.po b/l10n/nn_NO/files_pdfviewer.po deleted file mode 100644 index 4933207f3aba1a6d8d84e288c2b7e7d426167b15..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/nn_NO/files_texteditor.po b/l10n/nn_NO/files_texteditor.po deleted file mode 100644 index 1b89b35f6a89668b7bc6c01a2279c7b2fbc51563..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/nn_NO/gallery.po b/l10n/nn_NO/gallery.po deleted file mode 100644 index 3d4eedd0ef08366773522b9f454c420038af3859..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.net/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Søk pÃ¥ nytt" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Tilbake" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/nn_NO/impress.po b/l10n/nn_NO/impress.po deleted file mode 100644 index e14be1cd5ba085ca92ca25ccbd08a1f65d8cc5bb..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/nn_NO/lib.po b/l10n/nn_NO/lib.po index aa993826b379f15e52e0d303df5477efc4cbae69..ee2fd61fe0257ca5913edfdb266023843da083a1 100644 --- a/l10n/nn_NO/lib.po +++ b/l10n/nn_NO/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "Hjelp" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Personleg" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Innstillingar" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "Brukarar" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "Feil i autentisering" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Filer" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Tekst" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/nn_NO/media.po b/l10n/nn_NO/media.po deleted file mode 100644 index a5f4d0d1d3c52b1cfed0bfe486d8b1244e446181..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.net/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musikk" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Spel" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pause" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Førre" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Neste" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Demp" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Skru pÃ¥ lyd" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Skann samlinga pÃ¥ nytt" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artist" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Tittel" diff --git a/l10n/nn_NO/settings.po b/l10n/nn_NO/settings.po index fe6db9eb5f07d81a98e21977801c91fd38d2610c..b38152f949c45a444bb749a003ce57eacf5eea5c 100644 --- a/l10n/nn_NO/settings.po +++ b/l10n/nn_NO/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +19,73 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Klarer ikkje Ã¥ laste inn liste fra App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Feil i autentisering" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-postadresse lagra" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ugyldig e-postadresse" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID endra" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ugyldig førespurnad" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Feil i autentisering" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "SprÃ¥k endra" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "SlÃ¥ av" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "SlÃ¥ pÃ¥" @@ -90,97 +93,10 @@ msgstr "SlÃ¥ pÃ¥" msgid "Saving..." msgstr "" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Nynorsk" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -213,21 +129,21 @@ msgstr "" msgid "Ask a question" msgstr "Spør om noko" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problem ved tilkopling til hjelpedatabasen." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "GÃ¥ der pÃ¥ eigen hand." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Svar" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -236,7 +152,7 @@ msgstr "" #: templates/personal.php:13 msgid "Download" -msgstr "" +msgstr "Last ned" #: templates/personal.php:19 msgid "Your password was changed" @@ -286,6 +202,16 @@ msgstr "Hjelp oss Ã¥ oversett" msgid "use this address to connect to your ownCloud in your file manager" msgstr "bruk denne adressa for Ã¥ kopla til ownCloud i filhandsamaren din" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Namn" @@ -308,7 +234,7 @@ msgstr "" #: templates/users.php:55 templates/users.php:138 msgid "Other" -msgstr "" +msgstr "Anna" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" diff --git a/l10n/nn_NO/tasks.po b/l10n/nn_NO/tasks.po deleted file mode 100644 index 9ebb58b030c9ee66508cc87cad266f4966721fc6..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/nn_NO/user_migrate.po b/l10n/nn_NO/user_migrate.po deleted file mode 100644 index 40d6c0dac7ad6d5a8df8be9b62dd654a406b5423..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/nn_NO/user_openid.po b/l10n/nn_NO/user_openid.po deleted file mode 100644 index eb58b25dcb4e64d43cc02e258003b9e78af68c3e..0000000000000000000000000000000000000000 --- a/l10n/nn_NO/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/nn_NO/files_odfviewer.po b/l10n/nn_NO/user_webdavauth.po similarity index 74% rename from l10n/nn_NO/files_odfviewer.po rename to l10n/nn_NO/user_webdavauth.po index dfc0447df64d3a6d5335d4b9b9154d4b1ae3130a..417e761a7891dcc1307aa8e98af81d3cbcac8992 100644 --- a/l10n/nn_NO/files_odfviewer.po +++ b/l10n/nn_NO/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nn_NO\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/oc/core.po b/l10n/oc/core.po index f2a698077eabae37fd7a25a170fb5c9fdec571b2..47c795e20b2cf673d5cbc7dbcc9edfe71c24d23c 100644 --- a/l10n/oc/core.po +++ b/l10n/oc/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-29 02:02+0200\n" -"PO-Revision-Date: 2012-09-28 22:00+0000\n" -"Last-Translator: tartafione \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nom d'applicacion pas donat." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Pas de categoria d'ajustar ?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "La categoria exista ja :" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Pas de categorias seleccionadas per escafar." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Configuracion" -#: js/js.js:645 -msgid "January" -msgstr "Genièr" +#: js/js.js:688 +msgid "seconds ago" +msgstr "segonda a" -#: js/js.js:645 -msgid "February" -msgstr "Febrièr" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 minuta a" -#: js/js.js:645 -msgid "March" -msgstr "Març" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Abril" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mai" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Junh" +#: js/js.js:693 +msgid "today" +msgstr "uèi" -#: js/js.js:646 -msgid "July" -msgstr "Julhet" +#: js/js.js:694 +msgid "yesterday" +msgstr "ièr" -#: js/js.js:646 -msgid "August" -msgstr "Agost" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "Septembre" +#: js/js.js:696 +msgid "last month" +msgstr "mes passat" -#: js/js.js:646 -msgid "October" -msgstr "Octobre" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Novembre" +#: js/js.js:698 +msgid "months ago" +msgstr "meses a" -#: js/js.js:646 -msgid "December" -msgstr "Decembre" +#: js/js.js:699 +msgid "last year" +msgstr "an passat" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "ans a" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Causís" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Anulla" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Non" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ã’c" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "D'accòrdi" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Pas de categorias seleccionadas per escafar." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Error" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Error al partejar" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Error al non partejar" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Error al cambiar permissions" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Partejat amb tu e lo grop" - -#: js/share.js:130 -msgid "by" -msgstr "per" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Partejat amb tu per" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Parteja amb" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Parteja amb lo ligam" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Parat per senhal" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Senhal" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Met la data d'expiracion" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Data d'expiracion" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Parteja tras corrièl :" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Deguns trobat" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Tornar partejar es pas permis" -#: js/share.js:250 -msgid "Shared in" -msgstr "Partejat dins" - -#: js/share.js:250 -msgid "with" -msgstr "amb" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:292 msgid "Unshare" msgstr "Non parteje" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "pòt modificar" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "Contraròtle d'acces" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "crea" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "met a jorn" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "escafa" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "parteja" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Parat per senhal" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Error al metre de la data d'expiracion" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Error setting expiration date" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "senhal d'ownCloud tornat botar" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Reçaupràs un ligam per tornar botar ton senhal via corrièl." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Requesit" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Fracàs de login" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nom d'usancièr" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Tornar botar requesit" @@ -296,72 +329,187 @@ msgstr "Nívol pas trobada" msgid "Edit categories" msgstr "Edita categorias" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Ajusta" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Avertiment de securitat" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea un compte admin" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avançat" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Dorsièr de donadas" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configura la basa de donadas" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "serà utilizat" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Usancièr de la basa de donadas" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Senhal de la basa de donadas" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nom de la basa de donadas" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Espandi de taula de basa de donadas" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Ã’ste de basa de donadas" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Configuracion acabada" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Dimenge" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Diluns" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Dimarç" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Dimecres" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Dijòus" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Divendres" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Dissabte" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Genièr" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Febrièr" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Març" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Abril" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Junh" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Julhet" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Agost" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Septembre" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Octobre" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Novembre" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Decembre" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "Services web jos ton contraròtle" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Sortida" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "L'as perdut lo senhal ?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "bremba-te" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Dintrada" @@ -376,3 +524,17 @@ msgstr "dariièr" #: templates/part.pagenavi.php:20 msgid "next" msgstr "venent" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index 1e4cc9832bcc8113157b43a64ba43ec79cafc072..a433382c7ce6331a1f15462699e650a6098d735e 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/files.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 11:55+0000\n" -"Last-Translator: tartafione \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,195 +23,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Amontcargament capitat, pas d'errors" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Lo fichièr amontcargat es tròp bèl per la directiva «upload_max_filesize » del php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Lo fichièr amontcargat es mai gròs que la directiva «MAX_FILE_SIZE» especifiada dins lo formulari HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Lo fichièr foguèt pas completament amontcargat" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Cap de fichièrs son estats amontcargats" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Un dorsièr temporari manca" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "L'escriptura sul disc a fracassat" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Fichièrs" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Non parteja" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Escafa" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Torna nomenar" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "existís jà" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "remplaça" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "nom prepausat" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "anulla" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "remplaçat" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "defar" -#: js/filelist.js:241 -msgid "with" -msgstr "amb" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" -msgstr "Non partejat" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "escafat" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Fichièr ZIP a se far, aquò pòt trigar un briu." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Impossible d'amontcargar lo teu fichièr qu'es un repertòri o que ten pas que 0 octet." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Error d'amontcargar" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Al esperar" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 fichièr al amontcargar" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "fichièrs al amontcargar" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Amontcargar anullat." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. " -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nom invalid, '/' es pas permis." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:668 -msgid "files scanned" -msgstr "Fichièr explorat" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "error pendant l'exploracion" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nom" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Talha" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificat" -#: js/files.js:778 -msgid "folder" -msgstr "Dorsièr" - -#: js/files.js:780 -msgid "folders" -msgstr "Dorsièrs" - -#: js/files.js:788 -msgid "file" -msgstr "fichièr" - -#: js/files.js:790 -msgid "files" -msgstr "fichièrs" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "secondas" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minuta" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "minutas" - -#: js/files.js:839 -msgid "today" -msgstr "uèi" - -#: js/files.js:840 -msgid "yesterday" -msgstr "ièr" - -#: js/files.js:841 -msgid "days ago" -msgstr "jorns" - -#: js/files.js:842 -msgid "last month" -msgstr "mes passat" +#: js/files.js:814 +msgid "1 folder" +msgstr "" -#: js/files.js:844 -msgid "months ago" -msgstr "meses" +#: js/files.js:816 +msgid "{count} folders" +msgstr "" -#: js/files.js:845 -msgid "last year" -msgstr "an passat" +#: js/files.js:824 +msgid "1 file" +msgstr "" -#: js/files.js:846 -msgid "years ago" -msgstr "ans" +#: js/files.js:826 +msgid "{count} files" +msgstr "" #: templates/admin.php:5 msgid "File handling" @@ -221,27 +192,27 @@ msgstr "Manejament de fichièr" msgid "Maximum upload size" msgstr "Talha maximum d'amontcargament" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. possible: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Requesit per avalcargar gropat de fichièrs e dorsièr" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Activa l'avalcargament de ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 es pas limitat" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Talha maximum de dintrada per fichièrs ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Enregistra" @@ -249,52 +220,48 @@ msgstr "Enregistra" msgid "New" msgstr "Nòu" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Fichièr de tèxte" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Dorsièr" -#: templates/index.php:11 -msgid "From url" -msgstr "Dempuèi l'URL" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Amontcarga" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr " Anulla l'amontcargar" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Pas res dedins. Amontcarga qualquaren" -#: templates/index.php:50 -msgid "Share" -msgstr "Parteja" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Avalcarga" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Amontcargament tròp gròs" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Los fichièrs que sias a amontcargar son tròp pesucs per la talha maxi pel servidor." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Los fiichièrs son a èsser explorats, " -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Exploracion en cors" diff --git a/l10n/oc/lib.po b/l10n/oc/lib.po index e3081d2cff9481d193a57d8f0aa973ec7f1c4752..150704cd23513bbdeb7154ee433e123c4d81e2e3 100644 --- a/l10n/oc/lib.po +++ b/l10n/oc/lib.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-29 02:02+0200\n" -"PO-Revision-Date: 2012-09-28 22:27+0000\n" -"Last-Translator: tartafione \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +42,19 @@ msgstr "Apps" msgid "Admin" msgstr "Admin" -#: files.php:327 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Avalcargar los ZIP es inactiu." -#: files.php:328 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Los fichièrs devan èsser avalcargats un per un." -#: files.php:328 files.php:353 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Torna cap als fichièrs" -#: files.php:352 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -62,7 +62,7 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Error d'autentificacion" @@ -70,57 +70,84 @@ msgstr "Error d'autentificacion" msgid "Token expired. Please reload page." msgstr "" -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Fichièrs" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "segonda a" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 minuta a" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minutas a" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "uèi" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "ièr" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d jorns a" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "mes passat" -#: template.php:96 -msgid "months ago" -msgstr "meses a" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "an passat" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "ans a" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "a jorn" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "la verificacion de mesa a jorn es inactiva" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/oc/settings.po b/l10n/oc/settings.po index ee1c36f5c817211ecfe9f701522b6b71a53d451a..a4f159a9c57c12aec840662749a7a07b1895d789 100644 --- a/l10n/oc/settings.po +++ b/l10n/oc/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,70 +18,73 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Pas possible de cargar la tièra dempuèi App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Error d'autentificacion" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Lo grop existís ja" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Pas capable d'apondre un grop" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Pòt pas activar app. " -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Corrièl enregistrat" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Corrièl incorrècte" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID cambiat" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Demanda invalida" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Pas capable d'escafar un grop" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Error d'autentificacion" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Pas capable d'escafar un usancièr" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Lengas cambiadas" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Pas capable d'apondre un usancièr al grop %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Pas capable de tira un usancièr del grop %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Desactiva" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Activa" @@ -89,97 +92,10 @@ msgstr "Activa" msgid "Saving..." msgstr "Enregistra..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Avertiment de securitat" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Executa un prètfach amb cada pagina cargada" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Utiliza lo servici cron de ton sistèm operatiu. Executa lo fichièr cron.php dins lo dorsier owncloud tras cronjob del sistèm cada minuta." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Al partejar" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Activa API partejada" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Jornal" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mai d'aquò" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Ajusta ton App" @@ -212,22 +128,22 @@ msgstr "Al bailejar de fichièrs pesucasses" msgid "Ask a question" msgstr "Respond a una question" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemas al connectar de la basa de donadas d'ajuda" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Vas çai manualament" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Responsa" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "As utilizat %s dels %s disponibles" +msgid "You have used %s of the available %s" +msgstr "" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -285,6 +201,16 @@ msgstr "Ajuda a la revirada" msgid "use this address to connect to your ownCloud in your file manager" msgstr "utiliza aquela adreiça per te connectar al ownCloud amb ton explorator de fichièrs" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nom" diff --git a/l10n/oc/user_webdavauth.po b/l10n/oc/user_webdavauth.po new file mode 100644 index 0000000000000000000000000000000000000000..c7f850ce1797ee330bda8e36c828bc7db4af7a43 --- /dev/null +++ b/l10n/oc/user_webdavauth.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: oc\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "" diff --git a/l10n/pl/admin_dependencies_chk.po b/l10n/pl/admin_dependencies_chk.po deleted file mode 100644 index 952d2fda7b41d7284d428329cd3a7076d4c616cf..0000000000000000000000000000000000000000 --- a/l10n/pl/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Cyryl Sochacki <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-21 02:03+0200\n" -"PO-Revision-Date: 2012-08-20 09:01+0000\n" -"Last-Translator: Cyryl Sochacki <>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Moduł php-json jest wymagane przez wiele aplikacji do wewnętrznej łączności" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Modude php-curl jest wymagany do pobrania tytułu strony podczas dodawania zakładki" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Moduł php-gd jest wymagany do tworzenia miniatury obrazów" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Moduł php-ldap jest wymagany aby połączyć się z serwerem ldap" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Moduł php-zip jest wymagany aby pobrać wiele plików na raz" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Moduł php-mb_multibyte jest wymagany do poprawnego zarządzania kodowaniem." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Moduł php-ctype jest wymagany do sprawdzania poprawności danych." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Moduł php-xml jest wymagany do udostępniania plików przy użyciu protokołu webdav." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Dyrektywy allow_url_fopen użytkownika php.ini powinna być ustawiona na 1 do pobierania bazy wiedzy z serwerów OCS" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Moduł php-pdo jest wymagany do przechowywania danych owncloud w bazie danych." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Stan zależności" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Używane przez:" diff --git a/l10n/pl/admin_migrate.po b/l10n/pl/admin_migrate.po deleted file mode 100644 index 096d746c63f51fab9e48a72525265bc8a2f609b9..0000000000000000000000000000000000000000 --- a/l10n/pl/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Cyryl Sochacki <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 12:31+0000\n" -"Last-Translator: Cyryl Sochacki <>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Eksportuj instancję ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Spowoduje to utworzenie pliku skompresowanego, który zawiera dane tej instancji ownCloud.⎠proszę wybrać typ eksportu:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Eksport" diff --git a/l10n/pl/bookmarks.po b/l10n/pl/bookmarks.po deleted file mode 100644 index 4eee7979454c6559bc10f7bd103daeab56a242ed..0000000000000000000000000000000000000000 --- a/l10n/pl/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/pl/calendar.po b/l10n/pl/calendar.po deleted file mode 100644 index 8039d555b5804cd1ebb9b12fa8a3f24c3de5e7d8..0000000000000000000000000000000000000000 --- a/l10n/pl/calendar.po +++ /dev/null @@ -1,816 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Cyryl Sochacki <>, 2012. -# Marcin MaÅ‚ecki , 2011, 2012. -# Piotr Sokół , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Brak kalendarzy" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Brak wydzarzeÅ„" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "NieprawidÅ‚owy kalendarz" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Import nieudany" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "zdarzenie zostaÅ‚o zapisane w twoim kalendarzu" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nowa strefa czasowa:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zmieniono strefÄ™ czasowÄ…" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "NieprawidÅ‚owe żądanie" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendarz" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM rrrr" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, rrrr" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Urodziny" - -#: lib/app.php:122 -msgid "Business" -msgstr "Interesy" - -#: lib/app.php:123 -msgid "Call" -msgstr "Rozmowy" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klienci" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Dostawcy" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "ÅšwiÄ™ta" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "PomysÅ‚y" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Podróże" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileusze" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Spotkania" - -#: lib/app.php:131 -msgid "Other" -msgstr "Inne" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Osobiste" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekty" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Pytania" - -#: lib/app.php:135 -msgid "Work" -msgstr "Zawodowe" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "przez" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "nienazwany" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nowy kalendarz" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Brak" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Codziennie" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Tygodniowo" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Każdego dnia tygodnia" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Dwa razy w tygodniu" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "MiesiÄ™cznie" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Rocznie" - -#: lib/object.php:388 -msgid "never" -msgstr "nigdy" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "przez wydarzenia" - -#: lib/object.php:390 -msgid "by date" -msgstr "po dacie" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "miesiÄ™cznie" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "tygodniowo" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "PoniedziaÅ‚ek" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Wtorek" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Åšroda" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Czwartek" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "PiÄ…tek" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sobota" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Niedziela" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "wydarzenia miesiÄ…ca" - -#: lib/object.php:428 -msgid "first" -msgstr "pierwszy" - -#: lib/object.php:429 -msgid "second" -msgstr "drugi" - -#: lib/object.php:430 -msgid "third" -msgstr "trzeci" - -#: lib/object.php:431 -msgid "fourth" -msgstr "czwarty" - -#: lib/object.php:432 -msgid "fifth" -msgstr "piÄ…ty" - -#: lib/object.php:433 -msgid "last" -msgstr "ostatni" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "StyczeÅ„" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Luty" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Marzec" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "KwiecieÅ„" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maj" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Czerwiec" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Lipiec" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "SierpieÅ„" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "WrzesieÅ„" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Październik" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Listopad" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "GrudzieÅ„" - -#: lib/object.php:488 -msgid "by events date" -msgstr "po datach wydarzeÅ„" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "po dniach roku" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "po tygodniach" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "przez dzieÅ„ i miesiÄ…c" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "N." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Pn." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Wt." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Åšr." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Cz." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Pt." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "S." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Sty." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Lut." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Kwi." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Maj." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Cze." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Lip." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Sie." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Wrz." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Paź." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Lis." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Gru." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "CaÅ‚y dzieÅ„" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "BrakujÄ…ce pola" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Nazwa" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Od daty" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Od czasu" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Do daty" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Do czasu" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Wydarzenie koÅ„czy siÄ™ przed rozpoczÄ™ciem" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Awaria bazy danych" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "TydzieÅ„" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "MiesiÄ…c" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Dzisiaj" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Twoje kalendarze" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "WyÅ›wietla odnoÅ›nik CalDAV" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Współdzielone kalendarze" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Brak współdzielonych kalendarzy" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Współdziel kalendarz" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Pobiera kalendarz" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Edytuje kalendarz" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Usuwa kalendarz" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "współdzielisz z" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nowy kalendarz" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Edytowanie kalendarza" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "WyÅ›wietlana nazwa" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktywny" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kolor" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Zapisz" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "PrzeÅ›lij" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Anuluj" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Edytowanie wydarzenia" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Wyeksportuj" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informacja o wydarzeniach" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Powtarzanie" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Uczestnicy" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Współdziel" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Nazwa wydarzenia" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategoria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Oddziel kategorie przecinkami" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Edytuj kategorie" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Wydarzenie caÅ‚odniowe" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Od" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Do" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Opcje zaawansowane" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Lokalizacja" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Lokalizacja wydarzenia" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Opis" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Opis wydarzenia" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Powtarzanie" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Zaawansowane" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Wybierz dni powszechne" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Wybierz dni" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "oraz wydarzenia roku" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "oraz wydarzenia miesiÄ…ca" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Wybierz miesiÄ…ce" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Wybierz tygodnie" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "oraz wydarzenia roku." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "InterwaÅ‚" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Koniec" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "wystÄ…pienia" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "stwórz nowy kalendarz" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Zaimportuj plik kalendarza" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "ProszÄ™ wybierz kalendarz" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nazwa kalendarza" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Import" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Zamknij okno" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Tworzenie nowego wydarzenia" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Zobacz wydarzenie" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "nie zaznaczono kategorii" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "z" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "w" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Strefa czasowa" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "wiÄ™cej informacji" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Odczytać tylko linki iCalendar" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Użytkownicy" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "wybierz użytkowników" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Edytowalne" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupy" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "wybierz grupy" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "uczyÅ„ publicznym" diff --git a/l10n/pl/contacts.po b/l10n/pl/contacts.po deleted file mode 100644 index c0d1d34b6924722bc4b96034493a1f9ed2e47b5e..0000000000000000000000000000000000000000 --- a/l10n/pl/contacts.po +++ /dev/null @@ -1,957 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Bartek , 2012. -# Cyryl Sochacki <>, 2012. -# , 2012. -# Marcin MaÅ‚ecki , 2011, 2012. -# Piotr Sokół , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "BÅ‚Ä…d (de)aktywowania książki adresowej." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id nie ustawione." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Nie można zaktualizować książki adresowej z pustÄ… nazwÄ…." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "BÅ‚Ä…d uaktualniania książki adresowej." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Brak opatrzonego ID " - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "BÅ‚Ä…d ustawieÅ„ sumy kontrolnej" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Nie zaznaczono kategorii do usuniÄ™cia" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nie znaleziono książek adresowych" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nie znaleziono kontaktów." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "WystÄ…piÅ‚ bÅ‚Ä…d podczas dodawania kontaktu." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "nazwa elementu nie jest ustawiona." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Nie można parsować kontaktu:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Nie można dodać pustego elementu." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Należy wypeÅ‚nić przynajmniej jedno pole adresu." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Próba dodania z duplikowanej wÅ‚aÅ›ciwoÅ›ci:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informacje o vCard sÄ… nieprawidÅ‚owe. ProszÄ™ odÅ›wieżyć stronÄ™." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Brak ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "WystÄ…piÅ‚ bÅ‚Ä…d podczas przetwarzania VCard ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "checksum-a nie ustawiona" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informacje na temat vCard sÄ… niepoprawne. ProszÄ™ przeÅ‚aduj stronÄ™:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Gdyby coÅ› poszÅ‚o FUBAR." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "ID kontaktu nie zostaÅ‚ utworzony." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "BÅ‚Ä…d odczytu zdjÄ™cia kontaktu." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "WystÄ…piÅ‚ bÅ‚Ä…d podczas zapisywania pliku tymczasowego." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Wczytywane zdjÄ™cie nie jest poprawne." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Brak kontaktu id." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Åšcieżka do zdjÄ™cia nie zostaÅ‚a podana." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Plik nie istnieje:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "BÅ‚Ä…d Å‚adowania obrazu." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "BÅ‚Ä…d pobrania kontaktu." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "BÅ‚Ä…d uzyskiwania wÅ‚aÅ›ciwoÅ›ci ZDJĘCIA." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "BÅ‚Ä…d zapisu kontaktu." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "BÅ‚Ä…d zmiany rozmiaru obrazu" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "BÅ‚Ä…d przycinania obrazu" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "BÅ‚Ä…d utworzenia obrazu tymczasowego" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "BÅ‚Ä…d znajdowanie obrazu: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "WystÄ…piÅ‚ bÅ‚Ä…d podczas wysyÅ‚ania kontaktów do magazynu." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Nie byÅ‚o bÅ‚Ä™dów, plik wyczytano poprawnie." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "ZaÅ‚adowany plik przekracza wielkość upload_max_filesize w php.ini " - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Wczytywany plik przekracza wielkość MAX_FILE_SIZE, która zostaÅ‚a okreÅ›lona w formularzu HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "ZaÅ‚adowany plik tylko częściowo zostaÅ‚ wysÅ‚any." - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Plik nie zostaÅ‚ zaÅ‚adowany" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Brak folderu tymczasowego" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Nie można zapisać obrazu tymczasowego: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Nie można wczytać obrazu tymczasowego: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Plik nie zostaÅ‚ zaÅ‚adowany. Nieznany bÅ‚Ä…d" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontakty" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Niestety, ta funkcja nie zostaÅ‚a jeszcze zaimplementowana" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Nie wdrożono" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Nie można pobrać prawidÅ‚owego adresu." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "BÅ‚Ä…d" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Ta wÅ‚aÅ›ciwość nie może być pusta." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Nie można serializować elementów." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "\"deleteProperty' wywoÅ‚ana bez argumentu typu. ProszÄ™ raportuj na bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "ZmieÅ„ nazwÄ™" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Å»adne pliki nie zostaÅ‚y zaznaczone do wysÅ‚ania." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Plik, który próbujesz wysÅ‚ać przekracza maksymalny rozmiar pliku przekazywania na tym serwerze." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "BÅ‚Ä…d wczytywania zdjÄ™cia profilu." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Wybierz typ" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Niektóre kontakty sÄ… zaznaczone do usuniÄ™cia, ale nie sÄ… usuniÄ™te jeszcze. ProszÄ™ czekać na ich usuniÄ™cie." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Czy chcesz scalić te książki adresowe?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Wynik: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importowane, " - -#: js/loader.js:49 -msgid " failed." -msgstr " nie powiodÅ‚o siÄ™." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Nazwa nie może być pusta." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Nie znaleziono książki adresowej:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "To nie jest Twoja książka adresowa." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Nie można odnaleźć kontaktu." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GG" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Praca" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Dom" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Inne" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Komórka" - -#: lib/app.php:203 -msgid "Text" -msgstr "PoÅ‚Ä…czenie tekstowe" - -#: lib/app.php:204 -msgid "Voice" -msgstr "PoÅ‚Ä…czenie gÅ‚osowe" - -#: lib/app.php:205 -msgid "Message" -msgstr "Wiadomość" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faks" - -#: lib/app.php:207 -msgid "Video" -msgstr "PoÅ‚Ä…czenie wideo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Urodziny" - -#: lib/app.php:253 -msgid "Business" -msgstr "Biznesowe" - -#: lib/app.php:254 -msgid "Call" -msgstr "WywoÅ‚anie" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Klienci" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "DorÄ™czanie" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "ÅšwiÄ™ta" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "PomysÅ‚y" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Podróż" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubileusz" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Spotkanie" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Osobiste" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projekty" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Pytania" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} Urodzony" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Dodaj kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Import" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Ustawienia" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Książki adresowe" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Zamknij" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Skróty klawiatury" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Nawigacja" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "NastÄ™pny kontakt na liÅ›cie" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Poprzedni kontakt na liÅ›cie" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "RozwiÅ„/ZwiÅ„ bieżącÄ… książkÄ™ adresowÄ…" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "NastÄ™pna książka adresowa" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Poprzednia książka adresowa" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Akcje" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "OdÅ›wież listÄ™ kontaktów" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Dodaj nowy kontakt" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Dodaj nowa książkÄ™ adresowÄ…" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "UsuÅ„ obecny kontakt" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Upuść fotografiÄ™ aby zaÅ‚adować" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "UsuÅ„ aktualne zdjÄ™cie" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Edytuj aktualne zdjÄ™cie" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Wczytaj nowe zdjÄ™cie" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Wybierz zdjÄ™cie z ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format niestandardowy, krótkie nazwy, imiÄ™ i nazwisko, Odwracać lub Odwrócić z przecinkiem" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Edytuj szczegóły nazwy" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizacja" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Usuwa książkÄ™ adresowÄ…" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Nazwa" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Wpisz nazwÄ™" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Strona www" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.jakasstrona.pl" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Idż do strony www" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-rrrr" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupy" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Oddziel grupy przecinkami" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Edytuj grupy" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferowane" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "OkreÅ›l prawidÅ‚owy adres e-mail." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Wpisz adres email" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Mail na adres" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "UsuÅ„ adres mailowy" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Wpisz numer telefonu" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "UsuÅ„ numer telefonu" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Zobacz na mapie" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Edytuj szczegóły adresu" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Dodaj notatkÄ™ tutaj." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Dodaj pole" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adres" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Uwaga" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Pobiera kontakt" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Usuwa kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Tymczasowy obraz zostaÅ‚ usuniÄ™ty z pamiÄ™ci podrÄ™cznej." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Edytuj adres" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Typ" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Skrzynka pocztowa" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Ulica" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Ulica i numer" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Rozszerzony" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Numer lokalu" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Miasto" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Region" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Np. stanu lub prowincji" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Kod pocztowy" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Kod pocztowy" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Kraj" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Książka adresowa" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Prefiksy Hon." - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Panna" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Ms" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Pan" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Pani" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Podaj imiÄ™" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Dodatkowe nazwy" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Nazwa rodziny" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Sufiksy Hon." - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importuj plik z kontaktami" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "ProszÄ™ wybrać książkÄ™ adresowÄ…" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "utwórz nowÄ… książkÄ™ adresowÄ…" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nazwa nowej książki adresowej" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "importuj kontakty" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Nie masz żadnych kontaktów w swojej książce adresowej." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Dodaj kontakt" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Wybierz książki adresowe" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Wpisz nazwÄ™" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Wprowadź opis" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "adres do synchronizacji CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "wiÄ™cej informacji" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Pierwszy adres" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Pokaż link CardDAV" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Pokaż tylko do odczytu Å‚Ä…cze VCF" - -#: templates/settings.php:26 -msgid "Share" -msgstr "UdostÄ™pnij" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Pobiera książkÄ™ adresowÄ…" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Edytuje książkÄ™ adresowÄ…" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nowa książka adresowa" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nazwa" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Opis" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Zapisz" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Anuluj" - -#: templates/settings.php:52 -msgid "More..." -msgstr "WiÄ™cej..." diff --git a/l10n/pl/core.po b/l10n/pl/core.po index de4980565c01f011c6df2722a17dcf053037b80c..d4a3154242d8f0a981e266d15ecf7e0f32571dbf 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/core.po @@ -6,17 +6,19 @@ # Cyryl Sochacki <>, 2012. # Cyryl Sochacki , 2012. # Kamil DomaÅ„ski , 2011. +# , 2012. # Marcin MaÅ‚ecki , 2011, 2012. # Marcin MaÅ‚ecki , 2011. # , 2011. # , 2012. # Piotr Sokół , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-06 02:03+0200\n" -"PO-Revision-Date: 2012-10-05 21:17+0000\n" +"POT-Creation-Date: 2012-11-28 00:10+0100\n" +"PO-Revision-Date: 2012-11-27 08:53+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -25,208 +27,241 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Brak nazwy dla aplikacji" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Typ kategorii nie podany." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Brak kategorii" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Ta kategoria już istnieje" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Typ obiektu nie podany." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID nie podany." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "BÅ‚Ä…d dodania %s do ulubionych." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Nie ma kategorii zaznaczonych do usuniÄ™cia." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "BÅ‚Ä…d usuniÄ™cia %s z ulubionych." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Ustawienia" -#: js/js.js:645 -msgid "January" -msgstr "StyczeÅ„" +#: js/js.js:704 +msgid "seconds ago" +msgstr "sekund temu" -#: js/js.js:645 -msgid "February" -msgstr "Luty" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 minute temu" -#: js/js.js:645 -msgid "March" -msgstr "Marzec" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} minut temu" -#: js/js.js:645 -msgid "April" -msgstr "KwiecieÅ„" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 godzine temu" -#: js/js.js:645 -msgid "May" -msgstr "Maj" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} godzin temu" -#: js/js.js:645 -msgid "June" -msgstr "Czerwiec" +#: js/js.js:709 +msgid "today" +msgstr "dziÅ›" -#: js/js.js:646 -msgid "July" -msgstr "Lipiec" +#: js/js.js:710 +msgid "yesterday" +msgstr "wczoraj" -#: js/js.js:646 -msgid "August" -msgstr "SierpieÅ„" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} dni temu" -#: js/js.js:646 -msgid "September" -msgstr "WrzesieÅ„" +#: js/js.js:712 +msgid "last month" +msgstr "ostani miesiÄ…c" -#: js/js.js:646 -msgid "October" -msgstr "Październik" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} miesiÄ™cy temu" -#: js/js.js:646 -msgid "November" -msgstr "Listopad" +#: js/js.js:714 +msgid "months ago" +msgstr "miesiÄ™cy temu" -#: js/js.js:646 -msgid "December" -msgstr "GrudzieÅ„" +#: js/js.js:715 +msgid "last year" +msgstr "ostatni rok" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "lat temu" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Wybierz" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Anuluj" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nie" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Tak" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Nie ma kategorii zaznaczonych do usuniÄ™cia." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Typ obiektu nie jest okreÅ›lony." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:494 -#: js/share.js:506 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "BÅ‚Ä…d" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Nazwa aplikacji nie jest okreÅ›lona." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Żądany plik {file} nie jest zainstalowany!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "BÅ‚Ä…d podczas współdzielenia" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "BÅ‚Ä…d podczas zatrzymywania współdzielenia" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "BÅ‚Ä…d przy zmianie uprawnieÅ„" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Współdzielony z tobÄ… i grupÄ…" - -#: js/share.js:130 -msgid "by" -msgstr "przez" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "UdostÄ™pnione Tobie i grupie {group} przez {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Współdzielone z taba przez" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "UdostÄ™pnione Ci przez {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Współdziel z" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Współdziel z link" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Zabezpieczone hasÅ‚em" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "HasÅ‚o" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Ustaw datÄ™ wygaÅ›niÄ™cia" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Data wygaÅ›niÄ™cia" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Współdziel poprzez maila" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Nie znaleziono ludzi" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Współdzielenie nie jest możliwe" -#: js/share.js:250 -msgid "Shared in" -msgstr "Współdziel w" - -#: js/share.js:250 -msgid "with" -msgstr "z" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Współdzielone w {item} z {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Zatrzymaj współdzielenie" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "można edytować" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "kontrola dostÄ™pu" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "utwórz" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "uaktualnij" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "usuÅ„" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "współdziel" -#: js/share.js:322 js/share.js:481 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" msgstr "Zabezpieczone hasÅ‚em" -#: js/share.js:494 +#: js/share.js:533 msgid "Error unsetting expiration date" msgstr "BÅ‚Ä…d niszczenie daty wygaÅ›niÄ™cia" -#: js/share.js:506 +#: js/share.js:545 msgid "Error setting expiration date" msgstr "BÅ‚Ä…d podczas ustawiania daty wygaÅ›niÄ™cia" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "restart hasÅ‚a" @@ -239,15 +274,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "OdnoÅ›nik sÅ‚użący do resetowania hasÅ‚a zostanie wysÅ‚any na adres e-mail." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Żądane" +msgid "Reset email send." +msgstr "WyÅ›lij zresetowany email." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Nie udaÅ‚o siÄ™ zalogować!" +msgid "Request failed!" +msgstr "Próba nieudana!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nazwa użytkownika" @@ -303,72 +338,187 @@ msgstr "Nie odnaleziono chmury" msgid "Edit categories" msgstr "Edytuj kategoriÄ™" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Dodaj" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Ostrzeżenie o zabezpieczeniach" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "NiedostÄ™pny bezpieczny generator liczb losowych, należy wÅ‚Ä…czyć rozszerzenie OpenSSL w PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Bez bezpiecznego generatora liczb losowych, osoba atakujÄ…ca może być w stanie przewidzieć resetujÄ…ce hasÅ‚o tokena i przejąć kontrolÄ™ nad swoim kontem." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Katalog danych (data) i pliki sÄ… prawdopodobnie dostÄ™pnego z Internetu. Sprawdź plik .htaccess oraz konfiguracjÄ™ serwera (hosta). Sugerujemy, skonfiguruj swój serwer w taki sposób, żeby dane katalogu nie byÅ‚y dostÄ™pne lub przenieść katalog danych spoza głównego dokumentu webserwera." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Tworzenie konta administratora" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Zaawansowane" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Katalog danych" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfiguracja bazy danych" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "zostanie użyte" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Użytkownik bazy danych" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "HasÅ‚o do bazy danych" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nazwa bazy danych" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Obszar tabel bazy danych" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Komputer bazy danych" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "ZakoÅ„cz konfigurowanie" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Niedziela" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "PoniedziaÅ‚ek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Wtorek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Åšroda" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Czwartek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "PiÄ…tek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sobota" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "StyczeÅ„" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Luty" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Marzec" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "KwiecieÅ„" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Maj" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Czerwiec" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Lipiec" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "SierpieÅ„" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "WrzesieÅ„" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Październik" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Listopad" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "GrudzieÅ„" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "usÅ‚ugi internetowe pod kontrolÄ…" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Wylogowuje użytkownika" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatyczne logowanie odrzucone!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "JeÅ›li nie byÅ‚o zmianie niedawno hasÅ‚o, Twoje konto może być zagrożone!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "ProszÄ™ zmienić swoje hasÅ‚o, aby zabezpieczyć swoje konto ponownie." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Nie pamiÄ™tasz hasÅ‚a?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "ZapamiÄ™tanie" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Zaloguj" @@ -383,3 +533,17 @@ msgstr "wstecz" #: templates/part.pagenavi.php:20 msgid "next" msgstr "naprzód" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Ostrzeżenie o zabezpieczeniach!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Sprawdź swoje hasło.
            Ze wzglÄ™dów bezpieczeÅ„stwa możesz zostać czasami poproszony o wprowadzenie hasÅ‚a ponownie." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Zweryfikowane" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index 5cae59fb451f6ea57a317e3c07173d759ca74afc..8c9563a58e4e52ac31e6a8570387f2395eafef57 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/files.po @@ -9,13 +9,14 @@ # , 2011. # , 2012. # Piotr Sokół , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-06 02:02+0200\n" -"PO-Revision-Date: 2012-10-05 21:03+0000\n" -"Last-Translator: Cyryl Sochacki \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 10:15+0000\n" +"Last-Translator: Thomasso \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,195 +29,166 @@ msgid "There is no error, the file uploaded with success" msgstr "PrzesÅ‚ano plik" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Rozmiar przesÅ‚anego pliku przekracza maksymalnÄ… wartość dyrektywy upload_max_filesize, zawartÄ… w pliku php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Wgrany plik przekracza wartość upload_max_filesize zdefiniowanÄ… w php.ini: " -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Rozmiar przesÅ‚anego pliku przekracza maksymalnÄ… wartość dyrektywy upload_max_filesize, zawartÄ… formularzu HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Plik przesÅ‚ano tylko częściowo" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nie przesÅ‚ano żadnego pliku" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Brak katalogu tymczasowego" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "BÅ‚Ä…d zapisu na dysk" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Pliki" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Nie udostÄ™pniaj" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Usuwa element" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "ZmieÅ„ nazwÄ™" -#: js/filelist.js:189 js/filelist.js:191 -msgid "already exists" -msgstr "Już istnieje" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} już istnieje" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "zastap" -#: js/filelist.js:189 +#: js/filelist.js:201 msgid "suggest name" msgstr "zasugeruj nazwÄ™" -#: js/filelist.js:189 js/filelist.js:191 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "anuluj" -#: js/filelist.js:238 js/filelist.js:240 -msgid "replaced" -msgstr "zastÄ…pione" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "zastÄ…piony {new_name}" -#: js/filelist.js:238 js/filelist.js:240 js/filelist.js:272 js/filelist.js:274 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "wróć" -#: js/filelist.js:240 -msgid "with" -msgstr "z" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "zastÄ…piony {new_name} z {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "UdostÄ™pniane wstrzymane {files}" -#: js/filelist.js:272 -msgid "unshared" -msgstr "Nie udostÄ™pnione" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "usuniÄ™to {files}" -#: js/filelist.js:274 -msgid "deleted" -msgstr "skasuj" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Niepoprawna nazwa, Znaki '\\', '/', '<', '>', ':', '\"', '|', '?' oraz '*'sÄ… niedozwolone." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Generowanie pliku ZIP, może potrwać pewien czas." -#: js/files.js:215 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nie można wczytać pliku jeÅ›li jest katalogiem lub ma 0 bajtów" -#: js/files.js:215 +#: js/files.js:218 msgid "Upload Error" msgstr "BÅ‚Ä…d wczytywania" -#: js/files.js:243 js/files.js:348 js/files.js:378 +#: js/files.js:235 +msgid "Close" +msgstr "Zamknij" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "OczekujÄ…ce" -#: js/files.js:263 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 plik wczytany" -#: js/files.js:266 js/files.js:311 js/files.js:326 -msgid "files uploading" -msgstr "pliki wczytane" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} przesyÅ‚anie plików" -#: js/files.js:329 js/files.js:362 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Wczytywanie anulowane." -#: js/files.js:432 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "WysyÅ‚anie pliku jest w toku. Teraz opuszczajÄ…c stronÄ™ wysyÅ‚anie zostanie anulowane." -#: js/files.js:502 -msgid "Invalid name, '/' is not allowed." -msgstr "NieprawidÅ‚owa nazwa '/' jest niedozwolone." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "BÅ‚Ä™dna nazwa folderu. Nazwa \"Shared\" jest zarezerwowana dla Owncloud" -#: js/files.js:679 -msgid "files scanned" -msgstr "Pliki skanowane" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} pliki skanowane" -#: js/files.js:687 +#: js/files.js:712 msgid "error while scanning" msgstr "WystÄ…piÅ‚ bÅ‚Ä…d podczas skanowania" -#: js/files.js:760 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nazwa" -#: js/files.js:761 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Rozmiar" -#: js/files.js:762 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Czas modyfikacji" -#: js/files.js:789 -msgid "folder" -msgstr "folder" - -#: js/files.js:791 -msgid "folders" -msgstr "foldery" - -#: js/files.js:799 -msgid "file" -msgstr "plik" - -#: js/files.js:801 -msgid "files" -msgstr "pliki" - -#: js/files.js:845 -msgid "seconds ago" -msgstr "sekund temu" - -#: js/files.js:846 -msgid "minute ago" -msgstr "minutÄ™ temu" - -#: js/files.js:847 -msgid "minutes ago" -msgstr "minut temu" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 folder" -#: js/files.js:850 -msgid "today" -msgstr "dziÅ›" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} foldery" -#: js/files.js:851 -msgid "yesterday" -msgstr "wczoraj" +#: js/files.js:824 +msgid "1 file" +msgstr "1 plik" -#: js/files.js:852 -msgid "days ago" -msgstr "dni temu" - -#: js/files.js:853 -msgid "last month" -msgstr "ostani miesiÄ…c" - -#: js/files.js:855 -msgid "months ago" -msgstr "miesiÄ™cy temu" - -#: js/files.js:856 -msgid "last year" -msgstr "ostatni rok" - -#: js/files.js:857 -msgid "years ago" -msgstr "lat temu" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} pliki" #: templates/admin.php:5 msgid "File handling" @@ -226,27 +198,27 @@ msgstr "ZarzÄ…dzanie plikami" msgid "Maximum upload size" msgstr "Maksymalny rozmiar wysyÅ‚anego pliku" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. możliwych" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Wymagany do pobierania wielu plików i folderów" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "WÅ‚Ä…cz pobieranie ZIP-paczki" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 jest nielimitowane" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Maksymalna wielkość pliku wejÅ›ciowego ZIP " -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Zapisz" @@ -254,52 +226,48 @@ msgstr "Zapisz" msgid "New" msgstr "Nowy" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Plik tekstowy" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Katalog" -#: templates/index.php:11 -msgid "From url" -msgstr "Z adresu" +#: templates/index.php:14 +msgid "From link" +msgstr "Z linku" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "PrzeÅ›lij" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "PrzestaÅ„ wysyÅ‚ać" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Brak zawartoÅ›ci. ProszÄ™ wysÅ‚ać pliki!" -#: templates/index.php:50 -msgid "Share" -msgstr "Współdziel" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Pobiera element" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "WysyÅ‚any plik ma za duży rozmiar" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Pliki które próbujesz przesÅ‚ać, przekraczajÄ… maksymalnÄ…, dopuszczalnÄ… wielkość." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Skanowanie plików, proszÄ™ czekać." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Aktualnie skanowane" diff --git a/l10n/pl/files_pdfviewer.po b/l10n/pl/files_pdfviewer.po deleted file mode 100644 index 00b45cf929595e87e45de87a08dfb62499237b5c..0000000000000000000000000000000000000000 --- a/l10n/pl/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/pl/files_texteditor.po b/l10n/pl/files_texteditor.po deleted file mode 100644 index 039282380a63385c9c543ad1908d2e317dac0508..0000000000000000000000000000000000000000 --- a/l10n/pl/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/pl/gallery.po b/l10n/pl/gallery.po deleted file mode 100644 index ff5aef8d74e233158b0e90174dbfe03bc3c09757..0000000000000000000000000000000000000000 --- a/l10n/pl/gallery.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Bartek , 2012. -# Cyryl Sochacki <>, 2012. -# Marcin MaÅ‚ecki , 2012. -# Piotr Sokół , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-30 10:41+0000\n" -"Last-Translator: Marcin MaÅ‚ecki \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "ZdjÄ™cia" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "UdostÄ™pnij galeriÄ™" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "BÅ‚Ä…d: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "BÅ‚Ä…d wewnÄ™trzny" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Pokaz slajdów" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Wróć" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "UsuÅ„ potwierdzenie" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Czy chcesz usunąć album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "ZmieÅ„ nazwÄ™ albumu" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nowa nazwa albumu" diff --git a/l10n/pl/lib.po b/l10n/pl/lib.po index 09263ad142cde1bc8148086c79b7faa94c5696c2..0cebd731831151bfba1e27fa497fb371d3fa9c77 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/lib.po @@ -4,13 +4,15 @@ # # Translators: # Cyryl Sochacki <>, 2012. +# Cyryl Sochacki , 2012. +# Marcin MaÅ‚ecki , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-04 02:01+0200\n" -"PO-Revision-Date: 2012-09-03 07:02+0000\n" -"Last-Translator: Cyryl Sochacki <>\n" +"POT-Creation-Date: 2012-11-28 00:10+0100\n" +"PO-Revision-Date: 2012-11-27 08:54+0000\n" +"Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,43 +20,43 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Pomoc" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Osobiste" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Ustawienia" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Użytkownicy" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Aplikacje" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Administrator" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "Pobieranie ZIP jest wyÅ‚Ä…czone." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Pliki muszÄ… zostać pobrane pojedynczo." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Wróć do plików" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Wybrane pliki sÄ… zbyt duże, aby wygenerować plik zip." @@ -62,7 +64,7 @@ msgstr "Wybrane pliki sÄ… zbyt duże, aby wygenerować plik zip." msgid "Application is not enabled" msgstr "Aplikacja nie jest wÅ‚Ä…czona" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "BÅ‚Ä…d uwierzytelniania" @@ -70,57 +72,84 @@ msgstr "BÅ‚Ä…d uwierzytelniania" msgid "Token expired. Please reload page." msgstr "Token wygasÅ‚. ProszÄ™ ponownie zaÅ‚adować stronÄ™." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Pliki" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "PoÅ‚Ä…czenie tekstowe" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Obrazy" + +#: template.php:103 msgid "seconds ago" msgstr "sekund temu" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 minutÄ™ temu" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minut temu" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 godzine temu" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d godzin temu" + +#: template.php:108 msgid "today" msgstr "dzisiaj" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "wczoraj" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d dni temu" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "ostatni miesiÄ…c" -#: template.php:96 -msgid "months ago" -msgstr "miesiÄ™cy temu" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d miesiecy temu" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "ostatni rok" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "lat temu" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s jest dostÄ™pna. Uzyskaj wiÄ™cej informacji" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "Aktualne" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "wybór aktualizacji jest wyÅ‚Ä…czony" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Nie można odnaleźć kategorii \"%s\"" diff --git a/l10n/pl/media.po b/l10n/pl/media.po deleted file mode 100644 index d8f1ee9e41035266843c7cf23354d8d940416b3d..0000000000000000000000000000000000000000 --- a/l10n/pl/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Marcin MaÅ‚ecki , 2011. -# , 2011. -# Piotr Sokół , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Polish (http://www.transifex.net/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Muzyka" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Odtwarzaj" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Wstrzymaj" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Poprzedni" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "NastÄ™pny" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Wycisz" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "WyÅ‚Ä…cz wyciszenie" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Przeszukaj kolekcjÄ™" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Wykonawca" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "TytuÅ‚" diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index 6210dabfa580280443db4cbfaf1ad71a95e74021..beb685551e5476fcd7943474575ecc6ebf3e2a7d 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/settings.po @@ -12,13 +12,14 @@ # , 2011. # , 2012. # Piotr Sokół , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-11 02:04+0200\n" -"PO-Revision-Date: 2012-10-10 06:42+0000\n" -"Last-Translator: Cyryl Sochacki \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 10:16+0000\n" +"Last-Translator: Thomasso \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,70 +27,73 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Nie mogÄ™ zaÅ‚adować listy aplikacji" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "BÅ‚Ä…d uwierzytelniania" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Grupa już istnieje" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Nie można dodać grupy" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Nie można wÅ‚Ä…czyć aplikacji." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email zapisany" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Niepoprawny email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "Zmieniono OpenID" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "NieprawidÅ‚owe żądanie" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Nie można usunąć grupy" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "BÅ‚Ä…d uwierzytelniania" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Nie można usunąć użytkownika" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "JÄ™zyk zmieniony" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Administratorzy nie mogÄ… usunąć siÄ™ sami z grupy administratorów." + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Nie można dodać użytkownika do grupy %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Nie można usunąć użytkownika z grupy %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "WyÅ‚Ä…cz" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "WÅ‚Ä…cz" @@ -97,97 +101,10 @@ msgstr "WÅ‚Ä…cz" msgid "Saving..." msgstr "Zapisywanie..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Polski" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Ostrzeżenia bezpieczeÅ„stwa" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Twój katalog danych i pliki sÄ… prawdopodobnie dostÄ™pne z Internetu. Plik .htaccess, który dostarcza ownCloud nie dziaÅ‚a. Sugerujemy, aby skonfigurować serwer WWW w taki sposób, aby katalog danych nie byÅ‚ dostÄ™pny lub przenieść katalog danych poza główny katalog serwera WWW." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Wykonanie jednego zadania z każdej strony wczytywania" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php jest zarejestrowany w usÅ‚udze webcron. PrzywoÅ‚aj stronÄ™ cron.php w katalogu głównym owncloud raz na minute przez http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Użyj usÅ‚ugi systemowej cron. PrzywoÅ‚aj plik cron.php z katalogu owncloud przez systemowe cronjob raz na minute." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "UdostÄ™pnianij" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "WÅ‚Ä…cz udostÄ™pniane API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Zezwalaj aplikacjom na używanie API" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Zezwalaj na Å‚Ä…cza" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Zezwalaj użytkownikom na puliczne współdzielenie elementów za pomocÄ… linków" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Zezwól na ponowne udostÄ™pnianie" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Zezwalaj użytkownikom na ponowne współdzielenie elementów już z nimi współdzilonych" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Zezwalaj użytkownikom na współdzielenie z kimkolwiek" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Zezwalaj użytkownikom współdzielić z użytkownikami ze swoich grup" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "WiÄ™cej" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Stwirzone przez spoÅ‚eczność ownCloud, the kod źródÅ‚owy na licencji AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Dodaj aplikacje" @@ -220,22 +137,22 @@ msgstr "ZarzÄ…dzanie dużymi plikami" msgid "Ask a question" msgstr "Zadaj pytanie" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problem z poÅ‚Ä…czeniem z bazÄ… danych." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Przejdź na stronÄ™ rÄ™cznie." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Odpowiedź" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Używasz %s z dostÄ™pnych %s" +msgid "You have used %s of the available %s" +msgstr "Korzystasz z %s z dostÄ™pnych %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -293,6 +210,16 @@ msgstr "Pomóż w tÅ‚umaczeniu" msgid "use this address to connect to your ownCloud in your file manager" msgstr "ProszÄ™ użyć tego adresu, aby uzyskać dostÄ™p do usÅ‚ugi ownCloud w menedżerze plików." +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Stwirzone przez spoÅ‚eczność ownCloud, the kod źródÅ‚owy na licencji AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nazwa" diff --git a/l10n/pl/tasks.po b/l10n/pl/tasks.po deleted file mode 100644 index 39026f902095149510bd1a6ba67c9df564b1e373..0000000000000000000000000000000000000000 --- a/l10n/pl/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Cyryl Sochacki <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-21 02:03+0200\n" -"PO-Revision-Date: 2012-08-20 09:20+0000\n" -"Last-Translator: Cyryl Sochacki <>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "ZÅ‚a data/czas" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Zadania" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Brak kategorii" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "NieokreÅ›lona" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=najwyższy" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=Å›redni" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=maÅ‚o ważny " - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Podsumowanie puste" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "NieprawidÅ‚owy procent wykonania" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "NieprawidÅ‚owy priorytet" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Dodaj zadanie" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Kolejność - domyÅ›lna" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Kolejność - wg lista" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Kolejność - wg kompletnoÅ›ci" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Kolejność - wg lokalizacja" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Kolejność - wg priorytetu" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Kolejność - wg nazywy" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "ÅadujÄ™ zadania" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Ważne" - -#: templates/tasks.php:23 -msgid "More" -msgstr "WiÄ™cej" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Mniej" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "UsuÅ„" diff --git a/l10n/pl/user_migrate.po b/l10n/pl/user_migrate.po deleted file mode 100644 index 4b85ca025a20f63b5b24694dfa3cd2d879e574b8..0000000000000000000000000000000000000000 --- a/l10n/pl/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Cyryl Sochacki <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-21 02:03+0200\n" -"PO-Revision-Date: 2012-08-20 09:09+0000\n" -"Last-Translator: Cyryl Sochacki <>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Eksport" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "CoÅ› poszÅ‚o źle, podczas generowania pliku eksportu" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "WystÄ…piÅ‚ bÅ‚Ä…d" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Eksportuj konto użytkownika" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Spowoduje to utworzenie pliku skompresowanego, który zawiera konto ownCloud." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Importuj konto użytkownika" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "paczka Zip użytkownika ownCloud" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importuj" diff --git a/l10n/pl/user_openid.po b/l10n/pl/user_openid.po deleted file mode 100644 index c199a51dcb2d4591ffdb4a73bd074f19c1423e79..0000000000000000000000000000000000000000 --- a/l10n/pl/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Cyryl Sochacki <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-21 02:03+0200\n" -"PO-Revision-Date: 2012-08-20 09:12+0000\n" -"Last-Translator: Cyryl Sochacki <>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "To jest punkt koÅ„cowy serwera OpenID. Aby uzyskać wiÄ™cej informacji zobacz" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Tożsamość: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Obszar: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Użytkownik: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Login" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "BÅ‚Ä…d:Nie wybrano użytkownika" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "można uwierzytelniać do innych witryn z tego adresu" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Autoryzowani dostawcy OpenID" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Twój adres na Wordpress, Identi.ca, …" diff --git a/l10n/pl/files_odfviewer.po b/l10n/pl/user_webdavauth.po similarity index 62% rename from l10n/pl/files_odfviewer.po rename to l10n/pl/user_webdavauth.po index 0c090a229ff8d8649c64a51c53f9c36c6fc6c31f..9b783571dfb6c208a8d7fa860fd0af3787906858 100644 --- a/l10n/pl/files_odfviewer.po +++ b/l10n/pl/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyryl Sochacki , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 13:30+0000\n" +"Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/pl_PL/core.po b/l10n/pl_PL/core.po index 4b3dc86393d1681c8bde1d6c929dd2f05d961987..020d06551d08b5776b8902cb04e5bdf5e2216d74 100644 --- a/l10n/pl_PL/core.po +++ b/l10n/pl_PL/core.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,208 +17,241 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" +msgstr "Ustawienia" + +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:645 -msgid "January" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:645 -msgid "February" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:645 -msgid "March" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:645 -msgid "April" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:645 -msgid "May" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:645 -msgid "June" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:646 -msgid "July" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:646 -msgid "August" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:646 -msgid "September" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:646 -msgid "October" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:646 -msgid "November" +#: js/js.js:699 +msgid "last year" msgstr "" -#: js/js.js:646 -msgid "December" +#: js/js.js:700 +msgid "years ago" msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -231,19 +264,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" +msgid "Reset email send." msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" +msgid "Request failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" -msgstr "" +msgstr "Nazwa użytkownika" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -295,72 +328,187 @@ msgstr "" msgid "Edit categories" msgstr "" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +523,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index cbd95ad6ef775a7024d4f06a43c5e6541a314c00..2e1909d5c9f7e01668e0cf5e41a1114c6828bbce 100644 --- a/l10n/pl_PL/files.po +++ b/l10n/pl_PL/files.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,194 +22,165 @@ msgid "There is no error, the file uploaded with success" msgstr "" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -220,80 +191,76 @@ msgstr "" msgid "Maximum upload size" msgstr "" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Zapisz" #: templates/index.php:7 msgid "New" msgstr "" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/pl_PL/lib.po b/l10n/pl_PL/lib.po index b39526b5c0697208a4e0096b46f705c497ded732..3ce2989bb9939ee7ef49b55e656bed260c2826ee 100644 --- a/l10n/pl_PL/lib.po +++ b/l10n/pl_PL/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl_PL\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Ustawienia" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "" @@ -69,57 +69,84 @@ msgstr "" msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/pl_PL/settings.po b/l10n/pl_PL/settings.po index 0bf63eb96a6cf39da3ec910198b6f08a8a2260a4..9b6023556089917c1d9da54b76f2db0c9747fec5 100644 --- a/l10n/pl_PL/settings.po +++ b/l10n/pl_PL/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,70 +17,73 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "" @@ -88,97 +91,10 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -211,21 +127,21 @@ msgstr "" msgid "Ask a question" msgstr "" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -262,7 +178,7 @@ msgstr "" #: templates/personal.php:30 msgid "Email" -msgstr "" +msgstr "Email" #: templates/personal.php:31 msgid "Your email address" @@ -284,6 +200,16 @@ msgstr "" msgid "use this address to connect to your ownCloud in your file manager" msgstr "" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "" diff --git a/l10n/pl/impress.po b/l10n/pl_PL/user_webdavauth.po similarity index 62% rename from l10n/pl/impress.po rename to l10n/pl_PL/user_webdavauth.po index 1321f95ef5aa257d144ea3d3c19b0e6817ff4ed7..46365b77ad81b9aa15d068c0556adbbba290ea1f 100644 --- a/l10n/pl/impress.po +++ b/l10n/pl_PL/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" +"Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Language: pl_PL\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: templates/presentations.php:7 -msgid "Documentation" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/pt_BR/admin_dependencies_chk.po b/l10n/pt_BR/admin_dependencies_chk.po deleted file mode 100644 index 571f626c30422a14f91f59429fe08b96c9639060..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/pt_BR/admin_migrate.po b/l10n/pt_BR/admin_migrate.po deleted file mode 100644 index 57e754066c54b498140c800e4ad0afd0c4d1a582..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/pt_BR/bookmarks.po b/l10n/pt_BR/bookmarks.po deleted file mode 100644 index e574ace5f822de765ea3cc8e1dd3a095ab200460..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/pt_BR/calendar.po b/l10n/pt_BR/calendar.po deleted file mode 100644 index 5ffc4e305f958da025d647a5414e55654c437453..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/calendar.po +++ /dev/null @@ -1,817 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Guilherme Maluf Balzana , 2012. -# Sandro Venezuela , 2012. -# Thiago Vicente , 2012. -# Van Der Fran , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Nenhum calendário encontrado." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Nenhum evento encontrado." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Calendário incorreto" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Novo fuso horário" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Fuso horário alterado" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Pedido inválido" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendário" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Aniversário" - -#: lib/app.php:122 -msgid "Business" -msgstr "Negócio" - -#: lib/app.php:123 -msgid "Call" -msgstr "Chamada" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clientes" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Entrega" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Feriados" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idéias" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Jornada" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileu" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Reunião" - -#: lib/app.php:131 -msgid "Other" -msgstr "Outros" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Pessoal" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projetos" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Perguntas" - -#: lib/app.php:135 -msgid "Work" -msgstr "Trabalho" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "sem nome" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Novo Calendário" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Não repetir" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Diariamente" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Semanal" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Cada dia da semana" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "De duas em duas semanas" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensal" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Anual" - -#: lib/object.php:388 -msgid "never" -msgstr "nunca" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "por ocorrências" - -#: lib/object.php:390 -msgid "by date" -msgstr "por data" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "por dia do mês" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "por dia da semana" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Segunda-feira" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Terça-feira" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Quarta-feira" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Quinta-feira" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Sexta-feira" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sábado" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Domingo" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "semana do evento no mês" - -#: lib/object.php:428 -msgid "first" -msgstr "primeiro" - -#: lib/object.php:429 -msgid "second" -msgstr "segundo" - -#: lib/object.php:430 -msgid "third" -msgstr "terceiro" - -#: lib/object.php:431 -msgid "fourth" -msgstr "quarto" - -#: lib/object.php:432 -msgid "fifth" -msgstr "quinto" - -#: lib/object.php:433 -msgid "last" -msgstr "último" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Janeiro" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Fevereiro" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Março" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Abril" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maio" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Junho" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Julho" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Agosto" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Setembro" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Outubro" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembro" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Dezembro" - -#: lib/object.php:488 -msgid "by events date" -msgstr "eventos por data" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "por dia(s) do ano" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "por número(s) da semana" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "por dia e mês" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Todo o dia" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Campos incompletos" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Título" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Desde a Data" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Desde a Hora" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Até a Data" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Até a Hora" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "O evento termina antes de começar" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Houve uma falha de banco de dados" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Semana" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mês" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hoje" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Meus Calendários" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Link para CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendários Compartilhados" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Nenhum Calendário Compartilhado" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Compartilhar Calendário" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Baixar" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Editar" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Excluir" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "compartilhado com você por" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Novo calendário" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Editar calendário" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Mostrar Nome" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ativo" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Cor do Calendário" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Salvar" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Submeter" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Editar um evento" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportar" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Info de Evento" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Repetindo" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarme" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Participantes" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Compartilhar" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Título do evento" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categoria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separe as categorias por vírgulas" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Editar categorias" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Evento de dia inteiro" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "De" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Para" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Opções avançadas" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Local" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Local do evento" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Descrição" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Descrição do Evento" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Repetir" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avançado" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Selecionar dias da semana" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Selecionar dias" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "e o dia do evento no ano." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "e o dia do evento no mês." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Selecionar meses" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Selecionar semanas" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "e a semana do evento no ano." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalo" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Final" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "ocorrências" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "criar um novo calendário" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importar um arquivo de calendário" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nome do novo calendário" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importar" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Fechar caixa de diálogo" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Criar um novo evento" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Visualizar evento" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nenhuma categoria selecionada" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "para" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Fuso horário" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Usuários" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "Selecione usuários" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Editável" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupos" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "Selecione grupos" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "Tornar público" diff --git a/l10n/pt_BR/contacts.po b/l10n/pt_BR/contacts.po deleted file mode 100644 index e4a7f97946bd2070e0b49fb7bc23cd49e6f646b3..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Guilherme Maluf Balzana , 2012. -# Thiago Vicente , 2012. -# Van Der Fran , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Erro ao (des)ativar agenda." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID não definido." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Não é possível atualizar sua agenda com um nome em branco." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Erro ao atualizar agenda." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Nenhum ID fornecido" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Erro ajustando checksum." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Nenhum categoria selecionada para remoção." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nenhuma agenda de endereços encontrada." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nenhum contato encontrado." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Ocorreu um erro ao adicionar o contato." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "nome do elemento não definido." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Não é possível adicionar propriedade vazia." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Pelo menos um dos campos de endereço tem que ser preenchido." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Tentando adiciona propriedade duplicada:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informações sobre vCard é incorreta. Por favor, recarregue a página." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Faltando ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Erro de identificação VCard para ID:" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "checksum não definido." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informação sobre vCard incorreto. Por favor, recarregue a página:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Something went FUBAR. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Nenhum ID do contato foi submetido." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Erro de leitura na foto do contato." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Erro ao salvar arquivo temporário." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Foto carregada não é válida." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "ID do contato está faltando." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Nenhum caminho para foto foi submetido." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Arquivo não existe:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Erro ao carregar imagem." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Erro ao obter propriedade de contato." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Erro ao obter propriedade da FOTO." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Erro ao salvar contato." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Erro ao modificar tamanho da imagem" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Erro ao recortar imagem" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Erro ao criar imagem temporária" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Erro ao localizar imagem:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Erro enviando contatos para armazenamento." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Arquivo enviado com sucesso" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "O arquivo enviado excede a diretiva upload_max_filesize em php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "O arquivo carregado excede o argumento MAX_FILE_SIZE especificado no formulário HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "O arquivo foi parcialmente carregado" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Nenhum arquivo carregado" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Diretório temporário não encontrado" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Não foi possível salvar a imagem temporária:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Não foi possível carregar a imagem temporária:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Nenhum arquivo foi transferido. Erro desconhecido" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Contatos" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Desculpe, esta funcionalidade não foi implementada ainda" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "não implementado" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Não foi possível obter um endereço válido." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Erro" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Esta propriedade não pode estar vazia." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Não foi possível serializar elementos." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "\"deleteProperty\" chamado sem argumento de tipo. Por favor, informe a bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Editar nome" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Nenhum arquivo selecionado para carregar." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "O arquivo que você está tentando carregar excede o tamanho máximo para este servidor." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Selecione o tipo" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultado:" - -#: js/loader.js:49 -msgid " imported, " -msgstr "importado," - -#: js/loader.js:49 -msgid " failed." -msgstr "falhou." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Esta não é a sua agenda de endereços." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Contato não pôde ser encontrado." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Trabalho" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Home" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Móvel" - -#: lib/app.php:203 -msgid "Text" -msgstr "Texto" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voz" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mensagem" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Vídeo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Aniversário" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Aniversário de {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contato" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Adicionar Contato" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importar" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Agendas de Endereço" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Fechar." - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Arraste a foto para ser carregada" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Deletar imagem atual" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Editar imagem atual" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Carregar nova foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Selecionar foto do OwnCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formato personalizado, Nome curto, Nome completo, Inverter ou Inverter com vírgula" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Editar detalhes do nome" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organização" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Excluir" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Apelido" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Digite o apelido" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-aaaa" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupos" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separe grupos por virgula" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editar grupos" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferido" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Por favor, especifique um email válido." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Digite um endereço de email" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Correio para endereço" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Remover endereço de email" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Digite um número de telefone" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Remover número de telefone" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Visualizar no mapa" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Editar detalhes de endereço" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Adicionar notas" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Adicionar campo" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefone" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Endereço" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Baixar contato" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Apagar contato" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "A imagem temporária foi removida cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Editar endereço" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Digite" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Caixa Postal" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Estendido" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Cidade" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Região" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "CEP" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "País" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Agenda de Endereço" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Exmo. Prefixos " - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Senhorita" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Srta." - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Sr." - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Senhor" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Sra." - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Primeiro Nome" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Segundo Nome" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Sobrenome" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Exmo. Sufixos" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importar arquivos de contato." - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Por favor, selecione uma agenda de endereços" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Criar nova agenda de endereços" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nome da nova agenda de endereços" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importar contatos" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Voce não tem contatos em sua agenda de endereços." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Adicionar contatos" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Sincronizando endereços CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "leia mais" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Endereço primário(Kontact et al)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Baixar" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editar" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nova agenda" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Salvar" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index 1089f64ba69987ff7e7b9640af84f937938fcd96..58cb66c3215351d5e82fd40a11fc9359de752919 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/core.po @@ -3,8 +3,12 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # , 2011. +# , 2012. +# , 2012. # Guilherme Maluf Balzana , 2012. +# , 2012. # , 2012. # Thiago Vicente , 2012. # Unforgiving Fallout <>, 2012. @@ -13,9 +17,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-07 02:03+0200\n" -"PO-Revision-Date: 2012-10-06 13:45+0000\n" -"Last-Translator: sedir \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-01 23:28+0000\n" +"Last-Translator: FredMaranhao \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,208 +27,241 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nome da aplicação não foi fornecido." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Tipo de categoria não fornecido." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Nenhuma categoria adicionada?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Essa categoria já existe" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "tipo de objeto não fornecido." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID não fornecido(s)." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Erro ao adicionar %s aos favoritos." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Nenhuma categoria selecionada para deletar." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Erro ao remover %s dos favoritos." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Configurações" -#: js/js.js:645 -msgid "January" -msgstr "Janeiro" +#: js/js.js:704 +msgid "seconds ago" +msgstr "segundos atrás" -#: js/js.js:645 -msgid "February" -msgstr "Fevereiro" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 minuto atrás" -#: js/js.js:645 -msgid "March" -msgstr "Março" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} minutos atrás" -#: js/js.js:645 -msgid "April" -msgstr "Abril" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 hora atrás" -#: js/js.js:645 -msgid "May" -msgstr "Maio" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} horas atrás" -#: js/js.js:645 -msgid "June" -msgstr "Junho" +#: js/js.js:709 +msgid "today" +msgstr "hoje" -#: js/js.js:646 -msgid "July" -msgstr "Julho" +#: js/js.js:710 +msgid "yesterday" +msgstr "ontem" -#: js/js.js:646 -msgid "August" -msgstr "Agosto" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} dias atrás" -#: js/js.js:646 -msgid "September" -msgstr "Setembro" +#: js/js.js:712 +msgid "last month" +msgstr "último mês" -#: js/js.js:646 -msgid "October" -msgstr "Outubro" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} meses atrás" -#: js/js.js:646 -msgid "November" -msgstr "Novembro" +#: js/js.js:714 +msgid "months ago" +msgstr "meses atrás" -#: js/js.js:646 -msgid "December" -msgstr "Dezembro" +#: js/js.js:715 +msgid "last year" +msgstr "último ano" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "anos atrás" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Escolha" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Cancelar" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Não" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Sim" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Nenhuma categoria selecionada para deletar." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "O tipo de objeto não foi especificado." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:494 -#: js/share.js:506 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "Erro" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "O nome do app não foi especificado." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "O arquivo {file} necessário não está instalado!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Erro ao compartilhar" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Erro ao descompartilhar" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Erro ao mudar permissões" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Compartilhado com você e o grupo" - -#: js/share.js:130 -msgid "by" -msgstr "por" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Compartilhado com você e com o grupo {group} por {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Compartilhado com você por" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Compartilhado com você por {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Compartilhar com" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Compartilhar com link" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Proteger com senha" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Senha" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Definir data de expiração" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Data de expiração" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Compartilhar via e-mail:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Nenhuma pessoa encontrada" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Não é permitido re-compartilhar" -#: js/share.js:250 -msgid "Shared in" -msgstr "Compartilhado em" - -#: js/share.js:250 -msgid "with" -msgstr "com" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Compartilhado em {item} com {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Descompartilhar" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "pode editar" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "controle de acesso" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "criar" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "atualizar" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "remover" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "compartilhar" -#: js/share.js:322 js/share.js:481 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" msgstr "Protegido com senha" -#: js/share.js:494 +#: js/share.js:533 msgid "Error unsetting expiration date" msgstr "Erro ao remover data de expiração" -#: js/share.js:506 +#: js/share.js:545 msgid "Error setting expiration date" msgstr "Erro ao definir data de expiração" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Redefinir senha ownCloud" @@ -237,15 +274,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Você receberá um link para redefinir sua senha via e-mail." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Solicitado" +msgid "Reset email send." +msgstr "Email de redefinição de senha enviado." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Falha ao fazer o login!" +msgid "Request failed!" +msgstr "A requisição falhou!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Nome de Usuário" @@ -301,72 +338,187 @@ msgstr "Cloud não encontrado" msgid "Edit categories" msgstr "Editar categorias" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Adicionar" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Aviso de Segurança" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Nenhum gerador de número aleatório de segurança disponível. Habilite a extensão OpenSSL do PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Sem um gerador de número aleatório de segurança, um invasor pode ser capaz de prever os símbolos de redefinição de senhas e assumir sua conta." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Seu diretório de dados e seus arquivos estão, provavelmente, acessíveis a partir da internet. O .htaccess que o ownCloud fornece não está funcionando. Nós sugerimos que você configure o seu servidor web de uma forma que o diretório de dados esteja mais acessível ou que você mova o diretório de dados para fora da raiz do servidor web." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Criar uma conta de administrador" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avançado" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Pasta de dados" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configurar o banco de dados" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "será usado" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Usuário de banco de dados" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Senha do banco de dados" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nome do banco de dados" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Espaço de tabela do banco de dados" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Banco de dados do host" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Concluir configuração" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Domingo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Segunda-feira" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Terça-feira" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Quinta-feira" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Sexta-feira" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sábado" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Janeiro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Fevereiro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Março" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Abril" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Maio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Junho" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Julho" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Agosto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Setembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Outubro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Novembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Dezembro" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "web services sob seu controle" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Sair" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Entrada Automática no Sistema Rejeitada!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Se você não mudou a sua senha recentemente, a sua conta pode estar comprometida!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Por favor troque sua senha para tornar sua conta segura novamente." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Esqueçeu sua senha?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "lembrete" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Log in" @@ -381,3 +533,17 @@ msgstr "anterior" #: templates/part.pagenavi.php:20 msgid "next" msgstr "próximo" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Aviso de Segurança!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Por favor, verifique a sua senha.
            Por motivos de segurança, você deverá ser solicitado a muda-la ocasionalmente." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verificar" diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index a262359b9cf4cc41b59ca673ae7f998b13699084..91ecfae55f06fc155bd447560fcf103630fd5b1c 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/files.po @@ -3,6 +3,8 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# , 2012. # Guilherme Maluf Balzana , 2012. # , 2012. # , 2012. @@ -13,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 12:31+0000\n" -"Last-Translator: sedir \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-01 23:23+0000\n" +"Last-Translator: FredMaranhao \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,195 +30,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Não houve nenhum erro, o arquivo foi transferido com sucesso" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "O tamanho do arquivo excede o limed especifiicado em upload_max_filesize no php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "O arquivo enviado excede a diretiva upload_max_filesize no php.ini: " -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "O arquivo carregado excede o MAX_FILE_SIZE que foi especificado no formulário HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "O arquivo foi transferido parcialmente" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nenhum arquivo foi transferido" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Pasta temporária não encontrada" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Falha ao escrever no disco" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Arquivos" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Descompartilhar" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Excluir" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Renomear" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "já existe" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} já existe" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "substituir" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "sugerir nome" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "substituido " +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "substituído {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "desfazer" -#: js/filelist.js:241 -msgid "with" -msgstr "com" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "Substituído {old_name} por {new_name} " + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "{files} não compartilhados" -#: js/filelist.js:273 -msgid "unshared" -msgstr "descompartilhado" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} apagados" -#: js/filelist.js:275 -msgid "deleted" -msgstr "deletado" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nome inválido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "gerando arquivo ZIP, isso pode levar um tempo." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Impossível enviar seus arquivo como diretório ou ele tem 0 bytes." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Erro de envio" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Fechar" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Pendente" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "enviando 1 arquivo" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "enviando arquivos" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "Enviando {count} arquivos" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Envio cancelado." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Upload em andamento. Sair da página agora resultará no cancelamento do envio." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nome inválido, '/' não é permitido." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nome de pasta inválido. O nome \"Shared\" é reservado pelo Owncloud" -#: js/files.js:668 -msgid "files scanned" -msgstr "arquivos verificados" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} arquivos scaneados" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "erro durante verificação" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nome" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Tamanho" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificado" -#: js/files.js:778 -msgid "folder" -msgstr "pasta" - -#: js/files.js:780 -msgid "folders" -msgstr "pastas" - -#: js/files.js:788 -msgid "file" -msgstr "arquivo" - -#: js/files.js:790 -msgid "files" -msgstr "arquivos" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "segundos atrás" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minuto atrás" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "minutos atrás" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 pasta" -#: js/files.js:839 -msgid "today" -msgstr "hoje" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} pastas" -#: js/files.js:840 -msgid "yesterday" -msgstr "ontem" +#: js/files.js:824 +msgid "1 file" +msgstr "1 arquivo" -#: js/files.js:841 -msgid "days ago" -msgstr "dias atrás" - -#: js/files.js:842 -msgid "last month" -msgstr "último mês" - -#: js/files.js:844 -msgid "months ago" -msgstr "meses atrás" - -#: js/files.js:845 -msgid "last year" -msgstr "último ano" - -#: js/files.js:846 -msgid "years ago" -msgstr "anos atrás" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} arquivos" #: templates/admin.php:5 msgid "File handling" @@ -226,27 +199,27 @@ msgstr "Tratamento de Arquivo" msgid "Maximum upload size" msgstr "Tamanho máximo para carregar" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. possível:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Necessário para multiplos arquivos e diretório de downloads." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Habilitar ZIP-download" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 para ilimitado" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Tamanho máximo para arquivo ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Salvar" @@ -254,52 +227,48 @@ msgstr "Salvar" msgid "New" msgstr "Novo" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Arquivo texto" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Pasta" -#: templates/index.php:11 -msgid "From url" -msgstr "URL de origem" +#: templates/index.php:14 +msgid "From link" +msgstr "Do link" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Carregar" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Cancelar upload" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Nada aqui.Carrege alguma coisa!" -#: templates/index.php:50 -msgid "Share" -msgstr "Compartilhar" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Baixar" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Arquivo muito grande" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Arquivos sendo escaneados, por favor aguarde." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Scanning atual" diff --git a/l10n/pt_BR/files_pdfviewer.po b/l10n/pt_BR/files_pdfviewer.po deleted file mode 100644 index 5d57e4d21e90d9dfd17abfa3cf0cbb46dec38feb..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/pt_BR/files_texteditor.po b/l10n/pt_BR/files_texteditor.po deleted file mode 100644 index f14b622e58e5bbdbc5bc53729ee39baec1591680..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/pt_BR/gallery.po b/l10n/pt_BR/gallery.po deleted file mode 100644 index 1c68432fb07912da3075db60f10a60fd40d4ad3b..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/gallery.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Thiago Vicente , 2012. -# Van Der Fran , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.net/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Fotos" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Configuração" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Atualizar" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Parar" - -#: templates/index.php:18 -msgid "Share" -msgstr "Compartilhar" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Voltar" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Confirmar apagar" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Voçe dezeja remover o album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Mudar nome do album" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nome do novo album" diff --git a/l10n/pt_BR/impress.po b/l10n/pt_BR/impress.po deleted file mode 100644 index d411662bd5ee0b3705ff2e2a591d91e04afd8ed4..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index 6e42d00239ab5bfadee387ea29c9e5778860da40..a42adb315bc22e8d3d1f8affe426e69575de0942 100644 --- a/l10n/pt_BR/lib.po +++ b/l10n/pt_BR/lib.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-24 02:02+0200\n" -"PO-Revision-Date: 2012-09-23 17:07+0000\n" -"Last-Translator: sedir \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 18:47+0000\n" +"Last-Translator: Schopfer \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +44,19 @@ msgstr "Aplicações" msgid "Admin" msgstr "Admin" -#: files.php:309 +#: files.php:361 msgid "ZIP download is turned off." msgstr "Download ZIP está desligado." -#: files.php:310 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Arquivos precisam ser baixados um de cada vez." -#: files.php:310 files.php:335 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Voltar para Arquivos" -#: files.php:334 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Arquivos selecionados são muito grandes para gerar arquivo zip." @@ -62,7 +64,7 @@ msgstr "Arquivos selecionados são muito grandes para gerar arquivo zip." msgid "Application is not enabled" msgstr "Aplicação não está habilitada" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Erro de autenticação" @@ -70,57 +72,84 @@ msgstr "Erro de autenticação" msgid "Token expired. Please reload page." msgstr "Token expirou. Por favor recarregue a página." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Arquivos" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Texto" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Imagens" + +#: template.php:103 msgid "seconds ago" msgstr "segundos atrás" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 minuto atrás" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minutos atrás" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 hora atrás" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d horas atrás" + +#: template.php:108 msgid "today" msgstr "hoje" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "ontem" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d dias atrás" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "último mês" -#: template.php:96 -msgid "months ago" -msgstr "meses atrás" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d meses atrás" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "último ano" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "anos atrás" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s está disponível. Obtenha mais informações" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "atualizado" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "checagens de atualização estão desativadas" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Impossível localizar categoria \"%s\"" diff --git a/l10n/pt_BR/media.po b/l10n/pt_BR/media.po deleted file mode 100644 index 779137491765a6f9d38683d3f601fda9465e0b33..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -# Van Der Fran , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.net/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Música" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Tocar" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausa" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Anterior" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Próximo" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Mudo" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Não Mudo" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Atualizar a Coleção" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ãlbum" - -#: templates/music.php:39 -msgid "Title" -msgstr "Título" diff --git a/l10n/pt_BR/settings.po b/l10n/pt_BR/settings.po index 4116e5e1a6734f7786884ae7bc96ed8ad694400c..a8b2a98a55077c4646f1ec1d53723a218a88b4df 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/settings.po @@ -4,19 +4,21 @@ # # Translators: # , 2011. +# , 2012. # Guilherme Maluf Balzana , 2012. # , 2012. # Sandro Venezuela , 2012. # , 2012. # Thiago Vicente , 2012. +# , 2012. # Van Der Fran , 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-11 02:04+0200\n" -"PO-Revision-Date: 2012-10-10 03:46+0000\n" -"Last-Translator: sedir \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: FredMaranhao \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,70 +26,73 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Não foi possivel carregar lista da App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "erro de autenticação" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Grupo já existe" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Não foi possivel adicionar grupo" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Não pôde habilitar aplicação" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email gravado" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Email inválido" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "Mudou OpenID" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Pedido inválido" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Não foi possivel remover grupo" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "erro de autenticação" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Não foi possivel remover usuário" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Mudou Idioma" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Admins não podem se remover do grupo admin" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Não foi possivel adicionar usuário ao grupo %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Não foi possivel remover usuário ao grupo %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Desabilitado" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Habilitado" @@ -95,97 +100,10 @@ msgstr "Habilitado" msgid "Saving..." msgstr "Gravando..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Português" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Aviso de Segurança" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Seu diretório de dados e seus arquivos estão, provavelmente, acessíveis a partir da internet. O .htaccess que o ownCloud fornece não está funcionando. Nós sugerimos que você configure o seu servidor web de uma forma que o diretório de dados esteja mais acessível ou que você mova o diretório de dados para fora da raiz do servidor web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Executa uma tarefa com cada página carregada" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php está registrado no serviço webcron. Chama a página cron.php na raíz do owncloud uma vez por minuto via http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Usa o serviço cron do sistema. Chama o arquivo cron.php na pasta do owncloud através do cronjob do sistema uma vez a cada minuto." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Compartilhamento" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Habilitar API de Compartilhamento" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Permitir aplicações a usar a API de Compartilhamento" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Permitir links" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Permitir usuários a compartilhar itens para o público com links" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Permitir re-compartilhamento" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Permitir usuário a compartilhar itens compartilhados com eles novamente" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Permitir usuários a compartilhar com qualquer um" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Permitir usuários a somente compartilhar com usuários em seus respectivos grupos" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mais" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Desenvolvido pela comunidade ownCloud, o código fonte está licenciado sob AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Adicione seu Aplicativo" @@ -218,22 +136,22 @@ msgstr "Gerênciando Arquivos Grandes" msgid "Ask a question" msgstr "Faça uma pergunta" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemas ao conectar na base de dados." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Ir manualmente." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Resposta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Você usou %s do espaço disponível de %s " +msgid "You have used %s of the available %s" +msgstr "Você usou %s do seu espaço de %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -291,6 +209,16 @@ msgstr "Ajude a traduzir" msgid "use this address to connect to your ownCloud in your file manager" msgstr "use este endereço para se conectar ao seu ownCloud no seu gerenciador de arquvos" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Desenvolvido pela comunidade ownCloud, o código fonte está licenciado sob AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nome" diff --git a/l10n/pt_BR/tasks.po b/l10n/pt_BR/tasks.po deleted file mode 100644 index 5e8358f8c6bda516089e9198c0ad9b46a96f9833..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/pt_BR/user_migrate.po b/l10n/pt_BR/user_migrate.po deleted file mode 100644 index bb939a947ab7855edd7faa11c7274bdfc9df6b78..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/pt_BR/user_openid.po b/l10n/pt_BR/user_openid.po deleted file mode 100644 index 5abf549de331715a7e6da38408eeec69b5a6f100..0000000000000000000000000000000000000000 --- a/l10n/pt_BR/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/pt_BR/files_odfviewer.po b/l10n/pt_BR/user_webdavauth.po similarity index 61% rename from l10n/pt_BR/files_odfviewer.po rename to l10n/pt_BR/user_webdavauth.po index 0fdf643ce92442c9f96602219b5b29b55c2c53a4..5e55946786ac8995b113127e7c42b4cc7b41681c 100644 --- a/l10n/pt_BR/files_odfviewer.po +++ b/l10n/pt_BR/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-12 00:01+0100\n" +"PO-Revision-Date: 2012-11-11 13:40+0000\n" +"Last-Translator: thoriumbr \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "URL do WebDAV: http://" diff --git a/l10n/pt_PT/admin_dependencies_chk.po b/l10n/pt_PT/admin_dependencies_chk.po deleted file mode 100644 index 33d13a5a5637adb6d91b652f714d5ffb2f054848..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/pt_PT/admin_migrate.po b/l10n/pt_PT/admin_migrate.po deleted file mode 100644 index 0daf518350a456681ede412e6466d9e12dd9d49a..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/pt_PT/bookmarks.po b/l10n/pt_PT/bookmarks.po deleted file mode 100644 index b4ba2758a3e2fb09940e8a8c5a2c795b561086d7..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/pt_PT/calendar.po b/l10n/pt_PT/calendar.po deleted file mode 100644 index b82792c41e040ca9bcd25712bccf72e290178fde..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/calendar.po +++ /dev/null @@ -1,817 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2011. -# Helder Meneses , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 20:06+0000\n" -"Last-Translator: rlameiro \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Nem todos os calendários estão completamente pré-carregados" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Parece que tudo está completamente pré-carregado" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Nenhum calendário encontrado." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Nenhum evento encontrado." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Calendário errado" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "O ficheiro não continha nenhuns eventos ou então todos os eventos já estavam carregados no seu calendário" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "Os eventos foram guardados no novo calendário" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Falha na importação" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "Os eventos foram guardados no seu calendário" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nova zona horária" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zona horária alterada" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Pedido inválido" - -#: appinfo/app.php:37 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendário" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM aaaa" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, aaaa" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Dia de anos" - -#: lib/app.php:122 -msgid "Business" -msgstr "Negócio" - -#: lib/app.php:123 -msgid "Call" -msgstr "Telefonar" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Clientes" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Entregar" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Férias" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideias" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Jornada" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jublieu" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Encontro" - -#: lib/app.php:131 -msgid "Other" -msgstr "Outro" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Pessoal" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projetos" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Perguntas" - -#: lib/app.php:135 -msgid "Work" -msgstr "Trabalho" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "por" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "não definido" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Novo calendário" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Não repete" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Diário" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Semanal" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Todos os dias da semana" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Bi-semanal" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Mensal" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Anual" - -#: lib/object.php:388 -msgid "never" -msgstr "nunca" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "por ocorrências" - -#: lib/object.php:390 -msgid "by date" -msgstr "por data" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "por dia do mês" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "por dia da semana" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Segunda" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Terça" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Quarta" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Quinta" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Sexta" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sábado" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Domingo" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "Eventos da semana do mês" - -#: lib/object.php:428 -msgid "first" -msgstr "primeiro" - -#: lib/object.php:429 -msgid "second" -msgstr "segundo" - -#: lib/object.php:430 -msgid "third" -msgstr "terçeiro" - -#: lib/object.php:431 -msgid "fourth" -msgstr "quarto" - -#: lib/object.php:432 -msgid "fifth" -msgstr "quinto" - -#: lib/object.php:433 -msgid "last" -msgstr "último" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Janeiro" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Fevereiro" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Março" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Abril" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maio" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Junho" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Julho" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Agosto" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Setembro" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Outubro" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Novembro" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Dezembro" - -#: lib/object.php:488 -msgid "by events date" -msgstr "por data de evento" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "por dia(s) do ano" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "por número(s) da semana" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "por dia e mês" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Dom." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Seg." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "ter." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Qua." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Qui." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Sex." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Sáb." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Fev," - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Abr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Mai." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Ago." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Set." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Out." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dez." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Todo o dia" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Falta campos" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Título" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Da data" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Da hora" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Para data" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Para hora" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "O evento acaba antes de começar" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Houve uma falha de base de dados" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Semana" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mês" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hoje" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Configurações" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Os seus calendários" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Endereço CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendários partilhados" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Nenhum calendário partilhado" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Partilhar calendário" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Transferir" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Editar" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Apagar" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "Partilhado consigo por" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Novo calendário" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Editar calendário" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Nome de exibição" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ativo" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Cor do calendário" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Guardar" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Submeter" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Editar um evento" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportar" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informação do evento" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Repetição" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarme" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Participantes" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Partilhar" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Título do evento" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categoria" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separe categorias por virgulas" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Editar categorias" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Evento de dia inteiro" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "De" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Para" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Opções avançadas" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Localização" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Localização do evento" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Descrição" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Descrição do evento" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Repetir" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avançado" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Seleciona os dias da semana" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Seleciona os dias" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "e o dia de eventos do ano." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "e o dia de eventos do mês." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Seleciona os meses" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Seleciona as semanas" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "e a semana de eventos do ano." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Intervalo" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Fim" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "ocorrências" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "criar novo calendário" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importar um ficheiro de calendário" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Escolha um calendário por favor" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Nome do novo calendário" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Escolha um nome disponível!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Já existe um Calendário com esse nome. Se mesmo assim continuar, esses calendários serão fundidos." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importar" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Fechar diálogo" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Criar novo evento" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Ver um evento" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nenhuma categoria seleccionada" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "de" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "em" - -#: templates/settings.php:10 -msgid "General" -msgstr "Geral" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zona horária" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Actualizar automaticamente o fuso horário" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Formato da hora" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Começar semana em" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Memória de pré-carregamento" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Limpar a memória de pré carregamento para eventos recorrentes" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "Endereço(s) web" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Endereços de sincronização de calendários CalDAV" - -#: templates/settings.php:87 -msgid "more info" -msgstr "mais informação" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Endereço principal (contactos et al.)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Ligaç(ão/ões) só de leitura do iCalendar" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Utilizadores" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "Selecione utilizadores" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Editavel" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupos" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "Selecione grupos" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "Tornar público" diff --git a/l10n/pt_PT/contacts.po b/l10n/pt_PT/contacts.po deleted file mode 100644 index ee8c370515ad40589224bfb56cef7aa74e82c43a..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/contacts.po +++ /dev/null @@ -1,956 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2011. -# Helder Meneses , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Erro a (des)ativar o livro de endereços" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id não está definido" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Não é possivel actualizar o livro de endereços com o nome vazio." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Erro a atualizar o livro de endereços" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Nenhum ID inserido" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Erro a definir checksum." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Nenhuma categoria selecionada para eliminar." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nenhum livro de endereços encontrado." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nenhum contacto encontrado." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Erro ao adicionar contato" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "o nome do elemento não está definido." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Incapaz de processar contacto" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Não é possivel adicionar uma propriedade vazia" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Pelo menos um dos campos de endereço precisa de estar preenchido" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "A tentar adicionar propriedade duplicada: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "Falta o parâmetro de mensagens instantâneas (IM)" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "Mensagens instantâneas desconhecida (IM)" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "A informação sobre o vCard está incorreta. Por favor refresque a página" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Falta ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Erro a analisar VCard para o ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "Checksum não está definido." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "A informação sobre o VCard está incorrecta. Por favor refresque a página: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Algo provocou um FUBAR. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Nenhum ID de contacto definido." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Erro a ler a foto do contacto." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Erro a guardar ficheiro temporário." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "A foto carregada não é valida." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Falta o ID do contacto." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Nenhum caminho da foto definido." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "O ficheiro não existe:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Erro a carregar a imagem." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Erro a obter o objecto dos contactos" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Erro a obter a propriedade Foto" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Erro a guardar o contacto." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Erro a redimensionar a imagem" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Erro a recorar a imagem" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Erro a criar a imagem temporária" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Erro enquanto pesquisava pela imagem: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Erro a carregar os contactos para o armazenamento." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Não ocorreu erros, o ficheiro foi submetido com sucesso" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "O tamanho do ficheiro carregado excede o parametro upload_max_filesize em php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "O tamanho do ficheiro carregado ultrapassa o valor MAX_FILE_SIZE definido no formulário HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "O ficheiro seleccionado foi apenas carregado parcialmente" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Nenhum ficheiro foi submetido" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Está a faltar a pasta temporária" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Não foi possível guardar a imagem temporária: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Não é possível carregar a imagem temporária: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Nenhum ficheiro foi carregado. Erro desconhecido" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Contactos" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Desculpe, esta funcionalidade ainda não está implementada" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Não implementado" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Não foi possível obter um endereço válido." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Erro" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Esta propriedade não pode estar vazia." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Não foi possivel serializar os elementos" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' chamada sem argumento definido. Por favor report o problema em bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Editar nome" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Nenhum ficheiro seleccionado para enviar." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "O tamanho do ficheiro que está a tentar carregar ultrapassa o limite máximo definido para ficheiros no servidor." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Erro ao carregar imagem de perfil." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Seleccionar tipo" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Alguns contactos forma marcados para apagar, mas ainda não foram apagados. Por favor espere que ele sejam apagados." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Quer fundir estes Livros de endereços?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultado: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importado, " - -#: js/loader.js:49 -msgid " failed." -msgstr " falhou." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Displayname não pode ser vazio" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Livro de endereços não encontrado." - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Esta não é a sua lista de contactos" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "O contacto não foi encontrado" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Emprego" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Casa" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Outro" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Telemovel" - -#: lib/app.php:203 -msgid "Text" -msgstr "Texto" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voz" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mensagem" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Vídeo" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Aniversário" - -#: lib/app.php:253 -msgid "Business" -msgstr "Empresa" - -#: lib/app.php:254 -msgid "Call" -msgstr "Telefonar" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Clientes" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Fornecedor" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Férias" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ideias" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Viagem" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubileu" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Encontro" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Pessoal" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projectos" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Questões" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Aniversário de {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contacto" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Adicionar Contacto" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importar" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Configurações" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Livros de endereços" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Fechar" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Atalhos de teclado" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navegação" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Próximo contacto na lista" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Contacto anterior na lista" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Expandir/encolher o livro de endereços atual" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Próximo livro de endereços" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Livro de endereços anterior" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Ações" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Recarregar lista de contactos" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Adicionar novo contacto" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Adicionar novo Livro de endereços" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Apagar o contacto atual" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Arraste e solte fotos para carregar" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Eliminar a foto actual" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Editar a foto actual" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Carregar nova foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Selecionar uma foto da ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formate personalizado, Nome curto, Nome completo, Reverso ou Reverso com virgula" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Editar detalhes do nome" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organização" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Apagar" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Alcunha" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Introduza alcunha" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Página web" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Ir para página web" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-aaaa" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupos" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separe os grupos usando virgulas" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editar grupos" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferido" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Por favor indique um endereço de correio válido" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Introduza endereço de email" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Enviar correio para o endereço" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Eliminar o endereço de correio" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Insira o número de telefone" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Eliminar o número de telefone" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Mensageiro instantâneo" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Apagar mensageiro instantâneo (IM)" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Ver no mapa" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Editar os detalhes do endereço" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Insira notas aqui." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Adicionar campo" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefone" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Mensagens Instantâneas" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Morada" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Nota" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Transferir contacto" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Apagar contato" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "A imagem temporária foi retirada do cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Editar endereço" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tipo" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Apartado" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Endereço da Rua" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Rua e número" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Extendido" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Número de Apartamento, etc." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Cidade" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Região" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Por Ex. Estado ou província" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Código Postal" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Código Postal" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "País" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Livro de endereços" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Prefixos honoráveis" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Menina" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Sra" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Sr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sr" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Senhora" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Nome introduzido" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Nomes adicionais" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Nome de familia" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Sufixos Honoráveis" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "D.J." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "D.M." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "r." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importar um ficheiro de contactos" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Por favor seleccione o livro de endereços" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Criar um novo livro de endereços" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Nome do novo livro de endereços" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "A importar os contactos" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Não tem contactos no seu livro de endereços." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Adicionar contacto" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Selecionar Livros de contactos" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Introduzir nome" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Introduzir descrição" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV a sincronizar endereços" - -#: templates/settings.php:3 -msgid "more info" -msgstr "mais informação" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Endereço primario (Kontact et al)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Mostrar ligação CardDAV" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Mostrar ligações VCF só de leitura" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Partilhar" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Transferir" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editar" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Novo livro de endereços" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Nome" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Descrição" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Guardar" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Cancelar" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Mais..." diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po index c49019a3863ef5b6fdc55772e437a20d70de08f3..7798c921dbef36688f88caa448e0be0aba0be093 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/core.po @@ -3,17 +3,19 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Duarte Velez Grilo , 2012. # , 2011, 2012. # Helder Meneses , 2012. +# Nelson Rosado , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:04+0200\n" -"PO-Revision-Date: 2012-10-11 10:31+0000\n" -"Last-Translator: Duarte Velez Grilo \n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-16 00:32+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,208 +23,241 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Nome da aplicação não definida." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Tipo de categoria não fornecido" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Nenhuma categoria para adicionar?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Esta categoria já existe:" -#: js/js.js:229 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Tipo de objecto não fornecido" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "ID %s não fornecido" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Erro a adicionar %s aos favoritos" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Nenhuma categoria seleccionar para eliminar" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Erro a remover %s dos favoritos." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Definições" -#: js/js.js:661 -msgid "January" -msgstr "Janeiro" +#: js/js.js:704 +msgid "seconds ago" +msgstr "Minutos atrás" -#: js/js.js:661 -msgid "February" -msgstr "Fevereiro" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "Falta 1 minuto" -#: js/js.js:661 -msgid "March" -msgstr "Março" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} minutos atrás" -#: js/js.js:661 -msgid "April" -msgstr "Abril" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Há 1 hora" -#: js/js.js:661 -msgid "May" -msgstr "Maio" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "Há {hours} horas atrás" -#: js/js.js:661 -msgid "June" -msgstr "Junho" +#: js/js.js:709 +msgid "today" +msgstr "hoje" -#: js/js.js:662 -msgid "July" -msgstr "Julho" +#: js/js.js:710 +msgid "yesterday" +msgstr "ontem" -#: js/js.js:662 -msgid "August" -msgstr "Agosto" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} dias atrás" -#: js/js.js:662 -msgid "September" -msgstr "Setembro" +#: js/js.js:712 +msgid "last month" +msgstr "ultímo mês" -#: js/js.js:662 -msgid "October" -msgstr "Outubro" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "Há {months} meses atrás" -#: js/js.js:662 -msgid "November" -msgstr "Novembro" +#: js/js.js:714 +msgid "months ago" +msgstr "meses atrás" -#: js/js.js:662 -msgid "December" -msgstr "Dezembro" +#: js/js.js:715 +msgid "last year" +msgstr "ano passado" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "anos atrás" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Escolha" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Cancelar" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Não" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Sim" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Nenhuma categoria seleccionar para eliminar" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "O tipo de objecto não foi especificado" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Erro" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "O nome da aplicação não foi especificado" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "O ficheiro necessário {file} não está instalado!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Erro ao partilhar" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Erro ao deixar de partilhar" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Erro ao mudar permissões" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Partilhado consigo e o grupo" - -#: js/share.js:130 -msgid "by" -msgstr "por" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Partilhado consigo e com o grupo {group} por {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Partilhado consigo por" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Partilhado consigo por {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Partilhar com" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Partilhar com link" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Proteger com palavra-passe" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Palavra chave" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Especificar data de expiração" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Data de expiração" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Partilhar via email:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Não foi encontrado ninguém" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Não é permitido partilhar de novo" -#: js/share.js:250 -msgid "Shared in" -msgstr "Partilhado em" - -#: js/share.js:250 -msgid "with" -msgstr "com" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Partilhado em {item} com {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Deixar de partilhar" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "pode editar" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "Controlo de acesso" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "criar" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "actualizar" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "apagar" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "partilhar" -#: js/share.js:322 js/share.js:484 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Protegido com palavra-passe" -#: js/share.js:497 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Erro ao retirar a data de expiração" -#: js/share.js:509 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Erro ao aplicar a data de expiração" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Reposição da password ownCloud" @@ -235,15 +270,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Vai receber um endereço para repor a sua password" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Pedido" +msgid "Reset email send." +msgstr "E-mail de reinicialização enviado." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Conexão falhado!" +msgid "Request failed!" +msgstr "O pedido falhou!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Utilizador" @@ -299,72 +334,187 @@ msgstr "Cloud nao encontrada" msgid "Edit categories" msgstr "Editar categorias" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Adicionar" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Aviso de Segurança" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Não existe nenhum gerador seguro de números aleatórios, por favor, active a extensão OpenSSL no PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Sem nenhum gerador seguro de números aleatórios, uma pessoa mal intencionada pode prever a sua password, reiniciar as seguranças adicionais e tomar conta da sua conta. " + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "A sua pasta com os dados e os seus ficheiros estão provavelmente acessíveis a partir das internet. Sugerimos veementemente que configure o seu servidor web de maneira a que a pasta com os dados deixe de ficar acessível, ou mova a pasta com os dados para fora da raiz de documentos do servidor web." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Criar uma conta administrativa" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avançado" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Pasta de dados" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configure a base de dados" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "vai ser usada" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Utilizador da base de dados" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Password da base de dados" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Nome da base de dados" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Tablespace da base de dados" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Host da base de dados" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Acabar instalação" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Domingo" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Segunda" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Terça" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Quarta" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Quinta" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Sexta" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sábado" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Janeiro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Fevereiro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Março" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Abril" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Maio" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Junho" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Julho" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Agosto" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Setembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Outubro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Novembro" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Dezembro" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "serviços web sob o seu controlo" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Sair" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Login automático rejeitado!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Se não mudou a sua palavra-passe recentemente, a sua conta pode ter sido comprometida!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Por favor mude a sua palavra-passe para assegurar a sua conta de novo." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Esqueceu a sua password?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "lembrar" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Entrar" @@ -379,3 +529,17 @@ msgstr "anterior" #: templates/part.pagenavi.php:20 msgid "next" msgstr "seguinte" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Aviso de Segurança!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Por favor verifique a sua palavra-passe.
            Por razões de segurança, pode ser-lhe perguntada, ocasionalmente, a sua palavra-passe de novo." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verificar" diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index a6c43b21b31bb732a2959183727dfa64b8d7d55a..8628e63a4ded78b45910ccbe22537866e2f57378 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/files.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Duarte Velez Grilo , 2012. # , 2012. # Helder Meneses , 2012. @@ -11,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:04+0200\n" -"PO-Revision-Date: 2012-10-09 15:25+0000\n" -"Last-Translator: Duarte Velez Grilo \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 00:41+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,195 +27,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Sem erro, ficheiro enviado com sucesso" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "O ficheiro enviado excede a directiva upload_max_filesize no php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "O ficheiro enviado excede o diretivo MAX_FILE_SIZE especificado no formulário HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "O ficheiro enviado só foi enviado parcialmente" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Não foi enviado nenhum ficheiro" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Falta uma pasta temporária" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Falhou a escrita no disco" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Ficheiros" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Deixar de partilhar" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Apagar" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Renomear" -#: js/filelist.js:192 js/filelist.js:194 -msgid "already exists" -msgstr "já existe" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "O nome {new_name} já existe" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "substituir" -#: js/filelist.js:192 +#: js/filelist.js:201 msgid "suggest name" msgstr "Sugira um nome" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:241 js/filelist.js:243 -msgid "replaced" -msgstr "substituído" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "{new_name} substituido" -#: js/filelist.js:241 js/filelist.js:243 js/filelist.js:275 js/filelist.js:277 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "desfazer" -#: js/filelist.js:243 -msgid "with" -msgstr "com" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "substituido {new_name} por {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "{files} não partilhado(s)" -#: js/filelist.js:275 -msgid "unshared" -msgstr "não partilhado" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "{files} eliminado(s)" -#: js/filelist.js:277 -msgid "deleted" -msgstr "apagado" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nome Inválido, os caracteres '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "a gerar o ficheiro ZIP, poderá demorar algum tempo." -#: js/files.js:214 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Não é possível fazer o envio do ficheiro devido a ser uma pasta ou ter 0 bytes" -#: js/files.js:214 +#: js/files.js:218 msgid "Upload Error" msgstr "Erro no envio" -#: js/files.js:242 js/files.js:347 js/files.js:377 +#: js/files.js:235 +msgid "Close" +msgstr "Fechar" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Pendente" -#: js/files.js:262 +#: js/files.js:274 msgid "1 file uploading" msgstr "A enviar 1 ficheiro" -#: js/files.js:265 js/files.js:310 js/files.js:325 -msgid "files uploading" -msgstr "ficheiros a serem enviados" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "A carregar {count} ficheiros" -#: js/files.js:328 js/files.js:361 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "O envio foi cancelado." -#: js/files.js:430 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Envio de ficheiro em progresso. Irá cancelar o envio se sair da página agora." -#: js/files.js:500 -msgid "Invalid name, '/' is not allowed." -msgstr "Nome inválido, '/' não permitido." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nome de pasta inválido! O uso de \"Shared\" (Partilhado) está reservado pelo OwnCloud" -#: js/files.js:681 -msgid "files scanned" -msgstr "ficheiros analisados" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} ficheiros analisados" -#: js/files.js:689 +#: js/files.js:712 msgid "error while scanning" msgstr "erro ao analisar" -#: js/files.js:762 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nome" -#: js/files.js:763 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Tamanho" -#: js/files.js:764 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificado" -#: js/files.js:791 -msgid "folder" -msgstr "pasta" - -#: js/files.js:793 -msgid "folders" -msgstr "pastas" - -#: js/files.js:801 -msgid "file" -msgstr "ficheiro" - -#: js/files.js:803 -msgid "files" -msgstr "ficheiros" - -#: js/files.js:847 -msgid "seconds ago" -msgstr "há segundos" - -#: js/files.js:848 -msgid "minute ago" -msgstr "há um minuto" - -#: js/files.js:849 -msgid "minutes ago" -msgstr "há minutos" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 pasta" -#: js/files.js:852 -msgid "today" -msgstr "hoje" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} pastas" -#: js/files.js:853 -msgid "yesterday" -msgstr "ontem" +#: js/files.js:824 +msgid "1 file" +msgstr "1 ficheiro" -#: js/files.js:854 -msgid "days ago" -msgstr "há dias" - -#: js/files.js:855 -msgid "last month" -msgstr "mês passado" - -#: js/files.js:857 -msgid "months ago" -msgstr "há meses" - -#: js/files.js:858 -msgid "last year" -msgstr "ano passado" - -#: js/files.js:859 -msgid "years ago" -msgstr "há anos" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} ficheiros" #: templates/admin.php:5 msgid "File handling" @@ -224,27 +196,27 @@ msgstr "Manuseamento de ficheiros" msgid "Maximum upload size" msgstr "Tamanho máximo de envio" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. possivel: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Necessário para descarregamento múltiplo de ficheiros e pastas" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Permitir descarregar em ficheiro ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 é ilimitado" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Tamanho máximo para ficheiros ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Guardar" @@ -252,52 +224,48 @@ msgstr "Guardar" msgid "New" msgstr "Novo" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Ficheiro de texto" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Pasta" -#: templates/index.php:11 -msgid "From url" -msgstr "Do endereço" +#: templates/index.php:14 +msgid "From link" +msgstr "Da ligação" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Enviar" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Cancelar envio" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Vazio. Envie alguma coisa!" -#: templates/index.php:50 -msgid "Share" -msgstr "Partilhar" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Transferir" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Envio muito grande" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Os ficheiros que está a tentar enviar excedem o tamanho máximo de envio permitido neste servidor." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Os ficheiros estão a ser analisados, por favor aguarde." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Análise actual" diff --git a/l10n/pt_PT/files_pdfviewer.po b/l10n/pt_PT/files_pdfviewer.po deleted file mode 100644 index 67aaa183aba7b023114027677c16558551fb9e9e..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/pt_PT/files_texteditor.po b/l10n/pt_PT/files_texteditor.po deleted file mode 100644 index 1c3a291131cdb31e13a067017cc45eab0da6c361..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/pt_PT/gallery.po b/l10n/pt_PT/gallery.po deleted file mode 100644 index 91c5cb18537c61a96349763838da233c5ac10321..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/gallery.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# Helder Meneses , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 19:50+0000\n" -"Last-Translator: rlameiro \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:42 -msgid "Pictures" -msgstr "Imagens" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Partilhar a galeria" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Erro: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Erro interno" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Slideshow" diff --git a/l10n/pt_PT/impress.po b/l10n/pt_PT/impress.po deleted file mode 100644 index a3d95463c925029e8d9a3f27438b6c511a2ad368..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/pt_PT/lib.po b/l10n/pt_PT/lib.po index 2b38acfb08a69da25ce7d018ffd4ff1e395a9976..fe66807cc3a3408ac523a423b75ad689005badb9 100644 --- a/l10n/pt_PT/lib.po +++ b/l10n/pt_PT/lib.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Duarte Velez Grilo , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-04 02:04+0200\n" -"PO-Revision-Date: 2012-10-03 13:28+0000\n" -"Last-Translator: Duarte Velez Grilo \n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-16 00:33+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +43,19 @@ msgstr "Aplicações" msgid "Admin" msgstr "Admin" -#: files.php:327 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Descarregamento em ZIP está desligado." -#: files.php:328 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Os ficheiros precisam de ser descarregados um por um." -#: files.php:328 files.php:353 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Voltar a Ficheiros" -#: files.php:352 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Os ficheiros seleccionados são grandes demais para gerar um ficheiro zip." @@ -62,7 +63,7 @@ msgstr "Os ficheiros seleccionados são grandes demais para gerar um ficheiro zi msgid "Application is not enabled" msgstr "A aplicação não está activada" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Erro na autenticação" @@ -70,57 +71,84 @@ msgstr "Erro na autenticação" msgid "Token expired. Please reload page." msgstr "O token expirou. Por favor recarregue a página." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Ficheiros" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Texto" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Imagens" + +#: template.php:103 msgid "seconds ago" msgstr "há alguns segundos" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "há 1 minuto" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "há %d minutos" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "Há 1 horas" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "Há %d horas" + +#: template.php:108 msgid "today" msgstr "hoje" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "ontem" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "há %d dias" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "mês passado" -#: template.php:96 -msgid "months ago" -msgstr "há meses" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "Há %d meses atrás" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "ano passado" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "há anos" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s está disponível. Obtenha mais informação" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "actualizado" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "a verificação de actualizações está desligada" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Não foi encontrado a categoria \"%s\"" diff --git a/l10n/pt_PT/media.po b/l10n/pt_PT/media.po deleted file mode 100644 index ca255767029fdfa6c8324f3c830f05a6a3ed3e0a..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.net/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Musica" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Reproduzir" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pausa" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Anterior" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Próximo" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Mudo" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Som" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Reverificar coleção" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artista" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ãlbum" - -#: templates/music.php:39 -msgid "Title" -msgstr "Título" diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po index ed70cb0d395117e5e8bca5c0f212b5d145b2976e..38b4491aa64a979ab7129912f91f4377f59a2524 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/settings.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Duarte Velez Grilo , 2012. # , 2012. # Helder Meneses , 2012. @@ -11,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:05+0200\n" -"PO-Revision-Date: 2012-10-09 15:29+0000\n" -"Last-Translator: Duarte Velez Grilo \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,70 +22,73 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Incapaz de carregar a lista da App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Erro de autenticação" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "O grupo já existe" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Impossível acrescentar o grupo" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Não foi possível activar a app." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email guardado" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Email inválido" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID alterado" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Pedido inválido" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Impossível apagar grupo" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Erro de autenticação" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Impossível apagar utilizador" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Idioma alterado" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Os administradores não se podem remover a eles mesmos do grupo admin." + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Impossível acrescentar utilizador ao grupo %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Impossível apagar utilizador do grupo %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Desactivar" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Activar" @@ -92,97 +96,10 @@ msgstr "Activar" msgid "Saving..." msgstr "A guardar..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Aviso de Segurança" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "A sua pasta com os dados e os seus ficheiros estão provavelmente acessíveis a partir das internet. Sugerimos veementemente que configure o seu servidor web de maneira a que a pasta com os dados deixe de ficar acessível, ou mova a pasta com os dados para fora da raiz de documentos do servidor web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Executar uma tarefa ao carregar cada página" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php está registado num serviço webcron. Chame a página cron.php na raiz owncloud por http uma vez por minuto." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Usar o serviço cron do sistema. Chame a página cron.php na pasta owncloud via um cronjob do sistema uma vez por minuto." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Partilhando" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Activar API de partilha" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Permitir que as aplicações usem a API de partilha" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Permitir ligações" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Permitir que os utilizadores partilhem itens com o público com ligações" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Permitir voltar a partilhar" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Permitir que os utilizadores partilhem itens que foram partilhados com eles" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Permitir que os utilizadores partilhem com toda a gente" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Permitir que os utilizadores apenas partilhem com utilizadores do seu grupo" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mais" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Desenvolvido pela comunidade ownCloud, ocódigo fonte está licenciado sob a AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Adicione a sua aplicação" @@ -215,22 +132,22 @@ msgstr "Gestão de ficheiros grandes" msgid "Ask a question" msgstr "Coloque uma questão" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problemas ao ligar à base de dados de ajuda" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Vá lá manualmente" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Resposta" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Usou %s dos %s disponíveis." +msgid "You have used %s of the available %s" +msgstr "Usou %s do disponivel %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -288,6 +205,16 @@ msgstr "Ajude a traduzir" msgid "use this address to connect to your ownCloud in your file manager" msgstr "utilize este endereço para ligar ao seu ownCloud através do seu gestor de ficheiros" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Desenvolvido pela comunidade ownCloud, ocódigo fonte está licenciado sob a AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nome" diff --git a/l10n/pt_PT/tasks.po b/l10n/pt_PT/tasks.po deleted file mode 100644 index 405b6d903ff372a11cdea9d66fe168b2cfedafc3..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/pt_PT/user_ldap.po b/l10n/pt_PT/user_ldap.po index f9ac903822d97df8218e324975dfeeee56869dbd..07c6f1ca24913e062a705fdb0bf849a88ca9d830 100644 --- a/l10n/pt_PT/user_ldap.po +++ b/l10n/pt_PT/user_ldap.po @@ -3,15 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Duarte Velez Grilo , 2012. # Helder Meneses , 2012. +# Nelson Rosado , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-11 02:04+0200\n" -"PO-Revision-Date: 2012-10-10 21:26+0000\n" -"Last-Translator: Helder Meneses \n" +"POT-Creation-Date: 2012-11-08 00:01+0100\n" +"PO-Revision-Date: 2012-11-07 15:39+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,11 +28,11 @@ msgstr "Anfitrião" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "Pode omitir o protocolo, excepto se necessitar de SSL. Neste caso, comece com ldaps://" #: templates/settings.php:9 msgid "Base DN" -msgstr "" +msgstr "DN base" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -38,14 +40,14 @@ msgstr "Pode especificar o ND Base para utilizadores e grupos no separador Avan #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "DN do utilizador" #: templates/settings.php:10 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "O DN to cliente " #: templates/settings.php:11 msgid "Password" @@ -53,35 +55,35 @@ msgstr "Palavra-passe" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "Para acesso anónimo, deixe DN e a Palavra-passe vazios." #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "Filtro de login de utilizador" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "Define o filtro a aplicar, para aquando de uma tentativa de login. %%uid substitui o nome de utilizador utilizado." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "Use a variável %%uid , exemplo: \"uid=%%uid\"" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "Utilizar filtro" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "Defina o filtro a aplicar, ao recuperar utilizadores." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "" +msgstr "Sem variável. Exemplo: \"objectClass=pessoa\"." #: templates/settings.php:14 msgid "Group Filter" @@ -89,11 +91,11 @@ msgstr "Filtrar por grupo" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "Defina o filtro a aplicar, ao recuperar grupos." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "" +msgstr "Sem nenhuma variável. Exemplo: \"objectClass=posixGroup\"." #: templates/settings.php:17 msgid "Port" @@ -101,57 +103,57 @@ msgstr "Porto" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "Base da árvore de utilizadores." #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "Base da árvore de grupos." #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "Associar utilizador ao grupo." #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "Usar TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "Não use para ligações SSL, irá falhar." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "Servidor LDAP (Windows) não sensível a maiúsculas." #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "Desligar a validação de certificado SSL." #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Se a ligação apenas funcionar com está opção, importe o certificado SSL do servidor LDAP para o seu servidor do ownCloud." #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "Não recomendado, utilizado apenas para testes!" #: templates/settings.php:24 msgid "User Display Name Field" -msgstr "" +msgstr "Mostrador do nome de utilizador." #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "Atributo LDAP para gerar o nome de utilizador do ownCloud." #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "Mostrador do nome do grupo." #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "Atributo LDAP para gerar o nome do grupo do ownCloud." #: templates/settings.php:27 msgid "in bytes" @@ -165,7 +167,7 @@ msgstr "em segundos. Uma alteração esvazia a cache." msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "" +msgstr "Deixe vazio para nome de utilizador (padrão). De outro modo, especifique um atributo LDAP/AD." #: templates/settings.php:32 msgid "Help" diff --git a/l10n/pt_PT/user_migrate.po b/l10n/pt_PT/user_migrate.po deleted file mode 100644 index dc1013582b8fe34a8a98e97ba76fdebe11e6042b..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/pt_PT/user_openid.po b/l10n/pt_PT/user_openid.po deleted file mode 100644 index 617e967bddc058a33cb366daef68cd3b86f9d81a..0000000000000000000000000000000000000000 --- a/l10n/pt_PT/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/pt_PT/files_odfviewer.po b/l10n/pt_PT/user_webdavauth.po similarity index 59% rename from l10n/pt_PT/files_odfviewer.po rename to l10n/pt_PT/user_webdavauth.po index 01ea436b982b57b4197d2da0641b8a3847b1868a..efb197aacbd76737794ae7acfa278ec74b10894a 100644 --- a/l10n/pt_PT/files_odfviewer.po +++ b/l10n/pt_PT/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Helder Meneses , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-14 00:02+0100\n" +"PO-Revision-Date: 2012-11-13 12:27+0000\n" +"Last-Translator: Helder Meneses \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_PT\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "Endereço WebDAV: http://" diff --git a/l10n/ro/admin_dependencies_chk.po b/l10n/ro/admin_dependencies_chk.po deleted file mode 100644 index 76d2d0539d300f5ae3b6943c6da5fb83f98e66b2..0000000000000000000000000000000000000000 --- a/l10n/ro/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/ro/admin_migrate.po b/l10n/ro/admin_migrate.po deleted file mode 100644 index 44132a5cdd3f4f7b1bb3c0bf46dd8a719e24bb1e..0000000000000000000000000000000000000000 --- a/l10n/ro/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/ro/bookmarks.po b/l10n/ro/bookmarks.po deleted file mode 100644 index e02fd456c982a0d76f59887e0d573f83f025f7bc..0000000000000000000000000000000000000000 --- a/l10n/ro/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/ro/calendar.po b/l10n/ro/calendar.po deleted file mode 100644 index bb0d41a50a75c63e51d292645c03af595e0481f9..0000000000000000000000000000000000000000 --- a/l10n/ro/calendar.po +++ /dev/null @@ -1,817 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Claudiu , 2011, 2012. -# Dimon Pockemon <>, 2012. -# Eugen Mihalache , 2012. -# Ovidiu Tache , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Nici un calendar găsit." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Nici un eveniment găsit." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Calendar greÈ™it" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Fus orar nou:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Fus orar schimbat" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Cerere eronată" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Calendar" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "LLL z[aaaa]{'—'[LLL] z aaaa}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Zi de naÈ™tere" - -#: lib/app.php:122 -msgid "Business" -msgstr "Afaceri" - -#: lib/app.php:123 -msgid "Call" -msgstr "Sună" - -#: lib/app.php:124 -msgid "Clients" -msgstr "ClienÈ›i" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Curier" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Sărbători" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idei" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Călătorie" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Aniversare" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "ÃŽntâlnire" - -#: lib/app.php:131 -msgid "Other" -msgstr "Altele" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personal" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Proiecte" - -#: lib/app.php:134 -msgid "Questions" -msgstr "ÃŽntrebări" - -#: lib/app.php:135 -msgid "Work" -msgstr "Servici" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "fără nume" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Calendar nou" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Nerepetabil" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Zilnic" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Săptămânal" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "ÃŽn fiecare zii a săptămânii" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "La fiecare două săptămâni" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Lunar" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Anual" - -#: lib/object.php:388 -msgid "never" -msgstr "niciodată" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "după repetiÈ›ie" - -#: lib/object.php:390 -msgid "by date" -msgstr "după dată" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "după ziua lunii" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "după ziua săptămânii" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Luni" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "MarÈ›i" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Miercuri" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Joi" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Vineri" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sâmbătă" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Duminică" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "evenimentele săptămânii din luna" - -#: lib/object.php:428 -msgid "first" -msgstr "primul" - -#: lib/object.php:429 -msgid "second" -msgstr "al doilea" - -#: lib/object.php:430 -msgid "third" -msgstr "al treilea" - -#: lib/object.php:431 -msgid "fourth" -msgstr "al patrulea" - -#: lib/object.php:432 -msgid "fifth" -msgstr "al cincilea" - -#: lib/object.php:433 -msgid "last" -msgstr "ultimul" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Ianuarie" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februarie" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Martie" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Aprilie" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mai" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Iunie" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Iulie" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Septembrie" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Octombrie" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Noiembrie" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Decembrie" - -#: lib/object.php:488 -msgid "by events date" -msgstr "după data evenimentului" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "după ziua(zilele) anului" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "după numărul săptămânii" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "după zi È™i lună" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Data" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Toată ziua" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Câmpuri lipsă" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Titlu" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "ÃŽncepând cu" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "De la" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Până pe" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "La" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Evenimentul se termină înainte să înceapă" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "A avut loc o eroare a bazei de date" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Săptămâna" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Luna" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Listă" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Astăzi" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Calendarele tale" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Legătură CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Calendare partajate" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Nici un calendar partajat" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "PartajaÈ›i calendarul" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Descarcă" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Modifică" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Șterge" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "Partajat cu tine de" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Calendar nou" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Modifică calendarul" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Nume afiÈ™at" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Activ" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Culoarea calendarului" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Salveză" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Trimite" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Anulează" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Modifică un eveniment" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportă" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "InformaÈ›ii despre eveniment" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Ciclic" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarmă" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "ParticipanÈ›i" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Partajează" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Numele evenimentului" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Categorie" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separă categoriile prin virgule" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Editează categorii" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Toată ziua" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "De la" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Către" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "OpÈ›iuni avansate" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "LocaÈ›ie" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "LocaÈ›ia evenimentului" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Descriere" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Descrierea evenimentului" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Repetă" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avansat" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Selectează zilele săptămânii" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Selectează zilele" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "È™i evenimentele de zi cu zi ale anului." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "È™i evenimentele de zi cu zi ale lunii." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Selectează lunile" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Selectează săptămânile" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "È™i evenimentele săptămânale ale anului." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Interval" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "SfârÈ™it" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "repetiÈ›ii" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "crează un calendar nou" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importă un calendar" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Numele noului calendar" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importă" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "ÃŽnchide" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Crează un eveniment nou" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Vizualizează un eveniment" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nici o categorie selectată" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "din" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "la" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Fus orar" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Utilizatori" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "utilizatori selectaÈ›i" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Editabil" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupuri" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "grupuri selectate" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "fă public" diff --git a/l10n/ro/contacts.po b/l10n/ro/contacts.po deleted file mode 100644 index ab7e082bbeb2b13b291330bbf091b9a9028f2963..0000000000000000000000000000000000000000 --- a/l10n/ro/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Claudiu , 2011, 2012. -# Dimon Pockemon <>, 2012. -# Eugen Mihalache , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "(Dez)activarea agendei a întâmpinat o eroare." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID-ul nu este stabilit" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Eroare la actualizarea agendei." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Nici un ID nu a fost furnizat" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Eroare la stabilirea sumei de control" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Nici o categorie selectată pentru È™tergere" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Nici o carte de adrese găsită" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Nici un contact găsit" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "O eroare a împiedicat adăugarea contactului." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "numele elementului nu este stabilit." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Nu se poate adăuga un câmp gol." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Cel puÈ›in unul din câmpurile adresei trebuie completat." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "InformaÈ›iile cărÈ›ii de vizită sunt incorecte. Te rog reîncarcă pagina." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID lipsă" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Eroare la prelucrarea VCard-ului pentru ID:\"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "suma de control nu este stabilită." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Nici un ID de contact nu a fost transmis" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Eroare la citerea fotografiei de contact" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Eroare la salvarea fiÈ™ierului temporar." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Fotografia care se încarcă nu este validă." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "ID-ul de contact lipseÈ™te." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Nici o adresă către fotografie nu a fost transmisă" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "FiÈ™ierul nu există:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Eroare la încărcarea imaginii." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Contacte" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Nu se găseÈ™te în agendă." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Contactul nu a putut fi găsit." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Servicu" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Acasă" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Text" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Voce" - -#: lib/app.php:205 -msgid "Message" -msgstr "Mesaj" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Zi de naÈ™tere" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Ziua de naÈ™tere a {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Contact" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Adaugă contact" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Agende" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Introdu detalii despre nume" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "OrganizaÈ›ie" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Șterge" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Pseudonim" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Introdu pseudonim" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "zz-ll-aaaa" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupuri" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separă grupurile cu virgule" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editează grupuri" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Preferat" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Te rog să specifici un e-mail corect" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Introdu adresa de e-mail" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Trimite mesaj la e-mail" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Șterge e-mail" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresă" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Descarcă acest contact" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Șterge contact" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tip" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "CP" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Extins" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "OraÈ™" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regiune" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Cod poÈ™tal" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Èšară" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Agendă" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Descarcă" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Editează" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Agendă nouă" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Salvează" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Anulează" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index 48c69f2447b48dbf1e3f2083704d5a8a41b209fa..499ac25ab5f5f752a0a0551b4ec7328dd09489cd 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/core.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,208 +21,241 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Numele aplicaÈ›ie nu este furnizat." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Nici o categorie de adăugat?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Această categorie deja există:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Nici o categorie selectată pentru È™tergere." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Configurări" -#: js/js.js:645 -msgid "January" -msgstr "Ianuarie" +#: js/js.js:688 +msgid "seconds ago" +msgstr "secunde în urmă" -#: js/js.js:645 -msgid "February" -msgstr "Februarie" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 minut în urmă" -#: js/js.js:645 -msgid "March" -msgstr "Martie" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Aprilie" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mai" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Iunie" +#: js/js.js:693 +msgid "today" +msgstr "astăzi" -#: js/js.js:646 -msgid "July" -msgstr "Iulie" +#: js/js.js:694 +msgid "yesterday" +msgstr "ieri" -#: js/js.js:646 -msgid "August" -msgstr "August" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "Septembrie" +#: js/js.js:696 +msgid "last month" +msgstr "ultima lună" -#: js/js.js:646 -msgid "October" -msgstr "Octombrie" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Noiembrie" +#: js/js.js:698 +msgid "months ago" +msgstr "luni în urmă" -#: js/js.js:646 -msgid "December" -msgstr "Decembrie" +#: js/js.js:699 +msgid "last year" +msgstr "ultimul an" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "ani în urmă" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Alege" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Anulare" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nu" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Da" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Nici o categorie selectată pentru È™tergere." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Eroare" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Eroare la partajare" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Eroare la anularea partajării" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Eroare la modificarea permisiunilor" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Partajat cu" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Partajare cu legătură" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Protejare cu parolă" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Parola" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Specifică data expirării" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Data expirării" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Nici o persoană găsită" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Repartajarea nu este permisă" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "Anulare partajare" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "poate edita" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "control acces" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "creare" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "actualizare" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "È™tergere" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "partajare" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Protejare cu parolă" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Eroare la anularea datei de expirare" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Eroare la specificarea datei de expirare" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Resetarea parolei ownCloud " @@ -235,19 +268,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Vei primi un mesaj prin care vei putea reseta parola via email" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Solicitat" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Autentificare eÈ™uată" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Utilizator" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Cerere trimisă" @@ -299,72 +332,187 @@ msgstr "Nu s-a găsit" msgid "Edit categories" msgstr "Editează categoriile" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Adaugă" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Avertisment de securitate" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Directorul tău de date È™i fiÈ™ierele tale probabil sunt accesibile prin internet. FiÈ™ierul .htaccess oferit de ownCloud nu funcÈ›ionează. ÃŽÈ›i recomandăm să configurezi server-ul tău web într-un mod în care directorul de date să nu mai fie accesibil sau mută directorul de date în afara directorului root al server-ului web." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Crează un cont de administrator" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avansat" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Director date" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Configurează baza de date" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "vor fi folosite" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Utilizatorul bazei de date" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Parola bazei de date" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Numele bazei de date" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Tabela de spaÈ›iu a bazei de date" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Bază date" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Finalizează instalarea" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Duminică" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Luni" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "MarÈ›i" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Miercuri" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Joi" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Vineri" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Sâmbătă" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Ianuarie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februarie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Martie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Aprilie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Mai" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Iunie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Iulie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Septembrie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Octombrie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Noiembrie" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Decembrie" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "servicii web controlate de tine" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "IeÈ™ire" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Ai uitat parola?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "aminteÈ™te" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Autentificare" @@ -379,3 +527,17 @@ msgstr "precedentul" #: templates/part.pagenavi.php:20 msgid "next" msgstr "următorul" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index ebc77fb07be6a24f533647352576613209d63ccc..a1bd981cb9b52398cf7c278d6bea519b54159ff2 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/files.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 13:07+0000\n" -"Last-Translator: g.ciprian \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,195 +26,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Nicio eroare, fiÈ™ierul a fost încărcat cu succes" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "FiÈ™ierul are o dimensiune mai mare decât cea specificată în variabila upload_max_filesize din php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "FiÈ™ierul are o dimensiune mai mare decât variabile MAX_FILE_SIZE specificată în formularul HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "FiÈ™ierul a fost încărcat doar parÈ›ial" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Niciun fiÈ™ier încărcat" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "LipseÈ™te un dosar temporar" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Eroare la scriere pe disc" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "FiÈ™iere" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Anulează partajarea" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Șterge" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Redenumire" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "deja există" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "înlocuire" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "sugerează nume" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "anulare" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "înlocuit" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "Anulează ultima acÈ›iune" -#: js/filelist.js:241 -msgid "with" -msgstr "cu" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" -#: js/filelist.js:273 -msgid "unshared" -msgstr "nepartajat" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "È™ters" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "se generază fiÈ™ierul ZIP, va dura ceva timp." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nu s-a putut încărca fiÈ™ierul tău deoarece pare să fie un director sau are 0 bytes." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Eroare la încărcare" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "ÃŽnchide" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "ÃŽn aÈ™teptare" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "un fiÈ™ier se încarcă" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "fiÈ™iere se încarcă" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "ÃŽncărcare anulată." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "FiÈ™ierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Nume invalid, '/' nu este permis." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:668 -msgid "files scanned" -msgstr "fiÈ™iere scanate" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "eroare la scanarea" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Nume" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Dimensiune" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Modificat" -#: js/files.js:778 -msgid "folder" -msgstr "director" - -#: js/files.js:780 -msgid "folders" -msgstr "directoare" - -#: js/files.js:788 -msgid "file" -msgstr "fiÈ™ier" - -#: js/files.js:790 -msgid "files" -msgstr "fiÈ™iere" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "secunde în urmă" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minut în urmă" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "minute în urmă" - -#: js/files.js:839 -msgid "today" -msgstr "astăzi" - -#: js/files.js:840 -msgid "yesterday" -msgstr "ieri" - -#: js/files.js:841 -msgid "days ago" -msgstr "zile în urmă" - -#: js/files.js:842 -msgid "last month" -msgstr "ultima lună" +#: js/files.js:814 +msgid "1 folder" +msgstr "" -#: js/files.js:844 -msgid "months ago" -msgstr "luni în urmă" +#: js/files.js:816 +msgid "{count} folders" +msgstr "" -#: js/files.js:845 -msgid "last year" -msgstr "ultimul an" +#: js/files.js:824 +msgid "1 file" +msgstr "" -#: js/files.js:846 -msgid "years ago" -msgstr "ani în urmă" +#: js/files.js:826 +msgid "{count} files" +msgstr "" #: templates/admin.php:5 msgid "File handling" @@ -224,27 +195,27 @@ msgstr "Manipulare fiÈ™iere" msgid "Maximum upload size" msgstr "Dimensiune maximă admisă la încărcare" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. posibil:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Necesar pentru descărcarea mai multor fiÈ™iere È™i a dosarelor" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Activează descărcare fiÈ™iere compresate" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 e nelimitat" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Dimensiunea maximă de intrare pentru fiÈ™iere compresate" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Salvare" @@ -252,52 +223,48 @@ msgstr "Salvare" msgid "New" msgstr "Nou" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "FiÈ™ier text" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Dosar" -#: templates/index.php:11 -msgid "From url" -msgstr "De la URL" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "ÃŽncarcă" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Anulează încărcarea" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Nimic aici. ÃŽncarcă ceva!" -#: templates/index.php:50 -msgid "Share" -msgstr "Partajează" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Descarcă" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "FiÈ™ierul încărcat este prea mare" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "FiÈ™ierul care l-ai încărcat a depășită limita maximă admisă la încărcare pe acest server." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "FiÈ™ierele sunt scanate, te rog aÈ™teptă." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "ÃŽn curs de scanare" diff --git a/l10n/ro/files_pdfviewer.po b/l10n/ro/files_pdfviewer.po deleted file mode 100644 index 5425afad6366103e235cdc532a6833ab2ff8b632..0000000000000000000000000000000000000000 --- a/l10n/ro/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ro/files_texteditor.po b/l10n/ro/files_texteditor.po deleted file mode 100644 index c74fb485a95a78163c4ea938977a1f5d9dd9da0d..0000000000000000000000000000000000000000 --- a/l10n/ro/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ro/gallery.po b/l10n/ro/gallery.po deleted file mode 100644 index 4bf7a3d27195d675855116c69f074f5493362ce5..0000000000000000000000000000000000000000 --- a/l10n/ro/gallery.po +++ /dev/null @@ -1,97 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Claudiu , 2012. -# Dimon Pockemon <>, 2012. -# Eugen Mihalache , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Romanian (http://www.transifex.net/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Imagini" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "Setări" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Re-scanează" - -#: templates/index.php:17 -msgid "Stop" -msgstr "Stop" - -#: templates/index.php:18 -msgid "Share" -msgstr "Partajează" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "ÃŽnapoi" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Șterge confirmarea" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Vrei să È™tergi albumul" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Schimbă numele albumului" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nume nou album" diff --git a/l10n/ro/impress.po b/l10n/ro/impress.po deleted file mode 100644 index 11bb267b33b196e85c8338d65746d9e27b7335a9..0000000000000000000000000000000000000000 --- a/l10n/ro/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/ro/lib.po b/l10n/ro/lib.po index d9b2796cc91a20f289daf5a0f67f12d6d99cf2dc..827d2b17ea970bac7c9b280f0d8f183d8ab4e59a 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/lib.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-19 02:02+0200\n" -"PO-Revision-Date: 2012-09-18 12:54+0000\n" -"Last-Translator: g.ciprian \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +42,19 @@ msgstr "AplicaÈ›ii" msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Descărcarea ZIP este dezactivată." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "FiÈ™ierele trebuie descărcate unul câte unul." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "ÃŽnapoi la fiÈ™iere" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "FiÈ™ierele selectate sunt prea mari pentru a genera un fiÈ™ier zip." @@ -62,7 +62,7 @@ msgstr "FiÈ™ierele selectate sunt prea mari pentru a genera un fiÈ™ier zip." msgid "Application is not enabled" msgstr "AplicaÈ›ia nu este activată" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Eroare la autentificare" @@ -70,57 +70,84 @@ msgstr "Eroare la autentificare" msgid "Token expired. Please reload page." msgstr "Token expirat. Te rugăm să reîncarci pagina." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "FiÈ™iere" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Text" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "secunde în urmă" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 minut în urmă" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minute în urmă" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "astăzi" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "ieri" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d zile în urmă" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "ultima lună" -#: template.php:96 -msgid "months ago" -msgstr "luni în urmă" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "ultimul an" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "ani în urmă" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s este disponibil. Vezi mai multe informaÈ›ii" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "la zi" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "verificarea după actualizări este dezactivată" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/ro/media.po b/l10n/ro/media.po deleted file mode 100644 index 8ad58147fa208e60c0c60817ac062405353e762e..0000000000000000000000000000000000000000 --- a/l10n/ro/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Claudiu , 2011. -# Eugen Mihalache , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Romanian (http://www.transifex.net/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Muzică" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Redă" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pauză" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Precedent" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Următor" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Fără sonor" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Cu sonor" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Rescanează colecÈ›ia" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artist" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titlu" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index 37d05af3c866ea62bf5b5804a9716537add4e9da..f963f93caf920529938476cf0bf250b1cbe0f870 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/settings.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,70 +23,73 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Imposibil de încărcat lista din App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Eroare de autentificare" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Grupul există deja" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Nu s-a putut adăuga grupul" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Nu s-a putut activa aplicaÈ›ia." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-mail salvat" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "E-mail nevalid" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID schimbat" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Cerere eronată" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Nu s-a putut È™terge grupul" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Eroare de autentificare" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Nu s-a putut È™terge utilizatorul" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Limba a fost schimbată" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Nu s-a putut adăuga utilizatorul la grupul %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Nu s-a putut elimina utilizatorul din grupul %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "DezactivaÈ›i" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "ActivaÈ›i" @@ -94,97 +97,10 @@ msgstr "ActivaÈ›i" msgid "Saving..." msgstr "Salvez..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "_language_name_" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Avertisment de securitate" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Directorul tău de date È™i fiÈ™ierele tale probabil sunt accesibile prin internet. FiÈ™ierul .htaccess oferit de ownCloud nu funcÈ›ionează. ÃŽÈ›i recomandăm să configurezi server-ul tău web într-un mod în care directorul de date să nu mai fie accesibil sau mută directorul de date în afara directorului root al server-ului web." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Execută o sarcină la fiecare pagină încărcată" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php este înregistrat în serviciul webcron. Accesează pagina cron.php din root-ul owncloud odată pe minut prin http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "FoloseÈ™te serviciul cron al sistemului. Accesează fiÈ™ierul cron.php din directorul owncloud printr-un cronjob de sistem odată la fiecare minut." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Partajare" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Activare API partajare" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Permite aplicaÈ›iilor să folosească API-ul de partajare" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Pemite legături" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Permite utilizatorilor să partajeze fiÈ™iere în mod public prin legături" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Permite repartajarea" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Permite utilizatorilor să repartajeze fiÈ™iere partajate cu ei" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Permite utilizatorilor să partajeze cu oricine" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Permite utilizatorilor să partajeze doar cu utilizatori din acelaÈ™i grup" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Jurnal de activitate" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mai mult" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Dezvoltat de the comunitatea ownCloud, codul sursă este licenÈ›iat sub AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Adaugă aplicaÈ›ia ta" @@ -217,22 +133,22 @@ msgstr "Gestionînd fiÈ™iere mari" msgid "Ask a question" msgstr "ÃŽntreabă" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Probleme de conectare la baza de date." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Pe cale manuală." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Răspuns" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Ai utilizat %s din %s spaÈ›iu disponibil" +msgid "You have used %s of the available %s" +msgstr "" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -290,6 +206,16 @@ msgstr "Ajută la traducere" msgid "use this address to connect to your ownCloud in your file manager" msgstr "foloseÈ™te această adresă pentru a te conecta la managerul tău de fiÈ™iere din ownCloud" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Dezvoltat de the comunitatea ownCloud, codul sursă este licenÈ›iat sub AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Nume" diff --git a/l10n/ro/tasks.po b/l10n/ro/tasks.po deleted file mode 100644 index c7869fb6c68d97ce84c1b80afe235a729e7dc55c..0000000000000000000000000000000000000000 --- a/l10n/ro/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Dumitru Ursu <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 20:30+0000\n" -"Last-Translator: Dumitru Ursu <>\n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Data/timpul invalid" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Sarcini" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Fără categorie" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Nespecificat" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=cel mai înalt" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=mediu" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=cel mai jos" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Rezumat gol" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Completare procentuală greÈ™ită" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Prioritare greÈ™ită" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Adaugă sarcină" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Comandă până la" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Lista de comenzi" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Comandă executată" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "LocaÈ›ia comenzii" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Prioritarea comenzii" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Eticheta comenzii" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "ÃŽncărcare sarcini" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Important" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Mai mult" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Mai puÈ›in" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Șterge" diff --git a/l10n/ro/user_migrate.po b/l10n/ro/user_migrate.po deleted file mode 100644 index de0b6551e99887982d74a79734ccbd89387cdfea..0000000000000000000000000000000000000000 --- a/l10n/ro/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/ro/user_openid.po b/l10n/ro/user_openid.po deleted file mode 100644 index e5598de2c942eebda14dc04c83cc76377d662803..0000000000000000000000000000000000000000 --- a/l10n/ro/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/ro/files_odfviewer.po b/l10n/ro/user_webdavauth.po similarity index 78% rename from l10n/ro/files_odfviewer.po rename to l10n/ro/user_webdavauth.po index 3fa223c661249e111718b309375c6bf3b8ee3d7e..63c426cad9b34057eeeb1b86f3c6a0d71eeef3cc 100644 --- a/l10n/ro/files_odfviewer.po +++ b/l10n/ro/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/ru/admin_dependencies_chk.po b/l10n/ru/admin_dependencies_chk.po deleted file mode 100644 index fefbc127559d61cec9fdeff39ca0d68304b3e87d..0000000000000000000000000000000000000000 --- a/l10n/ru/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 09:02+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Модуль php-json необходим многим приложениÑм Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ñ… ÑвÑзей" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Модуль php-curl необходим Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° Ñтраницы при добавлении закладок" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Модуль php-gd необходим Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð½Ð¾Ð¹ копии Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¿Ñ€Ð¾Ñмотра ваших картинок." - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Модуль php-ldap необходим Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð²Ð°ÑˆÐ¸Ð¼ ldap Ñервером" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Модуль php-zip необходим Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ неÑкольких файлов за раз" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Модуль php-mb_multibyte необходим Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°Ð¼Ð¸." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Модуль php-ctype необходим Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ данных." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Модуль php-xml необходим Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² через webdav." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Директива allow_url_fopen в файле php.ini должна быть уÑтановлена в 1 Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ знаний Ñ Ñерверов OCS" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Модуль php-pdo необходим Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… ownСloud в базе данных." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð²Ð¸ÑимоÑтей" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "ИÑпользуетÑÑ:" diff --git a/l10n/ru/admin_migrate.po b/l10n/ru/admin_migrate.po deleted file mode 100644 index c022979b52a075c2e4e989a25212ffeda8fc86df..0000000000000000000000000000000000000000 --- a/l10n/ru/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 07:51+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "ЭкÑпортировать Ñтот ÑкземплÑÑ€ ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Будет Ñоздан Ñжатый файл, Ñодержащий данные Ñтого ÑкземплÑра owncloud.\n Выберите тип ÑкÑпорта:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "ЭкÑпорт" diff --git a/l10n/ru/bookmarks.po b/l10n/ru/bookmarks.po deleted file mode 100644 index 96ffd483f144c5fe5ccccfde86dbaaf4adff890f..0000000000000000000000000000000000000000 --- a/l10n/ru/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 13:15+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Закладки" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "без имени" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Прочитать позже" - -#: templates/list.php:13 -msgid "Address" -msgstr "ÐдреÑ" - -#: templates/list.php:14 -msgid "Title" -msgstr "Заголовок" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Метки" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Сохранить закладки" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ закладок" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Букмарклет
            " diff --git a/l10n/ru/calendar.po b/l10n/ru/calendar.po deleted file mode 100644 index 64d53960947cf8bb4d6a007c833bfeab44212b17..0000000000000000000000000000000000000000 --- a/l10n/ru/calendar.po +++ /dev/null @@ -1,819 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -# , 2011, 2012. -# Nick Remeslennikov , 2012. -# , 2012. -# , 2011. -# Victor Bravo <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 14:41+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Ðе вÑе календари полноÑтью кешированы" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Ð’Ñе, вроде бы, закешировано" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Календари не найдены." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð½Ðµ найдены." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Ðеверный календарь" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Файл либо не Ñобержит Ñобытий, либо вÑе ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ в календаре" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены в новый календарь" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Ошибка импорта" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены в вашем календаре" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ðовый чаÑовой поÑÑ:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ЧаÑовой поÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ðеверный запроÑ" - -#: appinfo/app.php:41 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Календарь" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ддд" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ддд Ðœ/д" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "дддд Ðœ/д" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "ММММ гггг" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "дддд, МММ д, гггг" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "День рождениÑ" - -#: lib/app.php:122 -msgid "Business" -msgstr "БизнеÑ" - -#: lib/app.php:123 -msgid "Call" -msgstr "Звонить" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Клиенты" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "ПоÑыльный" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Праздники" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Идеи" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Поездка" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Юбилей" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Ð’Ñтреча" - -#: lib/app.php:131 -msgid "Other" -msgstr "Другое" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Личное" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Проекты" - -#: lib/app.php:134 -msgid "Questions" -msgstr "ВопроÑÑ‹" - -#: lib/app.php:135 -msgid "Work" -msgstr "Работа" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "до ÑвиданиÑ" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "без имени" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ðовый Календарь" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ðе повторÑетÑÑ" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Ежедневно" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Еженедельно" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "По буднÑм" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Каждые две недели" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Каждый меÑÑц" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Каждый год" - -#: lib/object.php:388 -msgid "never" -msgstr "никогда" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "по чиÑлу повторений" - -#: lib/object.php:390 -msgid "by date" -msgstr "по дате" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "по дню меÑÑца" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "по дню недели" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Понедельник" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Вторник" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Среда" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Четверг" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "ПÑтница" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Суббота" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "ВоÑкреÑенье" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "Ð½ÐµÐ´ÐµÐ»Ñ Ð¼ÐµÑÑца" - -#: lib/object.php:428 -msgid "first" -msgstr "перваÑ" - -#: lib/object.php:429 -msgid "second" -msgstr "втораÑ" - -#: lib/object.php:430 -msgid "third" -msgstr "третьÑ" - -#: lib/object.php:431 -msgid "fourth" -msgstr "червётраÑ" - -#: lib/object.php:432 -msgid "fifth" -msgstr "пÑтаÑ" - -#: lib/object.php:433 -msgid "last" -msgstr "поÑледнÑÑ" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Январь" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Февраль" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Март" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Ðпрель" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Май" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Июнь" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Июль" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "ÐвгуÑÑ‚" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "СентÑбрь" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "ОктÑбрь" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "ÐоÑбрь" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Декабрь" - -#: lib/object.php:488 -msgid "by events date" -msgstr "по дате Ñобытий" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "по днÑм недели" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "по номерам недели" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "по дню и меÑÑцу" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Дата" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Кал." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Ð’Ñ." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Пн." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Ð’Ñ‚." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Ср." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Чт." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Пт." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Сб." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Янв." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Фев." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Мар." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Ðпр." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Май." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Июн." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Июл." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Ðвг." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Сен." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Окт." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "ÐоÑ." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Дек." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "ВеÑÑŒ день" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Ðезаполненные полÑ" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Ðазвание" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Дата начала" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Дата окончаниÑ" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Окончание ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñ€Ð°Ð½ÑŒÑˆÐµ, чем его начало" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Ошибка базы данных" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "ÐеделÑ" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "МеÑÑц" - -#: templates/calendar.php:41 -msgid "List" -msgstr "СпиÑок" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "СегоднÑ" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Параметры" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Ваши календари" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "СÑылка Ð´Ð»Ñ CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Опубликованные" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Ðет опубликованных календарей" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Опубликовать" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Скачать" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Редактировать" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Удалить" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "опубликовал Ð´Ð»Ñ Ð²Ð°Ñ" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ðовый календарь" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Редактировать календарь" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Отображаемое имÑ" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ðктивен" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Цвет календарÑ" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Сохранить" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Отправить" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Отмена" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Редактировать Ñобытие" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "ЭкÑпортировать" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Ñобытии" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Повторение" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Сигнал" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "УчаÑтники" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Опубликовать" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Ðазвание Ñобытие" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "КатегориÑ" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "РазделÑйте категории запÑтыми" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Редактировать категории" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Событие на веÑÑŒ день" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "От" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "До" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Дополнительные параметры" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "МеÑто" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "МеÑто ÑобытиÑ" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "ОпиÑание" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "ОпиÑание ÑобытиÑ" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Повтор" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Дополнительно" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Выбрать дни недели" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Выбрать дни" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "и день года ÑобытиÑ" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "и день меÑÑца ÑобытиÑ" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Выбрать меÑÑцы" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Выбрать недели" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "и номер недели ÑобытиÑ" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Интервал" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Окончание" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "повторений" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Создать новый календарь" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Импортировать календарь из файла" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "ПожалуйÑта, выберите календарь" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Ðазвание нового календарÑ" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Возьмите разрешенное имÑ!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Календарь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует. ЕÑли вы продолжите, одноименный календарь будет удален." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Импортировать" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Закрыть Сообщение" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Создать новое Ñобытие" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Показать Ñобытие" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Категории не выбраны" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "из" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "на" - -#: templates/settings.php:10 -msgid "General" -msgstr "ОÑновные" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ЧаÑовой поÑÑ" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "ÐвтоматичеÑкое обновление временной зоны" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Формат времени" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24ч" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12ч" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "Ðачало недели" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "КÑш" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "ОчиÑтить кÑш повторÑющихÑÑ Ñобытий" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URLs" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "ÐÐ´Ñ€ÐµÑ Ñинхронизации CalDAV" - -#: templates/settings.php:87 -msgid "more info" -msgstr "подробнее" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "ОÑновной Ð°Ð´Ñ€ÐµÑ (Контакта)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Читать только ÑÑылки iCalendar" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Пользователи" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "выбрать пользователей" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Редактируемо" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Группы" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "выбрать группы" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "Ñелать публичным" diff --git a/l10n/ru/contacts.po b/l10n/ru/contacts.po deleted file mode 100644 index 4476c9a4e11f4fe64ae224c840315f1f680a885d..0000000000000000000000000000000000000000 --- a/l10n/ru/contacts.po +++ /dev/null @@ -1,959 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -# , 2012. -# , 2012. -# , 2012. -# Nick Remeslennikov , 2012. -# , 2011. -# Victor Bravo <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 13:10+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Ошибка (де)активации адреÑной книги." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id не уÑтановлен." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ адреÑную книгу Ñ Ð¿ÑƒÑтым именем." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Ошибка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑной книги." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "ID не предоÑтавлен" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Ошибка уÑтановки контрольной Ñуммы." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Категории Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ уÑтановлены." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "ÐдреÑные книги не найдены." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Контакты не найдены." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Произошла ошибка при добавлении контакта." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "Ð¸Ð¼Ñ Ñлемента не уÑтановлено." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Ðевозможно раÑпознать контакт:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Ðевозможно добавить пуÑтой параметр." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Как минимум одно поле адреÑа должно быть заполнено." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "При попытке добавить дубликат:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "ОтÑутÑтвует параметр IM." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "ÐеизвеÑтный IM:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ vCard некорректна. ПожалуйÑта, обновите Ñтраницу." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ОтÑутÑтвует ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Ошибка обработки VCard Ð´Ð»Ñ ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма не уÑтановлена." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ vCard не корректна. Перезагрузите Ñтраницу: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Что-то пошло FUBAR." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Ðет контакта ID" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ð¸ контакта." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð³Ð¾ файла." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Ð—Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ð°Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ Ð¸Ñпорчена." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "ID контакта отÑутÑтвует." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Ðет фото по адреÑу." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Файл не ÑущеÑтвует:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Ошибка загрузки картинки." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Ошибка при получении контактов" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Ошибка при получении ФОТО." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Ошибка при Ñохранении контактов." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Ошибка Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° изображений" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Ошибка обрезки изображений" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… изображений" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Ошибка поиÑка изображений:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Ошибка загрузки контактов в хранилище." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Файл загружен уÑпешно." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Загружаемый файл первоÑходит значение переменной upload_max_filesize, уÑтановленно в php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Загружаемый файл превоÑходит значение переменной MAX_FILE_SIZE, указанной в форме HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Файл загружен чаÑтично" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Файл не был загружен" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "ОтÑутÑтвует Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Ðе удалоÑÑŒ Ñохранить временное изображение:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Ðе удалоÑÑŒ загрузить временное изображение:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Файл не был загружен. ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Контакты" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "К Ñожалению, Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ была реализована" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Ðе реализовано" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Ðе удалоÑÑŒ получить адреÑ." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Ошибка" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ разрешений добавлÑÑ‚ÑŒ контакты в" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Выберите одну из ваших ÑобÑтвенных адреÑных книг." - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Ошибка доÑтупа" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Это ÑвойÑтво должно быть не пуÑтым." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Ðе удалоÑÑŒ Ñериализовать Ñлементы." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' called without type argument. Please report at bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Изменить имÑ" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Ðет выбранных файлов Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Файл, который вы пытаетеÑÑŒ загрузить превышать макÑимальный размер загружаемых файлов на Ñтом Ñервере." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Ошибка загрузки Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Выберите тип" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Ðекоторые контакты помечены на удаление, но ещё не удалены. Подождите, пока они удалÑÑŽÑ‚ÑÑ." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Ð’Ñ‹ хотите Ñоединить Ñти адреÑные книги?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Результат:" - -#: js/loader.js:49 -msgid " imported, " -msgstr "импортировано, " - -#: js/loader.js:49 -msgid " failed." -msgstr "не удалоÑÑŒ." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Отображаемое Ð¸Ð¼Ñ Ð½Ðµ может быть пуÑтым." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð° не найдена:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Это не ваша адреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Контакт не найден." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Рабочий" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Домашний" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Другое" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Мобильный" - -#: lib/app.php:203 -msgid "Text" -msgstr "ТекÑÑ‚" - -#: lib/app.php:204 -msgid "Voice" -msgstr "ГолоÑ" - -#: lib/app.php:205 -msgid "Message" -msgstr "Сообщение" - -#: lib/app.php:206 -msgid "Fax" -msgstr "ФакÑ" - -#: lib/app.php:207 -msgid "Video" -msgstr "Видео" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Пейджер" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Интернет" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "День рождениÑ" - -#: lib/app.php:253 -msgid "Business" -msgstr "БизнеÑ" - -#: lib/app.php:254 -msgid "Call" -msgstr "Вызов" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Клиенты" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "ПоÑыльный" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Праздники" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Идеи" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Поездка" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Юбилей" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Ð’Ñтреча" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Личный" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Проекты" - -#: lib/app.php:265 -msgid "Questions" -msgstr "ВопроÑÑ‹" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "День Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Контакт" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ разрешений редактировать Ñтот контакт." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ разрешений удалÑÑ‚ÑŒ Ñтот контакт." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Добавить Контакт" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Импорт" - -#: templates/index.php:18 -msgid "Settings" -msgstr "ÐаÑтройки" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "ÐдреÑные книги" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Закрыть" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "ГорÑчие клавиши" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "ÐавигациÑ" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Следующий контакт в ÑпиÑке" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Предыдущий контакт в ÑпиÑке" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Развернуть/Ñвернуть текущую адреÑную книгу" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð°Ð´Ñ€ÐµÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð°Ð´Ñ€ÐµÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" - -#: templates/index.php:54 -msgid "Actions" -msgstr "ДейÑтвиÑ" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Обновить ÑпиÑок контактов" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Добавить новый контакт" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Добавить новую адреÑную книгу" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Удалить текущий контакт" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "ПеретÑните фотографии Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Удалить текущую фотографию" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Редактировать текущую фотографию" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Загрузить новую фотографию" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Выбрать фотографию из ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Формат Краткое имÑ, Полное имÑ" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Изменить детали имени" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "ОрганизациÑ" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Удалить" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "ПÑевдоним" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Введите пÑевдоним" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Веб-Ñайт" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Перейти на веб-Ñайт" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Группы" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Разделить группы запÑтыми" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Редактировать группы" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Предпочитаемый" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Укажите дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Укажите Ð°Ð´Ñ€ÐµÑ Ñлектронной почты" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "ÐапиÑать по адреÑу" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Удалить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "ВвеÑти номер телефона" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Удалить номер телефона" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Удалить IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Показать на карте" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "ВвеÑти детали адреÑа" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Добавьте заметки здеÑÑŒ." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Добавить поле" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Телефон" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Ящик Ñл. почты" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "БыÑтрые ÑообщениÑ" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "ÐдреÑ" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Заметка" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Скачать контакт" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Удалить контакт" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Временный образ был удален из кÑша." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Редактировать адреÑ" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Тип" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "ÐО" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Улица" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Улица и дом" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "РаÑширенный" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Ðомер квартиры и Ñ‚.д." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Город" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "ОблаÑÑ‚ÑŒ" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Ðапример, облаÑÑ‚ÑŒ или район" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Почтовый индекÑ" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Почтовый индекÑ" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Страна" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "ÐдреÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Уважительные префикÑÑ‹" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "МиÑÑ" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Г-жа" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Г-н" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "СÑÑ€" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Г-жа" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Доктор" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "ИмÑ" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Дополнительные имена (отчеÑтво)" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "ФамилиÑ" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Hon. suffixes" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "Уважительные ÑуффикÑÑ‹" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Загрузить файл контактов" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Выберите адреÑную книгу" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Ñоздать новую адреÑную книгу" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Ð˜Ð¼Ñ Ð½Ð¾Ð²Ð¾Ð¹ адреÑной книги" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Импорт контактов" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Ð’ адреÑной книге нет контактов." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Добавить контакт" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Выбрать адреÑную книгу" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Введите имÑ" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Ввдите опиÑание" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV Ñинхронизации адреÑов" - -#: templates/settings.php:3 -msgid "more info" -msgstr "Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Первичный Ð°Ð´Ñ€ÐµÑ (Kontact и др.)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Показать ÑÑылку CardDav" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Показать нередактируемую ÑÑылку VCF" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Опубликовать" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Скачать" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Редактировать" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "ÐÐ¾Ð²Ð°Ñ Ð°Ð´Ñ€ÐµÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð°" - -#: templates/settings.php:44 -msgid "Name" -msgstr "ИмÑ" - -#: templates/settings.php:45 -msgid "Description" -msgstr "ОпиÑание" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Сохранить" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Отменить" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Ещё..." diff --git a/l10n/ru/core.po b/l10n/ru/core.po index b76cabfb0f1c6114c32105cf3577b814e45e459b..50037067343887aa57f74f762834ca8eb08ff035 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/core.po @@ -5,6 +5,9 @@ # Translators: # Denis , 2012. # , 2011, 2012. +# , 2012. +# Mihail Vasiliev , 2012. +# , 2012. # , 2011. # Victor Bravo <>, 2012. # , 2012. @@ -12,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 12:18+0000\n" +"Last-Translator: Mihail Vasiliev \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,208 +25,241 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ уÑтановлено." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Тип категории не предоÑтавлен" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ðет категорий Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Эта ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ ÑƒÐ¶Ðµ ÑущеÑтвует: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Тип объекта не предоÑтавлен" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "ID %s не предоÑтавлен" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %s в избранное" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Ðет категорий Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из избранного" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "ÐаÑтройки" -#: js/js.js:645 -msgid "January" -msgstr "Январь" +#: js/js.js:704 +msgid "seconds ago" +msgstr "неÑколько Ñекунд назад" -#: js/js.js:645 -msgid "February" -msgstr "Февраль" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 минуту назад" -#: js/js.js:645 -msgid "March" -msgstr "Март" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} минут назад" -#: js/js.js:645 -msgid "April" -msgstr "Ðпрель" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´" -#: js/js.js:645 -msgid "May" -msgstr "Май" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} чаÑов назад" -#: js/js.js:645 -msgid "June" -msgstr "Июнь" +#: js/js.js:709 +msgid "today" +msgstr "ÑегоднÑ" -#: js/js.js:646 -msgid "July" -msgstr "Июль" +#: js/js.js:710 +msgid "yesterday" +msgstr "вчера" -#: js/js.js:646 -msgid "August" -msgstr "ÐвгуÑÑ‚" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} дней назад" -#: js/js.js:646 -msgid "September" -msgstr "СентÑбрь" +#: js/js.js:712 +msgid "last month" +msgstr "в прошлом меÑÑце" -#: js/js.js:646 -msgid "October" -msgstr "ОктÑбрь" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} меÑÑцев назад" -#: js/js.js:646 -msgid "November" -msgstr "ÐоÑбрь" +#: js/js.js:714 +msgid "months ago" +msgstr "неÑколько меÑÑцев назад" -#: js/js.js:646 -msgid "December" -msgstr "Декабрь" +#: js/js.js:715 +msgid "last year" +msgstr "в прошлом году" + +#: js/js.js:716 +msgid "years ago" +msgstr "неÑколько лет назад" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Выбрать" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Отмена" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ðет" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ок" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Ðет категорий Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Тип объекта не указан" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Ошибка" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ указано" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Ðеобходимый файл {file} не уÑтановлен!" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "Ошибка при открытии доÑтупа" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "Ошибка при закрытии доÑтупа" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" +msgstr "Ошибка при Ñмене разрешений" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "{owner} открыл доÑтуп Ð´Ð»Ñ Ð’Ð°Ñ Ð¸ группы {group} " -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "{owner} открыл доÑтуп Ð´Ð»Ñ Ð’Ð°Ñ" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "ПоделитьÑÑ Ñ" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "ПоделитьÑÑ Ñ ÑÑылкой" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Защитить паролем" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Пароль" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "УÑтановить Ñрок доÑтупа" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Дата окончаниÑ" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "ПоделитÑÑ Ñ‡ÐµÑ€ÐµÐ· Ñлектронную почту:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Ðи один человек не найден" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Общий доÑтуп не разрешен" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Общий доÑтуп к {item} Ñ {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Закрыть общий доÑтуп" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "может редактировать" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "контроль доÑтупа" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "Ñоздать" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "обновить" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "удалить" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "открыть доÑтуп" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" -msgstr "" +msgstr "Защищено паролем" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Ошибка при отмене Ñрока доÑтупа" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" -msgstr "" +msgstr "Ошибка при уÑтановке Ñрока доÑтупа" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ " @@ -236,19 +272,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Ðа ваш Ð°Ð´Ñ€ÐµÑ Email выÑлана ÑÑылка Ð´Ð»Ñ ÑброÑа паролÑ." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Запрошено" +msgid "Reset email send." +msgstr "Отправка пиÑьма Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹ Ð´Ð»Ñ ÑброÑа." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Ðе удалоÑÑŒ войти!" +msgid "Request failed!" +msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "ЗапроÑить ÑброÑ" @@ -300,72 +336,187 @@ msgstr "Облако не найдено" msgid "Edit categories" msgstr "Редактировать категории" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Добавить" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Предупреждение безопаÑноÑти" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Ðет доÑтупного защищенного генератора Ñлучайных чиÑел, пожалуйÑта, включите раÑширение PHP OpenSSL." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Без защищенного генератора Ñлучайных чиÑел злоумышленник может предугадать токены ÑброÑа Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸ завладеть Вашей учетной запиÑью." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Ваши каталоги данных и файлы, вероÑтно, доÑтупны из Интернета. Файл .htaccess, предоÑтавлÑемый ownCloud, не работает. Мы наÑтоÑтельно рекомендуем Вам наÑтроить вебÑервер таким образом, чтобы каталоги данных больше не были доÑтупны, или перемеÑтить их за пределы корневого каталога документов веб-Ñервера." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Создать учётную запиÑÑŒ админиÑтратора" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Дополнительно" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "ÐаÑтройка базы данных" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "будет иÑпользовано" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Пароль Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Ðазвание базы данных" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Табличое проÑтранÑтво базы данных" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "ХоÑÑ‚ базы данных" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Завершить уÑтановку" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "ВоÑкреÑенье" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Понедельник" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Вторник" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Среда" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Четверг" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "ПÑтница" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Суббота" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Январь" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Февраль" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Март" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Ðпрель" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Май" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Июнь" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Июль" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "СентÑбрь" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "ОктÑбрь" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "ÐоÑбрь" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Декабрь" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "Сетевые Ñлужбы под твоим контролем" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Выйти" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "ÐвтоматичеÑкий вход в ÑиÑтему отключен!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "ЕÑли Ð’Ñ‹ недавно не менÑли Ñвой пароль, то Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ может быть Ñкомпрометирована!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "ПожалуйÑта, Ñмените пароль, чтобы обезопаÑить Ñвою учетную запиÑÑŒ." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Забыли пароль?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "запомнить" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Войти" @@ -380,3 +531,17 @@ msgstr "пред" #: templates/part.pagenavi.php:20 msgid "next" msgstr "Ñлед" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Предупреждение безопаÑноÑти!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "ПожалуйÑта, проверьте Ñвой ​​пароль.
            По ÑоображениÑм безопаÑноÑти, Вам иногда придетÑÑ Ð²Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ñвой пароль Ñнова." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Подтвердить" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index e1aaa13211221dba3985c9f262101421eb76af6a..e15399b83d4087e37131a46be8be956f523a2121 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/files.po @@ -6,7 +6,9 @@ # Denis , 2012. # , 2012. # , 2012. +# , 2012. # Nick Remeslennikov , 2012. +# , 2012. # , 2011. # Victor Bravo <>, 2012. # , 2012. @@ -14,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,195 +31,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Файл уÑпешно загружен" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Файл превышает допуÑтимые размеры (опиÑаны как upload_max_filesize в php.ini)" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Файл превышает размер MAX_FILE_SIZE, указаный в HTML-форме" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Файл был загружен не полноÑтью" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Файл не был загружен" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Ðевозможно найти временную папку" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Ошибка запиÑи на диÑк" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Файлы" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Отменить публикацию" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Удалить" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Переименовать" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "уже ÑущеÑтвует" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} уже ÑущеÑтвует" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "заменить" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "предложить название" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "отмена" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "заменён" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "заменено {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "отмена" -#: js/filelist.js:241 -msgid "with" -msgstr "Ñ" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "заменено {new_name} на {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð°" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "не опубликованные {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "удален" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "удаленные {files}" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Ðеправильное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' недопуÑтимы." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Ñоздание ZIP-файла, Ñто может занÑÑ‚ÑŒ некоторое времÑ." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðе удаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ файл размером 0 байт в каталог" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Ошибка загрузки" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Закрыть" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Ожидание" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "загружаетÑÑ 1 файл" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} файлов загружаетÑÑ" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Загрузка отменена." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Файл в процеÑÑе загрузки. Покинув Ñтраницу вы прервёте загрузку." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ðеверное имÑ, '/' не допуÑкаетÑÑ." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Ðе правильное Ð¸Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸. Ð˜Ð¼Ñ \"Shared\" резервировано в Owncloud" -#: js/files.js:667 -msgid "files scanned" -msgstr "" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} файлов проÑканировано" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "ошибка во Ð²Ñ€ÐµÐ¼Ñ ÑанированиÑ" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Ðазвание" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Размер" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Изменён" -#: js/files.js:777 -msgid "folder" -msgstr "папка" - -#: js/files.js:779 -msgid "folders" -msgstr "папки" - -#: js/files.js:787 -msgid "file" -msgstr "файл" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 папка" -#: js/files.js:789 -msgid "files" -msgstr "файлы" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} папок" -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 файл" -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} файлов" #: templates/admin.php:5 msgid "File handling" @@ -227,27 +200,27 @@ msgstr "Управление файлами" msgid "Maximum upload size" msgstr "МакÑимальный размер загружаемого файла" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "макÑ. возможно: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "ТребуетÑÑ Ð´Ð»Ñ ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÑкольких файлов и папок" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Включить ZIP-Ñкачивание" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 - без ограничений" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "МакÑимальный иÑходный размер Ð´Ð»Ñ ZIP файлов" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Сохранить" @@ -255,52 +228,48 @@ msgstr "Сохранить" msgid "New" msgstr "Ðовый" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ТекÑтовый файл" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Папка" -#: templates/index.php:11 -msgid "From url" -msgstr "С url" +#: templates/index.php:14 +msgid "From link" +msgstr "Из ÑÑылки" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Загрузить" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Отмена загрузки" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "ЗдеÑÑŒ ничего нет. Загрузите что-нибудь!" -#: templates/index.php:50 -msgid "Share" -msgstr "Опубликовать" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Скачать" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Файл Ñлишком большой" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Файлы, которые Ð’Ñ‹ пытаетеÑÑŒ загрузить, превышают лимит Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² на Ñтом Ñервере." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Подождите, файлы ÑканируютÑÑ." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Текущее Ñканирование" diff --git a/l10n/ru/files_external.po b/l10n/ru/files_external.po index 44fcf5c24460fde3d32d1204e9ae0d5712d515f4..7b43af9a272c96185533d935b431e82c48ca5166 100644 --- a/l10n/ru/files_external.po +++ b/l10n/ru/files_external.po @@ -4,13 +4,14 @@ # # Translators: # Denis , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 10:18+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +21,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "ДоÑтуп предоÑтавлен" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Ошибка при наÑтройке хранилища Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "ПредоÑтавление доÑтупа" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Заполните вÑе обÑзательные полÑ" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "ПожалуйÑта, предоÑтавьте дейÑтвующий ключ Dropbox и пароль." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Ошибка при наÑтройке хранилища Google Drive" #: templates/settings.php:3 msgid "External Storage" diff --git a/l10n/ru/files_odfviewer.po b/l10n/ru/files_odfviewer.po deleted file mode 100644 index 566e2951123e59311c0bf1725a16be7a603418e3..0000000000000000000000000000000000000000 --- a/l10n/ru/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/ru/files_pdfviewer.po b/l10n/ru/files_pdfviewer.po deleted file mode 100644 index 48f6bdb06a6025df5f998ffe03531fc913958b1b..0000000000000000000000000000000000000000 --- a/l10n/ru/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/ru/files_sharing.po b/l10n/ru/files_sharing.po index 803a4863c4c1696252fa4ec47418407b23e79278..425b0ed259102204fd6dfc30fce3d633de62c059 100644 --- a/l10n/ru/files_sharing.po +++ b/l10n/ru/files_sharing.po @@ -5,14 +5,15 @@ # Translators: # Denis , 2012. # , 2012. +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 13:24+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,12 +32,12 @@ msgstr "Отправить" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s открыл доÑтуп к папке %s Ð´Ð»Ñ Ð’Ð°Ñ" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s открыл доÑтуп к файлу %s Ð´Ð»Ñ Ð’Ð°Ñ" #: templates/public.php:14 templates/public.php:30 msgid "Download" @@ -46,6 +47,6 @@ msgstr "Скачать" msgid "No preview available for" msgstr "ПредпроÑмотр недоÑтупен длÑ" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" msgstr "веб-ÑервиÑÑ‹ под вашим управлением" diff --git a/l10n/ru/files_texteditor.po b/l10n/ru/files_texteditor.po deleted file mode 100644 index 46b235b4699a3a098d0e93f4400eb0481d5cede4..0000000000000000000000000000000000000000 --- a/l10n/ru/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/ru/files_versions.po b/l10n/ru/files_versions.po index 4ea65271fb3ad7bab24aefe0e20fa491b68f013c..bb622c0e095fa318dd7696201b9d108886332235 100644 --- a/l10n/ru/files_versions.po +++ b/l10n/ru/files_versions.po @@ -4,14 +4,15 @@ # # Translators: # Denis , 2012. +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 13:09+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,7 +26,7 @@ msgstr "ПроÑрочить вÑе верÑии" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "ИÑториÑ" #: templates/settings-personal.php:4 msgid "Versions" @@ -37,8 +38,8 @@ msgstr "ОчиÑтить ÑпиÑок верÑий ваших файлов" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "ВерÑии файлов" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Включить" diff --git a/l10n/ru/gallery.po b/l10n/ru/gallery.po deleted file mode 100644 index c80be67674ff0f331720ee1a98e930dbe7194596..0000000000000000000000000000000000000000 --- a/l10n/ru/gallery.po +++ /dev/null @@ -1,43 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -# , 2012. -# , 2012. -# Soul Kim , 2012. -# Victor Bravo <>, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-23 17:08+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:42 -msgid "Pictures" -msgstr "РиÑунки" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Опубликовать" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Ошибка" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Слайдшоу" diff --git a/l10n/ru/lib.po b/l10n/ru/lib.po index da6e47850058db51316f9b8f78fb367e2cbe886d..a031a62f802e0bd7e30085ed60b927cb71a1cfb5 100644 --- a/l10n/ru/lib.po +++ b/l10n/ru/lib.po @@ -4,15 +4,17 @@ # # Translators: # Denis , 2012. +# , 2012. +# Mihail Vasiliev , 2012. # , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-08 02:02+0200\n" -"PO-Revision-Date: 2012-09-07 11:22+0000\n" -"Last-Translator: VicDeo \n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 12:19+0000\n" +"Last-Translator: Mihail Vasiliev \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -44,19 +46,19 @@ msgstr "ПриложениÑ" msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "ZIP-Ñкачивание отключено." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Файлы должны быть загружены по одному." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Ðазад к файлам" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Выбранные файлы Ñлишком велики, чтобы Ñоздать zip файл." @@ -64,7 +66,7 @@ msgstr "Выбранные файлы Ñлишком велики, чтобы Ñ msgid "Application is not enabled" msgstr "Приложение не разрешено" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Ошибка аутентификации" @@ -72,57 +74,84 @@ msgstr "Ошибка аутентификации" msgid "Token expired. Please reload page." msgstr "Токен проÑрочен. Перезагрузите Ñтраницу." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Файлы" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "ИзображениÑ" + +#: template.php:103 msgid "seconds ago" msgstr "менее минуты" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 минуту назад" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d минут назад" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d чаÑов назад" + +#: template.php:108 msgid "today" msgstr "ÑегоднÑ" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "вчера" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d дней назад" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "в прошлом меÑÑце" -#: template.php:96 -msgid "months ago" -msgstr "меÑÑцы назад" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d меÑÑцев назад" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "в прошлом году" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "годы назад" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "Возможно обновление до %s. Подробнее" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "проверка обновлений отключена" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ \"%s\" не найдена" diff --git a/l10n/ru/media.po b/l10n/ru/media.po deleted file mode 100644 index ed564055236228f3f75b02f759ddd161b1bd4097..0000000000000000000000000000000000000000 --- a/l10n/ru/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Russian (http://www.transifex.net/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Музыка" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Проиграть" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Пауза" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Предыдущий" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Следующий" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Отключить звук" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Включить звук" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "ПереÑканировать коллекцию" - -#: templates/music.php:37 -msgid "Artist" -msgstr "ИÑполнитель" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ðльбом" - -#: templates/music.php:39 -msgid "Title" -msgstr "Ðазвание" diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index 1d8dd64bb6ad9bc61483c93e5949912a1b0833e2..8c3270fb08773913af7be54eaf34702c8e837ea1 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/settings.po @@ -9,6 +9,7 @@ # , 2012. # Nick Remeslennikov , 2012. # , 2012. +# , 2012. # , 2011. # Victor Bravo <>, 2012. # , 2012. @@ -16,9 +17,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,70 +27,73 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Загрузка из App Store запрещена" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Ошибка авторизации" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Группа уже ÑущеÑтвует" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Ðевозможно добавить группу" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Ðе удалоÑÑŒ включить приложение." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email Ñохранен" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ðеправильный Email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID изменён" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ðеверный запроÑ" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Ðевозможно удалить группу" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Ошибка авторизации" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Ðевозможно удалить пользователÑ" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Язык изменён" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Ðевозможно добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Ðевозможно удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· группы %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Выключить" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Включить" @@ -97,104 +101,17 @@ msgstr "Включить" msgid "Saving..." msgstr "Сохранение..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "РуÑÑкий " -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Предупреждение безопаÑноÑти" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Похоже, что каталог data и ваши файлы в нем доÑтупны из интернета. ПредоÑтавлÑемый ownCloud файл htaccess не работает. ÐаÑтоÑтельно рекомендуем наÑтроить Ñервер таким образом, чтобы закрыть доÑтуп к каталогу data или вынеÑти каталог data за пределы корневого каталога веб-Ñервера." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Задание" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Включить API публикации" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Разрешить API публикации Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Разрешить ÑÑылки" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Разрешить пользователÑм публикацию при помощи ÑÑылок" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Включить повторную публикацию" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Разрешить пользователÑм публиковать доÑтупные им Ñлементы других пользователей" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Разрешить публиковать Ð´Ð»Ñ Ð»ÑŽÐ±Ñ‹Ñ… пользователей" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Ограничить публикацию группами пользователÑ" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Журнал" - -#: templates/admin.php:116 -msgid "More" -msgstr "Ещё" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "РазрабатываетÑÑ ÑообщеÑтвом ownCloud, иÑходный код доÑтупен под лицензией AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Добавить приложение" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Больше приложений" #: templates/apps.php:27 msgid "Select an App" @@ -220,22 +137,22 @@ msgstr "Управление большими файлами" msgid "Ask a question" msgstr "Задать вопроÑ" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Проблема ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð±Ð°Ð·Ð¾Ð¹ данных помощи." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Войти ÑамоÑтоÑтельно." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Ответ" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "Ð’Ñ‹ иÑпользовали %s из доÑтупных %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -247,7 +164,7 @@ msgstr "Загрузка" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Ваш пароль изменён" #: templates/personal.php:20 msgid "Unable to change your password" @@ -293,6 +210,16 @@ msgstr "Помочь Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð¼" msgid "use this address to connect to your ownCloud in your file manager" msgstr "иÑпользуйте данный Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº ownCloud в вашем файловом менеджере" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "РазрабатываетÑÑ ÑообщеÑтвом ownCloud, иÑходный код доÑтупен под лицензией AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "ИмÑ" diff --git a/l10n/ru/tasks.po b/l10n/ru/tasks.po deleted file mode 100644 index d7a46fb6a81c1c80c285604b992401aed51d12ee..0000000000000000000000000000000000000000 --- a/l10n/ru/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 07:18+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Ðеверные дата/времÑ" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Задачи" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Ðет категории" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Ðе указан" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=наибольший" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=Ñредний" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=наименьший" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "ПуÑÑ‚Ð°Ñ Ñводка" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Ðеверный процент завершениÑ" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Ðеверный приоритет" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Добавить задачу" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Срок заказа" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Order List" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Заказ выполнен" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "МеÑтонахождение заказа" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Приоритет заказа" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Метка заказа" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Загрузка задач..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Важный" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Больше" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Меньше" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Удалить" diff --git a/l10n/ru/user_migrate.po b/l10n/ru/user_migrate.po deleted file mode 100644 index 79fd4f0cfa1539ed4fb51e8c3a5b73f2628f5260..0000000000000000000000000000000000000000 --- a/l10n/ru/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 07:55+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "ЭкÑпорт" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Ð’ процеÑÑе ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° ÑкÑпорта что-то пошло не так" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Произошла ошибка" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "ЭкÑпортировать ваш аккаунт пользователÑ" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Будет Ñоздан Ñжатый файл, Ñодержащий ваш аккаунт ownCloud" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Импортировать аккаунт пользователÑ" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "Ðрхив Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ownCloud" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Импорт" diff --git a/l10n/ru/user_openid.po b/l10n/ru/user_openid.po deleted file mode 100644 index 22feb4f2913146f58e4d2ef5581b46a36bdb84d1..0000000000000000000000000000000000000000 --- a/l10n/ru/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Denis , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 07:00+0000\n" -"Last-Translator: Denis \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Это точка Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñервера OpenID. Ð”Ð»Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ñмотрите" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "ЛичноÑÑ‚ÑŒ: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Realm: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Пользователь: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Логин" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Ошибка: Пользователь не выбран" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "вы можете аутентифицироватьÑÑ Ð½Ð° других Ñайтах Ñ Ñтим адреÑом" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Ðвторизованный провайдер OpenID" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Ваш Ð°Ð´Ñ€ÐµÑ Ð² Wordpress, Identi.ca, …" diff --git a/l10n/ru/impress.po b/l10n/ru/user_webdavauth.po similarity index 63% rename from l10n/ru/impress.po rename to l10n/ru/user_webdavauth.po index 4154c7b9485e943657c2c7387c90cf3a3daa05c6..19babe4e2ba2276f7335c4ef3dd63bdf35367836 100644 --- a/l10n/ru/impress.po +++ b/l10n/ru/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 12:27+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index 32fa4465b3a0c9150824ba6751df89b3204c6514..329ea8e6df9bc1325df6b3f037232477f03c3828 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:04+0200\n" -"PO-Revision-Date: 2012-10-11 08:47+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 11:29+0000\n" "Last-Translator: AnnaSch \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -18,208 +18,241 @@ msgstr "" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ предоÑтавлено." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Тип категории не предоÑтавлен." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ðет категории Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Эта ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ ÑƒÐ¶Ðµ ÑущеÑтвует:" -#: js/js.js:229 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Тип объекта не предоÑтавлен." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID не предоÑтавлен." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %s в избранное." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Ðет категорий, выбранных Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из избранного." + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "ÐаÑтройки" -#: js/js.js:661 -msgid "January" -msgstr "Январь" +#: js/js.js:688 +msgid "seconds ago" +msgstr "Ñекунд назад" -#: js/js.js:661 -msgid "February" -msgstr "Февраль" +#: js/js.js:689 +msgid "1 minute ago" +msgstr " 1 минуту назад" -#: js/js.js:661 -msgid "March" -msgstr "Март" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{минуты} минут назад" -#: js/js.js:661 -msgid "April" -msgstr "Ðпрель" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "1 Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´" -#: js/js.js:661 -msgid "May" -msgstr "Май" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "{чаÑÑ‹} чаÑов назад" -#: js/js.js:661 -msgid "June" -msgstr "Июнь" +#: js/js.js:693 +msgid "today" +msgstr "ÑегоднÑ" -#: js/js.js:662 -msgid "July" -msgstr "Июль" +#: js/js.js:694 +msgid "yesterday" +msgstr "вчера" -#: js/js.js:662 -msgid "August" -msgstr "ÐвгуÑÑ‚" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{дни} дней назад" -#: js/js.js:662 -msgid "September" -msgstr "СентÑбрь" +#: js/js.js:696 +msgid "last month" +msgstr "в прошлом меÑÑце" -#: js/js.js:662 -msgid "October" -msgstr "ОктÑбрь" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "{меÑÑцы} меÑÑцев назад" -#: js/js.js:662 -msgid "November" -msgstr "ÐоÑбрь" +#: js/js.js:698 +msgid "months ago" +msgstr "меÑÑц назад" -#: js/js.js:662 -msgid "December" -msgstr "Декабрь" +#: js/js.js:699 +msgid "last year" +msgstr "в прошлом году" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "лет назад" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Выбрать" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Отмена" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ðет" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Да" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Ðет категорий, выбранных Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Тип объекта не указан." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Ошибка" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ указано." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Требуемый файл {файл} не уÑтановлен!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ доÑтупа" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Ошибка Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ доÑтупа" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Ошибка при изменении прав доÑтупа" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Опубликовано Ð´Ð»Ñ Ð’Ð°Ñ Ð¸ группы {группа} {ÑобÑтвенник}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Опубликовано Ð´Ð»Ñ Ð’Ð°Ñ {ÑобÑтвенник}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Сделать общим Ñ" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Опубликовать Ñ ÑÑылкой" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Защитить паролем" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Пароль" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "УÑтановить Ñрок дейÑтвиÑ" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Дата иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Сделать общедоÑтупным поÑредÑтвом email:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Ðе найдено людей" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "РекурÑивный общий доÑтуп не разрешен" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "Ñ" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "СовмеÑтное иÑпользование в {объект} Ñ {пользователь}" + +#: js/share.js:292 msgid "Unshare" msgstr "Отключить общий доÑтуп" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "возможно редактирование" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "контроль доÑтупа" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "Ñоздать" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "обновить" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "удалить" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "Ñделать общим" -#: js/share.js:322 js/share.js:484 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Пароль защищен" -#: js/share.js:497 +#: js/share.js:525 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Ошибка при отключении даты иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ" -#: js/share.js:509 +#: js/share.js:537 msgid "Error setting expiration date" -msgstr "" +msgstr "Ошибка при уÑтановке даты иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Переназначение паролÑ" @@ -232,15 +265,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Ð’Ñ‹ получите ÑÑылку Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿Ð¾ Ñлектронной почте." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Запрашиваемое" +msgid "Reset email send." +msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ email." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Войти не удалоÑÑŒ!" +msgid "Request failed!" +msgstr "Ðе удалоÑÑŒ выполнить запроÑ!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" @@ -296,72 +329,187 @@ msgstr "Облако не найдено" msgid "Edit categories" msgstr "Редактирование категорий" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Добавить" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Предупреждение ÑиÑтемы безопаÑноÑти" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Ðет доÑтупного защищенного генератора Ñлучайных чиÑел, пожалуйÑта, включите раÑширение PHP OpenSSL." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Без защищенного генератора Ñлучайных чиÑел злоумышленник может Ñпрогнозировать пароль, ÑброÑить учетные данные и завладеть Вашим аккаунтом." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Ваши каталоги данных и файлы, вероÑтно, доÑтупны из Интернета. Файл .htaccess, предоÑтавлÑемый ownCloud, не работает. Мы наÑтоÑтельно рекомендуем Вам наÑтроить вебÑервер таким образом, чтобы каталоги данных больше не были доÑтупны, или перемеÑтить их за пределы корневого каталога документов веб-Ñервера." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Создать admin account" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "РаÑширенный" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Папка данных" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "ÐаÑтроить базу данных" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "будет иÑпользоватьÑÑ" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Пользователь базы данных" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Пароль базы данных" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Ð˜Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑ‚ÑŒ базы данных" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Сервер базы данных" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Завершение наÑтройки" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "ВоÑкреÑенье" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Понедельник" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Вторник" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Среда" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Четверг" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "ПÑтница" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Суббота" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Январь" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Февраль" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Март" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "Ðпрель" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Май" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Июнь" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Июль" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "СентÑбрь" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "ОктÑбрь" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "ÐоÑбрь" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Декабрь" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "веб-ÑервиÑÑ‹ под Вашим контролем" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Выйти" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "ÐвтоматичеÑкий вход в ÑиÑтему отклонен!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "ЕÑли Ð’Ñ‹ недавно не менÑли пароль, Ваш аккаунт может быть подвергнут опаÑноÑти!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "ПожалуйÑта, измените пароль, чтобы защитить ваш аккаунт еще раз." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Забыли пароль?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "запомнить" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Войти" @@ -376,3 +524,17 @@ msgstr "предыдущий" #: templates/part.pagenavi.php:20 msgid "next" msgstr "Ñледующий" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Предупреждение ÑиÑтемы безопаÑноÑти!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "ПожалуйÑта, проверьте Ñвой ​​пароль.
            По ÑоображениÑм безопаÑноÑти Вам может быть иногда предложено ввеÑти пароль еще раз." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Проверить" diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index 4951fe271a7eb431a1ec9cbb9a04a918c31b001f..b330223c8c28aa8cc1b5f61505965eebbb140bda 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -4,13 +4,14 @@ # # Translators: # , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-11 02:04+0200\n" -"PO-Revision-Date: 2012-10-10 13:26+0000\n" -"Last-Translator: AnnaSch \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,195 +24,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Ошибка отÑутÑтвует, файл загружен уÑпешно." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Размер загруженного файла превышает заданный в директиве upload_max_filesize в php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Размер загруженного" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Загружаемый файл был загружен чаÑтично" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Файл не был загружен" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "ОтÑутÑтвует Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Ðе удалоÑÑŒ запиÑать на диÑк" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Файлы" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Скрыть" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Удалить" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Переименовать" -#: js/filelist.js:192 js/filelist.js:194 -msgid "already exists" -msgstr "уже ÑущеÑтвует" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{новое_имÑ} уже ÑущеÑтвует" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "отмена" -#: js/filelist.js:192 +#: js/filelist.js:201 msgid "suggest name" msgstr "подобрать название" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "отменить" -#: js/filelist.js:241 js/filelist.js:243 -msgid "replaced" -msgstr "заменено" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "заменено {новое_имÑ}" -#: js/filelist.js:241 js/filelist.js:243 js/filelist.js:275 js/filelist.js:277 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "отменить дейÑтвие" -#: js/filelist.js:243 -msgid "with" -msgstr "Ñ" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "заменено {новое_имÑ} Ñ {Ñтарое_имÑ}" -#: js/filelist.js:275 -msgid "unshared" -msgstr "Ñкрытый" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "CовмеÑтное иÑпользование прекращено {файлы}" -#: js/filelist.js:277 -msgid "deleted" -msgstr "удалено" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "удалено {файлы}" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Ðекорректное имÑ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допуÑтимы." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Создание ZIP-файла, Ñто может занÑÑ‚ÑŒ некоторое времÑ." -#: js/files.js:214 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðевозможно загрузить файл,\n так как он имеет нулевой размер или ÑвлÑетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÐ¹" -#: js/files.js:214 +#: js/files.js:218 msgid "Upload Error" msgstr "Ошибка загрузки" -#: js/files.js:242 js/files.js:347 js/files.js:377 +#: js/files.js:235 +msgid "Close" +msgstr "Закрыть" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Ожидающий решениÑ" -#: js/files.js:262 +#: js/files.js:274 msgid "1 file uploading" msgstr "загрузка 1 файла" -#: js/files.js:265 js/files.js:310 js/files.js:325 -msgid "files uploading" -msgstr "загрузка файлов" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{количеÑтво} загружено файлов" -#: js/files.js:328 js/files.js:361 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Загрузка отменена" -#: js/files.js:430 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ПроцеÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файла. ЕÑли покинуть Ñтраницу ÑейчаÑ, загрузка будет отменена." -#: js/files.js:500 -msgid "Invalid name, '/' is not allowed." -msgstr "Ðеправильное имÑ, '/' не допуÑкаетÑÑ." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Ðекорректное Ð¸Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸. Ðименование \"Опубликовано\" зарезервировано ownCloud" -#: js/files.js:681 -msgid "files scanned" -msgstr "файлы отÑканированы" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{количеÑтво} файлов отÑканировано" -#: js/files.js:689 +#: js/files.js:712 msgid "error while scanning" msgstr "ошибка при Ñканировании" -#: js/files.js:762 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "ИмÑ" -#: js/files.js:763 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Размер" -#: js/files.js:764 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Изменен" -#: js/files.js:791 -msgid "folder" -msgstr "папка" - -#: js/files.js:793 -msgid "folders" -msgstr "папки" - -#: js/files.js:801 -msgid "file" -msgstr "файл" - -#: js/files.js:803 -msgid "files" -msgstr "файлы" - -#: js/files.js:847 -msgid "seconds ago" -msgstr "Ñекунд назад" - -#: js/files.js:848 -msgid "minute ago" -msgstr "минуту назад" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 папка" -#: js/files.js:849 -msgid "minutes ago" -msgstr "минут назад" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{количеÑтво} папок" -#: js/files.js:852 -msgid "today" -msgstr "ÑегоднÑ" +#: js/files.js:824 +msgid "1 file" +msgstr "1 файл" -#: js/files.js:853 -msgid "yesterday" -msgstr "вчера" - -#: js/files.js:854 -msgid "days ago" -msgstr "дней назад" - -#: js/files.js:855 -msgid "last month" -msgstr "в прошлом меÑÑце" - -#: js/files.js:857 -msgid "months ago" -msgstr "меÑÑцев назад" - -#: js/files.js:858 -msgid "last year" -msgstr "в прошлом году" - -#: js/files.js:859 -msgid "years ago" -msgstr "лет назад" +#: js/files.js:826 +msgid "{count} files" +msgstr "{количеÑтво} файлов" #: templates/admin.php:5 msgid "File handling" @@ -221,27 +193,27 @@ msgstr "Работа Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸" msgid "Maximum upload size" msgstr "МакÑимальный размер загружаемого файла" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "МакÑимально возможный" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Ðеобходимо Ð´Ð»Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтвенной загрузки." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Включение ZIP-загрузки" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 без ограничений" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "МакÑимальный размер входÑщих ZIP-файлов " -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Сохранить" @@ -249,52 +221,48 @@ msgstr "Сохранить" msgid "New" msgstr "Ðовый" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ТекÑтовый файл" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Папка" -#: templates/index.php:11 -msgid "From url" -msgstr "Из url" +#: templates/index.php:14 +msgid "From link" +msgstr "По ÑÑылке" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Загрузить " -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Отмена загрузки" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "ЗдеÑÑŒ ничего нет. Загрузите что-нибудь!" -#: templates/index.php:50 -msgid "Share" -msgstr "Сделать общим" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Загрузить" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Загрузка Ñлишком велика" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Размер файлов, которые Ð’Ñ‹ пытаетеÑÑŒ загрузить, превышает макÑимально допуÑтимый размер Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ на данный Ñервер." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Файлы ÑканируютÑÑ, пожалуйÑта, подождите." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Текущее Ñканирование" diff --git a/l10n/ru_RU/files_versions.po b/l10n/ru_RU/files_versions.po index cb0853d718cd2f68b720c25c9496653d0862567b..241dfcc0e912ce1a744c3c93879ec050a18f74e7 100644 --- a/l10n/ru_RU/files_versions.po +++ b/l10n/ru_RU/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-11 02:04+0200\n" -"PO-Revision-Date: 2012-10-10 13:22+0000\n" +"POT-Creation-Date: 2012-11-17 00:01+0100\n" +"PO-Revision-Date: 2012-11-16 07:25+0000\n" "Last-Translator: AnnaSch \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -32,7 +32,7 @@ msgstr "ВерÑии" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "Это приведет к удалению вÑех ÑущеÑтвующих верÑий резервной копии ваших файлов" +msgstr "Это приведет к удалению вÑех ÑущеÑтвующих верÑий резервной копии Ваших файлов" #: templates/settings.php:3 msgid "Files Versioning" diff --git a/l10n/ru_RU/lib.po b/l10n/ru_RU/lib.po index 50b1f6524e2be1af3872d865d15f4e94ff3a677e..5ca45d27ad239861ca080a5218bcd773c2fa13b7 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:04+0200\n" -"PO-Revision-Date: 2012-10-11 08:16+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 09:27+0000\n" "Last-Translator: AnnaSch \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -42,19 +42,19 @@ msgstr "ПриложениÑ" msgid "Admin" msgstr "Ðдмин" -#: files.php:328 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Загрузка ZIP выключена." -#: files.php:329 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Файлы должны быть загружены один за другим." -#: files.php:329 files.php:354 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Обратно к файлам" -#: files.php:353 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Выбранные файлы Ñлишком велики Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ zip-архива." @@ -62,7 +62,7 @@ msgstr "Выбранные файлы Ñлишком велики Ð´Ð»Ñ Ð³ÐµÐ½ msgid "Application is not enabled" msgstr "Приложение не запущено" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Ошибка аутентификации" @@ -70,45 +70,67 @@ msgstr "Ошибка аутентификации" msgid "Token expired. Please reload page." msgstr "Маркер иÑтек. ПожалуйÑта, перезагрузите Ñтраницу." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Файлы" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "ИзображениÑ" + +#: template.php:103 msgid "seconds ago" msgstr "Ñекунд назад" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 минуту назад" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d минут назад" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d чаÑов назад" + +#: template.php:108 msgid "today" msgstr "ÑегоднÑ" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "вчера" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d дней назад" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "в прошлом меÑÑце" -#: template.php:96 -msgid "months ago" -msgstr "меÑÑц назад" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d меÑÑцев назад" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "в прошлом году" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "год назад" @@ -124,3 +146,8 @@ msgstr "до наÑтоÑщего времени" #: updater.php:80 msgid "updates check is disabled" msgstr "Проверка обновлений отключена" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Ðе удалоÑÑŒ найти категорию \"%s\"" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index 8da29bcbfeff0b266c5311268f1b827c395cd2fb..fabcb827160f0c76b67ba7e8f4dde61cdde97989 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:04+0200\n" -"PO-Revision-Date: 2012-10-11 08:13+0000\n" -"Last-Translator: AnnaSch \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,70 +18,73 @@ msgstr "" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Ðевозможно загрузить ÑпиÑок из App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Ошибка авторизации" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Группа уже ÑущеÑтвует" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Ðевозможно добавить группу" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Ðе удалоÑÑŒ запуÑтить приложение" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email Ñохранен" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ðеверный email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID изменен" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ðеверный запроÑ" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Ðевозможно удалить группу" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Ошибка авторизации" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Ðевозможно удалить пользователÑ" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Язык изменен" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Ðевозможно добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Ðевозможно удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· группы %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Отключить" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Включить" @@ -89,97 +92,10 @@ msgstr "Включить" msgid "Saving..." msgstr "Сохранение" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__Ñзык_имÑ__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Предупреждение ÑиÑтемы безопаÑноÑти" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ваш каталог данных и файлы возможно доÑтупны из Интернета. Файл .htaccess, предоÑтавлÑемый ownCloud, не работает. Мы наÑтоÑтельно рекомендуем Вам наÑтроить Ñервер таким образом, чтобы каталог данных был бы больше не доÑтупен, или перемеÑтить каталог данных за пределы корневой папки веб-Ñервера." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "ВыполнÑйте одну задачу на каждой загружаемой Ñтранице" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php зарегиÑтрирован в Ñлужбе webcron. ОбращайтеÑÑŒ к Ñтранице cron.php в корне owncloud раз в минуту по http." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "ИÑпользуйте ÑиÑтемный ÑÐµÑ€Ð²Ð¸Ñ cron. ИÑполнÑйте файл cron.php в папке owncloud Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑиÑтемы cronjob раз в минуту." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "СовмеÑтное иÑпользование" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Включить разделÑемые API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Разрешить приложениÑм иÑпользовать Share API" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "ПредоÑтавить ÑÑылки" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "ПозволÑет пользователÑм добавлÑÑ‚ÑŒ объекты в общий доÑтуп по ÑÑылке" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Разрешить повторное ÑовмеÑтное иÑпользование" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Разрешить пользователÑм разделение Ñ ÐºÐµÐ¼-либо" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Разрешить пользователÑм разделение только Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми в их группах" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Вход" - -#: templates/admin.php:116 -msgid "More" -msgstr "Подробнее" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Разработанный ownCloud community, the source code is licensed under the AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Добавить Ваше приложение" @@ -212,22 +128,22 @@ msgstr "Управление большими файлами" msgid "Ask a question" msgstr "Задать вопроÑ" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Проблемы, ÑвÑзанные Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ Помощь базы данных" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Сделать вручную." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Ответ" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Ð’Ñ‹ иÑпользовали %s из доÑтупных%s" +msgid "You have used %s of the available %s" +msgstr "Ð’Ñ‹ иÑпользовали %s из возможных %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -285,6 +201,16 @@ msgstr "Помогите перевеÑти" msgid "use this address to connect to your ownCloud in your file manager" msgstr "ИÑпользуйте Ñтот Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð’Ð°ÑˆÐ¸Ð¼ ownCloud в файловом менеджере" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Разработанный ownCloud community, the source code is licensed under the AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "ИмÑ" diff --git a/l10n/ru_RU/user_ldap.po b/l10n/ru_RU/user_ldap.po index 72709623ecec6de4434f4380fb992ede05b5592b..a66fb2f7962dc058d664e5afd102a0e6d996fd6f 100644 --- a/l10n/ru_RU/user_ldap.po +++ b/l10n/ru_RU/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:03+0200\n" -"PO-Revision-Date: 2012-10-11 08:03+0000\n" +"POT-Creation-Date: 2012-10-16 02:03+0200\n" +"PO-Revision-Date: 2012-10-15 13:57+0000\n" "Last-Translator: AnnaSch \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -44,7 +44,7 @@ msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "DN клиентÑкого пользователÑ, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ должна оÑущеÑтвлÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸Ð²Ñзка, например, uid=agent,dc=example,dc=com. Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ доÑтупа оÑтавьте Ð¿Ð¾Ð»Ñ DN и Пароль пуÑтыми." #: templates/settings.php:11 msgid "Password" @@ -63,7 +63,7 @@ msgstr "Фильтр имен пользователей" msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "Задает фильтр, применÑемый при загрузке пользователÑ. %%uid заменÑет Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¸ входе." #: templates/settings.php:12 #, php-format @@ -72,11 +72,11 @@ msgstr "иÑпользуйте %%uid заполнитель, например, \ #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "Фильтр ÑпиÑка пользователей" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "Задает фильтр, применÑемый при получении пользователей." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." @@ -88,7 +88,7 @@ msgstr "Групповой фильтр" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "Задает фильтр, применÑемый при получении групп." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." @@ -104,7 +104,7 @@ msgstr "Базовое дерево пользователей" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "Базовое дерево групп" #: templates/settings.php:20 msgid "Group-Member association" @@ -130,7 +130,7 @@ msgstr "Выключить проверку Ñертификата SSL." msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "ЕÑли Ñоединение работает только Ñ Ñтой опцией, импортируйте SSL-Ñертификат LDAP Ñервера в ваш ownCloud Ñервер." #: templates/settings.php:23 msgid "Not recommended, use for testing only." @@ -146,7 +146,7 @@ msgstr "Ðтрибут LDAP, иÑпользуемый Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "Поле, отображаемое как Ð¸Ð¼Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." diff --git a/l10n/lt_LT/impress.po b/l10n/ru_RU/user_webdavauth.po similarity index 50% rename from l10n/lt_LT/impress.po rename to l10n/ru_RU/user_webdavauth.po index 8aaf1712b0d92ab8dc26b7016eef52fc784d4e60..9a511532b8e93234f625e3c486a98db854b4cfa4 100644 --- a/l10n/lt_LT/impress.po +++ b/l10n/ru_RU/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 12:40+0000\n" +"Last-Translator: skoptev \n" +"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Language: ru_RU\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po new file mode 100644 index 0000000000000000000000000000000000000000..d6d9ac72efbb0a851fde2bda91d3e2a96d586b1c --- /dev/null +++ b/l10n/si_LK/core.po @@ -0,0 +1,542 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +# Chamara Disanayake , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:37 +msgid "This category already exists: " +msgstr "" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "මක෠දà·à¶¸à·“ම සඳහ෠ප්â€à¶»à·€à¶»à·Šà¶œà¶ºà¶±à·Š තà·à¶»à· නොමà·à¶­." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 +msgid "Settings" +msgstr "à·ƒà·à¶šà·ƒà·”ම්" + +#: js/js.js:688 +msgid "seconds ago" +msgstr "තත්පරයන්ට පෙර" + +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 මිනිත්තුවකට පෙර" + +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" + +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" + +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" + +#: js/js.js:693 +msgid "today" +msgstr "අද" + +#: js/js.js:694 +msgid "yesterday" +msgstr "ඊයේ" + +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" + +#: js/js.js:696 +msgid "last month" +msgstr "පෙර මà·à·ƒà¶ºà·š" + +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" + +#: js/js.js:698 +msgid "months ago" +msgstr "මà·à·ƒ කීපයකට පෙර" + +#: js/js.js:699 +msgid "last year" +msgstr "පෙර අවුරුද්දේ" + +#: js/js.js:700 +msgid "years ago" +msgstr "අවුරුදු කීපයකට පෙර" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "තà·à¶»à¶±à·Šà¶±" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "එපà·" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "නà·à·„à·" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "ඔව්" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "හරි" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 +msgid "Error" +msgstr "දà·à·‚යක්" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:158 +msgid "Share with" +msgstr "බෙදà·à¶œà¶±à·Šà¶±" + +#: js/share.js:163 +msgid "Share with link" +msgstr "යොමුවක් මඟින් බෙදà·à¶œà¶±à·Šà¶±" + +#: js/share.js:164 +msgid "Password protect" +msgstr "මුර පදයකින් ආරක්à·à·à¶šà¶»à¶±à·Šà¶±" + +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 +msgid "Password" +msgstr "මුර පදය " + +#: js/share.js:173 +msgid "Set expiration date" +msgstr "කල් ඉකුත් විමේ දිනය දමන්න" + +#: js/share.js:174 +msgid "Expiration date" +msgstr "කල් ඉකුත් විමේ දිනය" + +#: js/share.js:206 +msgid "Share via email:" +msgstr "විද්â€à¶ºà·”ත් තà·à¶´à·‘ල මඟින් බෙදà·à¶œà¶±à·Šà¶±: " + +#: js/share.js:208 +msgid "No people found" +msgstr "" + +#: js/share.js:235 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:292 +msgid "Unshare" +msgstr "නොබෙදු" + +#: js/share.js:304 +msgid "can edit" +msgstr "සංස්කරණය කළ à·„à·à¶š" + +#: js/share.js:306 +msgid "access control" +msgstr "ප්â€à¶»à·€à·šà· පà·à¶½à¶±à¶º" + +#: js/share.js:309 +msgid "create" +msgstr "සදන්න" + +#: js/share.js:312 +msgid "update" +msgstr "යà·à·€à¶­à·Šà¶šà·à¶½à·“න කරන්න" + +#: js/share.js:315 +msgid "delete" +msgstr "මකන්න" + +#: js/share.js:318 +msgid "share" +msgstr "බෙදà·à·„දà·à¶œà¶±à·Šà¶±" + +#: js/share.js:343 js/share.js:512 js/share.js:514 +msgid "Password protected" +msgstr "මුර පදයකින් ආරක්à·à·à¶šà¶» ඇත" + +#: js/share.js:525 +msgid "Error unsetting expiration date" +msgstr "කල් ඉකුත් දිනය ඉවත් කිරීමේ දà·à·‚යක්" + +#: js/share.js:537 +msgid "Error setting expiration date" +msgstr "කල් ඉකුත් දිනය ස්ථà·à¶´à¶±à¶º කිරීමේ දà·à·‚යක්" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "ownCloud මුරපදය ප්â€à¶»à¶­à·Šâ€à¶ºà·à¶»à¶¸à·Šà¶· කරන්න" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "ඔබගේ මුරපදය ප්â€à¶»à¶­à·Šâ€à¶ºà·à¶»à¶¸à·Šà¶· කිරීම සඳහ෠යොමුව විද්â€à¶ºà·”ත් තà·à¶´à·‘ලෙන් ලà·à¶¶à·™à¶±à·” ඇත" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "ඉල්ලීම අසà·à¶»à·Šà¶®à¶šà¶ºà·’!" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 +msgid "Username" +msgstr "පරිà·à·“ලක නම" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "ඔබේ මුරපදය ප්â€à¶»à¶­à·Šâ€à¶ºà·à¶»à¶¸à·Šà¶· කරන ලදී" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "පිවිසුම් පිටුවට" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "නව මුර පදයක්" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "මුරපදය ප්â€à¶»à¶­à·Šâ€à¶ºà·à¶»à¶¸à·Šà¶· කරන්න" + +#: strings.php:5 +msgid "Personal" +msgstr "පෞද්ගලික" + +#: strings.php:6 +msgid "Users" +msgstr "පරිà·à·“ලකයන්" + +#: strings.php:7 +msgid "Apps" +msgstr "යෙදුම්" + +#: strings.php:8 +msgid "Admin" +msgstr "පරිපà·à¶½à¶š" + +#: strings.php:9 +msgid "Help" +msgstr "උදව්" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "ඇතුල් වීම තහනම්" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "සොය෠ගත නොහà·à¶š" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "ප්â€à¶»à¶·à·šà¶¯à¶ºà¶±à·Š සංස්කරණය" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "එක් කරන්න" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "ආරක්ෂක නිවේදනයක්" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "ආරක්ෂිත අහඹු සංඛ්â€à¶ºà· උත්පà·à¶¯à¶šà¶ºà¶šà·Š නොමà·à¶­à·’ නම් ඔබගේ ගිණුමට පහරදෙන අයකුට එහි මුරපද යළි පිහිටුවීමට අවà·à·Šâ€à¶º ටà·à¶šà¶± පහසුවෙන් සොයà·à¶œà·™à¶± ඔබගේ ගිණුම පà·à·„à·à¶»à¶œà¶­ à·„à·à¶š." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "ඔබගේ දත්ත ඩිරෙක්ටරිය හ෠ගොනුවලට අන්තර්ජà·à¶½à¶ºà·™à¶±à·Š පිවිසිය à·„à·à¶š. ownCloud සපය෠ඇති .htaccess ගොනුව ක්â€à¶»à·’යà·à¶šà¶»à¶±à·Šà¶±à·š නà·à¶­. අපි තරයේ කිය෠සිටිනුයේ නම්, මෙම දත්ත හ෠ගොනු එසේ පිවිසීමට නොහà·à¶šà·’ වන ලෙස ඔබේ වෙබ් සේවà·à¶¯à·à¶ºà¶šà¶ºà· වින්â€à¶ºà·à·ƒ කරන ලෙස හ෠එම ඩිරෙක්ටරිය වෙබ් මූලයෙන් පිටතට ගෙනයන ලෙසය." + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 +msgid "Advanced" +msgstr "දියුණු/උසස්" + +#: templates/installation.php:50 +msgid "Data folder" +msgstr "දත්ත à·†à·à¶½à·Šà¶©à¶»à¶º" + +#: templates/installation.php:57 +msgid "Configure the database" +msgstr "දත්ත සමුදà·à¶º à·„à·à¶©à¶œà·à·ƒà·“ම" + +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 +msgid "will be used" +msgstr "භà·à·€à·’ත෠වනු ඇත" + +#: templates/installation.php:105 +msgid "Database user" +msgstr "දත්තගබඩ෠භà·à·€à·’තà·à¶šà¶»à·”" + +#: templates/installation.php:109 +msgid "Database password" +msgstr "දත්තගබඩà·à·€à·š මුරපදය" + +#: templates/installation.php:113 +msgid "Database name" +msgstr "දත්තගබඩà·à·€à·š නම" + +#: templates/installation.php:121 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:127 +msgid "Database host" +msgstr "දත්තගබඩ෠සේවà·à¶¯à·à¶ºà¶šà¶ºà·" + +#: templates/installation.php:132 +msgid "Finish setup" +msgstr "ස්ථà·à¶´à¶±à¶º කිරීම අවසන් කරන්න" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "ඉරිදà·" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "සඳුදà·" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "අඟහරුවà·à¶¯à·" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "බදà·à¶¯à·" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "බ්â€à¶»à·„ස්පතින්දà·" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "සිකුරà·à¶¯à·" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "සෙනසුරà·à¶¯à·" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "ජනවà·à¶»à·’" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "පෙබරවà·à¶»à·’" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "මà·à¶»à·Šà¶­à·”" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "අප්â€à¶»à·šà¶½à·Š" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "මà·à¶ºà·’" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "ජූනි" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "ජූලි" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "අගà·à·ƒà·Šà¶­à·”" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "à·ƒà·à¶´à·Šà¶­à·à¶¸à·Šà¶¶à¶»à·Š" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "ඔක්තà·à¶¶à¶»à·Š" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "නොවà·à¶¸à·Šà¶¶à¶»à·Š" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "දෙසà·à¶¸à·Šà¶¶à¶»à·Š" + +#: templates/layout.guest.php:41 +msgid "web services under your control" +msgstr "ඔබට පà·à¶½à¶±à¶º කළ à·„à·à¶šà·’ වෙබ් සේවà·à·€à¶±à·Š" + +#: templates/layout.user.php:44 +msgid "Log out" +msgstr "නික්මීම" + +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 +msgid "Lost your password?" +msgstr "මුරපදය අමතකද?" + +#: templates/login.php:27 +msgid "remember" +msgstr "මතක තබà·à¶œà¶±à·Šà¶±" + +#: templates/login.php:28 +msgid "Log in" +msgstr "ප්â€à¶»à·€à·šà·à·€à¶±à·Šà¶±" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "ඔබ නික්මී ඇත." + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "පෙර" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "ඊළඟ" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po new file mode 100644 index 0000000000000000000000000000000000000000..0f0bb6776b0300a83af7efcb555d2b2095426f47 --- /dev/null +++ b/l10n/si_LK/files.po @@ -0,0 +1,268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +# Chamara Disanayake , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "නිවà·à¶»à¶¯à·’ à·€ ගොනුව උඩුගත කෙරිනි" + +#: ajax/upload.php:21 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:23 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "උඩුගත කළ ගොනුවේ විà·à·à¶½à¶­à·Šà·€à¶º HTML පà·à¶»à¶¸à¶ºà·š නියම කළ ඇති MAX_FILE_SIZE විà·à·à¶½à¶­à·Šà·€à¶ºà¶§ වඩ෠වà·à¶©à·’ය" + +#: ajax/upload.php:25 +msgid "The uploaded file was only partially uploaded" +msgstr "උඩුගත කළ ගොනුවේ කොටසක් පමණක් උඩුගත විය" + +#: ajax/upload.php:26 +msgid "No file was uploaded" +msgstr "කිසිදු ගොනවක් උඩුගත නොවිනි" + +#: ajax/upload.php:27 +msgid "Missing a temporary folder" +msgstr "තà·à·€à¶šà·à¶½à·’ක ෆොල්ඩරයක් සොයà·à¶œà¶­ නොහà·à¶š" + +#: ajax/upload.php:28 +msgid "Failed to write to disk" +msgstr "තà·à¶§à·’ගත කිරීම අසà·à¶»à·Šà¶®à¶šà¶ºà·’" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "ගොනු" + +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 +msgid "Unshare" +msgstr "නොබෙදු" + +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 +msgid "Delete" +msgstr "මකන්න" + +#: js/fileactions.js:181 +msgid "Rename" +msgstr "නà·à·€à¶­ නම් කරන්න" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "replace" +msgstr "ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º කරන්න" + +#: js/filelist.js:201 +msgid "suggest name" +msgstr "නමක් යà·à¶¢à¶±à· කරන්න" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "cancel" +msgstr "අත් හරින්න" + +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 +msgid "undo" +msgstr "නිෂ්ප්â€à¶»à¶· කරන්න" + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 +msgid "generating ZIP-file, it may take some time." +msgstr "ගොනුවක් සෑදෙමින් පවතී. කෙටි වේලà·à·€à¶šà·Š ගත විය à·„à·à¶š" + +#: js/files.js:218 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/files.js:218 +msgid "Upload Error" +msgstr "උඩුගත කිරීමේ දà·à·à¶ºà¶šà·Š" + +#: js/files.js:235 +msgid "Close" +msgstr "වසන්න" + +#: js/files.js:254 js/files.js:368 js/files.js:398 +msgid "Pending" +msgstr "" + +#: js/files.js:274 +msgid "1 file uploading" +msgstr "1 ගොනුවක් උඩගත කෙරේ" + +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "" + +#: js/files.js:349 js/files.js:382 +msgid "Upload cancelled." +msgstr "උඩුගත කිරීම අත් හරින්න ලදී" + +#: js/files.js:451 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "උඩුගතකිරීමක් සිදුවේ. පිටුව à·„à·à¶» යà·à¶¸à·™à¶±à·Š එය නà·à·€à¶­à·™à¶±à·” ඇත" + +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" + +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "" + +#: js/files.js:712 +msgid "error while scanning" +msgstr "පරීක්ෂ෠කිරීමේදී දà·à·‚යක්" + +#: js/files.js:785 templates/index.php:65 +msgid "Name" +msgstr "නම" + +#: js/files.js:786 templates/index.php:76 +msgid "Size" +msgstr "ප්â€à¶»à¶¸à·à¶«à¶º" + +#: js/files.js:787 templates/index.php:78 +msgid "Modified" +msgstr "වෙනස් කළ" + +#: js/files.js:814 +msgid "1 folder" +msgstr "1 ෆොල්ඩරයක්" + +#: js/files.js:816 +msgid "{count} folders" +msgstr "" + +#: js/files.js:824 +msgid "1 file" +msgstr "1 ගොනුවක්" + +#: js/files.js:826 +msgid "{count} files" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "ගොනු පරිහරණය" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "උඩුගත කිරීමක උපරිම ප්â€à¶»à¶¸à·à¶«à¶º" + +#: templates/admin.php:9 +msgid "max. possible: " +msgstr "à·„à·à¶šà·’ උපරිමය:" + +#: templates/admin.php:12 +msgid "Needed for multi-file and folder downloads." +msgstr "බහු-ගොනු හ෠ෆොල්ඩර බà·à¶œà¶­ කිරීමට අවà·à·Šâ€à¶ºà¶ºà·’" + +#: templates/admin.php:14 +msgid "Enable ZIP-download" +msgstr "ZIP-බà·à¶œà¶­ කිරීම් සක්â€à¶»à·’ය කරන්න" + +#: templates/admin.php:17 +msgid "0 is unlimited" +msgstr "0 යනු සීමà·à·€à¶šà·Š නà·à¶­à·’ බවය" + +#: templates/admin.php:19 +msgid "Maximum input size for ZIP files" +msgstr "ZIP ගොනු සඳහ෠දà·à¶¸à·’ය à·„à·à¶šà·’ උපරිම විà·à·à¶½à¶­à·€à¶º" + +#: templates/admin.php:23 +msgid "Save" +msgstr "සුරකින්න" + +#: templates/index.php:7 +msgid "New" +msgstr "නව" + +#: templates/index.php:10 +msgid "Text file" +msgstr "පෙළ ගොනුව" + +#: templates/index.php:12 +msgid "Folder" +msgstr "à·†à·à¶½à·Šà¶©à¶»à¶º" + +#: templates/index.php:14 +msgid "From link" +msgstr "යොමුවෙන්" + +#: templates/index.php:35 +msgid "Upload" +msgstr "උඩුගත කිරීම" + +#: templates/index.php:43 +msgid "Cancel upload" +msgstr "උඩුගත කිරීම අත් හරින්න" + +#: templates/index.php:57 +msgid "Nothing in here. Upload something!" +msgstr "මෙහි කිසිවක් නොමà·à¶­. යමක් උඩුගත කරන්න" + +#: templates/index.php:71 +msgid "Download" +msgstr "බà·à¶œà¶­ කිරීම" + +#: templates/index.php:103 +msgid "Upload too large" +msgstr "උඩුගත කිරීම විà·à·à¶½ à·€à·à¶©à·’ය" + +#: templates/index.php:105 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "ඔබ උඩුගත කිරීමට තà·à¶­à·Š කරන ගොනු මෙම සේවà·à¶¯à·à¶ºà¶šà¶ºà· උඩුගත කිරීමට ඉඩදී ඇති උපරිම ගොනු විà·à·à¶½à¶­à·Šà·€à¶ºà¶§ වඩ෠වà·à¶©à·’ය" + +#: templates/index.php:110 +msgid "Files are being scanned, please wait." +msgstr "ගොනු පරික්ෂ෠කෙරේ. මඳක් රà·à¶³à·“ සිටින්න" + +#: templates/index.php:113 +msgid "Current scanning" +msgstr "වර්තමà·à¶± පරික්ෂà·à·€" diff --git a/l10n/si_LK/files_encryption.po b/l10n/si_LK/files_encryption.po new file mode 100644 index 0000000000000000000000000000000000000000..7e40f2c3ea731e0a99b5251b4c96e4e7074f6071 --- /dev/null +++ b/l10n/si_LK/files_encryption.po @@ -0,0 +1,35 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 11:00+0000\n" +"Last-Translator: Anushke Guneratne \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:3 +msgid "Encryption" +msgstr "ගුප්ත කේතනය" + +#: templates/settings.php:4 +msgid "Exclude the following file types from encryption" +msgstr "මෙම ගොනු වර්ග ගුප්ත කේතනය කිරීමෙන් බà·à·„à·à¶»à·€ තබන්න" + +#: templates/settings.php:5 +msgid "None" +msgstr "කිසිවක් නà·à¶­" + +#: templates/settings.php:10 +msgid "Enable Encryption" +msgstr "ගුප්ත කේතනය සක්â€à¶»à·’ය කරන්න" diff --git a/l10n/si_LK/files_external.po b/l10n/si_LK/files_external.po new file mode 100644 index 0000000000000000000000000000000000000000..2a2835fc12b64f24ba638e636951936fac636ddf --- /dev/null +++ b/l10n/si_LK/files_external.po @@ -0,0 +1,107 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 10:28+0000\n" +"Last-Translator: Anushke Guneratne \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "පිවිසීමට à·„à·à¶š" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "Dropbox ගබඩà·à·€ වින්â€à¶ºà·à·ƒ කිරීමේ දà·à·à¶ºà¶šà·Š ඇත" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "පිවිසුම ලබà·à¶¯à·™à¶±à·Šà¶±" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "අත්â€à¶ºà·à·€à·à·Šâ€à¶º තොරතුරු සියල්ල සම්පුර්ණ කරන්න" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "කරුණà·à¶šà¶» වලංගු Dropbox යෙදුම් යතුරක් හ෠රහසක් ලබà·à¶¯à·™à¶±à·Šà¶±." + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "Google Drive ගබඩà·à·€ වින්â€à¶ºà·à·ƒ කිරීමේ දà·à·à¶ºà¶šà·Š ඇත" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "භà·à·„ිර ගබඩà·à·€" + +#: templates/settings.php:7 templates/settings.php:19 +msgid "Mount point" +msgstr "මවුන්ට් කළ ස්ථà·à¶±à¶º" + +#: templates/settings.php:8 +msgid "Backend" +msgstr "පසු පද්ධතිය" + +#: templates/settings.php:9 +msgid "Configuration" +msgstr "වින්â€à¶ºà·à·ƒà¶º" + +#: templates/settings.php:10 +msgid "Options" +msgstr "විකල්පයන්" + +#: templates/settings.php:11 +msgid "Applicable" +msgstr "අදà·à·…" + +#: templates/settings.php:23 +msgid "Add mount point" +msgstr "මවුන්ට් කරන ස්ථà·à¶±à¶ºà¶šà·Š එකතු කරන්න" + +#: templates/settings.php:54 templates/settings.php:62 +msgid "None set" +msgstr "කිසිවක් නà·à¶­" + +#: templates/settings.php:63 +msgid "All Users" +msgstr "සියළු පරිà·à·“ලකයන්" + +#: templates/settings.php:64 +msgid "Groups" +msgstr "කණ්ඩà·à¶ºà¶¸à·Š" + +#: templates/settings.php:69 +msgid "Users" +msgstr "පරිà·à·“ලකයන්" + +#: templates/settings.php:77 templates/settings.php:107 +msgid "Delete" +msgstr "මක෠දමන්න" + +#: templates/settings.php:87 +msgid "Enable User External Storage" +msgstr "පරිà·à·“ලක භà·à·„ිර ගබඩà·à·€à¶±à·Š සක්â€à¶»à·’ය කරන්න" + +#: templates/settings.php:88 +msgid "Allow users to mount their own external storage" +msgstr "පරිà·à·“ලකයන්ට තමà·à¶œà·šà¶¸ භà·à·„ිර ගබඩà·à·€à¶±à·Š මවුන්ට් කිරීමේ අයිතිය දෙන්න" + +#: templates/settings.php:99 +msgid "SSL root certificates" +msgstr "SSL මූල සහතිකයන්" + +#: templates/settings.php:113 +msgid "Import Root Certificate" +msgstr "මූල සහතිකය ආයà·à¶­ කරන්න" diff --git a/l10n/si_LK/files_sharing.po b/l10n/si_LK/files_sharing.po new file mode 100644 index 0000000000000000000000000000000000000000..6308f9a772fc3f12d7c8f20cb604b88ccf047f1c --- /dev/null +++ b/l10n/si_LK/files_sharing.po @@ -0,0 +1,49 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 05:59+0000\n" +"Last-Translator: Anushke Guneratne \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "මුරපදය" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "යොමු කරන්න" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "%s ඔබව %s à·†à·à¶½à·Šà¶©à¶»à¶ºà¶§ හවුල් කරගත්තේය" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "%s ඔබ සමඟ %s ගොනුව බෙදà·à·„දà·à¶œà¶­à·Šà¶­à·šà¶º" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "භà·à¶œà¶­ කරන්න" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "පූර්වදර්à·à¶±à¶ºà¶šà·Š නොමà·à¶­" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "ඔබට පà·à¶½à¶±à¶º කළ à·„à·à¶šà·’ වෙබ් සේවà·à·€à¶±à·Š" diff --git a/l10n/si_LK/files_versions.po b/l10n/si_LK/files_versions.po new file mode 100644 index 0000000000000000000000000000000000000000..1d5285a2554d5682bf388f64af74856e6ef9dec6 --- /dev/null +++ b/l10n/si_LK/files_versions.po @@ -0,0 +1,43 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-20 02:02+0200\n" +"PO-Revision-Date: 2012-10-19 10:27+0000\n" +"Last-Translator: Anushke Guneratne \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/settings-personal.js:31 templates/settings-personal.php:10 +msgid "Expire all versions" +msgstr "සියලු අනුවà·à¶¯ අවලංගු කරන්න" + +#: js/versions.js:16 +msgid "History" +msgstr "ඉතිහà·à·ƒà¶º" + +#: templates/settings-personal.php:4 +msgid "Versions" +msgstr "අනුවà·à¶¯" + +#: templates/settings-personal.php:7 +msgid "This will delete all existing backup versions of your files" +msgstr "මෙයින් ඔබගේ ගොනුවේ රක්à·à·’ත කරනු ලà·à¶¶à·” අනුවà·à¶¯ සියල්ල මක෠දමනු ලà·à¶¶à·š" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "ගොනු අනුවà·à¶¯à¶ºà¶±à·Š" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "සක්â€à¶»à·’ය කරන්න" diff --git a/l10n/si_LK/lib.po b/l10n/si_LK/lib.po new file mode 100644 index 0000000000000000000000000000000000000000..f798fa5f24e701bc905c8c0e09449dcf5f0f7a84 --- /dev/null +++ b/l10n/si_LK/lib.po @@ -0,0 +1,154 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app.php:285 +msgid "Help" +msgstr "උදව්" + +#: app.php:292 +msgid "Personal" +msgstr "පෞද්ගලික" + +#: app.php:297 +msgid "Settings" +msgstr "සිටුවම්" + +#: app.php:302 +msgid "Users" +msgstr "පරිà·à·“ලකයන්" + +#: app.php:309 +msgid "Apps" +msgstr "යෙදුම්" + +#: app.php:311 +msgid "Admin" +msgstr "පරිපà·à¶½à¶š" + +#: files.php:332 +msgid "ZIP download is turned off." +msgstr "ZIP භà·à¶œà¶­ කිරීම් අක්â€à¶»à·’යයි" + +#: files.php:333 +msgid "Files need to be downloaded one by one." +msgstr "ගොනු එකින් එක භà·à¶œà¶­ යුතුයි" + +#: files.php:333 files.php:358 +msgid "Back to Files" +msgstr "ගොනු වෙතට නà·à·€à¶­ යන්න" + +#: files.php:357 +msgid "Selected files too large to generate zip file." +msgstr "තà·à¶»à·à¶œà¶­à·Š ගොනු ZIP ගොනුවක් තà·à¶±à·“මට විà·à·à¶½ à·€à·à¶©à·’ය." + +#: json.php:28 +msgid "Application is not enabled" +msgstr "යෙදුම සක්â€à¶»à·’ය කර නොමà·à¶­" + +#: json.php:39 json.php:64 json.php:77 json.php:89 +msgid "Authentication error" +msgstr "සත්â€à¶ºà·à¶´à¶±à¶º කිරීමේ දà·à·à¶ºà¶šà·Š" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "ටà·à¶šà¶±à¶º කල් ඉකුත් වී ඇත. පිටුව නà·à·€à·”ම් කරන්න" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "ගොනු" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "පෙළ" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "අනු රූ" + +#: template.php:103 +msgid "seconds ago" +msgstr "තත්පරයන්ට පෙර" + +#: template.php:104 +msgid "1 minute ago" +msgstr "1 මිනිත්තුවකට පෙර" + +#: template.php:105 +#, php-format +msgid "%d minutes ago" +msgstr "%d මිනිත්තුවන්ට පෙර" + +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 +msgid "today" +msgstr "අද" + +#: template.php:109 +msgid "yesterday" +msgstr "ඊයේ" + +#: template.php:110 +#, php-format +msgid "%d days ago" +msgstr "%d දිනකට පෙර" + +#: template.php:111 +msgid "last month" +msgstr "පෙර මà·à·ƒà¶ºà·š" + +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" + +#: template.php:113 +msgid "last year" +msgstr "පෙර අවුරුද්දේ" + +#: template.php:114 +msgid "years ago" +msgstr "අවුරුදු කීපයකට පෙර" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "%s යොදà·à¶œà¶­ à·„à·à¶š. තව විස්තර ලබà·à¶œà¶±à·Šà¶±" + +#: updater.php:77 +msgid "up to date" +msgstr "යà·à·€à¶­à·Šà¶šà·à¶½à·“නයි" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "යà·à·€à¶­à·Šà¶šà·à¶½à·“න බව පරීක්ෂණය අක්â€à¶»à·’යයි" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/si_LK/settings.po b/l10n/si_LK/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..1bc5f94e9ade91ffff33c3979ab2af433ca20b18 --- /dev/null +++ b/l10n/si_LK/settings.po @@ -0,0 +1,250 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +# Chamara Disanayake , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "කණ්ඩà·à¶ºà¶¸ දà·à¶±à¶§à¶¸à¶­à·Š තිබේ" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "කà·à¶«à¶©à¶ºà¶šà·Š එක් කළ නොහà·à¶šà·’ විය" + +#: ajax/enableapp.php:12 +msgid "Could not enable app. " +msgstr "යෙදුම සක්â€à¶»à·“ය කළ නොහà·à¶šà·’ විය." + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "වි-තà·à¶´à·‘ල සුරකින ලදී" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "අවලංගු වි-තà·à¶´à·‘ල" + +#: ajax/openid.php:13 +msgid "OpenID Changed" +msgstr "විවෘත à·„à·à¶³à·”නුම නà·à¶­à·„ොත් OpenID වෙනස්විය." + +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "අවලංගු අයදුම" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "කණ්ඩà·à¶ºà¶¸ මà·à¶šà·“මට නොහà·à¶š" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "සත්â€à¶ºà·à¶´à¶± දà·à·‚යක්" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "පරිà·à·“ලකය෠මà·à¶šà·“මට නොහà·à¶š" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "භà·à·‚à·à·€ à·à·€à¶±à·ƒà·Š කිරීම" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "පරිà·à·“ලකය෠%s කණ්ඩà·à¶ºà¶¸à¶§ එකතු කළ නොහà·à¶š" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "පරිà·à·“ලකය෠%s කණ්ඩà·à¶ºà¶¸à·’න් ඉවත් කළ නොහà·à¶š" + +#: js/apps.js:28 js/apps.js:67 +msgid "Disable" +msgstr "අක්â€à¶»à·’ය කරන්න" + +#: js/apps.js:28 js/apps.js:55 +msgid "Enable" +msgstr "ක්â€à¶»à·’යත්මක කරන්න" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "සුරà·à¶šà·™à¶¸à·’න් පවතී..." + +#: personal.php:42 personal.php:43 +msgid "__language_name__" +msgstr "" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "යෙදුමක් එක් කිරීම" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "තවත් යෙදුම්" + +#: templates/apps.php:27 +msgid "Select an App" +msgstr "යෙදුමක් තොරන්න" + +#: templates/apps.php:31 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:32 +msgid "-licensed by " +msgstr "" + +#: templates/help.php:9 +msgid "Documentation" +msgstr "ලේඛන" + +#: templates/help.php:10 +msgid "Managing Big Files" +msgstr "විà·à·à¶½ ගොනු කළමණà·à¶šà¶»à¶±à¶º" + +#: templates/help.php:11 +msgid "Ask a question" +msgstr "ප්â€à¶»à·à·Šà¶«à¶ºà¶šà·Š අසන්න" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "උදව් දත්ත ගබඩà·à·€ හ෠සම්බන්ධවීමේදී ගà·à¶§à·…à·” ඇතිවිය." + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "ස්වà·à¶šà·Šà¶­à·’යෙන් එතà·à¶±à¶§ යන්න" + +#: templates/help.php:31 +msgid "Answer" +msgstr "පිළිතුර" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "" + +#: templates/personal.php:13 +msgid "Download" +msgstr "භà·à¶œà¶­ කරන්න" + +#: templates/personal.php:19 +msgid "Your password was changed" +msgstr "ඔබගේ මුර පදය වෙනස් කෙරුණි" + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "මුර පදය වෙනස් කළ නොහà·à¶šà·’ විය" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "වත්මන් මුරපදය" + +#: templates/personal.php:22 +msgid "New password" +msgstr "නව මුරපදය" + +#: templates/personal.php:23 +msgid "show" +msgstr "ප්â€à¶»à¶¯à¶»à·Šà·à¶±à¶º කිරීම" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "මුරපදය වෙනස් කිරීම" + +#: templates/personal.php:30 +msgid "Email" +msgstr "විද්â€à¶ºà·”ත් තà·à¶´à·‘ල" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "ඔබගේ විද්â€à¶ºà·”ත් තà·à¶´à·‘ල" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "මුරපද ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º සඳහ෠විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š විස්තර ලබ෠දෙන්න" + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "භà·à·‚à·à·€" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "පරිවර්ථන සහය" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "ඔබගේ ගොනු කළමනà·à¶šà¶»à·” ownCloudයට සම්බන්ධ කිරීමට මෙම ලිපිනය භà·à·€à·’ත෠කරන්න" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "නිපදන ලද්දේ ownCloud සමà·à¶¢à¶ºà·™à¶±à·Š, the මුල් කේතය ලයිසන්ස් කර ඇත්තේ AGPL යටතේ." + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "නà·à¶¸à¶º" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "මුරපදය" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "සමූහය" + +#: templates/users.php:32 +msgid "Create" +msgstr "තනන්න" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "à·ƒà·à¶¸à·à¶±à·Šâ€à¶º සලà·à¶šà¶º" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "වෙනත්" + +#: templates/users.php:80 templates/users.php:112 +msgid "Group Admin" +msgstr "කà·à¶«à·Šà¶© පරිපà·à¶½à¶š" + +#: templates/users.php:82 +msgid "Quota" +msgstr "සලà·à¶šà¶º" + +#: templates/users.php:146 +msgid "Delete" +msgstr "මක෠දමනවà·" diff --git a/l10n/si_LK/user_ldap.po b/l10n/si_LK/user_ldap.po new file mode 100644 index 0000000000000000000000000000000000000000..065c1358f959c08ec0ff26904a362181a9e3836e --- /dev/null +++ b/l10n/si_LK/user_ldap.po @@ -0,0 +1,171 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-10-27 00:01+0200\n" +"PO-Revision-Date: 2012-10-26 06:00+0000\n" +"Last-Translator: Anushke Guneratne \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:8 +msgid "Host" +msgstr "සත්කà·à¶»à¶šà¶º" + +#: templates/settings.php:8 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "SSL අවà·à·Šâ€à¶ºà¶º වන විට පමණක් à·„à·à¶», අන් අවස්ථà·à·€à¶±à·Šà·„ිදී ප්â€à¶»à·œà¶§à·œà¶šà·à¶½à¶º අත් à·„à·à¶»à·’ය à·„à·à¶š. භà·à·€à·’ත෠කරන විට ldaps:// ලෙස ආරම්භ කරන්න" + +#: templates/settings.php:9 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:9 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:10 +msgid "User DN" +msgstr "" + +#: templates/settings.php:10 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:11 +msgid "Password" +msgstr "මුර පදය" + +#: templates/settings.php:11 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:12 +msgid "User Login Filter" +msgstr "පරිà·à·“ලක පිවිසුම් පෙරහන" + +#: templates/settings.php:12 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:13 +msgid "User List Filter" +msgstr "පරිà·à·“ලක ලà·à¶ºà·’ස්තු පෙරහන" + +#: templates/settings.php:13 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:13 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:14 +msgid "Group Filter" +msgstr "කණ්ඩà·à¶ºà¶¸à·Š පෙරහන" + +#: templates/settings.php:14 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "කණ්ඩà·à¶ºà¶¸à·Š සොය෠ලබà·à¶œà¶±à·Šà¶±à· විට, යොදන පෙරහන නියම කරයි" + +#: templates/settings.php:14 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "" + +#: templates/settings.php:17 +msgid "Port" +msgstr "තොට" + +#: templates/settings.php:18 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:19 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:20 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:21 +msgid "Use TLS" +msgstr "TLS භà·à·€à·’ත෠කරන්න" + +#: templates/settings.php:21 +msgid "Do not use it for SSL connections, it will fail." +msgstr "" + +#: templates/settings.php:22 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:23 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:23 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "" + +#: templates/settings.php:23 +msgid "Not recommended, use for testing only." +msgstr "නිර්දේ෠කළ නොහà·à¶š. පරීක්ෂණ සඳහ෠පමණක් භà·à·€à·’ත කරන්න" + +#: templates/settings.php:24 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:24 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:25 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:25 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:27 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:29 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:30 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:32 +msgid "Help" +msgstr "උදව්" diff --git a/l10n/si_LK/user_webdavauth.po b/l10n/si_LK/user_webdavauth.po new file mode 100644 index 0000000000000000000000000000000000000000..957f987997a8d2a4952a198b7f0fb07888b1899d --- /dev/null +++ b/l10n/si_LK/user_webdavauth.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Anushke Guneratne , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-13 00:05+0100\n" +"PO-Revision-Date: 2012-11-12 04:50+0000\n" +"Last-Translator: Anushke Guneratne \n" +"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV යොමුව: http://" diff --git a/l10n/sk_SK/admin_dependencies_chk.po b/l10n/sk_SK/admin_dependencies_chk.po deleted file mode 100644 index 1381cc2a7f5a90adcb2c03ff0623ab84f4796b5a..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/sk_SK/admin_migrate.po b/l10n/sk_SK/admin_migrate.po deleted file mode 100644 index 00e8e196c080d9dcf2e365565c0472645ec3305b..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/sk_SK/bookmarks.po b/l10n/sk_SK/bookmarks.po deleted file mode 100644 index 1f1343ccd6ae06d45c77fe98424b349d4eefed2b..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/sk_SK/calendar.po b/l10n/sk_SK/calendar.po deleted file mode 100644 index 9b560742022a5108084498e3612e6acaa2771264..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011, 2012. -# Roman Priesol , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "NenaÅ¡iel sa žiadny kalendár." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "NenaÅ¡la sa žiadna udalosÅ¥." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Zlý kalendár" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nová Äasová zóna:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ÄŒasové pásmo zmenené" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Neplatná požiadavka" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendár" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM rrrr" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "d. MMM[ yyyy]{ '—' d.[ MMM] yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, rrrr" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Narodeniny" - -#: lib/app.php:122 -msgid "Business" -msgstr "Podnikanie" - -#: lib/app.php:123 -msgid "Call" -msgstr "Hovor" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klienti" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "DoruÄovateľ" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Prázdniny" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Nápady" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Cesta" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileá" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Stretnutia" - -#: lib/app.php:131 -msgid "Other" -msgstr "Ostatné" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Osobné" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekty" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Otázky" - -#: lib/app.php:135 -msgid "Work" -msgstr "Práca" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "nepomenovaný" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nový kalendár" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "NeopakovaÅ¥" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Denne" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Týždenne" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Každý deň v týždni" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Každý druhý týždeň" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "MesaÄne" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "RoÄne" - -#: lib/object.php:388 -msgid "never" -msgstr "nikdy" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "podľa výskytu" - -#: lib/object.php:390 -msgid "by date" -msgstr "podľa dátumu" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "podľa dňa v mesiaci" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "podľa dňa v týždni" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Pondelok" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Utorok" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Streda" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Å tvrtok" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Piatok" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Sobota" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Nedeľa" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "týždenné udalosti v mesiaci" - -#: lib/object.php:428 -msgid "first" -msgstr "prvý" - -#: lib/object.php:429 -msgid "second" -msgstr "druhý" - -#: lib/object.php:430 -msgid "third" -msgstr "tretí" - -#: lib/object.php:431 -msgid "fourth" -msgstr "Å¡tvrtý" - -#: lib/object.php:432 -msgid "fifth" -msgstr "piaty" - -#: lib/object.php:433 -msgid "last" -msgstr "posledný" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Január" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Február" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Marec" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Apríl" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Máj" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Jún" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Júl" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "August" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Október" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "December" - -#: lib/object.php:488 -msgid "by events date" -msgstr "podľa dátumu udalosti" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "po dňoch" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "podľa Äísel týždňov" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "podľa dňa a mesiaca" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Dátum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Celý deň" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Nevyplnené položky" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Nadpis" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Od dátumu" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Od Äasu" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Do dátumu" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Do Äasu" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "UdalosÅ¥ konÄí eÅ¡te pred tým než zaÄne" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Nastala chyba databázy" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Týždeň" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mesiac" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Zoznam" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Dnes" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "VaÅ¡e kalendáre" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav odkaz" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Zdielané kalendáre" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Žiadne zdielané kalendáre" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "ZdielaÅ¥ kalendár" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "StiahnuÅ¥" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "UpraviÅ¥" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "OdstrániÅ¥" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "zdielané s vami používateľom" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nový kalendár" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "UpraviÅ¥ kalendár" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Zobrazené meno" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktívne" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Farba kalendáru" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "UložiÅ¥" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "OdoslaÅ¥" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "ZruÅ¡iÅ¥" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "UpraviÅ¥ udalosÅ¥" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "ExportovaÅ¥" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informácie o udalosti" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Opakovanie" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "ÚÄastníci" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "ZdielaÅ¥" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Nadpis udalosti" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategória" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Kategórie oddelené Äiarkami" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Úprava kategórií" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Celodenná udalosÅ¥" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Od" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Do" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "PokroÄilé možnosti" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Poloha" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Poloha udalosti" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Popis" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Popis udalosti" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "OpakovaÅ¥" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "PokroÄilé" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Do Äasu" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "VybraÅ¥ dni" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "a denné udalosti v roku." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "a denné udalosti v mesiaci." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "VybraÅ¥ mesiace" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "VybraÅ¥ týždne" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "a týždenné udalosti v roku." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Interval" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Koniec" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "výskyty" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "vytvoriÅ¥ nový kalendár" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "ImportovaÅ¥ súbor kalendára" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Meno nového kalendára" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "ImportovaÅ¥" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "ZatvoriÅ¥ dialóg" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "VytvoriÅ¥ udalosÅ¥" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "ZobraziÅ¥ udalosÅ¥" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Žiadne vybraté kategórie" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "z" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "v" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ÄŒasová zóna" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Používatelia" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "vybraÅ¥ používateľov" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Upravovateľné" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Skupiny" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "vybraÅ¥ skupiny" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "zverejniÅ¥" diff --git a/l10n/sk_SK/contacts.po b/l10n/sk_SK/contacts.po deleted file mode 100644 index d66125ae02cd287506ff17f49060dcffbdbd3aa9..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Roman Priesol , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Chyba (de)aktivácie adresára." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID nie je nastavené." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Nedá sa upraviÅ¥ adresár s prázdnym menom." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Chyba aktualizácie adresára." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "ID nezadané" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Chyba pri nastavovaní kontrolného súÄtu." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Žiadne kategórie neboli vybraté na odstránenie." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Žiadny adresár nenájdený." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Žiadne kontakty nenájdené." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Vyskytla sa chyba pri pridávaní kontaktu." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "meno elementu nie je nastavené." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Nemôžem pridaÅ¥ prázdny údaj." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Musí byÅ¥ uvedený aspoň jeden adresný údaj." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Pokúšate sa pridaÅ¥ rovnaký atribút:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informácie o vCard sú neplatné. Prosím obnovte stránku." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Chýba ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Chyba pri vyňatí ID z VCard:" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "kontrolný súÄet nie je nastavený." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informácia o vCard je nesprávna. Obnovte stránku, prosím." - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "NieÄo sa pokazilo." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Nebolo nastavené ID kontaktu." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Chyba pri Äítaní fotky kontaktu." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Chyba pri ukladaní doÄasného súboru." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "NaÄítaná fotka je vadná." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Chýba ID kontaktu." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Žiadna fotka nebola poslaná." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Súbor neexistuje:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Chyba pri nahrávaní obrázka." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Chyba poÄas prevzatia objektu kontakt." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Chyba poÄas získavania fotky." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Chyba poÄas ukladania kontaktu." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Chyba poÄas zmeny obrázku." - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Chyba poÄas orezania obrázku." - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Chyba poÄas vytvárania doÄasného obrázku." - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Chyba vyhľadania obrázku: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Chyba pri ukladaní kontaktov na úložisko." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Nevyskytla sa žiadna chyba, súbor úspeÅ¡ne uložené." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Ukladaný súbor prekraÄuje nastavenie upload_max_filesize v php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Ukladaný súbor prekraÄuje nastavenie MAX_FILE_SIZE z volieb HTML formulára." - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Ukladaný súbor sa nahral len ÄiastoÄne" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Žiadny súbor nebol uložený" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Chýba doÄasný prieÄinok" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Nemôžem uložiÅ¥ doÄasný obrázok: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Nemôžem naÄítaÅ¥ doÄasný obrázok: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Žiaden súbor nebol odoslaný. Neznáma chyba" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Kontakty" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Bohužiaľ, táto funkcia eÅ¡te nebola implementovaná" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Neimplementované" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Nemôžem získaÅ¥ platnú adresu." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Chyba" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Tento parameter nemôže byÅ¥ prázdny." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Nemôžem previesÅ¥ prvky." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' zavolané bez argument. Prosím oznámte chybu na bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "UpraviÅ¥ meno" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Žiadne súbory neboli vybrané k nahratiu" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Súbor, ktorý sa pokúšate nahraÅ¥, presahuje maximálnu povolenú veľkosÅ¥." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "VybraÅ¥ typ" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Výsledok: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " importovaných, " - -#: js/loader.js:49 -msgid " failed." -msgstr " zlyhaných." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Toto nie je váš adresár." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakt nebol nájdený." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Práca" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Domov" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Iné" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "SMS" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Odkazová schránka" - -#: lib/app.php:205 -msgid "Message" -msgstr "Správa" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pager" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Narodeniny" - -#: lib/app.php:253 -msgid "Business" -msgstr "Biznis" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Klienti" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Prázdniny" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Stretnutie" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projekty" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Otázky" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "Narodeniny {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "PridaÅ¥ Kontakt." - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "ImportovaÅ¥" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adresáre" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "ZatvoriÅ¥" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Klávesové skratky" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigácia" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "ÄŽalší kontakt v zozname" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Predchádzajúci kontakt v zozname" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Akcie" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Obnov zoznam kontaktov" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Pridaj nový kontakt" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Pridaj nový adresár" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Vymaž súÄasný kontakt" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Pretiahnite sem fotku pre nahratie" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "OdstrániÅ¥ súÄasnú fotku" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "UpraviÅ¥ súÄasnú fotku" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "NahraÅ¥ novú fotku" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "VybraÅ¥ fotku z ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Formát vlastný, krátke meno, celé meno, obrátené alebo obrátené s Äiarkami" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "UpraviÅ¥ podrobnosti mena" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizácia" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "OdstrániÅ¥" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Prezývka" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Zadajte prezývku" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd. mm. yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Skupiny" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Oddelte skupiny Äiarkami" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Úprava skupín" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Uprednostňované" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Prosím zadajte platnú e-mailovú adresu." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Zadajte e-mailové adresy" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "OdoslaÅ¥ na adresu" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "OdstrániÅ¥ e-mailové adresy" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Zadajte telefónne Äíslo" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "OdstrániÅ¥ telefónne Äíslo" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "ZobraziÅ¥ na mape" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "UpraviÅ¥ podrobnosti adresy" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Tu môžete pridaÅ¥ poznámky." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "PridaÅ¥ pole" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefón" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresa" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Poznámka" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "StiahnuÅ¥ kontakt" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "OdstrániÅ¥ kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "DoÄasný obrázok bol odstránený z cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "UpraviÅ¥ adresu" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Typ" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "PO Box" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Ulica" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Ulica a Äíslo" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Rozšírené" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Mesto" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Región" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "PSÄŒ" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "PSÄŒ" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Krajina" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adresár" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Tituly pred" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "SleÄna" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Pani" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Pán" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Sir" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Pani" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Krstné meno" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "ÄŽalÅ¡ie mená" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Priezvisko" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Tituly za" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "JUDr." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "MUDr." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Ph.D." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "ml." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "st." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "ImportovaÅ¥ súbor kontaktu" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Prosím zvolte adresár" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "vytvoriÅ¥ nový adresár" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Meno nového adresára" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importovanie kontaktov" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Nemáte žiadne kontakty v adresári." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "PridaÅ¥ kontakt" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Zadaj meno" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "Adresy pre synchronizáciu s CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "viac informácií" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Predvolená adresa (Kontakt etc)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "StiahnuÅ¥" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "UpraviÅ¥" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nový adresár" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "UložiÅ¥" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "ZruÅ¡iÅ¥" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index 719062c78705498867a66d0f5c51282604a6e887..711f7133799b3b2679075806601b75250c52690f 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/core.po @@ -6,13 +6,14 @@ # , 2011, 2012. # , 2012. # Roman Priesol , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:04+0200\n" -"PO-Revision-Date: 2012-10-09 18:37+0000\n" -"Last-Translator: martinb \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 16:24+0000\n" +"Last-Translator: martin \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,208 +21,241 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Meno aplikácie nezadané." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Neposkytnutý kategorický typ." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Žiadna kategória pre pridanie?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Táto kategória už existuje:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Neposkytnutý typ objektu." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID neposkytnuté." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Chyba pri pridávaní %s do obľúbených položiek." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Neboli vybrané žiadne kategórie pre odstránenie." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Chyba pri odstraňovaní %s z obľúbených položiek." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Nastavenia" -#: js/js.js:645 -msgid "January" -msgstr "Január" +#: js/js.js:704 +msgid "seconds ago" +msgstr "pred sekundami" -#: js/js.js:645 -msgid "February" -msgstr "Február" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "pred minútou" -#: js/js.js:645 -msgid "March" -msgstr "Marec" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "pred {minutes} minútami" -#: js/js.js:645 -msgid "April" -msgstr "Apríl" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Pred 1 hodinou." -#: js/js.js:645 -msgid "May" -msgstr "Máj" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "Pred {hours} hodinami." -#: js/js.js:645 -msgid "June" -msgstr "Jún" +#: js/js.js:709 +msgid "today" +msgstr "dnes" -#: js/js.js:646 -msgid "July" -msgstr "Júl" +#: js/js.js:710 +msgid "yesterday" +msgstr "vÄera" -#: js/js.js:646 -msgid "August" -msgstr "August" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "pred {days} dňami" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:712 +msgid "last month" +msgstr "minulý mesiac" -#: js/js.js:646 -msgid "October" -msgstr "Október" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "Pred {months} mesiacmi." -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:714 +msgid "months ago" +msgstr "pred mesiacmi" -#: js/js.js:646 -msgid "December" -msgstr "December" +#: js/js.js:715 +msgid "last year" +msgstr "minulý rok" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "pred rokmi" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Výber" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "ZruÅ¡iÅ¥" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nie" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ãno" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Neboli vybrané žiadne kategórie pre odstránenie." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "NeÅ¡pecifikovaný typ objektu." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "Chyba" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "NeÅ¡pecifikované meno aplikácie." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Požadovaný súbor {file} nie je inÅ¡talovaný!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Chyba poÄas zdieľania" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Chyba poÄas ukonÄenia zdieľania" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Chyba poÄas zmeny oprávnení" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Zdieľané s vami a so skupinou" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Zdieľané s vami a so skupinou {group} používateľom {owner}" -#: js/share.js:130 -msgid "by" -msgstr "od" - -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Zdieľané s vami od" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Zdieľané s vami používateľom {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "ZdieľaÅ¥ s" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "ZdieľaÅ¥ cez odkaz" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "ChrániÅ¥ heslom" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Heslo" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "NastaviÅ¥ dátum expirácie" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "Dátum expirácie" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "ZdieľaÅ¥ cez e-mail:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Užívateľ nenájdený" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "s" +msgstr "Zdieľanie už zdieľanej položky nie je povolené" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Zdieľané v {item} s {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "ZruÅ¡iÅ¥ zdieľanie" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "môže upraviÅ¥" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "riadenie prístupu" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "vytvoriÅ¥" -#: js/share.js:291 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "aktualizácia" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "zmazaÅ¥" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "zdieľaÅ¥" -#: js/share.js:322 js/share.js:484 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" msgstr "Chránené heslom" -#: js/share.js:497 +#: js/share.js:533 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Chyba pri odstraňovaní dátumu vyprÅ¡ania platnosti" -#: js/share.js:509 +#: js/share.js:545 msgid "Error setting expiration date" -msgstr "" +msgstr "Chyba pri nastavení dátumu vyprÅ¡ania platnosti" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Obnovenie hesla pre ownCloud" @@ -231,18 +265,18 @@ msgstr "Použite nasledujúci odkaz pre obnovenie vášho hesla: {link}" #: lostpassword/templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "Odkaz pre obnovenie hesla obdržíte E-mailom." +msgstr "Odkaz pre obnovenie hesla obdržíte e-mailom." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Požiadané" +msgid "Reset email send." +msgstr "Obnovovací email bol odoslaný." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Prihlásenie zlyhalo!" +msgid "Request failed!" +msgstr "Požiadavka zlyhala!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Prihlasovacie meno" @@ -298,72 +332,187 @@ msgstr "Nenájdené" msgid "Edit categories" msgstr "Úprava kategórií" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "PridaÅ¥" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "BezpeÄnostné varovanie" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Nie je dostupný žiadny bezpeÄný generátor náhodných Äísel, prosím, povoľte rozšírenie OpenSSL v PHP." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Bez bezpeÄného generátora náhodných Äísel môže útoÄník predpovedaÅ¥ token pre obnovu hesla a prevziaÅ¥ kontrolu nad vaším kontom." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Váš prieÄinok s dátami a VaÅ¡e súbory sú pravdepodobne dostupné z internetu. .htaccess súbor dodávaný s inÅ¡taláciou ownCloud nespĺňa úlohu. Dôrazne Vám doporuÄujeme nakonfigurovaÅ¥ webserver takým spôsobom, aby dáta v prieÄinku neboli verejné, alebo presuňte dáta mimo Å¡truktúry prieÄinkov webservera." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "VytvoriÅ¥ administrátorský úÄet" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "PokroÄilé" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "PrieÄinok dát" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "NastaviÅ¥ databázu" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "bude použité" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Hostiteľ databázy" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Heslo databázy" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Meno databázy" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "Tabuľkový priestor databázy" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Server databázy" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "DokonÄiÅ¥ inÅ¡taláciu" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Nedeľa" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Pondelok" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Utorok" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Streda" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Å tvrtok" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Piatok" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Sobota" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Január" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Február" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Marec" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Apríl" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Máj" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Jún" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Júl" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "August" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Október" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "December" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "webové služby pod vaÅ¡ou kontrolou" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "OdhlásiÅ¥" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatické prihlásenie bolo zamietnuté!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "V nedávnej dobe ste nezmenili svoje heslo, Váš úÄet môže byÅ¥ kompromitovaný." + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Prosím, zmeňte svoje heslo pre opätovné zabezpeÄenie Vášho úÄtu" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Zabudli ste heslo?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "zapamätaÅ¥" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "PrihlásiÅ¥ sa" @@ -378,3 +527,17 @@ msgstr "späť" #: templates/part.pagenavi.php:20 msgid "next" msgstr "Äalej" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "BezpeÄnostné varovanie!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Prosím, overte svoje heslo.
            Z bezpeÄnostných dôvodov môžete byÅ¥ obÄas požiadaný o jeho opätovné zadanie." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Overenie" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index 471364ef5e6f37dd16ced65a7c0a75ec9806e463..d55899f3b3ed43513afd3455e29d3473cbf7c639 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/files.po @@ -6,13 +6,14 @@ # , 2012. # , 2012. # Roman Priesol , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 02:02+0200\n" -"PO-Revision-Date: 2012-10-01 08:38+0000\n" -"Last-Translator: martinb \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 16:18+0000\n" +"Last-Translator: martin \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,195 +26,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Nenastala žiadna chyba, súbor bol úspeÅ¡ne nahraný" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Nahraný súbor presiahol direktívu upload_max_filesize v php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Nahraný súbor predÄil konfiguraÄnú direktívu upload_max_filesize v súbore php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Nahrávaný súbor presiahol MAX_FILE_SIZE direktívu, ktorá bola Å¡pecifikovaná v HTML formulári" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Nahrávaný súbor bol iba ÄiastoÄne nahraný" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Žiaden súbor nebol nahraný" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Chýbajúci doÄasný prieÄinok" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Zápis na disk sa nepodaril" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Súbory" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "NezdielaÅ¥" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "OdstrániÅ¥" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "PremenovaÅ¥" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "už existuje" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} už existuje" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "nahradiÅ¥" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "pomôcÅ¥ s menom" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "zruÅ¡iÅ¥" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "zmenené" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "prepísaný {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "vrátiÅ¥" -#: js/filelist.js:241 -msgid "with" -msgstr "s" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "prepísaný {new_name} súborom {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "zdieľanie zruÅ¡ené pre {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "zdielané" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "zmazané {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "zmazané" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Nesprávne meno, '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nie sú povolené hodnoty." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "generujem ZIP-súbor, môže to chvíľu trvaÅ¥." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Nemôžem nahraÅ¥ súbor lebo je to prieÄinok alebo má 0 bajtov." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" -msgstr "Chyba nahrávania" +msgstr "Chyba odosielania" + +#: js/files.js:235 +msgid "Close" +msgstr "ZavrieÅ¥" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "ÄŒaká sa" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 súbor sa posiela " -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "súbory sa posielajú" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} súborov odosielaných" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." -msgstr "Nahrávanie zruÅ¡ené" +msgstr "Odosielanie zruÅ¡ené" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Opustenie stránky zruší práve prebiehajúce odosielanie súboru." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Chybný názov, \"/\" nie je povolené" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Nesprávne meno adresára. Použitie slova \"Shared\" (Zdieľané) je vyhradené službou ownCloud." -#: js/files.js:668 -msgid "files scanned" -msgstr "skontrolovaných súborov" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} súborov prehľadaných" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "chyba poÄas kontroly" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Meno" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "VeľkosÅ¥" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Upravené" -#: js/files.js:778 -msgid "folder" -msgstr "prieÄinok" - -#: js/files.js:780 -msgid "folders" -msgstr "prieÄinky" - -#: js/files.js:788 -msgid "file" -msgstr "súbor" - -#: js/files.js:790 -msgid "files" -msgstr "súbory" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "pred sekundami" - -#: js/files.js:835 -msgid "minute ago" -msgstr "pred minútou" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "pred minútami" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 prieÄinok" -#: js/files.js:839 -msgid "today" -msgstr "dnes" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} prieÄinkov" -#: js/files.js:840 -msgid "yesterday" -msgstr "vÄera" +#: js/files.js:824 +msgid "1 file" +msgstr "1 súbor" -#: js/files.js:841 -msgid "days ago" -msgstr "pred pár dňami" - -#: js/files.js:842 -msgid "last month" -msgstr "minulý mesiac" - -#: js/files.js:844 -msgid "months ago" -msgstr "pred mesiacmi" - -#: js/files.js:845 -msgid "last year" -msgstr "minulý rok" - -#: js/files.js:846 -msgid "years ago" -msgstr "pred rokmi" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} súborov" #: templates/admin.php:5 msgid "File handling" @@ -223,27 +195,27 @@ msgstr "Nastavenie správanie k súborom" msgid "Maximum upload size" msgstr "Maximálna veľkosÅ¥ odosielaného súboru" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "najväÄÅ¡ie možné:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Vyžadované pre sÅ¥ahovanie viacerých súborov a adresárov." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "PovoliÅ¥ sÅ¥ahovanie ZIP súborov" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 znamená neobmedzené" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "NajväÄÅ¡ia veľkosÅ¥ ZIP súborov" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "UložiÅ¥" @@ -251,52 +223,48 @@ msgstr "UložiÅ¥" msgid "New" msgstr "Nový" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Textový súbor" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "PrieÄinok" -#: templates/index.php:11 -msgid "From url" -msgstr "Z url" +#: templates/index.php:14 +msgid "From link" +msgstr "Z odkazu" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" -msgstr "NahraÅ¥" +msgstr "OdoslaÅ¥" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "ZruÅ¡iÅ¥ odosielanie" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Žiadny súbor. Nahrajte nieÄo!" -#: templates/index.php:50 -msgid "Share" -msgstr "ZdielaÅ¥" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "StiahnuÅ¥" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Odosielaný súbor je príliÅ¡ veľký" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "Súbory ktoré sa snažíte nahraÅ¥ presahujú maximálnu veľkosÅ¥ pre nahratie súborov na tento server." +msgstr "Súbory, ktoré sa snažíte nahraÅ¥, presahujú maximálnu veľkosÅ¥ pre nahratie súborov na tento server." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." -msgstr "Súbory sa práve prehľadávajú, prosím Äakajte." +msgstr "ÄŒakajte, súbory sú prehľadávané." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Práve prehliadané" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index 627d7e866fc3ad713fc5abc7f60c93b85b6b3555..81c509ecd5ba0ef39267fcdc0a91cf3b77faa568 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:04+0200\n" -"PO-Revision-Date: 2012-10-09 18:56+0000\n" +"POT-Creation-Date: 2012-10-16 23:37+0200\n" +"PO-Revision-Date: 2012-10-16 18:49+0000\n" "Last-Translator: martinb \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -25,7 +25,7 @@ msgstr "Prístup povolený" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Chyba pri konfigurácii úložiska Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" diff --git a/l10n/sk_SK/files_odfviewer.po b/l10n/sk_SK/files_odfviewer.po deleted file mode 100644 index b5e846e37f63cae7e879fc0a6632799abe12d879..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/sk_SK/files_pdfviewer.po b/l10n/sk_SK/files_pdfviewer.po deleted file mode 100644 index aee04e4ec7e3ac65cad8c53843e20573fbbceecd..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/sk_SK/files_texteditor.po b/l10n/sk_SK/files_texteditor.po deleted file mode 100644 index af94e6a125dd1ffeec84e4e40a23dac6347d2143..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/sk_SK/gallery.po b/l10n/sk_SK/gallery.po deleted file mode 100644 index 2f6336c77c636307581e7cad1413da0dc95c0229..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/gallery.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Roman Priesol , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.net/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "Obrázky" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "nastavenia" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Znovu oskenovaÅ¥" - -#: templates/index.php:17 -msgid "Stop" -msgstr "ZastaviÅ¥" - -#: templates/index.php:18 -msgid "Share" -msgstr "ZdielaÅ¥" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Späť" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Potvrdenie odstránenia" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Chcete odstrániÅ¥ album?" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "ZmeniÅ¥ meno albumu" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Nové meno albumu" diff --git a/l10n/sk_SK/lib.po b/l10n/sk_SK/lib.po index 1a98bd0de2add69f3a575940a30c50f71f39fa4a..ba1e859d9c919aaad3d7fea9ac0faca3065f10b3 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/lib.po @@ -4,13 +4,15 @@ # # Translators: # , 2012. +# Roman Priesol , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 11:28+0000\n" -"Last-Translator: martinb \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 16:27+0000\n" +"Last-Translator: martin \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +44,19 @@ msgstr "Aplikácie" msgid "Admin" msgstr "Správca" -#: files.php:309 +#: files.php:361 msgid "ZIP download is turned off." msgstr "SÅ¥ahovanie súborov ZIP je vypnuté." -#: files.php:310 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Súbory musia byÅ¥ nahrávané jeden za druhým." -#: files.php:310 files.php:335 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Späť na súbory" -#: files.php:334 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Zvolené súbory sú príliž veľké na vygenerovanie zip súboru." @@ -62,65 +64,92 @@ msgstr "Zvolené súbory sú príliž veľké na vygenerovanie zip súboru." msgid "Application is not enabled" msgstr "Aplikácia nie je zapnutá" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Chyba autentifikácie" #: json.php:51 msgid "Token expired. Please reload page." -msgstr "" +msgstr "Token vyprÅ¡al. Obnovte, prosím, stránku." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Súbory" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Text" -#: template.php:87 +#: search/provider/file.php:29 +msgid "Images" +msgstr "Obrázky" + +#: template.php:103 msgid "seconds ago" -msgstr "" +msgstr "pred sekundami" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "pred 1 minútou" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "pred %d minútami" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "Pred 1 hodinou" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "Pred %d hodinami." + +#: template.php:108 msgid "today" msgstr "dnes" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "vÄera" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "pred %d dňami" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "minulý mesiac" -#: template.php:96 -msgid "months ago" -msgstr "pred mesiacmi" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "Pred %d mesiacmi." -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "minulý rok" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "pred rokmi" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "" +msgstr "%s je dostupné. ZískaÅ¥ viac informácií" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "aktuálny" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "sledovanie aktualizácií je vypnuté" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Nemožno nájsÅ¥ danú kategóriu \"%s\"" diff --git a/l10n/sk_SK/media.po b/l10n/sk_SK/media.po deleted file mode 100644 index 1c692c89de739337a76a83c970e333d4ffaf4bb0..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Roman Priesol , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.net/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Hudba" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "PrehraÅ¥" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pauza" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Predchádzajúce" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "ÄŽalÅ¡ie" - -#: templates/music.php:7 -msgid "Mute" -msgstr "StlmiÅ¥" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Nahlas" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Znovu skenovaÅ¥ zbierku" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Umelec" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Názov" diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index 44fb0c7a548d4a3d3a0833d938bdfa3ba5514967..111c6ee3ec7ff8b17fbc757935f1bb9f18b58198 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/settings.po @@ -7,13 +7,14 @@ # , 2012. # Roman Priesol , 2012. # , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:05+0200\n" -"PO-Revision-Date: 2012-10-09 18:37+0000\n" -"Last-Translator: martinb \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: martin \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,70 +22,73 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Nie je možné nahraÅ¥ zoznam z App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Chyba pri autentifikácii" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Skupina už existuje" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Nie je možné pridaÅ¥ skupinu" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Nie je možné zapnúť aplikáciu." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email uložený" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Neplatný email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID zmenené" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Neplatná požiadavka" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "Nie je možné zmazaÅ¥ skupinu" +msgstr "Nie je možné odstrániÅ¥ skupinu" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Chyba pri autentifikácii" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "Nie je možné zmazaÅ¥ užívateľa" +msgstr "Nie je možné odstrániÅ¥ používateľa" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Jazyk zmenený" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Administrátori nesmú odstrániÅ¥ sami seba zo skupiny admin" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Nie je možné pridaÅ¥ užívateľa do skupiny %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "Nie je možné zmazaÅ¥ užívateľa zo skupiny %s" +msgstr "Nie je možné odstrániÅ¥ používateľa zo skupiny %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "ZakázaÅ¥" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "PovoliÅ¥" @@ -92,97 +96,10 @@ msgstr "PovoliÅ¥" msgid "Saving..." msgstr "Ukladám..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Slovensky" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "BezpeÄnostné varovanie" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "VykonaÅ¥ jednu úlohu každým nahraním stránky" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "PoužívaÅ¥ systémovú službu cron. Každú minútu bude spustený súbor cron.php v prieÄinku owncloud pomocou systémového programu cronjob." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Zdieľanie" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Zapnúť API zdieľania" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "PovoliÅ¥ aplikáciam používaÅ¥ API pre zdieľanie" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "PovoliÅ¥ odkazy" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "PovoliÅ¥ užívateľom zdieľaÅ¥ obsah pomocou verejných odkazov" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "PovoliÅ¥ opakované zdieľanie" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "PovoliÅ¥ zdieľanie zdielaného obsahu iného užívateľa" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "PovoliÅ¥ užívateľom zdieľaÅ¥ s každým" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "PovoliÅ¥ užívateľom zdieľanie iba s užívateľmi ich vlastnej skupiny" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Záznam" - -#: templates/admin.php:116 -msgid "More" -msgstr "Viac" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "PridaÅ¥ vaÅ¡u aplikáciu" @@ -197,7 +114,7 @@ msgstr "Vyberte aplikáciu" #: templates/apps.php:31 msgid "See application page at apps.owncloud.com" -msgstr "Pozrite si stránku aplikácie na apps.owncloud.com" +msgstr "Pozrite si stránku aplikácií na apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " @@ -209,28 +126,28 @@ msgstr "Dokumentácia" #: templates/help.php:10 msgid "Managing Big Files" -msgstr "Spravovanie veľké súbory" +msgstr "Správa veľkých súborov" #: templates/help.php:11 msgid "Ask a question" -msgstr "Opýtajte sa otázku" +msgstr "OpýtaÅ¥ sa otázku" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." -msgstr "Problémy spojené s pomocnou databázou." +msgstr "Problémy s pripojením na databázu pomocníka." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "PrejsÅ¥ tam ruÄne." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "OdpoveÄ" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Použili ste %s dostupného %s" +msgid "You have used %s of the available %s" +msgstr "Použili ste %s z %s dostupných " #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -246,7 +163,7 @@ msgstr "Heslo bolo zmenené" #: templates/personal.php:20 msgid "Unable to change your password" -msgstr "Nedokážem zmeniÅ¥ vaÅ¡e heslo" +msgstr "Nie je možné zmeniÅ¥ vaÅ¡e heslo" #: templates/personal.php:21 msgid "Current password" @@ -288,6 +205,16 @@ msgstr "PomôcÅ¥ s prekladom" msgid "use this address to connect to your ownCloud in your file manager" msgstr "použite túto adresu pre spojenie s vaším ownCloud v správcovi súborov" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Vyvinuté komunitou ownCloud,zdrojový kód je licencovaný pod AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Meno" diff --git a/l10n/sk_SK/tasks.po b/l10n/sk_SK/tasks.po deleted file mode 100644 index 2ea079cbf6967e9ba8b4e9c6857fb6e96bad5400..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/sk_SK/user_ldap.po b/l10n/sk_SK/user_ldap.po index b0cc8b5a602aea98298a619a32ff1d87713d15a1..b11bc381cc683d6e26aec31a579e8635c94e021a 100644 --- a/l10n/sk_SK/user_ldap.po +++ b/l10n/sk_SK/user_ldap.po @@ -3,168 +3,169 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Roman Priesol , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-26 02:02+0200\n" +"PO-Revision-Date: 2012-10-25 19:25+0000\n" +"Last-Translator: Roman Priesol \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: templates/settings.php:8 msgid "Host" -msgstr "" +msgstr "Hostiteľ" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "Môžete vynechaÅ¥ protokol, s výnimkou požadovania SSL. Vtedy zaÄnite s ldaps://" #: templates/settings.php:9 msgid "Base DN" -msgstr "" +msgstr "Základné DN" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" +msgstr "V rozšírenom nastavení môžete zadaÅ¥ základné DN pre používateľov a skupiny" #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "Používateľské DN" #: templates/settings.php:10 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "DN klientského používateľa, ku ktorému tvoríte väzbu, napr. uid=agent,dc=example,dc=com. Pre anonymný prístup ponechajte údaje DN a Heslo prázdne." #: templates/settings.php:11 msgid "Password" -msgstr "" +msgstr "Heslo" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "Pre anonymný prístup ponechajte údaje DN a Heslo prázdne." #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "Filter prihlásenia používateľov" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "UrÄuje použitý filter, pri pokuse o prihlásenie. %%uid nahradzuje používateľské meno v Äinnosti prihlásenia." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "použite zástupný vzor %%uid, napr. \\\"uid=%%uid\\\"" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "Filter zoznamov používateľov" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "Definuje použitý filter, pre získanie používateľov." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "" +msgstr "bez zástupných znakov, napr. \"objectClass=person\"" #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "Filter skupiny" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "Definuje použitý filter, pre získanie skupín." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "" +msgstr "bez zástupných znakov, napr. \"objectClass=posixGroup\"" #: templates/settings.php:17 msgid "Port" -msgstr "" +msgstr "Port" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "Základný používateľský strom" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "Základný skupinový strom" #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "Asociácia Älena skupiny" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "Použi TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "Nepoužívajte pre pripojenie SSL, pripojenie zlyhá." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "LDAP server nerozliÅ¡uje veľkosÅ¥ znakov (Windows)" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "Vypnúť overovanie SSL certifikátu." #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Ak pripojenie pracuje len s touto možnosÅ¥ou, tak importujte SSL certifikát LDAP serveru do vášho servera ownCloud." #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "Nie je doporuÄované, len pre testovacie úÄely." #: templates/settings.php:24 msgid "User Display Name Field" -msgstr "" +msgstr "Pole pre zobrazenia mena používateľa" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "Atribút LDAP použitý na vygenerovanie mena používateľa ownCloud " #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "Pole pre zobrazenie mena skupiny" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "Atribút LDAP použitý na vygenerovanie mena skupiny ownCloud " #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "v bajtoch" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." -msgstr "" +msgstr "v sekundách. Zmena vyprázdni vyrovnávaciu pamäť." #: templates/settings.php:30 msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "" +msgstr "Nechajte prázdne pre používateľské meno (predvolené). Inak uveÄte atribút LDAP/AD." #: templates/settings.php:32 msgid "Help" -msgstr "" +msgstr "Pomoc" diff --git a/l10n/sk_SK/user_migrate.po b/l10n/sk_SK/user_migrate.po deleted file mode 100644 index 49ca2414b0df446ca0e18f78de6a2ffc524e8688..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/sk_SK/user_openid.po b/l10n/sk_SK/user_openid.po deleted file mode 100644 index 56440f66cc3e14d8e031346c2a293a7313f5b68e..0000000000000000000000000000000000000000 --- a/l10n/sk_SK/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/sk_SK/impress.po b/l10n/sk_SK/user_webdavauth.po similarity index 66% rename from l10n/sk_SK/impress.po rename to l10n/sk_SK/user_webdavauth.po index 940f3f6325b23d7d51c2de307edabc0f90c4021e..d38bbf56f036dc4740a2217b932528671c500fd1 100644 --- a/l10n/sk_SK/impress.po +++ b/l10n/sk_SK/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 16:41+0000\n" +"Last-Translator: martin \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk_SK\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/sl/admin_dependencies_chk.po b/l10n/sl/admin_dependencies_chk.po deleted file mode 100644 index f60a8e1d14f891a8dc6cf75956719c0588ed3e6f..0000000000000000000000000000000000000000 --- a/l10n/sl/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Peter PeroÅ¡a , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-17 00:44+0200\n" -"PO-Revision-Date: 2012-08-16 20:55+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Modul php-json je potreben za medsebojno komunikacijo veliko aplikacij." - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Modul php-curl je potreben za pridobivanje naslova strani pri dodajanju zaznamkov." - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Modul php-gd je potreben za ustvarjanje sliÄic za predogled." - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Modul php-ldap je potreben za povezavo z vaÅ¡im ldap strežnikom." - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Modul php-zip je potreben za prenaÅ¡anje veÄih datotek hkrati." - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Modul php-mb_multibyte je potreben za pravilno upravljanje kodiranja." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Modul php-ctype je potreben za preverjanje veljavnosti podatkov." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Modul php-xml je potreben za izmenjavo datotek preko protokola WebDAV." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Direktiva allow_url_fopen v vaÅ¡i php.ini datoteki mora biti nastavljena na 1, Äe želite omogoÄiti dostop do zbirke znanja na strežnikih OCS." - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Modul php-pdo je potreben za shranjevanje ownCloud podatkov v podatkovno zbirko." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Stanje odvisnosti" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Uporablja:" diff --git a/l10n/sl/admin_migrate.po b/l10n/sl/admin_migrate.po deleted file mode 100644 index 5a600890b7152f97657c1e8006e41210e58effaa..0000000000000000000000000000000000000000 --- a/l10n/sl/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Peter PeroÅ¡a , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 00:17+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Izvozi to ownCloud namestitev" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Ustvarjena bo stisnjena datoteka s podatki te ownCloud namestitve.\n Prosimo, Äe izberete vrsto izvoza:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Izvozi" diff --git a/l10n/sl/bookmarks.po b/l10n/sl/bookmarks.po deleted file mode 100644 index 7a522308d46266c6b1dd9d38968a4b037cf1b23e..0000000000000000000000000000000000000000 --- a/l10n/sl/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Peter PeroÅ¡a , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-29 02:03+0200\n" -"PO-Revision-Date: 2012-07-28 02:18+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Zaznamki" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "neimenovano" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Povlecite to povezavo med zaznamke v vaÅ¡em brskalniku in jo, ko želite ustvariti zaznamek trenutne strani, preprosto kliknite:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Preberi kasneje" - -#: templates/list.php:13 -msgid "Address" -msgstr "Naslov" - -#: templates/list.php:14 -msgid "Title" -msgstr "Ime" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Oznake" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Shrani zaznamek" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Nimate zaznamkov" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Bookmarklet
            " diff --git a/l10n/sl/calendar.po b/l10n/sl/calendar.po deleted file mode 100644 index 8d2ba48009e4c886b4a70584dd8f50161b7e43b9..0000000000000000000000000000000000000000 --- a/l10n/sl/calendar.po +++ /dev/null @@ -1,817 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# Peter PeroÅ¡a , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 13:25+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Vsi koledarji niso povsem predpomnjeni" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Izgleda, da je vse v predpomnilniku" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Ni bilo najdenih koledarjev." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Ni bilo najdenih dogodkov." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "NapaÄen koledar" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Datoteka ni vsebovala dogodkov ali pa so vsi dogodki že shranjeni v koledarju." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "dogodki so bili shranjeni v nov koledar" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Uvoz je spodletel" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "dogodki so bili shranjeni v vaÅ¡ koledar" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Nov Äasovni pas:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ÄŒasovni pas je bil spremenjen" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Neveljaven zahtevek" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Koledar" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Rojstni dan" - -#: lib/app.php:122 -msgid "Business" -msgstr "Poslovno" - -#: lib/app.php:123 -msgid "Call" -msgstr "PokliÄi" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Stranke" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Dobavitelj" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Dopust" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideje" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Potovanje" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Obletnica" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Sestanek" - -#: lib/app.php:131 -msgid "Other" -msgstr "Ostalo" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Osebno" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekt" - -#: lib/app.php:134 -msgid "Questions" -msgstr "VpraÅ¡anja" - -#: lib/app.php:135 -msgid "Work" -msgstr "Delo" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "od" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "neimenovan" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Nov koledar" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Se ne ponavlja" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Dnevno" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Tedensko" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Vsak dan v tednu" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Dvakrat tedensko" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "MeseÄno" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Letno" - -#: lib/object.php:388 -msgid "never" -msgstr "nikoli" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "po Å¡tevilu dogodkov" - -#: lib/object.php:390 -msgid "by date" -msgstr "po datumu" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "po dnevu v mesecu" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "po dnevu v tednu" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "ponedeljek" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "torek" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "sreda" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Äetrtek" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "petek" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "sobota" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "nedelja" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "dogodki tedna v mesecu" - -#: lib/object.php:428 -msgid "first" -msgstr "prvi" - -#: lib/object.php:429 -msgid "second" -msgstr "drugi" - -#: lib/object.php:430 -msgid "third" -msgstr "tretji" - -#: lib/object.php:431 -msgid "fourth" -msgstr "Äetrti" - -#: lib/object.php:432 -msgid "fifth" -msgstr "peti" - -#: lib/object.php:433 -msgid "last" -msgstr "zadnji" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "januar" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "februar" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "marec" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "april" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "maj" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "junij" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "julij" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "avgust" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "september" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "november" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "december" - -#: lib/object.php:488 -msgid "by events date" -msgstr "po datumu dogodka" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "po Å¡tevilu let" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "po tednu v letu" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "po dnevu in mesecu" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Datum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kol." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "ned." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "pon." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "tor." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "sre." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Äet." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "pet." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "sob." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "apr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "maj" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "avg." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "okt." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "dec." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Cel dan" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "MankajoÄa polja" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Naslov" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "od Datum" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "od ÄŒas" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "do Datum" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "do ÄŒas" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Dogodek se konÄa preden se zaÄne" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Napaka v podatkovni zbirki" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Teden" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mesec" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Seznam" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Danes" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "Nastavitve" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "VaÅ¡i koledarji" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav povezava" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Koledarji v souporabi" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Ni koledarjev v souporabi" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Daj koledar v souporabo" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Prenesi" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Uredi" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "IzbriÅ¡i" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "z vami souporablja" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nov koledar" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Uredi koledar" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Ime za prikaz" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktivno" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Barva koledarja" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Shrani" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Potrdi" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "PrekliÄi" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Uredi dogodek" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Izvozi" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Informacije od dogodku" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Ponavljanja" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Udeleženci" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Souporaba" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Naslov dogodka" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorija" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Kategorije loÄite z vejico" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Uredi kategorije" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Celodnevni dogodek" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Od" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Do" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Napredne možnosti" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Kraj" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Kraj dogodka" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Opis" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Opis dogodka" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ponovi" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Napredno" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Izberite dneve v tednu" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Izberite dneve" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "in dnevu dogodka v letu." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "in dnevu dogodka v mesecu." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Izberite mesece" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Izberite tedne" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "in tednu dogodka v letu." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "ÄŒasovni razmik" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Konec" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "ponovitev" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Ustvari nov koledar" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Uvozi datoteko koledarja" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Prosimo, Äe izberete koledar" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Ime novega koledarja" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Izberite prosto ime!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Koledar s tem imenom že obstaja. ÄŒe nadaljujete, bosta koledarja združena." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Uvozi" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Zapri dialog" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Ustvari nov dogodek" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Poglej dogodek" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Nobena kategorija ni izbrana" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "od" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "pri" - -#: templates/settings.php:10 -msgid "General" -msgstr "SploÅ¡no" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ÄŒasovni pas" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "Samodejno posodobi Äasovni pas" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "Oblika zapisa Äasa" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24ur" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12ur" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "ZaÄni teden z" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Predpomnilnik" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "PoÄisti predpomnilnik za ponavljajoÄe dogodke" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URLji" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "CalDAV naslov za usklajevanje koledarjev" - -#: templates/settings.php:87 -msgid "more info" -msgstr "dodatne informacije" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Glavni naslov (Kontakt et al)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "iCalendar povezava/e samo za branje" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Uporabniki" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "izberite uporabnike" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Možno urejanje" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Skupine" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "izberite skupine" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "objavi" diff --git a/l10n/sl/contacts.po b/l10n/sl/contacts.po deleted file mode 100644 index a31210ca6e1f190f0cbc0fac4cca52f5378f272a..0000000000000000000000000000000000000000 --- a/l10n/sl/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Peter PeroÅ¡a , 2012. -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 09:09+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Napaka med (de)aktivacijo imenika." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id ni nastavljen." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Ne morem posodobiti imenika s praznim imenom." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Napaka pri posodabljanju imenika." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "ID ni bil podan" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Napaka pri nastavljanju nadzorne vsote." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Nobena kategorija ni bila izbrana za izbris." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Ni bilo najdenih imenikov." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Ni bilo najdenih stikov." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Med dodajanjem stika je priÅ¡lo do napake" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "ime elementa ni nastavljeno." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Ne morem razÄleniti stika:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Ne morem dodati prazne lastnosti." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Vsaj eno izmed polj je Å¡e potrebno izpolniti." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "PoskuÅ¡am dodati podvojeno lastnost:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "ManjkajoÄ IM parameter." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "Neznan IM:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Informacije o vCard niso pravilne. Prosimo, Äe ponovno naložite stran." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ManjkajoÄ ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Napaka pri razÄlenjevanju VCard za ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "nadzorna vsota ni nastavljena." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informacija o vCard je napaÄna. Prosimo, Äe ponovno naložite stran: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Nekaj je Å¡lo v franže. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "ID stika ni bil poslan." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Napaka pri branju slike stika." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Napaka pri shranjevanju zaÄasne datoteke." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Slika, ki se nalaga ni veljavna." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Manjka ID stika." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Pot slike ni bila poslana." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Datoteka ne obstaja:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Napaka pri nalaganju slike." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Napaka pri pridobivanju kontakta predmeta." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Napaka pri pridobivanju lastnosti fotografije." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Napaka pri shranjevanju stika." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Napaka pri spreminjanju velikosti slike" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Napaka pri obrezovanju slike" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Napaka pri ustvarjanju zaÄasne slike" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Napaka pri iskanju datoteke: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Napaka pri nalaganju stikov v hrambo." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Datoteka je bila uspeÅ¡no naložena." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Naložena datoteka presega velikost, ki jo doloÄa parameter upload_max_filesize v datoteki php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Naložena datoteka presega velikost, ki jo doloÄa parameter MAX_FILE_SIZE v HTML obrazcu" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Datoteka je bila le delno naložena" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Nobena datoteka ni bila naložena" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Manjka zaÄasna mapa" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "ZaÄasne slike ni bilo mogoÄe shraniti: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "ZaÄasne slike ni bilo mogoÄe naložiti: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Nobena datoteka ni bila naložena. Neznana napaka" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Stiki" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Žal ta funkcionalnost Å¡e ni podprta" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Ni podprto" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Ne morem dobiti veljavnega naslova." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Napaka" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "Nimate dovoljenja za dodajanje stikov v" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Prosimo, Äe izberete enega izmed vaÅ¡ih adresarjev." - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Napaka dovoljenj" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Ta lastnost ne sme biti prazna" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Predmetov ni bilo mogoÄe dati v zaporedje." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "\"deleteProperty\" je bila klicana brez vrste argumenta. Prosimo, Äe oddate poroÄilo o napaki na bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Uredi ime" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Nobena datoteka ni bila izbrana za nalaganje." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Datoteka, ki jo poskuÅ¡ate naložiti, presega najveÄjo dovoljeno velikost za nalaganje na tem strežniku." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Napaka pri nalaganju slike profila." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Izberite vrsto" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Nekateri stiki so oznaÄeni za izbris, vendar Å¡e niso izbrisani. Prosimo, Äe poÄakate na njihov izbris." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Ali želite združiti adresarje?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Rezultati: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " uvoženih, " - -#: js/loader.js:49 -msgid " failed." -msgstr " je spodletelo." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Ime za prikaz ne more biti prazno." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Adresar ni bil najden:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "To ni vaÅ¡ imenik." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Stika ni bilo mogoÄe najti." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Delo" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Doma" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Drugo" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobilni telefon" - -#: lib/app.php:203 -msgid "Text" -msgstr "Besedilo" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Glas" - -#: lib/app.php:205 -msgid "Message" -msgstr "SporoÄilo" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faks" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pozivnik" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Rojstni dan" - -#: lib/app.php:253 -msgid "Business" -msgstr "Poslovno" - -#: lib/app.php:254 -msgid "Call" -msgstr "Klic" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Stranka" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Dostavljalec" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Prazniki" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Ideje" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Potovanje" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubilej" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Sestanek" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Osebno" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projekti" - -#: lib/app.php:265 -msgid "Questions" -msgstr "VpraÅ¡anja" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} - rojstni dan" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Stik" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "Nimate dovoljenj za urejanje tega stika." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "Nimate dovoljenj za izbris tega stika." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Dodaj stik" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Uvozi" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Nastavitve" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Imeniki" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Zapri" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Bližnjice na tipkovnici" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Krmarjenje" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Naslednji stik na seznamu" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Predhodni stik na seznamu" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "RazÅ¡iri/skrÄi trenutni adresar" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Naslednji adresar" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "Predhodni adresar" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Dejanja" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Osveži seznam stikov" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Dodaj nov stik" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Dodaj nov adresar" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "IzbriÅ¡i trenutni stik" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Spustite sliko tukaj, da bi jo naložili" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "IzbriÅ¡i trenutno sliko" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Uredi trenutno sliko" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Naloži novo sliko" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Izberi sliko iz ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Format po meri, Kratko ime, Polno ime, Obratno ali Obratno z vejico" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Uredite podrobnosti imena" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizacija" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "IzbriÅ¡i" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Vzdevek" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Vnesite vzdevek" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Spletna stran" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.nekastran.si" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Pojdi na spletno stran" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd. mm. yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Skupine" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Skupine loÄite z vejicami" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Uredi skupine" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Prednosten" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Prosimo, Äe navedete veljaven e-poÅ¡tni naslov." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Vnesite e-poÅ¡tni naslov" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "E-poÅ¡ta naslovnika" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "IzbriÅ¡i e-poÅ¡tni naslov" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "VpiÅ¡i telefonsko Å¡tevilko" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "IzbriÅ¡i telefonsko Å¡tevilko" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "TakojÅ¡ni sporoÄilnik" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "IzbriÅ¡i IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Prikaz na zemljevidu" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Uredi podrobnosti" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Opombe dodajte tukaj." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Dodaj polje" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-poÅ¡ta" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Neposredno sporoÄanje" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Naslov" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Opomba" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Prenesi stik" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "IzbriÅ¡i stik" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "ZaÄasna slika je bila odstranjena iz predpomnilnika." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Uredi naslov" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Vrsta" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "PoÅ¡tni predal" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "UliÄni naslov" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Ulica in Å¡telika" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "RazÅ¡irjeno" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Å tevilka stanovanja itd." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Mesto" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regija" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Npr. dežela ali pokrajina" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "PoÅ¡tna Å¡t." - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "PoÅ¡tna Å¡tevilka" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Dežela" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Imenik" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Predpone" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "gdÄ." - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "ga." - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "g." - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "g." - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "ga." - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "dr." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Ime" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Dodatna imena" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Priimek" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Pripone" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "univ. dipl. prav." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "dr. med." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "dr. med., spec. spl. med." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "dr. med., spec. kiropraktike" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "dr." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "mlajÅ¡i" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "starejÅ¡i" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Uvozi datoteko s stiki" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Prosimo, Äe izberete imenik" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Ustvari nov imenik" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Ime novega imenika" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Uvažam stike" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "V vaÅ¡em imeniku ni stikov." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Dodaj stik" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Izberite adresarje" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Vnesite ime" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Vnesite opis" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV naslovi za sinhronizacijo" - -#: templates/settings.php:3 -msgid "more info" -msgstr "veÄ informacij" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Primarni naslov (za kontakt et al)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Pokaži CardDav povezavo" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Pokaži VCF povezavo samo za branje" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Souporaba" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Prenesi" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Uredi" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Nov imenik" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Ime" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Opis" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Shrani" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "PrekliÄi" - -#: templates/settings.php:52 -msgid "More..." -msgstr "VeÄ..." diff --git a/l10n/sl/core.po b/l10n/sl/core.po index 278ba738e13f6314622f4fb9a4334c106b778889..105221ef81989a6f33808877df2155a6e0aa37da 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/core.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # , 2012. # Peter PeroÅ¡a , 2012. # , 2012. @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-20 00:01+0100\n" +"PO-Revision-Date: 2012-11-19 19:48+0000\n" +"Last-Translator: Peter PeroÅ¡a \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,239 +21,272 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Ime aplikacije ni bilo doloÄeno." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Vrsta kategorije ni podana." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ni kategorije za dodajanje?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Ta kategorija že obstaja:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Vrsta predmeta ni podana." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID ni podan." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Napaka pri dodajanju %s med priljubljene." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Za izbris ni izbrana nobena kategorija." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Napaka pri odstranjevanju %s iz priljubljenih." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Nastavitve" -#: js/js.js:645 -msgid "January" -msgstr "januar" +#: js/js.js:704 +msgid "seconds ago" +msgstr "pred nekaj sekundami" -#: js/js.js:645 -msgid "February" -msgstr "februar" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "pred minuto" -#: js/js.js:645 -msgid "March" -msgstr "marec" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "pred {minutes} minutami" -#: js/js.js:645 -msgid "April" -msgstr "april" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "pred 1 uro" -#: js/js.js:645 -msgid "May" -msgstr "maj" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "pred {hours} urami" -#: js/js.js:645 -msgid "June" -msgstr "junij" +#: js/js.js:709 +msgid "today" +msgstr "danes" -#: js/js.js:646 -msgid "July" -msgstr "julij" +#: js/js.js:710 +msgid "yesterday" +msgstr "vÄeraj" -#: js/js.js:646 -msgid "August" -msgstr "avgust" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "pred {days} dnevi" -#: js/js.js:646 -msgid "September" -msgstr "september" +#: js/js.js:712 +msgid "last month" +msgstr "zadnji mesec" -#: js/js.js:646 -msgid "October" -msgstr "oktober" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "pred {months} meseci" -#: js/js.js:646 -msgid "November" -msgstr "november" +#: js/js.js:714 +msgid "months ago" +msgstr "mesecev nazaj" -#: js/js.js:646 -msgid "December" -msgstr "december" +#: js/js.js:715 +msgid "last year" +msgstr "lansko leto" + +#: js/js.js:716 +msgid "years ago" +msgstr "let nazaj" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Izbor" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "PrekliÄi" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Ne" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Da" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "V redu" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Za izbris ni bila izbrana nobena kategorija." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Vrsta predmeta ni podana." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Napaka" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Ime aplikacije ni podano." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Zahtevana datoteka {file} ni nameÅ¡Äena!" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "Napaka med souporabo" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "Napaka med odstranjevanjem souporabe" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" - -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +msgstr "Napaka med spreminjanjem dovoljenj" -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "V souporabi z vami in skupino {group}. Lastnik je {owner}." -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "V souporabi z vami. Lastnik je {owner}." -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "OmogoÄi souporabo z" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "OmogoÄi souporabo s povezavo" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "ZaÅ¡Äiti z geslom" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Geslo" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Nastavi datum preteka" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Datum preteka" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Souporaba preko elektronske poÅ¡te:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Ni najdenih uporabnikov" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Ponovna souporaba ni omogoÄena" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "V souporabi v {item} z {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Odstrani souporabo" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "lahko ureja" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "nadzor dostopa" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "ustvari" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "posodobi" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "izbriÅ¡e" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "doloÄi souporabo" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "ZaÅ¡Äiteno z geslom" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Napaka brisanja datuma preteka" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" -msgstr "" +msgstr "Napaka med nastavljanjem datuma preteka" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Ponastavitev gesla ownCloud" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" -msgstr "Uporabite sledeÄo povezavo za ponastavitev gesla: {link}" +msgstr "Uporabite naslednjo povezavo za ponastavitev gesla: {link}" #: lostpassword/templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "Na e-poÅ¡to boste prejeli povezavo s katero lahko ponastavite vaÅ¡e geslo." +msgstr "Na elektronski naslov boste prejeli povezavo za ponovno nastavitev gesla." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Zahtevano" +msgid "Reset email send." +msgstr "E-poÅ¡ta za ponastavitev je bila poslana." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Prijava je spodletela!" +msgid "Request failed!" +msgstr "Zahtevek je spodletel!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "UporabniÅ¡ko Ime" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Zahtevaj ponastavitev" #: lostpassword/templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "VaÅ¡e geslo je bilo ponastavljeno" +msgstr "Geslo je ponastavljeno" #: lostpassword/templates/resetpassword.php:5 msgid "To login page" @@ -276,11 +310,11 @@ msgstr "Uporabniki" #: strings.php:7 msgid "Apps" -msgstr "Aplikacije" +msgstr "Programi" #: strings.php:8 msgid "Admin" -msgstr "Admin" +msgstr "SkrbniÅ¡tvo" #: strings.php:9 msgid "Help" @@ -292,84 +326,199 @@ msgstr "Dostop je prepovedan" #: templates/404.php:12 msgid "Cloud not found" -msgstr "Oblak ni bil najden" +msgstr "Oblaka ni mogoÄe najti" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" msgstr "Uredi kategorije" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Dodaj" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Varnostno opozorilo" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Na voljo ni varnega generatorja nakljuÄnih Å¡tevil. Prosimo, Äe omogoÄite PHP OpenSSL razÅ¡iritev." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Brez varnega generatorja nakljuÄnih Å¡tevil lahko napadalec napove žetone za ponastavitev gesla, kar mu omogoÄa, da prevzame vaÅ¡ ​​raÄun." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Trenutno je dostop do podatkovne mape in datotek najverjetneje omogoÄen vsem uporabnikom na omrežju. Datoteka .htaccess, vkljuÄena v ownCloud namreÄ ni omogoÄena. MoÄno priporoÄamo nastavitev spletnega strežnika tako, da mapa podatkov ne bo javno dostopna ali pa, da jo prestavite ven iz korenske mape spletnega strežnika." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Ustvari skrbniÅ¡ki raÄun" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Napredne možnosti" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Mapa s podatki" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Nastavi podatkovno zbirko" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "bo uporabljen" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Uporabnik zbirke" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Geslo podatkovne zbirke" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Ime podatkovne zbirke" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Razpredelnica podatkovne zbirke" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Gostitelj podatkovne zbirke" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "DokonÄaj namestitev" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "nedelja" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "ponedeljek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "torek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "sreda" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Äetrtek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "petek" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "sobota" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "januar" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "februar" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "marec" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "april" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "maj" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "junij" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "julij" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "avgust" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "september" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "oktober" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "november" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "december" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "spletne storitve pod vaÅ¡im nadzorom" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Odjava" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Samodejno prijavljanje je zavrnjeno!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "ÄŒe vaÅ¡ega gesla niste nedavno spremenili, je vaÅ¡ raÄun lahko ogrožen!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Spremenite geslo za izboljÅ¡anje zaÅ¡Äite raÄuna." + +#: templates/login.php:15 msgid "Lost your password?" -msgstr "Ste pozabili vaÅ¡e geslo?" +msgstr "Ali ste pozabili geslo?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "Zapomni si me" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Prijava" #: templates/logout.php:1 msgid "You are logged out." -msgstr "Odjavljeni ste" +msgstr "Sta odjavljeni." #: templates/part.pagenavi.php:3 msgid "prev" @@ -378,3 +527,17 @@ msgstr "nazaj" #: templates/part.pagenavi.php:20 msgid "next" msgstr "naprej" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Varnostno opozorilo!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Prosimo, Äe preverite vaÅ¡e geslo. Iz varnostnih razlogov vas lahko obÄasno prosimo, da ga ponovno vnesete." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Preveri" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 5332d836f24f2644420016d58946dc303c359949..7b4024e2317a807e8130de0bd4bd87258e1cccc0 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/files.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # , 2012. # Peter PeroÅ¡a , 2012. # , 2012. @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,228 +23,199 @@ msgstr "" #: ajax/upload.php:20 msgid "There is no error, the file uploaded with success" -msgstr "Datoteka je bila uspeÅ¡no naložena." +msgstr "Datoteka je uspeÅ¡no naložena brez napak." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Naložena datoteka presega velikost, ki jo doloÄa parameter upload_max_filesize v datoteki php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Naložena datoteka presega velikost, ki jo doloÄa parameter MAX_FILE_SIZE v HTML obrazcu" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" -msgstr "Datoteka je bila le delno naložena" +msgstr "Datoteka je le delno naložena" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nobena datoteka ni bila naložena" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Manjka zaÄasna mapa" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Pisanje na disk je spodletelo" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Datoteke" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Odstrani iz souporabe" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "IzbriÅ¡i" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Preimenuj" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "že obstaja" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} že obstaja" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" -msgstr "nadomesti" +msgstr "zamenjaj" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "predlagaj ime" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" -msgstr "ekliÄi" +msgstr "prekliÄi" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "nadomeÅ¡Äen" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "zamenjano je ime {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "razveljavi" -#: js/filelist.js:241 -msgid "with" -msgstr "z" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "zamenjano ime {new_name} z imenom {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "odstranjeno iz souporabe" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "odstranjeno iz souporabe {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "izbrisano" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "izbrisano {files}" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Neveljavno ime, znaki '\\', '/', '<', '>', ':', '\"', '|', '?' in '*' niso dovoljeni." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." -msgstr "Ustvarjam ZIP datoteko. To lahko traja nekaj Äasa." +msgstr "Ustvarjanje datoteke ZIP. To lahko traja nekaj Äasa." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "Nalaganje ni mogoÄe, saj gre za mapo, ali pa ima datoteka velikost 0 bajtov." +msgstr "PoÅ¡iljanje ni mogoÄe, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" -msgstr "Napaka pri nalaganju" +msgstr "Napaka med nalaganjem" + +#: js/files.js:235 +msgid "Close" +msgstr "Zapri" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" -msgstr "Na Äakanju" +msgstr "V Äakanju ..." -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "PoÅ¡iljanje 1 datoteke" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "nalagam {count} datotek" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." -msgstr "Nalaganje je bilo preklicano." +msgstr "PoÅ¡iljanje je preklicano." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "Nalaganje datoteke je v teku. ÄŒe zapustite to stran zdaj, boste nalaganje preklicali." +msgstr "V teku je poÅ¡iljanje datoteke. ÄŒe zapustite to stran zdaj, bo poÅ¡iljanje preklicano." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Neveljavno ime. Znak '/' ni dovoljen." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Neveljavno ime datoteke. Uporaba mape \"Share\" je rezervirana za ownCloud." -#: js/files.js:667 -msgid "files scanned" -msgstr "pregledanih datotek" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} files scanned" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "napaka med pregledovanjem datotek" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Ime" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Velikost" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Spremenjeno" -#: js/files.js:777 -msgid "folder" -msgstr "mapa" - -#: js/files.js:779 -msgid "folders" -msgstr "mape" - -#: js/files.js:787 -msgid "file" -msgstr "datoteka" - -#: js/files.js:789 -msgid "files" -msgstr "datoteke" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 mapa" -#: js/files.js:840 -msgid "days ago" -msgstr "" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} map" -#: js/files.js:841 -msgid "last month" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 datoteka" -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} datotek" #: templates/admin.php:5 msgid "File handling" -msgstr "Rokovanje z datotekami" +msgstr "Upravljanje z datotekami" #: templates/admin.php:7 msgid "Maximum upload size" -msgstr "NajveÄja velikost za nalaganje" +msgstr "NajveÄja velikost za poÅ¡iljanja" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "najveÄ mogoÄe:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." -msgstr "Potrebno za prenose veÄih datotek in map." +msgstr "Uporabljeno za prenos veÄ datotek in map." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" -msgstr "OmogoÄi ZIP-prejemanje" +msgstr "OmogoÄi prejemanje arhivov ZIP" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 je neskonÄno" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" -msgstr "NajveÄja vhodna velikost za ZIP datoteke" +msgstr "NajveÄja vhodna velikost za datoteke ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Shrani" @@ -251,52 +223,48 @@ msgstr "Shrani" msgid "New" msgstr "Nova" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Besedilna datoteka" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Mapa" -#: templates/index.php:11 -msgid "From url" -msgstr "Iz url naslova" +#: templates/index.php:14 +msgid "From link" +msgstr "Iz povezave" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" -msgstr "Naloži" +msgstr "PoÅ¡lji" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" -msgstr "PrekliÄi nalaganje" +msgstr "PrekliÄi poÅ¡iljanje" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Tukaj ni niÄesar. Naložite kaj!" -#: templates/index.php:50 -msgid "Share" -msgstr "Souporaba" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" -msgstr "Prenesi" +msgstr "Prejmi" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Nalaganje ni mogoÄe, ker je preveliko" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Datoteke, ki jih želite naložiti, presegajo najveÄjo dovoljeno velikost na tem strežniku." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." -msgstr "Preiskujem datoteke, prosimo poÄakajte." +msgstr "Poteka preuÄevanje datotek, poÄakajte ..." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" -msgstr "Trenutno preiskujem" +msgstr "Trenutno poteka preuÄevanje" diff --git a/l10n/sl/files_encryption.po b/l10n/sl/files_encryption.po index 294eea91d1354cce49fb8ba4ed8876d8d89f9377..ee5f5c6ec056722642681bd8eca863beecd46ac7 100644 --- a/l10n/sl/files_encryption.po +++ b/l10n/sl/files_encryption.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # Peter PeroÅ¡a , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 00:19+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 16:57+0000\n" +"Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #: templates/settings.php:3 msgid "Encryption" @@ -24,7 +25,7 @@ msgstr "Å ifriranje" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "Naslednje vrste datotek naj se ne Å¡ifrirajo" +msgstr "Navedene vrste datotek naj ne bodo Å¡ifrirane" #: templates/settings.php:5 msgid "None" diff --git a/l10n/sl/files_external.po b/l10n/sl/files_external.po index 59cb0964490ce3433df07daf9f7238cd185057a6..36d7994f32877da80aa991f2331a97aa8b919387 100644 --- a/l10n/sl/files_external.po +++ b/l10n/sl/files_external.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # Peter PeroÅ¡a , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-24 02:02+0200\n" +"PO-Revision-Date: 2012-10-23 12:29+0000\n" +"Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +21,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "Dostop je odobren" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Napaka nastavljanja shrambe Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Odobri dostop" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Zapolni vsa zahtevana polja" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "VpiÅ¡ite veljaven kljuÄ programa in kodo za Dropbox" #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Napaka nastavljanja shrambe Google Drive" #: templates/settings.php:3 msgid "External Storage" @@ -100,8 +101,8 @@ msgstr "Dovoli uporabnikom priklop lastne zunanje podatkovne shrambe" #: templates/settings.php:99 msgid "SSL root certificates" -msgstr "SSL korenski certifikati" +msgstr "Korenska potrdila SSL" #: templates/settings.php:113 msgid "Import Root Certificate" -msgstr "Uvozi korenski certifikat" +msgstr "Uvozi korensko potrdilo" diff --git a/l10n/sl/files_pdfviewer.po b/l10n/sl/files_pdfviewer.po deleted file mode 100644 index 3a16e21f409f9cc800ece553eba0fb59e263739b..0000000000000000000000000000000000000000 --- a/l10n/sl/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/sl/files_sharing.po b/l10n/sl/files_sharing.po index 4fdbda00e63d8fa6d1ed0de95f5bcbafce4bedca..00395c37a29e1369972e7bb8a61a82efaeb8b445 100644 --- a/l10n/sl/files_sharing.po +++ b/l10n/sl/files_sharing.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # Peter PeroÅ¡a , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 02:02+0200\n" -"PO-Revision-Date: 2012-09-25 19:08+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 16:59+0000\n" +"Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,21 +30,21 @@ msgstr "PoÅ¡lji" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "%s je dal v souporabo z vami mapo %s" +msgstr "Oseba %s je doloÄila mapo %s za souporabo" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "%s je dal v souporabo z vami datoteko %s" +msgstr "Oseba %s je doloÄila datoteko %s za souporabo" #: templates/public.php:14 templates/public.php:30 msgid "Download" -msgstr "Prenesi" +msgstr "Prejmi" #: templates/public.php:29 msgid "No preview available for" msgstr "Predogled ni na voljo za" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" msgstr "spletne storitve pod vaÅ¡im nadzorom" diff --git a/l10n/sl/files_texteditor.po b/l10n/sl/files_texteditor.po deleted file mode 100644 index 4358bfa979dbd2ad927858a36bc7eb2712a85bb0..0000000000000000000000000000000000000000 --- a/l10n/sl/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/sl/files_versions.po b/l10n/sl/files_versions.po index 974c8de546525f9384adeac238459d7f69ec6210..2bde547fb1f86768bf910054166bfdd3df8030b6 100644 --- a/l10n/sl/files_versions.po +++ b/l10n/sl/files_versions.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # Peter PeroÅ¡a , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 02:02+0200\n" -"PO-Revision-Date: 2012-09-25 19:09+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 17:00+0000\n" +"Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,7 +33,7 @@ msgstr "RazliÄice" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "To bo izbrisalo vse obstojeÄe razliÄice varnostnih kopij vaÅ¡ih datotek" +msgstr "S tem bodo izbrisane vse obstojeÄe razliÄice varnostnih kopij vaÅ¡ih datotek" #: templates/settings.php:3 msgid "Files Versioning" diff --git a/l10n/sl/gallery.po b/l10n/sl/gallery.po deleted file mode 100644 index f9c47144b658d14003c6ddb2bf6c4b8481c77fc6..0000000000000000000000000000000000000000 --- a/l10n/sl/gallery.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2012. -# Peter PeroÅ¡a , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-29 02:03+0200\n" -"PO-Revision-Date: 2012-07-28 02:03+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Slike" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Daj galerijo v souporabo" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Napaka: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Notranja napaka" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "predstavitev" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Nazaj" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Odstrani potrditev" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Ali želite odstraniti album" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Spremeni ime albuma" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Novo ime albuma" diff --git a/l10n/sl/impress.po b/l10n/sl/impress.po deleted file mode 100644 index 5d45e6c4fbe1703f359e818a0160b3a6bc7b94be..0000000000000000000000000000000000000000 --- a/l10n/sl/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/sl/lib.po b/l10n/sl/lib.po index cc9b69f3a920a8634d086ecced1b66bd2c9d0b15..606aa03de9d0098b8b53d002f0036c32772b09b6 100644 --- a/l10n/sl/lib.po +++ b/l10n/sl/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # Peter PeroÅ¡a , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-15 02:02+0200\n" -"PO-Revision-Date: 2012-09-14 08:53+0000\n" +"POT-Creation-Date: 2012-11-20 00:01+0100\n" +"PO-Revision-Date: 2012-11-19 19:49+0000\n" "Last-Translator: Peter PeroÅ¡a \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -36,91 +37,118 @@ msgstr "Uporabniki" #: app.php:309 msgid "Apps" -msgstr "Aplikacije" +msgstr "Programi" #: app.php:311 msgid "Admin" -msgstr "Skrbnik" +msgstr "SkrbniÅ¡tvo" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." -msgstr "ZIP prenos je onemogoÄen." +msgstr "Prejem datotek ZIP je onemogoÄen." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." -msgstr "Datoteke morajo biti preneÅ¡ene posamezno." +msgstr "Datoteke je mogoÄe prejeti le posamiÄ." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Nazaj na datoteke" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." -msgstr "Izbrane datoteke so prevelike, da bi lahko ustvarili zip datoteko." +msgstr "Izbrane datoteke so prevelike za ustvarjanje datoteke arhiva zip." #: json.php:28 msgid "Application is not enabled" -msgstr "Aplikacija ni omogoÄena" +msgstr "Program ni omogoÄen" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Napaka overitve" #: json.php:51 msgid "Token expired. Please reload page." -msgstr "Žeton je potekel. Prosimo, Äe spletno stran znova naložite." +msgstr "Žeton je potekel. SpletiÅ¡Äe je traba znova naložiti." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Datoteke" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Besedilo" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Slike" + +#: template.php:103 msgid "seconds ago" msgstr "pred nekaj sekundami" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "pred minuto" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "pred %d minutami" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "Pred 1 uro" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "Pred %d urami" + +#: template.php:108 msgid "today" msgstr "danes" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "vÄeraj" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "pred %d dnevi" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "prejÅ¡nji mesec" -#: template.php:96 -msgid "months ago" -msgstr "pred nekaj meseci" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "Pred %d meseci" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "lani" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "pred nekaj leti" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "%s je na voljo. VeÄ informacij." +msgstr "%s je na voljo. VeÄ podrobnosti." -#: updater.php:68 +#: updater.php:77 msgid "up to date" -msgstr "ažuren" +msgstr "posodobljeno" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "preverjanje za posodobitve je onemogoÄeno" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Kategorije \"%s\" ni bilo mogoÄe najti." diff --git a/l10n/sl/media.po b/l10n/sl/media.po deleted file mode 100644 index f33402c979ac667936a12c7510006a88454c4468..0000000000000000000000000000000000000000 --- a/l10n/sl/media.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Slovenian (http://www.transifex.net/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Glasba" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Predvajaj" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Premor" - -#: templates/music.php:5 -msgid "Previous" -msgstr "PrejÅ¡nja" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Naslednja" - -#: templates/music.php:7 -msgid "Mute" -msgstr "UtiÅ¡aj" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Povrni glasnost" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Ponovno preiÅ¡Äi zbirko" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Izvajalec" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Naslov" diff --git a/l10n/sl/settings.po b/l10n/sl/settings.po index 6cee9361572c301215fc67e1f48edfb6d81f666e..d8b32993d4515bfd397cc5c125fcfb02de42b433 100644 --- a/l10n/sl/settings.po +++ b/l10n/sl/settings.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # , 2012. # Peter PeroÅ¡a , 2012. # , 2011, 2012. @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,187 +21,103 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" -msgstr "Ne morem naložiti seznama iz App Store" +msgstr "Ni mogoÄe naložiti seznama iz App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Napaka overitve" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Skupina že obstaja" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Ni mogoÄe dodati skupine" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "Aplikacije ni bilo mogoÄe omogoÄiti." +msgstr "Programa ni mogoÄe omogoÄiti." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" -msgstr "E-poÅ¡tni naslov je bil shranjen" +msgstr "Elektronski naslov je shranjen" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" -msgstr "Neveljaven e-poÅ¡tni naslov" +msgstr "Neveljaven elektronski naslov" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID je bil spremenjen" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" -msgstr "Neveljaven zahtevek" +msgstr "Neveljavna zahteva" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Ni mogoÄe izbrisati skupine" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Napaka overitve" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Ni mogoÄe izbrisati uporabnika" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Jezik je bil spremenjen" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Uporabnika ni mogoÄe dodati k skupini %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Uporabnika ni mogoÄe odstraniti iz skupine %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "OnemogoÄi" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "OmogoÄi" #: js/personal.js:69 msgid "Saving..." -msgstr "Shranjevanje..." +msgstr "Poteka shranjevanje ..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__ime_jezika__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Varnostno opozorilo" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "VaÅ¡a mapa data in vaÅ¡e datoteke so verjetno vsem dostopne preko interneta. Datoteka .htaccess vkljuÄena v ownCloud ni omogoÄena. MoÄno vam priporoÄamo, da nastavite vaÅ¡ spletni strežnik tako, da mapa data ne bo veÄ na voljo vsem, ali pa jo preselite izven korenske mape spletnega strežnika." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "PeriodiÄno opravilo" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Izvede eno opravilo z vsako naloženo stranjo." - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "Datoteka cron.php je prijavljena pri enem od spletnih servisov za periodiÄna opravila. Preko protokola http pokliÄite datoteko cron.php, ki se nahaja v ownCloud korenski mapi, enkrat na minuto." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Uporabi sistemski servis za periodiÄna opravila. Preko sistemskega servisa pokliÄite datoteko cron.php, ki se nahaja v ownCloud korenski mapi, enkrat na minuto." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Souporaba" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "OmogoÄi API souporabe" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Aplikacijam dovoli uporabo API-ja souporabe" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Dovoli povezave" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Uporabnikom dovoli souporabo z javnimi povezavami" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Dovoli nadaljnjo souporabo" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Uporabnikom dovoli nadaljnjo souporabo" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Uporabnikom dovoli souporabo s komerkoli" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Uporabnikom dovoli souporabo le znotraj njihove skupine" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Dnevnik" - -#: templates/admin.php:116 -msgid "More" -msgstr "VeÄ" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Razvija ga ownCloud skupnost. Izvorna koda je izdana pod licenco AGPL." - #: templates/apps.php:10 msgid "Add your App" -msgstr "Dodajte vaÅ¡o aplikacijo" +msgstr "Dodaj program" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "VeÄ programov" #: templates/apps.php:27 msgid "Select an App" -msgstr "Izberite aplikacijo" +msgstr "Izberite program" #: templates/apps.php:31 msgid "See application page at apps.owncloud.com" -msgstr "ObiÅ¡Äite spletno stran aplikacije na apps.owncloud.com" +msgstr "ObiÅ¡Äite spletno stran programa na apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "-licencirana s strani " +msgstr "-z dovoljenjem s strani " #: templates/help.php:9 msgid "Documentation" @@ -212,40 +129,40 @@ msgstr "Upravljanje velikih datotek" #: templates/help.php:11 msgid "Ask a question" -msgstr "Postavi vpraÅ¡anje" +msgstr "Zastavi vpraÅ¡anje" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." -msgstr "Težave pri povezovanju s podatkovno zbirko pomoÄi." +msgstr "Težave med povezovanjem s podatkovno zbirko pomoÄi." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." -msgstr "Pojdi tja roÄno." +msgstr "Ustvari povezavo roÄno." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Odgovor" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Uporabili ste %s od razpoložljivih %s" +msgid "You have used %s of the available %s" +msgstr "Uporabljate %s od razpoložljivih %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" -msgstr "Namizni in mobilni odjemalci za sinhronizacijo" +msgstr "Namizni in mobilni odjemalci za usklajevanje" #: templates/personal.php:13 msgid "Download" -msgstr "Prenesi" +msgstr "Prejmi" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "VaÅ¡e geslo je bilo spremenjeno" +msgstr "VaÅ¡e geslo je spremenjeno" #: templates/personal.php:20 msgid "Unable to change your password" -msgstr "VaÅ¡ega gesla ni bilo mogoÄe spremeniti." +msgstr "Gesla ni mogoÄe spremeniti." #: templates/personal.php:21 msgid "Current password" @@ -257,7 +174,7 @@ msgstr "Novo geslo" #: templates/personal.php:23 msgid "show" -msgstr "prikaži" +msgstr "pokaži" #: templates/personal.php:24 msgid "Change password" @@ -265,15 +182,15 @@ msgstr "Spremeni geslo" #: templates/personal.php:30 msgid "Email" -msgstr "E-poÅ¡ta" +msgstr "Elektronska poÅ¡ta" #: templates/personal.php:31 msgid "Your email address" -msgstr "VaÅ¡ e-poÅ¡tni naslov" +msgstr "VaÅ¡ elektronski poÅ¡tni naslov" #: templates/personal.php:32 msgid "Fill in an email address to enable password recovery" -msgstr "VpiÅ¡ite vaÅ¡ e-poÅ¡tni naslov in s tem omogoÄite obnovitev gesla" +msgstr "VpiÅ¡ite vaÅ¡ elektronski naslov in s tem omogoÄite obnovitev gesla" #: templates/personal.php:38 templates/personal.php:39 msgid "Language" @@ -285,7 +202,17 @@ msgstr "Pomagajte pri prevajanju" #: templates/personal.php:51 msgid "use this address to connect to your ownCloud in your file manager" -msgstr "Uporabite ta naslov za povezavo do ownCloud v vaÅ¡em upravljalniku datotek." +msgstr "Uporabite ta naslov za povezavo do ownCloud v upravljalniku datotek." + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Programski paket razvija skupnost ownCloud. Izvorna koda je objavljena pod pogoji dovoljenja AGPL." #: templates/users.php:21 templates/users.php:76 msgid "Name" @@ -313,7 +240,7 @@ msgstr "Drugo" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "Administrator skupine" +msgstr "Skrbnik skupine" #: templates/users.php:82 msgid "Quota" diff --git a/l10n/sl/tasks.po b/l10n/sl/tasks.po deleted file mode 100644 index ac56c8067ff6a0f7075751c987a3091aded4c028..0000000000000000000000000000000000000000 --- a/l10n/sl/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Peter PeroÅ¡a , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-22 02:04+0200\n" -"PO-Revision-Date: 2012-08-21 11:22+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Neveljaven datum/Äas" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Opravila" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Ni kategorije" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "NedoloÄen" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=najviÅ¡je" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=srednje" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=najnižje" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Prazen povzetek" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Neveljaven odstotek dokonÄanja" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Neveljavna prednost" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Dodaj opravilo" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Razvrsti po roku" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Razvrsti v seznam" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Razvrsti po zakljuÄenosti" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Razvrsti po lokacijah" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Razvrsti po prednosti" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Razvrsti po oznakah" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Nalagam opravila..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Pomembno" - -#: templates/tasks.php:23 -msgid "More" -msgstr "VeÄ" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Manj" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "IzbriÅ¡i" diff --git a/l10n/sl/user_ldap.po b/l10n/sl/user_ldap.po index f8ab6ff3ac001305c43db89dc774a9f0be862685..115d6bd0b7211b6e1677fb8c8051894864bba364 100644 --- a/l10n/sl/user_ldap.po +++ b/l10n/sl/user_ldap.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# <>, 2012. # Peter PeroÅ¡a , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-30 02:02+0200\n" -"PO-Revision-Date: 2012-08-29 06:02+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 17:41+0000\n" +"Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #: templates/settings.php:8 msgid "Host" @@ -25,7 +26,7 @@ msgstr "Gostitelj" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "Protokol lahko izpustite, razen Äe zahtevate SSL. V tem primeru zaÄnite z ldaps://" +msgstr "Protokol je lahko izpuÅ¡Äen, Äe ni posebej zahtevan SSL. V tem primeru se mora naslov zaÄeti z ldaps://" #: templates/settings.php:9 msgid "Base DN" @@ -44,7 +45,7 @@ msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "DN uporabnikovega odjemalca, s katerim naj se opravi vezava, npr. uid=agent,dc=example,dc=com. Za anonimni dostop pustite polji DN in geslo prazni." +msgstr "DN uporabnikovega odjemalca, s katerim naj se opravi vezava, npr. uid=agent,dc=example,dc=com. Za anonimni dostop sta polji DN in geslo prazni." #: templates/settings.php:11 msgid "Password" @@ -52,7 +53,7 @@ msgstr "Geslo" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "Za anonimni dostop pustite polji DN in geslo prazni." +msgstr "Za anonimni dostop sta polji DN in geslo prazni." #: templates/settings.php:12 msgid "User Login Filter" @@ -63,12 +64,12 @@ msgstr "Filter prijav uporabnikov" msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "DoloÄi filter uporabljen pri prijavi. %%uid nadomesti uporaniÅ¡ko ime pri prijavi." +msgstr "DoloÄi filter, uporabljen pri prijavi. %%uid nadomesti uporabniÅ¡ko ime za prijavo." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "Uporabite ogrado %%uid, npr. \"uid=%%uid\"." +msgstr "Uporabite vsebnik %%uid, npr. \"uid=%%uid\"." #: templates/settings.php:13 msgid "User List Filter" @@ -80,7 +81,7 @@ msgstr "DoloÄi filter za uporabo med pridobivanjem uporabnikov." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "Brez katerekoli ograde, npr. \"objectClass=person\"." +msgstr "Brez kateregakoli vsebnika, npr. \"objectClass=person\"." #: templates/settings.php:14 msgid "Group Filter" @@ -92,7 +93,7 @@ msgstr "DoloÄi filter za uporabo med pridobivanjem skupin." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "Brez katerekoli ograde, npr. \"objectClass=posixGroup\"." +msgstr "Brez katerekoli vsebnika, npr. \"objectClass=posixGroup\"." #: templates/settings.php:17 msgid "Port" @@ -116,25 +117,25 @@ msgstr "Uporabi TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "Ne uporabljajte ga za SSL povezave, saj ne bo delovalo." +msgstr "Uporaba SSL za povezave bo spodletela." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "LDAP strežnik je neobÄutljiv na velikost Ärk (Windows)" +msgstr "Strežnik LDAP ne upoÅ¡teva velikosti Ärk (Windows)" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "OnemogoÄi potrditev veljavnosti SSL certifikata." +msgstr "OnemogoÄi potrditev veljavnosti potrdila SSL." #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "ÄŒe povezava deluje samo s to možnostjo, uvozite SSL potrdilo iz LDAP strežnika v vaÅ¡ ownCloud strežnik." +msgstr "V primeru, da povezava deluje le s to možnostjo, uvozite potrdilo SSL iz strežnika LDAP na vaÅ¡ strežnik ownCloud." #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "Odsvetovano, uporabite le v namene preizkuÅ¡anja." +msgstr "Dejanje ni priporoÄeno; uporabljeno naj bo le za preizkuÅ¡anje delovanja." #: templates/settings.php:24 msgid "User Display Name Field" @@ -142,7 +143,7 @@ msgstr "Polje za uporabnikovo prikazano ime" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "LDAP atribut uporabljen pri ustvarjanju ownCloud uporabniÅ¡kih imen." +msgstr "Atribut LDAP, uporabljen pri ustvarjanju uporabniÅ¡kih imen ownCloud." #: templates/settings.php:25 msgid "Group Display Name Field" @@ -150,7 +151,7 @@ msgstr "Polje za prikazano ime skupine" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "LDAP atribut uporabljen pri ustvarjanju ownCloud imen skupin." +msgstr "Atribut LDAP, uporabljen pri ustvarjanju imen skupin ownCloud." #: templates/settings.php:27 msgid "in bytes" @@ -164,7 +165,7 @@ msgstr "v sekundah. Sprememba izprazni predpomnilnik." msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "Pustite prazno za uporabniÅ¡ko ime (privzeto). V nasprotnem primeru navedite LDAP/AD atribut." +msgstr "Pustite prazno za uporabniÅ¡ko ime (privzeto). V nasprotnem primeru navedite atribut LDAP/AD." #: templates/settings.php:32 msgid "Help" diff --git a/l10n/sl/user_migrate.po b/l10n/sl/user_migrate.po deleted file mode 100644 index ec8deacf770a99e7b669e4c191547ca04cb9a5a5..0000000000000000000000000000000000000000 --- a/l10n/sl/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Peter PeroÅ¡a , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 13:17+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Izvozi" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "Med ustvarjanjem datoteke za izvoz je priÅ¡lo do napake" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "PriÅ¡lo je do napake" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Izvozi vaÅ¡ uporabniÅ¡ki raÄun" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Ustvarjena bo stisnjena datoteka z vaÅ¡im ownCloud raÄunom." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Uvozi uporabniÅ¡ki raÄun" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "Zip datoteka ownCloud uporabnika" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Uvozi" diff --git a/l10n/sl/user_openid.po b/l10n/sl/user_openid.po deleted file mode 100644 index 38b10648491f1c71f2a381c1f130a18270838b91..0000000000000000000000000000000000000000 --- a/l10n/sl/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Peter PeroÅ¡a , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-16 02:04+0200\n" -"PO-Revision-Date: 2012-08-15 00:29+0000\n" -"Last-Translator: Peter PeroÅ¡a \n" -"Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "To je OpenID strežniÅ¡ka konÄna toÄka. Za veÄ informacij si oglejte" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identiteta: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "PodroÄje: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Uporabnik:" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Prijava" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Napaka: Uporabnik ni bil izbran" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "s tem naslovom se lahko overite tudi na drugih straneh" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Odobren ponudnik OpenID" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "VaÅ¡ naslov pri Wordpress, Identi.ca, …" diff --git a/l10n/sl/files_odfviewer.po b/l10n/sl/user_webdavauth.po similarity index 63% rename from l10n/sl/files_odfviewer.po rename to l10n/sl/user_webdavauth.po index 700c0daba96449e234cde16381f22a6e8ba9d8b7..f7f351238d5c9e09c752eb14f4672b0de7bc1f42 100644 --- a/l10n/sl/files_odfviewer.po +++ b/l10n/sl/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Peter PeroÅ¡a , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-20 00:01+0100\n" +"PO-Revision-Date: 2012-11-19 19:03+0000\n" +"Last-Translator: Peter PeroÅ¡a \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/so/admin_dependencies_chk.po b/l10n/so/admin_dependencies_chk.po deleted file mode 100644 index 2d1d442a09bbfebe85f57405181681a2432430b9..0000000000000000000000000000000000000000 --- a/l10n/so/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/so/admin_migrate.po b/l10n/so/admin_migrate.po deleted file mode 100644 index 2f3aebc46ea8cb24c51f517661f5f0d644447552..0000000000000000000000000000000000000000 --- a/l10n/so/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/so/bookmarks.po b/l10n/so/bookmarks.po deleted file mode 100644 index 63be2e28018e6cfa32c20567268df2c76f510da5..0000000000000000000000000000000000000000 --- a/l10n/so/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/so/calendar.po b/l10n/so/calendar.po deleted file mode 100644 index eb308550f953db9dec42bc03c43f267585d684d1..0000000000000000000000000000000000000000 --- a/l10n/so/calendar.po +++ /dev/null @@ -1,813 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "" - -#: lib/app.php:122 -msgid "Business" -msgstr "" - -#: lib/app.php:123 -msgid "Call" -msgstr "" - -#: lib/app.php:124 -msgid "Clients" -msgstr "" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "" - -#: lib/app.php:131 -msgid "Other" -msgstr "" - -#: lib/app.php:132 -msgid "Personal" -msgstr "" - -#: lib/app.php:133 -msgid "Projects" -msgstr "" - -#: lib/app.php:134 -msgid "Questions" -msgstr "" - -#: lib/app.php:135 -msgid "Work" -msgstr "" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "" - -#: lib/object.php:373 -msgid "Daily" -msgstr "" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "" - -#: templates/calendar.php:41 -msgid "List" -msgstr "" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/so/contacts.po b/l10n/so/contacts.po deleted file mode 100644 index 2e9f2b1c0ddb220ff5e373959242d683f8973ad7..0000000000000000000000000000000000000000 --- a/l10n/so/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/so/core.po b/l10n/so/core.po index 399a26593ac1629ac77f84937a24288656cc1472..9522acda2869e9f4c635cf020a0e4def064bff09 100644 --- a/l10n/so/core.po +++ b/l10n/so/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" +"POT-Creation-Date: 2012-10-18 02:03+0200\n" +"PO-Revision-Date: 2012-10-18 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" "MIME-Version: 1.0\n" @@ -29,55 +29,55 @@ msgstr "" msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 msgid "Settings" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "January" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "February" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "March" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "April" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "May" msgstr "" -#: js/js.js:645 +#: js/js.js:670 msgid "June" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "July" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "August" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "September" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "October" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "November" msgstr "" -#: js/js.js:646 +#: js/js.js:671 msgid "December" msgstr "" @@ -105,8 +105,8 @@ msgstr "" msgid "No categories selected for deletion." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 +#: js/share.js:509 msgid "Error" msgstr "" @@ -123,15 +123,11 @@ msgid "Error while changing permissions" msgstr "" #: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +msgid "Shared with you and the group {group} by {owner}" msgstr "" #: js/share.js:132 -msgid "Shared with you by" +msgid "Shared with you by {owner}" msgstr "" #: js/share.js:137 @@ -146,7 +142,8 @@ msgstr "" msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:147 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" @@ -171,50 +168,46 @@ msgid "Resharing is not allowed" msgstr "" #: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +msgid "Shared in {item} with {user}" msgstr "" #: js/share.js:271 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:283 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:285 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:288 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:291 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:294 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:297 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:322 js/share.js:484 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:497 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:509 msgid "Error setting expiration date" msgstr "" @@ -238,12 +231,12 @@ msgstr "" msgid "Login failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "" @@ -299,52 +292,77 @@ msgstr "" msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:38 msgid "web services under your control" msgstr "" @@ -352,15 +370,29 @@ msgstr "" msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +407,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/so/files.po b/l10n/so/files.po index 31ef83859aae3a6bfa342c0aaff27e7f7048f30a..193751e90dc4474a2db2fdbc4ec8ee9deeae5596 100644 --- a/l10n/so/files.po +++ b/l10n/so/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" +"POT-Creation-Date: 2012-10-19 02:03+0200\n" +"PO-Revision-Date: 2012-10-19 00:04+0000\n" "Last-Translator: I Robot \n" "Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" "MIME-Version: 1.0\n" @@ -63,152 +63,152 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:194 js/filelist.js:196 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:194 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:194 js/filelist.js:196 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:243 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:243 js/filelist.js:245 js/filelist.js:277 js/filelist.js:279 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:245 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:277 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/filelist.js:279 +msgid "deleted {files}" msgstr "" #: js/files.js:179 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:214 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:242 js/files.js:347 js/files.js:377 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:262 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:265 js/files.js:310 js/files.js:325 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:328 js/files.js:361 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:430 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 +#: js/files.js:500 msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:681 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:689 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:762 templates/index.php:48 msgid "Name" msgstr "" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:763 templates/index.php:56 msgid "Size" msgstr "" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:764 templates/index.php:58 msgid "Modified" msgstr "" -#: js/files.js:777 -msgid "folder" +#: js/files.js:791 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:793 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:801 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" +#: js/files.js:803 +msgid "{count} files" msgstr "" -#: js/files.js:833 +#: js/files.js:846 msgid "seconds ago" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:847 +msgid "1 minute ago" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:848 +msgid "{minutes} minutes ago" msgstr "" -#: js/files.js:838 +#: js/files.js:851 msgid "today" msgstr "" -#: js/files.js:839 +#: js/files.js:852 msgid "yesterday" msgstr "" -#: js/files.js:840 -msgid "days ago" +#: js/files.js:853 +msgid "{days} days ago" msgstr "" -#: js/files.js:841 +#: js/files.js:854 msgid "last month" msgstr "" -#: js/files.js:843 +#: js/files.js:856 msgid "months ago" msgstr "" -#: js/files.js:844 +#: js/files.js:857 msgid "last year" msgstr "" -#: js/files.js:845 +#: js/files.js:858 msgid "years ago" msgstr "" diff --git a/l10n/so/files_odfviewer.po b/l10n/so/files_odfviewer.po deleted file mode 100644 index 614758a322f689a2711d95b795fe2ce6e3fbd873..0000000000000000000000000000000000000000 --- a/l10n/so/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/so/files_pdfviewer.po b/l10n/so/files_pdfviewer.po deleted file mode 100644 index 05e648c741f4eb88812422b10764874a6404583a..0000000000000000000000000000000000000000 --- a/l10n/so/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/so/files_texteditor.po b/l10n/so/files_texteditor.po deleted file mode 100644 index aa6aad47d716d9eda3875fb0cfc5c605dd65a2f0..0000000000000000000000000000000000000000 --- a/l10n/so/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/so/gallery.po b/l10n/so/gallery.po deleted file mode 100644 index e520c32b94841c39dc609ff075ee87cd6be2c914..0000000000000000000000000000000000000000 --- a/l10n/so/gallery.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2012-07-25 19:30+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/so/impress.po b/l10n/so/impress.po deleted file mode 100644 index 47c6506daecdbdcadec9422781e140b30c5f6197..0000000000000000000000000000000000000000 --- a/l10n/so/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/so/media.po b/l10n/so/media.po deleted file mode 100644 index ed91c8d409b13b975c1ff312f6b3cdb79b447fee..0000000000000000000000000000000000000000 --- a/l10n/so/media.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2011-08-13 02:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "" - -#: templates/music.php:5 -msgid "Previous" -msgstr "" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "" - -#: templates/music.php:7 -msgid "Mute" -msgstr "" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "" - -#: templates/music.php:37 -msgid "Artist" -msgstr "" - -#: templates/music.php:38 -msgid "Album" -msgstr "" - -#: templates/music.php:39 -msgid "Title" -msgstr "" diff --git a/l10n/so/tasks.po b/l10n/so/tasks.po deleted file mode 100644 index 3b036ed9b2ba5ec79f895bc2fdc21f7bbf61e2f6..0000000000000000000000000000000000000000 --- a/l10n/so/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/so/user_migrate.po b/l10n/so/user_migrate.po deleted file mode 100644 index 40d3c1c0733f1718e246c6a15183c00d3538e0dd..0000000000000000000000000000000000000000 --- a/l10n/so/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/so/user_openid.po b/l10n/so/user_openid.po deleted file mode 100644 index 2001365d2d263617c4b869b285da46093a20a6b8..0000000000000000000000000000000000000000 --- a/l10n/so/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Somali (http://www.transifex.com/projects/p/owncloud/language/so/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: so\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/sq/core.po b/l10n/sq/core.po new file mode 100644 index 0000000000000000000000000000000000000000..57c778722b2d0ef9822ed6e98466888499b197d3 --- /dev/null +++ b/l10n/sq/core.po @@ -0,0 +1,539 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2011-07-25 16:05+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:37 +msgid "This category already exists: " +msgstr "" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +msgid "Settings" +msgstr "" + +#: js/js.js:704 +msgid "seconds ago" +msgstr "" + +#: js/js.js:705 +msgid "1 minute ago" +msgstr "" + +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "" + +#: js/js.js:707 +msgid "1 hour ago" +msgstr "" + +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "" + +#: js/js.js:709 +msgid "today" +msgstr "" + +#: js/js.js:710 +msgid "yesterday" +msgstr "" + +#: js/js.js:711 +msgid "{days} days ago" +msgstr "" + +#: js/js.js:712 +msgid "last month" +msgstr "" + +#: js/js.js:713 +msgid "{months} months ago" +msgstr "" + +#: js/js.js:714 +msgid "months ago" +msgstr "" + +#: js/js.js:715 +msgid "last year" +msgstr "" + +#: js/js.js:716 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 +msgid "Error" +msgstr "" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:158 +msgid "Share with" +msgstr "" + +#: js/share.js:163 +msgid "Share with link" +msgstr "" + +#: js/share.js:164 +msgid "Password protect" +msgstr "" + +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 +msgid "Password" +msgstr "" + +#: js/share.js:173 +msgid "Set expiration date" +msgstr "" + +#: js/share.js:174 +msgid "Expiration date" +msgstr "" + +#: js/share.js:206 +msgid "Share via email:" +msgstr "" + +#: js/share.js:208 +msgid "No people found" +msgstr "" + +#: js/share.js:235 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:292 +msgid "Unshare" +msgstr "" + +#: js/share.js:304 +msgid "can edit" +msgstr "" + +#: js/share.js:306 +msgid "access control" +msgstr "" + +#: js/share.js:309 +msgid "create" +msgstr "" + +#: js/share.js:312 +msgid "update" +msgstr "" + +#: js/share.js:315 +msgid "delete" +msgstr "" + +#: js/share.js:318 +msgid "share" +msgstr "" + +#: js/share.js:349 js/share.js:520 js/share.js:522 +msgid "Password protected" +msgstr "" + +#: js/share.js:533 +msgid "Error unsetting expiration date" +msgstr "" + +#: js/share.js:545 +msgid "Error setting expiration date" +msgstr "" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:50 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:57 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 +msgid "will be used" +msgstr "" + +#: templates/installation.php:105 +msgid "Database user" +msgstr "" + +#: templates/installation.php:109 +msgid "Database password" +msgstr "" + +#: templates/installation.php:113 +msgid "Database name" +msgstr "" + +#: templates/installation.php:121 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:127 +msgid "Database host" +msgstr "" + +#: templates/installation.php:132 +msgid "Finish setup" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:42 +msgid "web services under your control" +msgstr "" + +#: templates/layout.user.php:45 +msgid "Log out" +msgstr "" + +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:27 +msgid "remember" +msgstr "" + +#: templates/login.php:28 +msgid "Log in" +msgstr "" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/sq/files.po b/l10n/sq/files.po new file mode 100644 index 0000000000000000000000000000000000000000..c3bd0a632597b43feed8a96ba0b702826ba63b19 --- /dev/null +++ b/l10n/sq/files.po @@ -0,0 +1,266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:21 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:23 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:26 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:27 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:28 +msgid "Failed to write to disk" +msgstr "" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "" + +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 +msgid "Unshare" +msgstr "" + +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 +msgid "Delete" +msgstr "" + +#: js/fileactions.js:181 +msgid "Rename" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "replace" +msgstr "" + +#: js/filelist.js:201 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "cancel" +msgstr "" + +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 +msgid "undo" +msgstr "" + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 +msgid "generating ZIP-file, it may take some time." +msgstr "" + +#: js/files.js:218 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/files.js:218 +msgid "Upload Error" +msgstr "" + +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 +msgid "Pending" +msgstr "" + +#: js/files.js:274 +msgid "1 file uploading" +msgstr "" + +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "" + +#: js/files.js:349 js/files.js:382 +msgid "Upload cancelled." +msgstr "" + +#: js/files.js:451 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "" + +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" + +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "" + +#: js/files.js:712 +msgid "error while scanning" +msgstr "" + +#: js/files.js:785 templates/index.php:65 +msgid "Name" +msgstr "" + +#: js/files.js:786 templates/index.php:76 +msgid "Size" +msgstr "" + +#: js/files.js:787 templates/index.php:78 +msgid "Modified" +msgstr "" + +#: js/files.js:814 +msgid "1 folder" +msgstr "" + +#: js/files.js:816 +msgid "{count} folders" +msgstr "" + +#: js/files.js:824 +msgid "1 file" +msgstr "" + +#: js/files.js:826 +msgid "{count} files" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:9 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:12 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:14 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:17 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:19 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/admin.php:23 +msgid "Save" +msgstr "" + +#: templates/index.php:7 +msgid "New" +msgstr "" + +#: templates/index.php:10 +msgid "Text file" +msgstr "" + +#: templates/index.php:12 +msgid "Folder" +msgstr "" + +#: templates/index.php:14 +msgid "From link" +msgstr "" + +#: templates/index.php:35 +msgid "Upload" +msgstr "" + +#: templates/index.php:43 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:57 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:71 +msgid "Download" +msgstr "" + +#: templates/index.php:103 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:105 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:110 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:113 +msgid "Current scanning" +msgstr "" diff --git a/l10n/fa/admin_migrate.po b/l10n/sq/files_encryption.po similarity index 52% rename from l10n/fa/admin_migrate.po rename to l10n/sq/files_encryption.po index 6b80ec8ecafaef00a3ffcd7074122dcd0630258c..e62739f8f212a605b8e6bf6ebab042c1295f8bdb 100644 --- a/l10n/fa/admin_migrate.po +++ b/l10n/sq/files_encryption.po @@ -7,26 +7,28 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" +"POT-Creation-Date: 2012-11-27 00:09+0100\n" +"PO-Revision-Date: 2012-08-12 22:33+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: templates/settings.php:3 -msgid "Export this ownCloud instance" +msgid "Encryption" msgstr "" #: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" +msgid "Exclude the following file types from encryption" +msgstr "" + +#: templates/settings.php:5 +msgid "None" msgstr "" -#: templates/settings.php:12 -msgid "Export" +#: templates/settings.php:10 +msgid "Enable Encryption" msgstr "" diff --git a/l10n/sq/files_external.po b/l10n/sq/files_external.po new file mode 100644 index 0000000000000000000000000000000000000000..a677ece5f4b07103fee6edb20e6fffa898b511ee --- /dev/null +++ b/l10n/sq/files_external.po @@ -0,0 +1,106 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-27 00:09+0100\n" +"PO-Revision-Date: 2012-08-12 22:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "" + +#: templates/settings.php:7 templates/settings.php:19 +msgid "Mount point" +msgstr "" + +#: templates/settings.php:8 +msgid "Backend" +msgstr "" + +#: templates/settings.php:9 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:10 +msgid "Options" +msgstr "" + +#: templates/settings.php:11 +msgid "Applicable" +msgstr "" + +#: templates/settings.php:23 +msgid "Add mount point" +msgstr "" + +#: templates/settings.php:54 templates/settings.php:62 +msgid "None set" +msgstr "" + +#: templates/settings.php:63 +msgid "All Users" +msgstr "" + +#: templates/settings.php:64 +msgid "Groups" +msgstr "" + +#: templates/settings.php:69 +msgid "Users" +msgstr "" + +#: templates/settings.php:77 templates/settings.php:107 +msgid "Delete" +msgstr "" + +#: templates/settings.php:87 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:88 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:99 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:113 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/sq/files_sharing.po b/l10n/sq/files_sharing.po new file mode 100644 index 0000000000000000000000000000000000000000..110e4b2ac2b02defe4713356883cad5c39452f29 --- /dev/null +++ b/l10n/sq/files_sharing.po @@ -0,0 +1,48 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-08-12 22:35+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "" + +#: templates/public.php:17 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:19 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:22 templates/public.php:38 +msgid "Download" +msgstr "" + +#: templates/public.php:37 +msgid "No preview available for" +msgstr "" + +#: templates/public.php:43 +msgid "web services under your control" +msgstr "" diff --git a/l10n/sq/files_versions.po b/l10n/sq/files_versions.po new file mode 100644 index 0000000000000000000000000000000000000000..97616a406363044c6ee44ff13ec96088ab57edbf --- /dev/null +++ b/l10n/sq/files_versions.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-08-12 22:37+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/settings-personal.js:31 templates/settings-personal.php:10 +msgid "Expire all versions" +msgstr "" + +#: js/versions.js:16 +msgid "History" +msgstr "" + +#: templates/settings-personal.php:4 +msgid "Versions" +msgstr "" + +#: templates/settings-personal.php:7 +msgid "This will delete all existing backup versions of your files" +msgstr "" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "" diff --git a/l10n/sq/lib.po b/l10n/sq/lib.po new file mode 100644 index 0000000000000000000000000000000000000000..431a0e3c621f649327ba5c9904537bd8639647c1 --- /dev/null +++ b/l10n/sq/lib.po @@ -0,0 +1,152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-07-27 22:23+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app.php:285 +msgid "Help" +msgstr "" + +#: app.php:292 +msgid "Personal" +msgstr "" + +#: app.php:297 +msgid "Settings" +msgstr "" + +#: app.php:302 +msgid "Users" +msgstr "" + +#: app.php:309 +msgid "Apps" +msgstr "" + +#: app.php:311 +msgid "Admin" +msgstr "" + +#: files.php:361 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:362 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:362 files.php:387 +msgid "Back to Files" +msgstr "" + +#: files.php:386 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:64 json.php:77 json.php:89 +msgid "Authentication error" +msgstr "" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 +msgid "seconds ago" +msgstr "" + +#: template.php:104 +msgid "1 minute ago" +msgstr "" + +#: template.php:105 +#, php-format +msgid "%d minutes ago" +msgstr "" + +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 +msgid "today" +msgstr "" + +#: template.php:109 +msgid "yesterday" +msgstr "" + +#: template.php:110 +#, php-format +msgid "%d days ago" +msgstr "" + +#: template.php:111 +msgid "last month" +msgstr "" + +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" + +#: template.php:113 +msgid "last year" +msgstr "" + +#: template.php:114 +msgid "years ago" +msgstr "" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "" + +#: updater.php:77 +msgid "up to date" +msgstr "" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/sq/settings.po b/l10n/sq/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..8857016c2689a0e9b282cdd1336396403b04c6dd --- /dev/null +++ b/l10n/sq/settings.po @@ -0,0 +1,247 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "" + +#: ajax/enableapp.php:12 +msgid "Could not enable app. " +msgstr "" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "" + +#: ajax/openid.php:13 +msgid "OpenID Changed" +msgstr "" + +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "" + +#: js/apps.js:28 js/apps.js:67 +msgid "Disable" +msgstr "" + +#: js/apps.js:28 js/apps.js:55 +msgid "Enable" +msgstr "" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "" + +#: personal.php:42 personal.php:43 +msgid "__language_name__" +msgstr "" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "" + +#: templates/apps.php:27 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:31 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:32 +msgid "-licensed by " +msgstr "" + +#: templates/help.php:9 +msgid "Documentation" +msgstr "" + +#: templates/help.php:10 +msgid "Managing Big Files" +msgstr "" + +#: templates/help.php:11 +msgid "Ask a question" +msgstr "" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "" + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "" + +#: templates/help.php:31 +msgid "Answer" +msgstr "" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "" + +#: templates/personal.php:13 +msgid "Download" +msgstr "" + +#: templates/personal.php:19 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "" + +#: templates/personal.php:22 +msgid "New password" +msgstr "" + +#: templates/personal.php:23 +msgid "show" +msgstr "" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "" + +#: templates/personal.php:30 +msgid "Email" +msgstr "" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "" + +#: templates/users.php:32 +msgid "Create" +msgstr "" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "" + +#: templates/users.php:80 templates/users.php:112 +msgid "Group Admin" +msgstr "" + +#: templates/users.php:82 +msgid "Quota" +msgstr "" + +#: templates/users.php:146 +msgid "Delete" +msgstr "" diff --git a/l10n/sq/user_ldap.po b/l10n/sq/user_ldap.po new file mode 100644 index 0000000000000000000000000000000000000000..16fd4ec4207bcf8a6aa1f3f2d0a0df1cc0e527f1 --- /dev/null +++ b/l10n/sq/user_ldap.po @@ -0,0 +1,170 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-08-12 22:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:8 +msgid "Host" +msgstr "" + +#: templates/settings.php:8 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/settings.php:9 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:9 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:10 +msgid "User DN" +msgstr "" + +#: templates/settings.php:10 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:11 +msgid "Password" +msgstr "" + +#: templates/settings.php:11 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:12 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:13 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:13 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:13 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:14 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:14 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "" + +#: templates/settings.php:14 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "" + +#: templates/settings.php:17 +msgid "Port" +msgstr "" + +#: templates/settings.php:18 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:19 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:20 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:21 +msgid "Use TLS" +msgstr "" + +#: templates/settings.php:21 +msgid "Do not use it for SSL connections, it will fail." +msgstr "" + +#: templates/settings.php:22 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:23 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:23 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "" + +#: templates/settings.php:23 +msgid "Not recommended, use for testing only." +msgstr "" + +#: templates/settings.php:24 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:24 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:25 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:25 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:27 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:29 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:30 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:32 +msgid "Help" +msgstr "" diff --git a/l10n/af/impress.po b/l10n/sq/user_webdavauth.po similarity index 59% rename from l10n/af/impress.po rename to l10n/sq/user_webdavauth.po index ad04eff39f12fab8a892afda7d225d3e3543a478..d3865a501b5bb3c94a8fd56f2f5c63b9e2ab9bcf 100644 --- a/l10n/af/impress.po +++ b/l10n/sq/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Afrikaans (http://www.transifex.com/projects/p/owncloud/language/af/)\n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: af\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/presentations.php:7 -msgid "Documentation" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/sr/admin_dependencies_chk.po b/l10n/sr/admin_dependencies_chk.po deleted file mode 100644 index bc9e8912ee74cd309d00939bbf366f89a1522cd7..0000000000000000000000000000000000000000 --- a/l10n/sr/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/sr/admin_migrate.po b/l10n/sr/admin_migrate.po deleted file mode 100644 index 13be5b1a58b6a9c04107107fa8ffd740c0c240f3..0000000000000000000000000000000000000000 --- a/l10n/sr/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/sr/bookmarks.po b/l10n/sr/bookmarks.po deleted file mode 100644 index c0abe8d98b9c6053ce4dac236c6988fe6b8f89e3..0000000000000000000000000000000000000000 --- a/l10n/sr/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/sr/calendar.po b/l10n/sr/calendar.po deleted file mode 100644 index 4e95b27e79332d5ea16203bfa1351137b490a013..0000000000000000000000000000000000000000 --- a/l10n/sr/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Terzić , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Погрешан календар" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ВременÑка зона је промењена" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "ÐеиÑправан захтев" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Календар" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Рођендан" - -#: lib/app.php:122 -msgid "Business" -msgstr "ПоÑао" - -#: lib/app.php:123 -msgid "Call" -msgstr "Позив" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Клијенти" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "ДоÑтављач" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Празници" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Идеје" - -#: lib/app.php:128 -msgid "Journey" -msgstr "путовање" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "јубилеј" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "СаÑтанак" - -#: lib/app.php:131 -msgid "Other" -msgstr "Друго" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Лично" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Пројекти" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Питања" - -#: lib/app.php:135 -msgid "Work" -msgstr "ПоÑао" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ðови календар" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ðе понавља Ñе" - -#: lib/object.php:373 -msgid "Daily" -msgstr "дневно" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "недељно" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Ñваког дана у недељи" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "двонедељно" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "меÑечно" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "годишње" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Цео дан" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "ÐаÑлов" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Ðедеља" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "МеÑец" - -#: templates/calendar.php:41 -msgid "List" -msgstr "СпиÑак" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "ДанаÑ" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "КалДав веза" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Преузми" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Уреди" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Обриши" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ðови календар" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Уреди календар" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Приказаноиме" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ðктиван" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Боја календара" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Сними" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Пошаљи" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Откажи" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Уреди догађај" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "ÐаÑлов догађаја" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Категорија" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Целодневни догађај" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Од" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "До" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Локација" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Локација догађаја" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "ОпиÑ" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "ÐžÐ¿Ð¸Ñ Ð´Ð¾Ð³Ð°Ñ’Ð°Ñ˜Ð°" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Понављај" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Ðаправи нови догађај" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ВременÑка зона" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/sr/contacts.po b/l10n/sr/contacts.po deleted file mode 100644 index 9b88aad65bc70174abb8d610bb51a55f1a4652e8..0000000000000000000000000000000000000000 --- a/l10n/sr/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Terzić , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Подаци о вКарти Ñу неиÑправни. Поново учитајте Ñтраницу." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Контакти" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ово није ваш адреÑар." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Контакт Ñе не може наћи." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "ПоÑао" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Кућа" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Мобилни" - -#: lib/app.php:203 -msgid "Text" -msgstr "ТекÑÑ‚" - -#: lib/app.php:204 -msgid "Voice" -msgstr "ГлаÑ" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "ФакÑ" - -#: lib/app.php:207 -msgid "Video" -msgstr "Видео" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Пејџер" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Рођендан" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Контакт" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Додај контакт" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "ÐдреÑар" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Организација" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Обриши" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Пожељан" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Телефон" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Е-маил" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "ÐдреÑа" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Преузми контакт" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Обриши контакт" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Тип" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "ПоштанÑки број" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Прошири" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Град" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Регија" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Зип код" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Земља" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "ÐдреÑар" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Преузимање" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Уреди" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Ðови адреÑар" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Сними" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Откажи" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index eaeee371618d5924e43359cd1dd0a2f523d566f9..2aa7514268b094dfc13690b9cba8acd43131db98 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/core.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Ivan Petrović , 2012. +# , 2012. # Slobodan Terzić , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 15:04+0000\n" +"Last-Translator: Kostic \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,210 +20,243 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Ð’Ñ€Ñта категорије није унет." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" -msgstr "" +msgstr "Додати још неку категорију?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " -msgstr "" +msgstr "Категорија већ поÑтоји:" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Ð’Ñ€Ñта објекта није унета." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ИД ниÑу унети." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Грешка приликом додавања %s у омиљене." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Ðи једна категорија није означена за бриÑање." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Грешка приликом уклањања %s из омиљених" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Подешавања" -#: js/js.js:645 -msgid "January" -msgstr "" +#: js/js.js:704 +msgid "seconds ago" +msgstr "пре неколико Ñекунди" -#: js/js.js:645 -msgid "February" -msgstr "" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "пре 1 минут" -#: js/js.js:645 -msgid "March" -msgstr "" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "пре {minutes} минута" -#: js/js.js:645 -msgid "April" -msgstr "" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "Пре једног Ñата" -#: js/js.js:645 -msgid "May" -msgstr "" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "Пре {hours} Ñата (Ñати)" -#: js/js.js:645 -msgid "June" -msgstr "" +#: js/js.js:709 +msgid "today" +msgstr "данаÑ" -#: js/js.js:646 -msgid "July" -msgstr "" +#: js/js.js:710 +msgid "yesterday" +msgstr "јуче" -#: js/js.js:646 -msgid "August" -msgstr "" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "пре {days} дана" -#: js/js.js:646 -msgid "September" -msgstr "" +#: js/js.js:712 +msgid "last month" +msgstr "прошлог меÑеца" -#: js/js.js:646 -msgid "October" -msgstr "" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "Пре {months} меÑеца (меÑеци)" -#: js/js.js:646 -msgid "November" -msgstr "" +#: js/js.js:714 +msgid "months ago" +msgstr "меÑеци раније" -#: js/js.js:646 -msgid "December" -msgstr "" +#: js/js.js:715 +msgid "last year" +msgstr "прошле године" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "година раније" + +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Одабери" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" -msgstr "" +msgstr "Откажи" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" -msgstr "" +msgstr "Ðе" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" -msgstr "" +msgstr "Да" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" -msgstr "" +msgstr "У реду" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Ð’Ñ€Ñта објекта није подешена." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" -msgstr "" +msgstr "Грешка" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Име програма није унето." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Потребна датотека {file} није инÑталирана." + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "Грешка у дељењу" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "Грешка код иÑкључења дељења" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" - -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +msgstr "Грешка код промене дозвола" -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Дељено Ñа вама и Ñа групом {group}. Поделио {owner}." -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Поделио Ñа вама {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Подели Ñа" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Подели линк" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Заштићено лозинком" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Лозинка" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "ПоÑтави датум иÑтека" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Датум иÑтека" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Подели поштом:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "ОÑобе ниÑу пронађене." -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Поновно дељење није дозвољено" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Подељено унутар {item} Ñа {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Ðе дели" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "може да мења" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "права приÑтупа" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "направи" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "ажурирај" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "обриши" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "подели" -#: js/share.js:317 js/share.js:476 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" -msgstr "" +msgstr "Заштићено лозинком" -#: js/share.js:489 +#: js/share.js:533 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Грешка код поништавања датума иÑтека" -#: js/share.js:501 +#: js/share.js:545 msgid "Error setting expiration date" -msgstr "" +msgstr "Грешка код поÑтављања датума иÑтека" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" -msgstr "" +msgstr "Поништавање лозинке за ownCloud" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" @@ -232,19 +267,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Добићете везу за реÑетовање лозинке путем е-поште." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Захтевано" +msgid "Reset email send." +msgstr "Захтев је поÑлат поштом." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "ÐеÑупела пријава!" +msgid "Request failed!" +msgstr "Захтев одбијен!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "КориÑничко име" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Захтевај реÑетовање" @@ -286,7 +321,7 @@ msgstr "Помоћ" #: templates/403.php:12 msgid "Access forbidden" -msgstr "" +msgstr "Забрањен приÑтуп" #: templates/404.php:12 msgid "Cloud not found" @@ -294,74 +329,189 @@ msgstr "Облак није нађен" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" -msgstr "" +msgstr "Измени категорије" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" -msgstr "" +msgstr "Додај" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "СигурноÑно упозорење" #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Поуздан генератор Ñлучајних бројева није доÑтупан, предлажемо да укључите PHP проширење OpenSSL." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Без поузданог генератора Ñлучајнох бројева нападач лако може предвидети лозинку за поништавање кључа шифровања и отети вам налог." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Тренутно Ñу ваши подаци и датотеке доÑтупне Ñа интернета. Датотека .htaccess коју је обезбедио пакет ownCloud не функционише. Саветујемо вам да подеÑите веб Ñервер тако да директоријум Ñа подацима не буде изложен или да га премеÑтите изван коренÑког директоријума веб Ñервера." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Ðаправи админиÑтративни налог" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Ðапредно" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Фацикла података" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Подешавање базе" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "ће бити коришћен" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "КориÑник базе" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Лозинка базе" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Име базе" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "Радни проÑтор базе података" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Домаћин базе" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Заврши подешавање" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Ðедеља" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Понедељак" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Уторак" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Среда" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Четвртак" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Петак" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Субота" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Јануар" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Фебруар" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Март" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Ðприл" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Мај" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Јун" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Јул" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Септембар" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Октобар" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Ðовембар" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Децембар" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "веб ÑервиÑи под контролом" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Одјава" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "ÐутоматÑка пријава је одбијена!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Ðко уÑкоро не промените лозинку ваш налог може бити компромитован!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Промените лозинку да биÑте обезбедили налог." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Изгубили Ñте лозинку?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "упамти" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Пријава" @@ -376,3 +526,17 @@ msgstr "претходно" #: templates/part.pagenavi.php:20 msgid "next" msgstr "Ñледеће" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "СигурноÑно упозорење!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Потврдите лозинку.
            Из ÑигурноÑних разлога затрежићемо вам да два пута унеÑете лозинку." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Потврди" diff --git a/l10n/sr/files.po b/l10n/sr/files.po index 5d5d14a210996c4d00aef67c4ab1d36fb2d49179..2eac1068a25a356c6383aabeac9f782f227f72df 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/files.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Ivan Petrović , 2012. # Slobodan Terzić , 2011, 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 18:27+0000\n" +"Last-Translator: Rancher \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,281 +22,248 @@ msgstr "" #: ajax/upload.php:20 msgid "There is no error, the file uploaded with success" -msgstr "Ðема грешке, фајл је уÑпешно поÑлат" +msgstr "Ðије дошло до грешке. Датотека је уÑпешно отпремљена." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "ПоÑлати фајл превазилази директиву upload_max_filesize из " +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Отпремљена датотека прелази Ñмерницу upload_max_filesize у датотеци php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" -msgstr "ПоÑлати фајл превазилази директиву MAX_FILE_SIZE која је наведена у ХТМЛ форми" +msgstr "Отпремљена датотека прелази Ñмерницу MAX_FILE_SIZE која је наведена у HTML обраÑцу" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" -msgstr "ПоÑлати фајл је Ñамо делимично отпремљен!" +msgstr "Датотека је делимично отпремљена" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" -msgstr "Ðиједан фајл није поÑлат" +msgstr "Датотека није отпремљена" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "ÐедоÑтаје привремена фаÑцикла" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" -msgstr "" +msgstr "Ðе могу да пишем на диÑк" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" -msgstr "Фајлови" +msgstr "Датотеке" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "Укини дељење" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Обриши" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Преименуј" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} већ поÑтоји" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" -msgstr "" +msgstr "замени" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "предложи назив" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" -msgstr "" +msgstr "откажи" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "замењено {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" -msgstr "" +msgstr "опозови" -#: js/filelist.js:241 -msgid "with" -msgstr "" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "замењено {new_name} Ñа {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "укинуто дељење {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "обриÑано {files}" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "ÐеиÑправан назив. Следећи знакови ниÑу дозвољени: \\, /, <, >, :, \", |, ? и *." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." -msgstr "" +msgstr "правим ZIP датотеку…" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "" +msgstr "Ðе могу да отпремим датотеку као фаÑциклу или она има 0 бајтова" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" -msgstr "" +msgstr "Грешка при отпремању" + +#: js/files.js:235 +msgid "Close" +msgstr "Затвори" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" -msgstr "" +msgstr "Ðа чекању" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "Отпремам 1 датотеку" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "Отпремам {count} датотеке/а" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." -msgstr "" +msgstr "Отпремање је прекинуто." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" +msgstr "Отпремање датотеке је у току. Ðко Ñада напуÑтите Ñтраницу, прекинућете отпремање." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "ÐеиÑправан назив фаÑцикле. „Дељено“ кориÑти Оунклауд." -#: js/files.js:667 -msgid "files scanned" -msgstr "" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "Скенирано датотека: {count}" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "грешка при Ñкенирању" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" -msgstr "Име" +msgstr "Ðазив" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Величина" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" -msgstr "Задња измена" - -#: js/files.js:777 -msgid "folder" -msgstr "" - -#: js/files.js:779 -msgid "folders" -msgstr "" - -#: js/files.js:787 -msgid "file" -msgstr "" - -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" +msgstr "Измењено" -#: js/files.js:840 -msgid "days ago" -msgstr "" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 фаÑцикла" -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} фаÑцикле/и" -#: js/files.js:844 -msgid "last year" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 датотека" -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} датотеке/а" #: templates/admin.php:5 msgid "File handling" -msgstr "" +msgstr "Управљање датотекама" #: templates/admin.php:7 msgid "Maximum upload size" -msgstr "МакÑимална величина пошиљке" +msgstr "Ðајвећа величина датотеке" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " -msgstr "" +msgstr "највећа величина:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." -msgstr "" +msgstr "Ðеопходно за преузимање вишеделних датотека и фаÑцикли." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" -msgstr "" +msgstr "Омогући преузимање у ZIP-у" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" -msgstr "" +msgstr "0 је неограничено" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" -msgstr "" +msgstr "Ðајвећа величина ZIP датотека" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Сачувај" #: templates/index.php:7 msgid "New" -msgstr "Ðови" +msgstr "Ðова" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" -msgstr "текÑтуални фајл" +msgstr "текÑтуална датотека" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "фаÑцикла" -#: templates/index.php:11 -msgid "From url" -msgstr "" +#: templates/index.php:14 +msgid "From link" +msgstr "Са везе" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" -msgstr "Пошаљи" +msgstr "Отпреми" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" -msgstr "" +msgstr "Прекини отпремање" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" -msgstr "Овде нема ничег. Пошаљите нешто!" - -#: templates/index.php:50 -msgid "Share" -msgstr "" +msgstr "Овде нема ничег. Отпремите нешто!" -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Преузми" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" -msgstr "Пошиљка је превелика" +msgstr "Датотека је превелика" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "Фајлови које желите да пошаљете превазилазе ограничење макÑималне величине пошиљке на овом Ñерверу." +msgstr "Датотеке које желите да отпремите прелазе ограничење у величини." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." -msgstr "" +msgstr "Скенирам датотеке…" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" -msgstr "" +msgstr "Тренутно Ñкенирање" diff --git a/l10n/sr/files_encryption.po b/l10n/sr/files_encryption.po index b1c6edcc0c17626ca571c32ffd9bd6b7ca88de97..a0a21dd2c8412e0316440aedb7304c3583936eab 100644 --- a/l10n/sr/files_encryption.po +++ b/l10n/sr/files_encryption.po @@ -3,32 +3,34 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 15:06+0000\n" +"Last-Translator: Kostic \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: templates/settings.php:3 msgid "Encryption" -msgstr "" +msgstr "Шифровање" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "" +msgstr "Ðе шифруј Ñледеће типове датотека" #: templates/settings.php:5 msgid "None" -msgstr "" +msgstr "Ðишта" -#: templates/settings.php:10 +#: templates/settings.php:12 msgid "Enable Encryption" -msgstr "" +msgstr "Омогући шифровање" diff --git a/l10n/sr/files_odfviewer.po b/l10n/sr/files_odfviewer.po deleted file mode 100644 index 9b251f5769fb3cd8d9c48c303fc8a360a3a99a7d..0000000000000000000000000000000000000000 --- a/l10n/sr/files_odfviewer.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:9 -msgid "Close" -msgstr "" diff --git a/l10n/sr/files_pdfviewer.po b/l10n/sr/files_pdfviewer.po deleted file mode 100644 index 2cd94b83aa0b5ea13d05ddc71dd206992e22906f..0000000000000000000000000000000000000000 --- a/l10n/sr/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/sr/files_texteditor.po b/l10n/sr/files_texteditor.po deleted file mode 100644 index d7e1815f9a3d8761974166870464b80d92e5c9ef..0000000000000000000000000000000000000000 --- a/l10n/sr/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/sr/gallery.po b/l10n/sr/gallery.po deleted file mode 100644 index befc9958cc5e7028c06d1fdc7a0d0ff082fe3657..0000000000000000000000000000000000000000 --- a/l10n/sr/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Terzić , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Претражи поново" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Ðазад" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/sr/lib.po b/l10n/sr/lib.po index f8fa96c4864bcbcfca9745ff5bb964ce2a2ed39b..0ffcb3e09d3cd7f91b6ccb54065f3f911c5d2160 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/lib.po @@ -3,123 +3,152 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Ivan Petrović , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-02 00:02+0100\n" +"PO-Revision-Date: 2012-12-01 19:18+0000\n" +"Last-Translator: Rancher \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "Помоћ" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "Лично" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Подешавања" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "КориÑници" -#: app.php:312 +#: app.php:309 msgid "Apps" -msgstr "" +msgstr "Ðпликације" -#: app.php:314 +#: app.php:311 msgid "Admin" -msgstr "" +msgstr "ÐдминиÑтрација" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." -msgstr "" +msgstr "Преузимање ZIP-а је иÑкључено." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." -msgstr "" +msgstr "Датотеке морате преузимати једну по једну." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" -msgstr "" +msgstr "Ðазад на датотеке" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." -msgstr "" +msgstr "Изабране датотеке Ñу превелике да биÑте направили ZIP датотеку." #: json.php:28 msgid "Application is not enabled" -msgstr "" +msgstr "Ðпликација није омогућена" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "Грешка при провери идентитета" #: json.php:51 msgid "Token expired. Please reload page." -msgstr "" +msgstr "Жетон је иÑтекао. Поново учитајте Ñтраницу." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Датотеке" -#: template.php:86 +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Слике" + +#: template.php:103 msgid "seconds ago" -msgstr "" +msgstr "пре неколико Ñекунди" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" -msgstr "" +msgstr "пре 1 минут" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" -msgstr "" +msgstr "пре %d минута" + +#: template.php:106 +msgid "1 hour ago" +msgstr "пре 1 Ñат" -#: template.php:91 +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "пре %d Ñата/и" + +#: template.php:108 msgid "today" -msgstr "" +msgstr "данаÑ" -#: template.php:92 +#: template.php:109 msgid "yesterday" -msgstr "" +msgstr "јуче" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" -msgstr "" +msgstr "пре %d дана" -#: template.php:94 +#: template.php:111 msgid "last month" -msgstr "" +msgstr "прошлог меÑеца" -#: template.php:95 -msgid "months ago" -msgstr "" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "пре %d меÑеца/и" -#: template.php:96 +#: template.php:113 msgid "last year" -msgstr "" +msgstr "прошле године" -#: template.php:97 +#: template.php:114 msgid "years ago" -msgstr "" +msgstr "година раније" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "" +msgstr "%s је доÑтупна. Погледајте више информација." -#: updater.php:68 +#: updater.php:77 msgid "up to date" -msgstr "" +msgstr "је ажурна." -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" -msgstr "" +msgstr "провера ажурирања је онемогућена." + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Ðе могу да пронађем категорију „%s“." diff --git a/l10n/sr/media.po b/l10n/sr/media.po deleted file mode 100644 index 49f28998de20b8902bc06b394182b554b0219b65..0000000000000000000000000000000000000000 --- a/l10n/sr/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Terzić , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Музика" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "ПуÑти" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Паузирај" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Претходна" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Следећа" - -#: templates/music.php:7 -msgid "Mute" -msgstr "ИÑкључи звук" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Укључи звук" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Поново претражи збирку" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Извођач" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ðлбум" - -#: templates/music.php:39 -msgid "Title" -msgstr "ÐаÑлов" diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index 76f4027a7f30b5448cd251e3f16e2e9fe66b3509..3d725b35b0890ceed2c0b334ef411cf2d9852b0c 100644 --- a/l10n/sr/settings.po +++ b/l10n/sr/settings.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # Slobodan Terzić , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 15:29+0000\n" +"Last-Translator: Kostic \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,175 +19,91 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" -msgstr "" - -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" +msgstr "Грешка приликом учитавања ÑпиÑка из Складишта Програма" -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "Група већ поÑтоји" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "Ðе могу да додам групу" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Ðе могу да укључим програм" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" -msgstr "" +msgstr "Е-порука Ñачувана" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" -msgstr "" +msgstr "ÐеиÑправна е-адреÑа" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID је измењен" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "ÐеиÑправан захтев" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "Ðе могу да уклоним групу" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Грешка при аутентификацији" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "Ðе могу да уклоним кориÑника" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" -msgstr "Језик је измењен" +msgstr "Језик је промењен" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Управници не могу Ñебе уклонити из админ групе" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "Ðе могу да додам кориÑника у групу %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "Ðе могу да уклоним кориÑника из групе %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" -msgstr "" +msgstr "ИÑкључи" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" -msgstr "" +msgstr "Укључи" #: js/personal.js:69 msgid "Saving..." -msgstr "" +msgstr "Чување у току..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" -msgstr "" - -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" +msgstr "__language_name__" #: templates/apps.php:10 msgid "Add your App" -msgstr "" +msgstr "Додајте ваш програм" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Више програма" #: templates/apps.php:27 msgid "Select an App" @@ -194,52 +111,52 @@ msgstr "Изаберите програм" #: templates/apps.php:31 msgid "See application page at apps.owncloud.com" -msgstr "" +msgstr "Погледајте Ñтраницу Ñа програмима на apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "-лиценцирао " #: templates/help.php:9 msgid "Documentation" -msgstr "" +msgstr "Документација" #: templates/help.php:10 msgid "Managing Big Files" -msgstr "" +msgstr "Управљање великим датотекама" #: templates/help.php:11 msgid "Ask a question" msgstr "ПоÑтавите питање" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Проблем у повезивању Ñа базом помоћи" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Отиђите тамо ручно." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Одговор" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "ИÑкориÑтили Ñте %s од дозвољених %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" -msgstr "" +msgstr "Стони и мобилни клијенти за уÑклађивање" #: templates/personal.php:13 msgid "Download" -msgstr "" +msgstr "Преузимање" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Лозинка је промењена" #: templates/personal.php:20 msgid "Unable to change your password" @@ -271,7 +188,7 @@ msgstr "Ваша адреÑа е-поште" #: templates/personal.php:32 msgid "Fill in an email address to enable password recovery" -msgstr "" +msgstr "Ун" #: templates/personal.php:38 templates/personal.php:39 msgid "Language" @@ -285,6 +202,16 @@ msgstr " Помозите у превођењу" msgid "use this address to connect to your ownCloud in your file manager" msgstr "кориÑтите ову адреÑу да би Ñе повезали на ownCloud путем менаџњера фајлова" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Развијају Оунклауд (ownCloud) заједница, изворни код је издат под ÐГПЛ лиценцом." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Име" @@ -303,19 +230,19 @@ msgstr "Ðаправи" #: templates/users.php:35 msgid "Default Quota" -msgstr "" +msgstr "Подразумевано ограничење" #: templates/users.php:55 templates/users.php:138 msgid "Other" -msgstr "" +msgstr "Друго" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "" +msgstr "Управник групе" #: templates/users.php:82 msgid "Quota" -msgstr "" +msgstr "Ограничење" #: templates/users.php:146 msgid "Delete" diff --git a/l10n/sr/tasks.po b/l10n/sr/tasks.po deleted file mode 100644 index d20e414436bca6e1283e636d2f0179e9aecd7075..0000000000000000000000000000000000000000 --- a/l10n/sr/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/sr/user_migrate.po b/l10n/sr/user_migrate.po deleted file mode 100644 index 9c6020b5fc4a8f263c42728d2c82e45929ce09bc..0000000000000000000000000000000000000000 --- a/l10n/sr/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/sr/user_openid.po b/l10n/sr/user_openid.po deleted file mode 100644 index a5de6c42c8d85a541547f099ca3064083fa0e1b8..0000000000000000000000000000000000000000 --- a/l10n/sr/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/sr/impress.po b/l10n/sr/user_webdavauth.po similarity index 74% rename from l10n/sr/impress.po rename to l10n/sr/user_webdavauth.po index 230778dd99df70d89e7d195851d37ae658cff875..41b10f06711ad478e2d97a0e617bc80f5239bf95 100644 --- a/l10n/sr/impress.po +++ b/l10n/sr/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: templates/presentations.php:7 -msgid "Documentation" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/sr@latin/admin_dependencies_chk.po b/l10n/sr@latin/admin_dependencies_chk.po deleted file mode 100644 index 826e736f5e3f3f78684a4e3cf1df44cbd966a6e2..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/sr@latin/admin_migrate.po b/l10n/sr@latin/admin_migrate.po deleted file mode 100644 index b76fec786a60ddd671cd3371efa50820ea219704..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/sr@latin/bookmarks.po b/l10n/sr@latin/bookmarks.po deleted file mode 100644 index e78fc1875ccdae07c1865c079fbf2d57231af368..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/sr@latin/calendar.po b/l10n/sr@latin/calendar.po deleted file mode 100644 index fd13b07471facf4ad2e08f4a3893474242150842..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Terzić , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "PogreÅ¡an kalendar" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Vremenska zona je promenjena" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Neispravan zahtev" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalendar" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "RoÄ‘endan" - -#: lib/app.php:122 -msgid "Business" -msgstr "Posao" - -#: lib/app.php:123 -msgid "Call" -msgstr "Poziv" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klijenti" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "DostavljaÄ" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Praznici" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ideje" - -#: lib/app.php:128 -msgid "Journey" -msgstr "putovanje" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "jubilej" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Sastanak" - -#: lib/app.php:131 -msgid "Other" -msgstr "Drugo" - -#: lib/app.php:132 -msgid "Personal" -msgstr "LiÄno" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekti" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Pitanja" - -#: lib/app.php:135 -msgid "Work" -msgstr "Posao" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Novi kalendar" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ne ponavlja se" - -#: lib/object.php:373 -msgid "Daily" -msgstr "dnevno" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "nedeljno" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "svakog dana u nedelji" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "dvonedeljno" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "meseÄno" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "godiÅ¡nje" - -#: lib/object.php:388 -msgid "never" -msgstr "" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "" - -#: lib/object.php:429 -msgid "second" -msgstr "" - -#: lib/object.php:430 -msgid "third" -msgstr "" - -#: lib/object.php:431 -msgid "fourth" -msgstr "" - -#: lib/object.php:432 -msgid "fifth" -msgstr "" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "" - -#: lib/search.php:43 -msgid "Cal." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Ceo dan" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Naslov" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Nedelja" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Mesec" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Spisak" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Danas" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "KalDav veza" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Preuzmi" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Uredi" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "ObriÅ¡i" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Novi kalendar" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Uredi kalendar" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Prikazanoime" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktivan" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Boja kalendara" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Snimi" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "PoÅ¡alji" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Otkaži" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Uredi dogaÄ‘aj" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Naslov dogaÄ‘aja" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategorija" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Celodnevni dogaÄ‘aj" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Od" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Do" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Lokacija" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Lokacija dogaÄ‘aja" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Opis" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Opis dogaÄ‘aja" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Ponavljaj" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Napravi novi dogaÄ‘aj" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Vremenska zona" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "" - -#: templates/settings.php:58 -msgid "12h" -msgstr "" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/sr@latin/contacts.po b/l10n/sr@latin/contacts.po deleted file mode 100644 index 826a00d5e68e5fa9d40df80f2899d8c10362cd07..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Terzić , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Podaci o vKarti su neispravni. Ponovo uÄitajte stranicu." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Ovo nije vaÅ¡ adresar." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakt se ne može naći." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Posao" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Kuća" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobilni" - -#: lib/app.php:203 -msgid "Text" -msgstr "Tekst" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Glas" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faks" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Pejdžer" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "RoÄ‘endan" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Dodaj kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizacija" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "ObriÅ¡i" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-mail" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adresa" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "PoÅ¡tanski broj" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "ProÅ¡iri" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Grad" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Regija" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Zip kod" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Zemlja" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Uredi" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index cd06b0f3b2c7e5c3d6a332762c83112aca8ec2c1..c90c97d167dd3164265b7402538e5a468e45307d 100644 --- a/l10n/sr@latin/core.po +++ b/l10n/sr@latin/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +18,241 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "PodeÅ¡avanja" -#: js/js.js:645 -msgid "January" +#: js/js.js:688 +msgid "seconds ago" msgstr "" -#: js/js.js:645 -msgid "February" +#: js/js.js:689 +msgid "1 minute ago" msgstr "" -#: js/js.js:645 -msgid "March" +#: js/js.js:690 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:645 -msgid "April" +#: js/js.js:691 +msgid "1 hour ago" msgstr "" -#: js/js.js:645 -msgid "May" +#: js/js.js:692 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:645 -msgid "June" +#: js/js.js:693 +msgid "today" msgstr "" -#: js/js.js:646 -msgid "July" +#: js/js.js:694 +msgid "yesterday" msgstr "" -#: js/js.js:646 -msgid "August" +#: js/js.js:695 +msgid "{days} days ago" msgstr "" -#: js/js.js:646 -msgid "September" +#: js/js.js:696 +msgid "last month" msgstr "" -#: js/js.js:646 -msgid "October" +#: js/js.js:697 +msgid "{months} months ago" msgstr "" -#: js/js.js:646 -msgid "November" +#: js/js.js:698 +msgid "months ago" msgstr "" -#: js/js.js:646 -msgid "December" +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" msgstr "" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" -msgstr "" +msgstr "Otkaži" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Lozinka" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -232,19 +265,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Dobićete vezu za resetovanje lozinke putem e-poÅ¡te." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Zahtevano" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Nesupela prijava!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "KorisniÄko ime" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Zahtevaj resetovanje" @@ -296,72 +329,187 @@ msgstr "Oblak nije naÄ‘en" msgid "Edit categories" msgstr "" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Napravi administrativni nalog" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Napredno" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Facikla podataka" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "PodeÅ¡avanje baze" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "će biti korišćen" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Korisnik baze" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Lozinka baze" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Ime baze" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Domaćin baze" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "ZavrÅ¡i podeÅ¡avanje" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Nedelja" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "Ponedeljak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Utorak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Sreda" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "ÄŒetvrtak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Petak" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Subota" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Mart" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Maj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Jun" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Jul" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Avgust" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "Septembar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktobar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "Novembar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "Decembar" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Odjava" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Izgubili ste lozinku?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "upamti" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -376,3 +524,17 @@ msgstr "prethodno" #: templates/part.pagenavi.php:20 msgid "next" msgstr "sledeće" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index fdca9ade631aea81f5cf1aab743577648196402a..fbaee12094b00a6cb4d231ad9155dae483cc4ca9 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/files.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,194 +23,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Nema greÅ¡ke, fajl je uspeÅ¡no poslat" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Poslati fajl prevazilazi direktivu upload_max_filesize iz " +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Poslati fajl prevazilazi direktivu MAX_FILE_SIZE koja je navedena u HTML formi" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Poslati fajl je samo delimiÄno otpremljen!" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Nijedan fajl nije poslat" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Nedostaje privremena fascikla" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Fajlovi" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "ObriÅ¡i" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Zatvori" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Ime" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "VeliÄina" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Zadnja izmena" -#: js/files.js:777 -msgid "folder" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:779 -msgid "folders" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:787 -msgid "file" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:789 -msgid "files" -msgstr "" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -221,80 +192,76 @@ msgstr "" msgid "Maximum upload size" msgstr "Maksimalna veliÄina poÅ¡iljke" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Snimi" #: templates/index.php:7 msgid "New" msgstr "" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "PoÅ¡alji" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Ovde nema niÄeg. PoÅ¡aljite neÅ¡to!" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Preuzmi" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "PoÅ¡iljka je prevelika" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Fajlovi koje želite da poÅ¡aljete prevazilaze ograniÄenje maksimalne veliÄine poÅ¡iljke na ovom serveru." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/sr@latin/files_pdfviewer.po b/l10n/sr@latin/files_pdfviewer.po deleted file mode 100644 index c63e430bcb118409f8c9d0b2c7d3a06f7a51beff..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/sr@latin/files_texteditor.po b/l10n/sr@latin/files_texteditor.po deleted file mode 100644 index a3902531ee561667ebd9fd70d8c66d0cc0d00828..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/sr@latin/gallery.po b/l10n/sr@latin/gallery.po deleted file mode 100644 index 7ff467f6837c2e6168ae75dc93a0b70a159a9cd1..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/gallery.po +++ /dev/null @@ -1,94 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/sr@latin/impress.po b/l10n/sr@latin/impress.po deleted file mode 100644 index 7d751ecd400125554802ccceca12d71a601318ef..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/sr@latin/lib.po b/l10n/sr@latin/lib.po index 8c7d9b18bd87ee7ecd2530c4ecda7dd744af5e06..edcbb0203e215883ab6bfe383695512d480de9c2 100644 --- a/l10n/sr@latin/lib.po +++ b/l10n/sr@latin/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "Pomoć" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "LiÄno" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "PodeÅ¡avanja" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "Korisnici" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "GreÅ¡ka pri autentifikaciji" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Fajlovi" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Tekst" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/sr@latin/media.po b/l10n/sr@latin/media.po deleted file mode 100644 index 4bbe1bb1bce688950afdfd91e91a63652738ea20..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Terzić , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Muzika" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Pusti" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Pauziraj" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Prethodna" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Sledeća" - -#: templates/music.php:7 -msgid "Mute" -msgstr "IskljuÄi zvuk" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "UkljuÄi zvuk" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Ponovo pretraži zbirku" - -#: templates/music.php:37 -msgid "Artist" -msgstr "IzvoÄ‘aÄ" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Naslov" diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po index 375060e8ae307671f3293a214b5ed4751c14c8cc..d871fb7eb2bdf19c54fb21a44671d836e3b262a1 100644 --- a/l10n/sr@latin/settings.po +++ b/l10n/sr@latin/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,70 +18,73 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID je izmenjen" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Neispravan zahtev" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "GreÅ¡ka pri autentifikaciji" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Jezik je izmenjen" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "" @@ -89,97 +92,10 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -212,21 +128,21 @@ msgstr "" msgid "Ask a question" msgstr "Postavite pitanje" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problem u povezivanju sa bazom pomoći" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "OtiÄ‘ite tamo ruÄno." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Odgovor" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -235,7 +151,7 @@ msgstr "" #: templates/personal.php:13 msgid "Download" -msgstr "" +msgstr "Preuzmi" #: templates/personal.php:19 msgid "Your password was changed" @@ -263,7 +179,7 @@ msgstr "Izmeni lozinku" #: templates/personal.php:30 msgid "Email" -msgstr "" +msgstr "E-mail" #: templates/personal.php:31 msgid "Your email address" @@ -285,6 +201,16 @@ msgstr "" msgid "use this address to connect to your ownCloud in your file manager" msgstr "koristite ovu adresu da bi se povezali na ownCloud putem menadžnjera fajlova" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Ime" @@ -307,7 +233,7 @@ msgstr "" #: templates/users.php:55 templates/users.php:138 msgid "Other" -msgstr "" +msgstr "Drugo" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" diff --git a/l10n/sr@latin/tasks.po b/l10n/sr@latin/tasks.po deleted file mode 100644 index c4dff86e0a6bb5c4274964f174134436a9339d7c..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/sr@latin/user_migrate.po b/l10n/sr@latin/user_migrate.po deleted file mode 100644 index 198d0844fdda0be0617f57561ab6fb4a60d4dd4a..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/sr@latin/user_openid.po b/l10n/sr@latin/user_openid.po deleted file mode 100644 index 0c9792f1bb04a2f51328cbea4413046031495c56..0000000000000000000000000000000000000000 --- a/l10n/sr@latin/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/sr@latin/files_odfviewer.po b/l10n/sr@latin/user_webdavauth.po similarity index 75% rename from l10n/sr@latin/files_odfviewer.po rename to l10n/sr@latin/user_webdavauth.po index 3bd414595db270ffcdb32a499c39f7c9982fff94..d478b05a6f8419aa32001946f6400a06e149a12d 100644 --- a/l10n/sr@latin/files_odfviewer.po +++ b/l10n/sr@latin/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr@latin\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/sv/admin_dependencies_chk.po b/l10n/sv/admin_dependencies_chk.po deleted file mode 100644 index daf145daa7d575401d1a3ad07da2278acd6e9237..0000000000000000000000000000000000000000 --- a/l10n/sv/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Magnus Höglund , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 10:16+0000\n" -"Last-Translator: Magnus Höglund \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "Modulen php-json behövs av mÃ¥nga applikationer som interagerar." - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "Modulen php-curl behövs för att hämta sidans titel när du lägger till bokmärken." - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "Modulen php-gd behövs för att skapa miniatyrer av dina bilder." - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "Modulen php-ldap behövs för att ansluta mot din ldapserver." - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "Modulen php-zip behövs för att kunna ladda ner flera filer pÃ¥ en gÃ¥ng." - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "Modulen php-mb_multibyte behövs för att hantera korrekt teckenkodning." - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "Modulen php-ctype behövs för att validera data." - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "Modulen php-xml behövs för att kunna dela filer med webdav." - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "Direktivet allow_url_fopen i php.ini bör sättas till 1 för att kunna hämta kunskapsbasen frÃ¥n OCS-servrar." - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "Modulen php-pdo behövs för att kunna lagra ownCloud data i en databas." - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "Beroenden status" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "Används av:" diff --git a/l10n/sv/admin_migrate.po b/l10n/sv/admin_migrate.po deleted file mode 100644 index 68573f422149278245265004bcb57f0de3167bf5..0000000000000000000000000000000000000000 --- a/l10n/sv/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Magnus Höglund , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 09:53+0000\n" -"Last-Translator: Magnus Höglund \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "Exportera denna instans av ownCloud" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "Detta kommer att skapa en komprimerad fil som innehÃ¥ller all data frÃ¥n denna instans av ownCloud.\n Välj exporttyp:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "Exportera" diff --git a/l10n/sv/bookmarks.po b/l10n/sv/bookmarks.po deleted file mode 100644 index cd3fb598dab51037dffa7f0e99b1268b36c9cfbd..0000000000000000000000000000000000000000 --- a/l10n/sv/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-30 02:02+0200\n" -"PO-Revision-Date: 2012-07-29 20:39+0000\n" -"Last-Translator: maghog \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "Bokmärken" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "namnlös" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "Dra till din webbläsares bokmärken och klicka pÃ¥ det när du vill bokmärka en webbsida snabbt:" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "Läs senare" - -#: templates/list.php:13 -msgid "Address" -msgstr "Adress" - -#: templates/list.php:14 -msgid "Title" -msgstr "Titel" - -#: templates/list.php:15 -msgid "Tags" -msgstr "Taggar" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "Spara bokmärke" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "Du har inga bokmärken" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Skriptbokmärke
            " diff --git a/l10n/sv/calendar.po b/l10n/sv/calendar.po deleted file mode 100644 index 1d0bf4409095db02537427f6b3e47e98306361a7..0000000000000000000000000000000000000000 --- a/l10n/sv/calendar.po +++ /dev/null @@ -1,817 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Christer Eriksson , 2012. -# Daniel Sandman , 2012. -# , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Alla kalendrar är inte fullständigt sparade i cache" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Allt verkar vara fullständigt sparat i cache" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Inga kalendrar funna" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Inga händelser funna." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Fel kalender" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Filen innehöll inga händelser eller sÃ¥ är alla händelser redan sparade i kalendern." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "händelser har sparats i den nya kalendern" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "Misslyckad import" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "händelse har sparats i din kalender" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ny tidszon:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Tidszon ändrad" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Ogiltig begäran" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Kalender" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM åååå" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "ddd, MMM d, åååå" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Födelsedag" - -#: lib/app.php:122 -msgid "Business" -msgstr "Företag" - -#: lib/app.php:123 -msgid "Call" -msgstr "Ringa" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Klienter" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Leverantör" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Semester" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Idéer" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Resa" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Jubileum" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Möte" - -#: lib/app.php:131 -msgid "Other" -msgstr "Annat" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Personlig" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projekt" - -#: lib/app.php:134 -msgid "Questions" -msgstr "FrÃ¥gor" - -#: lib/app.php:135 -msgid "Work" -msgstr "Arbetet" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "av" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "Namn saknas" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Ny kalender" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Upprepas inte" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Dagligen" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Varje vecka" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Varje vardag" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Varannan vecka" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Varje mÃ¥nad" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Ã…rligen" - -#: lib/object.php:388 -msgid "never" -msgstr "aldrig" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "efter händelser" - -#: lib/object.php:390 -msgid "by date" -msgstr "efter datum" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "efter dag i mÃ¥naden" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "efter veckodag" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "MÃ¥ndag" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Tisdag" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Onsdag" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Torsdag" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Fredag" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Lördag" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Söndag" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "händelse vecka av mÃ¥nad" - -#: lib/object.php:428 -msgid "first" -msgstr "första" - -#: lib/object.php:429 -msgid "second" -msgstr "andra" - -#: lib/object.php:430 -msgid "third" -msgstr "tredje" - -#: lib/object.php:431 -msgid "fourth" -msgstr "fjärde" - -#: lib/object.php:432 -msgid "fifth" -msgstr "femte" - -#: lib/object.php:433 -msgid "last" -msgstr "sist" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Januari" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Februari" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Mars" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "April" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Maj" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Juni" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Juli" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Augusti" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "September" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Oktober" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "November" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "December" - -#: lib/object.php:488 -msgid "by events date" -msgstr "efter händelsedatum" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "efter Ã¥rsdag(ar)" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "efter veckonummer" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "efter dag och mÃ¥nad" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Datum" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Kal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Sön." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "MÃ¥n." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Tis." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Ons." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Tor." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Fre." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Lör." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Jan." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Feb." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Apr." - -#: templates/calendar.php:8 -msgid "May." -msgstr "Maj." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Jun." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Jul." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Aug." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Sep." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Okt." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Nov." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Dec." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Hela dagen" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Saknade fält" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Rubrik" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "FrÃ¥n datum" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "FrÃ¥n tid" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Till datum" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Till tid" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Händelsen slutar innan den börjar" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Det blev ett databasfel" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Vecka" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "MÃ¥nad" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Lista" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Idag" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Dina kalendrar" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDAV-länk" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Delade kalendrar" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Inga delade kalendrar" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Dela kalender" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Ladda ner" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Redigera" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Radera" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "delad med dig av" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Nya kalender" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Redigera kalender" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Visningsnamn" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktiv" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Kalender-färg" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Spara" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Lägg till" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Avbryt" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Redigera en händelse" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Exportera" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Händelseinfo" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Repetera" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Deltagare" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Dela" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Rubrik för händelsen" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategori" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Separera kategorier med komman" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Redigera kategorier" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Hela dagen" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "FrÃ¥n" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Till" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Avancerade alternativ" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Plats" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Platsen för händelsen" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Beskrivning" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Beskrivning av händelse" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Upprepa" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Avancerad" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Välj veckodagar" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Välj dagar" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "och händelsedagen för Ã¥ret." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "och händelsedagen för mÃ¥naden." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Välj mÃ¥nader" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Välj veckor" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "och händelsevecka för Ã¥ret." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Hur ofta" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Slut" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "Händelser" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "skapa en ny kalender" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Importera en kalenderfil" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Välj en kalender" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Namn pÃ¥ ny kalender" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Ta ett ledigt namn!" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "En kalender med detta namn finns redan. Om du fortsätter ändÃ¥ sÃ¥ kommer dessa kalendrar att slÃ¥s samman." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Importera" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Stäng " - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Skapa en ny händelse" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Visa en händelse" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Inga kategorier valda" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "av" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "pÃ¥" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Tidszon" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Cache" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Töm cache för upprepade händelser" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "Kalender CalDAV synkroniserar adresser" - -#: templates/settings.php:87 -msgid "more info" -msgstr "mer info" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Primary address (Kontact et al)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Read only iCalendar link(s)" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Användare" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "välj användare" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Redigerbar" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Grupper" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "Välj grupper" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "Gör offentlig" diff --git a/l10n/sv/contacts.po b/l10n/sv/contacts.po deleted file mode 100644 index 635ea51f8eb3240cd7f7f3370db7dcd182783050..0000000000000000000000000000000000000000 --- a/l10n/sv/contacts.po +++ /dev/null @@ -1,958 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Christer Eriksson , 2012. -# Daniel Sandman , 2012. -# Magnus Höglund , 2012. -# , 2012. -# , 2011, 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 07:00+0000\n" -"Last-Translator: Magnus Höglund \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Fel (av)aktivera adressbok." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ID är inte satt." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Kan inte uppdatera adressboken med ett tomt namn." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Fel uppstod när adressbok skulle uppdateras." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Inget ID angett" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Fel uppstod när kontrollsumma skulle sättas." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Inga kategorier valda för borttaging" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Ingen adressbok funnen." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Inga kontakter funna." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "Det uppstod ett fel när kontakten skulle läggas till." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "elementnamn ej angett." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "Kunde inte läsa kontakt:" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "Kan inte lägga till en tom egenskap." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Minst ett fält mÃ¥ste fyllas i." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Försöker lägga till dubblett:" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "IM parameter saknas." - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "Okänt IM:" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "Information om vCard är felaktigt. Vänligen ladda om sidan." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "ID saknas" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "Fel vid läsning av VCard för ID: \"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "kontrollsumma är inte satt." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "Informationen om vCard är fel. Ladda om sidan:" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "NÃ¥got gick fel." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "Inget kontakt-ID angavs." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Fel uppstod vid läsning av kontaktfoto." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Fel uppstod när temporär fil skulle sparas." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Det laddade fotot är inte giltigt." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "Kontakt-ID saknas." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "Ingen sökväg till foto angavs." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Filen existerar inte." - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Fel uppstod när bild laddades." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "Fel vid hämtning av kontakt." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Fel vid hämtning av egenskaper för FOTO." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "Fel vid sparande av kontakt." - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Fel vid storleksförändring av bilden" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Fel vid beskärning av bilden" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Fel vid skapande av tillfällig bild" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Kunde inte hitta bild:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Fel uppstod när kontakt skulle lagras." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Inga fel uppstod. Filen laddades upp utan problem." - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Den uppladdade filen överskrider upload_max_filesize direktivet i php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Den uppladdade filen överskrider MAX_FILE_SIZE direktivet som har angetts i HTML formuläret" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Den uppladdade filen var bara delvist uppladdad" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Ingen fil laddades upp" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "En temporär mapp saknas" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Kunde inte spara tillfällig bild:" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Kunde inte ladda tillfällig bild:" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Ingen fil uppladdad. Okänt fel" - -#: appinfo/app.php:25 -msgid "Contacts" -msgstr "Kontakter" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Tyvärr är denna funktion inte införd än" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Inte införd" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Kunde inte hitta en giltig adress." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Fel" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "Du saknar behörighet att skapa kontakter i" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "Välj en av dina egna adressböcker." - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "Behörighetsfel" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Denna egenskap fÃ¥r inte vara tom." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Kunde inte serialisera element." - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "\"deleteProperty\" anropades utan typargument. Vänligen rapportera till bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Ändra namn" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Inga filer valda för uppladdning" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Filen du försöker ladda upp är större än den maximala storleken för filuppladdning pÃ¥ denna server." - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "Fel vid hämtning av profilbild." - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Välj typ" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "Vissa kontakter är markerade för radering, men är inte raderade än. Vänta tills dom är raderade." - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "Vill du slÃ¥ samman dessa adressböcker?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Resultat:" - -#: js/loader.js:49 -msgid " imported, " -msgstr "importerad," - -#: js/loader.js:49 -msgid " failed." -msgstr "misslyckades." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "Visningsnamn fÃ¥r inte vara tomt." - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "Adressboken hittades inte:" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Det här är inte din adressbok." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "Kontakt kunde inte hittas." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "Jabber" - -#: lib/app.php:121 -msgid "AIM" -msgstr "AIM" - -#: lib/app.php:126 -msgid "MSN" -msgstr "MSN" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "Twitter" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "GoogleTalk" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "Facebook" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "XMPP" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "ICQ" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "Yahoo" - -#: lib/app.php:161 -msgid "Skype" -msgstr "Skype" - -#: lib/app.php:166 -msgid "QQ" -msgstr "QQ" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "GaduGadu" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Arbete" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Hem" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "Annat" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Text" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Röst" - -#: lib/app.php:205 -msgid "Message" -msgstr "Meddelande" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Personsökare" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Internet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Födelsedag" - -#: lib/app.php:253 -msgid "Business" -msgstr "Företag" - -#: lib/app.php:254 -msgid "Call" -msgstr "Ring" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Kunder" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Leverera" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Helgdagar" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Idéer" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Resa" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Jubileum" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Möte" - -#: lib/app.php:263 -msgid "Personal" -msgstr "Privat" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projekt" - -#: lib/app.php:265 -msgid "Questions" -msgstr "FrÃ¥gor" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}'s födelsedag" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Kontakt" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "Du saknar behörighet för att ändra denna kontakt." - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "Du saknar behörighet för att radera denna kontakt." - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Lägg till kontakt" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "Importera" - -#: templates/index.php:18 -msgid "Settings" -msgstr "Inställningar" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adressböcker" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Stäng" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Kortkommandon" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Navigering" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Nästa kontakt i listan" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "FöregÃ¥ende kontakt i listan" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Visa/dölj aktuell adressbok" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "Nästa adressbok" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "FöregÃ¥ende adressbok" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Ã…tgärder" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "Uppdatera kontaktlistan" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Lägg till ny kontakt" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Lägg till ny adressbok" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Radera denna kontakt" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "Släpp foto för att ladda upp" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Ta bort aktuellt foto" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Redigera aktuellt foto" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Ladda upp ett nytt foto" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "Välj foto frÃ¥n ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr " anpassad, korta namn, hela namn, bakÃ¥t eller bakÃ¥t med komma" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Redigera detaljer för namn" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organisation" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Radera" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Smeknamn" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Ange smeknamn" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Webbplats" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "GÃ¥ till webbplats" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-åååå" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Grupper" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Separera grupperna med kommatecken" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Editera grupper" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Föredragen" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Vänligen ange en giltig e-postadress." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Ange e-postadress" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Posta till adress." - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Ta bort e-postadress" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Ange telefonnummer" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Ta bort telefonnummer" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "Instant Messenger" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "Radera IM" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Visa pÃ¥ karta" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Redigera detaljer för adress" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Lägg till noteringar här." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Lägg till fält" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "E-post" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "Instant Messaging" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adress" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Notering" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "Ladda ner kontakt" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Radera kontakt" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Den tillfälliga bilden har raderats frÃ¥n cache." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Editera adress" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Typ" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Postbox" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Gatuadress" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Gata och nummer" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Utökad" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Lägenhetsnummer" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Stad" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Län" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "T.ex. stat eller provins" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Postnummer" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Postnummer" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Land" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adressbok" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Ledande titlar" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Fröken" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Fru" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Herr" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Herr" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Fru" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Förnamn" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Mellannamn" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Efternamn" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Efterställda titlar" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "Kand. Jur." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Fil.dr." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "Importera en kontaktfil" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Vänligen välj adressboken" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "skapa en ny adressbok" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Namn för ny adressbok" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "Importerar kontakter" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Du har inga kontakter i din adressbok." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "Lägg till en kontakt" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Välj adressböcker" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Ange namn" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Ange beskrivning" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV synkningsadresser" - -#: templates/settings.php:3 -msgid "more info" -msgstr "mer information" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Primär adress (Kontakt o.a.)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "Visa CardDav-länk" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "Visa skrivskyddad VCF-länk" - -#: templates/settings.php:26 -msgid "Share" -msgstr "Dela" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Nedladdning" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Redigera" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Ny adressbok" - -#: templates/settings.php:44 -msgid "Name" -msgstr "Namn" - -#: templates/settings.php:45 -msgid "Description" -msgstr "Beskrivning" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Spara" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Avbryt" - -#: templates/settings.php:52 -msgid "More..." -msgstr "Mer..." diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 1eaf985129e8fda82fd660d4440ba071c9d5ffac..e1789e690c66eda720b4b9798914b179e34c3014 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/core.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-30 02:02+0200\n" -"PO-Revision-Date: 2012-09-29 11:11+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 07:19+0000\n" "Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -23,208 +23,241 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Programnamn har inte angetts." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Kategorityp inte angiven." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Ingen kategori att lägga till?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Denna kategori finns redan:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Objekttyp inte angiven." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID inte angiven." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Fel vid tillägg av %s till favoriter." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Inga kategorier valda för radering." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Fel vid borttagning av %s frÃ¥n favoriter." + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "Inställningar" -#: js/js.js:645 -msgid "January" -msgstr "Januari" +#: js/js.js:688 +msgid "seconds ago" +msgstr "sekunder sedan" -#: js/js.js:645 -msgid "February" -msgstr "Februari" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 minut sedan" -#: js/js.js:645 -msgid "March" -msgstr "Mars" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{minutes} minuter sedan" -#: js/js.js:645 -msgid "April" -msgstr "April" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "1 timme sedan" -#: js/js.js:645 -msgid "May" -msgstr "Maj" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "{hours} timmar sedan" -#: js/js.js:645 -msgid "June" -msgstr "Juni" +#: js/js.js:693 +msgid "today" +msgstr "i dag" -#: js/js.js:646 -msgid "July" -msgstr "Juli" +#: js/js.js:694 +msgid "yesterday" +msgstr "i gÃ¥r" -#: js/js.js:646 -msgid "August" -msgstr "Augusti" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{days} dagar sedan" -#: js/js.js:646 -msgid "September" -msgstr "September" +#: js/js.js:696 +msgid "last month" +msgstr "förra mÃ¥naden" -#: js/js.js:646 -msgid "October" -msgstr "Oktober" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "{months} mÃ¥nader sedan" -#: js/js.js:646 -msgid "November" -msgstr "November" +#: js/js.js:698 +msgid "months ago" +msgstr "mÃ¥nader sedan" -#: js/js.js:646 -msgid "December" -msgstr "December" +#: js/js.js:699 +msgid "last year" +msgstr "förra Ã¥ret" -#: js/oc-dialogs.js:123 +#: js/js.js:700 +msgid "years ago" +msgstr "Ã¥r sedan" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "Välj" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Avbryt" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Nej" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Inga kategorier valda för radering." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Objekttypen är inte specificerad." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "Fel" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr " Namnet pÃ¥ appen är inte specificerad." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Den nödvändiga filen {file} är inte installerad!" + +#: js/share.js:124 msgid "Error while sharing" msgstr "Fel vid delning" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "Fel när delning skulle avslutas" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "Fel vid ändring av rättigheter" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "Delas med dig och gruppen" - -#: js/share.js:130 -msgid "by" -msgstr "av" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Delad med dig och gruppen {group} av {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "Delas med dig av" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Delad med dig av {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "Delad med" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "Delad med länk" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "Lösenordsskydda" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Lösenord" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "Sätt utgÃ¥ngsdatum" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "UtgÃ¥ngsdatum" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "Dela via e-post:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "Hittar inga användare" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "Dela vidare är inte tillÃ¥tet" -#: js/share.js:250 -msgid "Shared in" -msgstr "Delas i" - -#: js/share.js:250 -msgid "with" -msgstr "med" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Delad i {item} med {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "Sluta dela" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "kan redigera" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "Ã¥tkomstkontroll" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "skapa" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "uppdatera" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "radera" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "dela" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "Lösenordsskyddad" -#: js/share.js:489 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "Fel vid borttagning av utgÃ¥ngsdatum" -#: js/share.js:501 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "Fel vid sättning av utgÃ¥ngsdatum" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud lösenordsÃ¥terställning" @@ -237,15 +270,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "Du fÃ¥r en länk att Ã¥terställa ditt lösenord via e-post." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Begärd" +msgid "Reset email send." +msgstr "Ã…terställ skickad e-post." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Misslyckad inloggning!" +msgid "Request failed!" +msgstr "Begäran misslyckades!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Användarnamn" @@ -301,72 +334,187 @@ msgstr "Hittade inget moln" msgid "Edit categories" msgstr "Redigera kategorier" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Lägg till" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Säkerhetsvarning" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Ingen säker slumptalsgenerator finns tillgänglig. Du bör aktivera PHP OpenSSL-tillägget." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Utan en säker slumptalsgenerator kan angripare fÃ¥ möjlighet att förutsäga lösenordsÃ¥terställningar och ta över ditt konto." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Din datakatalog och dina filer är förmodligen tillgängliga frÃ¥n Internet. Den .htaccess-fil som ownCloud tillhandahÃ¥ller fungerar inte. Vi rekommenderar starkt att du konfigurerar webbservern sÃ¥ att datakatalogen inte längre är tillgänglig eller att du flyttar datakatalogen utanför webbserverns dokument-root." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Skapa ett administratörskonto" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Avancerat" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Datamapp" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Konfigurera databasen" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "kommer att användas" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Databasanvändare" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Lösenord till databasen" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Databasnamn" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Databas tabellutrymme" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Databasserver" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Avsluta installation" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "Söndag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "MÃ¥ndag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "Tisdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "Onsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "Torsdag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "Fredag" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "Lördag" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "Januari" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "Februari" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "Mars" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "April" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "Maj" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "Juni" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "Juli" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "Augusti" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "September" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "Oktober" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "November" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "December" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "webbtjänster under din kontroll" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "Logga ut" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Automatisk inloggning inte tillÃ¥ten!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Om du inte har ändrat ditt lösenord nyligen sÃ¥ kan ditt konto vara manipulerat!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Ändra genast lösenord för att säkra ditt konto." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Glömt ditt lösenord?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "kom ihÃ¥g" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "Logga in" @@ -381,3 +529,17 @@ msgstr "föregÃ¥ende" #: templates/part.pagenavi.php:20 msgid "next" msgstr "nästa" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Säkerhetsvarning!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Bekräfta ditt lösenord.
            Av säkerhetsskäl kan du ibland bli ombedd att ange ditt lösenord igen." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Verifiera" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index 4154c1118ee3af12e385e54e022ad04a690b0e73..7c197ea605624da1797443e846f56a0b0c8b4dd5 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/files.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 14:51+0000\n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 19:45+0000\n" "Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -28,195 +28,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Inga fel uppstod. Filen laddades upp utan problem" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Den uppladdade filen överskrider upload_max_filesize direktivet i php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Den uppladdade filen överskrider upload_max_filesize direktivet php.ini:" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Den uppladdade filen överstiger MAX_FILE_SIZE direktivet som anges i HTML-formulär" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Den uppladdade filen var endast delvis uppladdad" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ingen fil blev uppladdad" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Saknar en tillfällig mapp" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Misslyckades spara till disk" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Filer" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Sluta dela" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Radera" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "Byt namn" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "finns redan" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} finns redan" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "ersätt" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "föreslÃ¥ namn" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "avbryt" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "ersatt" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "ersatt {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "Ã¥ngra" -#: js/filelist.js:241 -msgid "with" -msgstr "med" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "ersatt {new_name} med {old_name}" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "stoppad delning {files}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "Ej delad" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "raderade {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "raderad" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillÃ¥tet." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "genererar ZIP-fil, det kan ta lite tid." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes." -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Uppladdningsfel" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Stäng" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Väntar" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 filuppladdning" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "filer laddas upp" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} filer laddas upp" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Uppladdning avbruten." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Filuppladdning pÃ¥gÃ¥r. Lämnar du sidan sÃ¥ avbryts uppladdningen." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ogiltigt namn, '/' är inte tillÃ¥ten." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Ogiltigt mappnamn. Ordet \"Delad\" är reserverat av ownCloud." -#: js/files.js:668 -msgid "files scanned" -msgstr "filer skannade" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} filer skannade" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "fel vid skanning" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Namn" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Storlek" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Ändrad" -#: js/files.js:778 -msgid "folder" -msgstr "mapp" - -#: js/files.js:780 -msgid "folders" -msgstr "mappar" - -#: js/files.js:788 -msgid "file" -msgstr "fil" - -#: js/files.js:790 -msgid "files" -msgstr "filer" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "sekunder sedan" - -#: js/files.js:835 -msgid "minute ago" -msgstr "minut sedan" - -#: js/files.js:836 -msgid "minutes ago" -msgstr "minuter sedan" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 mapp" -#: js/files.js:839 -msgid "today" -msgstr "i dag" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} mappar" -#: js/files.js:840 -msgid "yesterday" -msgstr "i gÃ¥r" +#: js/files.js:824 +msgid "1 file" +msgstr "1 fil" -#: js/files.js:841 -msgid "days ago" -msgstr "dagar sedan" - -#: js/files.js:842 -msgid "last month" -msgstr "förra mÃ¥naden" - -#: js/files.js:844 -msgid "months ago" -msgstr "mÃ¥nader sedan" - -#: js/files.js:845 -msgid "last year" -msgstr "förra Ã¥ret" - -#: js/files.js:846 -msgid "years ago" -msgstr "Ã¥r sedan" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} filer" #: templates/admin.php:5 msgid "File handling" @@ -226,27 +197,27 @@ msgstr "Filhantering" msgid "Maximum upload size" msgstr "Maximal storlek att ladda upp" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "max. möjligt:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Krävs för nerladdning av flera mappar och filer." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Aktivera ZIP-nerladdning" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 är oändligt" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Största tillÃ¥tna storlek för ZIP-filer" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "Spara" @@ -254,52 +225,48 @@ msgstr "Spara" msgid "New" msgstr "Ny" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Textfil" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Mapp" -#: templates/index.php:11 -msgid "From url" -msgstr "FrÃ¥n webbadress" +#: templates/index.php:14 +msgid "From link" +msgstr "FrÃ¥n länk" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Ladda upp" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Avbryt uppladdning" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Ingenting här. Ladda upp nÃ¥got!" -#: templates/index.php:50 -msgid "Share" -msgstr "Dela" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Ladda ner" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "För stor uppladdning" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar pÃ¥ servern." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Filer skannas, var god vänta" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Aktuell skanning" diff --git a/l10n/sv/files_pdfviewer.po b/l10n/sv/files_pdfviewer.po deleted file mode 100644 index 674a9273cadd4b862b5d8423f6057ecd03ad7094..0000000000000000000000000000000000000000 --- a/l10n/sv/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/sv/files_texteditor.po b/l10n/sv/files_texteditor.po deleted file mode 100644 index e29a0d220c4dbf79ee8529593f45585c2c05a68d..0000000000000000000000000000000000000000 --- a/l10n/sv/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/sv/gallery.po b/l10n/sv/gallery.po deleted file mode 100644 index 3bb99841a7b9c30fbc63d09dbb6d10e6ec059dc5..0000000000000000000000000000000000000000 --- a/l10n/sv/gallery.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Christer Eriksson , 2012. -# , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-30 02:02+0200\n" -"PO-Revision-Date: 2012-07-29 07:37+0000\n" -"Last-Translator: maghog \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Bilder" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Dela galleri" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Fel:" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Internt fel" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Bildspel" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Tillbaka" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Vill du säkert ta bort" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Vill du ta bort albumet" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Ändra albumnamnet" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Albumnamn" diff --git a/l10n/sv/impress.po b/l10n/sv/impress.po deleted file mode 100644 index 93637c418a3b1208429f85c16811e4d38d3f20f5..0000000000000000000000000000000000000000 --- a/l10n/sv/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/sv/lib.po b/l10n/sv/lib.po index 088f184b99957cb296c5bb5a3d753a62aad61e41..548f7a84d4c469bd68ec3ee40b73b649a1cda8ea 100644 --- a/l10n/sv/lib.po +++ b/l10n/sv/lib.po @@ -9,53 +9,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 13:35+0200\n" -"PO-Revision-Date: 2012-09-01 10:13+0000\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 07:21+0000\n" "Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "Hjälp" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "Personligt" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "Inställningar" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "Användare" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "Program" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "Admin" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "Nerladdning av ZIP är avstängd." -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "Filer laddas ner en Ã¥t gÃ¥ngen." -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "Tillbaka till Filer" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "Valda filer är för stora för att skapa zip-fil." @@ -63,7 +63,7 @@ msgstr "Valda filer är för stora för att skapa zip-fil." msgid "Application is not enabled" msgstr "Applikationen är inte aktiverad" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Fel vid autentisering" @@ -71,57 +71,84 @@ msgstr "Fel vid autentisering" msgid "Token expired. Please reload page." msgstr "Ogiltig token. Ladda om sidan." -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Filer" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Text" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Bilder" + +#: template.php:103 msgid "seconds ago" msgstr "sekunder sedan" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 minut sedan" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d minuter sedan" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 timme sedan" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d timmar sedan" + +#: template.php:108 msgid "today" msgstr "idag" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "igÃ¥r" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d dagar sedan" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "förra mÃ¥naden" -#: template.php:95 -msgid "months ago" -msgstr "mÃ¥nader sedan" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d mÃ¥nader sedan" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "förra Ã¥ret" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "Ã¥r sedan" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s finns. FÃ¥ mer information" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "uppdaterad" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "uppdateringskontroll är inaktiverad" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Kunde inte hitta kategorin \"%s\"" diff --git a/l10n/sv/media.po b/l10n/sv/media.po deleted file mode 100644 index f6f24a1626571f32ae5276bfe55431ae778489c4..0000000000000000000000000000000000000000 --- a/l10n/sv/media.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Daniel Sandman , 2012. -# Magnus Höglund , 2012. -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-22 02:04+0200\n" -"PO-Revision-Date: 2012-08-21 08:29+0000\n" -"Last-Translator: Magnus Höglund \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "Musik" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "Lägg till album till spellistan" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Spela" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Paus" - -#: templates/music.php:5 -msgid "Previous" -msgstr "FöregÃ¥ende" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Nästa" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Ljudlös" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Ljud pÃ¥" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Sök igenom samlingen" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Artist" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Titel" diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index a5cb8d2b2401b208a5a80df086b3288aab035c3c..1f1645f74ebf9c10c03083d218d7378360a4383a 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/settings.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-10 02:05+0200\n" -"PO-Revision-Date: 2012-10-09 12:28+0000\n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 19:44+0000\n" "Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -24,70 +24,73 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Kan inte ladda listan frÃ¥n App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Autentiseringsfel" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Gruppen finns redan" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Kan inte lägga till grupp" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "Kunde inte aktivera appen." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "E-post sparad" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Ogiltig e-post" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID ändrat" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Ogiltig begäran" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Kan inte radera grupp" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Autentiseringsfel" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Kan inte radera användare" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "SprÃ¥k ändrades" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Administratörer kan inte ta bort sig själva frÃ¥n admingruppen" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Kan inte lägga till användare i gruppen %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Kan inte radera användare frÃ¥n gruppen %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Deaktivera" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Aktivera" @@ -95,97 +98,10 @@ msgstr "Aktivera" msgid "Saving..." msgstr "Sparar..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__language_name__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Säkerhetsvarning" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Din datamapp och dina filer kan möjligen vara nÃ¥bara frÃ¥n internet. Filen .htaccess som ownCloud tillhandahÃ¥ller fungerar inte. Vi rekommenderar starkt att du ställer in din webbserver pÃ¥ ett sätt sÃ¥ att datamappen inte är nÃ¥bar. Alternativt att ni flyttar datamappen utanför webbservern." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "Exekvera en uppgift vid varje sidladdning" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php är registrerad som en webcron-tjänst. Anropa cron.php sidan i ownCloud en gÃ¥ng i minuten över HTTP." - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "Använd system-tjänsten cron. Anropa filen cron.php i ownCloud-mappen via ett cronjobb varje minut." - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "Dela" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Aktivera delat API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "TillÃ¥t applikationer att använda delat API" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "TillÃ¥t länkar" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "TillÃ¥t delning till allmänheten via publika länkar" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "TillÃ¥t dela vidare" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "TillÃ¥t användare att dela vidare filer som delats med dom" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "TillÃ¥t delning med alla" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "TillÃ¥t bara delning med användare i egna grupper" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Logg" - -#: templates/admin.php:116 -msgid "More" -msgstr "Mera" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Utvecklad av ownCloud kommunity, källkoden är licenserad under AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Lägg till din applikation" @@ -218,22 +134,22 @@ msgstr "Hantering av stora filer" msgid "Ask a question" msgstr "Ställ en frÃ¥ga" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Problem med att ansluta till hjälpdatabasen." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "GÃ¥ dit manuellt." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Svar" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "Du har använt %s av tillgängliga %s" +msgid "You have used %s of the available %s" +msgstr "Du har använt %s av tillgängliga %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -291,6 +207,16 @@ msgstr "Hjälp att översätta" msgid "use this address to connect to your ownCloud in your file manager" msgstr "använd denna adress för att ansluta ownCloud till din filhanterare" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Utvecklad av ownCloud kommunity, källkoden är licenserad under AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Namn" diff --git a/l10n/sv/tasks.po b/l10n/sv/tasks.po deleted file mode 100644 index b397a7d18daa95249edf31d0e06e9d05f8b1540f..0000000000000000000000000000000000000000 --- a/l10n/sv/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Magnus Höglund , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 13:36+0000\n" -"Last-Translator: Magnus Höglund \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "Felaktigt datum/tid" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "Uppgifter" - -#: js/tasks.js:415 -msgid "No category" -msgstr "Ingen kategori" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "Ospecificerad " - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=högsta" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=mellan" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=lägsta" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "Tom sammanfattning" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "Ogiltig andel procent klar" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "Felaktig prioritet" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "Lägg till uppgift" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "Förfaller" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "Kategori" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "Slutförd" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "Plats" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "Prioritet" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "Etikett" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "Laddar uppgifter..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "Viktigt" - -#: templates/tasks.php:23 -msgid "More" -msgstr "Mer" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "Mindre" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "Radera" diff --git a/l10n/sv/user_migrate.po b/l10n/sv/user_migrate.po deleted file mode 100644 index 3c9b00b3f6f5dc097724dd17b024a1efc74c42f3..0000000000000000000000000000000000000000 --- a/l10n/sv/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Magnus Höglund , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 12:39+0000\n" -"Last-Translator: Magnus Höglund \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "Exportera" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "NÃ¥got gick fel när exportfilen skulle genereras" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "Ett fel har uppstÃ¥tt" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "Exportera ditt användarkonto" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "Detta vill skapa en komprimerad fil som innehÃ¥ller ditt ownCloud-konto." - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "Importera ett användarkonto" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "ownCloud Zip-fil" - -#: templates/settings.php:17 -msgid "Import" -msgstr "Importera" diff --git a/l10n/sv/user_openid.po b/l10n/sv/user_openid.po deleted file mode 100644 index f05dbf48fd24e38d024493758ee95e1eae212512..0000000000000000000000000000000000000000 --- a/l10n/sv/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Magnus Höglund , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-13 13:42+0000\n" -"Last-Translator: Magnus Höglund \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "Detta är en OpenID-server slutpunkt. För mer information, se" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "Identitet: " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "Realm: " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "Användare: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "Logga in" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "Fel: Ingen användare vald" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "du kan autentisera till andra webbplatser med denna adress" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "Godkänd openID leverantör" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "Din adress pÃ¥ Wordpress, Identi.ca, …" diff --git a/l10n/sv/files_odfviewer.po b/l10n/sv/user_webdavauth.po similarity index 59% rename from l10n/sv/files_odfviewer.po rename to l10n/sv/user_webdavauth.po index 35b60c1eb8d19af08d29ea9501c9f0846bb7157a..ca0db7efe4710b4d408da95fd9bc0c6067422fa8 100644 --- a/l10n/sv/files_odfviewer.po +++ b/l10n/sv/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Magnus Höglund , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-13 00:05+0100\n" +"PO-Revision-Date: 2012-11-12 07:44+0000\n" +"Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po new file mode 100644 index 0000000000000000000000000000000000000000..a64466dbd5aa88cc4c5ce4732db496104ea3693c --- /dev/null +++ b/l10n/ta_LK/core.po @@ -0,0 +1,540 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 10:19+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "பிரிவ௠வகைகள௠வழஙà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "சேரà¯à®ªà¯à®ªà®¤à®±à¯à®•à®¾à®© வகைகள௠இலà¯à®²à¯ˆà®¯à®¾?" + +#: ajax/vcategories/add.php:37 +msgid "This category already exists: " +msgstr "இநà¯à®¤ வகை à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³à®¤à¯:" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "பொரà¯à®³à¯ வகை வழஙà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID வழஙà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯à®•à¯à®•à¯ %s ஠சேரà¯à®ªà¯à®ªà®¤à®¿à®²à¯ வழà¯" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯ எநà¯à®¤à®ªà¯ பிரிவà¯à®®à¯ தெரிவà¯à®šà¯†à®¯à¯à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "விரà¯à®ªà¯à®ªà®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ %s ஠அகறà¯à®±à¯à®µà®¤à®¿à®²à¯ வழà¯.உஇஇ" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 +msgid "Settings" +msgstr "அமைபà¯à®ªà¯à®•à®³à¯" + +#: js/js.js:688 +msgid "seconds ago" +msgstr "செகà¯à®•à®©à¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 நிமிடதà¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯ " + +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{நிமிடஙà¯à®•à®³à¯} நிமிடஙà¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯ " + +#: js/js.js:691 +msgid "1 hour ago" +msgstr "1 மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯" + +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "{மணிதà¯à®¤à®¿à®¯à®¾à®²à®™à¯à®•à®³à¯} மணிதà¯à®¤à®¿à®¯à®¾à®²à®™à¯à®•à®³à®¿à®±à¯à®•à¯ à®®à¯à®©à¯" + +#: js/js.js:693 +msgid "today" +msgstr "இனà¯à®±à¯" + +#: js/js.js:694 +msgid "yesterday" +msgstr "நேறà¯à®±à¯" + +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{நாடà¯à®•à®³à¯} நாடà¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: js/js.js:696 +msgid "last month" +msgstr "கடநà¯à®¤ மாதமà¯" + +#: js/js.js:697 +msgid "{months} months ago" +msgstr "{மாதஙà¯à®•à®³à¯} மாதஙà¯à®•à®³à®¿à®±à¯à®•à¯ à®®à¯à®©à¯" + +#: js/js.js:698 +msgid "months ago" +msgstr "மாதஙà¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: js/js.js:699 +msgid "last year" +msgstr "கடநà¯à®¤ வரà¯à®Ÿà®®à¯" + +#: js/js.js:700 +msgid "years ago" +msgstr "வரà¯à®Ÿà®™à¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "தெரிவà¯à®šà¯†à®¯à¯à®• " + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "இரதà¯à®¤à¯ செயà¯à®•" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "இலà¯à®²à¯ˆ" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "ஆமà¯" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "சரி" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "பொரà¯à®³à¯ வகை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ." + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 +msgid "Error" +msgstr "வழà¯" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "செயலி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "தேவைபà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯ {கோபà¯à®ªà¯} நிறà¯à®µà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!" + +#: js/share.js:124 +msgid "Error while sharing" +msgstr "பகிரà¯à®®à¯ போதான வழà¯" + +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "பகிராமல௠உளà¯à®³à®ªà¯à®ªà¯‹à®¤à®¾à®© வழà¯" + +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "அனà¯à®®à®¤à®¿à®•à®³à¯ மாறà¯à®®à¯à®ªà¯‹à®¤à®¾à®© வழà¯" + +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "உஙà¯à®•à®³à¯à®Ÿà®©à¯à®®à¯ கà¯à®´à¯à®µà¯à®•à¯à®•à®¿à®Ÿà¯ˆà®¯à®¿à®²à¯à®®à¯ {கà¯à®´à¯} பகிரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ {உரிமையாளரà¯}" + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "உஙà¯à®•à®³à¯à®Ÿà®©à¯ பகிரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ {உரிமையாளரà¯}" + +#: js/share.js:158 +msgid "Share with" +msgstr "பகிரà¯à®¤à®²à¯" + +#: js/share.js:163 +msgid "Share with link" +msgstr "இணைபà¯à®ªà¯à®Ÿà®©à¯ பகிரà¯à®¤à®²à¯" + +#: js/share.js:164 +msgid "Password protect" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ பாதà¯à®•à®¾à®¤à¯à®¤à®²à¯" + +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 +msgid "Password" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: js/share.js:173 +msgid "Set expiration date" +msgstr "காலாவதி தேதியை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®•" + +#: js/share.js:174 +msgid "Expiration date" +msgstr "காலவதியாகà¯à®®à¯ திகதி" + +#: js/share.js:206 +msgid "Share via email:" +msgstr "மினà¯à®©à®žà¯à®šà®²à®¿à®©à¯‚டான பகிரà¯à®µà¯: " + +#: js/share.js:208 +msgid "No people found" +msgstr "நபரà¯à®•à®³à¯ யாரà¯à®®à¯ இலà¯à®²à¯ˆ" + +#: js/share.js:235 +msgid "Resharing is not allowed" +msgstr "மீளà¯à®ªà®•à®¿à®°à¯à®µà®¤à®±à¯à®•à¯ அனà¯à®®à®¤à®¿ இலà¯à®²à¯ˆ " + +#: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "{பயனாளரà¯} உடன௠{உரà¯à®ªà¯à®ªà®Ÿà®¿} பகிரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" + +#: js/share.js:292 +msgid "Unshare" +msgstr "பகிரமà¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: js/share.js:304 +msgid "can edit" +msgstr "தொகà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯" + +#: js/share.js:306 +msgid "access control" +msgstr "கடà¯à®Ÿà¯à®ªà¯à®ªà®¾à®Ÿà®¾à®© அணà¯à®•à®²à¯" + +#: js/share.js:309 +msgid "create" +msgstr "படைதà¯à®¤à®²à¯" + +#: js/share.js:312 +msgid "update" +msgstr "இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯" + +#: js/share.js:315 +msgid "delete" +msgstr "நீகà¯à®•à¯à®•" + +#: js/share.js:318 +msgid "share" +msgstr "பகிரà¯à®¤à®²à¯" + +#: js/share.js:343 js/share.js:512 js/share.js:514 +msgid "Password protected" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯ பாதà¯à®•à®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: js/share.js:525 +msgid "Error unsetting expiration date" +msgstr "காலாவதியாகà¯à®®à¯ திகதியை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®¾à®®à¯ˆà®•à¯à®•à®¾à®© வழà¯" + +#: js/share.js:537 +msgid "Error setting expiration date" +msgstr "காலாவதியாகà¯à®®à¯ திகதியை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®µà®¤à®¿à®²à¯ வழà¯" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "ownCloud இன௠கடவà¯à®šà¯à®šà¯Šà®²à¯ மீளமைபà¯à®ªà¯" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "உஙà¯à®•à®³à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மீளமைகà¯à®• பினà¯à®µà®°à¯à®®à¯ இணைபà¯à®ªà¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ : {இணைபà¯à®ªà¯}" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "நீஙà¯à®•à®³à¯ மினà¯à®©à®žà¯à®šà®²à¯ மூலம௠உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மீளமைபà¯à®ªà®¤à®±à¯à®•à®¾à®© இணைபà¯à®ªà¯ˆ பெறà¯à®µà¯€à®°à¯à®•à®³à¯. " + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "மினà¯à®©à¯à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà¯à®¤à®²à¯ˆ மீளமைகà¯à®•à¯à®•" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "வேணà¯à®Ÿà¯à®•à¯‹à®³à¯ தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯!" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 +msgid "Username" +msgstr "பயனாளர௠பெயரà¯" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "கோரிகà¯à®•à¯ˆ மீளமைபà¯à®ªà¯" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ மீளமைகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆà®•à¯à®•à®¾à®© பகà¯à®•à®®à¯" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "பà¯à®¤à®¿à®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "மீளமைதà¯à®¤ கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: strings.php:5 +msgid "Personal" +msgstr "தனிபà¯à®ªà®Ÿà¯à®Ÿ" + +#: strings.php:6 +msgid "Users" +msgstr "பயனாளரà¯à®•à®³à¯" + +#: strings.php:7 +msgid "Apps" +msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®•à®³à¯" + +#: strings.php:8 +msgid "Admin" +msgstr "நிரà¯à®µà®¾à®•à®¿" + +#: strings.php:9 +msgid "Help" +msgstr "உதவி" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "அணà¯à®• தடை" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "Cloud கணà¯à®Ÿà¯à®ªà¯à®ªà®¿à®Ÿà®¿à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "வகைகளை தொகà¯à®•à¯à®•" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "சேரà¯à®•à¯à®•" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "பாதà¯à®•à®¾à®ªà¯à®ªà¯ எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ எணà¯à®£à®¿à®•à¯à®•à¯ˆ பாதà¯à®•à®¾à®ªà¯à®ªà®¾à®© பà¯à®±à®ªà¯à®ªà®¾à®•à¯à®•à®¿ / உணà¯à®Ÿà®¾à®•à¯à®•à®¿à®•à®³à¯ இலà¯à®²à¯ˆ, தயவà¯à®šà¯†à®¯à¯à®¤à¯ PHP OpenSSL நீடà¯à®šà®¿à®¯à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•. " + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "பாதà¯à®•à®¾à®ªà¯à®ªà®¾à®© சீரறà¯à®± எணà¯à®£à®¿à®•à¯à®•à¯ˆà®¯à®¾à®© பà¯à®±à®ªà¯à®ªà®¾à®•à¯à®•à®¿ இலà¯à®²à¯ˆà®¯à¯†à®©à®¿à®©à¯, தாகà¯à®•à¯à®©à®°à®¾à®²à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ மீளமைபà¯à®ªà¯ அடையாளவிலà¯à®²à¯ˆà®•à®³à¯ à®®à¯à®©à¯à®®à¯Šà®´à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கணகà¯à®•à¯ˆ கைபà¯à®ªà®±à¯à®±à®²à®¾à®®à¯." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ தரவ௠அடைவ௠மறà¯à®±à¯à®®à¯ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯à®•à¯à®•à®³à¯ˆ பெரà¯à®®à¯à®ªà®¾à®²à¯à®®à¯ இணையதà¯à®¤à®¿à®©à¯‚டாக அணà¯à®•à®²à®¾à®®à¯. ownCloud இனால௠வழஙà¯à®•à®ªà¯à®ªà®Ÿà¯à®•à®¿à®©à¯à®± .htaccess கோபà¯à®ªà¯ வேலை செயà¯à®¯à®µà®¿à®²à¯à®²à¯ˆ. தரவ௠அடைவை நீணà¯à®Ÿ நேரதà¯à®¤à®¿à®±à¯à®•à¯ அணà¯à®•à®•à¯à®•à¯‚டியதாக உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ வலைய சேவையகதà¯à®¤à¯ˆ தகவமைகà¯à®•à¯à®®à®¾à®±à¯ நாஙà¯à®•à®³à¯ உறà¯à®¤à®¿à®¯à®¾à®• கூறà¯à®•à®¿à®±à¯‹à®®à¯ அலà¯à®²à®¤à¯ தரவ௠அடைவை வலைய சேவையக மூல ஆவணதà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ வெளியே அகறà¯à®±à¯à®•. " + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr " நிரà¯à®µà®¾à®• கணகà¯à®•à¯Šà®©à¯à®±à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®•" + +#: templates/installation.php:48 +msgid "Advanced" +msgstr "மேமà¯à®ªà®Ÿà¯à®Ÿ" + +#: templates/installation.php:50 +msgid "Data folder" +msgstr "தரவ௠கோபà¯à®ªà¯à®±à¯ˆ" + +#: templates/installation.php:57 +msgid "Configure the database" +msgstr "தரவà¯à®¤à¯à®¤à®³à®¤à¯à®¤à¯ˆ தகவமைகà¯à®•" + +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 +msgid "will be used" +msgstr "பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®®à¯" + +#: templates/installation.php:105 +msgid "Database user" +msgstr "தரவà¯à®¤à¯à®¤à®³ பயனாளரà¯" + +#: templates/installation.php:109 +msgid "Database password" +msgstr "தரவà¯à®¤à¯à®¤à®³ கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: templates/installation.php:113 +msgid "Database name" +msgstr "தரவà¯à®¤à¯à®¤à®³ பெயரà¯" + +#: templates/installation.php:121 +msgid "Database tablespace" +msgstr "தரவà¯à®¤à¯à®¤à®³ அடà¯à®Ÿà®µà®£à¯ˆ" + +#: templates/installation.php:127 +msgid "Database host" +msgstr "தரவà¯à®¤à¯à®¤à®³ ஓமà¯à®ªà¯à®©à®°à¯" + +#: templates/installation.php:132 +msgid "Finish setup" +msgstr "அமைபà¯à®ªà¯ˆ à®®à¯à®Ÿà®¿à®•à¯à®•" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "ஞாயிறà¯à®±à¯à®•à¯à®•à®¿à®´à®®à¯ˆ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "திஙà¯à®•à®Ÿà¯à®•à®¿à®´à®®à¯ˆ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "செவà¯à®µà®¾à®¯à¯à®•à¯à®•à®¿à®´à®®à¯ˆ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "பà¯à®¤à®©à¯à®•à®¿à®´à®®à¯ˆ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "வியாழகà¯à®•à®¿à®´à®®à¯ˆ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "சனிகà¯à®•à®¿à®´à®®à¯ˆ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "தை" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "மாசி" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "பஙà¯à®•à¯à®©à®¿" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "சிதà¯à®¤à®¿à®°à¯ˆ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "வைகாசி" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "ஆனி" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "ஆடி" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "ஆவணி" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "à®à®ªà¯à®ªà®šà®¿" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "காரà¯à®¤à¯à®¤à®¿à®•à¯ˆ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "மாரà¯à®•à®´à®¿" + +#: templates/layout.guest.php:41 +msgid "web services under your control" +msgstr "உஙà¯à®•à®³à¯ கடà¯à®Ÿà¯à®ªà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®©à¯ கீழ௠இணைய சேவைகளà¯" + +#: templates/layout.user.php:44 +msgid "Log out" +msgstr "விடà¯à®ªà®¤à®¿à®•à¯ˆ செயà¯à®•" + +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "தனà¯à®©à®¿à®šà¯à®šà¯ˆà®¯à®¾à®© பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ நிராகரிபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ அணà¯à®®à¯ˆà®¯à®¿à®²à¯ மாறà¯à®±à®µà®¿à®²à¯à®²à¯ˆà®¯à®¿à®©à¯, உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கணகà¯à®•à¯ சமரசமாகிவிடà¯à®®à¯!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கணகà¯à®•à¯ˆ மீணà¯à®Ÿà¯à®®à¯ பாதà¯à®•à®¾à®•à¯à®• தயவà¯à®šà¯†à®¯à¯à®¤à¯ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à®µà¯à®®à¯." + +#: templates/login.php:15 +msgid "Lost your password?" +msgstr "உஙà¯à®•à®³à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ தொலைதà¯à®¤à¯à®µà®¿à®Ÿà¯à®Ÿà¯€à®°à¯à®•à®³à®¾?" + +#: templates/login.php:27 +msgid "remember" +msgstr "ஞாபகபà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" + +#: templates/login.php:28 +msgid "Log in" +msgstr "பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "நீஙà¯à®•à®³à¯ விடà¯à®ªà®¤à®¿à®•à¯ˆ செயà¯à®¤à¯à®µà®¿à®Ÿà¯à®Ÿà¯€à®°à¯à®•à®³à¯." + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "à®®à¯à®¨à¯à®¤à¯ˆà®¯" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "அடà¯à®¤à¯à®¤à¯" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "பாதà¯à®•à®¾à®ªà¯à®ªà¯ எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•.
            பாதà¯à®•à®¾à®ªà¯à®ªà¯ காரணஙà¯à®•à®³à¯à®•à¯à®•à®¾à®• நீஙà¯à®•à®³à¯ எபà¯à®ªà¯‹à®¤à®¾à®µà®¤à¯ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மீணà¯à®Ÿà¯à®®à¯ நà¯à®´à¯ˆà®•à¯à®• கேடà¯à®•à®ªà¯à®ªà®Ÿà¯à®µà¯€à®°à¯à®•à®³à¯." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po new file mode 100644 index 0000000000000000000000000000000000000000..b6abb44c8476b1642676f5d7c761a00b5018a3fc --- /dev/null +++ b/l10n/ta_LK/files.po @@ -0,0 +1,267 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "இஙà¯à®•à¯ வழ௠இலà¯à®²à¯ˆ, கோபà¯à®ªà¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: ajax/upload.php:21 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:23 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¾à®©à®¤à¯ HTML படிவதà¯à®¤à®¿à®²à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ MAX_FILE_SIZE directive ஠விட கூடியதà¯" + +#: ajax/upload.php:25 +msgid "The uploaded file was only partially uploaded" +msgstr "பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¾à®©à®¤à¯ பகà¯à®¤à®¿à®¯à®¾à®• மடà¯à®Ÿà¯à®®à¯‡ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" + +#: ajax/upload.php:26 +msgid "No file was uploaded" +msgstr "எநà¯à®¤ கோபà¯à®ªà¯à®®à¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" + +#: ajax/upload.php:27 +msgid "Missing a temporary folder" +msgstr "ஒர௠தறà¯à®•à®¾à®²à®¿à®•à®®à®¾à®© கோபà¯à®ªà¯à®±à¯ˆà®¯à¯ˆ காணவிலà¯à®²à¯ˆ" + +#: ajax/upload.php:28 +msgid "Failed to write to disk" +msgstr "வடà¯à®Ÿà®¿à®²à¯ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "கோபà¯à®ªà¯à®•à®³à¯" + +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 +msgid "Unshare" +msgstr "பகிரபà¯à®ªà®Ÿà®¾à®¤à®¤à¯" + +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 +msgid "Delete" +msgstr "அழிகà¯à®•" + +#: js/fileactions.js:181 +msgid "Rename" +msgstr "பெயரà¯à®®à®¾à®±à¯à®±à®®à¯" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³à®¤à¯" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "replace" +msgstr "மாறà¯à®±à®¿à®Ÿà¯à®•" + +#: js/filelist.js:201 +msgid "suggest name" +msgstr "பெயரை பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "cancel" +msgstr "இரதà¯à®¤à¯ செயà¯à®•" + +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {new_name}" + +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 +msgid "undo" +msgstr "à®®à¯à®©à¯ செயல௠நீகà¯à®•à®®à¯ " + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "{new_name} ஆனத௠{old_name} இனால௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "பகிரபà¯à®ªà®Ÿà®¾à®¤à®¤à¯ {கோபà¯à®ªà¯à®•à®³à¯}" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ {கோபà¯à®ªà¯à®•à®³à¯}" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± பெயரà¯,'\\', '/', '<', '>', ':', '\"', '|', '?' மறà¯à®±à¯à®®à¯ '*' ஆகியன அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®®à®¾à®Ÿà¯à®Ÿà®¾à®¤à¯." + +#: js/files.js:183 +msgid "generating ZIP-file, it may take some time." +msgstr " ZIP கோபà¯à®ªà¯ உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®•à®¿à®©à¯à®±à®¤à¯, இத௠சில நேரம௠ஆகலாமà¯." + +#: js/files.js:218 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "அடைவ௠அலà¯à®²à®¤à¯ 0 bytes ஠கொணà¯à®Ÿà¯à®³à¯à®³à®¤à®¾à®²à¯ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯ˆ பதிவேறà¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" + +#: js/files.js:218 +msgid "Upload Error" +msgstr "பதிவேறà¯à®±à®²à¯ வழà¯" + +#: js/files.js:235 +msgid "Close" +msgstr "மூடà¯à®•" + +#: js/files.js:254 js/files.js:368 js/files.js:398 +msgid "Pending" +msgstr "நிலà¯à®µà¯ˆà®¯à®¿à®²à¯à®³à¯à®³" + +#: js/files.js:274 +msgid "1 file uploading" +msgstr "1 கோபà¯à®ªà¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯" + +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®•à®³à¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®©à¯à®±à®¤à¯" + +#: js/files.js:349 js/files.js:382 +msgid "Upload cancelled." +msgstr "பதிவேறà¯à®±à®²à¯ இரதà¯à®¤à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" + +#: js/files.js:451 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "கோபà¯à®ªà¯ பதிவேறà¯à®±à®®à¯ செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ உளà¯à®³à®¤à¯. இநà¯à®¤à®ªà¯ பகà¯à®•à®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ வெறியேறà¯à®µà®¤à®¾à®©à®¤à¯ பதிவேறà¯à®±à®²à¯ˆ இரதà¯à®¤à¯ செயà¯à®¯à¯à®®à¯." + +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± கோபà¯à®ªà¯à®±à¯ˆ பெயரà¯. \"பகிரà¯à®µà®¿à®©à¯\" பாவனை Owncloud இனால௠ஒதà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" + +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®•à®³à¯ வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: js/files.js:712 +msgid "error while scanning" +msgstr "வரà¯à®Ÿà¯à®®à¯ போதான வழà¯" + +#: js/files.js:785 templates/index.php:65 +msgid "Name" +msgstr "பெயரà¯" + +#: js/files.js:786 templates/index.php:76 +msgid "Size" +msgstr "அளவà¯" + +#: js/files.js:787 templates/index.php:78 +msgid "Modified" +msgstr "மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: js/files.js:814 +msgid "1 folder" +msgstr "1 கோபà¯à®ªà¯à®±à¯ˆ" + +#: js/files.js:816 +msgid "{count} folders" +msgstr "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®±à¯ˆà®•à®³à¯" + +#: js/files.js:824 +msgid "1 file" +msgstr "1 கோபà¯à®ªà¯" + +#: js/files.js:826 +msgid "{count} files" +msgstr "{எணà¯à®£à®¿à®•à¯à®•à¯ˆ} கோபà¯à®ªà¯à®•à®³à¯" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "கோபà¯à®ªà¯ கையாளà¯à®¤à®²à¯" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "பதிவேறà¯à®±à®•à¯à®•à¯‚டிய ஆககà¯à®•à¯‚டிய அளவ௠" + +#: templates/admin.php:9 +msgid "max. possible: " +msgstr "ஆகக௠கூடியதà¯:" + +#: templates/admin.php:12 +msgid "Needed for multi-file and folder downloads." +msgstr "பலà¯à®µà¯‡à®±à¯à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯ மறà¯à®±à¯à®®à¯ கோபà¯à®ªà¯à®±à¯ˆà®•à®³à¯ˆ பதிவிறகà¯à®• தேவையானதà¯." + +#: templates/admin.php:14 +msgid "Enable ZIP-download" +msgstr "ZIP பதிவிறகà¯à®•à®²à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" + +#: templates/admin.php:17 +msgid "0 is unlimited" +msgstr "0 ஆனத௠எலà¯à®²à¯ˆà®¯à®±à¯à®±à®¤à¯" + +#: templates/admin.php:19 +msgid "Maximum input size for ZIP files" +msgstr "ZIP கோபà¯à®ªà¯à®•à®³à¯à®•à¯à®•à®¾à®© ஆககà¯à®•à¯‚டிய உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ அளவà¯" + +#: templates/admin.php:23 +msgid "Save" +msgstr "சேமிகà¯à®•" + +#: templates/index.php:7 +msgid "New" +msgstr "பà¯à®¤à®¿à®¯" + +#: templates/index.php:10 +msgid "Text file" +msgstr "கோபà¯à®ªà¯ உரை" + +#: templates/index.php:12 +msgid "Folder" +msgstr "கோபà¯à®ªà¯à®±à¯ˆ" + +#: templates/index.php:14 +msgid "From link" +msgstr "இணைபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯" + +#: templates/index.php:35 +msgid "Upload" +msgstr "பதிவேறà¯à®±à¯à®•" + +#: templates/index.php:43 +msgid "Cancel upload" +msgstr "பதிவேறà¯à®±à®²à¯ˆ இரதà¯à®¤à¯ செயà¯à®•" + +#: templates/index.php:57 +msgid "Nothing in here. Upload something!" +msgstr "இஙà¯à®•à¯ ஒனà¯à®±à¯à®®à¯ இலà¯à®²à¯ˆ. à®à®¤à®¾à®µà®¤à¯ பதிவேறà¯à®±à¯à®•!" + +#: templates/index.php:71 +msgid "Download" +msgstr "பதிவிறகà¯à®•à¯à®•" + +#: templates/index.php:103 +msgid "Upload too large" +msgstr "பதிவேறà¯à®±à®²à¯ மிகபà¯à®ªà¯†à®°à®¿à®¯à®¤à¯" + +#: templates/index.php:105 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "நீஙà¯à®•à®³à¯ பதிவேறà¯à®± à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•à¯à®®à¯ கோபà¯à®ªà¯à®•à®³à®¾à®©à®¤à¯ இநà¯à®¤ சேவையகதà¯à®¤à®¿à®²à¯ கோபà¯à®ªà¯ பதிவேறà¯à®±à®•à¯à®•à¯‚டிய ஆககà¯à®•à¯‚டிய அளவிலà¯à®®à¯ கூடியதà¯." + +#: templates/index.php:110 +msgid "Files are being scanned, please wait." +msgstr "கோபà¯à®ªà¯à®•à®³à¯ வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®•à®¿à®©à¯à®±à®©, தயவà¯à®šà¯†à®¯à¯à®¤à¯ காதà¯à®¤à®¿à®°à¯à®™à¯à®•à®³à¯." + +#: templates/index.php:113 +msgid "Current scanning" +msgstr "தறà¯à®ªà¯‹à®¤à¯ வரà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®ªà®µà¯ˆ" diff --git a/l10n/ta_LK/files_encryption.po b/l10n/ta_LK/files_encryption.po new file mode 100644 index 0000000000000000000000000000000000000000..2eee3be9df2803c7c0071ba71bf7b09a6fc24dfb --- /dev/null +++ b/l10n/ta_LK/files_encryption.po @@ -0,0 +1,35 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-18 00:01+0100\n" +"PO-Revision-Date: 2012-11-17 05:33+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:3 +msgid "Encryption" +msgstr "மறைகà¯à®•à¯à®±à®¿à®¯à¯€à®Ÿà¯" + +#: templates/settings.php:4 +msgid "Exclude the following file types from encryption" +msgstr "மறைகà¯à®•à¯à®±à®¿à®¯à®¾à®•à¯à®•à®²à®¿à®²à¯ பினà¯à®µà®°à¯à®®à¯ கோபà¯à®ªà¯ வகைகளை நீகà¯à®•à®µà¯à®®à¯" + +#: templates/settings.php:5 +msgid "None" +msgstr "ஒனà¯à®±à¯à®®à®¿à®²à¯à®²à¯ˆ" + +#: templates/settings.php:10 +msgid "Enable Encryption" +msgstr "மறைகà¯à®•à¯à®±à®¿à®¯à®¾à®•à¯à®•à®²à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" diff --git a/l10n/ta_LK/files_external.po b/l10n/ta_LK/files_external.po new file mode 100644 index 0000000000000000000000000000000000000000..8bbabf7c1538cbacaf788b2e5448d0e71a88b402 --- /dev/null +++ b/l10n/ta_LK/files_external.po @@ -0,0 +1,107 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-26 00:01+0100\n" +"PO-Revision-Date: 2012-11-25 17:04+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "அனà¯à®®à®¤à®¿ வழஙà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "Dropbox சேமிபà¯à®ªà¯ˆ தகவமைபà¯à®ªà®¤à®¿à®²à¯ வழà¯" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "அனà¯à®®à®¤à®¿à®¯à¯ˆ வழஙà¯à®•à®²à¯" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "தேவையான எலà¯à®²à®¾ பà¯à®²à®™à¯à®•à®³à¯ˆà®¯à¯à®®à¯ நிரபà¯à®ªà¯à®•" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "தயவà¯à®šà¯†à®¯à¯à®¤à¯ ஒர௠செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®© Dropbox செயலி சாவி மறà¯à®±à¯à®®à¯ இரகசியதà¯à®¤à¯ˆ வழஙà¯à®•à¯à®•. " + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "Google இயகà¯à®• சேமிபà¯à®ªà®•à®¤à¯à®¤à¯ˆ தகமைபà¯à®ªà®¤à®¿à®²à¯ வழà¯" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "வெளி சேமிபà¯à®ªà¯" + +#: templates/settings.php:7 templates/settings.php:19 +msgid "Mount point" +msgstr "à®à®±à¯à®±à®ªà¯à®ªà¯à®³à¯à®³à®¿" + +#: templates/settings.php:8 +msgid "Backend" +msgstr "பினà¯à®¨à®¿à®²à¯ˆ" + +#: templates/settings.php:9 +msgid "Configuration" +msgstr "தகவமைபà¯à®ªà¯" + +#: templates/settings.php:10 +msgid "Options" +msgstr "தெரிவà¯à®•à®³à¯" + +#: templates/settings.php:11 +msgid "Applicable" +msgstr "பயனà¯à®ªà®Ÿà®¤à¯à®¤à®•à¯à®•" + +#: templates/settings.php:23 +msgid "Add mount point" +msgstr "à®à®±à¯à®±à®ªà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ சேரà¯à®•à¯à®•" + +#: templates/settings.php:54 templates/settings.php:62 +msgid "None set" +msgstr "தொகà¯à®ªà¯à®ªà®¿à®²à¯à®²à®¾" + +#: templates/settings.php:63 +msgid "All Users" +msgstr "பயனாளரà¯à®•à®³à¯ எலà¯à®²à®¾à®®à¯" + +#: templates/settings.php:64 +msgid "Groups" +msgstr "கà¯à®´à¯à®•à¯à®•à®³à¯" + +#: templates/settings.php:69 +msgid "Users" +msgstr "பயனாளரà¯" + +#: templates/settings.php:77 templates/settings.php:107 +msgid "Delete" +msgstr "நீகà¯à®•à¯à®•" + +#: templates/settings.php:87 +msgid "Enable User External Storage" +msgstr "பயனாளர௠வெளி சேமிபà¯à®ªà¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" + +#: templates/settings.php:88 +msgid "Allow users to mount their own external storage" +msgstr "பயனாளர௠அவரà¯à®•à®³à¯à®Ÿà¯ˆà®¯ சொநà¯à®¤ வெளியக சேமிபà¯à®ªà¯ˆ à®à®±à¯à®± அனà¯à®®à®¤à®¿à®•à¯à®•" + +#: templates/settings.php:99 +msgid "SSL root certificates" +msgstr "SSL வேர௠சானà¯à®±à®¿à®¤à®´à¯à®•à®³à¯" + +#: templates/settings.php:113 +msgid "Import Root Certificate" +msgstr "வேர௠சானà¯à®±à®¿à®¤à®´à¯ˆ இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®•" diff --git a/l10n/ta_LK/files_sharing.po b/l10n/ta_LK/files_sharing.po new file mode 100644 index 0000000000000000000000000000000000000000..cdb761631d352eedcdc7a1fbde831a995e69693e --- /dev/null +++ b/l10n/ta_LK/files_sharing.po @@ -0,0 +1,49 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-20 00:01+0100\n" +"PO-Revision-Date: 2012-11-19 09:00+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "சமரà¯à®ªà¯à®ªà®¿à®•à¯à®•à¯à®•" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "%s கோபà¯à®ªà¯à®±à¯ˆà®¯à®¾à®©à®¤à¯ %s உடன௠பகிரபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "%s கோபà¯à®ªà®¾à®©à®¤à¯ %s உடன௠பகிரபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "பதிவிறகà¯à®•à¯à®•" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "அதறà¯à®•à¯ à®®à¯à®©à¯à®©à¯‹à®•à¯à®•à¯ ஒனà¯à®±à¯à®®à¯ இலà¯à®²à¯ˆ" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "வலைய சேவைகள௠உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடà¯à®Ÿà¯à®ªà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®©à¯ கீழ௠உளà¯à®³à®¤à¯" diff --git a/l10n/ta_LK/files_versions.po b/l10n/ta_LK/files_versions.po new file mode 100644 index 0000000000000000000000000000000000000000..d1c44e0d9d0d72d07005b58f26eb19ded3652368 --- /dev/null +++ b/l10n/ta_LK/files_versions.po @@ -0,0 +1,43 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-20 00:01+0100\n" +"PO-Revision-Date: 2012-11-19 08:42+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/settings-personal.js:31 templates/settings-personal.php:10 +msgid "Expire all versions" +msgstr "எலà¯à®²à®¾ பதிபà¯à®ªà¯à®•à®³à¯à®®à¯ காலாவதியாகிவிடà¯à®Ÿà®¤à¯" + +#: js/versions.js:16 +msgid "History" +msgstr "வரலாறà¯" + +#: templates/settings-personal.php:4 +msgid "Versions" +msgstr "பதிபà¯à®ªà¯à®•à®³à¯" + +#: templates/settings-personal.php:7 +msgid "This will delete all existing backup versions of your files" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯à®•à¯à®•à®³à®¿à®²à¯ à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³ ஆதாரநகலà¯à®•à®³à®¿à®©à¯ பதிபà¯à®ªà¯à®•à¯à®•à®³à¯ˆ இவை அழிதà¯à®¤à¯à®µà®¿à®Ÿà¯à®®à¯" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "கோபà¯à®ªà¯ பதிபà¯à®ªà¯à®•à®³à¯" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" diff --git a/l10n/ta_LK/lib.po b/l10n/ta_LK/lib.po new file mode 100644 index 0000000000000000000000000000000000000000..804cdf565e5b16138c132e5a5174eab5c84f2f52 --- /dev/null +++ b/l10n/ta_LK/lib.po @@ -0,0 +1,153 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-15 14:16+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app.php:285 +msgid "Help" +msgstr "உதவி" + +#: app.php:292 +msgid "Personal" +msgstr "தனிபà¯à®ªà®Ÿà¯à®Ÿ" + +#: app.php:297 +msgid "Settings" +msgstr "அமைபà¯à®ªà¯à®•à®³à¯" + +#: app.php:302 +msgid "Users" +msgstr "பயனாளரà¯à®•à®³à¯" + +#: app.php:309 +msgid "Apps" +msgstr "செயலிகளà¯" + +#: app.php:311 +msgid "Admin" +msgstr "நிரà¯à®µà®¾à®•à®®à¯" + +#: files.php:332 +msgid "ZIP download is turned off." +msgstr "வீசொலிப௠பூடà¯à®Ÿà¯ பதிவிறகà¯à®•à®®à¯ நிறà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯." + +#: files.php:333 +msgid "Files need to be downloaded one by one." +msgstr "கோபà¯à®ªà¯à®•à®³à¯à®’னà¯à®±à®©à¯ பின௠ஒனà¯à®±à®¾à®• பதிவிறகà¯à®•à®ªà¯à®ªà®Ÿà®µà¯‡à®£à¯à®Ÿà¯à®®à¯." + +#: files.php:333 files.php:358 +msgid "Back to Files" +msgstr "கோபà¯à®ªà¯à®•à®³à¯à®•à¯à®•à¯ செலà¯à®•" + +#: files.php:357 +msgid "Selected files too large to generate zip file." +msgstr "வீ சொலிக௠கோபà¯à®ªà¯à®•à®³à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•à¯ தெரிவà¯à®šà¯†à®¯à¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯à®•à®³à¯ மிகபà¯à®ªà¯†à®°à®¿à®¯à®µà¯ˆ" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "செயலி இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" + +#: json.php:39 json.php:64 json.php:77 json.php:89 +msgid "Authentication error" +msgstr "அதà¯à®¤à®¾à®Ÿà¯à®šà®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¿à®²à¯ வழà¯" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "அடையாளவிலà¯à®²à¯ˆ காலாவதியாகிவிடà¯à®Ÿà®¤à¯. தயவà¯à®šà¯†à®¯à¯à®¤à¯ பகà¯à®•à®¤à¯à®¤à¯ˆ மீள௠à®à®±à¯à®±à¯à®•." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "கோபà¯à®ªà¯à®•à®³à¯" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "உரை" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "படஙà¯à®•à®³à¯" + +#: template.php:103 +msgid "seconds ago" +msgstr "செகà¯à®•à®©à¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: template.php:104 +msgid "1 minute ago" +msgstr "1 நிமிடதà¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯ " + +#: template.php:105 +#, php-format +msgid "%d minutes ago" +msgstr "%d நிமிடஙà¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: template.php:106 +msgid "1 hour ago" +msgstr "1 மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯" + +#: template.php:108 +msgid "today" +msgstr "இனà¯à®±à¯" + +#: template.php:109 +msgid "yesterday" +msgstr "நேறà¯à®±à¯" + +#: template.php:110 +#, php-format +msgid "%d days ago" +msgstr "%d நாடà¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: template.php:111 +msgid "last month" +msgstr "கடநà¯à®¤ மாதமà¯" + +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d மாததà¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯" + +#: template.php:113 +msgid "last year" +msgstr "கடநà¯à®¤ வரà¯à®Ÿà®®à¯" + +#: template.php:114 +msgid "years ago" +msgstr "வரà¯à®Ÿà®™à¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "%s இனà¯à®©à¯à®®à¯ இரà¯à®•à¯à®•à®¿à®©à¯à®±à®©. மேலதிக தகவலà¯à®•à®³à¯à®•à¯à®•à¯ எடà¯à®•à¯à®•" + +#: updater.php:77 +msgid "up to date" +msgstr "நவீன" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ˆ சரிபாரà¯à®ªà¯à®ªà®¤à¯ˆ செயலறà¯à®±à®¤à®¾à®•à¯à®•à¯à®•" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "பிரிவ௠\"%s\" ஠கணà¯à®Ÿà¯à®ªà¯à®ªà®¿à®Ÿà®¿à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" diff --git a/l10n/ta_LK/settings.po b/l10n/ta_LK/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..4732ffd51c05dab1369c21154f69bbc9e4e586e4 --- /dev/null +++ b/l10n/ta_LK/settings.po @@ -0,0 +1,248 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "செயலி சேமிபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ à®à®±à¯à®±à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯à®³à¯à®³à®¤à¯" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "கà¯à®´à¯ à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³à®¤à¯" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "கà¯à®´à¯à®µà¯ˆ சேரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: ajax/enableapp.php:12 +msgid "Could not enable app. " +msgstr "செயலியை இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "மினà¯à®©à®žà¯à®šà®²à¯ சேமிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± மினà¯à®©à®žà¯à®šà®²à¯" + +#: ajax/openid.php:13 +msgid "OpenID Changed" +msgstr "OpenID மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± வேணà¯à®Ÿà¯à®•à¯‹à®³à¯" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "கà¯à®´à¯à®µà¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "அதà¯à®¤à®¾à®Ÿà¯à®šà®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¿à®²à¯ வழà¯" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "பயனாளரை நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "மொழி மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "கà¯à®´à¯ %s இல௠பயனாளரை சேரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "கà¯à®´à¯ %s இலிரà¯à®¨à¯à®¤à¯ பயனாளரை நீகà¯à®•à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: js/apps.js:28 js/apps.js:67 +msgid "Disable" +msgstr "இயலà¯à®®à¯ˆà®ªà¯à®ª" + +#: js/apps.js:28 js/apps.js:55 +msgid "Enable" +msgstr "செயலறà¯à®±à®¤à®¾à®•à¯à®•à¯à®•" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" + +#: personal.php:42 personal.php:43 +msgid "__language_name__" +msgstr "_மொழி_பெயரà¯_" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ செயலியை சேரà¯à®•à¯à®•" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "மேலதிக செயலிகளà¯" + +#: templates/apps.php:27 +msgid "Select an App" +msgstr "செயலி ஒனà¯à®±à¯ˆ தெரிவà¯à®šà¯†à®¯à¯à®•" + +#: templates/apps.php:31 +msgid "See application page at apps.owncloud.com" +msgstr "apps.owncloud.com இல௠செயலி பகà¯à®•à®¤à¯à®¤à¯ˆ பாரà¯à®•à¯à®•" + +#: templates/apps.php:32 +msgid "-licensed by " +msgstr "-அனà¯à®®à®¤à®¿ பெறà¯à®± " + +#: templates/help.php:9 +msgid "Documentation" +msgstr "ஆவணமாகà¯à®•à®²à¯" + +#: templates/help.php:10 +msgid "Managing Big Files" +msgstr "பெரிய கோபà¯à®ªà¯à®•à®³à¯ˆ à®®à¯à®•à®¾à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯" + +#: templates/help.php:11 +msgid "Ask a question" +msgstr "வினா ஒனà¯à®±à¯ˆ கேடà¯à®•" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "தரவà¯à®¤à®³à®¤à¯à®¤à¯ˆ இணைகà¯à®•à¯à®®à¯ உதவியில௠பிரசà¯à®šà®¿à®©à¯ˆà®•à®³à¯" + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "கைமà¯à®±à¯ˆà®¯à®¾à®• à®…à®™à¯à®•à¯ செலà¯à®•" + +#: templates/help.php:31 +msgid "Answer" +msgstr "விடை" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "நீஙà¯à®•à®³à¯ %s இலà¯à®³à¯à®³ %sபயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿à®¯à¯à®³à¯à®³à¯€à®°à¯à®•à®³à¯" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "desktop மறà¯à®±à¯à®®à¯ Mobile ஒதà¯à®¤à®¿à®šà¯ˆà®µà¯ சேவைப௠பயனாளரà¯" + +#: templates/personal.php:13 +msgid "Download" +msgstr "பதிவிறகà¯à®•à¯à®•" + +#: templates/personal.php:19 +msgid "Your password was changed" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "தறà¯à®ªà¯‹à®¤à¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: templates/personal.php:22 +msgid "New password" +msgstr "பà¯à®¤à®¿à®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: templates/personal.php:23 +msgid "show" +msgstr "காடà¯à®Ÿà¯" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à¯à®•" + +#: templates/personal.php:30 +msgid "Email" +msgstr "மினà¯à®©à®žà¯à®šà®²à¯" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯ மீள௠பெறà¯à®µà®¤à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à®±à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•" + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "மொழி" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "மொழிபெயரà¯à®•à¯à®• உதவி" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯ à®®à¯à®•à®¾à®®à¯ˆà®¯à®¿à®²à¯ உளà¯à®³ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ ownCloud உடன௠இணைகà¯à®• இநà¯à®¤ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Developed by the ownCloud community, the source code is licensed under the AGPL." + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "பெயரà¯" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "கà¯à®´à¯à®•à¯à®•à®³à¯" + +#: templates/users.php:32 +msgid "Create" +msgstr "உரà¯à®µà®¾à®•à¯à®•à¯à®•" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "பொத௠இரà¯à®ªà¯à®ªà¯ பஙà¯à®•à¯" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "மறà¯à®±à®µà¯ˆ" + +#: templates/users.php:80 templates/users.php:112 +msgid "Group Admin" +msgstr "கà¯à®´à¯ நிரà¯à®µà®¾à®•à®¿" + +#: templates/users.php:82 +msgid "Quota" +msgstr "பஙà¯à®•à¯" + +#: templates/users.php:146 +msgid "Delete" +msgstr "அழிகà¯à®•" diff --git a/l10n/ta_LK/user_ldap.po b/l10n/ta_LK/user_ldap.po new file mode 100644 index 0000000000000000000000000000000000000000..2cd27957467cb9c0ab7ea3976d9c661ab12a3ce9 --- /dev/null +++ b/l10n/ta_LK/user_ldap.po @@ -0,0 +1,171 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 09:09+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:8 +msgid "Host" +msgstr "ஓமà¯à®ªà¯à®©à®°à¯" + +#: templates/settings.php:8 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "நீஙà¯à®•à®³à¯ SSL சேவையை தவிர உடனà¯à®ªà®Ÿà¯ வரைமà¯à®±à¯ˆà®¯à¯ˆ தவிரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯. பிறக௠ldaps:.// உடன௠ஆரமà¯à®ªà®¿à®•à¯à®•à®µà¯à®®à¯" + +#: templates/settings.php:9 +msgid "Base DN" +msgstr "தள DN" + +#: templates/settings.php:9 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "நீஙà¯à®•à®³à¯ பயனாளரà¯à®•à®³à¯à®•à¯à®•à¯à®®à¯ மேனà¯à®®à¯ˆ ததà¯à®¤à®²à®¿à®²à¯ உளà¯à®³ கà¯à®´à¯à®µà®¿à®±à¯à®•à¯à®®à¯ தள DN ஠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®²à®¾à®®à¯ " + +#: templates/settings.php:10 +msgid "User DN" +msgstr "பயனாளர௠DN" + +#: templates/settings.php:10 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:11 +msgid "Password" +msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯" + +#: templates/settings.php:11 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:12 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:13 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:13 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:13 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:14 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:14 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "" + +#: templates/settings.php:14 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "எநà¯à®¤ ஒதà¯à®•à¯à®•à¯€à®Ÿà¯à®®à¯ இலà¯à®²à®¾à®®à®²à¯, உதாரணமà¯. \"objectClass=posixGroup\"." + +#: templates/settings.php:17 +msgid "Port" +msgstr "தà¯à®±à¯ˆ " + +#: templates/settings.php:18 +msgid "Base User Tree" +msgstr "தள பயனாளர௠மரமà¯" + +#: templates/settings.php:19 +msgid "Base Group Tree" +msgstr "தள கà¯à®´à¯ மரமà¯" + +#: templates/settings.php:20 +msgid "Group-Member association" +msgstr "கà¯à®´à¯ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ சஙà¯à®•à®®à¯" + +#: templates/settings.php:21 +msgid "Use TLS" +msgstr "TLS ஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯" + +#: templates/settings.php:21 +msgid "Do not use it for SSL connections, it will fail." +msgstr "SSL இணைபà¯à®ªà®¿à®±à¯à®•à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯‡à®£à¯à®Ÿà®¾à®®à¯, அத௠தோலà¯à®µà®¿à®¯à®Ÿà¯ˆà®¯à¯à®®à¯." + +#: templates/settings.php:22 +msgid "Case insensitve LDAP server (Windows)" +msgstr "உணரà¯à®šà¯à®šà®¿à®¯à®¾à®© LDAP சேவையகம௠(சாளரஙà¯à®•à®³à¯)" + +#: templates/settings.php:23 +msgid "Turn off SSL certificate validation." +msgstr "SSL சானà¯à®±à®¿à®¤à®´à®¿à®©à¯ செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à¯ˆ நிறà¯à®¤à¯à®¤à®¿à®µà®¿à®Ÿà®µà¯à®®à¯" + +#: templates/settings.php:23 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "இநà¯à®¤ தெரிவà¯à®•à®³à®¿à®²à¯ மடà¯à®Ÿà¯à®®à¯ இணைபà¯à®ªà¯ வேலைசெயà¯à®¤à®¾à®²à¯, உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ owncloud சேவையகதà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ LDAP சேவையகதà¯à®¤à®¿à®©à¯ SSL சானà¯à®±à®¿à®¤à®´à¯ˆ இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯à®µà¯à®®à¯" + +#: templates/settings.php:23 +msgid "Not recommended, use for testing only." +msgstr "பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ, சோதனைகà¯à®•à®¾à®• மடà¯à®Ÿà¯à®®à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯." + +#: templates/settings.php:24 +msgid "User Display Name Field" +msgstr "பயனாளர௠காடà¯à®šà®¿à®ªà¯à®ªà¯†à®¯à®°à¯ பà¯à®²à®®à¯" + +#: templates/settings.php:24 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "பயனாளரின௠ownCloud பெயரை உரà¯à®µà®¾à®•à¯à®• LDAP பணà¯à®ªà¯à®•à¯à®•à¯‚றை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯." + +#: templates/settings.php:25 +msgid "Group Display Name Field" +msgstr "கà¯à®´à¯à®µà®¿à®©à¯ காடà¯à®šà®¿ பெயர௠பà¯à®²à®®à¯ " + +#: templates/settings.php:25 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "ownCloud கà¯à®´à¯à®•à¯à®•à®³à®¿à®©à¯ பெயரà¯à®•à®³à¯ˆ உரà¯à®µà®¾à®•à¯à®• LDAP பணà¯à®ªà¯à®•à¯à®•à¯‚றை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯." + +#: templates/settings.php:27 +msgid "in bytes" +msgstr "bytes களில௠" + +#: templates/settings.php:29 +msgid "in seconds. A change empties the cache." +msgstr "செகà¯à®•à®©à¯à®•à®³à®¿à®²à¯. ஒர௠மாறà¯à®±à®®à¯ இடைமாறà¯à®±à¯à®¨à®¿à®©à¯ˆà®µà®•à®¤à¯à®¤à¯ˆ வெறà¯à®±à®¿à®Ÿà®®à®¾à®•à¯à®•à¯à®®à¯." + +#: templates/settings.php:30 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "பயனாளர௠பெயரிறà¯à®•à¯ வெறà¯à®±à®¿à®Ÿà®®à®¾à®• விடவà¯à®®à¯ (பொத௠இரà¯à®ªà¯à®ªà¯). இலà¯à®²à®¾à®µà®¿à®Ÿà®¿à®©à¯ LDAP/AD பணà¯à®ªà¯à®•à¯à®•à¯‚றை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà¯à®®à¯." + +#: templates/settings.php:32 +msgid "Help" +msgstr "உதவி" diff --git a/l10n/ta_LK/user_webdavauth.po b/l10n/ta_LK/user_webdavauth.po new file mode 100644 index 0000000000000000000000000000000000000000..17c43a7f96354b8650a3cbf318c364abcc7ae2bd --- /dev/null +++ b/l10n/ta_LK/user_webdavauth.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-18 00:01+0100\n" +"PO-Revision-Date: 2012-11-17 05:29+0000\n" +"Last-Translator: suganthi \n" +"Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_LK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 651f38bc4701ad647a43d8c4b76888dd80230ed7..95457184e9d00c49bf3c121d95028081dc2d98cb 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,208 +17,241 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "" -#: js/js.js:238 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "" -#: js/js.js:670 -msgid "January" +#: js/js.js:704 +msgid "seconds ago" msgstr "" -#: js/js.js:670 -msgid "February" +#: js/js.js:705 +msgid "1 minute ago" msgstr "" -#: js/js.js:670 -msgid "March" +#: js/js.js:706 +msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:670 -msgid "April" +#: js/js.js:707 +msgid "1 hour ago" msgstr "" -#: js/js.js:670 -msgid "May" +#: js/js.js:708 +msgid "{hours} hours ago" msgstr "" -#: js/js.js:670 -msgid "June" +#: js/js.js:709 +msgid "today" msgstr "" -#: js/js.js:671 -msgid "July" +#: js/js.js:710 +msgid "yesterday" msgstr "" -#: js/js.js:671 -msgid "August" +#: js/js.js:711 +msgid "{days} days ago" msgstr "" -#: js/js.js:671 -msgid "September" +#: js/js.js:712 +msgid "last month" msgstr "" -#: js/js.js:671 -msgid "October" +#: js/js.js:713 +msgid "{months} months ago" msgstr "" -#: js/js.js:671 -msgid "November" +#: js/js.js:714 +msgid "months ago" msgstr "" -#: js/js.js:671 -msgid "December" +#: js/js.js:715 +msgid "last year" msgstr "" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" msgstr "" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:322 js/share.js:484 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" msgstr "" -#: js/share.js:497 +#: js/share.js:533 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:509 +#: js/share.js:545 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "" @@ -231,15 +264,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" +msgid "Reset email send." msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" +msgid "Request failed!" msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "" @@ -295,72 +328,187 @@ msgstr "" msgid "Edit categories" msgstr "" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + #: templates/installation.php:24 -msgid "Create an admin account" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the " +"webserver document root." msgstr "" #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 msgid "Advanced" msgstr "" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "" @@ -375,3 +523,17 @@ msgstr "" #: templates/part.pagenavi.php:20 msgid "next" msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 19b3af3c6b05df1798f37475e3da6c218d1d4e84..30ec5c19b4a9850924505d95d340deb1af155a5f 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,194 +22,165 @@ msgid "There is no error, the file uploaded with success" msgstr "" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "" -#: js/filelist.js:192 js/filelist.js:194 -msgid "already exists" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "" -#: js/filelist.js:192 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "" -#: js/filelist.js:241 js/filelist.js:243 -msgid "replaced" +#: js/filelist.js:250 +msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:241 js/filelist.js:243 js/filelist.js:275 js/filelist.js:277 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "" -#: js/filelist.js:243 -msgid "with" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:275 -msgid "unshared" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:277 -msgid "deleted" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "" -#: js/files.js:214 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "" -#: js/files.js:214 +#: js/files.js:218 msgid "Upload Error" msgstr "" -#: js/files.js:242 js/files.js:347 js/files.js:377 +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:262 +#: js/files.js:274 msgid "1 file uploading" msgstr "" -#: js/files.js:265 js/files.js:310 js/files.js:325 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:328 js/files.js:361 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "" -#: js/files.js:430 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:500 -msgid "Invalid name, '/' is not allowed." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" msgstr "" -#: js/files.js:681 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:689 +#: js/files.js:712 msgid "error while scanning" msgstr "" -#: js/files.js:762 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "" -#: js/files.js:763 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "" -#: js/files.js:764 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "" -#: js/files.js:791 -msgid "folder" -msgstr "" - -#: js/files.js:793 -msgid "folders" -msgstr "" - -#: js/files.js:801 -msgid "file" -msgstr "" - -#: js/files.js:803 -msgid "files" -msgstr "" - -#: js/files.js:847 -msgid "seconds ago" -msgstr "" - -#: js/files.js:848 -msgid "minute ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:849 -msgid "minutes ago" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:852 -msgid "today" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:853 -msgid "yesterday" -msgstr "" - -#: js/files.js:854 -msgid "days ago" -msgstr "" - -#: js/files.js:855 -msgid "last month" -msgstr "" - -#: js/files.js:857 -msgid "months ago" -msgstr "" - -#: js/files.js:858 -msgid "last year" -msgstr "" - -#: js/files.js:859 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -220,27 +191,27 @@ msgstr "" msgid "Maximum upload size" msgstr "" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "" @@ -248,52 +219,48 @@ msgstr "" msgid "New" msgstr "" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "" -#: templates/index.php:11 -msgid "From url" +#: templates/index.php:14 +msgid "From link" msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:50 -msgid "Share" -msgstr "" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 536907bb00817276c67f0e277a64c5a6ad69a5ba..10fb8e3c105bb931582f49c0b0a6f7c0a9c822f3 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,6 +29,6 @@ msgstr "" msgid "None" msgstr "" -#: templates/settings.php:10 +#: templates/settings.php:12 msgid "Enable Encryption" msgstr "" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index f04d2300cbbbbfc15932f0c91fec70966ea567ec..3261eb201703ff4fdf183b2b8f70c8e45059350b 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,7 +45,7 @@ msgstr "" msgid "External Storage" msgstr "" -#: templates/settings.php:7 templates/settings.php:19 +#: templates/settings.php:7 templates/settings.php:21 msgid "Mount point" msgstr "" @@ -65,42 +65,43 @@ msgstr "" msgid "Applicable" msgstr "" -#: templates/settings.php:23 +#: templates/settings.php:26 msgid "Add mount point" msgstr "" -#: templates/settings.php:54 templates/settings.php:62 +#: templates/settings.php:84 msgid "None set" msgstr "" -#: templates/settings.php:63 +#: templates/settings.php:85 msgid "All Users" msgstr "" -#: templates/settings.php:64 +#: templates/settings.php:86 msgid "Groups" msgstr "" -#: templates/settings.php:69 +#: templates/settings.php:94 msgid "Users" msgstr "" -#: templates/settings.php:77 templates/settings.php:107 +#: templates/settings.php:107 templates/settings.php:108 +#: templates/settings.php:148 templates/settings.php:149 msgid "Delete" msgstr "" -#: templates/settings.php:87 +#: templates/settings.php:123 msgid "Enable User External Storage" msgstr "" -#: templates/settings.php:88 +#: templates/settings.php:124 msgid "Allow users to mount their own external storage" msgstr "" -#: templates/settings.php:99 +#: templates/settings.php:138 msgid "SSL root certificates" msgstr "" -#: templates/settings.php:113 +#: templates/settings.php:157 msgid "Import Root Certificate" msgstr "" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 499c844b6fa77d4c0f69c7e3d201af7bcde006dd..4dbf6eef9570d2903331701f1350a57ffd6ba93f 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,24 +25,24 @@ msgstr "" msgid "Submit" msgstr "" -#: templates/public.php:9 +#: templates/public.php:17 #, php-format msgid "%s shared the folder %s with you" msgstr "" -#: templates/public.php:11 +#: templates/public.php:19 #, php-format msgid "%s shared the file %s with you" msgstr "" -#: templates/public.php:14 templates/public.php:30 +#: templates/public.php:22 templates/public.php:38 msgid "Download" msgstr "" -#: templates/public.php:29 +#: templates/public.php:37 msgid "No preview available for" msgstr "" -#: templates/public.php:35 +#: templates/public.php:43 msgid "web services under your control" msgstr "" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index db827defbd6b2096055f0ceb4a51d476dbf6866e..a82ea8a94ef04a429a7a95c625744f31c0620362 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index 020ff3080e37b88a34dbd924f279013f93e073ed..cd78b93de0bf47ac90fe6d72ec4a7132904e3a2e 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:05+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,19 +41,19 @@ msgstr "" msgid "Admin" msgstr "" -#: files.php:328 +#: files.php:361 msgid "ZIP download is turned off." msgstr "" -#: files.php:329 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:329 files.php:354 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "" -#: files.php:353 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "" @@ -69,45 +69,67 @@ msgstr "" msgid "Token expired. Please reload page." msgstr "" -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:96 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "" @@ -123,3 +145,8 @@ msgstr "" #: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 009e49c13b653c3aa5d54e3afd4cf0561c77996c..2ead3e9d136fa2a09eb20517ac7dd0ae19a08d87 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:05+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,70 +17,73 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "" @@ -88,96 +91,10 @@ msgstr "" msgid "Saving..." msgstr "" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the " -"webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "" @@ -211,21 +128,21 @@ msgstr "" msgid "Ask a question" msgstr "" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -284,6 +201,15 @@ msgstr "" msgid "use this address to connect to your ownCloud in your file manager" msgstr "" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is licensed under the AGPL." +msgstr "" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 3e8aebbb49b32d4cb570d717016fa5a1bf551416..5868d1d1c4f7a7d7f68c03014a3fd714e4000f54 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-13 02:04+0200\n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot new file mode 100644 index 0000000000000000000000000000000000000000..cebdd2e3ca75e9036dbd7e3b5e1a8c99345abb66 --- /dev/null +++ b/l10n/templates/user_webdavauth.pot @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "" diff --git a/l10n/th_TH/admin_dependencies_chk.po b/l10n/th_TH/admin_dependencies_chk.po deleted file mode 100644 index 95abe0c652612ed21fb274cc380434433b1a5756..0000000000000000000000000000000000000000 --- a/l10n/th_TH/admin_dependencies_chk.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-20 02:01+0200\n" -"PO-Revision-Date: 2012-08-19 14:18+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "โมดูล php-json จำเป็นต้องใช้สำหรับà¹à¸­à¸žà¸žà¸¥à¸´à¹€à¸„ชั่นหลายๆตัวเพื่อà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸ªà¸²à¸à¸¥" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "โมดูล php-curl จำเป็นต้องใช้สำหรับดึงข้อมูลชื่อหัวเว็บเมื่อเพิ่มเข้าไปยังรายà¸à¸²à¸£à¹‚ปรด" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "โมดูล php-gd จำเป็นต้องใช้สำหรับสร้างรูปภาพขนาดย่อของรูปภาพของคุณ" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "โมดูล php-ldap จำเป็นต้องใช้สำหรับà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸à¸±à¸šà¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œ ldap ของคุณ" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "โมดูล php-zip จำเป็นต้องใช้สำหรับดาวน์โหลดไฟล์พร้อมà¸à¸±à¸™à¸«à¸¥à¸²à¸¢à¹†à¹„ฟล์ในครั้งเดียว" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "โมดูล php-mb_multibyte จำเป็นต้องใช้สำหรับà¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¸à¸²à¸£à¹à¸›à¸¥à¸‡à¸£à¸«à¸±à¸ªà¹„ฟล์อย่างถูà¸à¸•à¹‰à¸­à¸‡" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "โมดูล php-ctype จำเป็นต้องใช้สำหรับตรวจสอบความถูà¸à¸•à¹‰à¸­à¸‡à¸‚องข้อมูล" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "โมดูล php-xml จำเป็นต้องใช้สำหรับà¹à¸Šà¸£à¹Œà¹„ฟล์ด้วย webdav" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "คำสั่ง allow_url_fopen ที่อยู่ในไฟล์ php.ini ของคุณ ควรà¸à¸³à¸«à¸™à¸”เป็น 1 เพื่อดึงข้อมูลของà¸à¸²à¸™à¸„วามรู้ต่างๆจาà¸à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¸‚อง OCS" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "โมดูล php-pdo จำเป็นต้องใช้สำหรับจัดเà¸à¹‡à¸šà¸‚้อมูลใน owncloud เข้าไปไว้ยังà¸à¸²à¸™à¸‚้อมูล" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "สถานะà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "ใช้งานโดย:" diff --git a/l10n/th_TH/admin_migrate.po b/l10n/th_TH/admin_migrate.po deleted file mode 100644 index c3f57864015faadf738610ccfd68356b81ef7172..0000000000000000000000000000000000000000 --- a/l10n/th_TH/admin_migrate.po +++ /dev/null @@ -1,33 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:02+0200\n" -"PO-Revision-Date: 2012-08-14 13:09+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "ส่งออà¸à¸‚้อมูลค่าสมมุติของ ownCloud นี้" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "ส่วนนี้จะเป็นà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹„ฟล์บีบอัดที่บรรจุข้อมูลค่าสมมุติของ ownCloud.\n à¸à¸£à¸¸à¸“าเลือà¸à¸Šà¸™à¸´à¸”ของà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸‚้อมูล:" - -#: templates/settings.php:12 -msgid "Export" -msgstr "ส่งออà¸" diff --git a/l10n/th_TH/bookmarks.po b/l10n/th_TH/bookmarks.po deleted file mode 100644 index 0c6e7c61e3d1f88eb23aa43925ef7d7de415738e..0000000000000000000000000000000000000000 --- a/l10n/th_TH/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:02+0200\n" -"PO-Revision-Date: 2012-08-14 13:16+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "รายà¸à¸²à¸£à¹‚ปรด" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "ยังไม่มีชื่อ" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "ลาà¸à¸ªà¸´à¹ˆà¸‡à¸™à¸µà¹‰à¹„ปไว้ที่รายà¸à¸²à¸£à¹‚ปรดในโปรà¹à¸à¸£à¸¡à¸šà¸£à¸²à¸§à¹€à¸‹à¸­à¸£à¹Œà¸‚องคุณ à¹à¸¥à¹‰à¸§à¸„ลิà¸à¸—ี่นั่น, เมื่อคุณต้องà¸à¸²à¸£à¹€à¸à¹‡à¸šà¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸šà¹€à¸žà¸ˆà¹€à¸‚้าไปไว้ในรายà¸à¸²à¸£à¹‚ปรดอย่างรวดเร็ว" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "อ่านภายหลัง" - -#: templates/list.php:13 -msgid "Address" -msgstr "ที่อยู่" - -#: templates/list.php:14 -msgid "Title" -msgstr "ชื่อ" - -#: templates/list.php:15 -msgid "Tags" -msgstr "ป้ายà¸à¸³à¸à¸±à¸š" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "บันทึà¸à¸£à¸²à¸¢à¸à¸²à¸£à¹‚ปรด" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "คุณยังไม่มีรายà¸à¸²à¸£à¹‚ปรด" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "Bookmarklet
            " diff --git a/l10n/th_TH/calendar.po b/l10n/th_TH/calendar.po deleted file mode 100644 index db695db5dca440faa3bc5e2795b882fd0f67c0a5..0000000000000000000000000000000000000000 --- a/l10n/th_TH/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:02+0200\n" -"PO-Revision-Date: 2012-08-14 13:30+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "ไม่ใช่ปà¸à¸´à¸—ินทั้งหมดที่จะถูà¸à¸ˆà¸±à¸”เà¸à¹‡à¸šà¸‚้อมูลไว้ในหน่วยความจำà¹à¸„ชอย่างสมบูรณ์" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "ทุà¸à¸ªà¸´à¹ˆà¸‡à¸—ุà¸à¸­à¸¢à¹ˆà¸²à¸‡à¹„ด้ถูà¸à¹€à¸à¹‡à¸šà¹€à¸‚้าไปไว้ในหน่วยความจำà¹à¸„ชอย่างสมบูรณ์à¹à¸¥à¹‰à¸§" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "ไม่พบปà¸à¸´à¸—ินที่ต้องà¸à¸²à¸£" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "ไม่พบà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¸—ี่ต้องà¸à¸²à¸£" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "ปà¸à¸´à¸—ินไม่ถูà¸à¸•à¹‰à¸­à¸‡" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "ไฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¸šà¸£à¸£à¸ˆà¸¸à¸‚้อมูลà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¸—ี่มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸›à¸à¸´à¸—ินของคุณ" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "à¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¹„ด้ถูà¸à¸šà¸±à¸™à¸—ึà¸à¹„ปไว้ในปà¸à¸´à¸—ินที่สร้างขึ้นใหม่à¹à¸¥à¹‰à¸§" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "à¸à¸²à¸£à¸™à¸³à¹€à¸‚้าข้อมูลล้มเหลว" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "à¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¹„ด้ถูà¸à¸šà¸±à¸™à¸—ึà¸à¹€à¸‚้าไปไว้ในปà¸à¸´à¸—ินของคุณà¹à¸¥à¹‰à¸§" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "สร้างโซนเวลาใหม่:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "โซนเวลาถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸¥à¹‰à¸§" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "คำร้องขอไม่ถูà¸à¸•à¹‰à¸­à¸‡" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "ปà¸à¸´à¸—ิน" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "วันเà¸à¸´à¸”" - -#: lib/app.php:122 -msgid "Business" -msgstr "ธุรà¸à¸´à¸ˆ" - -#: lib/app.php:123 -msgid "Call" -msgstr "โทรติดต่อ" - -#: lib/app.php:124 -msgid "Clients" -msgstr "ลูà¸à¸„้า" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "จัดส่ง" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "วันหยุด" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "ไอเดีย" - -#: lib/app.php:128 -msgid "Journey" -msgstr "à¸à¸²à¸£à¹€à¸”ินทาง" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "งานเลี้ยง" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "นัดประชุม" - -#: lib/app.php:131 -msgid "Other" -msgstr "อื่นๆ" - -#: lib/app.php:132 -msgid "Personal" -msgstr "ส่วนตัว" - -#: lib/app.php:133 -msgid "Projects" -msgstr "โครงà¸à¸²à¸£" - -#: lib/app.php:134 -msgid "Questions" -msgstr "คำถาม" - -#: lib/app.php:135 -msgid "Work" -msgstr "งาน" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "โดย" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "ไม่มีชื่อ" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "สร้างปà¸à¸´à¸—ินใหม่" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "ไม่ต้องทำซ้ำ" - -#: lib/object.php:373 -msgid "Daily" -msgstr "รายวัน" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "รายสัปดาห์" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "ทุà¸à¸§à¸±à¸™à¸«à¸¢à¸¸à¸”" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "รายปัà¸à¸©à¹Œ" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "รายเดือน" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "รายปี" - -#: lib/object.php:388 -msgid "never" -msgstr "ไม่ต้องเลย" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "ตามจำนวนที่ปราà¸à¸" - -#: lib/object.php:390 -msgid "by date" -msgstr "ตามวันที่" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "จาà¸à¹€à¸”ือน" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "จาà¸à¸ªà¸±à¸›à¸”าห์" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "วันจันทร์" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "วันอังคาร" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "วันพุธ" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "วันพฤหัสบดี" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "วันศุà¸à¸£à¹Œ" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "วันเสาร์" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "วันอาทิตย์" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "สัปดาห์ที่มีà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¸‚องเดือน" - -#: lib/object.php:428 -msgid "first" -msgstr "ลำดับà¹à¸£à¸" - -#: lib/object.php:429 -msgid "second" -msgstr "ลำดับที่สอง" - -#: lib/object.php:430 -msgid "third" -msgstr "ลำดับที่สาม" - -#: lib/object.php:431 -msgid "fourth" -msgstr "ลำดับที่สี่" - -#: lib/object.php:432 -msgid "fifth" -msgstr "ลำดับที่ห้า" - -#: lib/object.php:433 -msgid "last" -msgstr "ลำดับสุดท้าย" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "มà¸à¸£à¸²à¸„ม" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "มีนาคม" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "เมษายน" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "พฤษภาคม" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "มิถุนายน" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "à¸à¸£à¸à¸à¸²à¸„ม" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "สิงหาคม" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "à¸à¸±à¸™à¸¢à¸²à¸¢à¸™" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "ตุลาคม" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "พฤศจิà¸à¸²à¸¢à¸™" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "ธันวาคม" - -#: lib/object.php:488 -msgid "by events date" -msgstr "ตามวันที่จัดà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "ของเมื่อวานนี้" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "จาà¸à¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚ของสัปดาห์" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "ตามวันà¹à¸¥à¸°à¹€à¸”ือน" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "วันที่" - -#: lib/search.php:43 -msgid "Cal." -msgstr "คำนวณ" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "อา." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "จ." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "อ." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "พ." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "พฤ." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "ศ." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "ส." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "ม.ค." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "à¸.พ." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "มี.ค." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "เม.ย." - -#: templates/calendar.php:8 -msgid "May." -msgstr "พ.ค." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "มิ.ย." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "à¸.ค." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "ส.ค." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "à¸.ย." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "ต.ค." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "พ.ย." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "ธ.ค." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "ทั้งวัน" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "ช่องฟิลด์เà¸à¸´à¸”à¸à¸²à¸£à¸ªà¸¹à¸à¸«à¸²à¸¢" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "ชื่อà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "จาà¸à¸§à¸±à¸™à¸—ี่" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "ตั้งà¹à¸•à¹ˆà¹€à¸§à¸¥à¸²" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "ถึงวันที่" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "ถึงเวลา" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "วันที่สิ้นสุดà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¸­à¸¢à¸¹à¹ˆà¸à¹ˆà¸­à¸™à¸§à¸±à¸™à¹€à¸£à¸´à¹ˆà¸¡à¸•à¹‰à¸™" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "เà¸à¸´à¸”ความล้มเหลวà¸à¸±à¸šà¸à¸²à¸™à¸‚้อมูล" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "สัปดาห์" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "เดือน" - -#: templates/calendar.php:41 -msgid "List" -msgstr "รายà¸à¸²à¸£" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "วันนี้" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "ตั้งค่า" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "ปà¸à¸´à¸—ินของคุณ" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "ลิงค์ CalDav" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "ปà¸à¸´à¸—ินที่เปิดà¹à¸Šà¸£à¹Œ" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "ไม่มีปà¸à¸´à¸—ินที่เปิดà¹à¸Šà¸£à¹Œà¹„ว้" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "เปิดà¹à¸Šà¸£à¹Œà¸›à¸à¸´à¸—ิน" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "ดาวน์โหลด" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "à¹à¸à¹‰à¹„ข" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "ลบ" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸„ุณโดย" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "สร้างปà¸à¸´à¸—ินใหม่" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "à¹à¸à¹‰à¹„ขปà¸à¸´à¸—ิน" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "ชื่อที่ต้องà¸à¸²à¸£à¹ƒà¸«à¹‰à¹à¸ªà¸”ง" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "ใช้งาน" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "สีของปà¸à¸´à¸—ิน" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "บันทึà¸" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "ส่งข้อมูล" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "ยà¸à¹€à¸¥à¸´à¸" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "à¹à¸à¹‰à¹„ขà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "ส่งออà¸à¸‚้อมูล" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "ข้อมูลเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "ทำซ้ำ" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "à¹à¸ˆà¹‰à¸‡à¹€à¸•à¸·à¸­à¸™" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "ผู้เข้าร่วมà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "à¹à¸Šà¸£à¹Œ" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "ชื่อของà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "หมวดหมู่" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "คั่นระหว่างรายà¸à¸²à¸£à¸«à¸¡à¸§à¸”หมู่ด้วยเครื่องหมายจุลภาคหรือคอมม่า" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "à¹à¸à¹‰à¹„ขหมวดหมู่" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "เป็นà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¸•à¸¥à¸­à¸”ทั้งวัน" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "จาà¸" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "ถึง" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "ตัวเลือà¸à¸‚ั้นสูง" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "สถานที่" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "สถานที่จัดà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "คำอธิบาย" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "คำอธิบายเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "ทำซ้ำ" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "ขั้นสูง" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "เลือà¸à¸ªà¸±à¸›à¸”าห์" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "เลือà¸à¸§à¸±à¸™" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "à¹à¸¥à¸°à¸§à¸±à¸™à¸—ี่มีเหตุà¸à¸²à¸£à¸“์เà¸à¸´à¸”ขึ้นในปี" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "à¹à¸¥à¸°à¸§à¸±à¸™à¸—ี่มีเหตุà¸à¸²à¸£à¸“์เà¸à¸´à¸”ขึ้นในเดือน" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "เลือà¸à¹€à¸”ือน" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "เลือà¸à¸ªà¸±à¸›à¸”าห์" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "à¹à¸¥à¸°à¸ªà¸±à¸›à¸”าห์ที่มีเหตุà¸à¸²à¸£à¸“์เà¸à¸´à¸”ขึ้นในปี" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "ช่วงเวลา" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "สิ้นสุด" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "จำนวนที่ปราà¸à¸" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "สร้างปà¸à¸´à¸—ินใหม่" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "นำเข้าไฟล์ปà¸à¸´à¸—ิน" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸›à¸à¸´à¸—ิน" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "ชื่อของปà¸à¸´à¸—ิน" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "เลือà¸à¸Šà¸·à¹ˆà¸­à¸—ี่ต้องà¸à¸²à¸£" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "ปà¸à¸´à¸—ินชื่อดังà¸à¸¥à¹ˆà¸²à¸§à¸–ูà¸à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ปà¹à¸¥à¹‰à¸§ หาà¸à¸„ุณยังดำเนินà¸à¸²à¸£à¸•à¹ˆà¸­à¹„ป ปà¸à¸´à¸—ินดังà¸à¸¥à¹ˆà¸²à¸§à¸™à¸µà¹‰à¸ˆà¸°à¸–ูà¸à¸œà¸ªà¸²à¸™à¸‚้อมูลเข้าด้วยà¸à¸±à¸™" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "นำเข้าข้อมูล" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "ปิดà¸à¸¥à¹ˆà¸­à¸‡à¸‚้อความโต้ตอบ" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "สร้างà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¹ƒà¸«à¸¡à¹ˆ" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "ดูà¸à¸´à¸ˆà¸à¸£à¸£à¸¡" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "ยังไม่ได้เลือà¸à¸«à¸¡à¸§à¸”หมู่" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "ของ" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "ที่" - -#: templates/settings.php:10 -msgid "General" -msgstr "ทั่วไป" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "โซนเวลา" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "อัพเดทโซนเวลาอัตโนมัติ" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "รูปà¹à¸šà¸šà¹€à¸§à¸¥à¸²" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24 ช.ม." - -#: templates/settings.php:58 -msgid "12h" -msgstr "12 ช.ม." - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "เริ่มต้นสัปดาห์ด้วย" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "หน่วยความจำà¹à¸„ช" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "ล้างข้อมูลในหน่วยความจำà¹à¸„ชสำหรับà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¸—ี่ซ้ำซ้อน" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "URLs" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "ที่อยู่ที่ใช้สำหรับเชื่อมข้อมูลปà¸à¸´à¸—ิน CalDAV" - -#: templates/settings.php:87 -msgid "more info" -msgstr "ข้อมูลเพิ่มเติม" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "ที่อยู่หลัภ(Kontact et al)" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "อ่านเฉพาะลิงà¸à¹Œ iCalendar เท่านั้น" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "ผู้ใช้งาน" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "เลือà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "สามารถà¹à¸à¹‰à¹„ขได้" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "à¸à¸¥à¸¸à¹ˆà¸¡" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "เลือà¸à¸à¸¥à¸¸à¹ˆà¸¡" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "à¸à¸³à¸«à¸™à¸”เป็นสาธารณะ" diff --git a/l10n/th_TH/contacts.po b/l10n/th_TH/contacts.po deleted file mode 100644 index 978e20b06690b67d644256e58cd99937fddda6b3..0000000000000000000000000000000000000000 --- a/l10n/th_TH/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดใน (ยà¸à¹€à¸¥à¸´à¸)à¸à¸²à¸£à¹€à¸›à¸´à¸”ใช้งานสมุดบันทึà¸à¸—ี่อยู่" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "ยังไม่ได้à¸à¸³à¸«à¸™à¸”รหัส" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "ไม่สามารถอัพเดทสมุดบันทึà¸à¸—ี่อยู่โดยไม่มีชื่อได้" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ทสมุดบันทึà¸à¸—ี่อยู่" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "ยังไม่ได้ใส่รหัส" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า checksum" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "ยังไม่ได้เลือà¸à¸«à¸¡à¸§à¸”หมู่ที่ต้องà¸à¸²à¸£à¸¥à¸š" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "ไม่พบสมุดบันทึà¸à¸—ี่อยู่ที่ต้องà¸à¸²à¸£" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "ไม่พบข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อที่ต้องà¸à¸²à¸£" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¸•à¸´à¸”ต่อใหม่" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "ยังไม่ได้à¸à¸³à¸«à¸™à¸”ชื่อ" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "ไม่สามารถà¹à¸ˆà¸à¹à¸ˆà¸‡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¸•à¸´à¸”ต่อได้" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "ไม่สามารถเพิ่มรายละเอียดที่ไม่มีข้อมูลได้" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "อย่างน้อยที่สุดช่องข้อมูลที่อยู่จะต้องถูà¸à¸à¸£à¸­à¸à¸¥à¸‡à¹„ป" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "พยายามที่จะเพิ่มทรัพยาà¸à¸£à¸—ี่ซ้ำซ้อนà¸à¸±à¸™: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "ข้อมูลเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š vCard ไม่ถูà¸à¸•à¹‰à¸­à¸‡ à¸à¸£à¸¸à¸“าโหลดหน้าเวปใหม่อีà¸à¸„รั้ง" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "รหัสสูà¸à¸«à¸²à¸¢" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "พบข้อผิดพลาดในà¸à¸²à¸£à¹à¸¢à¸à¸£à¸«à¸±à¸ª VCard:\"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "ยังไม่ได้à¸à¸³à¸«à¸™à¸”ค่า checksum" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "ข้อมูล vCard ไม่ถูà¸à¸•à¹‰à¸­à¸‡ à¸à¸£à¸¸à¸“าโหลดหน้าเว็บใหม่อีà¸à¸„รั้ง: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "มีบางอย่างเà¸à¸´à¸”à¸à¸²à¸£ FUBAR. " - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "ไม่มีรหัสข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อถูà¸à¸ªà¹ˆà¸‡à¸¡à¸²" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸­à¹ˆà¸²à¸™à¸£à¸¹à¸›à¸ à¸²à¸žà¸‚องข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸šà¸±à¸™à¸—ึà¸à¹„ฟล์ชั่วคราว" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "โหลดรูปภาพไม่ถูà¸à¸•à¹‰à¸­à¸‡" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "รหัสข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อเà¸à¸´à¸”à¸à¸²à¸£à¸ªà¸¹à¸à¸«à¸²à¸¢" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "ไม่พบตำà¹à¸«à¸™à¹ˆà¸‡à¸žà¸²à¸˜à¸‚องรูปภาพ" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "ไม่มีไฟล์ดังà¸à¸¥à¹ˆà¸²à¸§" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¹‚หลดรูปภาพ" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸”ึงข้อมูลติดต่อ" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸”ึงคุณสมบัติของรูปภาพ" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸šà¸±à¸™à¸—ึà¸à¸‚้อมูลผู้ติดต่อ" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸‚นาดรูปภาพ" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸„รอบตัดภาพ" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸£à¸¹à¸›à¸ à¸²à¸žà¸Šà¸±à¹ˆà¸§à¸„ราว" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸„้นหารูปภาพ: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อไปยังพื้นที่จัดเà¸à¹‡à¸šà¸‚้อมูล" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "ไม่พบข้อผิดพลาดใดๆ, ไฟล์ถูà¸à¸­à¸±à¸žà¹‚หลดเรียบร้อยà¹à¸¥à¹‰à¸§" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "ไฟล์ที่อัพโหลดมีขนาดไฟล์ใหà¸à¹ˆà¹€à¸à¸´à¸™à¸ˆà¸³à¸™à¸§à¸™à¸—ี่à¸à¸³à¸«à¸™à¸”ไว้ในคำสั่ง upload_max_filesize ที่อยู่ในไฟล์ php.ini" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "ไฟล์ที่อัพโหลดมีขนาดไฟล์ใหà¸à¹ˆà¹€à¸à¸´à¸™à¸ˆà¸³à¸™à¸§à¸™à¸—ี่à¸à¸³à¸«à¸™à¸”ไว้ในคำสั่ง MAX_FILE_SIZE ที่ถูà¸à¸£à¸°à¸šà¸¸à¹„ว้ในรูปà¹à¸šà¸šà¸‚อง HTML" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "ไฟล์ถูà¸à¸­à¸±à¸žà¹‚หลดได้เพียงบางส่วนเท่านั้น" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "ไม่มีไฟล์ที่ถูà¸à¸­à¸±à¸žà¹‚หลด" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "โฟลเดอร์ชั่วคราวเà¸à¸´à¸”à¸à¸²à¸£à¸ªà¸¹à¸à¸«à¸²à¸¢" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "ไม่สามารถบันทึà¸à¸£à¸¹à¸›à¸ à¸²à¸žà¸Šà¸±à¹ˆà¸§à¸„ราวได้: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "ไม่สามารถโหลดรูปภาพชั่วคราวได้: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "ยังไม่มีไฟล์ใดที่ถูà¸à¸­à¸±à¸žà¹‚หลด เà¸à¸´à¸”ข้อผิดพลาดที่ไม่ทราบสาเหตุ" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "ข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "ขออภัย, ฟังà¸à¹Œà¸Šà¸±à¹ˆà¸™à¸à¸²à¸£à¸—ำงานนี้ยังไม่ได้ถูà¸à¸”ำเนินà¸à¸²à¸£" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "ยังไม่ได้ถูà¸à¸”ำเนินà¸à¸²à¸£" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "ไม่สามารถดึงที่อยู่ที่ถูà¸à¸•à¹‰à¸­à¸‡à¹„ด้" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "พบข้อผิดพลาด" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "คุณสมบัตินี้ต้องไม่มีข้อมูลว่างอยู่" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "ไม่สามารถทำสัà¸à¸¥à¸±à¸à¸©à¸“์องค์ประà¸à¸­à¸šà¸•à¹ˆà¸²à¸‡à¹†à¹ƒà¸«à¹‰à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚ตามลำดับได้" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' ถูà¸à¹€à¸£à¸µà¸¢à¸à¹ƒà¸Šà¹‰à¹‚ดยไม่มีอาร์à¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œ à¸à¸£à¸¸à¸“าà¹à¸ˆà¹‰à¸‡à¹„ด้ที่ bugs.owncloud.org" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "à¹à¸à¹‰à¹„ขชื่อ" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "ยังไม่ได้เลือà¸à¹„ฟล์ำสำหรับอัพโหลด" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "ไฟล์ที่คุณà¸à¸³à¸¥à¸±à¸‡à¸žà¸¢à¸²à¸¢à¸²à¸¡à¸—ี่จะอัพโหลดมีขนาดเà¸à¸´à¸™à¸ˆà¸³à¸™à¸§à¸™à¸ªà¸¹à¸‡à¸ªà¸¸à¸”ที่สามารถอัพโหลดได้สำหรับเซิร์ฟเวอร์นี้" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¹‚หลดรูปภาพประจำตัว" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "เลือà¸à¸Šà¸™à¸´à¸”" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "ข้อมูลผู้ติดต่อบางรายà¸à¸²à¸£à¹„ด้ถูà¸à¸—ำเครื่องหมายสำหรับลบทิ้งเอาไว้, à¹à¸•à¹ˆà¸¢à¸±à¸‡à¹„ม่ได้ถูà¸à¸¥à¸šà¸—ิ้ง, à¸à¸£à¸¸à¸“ารอให้รายà¸à¸²à¸£à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¸–ูà¸à¸¥à¸šà¸—ิ้งเสียà¸à¹ˆà¸­à¸™" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "คุณต้องà¸à¸²à¸£à¸œà¸ªà¸²à¸™à¸‚้อมูลสมุดบันทึà¸à¸—ี่อยู่เหล่านี้หรือไม่?" - -#: js/loader.js:49 -msgid "Result: " -msgstr "ผลลัพธ์: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " นำเข้าข้อมูลà¹à¸¥à¹‰à¸§, " - -#: js/loader.js:49 -msgid " failed." -msgstr " ล้มเหลว." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "ชื่อที่ใช้à¹à¸ªà¸”งไม่สามารถเว้นว่างได้" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "ไม่พบสมุดบันทึà¸à¸—ี่อยู่ที่ต้องà¸à¸²à¸£" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "นี่ไม่ใช่สมุดบันทึà¸à¸—ี่อยู่ของคุณ" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "ไม่พบข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "ที่ทำงาน" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "บ้าน" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "อื่นๆ" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "มือถือ" - -#: lib/app.php:203 -msgid "Text" -msgstr "ข้อความ" - -#: lib/app.php:204 -msgid "Voice" -msgstr "เสียงพูด" - -#: lib/app.php:205 -msgid "Message" -msgstr "ข้อความ" - -#: lib/app.php:206 -msgid "Fax" -msgstr "โทรสาร" - -#: lib/app.php:207 -msgid "Video" -msgstr "วีดีโอ" - -#: lib/app.php:208 -msgid "Pager" -msgstr "เพจเจอร์" - -#: lib/app.php:215 -msgid "Internet" -msgstr "อินเทอร์เน็ต" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "วันเà¸à¸´à¸”" - -#: lib/app.php:253 -msgid "Business" -msgstr "ธุรà¸à¸´à¸ˆ" - -#: lib/app.php:254 -msgid "Call" -msgstr "โทร" - -#: lib/app.php:255 -msgid "Clients" -msgstr "ลูà¸à¸„้า" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "ผู้จัดส่ง" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "วันหยุด" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "ไอเดีย" - -#: lib/app.php:259 -msgid "Journey" -msgstr "à¸à¸²à¸£à¹€à¸”ินทาง" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "งานเฉลิมฉลอง" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "ประชุม" - -#: lib/app.php:263 -msgid "Personal" -msgstr "ส่วนตัว" - -#: lib/app.php:264 -msgid "Projects" -msgstr "โปรเจค" - -#: lib/app.php:265 -msgid "Questions" -msgstr "คำถาม" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "วันเà¸à¸´à¸”ของ {name}" - -#: lib/search.php:15 -msgid "Contact" -msgstr "ข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "เพิ่มรายชื่อผู้ติดต่อใหม่" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "นำเข้า" - -#: templates/index.php:18 -msgid "Settings" -msgstr "ตั้งค่า" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "สมุดบันทึà¸à¸—ี่อยู่" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "ปิด" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "ปุ่มลัด" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "ระบบเมนู" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "ข้อมูลผู้ติดต่อถัดไปในรายà¸à¸²à¸£" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "ข้อมูลผู้ติดต่อà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "ขยาย/ย่อ สมุดบันทึà¸à¸—ี่อยู่ปัจจุบัน" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "สมุดบันทึà¸à¸—ี่อยู่ถัดไป" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "สมุดบันทึà¸à¸—ี่อยู่à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" - -#: templates/index.php:54 -msgid "Actions" -msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "รีเฟรชรายชื่อผู้ติดต่อใหม่" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "เพิ่มข้อมูลผู้ติดต่อใหม่" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "เพิ่มสมุดบันทึà¸à¸—ี่อยู่ใหม่" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "ลบข้อมูลผู้ติดต่อปัจจุบัน" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "วางรูปภาพที่ต้องà¸à¸²à¸£à¸­à¸±à¸žà¹‚หลด" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "ลบรูปภาพปัจจุบัน" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "à¹à¸à¹‰à¹„ขรูปภาพปัจจุบัน" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "อัพโหลดรูปภาพใหม่" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "เลือà¸à¸£à¸¹à¸›à¸ à¸²à¸žà¸ˆà¸²à¸ ownCloud" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "à¸à¸³à¸«à¸™à¸”รูปà¹à¸šà¸šà¸‚องชื่อย่อ, ชื่อจริง, ย้อนค่าà¸à¸¥à¸±à¸µà¸šà¸”้วยคอมม่าเอง" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "à¹à¸à¹‰à¹„ขรายละเอียดของชื่อ" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "หน่วยงาน" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "ลบ" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "ชื่อเล่น" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "à¸à¸£à¸­à¸à¸Šà¸·à¹ˆà¸­à¹€à¸¥à¹ˆà¸™" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "เว็บไซต์" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "ไปที่เว็บไซต์" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "à¸à¸¥à¸¸à¹ˆà¸¡" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "คั่นระหว่างรายชื่อà¸à¸¥à¸¸à¹ˆà¸¡à¸”้วยเครื่องหมายจุลภาีคหรือคอมม่า" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "à¹à¸à¹‰à¹„ขà¸à¸¥à¸¸à¹ˆà¸¡" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "พิเศษ" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "à¸à¸£à¸¸à¸“าระบุที่อยู่อีเมลที่ถูà¸à¸•à¹‰à¸­à¸‡" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "à¸à¸£à¸­à¸à¸—ี่อยู่อีเมล" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "ส่งอีเมลไปที่" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "ลบที่อยู่อีเมล" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "à¸à¸£à¸­à¸à¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚โทรศัพท์" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "ลบหมายเลขโทรศัพท์" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "ดูบนà¹à¸œà¸™à¸—ี่" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "à¹à¸à¹‰à¹„ขรายละเอียดที่อยู่" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "เพิ่มหมายเหตุà¸à¸³à¸à¸±à¸šà¹„ว้ที่นี่" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "เพิ่มช่องรับข้อมูล" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "โทรศัพท์" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "อีเมล์" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "ที่อยู่" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "หมายเหตุ" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "ดาวน์โหลดข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "ลบข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "รูปภาพชั่วคราวดังà¸à¸¥à¹ˆà¸²à¸§à¹„ด้ถูà¸à¸¥à¸šà¸­à¸­à¸à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¹à¸„ชà¹à¸¥à¹‰à¸§" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "à¹à¸à¹‰à¹„ขที่อยู่" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "ประเภท" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "ตู้ ปณ." - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "ที่อยู่" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "ถนนà¹à¸¥à¸°à¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "เพิ่ม" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "หมายเลขอพาร์ทเมนต์ ฯลฯ" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "เมือง" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "ภูมิภาค" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "เช่น รัภหรือ จังหวัด" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "รหัสไปรษณีย์" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "รหัสไปรษณีย์" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "ประเทศ" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "สมุดบันทึà¸à¸—ี่อยู่" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "คำนำหน้าชื่อคนรัà¸" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "นางสาว" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "น.ส." - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "นาย" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "คุณ" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "นาง" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "ดร." - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "ชื่อที่ใช้" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "ชื่ออื่นๆ" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "ชื่อครอบครัว" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "คำà¹à¸™à¸šà¸—้ายชื่อคนรัà¸" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "M.D." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "ปริà¸à¸à¸²à¹€à¸­à¸" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "จูเนียร์" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "ซีเนียร์" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "นำเข้าไฟล์ข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸ªà¸¡à¸¸à¸”บันทึà¸à¸—ี่อยู่" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "สร้างสมุดบันทึà¸à¸—ี่อยู่ใหม่" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "à¸à¸³à¸«à¸™à¸”ชื่อของสมุดที่อยู่ที่สร้างใหม่" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "นำเข้าข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อ" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "คุณยังไม่มีข้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อใดๆในสมุดบันทึà¸à¸—ี่อยู่ของคุณ" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "เพิ่มชื่อผู้ติดต่อ" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "เลือà¸à¸ªà¸¡à¸¸à¸”บันทึà¸à¸—ี่อยู่" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "à¸à¸£à¸­à¸à¸Šà¸·à¹ˆà¸­" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "à¸à¸£à¸­à¸à¸„ำอธิบาย" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "ที่อยู่ที่ใช้เชื่อมข้อมูลà¸à¸±à¸š CardDAV" - -#: templates/settings.php:3 -msgid "more info" -msgstr "ข้อมูลเพิ่มเติม" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "ที่อยู่หลัภ(สำหรับติดต่อ)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "à¹à¸ªà¸”งลิงà¸à¹Œ CardDav" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "à¹à¸ªà¸”งลิงà¸à¹Œ VCF สำหรับอ่านเท่านั้น" - -#: templates/settings.php:26 -msgid "Share" -msgstr "à¹à¸Šà¸£à¹Œ" - -#: templates/settings.php:29 -msgid "Download" -msgstr "ดาวน์โหลด" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "à¹à¸à¹‰à¹„ข" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "สร้างสมุดบันทึà¸à¸‚้อมูลà¸à¸²à¸£à¸•à¸´à¸”ต่อใหม่" - -#: templates/settings.php:44 -msgid "Name" -msgstr "ชื่อ" - -#: templates/settings.php:45 -msgid "Description" -msgstr "คำอธิบาย" - -#: templates/settings.php:46 -msgid "Save" -msgstr "บันทึà¸" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "ยà¸à¹€à¸¥à¸´à¸" - -#: templates/settings.php:52 -msgid "More..." -msgstr "เพิ่มเติม..." diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index b9f67f922d250052a1fba0c56a0ee6bc38ab968c..2476f610e9b4edaea538b84625ffcb70b090e731 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-01 02:04+0200\n" -"PO-Revision-Date: 2012-09-30 07:07+0000\n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 10:55+0000\n" "Last-Translator: AriesAnywhere Anywhere \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -19,208 +19,241 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "ยังไม่ได้ตั้งชื่อà¹à¸­à¸žà¸žà¸¥à¸´à¹€à¸„ชั่น" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "ยังไม่ได้ระบุชนิดของหมวดหมู่" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "ไม่มีหมวดหมู่ที่ต้องà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "หมวดหมู่นี้มีอยู่à¹à¸¥à¹‰à¸§: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "ชนิดของวัตถุยังไม่ได้ถูà¸à¸£à¸°à¸šà¸¸" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "ยังไม่ได้ระบุรหัส %s" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡ %s เข้าไปยังรายà¸à¸²à¸£à¹‚ปรด" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "ยังไม่ได้เลือà¸à¸«à¸¡à¸§à¸”หมู่ที่ต้องà¸à¸²à¸£à¸¥à¸š" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸¥à¸š %s ออà¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹‚ปรด" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "ตั้งค่า" -#: js/js.js:645 -msgid "January" -msgstr "มà¸à¸£à¸²à¸„ม" +#: js/js.js:704 +msgid "seconds ago" +msgstr "วินาที à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:645 -msgid "February" -msgstr "à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 นาทีà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:645 -msgid "March" -msgstr "มีนาคม" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} นาทีà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:645 -msgid "April" -msgstr "เมษายน" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 ชั่วโมงà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:645 -msgid "May" -msgstr "พฤษภาคม" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} ชั่วโมงà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:645 -msgid "June" -msgstr "มิถุนายน" +#: js/js.js:709 +msgid "today" +msgstr "วันนี้" -#: js/js.js:646 -msgid "July" -msgstr "à¸à¸£à¸à¸à¸²à¸„ม" +#: js/js.js:710 +msgid "yesterday" +msgstr "เมื่อวานนี้" -#: js/js.js:646 -msgid "August" -msgstr "สิงหาคม" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{day} วันà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:646 -msgid "September" -msgstr "à¸à¸±à¸™à¸¢à¸²à¸¢à¸™" +#: js/js.js:712 +msgid "last month" +msgstr "เดือนที่à¹à¸¥à¹‰à¸§" -#: js/js.js:646 -msgid "October" -msgstr "ตุลาคม" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} เดือนà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" -#: js/js.js:646 -msgid "November" -msgstr "พฤศจิà¸à¸²à¸¢à¸™" +#: js/js.js:714 +msgid "months ago" +msgstr "เดือน ที่ผ่านมา" -#: js/js.js:646 -msgid "December" -msgstr "ธันวาคม" +#: js/js.js:715 +msgid "last year" +msgstr "ปีที่à¹à¸¥à¹‰à¸§" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "ปี ที่ผ่านมา" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "เลือà¸" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "ยà¸à¹€à¸¥à¸´à¸" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "ไม่ตà¸à¸¥à¸‡" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "ตà¸à¸¥à¸‡" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "ตà¸à¸¥à¸‡" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "ยังไม่ได้เลือà¸à¸«à¸¡à¸§à¸”หมู่ที่ต้องà¸à¸²à¸£à¸¥à¸š" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "ชนิดของวัตถุยังไม่ได้รับà¸à¸²à¸£à¸£à¸°à¸šà¸¸" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "พบข้อผิดพลาด" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "ชื่อของà¹à¸­à¸›à¸¢à¸±à¸‡à¹„ม่ได้รับà¸à¸²à¸£à¸£à¸°à¸šà¸¸à¸Šà¸·à¹ˆà¸­" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "ไฟล์ {file} ซึ่งเป็นไฟล์ที่จำเป็นต้องได้รับà¸à¸²à¸£à¸•à¸´à¸”ตั้งไว้à¸à¹ˆà¸­à¸™ ยังไม่ได้ถูà¸à¸•à¸´à¸”ตั้ง" + +#: js/share.js:124 msgid "Error while sharing" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในระหว่างà¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูล" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูล" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸„ุณà¹à¸¥à¸°à¸à¸¥à¸¸à¹ˆà¸¡" - -#: js/share.js:130 -msgid "by" -msgstr "โดย" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "ได้à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸à¸±à¸šà¸„ุณ à¹à¸¥à¸°à¸à¸¥à¸¸à¹ˆà¸¡ {group} โดย {owner}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸„ุณโดย" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "ถูà¸à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸à¸±à¸šà¸„ุณโดย {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "à¹à¸Šà¸£à¹Œà¹ƒà¸«à¹‰à¸à¸±à¸š" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "à¹à¸Šà¸£à¹Œà¸”้วยลิงà¸à¹Œ" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "ใส่รหัสผ่านไว้" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "รหัสผ่าน" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "à¸à¸³à¸«à¸™à¸”วันที่หมดอายุ" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "วันที่หมดอายุ" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "à¹à¸Šà¸£à¹Œà¸œà¹ˆà¸²à¸™à¸—างอีเมล" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "ไม่พบบุคคลที่ต้องà¸à¸²à¸£" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "ไม่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸Šà¸£à¹Œà¸‚้อมูลซ้ำได้" -#: js/share.js:250 -msgid "Shared in" -msgstr "à¹à¸Šà¸£à¹Œà¹„ว้ใน" - -#: js/share.js:250 -msgid "with" -msgstr "ด้วย" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "ได้à¹à¸Šà¸£à¹Œ {item} ให้à¸à¸±à¸š {user}" + +#: js/share.js:292 msgid "Unshare" msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œ" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "สามารถà¹à¸à¹‰à¹„ข" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "ระดับควบคุมà¸à¸²à¸£à¹€à¸‚้าใช้งาน" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "สร้าง" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "อัพเดท" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "ลบ" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "à¹à¸Šà¸£à¹Œ" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "ใส่รหัสผ่านไว้" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าวันที่หมดอายุ" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าวันที่หมดอายุ" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "รีเซ็ตรหัสผ่าน ownCloud" @@ -233,15 +266,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "คุณจะได้รับลิงค์เพื่อà¸à¸³à¸«à¸™à¸”รหัสผ่านใหม่ทางอีเมล์" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "ส่งคำร้องเรียบร้อยà¹à¸¥à¹‰à¸§" +msgid "Reset email send." +msgstr "รีเซ็ตค่าà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "ไม่สามารถเข้าสู่ระบบได้!" +msgid "Request failed!" +msgstr "คำร้องขอล้มเหลว!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "ชื่อผู้ใช้งาน" @@ -297,72 +330,187 @@ msgstr "ไม่พบ Cloud" msgid "Edit categories" msgstr "à¹à¸à¹‰à¹„ขหมวดหมู่" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "เพิ่ม" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "คำเตือนเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸„วามปลอดภัย" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "ยังไม่มีตัวสร้างหมายเลขà¹à¸šà¸šà¸ªà¸¸à¹ˆà¸¡à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™, à¸à¸£à¸¸à¸“าเปิดใช้งานส่วนเสริม PHP OpenSSL" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "หาà¸à¸›à¸£à¸²à¸¨à¸ˆà¸²à¸à¸•à¸±à¸§à¸ªà¸£à¹‰à¸²à¸‡à¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚à¹à¸šà¸šà¸ªà¸¸à¹ˆà¸¡à¸—ี่ช่วยป้องà¸à¸±à¸™à¸„วามปลอดภัย ผู้บุà¸à¸£à¸¸à¸à¸­à¸²à¸ˆà¸ªà¸²à¸¡à¸²à¸£à¸–ที่จะคาดคะเนรหัสยืนยันà¸à¸²à¸£à¹€à¸‚้าถึงเพื่อรีเซ็ตรหัสผ่าน à¹à¸¥à¸°à¹€à¸­à¸²à¸šà¸±à¸à¸Šà¸µà¸‚องคุณไปเป็นของตนเองได้" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "ไดเร็à¸à¸—อรี่ข้อมูลà¹à¸¥à¸°à¹„ฟล์ของคุณสามารถเข้าถึงได้จาà¸à¸­à¸´à¸™à¹€à¸—อร์เน็ต ไฟล์ .htaccess ที่ ownCloud มีให้ไม่สามารถทำงานได้อย่างเหมาะสม เราขอà¹à¸™à¸°à¸™à¸³à¹ƒà¸«à¹‰à¸„ุณà¸à¸³à¸«à¸™à¸”ค่าเว็บเซิร์ฟเวอร์ใหม่ในรูปà¹à¸šà¸šà¸—ี่ไดเร็à¸à¸—อรี่เà¸à¹‡à¸šà¸‚้อมูลไม่สามารถเข้าถึงได้อีà¸à¸•à¹ˆà¸­à¹„ป หรือคุณได้ย้ายไดเร็à¸à¸—อรี่ที่ใช้เà¸à¹‡à¸šà¸‚้อมูลไปอยู่ภายนอà¸à¸•à¸³à¹à¸«à¸™à¹ˆà¸‡ root ของเว็บเซิร์ฟเวอร์à¹à¸¥à¹‰à¸§" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "สร้าง บัà¸à¸Šà¸µà¸œà¸¹à¹‰à¸”ูà¹à¸¥à¸£à¸°à¸šà¸š" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "ขั้นสูง" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "โฟลเดอร์เà¸à¹‡à¸šà¸‚้อมูล" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "à¸à¸³à¸«à¸™à¸”ค่าà¸à¸²à¸™à¸‚้อมูล" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "จะถูà¸à¹ƒà¸Šà¹‰" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "ชื่อผู้ใช้งานà¸à¸²à¸™à¸‚้อมูล" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "รหัสผ่านà¸à¸²à¸™à¸‚้อมูล" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "ชื่อà¸à¸²à¸™à¸‚้อมูล" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "พื้นที่ตารางในà¸à¸²à¸™à¸‚้อมูล" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Database host" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "ติดตั้งเรียบร้อยà¹à¸¥à¹‰à¸§" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "วันอาทิตย์" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "วันจันทร์" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "วันอังคาร" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "วันพุธ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "วันพฤหัสบดี" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "วันศุà¸à¸£à¹Œ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "วันเสาร์" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "มà¸à¸£à¸²à¸„ม" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "มีนาคม" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "เมษายน" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "พฤษภาคม" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "มิถุนายน" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "à¸à¸£à¸à¸à¸²à¸„ม" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "สิงหาคม" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "à¸à¸±à¸™à¸¢à¸²à¸¢à¸™" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "ตุลาคม" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "พฤศจิà¸à¸²à¸¢à¸™" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "ธันวาคม" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "web services under your control" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "ออà¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "à¸à¸²à¸£à¹€à¸‚้าสู่ระบบอัตโนมัติถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜à¹à¸¥à¹‰à¸§" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "หาà¸à¸„ุณยังไม่ได้เปลี่ยนรหัสผ่านของคุณเมื่อเร็วๆนี้, บัà¸à¸Šà¸µà¸‚องคุณอาจถูà¸à¸šà¸¸à¸à¸£à¸¸à¸à¹‚ดยผู้อื่น" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "à¸à¸£à¸¸à¸“าเปลี่ยนรหัสผ่านของคุณอีà¸à¸„รั้ง เพื่อป้องà¸à¸±à¸™à¸šà¸±à¸à¸Šà¸µà¸‚องคุณให้ปลอดภัย" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "ลืมรหัสผ่าน?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "จำรหัสผ่าน" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "เข้าสู่ระบบ" @@ -377,3 +525,17 @@ msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: templates/part.pagenavi.php:20 msgid "next" msgstr "ถัดไป" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "คำเตือนเพื่อความปลอดภัย!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "à¸à¸£à¸¸à¸“ายืนยันรหัสผ่านของคุณ
            เพื่อความปลอดภัย คุณจะถูà¸à¸‚อให้à¸à¸£à¸­à¸à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸­à¸µà¸à¸„รั้ง" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "ยืนยัน" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index 51624d8fc18262fe022ca4220d5b7c866b382ff7..63252d606771c3964c746b3ad2549d886412a441 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-27 02:01+0200\n" -"PO-Revision-Date: 2012-09-26 11:27+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +24,166 @@ msgid "There is no error, the file uploaded with success" msgstr "ไม่มีข้อผิดพลาดใดๆ ไฟล์ถูà¸à¸­à¸±à¸žà¹‚หลดเรียบร้อยà¹à¸¥à¹‰à¸§" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "ไฟล์ที่อัพโหลดมีขนาดเà¸à¸´à¸™à¸„ำสั่ง upload_max_filesize ที่ระบุเอาไว้ในไฟล์ php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "ไฟล์ที่อัพโหลดมีขนาดเà¸à¸´à¸™à¸„ำสั่ง MAX_FILE_SIZE ที่ระบุเอาไว้ในรูปà¹à¸šà¸šà¸„ำสั่งในภาษา HTML" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "ไฟล์ที่อัพโหลดยังไม่ได้ถูà¸à¸­à¸±à¸žà¹‚หลดอย่างสมบูรณ์" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "ยังไม่มีไฟล์ที่ถูà¸à¸­à¸±à¸žà¹‚หลด" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "à¹à¸Ÿà¹‰à¸¡à¹€à¸­à¸à¸ªà¸²à¸£à¸Šà¸±à¹ˆà¸§à¸„ราวเà¸à¸´à¸”à¸à¸²à¸£à¸ªà¸¹à¸à¸«à¸²à¸¢" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "เขียนข้อมูลลงà¹à¸œà¹ˆà¸™à¸”ิสà¸à¹Œà¸¥à¹‰à¸¡à¹€à¸«à¸¥à¸§" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "ไฟล์" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูล" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "ลบ" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "เปลี่ยนชื่อ" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "มีอยู่à¹à¸¥à¹‰à¸§" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸£à¸°à¸šà¸š" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "à¹à¸—นที่" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "à¹à¸™à¸°à¸™à¸³à¸Šà¸·à¹ˆà¸­" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "ยà¸à¹€à¸¥à¸´à¸" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "à¹à¸—นที่à¹à¸¥à¹‰à¸§" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "à¹à¸—นที่ {new_name} à¹à¸¥à¹‰à¸§" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "เลิà¸à¸—ำ" -#: js/filelist.js:241 -msgid "with" -msgstr "à¸à¸±à¸š" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "à¹à¸—นที่ {new_name} ด้วย {old_name} à¹à¸¥à¹‰à¸§" -#: js/filelist.js:273 -msgid "unshared" -msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูลà¹à¸¥à¹‰à¸§" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¹à¸¥à¹‰à¸§ {files} ไฟล์" -#: js/filelist.js:275 -msgid "deleted" -msgstr "ลบà¹à¸¥à¹‰à¸§" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "ลบไฟล์à¹à¸¥à¹‰à¸§ {files} ไฟล์" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "ชื่อที่ใช้ไม่ถูà¸à¸•à¹‰à¸­à¸‡, '\\', '/', '<', '>', ':', '\"', '|', '?' à¹à¸¥à¸° '*' ไม่ได้รับอนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ด้" + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¹„ฟล์บีบอัด ZIP อาจใช้เวลาสัà¸à¸„รู่" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ไม่สามารถอัพโหลดไฟล์ของคุณได้ เนื่องจาà¸à¹„ฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¹€à¸›à¹‡à¸™à¹„ดเร็à¸à¸—อรี่หรือมีขนาด 0 ไบต์" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸­à¸±à¸žà¹‚หลด" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "ปิด" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "อยู่ระหว่างดำเนินà¸à¸²à¸£" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸žà¹‚หลดไฟล์ 1 ไฟล์" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดไฟล์" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸žà¹‚หลด {count} ไฟล์" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดถูà¸à¸¢à¸à¹€à¸¥à¸´à¸" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดไฟล์à¸à¸³à¸¥à¸±à¸‡à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸”ำเนินà¸à¸²à¸£ à¸à¸²à¸£à¸­à¸­à¸à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸šà¸™à¸µà¹‰à¸ˆà¸°à¸—ำให้à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดถูà¸à¸¢à¸à¹€à¸¥à¸´à¸" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "ชื่อที่ใช้ไม่ถูà¸à¸•à¹‰à¸­à¸‡ '/' ไม่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "ชื่อโฟลเดอร์ที่ใช้ไม่ถูà¸à¸•à¹‰à¸­à¸‡ à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ \"ถูà¸à¹à¸Šà¸£à¹Œ\" ถูà¸à¸ªà¸‡à¸§à¸™à¹„ว้เฉพาะ Owncloud เท่านั้น" -#: js/files.js:668 -msgid "files scanned" -msgstr "ไฟล์ต่างๆได้รับà¸à¸²à¸£à¸ªà¹à¸à¸™à¹à¸¥à¹‰à¸§" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "สà¹à¸à¸™à¹„ฟล์à¹à¸¥à¹‰à¸§ {count} ไฟล์" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "พบข้อผิดพลาดในระหว่างà¸à¸²à¸£à¸ªà¹à¸à¸™à¹„ฟล์" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "ชื่อ" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "ขนาด" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "ปรับปรุงล่าสุด" -#: js/files.js:778 -msgid "folder" -msgstr "โฟลเดอร์" - -#: js/files.js:780 -msgid "folders" -msgstr "โฟลเดอร์" - -#: js/files.js:788 -msgid "file" -msgstr "ไฟล์" - -#: js/files.js:790 -msgid "files" -msgstr "ไฟล์" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "วินาที à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 โฟลเดอร์" -#: js/files.js:835 -msgid "minute ago" -msgstr "นาที ที่ผ่านมา" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} โฟลเดอร์" -#: js/files.js:836 -msgid "minutes ago" -msgstr "นาที ที่ผ่านมา" +#: js/files.js:824 +msgid "1 file" +msgstr "1 ไฟล์" -#: js/files.js:839 -msgid "today" -msgstr "วันนี้" - -#: js/files.js:840 -msgid "yesterday" -msgstr "เมื่อวานนี้" - -#: js/files.js:841 -msgid "days ago" -msgstr "วัน ที่ผ่านมา" - -#: js/files.js:842 -msgid "last month" -msgstr "เดือนที่à¹à¸¥à¹‰à¸§" - -#: js/files.js:844 -msgid "months ago" -msgstr "เดือน ที่ผ่านมา" - -#: js/files.js:845 -msgid "last year" -msgstr "ปีที่à¹à¸¥à¹‰à¸§" - -#: js/files.js:846 -msgid "years ago" -msgstr "ปี ที่ผ่านมา" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} ไฟล์" #: templates/admin.php:5 msgid "File handling" @@ -222,27 +193,27 @@ msgstr "à¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¹„ฟล์" msgid "Maximum upload size" msgstr "ขนาดไฟล์สูงสุดที่อัพโหลดได้" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "จำนวนสูงสุดที่สามารถทำได้: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "จำเป็นต้องใช้สำหรับà¸à¸²à¸£à¸”าวน์โหลดไฟล์พร้อมà¸à¸±à¸™à¸«à¸¥à¸²à¸¢à¹†à¹„ฟล์หรือดาวน์โหลดทั้งโฟลเดอร์" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸”าวน์โหลดเป็นไฟล์ ZIP ได้" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 หมายถึงไม่จำà¸à¸±à¸”" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ขนาดไฟล์ ZIP สูงสุด" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "บันทึà¸" @@ -250,52 +221,48 @@ msgstr "บันทึà¸" msgid "New" msgstr "อัพโหลดไฟล์ใหม่" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ไฟล์ข้อความ" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "à¹à¸Ÿà¹‰à¸¡à¹€à¸­à¸à¸ªà¸²à¸£" -#: templates/index.php:11 -msgid "From url" -msgstr "จาภurl" +#: templates/index.php:14 +msgid "From link" +msgstr "จาà¸à¸¥à¸´à¸‡à¸à¹Œ" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "อัพโหลด" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลด" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "ยังไม่มีไฟล์ใดๆอยู่ที่นี่ à¸à¸£à¸¸à¸“าอัพโหลดไฟล์!" -#: templates/index.php:50 -msgid "Share" -msgstr "à¹à¸Šà¸£à¹Œ" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "ดาวน์โหลด" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "ไฟล์ที่อัพโหลดมีขนาดใหà¸à¹ˆà¹€à¸à¸´à¸™à¹„ป" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "ไฟล์ที่คุณพยายามที่จะอัพโหลดมีขนาดเà¸à¸´à¸™à¸à¸§à¹ˆà¸²à¸‚นาดสูงสุดที่à¸à¸³à¸«à¸™à¸”ไว้ให้อัพโหลดได้สำหรับเซิร์ฟเวอร์นี้" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "ไฟล์à¸à¸³à¸¥à¸±à¸‡à¸­à¸¢à¸¹à¹ˆà¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸à¸²à¸£à¸ªà¹à¸à¸™, à¸à¸£à¸¸à¸“ารอสัà¸à¸„รู่." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "ไฟล์ที่à¸à¸³à¸¥à¸±à¸‡à¸ªà¹à¸à¸™à¸­à¸¢à¸¹à¹ˆà¸‚ณะนี้" diff --git a/l10n/th_TH/files_pdfviewer.po b/l10n/th_TH/files_pdfviewer.po deleted file mode 100644 index 354985befa1ce26ef553a8582d6d07dc8b7f3121..0000000000000000000000000000000000000000 --- a/l10n/th_TH/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/th_TH/files_texteditor.po b/l10n/th_TH/files_texteditor.po deleted file mode 100644 index 00accf8089f7f91b815f61828dc75e5a483e1080..0000000000000000000000000000000000000000 --- a/l10n/th_TH/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/th_TH/gallery.po b/l10n/th_TH/gallery.po deleted file mode 100644 index d442789187de9884f35e439e25523f853b5618b1..0000000000000000000000000000000000000000 --- a/l10n/th_TH/gallery.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 12:50+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "รูปภาพ" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "à¹à¸Šà¸£à¹Œà¸‚้อมูลà¹à¸à¸¥à¸­à¸£à¸µà¹ˆ" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "พบข้อผิดพลาด: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายในระบบ" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "ภาพสไลด์โชว์" diff --git a/l10n/th_TH/impress.po b/l10n/th_TH/impress.po deleted file mode 100644 index e360e941e406a3bfef210c37d1a779fa934a06e5..0000000000000000000000000000000000000000 --- a/l10n/th_TH/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/th_TH/lib.po b/l10n/th_TH/lib.po index ea4639ff8f31360a354f024609fa0d6da7339170..93bec7510e542537c4785d4d8ebad9d7a05d472e 100644 --- a/l10n/th_TH/lib.po +++ b/l10n/th_TH/lib.po @@ -8,53 +8,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-03 02:04+0200\n" -"PO-Revision-Date: 2012-09-02 22:43+0000\n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 10:45+0000\n" "Last-Translator: AriesAnywhere Anywhere \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "ช่วยเหลือ" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "ส่วนตัว" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "ตั้งค่า" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "ผู้ใช้งาน" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "à¹à¸­à¸›à¸¯" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "ผู้ดูà¹à¸¥" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "คุณสมบัติà¸à¸²à¸£à¸”าวน์โหลด zip ถูà¸à¸›à¸´à¸”à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ว้" -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "ไฟล์สามารถดาวน์โหลดได้ทีละครั้งเท่านั้น" -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "à¸à¸¥à¸±à¸šà¹„ปที่ไฟล์" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "ไฟล์ที่เลือà¸à¸¡à¸µà¸‚นาดใหà¸à¹ˆà¹€à¸à¸´à¸™à¸à¸§à¹ˆà¸²à¸—ี่จะสร้างเป็นไฟล์ zip" @@ -62,7 +62,7 @@ msgstr "ไฟล์ที่เลือà¸à¸¡à¸µà¸‚นาดใหà¸à¹ˆà¹€à¸ msgid "Application is not enabled" msgstr "à¹à¸­à¸žà¸žà¸¥à¸´à¹€à¸„ชั่นดังà¸à¸¥à¹ˆà¸²à¸§à¸¢à¸±à¸‡à¹„ม่ได้เปิดใช้งาน" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในสิทธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน" @@ -70,57 +70,84 @@ msgstr "เà¸à¸´à¸”ข้อผิดพลาดในสิทธิ์à¸à¸² msgid "Token expired. Please reload page." msgstr "รหัสยืนยันความถูà¸à¸•à¹‰à¸­à¸‡à¸«à¸¡à¸”อายุà¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าโหลดหน้าเว็บใหม่อีà¸à¸„รั้ง" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "ไฟล์" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ข้อความ" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "รูปภาพ" + +#: template.php:103 msgid "seconds ago" msgstr "วินาทีที่ผ่านมา" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 นาทีมาà¹à¸¥à¹‰à¸§" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d นาทีที่ผ่านมา" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 ชั่วโมงà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d ชั่วโมงà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" + +#: template.php:108 msgid "today" msgstr "วันนี้" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "เมื่อวานนี้" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d วันที่ผ่านมา" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "เดือนที่à¹à¸¥à¹‰à¸§" -#: template.php:95 -msgid "months ago" -msgstr "เดือนมาà¹à¸¥à¹‰à¸§" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d เดือนมาà¹à¸¥à¹‰à¸§" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "ปีที่à¹à¸¥à¹‰à¸§" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "ปีที่ผ่านมา" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s พร้อมให้ใช้งานได้à¹à¸¥à¹‰à¸§. ดูรายละเอียดเพิ่มเติม" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "ทันสมัย" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "à¸à¸²à¸£à¸•à¸£à¸§à¸ˆà¸ªà¸­à¸šà¸Šà¸¸à¸”อัพเดทถูà¸à¸›à¸´à¸”ใช้งานไว้" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "ไม่พบหมวดหมู่ \"%s\"" diff --git a/l10n/th_TH/media.po b/l10n/th_TH/media.po deleted file mode 100644 index d59e3cc7c0762318abb6917e52d44ac65639039e..0000000000000000000000000000000000000000 --- a/l10n/th_TH/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Thai (Thailand) (http://www.transifex.net/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "เพลง" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "เล่น" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "หยุดชั่วคราว" - -#: templates/music.php:5 -msgid "Previous" -msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "ถัดไป" - -#: templates/music.php:7 -msgid "Mute" -msgstr "ปิดเสียง" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "เปิดเสียง" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "ตรวจสอบไฟล์ที่เà¸à¹‡à¸šà¹„ว้อีà¸à¸„รั้ง" - -#: templates/music.php:37 -msgid "Artist" -msgstr "ศิลปิน" - -#: templates/music.php:38 -msgid "Album" -msgstr "อัลบั้ม" - -#: templates/music.php:39 -msgid "Title" -msgstr "ชื่อ" diff --git a/l10n/th_TH/settings.po b/l10n/th_TH/settings.po index 180395a9629b4d551c7af43704b25cbe889f85dd..d15a654e58857928b7fe2ad6f6b6a1635eb2608d 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:04+0200\n" -"PO-Revision-Date: 2012-10-11 13:06+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +20,73 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "ไม่สามารถโหลดรายà¸à¸²à¸£à¸ˆà¸²à¸ App Store ได้" -#: ajax/creategroup.php:9 ajax/removeuser.php:18 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "เà¸à¸´à¸”ข้อผิดพลาดเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "มีà¸à¸¥à¸¸à¹ˆà¸¡à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸°à¸šà¸šà¸­à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "ไม่สามารถเพิ่มà¸à¸¥à¸¸à¹ˆà¸¡à¹„ด้" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "ไม่สามารถเปิดใช้งานà¹à¸­à¸›à¹„ด้" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "อีเมลถูà¸à¸šà¸±à¸™à¸—ึà¸à¹à¸¥à¹‰à¸§" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "อีเมลไม่ถูà¸à¸•à¹‰à¸­à¸‡" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "เปลี่ยนชื่อบัà¸à¸Šà¸µ OpenID à¹à¸¥à¹‰à¸§" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "คำร้องขอไม่ถูà¸à¸•à¹‰à¸­à¸‡" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "ไม่สามารถลบà¸à¸¥à¸¸à¹ˆà¸¡à¹„ด้" -#: ajax/removeuser.php:27 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "เà¸à¸´à¸”ข้อผิดพลาดเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "ไม่สามารถลบผู้ใช้งานได้" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "เปลี่ยนภาษาเรียบร้อยà¹à¸¥à¹‰à¸§" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "ไม่สามารถเพิ่มผู้ใช้งานเข้าไปที่à¸à¸¥à¸¸à¹ˆà¸¡ %s ได้" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "ไม่สามารถลบผู้ใช้งานออà¸à¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡ %s ได้" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "ปิดใช้งาน" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "เปิดใช้งาน" @@ -91,97 +94,10 @@ msgstr "เปิดใช้งาน" msgid "Saving..." msgstr "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึุà¸à¸‚้อมูล..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "ภาษาไทย" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "คำเตือนเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸„วามปลอดภัย" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "ไดเร็à¸à¸—อรี่ข้อมูลà¹à¸¥à¸°à¹„ฟล์ของคุณสามารถเข้าถึงได้จาà¸à¸­à¸´à¸™à¹€à¸—อร์เน็ต ไฟล์ .htaccess ที่ ownCloud มีให้ไม่สามารถทำงานได้อย่างเหมาะสม เราขอà¹à¸™à¸°à¸™à¸³à¹ƒà¸«à¹‰à¸„ุณà¸à¸³à¸«à¸™à¸”ค่าเว็บเซิร์ฟเวอร์ใหม่ในรูปà¹à¸šà¸šà¸—ี่ไดเร็à¸à¸—อรี่เà¸à¹‡à¸šà¸‚้อมูลไม่สามารถเข้าถึงได้อีà¸à¸•à¹ˆà¸­à¹„ป หรือคุณได้ย้ายไดเร็à¸à¸—อรี่ที่ใช้เà¸à¹‡à¸šà¸‚้อมูลไปอยู่ภายนอà¸à¸•à¸³à¹à¸«à¸™à¹ˆà¸‡ root ของเว็บเซิร์ฟเวอร์à¹à¸¥à¹‰à¸§" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "ประมวลคำสั่งหนึ่งงานในà¹à¸•à¹ˆà¸¥à¸°à¸„รั้งที่มีà¸à¸²à¸£à¹‚หลดหน้าเว็บ" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php ได้รับà¸à¸²à¸£à¸¥à¸‡à¸—ะเบียนà¹à¸¥à¹‰à¸§à¸à¸±à¸šà¹€à¸§à¹‡à¸šà¸œà¸¹à¹‰à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£ webcron เรียà¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸š cron.php ที่ตำà¹à¸«à¸™à¹ˆà¸‡ root ของ owncloud หลังจาà¸à¸™à¸µà¹‰à¸ªà¸±à¸à¸„รู่ผ่านทาง http" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "ใช้บริà¸à¸²à¸£ cron จาà¸à¸£à¸°à¸šà¸š เรียà¸à¹„ฟล์ cron.php ในโฟลเดอร์ owncloud ผ่านทาง cronjob ของระบบหลังจาà¸à¸™à¸µà¹‰à¸ªà¸±à¸à¸„รู่" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูล" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "เปิดใช้งาน API สำหรับคุณสมบัติà¹à¸Šà¸£à¹Œà¸‚้อมูล" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸­à¸›à¸¯à¸ªà¸²à¸¡à¸²à¸£à¸–ใช้ API สำหรับà¹à¸Šà¸£à¹Œà¸‚้อมูลได้" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸¥à¸´à¸‡à¸à¹Œà¹„ด้" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸Šà¸£à¹Œà¸‚้อมูลรายà¸à¸²à¸£à¸•à¹ˆà¸²à¸‡à¹†à¹„ปให้สาธารณะชนเป็นลิงà¸à¹Œà¹„ด้" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸Šà¸£à¹Œà¸‚้อมูลซ้ำใหม่ได้" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸Šà¸£à¹Œà¸‚้อมูลรายà¸à¸²à¸£à¸•à¹ˆà¸²à¸‡à¹†à¸—ี่ถูà¸à¹à¸Šà¸£à¹Œà¸¡à¸²à¹ƒà¸«à¹‰à¸•à¸±à¸§à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ด้เท่านั้น" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸Šà¸£à¹Œà¸‚้อมูลถึงใครà¸à¹‡à¹„ด้" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸Šà¸£à¹Œà¸‚้อมูลได้เฉพาะà¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸—ี่อยู่ในà¸à¸¥à¸¸à¹ˆà¸¡à¹€à¸”ียวà¸à¸±à¸™à¹€à¸—่านั้น" - -#: templates/admin.php:88 -msgid "Log" -msgstr "บันทึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡" - -#: templates/admin.php:116 -msgid "More" -msgstr "เพิ่มเติม" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "พัฒนาโดย the ชุมชนผู้ใช้งาน ownCloud, the ซอร์สโค้ดอยู่ภายใต้สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•à¸‚อง AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "เพิ่มà¹à¸­à¸›à¸‚องคุณ" @@ -214,22 +130,22 @@ msgstr "à¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¹„ฟล์ขนาดใหà¸à¹ˆ" msgid "Ask a question" msgstr "สอบถามข้อมูล" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¹ƒà¸™à¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸à¸±à¸šà¸à¸²à¸™à¸‚้อมูลช่วยเหลือ" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "ไปที่นั่นด้วยตนเอง" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "คำตอบ" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "คุณได้ใช้ %s จาà¸à¸—ี่สามารถใช้ได้ %s" +msgid "You have used %s of the available %s" +msgstr "คุณได้ใช้งานไปà¹à¸¥à¹‰à¸§ %s จาà¸à¸ˆà¸³à¸™à¸§à¸™à¸—ี่สามารถใช้ได้ %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -287,6 +203,16 @@ msgstr "ช่วยà¸à¸±à¸™à¹à¸›à¸¥" msgid "use this address to connect to your ownCloud in your file manager" msgstr "ใช้ที่อยู่นี้ในà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸à¸±à¸šà¸šà¸±à¸à¸Šà¸µ ownCloud ของคุณในเครื่องมือจัดà¸à¸²à¸£à¹„ฟล์ของคุณ" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "พัฒนาโดย the ชุมชนผู้ใช้งาน ownCloud, the ซอร์สโค้ดอยู่ภายใต้สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•à¸‚อง AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "ชื่อ" diff --git a/l10n/th_TH/tasks.po b/l10n/th_TH/tasks.po deleted file mode 100644 index 7d45023764580701777739b4d0bc155bc83ecb66..0000000000000000000000000000000000000000 --- a/l10n/th_TH/tasks.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 15:26+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "วันที่ / เวลา ไม่ถูà¸à¸•à¹‰à¸­à¸‡" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "งาน" - -#: js/tasks.js:415 -msgid "No category" -msgstr "ไม่มีหมวดหมู่" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "ยังไม่ได้ระบุ" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "1=สูงสุด" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "5=ปานà¸à¸¥à¸²à¸‡" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "9=ต่ำสุด" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "ข้อมูลสรุปยังว่างอยู่" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "สัดส่วนเปอร์เซ็นต์ความสมบูรณ์ไม่ถูà¸à¸•à¹‰à¸­à¸‡" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "ความสำคัà¸à¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "เพิ่มงานใหม่" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "จัดเรียงตามà¸à¸³à¸«à¸™à¸”เวลา" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "จัดเรียงตามรายชื่อ" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "จัดเรียงตามความสมบูรณ์" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "จัดเรียงตามตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "จัดเรียงตามระดับความสำคัà¸" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "จัดเรียงตามป้ายชื่อ" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดข้อมูลงาน..." - -#: templates/tasks.php:20 -msgid "Important" -msgstr "สำคัà¸" - -#: templates/tasks.php:23 -msgid "More" -msgstr "มาà¸" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "น้อย" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "ลบ" diff --git a/l10n/th_TH/user_migrate.po b/l10n/th_TH/user_migrate.po deleted file mode 100644 index 74a5aec4843f78e50e9bb895c038aee34b7b6320..0000000000000000000000000000000000000000 --- a/l10n/th_TH/user_migrate.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 13:37+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "ส่งออà¸" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "เà¸à¸´à¸”ข้อผิดพลาดบางประà¸à¸²à¸£à¹ƒà¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹„ฟล์" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "เà¸à¸´à¸”ข้อผิดพลาดบางประà¸à¸²à¸£" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "ส่งออà¸à¸šà¸±à¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸‚องคุณ" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "ส่วนนี้จะเป็นà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹„ฟล์บีบอัดที่บรรจุข้อมูลบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ ownCloud ของคุณ" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "นำเข้าบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "ไฟล์ Zip ผู้ใช้งาน ownCloud" - -#: templates/settings.php:17 -msgid "Import" -msgstr "นำเข้า" diff --git a/l10n/th_TH/user_openid.po b/l10n/th_TH/user_openid.po deleted file mode 100644 index 7ed74e306baf45dd4e448bc1e52e3bc5c110b9bc..0000000000000000000000000000000000000000 --- a/l10n/th_TH/user_openid.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# AriesAnywhere Anywhere , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-15 02:03+0200\n" -"PO-Revision-Date: 2012-08-14 13:32+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" -"Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "นี่คือปลายทางของเซิร์ฟเวอร์ OpenID สำหรับรายละเอียดเพิ่มเติม, à¸à¸£à¸¸à¸“าดูที่" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "ข้อมูลประจำตัว " - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "ขอบเขตพื้นที่ " - -#: templates/nomode.php:16 -msgid "User: " -msgstr "ผู้ใช้งาน: " - -#: templates/nomode.php:17 -msgid "Login" -msgstr "เข้าสู่ระบบ" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "พบข้อผิดพลาด ยังไม่ได้เลือà¸à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "คุณสามารถได้รับสิทธิ์เพื่อเข้าใช้งานเว็บไซต์อื่นๆโดยใช้ที่อยู่นี้" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "ผู้ให้บริà¸à¸²à¸£ OpenID ที่ได้รับอนุà¸à¸²à¸•" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "ที่อยู่ของคุณที่ Wordpress, Identi.ca, …" diff --git a/l10n/th_TH/files_odfviewer.po b/l10n/th_TH/user_webdavauth.po similarity index 59% rename from l10n/th_TH/files_odfviewer.po rename to l10n/th_TH/user_webdavauth.po index 652cc1125ec157433005fe2c8d632bc5c01dcc90..7a8ea7afe6b654237225dca6ae288cf0cd9aacb8 100644 --- a/l10n/th_TH/files_odfviewer.po +++ b/l10n/th_TH/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# AriesAnywhere Anywhere , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-23 00:01+0100\n" +"PO-Revision-Date: 2012-11-22 11:02+0000\n" +"Last-Translator: AriesAnywhere Anywhere \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: th_TH\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/tr/admin_dependencies_chk.po b/l10n/tr/admin_dependencies_chk.po deleted file mode 100644 index 7a089c19af607473e54db898e625832bafa0c264..0000000000000000000000000000000000000000 --- a/l10n/tr/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/tr/bookmarks.po b/l10n/tr/bookmarks.po deleted file mode 100644 index 34e76f301d83540c1e1131b9828acef4588a1fb2..0000000000000000000000000000000000000000 --- a/l10n/tr/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/tr/calendar.po b/l10n/tr/calendar.po deleted file mode 100644 index 0e49a20184115d53281a7144b81f8c0431d0a10a..0000000000000000000000000000000000000000 --- a/l10n/tr/calendar.po +++ /dev/null @@ -1,818 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Aranel Surion , 2011, 2012. -# Emre , 2012. -# , 2012. -# Necdet Yücel , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "Bütün takvimler tamamen ön belleÄŸe alınmadı" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "Bütün herÅŸey tamamen ön belleÄŸe alınmış görünüyor" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Takvim yok." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Etkinlik yok." - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Yanlış takvim" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "Dosya ya hiçbir etkinlik içermiyor veya bütün etkinlikler takviminizde zaten saklı." - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "Etkinlikler yeni takvimde saklandı" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "İçeri aktarma baÅŸarısız oldu." - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "Etkinlikler takviminizde saklandı" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Yeni Zamandilimi:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Zaman dilimi deÄŸiÅŸtirildi" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Geçersiz istek" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Takvim" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "AAA g[ yyyy]{ '—'[ AAA] g yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "DoÄŸum günü" - -#: lib/app.php:122 -msgid "Business" -msgstr "Ä°ÅŸ" - -#: lib/app.php:123 -msgid "Call" -msgstr "Arama" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Müşteriler" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "Teslimatçı" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Tatil günleri" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Fikirler" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Seyahat" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Yıl dönümü" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Toplantı" - -#: lib/app.php:131 -msgid "Other" -msgstr "DiÄŸer" - -#: lib/app.php:132 -msgid "Personal" -msgstr "KiÅŸisel" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Projeler" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Sorular" - -#: lib/app.php:135 -msgid "Work" -msgstr "Ä°ÅŸ" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "hazırlayan" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "isimsiz" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Yeni Takvim" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Tekrar etmiyor" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Günlük" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Haftalı" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Haftaiçi Her gün" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Ä°ki haftada bir" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Aylık" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Yıllı" - -#: lib/object.php:388 -msgid "never" -msgstr "asla" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "sıklığa göre" - -#: lib/object.php:390 -msgid "by date" -msgstr "tarihe göre" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "ay günlerine göre" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "hafta günlerine göre" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Pazartesi" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Salı" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "ÇarÅŸamba" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "PerÅŸembe" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Cuma" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Cumartesi" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Pazar" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "ayın etkinlikler haftası" - -#: lib/object.php:428 -msgid "first" -msgstr "birinci" - -#: lib/object.php:429 -msgid "second" -msgstr "ikinci" - -#: lib/object.php:430 -msgid "third" -msgstr "üçüncü" - -#: lib/object.php:431 -msgid "fourth" -msgstr "dördüncü" - -#: lib/object.php:432 -msgid "fifth" -msgstr "beÅŸinci" - -#: lib/object.php:433 -msgid "last" -msgstr "sonuncu" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Ocak" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Åžubat" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Mart" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Nisan" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Mayıs" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Haziran" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Temmuz" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "AÄŸustos" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Eylül" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Ekim" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Kasım" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Aralık" - -#: lib/object.php:488 -msgid "by events date" -msgstr "olay tarihine göre" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "yıl gün(ler)ine göre" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "hafta sayı(lar)ına göre" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "gün ve aya göre" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Tarih" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Takv." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "Paz." - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "Pzt." - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "Sal." - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "Çar." - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "Per." - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "Cum." - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "Cmt." - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "Oca." - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "Åžbt." - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "Mar." - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "Nis" - -#: templates/calendar.php:8 -msgid "May." -msgstr "May." - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "Haz." - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "Tem." - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "Agu." - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "Eyl." - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "Eki." - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "Kas." - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "Ara." - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Tüm gün" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Eksik alanlar" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "BaÅŸlık" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Bu Tarihten" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Bu Saatten" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Bu Tarihe" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Bu Saate" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Olay baÅŸlamadan önce bitiyor" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "Bir veritabanı baÅŸarısızlığı oluÅŸtu" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Hafta" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Ay" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Liste" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Bugün" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Takvimleriniz" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav BaÄŸlantısı" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Paylaşılan" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Paylaşılan takvim yok" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Takvimi paylaÅŸ" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Ä°ndir" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Düzenle" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Sil" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "sizinle paylaşılmış" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Yeni takvim" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Takvimi düzenle" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Görünüm adı" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Aktif" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Takvim rengi" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Kaydet" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Gönder" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Ä°ptal" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Bir olay düzenle" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "Dışa aktar" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "Etkinlik bilgisi" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "Tekrarlama" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "Alarm" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "Katılanlar" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "PaylaÅŸ" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Olayın BaÅŸlığı" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Kategori" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "Kategorileri virgülle ayırın" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "Kategorileri düzenle" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Tüm Gün Olay" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Kimden" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Kime" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "GeliÅŸmiÅŸ opsiyonlar" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "Konum" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "Olayın Konumu" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Açıklama" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Olayın Açıklaması" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Tekrar" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "GeliÅŸmiÅŸ" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Hafta günlerini seçin" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Günleri seçin" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "ve yılın etkinlikler günü." - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "ve ayın etkinlikler günü." - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Ayları seç" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Haftaları seç" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "ve yılın etkinkinlikler haftası." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "Aralık" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "Son" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "olaylar" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Yeni bir takvim oluÅŸtur" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Takvim dosyasını içeri aktar" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "Lütfen takvim seçiniz" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Yeni takvimin adı" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "Müsait ismi al !" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "Bu isimde bir takvim zaten mevcut. Yine de devam ederseniz bu takvimler birleÅŸtirilecektir." - -#: templates/part.import.php:47 -msgid "Import" -msgstr "İçe Al" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Diyalogu kapat" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Yeni olay oluÅŸtur" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Bir olay görüntüle" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Kategori seçilmedi" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "nın" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "üzerinde" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Zaman dilimi" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24s" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12s" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "Önbellek" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "Tekrar eden etkinlikler için ön belleÄŸi temizle." - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "CalDAV takvimi adresleri senkronize ediyor." - -#: templates/settings.php:87 -msgid "more info" -msgstr "daha fazla bilgi" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "Öncelikli adres" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "Sadece okunabilir iCalendar link(ler)i" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "Kullanıcılar" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "kullanıcıları seç" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "Düzenlenebilir" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Gruplar" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "grupları seç" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "kamuyla paylaÅŸ" diff --git a/l10n/tr/contacts.po b/l10n/tr/contacts.po deleted file mode 100644 index 8feffd070680b82f7f85d07e1c575f7b747f56ff..0000000000000000000000000000000000000000 --- a/l10n/tr/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Aranel Surion , 2011, 2012. -# , 2012. -# Necdet Yücel , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "Adres defteri etkisizleÅŸtirilirken hata oluÅŸtu." - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id atanmamış." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "Adres defterini boÅŸ bir isimle güncelleyemezsiniz." - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "Adres defteri güncellenirken hata oluÅŸtu." - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "ID verilmedi" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "Ä°mza oluÅŸturulurken hata." - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "Silmek için bir kategori seçilmedi." - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Adres defteri bulunamadı." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "BaÄŸlantı bulunamadı." - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "KiÅŸi eklenirken hata oluÅŸtu." - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "eleman ismi atanmamış." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "KiÅŸi bilgisi ayrıştırılamadı." - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "BoÅŸ özellik eklenemiyor." - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "En az bir adres alanı doldurulmalı." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "Yinelenen özellik eklenmeye çalışılıyor: " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "vCard bilgileri doÄŸru deÄŸil. Lütfen sayfayı yenileyin." - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Eksik ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "ID için VCard ayrıştırılamadı:\"" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "checksum atanmamış." - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "vCard hakkındaki bilgi hatalı. Lütfen sayfayı yeniden yükleyin: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "Bir ÅŸey FUBAR gitti." - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "BaÄŸlantı ID'si girilmedi." - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "BaÄŸlantı fotoÄŸrafı okunamadı." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "Geçici dosya kaydetme hatası." - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Yüklenecek fotograf geçerli deÄŸil." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "BaÄŸlantı ID'si eksik." - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "FotoÄŸraf girilmedi." - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Dosya mevcut deÄŸil:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Ä°maj yükleme hatası." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "BaÄŸlantı nesnesini kaydederken hata." - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "Resim özelleÄŸini alırken hata oluÅŸtu." - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "BaÄŸlantıyı kaydederken hata" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "Görüntü yeniden boyutlandırılamadı." - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "Görüntü kırpılamadı." - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "Geçici resim oluÅŸtururken hata oluÅŸtu" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "Resim ararken hata oluÅŸtu:" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "BaÄŸlantıları depoya yükleme hatası" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Dosya baÅŸarıyla yüklendi, hata oluÅŸmadı" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Dosyanın boyutu php.ini dosyasındaki upload_max_filesize limitini aşıyor" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "Yüklenecek dosyanın boyutu HTML formunda belirtilen MAX_FILE_SIZE limitini aşıyor" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "Dosya kısmen karşıya yüklenebildi" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "Hiç dosya gönderilmedi" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "Geçici dizin eksik" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "Geçici resmi saklayamadı : " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "Geçici resmi yükleyemedi :" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "Dosya yüklenmedi. Bilinmeyen hata" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "KiÅŸiler" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "Ãœzgünüz, bu özellik henüz tamamlanmadı." - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "Tamamlanmadı." - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "Geçerli bir adres alınamadı." - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "Hata" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "Bu özellik boÅŸ bırakılmamalı." - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "Öğeler seri hale getiremedi" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' tip argümanı olmadan çaÄŸrıldı. Lütfen bugs.owncloud.org a rapor ediniz." - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "Ä°smi düzenle" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "Yükleme için dosya seçilmedi." - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "Yüklemeye çalıştığınız dosya sunucudaki dosya yükleme maksimum boyutunu aÅŸmaktadır. " - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "Tür seç" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "Sonuç: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " içe aktarıldı, " - -#: js/loader.js:49 -msgid " failed." -msgstr " hatalı." - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Bu sizin adres defteriniz deÄŸil." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "KiÅŸi bulunamadı." - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Ä°ÅŸ" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Ev" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "DiÄŸer" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Mobil" - -#: lib/app.php:203 -msgid "Text" -msgstr "Metin" - -#: lib/app.php:204 -msgid "Voice" -msgstr "Ses" - -#: lib/app.php:205 -msgid "Message" -msgstr "mesaj" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Faks" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Sayfalayıcı" - -#: lib/app.php:215 -msgid "Internet" -msgstr "Ä°nternet" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "DoÄŸum günü" - -#: lib/app.php:253 -msgid "Business" -msgstr "Ä°ÅŸ" - -#: lib/app.php:254 -msgid "Call" -msgstr "ÇaÄŸrı" - -#: lib/app.php:255 -msgid "Clients" -msgstr "Müşteriler" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "Dağıtıcı" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "Tatiller" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "Fikirler" - -#: lib/app.php:259 -msgid "Journey" -msgstr "Seyahat" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "Yıl Dönümü" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "Toplantı" - -#: lib/app.php:263 -msgid "Personal" -msgstr "KiÅŸisel" - -#: lib/app.php:264 -msgid "Projects" -msgstr "Projeler" - -#: lib/app.php:265 -msgid "Questions" -msgstr "Sorular" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}'nin DoÄŸumgünü" - -#: lib/search.php:15 -msgid "Contact" -msgstr "KiÅŸi" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "KiÅŸi Ekle" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "İçe aktar" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Adres defterleri" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "Kapat" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "Klavye kısayolları" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "Dolaşım" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "Listedeki sonraki kiÅŸi" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "Listedeki önceki kiÅŸi" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "Åžuanki adres defterini geniÅŸlet/daralt" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "Eylemler" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "KiÅŸi listesini tazele" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "Yeni kiÅŸi ekle" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "Yeni adres defteri ekle" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "Åžuanki kiÅŸiyi sil" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "FotoÄŸrafı yüklenmesi için bırakın" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "Mevcut fotoÄŸrafı sil" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "Mevcut fotoÄŸrafı düzenle" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "Yeni fotoÄŸraf yükle" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "ownCloud'dan bir fotoÄŸraf seç" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "Biçin özel, Kısa isim, Tam isim, Ters veya noktalı ters" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "Ä°sim detaylarını düzenle" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Organizasyon" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Sil" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "Takma ad" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "Takma adı girin" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "Web sitesi" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "http://www.somesite.com" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "Web sitesine git" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "gg-aa-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "Gruplar" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "Grupları birbirinden virgülle ayırın" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "Grupları düzenle" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "Tercih edilen" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "Lütfen geçerli bir eposta adresi belirtin." - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "Eposta adresini girin" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "Eposta adresi" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "Eposta adresini sil" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "Telefon numarasını gir" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "Telefon numarasını sil" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "Haritada gör" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "Adres detaylarını düzenle" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "Notları buraya ekleyin." - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "Alan ekle" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Telefon" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Eposta" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Adres" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "Not" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "KiÅŸiyi indir" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "KiÅŸiyi sil" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "Geçici resim ön bellekten silinmiÅŸtir." - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "Adresi düzenle" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "Tür" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Posta Kutusu" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "Sokak adresi" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "Sokak ve Numara" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Uzatılmış" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "Apartman numarası vb." - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Åžehir" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Bölge" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "Örn. eyalet veya il" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Posta kodu" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "Posta kodu" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Ãœlke" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Adres defteri" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "Kısaltmalar" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "Bayan" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "Bayan" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "Bay" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "Bay" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "Bayan" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "Dr" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "Verilen isim" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "Ä°lave isimler" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "Soyad" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "Kısaltmalar" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "J.D." - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "D.O." - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "D.C." - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "Dr." - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "Esq." - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "Jr." - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "Sn." - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "BaÄŸlantı dosyasını içeri aktar" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "Yeni adres defterini seç" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "Yeni adres defteri oluÅŸtur" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "Yeni adres defteri için isim" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "BaÄŸlantıları içe aktar" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "Adres defterinizde hiç baÄŸlantı yok." - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "BaÄŸlatı ekle" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "Adres deftelerini seçiniz" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "Ä°sim giriniz" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "Tanım giriniz" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV adresleri eÅŸzamanlıyor" - -#: templates/settings.php:3 -msgid "more info" -msgstr "daha fazla bilgi" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "Birincil adres (BaÄŸlantı ve arkadaÅŸları)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Ä°ndir" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Düzenle" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Yeni Adres Defteri" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "Kaydet" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Ä°ptal" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index 0fdd0fc3b3448f63a2b02878e58d85c5c44b8bba..83b9a8bcbfd74f8e53b175f76737ba9f7fd24590 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/core.po @@ -5,14 +5,15 @@ # Translators: # Aranel Surion , 2011, 2012. # Caner BaÅŸaran , 2012. +# , 2012. # Necdet Yücel , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 12:02+0000\n" +"Last-Translator: alpere \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,208 +21,241 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Uygulama adı verilmedi." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Eklenecek kategori yok?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Bu kategori zaten mevcut: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Silmek için bir kategori seçilmedi" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Ayarlar" -#: js/js.js:645 -msgid "January" -msgstr "Ocak" +#: js/js.js:704 +msgid "seconds ago" +msgstr "" -#: js/js.js:645 -msgid "February" -msgstr "Åžubat" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "" -#: js/js.js:645 -msgid "March" -msgstr "Mart" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "" -#: js/js.js:645 -msgid "April" -msgstr "Nisan" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "" -#: js/js.js:645 -msgid "May" -msgstr "Mayıs" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:645 -msgid "June" -msgstr "Haziran" +#: js/js.js:709 +msgid "today" +msgstr "" -#: js/js.js:646 -msgid "July" -msgstr "Temmuz" +#: js/js.js:710 +msgid "yesterday" +msgstr "" -#: js/js.js:646 -msgid "August" -msgstr "AÄŸustos" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "" -#: js/js.js:646 -msgid "September" -msgstr "Eylül" +#: js/js.js:712 +msgid "last month" +msgstr "" -#: js/js.js:646 -msgid "October" -msgstr "Ekim" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "" -#: js/js.js:646 -msgid "November" -msgstr "Kasım" +#: js/js.js:714 +msgid "months ago" +msgstr "" -#: js/js.js:646 -msgid "December" -msgstr "Aralık" +#: js/js.js:715 +msgid "last year" +msgstr "" -#: js/oc-dialogs.js:123 -msgid "Choose" +#: js/js.js:716 +msgid "years ago" msgstr "" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "seç" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Ä°ptal" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "Hayır" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Evet" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Tamam" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Silmek için bir kategori seçilmedi" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "Hata" -#: js/share.js:103 -msgid "Error while sharing" +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:114 -msgid "Error while unsharing" +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:121 -msgid "Error while changing permissions" +#: js/share.js:124 +msgid "Error while sharing" +msgstr "Paylaşım sırasında hata " + +#: js/share.js:135 +msgid "Error while unsharing" msgstr "" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:142 +msgid "Error while changing permissions" msgstr "" -#: js/share.js:130 -msgid "by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:153 +msgid "Shared with you by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "ile PaylaÅŸ" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "BaÄŸlantı ile paylaÅŸ" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Åžifre korunması" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Parola" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Son kullanma tarihini ayarla" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" +#: js/share.js:271 +msgid "Shared in {item} with {user}" msgstr "" -#: js/share.js:271 +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Paylaşılmayan" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "oluÅŸtur" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "" -#: js/share.js:317 js/share.js:476 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" msgstr "" -#: js/share.js:489 +#: js/share.js:533 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:545 msgid "Error setting expiration date" msgstr "" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud parola sıfırlama" @@ -234,19 +268,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Parolanızı sıfırlamak için bir baÄŸlantı Eposta olarak gönderilecek." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Ä°stendi" +msgid "Reset email send." +msgstr "" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "GiriÅŸ baÅŸarısız!" +msgid "Request failed!" +msgstr "" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Kullanıcı adı" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Sıfırlama iste" @@ -298,72 +332,187 @@ msgstr "Bulut bulunamadı" msgid "Edit categories" msgstr "Kategorileri düzenle" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Ekle" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Güvenlik Uyarisi" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Bir yönetici hesabı oluÅŸturun" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "GeliÅŸmiÅŸ" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "Veri klasörü" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "Veritabanını ayarla" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "kullanılacak" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "Veritabanı kullanıcı adı" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Veritabanı parolası" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Veritabanı adı" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "Veritabanı tablo alanı" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Veritabanı sunucusu" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Kurulumu tamamla" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Pazar" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Pazartesi" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Salı" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "ÇarÅŸamba" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "PerÅŸembe" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Cuma" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Cumartesi" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Ocak" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Åžubat" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Mart" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Nisan" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Mayıs" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Haziran" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Temmuz" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "AÄŸustos" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Eylül" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Ekim" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Kasım" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Aralık" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "kontrolünüzdeki web servisleri" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Çıkış yap" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Parolanızı mı unuttunuz?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "hatırla" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "GiriÅŸ yap" @@ -378,3 +527,17 @@ msgstr "önceki" #: templates/part.pagenavi.php:20 msgid "next" msgstr "sonraki" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 89562bcb1f3e435aa7fb7e0daf9c7c74845d71e7..fbd322633df131347c9cd22dfd964fb5eaa29d1b 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/files.po @@ -6,14 +6,15 @@ # Aranel Surion , 2011, 2012. # Caner BaÅŸaran , 2012. # Emre , 2012. +# , 2012. # Necdet Yücel , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 11:50+0000\n" +"Last-Translator: alpere \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,194 +27,165 @@ msgid "There is no error, the file uploaded with success" msgstr "Bir hata yok, dosya baÅŸarıyla yüklendi" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Yüklenen dosya php.ini de belirtilen upload_max_filesize sınırını aşıyor" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Yüklenen dosya HTML formundaki MAX_FILE_SIZE sınırını aşıyor" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Yüklenen dosyanın sadece bir kısmı yüklendi" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Hiç dosya yüklenmedi" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Geçici bir klasör eksik" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "Diske yazılamadı" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Dosyalar" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "Paylaşılmayan" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Sil" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Ä°sim deÄŸiÅŸtir." -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "zaten mevcut" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} zaten mevcut" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "deÄŸiÅŸtir" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "Öneri ad" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "iptal" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "deÄŸiÅŸtirildi" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "deÄŸiÅŸtirilen {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "geri al" -#: js/filelist.js:241 -msgid "with" -msgstr "ile" - -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" -msgstr "silindi" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "paylaşılmamış {files}" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "silinen {files}" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "ZIP dosyası oluÅŸturuluyor, biraz sürebilir." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Dosyanızın boyutu 0 byte olduÄŸundan veya bir dizin olduÄŸundan yüklenemedi" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Yükleme hatası" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Kapat" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Bekliyor" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 dosya yüklendi" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" msgstr "" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Yükleme iptal edildi." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Dosya yükleme iÅŸlemi sürüyor. Åžimdi sayfadan ayrılırsanız iÅŸleminiz iptal olur." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Geçersiz isim, '/' iÅŸaretine izin verilmiyor." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "tararamada hata oluÅŸdu" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Ad" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Boyut" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "DeÄŸiÅŸtirilme" -#: js/files.js:777 -msgid "folder" -msgstr "dizin" - -#: js/files.js:779 -msgid "folders" -msgstr "dizinler" - -#: js/files.js:787 -msgid "file" -msgstr "dosya" - -#: js/files.js:789 -msgid "files" -msgstr "dosyalar" - -#: js/files.js:833 -msgid "seconds ago" +#: js/files.js:814 +msgid "1 folder" msgstr "" -#: js/files.js:834 -msgid "minute ago" +#: js/files.js:816 +msgid "{count} folders" msgstr "" -#: js/files.js:835 -msgid "minutes ago" +#: js/files.js:824 +msgid "1 file" msgstr "" -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" +#: js/files.js:826 +msgid "{count} files" msgstr "" #: templates/admin.php:5 @@ -224,80 +196,76 @@ msgstr "Dosya taşıma" msgid "Maximum upload size" msgstr "Maksimum yükleme boyutu" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "mümkün olan en fazla: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Çoklu dosya ve dizin indirmesi için gerekli." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "ZIP indirmeyi aktif et" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 limitsiz demektir" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ZIP dosyaları için en fazla girdi sayısı" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Kaydet" #: templates/index.php:7 msgid "New" msgstr "Yeni" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Metin dosyası" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Klasör" -#: templates/index.php:11 -msgid "From url" -msgstr "Url'den" +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Yükle" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Yüklemeyi iptal et" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Burada hiçbir ÅŸey yok. BirÅŸeyler yükleyin!" -#: templates/index.php:50 -msgid "Share" -msgstr "PaylaÅŸ" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Ä°ndir" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Yüklemeniz çok büyük" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Yüklemeye çalıştığınız dosyalar bu sunucudaki maksimum yükleme boyutunu aşıyor." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Dosyalar taranıyor, lütfen bekleyin." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Güncel tarama" diff --git a/l10n/tr/files_pdfviewer.po b/l10n/tr/files_pdfviewer.po deleted file mode 100644 index 8f66b76939404eb0e0e7c2b8885e9db970f40f1b..0000000000000000000000000000000000000000 --- a/l10n/tr/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index fbf76ec640fbdb6f60bfe961b80e597e5abe1d3a..5cef16c9263ce487a529447680b4dafc2c6e54cc 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 11:33+0000\n" +"Last-Translator: alpere \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,30 +20,30 @@ msgstr "" #: templates/authenticate.php:4 msgid "Password" -msgstr "" +msgstr "Åžifre" #: templates/authenticate.php:6 msgid "Submit" -msgstr "" +msgstr "Gönder" -#: templates/public.php:9 +#: templates/public.php:17 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s sizinle paylaşılan %s klasör" -#: templates/public.php:11 +#: templates/public.php:19 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s sizinle paylaşılan %s klasör" -#: templates/public.php:14 templates/public.php:30 +#: templates/public.php:22 templates/public.php:38 msgid "Download" -msgstr "" +msgstr "Ä°ndir" -#: templates/public.php:29 +#: templates/public.php:37 msgid "No preview available for" -msgstr "" +msgstr "Kullanılabilir önizleme yok" -#: templates/public.php:37 +#: templates/public.php:43 msgid "web services under your control" -msgstr "" +msgstr "Bilgileriniz güvenli ve ÅŸifreli" diff --git a/l10n/tr/files_texteditor.po b/l10n/tr/files_texteditor.po deleted file mode 100644 index d1aa8ee65ad4a8b3c0b738ddc83e0a0e33988ac9..0000000000000000000000000000000000000000 --- a/l10n/tr/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/tr/gallery.po b/l10n/tr/gallery.po deleted file mode 100644 index b150c44bf8a7251d504a1c9ff9b6607aad4ecbe8..0000000000000000000000000000000000000000 --- a/l10n/tr/gallery.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# Aranel Surion , 2012. -# Emre , 2012. -# Necdet Yücel , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-30 09:13+0000\n" -"Last-Translator: Emre SaraçoÄŸlu \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Resimler" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Galeriyi paylaÅŸ" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Hata: " - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "İç hata" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "Slide Gösterim" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Geri" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "DoÄŸrulamayı kaldır" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Albümü silmek istiyor musunuz" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Albüm adını deÄŸiÅŸtir" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Yeni albüm adı" diff --git a/l10n/tr/impress.po b/l10n/tr/impress.po deleted file mode 100644 index ffbe59988655cf64398dd7621bc7e8d0a30d4b05..0000000000000000000000000000000000000000 --- a/l10n/tr/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/tr/lib.po b/l10n/tr/lib.po index 61fec9e31f70f769df1097ec7acc3a763bf63a61..6489d33ae284d247e6473c9e5509b0e6cc303f37 100644 --- a/l10n/tr/lib.po +++ b/l10n/tr/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" -msgstr "" +msgstr "Yardı" -#: app.php:295 +#: app.php:292 msgid "Personal" -msgstr "" +msgstr "KiÅŸisel" -#: app.php:300 +#: app.php:297 msgid "Settings" -msgstr "" +msgstr "Ayarlar" -#: app.php:305 +#: app.php:302 msgid "Users" -msgstr "" +msgstr "Kullanıcılar" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "" @@ -61,65 +61,92 @@ msgstr "" msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" -msgstr "" +msgstr "Kimlik doÄŸrulama hatası" #: json.php:51 msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Dosyalar" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Metin" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:112 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/tr/media.po b/l10n/tr/media.po deleted file mode 100644 index 0d9a91d218b4c0acec5c19a069685c06efe50ccb..0000000000000000000000000000000000000000 --- a/l10n/tr/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Aranel Surion , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Turkish (http://www.transifex.net/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "Müzik" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Oynat" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Beklet" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Önceki" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Sonraki" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Sesi kapat" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Sesi aç" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Koleksiyonu Tara" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Sanatç" - -#: templates/music.php:38 -msgid "Album" -msgstr "Albüm" - -#: templates/music.php:39 -msgid "Title" -msgstr "BaÅŸlık" diff --git a/l10n/tr/settings.po b/l10n/tr/settings.po index 589685208cc0272e218155c3d2f357d4eb35a367..2842d1b2d17852b2e9f71d700abf9a91c66f0789 100644 --- a/l10n/tr/settings.po +++ b/l10n/tr/settings.po @@ -5,14 +5,15 @@ # Translators: # Aranel Surion , 2011, 2012. # Emre , 2012. +# , 2012. # Necdet Yücel , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 11:41+0000\n" +"Last-Translator: alpere \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,70 +21,73 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" -msgstr "" +msgstr "App Store'dan liste yüklenemiyor" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "EÅŸleÅŸme hata" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "Grup zaten mevcut" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "Gruba eklenemiyor" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Uygulama devreye alınamadı" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Eposta kaydedildi" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Geçersiz eposta" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID DeÄŸiÅŸtirildi" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Geçersiz istek" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "Grup silinemiyor" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "EÅŸleÅŸme hata" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "Kullanıcı silinemiyor" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Dil deÄŸiÅŸtirildi" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "Kullanıcı %s grubuna eklenemiyor" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "Etkin deÄŸil" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "Etkin" @@ -91,104 +95,17 @@ msgstr "Etkin" msgid "Saving..." msgstr "Kaydediliyor..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__dil_adı__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Güvenlik Uyarisi" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Günlük" - -#: templates/admin.php:116 -msgid "More" -msgstr "Devamı" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "Uygulamanı Ekle" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Daha fazla App" #: templates/apps.php:27 msgid "Select an App" @@ -214,21 +131,21 @@ msgstr "Büyük Dosyaların Yönetimi" msgid "Ask a question" msgstr "Bir soru sorun" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Yardım veritabanına baÄŸlanmada sorunlar var." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "Oraya elle gidin." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "Cevap" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" #: templates/personal.php:12 @@ -241,7 +158,7 @@ msgstr "Ä°ndir" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Åžifreniz deÄŸiÅŸtirildi" #: templates/personal.php:20 msgid "Unable to change your password" @@ -287,6 +204,16 @@ msgstr "Çevirilere yardım edin" msgid "use this address to connect to your ownCloud in your file manager" msgstr "bu adresi kullanarak ownCloud unuza dosya yöneticinizle baÄŸlanın" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "GeliÅŸtirilen TarafownCloud community, the source code is altında lisanslanmıştır AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Ad" @@ -313,7 +240,7 @@ msgstr "DiÄŸer" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "" +msgstr "Yönetici Grubu " #: templates/users.php:82 msgid "Quota" diff --git a/l10n/tr/tasks.po b/l10n/tr/tasks.po deleted file mode 100644 index 68549f8375bb4e0d1584d1177f0e94de68a39651..0000000000000000000000000000000000000000 --- a/l10n/tr/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/tr/user_migrate.po b/l10n/tr/user_migrate.po deleted file mode 100644 index 5b31904b2f3c9dabb5b677d5d560b58a20ac858f..0000000000000000000000000000000000000000 --- a/l10n/tr/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/tr/user_openid.po b/l10n/tr/user_openid.po deleted file mode 100644 index 6c6f6b5ed5f5e79a66313cbb83e4eab3b8c11a30..0000000000000000000000000000000000000000 --- a/l10n/tr/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/tr/files_odfviewer.po b/l10n/tr/user_webdavauth.po similarity index 62% rename from l10n/tr/files_odfviewer.po rename to l10n/tr/user_webdavauth.po index 81c300af47a4f89c6171ee35726632acd84f86a5..55bcf674de00d2695de2a2776fd3e545ffead303 100644 --- a/l10n/tr/files_odfviewer.po +++ b/l10n/tr/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-12-05 00:04+0100\n" +"PO-Revision-Date: 2012-12-04 11:44+0000\n" +"Last-Translator: alpere \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/uk/admin_dependencies_chk.po b/l10n/uk/admin_dependencies_chk.po deleted file mode 100644 index 5fae31131d780c0505d314da40882f037fe2ab36..0000000000000000000000000000000000000000 --- a/l10n/uk/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/uk/admin_migrate.po b/l10n/uk/admin_migrate.po deleted file mode 100644 index b0ba19c7eb9393ce685f0415854711f929ca1dcc..0000000000000000000000000000000000000000 --- a/l10n/uk/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/uk/bookmarks.po b/l10n/uk/bookmarks.po deleted file mode 100644 index 2183661f9f0ca12118a6fac84398d510ec8a6c2b..0000000000000000000000000000000000000000 --- a/l10n/uk/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/uk/calendar.po b/l10n/uk/calendar.po deleted file mode 100644 index a80f3c9db3ebecebb057be37cdd65ea414cbeeae..0000000000000000000000000000000000000000 --- a/l10n/uk/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Soul Kim , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Ðовий чаÑовий поÑÑ" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "ЧаÑовий поÑÑ Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Календар" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "День народженнÑ" - -#: lib/app.php:122 -msgid "Business" -msgstr "Справи" - -#: lib/app.php:123 -msgid "Call" -msgstr "Подзвонити" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Клієнти" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "СвÑта" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "Ідеї" - -#: lib/app.php:128 -msgid "Journey" -msgstr "Поїздка" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Ювілей" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "ЗуÑтріч" - -#: lib/app.php:131 -msgid "Other" -msgstr "Інше" - -#: lib/app.php:132 -msgid "Personal" -msgstr "ОÑобиÑте" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Проекти" - -#: lib/app.php:134 -msgid "Questions" -msgstr "ЗапитаннÑ" - -#: lib/app.php:135 -msgid "Work" -msgstr "Робота" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "новий Календар" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Ðе повторювати" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Щоденно" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "ЩотижнÑ" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "По буднÑм" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Кожні дві неділі" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "ЩоміÑÑцÑ" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Щорічно" - -#: lib/object.php:388 -msgid "never" -msgstr "ніколи" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "" - -#: lib/object.php:390 -msgid "by date" -msgstr "" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Понеділок" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Вівторок" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Середа" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Четвер" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "П'ÑтницÑ" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Субота" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "ÐеділÑ" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "" - -#: lib/object.php:428 -msgid "first" -msgstr "перший" - -#: lib/object.php:429 -msgid "second" -msgstr "другий" - -#: lib/object.php:430 -msgid "third" -msgstr "третій" - -#: lib/object.php:431 -msgid "fourth" -msgstr "четвертий" - -#: lib/object.php:432 -msgid "fifth" -msgstr "п'Ñтий" - -#: lib/object.php:433 -msgid "last" -msgstr "оÑтанній" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Січень" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Лютий" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Березень" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Квітень" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Травень" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Червень" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Липень" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Серпень" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "ВереÑень" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Жовтень" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "ЛиÑтопад" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Грудень" - -#: lib/object.php:488 -msgid "by events date" -msgstr "" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Дата" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Кал." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "УвеÑÑŒ день" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "Пропущені полÑ" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Ðазва" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Від Дати" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "З ЧаÑу" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "До ЧаÑу" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "По Дату" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "ÐŸÐ¾Ð´Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ñ”Ñ‚ÑŒÑÑ Ð´Ð¾ Ñ—Ñ— початку" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° бази даних" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Тиждень" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "МіÑÑць" - -#: templates/calendar.php:41 -msgid "List" -msgstr "СпиÑок" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Сьогодні" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Ваші календарі" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Завантажити" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Редагувати" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Видалити" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Ðовий календар" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "Редагувати календар" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Ðктивний" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Колір календарÑ" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "Зберегти" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Відмінити" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "ЕкÑпорт" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Ðазва події" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "КатегоріÑ" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "З" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "По" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "МіÑце" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "МіÑце події" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "ОпиÑ" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "ÐžÐ¿Ð¸Ñ Ð¿Ð¾Ð´Ñ–Ñ—" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Повторювати" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Ñтворити новий календар" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "Імпортувати файл календарÑ" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Ðазва нового календарÑ" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "Імпорт" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Створити нову подію" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "ЧаÑовий поÑÑ" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24г" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12г" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "КориÑтувачі" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "Групи" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/uk/contacts.po b/l10n/uk/contacts.po deleted file mode 100644 index f415e863ccfa6a99343da592b4fe647efa1889c7..0000000000000000000000000000000000000000 --- a/l10n/uk/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Soul Kim , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "Має бути заповнено щонайменше одне поле." - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "Це не ваша адреÑна книга." - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Мобільний" - -#: lib/app.php:203 -msgid "Text" -msgstr "ТекÑÑ‚" - -#: lib/app.php:204 -msgid "Voice" -msgstr "ГолоÑ" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "ФакÑ" - -#: lib/app.php:207 -msgid "Video" -msgstr "Відео" - -#: lib/app.php:208 -msgid "Pager" -msgstr "Пейджер" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "День народженнÑ" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Додати контакт" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "ОрганізаціÑ" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Видалити" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Телефон" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Ел.пошта" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "ÐдреÑа" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Видалити контакт" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "Розширено" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "МіÑто" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Поштовий індекÑ" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Країна" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Завантажити" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "Ðова адреÑна книга" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 47f5aeb743089c4673999ea97729aaf65be770ce..c10c7fcfbaa04252bfd211c26968241f9a471906 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/core.po @@ -4,15 +4,16 @@ # # Translators: # , 2012. +# , 2012. # Soul Kim , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-11-26 15:28+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,235 +21,268 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Ðе вказано тип категорії." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" -msgstr "" +msgstr "ВідÑутні категорії Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " -msgstr "" +msgstr "Ð¦Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ Ð²Ð¶Ðµ Ñ–Ñнує: " + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Ðе вказано тип об'єкту." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID не вказано." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Помилка при додаванні %s до обраного." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Жодної категорії не обрано Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Помилка при видалені %s із обраного." -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "ÐалаштуваннÑ" -#: js/js.js:645 -msgid "January" -msgstr "Січень" +#: js/js.js:704 +msgid "seconds ago" +msgstr "Ñекунди тому" -#: js/js.js:645 -msgid "February" -msgstr "Лютий" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 хвилину тому" -#: js/js.js:645 -msgid "March" -msgstr "Березень" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} хвилин тому" -#: js/js.js:645 -msgid "April" -msgstr "Квітень" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 годину тому" -#: js/js.js:645 -msgid "May" -msgstr "Травень" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} години тому" -#: js/js.js:645 -msgid "June" -msgstr "Червень" +#: js/js.js:709 +msgid "today" +msgstr "Ñьогодні" -#: js/js.js:646 -msgid "July" -msgstr "Липень" +#: js/js.js:710 +msgid "yesterday" +msgstr "вчора" -#: js/js.js:646 -msgid "August" -msgstr "Серпень" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} днів тому" -#: js/js.js:646 -msgid "September" -msgstr "ВереÑень" +#: js/js.js:712 +msgid "last month" +msgstr "минулого міÑÑцÑ" -#: js/js.js:646 -msgid "October" -msgstr "Жовтень" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} міÑÑців тому" -#: js/js.js:646 -msgid "November" -msgstr "ЛиÑтопад" +#: js/js.js:714 +msgid "months ago" +msgstr "міÑÑці тому" -#: js/js.js:646 -msgid "December" -msgstr "Грудень" +#: js/js.js:715 +msgid "last year" +msgstr "минулого року" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "роки тому" + +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Обрати" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Відмінити" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "ÐÑ–" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Так" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" -msgstr "" +msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Ðе визначено тип об'єкту." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "Помилка" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Ðе визначено ім'Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Ðеобхідний файл {file} не вÑтановлено!" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "Помилка під Ñ‡Ð°Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ—" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "Помилка під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð¸ публікації" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" +msgstr "Помилка при зміні повноважень" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr " {owner} опублікував Ð´Ð»Ñ Ð’Ð°Ñ Ñ‚Ð° Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸ {group}" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "{owner} опублікував Ð´Ð»Ñ Ð’Ð°Ñ" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Опублікувати длÑ" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Опублікувати через поÑиланнÑ" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "ЗахиÑтити паролем" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Пароль" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Ð’Ñтановити термін дії" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Термін дії" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Опублікувати через електронну пошту:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Жодної людини не знайдено" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Пере-Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð½Ðµ дозволÑєтьÑÑ" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Опубліковано {item} Ð´Ð»Ñ {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Заборонити доÑтуп" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "може редагувати" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "контроль доÑтупу" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "Ñтворити" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "оновити" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "видалити" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "опублікувати" -#: js/share.js:317 js/share.js:476 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" -msgstr "" +msgstr "Захищено паролем" -#: js/share.js:489 +#: js/share.js:533 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Помилка при відміні терміна дії" -#: js/share.js:501 +#: js/share.js:545 msgid "Error setting expiration date" -msgstr "" +msgstr "Помилка при вÑтановленні терміна дії" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" -msgstr "" +msgstr "ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ ownCloud" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" -msgstr "" +msgstr "ВикориÑтовуйте наÑтупне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ: {link}" #: lostpassword/templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." msgstr "Ви отримаєте поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ паролю на e-mail." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "" +msgid "Reset email send." +msgstr "ЛиÑÑ‚ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¾." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "" +msgid "Request failed!" +msgstr "Ðевдалий запит!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" -msgstr "" +msgstr "Запит ÑкиданнÑ" #: lostpassword/templates/resetpassword.php:4 msgid "Your password was reset" @@ -276,7 +310,7 @@ msgstr "КориÑтувачі" #: strings.php:7 msgid "Apps" -msgstr "" +msgstr "Додатки" #: strings.php:8 msgid "Admin" @@ -288,93 +322,222 @@ msgstr "Допомога" #: templates/403.php:12 msgid "Access forbidden" -msgstr "" +msgstr "ДоÑтуп заборонено" #: templates/404.php:12 msgid "Cloud not found" -msgstr "" +msgstr "Cloud не знайдено" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" -msgstr "" +msgstr "Редагувати категорії" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Додати" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ небезпеку" + #: templates/installation.php:24 -msgid "Create an admin account" -msgstr "" +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Ðе доÑтупний безпечний генератор випадкових чиÑел, будь лаÑка, активуйте PHP OpenSSL додаток." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Без безпечного генератора випадкових чиÑел зловмиÑник може визначити токени ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ñ– заволодіти Вашим обліковим запиÑом." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "Ваш каталог з даними та Ваші файли можливо доÑтупні з Інтернету. Файл .htaccess, наданий з ownCloud, не працює. Ми наполегливо рекомендуємо Вам налаштувати Ñвій веб-Ñервер таким чином, щоб каталог data більше не був доÑтупний, або переміÑтити каталог data за межі кореневого каталогу документів веб-Ñервера." #: templates/installation.php:36 +msgid "Create an admin account" +msgstr "Створити обліковий Ð·Ð°Ð¿Ð¸Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратора" + +#: templates/installation.php:48 msgid "Advanced" -msgstr "" +msgstr "Додатково" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" -msgstr "" +msgstr "Каталог даних" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "буде викориÑтано" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "КориÑтувач бази даних" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Пароль Ð´Ð»Ñ Ð±Ð°Ð·Ð¸ даних" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Ðазва бази даних" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð±Ð°Ð·Ð¸ даних" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" -msgstr "" +msgstr "ХоÑÑ‚ бази даних" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Завершити налаштуваннÑ" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "ÐеділÑ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Понеділок" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Вівторок" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Середа" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Четвер" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "П'ÑтницÑ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Субота" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Січень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Лютий" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Березень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Квітень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Травень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Червень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Липень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Серпень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "ВереÑень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Жовтень" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "ЛиÑтопад" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Грудень" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "веб-ÑÐµÑ€Ð²Ñ–Ñ Ð¿Ñ–Ð´ вашим контролем" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Вихід" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Ðвтоматичний вхід в ÑиÑтему відхилений!" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Якщо Ви не мінÑли пароль оÑтаннім чаÑом, Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð¼Ð¾Ð¶Ðµ бути Ñкомпрометованим!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Будь лаÑка, змініть Ñвій пароль, щоб знову захиÑтити Ваш обліковий запиÑ." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Забули пароль?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "запам'Ñтати" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Вхід" #: templates/logout.php:1 msgid "You are logged out." -msgstr "" +msgstr "Ви вийшли з ÑиÑтеми." #: templates/part.pagenavi.php:3 msgid "prev" -msgstr "" +msgstr "попередній" #: templates/part.pagenavi.php:20 msgid "next" -msgstr "" +msgstr "наÑтупний" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ небезпеку!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Будь лаÑка, повторно введіть Ñвій пароль.
            З питань безпеки, Вам інколи доведетьÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ вводити Ñвій пароль." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Підтвердити" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index 500381e7cb310ef034a1534089a9e453b7f1996e..c37f23560d703fcaead37a5b3efec00cc66d5d3e 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/files.po @@ -4,14 +4,15 @@ # # Translators: # , 2012. +# , 2012. # Soul Kim , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 10:32+0000\n" +"Last-Translator: volodya327 \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,281 +22,248 @@ msgstr "" #: ajax/upload.php:20 msgid "There is no error, the file uploaded with success" -msgstr "Файл уÑпішно відвантажено без помилок." +msgstr "Файл уÑпішно вивантажено без помилок." #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Розмір відвантаженого файлу перевищує директиву upload_max_filesize в php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "Розмір Ð·Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” upload_max_filesize параметра в php.ini: " -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Розмір відвантаженого файлу перевищує директиву MAX_FILE_SIZE вказану в HTML формі" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Файл відвантажено лише чаÑтково" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Ðе відвантажено жодного файлу" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "ВідÑутній тимчаÑовий каталог" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" -msgstr "" +msgstr "ÐевдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати на диÑк" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Файли" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "Заборонити доÑтуп" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Видалити" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Перейменувати" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} вже Ñ–Ñнує" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" -msgstr "" +msgstr "заміна" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" -msgstr "" +msgstr "запропонуйте назву" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" -msgstr "" +msgstr "відміна" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "замінено {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "відмінити" -#: js/filelist.js:241 -msgid "with" -msgstr "" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "замінено {new_name} на {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "неопубліковано {files}" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "видалено {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "видалені" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Ðевірне ім'Ñ, '\\', '/', '<', '>', ':', '\"', '|', '?' та '*' не дозволені." -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ZIP-файлу, це може зайнÑти певний чаÑ." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Ðеможливо завантажити ваш файл тому, що він тека або файл розміром 0 байт" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Помилка завантаженнÑ" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Закрити" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "ОчікуваннÑ" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 файл завантажуєтьÑÑ" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} файлів завантажуєтьÑÑ" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾." -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" +msgstr "ВиконуєтьÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ. Ð—Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ†Ñ–Ñ”Ñ— Ñторінки приведе до відміни завантаженнÑ." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Ðекоректне ім'Ñ, '/' не дозволено." +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Ðевірне ім'Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ. ВикориÑÑ‚Ð°Ð½Ð½Ñ \"Shared\" зарезервовано Owncloud" -#: js/files.js:667 -msgid "files scanned" -msgstr "" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} файлів проÑкановано" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "помилка при Ñкануванні" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Ім'Ñ" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Розмір" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Змінено" -#: js/files.js:777 -msgid "folder" -msgstr "тека" - -#: js/files.js:779 -msgid "folders" -msgstr "теки" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 папка" -#: js/files.js:787 -msgid "file" -msgstr "файл" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} папок" -#: js/files.js:789 -msgid "files" -msgstr "файли" - -#: js/files.js:833 -msgid "seconds ago" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 файл" -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} файлів" #: templates/admin.php:5 msgid "File handling" -msgstr "" +msgstr "Робота з файлами" #: templates/admin.php:7 msgid "Maximum upload size" msgstr "МакÑимальний розмір відвантажень" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "макÑ.можливе:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." -msgstr "" +msgstr "Ðеобхідно Ð´Ð»Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸-файлового та каталогового завантаженнÑ." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" -msgstr "" +msgstr "Ðктивувати ZIP-завантаженнÑ" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 Ñ” безліміт" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" -msgstr "" +msgstr "МакÑимальний розмір завантажуємого ZIP файлу" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "Зберегти" #: templates/index.php:7 msgid "New" msgstr "Створити" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "ТекÑтовий файл" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "Папка" -#: templates/index.php:11 -msgid "From url" -msgstr "З URL" +#: templates/index.php:14 +msgid "From link" +msgstr "З поÑиланнÑ" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Відвантажити" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Перервати завантаженнÑ" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Тут нічого немає. Відвантажте що-небудь!" -#: templates/index.php:50 -msgid "Share" -msgstr "ПоділитиÑÑ" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Завантажити" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "Файл занадто великий" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Файли,що ви намагаєтеÑÑŒ відвантажити перевищують макÑимальний дозволений розмір файлів на цьому Ñервері." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Файли ÑкануютьÑÑ, зачекайте, будь-лаÑка." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Поточне ÑкануваннÑ" diff --git a/l10n/uk/files_encryption.po b/l10n/uk/files_encryption.po index be6f1edb74836ce57cbf3fe20cd81883824c94f7..9b00d3b7a30e224d5c4744861c74df0aca8eae75 100644 --- a/l10n/uk/files_encryption.po +++ b/l10n/uk/files_encryption.po @@ -3,32 +3,33 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 12:05+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: templates/settings.php:3 msgid "Encryption" -msgstr "" +msgstr "ШифруваннÑ" #: templates/settings.php:4 msgid "Exclude the following file types from encryption" -msgstr "" +msgstr "Ðе шифрувати файли наÑтупних типів" #: templates/settings.php:5 msgid "None" -msgstr "" +msgstr "Жоден" #: templates/settings.php:10 msgid "Enable Encryption" -msgstr "" +msgstr "Включити шифруваннÑ" diff --git a/l10n/uk/files_external.po b/l10n/uk/files_external.po index dfbecbecbac439f4200ce1da3cd4921b32f55f73..ce97ceed4c1af4cdebb4670073f9aeda4df33049 100644 --- a/l10n/uk/files_external.po +++ b/l10n/uk/files_external.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-27 00:09+0100\n" +"PO-Revision-Date: 2012-11-26 15:31+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,63 +21,63 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "ДоÑтуп дозволено" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Помилка при налаштуванні Ñховища Dropbox" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Дозволити доÑтуп" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Заповніть вÑÑ– обов'Ñзкові полÑ" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "Будь лаÑка, надайте дійÑний ключ та пароль Dropbox." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Помилка при налаштуванні Ñховища Google Drive" #: templates/settings.php:3 msgid "External Storage" -msgstr "" +msgstr "Зовнішні Ñховища" #: templates/settings.php:7 templates/settings.php:19 msgid "Mount point" -msgstr "" +msgstr "Точка монтуваннÑ" #: templates/settings.php:8 msgid "Backend" -msgstr "" +msgstr "Backend" #: templates/settings.php:9 msgid "Configuration" -msgstr "" +msgstr "ÐалаштуваннÑ" #: templates/settings.php:10 msgid "Options" -msgstr "" +msgstr "Опції" #: templates/settings.php:11 msgid "Applicable" -msgstr "" +msgstr "Придатний" #: templates/settings.php:23 msgid "Add mount point" -msgstr "" +msgstr "Додати точку монтуваннÑ" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" -msgstr "" +msgstr "Ðе вÑтановлено" #: templates/settings.php:63 msgid "All Users" -msgstr "" +msgstr "УÑÑ– кориÑтувачі" #: templates/settings.php:64 msgid "Groups" @@ -92,16 +93,16 @@ msgstr "Видалити" #: templates/settings.php:87 msgid "Enable User External Storage" -msgstr "" +msgstr "Ðктивувати кориÑтувацькі зовнішні Ñховища" #: templates/settings.php:88 msgid "Allow users to mount their own external storage" -msgstr "" +msgstr "Дозволити кориÑтувачам монтувати влаÑні зовнішні Ñховища" #: templates/settings.php:99 msgid "SSL root certificates" -msgstr "" +msgstr "SSL корневі Ñертифікати" #: templates/settings.php:113 msgid "Import Root Certificate" -msgstr "" +msgstr "Імпортувати корневі Ñертифікати" diff --git a/l10n/uk/files_pdfviewer.po b/l10n/uk/files_pdfviewer.po deleted file mode 100644 index 5fb83eac039b22aa395d07e3396bfaea841bca2c..0000000000000000000000000000000000000000 --- a/l10n/uk/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/uk/files_sharing.po b/l10n/uk/files_sharing.po index bb4445339e0a3a5e447038ed6a5cecaf40e06863..a087b632037262eb6ea1c6b7ceb1b3fb4f17d24e 100644 --- a/l10n/uk/files_sharing.po +++ b/l10n/uk/files_sharing.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-22 00:01+0100\n" +"PO-Revision-Date: 2012-11-21 13:21+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,17 +25,17 @@ msgstr "Пароль" #: templates/authenticate.php:6 msgid "Submit" -msgstr "" +msgstr "Submit" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s опублікував каталог %s Ð´Ð»Ñ Ð’Ð°Ñ" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s опублікував файл %s Ð´Ð»Ñ Ð’Ð°Ñ" #: templates/public.php:14 templates/public.php:30 msgid "Download" @@ -42,8 +43,8 @@ msgstr "Завантажити" #: templates/public.php:29 msgid "No preview available for" -msgstr "" +msgstr "Попередній переглÑд недоÑтупний длÑ" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" -msgstr "" +msgstr "підконтрольні Вам веб-ÑервіÑи" diff --git a/l10n/uk/files_texteditor.po b/l10n/uk/files_texteditor.po deleted file mode 100644 index 2c4cf49ae46e4e23658c171dd76e05f87654c943..0000000000000000000000000000000000000000 --- a/l10n/uk/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/uk/files_versions.po b/l10n/uk/files_versions.po index 45b78595d4d48f134ff2672a0a16480d4c640a7b..91a6d8643b120e48bdb72bc4efe8f1eda7fa9bdd 100644 --- a/l10n/uk/files_versions.po +++ b/l10n/uk/files_versions.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-23 02:02+0200\n" +"PO-Revision-Date: 2012-10-22 12:22+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: js/settings-personal.js:31 templates/settings-personal.php:10 msgid "Expire all versions" -msgstr "" +msgstr "Термін дії вÑÑ–Ñ… верÑій" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "ІÑторіÑ" #: templates/settings-personal.php:4 msgid "Versions" -msgstr "" +msgstr "ВерÑÑ–Ñ—" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "" +msgstr "Це призведе до Ð·Ð½Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð²ÑÑ–Ñ… Ñ–Ñнуючих збережених верÑій Ваших файлів" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "ВерÑÑ–Ñ— файлів" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Включити" diff --git a/l10n/uk/gallery.po b/l10n/uk/gallery.po deleted file mode 100644 index a29e3a1312de95b36f4de99e028c500587e34a6b..0000000000000000000000000000000000000000 --- a/l10n/uk/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Soul Kim , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Ukrainian (http://www.transifex.net/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "Оновити" - -#: templates/index.php:17 -msgid "Stop" -msgstr "" - -#: templates/index.php:18 -msgid "Share" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Ðазад" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/uk/impress.po b/l10n/uk/impress.po deleted file mode 100644 index 1307d932c3d4ebc7b3c8c026e25596b899550451..0000000000000000000000000000000000000000 --- a/l10n/uk/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/uk/lib.po b/l10n/uk/lib.po index 4458c03b3f21269169881b937a3d10ad25ae331a..f2a86e71708095c93c7265fdc1ded0888e026de1 100644 --- a/l10n/uk/lib.po +++ b/l10n/uk/lib.po @@ -4,14 +4,15 @@ # # Translators: # , 2012. +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-11 02:02+0200\n" -"PO-Revision-Date: 2012-09-10 11:28+0000\n" -"Last-Translator: VicDeo \n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-11-26 15:40+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -43,19 +44,19 @@ msgstr "Додатки" msgid "Admin" msgstr "Ðдмін" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "ZIP Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Файли повинні бути завантаженні поÑлідовно." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "ПовернутиÑÑ Ð´Ð¾ файлів" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Вибрані фали завеликі Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ zip файлу." @@ -63,65 +64,92 @@ msgstr "Вибрані фали завеликі Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ z msgid "Application is not enabled" msgstr "Додаток не увімкнений" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Помилка автентифікації" #: json.php:51 msgid "Token expired. Please reload page." -msgstr "" +msgstr "Строк дії токена ÑкінчивÑÑ. Будь лаÑка, перезавантажте Ñторінку." + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Файли" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "ТекÑÑ‚" -#: template.php:87 +#: search/provider/file.php:29 +msgid "Images" +msgstr "ЗображеннÑ" + +#: template.php:103 msgid "seconds ago" msgstr "Ñекунди тому" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 хвилину тому" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d хвилин тому" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 годину тому" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d годин тому" + +#: template.php:108 msgid "today" msgstr "Ñьогодні" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "вчора" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d днів тому" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "минулого міÑÑцÑ" -#: template.php:96 -msgid "months ago" -msgstr "міÑÑці тому" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d міÑÑців тому" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "минулого року" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "роки тому" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "" +msgstr "%s доÑтупно. Отримати детальну інформацію" -#: updater.php:68 +#: updater.php:77 msgid "up to date" -msgstr "" +msgstr "оновлено" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "перевірка оновлень відключена" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ категорію \"%s\"" diff --git a/l10n/uk/media.po b/l10n/uk/media.po deleted file mode 100644 index aef0c0eada9080ab8ab51d005b96bd0961d664e3..0000000000000000000000000000000000000000 --- a/l10n/uk/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-30 21:07+0000\n" -"Last-Translator: dzubchikd \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "Музика" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "Додати альбом до плейлиÑта" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Грати" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Пауза" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Попередній" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "ÐаÑтупний" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Звук вкл." - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Звук викл." - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Повторне ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÐµÐºÑ†Ñ–Ñ—" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Виконавець" - -#: templates/music.php:38 -msgid "Album" -msgstr "Ðльбом" - -#: templates/music.php:39 -msgid "Title" -msgstr "Заголовок" diff --git a/l10n/uk/settings.po b/l10n/uk/settings.po index dd7b84e73974934f41b1230b0012051042ced064..a169a56596c0f4cea397815559c70e5ec04da8a8 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/settings.po @@ -4,13 +4,14 @@ # # Translators: # , 2012. +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: volodya327 \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,175 +19,91 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" -msgstr "" - -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑпиÑок з App Store" -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" -msgstr "" +msgstr "Група вже Ñ–Ñнує" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ групу" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "Ðе вдалоÑÑ Ð°ÐºÑ‚Ð¸Ð²ÑƒÐ²Ð°Ñ‚Ð¸ програму. " -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" -msgstr "" +msgstr "ÐдреÑу збережено" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" -msgstr "" +msgstr "Ðевірна адреÑа" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID змінено" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Помилковий запит" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ групу" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Помилка автентифікації" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:24 msgid "Unable to delete user" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Мова змінена" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "ÐдмініÑтратор не може видалити Ñебе з групи адмінів" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ кориÑтувача у групу %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача із групи %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" -msgstr "" +msgstr "Вимкнути" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" -msgstr "" +msgstr "Включити" #: js/personal.js:69 msgid "Saving..." -msgstr "" +msgstr "Зберігаю..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" -msgstr "" - -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:88 -msgid "Log" -msgstr "" - -#: templates/admin.php:116 -msgid "More" -msgstr "" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" +msgstr "__language_name__" #: templates/apps.php:10 msgid "Add your App" -msgstr "" +msgstr "Додати Ñвою програму" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Більше програм" #: templates/apps.php:27 msgid "Select an App" @@ -194,56 +111,56 @@ msgstr "Вибрати додаток" #: templates/apps.php:31 msgid "See application page at apps.owncloud.com" -msgstr "" +msgstr "ПереглÑньте Ñторінку програм на apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "-licensed by " #: templates/help.php:9 msgid "Documentation" -msgstr "" +msgstr "ДокументаціÑ" #: templates/help.php:10 msgid "Managing Big Files" -msgstr "" +msgstr "Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ð¸ файлами" #: templates/help.php:11 msgid "Ask a question" msgstr "Запитати" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Проблема при з'єднані з базою допомоги" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." -msgstr "" +msgstr "Перейти вручну." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" -msgstr "" +msgstr "Відповідь" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "Ви викориÑтали %s із доÑтупних %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" -msgstr "" +msgstr "ÐаÑтільні та мобільні клієнти Ñинхронізації" #: templates/personal.php:13 msgid "Download" -msgstr "" +msgstr "Завантажити" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Ваш пароль змінено" #: templates/personal.php:20 msgid "Unable to change your password" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ваш пароль" #: templates/personal.php:21 msgid "Current password" @@ -263,15 +180,15 @@ msgstr "Змінити пароль" #: templates/personal.php:30 msgid "Email" -msgstr "" +msgstr "Ел.пошта" #: templates/personal.php:31 msgid "Your email address" -msgstr "" +msgstr "Ваша адреÑа електронної пошти" #: templates/personal.php:32 msgid "Fill in an email address to enable password recovery" -msgstr "" +msgstr "Введіть адреÑу електронної пошти Ð´Ð»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ" #: templates/personal.php:38 templates/personal.php:39 msgid "Language" @@ -279,11 +196,21 @@ msgstr "Мова" #: templates/personal.php:44 msgid "Help translate" -msgstr "" +msgstr "Допомогти з перекладом" #: templates/personal.php:51 msgid "use this address to connect to your ownCloud in your file manager" -msgstr "" +msgstr "викориÑтовувати цю адреÑу Ð´Ð»Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· ownCloud у Вашому файловому менеджері" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Розроблено ownCloud громадою, вихідний код має ліцензію AGPL." #: templates/users.php:21 templates/users.php:76 msgid "Name" @@ -303,19 +230,19 @@ msgstr "Створити" #: templates/users.php:35 msgid "Default Quota" -msgstr "" +msgstr "Квота за замовчуваннÑм" #: templates/users.php:55 templates/users.php:138 msgid "Other" -msgstr "" +msgstr "Інше" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "" +msgstr "ÐдмініÑтратор групи" #: templates/users.php:82 msgid "Quota" -msgstr "" +msgstr "Квота" #: templates/users.php:146 msgid "Delete" diff --git a/l10n/uk/tasks.po b/l10n/uk/tasks.po deleted file mode 100644 index 37254722c735a048ea806698174f1a1338f79c93..0000000000000000000000000000000000000000 --- a/l10n/uk/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/uk/user_ldap.po b/l10n/uk/user_ldap.po index d82593c3dfe2a98a37f4e682e455a041cd5f3e86..dd12c4f2b25de68b91233a4906648f59f97da0f5 100644 --- a/l10n/uk/user_ldap.po +++ b/l10n/uk/user_ldap.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-11 02:02+0200\n" -"PO-Revision-Date: 2012-09-10 11:08+0000\n" -"Last-Translator: VicDeo \n" +"POT-Creation-Date: 2012-11-28 00:10+0100\n" +"PO-Revision-Date: 2012-11-27 12:54+0000\n" +"Last-Translator: volodya327 \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,31 +20,31 @@ msgstr "" #: templates/settings.php:8 msgid "Host" -msgstr "" +msgstr "ХоÑÑ‚" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "Можна не вказувати протокол, Ñкщо вам не потрібен SSL. Тоді почніть з ldaps://" #: templates/settings.php:9 msgid "Base DN" -msgstr "" +msgstr "Базовий DN" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" +msgstr "Ви можете задати Базовий DN Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів Ñ– груп на вкладинці Додатково" #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "DN КориÑтувача" #: templates/settings.php:10 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "DN клієнтÑького кориÑтувача Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²'Ñзки, наприклад: uid=agent,dc=example,dc=com. Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ñ–Ð¼Ð½Ð¾Ð³Ð¾ доÑтупу, залиште DN Ñ– Пароль порожніми." #: templates/settings.php:11 msgid "Password" @@ -52,119 +52,119 @@ msgstr "Пароль" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "Ð”Ð»Ñ Ð°Ð½Ð¾Ð½Ñ–Ð¼Ð½Ð¾Ð³Ð¾ доÑтупу, залиште DN Ñ– Пароль порожніми." #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "Фільтр КориÑтувачів, що під'єднуютьÑÑ" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "Визначає фільтр, Ñкий заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ Ñпробі входу. %%uid замінює ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача при вході." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "викориÑтовуйте %%uid заповнювач, наприклад: \"uid=%%uid\"" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "Фільтр СпиÑку КориÑтувачів" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "Визначає фільтр, Ñкий заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ отриманні кориÑтувачів" #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "" +msgstr "без будь-Ñкого заповнювача, наприклад: \"objectClass=person\"." #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "Фільтр Груп" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "Визначає фільтр, Ñкий заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ отриманні груп." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "" +msgstr "без будь-Ñкого заповнювача, наприклад: \"objectClass=posixGroup\"." #: templates/settings.php:17 msgid "Port" -msgstr "" +msgstr "Порт" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "ОÑновне Дерево КориÑтувачів" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "ОÑновне Дерево Груп" #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "ÐÑÐ¾Ñ†Ñ–Ð°Ñ†Ñ–Ñ Ð“Ñ€ÑƒÐ¿Ð°-Член" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "ВикориÑтовуйте TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "Ðе викориÑтовуйте його Ð´Ð»Ñ SSL з'єднань, це не буде виконано." #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "Ðечутливий до регіÑтру LDAP Ñервер (Windows)" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "Вимкнути перевірку SSL Ñертифіката." #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Якщо з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑ” лише з цією опцією, імпортуйте SSL Ñертифікат LDAP Ñервера у ваший ownCloud Ñервер." #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "Ðе рекомендуєтьÑÑ, викориÑтовуйте лише Ð´Ð»Ñ Ñ‚ÐµÑтів." #: templates/settings.php:24 msgid "User Display Name Field" -msgstr "" +msgstr "Поле, Ñке відображає Ім'Ñ ÐšÐ¾Ñ€Ð¸Ñтувача" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "Ðтрибут LDAP, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— імен кориÑтувачів ownCloud." #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "Поле, Ñке відображає Ім'Ñ Ð“Ñ€ÑƒÐ¿Ð¸" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "Ðтрибут LDAP, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— імен груп ownCloud." #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "в байтах" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." -msgstr "" +msgstr "в Ñекундах. Зміна очищує кеш." #: templates/settings.php:30 msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "" +msgstr "Залиште порожнім Ð´Ð»Ñ Ñ–Ð¼ÐµÐ½Ñ– кориÑтувача (за замовчаннÑм). Інакше, вкажіть атрибут LDAP/AD." #: templates/settings.php:32 msgid "Help" diff --git a/l10n/uk/user_migrate.po b/l10n/uk/user_migrate.po deleted file mode 100644 index 816951cef340e5a3d319358bd884269b3dfd4184..0000000000000000000000000000000000000000 --- a/l10n/uk/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/uk/user_openid.po b/l10n/uk/user_openid.po deleted file mode 100644 index 699f470569be3a1fe6166c134fc39d739453d49c..0000000000000000000000000000000000000000 --- a/l10n/uk/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/uk/files_odfviewer.po b/l10n/uk/user_webdavauth.po similarity index 64% rename from l10n/uk/files_odfviewer.po rename to l10n/uk/user_webdavauth.po index f7dfc7c8debf2258f7aa564e2b35c016eb4bc3c7..e9b0d979026ae9f48e86029bf73b9508faa72d03 100644 --- a/l10n/uk/files_odfviewer.po +++ b/l10n/uk/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-20 00:01+0100\n" +"PO-Revision-Date: 2012-11-19 14:48+0000\n" +"Last-Translator: skoptev \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/vi/admin_dependencies_chk.po b/l10n/vi/admin_dependencies_chk.po deleted file mode 100644 index 9f7f77f611afa85fa1567acea732442496803346..0000000000000000000000000000000000000000 --- a/l10n/vi/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/vi/admin_migrate.po b/l10n/vi/admin_migrate.po deleted file mode 100644 index 58d15a553c4c6366f1fd9d2ce18f7cc617a302a7..0000000000000000000000000000000000000000 --- a/l10n/vi/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/vi/bookmarks.po b/l10n/vi/bookmarks.po deleted file mode 100644 index 38181e5d1faac971ca9661ae594f6ce911c472da..0000000000000000000000000000000000000000 --- a/l10n/vi/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/vi/calendar.po b/l10n/vi/calendar.po deleted file mode 100644 index b08b6e2ae866263d83691858c4c3ee2dda3150c6..0000000000000000000000000000000000000000 --- a/l10n/vi/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -# SÆ¡n Nguyá»…n , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "Không tìm thấy lịch." - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "Không tìm thấy sá»± kiện nào" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "Sai lịch" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "Múi giá» má»›i :" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "Thay đổi múi giá»" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "Yêu cầu không hợp lệ" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "Lịch" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "ddd M/d" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "dddd M/d" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "MMMM yyyy" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "dddd, MMM d, yyyy" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "Ngày sinh nhật" - -#: lib/app.php:122 -msgid "Business" -msgstr "Công việc" - -#: lib/app.php:123 -msgid "Call" -msgstr "Số Ä‘iện thoại" - -#: lib/app.php:124 -msgid "Clients" -msgstr "Máy trạm" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "Ngày lá»…" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "à tưởng" - -#: lib/app.php:128 -msgid "Journey" -msgstr "" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "Lá»… ká»· niệm" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "Há»™i nghị" - -#: lib/app.php:131 -msgid "Other" -msgstr "Khác" - -#: lib/app.php:132 -msgid "Personal" -msgstr "Cá nhân" - -#: lib/app.php:133 -msgid "Projects" -msgstr "Dá»± án" - -#: lib/app.php:134 -msgid "Questions" -msgstr "Câu há»i" - -#: lib/app.php:135 -msgid "Work" -msgstr "Công việc" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "Lịch má»›i" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "Không lặp lại" - -#: lib/object.php:373 -msgid "Daily" -msgstr "Hàng ngày" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "Hàng tuần" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "Má»—i ngày trong tuần" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "Hai tuần má»™t lần" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "Hàng tháng" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "Hàng năm" - -#: lib/object.php:388 -msgid "never" -msgstr "không thay đổi" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "bởi xuất hiện" - -#: lib/object.php:390 -msgid "by date" -msgstr "bởi ngày" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "bởi ngày trong tháng" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "bởi ngày trong tuần" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "Thứ 2" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "Thứ 3" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "Thứ 4" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "Thứ 5" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "Thứ " - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "Thứ 7" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "Chủ nhật" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "sá»± kiện trong tuần của tháng" - -#: lib/object.php:428 -msgid "first" -msgstr "đầu tiên" - -#: lib/object.php:429 -msgid "second" -msgstr "Thứ hai" - -#: lib/object.php:430 -msgid "third" -msgstr "Thứ ba" - -#: lib/object.php:431 -msgid "fourth" -msgstr "Thứ tÆ°" - -#: lib/object.php:432 -msgid "fifth" -msgstr "Thứ năm" - -#: lib/object.php:433 -msgid "last" -msgstr "" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "Tháng 1" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "Tháng 2" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "Tháng 3" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "Tháng 4" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "Tháng 5" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "Tháng 6" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "Tháng 7" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "Tháng 8" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "Tháng 9" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "Tháng 10" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "Tháng 11" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "Tháng 12" - -#: lib/object.php:488 -msgid "by events date" -msgstr "Theo ngày tháng sá»± kiện" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "số tuần" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "ngày, tháng" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "Ngày" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "Tất cả các ngày" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "Tiêu Ä‘á»" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "Từ ngày" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "Từ thá»i gian" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "Tá»›i ngày" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "Tá»›i thá»i gian" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "Sá»± kiện này kết thúc trÆ°á»›c khi nó bắt đầu" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "Tuần" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "Tháng" - -#: templates/calendar.php:41 -msgid "List" -msgstr "Danh sách" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "Hôm nay" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "Lịch của bạn" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "Liên kết CalDav " - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "Chia sẻ lịch" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "Không chia sẻ lcihj" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "Chia sẻ lịch" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "Tải vá»" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "Chỉnh sá»­a" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "Xóa" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "Chia sẻ bởi" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "Lịch má»›i" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "sá»­a Lịch" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "Hiển thị tên" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "Kích hoạt" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "Màu lịch" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "LÆ°u" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "Submit" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "Hủy" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "Sá»­a sá»± kiện" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "Chia sẻ" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "Tên sá»± kiện" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "Danh mục" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "Sá»± kiện trong ngày" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "Từ" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "Tá»›i" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "Tùy chá»n nâng cao" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "NÆ¡i" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "NÆ¡i tổ chức sá»± kiện" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "Mô tả" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "Mô tả sá»± kiện" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "Lặp lại" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "Nâng cao" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "Chá»n ngày trong tuần" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "Chá»n ngày" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "và sá»± kiện của ngày trong năm" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "và sá»± kiện của má»™t ngày trong năm" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "Chá»n tháng" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "Chá»n tuần" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "và sá»± kiện của tuần trong năm." - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "Tạo lịch má»›i" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "Tên lịch má»›i" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "Äóng há»™p thoại" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "Tạo má»™t sá»± kiện má»›i" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "Xem má»™t sá»± kiện" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "Không danh sách nào được chá»n" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "của" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "tại" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "Múi giá»" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24h" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12h" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/vi/contacts.po b/l10n/vi/contacts.po deleted file mode 100644 index 924eb994b83cee028889d960dfee18e1e3a4d033..0000000000000000000000000000000000000000 --- a/l10n/vi/contacts.po +++ /dev/null @@ -1,953 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# SÆ¡n Nguyá»…n , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "id không được thiết lập." - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "Không có ID được cung cấp" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "Không tìm thấy sổ địa chỉ." - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "Không tìm thấy danh sách" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "tên phần tá»­ không được thiết lập." - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "Missing ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "Lá»—i Ä‘á»c liên lạc hình ảnh." - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "Các hình ảnh tải không hợp lệ." - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "Tập tin không tồn tại" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "Lá»—i khi tải hình ảnh." - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "Lá»—i tải lên danh sách địa chỉ để lÆ°u trữ." - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "Không có lá»—i, các tập tin tải lên thành công" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "Liên lạc" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "Công việc" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "Nhà" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "Di Ä‘á»™ng" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "Fax" - -#: lib/app.php:207 -msgid "Video" -msgstr "Video" - -#: lib/app.php:208 -msgid "Pager" -msgstr "số trang" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "Ngày sinh nhật" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "Danh sách" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "Thêm liên lạc" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "Sổ địa chỉ" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "Tổ chức" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "Xóa" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "Äiện thoại" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "Email" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "Äịa chỉ" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "Xóa liên lạc" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "Hòm thÆ° bÆ°u Ä‘iện" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "Thành phố" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "Vùng/miá»n" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "Mã bÆ°u Ä‘iện" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "Quốc gia" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "Sổ địa chỉ" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "Tải vá»" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "Sá»­a" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "LÆ°u" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "Hủy" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index a5861cdf0f78a5011c6369d9e67a891ae9747079..6c220328a1863fb6c89317c0ee4e50abf69694d6 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/core.po @@ -3,14 +3,18 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# , 2012. +# , 2012. # Son Nguyen , 2012. +# SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 05:31+0000\n" +"Last-Translator: mattheu_9x \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,208 +22,241 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "Tên ứng dụng không tồn tại" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "Kiểu hạng mục không được cung cấp." -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "Không có danh mục được thêm?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "Danh mục này đã được tạo :" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "Loại đối tượng không được cung cấp." + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID không được cung cấp." + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "Lá»—i thêm %s vào mục yêu thích." + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "Không có thể loại nào được chá»n để xóa." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "Lá»—i xóa %s từ mục yêu thích." + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "Cài đặt" -#: js/js.js:645 -msgid "January" -msgstr "Tháng 1" +#: js/js.js:704 +msgid "seconds ago" +msgstr "vài giây trÆ°á»›c" -#: js/js.js:645 -msgid "February" -msgstr "Tháng 2" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 phút trÆ°á»›c" -#: js/js.js:645 -msgid "March" -msgstr "Tháng 3" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} phút trÆ°á»›c" -#: js/js.js:645 -msgid "April" -msgstr "Tháng 4" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 giá» trÆ°á»›c" -#: js/js.js:645 -msgid "May" -msgstr "Tháng 5" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} giá» trÆ°á»›c" -#: js/js.js:645 -msgid "June" -msgstr "Tháng 6" +#: js/js.js:709 +msgid "today" +msgstr "hôm nay" -#: js/js.js:646 -msgid "July" -msgstr "Tháng 7" +#: js/js.js:710 +msgid "yesterday" +msgstr "hôm qua" -#: js/js.js:646 -msgid "August" -msgstr "Tháng 8" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} ngày trÆ°á»›c" -#: js/js.js:646 -msgid "September" -msgstr "Tháng 9" +#: js/js.js:712 +msgid "last month" +msgstr "tháng trÆ°á»›c" -#: js/js.js:646 -msgid "October" -msgstr "Tháng 10" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} tháng trÆ°á»›c" -#: js/js.js:646 -msgid "November" -msgstr "Tháng 11" +#: js/js.js:714 +msgid "months ago" +msgstr "tháng trÆ°á»›c" -#: js/js.js:646 -msgid "December" -msgstr "Tháng 12" +#: js/js.js:715 +msgid "last year" +msgstr "năm trÆ°á»›c" + +#: js/js.js:716 +msgid "years ago" +msgstr "năm trÆ°á»›c" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "Chá»n" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "Hủy" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" -msgstr "No" +msgstr "Không" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" -msgstr "Yes" +msgstr "Có" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" -msgstr "Ok" +msgstr "Äồng ý" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "Không có thể loại nào được chá»n để xóa." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "Loại đối tượng không được chỉ định." -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "Lá»—i" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "Tên ứng dụng không được chỉ định." + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "Tập tin cần thiết {file} không được cài đặt!" + +#: js/share.js:124 msgid "Error while sharing" -msgstr "" +msgstr "Lá»—i trong quá trình chia sẻ" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" -msgstr "" +msgstr "Lá»—i trong quá trình gỡ chia sẻ" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" -msgstr "" +msgstr "Lá»—i trong quá trình phân quyá»n" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "Äã được chia sẽ vá»›i bạn và nhóm {group} bởi {owner}" -#: js/share.js:130 -msgid "by" -msgstr "" - -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "Äã được chia sẽ bởi {owner}" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "Chia sẻ vá»›i" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "Chia sẻ vá»›i liên kết" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "Mật khẩu bảo vệ" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "Mật khẩu" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "Äặt ngày kết thúc" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "Ngày kết thúc" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "Chia sẻ thông qua email" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" -msgstr "" +msgstr "Không tìm thấy ngÆ°á»i nào" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" +msgstr "Chia sẻ lại không được cho phép" #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "Äã được chia sẽ trong {item} vá»›i {user}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "Gỡ bá» chia sẻ" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "có thể chỉnh sá»­a" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "quản lý truy cập" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "tạo" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "cập nhật" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "xóa" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "chia sẻ" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" -msgstr "" +msgstr "Mật khẩu bảo vệ" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" -msgstr "" +msgstr "Lá»—i không thiết lập ngày kết thúc" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" -msgstr "" +msgstr "Lá»—i cấu hình ngày kết thúc" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "Khôi phục mật khẩu Owncloud " @@ -232,19 +269,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "Vui lòng kiểm tra Email để khôi phục lại mật khẩu." #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "Yêu cầu" +msgid "Reset email send." +msgstr "Thiết lập lại email gởi." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "Bạn đã nhập sai mật khẩu hay tên ngÆ°á»i dùng !" +msgid "Request failed!" +msgstr "Yêu cầu của bạn không thành công !" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "Tên ngÆ°á»i dùng" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "Yêu cầu thiết lập lại " @@ -286,7 +323,7 @@ msgstr "Giúp đỡ" #: templates/403.php:12 msgid "Access forbidden" -msgstr "Truy cập bị cấm " +msgstr "Truy cập bị cấm" #: templates/404.php:12 msgid "Cloud not found" @@ -296,72 +333,187 @@ msgstr "Không tìm thấy Clound" msgid "Edit categories" msgstr "Sá»­a thể loại" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "Thêm" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "Cảnh bảo bảo mật" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "Không an toàn ! chức năng random number generator đã có sẵn ,vui lòng bật PHP OpenSSL extension." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "Nếu không có random number generator , Hacker có thể thiết lập lại mật khẩu và chiếm tài khoản của bạn." + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "ThÆ° mục dữ liệu và những tập tin của bạn có thể dá»… dàng bị truy cập từ mạng. Tập tin .htaccess do ownCloud cung cấp không hoạt Ä‘á»™ng. Chúng tôi Ä‘á» nghị bạn nên cấu hình lại máy chủ web để thÆ° mục dữ liệu không còn bị truy cập hoặc bạn nên di chuyển thÆ° mục dữ liệu ra bên ngoài thÆ° mục gốc của máy chủ." + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "Tạo má»™t tài khoản quản trị" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "Nâng cao" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "ThÆ° mục dữ liệu" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" -msgstr "Cấu hình CÆ¡ Sở Dữ Liệu" +msgstr "Cấu hình cÆ¡ sở dữ liệu" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "được sá»­ dụng" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "NgÆ°á»i dùng cÆ¡ sở dữ liệu" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "Mật khẩu cÆ¡ sở dữ liệu" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "Tên cÆ¡ sở dữ liệu" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" -msgstr "" +msgstr "CÆ¡ sở dữ liệu tablespace" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "Database host" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "Cài đặt hoàn tất" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "Chủ nhật" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "Thứ 2" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "Thứ 3" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "Thứ 4" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "Thứ 5" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "Thứ " + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "Thứ 7" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "Tháng 1" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "Tháng 2" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "Tháng 3" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "Tháng 4" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "Tháng 5" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "Tháng 6" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "Tháng 7" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "Tháng 8" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "Tháng 9" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "Tháng 10" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "Tháng 11" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "Tháng 12" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "các dịch vụ web dÆ°á»›i sá»± kiểm soát của bạn" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "Äăng xuất" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "Tá»± Ä‘á»™ng đăng nhập đã bị từ chối !" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "Nếu bạn không thay đổi mật khẩu gần đây của bạn, tài khoản của bạn có thể gặp nguy hiểm!" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "Vui lòng thay đổi mật khẩu của bạn để đảm bảo tài khoản của bạn má»™t lần nữa." + +#: templates/login.php:15 msgid "Lost your password?" msgstr "Bạn quên mật khẩu ?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" -msgstr "Nhá»›" +msgstr "ghi nhá»›" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "Äăng nhập" @@ -376,3 +528,17 @@ msgstr "Lùi lại" #: templates/part.pagenavi.php:20 msgid "next" msgstr "Kế tiếp" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "Cảnh báo bảo mật !" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "Vui lòng xác nhận mật khẩu của bạn.
            Vì lý do bảo mật thỉnh thoảng bạn có thể được yêu cầu nhập lại mật khẩu." + +#: templates/verify.php:16 +msgid "Verify" +msgstr "Kiểm tra" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index 70e04f13f74bbf713a898279a058b3b5bc0a3fb6..2427e237dee778fc17f2e3c1178321ebf38ff929 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/files.po @@ -3,15 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# , 2012. # , 2012. # SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +26,166 @@ msgid "There is no error, the file uploaded with success" msgstr "Không có lá»—i, các tập tin đã được tải lên thành công" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "Những tập tin được tải lên vượt quá upload_max_filesize được chỉ định trong php.ini" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "Kích thÆ°á»›c những tập tin tải lên vượt quá MAX_FILE_SIZE đã được quy định" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "Tập tin tải lên má»›i chỉ tải lên được má»™t phần" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "Không có tập tin nào được tải lên" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "Không tìm thấy thÆ° mục tạm" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" -msgstr "Không thể ghi vào Ä‘Ä©a cứng" +msgstr "Không thể ghi " -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "Tập tin" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "Không chia sẽ" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "Xóa" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "Sá»­a tên" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "đã tồn tại" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} đã tồn tại" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "thay thế" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "tên gợi ý" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "hủy" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "đã được thay thế" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "đã thay thế {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "lùi lại" -#: js/filelist.js:241 -msgid "with" -msgstr "vá»›i" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "đã thay thế {new_name} bằng {old_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "hủy chia sẽ {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "đã xóa" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "đã xóa {files}" -#: js/files.js:179 +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' thì không được phép dùng." + +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." -msgstr "Tạo tập tinh ZIP, Ä‘iá»u này có thể mất má»™t ít thá»i gian" +msgstr "Tạo tập tin ZIP, Ä‘iá»u này có thể làm mất má»™t chút thá»i gian" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "Không thể tải lên tập tin này do nó là má»™t thÆ° mục hoặc kích thÆ°á»›c tập tin bằng 0 byte" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "Tải lên lá»—i" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "Äóng" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Chá»" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 tệp tin Ä‘ang được tải lên" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} tập tin Ä‘ang tải lên" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "Hủy tải lên" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Tập tin tải lên Ä‘ang được xá»­ lý. Nếu bạn rá»i khá»i trang bây giá» sẽ hủy quá trình này." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "Tên không hợp lệ ,không được phép dùng '/'" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "Tên thÆ° mục không hợp lệ. Sá»­ dụng \"Chia sẻ\" được dành riêng bởi Owncloud" -#: js/files.js:667 -msgid "files scanned" -msgstr "" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} tập tin đã được quét" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "lá»—i trong khi quét" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "Tên" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "Kích cỡ" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "Thay đổi" -#: js/files.js:777 -msgid "folder" -msgstr "folder" - -#: js/files.js:779 -msgid "folders" -msgstr "folders" - -#: js/files.js:787 -msgid "file" -msgstr "file" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 thÆ° mục" -#: js/files.js:789 -msgid "files" -msgstr "files" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} thÆ° mục" -#: js/files.js:833 -msgid "seconds ago" -msgstr "" - -#: js/files.js:834 -msgid "minute ago" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 tập tin" -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} tập tin" #: templates/admin.php:5 msgid "File handling" @@ -222,27 +195,27 @@ msgstr "Xá»­ lý tập tin" msgid "Maximum upload size" msgstr "Kích thÆ°á»›c tối Ä‘a " -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " -msgstr "" +msgstr "tối Ä‘a cho phép:" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "Cần thiết cho tải nhiá»u tập tin và thÆ° mục." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "Cho phép ZIP-download" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 là không giá»›i hạn" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "Kích thÆ°á»›c tối Ä‘a cho các tập tin ZIP" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "LÆ°u" @@ -250,52 +223,48 @@ msgstr "LÆ°u" msgid "New" msgstr "Má»›i" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "Tập tin văn bản" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" -msgstr "Folder" +msgstr "ThÆ° mục" -#: templates/index.php:11 -msgid "From url" -msgstr "Từ url" +#: templates/index.php:14 +msgid "From link" +msgstr "Từ liên kết" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "Tải lên" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "Hủy upload" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "Không có gì ở đây .Hãy tải lên má»™t cái gì đó !" -#: templates/index.php:50 -msgid "Share" -msgstr "Chia sẻ" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "Tải xuống" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" -msgstr "File tải lên quá lá»›n" +msgstr "Tập tin tải lên quá lá»›n" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "Các tập tin bạn Ä‘ang cố gắng tải lên vượt quá kích thÆ°á»›c tối Ä‘a cho phép trên máy chủ này." +msgstr "Các tập tin bạn Ä‘ang tải lên vượt quá kích thÆ°á»›c tối Ä‘a cho phép trên máy chủ ." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "Tập tin Ä‘ang được quét ,vui lòng chá»." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "Hiện tại Ä‘ang quét" diff --git a/l10n/vi/files_encryption.po b/l10n/vi/files_encryption.po index 9c55fc8c75f0b1a095f7e37b842db7e3f94e8325..0ac3a53087c5dcf55afeaf9eceeb5456b0cd5e15 100644 --- a/l10n/vi/files_encryption.po +++ b/l10n/vi/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-08 02:01+0200\n" -"PO-Revision-Date: 2012-09-07 14:56+0000\n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 05:48+0000\n" "Last-Translator: SÆ¡n Nguyá»…n \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -28,7 +28,7 @@ msgstr "Loại trừ các loại tập tin sau đây từ mã hóa" #: templates/settings.php:5 msgid "None" -msgstr "none" +msgstr "Không có gì hết" #: templates/settings.php:10 msgid "Enable Encryption" diff --git a/l10n/vi/files_external.po b/l10n/vi/files_external.po index fc128d8cd3f60624e1afd5182cd0e07de499f781..6a2d40fe7d1931df6f716c0336cf203ef8880c74 100644 --- a/l10n/vi/files_external.po +++ b/l10n/vi/files_external.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 11:30+0000\n" +"Last-Translator: SÆ¡n Nguyá»…n \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +21,27 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "Äã cấp quyá»n truy cập" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "Lá»—i cấu hình lÆ°u trữ Dropbox " #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "Cấp quyá»n truy cập" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "Äiá»n vào tất cả các trÆ°á»ng bắt buá»™c" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "Xin vui lòng cung cấp má»™t ứng dụng Dropbox hợp lệ và mã bí mật." #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "Lá»—i cấu hình lÆ°u trữ Google Drive" #: templates/settings.php:3 msgid "External Storage" diff --git a/l10n/vi/files_pdfviewer.po b/l10n/vi/files_pdfviewer.po deleted file mode 100644 index f8265b4455022090eab54cfae07156a3ddf9cc79..0000000000000000000000000000000000000000 --- a/l10n/vi/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/vi/files_sharing.po b/l10n/vi/files_sharing.po index c30ea0ef9b0f69ba2e0001318cd61b841a4b19f9..792d5fe671bf98c556ffa6daec0a230de5975eb7 100644 --- a/l10n/vi/files_sharing.po +++ b/l10n/vi/files_sharing.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 04:39+0000\n" +"Last-Translator: SÆ¡n Nguyá»…n \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,12 +30,12 @@ msgstr "Xác nhận" #: templates/public.php:9 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s đã chia sẻ thÆ° mục %s vá»›i bạn" #: templates/public.php:11 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s đã chia sẻ tập tin %s vá»›i bạn" #: templates/public.php:14 templates/public.php:30 msgid "Download" @@ -44,6 +45,6 @@ msgstr "Tải vá»" msgid "No preview available for" msgstr "Không có xem trÆ°á»›c cho" -#: templates/public.php:37 +#: templates/public.php:35 msgid "web services under your control" msgstr "dịch vụ web dÆ°á»›i sá»± kiểm soát của bạn" diff --git a/l10n/vi/files_texteditor.po b/l10n/vi/files_texteditor.po deleted file mode 100644 index 40a7005281ceee6b7b6293be992d954c2ccddcd9..0000000000000000000000000000000000000000 --- a/l10n/vi/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/vi/files_versions.po b/l10n/vi/files_versions.po index d6a9e9ee7aaa607d08b89d1062a15f5157cb2972..c06b31deb15a61c35ccb43808dd15a7b1d24d4f1 100644 --- a/l10n/vi/files_versions.po +++ b/l10n/vi/files_versions.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 04:32+0000\n" +"Last-Translator: SÆ¡n Nguyá»…n \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,7 +25,7 @@ msgstr "Hết hạn tất cả các phiên bản" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "Lịch sá»­" #: templates/settings-personal.php:4 msgid "Versions" @@ -32,12 +33,12 @@ msgstr "Phiên bản" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" -msgstr "Äiá»u này sẽ xóa tất cả các phiên bản sao lÆ°u hiện có " +msgstr "Khi bạn thá»±c hiện thao tác này sẽ xóa tất cả các phiên bản sao lÆ°u hiện có " #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "Phiên bản tập tin" #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "Bật " diff --git a/l10n/vi/gallery.po b/l10n/vi/gallery.po deleted file mode 100644 index 741f026c53d191ee144af6084bf40e0bffb40448..0000000000000000000000000000000000000000 --- a/l10n/vi/gallery.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Son Nguyen , 2012. -# SÆ¡n Nguyá»…n , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2012-07-25 19:30+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "Hình ảnh" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "Chia sẻ gallery" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "Lá»—i :" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "Lá»—i ná»™i bá»™" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "Trở lại" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "Xóa xác nhận" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "Bạn muốn xóa album này " - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "Äổi tên album" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "Tên album má»›i" diff --git a/l10n/vi/impress.po b/l10n/vi/impress.po deleted file mode 100644 index af17dc75c44eba32c6b50e5a4586e04bb67bb75a..0000000000000000000000000000000000000000 --- a/l10n/vi/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/vi/lib.po b/l10n/vi/lib.po index 23d24277711dd319d427d432fffa9ebf5002e827..915964d52ff2e3c390c62b6cfaf5bb6519d356c9 100644 --- a/l10n/vi/lib.po +++ b/l10n/vi/lib.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# , 2012. # SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-08 02:02+0200\n" -"PO-Revision-Date: 2012-09-07 14:09+0000\n" -"Last-Translator: SÆ¡n Nguyá»…n \n" +"POT-Creation-Date: 2012-11-21 00:01+0100\n" +"PO-Revision-Date: 2012-11-20 01:33+0000\n" +"Last-Translator: mattheu_9x \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +44,19 @@ msgstr "Ứng dụng" msgid "Admin" msgstr "Quản trị" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "Tải vá» ZIP đã bị tắt." -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "Tập tin cần phải được tải vá» từng ngÆ°á»i má»™t." -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "Trở lại tập tin" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "Tập tin được chá»n quá lá»›n để tạo tập tin ZIP." @@ -62,7 +64,7 @@ msgstr "Tập tin được chá»n quá lá»›n để tạo tập tin ZIP." msgid "Application is not enabled" msgstr "Ứng dụng không được BẬT" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "Lá»—i xác thá»±c" @@ -70,57 +72,84 @@ msgstr "Lá»—i xác thá»±c" msgid "Token expired. Please reload page." msgstr "Mã Token đã hết hạn. Hãy tải lại trang." -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "Các tập tin" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "Văn bản" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "Hình ảnh" + +#: template.php:103 msgid "seconds ago" msgstr "1 giây trÆ°á»›c" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 phút trÆ°á»›c" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d phút trÆ°á»›c" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1 giá» trÆ°á»›c" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%d giá» trÆ°á»›c" + +#: template.php:108 msgid "today" msgstr "hôm nay" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "hôm qua" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d ngày trÆ°á»›c" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "tháng trÆ°á»›c" -#: template.php:96 -msgid "months ago" -msgstr "tháng trÆ°á»›c" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d tháng trÆ°á»›c" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "năm trÆ°á»›c" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "năm trÆ°á»›c" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s có sẵn. xem thêm ở đây" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "đến ngày" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "đã TÄ‚T chức năng cập nhật " + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "không thể tìm thấy mục \"%s\"" diff --git a/l10n/vi/media.po b/l10n/vi/media.po deleted file mode 100644 index 9c4613fa2bc7d0dfae9f8a0c8cb05d6b1d1a8a5a..0000000000000000000000000000000000000000 --- a/l10n/vi/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# SÆ¡n Nguyá»…n , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-26 08:03+0200\n" -"PO-Revision-Date: 2012-07-23 06:41+0000\n" -"Last-Translator: SÆ¡n Nguyá»…n \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "Âm nhạc" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "Thêm album vào playlist" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "Play" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "Tạm dừng" - -#: templates/music.php:5 -msgid "Previous" -msgstr "Trang trÆ°á»›c" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "Tiếp theo" - -#: templates/music.php:7 -msgid "Mute" -msgstr "Tắt" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "Bật" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "Quét lại bá»™ sÆ°u tập" - -#: templates/music.php:37 -msgid "Artist" -msgstr "Nghệ sỹ" - -#: templates/music.php:38 -msgid "Album" -msgstr "Album" - -#: templates/music.php:39 -msgid "Title" -msgstr "Tiêu Ä‘á»" diff --git a/l10n/vi/settings.po b/l10n/vi/settings.po index 5cac96c5e92493bad136b1ce26bb441df17dc719..63bd843d709536f0eb90e17adc2e371a9d7214d8 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/settings.po @@ -3,6 +3,8 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. +# , 2012. # , 2012. # Son Nguyen , 2012. # SÆ¡n Nguyá»…n , 2012. @@ -11,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: mattheu_9x \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,175 +23,91 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "Không thể tải danh sách ứng dụng từ App Store" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "Lá»—i xác thá»±c" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "Nhóm đã tồn tại" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "Không thể thêm nhóm" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "không thể kích hoạt ứng dụng." -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "LÆ°u email" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "Email không hợp lệ" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "Äổi OpenID" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "Yêu cầu không hợp lệ" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "Không thể xóa nhóm" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "Lá»—i xác thá»±c" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "Không thể xóa ngÆ°á»i dùng" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "Ngôn ngữ đã được thay đổi" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "Quản trị viên không thể loại bá» chính há» khá»i nhóm quản lý" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "Không thể thêm ngÆ°á»i dùng vào nhóm %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Không thể xóa ngÆ°á»i dùng từ nhóm %s" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" -msgstr "Vô hiệu" +msgstr "Tắt" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" -msgstr "Cho phép" +msgstr "Bật" #: js/personal.js:69 msgid "Saving..." msgstr "Äang tiến hành lÆ°u ..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__Ngôn ngữ___" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "Cảnh bảo bảo mật" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "ThÆ° mục dữ liệu và những tập tin của bạn có thể dá»… dàng bị truy cập từ internet. Tập tin .htaccess của ownCloud cung cấp không hoạt Ä‘á»™ng. Chúng tôi Ä‘á» nghị bạn nên cấu hình lại máy chủ webserver của bạn để thÆ° mục dữ liệu không còn bị truy cập hoặc bạn di chuyển thÆ° mục dữ liệu ra bên ngoài thÆ° mục gốc của máy chủ." - -#: templates/admin.php:31 -msgid "Cron" -msgstr "Cron" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "Bật chia sẻ API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "Cho phép các ứng dụng sá»­ dụng chia sẻ API" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "Cho phép liên kết" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "Cho phép ngÆ°á»i dùng chia sẻ công khai các mục bằng các liên kết" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "Cho phép chia sẻ lại" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "Cho phép ngÆ°á»i dùng chia sẻ lại những mục đã được chia sẻ" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "Cho phép ngÆ°á»i dùng chia sẻ vá»›i bất cứ ai" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "Chỉ cho phép ngÆ°á»i dùng chia sẻ vá»›i những ngÆ°á»i dùng trong nhóm của há»" - -#: templates/admin.php:88 -msgid "Log" -msgstr "Log" - -#: templates/admin.php:116 -msgid "More" -msgstr "nhiá»u hÆ¡n" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "Äược phát triển bởi cá»™ng đồng ownCloud, mã nguồn đã được cấp phép theo chuẩn AGPL." - #: templates/apps.php:10 msgid "Add your App" msgstr "Thêm ứng dụng của bạn" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "Nhiá»u ứng dụng hÆ¡n" #: templates/apps.php:27 msgid "Select an App" @@ -197,7 +115,7 @@ msgstr "Chá»n má»™t ứng dụng" #: templates/apps.php:31 msgid "See application page at apps.owncloud.com" -msgstr "Xem ứng dụng tại apps.owncloud.com" +msgstr "Xem nhiá»u ứng dụng hÆ¡n tại apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " @@ -215,22 +133,22 @@ msgstr "Quản lý tập tin lá»›n" msgid "Ask a question" msgstr "Äặt câu há»i" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "Vấn Ä‘á» kết nối đến cÆ¡ sở dữ liệu." -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." -msgstr "Äến bằng thủ công" +msgstr "Äến bằng thủ công." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "trả lá»i" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "Bạn đã sá»­ dụng %s có sẵn %s " #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -242,7 +160,7 @@ msgstr "Tải vá»" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "Mật khẩu của bạn đã được thay đổi." #: templates/personal.php:20 msgid "Unable to change your password" @@ -282,12 +200,22 @@ msgstr "Ngôn ngữ" #: templates/personal.php:44 msgid "Help translate" -msgstr "Dịch " +msgstr "Há»— trợ dịch thuật" #: templates/personal.php:51 msgid "use this address to connect to your ownCloud in your file manager" msgstr "sá»­ dụng địa chỉ này để kết nối vá»›i ownCloud của bạn trong quản lý tập tin " +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "Äược phát triển bởi cá»™ng đồng ownCloud, mã nguồn đã được cấp phép theo chuẩn AGPL." + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "Tên" diff --git a/l10n/vi/tasks.po b/l10n/vi/tasks.po deleted file mode 100644 index d22fa25d8cac6c576bb8d874737f3ab21985b550..0000000000000000000000000000000000000000 --- a/l10n/vi/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/vi/user_ldap.po b/l10n/vi/user_ldap.po index 111219c7206312728bb7b3ec273515c6f84f7d85..7f60127a8f9fac46ab8bec69d4bd2657da12f0c5 100644 --- a/l10n/vi/user_ldap.po +++ b/l10n/vi/user_ldap.po @@ -4,13 +4,14 @@ # # Translators: # , 2012. +# SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-11 02:02+0200\n" -"PO-Revision-Date: 2012-09-10 08:50+0000\n" -"Last-Translator: mattheu_9x \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 14:01+0000\n" +"Last-Translator: SÆ¡n Nguyá»…n \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,26 +26,26 @@ msgstr "Máy chủ" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "Bạn có thể bá» qua các giao thức, ngoại trừ SSL. Sau đó bắt đầu vá»›i ldaps://" #: templates/settings.php:9 msgid "Base DN" -msgstr "" +msgstr "DN cÆ¡ bản" #: templates/settings.php:9 msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" +msgstr "Bạn có thể chỉ định DN cÆ¡ bản cho ngÆ°á»i dùng và các nhóm trong tab Advanced" #: templates/settings.php:10 msgid "User DN" -msgstr "" +msgstr "NgÆ°á»i dùng DN" #: templates/settings.php:10 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "Các DN của ngÆ°á»i sá»­ dụng đã được thá»±c hiện, ví dụ nhÆ° uid =agent , dc = example, dc = com. Äể truy cập nặc danh ,DN và mật khẩu trống." #: templates/settings.php:11 msgid "Password" @@ -52,47 +53,47 @@ msgstr "Mật khẩu" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "Cho phép truy cập nặc danh , DN và mật khẩu trống." #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "Lá»c ngÆ°á»i dùng đăng nhập" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "Xác định các bá»™ lá»c để áp dụng, khi đăng nhập . uid%% thay thế tên ngÆ°á»i dùng trong các lần đăng nhập." #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "use %%uid placeholder, e.g. \"uid=%%uid\"" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "Lá»c danh sách thành viên" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "Xác định các bá»™ lá»c để áp dụng, khi ngÆ°á»i dụng sá»­ dụng." #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "" +msgstr "mà không giữ chá»— nào, ví dụ nhÆ° \"objectClass = person\"." #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "Bá»™ lá»c nhóm" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "Xác định các bá»™ lá»c để áp dụng, khi nhóm sá»­ dụng." #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "" +msgstr "mà không giữ chá»— nào, ví dụ nhÆ° \"objectClass = osixGroup\"." #: templates/settings.php:17 msgid "Port" @@ -100,15 +101,15 @@ msgstr "Cổng" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "Cây ngÆ°á»i dùng cÆ¡ bản" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "Cây nhóm cÆ¡ bản" #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "Nhóm thành viên Cá»™ng đồng" #: templates/settings.php:21 msgid "Use TLS" @@ -116,11 +117,11 @@ msgstr "Sá»­ dụng TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "Kết nối SSL bị lá»—i. " #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "TrÆ°á»ng hợp insensitve LDAP máy chủ (Windows)" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." @@ -130,7 +131,7 @@ msgstr "Tắt xác thá»±c chứng nhận SSL" msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "Nếu kết nối chỉ hoạt Ä‘á»™ng vá»›i tùy chá»n này, vui lòng import LDAP certificate SSL trong máy chủ ownCloud của bạn." #: templates/settings.php:23 msgid "Not recommended, use for testing only." @@ -142,7 +143,7 @@ msgstr "Hiển thị tên ngÆ°á»i sá»­ dụng" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "Các thuá»™c tính LDAP sá»­ dụng để tạo tên ngÆ°á»i dùng ownCloud." #: templates/settings.php:25 msgid "Group Display Name Field" @@ -150,7 +151,7 @@ msgstr "Hiển thị tên nhóm" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "Các thuá»™c tính LDAP sá»­ dụng để tạo các nhóm ownCloud." #: templates/settings.php:27 msgid "in bytes" @@ -158,7 +159,7 @@ msgstr "Theo Byte" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." -msgstr "" +msgstr "trong vài giây. Má»™t sá»± thay đổi bá»™ nhá»› cache." #: templates/settings.php:30 msgid "" diff --git a/l10n/vi/user_migrate.po b/l10n/vi/user_migrate.po deleted file mode 100644 index 1e5615249f75161fde04f58811eb5b38e5212906..0000000000000000000000000000000000000000 --- a/l10n/vi/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/vi/user_openid.po b/l10n/vi/user_openid.po deleted file mode 100644 index 848cdb3cf4b31fa941367d4e6310d4a9bf1a3a4a..0000000000000000000000000000000000000000 --- a/l10n/vi/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/vi/files_odfviewer.po b/l10n/vi/user_webdavauth.po similarity index 60% rename from l10n/vi/files_odfviewer.po rename to l10n/vi/user_webdavauth.po index 21d7de16b00690ae0bf157c6763da6e2b1b0b030..b747056a5caab6318d00fb663ee6a0ce0f63a1fd 100644 --- a/l10n/vi/files_odfviewer.po +++ b/l10n/vi/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# SÆ¡n Nguyá»…n , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-10 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 12:35+0000\n" +"Last-Translator: SÆ¡n Nguyá»…n \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV URL: http://" diff --git a/l10n/zh_CN.GB2312/admin_dependencies_chk.po b/l10n/zh_CN.GB2312/admin_dependencies_chk.po deleted file mode 100644 index b226f02b4cacbb1c61f3e2445161dff327cb075e..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/zh_CN.GB2312/admin_migrate.po b/l10n/zh_CN.GB2312/admin_migrate.po deleted file mode 100644 index f33396b69ec3e97a0e56c372df72b1f4d8dbc5dd..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/zh_CN.GB2312/bookmarks.po b/l10n/zh_CN.GB2312/bookmarks.po deleted file mode 100644 index 7bf81fd460862c23b596fea51d06835770e8f2ea..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/zh_CN.GB2312/calendar.po b/l10n/zh_CN.GB2312/calendar.po deleted file mode 100644 index 5e807e319ff581de43e70db4b8a2b6b4bfd433ac..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/calendar.po +++ /dev/null @@ -1,814 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-12 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 14:53+0000\n" -"Last-Translator: bluehattree \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "错误的日历" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "新时区" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "时区改å˜äº†" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "éžæ³•è¯·æ±‚" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "日历" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "生日" - -#: lib/app.php:122 -msgid "Business" -msgstr "商务" - -#: lib/app.php:123 -msgid "Call" -msgstr "呼å«" - -#: lib/app.php:124 -msgid "Clients" -msgstr "客户端" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "交付者" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "å‡æœŸ" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "çµæ„Ÿ" - -#: lib/app.php:128 -msgid "Journey" -msgstr "æ—…è¡Œ" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "五å年纪念" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "会é¢" - -#: lib/app.php:131 -msgid "Other" -msgstr "其它" - -#: lib/app.php:132 -msgid "Personal" -msgstr "个人的" - -#: lib/app.php:133 -msgid "Projects" -msgstr "项目" - -#: lib/app.php:134 -msgid "Questions" -msgstr "问题" - -#: lib/app.php:135 -msgid "Work" -msgstr "工作" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "新的日历" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "ä¸è¦é‡å¤" - -#: lib/object.php:373 -msgid "Daily" -msgstr "æ¯å¤©" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "æ¯æ˜ŸæœŸ" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "æ¯ä¸ªå‘¨æœ«" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "æ¯ä¸¤å‘¨" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "æ¯ä¸ªæœˆ" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "æ¯å¹´" - -#: lib/object.php:388 -msgid "never" -msgstr "从ä¸" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "æ ¹æ®å‘生时" - -#: lib/object.php:390 -msgid "by date" -msgstr "æ ¹æ®æ—¥æœŸ" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "æ ¹æ®æœˆå¤©" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "æ ¹æ®æ˜ŸæœŸ" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "星期一" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "星期二" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "星期三" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "星期四" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "星期五" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "星期六" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "星期天" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "时间æ¯æœˆå‘生的周数" - -#: lib/object.php:428 -msgid "first" -msgstr "首先" - -#: lib/object.php:429 -msgid "second" -msgstr "其次" - -#: lib/object.php:430 -msgid "third" -msgstr "第三" - -#: lib/object.php:431 -msgid "fourth" -msgstr "第四" - -#: lib/object.php:432 -msgid "fifth" -msgstr "第五" - -#: lib/object.php:433 -msgid "last" -msgstr "最åŽ" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "一月" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "二月" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "三月" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "四月" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "五月" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "六月" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "七月" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "八月" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "ä¹æœˆ" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "å月" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "å一月" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "å二月" - -#: lib/object.php:488 -msgid "by events date" -msgstr "æ ¹æ®æ—¶é—´æ—¥æœŸ" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "æ ¹æ®å¹´æ•°" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "æ ¹æ®å‘¨æ•°" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "æ ¹æ®å¤©å’Œæœˆ" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "日期" - -#: lib/search.php:43 -msgid "Cal." -msgstr "Cal." - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "整天" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "丢失的输入框" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "标题" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "从日期" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "从时间" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "到日期" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "到时间" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "在它开始å‰éœ€è¦ç»“æŸçš„事件" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "å‘生了一个数æ®åº“失败" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "星期" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "月" - -#: templates/calendar.php:41 -msgid "List" -msgstr "列表" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "今天" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav 链接" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "下载" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "编辑" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "删除" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "新的日历" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "编辑日历" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "显示å称" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "活动" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "日历颜色" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "ä¿å­˜" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "æ交" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr " å–消" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "编辑一个事件" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "导出" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "事件的标题" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "分类" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "æ¯å¤©çš„事件" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "从" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "到" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "进阶选项" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "地点" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "事件的地点" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "解释" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "事件æè¿°" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "é‡å¤" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "进阶" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "选择星期" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "选择日" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "选择æ¯å¹´æ—¶é—´å‘生天数" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "选择æ¯ä¸ªæœˆäº‹ä»¶å‘生的天" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "选择月份" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "选择星期" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "æ¯å¹´æ—¶é—´å‘生的星期" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "é—´éš”" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "结æŸ" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "å‘生" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "导入" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "新建一个时间" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "时区" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24å°æ—¶" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12å°æ—¶" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "" diff --git a/l10n/zh_CN.GB2312/contacts.po b/l10n/zh_CN.GB2312/contacts.po deleted file mode 100644 index d4431695aeee87ae0b8a826b3919c4973af4c121..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/contacts.po +++ /dev/null @@ -1,952 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "" - -#: lib/app.php:203 -msgid "Text" -msgstr "" - -#: lib/app.php:204 -msgid "Voice" -msgstr "" - -#: lib/app.php:205 -msgid "Message" -msgstr "" - -#: lib/app.php:206 -msgid "Fax" -msgstr "" - -#: lib/app.php:207 -msgid "Video" -msgstr "" - -#: lib/app.php:208 -msgid "Pager" -msgstr "" - -#: lib/app.php:215 -msgid "Internet" -msgstr "" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "" - -#: lib/search.php:15 -msgid "Contact" -msgstr "" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index 892575be9dd1f54665e9c3eb2c5aa92a6369ffe8..333806c038d85f1303283b976771bc09e60540be 100644 --- a/l10n/zh_CN.GB2312/core.po +++ b/l10n/zh_CN.GB2312/core.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:04+0200\n" -"PO-Revision-Date: 2012-10-11 23:45+0000\n" -"Last-Translator: marguerite su \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,208 +19,241 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "应用程åºå¹¶æ²¡æœ‰è¢«æä¾›." +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "没有分类添加了?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "这个分类已ç»å­˜åœ¨äº†:" -#: js/js.js:229 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "没有选者è¦åˆ é™¤çš„分类." + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 msgid "Settings" msgstr "设置" -#: js/js.js:661 -msgid "January" -msgstr "一月" +#: js/js.js:688 +msgid "seconds ago" +msgstr "秒å‰" -#: js/js.js:661 -msgid "February" -msgstr "二月" +#: js/js.js:689 +msgid "1 minute ago" +msgstr "1 分钟å‰" -#: js/js.js:661 -msgid "March" -msgstr "三月" +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "{minutes} 分钟å‰" -#: js/js.js:661 -msgid "April" -msgstr "四月" +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" -#: js/js.js:661 -msgid "May" -msgstr "五月" +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" -#: js/js.js:661 -msgid "June" -msgstr "六月" +#: js/js.js:693 +msgid "today" +msgstr "今天" -#: js/js.js:662 -msgid "July" -msgstr "七月" +#: js/js.js:694 +msgid "yesterday" +msgstr "昨天" -#: js/js.js:662 -msgid "August" -msgstr "八月" +#: js/js.js:695 +msgid "{days} days ago" +msgstr "{days} 天å‰" -#: js/js.js:662 -msgid "September" -msgstr "ä¹æœˆ" +#: js/js.js:696 +msgid "last month" +msgstr "上个月" -#: js/js.js:662 -msgid "October" -msgstr "å月" +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" -#: js/js.js:662 -msgid "November" -msgstr "å一月" +#: js/js.js:698 +msgid "months ago" +msgstr "月å‰" -#: js/js.js:662 -msgid "December" -msgstr "å二月" +#: js/js.js:699 +msgid "last year" +msgstr "去年" + +#: js/js.js:700 +msgid "years ago" +msgstr "å¹´å‰" -#: js/oc-dialogs.js:123 +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "选择" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "å–消" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "å¦" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "是" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "好的" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "没有选者è¦åˆ é™¤çš„分类." +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:497 -#: js/share.js:509 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 msgid "Error" msgstr "错误" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 msgid "Error while sharing" msgstr "分享出错" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "å–消分享出错" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "å˜æ›´æƒé™å‡ºé”™" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "与您和å°ç»„æˆå‘˜åˆ†äº«" - -#: js/share.js:130 -msgid "by" -msgstr "ç”±" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "ç”± {owner} 与您和 {group} 群组分享" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "与您的分享,由" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "ç”± {owner} 与您分享" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "分享" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "分享链接" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "密ç ä¿æŠ¤" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "密ç " -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "设置失效日期" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "失效日期" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" msgstr "通过电å­é‚®ä»¶åˆ†äº«ï¼š" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "查无此人" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "ä¸å…许é‡å¤åˆ†äº«" -#: js/share.js:250 -msgid "Shared in" -msgstr "分享在" - -#: js/share.js:250 -msgid "with" -msgstr "与" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "å·²ç»ä¸Ž {user} 在 {item} 中分享" + +#: js/share.js:292 msgid "Unshare" msgstr "å–消分享" -#: js/share.js:283 +#: js/share.js:304 msgid "can edit" msgstr "å¯ç¼–辑" -#: js/share.js:285 +#: js/share.js:306 msgid "access control" msgstr "访问控制" -#: js/share.js:288 +#: js/share.js:309 msgid "create" msgstr "创建" -#: js/share.js:291 +#: js/share.js:312 msgid "update" msgstr "æ›´æ–°" -#: js/share.js:294 +#: js/share.js:315 msgid "delete" msgstr "删除" -#: js/share.js:297 +#: js/share.js:318 msgid "share" msgstr "分享" -#: js/share.js:322 js/share.js:484 +#: js/share.js:343 js/share.js:512 js/share.js:514 msgid "Password protected" msgstr "密ç ä¿æŠ¤" -#: js/share.js:497 +#: js/share.js:525 msgid "Error unsetting expiration date" msgstr "å–消设置失效日期出错" -#: js/share.js:509 +#: js/share.js:537 msgid "Error setting expiration date" msgstr "设置失效日期出错" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ç§æœ‰äº‘密ç é‡ç½®" @@ -233,15 +266,15 @@ msgid "You will receive a link to reset your password via Email." msgstr "你将会收到一个é‡ç½®å¯†ç çš„链接" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "请求" +msgid "Reset email send." +msgstr "é‡ç½®é‚®ä»¶å·²å‘é€ã€‚" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "登陆失败!" +msgid "Request failed!" +msgstr "请求失败ï¼" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "用户å" @@ -297,72 +330,187 @@ msgstr "云 没有被找到" msgid "Edit categories" msgstr "编辑分类" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "添加" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "安全警告" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "没有安全éšæœºç ç”Ÿæˆå™¨ï¼Œè¯·å¯ç”¨ PHP OpenSSL 扩展。" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "没有安全éšæœºç ç”Ÿæˆå™¨ï¼Œé»‘客å¯ä»¥é¢„测密ç é‡ç½®ä»¤ç‰Œå¹¶æŽ¥ç®¡ä½ çš„账户。" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "您的数æ®æ–‡ä»¶å¤¹å’Œæ‚¨çš„文件或许能够从互è”网访问。ownCloud æ供的 .htaccesss 文件未其作用。我们强烈建议您é…置网络æœåŠ¡å™¨ä»¥ä½¿æ•°æ®æ–‡ä»¶å¤¹ä¸èƒ½ä»Žäº’è”网访问,或将移动数æ®æ–‡ä»¶å¤¹ç§»å‡ºç½‘络æœåŠ¡å™¨æ–‡æ¡£æ ¹ç›®å½•ã€‚" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "建立一个 管ç†å¸æˆ·" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "进阶" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "æ•°æ®å­˜æ”¾æ–‡ä»¶å¤¹" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "é…置数æ®åº“" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "将会使用" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "æ•°æ®åº“用户" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "æ•°æ®åº“密ç " -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "æ•°æ®åº“用户å" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "æ•°æ®åº“表格空间" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "æ•°æ®åº“主机" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "完æˆå®‰è£…" -#: templates/layout.guest.php:38 +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "星期天" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "星期一" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "星期二" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "星期三" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "星期四" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "星期五" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "星期六" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "一月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "二月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "三月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "四月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "五月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "六月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "七月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "八月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "ä¹æœˆ" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "å月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "å一月" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "å二月" + +#: templates/layout.guest.php:41 msgid "web services under your control" msgstr "你控制下的网络æœåŠ¡" -#: templates/layout.user.php:34 +#: templates/layout.user.php:44 msgid "Log out" msgstr "注销" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "自动登录被拒ç»ï¼" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "如果您最近没有修改您的密ç ï¼Œé‚£æ‚¨çš„å¸å·å¯èƒ½è¢«æ”»å‡»äº†ï¼" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "请修改您的密ç ä»¥ä¿æŠ¤è´¦æˆ·ã€‚" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "忘记密ç ?" -#: templates/login.php:16 +#: templates/login.php:27 msgid "remember" msgstr "备忘" -#: templates/login.php:17 +#: templates/login.php:28 msgid "Log in" msgstr "登陆" @@ -377,3 +525,17 @@ msgstr "åŽé€€" #: templates/part.pagenavi.php:20 msgid "next" msgstr "å‰è¿›" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "安全警告ï¼" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "请确认您的密ç ã€‚
            处于安全原因你å¶å°”也会被è¦æ±‚å†æ¬¡è¾“入您的密ç ã€‚" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "确认" diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index 25c2fb24003f9fba95ec74af513eb92a4a4bfec5..7c74914a97f00668a18fc84f84541f237fe84f58 100644 --- a/l10n/zh_CN.GB2312/files.po +++ b/l10n/zh_CN.GB2312/files.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-12 02:03+0200\n" -"PO-Revision-Date: 2012-10-11 23:48+0000\n" -"Last-Translator: marguerite su \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,195 +24,166 @@ msgid "There is no error, the file uploaded with success" msgstr "没有任何错误,文件上传æˆåŠŸäº†" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "上传的文件超过了php.ini指定的upload_max_filesize" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "上传的文件超过了HTML表å•æŒ‡å®šçš„MAX_FILE_SIZE" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "文件åªæœ‰éƒ¨åˆ†è¢«ä¸Šä¼ " -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "没有上传完æˆçš„文件" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "丢失了一个临时文件夹" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "写ç£ç›˜å¤±è´¥" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "文件" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "å–消共享" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "删除" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "é‡å‘½å" -#: js/filelist.js:192 js/filelist.js:194 -msgid "already exists" -msgstr "å·²ç»å­˜åœ¨äº†" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} 已存在" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "替æ¢" -#: js/filelist.js:192 +#: js/filelist.js:201 msgid "suggest name" msgstr "推èå称" -#: js/filelist.js:192 js/filelist.js:194 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "å–消" -#: js/filelist.js:241 js/filelist.js:243 -msgid "replaced" -msgstr "替æ¢è¿‡äº†" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "å·²æ›¿æ¢ {new_name}" -#: js/filelist.js:241 js/filelist.js:243 js/filelist.js:275 js/filelist.js:277 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "撤销" -#: js/filelist.js:243 -msgid "with" -msgstr "éšç€" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "已用 {old_name} æ›¿æ¢ {new_name}" -#: js/filelist.js:275 -msgid "unshared" -msgstr "å·²å–消共享" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "未分享的 {files}" -#: js/filelist.js:277 -msgid "deleted" -msgstr "删除" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "已删除的 {files}" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "正在生æˆZIP文件,è¿™å¯èƒ½éœ€è¦ç‚¹æ—¶é—´" -#: js/files.js:214 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "ä¸èƒ½ä¸Šä¼ ä½ æŒ‡å®šçš„文件,å¯èƒ½å› ä¸ºå®ƒæ˜¯ä¸ªæ–‡ä»¶å¤¹æˆ–者大å°ä¸º0" -#: js/files.js:214 +#: js/files.js:218 msgid "Upload Error" msgstr "上传错误" -#: js/files.js:242 js/files.js:347 js/files.js:377 +#: js/files.js:235 +msgid "Close" +msgstr "关闭" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "Pending" -#: js/files.js:262 +#: js/files.js:274 msgid "1 file uploading" msgstr "1 个文件正在上传" -#: js/files.js:265 js/files.js:310 js/files.js:325 -msgid "files uploading" -msgstr "个文件正在上传" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} 个文件正在上传" -#: js/files.js:328 js/files.js:361 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "上传å–消了" -#: js/files.js:430 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "文件正在上传。关闭页é¢ä¼šå–消上传。" -#: js/files.js:500 -msgid "Invalid name, '/' is not allowed." -msgstr "éžæ³•æ–‡ä»¶å,\"/\"是ä¸è¢«è®¸å¯çš„" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" -#: js/files.js:681 -msgid "files scanned" -msgstr "文件已扫æ" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} 个文件已扫æ" -#: js/files.js:689 +#: js/files.js:712 msgid "error while scanning" msgstr "扫æ出错" -#: js/files.js:762 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "åå­—" -#: js/files.js:763 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "大å°" -#: js/files.js:764 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "修改日期" -#: js/files.js:791 -msgid "folder" -msgstr "文件夹" - -#: js/files.js:793 -msgid "folders" -msgstr "文件夹" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 个文件夹" -#: js/files.js:801 -msgid "file" -msgstr "文件" - -#: js/files.js:803 -msgid "files" -msgstr "文件" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} 个文件夹" -#: js/files.js:847 -msgid "seconds ago" -msgstr "秒å‰" +#: js/files.js:824 +msgid "1 file" +msgstr "1 个文件" -#: js/files.js:848 -msgid "minute ago" -msgstr "分钟å‰" - -#: js/files.js:849 -msgid "minutes ago" -msgstr "分钟å‰" - -#: js/files.js:852 -msgid "today" -msgstr "今天" - -#: js/files.js:853 -msgid "yesterday" -msgstr "昨天" - -#: js/files.js:854 -msgid "days ago" -msgstr "天å‰" - -#: js/files.js:855 -msgid "last month" -msgstr "上个月" - -#: js/files.js:857 -msgid "months ago" -msgstr "月å‰" - -#: js/files.js:858 -msgid "last year" -msgstr "去年" - -#: js/files.js:859 -msgid "years ago" -msgstr "å¹´å‰" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} 个文件" #: templates/admin.php:5 msgid "File handling" @@ -222,27 +193,27 @@ msgstr "文件处ç†ä¸­" msgid "Maximum upload size" msgstr "最大上传大å°" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "最大å¯èƒ½" -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "需è¦å¤šæ–‡ä»¶å’Œæ–‡ä»¶å¤¹ä¸‹è½½." -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "支æŒZIP下载" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0是无é™çš„" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "最大的ZIP文件输入大å°" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "ä¿å­˜" @@ -250,52 +221,48 @@ msgstr "ä¿å­˜" msgid "New" msgstr "新建" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "文本文档" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "文件夹" -#: templates/index.php:11 -msgid "From url" -msgstr "从URL:" +#: templates/index.php:14 +msgid "From link" +msgstr "æ¥è‡ªé“¾æŽ¥" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "上传" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "å–消上传" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "这里没有东西.上传点什么!" -#: templates/index.php:50 -msgid "Share" -msgstr "分享" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "下载" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "上传的文件太大了" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "你正在试图上传的文件超过了此æœåŠ¡å™¨æ”¯æŒçš„最大的文件大å°." -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "正在扫æ文件,请ç¨å€™." -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "正在扫æ" diff --git a/l10n/zh_CN.GB2312/files_pdfviewer.po b/l10n/zh_CN.GB2312/files_pdfviewer.po deleted file mode 100644 index a8c53c751dd16992636580d15b2aa8b3bf69505d..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/zh_CN.GB2312/files_texteditor.po b/l10n/zh_CN.GB2312/files_texteditor.po deleted file mode 100644 index 2e1dfee3c86b29ab36e446ddca614d00828e790d..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/zh_CN.GB2312/gallery.po b/l10n/zh_CN.GB2312/gallery.po deleted file mode 100644 index 32b2ed7179fb96631670538887ae06a85ba28455..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/gallery.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-01-15 13:48+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "" diff --git a/l10n/zh_CN.GB2312/impress.po b/l10n/zh_CN.GB2312/impress.po deleted file mode 100644 index 64aa634938d4763bb9c918659de0d3af305f5e8c..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/zh_CN.GB2312/lib.po b/l10n/zh_CN.GB2312/lib.po index 4eac71c656e79dabb79d4dcbab03432080daf87c..c32ef2de62caf50029587e8485f2302b95d00fd1 100644 --- a/l10n/zh_CN.GB2312/lib.po +++ b/l10n/zh_CN.GB2312/lib.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-18 02:01+0200\n" -"PO-Revision-Date: 2012-09-17 12:19+0000\n" -"Last-Translator: marguerite su \n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,19 +42,19 @@ msgstr "程åº" msgid "Admin" msgstr "管ç†å‘˜" -#: files.php:280 +#: files.php:332 msgid "ZIP download is turned off." msgstr "ZIP 下载已关闭" -#: files.php:281 +#: files.php:333 msgid "Files need to be downloaded one by one." msgstr "需è¦é€ä¸ªä¸‹è½½æ–‡ä»¶ã€‚" -#: files.php:281 files.php:306 +#: files.php:333 files.php:358 msgid "Back to Files" msgstr "返回到文件" -#: files.php:305 +#: files.php:357 msgid "Selected files too large to generate zip file." msgstr "选择的文件太大而ä¸èƒ½ç”Ÿæˆ zip 文件。" @@ -62,7 +62,7 @@ msgstr "选择的文件太大而ä¸èƒ½ç”Ÿæˆ zip 文件。" msgid "Application is not enabled" msgstr "应用未å¯ç”¨" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "验è¯é”™è¯¯" @@ -70,57 +70,84 @@ msgstr "验è¯é”™è¯¯" msgid "Token expired. Please reload page." msgstr "会è¯è¿‡æœŸã€‚请刷新页é¢ã€‚" -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "文件" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "文本" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "图片" + +#: template.php:103 msgid "seconds ago" msgstr "秒å‰" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1 分钟å‰" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d 分钟å‰" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 msgid "today" msgstr "今天" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "昨天" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d 天å‰" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "上个月" -#: template.php:96 -msgid "months ago" -msgstr "月å‰" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "去年" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "å¹´å‰" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s ä¸å¯ç”¨ã€‚获知 详情" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "最新" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "更新检测已ç¦ç”¨" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/zh_CN.GB2312/media.po b/l10n/zh_CN.GB2312/media.po deleted file mode 100644 index 844e38b16f2f4402ed974b79b5300972be068920..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-12 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 14:06+0000\n" -"Last-Translator: bluehattree \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:45 templates/player.php:8 -msgid "Music" -msgstr "音ä¹" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "添加专辑到播放列表" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "播放" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "æš‚åœ" - -#: templates/music.php:5 -msgid "Previous" -msgstr "å‰é¢çš„" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "下一个" - -#: templates/music.php:7 -msgid "Mute" -msgstr "é™éŸ³" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "å–消é™éŸ³" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "é‡æ–°æ‰«æ收è—" - -#: templates/music.php:37 -msgid "Artist" -msgstr "艺术家" - -#: templates/music.php:38 -msgid "Album" -msgstr "专辑" - -#: templates/music.php:39 -msgid "Title" -msgstr "标题" diff --git a/l10n/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index 292d5760fcdab5735849bc7a72f04e3cde836f78..8dee70c1dde731c8e7df4e2447a764cdda21cddf 100644 --- a/l10n/zh_CN.GB2312/settings.po +++ b/l10n/zh_CN.GB2312/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,70 +19,73 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "ä¸èƒ½ä»ŽApp Store 中加载列表" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "认è¯é”™è¯¯" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "群组已存在" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "未能添加群组" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "未能å¯ç”¨åº”用" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email ä¿å­˜äº†" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "éžæ³•Email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID 改å˜äº†" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "éžæ³•è¯·æ±‚" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "未能删除群组" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "认è¯é”™è¯¯" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "未能删除用户" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "语言改å˜äº†" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "未能添加用户到群组 %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "未能将用户从群组 %s 移除" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "ç¦ç”¨" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "å¯ç”¨" @@ -90,104 +93,17 @@ msgstr "å¯ç”¨" msgid "Saving..." msgstr "ä¿å­˜ä¸­..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "Chinese" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "安全警告" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "您的数æ®æ–‡ä»¶å¤¹å’Œæ‚¨çš„文件å¯èƒ½å¯ä»¥ä»Žäº’è”网访问。ownCloud æ供的 .htaccess 文件未工作。我们强烈建议您é…置您的网络æœåŠ¡å™¨ï¼Œè®©æ•°æ®æ–‡ä»¶å¤¹ä¸èƒ½è®¿é—®ï¼Œæˆ–将数æ®æ–‡ä»¶å¤¹ç§»å‡ºç½‘络æœåŠ¡å™¨æ–‡æ¡£æ ¹ç›®å½•ã€‚" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "定时" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "在æ¯ä¸ªé¡µé¢è½½å…¥æ—¶æ‰§è¡Œä¸€é¡¹ä»»åŠ¡" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php 已作为 webcron æœåŠ¡æ³¨å†Œã€‚owncloud 根用户将通过 http åè®®æ¯åˆ†é’Ÿè°ƒç”¨ä¸€æ¬¡ cron.php。" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "使用系统 cron æœåŠ¡ã€‚通过系统 cronjob æ¯åˆ†é’Ÿè°ƒç”¨ä¸€æ¬¡ owncloud 文件夹下的 cron.php" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "分享" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "å¯ç”¨åˆ†äº« API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "å…许应用使用分享 API" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "å…许链接" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "å…许用户使用链接与公众分享æ¡ç›®" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "å…许é‡å¤åˆ†äº«" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "å…许用户å†æ¬¡åˆ†äº«å·²ç»åˆ†äº«è¿‡çš„æ¡ç›®" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "å…许用户与任何人分享" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "åªå…许用户与群组内用户分享" - -#: templates/admin.php:88 -msgid "Log" -msgstr "日志" - -#: templates/admin.php:116 -msgid "More" -msgstr "更多" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "ç”± ownCloud 社区开å‘,sæºä»£ç  以 AGPL 许å¯åè®®å‘布。" - #: templates/apps.php:10 msgid "Add your App" msgstr "添加你的应用程åº" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "更多应用" #: templates/apps.php:27 msgid "Select an App" @@ -213,22 +129,22 @@ msgstr "管ç†å¤§æ–‡ä»¶" msgid "Ask a question" msgstr "æ一个问题" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "连接到帮助数æ®åº“时的问题" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "收到转到." -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "回答" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "您已使用了 %s,总å¯ç”¨ %s" +msgid "You have used %s of the available %s" +msgstr "" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -286,6 +202,16 @@ msgstr "帮助翻译" msgid "use this address to connect to your ownCloud in your file manager" msgstr "使用这个地å€å’Œä½ çš„文件管ç†å™¨è¿žæŽ¥åˆ°ä½ çš„ownCloud" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "ç”± ownCloud 社区开å‘,sæºä»£ç  以 AGPL 许å¯åè®®å‘布。" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "åå­—" diff --git a/l10n/zh_CN.GB2312/tasks.po b/l10n/zh_CN.GB2312/tasks.po deleted file mode 100644 index 5d43b9b7ec3345ee499332096a78f642b7f0e760..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/zh_CN.GB2312/user_migrate.po b/l10n/zh_CN.GB2312/user_migrate.po deleted file mode 100644 index 06769367e75f4ced0d58784cec25400636b60e82..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/zh_CN.GB2312/user_openid.po b/l10n/zh_CN.GB2312/user_openid.po deleted file mode 100644 index 1937fffe2a77c6396da978d6c86b4e0b3b2ac890..0000000000000000000000000000000000000000 --- a/l10n/zh_CN.GB2312/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/zh_CN.GB2312/files_odfviewer.po b/l10n/zh_CN.GB2312/user_webdavauth.po similarity index 75% rename from l10n/zh_CN.GB2312/files_odfviewer.po rename to l10n/zh_CN.GB2312/user_webdavauth.po index c46ade9153f17edc27bcde0d90e0125bb80fc1d6..43a080af885bc2574007a9a74d11dfbdcb21058f 100644 --- a/l10n/zh_CN.GB2312/files_odfviewer.po +++ b/l10n/zh_CN.GB2312/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN.GB2312\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/l10n/zh_CN/admin_dependencies_chk.po b/l10n/zh_CN/admin_dependencies_chk.po deleted file mode 100644 index 6200d7451b8795c12cf2e73cf37191445a6ebbe7..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/zh_CN/admin_migrate.po b/l10n/zh_CN/admin_migrate.po deleted file mode 100644 index a25182363fb14e9527f7904548066cdd5b242926..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/zh_CN/bookmarks.po b/l10n/zh_CN/bookmarks.po deleted file mode 100644 index 65c4c5efc1dabbe274c82aee8e1b7a7f80128fb2..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/bookmarks.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-25 02:04+0200\n" -"PO-Revision-Date: 2012-08-24 01:10+0000\n" -"Last-Translator: hanfeng \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "书签" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "未命å" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "拖曳此处到您的æµè§ˆå™¨ä¹¦ç­¾å¤„,点击å¯ä»¥å°†ç½‘页快速添加到书签中。" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "ç¨åŽé˜…读" - -#: templates/list.php:13 -msgid "Address" -msgstr "地å€" - -#: templates/list.php:14 -msgid "Title" -msgstr "标题" - -#: templates/list.php:15 -msgid "Tags" -msgstr "标签" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "ä¿å­˜ä¹¦ç­¾" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "您暂无书签" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "书签应用" diff --git a/l10n/zh_CN/calendar.po b/l10n/zh_CN/calendar.po deleted file mode 100644 index b66ae0afc1157aea8adb9482a82c5d11d88899e8..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/calendar.po +++ /dev/null @@ -1,817 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Phoenix Nemo <>, 2012. -# , 2012. -# , 2011, 2012. -# 冰 è“ , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "无法找到日历。" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "无法找到事件。" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "错误的日历" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "新时区:" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "时区已修改" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "éžæ³•è¯·æ±‚" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "日历" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "ddd" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "生日" - -#: lib/app.php:122 -msgid "Business" -msgstr "商务" - -#: lib/app.php:123 -msgid "Call" -msgstr "呼å«" - -#: lib/app.php:124 -msgid "Clients" -msgstr "客户" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "æ´¾é€" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "节日" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "想法" - -#: lib/app.php:128 -msgid "Journey" -msgstr "æ—…è¡Œ" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "周年纪念" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "会议" - -#: lib/app.php:131 -msgid "Other" -msgstr "其他" - -#: lib/app.php:132 -msgid "Personal" -msgstr "个人" - -#: lib/app.php:133 -msgid "Projects" -msgstr "项目" - -#: lib/app.php:134 -msgid "Questions" -msgstr "问题" - -#: lib/app.php:135 -msgid "Work" -msgstr "工作" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "未命å" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "新日历" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "ä¸é‡å¤" - -#: lib/object.php:373 -msgid "Daily" -msgstr "æ¯å¤©" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "æ¯å‘¨" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "æ¯ä¸ªå·¥ä½œæ—¥" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "æ¯ä¸¤å‘¨" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "æ¯æœˆ" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "æ¯å¹´" - -#: lib/object.php:388 -msgid "never" -msgstr "从ä¸" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "按å‘生次数" - -#: lib/object.php:390 -msgid "by date" -msgstr "按日期" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "按月的æŸå¤©" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "按星期的æŸå¤©" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "星期一" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "星期二" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "星期三" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "星期四" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "星期五" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "星期六" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "星期日" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "事件在æ¯æœˆçš„第几个星期" - -#: lib/object.php:428 -msgid "first" -msgstr "第一" - -#: lib/object.php:429 -msgid "second" -msgstr "第二" - -#: lib/object.php:430 -msgid "third" -msgstr "第三" - -#: lib/object.php:431 -msgid "fourth" -msgstr "第四" - -#: lib/object.php:432 -msgid "fifth" -msgstr "第五" - -#: lib/object.php:433 -msgid "last" -msgstr "最åŽ" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "一月" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "二月" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "三月" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "四月" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "五月" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "六月" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "七月" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "八月" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "ä¹æœˆ" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "å月" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "å一月" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "å二月" - -#: lib/object.php:488 -msgid "by events date" -msgstr "按事件日期" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "按æ¯å¹´çš„æŸå¤©" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "按星期数" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "按天和月份" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "日期" - -#: lib/search.php:43 -msgid "Cal." -msgstr "日历" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "全天" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "缺少字段" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "标题" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "从" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "从" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "至" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "至" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "事件在开始å‰å·²ç»“æŸ" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "æ•°æ®åº“访问失败" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "星期" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "月" - -#: templates/calendar.php:41 -msgid "List" -msgstr "列表" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "今天" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "您的日历" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav 链接" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "共享的日历" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "无共享的日历" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "共享日历" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "下载" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "编辑" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "删除" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr " " - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "新日历" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "编辑日历" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "显示å称" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "激活" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "日历颜色" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "ä¿å­˜" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "æ交" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "å–消" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "编辑事件" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "导出" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "事件信æ¯" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "é‡å¤" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "æ醒" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "å‚加者" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "共享" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "事件标题" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "分类" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "用逗å·åˆ†éš”分类" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "编辑分类" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "全天事件" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "自" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "至" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "高级选项" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "地点" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "事件地点" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "æè¿°" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "事件æè¿°" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "é‡å¤" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "高级" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "选择星期中的æŸå¤©" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "选择æŸå¤©" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "选择æ¯å¹´äº‹ä»¶å‘生的日å­" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "选择æ¯æœˆäº‹ä»¶å‘生的日å­" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "选择月份" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "选择星期" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "选择æ¯å¹´çš„事件å‘生的星期" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "é—´éš”" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "结æŸ" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "次" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "创建新日历" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "导入日历文件" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "新日历å称" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "导入" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "关闭对è¯æ¡†" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "创建新事件" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "查看事件" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "无选中分类" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "在" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "在" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "时区" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24å°æ—¶" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12å°æ—¶" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "用户" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "选中用户" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "å¯ç¼–辑" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "分组" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "选中分组" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "公开" diff --git a/l10n/zh_CN/contacts.po b/l10n/zh_CN/contacts.po deleted file mode 100644 index 78d0fb242ff35d065b7b16b8f24d71856096adfe..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/contacts.po +++ /dev/null @@ -1,955 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Phoenix Nemo <>, 2012. -# , 2012. -# , 2011, 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:02+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "(å–消)激活地å€ç°¿é”™è¯¯ã€‚" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "没有设置 id。" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "无法使用一个空å称更新地å€ç°¿" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "更新地å€ç°¿é”™è¯¯" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "未æä¾› ID" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "设置校验值错误。" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "未选中è¦åˆ é™¤çš„分类。" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "找ä¸åˆ°åœ°å€ç°¿ã€‚" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "找ä¸åˆ°è”系人。" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "添加è”系人时出错。" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "元素å称未设置" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "无法添加空属性。" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "至少需è¦å¡«å†™ä¸€é¡¹åœ°å€ã€‚" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "试图添加é‡å¤å±žæ€§ï¼š " - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "vCard çš„ä¿¡æ¯ä¸æ­£ç¡®ã€‚请é‡æ–°åŠ è½½é¡µé¢ã€‚" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "缺少 ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "无法解æžå¦‚下IDçš„ VCard:“" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "未设置校验值。" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "vCard ä¿¡æ¯ä¸æ­£ç¡®ã€‚请刷新页é¢: " - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "有一些信æ¯æ— æ³•è¢«å¤„ç†ã€‚" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "未æ交è”系人 ID。" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "读å–è”系人照片错误。" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "ä¿å­˜ä¸´æ—¶æ–‡ä»¶é”™è¯¯ã€‚" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "装入的照片ä¸æ­£ç¡®ã€‚" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "缺少è”系人 ID。" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "未æ供照片路径。" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "文件ä¸å­˜åœ¨:" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "加载图片错误。" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "获å–è”系人目标时出错。" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "获å–照片属性时出错。" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "ä¿å­˜è”系人时出错。" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "缩放图åƒæ—¶å‡ºé”™" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "è£åˆ‡å›¾åƒæ—¶å‡ºé”™" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "创建临时图åƒæ—¶å‡ºé”™" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "查找图åƒæ—¶å‡ºé”™: " - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "上传è”系人到存储空间时出错" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "文件上传æˆåŠŸï¼Œæ²¡æœ‰é”™è¯¯å‘生" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "上传的文件长度超出了 php.ini 中 upload_max_filesize çš„é™åˆ¶" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "上传的文件长度超出了 HTML 表å•ä¸­ MAX_FILE_SIZE çš„é™åˆ¶" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "已上传文件åªä¸Šä¼ äº†éƒ¨åˆ†" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "没有文件被上传" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "缺少临时目录" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "无法ä¿å­˜ä¸´æ—¶å›¾åƒ: " - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "无法加载临时图åƒ: " - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "没有文件被上传。未知错误" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "è”系人" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "抱歉,这个功能暂时还没有被实现" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "未实现" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "无法获å–一个åˆæ³•çš„地å€ã€‚" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "错误" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "这个属性必须是éžç©ºçš„" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "无法åºåˆ—化元素" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "'deleteProperty' 调用时没有类型声明。请到 bugs.owncloud.org 汇报错误" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "编辑å称" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "没有选择文件以上传" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "您试图上传的文件超出了该æœåŠ¡å™¨çš„最大文件é™åˆ¶" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "选择类型" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "结果: " - -#: js/loader.js:49 -msgid " imported, " -msgstr " 已导入, " - -#: js/loader.js:49 -msgid " failed." -msgstr " 失败。" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "è¿™ä¸æ˜¯æ‚¨çš„地å€ç°¿ã€‚" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "无法找到è”系人。" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "工作" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "家庭" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "移动电è¯" - -#: lib/app.php:203 -msgid "Text" -msgstr "文本" - -#: lib/app.php:204 -msgid "Voice" -msgstr "语音" - -#: lib/app.php:205 -msgid "Message" -msgstr "消æ¯" - -#: lib/app.php:206 -msgid "Fax" -msgstr "传真" - -#: lib/app.php:207 -msgid "Video" -msgstr "视频" - -#: lib/app.php:208 -msgid "Pager" -msgstr "传呼机" - -#: lib/app.php:215 -msgid "Internet" -msgstr "互è”网" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "生日" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name} 的生日" - -#: lib/search.php:15 -msgid "Contact" -msgstr "è”系人" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "添加è”系人" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "导入" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "地å€ç°¿" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "关闭" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "拖拽图片进行上传" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "删除当å‰ç…§ç‰‡" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "编辑当å‰ç…§ç‰‡" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "上传新照片" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "从 ownCloud 选择照片" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "自定义格å¼ï¼Œç®€ç§°ï¼Œå…¨å,姓在å‰ï¼Œå§“在å‰å¹¶ç”¨é€—å·åˆ†å‰²" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "编辑å称详情" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "组织" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "删除" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "昵称" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "输入昵称" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "yyyy-mm-dd" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "分组" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "用逗å·éš”开分组" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "编辑分组" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "å好" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "请指定åˆæ³•çš„电å­é‚®ä»¶åœ°å€" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "输入电å­é‚®ä»¶åœ°å€" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "å‘é€é‚®ä»¶åˆ°åœ°å€" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "删除电å­é‚®ä»¶åœ°å€" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "输入电è¯å·ç " - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "删除电è¯å·ç " - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "在地图上显示" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "编辑地å€ç»†èŠ‚。" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "添加注释。" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "添加字段" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "电è¯" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "电å­é‚®ä»¶" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "地å€" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "注释" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "下载è”系人" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "删除è”系人" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "临时图åƒæ–‡ä»¶å·²ä»Žç¼“存中删除" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "编辑地å€" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "类型" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "邮箱" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "扩展" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "城市" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "地区" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "邮编" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "国家" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "地å€ç°¿" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "å誉字首" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "å°å§" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "女士" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "先生" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "先生" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "夫人" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "åšå£«" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "å" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "其他å称" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "姓" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "å誉åŽç¼€" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "法律åšå£«" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "医学åšå£«" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "骨科医学åšå£«" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "教育学åšå£«" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "哲学åšå£«" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "先生" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "å°" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "è€" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "导入è”系人文件" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "请选择地å€ç°¿" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "创建新地å€ç°¿" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "新地å€ç°¿å称" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "导入è”系人" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "您的地å€ç°¿ä¸­æ²¡æœ‰è”系人。" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "添加è”系人" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "CardDAV åŒæ­¥åœ°å€" - -#: templates/settings.php:3 -msgid "more info" -msgstr "更多信æ¯" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "é¦–é€‰åœ°å€ (Kontact ç­‰)" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "iOS/OS X" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "下载" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "编辑" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "新建地å€ç°¿" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "ä¿å­˜" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "å–消" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 2c70770418278d39099ae0730b78b9f51c2703f5..3c6eebe26f85c8f96a583f679e9273ec2d817754 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/core.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-11-18 16:16+0000\n" +"Last-Translator: hanfeng \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,208 +21,241 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "没有æ供应用程åºå称。" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "未æ供分类类型。" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "没有å¯æ·»åŠ åˆ†ç±»ï¼Ÿ" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "此分类已存在: " -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "未æ供对象类型。" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "%s ID未æ供。" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "å‘收è—夹中新增%s时出错。" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "没有选择è¦åˆ é™¤çš„类别" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "从收è—夹中移除%s时出错。" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "设置" -#: js/js.js:645 -msgid "January" -msgstr "一月" +#: js/js.js:704 +msgid "seconds ago" +msgstr "秒å‰" -#: js/js.js:645 -msgid "February" -msgstr "二月" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "一分钟å‰" -#: js/js.js:645 -msgid "March" -msgstr "三月" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} 分钟å‰" -#: js/js.js:645 -msgid "April" -msgstr "四月" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1å°æ—¶å‰" -#: js/js.js:645 -msgid "May" -msgstr "五月" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} å°æ—¶å‰" -#: js/js.js:645 -msgid "June" -msgstr "六月" +#: js/js.js:709 +msgid "today" +msgstr "今天" -#: js/js.js:646 -msgid "July" -msgstr "七月" +#: js/js.js:710 +msgid "yesterday" +msgstr "昨天" -#: js/js.js:646 -msgid "August" -msgstr "八月" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} 天å‰" -#: js/js.js:646 -msgid "September" -msgstr "ä¹æœˆ" +#: js/js.js:712 +msgid "last month" +msgstr "上月" -#: js/js.js:646 -msgid "October" -msgstr "å月" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} 月å‰" -#: js/js.js:646 -msgid "November" -msgstr "å一月" +#: js/js.js:714 +msgid "months ago" +msgstr "月å‰" -#: js/js.js:646 -msgid "December" -msgstr "å二月" +#: js/js.js:715 +msgid "last year" +msgstr "去年" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "å¹´å‰" + +#: js/oc-dialogs.js:126 msgid "Choose" msgstr "选择(&C)..." -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "å–消" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "å¦" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "是" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "好" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "没有选择è¦åˆ é™¤çš„类别" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "未指定对象类型。" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 msgid "Error" msgstr "错误" -#: js/share.js:103 +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "未指定Appå称。" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "所需文件{file}未安装ï¼" + +#: js/share.js:124 msgid "Error while sharing" msgstr "共享时出错" -#: js/share.js:114 +#: js/share.js:135 msgid "Error while unsharing" msgstr "å–消共享时出错" -#: js/share.js:121 +#: js/share.js:142 msgid "Error while changing permissions" msgstr "修改æƒé™æ—¶å‡ºé”™" -#: js/share.js:130 -msgid "Shared with you and the group" -msgstr "" - -#: js/share.js:130 -msgid "by" -msgstr "" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "{owner}共享给您åŠ{group}组" -#: js/share.js:132 -msgid "Shared with you by" -msgstr "" +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr " {owner}与您共享" -#: js/share.js:137 +#: js/share.js:158 msgid "Share with" msgstr "共享" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" msgstr "共享链接" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" msgstr "密ç ä¿æŠ¤" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "密ç " -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" msgstr "设置过期日期" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" msgstr "过期日期" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "通过Email共享" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "未找到此人" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "ä¸å…许二次共享" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "在{item} 与 {user}共享。" + +#: js/share.js:292 msgid "Unshare" msgstr "å–消共享" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" msgstr "å¯ä»¥ä¿®æ”¹" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" msgstr "访问控制" -#: js/share.js:284 +#: js/share.js:309 msgid "create" msgstr "创建" -#: js/share.js:287 +#: js/share.js:312 msgid "update" msgstr "æ›´æ–°" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" msgstr "删除" -#: js/share.js:293 +#: js/share.js:318 msgid "share" msgstr "共享" -#: js/share.js:317 js/share.js:476 +#: js/share.js:343 js/share.js:514 js/share.js:516 msgid "Password protected" msgstr "密ç å·²å—ä¿æŠ¤" -#: js/share.js:489 +#: js/share.js:527 msgid "Error unsetting expiration date" msgstr "å–消设置过期日期时出错" -#: js/share.js:501 +#: js/share.js:539 msgid "Error setting expiration date" msgstr "设置过期日期时出错" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "é‡ç½® ownCloud 密ç " @@ -235,19 +268,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "您将会收到包å«å¯ä»¥é‡ç½®å¯†ç é“¾æŽ¥çš„邮件。" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "已请求" +msgid "Reset email send." +msgstr "é‡ç½®é‚®ä»¶å·²å‘é€ã€‚" #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "登录失败ï¼" +msgid "Request failed!" +msgstr "请求失败ï¼" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "用户å" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "请求é‡ç½®" @@ -299,72 +332,187 @@ msgstr "未找到云" msgid "Edit categories" msgstr "编辑分类" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "添加" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "安全警告" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "éšæœºæ•°ç”Ÿæˆå™¨æ— æ•ˆï¼Œè¯·å¯ç”¨PHPçš„OpenSSL扩展" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "没有安全éšæœºç ç”Ÿæˆå™¨ï¼Œæ”»å‡»è€…å¯èƒ½ä¼šçŒœæµ‹å¯†ç é‡ç½®ä¿¡æ¯ä»Žè€Œçªƒå–您的账户" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "您的数æ®æ–‡ä»¶å¤¹å’Œæ–‡ä»¶å¯ç”±äº’è”网访问。OwnCloudæ供的.htaccess文件未生效。我们强烈建议您é…ç½®æœåŠ¡å™¨ï¼Œä»¥ä½¿æ•°æ®æ–‡ä»¶å¤¹ä¸å¯è¢«è®¿é—®ï¼Œæˆ–者将数æ®æ–‡ä»¶å¤¹ç§»åˆ°webæœåŠ¡å™¨æ ¹ç›®å½•ä»¥å¤–。" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "创建管ç†å‘˜è´¦å·" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "高级" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "æ•°æ®ç›®å½•" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "é…置数æ®åº“" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "将被使用" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "æ•°æ®åº“用户" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "æ•°æ®åº“密ç " -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "æ•°æ®åº“å" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "æ•°æ®åº“表空间" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "æ•°æ®åº“主机" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "安装完æˆ" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "星期日" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "星期一" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "星期二" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "星期三" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "星期四" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "星期五" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "星期六" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "一月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "二月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "三月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "四月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "五月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "六月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "七月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "八月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "ä¹æœˆ" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "å月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "å一月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "å二月" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "由您掌控的网络æœåŠ¡" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "注销" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "自动登录被拒ç»ï¼" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "如果您没有最近修改您的密ç ï¼Œæ‚¨çš„å¸æˆ·å¯èƒ½ä¼šå—到影å“ï¼" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "请修改您的密ç ï¼Œä»¥ä¿æŠ¤æ‚¨çš„账户安全。" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "忘记密ç ï¼Ÿ" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "è®°ä½" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "登录" @@ -379,3 +527,17 @@ msgstr "上一页" #: templates/part.pagenavi.php:20 msgid "next" msgstr "下一页" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "安全警告ï¼" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "请验è¯æ‚¨çš„密ç ã€‚
            出于安全考虑,你å¯èƒ½å¶å°”会被è¦æ±‚å†æ¬¡è¾“入密ç ã€‚" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "验è¯" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index f6d9aa43f8efa01e8730f1e5a2e4d9ccde570ee6..0493f0631c195a95cfdb615042bae40113a6b6f0 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/files.po @@ -4,6 +4,7 @@ # # Translators: # , 2012. +# Dianjin Wang <1132321739qq@gmail.com>, 2012. # , 2012. # , 2012. # , 2011, 2012. @@ -11,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 02:02+0200\n" -"PO-Revision-Date: 2012-09-27 14:26+0000\n" -"Last-Translator: waterone \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 00:57+0000\n" +"Last-Translator: hanfeng \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,195 +27,166 @@ msgid "There is no error, the file uploaded with success" msgstr "没有å‘生错误,文件上传æˆåŠŸã€‚" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "上传的文件大å°è¶…过了php.ini 中指定的upload_max_filesize" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "上传文件大å°å·²è¶…过php.ini中upload_max_filesize所规定的值" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "上传的文件超过了在HTML 表å•ä¸­æŒ‡å®šçš„MAX_FILE_SIZE" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "åªä¸Šä¼ äº†æ–‡ä»¶çš„一部分" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "文件没有上传" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "缺少临时目录" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "写入ç£ç›˜å¤±è´¥" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "文件" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" msgstr "å–消分享" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "删除" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" msgstr "é‡å‘½å" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "å·²ç»å­˜åœ¨" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} 已存在" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "替æ¢" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "建议å称" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "å–消" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "å·²ç»æ›¿æ¢" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "æ›¿æ¢ {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" msgstr "撤销" -#: js/filelist.js:241 -msgid "with" -msgstr "éšç€" +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "已将 {old_name}替æ¢æˆ {new_name}" -#: js/filelist.js:273 -msgid "unshared" -msgstr "å·²å–消分享" +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "å–消了共享 {files}" -#: js/filelist.js:275 -msgid "deleted" -msgstr "å·²ç»åˆ é™¤" +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "删除了 {files}" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "无效å称,'\\', '/', '<', '>', ':', '\"', '|', '?' å’Œ '*' ä¸è¢«å…许使用。" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "æ­£åœ¨ç”Ÿæˆ ZIP 文件,å¯èƒ½éœ€è¦ä¸€äº›æ—¶é—´" -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "无法上传文件,因为它是一个目录或者大å°ä¸º 0 字节" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "上传错误" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "关闭" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "æ“作等待中" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" msgstr "1个文件上传中" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "文件上传中" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} 个文件上传中" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "上传已å–消" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "文件正在上传中。现在离开此页会导致上传动作被å–消。" -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "éžæ³•çš„å称,ä¸å…许使用‘/’。" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "无效的文件夹å称。â€Shared“ 是 Owncloud ä¿ç•™å­—符。" -#: js/files.js:668 -msgid "files scanned" -msgstr "已扫æ文件" +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "{count} 个文件已扫æ。" -#: js/files.js:676 +#: js/files.js:712 msgid "error while scanning" msgstr "扫æ时出错" -#: js/files.js:749 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "å称" -#: js/files.js:750 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "大å°" -#: js/files.js:751 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "修改日期" -#: js/files.js:778 -msgid "folder" -msgstr "文件夹" - -#: js/files.js:780 -msgid "folders" -msgstr "文件夹" - -#: js/files.js:788 -msgid "file" -msgstr "文件" - -#: js/files.js:790 -msgid "files" -msgstr "文件" - -#: js/files.js:834 -msgid "seconds ago" -msgstr "几秒å‰" +#: js/files.js:814 +msgid "1 folder" +msgstr "1个文件夹" -#: js/files.js:835 -msgid "minute ago" -msgstr "1分钟å‰" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} 个文件夹" -#: js/files.js:836 -msgid "minutes ago" -msgstr "分钟å‰" +#: js/files.js:824 +msgid "1 file" +msgstr "1 个文件" -#: js/files.js:839 -msgid "today" -msgstr "今天" - -#: js/files.js:840 -msgid "yesterday" -msgstr "昨天" - -#: js/files.js:841 -msgid "days ago" -msgstr "%d 天å‰" - -#: js/files.js:842 -msgid "last month" -msgstr "上月" - -#: js/files.js:844 -msgid "months ago" -msgstr "月å‰" - -#: js/files.js:845 -msgid "last year" -msgstr "上年" - -#: js/files.js:846 -msgid "years ago" -msgstr "几年å‰" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} 个文件" #: templates/admin.php:5 msgid "File handling" @@ -224,27 +196,27 @@ msgstr "文件处ç†" msgid "Maximum upload size" msgstr "最大上传大å°" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " -msgstr "最大å¯èƒ½: " +msgstr "最大å…许: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "多文件和文件夹下载需è¦æ­¤é¡¹ã€‚" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "å¯ç”¨ ZIP 下载" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0 为无é™åˆ¶" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "ZIP 文件的最大输入大å°" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" msgstr "ä¿å­˜" @@ -252,52 +224,48 @@ msgstr "ä¿å­˜" msgid "New" msgstr "新建" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "文本文件" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "文件夹" -#: templates/index.php:11 -msgid "From url" -msgstr "æ¥è‡ªåœ°å€" +#: templates/index.php:14 +msgid "From link" +msgstr "æ¥è‡ªé“¾æŽ¥" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "上传" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "å–消上传" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "这里还什么都没有。上传些东西å§ï¼" -#: templates/index.php:50 -msgid "Share" -msgstr "共享" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "下载" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "上传文件过大" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "您正å°è¯•ä¸Šä¼ çš„文件超过了此æœåŠ¡å™¨å¯ä»¥ä¸Šä¼ çš„最大大å°" +msgstr "您正å°è¯•ä¸Šä¼ çš„文件超过了此æœåŠ¡å™¨å¯ä»¥ä¸Šä¼ çš„最大容é‡é™åˆ¶" -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "文件正在被扫æ,请ç¨å€™ã€‚" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "当å‰æ‰«æ" diff --git a/l10n/zh_CN/files_external.po b/l10n/zh_CN/files_external.po index 949d1adc2f3742022510dceeab0f284a3ead024b..bcf873d1637d9d1a3b9fb9b87c289aac860015e4 100644 --- a/l10n/zh_CN/files_external.po +++ b/l10n/zh_CN/files_external.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-10-25 02:07+0200\n" +"PO-Revision-Date: 2012-10-24 05:14+0000\n" +"Last-Translator: hanfeng \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,88 +20,88 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 msgid "Access granted" -msgstr "" +msgstr "æƒé™å·²æŽˆäºˆã€‚" #: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 msgid "Error configuring Dropbox storage" -msgstr "" +msgstr "é…ç½®Dropbox存储时出错" #: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" -msgstr "" +msgstr "授æƒ" #: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" -msgstr "" +msgstr "完æˆæ‰€æœ‰å¿…填项" #: js/dropbox.js:85 msgid "Please provide a valid Dropbox app key and secret." -msgstr "" +msgstr "请æ供有效的Dropbox应用keyå’Œsecret" #: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" -msgstr "" +msgstr "é…ç½®Google Drive存储时出错" #: templates/settings.php:3 msgid "External Storage" -msgstr "" +msgstr "外部存储" #: templates/settings.php:7 templates/settings.php:19 msgid "Mount point" -msgstr "" +msgstr "挂载点" #: templates/settings.php:8 msgid "Backend" -msgstr "" +msgstr "åŽç«¯" #: templates/settings.php:9 msgid "Configuration" -msgstr "" +msgstr "é…ç½®" #: templates/settings.php:10 msgid "Options" -msgstr "" +msgstr "选项" #: templates/settings.php:11 msgid "Applicable" -msgstr "" +msgstr "适用的" #: templates/settings.php:23 msgid "Add mount point" -msgstr "" +msgstr "增加挂载点" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" -msgstr "" +msgstr "未设置" #: templates/settings.php:63 msgid "All Users" -msgstr "" +msgstr "所有用户" #: templates/settings.php:64 msgid "Groups" -msgstr "" +msgstr "组" #: templates/settings.php:69 msgid "Users" -msgstr "" +msgstr "用户" #: templates/settings.php:77 templates/settings.php:107 msgid "Delete" -msgstr "" +msgstr "删除" #: templates/settings.php:87 msgid "Enable User External Storage" -msgstr "" +msgstr "å¯ç”¨ç”¨æˆ·å¤–部存储" #: templates/settings.php:88 msgid "Allow users to mount their own external storage" -msgstr "" +msgstr "å…许用户挂载自有外部存储" #: templates/settings.php:99 msgid "SSL root certificates" -msgstr "" +msgstr "SSLæ ¹è¯ä¹¦" #: templates/settings.php:113 msgid "Import Root Certificate" -msgstr "" +msgstr "导入根è¯ä¹¦" diff --git a/l10n/zh_CN/files_pdfviewer.po b/l10n/zh_CN/files_pdfviewer.po deleted file mode 100644 index 86e0af951914b3f2271c4b53a6f6df5959300aec..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/zh_CN/files_texteditor.po b/l10n/zh_CN/files_texteditor.po deleted file mode 100644 index dc16629c116c68a17ffd79a61b9c11dcb9075ec9..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/zh_CN/gallery.po b/l10n/zh_CN/gallery.po deleted file mode 100644 index e268331a6e8aed6f7437004f70770509274a5f27..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/gallery.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Bartek , 2012. -# , 2012. -# , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-19 02:02+0200\n" -"PO-Revision-Date: 2012-08-18 05:50+0000\n" -"Last-Translator: leonfeng \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:39 -msgid "Pictures" -msgstr "图片" - -#: js/pictures.js:12 -msgid "Share gallery" -msgstr "分享图库" - -#: js/pictures.js:32 -msgid "Error: " -msgstr "错误:" - -#: js/pictures.js:32 -msgid "Internal error" -msgstr "内部错误" - -#: templates/index.php:27 -msgid "Slideshow" -msgstr "å¹»ç¯ç‰‡" diff --git a/l10n/zh_CN/impress.po b/l10n/zh_CN/impress.po deleted file mode 100644 index 47fab23c2536eb34f6dbd21d111730dc04f97ab9..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/zh_CN/lib.po b/l10n/zh_CN/lib.po index ff9847c8289530a64d1ba617f20c2c2ee688b38e..aebc5a42f35034da0757e2a76b6320609f0b4198 100644 --- a/l10n/zh_CN/lib.po +++ b/l10n/zh_CN/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-07 02:04+0200\n" -"PO-Revision-Date: 2012-09-06 07:33+0000\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-11-18 16:17+0000\n" "Last-Translator: hanfeng \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,43 +19,43 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "帮助" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "个人" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "设置" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "用户" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "应用" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "管ç†" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "ZIP 下载已ç»å…³é—­" -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "需è¦é€ä¸€ä¸‹è½½æ–‡ä»¶" -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "回到文件" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "é€‰æ‹©çš„æ–‡ä»¶å¤ªå¤§ï¼Œæ— æ³•ç”Ÿæˆ zip 文件。" @@ -63,7 +63,7 @@ msgstr "é€‰æ‹©çš„æ–‡ä»¶å¤ªå¤§ï¼Œæ— æ³•ç”Ÿæˆ zip 文件。" msgid "Application is not enabled" msgstr "ä¸éœ€è¦ç¨‹åº" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "认è¯é”™è¯¯" @@ -71,57 +71,84 @@ msgstr "认è¯é”™è¯¯" msgid "Token expired. Please reload page." msgstr "Token 过期,请刷新页é¢ã€‚" -#: template.php:87 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "文件" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "文本" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "图åƒ" + +#: template.php:103 msgid "seconds ago" msgstr "几秒å‰" -#: template.php:88 +#: template.php:104 msgid "1 minute ago" msgstr "1分钟å‰" -#: template.php:89 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d 分钟å‰" -#: template.php:92 +#: template.php:106 +msgid "1 hour ago" +msgstr "1å°æ—¶å‰" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%då°æ—¶å‰" + +#: template.php:108 msgid "today" msgstr "今天" -#: template.php:93 +#: template.php:109 msgid "yesterday" msgstr "昨天" -#: template.php:94 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d 天å‰" -#: template.php:95 +#: template.php:111 msgid "last month" msgstr "上月" -#: template.php:96 -msgid "months ago" -msgstr "几月å‰" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d 月å‰" -#: template.php:97 +#: template.php:113 msgid "last year" msgstr "上年" -#: template.php:98 +#: template.php:114 msgid "years ago" msgstr "几年å‰" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s 已存在. 点此 获å–更多信æ¯" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "已更新。" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "检查更新功能被关闭。" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "无法找到分类 \"%s\"" diff --git a/l10n/zh_CN/media.po b/l10n/zh_CN/media.po deleted file mode 100644 index 1990c3e2be055a1723cb8a5a60d89ec24f59aecb..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# , 2011. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Chinese (China) (http://www.transifex.net/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "音ä¹" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "播放" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "æš‚åœ" - -#: templates/music.php:5 -msgid "Previous" -msgstr "å‰ä¸€é¦–" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "åŽä¸€é¦–" - -#: templates/music.php:7 -msgid "Mute" -msgstr "é™éŸ³" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "å–消é™éŸ³" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "é‡æ–°æ‰«æ收è—" - -#: templates/music.php:37 -msgid "Artist" -msgstr "艺术家" - -#: templates/music.php:38 -msgid "Album" -msgstr "专辑" - -#: templates/music.php:39 -msgid "Title" -msgstr "标题" diff --git a/l10n/zh_CN/settings.po b/l10n/zh_CN/settings.po index 417b3cca4da4ae3218b1c4127c1d3fb852c41e5b..bd122830a294cf5b90a505a3b1176673a875b6e1 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/settings.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-04 00:06+0100\n" +"PO-Revision-Date: 2012-12-03 00:58+0000\n" +"Last-Translator: hanfeng \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,70 +22,73 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "无法从应用商店载入列表" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "认è¯é”™è¯¯" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "已存在该组" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "无法添加组" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " msgstr "无法开å¯App" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "电å­é‚®ä»¶å·²ä¿å­˜" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "无效的电å­é‚®ä»¶" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID 已修改" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "éžæ³•è¯·æ±‚" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "无法删除组" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "认è¯é”™è¯¯" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "无法删除用户" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "语言已修改" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "管ç†å‘˜ä¸èƒ½å°†è‡ªå·±ç§»å‡ºç®¡ç†ç»„。" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "无法把用户添加到组 %s" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "无法从组%s中移除用户" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "ç¦ç”¨" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "å¯ç”¨" @@ -93,104 +96,17 @@ msgstr "å¯ç”¨" msgid "Saving..." msgstr "正在ä¿å­˜" -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "简体中文" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "安全警告" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "您的数æ®æ–‡ä»¶å¤¹å’Œæ–‡ä»¶å¯ç”±äº’è”网访问。OwnCloudæ供的.htaccess文件未生效。我们强烈建议您é…ç½®æœåŠ¡å™¨ï¼Œä»¥ä½¿æ•°æ®æ–‡ä»¶å¤¹ä¸å¯è¢«è®¿é—®ï¼Œæˆ–者将数æ®æ–‡ä»¶å¤¹ç§»åˆ°webæœåŠ¡å™¨æ ¹ç›®å½•ä»¥å¤–。" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "计划任务" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "æ¯æ¬¡é¡µé¢åŠ è½½å®ŒæˆåŽæ‰§è¡Œä»»åŠ¡" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "cron.php已被注册到网络定时任务æœåŠ¡ã€‚通过httpæ¯åˆ†é’Ÿè°ƒç”¨owncloud根目录的cron.php网页。" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "使用系统定时任务æœåŠ¡ã€‚æ¯åˆ†é’Ÿé€šè¿‡ç³»ç»Ÿå®šæ—¶ä»»åŠ¡è°ƒç”¨owncloud文件夹中的cron.php文件" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "分享" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "å¼€å¯å…±äº«API" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "å…许 应用 使用共享API" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "å…许连接" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "å…许用户使用连接å‘公众共享" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "å…许å†æ¬¡å…±äº«" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "å…许用户将共享给他们的项目å†æ¬¡å…±äº«" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "å…许用户å‘任何人共享" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "å…许用户åªå‘åŒç»„用户共享" - -#: templates/admin.php:88 -msgid "Log" -msgstr "日志" - -#: templates/admin.php:116 -msgid "More" -msgstr "更多" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "ç”±ownCloud社区开å‘, æºä»£ç åœ¨AGPL许å¯è¯ä¸‹å‘布。" - #: templates/apps.php:10 msgid "Add your App" msgstr "添加应用" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "更多应用" #: templates/apps.php:27 msgid "Select an App" @@ -216,26 +132,26 @@ msgstr "管ç†å¤§æ–‡ä»¶" msgid "Ask a question" msgstr "æé—®" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." msgstr "连接帮助数æ®åº“错误 " -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "手动访问" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "回答" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "您已使用空间: %s,总空间: %s" +msgid "You have used %s of the available %s" +msgstr "你已使用 %s,有效空间 %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" -msgstr "æ¡Œé¢å’Œç§»åŠ¨è®¾å¤‡åŒæ­¥ç¨‹åº" +msgstr "æ¡Œé¢å’Œç§»åŠ¨è®¾å¤‡åŒæ­¥å®¢æˆ·ç«¯" #: templates/personal.php:13 msgid "Download" @@ -275,7 +191,7 @@ msgstr "您的电å­é‚®ä»¶" #: templates/personal.php:32 msgid "Fill in an email address to enable password recovery" -msgstr "填写电å­é‚®ä»¶åœ°å€ä»¥å¯ç”¨å¯†ç æ¢å¤" +msgstr "填写电å­é‚®ä»¶åœ°å€ä»¥å¯ç”¨å¯†ç æ¢å¤åŠŸèƒ½" #: templates/personal.php:38 templates/personal.php:39 msgid "Language" @@ -289,6 +205,16 @@ msgstr "帮助翻译" msgid "use this address to connect to your ownCloud in your file manager" msgstr "您å¯åœ¨æ–‡ä»¶ç®¡ç†å™¨ä¸­ä½¿ç”¨è¯¥åœ°å€è¿žæŽ¥åˆ°ownCloud" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "ç”±ownCloud社区开å‘, æºä»£ç åœ¨AGPL许å¯è¯ä¸‹å‘布。" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "å称" @@ -315,7 +241,7 @@ msgstr "其它" #: templates/users.php:80 templates/users.php:112 msgid "Group Admin" -msgstr "组管ç†" +msgstr "组管ç†å‘˜" #: templates/users.php:82 msgid "Quota" diff --git a/l10n/zh_CN/tasks.po b/l10n/zh_CN/tasks.po deleted file mode 100644 index 7f27dae57f2c758fd8e555efecbc79e9c485763d..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/zh_CN/user_ldap.po b/l10n/zh_CN/user_ldap.po index e59cc26498e400e032490cc9a8923b6643f1ed6a..00e887720fdf4ec17d3288fc8e0cbf10ffbc36d1 100644 --- a/l10n/zh_CN/user_ldap.po +++ b/l10n/zh_CN/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-20 02:05+0200\n" -"PO-Revision-Date: 2012-09-19 12:44+0000\n" +"POT-Creation-Date: 2012-10-24 02:02+0200\n" +"PO-Revision-Date: 2012-10-23 05:22+0000\n" "Last-Translator: hanfeng \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -25,7 +25,7 @@ msgstr "主机" #: templates/settings.php:8 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" +msgstr "å¯ä»¥å¿½ç•¥å议,但如è¦ä½¿ç”¨SSL,则需以ldaps://开头" #: templates/settings.php:9 msgid "Base DN" @@ -44,7 +44,7 @@ msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." -msgstr "" +msgstr "客户端使用的DN必须与绑定的相åŒï¼Œæ¯”如uid=agent,dc=example,dc=com\n如需匿å访问,将DN和密ç ä¿ç•™ä¸ºç©º" #: templates/settings.php:11 msgid "Password" @@ -52,47 +52,47 @@ msgstr "密ç " #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." -msgstr "" +msgstr "å¯ç”¨åŒ¿å访问,将DN和密ç ä¿ç•™ä¸ºç©º" #: templates/settings.php:12 msgid "User Login Filter" -msgstr "" +msgstr "用户登录过滤" #: templates/settings.php:12 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." -msgstr "" +msgstr "定义当å°è¯•ç™»å½•æ—¶çš„过滤器。 在登录过程中,%%uid将会被用户å替æ¢" #: templates/settings.php:12 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "" +msgstr "使用 %%uid作为å ä½ç¬¦ï¼Œä¾‹å¦‚“uid=%%uidâ€" #: templates/settings.php:13 msgid "User List Filter" -msgstr "" +msgstr "用户列表过滤" #: templates/settings.php:13 msgid "Defines the filter to apply, when retrieving users." -msgstr "" +msgstr "定义拉å–用户时的过滤器" #: templates/settings.php:13 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "" +msgstr "没有任何å ä½ç¬¦,如 \"objectClass=person\"." #: templates/settings.php:14 msgid "Group Filter" -msgstr "" +msgstr "组过滤" #: templates/settings.php:14 msgid "Defines the filter to apply, when retrieving groups." -msgstr "" +msgstr "定义拉å–组信æ¯æ—¶çš„过滤器" #: templates/settings.php:14 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "" +msgstr "无需å ä½ç¬¦ï¼Œä¾‹å¦‚\"objectClass=posixGroup\"" #: templates/settings.php:17 msgid "Port" @@ -100,61 +100,61 @@ msgstr "端å£" #: templates/settings.php:18 msgid "Base User Tree" -msgstr "" +msgstr "基础用户树" #: templates/settings.php:19 msgid "Base Group Tree" -msgstr "" +msgstr "基础组树" #: templates/settings.php:20 msgid "Group-Member association" -msgstr "" +msgstr "组æˆå‘˜å…³è”" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "使用TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." -msgstr "" +msgstr "ä¸è¦åœ¨SSL链接中使用此选项,会导致失败。" #: templates/settings.php:22 msgid "Case insensitve LDAP server (Windows)" -msgstr "" +msgstr "大å°å†™æ•æ„ŸLDAPæœåŠ¡å™¨(Windows)" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "关闭SSLè¯ä¹¦éªŒè¯" #: templates/settings.php:23 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." -msgstr "" +msgstr "如果链接仅在此选项时å¯ç”¨ï¼Œåœ¨æ‚¨çš„ownCloudæœåŠ¡å™¨ä¸­å¯¼å…¥LDAPæœåŠ¡å™¨çš„SSLè¯ä¹¦ã€‚" #: templates/settings.php:23 msgid "Not recommended, use for testing only." -msgstr "" +msgstr "æš‚ä¸æŽ¨è,仅供测试" #: templates/settings.php:24 msgid "User Display Name Field" -msgstr "" +msgstr "用户显示å称字段" #: templates/settings.php:24 msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" +msgstr "用æ¥ç”Ÿæˆç”¨æˆ·çš„ownCloudå称的 LDAP属性" #: templates/settings.php:25 msgid "Group Display Name Field" -msgstr "" +msgstr "组显示å称字段" #: templates/settings.php:25 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" +msgstr "用æ¥ç”Ÿæˆç»„çš„ownCloudå称的LDAP属性" #: templates/settings.php:27 msgid "in bytes" -msgstr "" +msgstr "字节数" #: templates/settings.php:29 msgid "in seconds. A change empties the cache." @@ -164,7 +164,7 @@ msgstr "" msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." -msgstr "" +msgstr "将用户å称留空(默认)。å¦åˆ™æŒ‡å®šä¸€ä¸ªLDAP/AD属性" #: templates/settings.php:32 msgid "Help" diff --git a/l10n/zh_CN/user_migrate.po b/l10n/zh_CN/user_migrate.po deleted file mode 100644 index f422c21ddf4b653034a9998d5c4bffa682ec5165..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/zh_CN/user_openid.po b/l10n/zh_CN/user_openid.po deleted file mode 100644 index a7e4f24cc2172610ff74bca28f0230dcb7a2e5be..0000000000000000000000000000000000000000 --- a/l10n/zh_CN/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/zh_CN/files_odfviewer.po b/l10n/zh_CN/user_webdavauth.po similarity index 62% rename from l10n/zh_CN/files_odfviewer.po rename to l10n/zh_CN/user_webdavauth.po index fc8d8333ac08c9c9652c62d2550fe83c440c2319..cdb6da1b8e1a10a873be18ad308d3cc42970659c 100644 --- a/l10n/zh_CN/files_odfviewer.po +++ b/l10n/zh_CN/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-18 00:01+0100\n" +"PO-Revision-Date: 2012-11-17 11:47+0000\n" +"Last-Translator: hanfeng \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV地å€: http://" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po new file mode 100644 index 0000000000000000000000000000000000000000..cf8c42a0592cfb696f885db8f235de47bad4f68a --- /dev/null +++ b/l10n/zh_HK/core.po @@ -0,0 +1,539 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2011-07-25 16:05+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:37 +msgid "This category already exists: " +msgstr "" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 +msgid "Settings" +msgstr "" + +#: js/js.js:704 +msgid "seconds ago" +msgstr "" + +#: js/js.js:705 +msgid "1 minute ago" +msgstr "" + +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "" + +#: js/js.js:707 +msgid "1 hour ago" +msgstr "" + +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "" + +#: js/js.js:709 +msgid "today" +msgstr "" + +#: js/js.js:710 +msgid "yesterday" +msgstr "" + +#: js/js.js:711 +msgid "{days} days ago" +msgstr "" + +#: js/js.js:712 +msgid "last month" +msgstr "" + +#: js/js.js:713 +msgid "{months} months ago" +msgstr "" + +#: js/js.js:714 +msgid "months ago" +msgstr "" + +#: js/js.js:715 +msgid "last year" +msgstr "" + +#: js/js.js:716 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:527 +#: js/share.js:539 +msgid "Error" +msgstr "" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:158 +msgid "Share with" +msgstr "" + +#: js/share.js:163 +msgid "Share with link" +msgstr "" + +#: js/share.js:164 +msgid "Password protect" +msgstr "" + +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 +msgid "Password" +msgstr "" + +#: js/share.js:173 +msgid "Set expiration date" +msgstr "" + +#: js/share.js:174 +msgid "Expiration date" +msgstr "" + +#: js/share.js:206 +msgid "Share via email:" +msgstr "" + +#: js/share.js:208 +msgid "No people found" +msgstr "" + +#: js/share.js:235 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:292 +msgid "Unshare" +msgstr "" + +#: js/share.js:304 +msgid "can edit" +msgstr "" + +#: js/share.js:306 +msgid "access control" +msgstr "" + +#: js/share.js:309 +msgid "create" +msgstr "" + +#: js/share.js:312 +msgid "update" +msgstr "" + +#: js/share.js:315 +msgid "delete" +msgstr "" + +#: js/share.js:318 +msgid "share" +msgstr "" + +#: js/share.js:343 js/share.js:514 js/share.js:516 +msgid "Password protected" +msgstr "" + +#: js/share.js:527 +msgid "Error unsetting expiration date" +msgstr "" + +#: js/share.js:539 +msgid "Error setting expiration date" +msgstr "" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:50 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:57 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 +msgid "will be used" +msgstr "" + +#: templates/installation.php:105 +msgid "Database user" +msgstr "" + +#: templates/installation.php:109 +msgid "Database password" +msgstr "" + +#: templates/installation.php:113 +msgid "Database name" +msgstr "" + +#: templates/installation.php:121 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:127 +msgid "Database host" +msgstr "" + +#: templates/installation.php:132 +msgid "Finish setup" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:42 +msgid "web services under your control" +msgstr "" + +#: templates/layout.user.php:45 +msgid "Log out" +msgstr "" + +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:27 +msgid "remember" +msgstr "" + +#: templates/login.php:28 +msgid "Log in" +msgstr "" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po new file mode 100644 index 0000000000000000000000000000000000000000..c45ea5afdd4508416a40a7584aa6711561c97388 --- /dev/null +++ b/l10n/zh_HK/files.po @@ -0,0 +1,266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:21 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:23 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:26 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:27 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:28 +msgid "Failed to write to disk" +msgstr "" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "" + +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 +msgid "Unshare" +msgstr "" + +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 +msgid "Delete" +msgstr "" + +#: js/fileactions.js:181 +msgid "Rename" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "replace" +msgstr "" + +#: js/filelist.js:201 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "cancel" +msgstr "" + +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 +msgid "undo" +msgstr "" + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 +msgid "generating ZIP-file, it may take some time." +msgstr "" + +#: js/files.js:218 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/files.js:218 +msgid "Upload Error" +msgstr "" + +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 +msgid "Pending" +msgstr "" + +#: js/files.js:274 +msgid "1 file uploading" +msgstr "" + +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "" + +#: js/files.js:349 js/files.js:382 +msgid "Upload cancelled." +msgstr "" + +#: js/files.js:451 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "" + +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" + +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "" + +#: js/files.js:712 +msgid "error while scanning" +msgstr "" + +#: js/files.js:785 templates/index.php:65 +msgid "Name" +msgstr "" + +#: js/files.js:786 templates/index.php:76 +msgid "Size" +msgstr "" + +#: js/files.js:787 templates/index.php:78 +msgid "Modified" +msgstr "" + +#: js/files.js:814 +msgid "1 folder" +msgstr "" + +#: js/files.js:816 +msgid "{count} folders" +msgstr "" + +#: js/files.js:824 +msgid "1 file" +msgstr "" + +#: js/files.js:826 +msgid "{count} files" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:9 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:12 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:14 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:17 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:19 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/admin.php:23 +msgid "Save" +msgstr "" + +#: templates/index.php:7 +msgid "New" +msgstr "" + +#: templates/index.php:10 +msgid "Text file" +msgstr "" + +#: templates/index.php:12 +msgid "Folder" +msgstr "" + +#: templates/index.php:14 +msgid "From link" +msgstr "" + +#: templates/index.php:35 +msgid "Upload" +msgstr "" + +#: templates/index.php:43 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:57 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:71 +msgid "Download" +msgstr "" + +#: templates/index.php:103 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:105 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:110 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:113 +msgid "Current scanning" +msgstr "" diff --git a/l10n/tr/admin_migrate.po b/l10n/zh_HK/files_encryption.po similarity index 52% rename from l10n/tr/admin_migrate.po rename to l10n/zh_HK/files_encryption.po index ab3ee34d97f08d94b354ed5d4dcb3693920f92de..52a31f20bac4745fce9a995556c8604aa3557508 100644 --- a/l10n/tr/admin_migrate.po +++ b/l10n/zh_HK/files_encryption.po @@ -7,26 +7,28 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-08-12 22:33+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:3 -msgid "Export this ownCloud instance" +msgid "Encryption" msgstr "" #: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" +msgid "Exclude the following file types from encryption" +msgstr "" + +#: templates/settings.php:5 +msgid "None" msgstr "" -#: templates/settings.php:12 -msgid "Export" +#: templates/settings.php:10 +msgid "Enable Encryption" msgstr "" diff --git a/l10n/zh_HK/files_external.po b/l10n/zh_HK/files_external.po new file mode 100644 index 0000000000000000000000000000000000000000..3264c27fca592780bd68684c6347e19627ca881a --- /dev/null +++ b/l10n/zh_HK/files_external.po @@ -0,0 +1,106 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-08-12 22:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "" + +#: templates/settings.php:7 templates/settings.php:19 +msgid "Mount point" +msgstr "" + +#: templates/settings.php:8 +msgid "Backend" +msgstr "" + +#: templates/settings.php:9 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:10 +msgid "Options" +msgstr "" + +#: templates/settings.php:11 +msgid "Applicable" +msgstr "" + +#: templates/settings.php:23 +msgid "Add mount point" +msgstr "" + +#: templates/settings.php:54 templates/settings.php:62 +msgid "None set" +msgstr "" + +#: templates/settings.php:63 +msgid "All Users" +msgstr "" + +#: templates/settings.php:64 +msgid "Groups" +msgstr "" + +#: templates/settings.php:69 +msgid "Users" +msgstr "" + +#: templates/settings.php:77 templates/settings.php:107 +msgid "Delete" +msgstr "" + +#: templates/settings.php:87 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:88 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:99 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:113 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/zh_HK/files_sharing.po b/l10n/zh_HK/files_sharing.po new file mode 100644 index 0000000000000000000000000000000000000000..4721ae096c27f0187cf2d16937191a1da57eb978 --- /dev/null +++ b/l10n/zh_HK/files_sharing.po @@ -0,0 +1,48 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-08-12 22:35+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "" diff --git a/l10n/zh_HK/files_versions.po b/l10n/zh_HK/files_versions.po new file mode 100644 index 0000000000000000000000000000000000000000..392cfcc993528de998ddc216163a1fe587d32e48 --- /dev/null +++ b/l10n/zh_HK/files_versions.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-08-12 22:37+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/settings-personal.js:31 templates/settings-personal.php:10 +msgid "Expire all versions" +msgstr "" + +#: js/versions.js:16 +msgid "History" +msgstr "" + +#: templates/settings-personal.php:4 +msgid "Versions" +msgstr "" + +#: templates/settings-personal.php:7 +msgid "This will delete all existing backup versions of your files" +msgstr "" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "" diff --git a/l10n/zh_HK/lib.po b/l10n/zh_HK/lib.po new file mode 100644 index 0000000000000000000000000000000000000000..e4752fd9c271b660e07609b7f659fc9e9c04c138 --- /dev/null +++ b/l10n/zh_HK/lib.po @@ -0,0 +1,152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-07-27 22:23+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: app.php:285 +msgid "Help" +msgstr "" + +#: app.php:292 +msgid "Personal" +msgstr "" + +#: app.php:297 +msgid "Settings" +msgstr "" + +#: app.php:302 +msgid "Users" +msgstr "" + +#: app.php:309 +msgid "Apps" +msgstr "" + +#: app.php:311 +msgid "Admin" +msgstr "" + +#: files.php:361 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:362 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:362 files.php:387 +msgid "Back to Files" +msgstr "" + +#: files.php:386 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:64 json.php:77 json.php:89 +msgid "Authentication error" +msgstr "" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 +msgid "seconds ago" +msgstr "" + +#: template.php:104 +msgid "1 minute ago" +msgstr "" + +#: template.php:105 +#, php-format +msgid "%d minutes ago" +msgstr "" + +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 +msgid "today" +msgstr "" + +#: template.php:109 +msgid "yesterday" +msgstr "" + +#: template.php:110 +#, php-format +msgid "%d days ago" +msgstr "" + +#: template.php:111 +msgid "last month" +msgstr "" + +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" + +#: template.php:113 +msgid "last year" +msgstr "" + +#: template.php:114 +msgid "years ago" +msgstr "" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "" + +#: updater.php:77 +msgid "up to date" +msgstr "" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/zh_HK/settings.po b/l10n/zh_HK/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..df89b1aac2e48a1a73d8bed2c1e32f60baa489b3 --- /dev/null +++ b/l10n/zh_HK/settings.po @@ -0,0 +1,247 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "" + +#: ajax/enableapp.php:12 +msgid "Could not enable app. " +msgstr "" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "" + +#: ajax/openid.php:13 +msgid "OpenID Changed" +msgstr "" + +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "" + +#: js/apps.js:28 js/apps.js:67 +msgid "Disable" +msgstr "" + +#: js/apps.js:28 js/apps.js:55 +msgid "Enable" +msgstr "" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "" + +#: personal.php:42 personal.php:43 +msgid "__language_name__" +msgstr "" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "" + +#: templates/apps.php:27 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:31 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:32 +msgid "-licensed by " +msgstr "" + +#: templates/help.php:9 +msgid "Documentation" +msgstr "" + +#: templates/help.php:10 +msgid "Managing Big Files" +msgstr "" + +#: templates/help.php:11 +msgid "Ask a question" +msgstr "" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "" + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "" + +#: templates/help.php:31 +msgid "Answer" +msgstr "" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "" + +#: templates/personal.php:13 +msgid "Download" +msgstr "" + +#: templates/personal.php:19 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "" + +#: templates/personal.php:22 +msgid "New password" +msgstr "" + +#: templates/personal.php:23 +msgid "show" +msgstr "" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "" + +#: templates/personal.php:30 +msgid "Email" +msgstr "" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "" + +#: templates/users.php:32 +msgid "Create" +msgstr "" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "" + +#: templates/users.php:80 templates/users.php:112 +msgid "Group Admin" +msgstr "" + +#: templates/users.php:82 +msgid "Quota" +msgstr "" + +#: templates/users.php:146 +msgid "Delete" +msgstr "" diff --git a/l10n/zh_HK/user_ldap.po b/l10n/zh_HK/user_ldap.po new file mode 100644 index 0000000000000000000000000000000000000000..b59ebba90067f78ba19feaa488758a57da714a94 --- /dev/null +++ b/l10n/zh_HK/user_ldap.po @@ -0,0 +1,170 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-08-12 22:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: templates/settings.php:8 +msgid "Host" +msgstr "" + +#: templates/settings.php:8 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/settings.php:9 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:9 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:10 +msgid "User DN" +msgstr "" + +#: templates/settings.php:10 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:11 +msgid "Password" +msgstr "" + +#: templates/settings.php:11 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:12 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:13 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:13 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:13 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:14 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:14 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "" + +#: templates/settings.php:14 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "" + +#: templates/settings.php:17 +msgid "Port" +msgstr "" + +#: templates/settings.php:18 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:19 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:20 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:21 +msgid "Use TLS" +msgstr "" + +#: templates/settings.php:21 +msgid "Do not use it for SSL connections, it will fail." +msgstr "" + +#: templates/settings.php:22 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:23 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:23 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "" + +#: templates/settings.php:23 +msgid "Not recommended, use for testing only." +msgstr "" + +#: templates/settings.php:24 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:24 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:25 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:25 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:27 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:29 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:30 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:32 +msgid "Help" +msgstr "" diff --git a/l10n/zh_HK/user_webdavauth.po b/l10n/zh_HK/user_webdavauth.po new file mode 100644 index 0000000000000000000000000000000000000000..ef8741a0c1eaa090505f2fadc49db2c902041f9e --- /dev/null +++ b/l10n/zh_HK/user_webdavauth.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-19 00:01+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "" diff --git a/l10n/zh_TW/admin_dependencies_chk.po b/l10n/zh_TW/admin_dependencies_chk.po deleted file mode 100644 index 9519ecc8d967a713cc390a838e7c76464b8bb020..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/admin_dependencies_chk.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: settings.php:33 -msgid "" -"The php-json module is needed by the many applications for inter " -"communications" -msgstr "" - -#: settings.php:39 -msgid "" -"The php-curl modude is needed to fetch the page title when adding a " -"bookmarks" -msgstr "" - -#: settings.php:45 -msgid "The php-gd module is needed to create thumbnails of your images" -msgstr "" - -#: settings.php:51 -msgid "The php-ldap module is needed connect to your ldap server" -msgstr "" - -#: settings.php:57 -msgid "The php-zip module is needed download multiple files at once" -msgstr "" - -#: settings.php:63 -msgid "" -"The php-mb_multibyte module is needed to manage correctly the encoding." -msgstr "" - -#: settings.php:69 -msgid "The php-ctype module is needed validate data." -msgstr "" - -#: settings.php:75 -msgid "The php-xml module is needed to share files with webdav." -msgstr "" - -#: settings.php:81 -msgid "" -"The allow_url_fopen directive of your php.ini should be set to 1 to retrieve" -" knowledge base from OCS servers" -msgstr "" - -#: settings.php:87 -msgid "The php-pdo module is needed to store owncloud data into a database." -msgstr "" - -#: templates/settings.php:2 -msgid "Dependencies status" -msgstr "" - -#: templates/settings.php:7 -msgid "Used by :" -msgstr "" diff --git a/l10n/zh_TW/admin_migrate.po b/l10n/zh_TW/admin_migrate.po deleted file mode 100644 index ad633109b339b872d864a5c5eeb0f122ce5d3715..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/admin_migrate.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/settings.php:3 -msgid "Export this ownCloud instance" -msgstr "" - -#: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" -msgstr "" - -#: templates/settings.php:12 -msgid "Export" -msgstr "" diff --git a/l10n/zh_TW/bookmarks.po b/l10n/zh_TW/bookmarks.po deleted file mode 100644 index 5735653faa5a89253b2d0932a033f8bae8b4ceb1..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/bookmarks.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-28 02:02+0200\n" -"PO-Revision-Date: 2012-07-27 22:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:14 -msgid "Bookmarks" -msgstr "" - -#: bookmarksHelper.php:99 -msgid "unnamed" -msgstr "" - -#: templates/bookmarklet.php:5 -msgid "" -"Drag this to your browser bookmarks and click it, when you want to bookmark " -"a webpage quickly:" -msgstr "" - -#: templates/bookmarklet.php:7 -msgid "Read later" -msgstr "" - -#: templates/list.php:13 -msgid "Address" -msgstr "" - -#: templates/list.php:14 -msgid "Title" -msgstr "" - -#: templates/list.php:15 -msgid "Tags" -msgstr "" - -#: templates/list.php:16 -msgid "Save bookmark" -msgstr "" - -#: templates/list.php:22 -msgid "You have no bookmarks" -msgstr "" - -#: templates/settings.php:11 -msgid "Bookmarklet
            " -msgstr "" diff --git a/l10n/zh_TW/calendar.po b/l10n/zh_TW/calendar.po deleted file mode 100644 index 4af2f9358807b06baaa1b8da82249e790aac7ec0..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/calendar.po +++ /dev/null @@ -1,815 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Donahue Chuang , 2012. -# Eddy Chang , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-11 02:02+0200\n" -"PO-Revision-Date: 2012-08-11 00:02+0000\n" -"Last-Translator: owncloud_robot \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/cache/status.php:19 -msgid "Not all calendars are completely cached" -msgstr "" - -#: ajax/cache/status.php:21 -msgid "Everything seems to be completely cached" -msgstr "" - -#: ajax/categories/rescan.php:29 -msgid "No calendars found." -msgstr "沒有找到行事曆" - -#: ajax/categories/rescan.php:37 -msgid "No events found." -msgstr "沒有找到活動" - -#: ajax/event/edit.form.php:20 -msgid "Wrong calendar" -msgstr "錯誤日曆" - -#: ajax/import/dropimport.php:29 ajax/import/import.php:64 -msgid "" -"The file contained either no events or all events are already saved in your " -"calendar." -msgstr "" - -#: ajax/import/dropimport.php:31 ajax/import/import.php:67 -msgid "events has been saved in the new calendar" -msgstr "" - -#: ajax/import/import.php:56 -msgid "Import failed" -msgstr "" - -#: ajax/import/import.php:69 -msgid "events has been saved in your calendar" -msgstr "" - -#: ajax/settings/guesstimezone.php:25 -msgid "New Timezone:" -msgstr "新時å€ï¼š" - -#: ajax/settings/settimezone.php:23 -msgid "Timezone changed" -msgstr "時å€å·²è®Šæ›´" - -#: ajax/settings/settimezone.php:25 -msgid "Invalid request" -msgstr "無效請求" - -#: appinfo/app.php:35 templates/calendar.php:15 -#: templates/part.eventform.php:33 templates/part.showevent.php:33 -msgid "Calendar" -msgstr "日曆" - -#: js/calendar.js:832 -msgid "ddd" -msgstr "" - -#: js/calendar.js:833 -msgid "ddd M/d" -msgstr "" - -#: js/calendar.js:834 -msgid "dddd M/d" -msgstr "" - -#: js/calendar.js:837 -msgid "MMMM yyyy" -msgstr "" - -#: js/calendar.js:839 -msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" -msgstr "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" - -#: js/calendar.js:841 -msgid "dddd, MMM d, yyyy" -msgstr "" - -#: lib/app.php:121 -msgid "Birthday" -msgstr "生日" - -#: lib/app.php:122 -msgid "Business" -msgstr "商業" - -#: lib/app.php:123 -msgid "Call" -msgstr "呼å«" - -#: lib/app.php:124 -msgid "Clients" -msgstr "客戶" - -#: lib/app.php:125 -msgid "Deliverer" -msgstr "éžé€è€…" - -#: lib/app.php:126 -msgid "Holidays" -msgstr "節日" - -#: lib/app.php:127 -msgid "Ideas" -msgstr "主æ„" - -#: lib/app.php:128 -msgid "Journey" -msgstr "æ—…è¡Œ" - -#: lib/app.php:129 -msgid "Jubilee" -msgstr "周年慶" - -#: lib/app.php:130 -msgid "Meeting" -msgstr "會議" - -#: lib/app.php:131 -msgid "Other" -msgstr "其他" - -#: lib/app.php:132 -msgid "Personal" -msgstr "個人" - -#: lib/app.php:133 -msgid "Projects" -msgstr "計畫" - -#: lib/app.php:134 -msgid "Questions" -msgstr "å•é¡Œ" - -#: lib/app.php:135 -msgid "Work" -msgstr "工作" - -#: lib/app.php:351 lib/app.php:361 -msgid "by" -msgstr "" - -#: lib/app.php:359 lib/app.php:399 -msgid "unnamed" -msgstr "ç„¡å稱的" - -#: lib/import.php:184 templates/calendar.php:12 -#: templates/part.choosecalendar.php:22 -msgid "New Calendar" -msgstr "新日曆" - -#: lib/object.php:372 -msgid "Does not repeat" -msgstr "ä¸é‡è¦†" - -#: lib/object.php:373 -msgid "Daily" -msgstr "æ¯æ—¥" - -#: lib/object.php:374 -msgid "Weekly" -msgstr "æ¯é€±" - -#: lib/object.php:375 -msgid "Every Weekday" -msgstr "æ¯é€±æœ«" - -#: lib/object.php:376 -msgid "Bi-Weekly" -msgstr "æ¯é›™é€±" - -#: lib/object.php:377 -msgid "Monthly" -msgstr "æ¯æœˆ" - -#: lib/object.php:378 -msgid "Yearly" -msgstr "æ¯å¹´" - -#: lib/object.php:388 -msgid "never" -msgstr "絕ä¸" - -#: lib/object.php:389 -msgid "by occurrences" -msgstr "由事件" - -#: lib/object.php:390 -msgid "by date" -msgstr "由日期" - -#: lib/object.php:400 -msgid "by monthday" -msgstr "ä¾æœˆä»½æ—¥æœŸ" - -#: lib/object.php:401 -msgid "by weekday" -msgstr "由平日" - -#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:69 -msgid "Monday" -msgstr "週一" - -#: lib/object.php:412 templates/calendar.php:5 -msgid "Tuesday" -msgstr "週二" - -#: lib/object.php:413 templates/calendar.php:5 -msgid "Wednesday" -msgstr "週三" - -#: lib/object.php:414 templates/calendar.php:5 -msgid "Thursday" -msgstr "週四" - -#: lib/object.php:415 templates/calendar.php:5 -msgid "Friday" -msgstr "週五" - -#: lib/object.php:416 templates/calendar.php:5 -msgid "Saturday" -msgstr "週六" - -#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:70 -msgid "Sunday" -msgstr "週日" - -#: lib/object.php:427 -msgid "events week of month" -msgstr "月份中活動週" - -#: lib/object.php:428 -msgid "first" -msgstr "第一" - -#: lib/object.php:429 -msgid "second" -msgstr "第二" - -#: lib/object.php:430 -msgid "third" -msgstr "第三" - -#: lib/object.php:431 -msgid "fourth" -msgstr "第四" - -#: lib/object.php:432 -msgid "fifth" -msgstr "第五" - -#: lib/object.php:433 -msgid "last" -msgstr "最後" - -#: lib/object.php:467 templates/calendar.php:7 -msgid "January" -msgstr "一月" - -#: lib/object.php:468 templates/calendar.php:7 -msgid "February" -msgstr "二月" - -#: lib/object.php:469 templates/calendar.php:7 -msgid "March" -msgstr "三月" - -#: lib/object.php:470 templates/calendar.php:7 -msgid "April" -msgstr "四月" - -#: lib/object.php:471 templates/calendar.php:7 -msgid "May" -msgstr "五月" - -#: lib/object.php:472 templates/calendar.php:7 -msgid "June" -msgstr "六月" - -#: lib/object.php:473 templates/calendar.php:7 -msgid "July" -msgstr "七月" - -#: lib/object.php:474 templates/calendar.php:7 -msgid "August" -msgstr "八月" - -#: lib/object.php:475 templates/calendar.php:7 -msgid "September" -msgstr "ä¹æœˆ" - -#: lib/object.php:476 templates/calendar.php:7 -msgid "October" -msgstr "å月" - -#: lib/object.php:477 templates/calendar.php:7 -msgid "November" -msgstr "å一月" - -#: lib/object.php:478 templates/calendar.php:7 -msgid "December" -msgstr "å二月" - -#: lib/object.php:488 -msgid "by events date" -msgstr "由事件日期" - -#: lib/object.php:489 -msgid "by yearday(s)" -msgstr "ä¾å¹´ä»½æ—¥æœŸ" - -#: lib/object.php:490 -msgid "by weeknumber(s)" -msgstr "由週數" - -#: lib/object.php:491 -msgid "by day and month" -msgstr "由日與月" - -#: lib/search.php:35 lib/search.php:37 lib/search.php:40 -msgid "Date" -msgstr "日期" - -#: lib/search.php:43 -msgid "Cal." -msgstr "行事曆" - -#: templates/calendar.php:6 -msgid "Sun." -msgstr "" - -#: templates/calendar.php:6 -msgid "Mon." -msgstr "" - -#: templates/calendar.php:6 -msgid "Tue." -msgstr "" - -#: templates/calendar.php:6 -msgid "Wed." -msgstr "" - -#: templates/calendar.php:6 -msgid "Thu." -msgstr "" - -#: templates/calendar.php:6 -msgid "Fri." -msgstr "" - -#: templates/calendar.php:6 -msgid "Sat." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jan." -msgstr "" - -#: templates/calendar.php:8 -msgid "Feb." -msgstr "" - -#: templates/calendar.php:8 -msgid "Mar." -msgstr "" - -#: templates/calendar.php:8 -msgid "Apr." -msgstr "" - -#: templates/calendar.php:8 -msgid "May." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jun." -msgstr "" - -#: templates/calendar.php:8 -msgid "Jul." -msgstr "" - -#: templates/calendar.php:8 -msgid "Aug." -msgstr "" - -#: templates/calendar.php:8 -msgid "Sep." -msgstr "" - -#: templates/calendar.php:8 -msgid "Oct." -msgstr "" - -#: templates/calendar.php:8 -msgid "Nov." -msgstr "" - -#: templates/calendar.php:8 -msgid "Dec." -msgstr "" - -#: templates/calendar.php:11 -msgid "All day" -msgstr "整天" - -#: templates/calendar.php:13 -msgid "Missing fields" -msgstr "éºå¤±æ¬„ä½" - -#: templates/calendar.php:14 templates/part.eventform.php:19 -#: templates/part.showevent.php:11 -msgid "Title" -msgstr "標題" - -#: templates/calendar.php:16 -msgid "From Date" -msgstr "自日期" - -#: templates/calendar.php:17 -msgid "From Time" -msgstr "至時間" - -#: templates/calendar.php:18 -msgid "To Date" -msgstr "至日期" - -#: templates/calendar.php:19 -msgid "To Time" -msgstr "至時間" - -#: templates/calendar.php:20 -msgid "The event ends before it starts" -msgstr "事件的çµæŸåœ¨é–‹å§‹ä¹‹å‰" - -#: templates/calendar.php:21 -msgid "There was a database fail" -msgstr "資料庫錯誤" - -#: templates/calendar.php:39 -msgid "Week" -msgstr "週" - -#: templates/calendar.php:40 -msgid "Month" -msgstr "月" - -#: templates/calendar.php:41 -msgid "List" -msgstr "清單" - -#: templates/calendar.php:45 -msgid "Today" -msgstr "今日" - -#: templates/calendar.php:46 templates/calendar.php:47 -msgid "Settings" -msgstr "" - -#: templates/part.choosecalendar.php:2 -msgid "Your calendars" -msgstr "你的行事曆" - -#: templates/part.choosecalendar.php:27 -#: templates/part.choosecalendar.rowfields.php:11 -msgid "CalDav Link" -msgstr "CalDav è¯çµ" - -#: templates/part.choosecalendar.php:31 -msgid "Shared calendars" -msgstr "分享的行事曆" - -#: templates/part.choosecalendar.php:48 -msgid "No shared calendars" -msgstr "ä¸åˆ†äº«çš„行事曆" - -#: templates/part.choosecalendar.rowfields.php:8 -msgid "Share Calendar" -msgstr "分享行事曆" - -#: templates/part.choosecalendar.rowfields.php:14 -msgid "Download" -msgstr "下載" - -#: templates/part.choosecalendar.rowfields.php:17 -msgid "Edit" -msgstr "編輯" - -#: templates/part.choosecalendar.rowfields.php:20 -#: templates/part.editevent.php:9 -msgid "Delete" -msgstr "刪除" - -#: templates/part.choosecalendar.rowfields.shared.php:4 -msgid "shared with you by" -msgstr "分享給你由" - -#: templates/part.editcalendar.php:9 -msgid "New calendar" -msgstr "新日曆" - -#: templates/part.editcalendar.php:9 -msgid "Edit calendar" -msgstr "編輯日曆" - -#: templates/part.editcalendar.php:12 -msgid "Displayname" -msgstr "顯示å稱" - -#: templates/part.editcalendar.php:23 -msgid "Active" -msgstr "作用中" - -#: templates/part.editcalendar.php:29 -msgid "Calendar color" -msgstr "日曆é¡è‰²" - -#: templates/part.editcalendar.php:42 -msgid "Save" -msgstr "儲存" - -#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 -#: templates/part.newevent.php:6 -msgid "Submit" -msgstr "æ出" - -#: templates/part.editcalendar.php:43 -msgid "Cancel" -msgstr "å–消" - -#: templates/part.editevent.php:1 -msgid "Edit an event" -msgstr "編輯事件" - -#: templates/part.editevent.php:10 -msgid "Export" -msgstr "匯出" - -#: templates/part.eventform.php:8 templates/part.showevent.php:3 -msgid "Eventinfo" -msgstr "活動資訊" - -#: templates/part.eventform.php:9 templates/part.showevent.php:4 -msgid "Repeating" -msgstr "é‡è¦†ä¸­" - -#: templates/part.eventform.php:10 templates/part.showevent.php:5 -msgid "Alarm" -msgstr "鬧é˜" - -#: templates/part.eventform.php:11 templates/part.showevent.php:6 -msgid "Attendees" -msgstr "出席者" - -#: templates/part.eventform.php:13 -msgid "Share" -msgstr "分享" - -#: templates/part.eventform.php:21 -msgid "Title of the Event" -msgstr "事件標題" - -#: templates/part.eventform.php:27 templates/part.showevent.php:19 -msgid "Category" -msgstr "分類" - -#: templates/part.eventform.php:29 -msgid "Separate categories with commas" -msgstr "用逗點分隔分類" - -#: templates/part.eventform.php:30 -msgid "Edit categories" -msgstr "編輯分類" - -#: templates/part.eventform.php:56 templates/part.showevent.php:52 -msgid "All Day Event" -msgstr "全天事件" - -#: templates/part.eventform.php:60 templates/part.showevent.php:56 -msgid "From" -msgstr "自" - -#: templates/part.eventform.php:68 templates/part.showevent.php:64 -msgid "To" -msgstr "至" - -#: templates/part.eventform.php:76 templates/part.showevent.php:72 -msgid "Advanced options" -msgstr "進階é¸é …" - -#: templates/part.eventform.php:81 templates/part.showevent.php:77 -msgid "Location" -msgstr "ä½ç½®" - -#: templates/part.eventform.php:83 -msgid "Location of the Event" -msgstr "事件ä½ç½®" - -#: templates/part.eventform.php:89 templates/part.showevent.php:85 -msgid "Description" -msgstr "æè¿°" - -#: templates/part.eventform.php:91 -msgid "Description of the Event" -msgstr "事件æè¿°" - -#: templates/part.eventform.php:100 templates/part.showevent.php:95 -msgid "Repeat" -msgstr "é‡è¦†" - -#: templates/part.eventform.php:107 templates/part.showevent.php:102 -msgid "Advanced" -msgstr "進階" - -#: templates/part.eventform.php:151 templates/part.showevent.php:146 -msgid "Select weekdays" -msgstr "é¸æ“‡å¹³æ—¥" - -#: templates/part.eventform.php:164 templates/part.eventform.php:177 -#: templates/part.showevent.php:159 templates/part.showevent.php:172 -msgid "Select days" -msgstr "é¸æ“‡æ—¥" - -#: templates/part.eventform.php:169 templates/part.showevent.php:164 -msgid "and the events day of year." -msgstr "以åŠå¹´ä¸­çš„活動日" - -#: templates/part.eventform.php:182 templates/part.showevent.php:177 -msgid "and the events day of month." -msgstr "以åŠæœˆä¸­çš„活動日" - -#: templates/part.eventform.php:190 templates/part.showevent.php:185 -msgid "Select months" -msgstr "é¸æ“‡æœˆ" - -#: templates/part.eventform.php:203 templates/part.showevent.php:198 -msgid "Select weeks" -msgstr "é¸æ“‡é€±" - -#: templates/part.eventform.php:208 templates/part.showevent.php:203 -msgid "and the events week of year." -msgstr "以åŠå¹´ä¸­çš„活動週" - -#: templates/part.eventform.php:214 templates/part.showevent.php:209 -msgid "Interval" -msgstr "é–“éš”" - -#: templates/part.eventform.php:220 templates/part.showevent.php:215 -msgid "End" -msgstr "çµæŸ" - -#: templates/part.eventform.php:233 templates/part.showevent.php:228 -msgid "occurrences" -msgstr "事件" - -#: templates/part.import.php:14 -msgid "create a new calendar" -msgstr "建立新日曆" - -#: templates/part.import.php:17 -msgid "Import a calendar file" -msgstr "匯入日曆檔案" - -#: templates/part.import.php:24 -msgid "Please choose a calendar" -msgstr "" - -#: templates/part.import.php:36 -msgid "Name of new calendar" -msgstr "新日曆å稱" - -#: templates/part.import.php:44 -msgid "Take an available name!" -msgstr "" - -#: templates/part.import.php:45 -msgid "" -"A Calendar with this name already exists. If you continue anyhow, these " -"calendars will be merged." -msgstr "" - -#: templates/part.import.php:47 -msgid "Import" -msgstr "匯入" - -#: templates/part.import.php:56 -msgid "Close Dialog" -msgstr "關閉å°è©±" - -#: templates/part.newevent.php:1 -msgid "Create a new event" -msgstr "建立一個新事件" - -#: templates/part.showevent.php:1 -msgid "View an event" -msgstr "觀看一個活動" - -#: templates/part.showevent.php:23 -msgid "No categories selected" -msgstr "沒有é¸æ“‡åˆ†é¡ž" - -#: templates/part.showevent.php:37 -msgid "of" -msgstr "æ–¼" - -#: templates/part.showevent.php:59 templates/part.showevent.php:67 -msgid "at" -msgstr "æ–¼" - -#: templates/settings.php:10 -msgid "General" -msgstr "" - -#: templates/settings.php:15 -msgid "Timezone" -msgstr "時å€" - -#: templates/settings.php:47 -msgid "Update timezone automatically" -msgstr "" - -#: templates/settings.php:52 -msgid "Time format" -msgstr "" - -#: templates/settings.php:57 -msgid "24h" -msgstr "24å°æ™‚制" - -#: templates/settings.php:58 -msgid "12h" -msgstr "12å°æ™‚制" - -#: templates/settings.php:64 -msgid "Start week on" -msgstr "" - -#: templates/settings.php:76 -msgid "Cache" -msgstr "" - -#: templates/settings.php:80 -msgid "Clear cache for repeating events" -msgstr "" - -#: templates/settings.php:85 -msgid "URLs" -msgstr "" - -#: templates/settings.php:87 -msgid "Calendar CalDAV syncing addresses" -msgstr "" - -#: templates/settings.php:87 -msgid "more info" -msgstr "" - -#: templates/settings.php:89 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:91 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:93 -msgid "Read only iCalendar link(s)" -msgstr "" - -#: templates/share.dropdown.php:20 -msgid "Users" -msgstr "使用者" - -#: templates/share.dropdown.php:21 -msgid "select users" -msgstr "é¸æ“‡ä½¿ç”¨è€…" - -#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 -msgid "Editable" -msgstr "å¯ç·¨è¼¯" - -#: templates/share.dropdown.php:48 -msgid "Groups" -msgstr "群組" - -#: templates/share.dropdown.php:49 -msgid "select groups" -msgstr "é¸æ“‡ç¾¤çµ„" - -#: templates/share.dropdown.php:75 -msgid "make public" -msgstr "公開" diff --git a/l10n/zh_TW/contacts.po b/l10n/zh_TW/contacts.po deleted file mode 100644 index 254da03e8b5ebe31fe8bc620b619e39c08ac38a8..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/contacts.po +++ /dev/null @@ -1,954 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Donahue Chuang , 2012. -# Eddy Chang , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-24 02:02+0200\n" -"PO-Revision-Date: 2012-08-24 00:03+0000\n" -"Last-Translator: I Robot \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 -msgid "Error (de)activating addressbook." -msgstr "在啟用或關閉電話簿時發生錯誤" - -#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 -#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:32 -#: ajax/contact/saveproperty.php:39 -msgid "id is not set." -msgstr "" - -#: ajax/addressbook/update.php:24 -msgid "Cannot update addressbook with an empty name." -msgstr "" - -#: ajax/addressbook/update.php:28 -msgid "Error updating addressbook." -msgstr "電話簿更新中發生錯誤" - -#: ajax/categories/categoriesfor.php:17 -msgid "No ID provided" -msgstr "未æä¾› ID" - -#: ajax/categories/categoriesfor.php:34 -msgid "Error setting checksum." -msgstr "" - -#: ajax/categories/delete.php:19 -msgid "No categories selected for deletion." -msgstr "" - -#: ajax/categories/delete.php:26 -msgid "No address books found." -msgstr "" - -#: ajax/categories/delete.php:34 -msgid "No contacts found." -msgstr "沒有找到è¯çµ¡äºº" - -#: ajax/contact/add.php:47 -msgid "There was an error adding the contact." -msgstr "添加通訊錄發生錯誤" - -#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:36 -msgid "element name is not set." -msgstr "" - -#: ajax/contact/addproperty.php:46 -msgid "Could not parse contact: " -msgstr "" - -#: ajax/contact/addproperty.php:56 -msgid "Cannot add empty property." -msgstr "ä¸å¯æ·»åŠ ç©ºç™½å…§å®¹" - -#: ajax/contact/addproperty.php:67 -msgid "At least one of the address fields has to be filled out." -msgstr "至少必須填寫一欄地å€" - -#: ajax/contact/addproperty.php:76 -msgid "Trying to add duplicate property: " -msgstr "" - -#: ajax/contact/addproperty.php:115 ajax/contact/saveproperty.php:93 -msgid "Missing IM parameter." -msgstr "" - -#: ajax/contact/addproperty.php:119 ajax/contact/saveproperty.php:97 -msgid "Unknown IM: " -msgstr "" - -#: ajax/contact/deleteproperty.php:37 -msgid "Information about vCard is incorrect. Please reload the page." -msgstr "有關 vCard 的資訊ä¸æ­£ç¢ºï¼Œè«‹é‡æ–°è¼‰å…¥æ­¤é ã€‚" - -#: ajax/contact/details.php:31 -msgid "Missing ID" -msgstr "éºå¤±ID" - -#: ajax/contact/details.php:36 -msgid "Error parsing VCard for ID: \"" -msgstr "" - -#: ajax/contact/saveproperty.php:42 -msgid "checksum is not set." -msgstr "" - -#: ajax/contact/saveproperty.php:62 -msgid "Information about vCard is incorrect. Please reload the page: " -msgstr "" - -#: ajax/contact/saveproperty.php:69 -msgid "Something went FUBAR. " -msgstr "" - -#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 -#: ajax/uploadphoto.php:68 -msgid "No contact ID was submitted." -msgstr "" - -#: ajax/currentphoto.php:36 -msgid "Error reading contact photo." -msgstr "" - -#: ajax/currentphoto.php:48 -msgid "Error saving temporary file." -msgstr "" - -#: ajax/currentphoto.php:51 -msgid "The loading photo is not valid." -msgstr "" - -#: ajax/editname.php:31 -msgid "Contact ID is missing." -msgstr "" - -#: ajax/oc_photo.php:32 -msgid "No photo path was submitted." -msgstr "" - -#: ajax/oc_photo.php:39 -msgid "File doesn't exist:" -msgstr "" - -#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 -msgid "Error loading image." -msgstr "" - -#: ajax/savecrop.php:69 -msgid "Error getting contact object." -msgstr "" - -#: ajax/savecrop.php:79 -msgid "Error getting PHOTO property." -msgstr "" - -#: ajax/savecrop.php:98 -msgid "Error saving contact." -msgstr "" - -#: ajax/savecrop.php:109 -msgid "Error resizing image" -msgstr "" - -#: ajax/savecrop.php:112 -msgid "Error cropping image" -msgstr "" - -#: ajax/savecrop.php:115 -msgid "Error creating temporary image" -msgstr "" - -#: ajax/savecrop.php:118 -msgid "Error finding image: " -msgstr "" - -#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 -msgid "Error uploading contacts to storage." -msgstr "" - -#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "" - -#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 -msgid "No file was uploaded" -msgstr "沒有已上傳的檔案" - -#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 -msgid "Couldn't save temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 -msgid "Couldn't load temporary image: " -msgstr "" - -#: ajax/uploadphoto.php:71 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: appinfo/app.php:21 -msgid "Contacts" -msgstr "通訊錄" - -#: js/contacts.js:71 -msgid "Sorry, this functionality has not been implemented yet" -msgstr "" - -#: js/contacts.js:71 -msgid "Not implemented" -msgstr "" - -#: js/contacts.js:76 -msgid "Couldn't get a valid address." -msgstr "" - -#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 -#: js/contacts.js:723 js/contacts.js:763 js/contacts.js:789 js/contacts.js:921 -#: js/contacts.js:927 js/contacts.js:939 js/contacts.js:976 -#: js/contacts.js:1250 js/contacts.js:1258 js/contacts.js:1267 -#: js/contacts.js:1302 js/contacts.js:1338 js/contacts.js:1353 -#: js/contacts.js:1379 js/contacts.js:1609 js/contacts.js:1644 -#: js/contacts.js:1664 js/settings.js:26 js/settings.js:43 js/settings.js:68 -msgid "Error" -msgstr "" - -#: js/contacts.js:424 -msgid "You do not have permission to add contacts to " -msgstr "" - -#: js/contacts.js:425 -msgid "Please select one of your own address books." -msgstr "" - -#: js/contacts.js:425 -msgid "Permission error" -msgstr "" - -#: js/contacts.js:763 -msgid "This property has to be non-empty." -msgstr "" - -#: js/contacts.js:789 -msgid "Couldn't serialize elements." -msgstr "" - -#: js/contacts.js:921 js/contacts.js:939 -msgid "" -"'deleteProperty' called without type argument. Please report at " -"bugs.owncloud.org" -msgstr "" - -#: js/contacts.js:958 -msgid "Edit name" -msgstr "" - -#: js/contacts.js:1250 -msgid "No files selected for upload." -msgstr "" - -#: js/contacts.js:1258 -msgid "" -"The file you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: js/contacts.js:1322 -msgid "Error loading profile picture." -msgstr "" - -#: js/contacts.js:1457 js/contacts.js:1498 js/contacts.js:1517 -#: js/contacts.js:1560 -msgid "Select type" -msgstr "" - -#: js/contacts.js:1578 -msgid "" -"Some contacts are marked for deletion, but not deleted yet. Please wait for " -"them to be deleted." -msgstr "" - -#: js/contacts.js:1649 -msgid "Do you want to merge these address books?" -msgstr "" - -#: js/loader.js:49 -msgid "Result: " -msgstr "" - -#: js/loader.js:49 -msgid " imported, " -msgstr "" - -#: js/loader.js:49 -msgid " failed." -msgstr "" - -#: js/settings.js:68 -msgid "Displayname cannot be empty." -msgstr "" - -#: lib/app.php:36 -msgid "Addressbook not found: " -msgstr "" - -#: lib/app.php:52 -msgid "This is not your addressbook." -msgstr "這ä¸æ˜¯ä½ çš„電話簿" - -#: lib/app.php:71 -msgid "Contact could not be found." -msgstr "通訊錄未發ç¾" - -#: lib/app.php:116 -msgid "Jabber" -msgstr "" - -#: lib/app.php:121 -msgid "AIM" -msgstr "" - -#: lib/app.php:126 -msgid "MSN" -msgstr "" - -#: lib/app.php:131 -msgid "Twitter" -msgstr "" - -#: lib/app.php:136 -msgid "GoogleTalk" -msgstr "" - -#: lib/app.php:141 -msgid "Facebook" -msgstr "" - -#: lib/app.php:146 -msgid "XMPP" -msgstr "" - -#: lib/app.php:151 -msgid "ICQ" -msgstr "" - -#: lib/app.php:156 -msgid "Yahoo" -msgstr "" - -#: lib/app.php:161 -msgid "Skype" -msgstr "" - -#: lib/app.php:166 -msgid "QQ" -msgstr "" - -#: lib/app.php:171 -msgid "GaduGadu" -msgstr "" - -#: lib/app.php:194 lib/app.php:202 lib/app.php:213 lib/app.php:266 -msgid "Work" -msgstr "å…¬å¸" - -#: lib/app.php:195 lib/app.php:200 lib/app.php:214 -msgid "Home" -msgstr "ä½å®…" - -#: lib/app.php:196 lib/app.php:209 lib/app.php:262 lib/vcard.php:593 -msgid "Other" -msgstr "" - -#: lib/app.php:201 -msgid "Mobile" -msgstr "行動電話" - -#: lib/app.php:203 -msgid "Text" -msgstr "文字" - -#: lib/app.php:204 -msgid "Voice" -msgstr "語音" - -#: lib/app.php:205 -msgid "Message" -msgstr "訊æ¯" - -#: lib/app.php:206 -msgid "Fax" -msgstr "傳真" - -#: lib/app.php:207 -msgid "Video" -msgstr "影片" - -#: lib/app.php:208 -msgid "Pager" -msgstr "呼å«å™¨" - -#: lib/app.php:215 -msgid "Internet" -msgstr "網際網路" - -#: lib/app.php:252 templates/part.contact.php:45 -#: templates/part.contact.php:128 -msgid "Birthday" -msgstr "生日" - -#: lib/app.php:253 -msgid "Business" -msgstr "" - -#: lib/app.php:254 -msgid "Call" -msgstr "" - -#: lib/app.php:255 -msgid "Clients" -msgstr "" - -#: lib/app.php:256 -msgid "Deliverer" -msgstr "" - -#: lib/app.php:257 -msgid "Holidays" -msgstr "" - -#: lib/app.php:258 -msgid "Ideas" -msgstr "" - -#: lib/app.php:259 -msgid "Journey" -msgstr "" - -#: lib/app.php:260 -msgid "Jubilee" -msgstr "" - -#: lib/app.php:261 -msgid "Meeting" -msgstr "" - -#: lib/app.php:263 -msgid "Personal" -msgstr "" - -#: lib/app.php:264 -msgid "Projects" -msgstr "" - -#: lib/app.php:265 -msgid "Questions" -msgstr "" - -#: lib/hooks.php:102 -msgid "{name}'s Birthday" -msgstr "{name}的生日" - -#: lib/search.php:15 -msgid "Contact" -msgstr "通訊錄" - -#: lib/vcard.php:408 -msgid "You do not have the permissions to edit this contact." -msgstr "" - -#: lib/vcard.php:483 -msgid "You do not have the permissions to delete this contact." -msgstr "" - -#: templates/index.php:14 -msgid "Add Contact" -msgstr "添加通訊錄" - -#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 -msgid "Import" -msgstr "" - -#: templates/index.php:18 -msgid "Settings" -msgstr "" - -#: templates/index.php:18 templates/settings.php:9 -msgid "Addressbooks" -msgstr "電話簿" - -#: templates/index.php:36 templates/part.import.php:24 -msgid "Close" -msgstr "" - -#: templates/index.php:37 -msgid "Keyboard shortcuts" -msgstr "" - -#: templates/index.php:39 -msgid "Navigation" -msgstr "" - -#: templates/index.php:42 -msgid "Next contact in list" -msgstr "" - -#: templates/index.php:44 -msgid "Previous contact in list" -msgstr "" - -#: templates/index.php:46 -msgid "Expand/collapse current addressbook" -msgstr "" - -#: templates/index.php:48 -msgid "Next addressbook" -msgstr "" - -#: templates/index.php:50 -msgid "Previous addressbook" -msgstr "" - -#: templates/index.php:54 -msgid "Actions" -msgstr "" - -#: templates/index.php:57 -msgid "Refresh contacts list" -msgstr "" - -#: templates/index.php:59 -msgid "Add new contact" -msgstr "" - -#: templates/index.php:61 -msgid "Add new addressbook" -msgstr "" - -#: templates/index.php:63 -msgid "Delete current contact" -msgstr "" - -#: templates/part.contact.php:17 -msgid "Drop photo to upload" -msgstr "" - -#: templates/part.contact.php:19 -msgid "Delete current photo" -msgstr "" - -#: templates/part.contact.php:20 -msgid "Edit current photo" -msgstr "" - -#: templates/part.contact.php:21 -msgid "Upload new photo" -msgstr "" - -#: templates/part.contact.php:22 -msgid "Select photo from ownCloud" -msgstr "" - -#: templates/part.contact.php:35 -msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" -msgstr "" - -#: templates/part.contact.php:36 -msgid "Edit name details" -msgstr "編輯姓å詳細資訊" - -#: templates/part.contact.php:39 templates/part.contact.php:40 -#: templates/part.contact.php:126 -msgid "Organization" -msgstr "組織" - -#: templates/part.contact.php:40 templates/part.contact.php:42 -#: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:36 -msgid "Delete" -msgstr "刪除" - -#: templates/part.contact.php:41 templates/part.contact.php:127 -msgid "Nickname" -msgstr "綽號" - -#: templates/part.contact.php:42 -msgid "Enter nickname" -msgstr "輸入綽號" - -#: templates/part.contact.php:43 templates/part.contact.php:134 -msgid "Web site" -msgstr "" - -#: templates/part.contact.php:44 -msgid "http://www.somesite.com" -msgstr "" - -#: templates/part.contact.php:44 -msgid "Go to web site" -msgstr "" - -#: templates/part.contact.php:46 -msgid "dd-mm-yyyy" -msgstr "dd-mm-yyyy" - -#: templates/part.contact.php:47 templates/part.contact.php:135 -msgid "Groups" -msgstr "群組" - -#: templates/part.contact.php:49 -msgid "Separate groups with commas" -msgstr "用逗號分隔群組" - -#: templates/part.contact.php:50 -msgid "Edit groups" -msgstr "編輯群組" - -#: templates/part.contact.php:59 templates/part.contact.php:73 -#: templates/part.contact.php:98 -msgid "Preferred" -msgstr "首é¸" - -#: templates/part.contact.php:60 -msgid "Please specify a valid email address." -msgstr "註填入åˆæ³•çš„é›»å­éƒµä»¶ä½å€" - -#: templates/part.contact.php:60 -msgid "Enter email address" -msgstr "輸入電å­éƒµä»¶åœ°å€" - -#: templates/part.contact.php:64 -msgid "Mail to address" -msgstr "寄é€ä½å€" - -#: templates/part.contact.php:65 -msgid "Delete email address" -msgstr "刪除電å­éƒµä»¶ä½å€" - -#: templates/part.contact.php:75 -msgid "Enter phone number" -msgstr "輸入電話號碼" - -#: templates/part.contact.php:79 -msgid "Delete phone number" -msgstr "刪除電話號碼" - -#: templates/part.contact.php:100 -msgid "Instant Messenger" -msgstr "" - -#: templates/part.contact.php:101 -msgid "Delete IM" -msgstr "" - -#: templates/part.contact.php:110 -msgid "View on map" -msgstr "" - -#: templates/part.contact.php:110 -msgid "Edit address details" -msgstr "é›»å­éƒµä»¶ä½å€è©³ç´°è³‡è¨Š" - -#: templates/part.contact.php:116 -msgid "Add notes here." -msgstr "在這裡新增註解" - -#: templates/part.contact.php:124 -msgid "Add field" -msgstr "新增欄ä½" - -#: templates/part.contact.php:129 -msgid "Phone" -msgstr "電話" - -#: templates/part.contact.php:130 -msgid "Email" -msgstr "é›»å­éƒµä»¶" - -#: templates/part.contact.php:131 -msgid "Instant Messaging" -msgstr "" - -#: templates/part.contact.php:132 -msgid "Address" -msgstr "地å€" - -#: templates/part.contact.php:133 -msgid "Note" -msgstr "註解" - -#: templates/part.contact.php:138 -msgid "Download contact" -msgstr "下載通訊錄" - -#: templates/part.contact.php:139 -msgid "Delete contact" -msgstr "刪除通訊錄" - -#: templates/part.cropphoto.php:65 -msgid "The temporary image has been removed from cache." -msgstr "" - -#: templates/part.edit_address_dialog.php:6 -msgid "Edit address" -msgstr "" - -#: templates/part.edit_address_dialog.php:10 -msgid "Type" -msgstr "é¡žåž‹" - -#: templates/part.edit_address_dialog.php:18 -#: templates/part.edit_address_dialog.php:21 -msgid "PO Box" -msgstr "通訊地å€" - -#: templates/part.edit_address_dialog.php:24 -msgid "Street address" -msgstr "" - -#: templates/part.edit_address_dialog.php:27 -msgid "Street and number" -msgstr "" - -#: templates/part.edit_address_dialog.php:30 -msgid "Extended" -msgstr "分機" - -#: templates/part.edit_address_dialog.php:33 -msgid "Apartment number etc." -msgstr "" - -#: templates/part.edit_address_dialog.php:36 -#: templates/part.edit_address_dialog.php:39 -msgid "City" -msgstr "城市" - -#: templates/part.edit_address_dialog.php:42 -msgid "Region" -msgstr "地å€" - -#: templates/part.edit_address_dialog.php:45 -msgid "E.g. state or province" -msgstr "" - -#: templates/part.edit_address_dialog.php:48 -msgid "Zipcode" -msgstr "郵éžå€è™Ÿ" - -#: templates/part.edit_address_dialog.php:51 -msgid "Postal code" -msgstr "" - -#: templates/part.edit_address_dialog.php:54 -#: templates/part.edit_address_dialog.php:57 -msgid "Country" -msgstr "國家" - -#: templates/part.edit_name_dialog.php:16 -msgid "Addressbook" -msgstr "電話簿" - -#: templates/part.edit_name_dialog.php:23 -msgid "Hon. prefixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:27 -msgid "Miss" -msgstr "" - -#: templates/part.edit_name_dialog.php:28 -msgid "Ms" -msgstr "" - -#: templates/part.edit_name_dialog.php:29 -msgid "Mr" -msgstr "先生" - -#: templates/part.edit_name_dialog.php:30 -msgid "Sir" -msgstr "先生" - -#: templates/part.edit_name_dialog.php:31 -msgid "Mrs" -msgstr "å°å§" - -#: templates/part.edit_name_dialog.php:32 -msgid "Dr" -msgstr "åšå£«ï¼ˆé†«ç”Ÿï¼‰" - -#: templates/part.edit_name_dialog.php:35 -msgid "Given name" -msgstr "給定å(å)" - -#: templates/part.edit_name_dialog.php:37 -msgid "Additional names" -msgstr "é¡å¤–å" - -#: templates/part.edit_name_dialog.php:39 -msgid "Family name" -msgstr "家æ—å(姓)" - -#: templates/part.edit_name_dialog.php:41 -msgid "Hon. suffixes" -msgstr "" - -#: templates/part.edit_name_dialog.php:45 -msgid "J.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:46 -msgid "M.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:47 -msgid "D.O." -msgstr "" - -#: templates/part.edit_name_dialog.php:48 -msgid "D.C." -msgstr "" - -#: templates/part.edit_name_dialog.php:49 -msgid "Ph.D." -msgstr "" - -#: templates/part.edit_name_dialog.php:50 -msgid "Esq." -msgstr "" - -#: templates/part.edit_name_dialog.php:51 -msgid "Jr." -msgstr "" - -#: templates/part.edit_name_dialog.php:52 -msgid "Sn." -msgstr "" - -#: templates/part.import.php:1 -msgid "Import a contacts file" -msgstr "" - -#: templates/part.import.php:6 -msgid "Please choose the addressbook" -msgstr "" - -#: templates/part.import.php:10 -msgid "create a new addressbook" -msgstr "" - -#: templates/part.import.php:15 -msgid "Name of new addressbook" -msgstr "" - -#: templates/part.import.php:20 -msgid "Importing contacts" -msgstr "" - -#: templates/part.no_contacts.php:3 -msgid "You have no contacts in your addressbook." -msgstr "" - -#: templates/part.no_contacts.php:5 -msgid "Add contact" -msgstr "" - -#: templates/part.selectaddressbook.php:1 -msgid "Select Address Books" -msgstr "" - -#: templates/part.selectaddressbook.php:27 -msgid "Enter name" -msgstr "" - -#: templates/part.selectaddressbook.php:29 -msgid "Enter description" -msgstr "" - -#: templates/settings.php:3 -msgid "CardDAV syncing addresses" -msgstr "" - -#: templates/settings.php:3 -msgid "more info" -msgstr "" - -#: templates/settings.php:5 -msgid "Primary address (Kontact et al)" -msgstr "" - -#: templates/settings.php:7 -msgid "iOS/OS X" -msgstr "" - -#: templates/settings.php:20 -msgid "Show CardDav link" -msgstr "" - -#: templates/settings.php:23 -msgid "Show read-only VCF link" -msgstr "" - -#: templates/settings.php:26 -msgid "Share" -msgstr "" - -#: templates/settings.php:29 -msgid "Download" -msgstr "下載" - -#: templates/settings.php:33 -msgid "Edit" -msgstr "編輯" - -#: templates/settings.php:43 -msgid "New Address Book" -msgstr "新電話簿" - -#: templates/settings.php:44 -msgid "Name" -msgstr "" - -#: templates/settings.php:45 -msgid "Description" -msgstr "" - -#: templates/settings.php:46 -msgid "Save" -msgstr "儲存" - -#: templates/settings.php:47 -msgid "Cancel" -msgstr "å–消" - -#: templates/settings.php:52 -msgid "More..." -msgstr "" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index 97fc8c8bf663404c6f33c6b9643ca20882031a75..ae5dc301b3c836c9206a315996eff4c18e3eb970 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/core.po @@ -4,14 +4,15 @@ # # Translators: # Donahue Chuang , 2012. +# , 2012. # Ming Yi Wu , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-28 23:34+0200\n" -"PO-Revision-Date: 2012-09-28 21:34+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-29 00:04+0100\n" +"PO-Revision-Date: 2012-11-28 01:36+0000\n" +"Last-Translator: dw4dev \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,208 +20,241 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 -msgid "Application name not provided." -msgstr "未æ供應用程å¼å稱" +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" -#: ajax/vcategories/add.php:29 +#: ajax/vcategories/add.php:30 msgid "No category to add?" msgstr "無分類添加?" -#: ajax/vcategories/add.php:36 +#: ajax/vcategories/add.php:37 msgid "This category already exists: " msgstr "此分類已經存在:" -#: js/js.js:213 templates/layout.user.php:49 templates/layout.user.php:50 +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "æ²’é¸æ“‡è¦åˆªé™¤çš„分類" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:259 templates/layout.user.php:60 templates/layout.user.php:61 msgid "Settings" msgstr "設定" -#: js/js.js:645 -msgid "January" -msgstr "一月" +#: js/js.js:704 +msgid "seconds ago" +msgstr "幾秒å‰" -#: js/js.js:645 -msgid "February" -msgstr "二月" +#: js/js.js:705 +msgid "1 minute ago" +msgstr "1 分é˜å‰" -#: js/js.js:645 -msgid "March" -msgstr "三月" +#: js/js.js:706 +msgid "{minutes} minutes ago" +msgstr "{minutes} 分é˜å‰" -#: js/js.js:645 -msgid "April" -msgstr "四月" +#: js/js.js:707 +msgid "1 hour ago" +msgstr "1 個å°æ™‚å‰" -#: js/js.js:645 -msgid "May" -msgstr "五月" +#: js/js.js:708 +msgid "{hours} hours ago" +msgstr "{hours} 個å°æ™‚å‰" -#: js/js.js:645 -msgid "June" -msgstr "六月" +#: js/js.js:709 +msgid "today" +msgstr "今天" -#: js/js.js:646 -msgid "July" -msgstr "七月" +#: js/js.js:710 +msgid "yesterday" +msgstr "昨天" -#: js/js.js:646 -msgid "August" -msgstr "八月" +#: js/js.js:711 +msgid "{days} days ago" +msgstr "{days} 天å‰" -#: js/js.js:646 -msgid "September" -msgstr "ä¹æœˆ" +#: js/js.js:712 +msgid "last month" +msgstr "上個月" -#: js/js.js:646 -msgid "October" -msgstr "å月" +#: js/js.js:713 +msgid "{months} months ago" +msgstr "{months} 個月å‰" -#: js/js.js:646 -msgid "November" -msgstr "å一月" +#: js/js.js:714 +msgid "months ago" +msgstr "幾個月å‰" -#: js/js.js:646 -msgid "December" -msgstr "å二月" +#: js/js.js:715 +msgid "last year" +msgstr "去年" -#: js/oc-dialogs.js:123 +#: js/js.js:716 +msgid "years ago" +msgstr "幾年å‰" + +#: js/oc-dialogs.js:126 msgid "Choose" -msgstr "" +msgstr "é¸æ“‡" -#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 msgid "Cancel" msgstr "å–消" -#: js/oc-dialogs.js:159 +#: js/oc-dialogs.js:162 msgid "No" msgstr "No" -#: js/oc-dialogs.js:160 +#: js/oc-dialogs.js:163 msgid "Yes" msgstr "Yes" -#: js/oc-dialogs.js:177 +#: js/oc-dialogs.js:180 msgid "Ok" msgstr "Ok" -#: js/oc-vcategories.js:68 -msgid "No categories selected for deletion." -msgstr "æ²’é¸æ“‡è¦åˆªé™¤çš„分類" +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" -#: js/oc-vcategories.js:68 js/share.js:114 js/share.js:121 js/share.js:489 -#: js/share.js:501 +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:533 +#: js/share.js:545 msgid "Error" msgstr "錯誤" -#: js/share.js:103 -msgid "Error while sharing" +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." msgstr "" -#: js/share.js:114 -msgid "Error while unsharing" +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:121 -msgid "Error while changing permissions" -msgstr "" +#: js/share.js:124 +msgid "Error while sharing" +msgstr "分享時發生錯誤" -#: js/share.js:130 -msgid "Shared with you and the group" +#: js/share.js:135 +msgid "Error while unsharing" msgstr "" -#: js/share.js:130 -msgid "by" +#: js/share.js:142 +msgid "Error while changing permissions" msgstr "" -#: js/share.js:132 -msgid "Shared with you by" +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" msgstr "" -#: js/share.js:137 +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "{owner} 已經和您分享" + +#: js/share.js:158 msgid "Share with" -msgstr "" +msgstr "與分享" -#: js/share.js:142 +#: js/share.js:163 msgid "Share with link" -msgstr "" +msgstr "使用連çµåˆ†äº«" -#: js/share.js:143 +#: js/share.js:164 msgid "Password protect" -msgstr "" +msgstr "密碼ä¿è­·" -#: js/share.js:147 templates/installation.php:30 templates/login.php:13 +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 msgid "Password" msgstr "密碼" -#: js/share.js:152 +#: js/share.js:173 msgid "Set expiration date" -msgstr "" +msgstr "設置到期日" -#: js/share.js:153 +#: js/share.js:174 msgid "Expiration date" -msgstr "" +msgstr "到期日" -#: js/share.js:185 +#: js/share.js:206 msgid "Share via email:" -msgstr "" +msgstr "é€éŽemail分享:" -#: js/share.js:187 +#: js/share.js:208 msgid "No people found" msgstr "" -#: js/share.js:214 +#: js/share.js:235 msgid "Resharing is not allowed" msgstr "" -#: js/share.js:250 -msgid "Shared in" -msgstr "" - -#: js/share.js:250 -msgid "with" -msgstr "" - #: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "已和 {user} 分享 {item}" + +#: js/share.js:292 msgid "Unshare" -msgstr "" +msgstr "å–消共享" -#: js/share.js:279 +#: js/share.js:304 msgid "can edit" -msgstr "" +msgstr "å¯ç·¨è¼¯" -#: js/share.js:281 +#: js/share.js:306 msgid "access control" -msgstr "" +msgstr "å­˜å–控制" -#: js/share.js:284 +#: js/share.js:309 msgid "create" -msgstr "" +msgstr "建立" -#: js/share.js:287 +#: js/share.js:312 msgid "update" -msgstr "" +msgstr "æ›´æ–°" -#: js/share.js:290 +#: js/share.js:315 msgid "delete" -msgstr "" +msgstr "刪除" -#: js/share.js:293 +#: js/share.js:318 msgid "share" -msgstr "" +msgstr "分享" -#: js/share.js:317 js/share.js:476 +#: js/share.js:349 js/share.js:520 js/share.js:522 msgid "Password protected" -msgstr "" +msgstr "密碼ä¿è­·" -#: js/share.js:489 +#: js/share.js:533 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:501 +#: js/share.js:545 msgid "Error setting expiration date" -msgstr "" +msgstr "錯誤的到期日設定" -#: lostpassword/index.php:26 +#: lostpassword/controller.php:47 msgid "ownCloud password reset" msgstr "ownCloud 密碼é‡è¨­" @@ -233,19 +267,19 @@ msgid "You will receive a link to reset your password via Email." msgstr "é‡è¨­å¯†ç¢¼çš„連çµå°‡æœƒå¯„到你的電å­éƒµä»¶ä¿¡ç®±" #: lostpassword/templates/lostpassword.php:5 -msgid "Requested" -msgstr "å·²è¦æ±‚" +msgid "Reset email send." +msgstr "é‡è¨­éƒµä»¶å·²é€å‡º." #: lostpassword/templates/lostpassword.php:8 -msgid "Login failed!" -msgstr "登入失敗!" +msgid "Request failed!" +msgstr "請求失敗!" -#: lostpassword/templates/lostpassword.php:11 templates/installation.php:26 -#: templates/login.php:9 +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 msgid "Username" msgstr "使用者å稱" -#: lostpassword/templates/lostpassword.php:15 +#: lostpassword/templates/lostpassword.php:14 msgid "Request reset" msgstr "è¦æ±‚é‡è¨­" @@ -297,72 +331,187 @@ msgstr "未發ç¾é›²" msgid "Edit categories" msgstr "編輯分類" -#: templates/edit_categories_dialog.php:14 +#: templates/edit_categories_dialog.php:16 msgid "Add" msgstr "添加" +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "安全性警告" + #: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "沒有å¯ç”¨çš„隨機數字產生器, 請啟用 PHP 中 OpenSSL 擴充功能." + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 msgid "Create an admin account" msgstr "建立一個管ç†è€…帳號" -#: templates/installation.php:36 +#: templates/installation.php:48 msgid "Advanced" msgstr "進階" -#: templates/installation.php:38 +#: templates/installation.php:50 msgid "Data folder" msgstr "資料夾" -#: templates/installation.php:45 +#: templates/installation.php:57 msgid "Configure the database" msgstr "設定資料庫" -#: templates/installation.php:50 templates/installation.php:61 -#: templates/installation.php:71 templates/installation.php:81 +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 msgid "will be used" msgstr "將會使用" -#: templates/installation.php:93 +#: templates/installation.php:105 msgid "Database user" msgstr "資料庫使用者" -#: templates/installation.php:97 +#: templates/installation.php:109 msgid "Database password" msgstr "資料庫密碼" -#: templates/installation.php:101 +#: templates/installation.php:113 msgid "Database name" msgstr "資料庫å稱" -#: templates/installation.php:109 +#: templates/installation.php:121 msgid "Database tablespace" msgstr "資料庫 tablespace" -#: templates/installation.php:115 +#: templates/installation.php:127 msgid "Database host" msgstr "資料庫主機" -#: templates/installation.php:120 +#: templates/installation.php:132 msgid "Finish setup" msgstr "完æˆè¨­å®š" -#: templates/layout.guest.php:36 +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Sunday" +msgstr "週日" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Monday" +msgstr "週一" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Tuesday" +msgstr "週二" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Wednesday" +msgstr "週三" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Thursday" +msgstr "週四" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Friday" +msgstr "週五" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "Saturday" +msgstr "週六" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "January" +msgstr "一月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "February" +msgstr "二月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "March" +msgstr "三月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "April" +msgstr "四月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "May" +msgstr "五月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "June" +msgstr "六月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "July" +msgstr "七月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "August" +msgstr "八月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "September" +msgstr "ä¹æœˆ" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "October" +msgstr "å月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "November" +msgstr "å一月" + +#: templates/layout.guest.php:17 templates/layout.user.php:18 +msgid "December" +msgstr "å二月" + +#: templates/layout.guest.php:42 msgid "web services under your control" msgstr "網路æœå‹™å·²åœ¨ä½ æŽ§åˆ¶" -#: templates/layout.user.php:34 +#: templates/layout.user.php:45 msgid "Log out" msgstr "登出" -#: templates/login.php:6 +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 msgid "Lost your password?" msgstr "忘記密碼?" -#: templates/login.php:17 +#: templates/login.php:27 msgid "remember" msgstr "記ä½" -#: templates/login.php:18 +#: templates/login.php:28 msgid "Log in" msgstr "登入" @@ -377,3 +526,17 @@ msgstr "上一é " #: templates/part.pagenavi.php:20 msgid "next" msgstr "下一é " + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "安全性警告!" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "é©—è­‰" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index edeaac3f47040b522e14906867a621bab8620216..4e18f079575c198affffc70b4f08279c4a890d42 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/files.po @@ -4,15 +4,16 @@ # # Translators: # Donahue Chuang , 2012. +# , 2012. # Eddy Chang , 2012. # ywang , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-26 13:19+0200\n" -"PO-Revision-Date: 2012-09-26 11:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,195 +26,166 @@ msgid "There is no error, the file uploaded with success" msgstr "無錯誤,檔案上傳æˆåŠŸ" #: ajax/upload.php:21 -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" -msgstr "上傳的檔案超éŽäº† php.ini 中的 upload_max_filesize 設定" +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" -#: ajax/upload.php:22 +#: ajax/upload.php:23 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" msgstr "ä¸Šå‚³é»¨æ¡ˆçš„è¶…éŽ HTML 表單中指定 MAX_FILE_SIZE é™åˆ¶" -#: ajax/upload.php:23 +#: ajax/upload.php:25 msgid "The uploaded file was only partially uploaded" msgstr "åªæœ‰éƒ¨åˆ†æª”案被上傳" -#: ajax/upload.php:24 +#: ajax/upload.php:26 msgid "No file was uploaded" msgstr "無已上傳檔案" -#: ajax/upload.php:25 +#: ajax/upload.php:27 msgid "Missing a temporary folder" msgstr "éºå¤±æš«å­˜è³‡æ–™å¤¾" -#: ajax/upload.php:26 +#: ajax/upload.php:28 msgid "Failed to write to disk" msgstr "寫入硬碟失敗" -#: appinfo/app.php:6 +#: appinfo/app.php:10 msgid "Files" msgstr "檔案" -#: js/fileactions.js:108 templates/index.php:62 +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 msgid "Unshare" -msgstr "" +msgstr "å–消共享" -#: js/fileactions.js:110 templates/index.php:64 +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 msgid "Delete" msgstr "刪除" -#: js/fileactions.js:182 +#: js/fileactions.js:181 msgid "Rename" -msgstr "" +msgstr "é‡æ–°å‘½å" -#: js/filelist.js:190 js/filelist.js:192 -msgid "already exists" -msgstr "已經存在" +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "{new_name} 已經存在" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "replace" msgstr "å–代" -#: js/filelist.js:190 +#: js/filelist.js:201 msgid "suggest name" msgstr "" -#: js/filelist.js:190 js/filelist.js:192 +#: js/filelist.js:201 js/filelist.js:203 msgid "cancel" msgstr "å–消" -#: js/filelist.js:239 js/filelist.js:241 -msgid "replaced" -msgstr "" +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "å·²å–代 {new_name}" -#: js/filelist.js:239 js/filelist.js:241 js/filelist.js:273 js/filelist.js:275 +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 msgid "undo" -msgstr "" +msgstr "復原" + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "使用 {new_name} å–代 {old_name}" -#: js/filelist.js:241 -msgid "with" +#: js/filelist.js:284 +msgid "unshared {files}" msgstr "" -#: js/filelist.js:273 -msgid "unshared" +#: js/filelist.js:286 +msgid "deleted {files}" msgstr "" -#: js/filelist.js:275 -msgid "deleted" +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." msgstr "" -#: js/files.js:179 +#: js/files.js:183 msgid "generating ZIP-file, it may take some time." msgstr "產生壓縮檔, 它å¯èƒ½éœ€è¦ä¸€æ®µæ™‚é–“." -#: js/files.js:208 +#: js/files.js:218 msgid "Unable to upload your file as it is a directory or has 0 bytes" msgstr "無法上傳您的檔案因為它å¯èƒ½æ˜¯ä¸€å€‹ç›®éŒ„或檔案大å°ç‚º0" -#: js/files.js:208 +#: js/files.js:218 msgid "Upload Error" msgstr "上傳發生錯誤" -#: js/files.js:236 js/files.js:341 js/files.js:371 +#: js/files.js:235 +msgid "Close" +msgstr "關閉" + +#: js/files.js:254 js/files.js:368 js/files.js:398 msgid "Pending" msgstr "" -#: js/files.js:256 +#: js/files.js:274 msgid "1 file uploading" -msgstr "" +msgstr "1 個檔案正在上傳" -#: js/files.js:259 js/files.js:304 js/files.js:319 -msgid "files uploading" -msgstr "" +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "{count} 個檔案正在上傳" -#: js/files.js:322 js/files.js:355 +#: js/files.js:349 js/files.js:382 msgid "Upload cancelled." msgstr "上傳å–消" -#: js/files.js:424 +#: js/files.js:451 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "檔案上傳中. 離開此é é¢å°‡æœƒå–消上傳." -#: js/files.js:494 -msgid "Invalid name, '/' is not allowed." -msgstr "無效的å稱, '/'是ä¸è¢«å…許的" +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "無效的資料夾å稱. \"Shared\" å稱已被 Owncloud 所ä¿ç•™ä½¿ç”¨" -#: js/files.js:667 -msgid "files scanned" +#: js/files.js:704 +msgid "{count} files scanned" msgstr "" -#: js/files.js:675 +#: js/files.js:712 msgid "error while scanning" -msgstr "" +msgstr "掃æ時發生錯誤" -#: js/files.js:748 templates/index.php:48 +#: js/files.js:785 templates/index.php:65 msgid "Name" msgstr "å稱" -#: js/files.js:749 templates/index.php:56 +#: js/files.js:786 templates/index.php:76 msgid "Size" msgstr "大å°" -#: js/files.js:750 templates/index.php:58 +#: js/files.js:787 templates/index.php:78 msgid "Modified" msgstr "修改" -#: js/files.js:777 -msgid "folder" -msgstr "" - -#: js/files.js:779 -msgid "folders" -msgstr "" - -#: js/files.js:787 -msgid "file" -msgstr "" +#: js/files.js:814 +msgid "1 folder" +msgstr "1 個資料夾" -#: js/files.js:789 -msgid "files" -msgstr "" +#: js/files.js:816 +msgid "{count} folders" +msgstr "{count} 個資料夾" -#: js/files.js:833 -msgid "seconds ago" -msgstr "" +#: js/files.js:824 +msgid "1 file" +msgstr "1 個檔案" -#: js/files.js:834 -msgid "minute ago" -msgstr "" - -#: js/files.js:835 -msgid "minutes ago" -msgstr "" - -#: js/files.js:838 -msgid "today" -msgstr "" - -#: js/files.js:839 -msgid "yesterday" -msgstr "" - -#: js/files.js:840 -msgid "days ago" -msgstr "" - -#: js/files.js:841 -msgid "last month" -msgstr "" - -#: js/files.js:843 -msgid "months ago" -msgstr "" - -#: js/files.js:844 -msgid "last year" -msgstr "" - -#: js/files.js:845 -msgid "years ago" -msgstr "" +#: js/files.js:826 +msgid "{count} files" +msgstr "{count} 個檔案" #: templates/admin.php:5 msgid "File handling" @@ -223,80 +195,76 @@ msgstr "檔案處ç†" msgid "Maximum upload size" msgstr "最大上傳容é‡" -#: templates/admin.php:7 +#: templates/admin.php:9 msgid "max. possible: " msgstr "最大å…許: " -#: templates/admin.php:9 +#: templates/admin.php:12 msgid "Needed for multi-file and folder downloads." msgstr "é‡å°å¤šæª”案和目錄下載是必填的" -#: templates/admin.php:9 +#: templates/admin.php:14 msgid "Enable ZIP-download" msgstr "啟用 Zip 下載" -#: templates/admin.php:11 +#: templates/admin.php:17 msgid "0 is unlimited" msgstr "0代表沒有é™åˆ¶" -#: templates/admin.php:12 +#: templates/admin.php:19 msgid "Maximum input size for ZIP files" msgstr "é‡å°ZIP檔案最大輸入大å°" -#: templates/admin.php:14 +#: templates/admin.php:23 msgid "Save" -msgstr "" +msgstr "儲存" #: templates/index.php:7 msgid "New" msgstr "新增" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Text file" msgstr "文字檔" -#: templates/index.php:10 +#: templates/index.php:12 msgid "Folder" msgstr "資料夾" -#: templates/index.php:11 -msgid "From url" -msgstr "ç”± url " +#: templates/index.php:14 +msgid "From link" +msgstr "" -#: templates/index.php:20 +#: templates/index.php:35 msgid "Upload" msgstr "上傳" -#: templates/index.php:27 +#: templates/index.php:43 msgid "Cancel upload" msgstr "å–消上傳" -#: templates/index.php:40 +#: templates/index.php:57 msgid "Nothing in here. Upload something!" msgstr "沒有任何æ±è¥¿ã€‚請上傳內容!" -#: templates/index.php:50 -msgid "Share" -msgstr "分享" - -#: templates/index.php:52 +#: templates/index.php:71 msgid "Download" msgstr "下載" -#: templates/index.php:75 +#: templates/index.php:103 msgid "Upload too large" msgstr "上傳éŽå¤§" -#: templates/index.php:77 +#: templates/index.php:105 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "你試圖上傳的檔案已超éŽä¼ºæœå™¨çš„最大容é‡é™åˆ¶ã€‚ " -#: templates/index.php:82 +#: templates/index.php:110 msgid "Files are being scanned, please wait." msgstr "正在掃æ檔案,請ç¨ç­‰ã€‚" -#: templates/index.php:85 +#: templates/index.php:113 msgid "Current scanning" msgstr "ç›®å‰æŽƒæ" diff --git a/l10n/zh_TW/files_external.po b/l10n/zh_TW/files_external.po index ee66860464bb4bede757465dc38f44ed554beefe..ceb2a6c3633c435229af6bfdc99fcb65c46d4980 100644 --- a/l10n/zh_TW/files_external.po +++ b/l10n/zh_TW/files_external.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-28 00:10+0100\n" +"PO-Revision-Date: 2012-11-27 14:30+0000\n" +"Last-Translator: dw4dev \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -43,11 +44,11 @@ msgstr "" #: templates/settings.php:3 msgid "External Storage" -msgstr "" +msgstr "外部儲存è£ç½®" #: templates/settings.php:7 templates/settings.php:19 msgid "Mount point" -msgstr "" +msgstr "掛載點" #: templates/settings.php:8 msgid "Backend" @@ -71,23 +72,23 @@ msgstr "" #: templates/settings.php:54 templates/settings.php:62 msgid "None set" -msgstr "" +msgstr "尚未設定" #: templates/settings.php:63 msgid "All Users" -msgstr "" +msgstr "所有使用者" #: templates/settings.php:64 msgid "Groups" -msgstr "" +msgstr "群組" #: templates/settings.php:69 msgid "Users" -msgstr "" +msgstr "使用者" #: templates/settings.php:77 templates/settings.php:107 msgid "Delete" -msgstr "" +msgstr "刪除" #: templates/settings.php:87 msgid "Enable User External Storage" @@ -103,4 +104,4 @@ msgstr "" #: templates/settings.php:113 msgid "Import Root Certificate" -msgstr "" +msgstr "匯入根憑證" diff --git a/l10n/zh_TW/files_pdfviewer.po b/l10n/zh_TW/files_pdfviewer.po deleted file mode 100644 index 9bccfd7d921d975494ec9e4ff19eaf5c43332387..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/files_pdfviewer.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/viewer.js:22 -msgid "Previous" -msgstr "" - -#: js/viewer.js:23 -msgid "Next" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Width" -msgstr "" - -#: js/viewer.js:29 -msgid "Page Fit" -msgstr "" - -#: js/viewer.js:30 -msgid "Print" -msgstr "" - -#: js/viewer.js:32 -msgid "Download" -msgstr "" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index 8db01e4d10823ebf066636b31c7379664f4e2b8d..01ec04db5b4c09c7b9f7424c2b33663a88ec2c1f 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-28 00:10+0100\n" +"PO-Revision-Date: 2012-11-27 14:28+0000\n" +"Last-Translator: dw4dev \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,24 +27,24 @@ msgstr "密碼" msgid "Submit" msgstr "é€å‡º" -#: templates/public.php:9 +#: templates/public.php:17 #, php-format msgid "%s shared the folder %s with you" -msgstr "" +msgstr "%s 分享了資料夾 %s 給您" -#: templates/public.php:11 +#: templates/public.php:19 #, php-format msgid "%s shared the file %s with you" -msgstr "" +msgstr "%s 分享了檔案 %s 給您" -#: templates/public.php:14 templates/public.php:30 +#: templates/public.php:22 templates/public.php:38 msgid "Download" msgstr "下載" -#: templates/public.php:29 +#: templates/public.php:37 msgid "No preview available for" msgstr "無法é è¦½" -#: templates/public.php:37 +#: templates/public.php:43 msgid "web services under your control" msgstr "" diff --git a/l10n/zh_TW/files_texteditor.po b/l10n/zh_TW/files_texteditor.po deleted file mode 100644 index e57c25f2796d053cc4251fea29cccf3288f0daaa..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/files_texteditor.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/aceeditor/mode-coldfusion-uncompressed.js:1568 -#: js/aceeditor/mode-liquid-uncompressed.js:902 -#: js/aceeditor/mode-svg-uncompressed.js:1575 -msgid "regex" -msgstr "" - -#: js/editor.js:72 js/editor.js:156 js/editor.js:163 -msgid "Save" -msgstr "" - -#: js/editor.js:74 -msgid "Close" -msgstr "" - -#: js/editor.js:149 -msgid "Saving..." -msgstr "" - -#: js/editor.js:239 -msgid "An error occurred!" -msgstr "" - -#: js/editor.js:266 -msgid "There were unsaved changes, click here to go back" -msgstr "" diff --git a/l10n/zh_TW/files_versions.po b/l10n/zh_TW/files_versions.po index ed8a55656760411be88959f5097282346638a756..de8f14754433e261c559ee5b6647f53c826590e8 100644 --- a/l10n/zh_TW/files_versions.po +++ b/l10n/zh_TW/files_versions.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-29 00:04+0100\n" +"PO-Revision-Date: 2012-11-28 01:33+0000\n" +"Last-Translator: dw4dev \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,15 +20,15 @@ msgstr "" #: js/settings-personal.js:31 templates/settings-personal.php:10 msgid "Expire all versions" -msgstr "" +msgstr "所有逾期的版本" #: js/versions.js:16 msgid "History" -msgstr "" +msgstr "æ­·å²" #: templates/settings-personal.php:4 msgid "Versions" -msgstr "" +msgstr "版本" #: templates/settings-personal.php:7 msgid "This will delete all existing backup versions of your files" @@ -35,8 +36,8 @@ msgstr "" #: templates/settings.php:3 msgid "Files Versioning" -msgstr "" +msgstr "檔案版本化中..." #: templates/settings.php:4 msgid "Enable" -msgstr "" +msgstr "啟用" diff --git a/l10n/zh_TW/gallery.po b/l10n/zh_TW/gallery.po deleted file mode 100644 index 6f7fa99d1ef398301eb077d7644190bea33ba0d7..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/gallery.po +++ /dev/null @@ -1,95 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Donahue Chuang , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.net/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:37 -msgid "Pictures" -msgstr "圖片" - -#: js/album_cover.js:44 -msgid "Share gallery" -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 js/album_cover.js:133 -msgid "Error: " -msgstr "" - -#: js/album_cover.js:64 js/album_cover.js:100 -msgid "Internal error" -msgstr "" - -#: js/album_cover.js:114 -msgid "Scanning root" -msgstr "" - -#: js/album_cover.js:115 -msgid "Default order" -msgstr "" - -#: js/album_cover.js:116 -msgid "Ascending" -msgstr "" - -#: js/album_cover.js:116 -msgid "Descending" -msgstr "" - -#: js/album_cover.js:117 templates/index.php:19 -msgid "Settings" -msgstr "設定" - -#: js/album_cover.js:122 -msgid "Scanning root cannot be empty" -msgstr "" - -#: js/album_cover.js:122 js/album_cover.js:133 -msgid "Error" -msgstr "" - -#: templates/index.php:16 -msgid "Rescan" -msgstr "é‡æ–°æŽƒæ" - -#: templates/index.php:17 -msgid "Stop" -msgstr "åœæ­¢" - -#: templates/index.php:18 -msgid "Share" -msgstr "分享" - -#: templates/view_album.php:19 -msgid "Back" -msgstr "返回" - -#: templates/view_album.php:36 -msgid "Remove confirmation" -msgstr "移除確èª" - -#: templates/view_album.php:37 -msgid "Do you want to remove album" -msgstr "你確定è¦ç§»é™¤ç›¸ç°¿å—Ž" - -#: templates/view_album.php:40 -msgid "Change album name" -msgstr "變更相簿å稱" - -#: templates/view_album.php:43 -msgid "New album name" -msgstr "新相簿å稱" diff --git a/l10n/zh_TW/impress.po b/l10n/zh_TW/impress.po deleted file mode 100644 index c7925b09e306a878b9771571b29afa9658ad12f9..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/impress.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/presentations.php:7 -msgid "Documentation" -msgstr "" diff --git a/l10n/zh_TW/lib.po b/l10n/zh_TW/lib.po index 7e0c4b47b6474a8574b63ecde38255a0fca2f784..2bc0c14b6c027aa6cde0a0c3ee3bf9685847cd79 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/lib.po @@ -3,59 +3,60 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. # , 2012. # ywang , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-02 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 13:47+0000\n" -"Last-Translator: ywang \n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-11-26 09:03+0000\n" +"Last-Translator: sofiasu \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:288 +#: app.php:285 msgid "Help" msgstr "說明" -#: app.php:295 +#: app.php:292 msgid "Personal" msgstr "個人" -#: app.php:300 +#: app.php:297 msgid "Settings" msgstr "設定" -#: app.php:305 +#: app.php:302 msgid "Users" msgstr "使用者" -#: app.php:312 +#: app.php:309 msgid "Apps" msgstr "應用程å¼" -#: app.php:314 +#: app.php:311 msgid "Admin" msgstr "管ç†" -#: files.php:280 +#: files.php:361 msgid "ZIP download is turned off." msgstr "ZIP 下載已關閉" -#: files.php:281 +#: files.php:362 msgid "Files need to be downloaded one by one." msgstr "檔案需è¦é€ä¸€ä¸‹è¼‰" -#: files.php:281 files.php:306 +#: files.php:362 files.php:387 msgid "Back to Files" msgstr "回到檔案列表" -#: files.php:305 +#: files.php:386 msgid "Selected files too large to generate zip file." msgstr "é¸æ“‡çš„檔案太大以致於無法產生壓縮檔" @@ -63,7 +64,7 @@ msgstr "é¸æ“‡çš„檔案太大以致於無法產生壓縮檔" msgid "Application is not enabled" msgstr "應用程å¼æœªå•Ÿç”¨" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:64 json.php:77 json.php:89 msgid "Authentication error" msgstr "èªè­‰éŒ¯èª¤" @@ -71,57 +72,84 @@ msgstr "èªè­‰éŒ¯èª¤" msgid "Token expired. Please reload page." msgstr "Token éŽæœŸ. è«‹é‡æ–°æ•´ç†é é¢" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "檔案" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "文字" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "圖片" + +#: template.php:103 msgid "seconds ago" msgstr "幾秒å‰" -#: template.php:87 +#: template.php:104 msgid "1 minute ago" msgstr "1 分é˜å‰" -#: template.php:88 +#: template.php:105 #, php-format msgid "%d minutes ago" msgstr "%d 分é˜å‰" -#: template.php:91 +#: template.php:106 +msgid "1 hour ago" +msgstr "1å°æ™‚之å‰" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "%då°æ™‚之å‰" + +#: template.php:108 msgid "today" msgstr "今天" -#: template.php:92 +#: template.php:109 msgid "yesterday" msgstr "昨天" -#: template.php:93 +#: template.php:110 #, php-format msgid "%d days ago" msgstr "%d 天å‰" -#: template.php:94 +#: template.php:111 msgid "last month" msgstr "上個月" -#: template.php:95 -msgid "months ago" -msgstr "幾個月å‰" +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "%d個月之å‰" -#: template.php:96 +#: template.php:113 msgid "last year" msgstr "去年" -#: template.php:97 +#: template.php:114 msgid "years ago" msgstr "幾年å‰" -#: updater.php:66 +#: updater.php:75 #, php-format msgid "%s is available. Get more information" msgstr "%s 已經å¯ç”¨. å–å¾— 更多資訊" -#: updater.php:68 +#: updater.php:77 msgid "up to date" msgstr "最新的" -#: updater.php:71 +#: updater.php:80 msgid "updates check is disabled" msgstr "檢查更新已åœç”¨" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "找ä¸åˆ°åˆ†é¡ž-\"%s\"" diff --git a/l10n/zh_TW/media.po b/l10n/zh_TW/media.po deleted file mode 100644 index eb9a0eb1142e2c0f7d427e824b98bc7587d1e18b..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/media.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Donahue Chuang , 2012. -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-06-06 00:12+0200\n" -"PO-Revision-Date: 2012-06-05 22:15+0000\n" -"Last-Translator: icewind \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.net/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: appinfo/app.php:32 templates/player.php:8 -msgid "Music" -msgstr "音樂" - -#: js/music.js:18 -msgid "Add album to playlist" -msgstr "" - -#: templates/music.php:3 templates/player.php:12 -msgid "Play" -msgstr "播放" - -#: templates/music.php:4 templates/music.php:26 templates/player.php:13 -msgid "Pause" -msgstr "æš«åœ" - -#: templates/music.php:5 -msgid "Previous" -msgstr "上一首" - -#: templates/music.php:6 templates/player.php:14 -msgid "Next" -msgstr "下一首" - -#: templates/music.php:7 -msgid "Mute" -msgstr "éœéŸ³" - -#: templates/music.php:8 -msgid "Unmute" -msgstr "å–消éœéŸ³" - -#: templates/music.php:25 -msgid "Rescan Collection" -msgstr "é‡æ–°æŽƒæ收è—" - -#: templates/music.php:37 -msgid "Artist" -msgstr "è—人" - -#: templates/music.php:38 -msgid "Album" -msgstr "專輯" - -#: templates/music.php:39 -msgid "Title" -msgstr "標題" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index 721a0ee82c3d8f00a6f3779bfa61b115cf868c79..cc8fc8f62b29bb1ad4b3c1e1633207349e60a7fd 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/settings.po @@ -4,6 +4,8 @@ # # Translators: # Donahue Chuang , 2012. +# , 2012. +# , 2012. # , 2012. # , 2012. # ywang , 2012. @@ -11,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: dw4dev \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,70 +23,73 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "無法從 App Store 讀å–清單" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 -msgid "Authentication error" -msgstr "èªè­‰éŒ¯èª¤" - -#: ajax/creategroup.php:19 +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "群組已存在" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "群組增加失敗" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:12 msgid "Could not enable app. " -msgstr "" +msgstr "未能啟動此app" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "Email已儲存" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "無效的email" -#: ajax/openid.php:16 +#: ajax/openid.php:13 msgid "OpenID Changed" msgstr "OpenID 已變更" -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" msgstr "無效請求" -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "群組刪除錯誤" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "èªè­‰éŒ¯èª¤" + +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "使用者刪除錯誤" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "語言已變更" -#: ajax/togglegroups.php:25 +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "管ç†è€…帳號無法從管ç†è€…群組中移除" + +#: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" msgstr "使用者加入群組%s錯誤" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "使用者移出群組%s錯誤" -#: js/apps.js:28 js/apps.js:65 +#: js/apps.js:28 js/apps.js:67 msgid "Disable" msgstr "åœç”¨" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:28 js/apps.js:55 msgid "Enable" msgstr "啟用" @@ -92,104 +97,17 @@ msgstr "啟用" msgid "Saving..." msgstr "儲存中..." -#: personal.php:47 personal.php:48 +#: personal.php:42 personal.php:43 msgid "__language_name__" msgstr "__語言_å稱__" -#: templates/admin.php:14 -msgid "Security Warning" -msgstr "安全性警告" - -#: templates/admin.php:17 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "" - -#: templates/admin.php:31 -msgid "Cron" -msgstr "定期執行" - -#: templates/admin.php:37 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:43 -msgid "" -"cron.php is registered at a webcron service. Call the cron.php page in the " -"owncloud root once a minute over http." -msgstr "" - -#: templates/admin.php:49 -msgid "" -"Use systems cron service. Call the cron.php file in the owncloud folder via " -"a system cronjob once a minute." -msgstr "" - -#: templates/admin.php:56 -msgid "Sharing" -msgstr "" - -#: templates/admin.php:61 -msgid "Enable Share API" -msgstr "" - -#: templates/admin.php:62 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:67 -msgid "Allow links" -msgstr "å…許連çµ" - -#: templates/admin.php:68 -msgid "Allow users to share items to the public with links" -msgstr "å…許使用者以çµé€£å…¬é–‹åˆ†äº«æª”案" - -#: templates/admin.php:73 -msgid "Allow resharing" -msgstr "å…許轉貼分享" - -#: templates/admin.php:74 -msgid "Allow users to share items shared with them again" -msgstr "å…許使用者轉貼共享檔案" - -#: templates/admin.php:79 -msgid "Allow users to share with anyone" -msgstr "å…許使用者公開分享" - -#: templates/admin.php:81 -msgid "Allow users to only share with users in their groups" -msgstr "僅å…許使用者在群組內分享" - -#: templates/admin.php:88 -msgid "Log" -msgstr "紀錄" - -#: templates/admin.php:116 -msgid "More" -msgstr "更多" - -#: templates/admin.php:124 -msgid "" -"Developed by the ownCloud community, the source code is " -"licensed under the AGPL." -msgstr "" - #: templates/apps.php:10 msgid "Add your App" msgstr "添加你的 App" #: templates/apps.php:11 msgid "More Apps" -msgstr "" +msgstr "更多Apps" #: templates/apps.php:27 msgid "Select an App" @@ -201,7 +119,7 @@ msgstr "查看應用程å¼é é¢æ–¼ apps.owncloud.com" #: templates/apps.php:32 msgid "-licensed by " -msgstr "" +msgstr "-核准: " #: templates/help.php:9 msgid "Documentation" @@ -215,22 +133,22 @@ msgstr "管ç†å¤§æª”案" msgid "Ask a question" msgstr "æå•" -#: templates/help.php:23 +#: templates/help.php:22 msgid "Problems connecting to help database." -msgstr "連接到求助資料庫發生å•é¡Œ" +msgstr "連接到求助資料庫時發生å•é¡Œ" -#: templates/help.php:24 +#: templates/help.php:23 msgid "Go there manually." msgstr "手動å‰å¾€" -#: templates/help.php:32 +#: templates/help.php:31 msgid "Answer" msgstr "答案" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" -msgstr "" +msgid "You have used %s of the available %s" +msgstr "您已經使用了 %s ,目å‰å¯ç”¨ç©ºé–“為 %s" #: templates/personal.php:12 msgid "Desktop and Mobile Syncing Clients" @@ -242,7 +160,7 @@ msgstr "下載" #: templates/personal.php:19 msgid "Your password was changed" -msgstr "" +msgstr "你的密碼已更改" #: templates/personal.php:20 msgid "Unable to change your password" @@ -288,6 +206,16 @@ msgstr "幫助翻譯" msgid "use this address to connect to your ownCloud in your file manager" msgstr "使用這個ä½å€åŽ»é€£æŽ¥åˆ°ä½ çš„ç§æœ‰é›²æª”案管ç†å“¡" +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "ç”±ownCloud 社å€é–‹ç™¼ï¼Œæºä»£ç¢¼åœ¨AGPL許å¯è­‰ä¸‹ç™¼å¸ƒã€‚" + #: templates/users.php:21 templates/users.php:76 msgid "Name" msgstr "å稱" diff --git a/l10n/zh_TW/tasks.po b/l10n/zh_TW/tasks.po deleted file mode 100644 index 10432eca2dfb9595bf1b96f0d73eabb3996a6a0b..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/tasks.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:44+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ajax/update_property.php:51 lib/app.php:89 lib/app.php:101 -msgid "Invalid date/time" -msgstr "" - -#: appinfo/app.php:11 -msgid "Tasks" -msgstr "" - -#: js/tasks.js:415 -msgid "No category" -msgstr "" - -#: lib/app.php:33 -msgid "Unspecified" -msgstr "" - -#: lib/app.php:34 -msgid "1=highest" -msgstr "" - -#: lib/app.php:38 -msgid "5=medium" -msgstr "" - -#: lib/app.php:42 -msgid "9=lowest" -msgstr "" - -#: lib/app.php:81 -msgid "Empty Summary" -msgstr "" - -#: lib/app.php:93 -msgid "Invalid percent complete" -msgstr "" - -#: lib/app.php:107 -msgid "Invalid priority" -msgstr "" - -#: templates/tasks.php:3 -msgid "Add Task" -msgstr "" - -#: templates/tasks.php:4 -msgid "Order Due" -msgstr "" - -#: templates/tasks.php:5 -msgid "Order List" -msgstr "" - -#: templates/tasks.php:6 -msgid "Order Complete" -msgstr "" - -#: templates/tasks.php:7 -msgid "Order Location" -msgstr "" - -#: templates/tasks.php:8 -msgid "Order Priority" -msgstr "" - -#: templates/tasks.php:9 -msgid "Order Label" -msgstr "" - -#: templates/tasks.php:16 -msgid "Loading tasks..." -msgstr "" - -#: templates/tasks.php:20 -msgid "Important" -msgstr "" - -#: templates/tasks.php:23 -msgid "More" -msgstr "" - -#: templates/tasks.php:26 -msgid "Less" -msgstr "" - -#: templates/tasks.php:29 -msgid "Delete" -msgstr "" diff --git a/l10n/zh_TW/user_ldap.po b/l10n/zh_TW/user_ldap.po index f57f67dde9eaef806f6f0d7b7d6c792f8ea993ea..ca4a4be144c0f1b4fcfd9e1757f31444ecae54eb 100644 --- a/l10n/zh_TW/user_ldap.po +++ b/l10n/zh_TW/user_ldap.po @@ -3,19 +3,20 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2012-11-28 00:10+0100\n" +"PO-Revision-Date: 2012-11-27 14:32+0000\n" +"Last-Translator: dw4dev \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: templates/settings.php:8 msgid "Host" @@ -47,7 +48,7 @@ msgstr "" #: templates/settings.php:11 msgid "Password" -msgstr "" +msgstr "密碼" #: templates/settings.php:11 msgid "For anonymous access, leave DN and Password empty." @@ -111,7 +112,7 @@ msgstr "" #: templates/settings.php:21 msgid "Use TLS" -msgstr "" +msgstr "使用TLS" #: templates/settings.php:21 msgid "Do not use it for SSL connections, it will fail." @@ -123,7 +124,7 @@ msgstr "" #: templates/settings.php:23 msgid "Turn off SSL certificate validation." -msgstr "" +msgstr "關閉 SSL 憑證驗證" #: templates/settings.php:23 msgid "" @@ -167,4 +168,4 @@ msgstr "" #: templates/settings.php:32 msgid "Help" -msgstr "" +msgstr "說明" diff --git a/l10n/zh_TW/user_migrate.po b/l10n/zh_TW/user_migrate.po deleted file mode 100644 index 005fbe5e715f0af1e4e35272e18d582495da2e84..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/user_migrate.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: js/export.js:14 js/export.js:20 -msgid "Export" -msgstr "" - -#: js/export.js:19 -msgid "Something went wrong while the export file was being generated" -msgstr "" - -#: js/export.js:19 -msgid "An error has occurred" -msgstr "" - -#: templates/settings.php:2 -msgid "Export your user account" -msgstr "" - -#: templates/settings.php:3 -msgid "" -"This will create a compressed file that contains your ownCloud account." -msgstr "" - -#: templates/settings.php:13 -msgid "Import user account" -msgstr "" - -#: templates/settings.php:15 -msgid "ownCloud User Zip" -msgstr "" - -#: templates/settings.php:17 -msgid "Import" -msgstr "" diff --git a/l10n/zh_TW/user_openid.po b/l10n/zh_TW/user_openid.po deleted file mode 100644 index ca26a19dbf317e2923d51fcaacad68e5cde2fa84..0000000000000000000000000000000000000000 --- a/l10n/zh_TW/user_openid.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: templates/nomode.php:12 -msgid "This is an OpenID server endpoint. For more information, see " -msgstr "" - -#: templates/nomode.php:14 -msgid "Identity: " -msgstr "" - -#: templates/nomode.php:15 -msgid "Realm: " -msgstr "" - -#: templates/nomode.php:16 -msgid "User: " -msgstr "" - -#: templates/nomode.php:17 -msgid "Login" -msgstr "" - -#: templates/nomode.php:22 -msgid "Error: No user Selected" -msgstr "" - -#: templates/settings.php:4 -msgid "you can authenticate to other sites with this address" -msgstr "" - -#: templates/settings.php:5 -msgid "Authorized OpenID provider" -msgstr "" - -#: templates/settings.php:6 -msgid "Your address at Wordpress, Identi.ca, …" -msgstr "" diff --git a/l10n/zh_TW/files_odfviewer.po b/l10n/zh_TW/user_webdavauth.po similarity index 62% rename from l10n/zh_TW/files_odfviewer.po rename to l10n/zh_TW/user_webdavauth.po index 2327d1c14a076e0a2f6448f92a1d0059906b8ddb..5a191f76b2b1849982f20d4e581f0f64b32709b2 100644 --- a/l10n/zh_TW/files_odfviewer.po +++ b/l10n/zh_TW/user_webdavauth.po @@ -3,20 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 02:18+0200\n" -"PO-Revision-Date: 2012-08-26 00:19+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2012-11-27 00:10+0100\n" +"PO-Revision-Date: 2012-11-26 09:00+0000\n" +"Last-Translator: sofiasu \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: js/viewer.js:9 -msgid "Close" -msgstr "" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" +msgstr "WebDAV ç¶²å€ http://" diff --git a/l10n/zu_ZA/core.po b/l10n/zu_ZA/core.po new file mode 100644 index 0000000000000000000000000000000000000000..f754fe7ccdf5ca285c68de3f8f3e9bc990e2e4aa --- /dev/null +++ b/l10n/zu_ZA/core.po @@ -0,0 +1,539 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:37 +msgid "This category already exists: " +msgstr "" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60 +msgid "Settings" +msgstr "" + +#: js/js.js:688 +msgid "seconds ago" +msgstr "" + +#: js/js.js:689 +msgid "1 minute ago" +msgstr "" + +#: js/js.js:690 +msgid "{minutes} minutes ago" +msgstr "" + +#: js/js.js:691 +msgid "1 hour ago" +msgstr "" + +#: js/js.js:692 +msgid "{hours} hours ago" +msgstr "" + +#: js/js.js:693 +msgid "today" +msgstr "" + +#: js/js.js:694 +msgid "yesterday" +msgstr "" + +#: js/js.js:695 +msgid "{days} days ago" +msgstr "" + +#: js/js.js:696 +msgid "last month" +msgstr "" + +#: js/js.js:697 +msgid "{months} months ago" +msgstr "" + +#: js/js.js:698 +msgid "months ago" +msgstr "" + +#: js/js.js:699 +msgid "last year" +msgstr "" + +#: js/js.js:700 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:135 js/share.js:142 js/share.js:525 +#: js/share.js:537 +msgid "Error" +msgstr "" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:124 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:135 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:142 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:151 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:153 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:158 +msgid "Share with" +msgstr "" + +#: js/share.js:163 +msgid "Share with link" +msgstr "" + +#: js/share.js:164 +msgid "Password protect" +msgstr "" + +#: js/share.js:168 templates/installation.php:42 templates/login.php:24 +#: templates/verify.php:13 +msgid "Password" +msgstr "" + +#: js/share.js:173 +msgid "Set expiration date" +msgstr "" + +#: js/share.js:174 +msgid "Expiration date" +msgstr "" + +#: js/share.js:206 +msgid "Share via email:" +msgstr "" + +#: js/share.js:208 +msgid "No people found" +msgstr "" + +#: js/share.js:235 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:271 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:292 +msgid "Unshare" +msgstr "" + +#: js/share.js:304 +msgid "can edit" +msgstr "" + +#: js/share.js:306 +msgid "access control" +msgstr "" + +#: js/share.js:309 +msgid "create" +msgstr "" + +#: js/share.js:312 +msgid "update" +msgstr "" + +#: js/share.js:315 +msgid "delete" +msgstr "" + +#: js/share.js:318 +msgid "share" +msgstr "" + +#: js/share.js:343 js/share.js:512 js/share.js:514 +msgid "Password protected" +msgstr "" + +#: js/share.js:525 +msgid "Error unsetting expiration date" +msgstr "" + +#: js/share.js:537 +msgid "Error setting expiration date" +msgstr "" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:38 +#: templates/login.php:20 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "" + +#: templates/installation.php:23 templates/installation.php:31 +msgid "Security Warning" +msgstr "" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:26 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file that ownCloud provides is not working. We " +"strongly suggest that you configure your webserver in a way that the data " +"directory is no longer accessible or you move the data directory outside the" +" webserver document root." +msgstr "" + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:48 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:50 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:57 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:62 templates/installation.php:73 +#: templates/installation.php:83 templates/installation.php:93 +msgid "will be used" +msgstr "" + +#: templates/installation.php:105 +msgid "Database user" +msgstr "" + +#: templates/installation.php:109 +msgid "Database password" +msgstr "" + +#: templates/installation.php:113 +msgid "Database name" +msgstr "" + +#: templates/installation.php:121 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:127 +msgid "Database host" +msgstr "" + +#: templates/installation.php:132 +msgid "Finish setup" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Sunday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Monday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Tuesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Wednesday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Thursday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Friday" +msgstr "" + +#: templates/layout.guest.php:15 templates/layout.user.php:16 +msgid "Saturday" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "January" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "February" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "March" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "April" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "May" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "June" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "July" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "August" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "September" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "October" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "November" +msgstr "" + +#: templates/layout.guest.php:16 templates/layout.user.php:17 +msgid "December" +msgstr "" + +#: templates/layout.guest.php:41 +msgid "web services under your control" +msgstr "" + +#: templates/layout.user.php:44 +msgid "Log out" +msgstr "" + +#: templates/login.php:8 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:9 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:10 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:15 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:27 +msgid "remember" +msgstr "" + +#: templates/login.php:28 +msgid "Log in" +msgstr "" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "" + +#: templates/verify.php:5 +msgid "Security Warning!" +msgstr "" + +#: templates/verify.php:6 +msgid "" +"Please verify your password.
            For security reasons you may be " +"occasionally asked to enter your password again." +msgstr "" + +#: templates/verify.php:16 +msgid "Verify" +msgstr "" diff --git a/l10n/zu_ZA/files.po b/l10n/zu_ZA/files.po new file mode 100644 index 0000000000000000000000000000000000000000..078ee8781efd1daabd11613c5ee5bbb8980a592f --- /dev/null +++ b/l10n/zu_ZA/files.po @@ -0,0 +1,266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-01 00:01+0100\n" +"PO-Revision-Date: 2012-11-30 23:02+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:21 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:23 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:26 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:27 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:28 +msgid "Failed to write to disk" +msgstr "" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "" + +#: js/fileactions.js:117 templates/index.php:83 templates/index.php:84 +msgid "Unshare" +msgstr "" + +#: js/fileactions.js:119 templates/index.php:89 templates/index.php:90 +msgid "Delete" +msgstr "" + +#: js/fileactions.js:181 +msgid "Rename" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "replace" +msgstr "" + +#: js/filelist.js:201 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:201 js/filelist.js:203 +msgid "cancel" +msgstr "" + +#: js/filelist.js:250 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:250 js/filelist.js:252 js/filelist.js:284 js/filelist.js:286 +msgid "undo" +msgstr "" + +#: js/filelist.js:252 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:284 +msgid "unshared {files}" +msgstr "" + +#: js/filelist.js:286 +msgid "deleted {files}" +msgstr "" + +#: js/files.js:33 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:183 +msgid "generating ZIP-file, it may take some time." +msgstr "" + +#: js/files.js:218 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/files.js:218 +msgid "Upload Error" +msgstr "" + +#: js/files.js:235 +msgid "Close" +msgstr "" + +#: js/files.js:254 js/files.js:368 js/files.js:398 +msgid "Pending" +msgstr "" + +#: js/files.js:274 +msgid "1 file uploading" +msgstr "" + +#: js/files.js:277 js/files.js:331 js/files.js:346 +msgid "{count} files uploading" +msgstr "" + +#: js/files.js:349 js/files.js:382 +msgid "Upload cancelled." +msgstr "" + +#: js/files.js:451 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "" + +#: js/files.js:523 +msgid "Invalid folder name. Usage of \"Shared\" is reserved by Owncloud" +msgstr "" + +#: js/files.js:704 +msgid "{count} files scanned" +msgstr "" + +#: js/files.js:712 +msgid "error while scanning" +msgstr "" + +#: js/files.js:785 templates/index.php:65 +msgid "Name" +msgstr "" + +#: js/files.js:786 templates/index.php:76 +msgid "Size" +msgstr "" + +#: js/files.js:787 templates/index.php:78 +msgid "Modified" +msgstr "" + +#: js/files.js:814 +msgid "1 folder" +msgstr "" + +#: js/files.js:816 +msgid "{count} folders" +msgstr "" + +#: js/files.js:824 +msgid "1 file" +msgstr "" + +#: js/files.js:826 +msgid "{count} files" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:9 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:12 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:14 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:17 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:19 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/admin.php:23 +msgid "Save" +msgstr "" + +#: templates/index.php:7 +msgid "New" +msgstr "" + +#: templates/index.php:10 +msgid "Text file" +msgstr "" + +#: templates/index.php:12 +msgid "Folder" +msgstr "" + +#: templates/index.php:14 +msgid "From link" +msgstr "" + +#: templates/index.php:35 +msgid "Upload" +msgstr "" + +#: templates/index.php:43 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:57 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:71 +msgid "Download" +msgstr "" + +#: templates/index.php:103 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:105 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:110 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:113 +msgid "Current scanning" +msgstr "" diff --git a/l10n/id/admin_migrate.po b/l10n/zu_ZA/files_encryption.po similarity index 52% rename from l10n/id/admin_migrate.po rename to l10n/zu_ZA/files_encryption.po index 52a6b1908b9d886233a2cfc467b564b9dbe9d4f9..eb5d7a228c6dcffcb27850d525226bf53102031a 100644 --- a/l10n/id/admin_migrate.po +++ b/l10n/zu_ZA/files_encryption.po @@ -7,26 +7,28 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:32+0000\n" +"POT-Creation-Date: 2012-11-06 00:00+0100\n" +"PO-Revision-Date: 2012-08-12 22:33+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: templates/settings.php:3 -msgid "Export this ownCloud instance" +msgid "Encryption" msgstr "" #: templates/settings.php:4 -msgid "" -"This will create a compressed file that contains the data of this owncloud instance.\n" -" Please choose the export type:" +msgid "Exclude the following file types from encryption" +msgstr "" + +#: templates/settings.php:5 +msgid "None" msgstr "" -#: templates/settings.php:12 -msgid "Export" +#: templates/settings.php:10 +msgid "Enable Encryption" msgstr "" diff --git a/l10n/zu_ZA/files_external.po b/l10n/zu_ZA/files_external.po new file mode 100644 index 0000000000000000000000000000000000000000..a049eb976de1c41638acfbdbb4106eb18413d129 --- /dev/null +++ b/l10n/zu_ZA/files_external.po @@ -0,0 +1,106 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-06 00:00+0100\n" +"PO-Revision-Date: 2012-08-12 22:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "" + +#: templates/settings.php:7 templates/settings.php:19 +msgid "Mount point" +msgstr "" + +#: templates/settings.php:8 +msgid "Backend" +msgstr "" + +#: templates/settings.php:9 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:10 +msgid "Options" +msgstr "" + +#: templates/settings.php:11 +msgid "Applicable" +msgstr "" + +#: templates/settings.php:23 +msgid "Add mount point" +msgstr "" + +#: templates/settings.php:54 templates/settings.php:62 +msgid "None set" +msgstr "" + +#: templates/settings.php:63 +msgid "All Users" +msgstr "" + +#: templates/settings.php:64 +msgid "Groups" +msgstr "" + +#: templates/settings.php:69 +msgid "Users" +msgstr "" + +#: templates/settings.php:77 templates/settings.php:107 +msgid "Delete" +msgstr "" + +#: templates/settings.php:87 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:88 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:99 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:113 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/zu_ZA/files_sharing.po b/l10n/zu_ZA/files_sharing.po new file mode 100644 index 0000000000000000000000000000000000000000..d6c87989f1548db2b385a26df00dbd524cbc1b90 --- /dev/null +++ b/l10n/zu_ZA/files_sharing.po @@ -0,0 +1,48 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-06 00:00+0100\n" +"PO-Revision-Date: 2012-08-12 22:35+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "" diff --git a/l10n/zu_ZA/files_versions.po b/l10n/zu_ZA/files_versions.po new file mode 100644 index 0000000000000000000000000000000000000000..7bc842be41992a7c62d5c5d7c21833477d7069b5 --- /dev/null +++ b/l10n/zu_ZA/files_versions.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-06 00:00+0100\n" +"PO-Revision-Date: 2012-08-12 22:37+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/settings-personal.js:31 templates/settings-personal.php:10 +msgid "Expire all versions" +msgstr "" + +#: js/versions.js:16 +msgid "History" +msgstr "" + +#: templates/settings-personal.php:4 +msgid "Versions" +msgstr "" + +#: templates/settings-personal.php:7 +msgid "This will delete all existing backup versions of your files" +msgstr "" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "" diff --git a/l10n/zu_ZA/lib.po b/l10n/zu_ZA/lib.po new file mode 100644 index 0000000000000000000000000000000000000000..248d04871dac0b11db371ce0834a77548d1e94b9 --- /dev/null +++ b/l10n/zu_ZA/lib.po @@ -0,0 +1,152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-16 00:02+0100\n" +"PO-Revision-Date: 2012-11-14 23:13+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app.php:285 +msgid "Help" +msgstr "" + +#: app.php:292 +msgid "Personal" +msgstr "" + +#: app.php:297 +msgid "Settings" +msgstr "" + +#: app.php:302 +msgid "Users" +msgstr "" + +#: app.php:309 +msgid "Apps" +msgstr "" + +#: app.php:311 +msgid "Admin" +msgstr "" + +#: files.php:332 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:333 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:333 files.php:358 +msgid "Back to Files" +msgstr "" + +#: files.php:357 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:64 json.php:77 json.php:89 +msgid "Authentication error" +msgstr "" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: template.php:103 +msgid "seconds ago" +msgstr "" + +#: template.php:104 +msgid "1 minute ago" +msgstr "" + +#: template.php:105 +#, php-format +msgid "%d minutes ago" +msgstr "" + +#: template.php:106 +msgid "1 hour ago" +msgstr "" + +#: template.php:107 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:108 +msgid "today" +msgstr "" + +#: template.php:109 +msgid "yesterday" +msgstr "" + +#: template.php:110 +#, php-format +msgid "%d days ago" +msgstr "" + +#: template.php:111 +msgid "last month" +msgstr "" + +#: template.php:112 +#, php-format +msgid "%d months ago" +msgstr "" + +#: template.php:113 +msgid "last year" +msgstr "" + +#: template.php:114 +msgid "years ago" +msgstr "" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "" + +#: updater.php:77 +msgid "up to date" +msgstr "" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/zu_ZA/settings.po b/l10n/zu_ZA/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..34b89c89036c29fc1d23fd2820dd51eed681fb8c --- /dev/null +++ b/l10n/zu_ZA/settings.po @@ -0,0 +1,247 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-12-03 00:04+0100\n" +"PO-Revision-Date: 2012-12-02 03:18+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "" + +#: ajax/enableapp.php:12 +msgid "Could not enable app. " +msgstr "" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "" + +#: ajax/openid.php:13 +msgid "OpenID Changed" +msgstr "" + +#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "" + +#: ajax/removeuser.php:15 ajax/setquota.php:15 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "" + +#: js/apps.js:28 js/apps.js:67 +msgid "Disable" +msgstr "" + +#: js/apps.js:28 js/apps.js:55 +msgid "Enable" +msgstr "" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "" + +#: personal.php:42 personal.php:43 +msgid "__language_name__" +msgstr "" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "" + +#: templates/apps.php:27 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:31 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:32 +msgid "-licensed by " +msgstr "" + +#: templates/help.php:9 +msgid "Documentation" +msgstr "" + +#: templates/help.php:10 +msgid "Managing Big Files" +msgstr "" + +#: templates/help.php:11 +msgid "Ask a question" +msgstr "" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "" + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "" + +#: templates/help.php:31 +msgid "Answer" +msgstr "" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "" + +#: templates/personal.php:13 +msgid "Download" +msgstr "" + +#: templates/personal.php:19 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "" + +#: templates/personal.php:22 +msgid "New password" +msgstr "" + +#: templates/personal.php:23 +msgid "show" +msgstr "" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "" + +#: templates/personal.php:30 +msgid "Email" +msgstr "" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/personal.php:61 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "" + +#: templates/users.php:32 +msgid "Create" +msgstr "" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "" + +#: templates/users.php:80 templates/users.php:112 +msgid "Group Admin" +msgstr "" + +#: templates/users.php:82 +msgid "Quota" +msgstr "" + +#: templates/users.php:146 +msgid "Delete" +msgstr "" diff --git a/l10n/zu_ZA/user_ldap.po b/l10n/zu_ZA/user_ldap.po new file mode 100644 index 0000000000000000000000000000000000000000..a4f2985ab0ee373a8e1e0cefe7bd9b49c91360fe --- /dev/null +++ b/l10n/zu_ZA/user_ldap.po @@ -0,0 +1,170 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-11-06 00:00+0100\n" +"PO-Revision-Date: 2012-08-12 22:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:8 +msgid "Host" +msgstr "" + +#: templates/settings.php:8 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/settings.php:9 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:9 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:10 +msgid "User DN" +msgstr "" + +#: templates/settings.php:10 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:11 +msgid "Password" +msgstr "" + +#: templates/settings.php:11 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:12 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:12 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:13 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:13 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:13 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:14 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:14 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "" + +#: templates/settings.php:14 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "" + +#: templates/settings.php:17 +msgid "Port" +msgstr "" + +#: templates/settings.php:18 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:19 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:20 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:21 +msgid "Use TLS" +msgstr "" + +#: templates/settings.php:21 +msgid "Do not use it for SSL connections, it will fail." +msgstr "" + +#: templates/settings.php:22 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:23 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:23 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "" + +#: templates/settings.php:23 +msgid "Not recommended, use for testing only." +msgstr "" + +#: templates/settings.php:24 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:24 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:25 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:25 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:27 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:29 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:30 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:32 +msgid "Help" +msgstr "" diff --git a/l10n/ar_SA/impress.po b/l10n/zu_ZA/user_webdavauth.po similarity index 58% rename from l10n/ar_SA/impress.po rename to l10n/zu_ZA/user_webdavauth.po index 5c3c10d5df46c8dc0d93b3485c617bbf9a6ac519..d6cfcb1f9a6c3da360b0e4f98ba10b0c4dddfa02 100644 --- a/l10n/ar_SA/impress.po +++ b/l10n/zu_ZA/user_webdavauth.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-26 01:17+0200\n" -"PO-Revision-Date: 2012-08-25 23:18+0000\n" +"POT-Creation-Date: 2012-11-09 10:06+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/owncloud/language/ar_SA/)\n" +"Language-Team: Zulu (South Africa) (http://www.transifex.com/projects/p/owncloud/language/zu_ZA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ar_SA\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language: zu_ZA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/presentations.php:7 -msgid "Documentation" +#: templates/settings.php:4 +msgid "WebDAV URL: http://" msgstr "" diff --git a/lib/MDB2/Driver/Function/sqlite3.php b/lib/MDB2/Driver/Function/sqlite3.php index 235a106e183df49f3089afe9a30135a8a48c3ccf..4147a48199f54e1bdb1e1f2cc939c3f83790d75e 100644 --- a/lib/MDB2/Driver/Function/sqlite3.php +++ b/lib/MDB2/Driver/Function/sqlite3.php @@ -92,9 +92,9 @@ class MDB2_Driver_Function_sqlite3 extends MDB2_Driver_Function_Common function substring($value, $position = 1, $length = null) { if (!is_null($length)) { - return "substr($value,$position,$length)"; + return "substr($value, $position, $length)"; } - return "substr($value,$position,length($value))"; + return "substr($value, $position, length($value))"; } // }}} diff --git a/lib/MDB2/Driver/Reverse/sqlite3.php b/lib/MDB2/Driver/Reverse/sqlite3.php index 36626478ce81d9be4918c2a699457c871cf0bee8..9703780954904d49165abd82d389f847f986f4d0 100644 --- a/lib/MDB2/Driver/Reverse/sqlite3.php +++ b/lib/MDB2/Driver/Reverse/sqlite3.php @@ -476,7 +476,7 @@ class MDB2_Driver_Reverse_sqlite3 extends MDB2_Driver_Reverse_Common $definition['unique'] = true; $count = count($column_names); for ($i=0; $i<$count; ++$i) { - $column_name = strtok($column_names[$i]," "); + $column_name = strtok($column_names[$i], " "); $collation = strtok(" "); $definition['fields'][$column_name] = array( 'position' => $i+1 diff --git a/lib/MDB2/Driver/sqlite3.php b/lib/MDB2/Driver/sqlite3.php index 9757e4faf941f4dda1737f58bccf6efdc0b3ace2..fa4c91c126993d152b1f7b0d057dd21b12a3decc 100644 --- a/lib/MDB2/Driver/sqlite3.php +++ b/lib/MDB2/Driver/sqlite3.php @@ -153,7 +153,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common if($this->connection) { return $this->connection->escapeString($text); }else{ - return str_replace("'","''",$text);//TODO; more + return str_replace("'", "''", $text);//TODO; more } } @@ -276,7 +276,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common * @access public * @since 2.1.1 */ - function setTransactionIsolation($isolation,$options=array()) + function setTransactionIsolation($isolation, $options=array()) { $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true)); switch ($isolation) { @@ -351,7 +351,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common } if ($database_file !== ':memory:') { - if(!strpos($database_file,'.db')) { + if(!strpos($database_file, '.db')) { $database_file="$datadir/$database_file.db"; } if (!file_exists($database_file)) { @@ -387,7 +387,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common $php_errormsg = ''; $this->connection = new SQLite3($database_file); - if(is_callable(array($this->connection,'busyTimeout'))) {//busy timout is only available in php>=5.3 + if(is_callable(array($this->connection, 'busyTimeout'))) {//busy timout is only available in php>=5.3 $this->connection->busyTimeout(100); } $this->_lasterror = $this->connection->lastErrorMsg(); @@ -397,8 +397,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common } if ($this->fix_assoc_fields_names || - $this->options['portability'] & MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES) - { + $this->options['portability'] & MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES) { $this->connection->exec("PRAGMA short_column_names = 1"); $this->fix_assoc_fields_names = true; } @@ -1142,9 +1141,9 @@ class MDB2_Statement_sqlite3 extends MDB2_Statement_Common function bindValue($parameter, $value, $type = null) { if($type) { $type=$this->getParamType($type); - $this->statement->bindValue($parameter,$value,$type); + $this->statement->bindValue($parameter, $value, $type); }else{ - $this->statement->bindValue($parameter,$value); + $this->statement->bindValue($parameter, $value); } return MDB2_OK; } @@ -1165,9 +1164,9 @@ class MDB2_Statement_sqlite3 extends MDB2_Statement_Common function bindParam($parameter, &$value, $type = null) { if($type) { $type=$this->getParamType($type); - $this->statement->bindParam($parameter,$value,$type); + $this->statement->bindParam($parameter, $value, $type); }else{ - $this->statement->bindParam($parameter,$value); + $this->statement->bindParam($parameter, $value); } return MDB2_OK; } @@ -1318,7 +1317,7 @@ class MDB2_Statement_sqlite3 extends MDB2_Statement_Common }else{ $types=null; } - $err = $this->bindValueArray($values,$types); + $err = $this->bindValueArray($values, $types); if (PEAR::isError($err)) { return $this->db->raiseError(MDB2_ERROR, null, null, 'Binding Values failed with message: ' . $err->getMessage(), __FUNCTION__); diff --git a/lib/app.php b/lib/app.php index 395230156f68c48e626165b2924b6beef51520f0..5d4fbbd9c2322420004b0282cb18a95b65f9c8d0 100755 --- a/lib/app.php +++ b/lib/app.php @@ -63,7 +63,7 @@ class OC_App{ if (!defined('DEBUG') || !DEBUG) { if (is_null($types) - && empty(OC_Util::$core_scripts) + && empty(OC_Util::$core_scripts) && empty(OC_Util::$core_styles)) { OC_Util::$core_scripts = OC_Util::$scripts; OC_Util::$scripts = array(); @@ -92,7 +92,7 @@ class OC_App{ * @param string/array $types * @return bool */ - public static function isType($app,$types) { + public static function isType($app, $types) { if(is_string($types)) { $types=array($types); } @@ -185,7 +185,7 @@ class OC_App{ }else{ $download=OC_OCSClient::getApplicationDownload($app, 1); if(isset($download['downloadlink']) and $download['downloadlink']!='') { - $app=OC_Installer::installApp(array('source'=>'http','href'=>$download['downloadlink'])); + $app=OC_Installer::installApp(array('source'=>'http', 'href'=>$download['downloadlink'])); } } } @@ -253,6 +253,8 @@ class OC_App{ * highlighting the current position of the user. */ public static function setActiveNavigationEntry( $id ) { + // load all the apps, to make sure we have all the navigation entries + self::loadApps(); self::$activeapp = $id; return true; } @@ -282,33 +284,33 @@ class OC_App{ // by default, settings only contain the help menu if(OC_Config::getValue('knowledgebaseenabled', true)==true) { $settings = array( - array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )) + array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkToRoute( "settings_help" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )) ); } // if the user is logged-in if (OC_User::isLoggedIn()) { // personal menu - $settings[] = array( "id" => "personal", "order" => 1, "href" => OC_Helper::linkTo( "settings", "personal.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" )); + $settings[] = array( "id" => "personal", "order" => 1, "href" => OC_Helper::linkToRoute( "settings_personal" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" )); // if there are some settings forms if(!empty(self::$settingsForms)) // settings menu - $settings[]=array( "id" => "settings", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "settings.php" ), "name" => $l->t("Settings"), "icon" => OC_Helper::imagePath( "settings", "settings.svg" )); + $settings[]=array( "id" => "settings", "order" => 1000, "href" => OC_Helper::linkToRoute( "settings_settings" ), "name" => $l->t("Settings"), "icon" => OC_Helper::imagePath( "settings", "settings.svg" )); //SubAdmins are also allowed to access user management if(OC_SubAdmin::isSubAdmin($_SESSION["user_id"]) || OC_Group::inGroup( $_SESSION["user_id"], "admin" )) { // admin users menu - $settings[] = array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "settings", "users.php" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "settings", "users.svg" )); + $settings[] = array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkToRoute( "settings_users" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "settings", "users.svg" )); } // if the user is an admin if(OC_Group::inGroup( $_SESSION["user_id"], "admin" )) { // admin apps menu - $settings[] = array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "settings", "apps.php" ).'?installed', "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "settings", "apps.svg" )); + $settings[] = array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkToRoute( "settings_apps" ).'?installed', "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "settings", "apps.svg" )); - $settings[]=array( "id" => "admin", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "admin.php" ), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath( "settings", "admin.svg" )); + $settings[]=array( "id" => "admin", "order" => 1000, "href" => OC_Helper::linkToRoute( "settings_admin" ), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath( "settings", "admin.svg" )); } } @@ -319,7 +321,6 @@ class OC_App{ /// This is private as well. It simply works, so don't ask for more details private static function proceedNavigation( $list ) { foreach( $list as &$naventry ) { - $naventry['subnavigation'] = array(); if( $naventry['id'] == self::$activeapp ) { $naventry['active'] = true; } @@ -390,9 +391,8 @@ class OC_App{ */ public static function getAppVersion($appid) { $file= self::getAppPath($appid).'/appinfo/version'; - $version=@file_get_contents($file); - if($version) { - return trim($version); + if(is_file($file) && $version = trim(file_get_contents($file))) { + return $version; }else{ $appData=self::getAppInfo($appid); return isset($appData['version'])? $appData['version'] : ''; @@ -406,7 +406,7 @@ class OC_App{ * @return array * @note all data is read from info.xml, not just pre-defined fields */ - public static function getAppInfo($appid,$path=false) { + public static function getAppInfo($appid, $path=false) { if($path) { $file=$appid; }else{ @@ -458,7 +458,7 @@ class OC_App{ } } self::$appInfo[$appid]=$data; - + return $data; } @@ -470,8 +470,6 @@ class OC_App{ * entries are sorted by the key 'order' ascending. Additional to the keys * given for each app the following keys exist: * - active: boolean, signals if the user is on this navigation entry - * - children: array that is empty if the key 'active' is false or - * contains the subentries if the key 'active' is true */ public static function getNavigation() { $navigation = self::proceedNavigation( self::$navigation ); @@ -485,6 +483,12 @@ class OC_App{ public static function getCurrentApp() { $script=substr($_SERVER["SCRIPT_NAME"], strlen(OC::$WEBROOT)+1); $topFolder=substr($script, 0, strpos($script, '/')); + if (empty($topFolder)) { + $path_info = OC_Request::getPathInfo(); + if ($path_info) { + $topFolder=substr($path_info, 1, strpos($path_info, '/', 1)-1); + } + } if($topFolder=='apps') { $length=strlen($topFolder); return substr($script, $length+1, strpos($script, '/', $length+1)-$length-1); @@ -521,21 +525,21 @@ class OC_App{ /** * register a settings form to be shown */ - public static function registerSettings($app,$page) { + public static function registerSettings($app, $page) { self::$settingsForms[]= $app.'/'.$page.'.php'; } /** * register an admin form to be shown */ - public static function registerAdmin($app,$page) { + public static function registerAdmin($app, $page) { self::$adminForms[]= $app.'/'.$page.'.php'; } /** * register a personal form to be shown */ - public static function registerPersonal($app,$page) { + public static function registerPersonal($app, $page) { self::$personalForms[]= $app.'/'.$page.'.php'; } @@ -545,34 +549,31 @@ class OC_App{ * @todo: change the name of this method to getInstalledApps, which is more accurate */ public static function getAllApps() { - + $apps=array(); - + foreach ( OC::$APPSROOTS as $apps_dir ) { if(! is_readable($apps_dir['path'])) { - OC_Log::write('core', 'unable to read app folder : ' .$apps_dir['path'] , OC_Log::WARN); + OC_Log::write('core', 'unable to read app folder : ' .$apps_dir['path'], OC_Log::WARN); continue; } $dh = opendir( $apps_dir['path'] ); - + while( $file = readdir( $dh ) ) { - - if ( - $file[0] != '.' - and is_file($apps_dir['path'].'/'.$file.'/appinfo/app.php' ) - ) { - + + if ($file[0] != '.' and is_file($apps_dir['path'].'/'.$file.'/appinfo/app.php')) { + $apps[] = $file; - + } - + } - + } - + return $apps; } - + /** * @brief: get a list of all apps on apps.owncloud.com * @return array, multi-dimensional array of apps. Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description @@ -584,7 +585,7 @@ class OC_App{ if ( ! $categories = array_keys( $catagoryNames ) ) { return false; } - + $page = 0; $remoteApps = OC_OCSClient::getApplications( $categories, $page, $filter ); $app1 = array(); @@ -659,7 +660,7 @@ class OC_App{ $version = OC_Util::getVersion(); foreach($apps as $app) { // check if the app is compatible with this version of ownCloud - $info = OC_App::getAppInfo($app); + $info = OC_App::getAppInfo($app); if(!isset($info['require']) or (($version[0].'.'.$version[1])>$info['require'])) { OC_Log::write('core', 'App "'.$info['name'].'" ('.$app.') can\'t be used because it is not compatible with this version of ownCloud', OC_Log::ERROR); OC_App::disable( $app ); @@ -689,6 +690,10 @@ class OC_App{ * @param string $appid */ public static function updateApp($appid) { + if(file_exists(self::getAppPath($appid).'/appinfo/preupdate.php')) { + self::loadApp($appid); + include self::getAppPath($appid).'/appinfo/preupdate.php'; + } if(file_exists(self::getAppPath($appid).'/appinfo/database.xml')) { OC_DB::updateDbFromStructure(self::getAppPath($appid).'/appinfo/database.xml'); } diff --git a/lib/appconfig.php b/lib/appconfig.php index 6604e854d5562897901e6884e7eec822d94eb6ef..1f2d576af877c0c2cbea553d258077568a3f6d2e 100644 --- a/lib/appconfig.php +++ b/lib/appconfig.php @@ -107,7 +107,7 @@ class OC_Appconfig{ * @param string $key * @return bool */ - public static function hasKey($app,$key) { + public static function hasKey($app, $key) { $exists = self::getKeys( $app ); return in_array( $key, $exists ); } @@ -123,7 +123,7 @@ class OC_Appconfig{ */ public static function setValue( $app, $key, $value ) { // Does the key exist? yes: update. No: insert - if(! self::hasKey($app,$key)) { + if(! self::hasKey($app, $key)) { $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*appconfig` ( `appid`, `configkey`, `configvalue` ) VALUES( ?, ?, ? )' ); $query->execute( array( $app, $key, $value )); } @@ -170,7 +170,7 @@ class OC_Appconfig{ * @param key * @return array */ - public static function getValues($app,$key) { + public static function getValues($app, $key) { if($app!==false and $key!==false) { return false; } diff --git a/lib/archive.php b/lib/archive.php index a9c245eaf433d0db1d9cc8e806d057b61f1b2d57..61239c82076bb3394b6466aa80363e5807e31ef1 100644 --- a/lib/archive.php +++ b/lib/archive.php @@ -42,14 +42,14 @@ abstract class OC_Archive{ * @param string source either a local file or string data * @return bool */ - abstract function addFile($path,$source=''); + abstract function addFile($path, $source=''); /** * rename a file or folder in the archive * @param string source * @param string dest * @return bool */ - abstract function rename($source,$dest); + abstract function rename($source, $dest); /** * get the uncompressed size of a file in the archive * @param string path @@ -85,7 +85,7 @@ abstract class OC_Archive{ * @param string dest * @return bool */ - abstract function extractFile($path,$dest); + abstract function extractFile($path, $dest); /** * extract the archive * @param string path @@ -111,14 +111,14 @@ abstract class OC_Archive{ * @param string mode * @return resource */ - abstract function getStream($path,$mode); + abstract function getStream($path, $mode); /** * add a folder and all it's content * @param string $path * @param string source * @return bool */ - function addRecursive($path,$source) { + function addRecursive($path, $source) { if($dh=opendir($source)) { $this->addFolder($path); while($file=readdir($dh)) { diff --git a/lib/archive/tar.php b/lib/archive/tar.php index 86d39b8896832a209f7a5dab8453dea108048da0..0fa633c60388af750bfa5489f8d7d6d108614553 100644 --- a/lib/archive/tar.php +++ b/lib/archive/tar.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -require_once '3rdparty/Archive/Tar.php'; +require_once 'Archive/Tar.php'; class OC_Archive_TAR extends OC_Archive{ const PLAIN=0; @@ -23,7 +23,7 @@ class OC_Archive_TAR extends OC_Archive{ private $path; function __construct($source) { - $types=array(null,'gz','bz'); + $types=array(null, 'gz', 'bz'); $this->path=$source; $this->tar=new Archive_Tar($source, $types[self::getTarType($source)]); } @@ -84,7 +84,7 @@ class OC_Archive_TAR extends OC_Archive{ * @param string source either a local file or string data * @return bool */ - function addFile($path,$source='') { + function addFile($path, $source='') { if($this->fileExists($path)) { $this->remove($path); } @@ -107,7 +107,7 @@ class OC_Archive_TAR extends OC_Archive{ * @param string dest * @return bool */ - function rename($source,$dest) { + function rename($source, $dest) { //no proper way to delete, rename entire archive, rename file and remake archive $tmp=OCP\Files::tmpFolder(); $this->tar->extract($tmp); @@ -130,8 +130,7 @@ class OC_Archive_TAR extends OC_Archive{ if( $file == $header['filename'] or $file.'/' == $header['filename'] or '/'.$file.'/' == $header['filename'] - or '/'.$file == $header['filename']) - { + or '/'.$file == $header['filename']) { return $header; } } @@ -214,7 +213,7 @@ class OC_Archive_TAR extends OC_Archive{ * @param string dest * @return bool */ - function extractFile($path,$dest) { + function extractFile($path, $dest) { $tmp=OCP\Files::tmpFolder(); if(!$this->fileExists($path)) { return false; @@ -294,7 +293,7 @@ class OC_Archive_TAR extends OC_Archive{ * @param string mode * @return resource */ - function getStream($path,$mode) { + function getStream($path, $mode) { if(strrpos($path, '.')!==false) { $ext=substr($path, strrpos($path, '.')); }else{ @@ -309,7 +308,7 @@ class OC_Archive_TAR extends OC_Archive{ if($mode=='r' or $mode=='rb') { return fopen($tmpFile, $mode); }else{ - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); + OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); self::$tempFiles[$tmpFile]=$path; return fopen('close://'.$tmpFile, $mode); } @@ -334,7 +333,7 @@ class OC_Archive_TAR extends OC_Archive{ $this->tar->_close(); $this->tar=null; } - $types=array(null,'gz','bz'); + $types=array(null, 'gz', 'bz'); $this->tar=new Archive_Tar($this->path, $types[self::getTarType($this->path)]); } } diff --git a/lib/archive/zip.php b/lib/archive/zip.php index d016c692e357d6e9721f5c0ec62333a1860430a1..1c967baa08fc5e72f2f3fc77cf6c490cbcabc31a 100644 --- a/lib/archive/zip.php +++ b/lib/archive/zip.php @@ -35,7 +35,7 @@ class OC_Archive_ZIP extends OC_Archive{ * @param string source either a local file or string data * @return bool */ - function addFile($path,$source='') { + function addFile($path, $source='') { if($source and $source[0]=='/' and file_exists($source)) { $result=$this->zip->addFile($source, $path); }else{ @@ -53,7 +53,7 @@ class OC_Archive_ZIP extends OC_Archive{ * @param string dest * @return bool */ - function rename($source,$dest) { + function rename($source, $dest) { $source=$this->stripPath($source); $dest=$this->stripPath($dest); $this->zip->renameName($source, $dest); @@ -119,7 +119,7 @@ class OC_Archive_ZIP extends OC_Archive{ * @param string dest * @return bool */ - function extractFile($path,$dest) { + function extractFile($path, $dest) { $fp = $this->zip->getStream($path); file_put_contents($dest, $fp); } @@ -158,7 +158,7 @@ class OC_Archive_ZIP extends OC_Archive{ * @param string mode * @return resource */ - function getStream($path,$mode) { + function getStream($path, $mode) { if($mode=='r' or $mode=='rb') { return $this->zip->getStream($path); } else { @@ -171,7 +171,7 @@ class OC_Archive_ZIP extends OC_Archive{ $ext=''; } $tmpFile=OCP\Files::tmpFile($ext); - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); + OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack'); if($this->fileExists($path)) { $this->extractFile($path, $tmpFile); } diff --git a/lib/backgroundjob.php b/lib/backgroundjob.php new file mode 100644 index 0000000000000000000000000000000000000000..28b5ce3af20580bff455c93baf7fe85d11527de0 --- /dev/null +++ b/lib/backgroundjob.php @@ -0,0 +1,52 @@ +. +* +*/ + +/** + * This class does the dirty work. + */ +class OC_BackgroundJob{ + /** + * @brief get the execution type of background jobs + * @return string + * + * This method returns the type how background jobs are executed. If the user + * did not select something, the type is ajax. + */ + public static function getExecutionType() { + return OC_Appconfig::getValue( 'core', 'backgroundjobs_mode', 'ajax' ); + } + + /** + * @brief sets the background jobs execution type + * @param $type execution type + * @return boolean + * + * This method sets the execution type of the background jobs. Possible types + * are "none", "ajax", "webcron", "cron" + */ + public static function setExecutionType( $type ) { + if( !in_array( $type, array('none', 'ajax', 'webcron', 'cron'))) { + return false; + } + return OC_Appconfig::setValue( 'core', 'backgroundjobs_mode', $type ); + } +} diff --git a/lib/base.php b/lib/base.php index ad485342d2de842a4f047492264104e7b0f4e414..d9a0e2c757f971562ff6bfa1eaf2fd2696cee4a2 100644 --- a/lib/base.php +++ b/lib/base.php @@ -20,6 +20,8 @@ * */ +require_once 'public/constants.php'; + /** * Class that is a namespace for all global OC variables * No, we can not put this class in its own file because it is used by @@ -67,6 +69,10 @@ class OC{ * check if owncloud runs in cli mode */ public static $CLI = false; + /* + * OC router + */ + protected static $router = null; /** * SPL autoload */ @@ -99,6 +105,12 @@ class OC{ elseif(strpos($className, 'Doctrine\\DBAL')===0) { $path = 'doctrine-dbal/lib/'.str_replace('\\', '/', $className) . '.php'; } + elseif(strpos($className, 'Symfony\\Component\\Routing\\')===0) { + $path = 'symfony/routing/'.str_replace('\\', '/', $className) . '.php'; + } + elseif(strpos($className, 'Sabre\\VObject')===0) { + $path = str_replace('\\', '/', $className) . '.php'; + } elseif(strpos($className, 'Test_')===0) { $path = 'tests/lib/'.strtolower(str_replace('_', '/', substr($className, 5)) . '.php'); }else{ @@ -182,7 +194,7 @@ class OC{ OC::$SERVERROOT.'/lib'.PATH_SEPARATOR. OC::$SERVERROOT.'/config'.PATH_SEPARATOR. OC::$THIRDPARTYROOT.'/3rdparty'.PATH_SEPARATOR. - implode($paths,PATH_SEPARATOR).PATH_SEPARATOR. + implode($paths, PATH_SEPARATOR).PATH_SEPARATOR. get_include_path().PATH_SEPARATOR. OC::$SERVERROOT ); @@ -217,6 +229,14 @@ class OC{ $installedVersion=OC_Config::getValue('version', '0.0.0'); $currentVersion=implode('.', OC_Util::getVersion()); if (version_compare($currentVersion, $installedVersion, '>')) { + // Check if the .htaccess is existing - this is needed for upgrades from really old ownCloud versions + if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) { + if(!OC_Util::ishtaccessworking()) { + if(!file_exists(OC::$SERVERROOT.'/data/.htaccess')) { + OC_Setup::protectDataDirectory(); + } + } + } OC_Log::write('core', 'starting upgrade from '.$installedVersion.' to '.$currentVersion, OC_Log::DEBUG); $result=OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml'); if(!$result) { @@ -225,7 +245,7 @@ class OC{ } if(file_exists(OC::$SERVERROOT."/config/config.php") and !is_writable(OC::$SERVERROOT."/config/config.php")) { $tmpl = new OC_Template( '', 'error', 'guest' ); - $tmpl->assign('errors', array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud"))); + $tmpl->assign('errors', array(1=>array('error'=>"Can't write into config directory 'config'", 'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud"))); $tmpl->printPage(); exit; } @@ -246,16 +266,15 @@ class OC{ OC_Util::addScript( "jquery-1.7.2.min" ); OC_Util::addScript( "jquery-ui-1.8.16.custom.min" ); OC_Util::addScript( "jquery-showpassword" ); - OC_Util::addScript( "jquery.infieldlabel.min" ); + OC_Util::addScript( "jquery.infieldlabel" ); OC_Util::addScript( "jquery-tipsy" ); OC_Util::addScript( "oc-dialogs" ); OC_Util::addScript( "js" ); - // request protection token MUST be defined after the jquery library but before any $('document').ready() - OC_Util::addScript( "requesttoken" ); OC_Util::addScript( "eventsource" ); OC_Util::addScript( "config" ); //OC_Util::addScript( "multiselect" ); OC_Util::addScript('search', 'result'); + OC_Util::addScript('router'); if( OC_Config::getValue( 'installed', false )) { if( OC_Appconfig::getValue( 'core', 'backgroundjobs_mode', 'ajax' ) == 'ajax' ) { @@ -270,13 +289,44 @@ class OC{ } public static function initSession() { + // prevents javascript from accessing php session cookies ini_set('session.cookie_httponly', '1;'); + + // (re)-initialize session session_start(); + + // regenerate session id periodically to avoid session fixation + if (!isset($_SESSION['SID_CREATED'])) { + $_SESSION['SID_CREATED'] = time(); + } else if (time() - $_SESSION['SID_CREATED'] > 900) { + session_regenerate_id(true); + $_SESSION['SID_CREATED'] = time(); + } + + // session timeout + if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 3600)) { + if (isset($_COOKIE[session_name()])) { + setcookie(session_name(), '', time() - 42000, '/'); + } + session_unset(); + session_destroy(); + session_start(); + } + $_SESSION['LAST_ACTIVITY'] = time(); + } + + public static function getRouter() { + if (!isset(OC::$router)) { + OC::$router = new OC_Router(); + OC::$router->loadRoutes(); + } + + return OC::$router; } public static function init() { // register autoloader - spl_autoload_register(array('OC','autoload')); + spl_autoload_register(array('OC', 'autoload')); setlocale(LC_ALL, 'en_US.UTF-8'); // set some stuff @@ -291,7 +341,7 @@ class OC{ ini_set('arg_separator.output', '&'); // try to switch magic quotes off. - if(function_exists('set_magic_quotes_runtime')) { + if(get_magic_quotes_gpc()) { @set_magic_quotes_runtime(false); } @@ -312,6 +362,10 @@ class OC{ //try to set the session lifetime to 60min @ini_set('gc_maxlifetime', '3600'); + //copy http auth headers for apache+php-fcgid work around + if (isset($_SERVER['HTTP_XAUTHORIZATION']) && !isset($_SERVER['HTTP_AUTHORIZATION'])) { + $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['HTTP_XAUTHORIZATION']; + } //set http auth headers for apache+php-cgi work around if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) { @@ -329,6 +383,10 @@ class OC{ self::initPaths(); + register_shutdown_function(array('OC_Log', 'onShutdown')); + set_error_handler(array('OC_Log', 'onError')); + set_exception_handler(array('OC_Log', 'onException')); + // set debug mode if an xdebug session is active if (!defined('DEBUG') || !DEBUG) { if(isset($_COOKIE['XDEBUG_SESSION'])) { @@ -381,16 +439,12 @@ class OC{ //setup extra user backends OC_User::setupBackends(); - // register cache cleanup jobs - OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc'); - OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener'); - - // Check for blacklisted files - OC_Hook::connect('OC_Filesystem', 'write', 'OC_Filesystem', 'isBlacklisted'); - OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted'); + self::registerCacheHooks(); + self::registerFilesystemHooks(); + self::registerShareHooks(); //make sure temporary files are cleaned up - register_shutdown_function(array('OC_Helper','cleanTmp')); + register_shutdown_function(array('OC_Helper', 'cleanTmp')); //parse the given parameters self::$REQUESTEDAPP = (isset($_GET['app']) && trim($_GET['app']) != '' && !is_null($_GET['app'])?str_replace(array('\0', '/', '\\', '..'), '', strip_tags($_GET['app'])):OC_Config::getValue('defaultapp', 'files')); @@ -422,22 +476,40 @@ class OC{ } } + /** + * register hooks for the cache + */ + public static function registerCacheHooks() { + // register cache cleanup jobs + OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc'); + OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener'); + } + + /** + * register hooks for the filesystem + */ + public static function registerFilesystemHooks() { + // Check for blacklisted files + OC_Hook::connect('OC_Filesystem', 'write', 'OC_Filesystem', 'isBlacklisted'); + OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted'); + } + + /** + * register hooks for sharing + */ + public static function registerShareHooks() { + OC_Hook::connect('OC_User', 'post_deleteUser', 'OCP\Share', 'post_deleteUser'); + OC_Hook::connect('OC_User', 'post_addToGroup', 'OCP\Share', 'post_addToGroup'); + OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OCP\Share', 'post_removeFromGroup'); + OC_Hook::connect('OC_User', 'post_deleteGroup', 'OCP\Share', 'post_deleteGroup'); + } + /** * @brief Handle the request */ public static function handleRequest() { if (!OC_Config::getValue('installed', false)) { - // Check for autosetup: - $autosetup_file = OC::$SERVERROOT."/config/autoconfig.php"; - if( file_exists( $autosetup_file )) { - OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', OC_Log::INFO); - include $autosetup_file; - $_POST['install'] = 'true'; - $_POST = array_merge ($_POST, $AUTOCONFIG); - unlink($autosetup_file); - } - OC_Util::addScript('setup'); - require_once 'setup.php'; + require_once 'core/setup.php'; exit(); } // Handle WebDAV @@ -445,9 +517,21 @@ class OC{ header('location: '.OC_Helper::linkToRemote('webdav')); return; } + try { + OC::getRouter()->match(OC_Request::getPathInfo()); + return; + } catch (Symfony\Component\Routing\Exception\ResourceNotFoundException $e) { + //header('HTTP/1.0 404 Not Found'); + } catch (Symfony\Component\Routing\Exception\MethodNotAllowedException $e) { + OC_Response::setStatus(405); + return; + } + $app = OC::$REQUESTEDAPP; + $file = OC::$REQUESTEDFILE; + $param = array('app' => $app, 'file' => $file); // Handle app css files - if(substr(OC::$REQUESTEDFILE, -3) == 'css') { - self::loadCSSFile(); + if(substr($file, -3) == 'css') { + self::loadCSSFile($param); return; } // Someone is logged in : @@ -455,16 +539,16 @@ class OC{ OC_App::loadApps(); OC_User::setupBackends(); if(isset($_GET["logout"]) and ($_GET["logout"])) { + OC_Preferences::deleteKey(OC_User::getUser(), 'login_token', $_COOKIE['oc_token']); OC_User::logout(); header("Location: ".OC::$WEBROOT.'/'); }else{ - $app = OC::$REQUESTEDAPP; - $file = OC::$REQUESTEDFILE; if(is_null($file)) { - $file = 'index.php'; + $param['file'] = 'index.php'; } - $file_ext = substr($file, -3); - if ($file_ext != 'php'|| !self::loadAppScriptFile($app, $file)) { + $file_ext = substr($param['file'], -3); + if ($file_ext != 'php' + || !self::loadAppScriptFile($param)) { header('HTTP/1.0 404 Not Found'); } } @@ -474,7 +558,10 @@ class OC{ self::handleLogin(); } - protected static function loadAppScriptFile($app, $file) { + public static function loadAppScriptFile($param) { + OC_App::loadApps(); + $app = $param['app']; + $file = $param['file']; $app_path = OC_App::getAppPath($app); $file = $app_path . '/' . $file; unset($app, $app_path); @@ -485,9 +572,9 @@ class OC{ return false; } - protected static function loadCSSFile() { - $app = OC::$REQUESTEDAPP; - $file = OC::$REQUESTEDFILE; + public static function loadCSSFile($param) { + $app = $param['app']; + $file = $param['file']; $app_path = OC_App::getAppPath($app); if (file_exists($app_path . '/' . $file)) { $app_web_path = OC_App::getAppWebPath($app); @@ -500,28 +587,38 @@ class OC{ protected static function handleLogin() { OC_App::loadApps(array('prelogin')); - $error = false; + $error = array(); // remember was checked after last login if (OC::tryRememberLogin()) { - // nothing more to do + $error[] = 'invalidcookie'; // Someone wants to log in : } elseif (OC::tryFormLogin()) { - $error = true; + $error[] = 'invalidpassword'; // The user is already authenticated using Apaches AuthType Basic... very usable in combination with LDAP } elseif (OC::tryBasicAuthLogin()) { - $error = true; + $error[] = 'invalidpassword'; + } + OC_Util::displayLoginPage(array_unique($error)); + } + + protected static function cleanupLoginTokens($user) { + $cutoff = time() - OC_Config::getValue('remember_login_cookie_lifetime', 60*60*24*15); + $tokens = OC_Preferences::getKeys($user, 'login_token'); + foreach($tokens as $token) { + $time = OC_Preferences::getValue($user, 'login_token', $token); + if ($time < $cutoff) { + OC_Preferences::deleteKey($user, 'login_token', $token); + } } - OC_Util::displayLoginPage($error); } protected static function tryRememberLogin() { if(!isset($_COOKIE["oc_remember_login"]) || !isset($_COOKIE["oc_token"]) || !isset($_COOKIE["oc_username"]) - || !$_COOKIE["oc_remember_login"]) - { + || !$_COOKIE["oc_remember_login"]) { return false; } OC_App::loadApps(array('authentication')); @@ -529,15 +626,30 @@ class OC{ OC_Log::write('core', 'Trying to login from cookie', OC_Log::DEBUG); } // confirm credentials in cookie - if(isset($_COOKIE['oc_token']) && OC_User::userExists($_COOKIE['oc_username']) && - OC_Preferences::getValue($_COOKIE['oc_username'], "login", "token") === $_COOKIE['oc_token']) - { - OC_User::setUserId($_COOKIE['oc_username']); - OC_Util::redirectToDefaultPage(); - } - else { - OC_User::unsetMagicInCookie(); + if(isset($_COOKIE['oc_token']) && OC_User::userExists($_COOKIE['oc_username'])) { + // delete outdated cookies + self::cleanupLoginTokens($_COOKIE['oc_username']); + // get stored tokens + $tokens = OC_Preferences::getKeys($_COOKIE['oc_username'], 'login_token'); + // test cookies token against stored tokens + if (in_array($_COOKIE['oc_token'], $tokens, true)) { + // replace successfully used token with a new one + OC_Preferences::deleteKey($_COOKIE['oc_username'], 'login_token', $_COOKIE['oc_token']); + $token = OC_Util::generate_random_bytes(32); + OC_Preferences::setValue($_COOKIE['oc_username'], 'login_token', $token, time()); + OC_User::setMagicInCookie($_COOKIE['oc_username'], $token); + // login + OC_User::setUserId($_COOKIE['oc_username']); + OC_Util::redirectToDefaultPage(); + // doesn't return + } + // if you reach this point you have changed your password + // or you are an attacker + // we can not delete tokens here because users may reach + // this point multiple times after a password change + OC_Log::write('core', 'Authentication cookie rejected for user '.$_COOKIE['oc_username'], OC_Log::WARN); } + OC_User::unsetMagicInCookie(); return true; } @@ -552,12 +664,13 @@ class OC{ OC_User::setupBackends(); if(OC_User::login($_POST["user"], $_POST["password"])) { + self::cleanupLoginTokens($_POST['user']); if(!empty($_POST["remember_login"])) { if(defined("DEBUG") && DEBUG) { OC_Log::write('core', 'Setting remember login to cookie', OC_Log::DEBUG); } - $token = md5($_POST["user"].time().$_POST['password']); - OC_Preferences::setValue($_POST['user'], 'login', 'token', $token); + $token = OC_Util::generate_random_bytes(32); + OC_Preferences::setValue($_POST['user'], 'login_token', $token, time()); OC_User::setMagicInCookie($_POST["user"], $token); } else { @@ -576,7 +689,7 @@ class OC{ } OC_App::loadApps(array('authentication')); if (OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) { - //OC_Log::write('core',"Logged in with HTTP Authentication",OC_Log::DEBUG); + //OC_Log::write('core',"Logged in with HTTP Authentication", OC_Log::DEBUG); OC_User::unsetMagicInCookie(); $_REQUEST['redirect_url'] = (isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:''); OC_Util::redirectToDefaultPage(); diff --git a/lib/cache.php b/lib/cache.php index 62003793d5f5c5bc5e76f229e5871c926c600071..bc74ed83f8bf150b7c596b306a4df6de38867aaf 100644 --- a/lib/cache.php +++ b/lib/cache.php @@ -144,4 +144,13 @@ class OC_Cache { return self::$isFast; } + static public function generateCacheKeyFromFiles($files) { + $key = ''; + sort($files); + foreach($files as $file) { + $stat = stat($file); + $key .= $file.$stat['mtime'].$stat['size']; + } + return md5($key); + } } diff --git a/lib/connector/sabre/auth.php b/lib/connector/sabre/auth.php index 0c34c7ea29fc20f66ccd76974dbfa5bcd4a3431f..db8f005745a4fccd36f64797f815afeb34fd2145 100644 --- a/lib/connector/sabre/auth.php +++ b/lib/connector/sabre/auth.php @@ -37,7 +37,7 @@ class OC_Connector_Sabre_Auth extends Sabre_DAV_Auth_Backend_AbstractBasic { } else { OC_Util::setUpFS();//login hooks may need early access to the filesystem if(OC_User::login($username, $password)) { - OC_Util::setUpFS($username); + OC_Util::setUpFS(OC_User::getUser()); return true; } else{ diff --git a/lib/connector/sabre/directory.php b/lib/connector/sabre/directory.php index 413efef73b79951c627e6b920997fe8fd9d9c33a..6076aed6fcd8d4f4b204c32ed531ebbe324413f7 100644 --- a/lib/connector/sabre/directory.php +++ b/lib/connector/sabre/directory.php @@ -116,7 +116,6 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa * @return Sabre_DAV_INode[] */ public function getChildren() { - $folder_content = OC_Files::getDirectoryContent($this->path); $paths = array(); foreach($folder_content as $info) { @@ -124,15 +123,22 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa } $properties = array_fill_keys($paths, array()); if(count($paths)>0) { - $placeholders = join(',', array_fill(0, count($paths), '?')); - $query = OC_DB::prepare( 'SELECT * FROM `*PREFIX*properties` WHERE `userid` = ?' . ' AND `propertypath` IN ('.$placeholders.')' ); - array_unshift($paths, OC_User::getUser()); // prepend userid - $result = $query->execute( $paths ); - while($row = $result->fetchRow()) { - $propertypath = $row['propertypath']; - $propertyname = $row['propertyname']; - $propertyvalue = $row['propertyvalue']; - $properties[$propertypath][$propertyname] = $propertyvalue; + // + // the number of arguments within IN conditions are limited in most databases + // we chunk $paths into arrays of 200 items each to meet this criteria + // + $chunks = array_chunk($paths, 200, false); + foreach ($chunks as $pack) { + $placeholders = join(',', array_fill(0, count($pack), '?')); + $query = OC_DB::prepare( 'SELECT * FROM `*PREFIX*properties` WHERE `userid` = ?' . ' AND `propertypath` IN ('.$placeholders.')' ); + array_unshift($pack, OC_User::getUser()); // prepend userid + $result = $query->execute( $pack ); + while($row = $result->fetchRow()) { + $propertypath = $row['propertypath']; + $propertyname = $row['propertyname']; + $propertyvalue = $row['propertyvalue']; + $properties[$propertypath][$propertyname] = $propertyvalue; + } } } @@ -200,7 +206,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa public function getProperties($properties) { $props = parent::getProperties($properties); if (in_array(self::GETETAG_PROPERTYNAME, $properties) && !isset($props[self::GETETAG_PROPERTYNAME])) { - $props[self::GETETAG_PROPERTYNAME] + $props[self::GETETAG_PROPERTYNAME] = OC_Connector_Sabre_Node::getETagPropertyForPath($this->path); } return $props; diff --git a/lib/connector/sabre/file.php b/lib/connector/sabre/file.php index 5bd38240d4471ff9524e6e4d36485f793b5df814..8d963a1cf8d8f081c195710eca35d8df0c1ea5a7 100644 --- a/lib/connector/sabre/file.php +++ b/lib/connector/sabre/file.php @@ -45,7 +45,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D */ public function put($data) { - OC_Filesystem::file_put_contents($this->path,$data); + OC_Filesystem::file_put_contents($this->path, $data); return OC_Connector_Sabre_Node::getETagPropertyForPath($this->path); } @@ -57,7 +57,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D */ public function get() { - return OC_Filesystem::fopen($this->path,'rb'); + return OC_Filesystem::fopen($this->path, 'rb'); } diff --git a/lib/connector/sabre/locks.php b/lib/connector/sabre/locks.php index dbcc57558e0b1319051db005a0280a494f738879..a72d003bc72d08cdd255ebaf93ebe4c9dfe1ac71 100644 --- a/lib/connector/sabre/locks.php +++ b/lib/connector/sabre/locks.php @@ -45,10 +45,10 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract { // but otherwise reading locks from SQLite Databases will return // nothing $query = 'SELECT * FROM `*PREFIX*locks` WHERE `userid` = ? AND (`created` + `timeout`) > '.time().' AND (( `uri` = ?)'; - $params = array(OC_User::getUser(),$uri); + $params = array(OC_User::getUser(), $uri); // We need to check locks for every part in the uri. - $uriParts = explode('/',$uri); + $uriParts = explode('/', $uri); // We already covered the last part of the uri array_pop($uriParts); @@ -102,14 +102,14 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract { * @param Sabre_DAV_Locks_LockInfo $lockInfo * @return bool */ - public function lock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { + public function lock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) { // We're making the lock timeout 5 minutes $lockInfo->timeout = 300; $lockInfo->created = time(); $lockInfo->uri = $uri; - $locks = $this->getLocks($uri,false); + $locks = $this->getLocks($uri, false); $exists = false; foreach($locks as $lock) { if ($lock->token == $lockInfo->token) $exists = true; @@ -134,10 +134,10 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract { * @param Sabre_DAV_Locks_LockInfo $lockInfo * @return bool */ - public function unlock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) { + public function unlock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) { $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*locks` WHERE `userid` = ? AND `uri` = ? AND `token` = ?' ); - $result = $query->execute( array(OC_User::getUser(),$uri,$lockInfo->token)); + $result = $query->execute( array(OC_User::getUser(), $uri, $lockInfo->token)); return $result->numRows() === 1; diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php index 72de972377499da25b1c51aef7bd3c2537aad31b..52350072fb2715550af863a91c8c579704a03629 100644 --- a/lib/connector/sabre/node.php +++ b/lib/connector/sabre/node.php @@ -25,6 +25,13 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr const GETETAG_PROPERTYNAME = '{DAV:}getetag'; const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified'; + /** + * Allow configuring the method used to generate Etags + * + * @var array(class_name, function_name) + */ + public static $ETagFunction = null; + /** * The path to the current node * @@ -43,8 +50,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr protected $property_cache = null; /** - * Sets up the node, expects a full path name - * + * @brief Sets up the node, expects a full path name * @param string $path * @return void */ @@ -55,8 +61,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr /** - * Returns the name of the node - * + * @brief Returns the name of the node * @return string */ public function getName() { @@ -67,8 +72,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * Renames the node - * + * @brief Renames the node * @param string $name The new name * @return void */ @@ -80,12 +84,12 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr $newPath = $parentPath . '/' . $newName; $oldPath = $this->path; - OC_Filesystem::rename($this->path,$newPath); + OC_Filesystem::rename($this->path, $newPath); $this->path = $newPath; $query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertypath` = ? WHERE `userid` = ? AND `propertypath` = ?' ); - $query->execute( array( $newPath,OC_User::getUser(), $oldPath )); + $query->execute( array( $newPath, OC_User::getUser(), $oldPath )); } @@ -95,7 +99,8 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * Make sure the fileinfo cache is filled. Uses OC_FileCache or a direct stat + * @brief Ensure that the fileinfo cache is filled + & @note Uses OC_FileCache or a direct stat */ protected function getFileinfoCache() { if (!isset($this->fileinfo_cache)) { @@ -114,8 +119,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * Returns the last modification time, as a unix timestamp - * + * @brief Returns the last modification time, as a unix timestamp * @return int */ public function getLastModified() { @@ -134,8 +138,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * Updates properties on this node, - * + * @brief Updates properties on this node, * @param array $mutations * @see Sabre_DAV_IProperties::updateProperties * @return bool|array @@ -156,10 +159,10 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } else { if(!array_key_exists( $propertyName, $existing )) { $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*properties` (`userid`,`propertypath`,`propertyname`,`propertyvalue`) VALUES(?,?,?,?)' ); - $query->execute( array( OC_User::getUser(), $this->path, $propertyName,$propertyValue )); + $query->execute( array( OC_User::getUser(), $this->path, $propertyName, $propertyValue )); } else { $query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyvalue` = ? WHERE `userid` = ? AND `propertypath` = ? AND `propertyname` = ?' ); - $query->execute( array( $propertyValue,OC_User::getUser(), $this->path, $propertyName )); + $query->execute( array( $propertyValue, OC_User::getUser(), $this->path, $propertyName )); } } } @@ -170,15 +173,13 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * Returns a list of properties for this nodes.; - * - * The properties list is a list of propertynames the client requested, - * encoded as xmlnamespace#tagName, for example: - * http://www.example.org/namespace#author - * If the array is empty, all properties should be returned - * + * @brief Returns a list of properties for this nodes.; * @param array $properties - * @return void + * @return array + * @note The properties list is a list of propertynames the client + * requested, encoded as xmlnamespace#tagName, for example: + * http://www.example.org/namespace#author If the array is empty, all + * properties should be returned */ public function getProperties($properties) { if (is_null($this->property_cache)) { @@ -204,16 +205,21 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * Creates a ETag for this path. + * @brief Creates a ETag for this path. * @param string $path Path of the file * @return string|null Returns null if the ETag can not effectively be determined */ static protected function createETag($path) { - return uniqid('', true); + if(self::$ETagFunction) { + $hash = call_user_func(self::$ETagFunction, $path); + return $hash; + }else{ + return uniqid('', true); + } } /** - * Returns the ETag surrounded by double-quotes for this path. + * @brief Returns the ETag surrounded by double-quotes for this path. * @param string $path Path of the file * @return string|null Returns null if the ETag can not effectively be determined */ @@ -229,7 +235,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } /** - * Remove the ETag from the cache. + * @brief Remove the ETag from the cache. * @param string $path Path of the file */ static public function removeETagPropertyForPath($path) { diff --git a/lib/connector/sabre/principal.php b/lib/connector/sabre/principal.php index ee95ae6330670968eaaa775802529f2222becabb..04be410ac85ea44875ea9ad87226d96853a95d4d 100644 --- a/lib/connector/sabre/principal.php +++ b/lib/connector/sabre/principal.php @@ -46,7 +46,7 @@ class OC_Connector_Sabre_Principal implements Sabre_DAVACL_IPrincipalBackend { * @return array */ public function getPrincipalByPath($path) { - list($prefix,$name) = explode('/', $path); + list($prefix, $name) = explode('/', $path); if ($prefix == 'principals' && OC_User::userExists($name)) { return array( @@ -83,7 +83,7 @@ class OC_Connector_Sabre_Principal implements Sabre_DAVACL_IPrincipalBackend { * @return array */ public function getGroupMembership($principal) { - list($prefix,$name) = Sabre_DAV_URLUtil::splitPath($principal); + list($prefix, $name) = Sabre_DAV_URLUtil::splitPath($principal); $group_membership = array(); if ($prefix == 'principals') { @@ -115,11 +115,11 @@ class OC_Connector_Sabre_Principal implements Sabre_DAVACL_IPrincipalBackend { public function setGroupMemberSet($principal, array $members) { throw new Sabre_DAV_Exception('Setting members of the group is not supported yet'); } - + function updatePrincipal($path, $mutations) { return 0; } - + function searchPrincipals($prefixPath, array $searchProperties) { return 0; } diff --git a/lib/connector/sabre/quotaplugin.php b/lib/connector/sabre/quotaplugin.php new file mode 100644 index 0000000000000000000000000000000000000000..a56a65ad863f504e9a66cd1aea4bbade16345cd7 --- /dev/null +++ b/lib/connector/sabre/quotaplugin.php @@ -0,0 +1,59 @@ +server = $server; + $this->server->subscribeEvent('beforeWriteContent', array($this, 'checkQuota'), 10); + $this->server->subscribeEvent('beforeCreateFile', array($this, 'checkQuota'), 10); + + } + + /** + * This method is called before any HTTP method and forces users to be authenticated + * + * @param string $method + * @throws Sabre_DAV_Exception + * @return bool + */ + public function checkQuota($uri, $data = null) { + $expected = $this->server->httpRequest->getHeader('X-Expected-Entity-Length'); + $length = $expected ? $expected : $this->server->httpRequest->getHeader('Content-Length'); + if ($length) { + if (substr($uri, 0, 1)!=='/') { + $uri='/'.$uri; + } + list($parentUri, $newName) = Sabre_DAV_URLUtil::splitPath($uri); + if ($length > OC_Filesystem::free_space($parentUri)) { + throw new Sabre_DAV_Exception('Quota exceeded. File is too big.'); + } + } + return true; + } +} diff --git a/lib/db.php b/lib/db.php index a6500a2e3bd379f913d7ce90498d9436efe7787c..2e21a11d5452e22e81892182aa212c543d454619 100644 --- a/lib/db.php +++ b/lib/db.php @@ -92,8 +92,8 @@ class OC_DB { $pass = OC_Config::getValue( "dbpassword", "" ); $type = OC_Config::getValue( "dbtype", "sqlite" ); if(strpos($host, ':')) { - list($host, $port)=explode(':', $host,2); - }else{ + list($host, $port)=explode(':', $host, 2); + } else { $port=false; } @@ -192,9 +192,9 @@ class OC_DB { }catch(PDOException $e) { $entry = 'DB Error: "'.$e->getMessage().'"
            '; $entry .= 'Offending command was: '.htmlentities($query).'
            '; - OC_Log::write('core', $entry,OC_Log::FATAL); + OC_Log::write('core', $entry, OC_Log::FATAL); error_log('DB error: '.$entry); - die( $entry ); + OC_Template::printErrorPage( $entry ); } $result=new DoctrineStatementWrapper($result); } @@ -213,12 +213,19 @@ class OC_DB { */ public static function insertid($table=null) { self::connect(); - if($table !== null) { - $prefix = OC_Config::getValue( "dbtableprefix", "oc_" ); - $suffix = OC_Config::getValue( "dbsequencesuffix", "_id_seq" ); - $table = str_replace( '*PREFIX*', $prefix, $table ).$suffix; + $type = OC_Config::getValue( "dbtype", "sqlite" ); + if( $type == 'pgsql' ) { + $query = self::prepare('SELECT lastval() AS id'); + $row = $query->execute()->fetchRow(); + return $row['id']; + } else { + if($table !== null) { + $prefix = OC_Config::getValue( "dbtableprefix", "oc_" ); + $suffix = OC_Config::getValue( "dbsequencesuffix", "_id_seq" ); + $table = str_replace( '*PREFIX*', $prefix, $table ).$suffix; + } + return self::$connection->lastInsertId($table); } - return self::$connection->lastInsertId($table); } /** @@ -300,6 +307,78 @@ class OC_DB { } } + /** + * @brief Insert a row if a matching row doesn't exists. + * @param string $table. The table to insert into in the form '*PREFIX*tableName' + * @param array $input. An array of fieldname/value pairs + * @returns The return value from PDOStatementWrapper->execute() + */ + public static function insertIfNotExist($table, $input) { + self::connect(); + $prefix = OC_Config::getValue( "dbtableprefix", "oc_" ); + $table = str_replace( '*PREFIX*', $prefix, $table ); + + if(is_null(self::$type)) { + self::$type=OC_Config::getValue( "dbtype", "sqlite" ); + } + $type = self::$type; + + $query = ''; + // differences in escaping of table names ('`' for mysql) and getting the current timestamp + if( $type == 'sqlite' || $type == 'sqlite3' ) { + // NOTE: For SQLite we have to use this clumsy approach + // otherwise all fieldnames used must have a unique key. + $query = 'SELECT * FROM "' . $table . '" WHERE '; + foreach($input as $key => $value) { + $query .= $key . " = '" . $value . '\' AND '; + } + $query = substr($query, 0, strlen($query) - 5); + try { + $stmt = self::prepare($query); + $result = $stmt->execute(); + } catch(PDOException $e) { + $entry = 'DB Error: "'.$e->getMessage() . '"
            '; + $entry .= 'Offending command was: ' . $query . '
            '; + OC_Log::write('core', $entry, OC_Log::FATAL); + error_log('DB error: '.$entry); + OC_Template::printErrorPage( $entry ); + } + + if($result->numRows() == 0) { + $query = 'INSERT INTO "' . $table . '" ("' + . implode('","', array_keys($input)) . '") VALUES("' + . implode('","', array_values($input)) . '")'; + } else { + return true; + } + } elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql') { + $query = 'INSERT INTO `' .$table . '` (' + . implode(',', array_keys($input)) . ') SELECT \'' + . implode('\',\'', array_values($input)) . '\' FROM ' . $table . ' WHERE '; + + foreach($input as $key => $value) { + $query .= $key . " = '" . $value . '\' AND '; + } + $query = substr($query, 0, strlen($query) - 5); + $query .= ' HAVING COUNT(*) = 0'; + } + + // TODO: oci should be use " (quote) instead of ` (backtick). + //OC_Log::write('core', __METHOD__ . ', type: ' . $type . ', query: ' . $query, OC_Log::DEBUG); + + try { + $result = self::prepare($query); + } catch(PDOException $e) { + $entry = 'DB Error: "'.$e->getMessage() . '"
            '; + $entry .= 'Offending command was: ' . $query.'
            '; + OC_Log::write('core', $entry, OC_Log::FATAL); + error_log('DB error: ' . $entry); + OC_Template::printErrorPage( $entry ); + } + + return $result->execute(); + } + /** * @brief does minor changes to query * @param string $query Query string @@ -403,7 +482,7 @@ class OC_DB { return false; } } - + /** * returns the error code and message as a string for logging * works with DoctrineException diff --git a/lib/eventsource.php b/lib/eventsource.php index 900b5b101e673cd473d195262ebc2f2f8c6121c0..1b8033943a19d6d984a48fe43b82c1efb78d1d65 100644 --- a/lib/eventsource.php +++ b/lib/eventsource.php @@ -32,13 +32,13 @@ class OC_EventSource{ private $fallBackId=0; public function __construct() { - @ob_end_clean(); + OC_Util::obEnd(); header('Cache-Control: no-cache'); $this->fallback=isset($_GET['fallback']) and $_GET['fallback']=='true'; if($this->fallback) { $this->fallBackId=$_GET['fallback_id']; header("Content-Type: text/html"); - echo str_repeat(''.PHP_EOL,10); //dummy data to keep IE happy + echo str_repeat(''.PHP_EOL, 10); //dummy data to keep IE happy }else{ header("Content-Type: text/event-stream"); } @@ -56,7 +56,7 @@ class OC_EventSource{ * * if only one paramater is given, a typeless message will be send with that paramater as data */ - public function send($type,$data=null) { + public function send($type, $data=null) { if(is_null($data)) { $data=$type; $type=null; @@ -78,6 +78,6 @@ class OC_EventSource{ * close the connection of the even source */ public function close() { - $this->send('__internal__','close');//server side closing can be an issue, let the client do it + $this->send('__internal__', 'close');//server side closing can be an issue, let the client do it } -} \ No newline at end of file +} diff --git a/lib/filecache.php b/lib/filecache.php index 8fcb6fd9404db825bd38f83aa2945b7c6262aa0d..7bf98f43a370dcb162b9506534c591e7d7729071 100644 --- a/lib/filecache.php +++ b/lib/filecache.php @@ -28,6 +28,7 @@ * It will try to keep the data up to date but changes from outside ownCloud can invalidate the cache */ class OC_FileCache{ + /** * get the filesystem info from the cache * @param string path @@ -42,15 +43,15 @@ class OC_FileCache{ * - encrypted * - versioned */ - public static function get($path,$root=false) { - if(OC_FileCache_Update::hasUpdated($path,$root)) { + public static function get($path, $root=false) { + if(OC_FileCache_Update::hasUpdated($path, $root)) { if($root===false) {//filesystem hooks are only valid for the default root - OC_Hook::emit('OC_Filesystem','post_write',array('path'=>$path)); + OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$path)); }else{ - OC_FileCache_Update::update($path,$root); + OC_FileCache_Update::update($path, $root); } } - return OC_FileCache_Cached::get($path,$root); + return OC_FileCache_Cached::get($path, $root); } /** @@ -58,22 +59,22 @@ class OC_FileCache{ * @param string $path * @param array data * @param string root (optional) - * - * $data is an assiciative array in the same format as returned by get + * @note $data is an associative array in the same format as returned + * by get */ - public static function put($path,$data,$root=false) { + public static function put($path, $data, $root=false) { if($root===false) { $root=OC_Filesystem::getRoot(); } - $fullpath=$root.$path; + $fullpath=OC_Filesystem::normalizePath($root.'/'.$path); $parent=self::getParentId($fullpath); - $id=self::getId($fullpath,''); + $id=self::getId($fullpath, ''); if(isset(OC_FileCache_Cached::$savedData[$fullpath])) { - $data=array_merge(OC_FileCache_Cached::$savedData[$fullpath],$data); + $data=array_merge(OC_FileCache_Cached::$savedData[$fullpath], $data); unset(OC_FileCache_Cached::$savedData[$fullpath]); } if($id!=-1) { - self::update($id,$data); + self::update($id, $data); return; } @@ -102,9 +103,9 @@ class OC_FileCache{ $data['versioned']=(int)$data['versioned']; $user=OC_User::getUser(); $query=OC_DB::prepare('INSERT INTO `*PREFIX*fscache`(`parent`, `name`, `path`, `path_hash`, `size`, `mtime`, `ctime`, `mimetype`, `mimepart`,`user`,`writable`,`encrypted`,`versioned`) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)'); - $result=$query->execute(array($parent,basename($fullpath),$fullpath,md5($fullpath),$data['size'],$data['mtime'],$data['ctime'],$data['mimetype'],$mimePart,$user,$data['writable'],$data['encrypted'],$data['versioned'])); + $result=$query->execute(array($parent, basename($fullpath), $fullpath, md5($fullpath), $data['size'], $data['mtime'], $data['ctime'], $data['mimetype'], $mimePart, $user, $data['writable'], $data['encrypted'], $data['versioned'])); if(OC_DB::isError($result)) { - OC_Log::write('files','error while writing file('.$fullpath.') to cache',OC_Log::ERROR); + OC_Log::write('files', 'error while writing file('.$fullpath.') to cache', OC_Log::ERROR); } if($cache=OC_Cache::getUserCache(true)) { @@ -117,10 +118,10 @@ class OC_FileCache{ * @param int $id * @param array $data */ - private static function update($id,$data) { + private static function update($id, $data) { $arguments=array(); $queryParts=array(); - foreach(array('size','mtime','ctime','mimetype','encrypted','versioned','writable') as $attribute) { + foreach(array('size','mtime','ctime','mimetype','encrypted','versioned', 'writable') as $attribute) { if(isset($data[$attribute])) { //Convert to int it args are false if($data[$attribute] === false) { @@ -137,11 +138,13 @@ class OC_FileCache{ } $arguments[]=$id; - $sql = 'UPDATE `*PREFIX*fscache` SET '.implode(' , ',$queryParts).' WHERE `id`=?'; - $query=OC_DB::prepare($sql); - $result=$query->execute($arguments); - if(OC_DB::isError($result)) { - OC_Log::write('files','error while updating file('.$id.') in cache',OC_Log::ERROR); + if(!empty($queryParts)) { + $sql = 'UPDATE `*PREFIX*fscache` SET '.implode(' , ', $queryParts).' WHERE `id`=?'; + $query=OC_DB::prepare($sql); + $result=$query->execute($arguments); + if(OC_DB::isError($result)) { + OC_Log::write('files', 'error while updating file('.$id.') in cache', OC_Log::ERROR); + } } } @@ -151,7 +154,7 @@ class OC_FileCache{ * @param string newPath * @param string root (optional) */ - public static function move($oldPath,$newPath,$root=false) { + public static function move($oldPath, $newPath, $root=false) { if($root===false) { $root=OC_Filesystem::getRoot(); } @@ -163,10 +166,10 @@ class OC_FileCache{ $newPath=$root.$newPath; $newParent=self::getParentId($newPath); $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `parent`=? ,`name`=?, `path`=?, `path_hash`=? WHERE `path_hash`=?'); - $query->execute(array($newParent,basename($newPath),$newPath,md5($newPath),md5($oldPath))); + $query->execute(array($newParent, basename($newPath), $newPath, md5($newPath), md5($oldPath))); if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$oldPath)) { - $cache->set('fileid/'.$newPath,$cache->get('fileid/'.$oldPath)); + $cache->set('fileid/'.$newPath, $cache->get('fileid/'.$oldPath)); $cache->remove('fileid/'.$oldPath); } @@ -175,11 +178,11 @@ class OC_FileCache{ $updateQuery=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `path`=?, `path_hash`=? WHERE `path_hash`=?'); while($row= $query->execute(array($oldPath.'/%'))->fetchRow()) { $old=$row['path']; - $new=$newPath.substr($old,$oldLength); - $updateQuery->execute(array($new,md5($new),md5($old))); + $new=$newPath.substr($old, $oldLength); + $updateQuery->execute(array($new, md5($new), md5($old))); if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$old)) { - $cache->set('fileid/'.$new,$cache->get('fileid/'.$old)); + $cache->set('fileid/'.$new, $cache->get('fileid/'.$old)); $cache->remove('fileid/'.$old); } } @@ -190,7 +193,7 @@ class OC_FileCache{ * @param string path * @param string root (optional) */ - public static function delete($path,$root=false) { + public static function delete($path, $root=false) { if($root===false) { $root=OC_Filesystem::getRoot(); } @@ -203,7 +206,7 @@ class OC_FileCache{ OC_Cache::remove('fileid/'.$root.$path); } - + /** * return array of filenames matching the querty * @param string $query @@ -211,23 +214,29 @@ class OC_FileCache{ * @param string root (optional) * @return array of filepaths */ - public static function search($search,$returnData=false,$root=false) { + public static function search($search, $returnData=false, $root=false) { if($root===false) { $root=OC_Filesystem::getRoot(); } $rootLen=strlen($root); if(!$returnData) { - $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `name` LIKE ? AND `user`=?'); + $select = '`path`'; }else{ - $query=OC_DB::prepare('SELECT * FROM `*PREFIX*fscache` WHERE `name` LIKE ? AND `user`=?'); + $select = '*'; + } + if (OC_Config::getValue('dbtype') === 'oci8') { + $where = 'LOWER(`name`) LIKE LOWER(?) AND `user`=?'; + } else { + $where = '`name` LIKE ? AND `user`=?'; } - $result=$query->execute(array("%$search%",OC_User::getUser())); + $query=OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*fscache` WHERE '.$where); + $result=$query->execute(array("%$search%", OC_User::getUser())); $names=array(); while($row=$result->fetchRow()) { if(!$returnData) { - $names[]=substr($row['path'],$rootLen); + $names[]=substr($row['path'], $rootLen); }else{ - $row['path']=substr($row['path'],$rootLen); + $row['path']=substr($row['path'], $rootLen); $names[]=$row; } } @@ -249,11 +258,11 @@ class OC_FileCache{ * - encrypted * - versioned */ - public static function getFolderContent($path,$root=false,$mimetype_filter='') { - if(OC_FileCache_Update::hasUpdated($path,$root,true)) { - OC_FileCache_Update::updateFolder($path,$root); + public static function getFolderContent($path, $root=false, $mimetype_filter='') { + if(OC_FileCache_Update::hasUpdated($path, $root, true)) { + OC_FileCache_Update::updateFolder($path, $root); } - return OC_FileCache_Cached::getFolderContent($path,$root,$mimetype_filter); + return OC_FileCache_Cached::getFolderContent($path, $root, $mimetype_filter); } /** @@ -262,8 +271,8 @@ class OC_FileCache{ * @param string root (optional) * @return bool */ - public static function inCache($path,$root=false) { - return self::getId($path,$root)!=-1; + public static function inCache($path, $root=false) { + return self::getId($path, $root)!=-1; } /** @@ -272,7 +281,7 @@ class OC_FileCache{ * @param string root (optional) * @return int */ - public static function getId($path,$root=false) { + public static function getId($path, $root=false) { if($root===false) { $root=OC_Filesystem::getRoot(); } @@ -285,7 +294,7 @@ class OC_FileCache{ $query=OC_DB::prepare('SELECT `id` FROM `*PREFIX*fscache` WHERE `path_hash`=?'); $result=$query->execute(array(md5($fullPath))); if(OC_DB::isError($result)) { - OC_Log::write('files','error while getting file id of '.$path,OC_Log::ERROR); + OC_Log::write('files', 'error while getting file id of '.$path, OC_Log::ERROR); return -1; } @@ -296,7 +305,7 @@ class OC_FileCache{ $id=-1; } if($cache=OC_Cache::getUserCache(true)) { - $cache->set('fileid/'.$fullPath,$id); + $cache->set('fileid/'.$fullPath, $id); } return $id; @@ -308,19 +317,19 @@ class OC_FileCache{ * @param string user (optional) * @return string */ - public static function getPath($id,$user='') { + public static function getPath($id, $user='') { if(!$user) { $user=OC_User::getUser(); } $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `id`=? AND `user`=?'); - $result=$query->execute(array($id,$user)); + $result=$query->execute(array($id, $user)); $row=$result->fetchRow(); $path=$row['path']; $root='/'.$user.'/files'; - if(substr($path,0,strlen($root))!=$root) { + if(substr($path, 0, strlen($root))!=$root) { return false; } - return substr($path,strlen($root)); + return substr($path, strlen($root)); } /** @@ -332,7 +341,7 @@ class OC_FileCache{ if($path=='/') { return -1; }else{ - return self::getId(dirname($path),''); + return self::getId(dirname($path), ''); } } @@ -342,27 +351,40 @@ class OC_FileCache{ * @param int $sizeDiff * @param string root (optinal) */ - public static function increaseSize($path,$sizeDiff, $root=false) { + public static function increaseSize($path, $sizeDiff, $root=false) { if($sizeDiff==0) return; - $id=self::getId($path,$root); + $item = OC_FileCache_Cached::get($path); + //stop walking up the filetree if we hit a non-folder + if($item['mimetype'] !== 'httpd/unix-directory'){ + return; + } + $id = $item['id']; while($id!=-1) {//walk up the filetree increasing the size of all parent folders $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `size`=`size`+? WHERE `id`=?'); - $query->execute(array($sizeDiff,$id)); - $id=self::getParentId($path); + $query->execute(array($sizeDiff, $id)); + if($path == '' or $path =='/'){ + return; + } $path=dirname($path); + $parent = OC_FileCache_Cached::get($path); + $id = $parent['id']; + //stop walking up the filetree if we hit a non-folder + if($parent['mimetype'] !== 'httpd/unix-directory'){ + return; + } } } /** * recursively scan the filesystem and fill the cache * @param string $path - * @param OC_EventSource $enventSource (optional) - * @param int count (optional) - * @param string root (optional) + * @param OC_EventSource $eventSource (optional) + * @param int $count (optional) + * @param string $root (optional) */ - public static function scan($path,$eventSource=false,&$count=0,$root=false) { + public static function scan($path, $eventSource=false,&$count=0, $root=false) { if($eventSource) { - $eventSource->send('scanning',array('file'=>$path,'count'=>$count)); + $eventSource->send('scanning', array('file'=>$path, 'count'=>$count)); } $lastSend=$count; // NOTE: Ugly hack to prevent shared files from going into the cache (the source already exists somewhere in the cache) @@ -374,7 +396,7 @@ class OC_FileCache{ }else{ $view=new OC_FilesystemView($root); } - self::scanFile($path,$root); + self::scanFile($path, $root); $dh=$view->opendir($path.'/'); $totalSize=0; if($dh) { @@ -382,21 +404,21 @@ class OC_FileCache{ if($filename != '.' and $filename != '..') { $file=$path.'/'.$filename; if($view->is_dir($file.'/')) { - self::scan($file,$eventSource,$count,$root); + self::scan($file, $eventSource, $count, $root); }else{ - $totalSize+=self::scanFile($file,$root); + $totalSize+=self::scanFile($file, $root); $count++; if($count>$lastSend+25 and $eventSource) { $lastSend=$count; - $eventSource->send('scanning',array('file'=>$path,'count'=>$count)); + $eventSource->send('scanning', array('file'=>$path, 'count'=>$count)); } } } } } - OC_FileCache_Update::cleanFolder($path,$root); - self::increaseSize($path,$totalSize,$root); + OC_FileCache_Update::cleanFolder($path, $root); + self::increaseSize($path, $totalSize, $root); } /** @@ -405,7 +427,7 @@ class OC_FileCache{ * @param string root (optional) * @return int size of the scanned file */ - public static function scanFile($path,$root=false) { + public static function scanFile($path, $root=false) { // NOTE: Ugly hack to prevent shared files from going into the cache (the source already exists somewhere in the cache) if (substr($path, 0, 7) == '/Shared') { return; @@ -430,7 +452,7 @@ class OC_FileCache{ if($path=='/') { $path=''; } - self::put($path,$stat,$root); + self::put($path, $stat, $root); return $stat['size']; } @@ -442,12 +464,12 @@ class OC_FileCache{ * @return array of file paths * * $part1 and $part2 together form the complete mimetype. - * e.g. searchByMime('text','plain') + * e.g. searchByMime('text', 'plain') * * seccond mimetype part can be ommited * e.g. searchByMime('audio') */ - public static function searchByMime($part1,$part2=null,$root=false) { + public static function searchByMime($part1, $part2=null, $root=false) { if($root===false) { $root=OC_Filesystem::getRoot(); } @@ -456,14 +478,14 @@ class OC_FileCache{ $user=OC_User::getUser(); if(!$part2) { $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `mimepart`=? AND `user`=? AND `path` LIKE ?'); - $result=$query->execute(array($part1,$user, $root)); + $result=$query->execute(array($part1, $user, $root)); }else{ $query=OC_DB::prepare('SELECT `path` FROM `*PREFIX*fscache` WHERE `mimetype`=? AND `user`=? AND `path` LIKE ? '); - $result=$query->execute(array($part1.'/'.$part2,$user, $root)); + $result=$query->execute(array($part1.'/'.$part2, $user, $root)); } $names=array(); while($row=$result->fetchRow()) { - $names[]=substr($row['path'],$rootLen); + $names[]=substr($row['path'], $rootLen); } return $names; } @@ -494,18 +516,19 @@ class OC_FileCache{ * trigger an update for the cache by setting the mtimes to 0 * @param string $user (optional) */ - public static function triggerUpdate($user=''){ + public static function triggerUpdate($user='') { if($user) { - $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 WHERE `user`=? AND `mimetype`="httpd/unix-directory"'); - $query->execute(array($user)); + $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 WHERE `user`=? AND `mimetype`= ? '); + $query->execute(array($user,'httpd/unix-directory')); }else{ - $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 AND `mimetype`="httpd/unix-directory"'); - $query->execute(); + $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 AND `mimetype`= ? '); + $query->execute(array('httpd/unix-directory')); } } } //watch for changes and try to keep the cache up to date -OC_Hook::connect('OC_Filesystem','post_write','OC_FileCache_Update','fileSystemWatcherWrite'); -OC_Hook::connect('OC_Filesystem','post_delete','OC_FileCache_Update','fileSystemWatcherDelete'); -OC_Hook::connect('OC_Filesystem','post_rename','OC_FileCache_Update','fileSystemWatcherRename'); +OC_Hook::connect('OC_Filesystem', 'post_write', 'OC_FileCache_Update', 'fileSystemWatcherWrite'); +OC_Hook::connect('OC_Filesystem', 'post_delete', 'OC_FileCache_Update', 'fileSystemWatcherDelete'); +OC_Hook::connect('OC_Filesystem', 'post_rename', 'OC_FileCache_Update', 'fileSystemWatcherRename'); +OC_Hook::connect('OC_User', 'post_deleteUser', 'OC_FileCache_Update', 'deleteFromUser'); diff --git a/lib/filecache/cached.php b/lib/filecache/cached.php index 9b1eb4f7803b3467b6798f5badfcd8cde02cfea2..5e0a00746b98df761f9edab5a58f996858f5f0c7 100644 --- a/lib/filecache/cached.php +++ b/lib/filecache/cached.php @@ -13,12 +13,12 @@ class OC_FileCache_Cached{ public static $savedData=array(); - public static function get($path,$root=false) { + public static function get($path, $root=false) { if($root===false) { $root=OC_Filesystem::getRoot(); } $path=$root.$path; - $stmt=OC_DB::prepare('SELECT `path`,`ctime`,`mtime`,`mimetype`,`size`,`encrypted`,`versioned`,`writable` FROM `*PREFIX*fscache` WHERE `path_hash`=?'); + $stmt=OC_DB::prepare('SELECT `id`, `path`,`ctime`,`mtime`,`mimetype`,`size`,`encrypted`,`versioned`,`writable` FROM `*PREFIX*fscache` WHERE `path_hash`=?'); if ( ! OC_DB::isError($stmt) ) { $result=$stmt->execute(array(md5($path))); if ( ! OC_DB::isError($result) ) { @@ -61,7 +61,7 @@ class OC_FileCache_Cached{ * - encrypted * - versioned */ - public static function getFolderContent($path,$root=false,$mimetype_filter='') { + public static function getFolderContent($path, $root=false, $mimetype_filter='') { if($root===false) { $root=OC_Filesystem::getRoot(); } @@ -78,4 +78,4 @@ class OC_FileCache_Cached{ return false; } } -} \ No newline at end of file +} diff --git a/lib/filecache/update.php b/lib/filecache/update.php index 4a5ea873b1748a436b0fcea7736f0f295e4ef787..bc403113e7cf9c89d271a8514cb31dfd1b09a551 100644 --- a/lib/filecache/update.php +++ b/lib/filecache/update.php @@ -18,7 +18,7 @@ class OC_FileCache_Update{ * @param boolean folder * @return bool */ - public static function hasUpdated($path,$root=false,$folder=false) { + public static function hasUpdated($path, $root=false, $folder=false) { if($root===false) { $view=OC_Filesystem::getView(); }else{ @@ -46,14 +46,14 @@ class OC_FileCache_Update{ /** * delete non existing files from the cache */ - public static function cleanFolder($path,$root=false) { + public static function cleanFolder($path, $root=false) { if($root===false) { $view=OC_Filesystem::getView(); }else{ $view=new OC_FilesystemView($root); } - $cachedContent=OC_FileCache_Cached::getFolderContent($path,$root); + $cachedContent=OC_FileCache_Cached::getFolderContent($path, $root); foreach($cachedContent as $fileData) { $path=$fileData['path']; $file=$view->getRelativePath($path); @@ -72,7 +72,7 @@ class OC_FileCache_Update{ * @param string path * @param string root (optional) */ - public static function updateFolder($path,$root=false) { + public static function updateFolder($path, $root=false) { if($root===false) { $view=OC_Filesystem::getView(); }else{ @@ -85,7 +85,7 @@ class OC_FileCache_Update{ $file=$path.'/'.$filename; $isDir=$view->is_dir($file); if(self::hasUpdated($file, $root, $isDir)) { - if($isDir){ + if($isDir) { self::updateFolder($file, $root); }elseif($root===false) {//filesystem hooks are only valid for the default root OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$file)); @@ -143,7 +143,7 @@ class OC_FileCache_Update{ * @param string path * @param string root (optional) */ - public static function update($path,$root=false) { + public static function update($path, $root=false) { if($root===false) { $view=OC_Filesystem::getView(); }else{ @@ -153,7 +153,7 @@ class OC_FileCache_Update{ $mimetype=$view->getMimeType($path); $size=0; - $cached=OC_FileCache_Cached::get($path,$root); + $cached=OC_FileCache_Cached::get($path, $root); $cachedSize=isset($cached['size'])?$cached['size']:0; if($view->is_dir($path.'/')) { @@ -165,7 +165,7 @@ class OC_FileCache_Update{ $mtime=$view->filemtime($path.'/'); $ctime=$view->filectime($path.'/'); $writable=$view->is_writable($path.'/'); - OC_FileCache::put($path, array('size'=>$size,'mtime'=>$mtime,'ctime'=>$ctime,'mimetype'=>$mimetype,'writable'=>$writable)); + OC_FileCache::put($path, array('size'=>$size,'mtime'=>$mtime,'ctime'=>$ctime,'mimetype'=>$mimetype, 'writable'=>$writable)); }else{ $count=0; OC_FileCache::scan($path, null, $count, $root); @@ -174,7 +174,7 @@ class OC_FileCache_Update{ }else{ $size=OC_FileCache::scanFile($path, $root); } - if($path !== '' and $path !== '/'){ + if($path !== '' and $path !== '/') { OC_FileCache::increaseSize(dirname($path), $size-$cachedSize, $root); } } @@ -184,7 +184,7 @@ class OC_FileCache_Update{ * @param string path * @param string root (optional) */ - public static function delete($path,$root=false) { + public static function delete($path, $root=false) { $cached=OC_FileCache_Cached::get($path, $root); if(!isset($cached['size'])) { return; @@ -200,7 +200,7 @@ class OC_FileCache_Update{ * @param string newPath * @param string root (optional) */ - public static function rename($oldPath,$newPath,$root=false) { + public static function rename($oldPath, $newPath, $root=false) { if(!OC_FileCache::inCache($oldPath, $root)) { return; } @@ -216,4 +216,12 @@ class OC_FileCache_Update{ OC_FileCache::increaseSize(dirname($newPath), $oldSize, $root); OC_FileCache::move($oldPath, $newPath); } + + /** + * delete files owned by user from the cache + * @param string $parameters$parameters["uid"]) + */ + public static function deleteFromUser($parameters) { + OC_FileCache::clear($parameters["uid"]); + } } diff --git a/lib/filechunking.php b/lib/filechunking.php index 5ab33c77ad7087d190d4c1490683749a072a745e..55a4d7304304dd5237cfe196533534efc6de4669 100644 --- a/lib/filechunking.php +++ b/lib/filechunking.php @@ -59,7 +59,7 @@ class OC_FileChunking { for($i=0; $i < $this->info['chunkcount']; $i++) { $chunk = $cache->get($prefix.$i); $cache->remove($prefix.$i); - $count += fwrite($f,$chunk); + $count += fwrite($f, $chunk); } return $count; } diff --git a/lib/fileproxy.php b/lib/fileproxy.php index 17380c656a3c5205bf5928579850276d7030c87e..2f81bde64a18e61dc8912f929643d5bd0b7adcd0 100644 --- a/lib/fileproxy.php +++ b/lib/fileproxy.php @@ -51,8 +51,8 @@ class OC_FileProxy{ * * this implements a dummy proxy for all operations */ - public function __call($function,$arguments) { - if(substr($function,0,3)=='pre') { + public function __call($function, $arguments) { + if(substr($function, 0, 3)=='pre') { return true; }else{ return $arguments[1]; @@ -70,7 +70,7 @@ class OC_FileProxy{ public static function getProxies($operation) { $proxies=array(); foreach(self::$proxies as $proxy) { - if(method_exists($proxy,$operation)) { + if(method_exists($proxy, $operation)) { $proxies[]=$proxy; } } @@ -85,7 +85,7 @@ class OC_FileProxy{ $proxies=self::getProxies($operation); foreach($proxies as $proxy) { if(!is_null($filepath2)) { - if($proxy->$operation($filepath,$filepath2)===false) { + if($proxy->$operation($filepath, $filepath2)===false) { return false; } }else{ @@ -97,14 +97,14 @@ class OC_FileProxy{ return true; } - public static function runPostProxies($operation,$path,$result) { + public static function runPostProxies($operation, $path, $result) { if(!self::$enabled) { return $result; } $operation='post'.$operation; $proxies=self::getProxies($operation); foreach($proxies as $proxy) { - $result=$proxy->$operation($path,$result); + $result=$proxy->$operation($path, $result); } return $result; } diff --git a/lib/fileproxy/fileoperations.php b/lib/fileproxy/fileoperations.php index fe7edafad2b5c8f36e7c5dd04c3445a39a44acd1..516629adaec1e8474623d87abec358a3fcdd9f38 100644 --- a/lib/fileproxy/fileoperations.php +++ b/lib/fileproxy/fileoperations.php @@ -1,37 +1,37 @@ - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see . - * - */ - -/** - * check if standard file operations +/** + * ownCloud + * + * @author Bjoern Schiessle + * @copyright 2012 Bjoern Schiessle + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * */ - -class OC_FileProxy_FileOperations extends OC_FileProxy{ - static $rootView; - public function premkdir($path) { - if(!self::$rootView){ - self::$rootView = new OC_FilesystemView(''); +/** + * check if standard file operations + */ + +class OC_FileProxy_FileOperations extends OC_FileProxy{ + static $rootView; + + public function premkdir($path) { + if(!self::$rootView) { + self::$rootView = new OC_FilesystemView(''); } - return !self::$rootView->file_exists($path); + return !self::$rootView->file_exists($path); } - + } \ No newline at end of file diff --git a/lib/fileproxy/quota.php b/lib/fileproxy/quota.php index 5a0dbdb6fe2312f8e9edc6226bd1166900aef1d4..742e02d471b66b86951baf832148a1861dedd3fd 100644 --- a/lib/fileproxy/quota.php +++ b/lib/fileproxy/quota.php @@ -27,77 +27,83 @@ class OC_FileProxy_Quota extends OC_FileProxy{ static $rootView; - private $userQuota=-1; + private $userQuota=array(); /** - * get the quota for the current user + * get the quota for the user + * @param user * @return int */ - private function getQuota() { - if($this->userQuota!=-1) { - return $this->userQuota; + private function getQuota($user) { + if(in_array($user, $this->userQuota)) { + return $this->userQuota[$user]; } - $userQuota=OC_Preferences::getValue(OC_User::getUser(),'files','quota','default'); + $userQuota=OC_Preferences::getValue($user, 'files', 'quota', 'default'); if($userQuota=='default') { - $userQuota=OC_AppConfig::getValue('files','default_quota','none'); + $userQuota=OC_AppConfig::getValue('files', 'default_quota', 'none'); } if($userQuota=='none') { - $this->userQuota=0; + $this->userQuota[$user]=-1; }else{ - $this->userQuota=OC_Helper::computerFileSize($userQuota); + $this->userQuota[$user]=OC_Helper::computerFileSize($userQuota); } - return $this->userQuota; + return $this->userQuota[$user]; } /** - * get the free space in the users home folder + * get the free space in the path's owner home folder + * @param path * @return int */ - private function getFreeSpace() { - $rootInfo=OC_FileCache_Cached::get(''); + private function getFreeSpace($path) { + $storage=OC_Filesystem::getStorage($path); + $owner=$storage->getOwner($path); + + $totalSpace=$this->getQuota($owner); + if($totalSpace==-1) { + return -1; + } + + $rootInfo=OC_FileCache::get('', "/".$owner."/files"); // TODO Remove after merge of share_api - if (OC_FileCache::inCache('/Shared')) { - $sharedInfo=OC_FileCache_Cached::get('/Shared'); + if (OC_FileCache::inCache('/Shared', "/".$owner."/files")) { + $sharedInfo=OC_FileCache::get('/Shared', "/".$owner."/files"); } else { $sharedInfo = null; } $usedSpace=isset($rootInfo['size'])?$rootInfo['size']:0; $usedSpace=isset($sharedInfo['size'])?$usedSpace-$sharedInfo['size']:$usedSpace; - $totalSpace=$this->getQuota(); - if($totalSpace==0) { - return 0; - } return $totalSpace-$usedSpace; } - - public function postFree_space($path,$space) { - $free=$this->getFreeSpace(); - if($free==0) { + + public function postFree_space($path, $space) { + $free=$this->getFreeSpace($path); + if($free==-1) { return $space; } - return min($free,$space); + return min($free, $space); } - public function preFile_put_contents($path,$data) { + public function preFile_put_contents($path, $data) { if (is_resource($data)) { $data = '';//TODO: find a way to get the length of the stream without emptying it } - return (strlen($data)<$this->getFreeSpace() or $this->getFreeSpace()==0); + return (strlen($data)<$this->getFreeSpace($path) or $this->getFreeSpace($path)==-1); } - public function preCopy($path1,$path2) { - if(!self::$rootView){ + public function preCopy($path1, $path2) { + if(!self::$rootView) { self::$rootView = new OC_FilesystemView(''); } - return (self::$rootView->filesize($path1)<$this->getFreeSpace() or $this->getFreeSpace()==0); + return (self::$rootView->filesize($path1)<$this->getFreeSpace($path2) or $this->getFreeSpace($path2)==-1); } - public function preFromTmpFile($tmpfile,$path) { - return (filesize($tmpfile)<$this->getFreeSpace() or $this->getFreeSpace()==0); + public function preFromTmpFile($tmpfile, $path) { + return (filesize($tmpfile)<$this->getFreeSpace($path) or $this->getFreeSpace($path)==-1); } - public function preFromUploadedFile($tmpfile,$path) { - return (filesize($tmpfile)<$this->getFreeSpace() or $this->getFreeSpace()==0); + public function preFromUploadedFile($tmpfile, $path) { + return (filesize($tmpfile)<$this->getFreeSpace($path) or $this->getFreeSpace($path)==-1); } } diff --git a/lib/files.php b/lib/files.php index 2b2b8b42dc41360a4b5ef72e942ef92c7dc748e5..b4a4145a4939c03e7e6fa2e7346528f18d1d5431 100644 --- a/lib/files.php +++ b/lib/files.php @@ -42,16 +42,20 @@ class OC_Files { * - versioned */ public static function getFileInfo($path) { + $path = OC_Filesystem::normalizePath($path); if (($path == '/Shared' || substr($path, 0, 8) == '/Shared/') && OC_App::isEnabled('files_sharing')) { if ($path == '/Shared') { list($info) = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP_ROOT); - }else{ - $info['size'] = OC_Filesystem::filesize($path); - $info['mtime'] = OC_Filesystem::filemtime($path); - $info['ctime'] = OC_Filesystem::filectime($path); - $info['mimetype'] = OC_Filesystem::getMimeType($path); - $info['encrypted'] = false; - $info['versioned'] = false; + } else { + $info = array(); + if (OC_Filesystem::file_exists($path)) { + $info['size'] = OC_Filesystem::filesize($path); + $info['mtime'] = OC_Filesystem::filemtime($path); + $info['ctime'] = OC_Filesystem::filectime($path); + $info['mimetype'] = OC_Filesystem::getMimeType($path); + $info['encrypted'] = false; + $info['versioned'] = false; + } } } else { $info = OC_FileCache::get($path); @@ -87,16 +91,16 @@ class OC_Files { foreach ($files as &$file) { $file['directory'] = $directory; $file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file'; - $permissions = OCP\Share::PERMISSION_READ; + $permissions = OCP\PERMISSION_READ; // NOTE: Remove check when new encryption is merged if (!$file['encrypted']) { - $permissions |= OCP\Share::PERMISSION_SHARE; + $permissions |= OCP\PERMISSION_SHARE; } if ($file['type'] == 'dir' && $file['writable']) { - $permissions |= OCP\Share::PERMISSION_CREATE; + $permissions |= OCP\PERMISSION_CREATE; } if ($file['writable']) { - $permissions |= OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE; + $permissions |= OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE; } $file['permissions'] = $permissions; } @@ -135,18 +139,27 @@ class OC_Files { * @param file $file ; seperated list of files to download * @param boolean $only_header ; boolean to only send header of the request */ - public static function get($dir,$files, $only_header = false) { - if(strpos($files,';')) { - $files=explode(';',$files); + public static function get($dir, $files, $only_header = false) { + $xsendfile = false; + if (isset($_SERVER['MOD_X_SENDFILE_ENABLED']) || + isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED'])) { + $xsendfile = true; + } + if(strpos($files, ';')) { + $files=explode(';', $files); } if(is_array($files)) { - self::validateZipDownload($dir,$files); + self::validateZipDownload($dir, $files); $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); $zip = new ZipArchive(); - $filename = OC_Helper::tmpFile('.zip'); - if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) { + if ($xsendfile) { + $filename = OC_Helper::tmpFileNoClean('.zip'); + }else{ + $filename = OC_Helper::tmpFile('.zip'); + } + if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } foreach($files as $file) { @@ -154,31 +167,35 @@ class OC_Files { if(OC_Filesystem::is_file($file)) { $tmpFile=OC_Filesystem::toTmpFile($file); self::$tmpFiles[]=$tmpFile; - $zip->addFile($tmpFile,basename($file)); + $zip->addFile($tmpFile, basename($file)); }elseif(OC_Filesystem::is_dir($file)) { - self::zipAddDir($file,$zip); + self::zipAddDir($file, $zip); } } $zip->close(); set_time_limit($executionTime); }elseif(OC_Filesystem::is_dir($dir.'/'.$files)) { - self::validateZipDownload($dir,$files); + self::validateZipDownload($dir, $files); $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); $zip = new ZipArchive(); - $filename = OC_Helper::tmpFile('.zip'); - if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) { + if ($xsendfile) { + $filename = OC_Helper::tmpFileNoClean('.zip'); + }else{ + $filename = OC_Helper::tmpFile('.zip'); + } + if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } $file=$dir.'/'.$files; - self::zipAddDir($file,$zip); + self::zipAddDir($file, $zip); $zip->close(); set_time_limit($executionTime); }else{ $zip=false; $filename=$dir.'/'.$files; } - @ob_end_clean(); + OC_Util::obEnd(); if($zip or OC_Filesystem::is_readable($filename)) { header('Content-Disposition: attachment; filename="'.basename($filename).'"'); header('Content-Transfer-Encoding: binary'); @@ -187,13 +204,18 @@ class OC_Files { ini_set('zlib.output_compression', 'off'); header('Content-Type: application/zip'); header('Content-Length: ' . filesize($filename)); + self::addSendfileHeader($filename); }else{ header('Content-Type: '.OC_Filesystem::getMimeType($filename)); + $storage = OC_Filesystem::getStorage($filename); + if ($storage instanceof OC_Filestorage_Local) { + self::addSendfileHeader(OC_Filesystem::getLocalFile($filename)); + } } }elseif($zip or !OC_Filesystem::file_exists($filename)) { header("HTTP/1.0 404 Not Found"); $tmpl = new OC_Template( '', '404', 'guest' ); - $tmpl->assign('file',$filename); + $tmpl->assign('file', $filename); $tmpl->printPage(); }else{ header("HTTP/1.0 403 Forbidden"); @@ -205,7 +227,7 @@ class OC_Files { return ; } if($zip) { - $handle=fopen($filename,'r'); + $handle=fopen($filename, 'r'); if ($handle) { $chunkSize = 8*1024;// 1 MB chunks while (!feof($handle)) { @@ -213,7 +235,9 @@ class OC_Files { flush(); } } - unlink($filename); + if (!$xsendfile) { + unlink($filename); + } }else{ OC_Filesystem::readfile($filename); } @@ -224,20 +248,29 @@ class OC_Files { } } - public static function zipAddDir($dir,$zip,$internalDir='') { + private static function addSendfileHeader($filename) { + if (isset($_SERVER['MOD_X_SENDFILE_ENABLED'])) { + header("X-Sendfile: " . $filename); + } + if (isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED'])) { + header("X-Accel-Redirect: " . $filename); + } + } + + public static function zipAddDir($dir, $zip, $internalDir='') { $dirname=basename($dir); $zip->addEmptyDir($internalDir.$dirname); $internalDir.=$dirname.='/'; - $files=OC_Files::getdirectorycontent($dir); + $files=OC_Files::getDirectoryContent($dir); foreach($files as $file) { $filename=$file['name']; $file=$dir.'/'.$filename; if(OC_Filesystem::is_file($file)) { $tmpFile=OC_Filesystem::toTmpFile($file); OC_Files::$tmpFiles[]=$tmpFile; - $zip->addFile($tmpFile,$internalDir.$filename); + $zip->addFile($tmpFile, $internalDir.$filename); }elseif(OC_Filesystem::is_dir($file)) { - self::zipAddDir($file,$zip,$internalDir); + self::zipAddDir($file, $zip, $internalDir); } } } @@ -249,11 +282,11 @@ class OC_Files { * @param dir $targetDir * @param file $target */ - public static function move($sourceDir,$source,$targetDir,$target) { + public static function move($sourceDir, $source, $targetDir, $target) { if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared')) { $targetFile=self::normalizePath($targetDir.'/'.$target); $sourceFile=self::normalizePath($sourceDir.'/'.$source); - return OC_Filesystem::rename($sourceFile,$targetFile); + return OC_Filesystem::rename($sourceFile, $targetFile); } else { return false; } @@ -267,11 +300,11 @@ class OC_Files { * @param dir $targetDir * @param file $target */ - public static function copy($sourceDir,$source,$targetDir,$target) { + public static function copy($sourceDir, $source, $targetDir, $target) { if(OC_User::isLoggedIn()) { $targetFile=$targetDir.'/'.$target; $sourceFile=$sourceDir.'/'.$source; - return OC_Filesystem::copy($sourceFile,$targetFile); + return OC_Filesystem::copy($sourceFile, $targetFile); } } @@ -282,7 +315,7 @@ class OC_Files { * @param file $name * @param type $type */ - public static function newFile($dir,$name,$type) { + public static function newFile($dir, $name, $type) { if(OC_User::isLoggedIn()) { $file=$dir.'/'.$name; if($type=='dir') { @@ -305,7 +338,7 @@ class OC_Files { * @param dir $dir * @param file $name */ - public static function delete($dir,$file) { + public static function delete($dir, $file) { if(OC_User::isLoggedIn() && ($dir!= '' || $file != 'Shared')) { $file=$dir.'/'.$file; return OC_Filesystem::unlink($file); @@ -389,12 +422,12 @@ class OC_Files { * @param string file * @return string guessed mime type */ - static function pull($source,$token,$dir,$file) { - $tmpfile=tempnam(get_temp_dir(),'remoteCloudFile'); - $fp=fopen($tmpfile,'w+'); + static function pull($source, $token, $dir, $file) { + $tmpfile=tempnam(get_temp_dir(), 'remoteCloudFile'); + $fp=fopen($tmpfile, 'w+'); $url=$source.="/files/pull.php?token=$token"; $ch=curl_init(); - curl_setopt($ch,CURLOPT_URL,$url); + curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FILE, $fp); curl_exec($ch); fclose($fp); @@ -402,7 +435,7 @@ class OC_Files { $httpCode=$info['http_code']; curl_close($ch); if($httpCode==200 or $httpCode==0) { - OC_Filesystem::fromTmpFile($tmpfile,$dir.'/'.$file); + OC_Filesystem::fromTmpFile($tmpfile, $dir.'/'.$file); return true; }else{ return false; @@ -423,8 +456,8 @@ class OC_Files { $size -=1; } else { $size=OC_Helper::humanFileSize($size); - $size=substr($size,0,-1);//strip the B - $size=str_replace(' ','',$size); //remove the space between the size and the postfix + $size=substr($size, 0, -1);//strip the B + $size=str_replace(' ', '', $size); //remove the space between the size and the postfix } //don't allow user to break his config -- broken or malicious size input @@ -447,7 +480,7 @@ class OC_Files { $setting = 'php_value '.$key.' '.$size; $hasReplaced = 0; $content = preg_replace($pattern, $setting, $htaccess, 1, $hasReplaced); - if($content !== NULL) { + if($content !== null) { $htaccess = $content; } if($hasReplaced == 0) { @@ -459,7 +492,7 @@ class OC_Files { if(is_writable(OC::$SERVERROOT.'/.htaccess')) { file_put_contents(OC::$SERVERROOT.'/.htaccess', $htaccess); return OC_Helper::computerFileSize($size); - } else { OC_Log::write('files','Can\'t write upload limit to '.OC::$SERVERROOT.'/.htaccess. Please check the file permissions',OC_Log::WARN); } + } else { OC_Log::write('files', 'Can\'t write upload limit to '.OC::$SERVERROOT.'/.htaccess. Please check the file permissions', OC_Log::WARN); } return false; } @@ -474,18 +507,18 @@ class OC_Files { $old=''; while($old!=$path) {//replace any multiplicity of slashes with a single one $old=$path; - $path=str_replace('//','/',$path); + $path=str_replace('//', '/', $path); } return $path; } } -function fileCmp($a,$b) { +function fileCmp($a, $b) { if($a['type']=='dir' and $b['type']!='dir') { return -1; }elseif($a['type']!='dir' and $b['type']=='dir') { return 1; }else{ - return strnatcasecmp($a['name'],$b['name']); + return strnatcasecmp($a['name'], $b['name']); } } diff --git a/lib/filestorage.php b/lib/filestorage.php index 5bfd09253d5fcd432969c05a38147e2345d41a72..dd65f4421b7f0c18e87a125aacecc6be2b73e627 100644 --- a/lib/filestorage.php +++ b/lib/filestorage.php @@ -42,13 +42,13 @@ abstract class OC_Filestorage{ abstract public function filectime($path); abstract public function filemtime($path); abstract public function file_get_contents($path); - abstract public function file_put_contents($path,$data); + abstract public function file_put_contents($path, $data); abstract public function unlink($path); - abstract public function rename($path1,$path2); - abstract public function copy($path1,$path2); - abstract public function fopen($path,$mode); + abstract public function rename($path1, $path2); + abstract public function copy($path1, $path2); + abstract public function fopen($path, $mode); abstract public function getMimeType($path); - abstract public function hash($type,$path,$raw = false); + abstract public function hash($type, $path, $raw = false); abstract public function free_space($path); abstract public function search($query); abstract public function touch($path, $mtime=null); @@ -62,5 +62,6 @@ abstract class OC_Filestorage{ * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed. * returning true for other changes in the folder is optional */ - abstract public function hasUpdated($path,$time); + abstract public function hasUpdated($path, $time); + abstract public function getOwner($path); } diff --git a/lib/filestorage/common.php b/lib/filestorage/common.php index 351714437c58d36c482779898651877dd543adef..b97eb79d8d4f1d0feb937e4275ea7c790ff7341f 100644 --- a/lib/filestorage/common.php +++ b/lib/filestorage/common.php @@ -89,25 +89,25 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { } return fread($handle, $size); } - public function file_put_contents($path,$data) { + public function file_put_contents($path, $data) { $handle = $this->fopen($path, "w"); return fwrite($handle, $data); } // abstract public function unlink($path); - public function rename($path1,$path2) { - if($this->copy($path1,$path2)) { + public function rename($path1, $path2) { + if($this->copy($path1, $path2)) { return $this->unlink($path1); }else{ return false; } } - public function copy($path1,$path2) { - $source=$this->fopen($path1,'r'); - $target=$this->fopen($path2,'w'); - $count=OC_Helper::streamCopy($source,$target); + public function copy($path1, $path2) { + $source=$this->fopen($path1, 'r'); + $target=$this->fopen($path2, 'w'); + $count=OC_Helper::streamCopy($source, $target); return $count>0; } -// abstract public function fopen($path,$mode); +// abstract public function fopen($path, $mode); /** * @brief Deletes all files and folders recursively within a directory @@ -188,25 +188,25 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { if($this->is_dir($path)) { return 'httpd/unix-directory'; } - $source=$this->fopen($path,'r'); + $source=$this->fopen($path, 'r'); if(!$source) { return false; } - $head=fread($source,8192);//8kb should suffice to determine a mimetype - if($pos=strrpos($path,'.')) { - $extension=substr($path,$pos); + $head=fread($source, 8192);//8kb should suffice to determine a mimetype + if($pos=strrpos($path, '.')) { + $extension=substr($path, $pos); }else{ $extension=''; } $tmpFile=OC_Helper::tmpFile($extension); - file_put_contents($tmpFile,$head); + file_put_contents($tmpFile, $head); $mime=OC_Helper::getMimeType($tmpFile); unlink($tmpFile); return $mime; } - public function hash($type,$path,$raw = false) { + public function hash($type, $path, $raw = false) { $tmpFile=$this->getLocalFile(); - $hash=hash($type,$tmpFile,$raw); + $hash=hash($type, $tmpFile, $raw); unlink($tmpFile); return $hash; } @@ -218,35 +218,35 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { return $this->toTmpFile($path); } private function toTmpFile($path) {//no longer in the storage api, still usefull here - $source=$this->fopen($path,'r'); + $source=$this->fopen($path, 'r'); if(!$source) { return false; } - if($pos=strrpos($path,'.')) { - $extension=substr($path,$pos); + if($pos=strrpos($path, '.')) { + $extension=substr($path, $pos); }else{ $extension=''; } $tmpFile=OC_Helper::tmpFile($extension); - $target=fopen($tmpFile,'w'); - OC_Helper::streamCopy($source,$target); + $target=fopen($tmpFile, 'w'); + OC_Helper::streamCopy($source, $target); return $tmpFile; } public function getLocalFolder($path) { $baseDir=OC_Helper::tmpFolder(); - $this->addLocalFolder($path,$baseDir); + $this->addLocalFolder($path, $baseDir); return $baseDir; } - private function addLocalFolder($path,$target) { + private function addLocalFolder($path, $target) { if($dh=$this->opendir($path)) { while($file=readdir($dh)) { if($file!=='.' and $file!=='..') { if($this->is_dir($path.'/'.$file)) { mkdir($target.'/'.$file); - $this->addLocalFolder($path.'/'.$file,$target.'/'.$file); + $this->addLocalFolder($path.'/'.$file, $target.'/'.$file); }else{ $tmp=$this->toTmpFile($path.'/'.$file); - rename($tmp,$target.'/'.$file); + rename($tmp, $target.'/'.$file); } } } @@ -254,17 +254,17 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { } // abstract public function touch($path, $mtime=null); - protected function searchInDir($query,$dir='') { + protected function searchInDir($query, $dir='') { $files=array(); $dh=$this->opendir($dir); if($dh) { while($item=readdir($dh)) { if ($item == '.' || $item == '..') continue; - if(strstr(strtolower($item),strtolower($query))!==false) { + if(strstr(strtolower($item), strtolower($query))!==false) { $files[]=$dir.'/'.$item; } if($this->is_dir($dir.'/'.$item)) { - $files=array_merge($files,$this->searchInDir($query,$dir.'/'.$item)); + $files=array_merge($files, $this->searchInDir($query, $dir.'/'.$item)); } } } @@ -276,7 +276,16 @@ abstract class OC_Filestorage_Common extends OC_Filestorage { * @param int $time * @return bool */ - public function hasUpdated($path,$time) { + public function hasUpdated($path, $time) { return $this->filemtime($path)>$time; } + + /** + * get the owner of a path + * @param $path The path to get the owner + * @return string uid or false + */ + public function getOwner($path) { + return OC_User::getUser(); + } } diff --git a/lib/filestorage/commontest.php b/lib/filestorage/commontest.php index b88bb232c3647830fcc7e33f2593941c6b570932..3b038b3fda9e08206b467422c77051851c82e72d 100644 --- a/lib/filestorage/commontest.php +++ b/lib/filestorage/commontest.php @@ -63,13 +63,13 @@ class OC_Filestorage_CommonTest extends OC_Filestorage_Common{ public function unlink($path) { return $this->storage->unlink($path); } - public function fopen($path,$mode) { - return $this->storage->fopen($path,$mode); + public function fopen($path, $mode) { + return $this->storage->fopen($path, $mode); } public function free_space($path) { return $this->storage->free_space($path); } public function touch($path, $mtime=null) { - return $this->storage->touch($path,$mtime); + return $this->storage->touch($path, $mtime); } } \ No newline at end of file diff --git a/lib/filestorage/local.php b/lib/filestorage/local.php index 80aa548047c31dc07afa7cba133f1dedb2db739c..6fe45acf8c5a3b60b4e395971100621bf029571b 100644 --- a/lib/filestorage/local.php +++ b/lib/filestorage/local.php @@ -6,7 +6,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ protected $datadir; public function __construct($arguments) { $this->datadir=$arguments['datadir']; - if(substr($this->datadir,-1)!=='/') { + if(substr($this->datadir, -1)!=='/') { $this->datadir.='/'; } } @@ -20,8 +20,8 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ return opendir($this->datadir.$path); } public function is_dir($path) { - if(substr($path,-1)=='/') { - $path=substr($path,0,-1); + if(substr($path, -1)=='/') { + $path=substr($path, 0, -1); } return is_dir($this->datadir.$path); } @@ -78,38 +78,38 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ public function file_get_contents($path) { return file_get_contents($this->datadir.$path); } - public function file_put_contents($path,$data) { - return file_put_contents($this->datadir.$path,$data); + public function file_put_contents($path, $data) { + return file_put_contents($this->datadir.$path, $data); } public function unlink($path) { return $this->delTree($path); } - public function rename($path1,$path2) { + public function rename($path1, $path2) { if (!$this->isUpdatable($path1)) { - OC_Log::write('core','unable to rename, file is not writable : '.$path1,OC_Log::ERROR); + OC_Log::write('core', 'unable to rename, file is not writable : '.$path1, OC_Log::ERROR); return false; } if(! $this->file_exists($path1)) { - OC_Log::write('core','unable to rename, file does not exists : '.$path1,OC_Log::ERROR); + OC_Log::write('core', 'unable to rename, file does not exists : '.$path1, OC_Log::ERROR); return false; } - if($return=rename($this->datadir.$path1,$this->datadir.$path2)) { + if($return=rename($this->datadir.$path1, $this->datadir.$path2)) { } return $return; } - public function copy($path1,$path2) { + public function copy($path1, $path2) { if($this->is_dir($path2)) { if(!$this->file_exists($path2)) { $this->mkdir($path2); } - $source=substr($path1,strrpos($path1,'/')+1); + $source=substr($path1, strrpos($path1, '/')+1); $path2.=$source; } - return copy($this->datadir.$path1,$this->datadir.$path2); + return copy($this->datadir.$path1, $this->datadir.$path2); } - public function fopen($path,$mode) { - if($return=fopen($this->datadir.$path,$mode)) { + public function fopen($path, $mode) { + if($return=fopen($this->datadir.$path, $mode)) { switch($mode) { case 'r': break; @@ -156,8 +156,8 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ return $return; } - public function hash($path,$type,$raw=false) { - return hash_file($type,$this->datadir.$path,$raw); + public function hash($path, $type, $raw=false) { + return hash_file($type, $this->datadir.$path, $raw); } public function free_space($path) { @@ -174,15 +174,15 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ return $this->datadir.$path; } - protected function searchInDir($query,$dir='') { + protected function searchInDir($query, $dir='') { $files=array(); foreach (scandir($this->datadir.$dir) as $item) { if ($item == '.' || $item == '..') continue; - if(strstr(strtolower($item),strtolower($query))!==false) { + if(strstr(strtolower($item), strtolower($query))!==false) { $files[]=$dir.'/'.$item; } if(is_dir($this->datadir.$dir.'/'.$item)) { - $files=array_merge($files,$this->searchInDir($query,$dir.'/'.$item)); + $files=array_merge($files, $this->searchInDir($query, $dir.'/'.$item)); } } return $files; @@ -193,7 +193,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{ * @param int $time * @return bool */ - public function hasUpdated($path,$time) { + public function hasUpdated($path, $time) { return $this->filemtime($path)>$time; } } diff --git a/lib/filesystem.php b/lib/filesystem.php index da524d7f181a82c6f93335abcd1a569f4e42fbb3..aa03593908da288152355f8814c62d0345969f4d 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -35,10 +35,10 @@ * post_create(path) * delete(path, &run) * post_delete(path) - * rename(oldpath,newpath, &run) - * post_rename(oldpath,newpath) - * copy(oldpath,newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emited in that order) - * post_rename(oldpath,newpath) + * rename(oldpath, newpath, &run) + * post_rename(oldpath, newpath) + * copy(oldpath, newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emited in that order) + * post_rename(oldpath, newpath) * * the &run parameter can be set to false to prevent the operation from occuring */ @@ -46,6 +46,7 @@ class OC_Filesystem{ static private $storages=array(); static private $mounts=array(); + static private $loadedUsers=array(); public static $loaded=false; /** * @var OC_Filestorage $defaultInstance @@ -147,21 +148,21 @@ class OC_Filesystem{ * @return string */ static public function getMountPoint($path) { - OC_Hook::emit(self::CLASSNAME,'get_mountpoint',array('path'=>$path)); + OC_Hook::emit(self::CLASSNAME, 'get_mountpoint', array('path'=>$path)); if(!$path) { $path='/'; } if($path[0]!=='/') { $path='/'.$path; } - $path=str_replace('//', '/',$path); + $path=str_replace('//', '/', $path); $foundMountPoint=''; $mountPoints=array_keys(OC_Filesystem::$mounts); foreach($mountPoints as $mountpoint) { if($mountpoint==$path) { return $mountpoint; } - if(strpos($path,$mountpoint)===0 and strlen($mountpoint)>strlen($foundMountPoint)) { + if(strpos($path, $mountpoint)===0 and strlen($mountpoint)>strlen($foundMountPoint)) { $foundMountPoint=$mountpoint; } } @@ -175,75 +176,95 @@ class OC_Filesystem{ */ static public function getInternalPath($path) { $mountPoint=self::getMountPoint($path); - $internalPath=substr($path,strlen($mountPoint)); + $internalPath=substr($path, strlen($mountPoint)); return $internalPath; } + + static private function mountPointsLoaded($user) { + return in_array($user, self::$loadedUsers); + } + /** * get the storage object for a path * @param string path * @return OC_Filestorage */ static public function getStorage($path) { + $user = ltrim(substr($path, 0, strpos($path, '/', 1)), '/'); + // check mount points if file was shared from a different user + if ($user != OC_User::getUser() && !self::mountPointsLoaded($user)) { + OC_Util::loadUserMountPoints($user); + self::loadSystemMountPoints($user); + self::$loadedUsers[] = $user; + } + $mountpoint=self::getMountPoint($path); if($mountpoint) { if(!isset(OC_Filesystem::$storages[$mountpoint])) { $mount=OC_Filesystem::$mounts[$mountpoint]; - OC_Filesystem::$storages[$mountpoint]=OC_Filesystem::createStorage($mount['class'],$mount['arguments']); + OC_Filesystem::$storages[$mountpoint]=OC_Filesystem::createStorage($mount['class'], $mount['arguments']); } return OC_Filesystem::$storages[$mountpoint]; } } - static public function init($root) { - if(self::$defaultInstance) { - return false; - } - self::$defaultInstance=new OC_FilesystemView($root); - - //load custom mount config + static private function loadSystemMountPoints($user) { if(is_file(OC::$SERVERROOT.'/config/mount.php')) { - $mountConfig=include(OC::$SERVERROOT.'/config/mount.php'); + $mountConfig=include OC::$SERVERROOT.'/config/mount.php'; if(isset($mountConfig['global'])) { foreach($mountConfig['global'] as $mountPoint=>$options) { - self::mount($options['class'],$options['options'],$mountPoint); + self::mount($options['class'], $options['options'], $mountPoint); } } - + if(isset($mountConfig['group'])) { foreach($mountConfig['group'] as $group=>$mounts) { - if(OC_Group::inGroup(OC_User::getUser(),$group)) { + if(OC_Group::inGroup($user, $group)) { foreach($mounts as $mountPoint=>$options) { - $mountPoint=self::setUserVars($mountPoint); + $mountPoint=self::setUserVars($mountPoint, $user); foreach($options as &$option) { - $option=self::setUserVars($option); + $option=self::setUserVars($option, $user); } - self::mount($options['class'],$options['options'],$mountPoint); + self::mount($options['class'], $options['options'], $mountPoint); } } } } - + if(isset($mountConfig['user'])) { - foreach($mountConfig['user'] as $user=>$mounts) { - if($user==='all' or strtolower($user)===strtolower(OC_User::getUser())) { + foreach($mountConfig['user'] as $mountUser=>$mounts) { + if($user==='all' or strtolower($mountUser)===strtolower($user)) { foreach($mounts as $mountPoint=>$options) { - $mountPoint=self::setUserVars($mountPoint); + $mountPoint=self::setUserVars($mountPoint, $user); foreach($options as &$option) { - $option=self::setUserVars($option); + $option=self::setUserVars($option, $user); } - self::mount($options['class'],$options['options'],$mountPoint); + self::mount($options['class'], $options['options'], $mountPoint); } } } } - + $mtime=filemtime(OC::$SERVERROOT.'/config/mount.php'); - $previousMTime=OC_Appconfig::getValue('files','mountconfigmtime',0); + $previousMTime=OC_Appconfig::getValue('files', 'mountconfigmtime', 0); if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated OC_FileCache::triggerUpdate(); - OC_Appconfig::setValue('files','mountconfigmtime',$mtime); + OC_Appconfig::setValue('files', 'mountconfigmtime', $mtime); } + } + } + + static public function init($root, $user = '') { + if(self::$defaultInstance) { + return false; } + self::$defaultInstance=new OC_FilesystemView($root); + + //load custom mount config + if (!isset($user)) { + $user = OC_User::getUser(); + } + self::loadSystemMountPoints($user); self::$loaded=true; } @@ -253,8 +274,12 @@ class OC_Filesystem{ * @param string intput * @return string */ - private static function setUserVars($input) { - return str_replace('$user',OC_User::getUser(),$input); + private static function setUserVars($input, $user) { + if (isset($user)) { + return str_replace('$user', $user, $input); + } else { + return str_replace('$user', OC_User::getUser(), $input); + } } /** @@ -278,7 +303,7 @@ class OC_Filesystem{ * @param array arguments * @return OC_Filestorage */ - static private function createStorage($class,$arguments) { + static private function createStorage($class, $arguments) { if(class_exists($class)) { try { return new $class($arguments); @@ -287,7 +312,7 @@ class OC_Filesystem{ return false; } }else{ - OC_Log::write('core','storage backend '.$class.' not found',OC_Log::ERROR); + OC_Log::write('core', 'storage backend '.$class.' not found', OC_Log::ERROR); return false; } } @@ -324,14 +349,14 @@ class OC_Filesystem{ * @param OC_Filestorage storage * @param string mountpoint */ - static public function mount($class,$arguments,$mountpoint) { + static public function mount($class, $arguments, $mountpoint) { if($mountpoint[0]!='/') { $mountpoint='/'.$mountpoint; } - if(substr($mountpoint,-1)!=='/') { + if(substr($mountpoint, -1)!=='/') { $mountpoint=$mountpoint.'/'; } - self::$mounts[$mountpoint]=array('class'=>$class,'arguments'=>$arguments); + self::$mounts[$mountpoint]=array('class'=>$class, 'arguments'=>$arguments); } /** @@ -371,10 +396,14 @@ class OC_Filesystem{ * @return bool */ static public function isValidPath($path) { + $path = self::normalizePath($path); if(!$path || $path[0]!=='/') { $path='/'.$path; } - if(strstr($path,'/../') || strrchr($path, '/') === '/..' ) { + if(strstr($path, '/../') || strrchr($path, '/') === '/..' ) { + return false; + } + if(self::isFileBlacklisted($path)) { return false; } return true; @@ -386,20 +415,22 @@ class OC_Filesystem{ * @param array $data from hook */ static public function isBlacklisted($data) { - $blacklist = array('.htaccess'); if (isset($data['path'])) { $path = $data['path']; } else if (isset($data['newpath'])) { $path = $data['newpath']; } if (isset($path)) { - $filename = strtolower(basename($path)); - if (in_array($filename, $blacklist)) { - $data['run'] = false; - } + $data['run'] = !self::isFileBlacklisted($path); } } + static public function isFileBlacklisted($path) { + $blacklist = array('.htaccess'); + $filename = strtolower(basename($path)); + return in_array($filename, $blacklist); + } + /** * following functions are equivilent to their php buildin equivilents for arguments/return values. */ @@ -475,33 +506,33 @@ class OC_Filesystem{ static public function file_get_contents($path) { return self::$defaultInstance->file_get_contents($path); } - static public function file_put_contents($path,$data) { - return self::$defaultInstance->file_put_contents($path,$data); + static public function file_put_contents($path, $data) { + return self::$defaultInstance->file_put_contents($path, $data); } static public function unlink($path) { return self::$defaultInstance->unlink($path); } - static public function rename($path1,$path2) { - return self::$defaultInstance->rename($path1,$path2); + static public function rename($path1, $path2) { + return self::$defaultInstance->rename($path1, $path2); } - static public function copy($path1,$path2) { - return self::$defaultInstance->copy($path1,$path2); + static public function copy($path1, $path2) { + return self::$defaultInstance->copy($path1, $path2); } - static public function fopen($path,$mode) { - return self::$defaultInstance->fopen($path,$mode); + static public function fopen($path, $mode) { + return self::$defaultInstance->fopen($path, $mode); } static public function toTmpFile($path) { return self::$defaultInstance->toTmpFile($path); } - static public function fromTmpFile($tmpFile,$path) { - return self::$defaultInstance->fromTmpFile($tmpFile,$path); + static public function fromTmpFile($tmpFile, $path) { + return self::$defaultInstance->fromTmpFile($tmpFile, $path); } static public function getMimeType($path) { return self::$defaultInstance->getMimeType($path); } - static public function hash($type,$path, $raw = false) { - return self::$defaultInstance->hash($type,$path, $raw); + static public function hash($type, $path, $raw = false) { + return self::$defaultInstance->hash($type, $path, $raw); } static public function free_space($path='/') { @@ -517,8 +548,8 @@ class OC_Filesystem{ * @param int $time * @return bool */ - static public function hasUpdated($path,$time) { - return self::$defaultInstance->hasUpdated($path,$time); + static public function hasUpdated($path, $time) { + return self::$defaultInstance->hasUpdated($path, $time); } static public function removeETagHook($params, $root = false) { @@ -544,23 +575,23 @@ class OC_Filesystem{ * @param bool $stripTrailingSlash * @return string */ - public static function normalizePath($path,$stripTrailingSlash=true) { + public static function normalizePath($path, $stripTrailingSlash=true) { if($path=='') { return '/'; } //no windows style slashes - $path=str_replace('\\','/',$path); + $path=str_replace('\\', '/', $path); //add leading slash if($path[0]!=='/') { $path='/'.$path; } //remove trainling slash - if($stripTrailingSlash and strlen($path)>1 and substr($path,-1,1)==='/') { - $path=substr($path,0,-1); + if($stripTrailingSlash and strlen($path)>1 and substr($path, -1, 1)==='/') { + $path=substr($path, 0, -1); } //remove duplicate slashes - while(strpos($path,'//')!==false) { - $path=str_replace('//','/',$path); + while(strpos($path, '//')!==false) { + $path=str_replace('//', '/', $path); } //normalize unicode if possible if(class_exists('Normalizer')) { @@ -569,9 +600,9 @@ class OC_Filesystem{ return $path; } } -OC_Hook::connect('OC_Filesystem','post_write', 'OC_Filesystem','removeETagHook'); -OC_Hook::connect('OC_Filesystem','post_delete','OC_Filesystem','removeETagHook'); -OC_Hook::connect('OC_Filesystem','post_rename','OC_Filesystem','removeETagHook'); +OC_Hook::connect('OC_Filesystem', 'post_write', 'OC_Filesystem', 'removeETagHook'); +OC_Hook::connect('OC_Filesystem', 'post_delete', 'OC_Filesystem', 'removeETagHook'); +OC_Hook::connect('OC_Filesystem', 'post_rename', 'OC_Filesystem', 'removeETagHook'); OC_Util::setupFS(); require_once 'filecache.php'; diff --git a/lib/filesystemview.php b/lib/filesystemview.php index 2950ced5f9e6836c4eb894ba27604af246a489a9..e944ae5045d8edd00dd22365378cc99144d0c5b1 100644 --- a/lib/filesystemview.php +++ b/lib/filesystemview.php @@ -47,11 +47,8 @@ class OC_FilesystemView { $this->fakeRoot=$root; } - public function getAbsolutePath($path) { - if(!$path) { - $path='/'; - } - if($path[0]!=='/') { + public function getAbsolutePath($path = '/') { + if(!$path || $path[0]!=='/') { $path='/'.$path; } return $this->fakeRoot.$path; @@ -142,7 +139,7 @@ class OC_FilesystemView { * @return string */ public function getLocalFile($path) { - $parent=substr($path, 0, strrpos($path,'/')); + $parent=substr($path, 0, strrpos($path, '/')); if(OC_Filesystem::isValidPath($parent) and $storage=$this->getStorage($path)) { return $storage->getLocalFile($this->getInternalPath($path)); } @@ -152,7 +149,7 @@ class OC_FilesystemView { * @return string */ public function getLocalFolder($path) { - $parent=substr($path, 0, strrpos($path,'/')); + $parent=substr($path, 0, strrpos($path, '/')); if(OC_Filesystem::isValidPath($parent) and $storage=$this->getStorage($path)) { return $storage->getLocalFolder($this->getInternalPath($path)); } @@ -198,7 +195,7 @@ class OC_FilesystemView { return $this->basicOperation('filesize', $path); } public function readfile($path) { - @ob_end_clean(); + OC_Util::obEnd(); $handle=$this->fopen($path, 'rb'); if ($handle) { $chunkSize = 8192;// 8 MB chunks @@ -215,13 +212,13 @@ class OC_FilesystemView { * @deprecated Replaced by isReadable() as part of CRUDS */ public function is_readable($path) { - return $this->basicOperation('isReadable',$path); + return $this->basicOperation('isReadable', $path); } /** * @deprecated Replaced by isCreatable(), isUpdatable(), isDeletable() as part of CRUDS */ public function is_writable($path) { - return $this->basicOperation('isUpdatable',$path); + return $this->basicOperation('isUpdatable', $path); } public function isCreatable($path) { return $this->basicOperation('isCreatable', $path); @@ -251,6 +248,9 @@ class OC_FilesystemView { return $this->basicOperation('filemtime', $path); } public function touch($path, $mtime=null) { + if(!is_null($mtime) and !is_numeric($mtime)) { + $mtime = strtotime($mtime); + } return $this->basicOperation('touch', $path, array('write'), $mtime); } public function file_get_contents($path) { @@ -263,7 +263,7 @@ class OC_FilesystemView { $path = $this->getRelativePath($absolutePath); $exists = $this->file_exists($path); $run = true; - if( $this->fakeRoot==OC_Filesystem::getRoot() ){ + if( $this->fakeRoot==OC_Filesystem::getRoot() ) { if(!$exists) { OC_Hook::emit( OC_Filesystem::CLASSNAME, @@ -291,7 +291,7 @@ class OC_FilesystemView { $count=OC_Helper::streamCopy($data, $target); fclose($target); fclose($data); - if( $this->fakeRoot==OC_Filesystem::getRoot() ){ + if( $this->fakeRoot==OC_Filesystem::getRoot() ) { if(!$exists) { OC_Hook::emit( OC_Filesystem::CLASSNAME, @@ -322,8 +322,8 @@ class OC_FilesystemView { return $this->basicOperation( 'deleteAll', $directory, array('delete'), $empty ); } public function rename($path1, $path2) { - $postFix1=(substr($path1,-1,1)==='/')?'/':''; - $postFix2=(substr($path2,-1,1)==='/')?'/':''; + $postFix1=(substr($path1, -1, 1)==='/')?'/':''; + $postFix2=(substr($path2, -1, 1)==='/')?'/':''; $absolutePath1 = OC_Filesystem::normalizePath($this->getAbsolutePath($path1)); $absolutePath2 = OC_Filesystem::normalizePath($this->getAbsolutePath($path2)); if(OC_FileProxy::runPreProxies('rename', $absolutePath1, $absolutePath2) and OC_Filesystem::isValidPath($path2)) { @@ -334,7 +334,7 @@ class OC_FilesystemView { return false; } $run=true; - if( $this->fakeRoot==OC_Filesystem::getRoot() ){ + if( $this->fakeRoot==OC_Filesystem::getRoot() ) { OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename, array( @@ -359,7 +359,7 @@ class OC_FilesystemView { $storage1->unlink($this->getInternalPath($path1.$postFix1)); $result = $count>0; } - if( $this->fakeRoot==OC_Filesystem::getRoot() ){ + if( $this->fakeRoot==OC_Filesystem::getRoot() ) { OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_rename, @@ -374,8 +374,8 @@ class OC_FilesystemView { } } public function copy($path1, $path2) { - $postFix1=(substr($path1,-1,1)==='/')?'/':''; - $postFix2=(substr($path2,-1,1)==='/')?'/':''; + $postFix1=(substr($path1, -1, 1)==='/')?'/':''; + $postFix2=(substr($path2, -1, 1)==='/')?'/':''; $absolutePath1 = OC_Filesystem::normalizePath($this->getAbsolutePath($path1)); $absolutePath2 = OC_Filesystem::normalizePath($this->getAbsolutePath($path2)); if(OC_FileProxy::runPreProxies('copy', $absolutePath1, $absolutePath2) and OC_Filesystem::isValidPath($path2)) { @@ -386,7 +386,7 @@ class OC_FilesystemView { return false; } $run=true; - if( $this->fakeRoot==OC_Filesystem::getRoot() ){ + if( $this->fakeRoot==OC_Filesystem::getRoot() ) { OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_copy, @@ -430,7 +430,10 @@ class OC_FilesystemView { $target = $this->fopen($path2.$postFix2, 'w'); $result = OC_Helper::streamCopy($source, $target); } - if( $this->fakeRoot==OC_Filesystem::getRoot() ){ + if( $this->fakeRoot==OC_Filesystem::getRoot() ) { + // If the file to be copied originates within + // the user's data directory + OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_copy, @@ -451,11 +454,33 @@ class OC_FilesystemView { OC_Filesystem::signal_post_write, array( OC_Filesystem::signal_param_path => $path2) ); - } else { // no real copy, file comes from somewhere else, e.g. version rollback -> just update the file cache and the webdav properties without all the other post_write actions - OC_FileCache_Update::update($path2, $this->fakeRoot); + + } else { + // If this is not a normal file copy operation + // and the file originates somewhere else + // (e.g. a version rollback operation), do not + // perform all the other post_write actions + + // Update webdav properties OC_Filesystem::removeETagHook(array("path" => $path2), $this->fakeRoot); + + $splitPath2 = explode( '/', $path2 ); + + // Only cache information about files + // that are being copied from within + // the user files directory. Caching + // other files, like VCS backup files, + // serves no purpose + if ( $splitPath2[1] == 'files' ) { + + OC_FileCache_Update::update($path2, $this->fakeRoot); + + } + } + return $result; + } } } @@ -486,7 +511,7 @@ class OC_FilesystemView { $hooks[]='write'; break; default: - OC_Log::write('core','invalid mode ('.$mode.') for '.$path,OC_Log::ERROR); + OC_Log::write('core', 'invalid mode ('.$mode.') for '.$path, OC_Log::ERROR); } return $this->basicOperation('fopen', $path, $hooks, $mode); @@ -498,7 +523,7 @@ class OC_FilesystemView { $extension=''; $extOffset=strpos($path, '.'); if($extOffset !== false) { - $extension=substr($path, strrpos($path,'.')); + $extension=substr($path, strrpos($path, '.')); } $tmpFile = OC_Helper::tmpFile($extension); file_put_contents($tmpFile, $source); @@ -527,7 +552,7 @@ class OC_FilesystemView { return $this->basicOperation('getMimeType', $path); } public function hash($type, $path, $raw = false) { - $postFix=(substr($path,-1,1)==='/')?'/':''; + $postFix=(substr($path, -1, 1)==='/')?'/':''; $absolutePath = OC_Filesystem::normalizePath($this->getAbsolutePath($path)); if (OC_FileProxy::runPreProxies('hash', $absolutePath) && OC_Filesystem::isValidPath($path)) { $path = $this->getRelativePath($absolutePath); @@ -567,7 +592,7 @@ class OC_FilesystemView { * OC_Filestorage for delegation to a storage backend for execution */ private function basicOperation($operation, $path, $hooks=array(), $extraParam=null) { - $postFix=(substr($path,-1,1)==='/')?'/':''; + $postFix=(substr($path, -1, 1)==='/')?'/':''; $absolutePath = OC_Filesystem::normalizePath($this->getAbsolutePath($path)); if(OC_FileProxy::runPreProxies($operation, $absolutePath, $extraParam) and OC_Filesystem::isValidPath($path)) { $path = $this->getRelativePath($absolutePath); @@ -575,7 +600,7 @@ class OC_FilesystemView { return false; } $internalPath = $this->getInternalPath($path.$postFix); - $run=$this->runHooks($hooks,$path); + $run=$this->runHooks($hooks, $path); if($run and $storage = $this->getStorage($path.$postFix)) { if(!is_null($extraParam)) { $result = $storage->$operation($internalPath, $extraParam); @@ -585,7 +610,7 @@ class OC_FilesystemView { $result = OC_FileProxy::runPostProxies($operation, $this->getAbsolutePath($path), $result); if(OC_Filesystem::$loaded and $this->fakeRoot==OC_Filesystem::getRoot()) { if($operation!='fopen') {//no post hooks for fopen, the file stream is still open - $this->runHooks($hooks,$path,true); + $this->runHooks($hooks, $path, true); } } return $result; @@ -594,7 +619,7 @@ class OC_FilesystemView { return null; } - private function runHooks($hooks,$path,$post=false) { + private function runHooks($hooks, $path, $post=false) { $prefix=($post)?'post_':''; $run=true; if(OC_Filesystem::$loaded and $this->fakeRoot==OC_Filesystem::getRoot()) { diff --git a/lib/group.php b/lib/group.php index 66892a99b60ddeef67561158de979adf62b33add..ed9482418bd4ba1a3421ac3dc89a08a29c8551f3 100644 --- a/lib/group.php +++ b/lib/group.php @@ -65,15 +65,8 @@ class OC_Group { * * Tries to create a new group. If the group name already exists, false will * be returned. Basic checking of Group name - * - * Allowed characters in the username are: "a-z", "A-Z", "0-9" and "_.@-" */ public static function createGroup( $gid ) { - // Check the name for bad characters - // Allowed are: "a-z", "A-Z", "0-9" and "_.@-" - if( preg_match( '/[^a-zA-Z0-9 _\.@\-]/', $gid )) { - return false; - } // No empty group names! if( !$gid ) { return false; @@ -146,7 +139,7 @@ class OC_Group { */ public static function inGroup( $uid, $gid ) { foreach(self::$_usedBackends as $backend) { - if($backend->inGroup($uid,$gid)) { + if($backend->inGroup($uid, $gid)) { return true; } } @@ -230,7 +223,7 @@ class OC_Group { public static function getUserGroups( $uid ) { $groups=array(); foreach(self::$_usedBackends as $backend) { - $groups=array_merge($backend->getUserGroups($uid),$groups); + $groups=array_merge($backend->getUserGroups($uid), $groups); } asort($groups); return $groups; diff --git a/lib/group/dummy.php b/lib/group/dummy.php index 8116dcbd6752f0e6282d135d827b4f7625181559..9516fd52ff8b765eaedf732d65a689290ce54040 100644 --- a/lib/group/dummy.php +++ b/lib/group/dummy.php @@ -69,7 +69,7 @@ class OC_Group_Dummy extends OC_Group_Backend { */ public function inGroup($uid, $gid) { if(isset($this->groups[$gid])) { - return (array_search($uid,$this->groups[$gid])!==false); + return (array_search($uid, $this->groups[$gid])!==false); }else{ return false; } @@ -85,7 +85,7 @@ class OC_Group_Dummy extends OC_Group_Backend { */ public function addToGroup($uid, $gid) { if(isset($this->groups[$gid])) { - if(array_search($uid,$this->groups[$gid])===false) { + if(array_search($uid, $this->groups[$gid])===false) { $this->groups[$gid][]=$uid; return true; }else{ @@ -104,9 +104,9 @@ class OC_Group_Dummy extends OC_Group_Backend { * * removes the user from a group. */ - public function removeFromGroup($uid,$gid) { + public function removeFromGroup($uid, $gid) { if(isset($this->groups[$gid])) { - if(($index=array_search($uid,$this->groups[$gid]))!==false) { + if(($index=array_search($uid, $this->groups[$gid]))!==false) { unset($this->groups[$gid][$index]); }else{ return false; @@ -128,7 +128,7 @@ class OC_Group_Dummy extends OC_Group_Backend { $groups=array(); $allGroups=array_keys($this->groups); foreach($allGroups as $group) { - if($this->inGroup($uid,$group)) { + if($this->inGroup($uid, $group)) { $groups[]=$group; } } diff --git a/lib/group/example.php b/lib/group/example.php index 76d12629763a8b45011e49573fda5722982b4aa9..3519b9ed92f0d9681017e07edb032ee2f978ea17 100644 --- a/lib/group/example.php +++ b/lib/group/example.php @@ -73,7 +73,7 @@ abstract class OC_Group_Example { * * removes the user from a group. */ - abstract public static function removeFromGroup($uid,$gid); + abstract public static function removeFromGroup($uid, $gid); /** * @brief Get all groups a user belongs to diff --git a/lib/helper.php b/lib/helper.php index 2c221ddf195b253f71f84fa8ca342fa55202c411..5dec7fadfb489132f28a843072ddf82fef3b08da 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -28,6 +28,20 @@ class OC_Helper { private static $mimetypes=array(); private static $tmpFiles=array(); + /** + * @brief Creates an url using a defined route + * @param $route + * @param $parameters + * @param $args array with param=>value, will be appended to the returned url + * @returns the url + * + * Returns a url to the given app and file. + */ + public static function linkToRoute( $route, $parameters = array() ) { + $urlLinkTo = OC::getRouter()->generate($route, $parameters); + return $urlLinkTo; + } + /** * @brief Creates an url * @param string $app app @@ -44,8 +58,8 @@ class OC_Helper { // Check if the app is in the app folder if( $app_path && file_exists( $app_path.'/'.$file )) { if(substr($file, -3) == 'php' || substr($file, -3) == 'css') { - $urlLinkTo = OC::$WEBROOT . '/?app=' . $app; - $urlLinkTo .= ($file!='index.php')?'&getfile=' . urlencode($file):''; + $urlLinkTo = OC::$WEBROOT . '/index.php/apps/' . $app; + $urlLinkTo .= ($file!='index.php') ? '/' . $file : ''; }else{ $urlLinkTo = OC_App::getAppWebPath($app) . '/' . $file; } @@ -100,6 +114,17 @@ class OC_Helper { return OC_Request::serverProtocol(). '://' . OC_Request::serverHost() . $url; } + /** + * @brief Creates an url for remote use + * @param string $service id + * @return string the url + * + * Returns a url to the given service. + */ + public static function linkToRemoteBase( $service ) { + return self::linkTo( '', 'remote.php') . '/' . $service; + } + /** * @brief Creates an absolute url for remote use * @param string $service id @@ -108,7 +133,7 @@ class OC_Helper { * Returns a absolute url to the given service. */ public static function linkToRemote( $service, $add_slash = true ) { - return self::linkToAbsolute( '', 'remote.php') . '/' . $service . (($add_slash && $service[strlen($service)-1]!='/')?'/':''); + return self::makeURLAbsolute(self::linkToRemoteBase($service)) . (($add_slash && $service[strlen($service)-1]!='/')?'/':''); } /** @@ -178,7 +203,7 @@ class OC_Helper { return OC::$WEBROOT."/core/img/filetypes/$mimetype.png"; } //try only the first part of the filetype - $mimetype=substr($mimetype,0,strpos($mimetype,'-')); + $mimetype=substr($mimetype, 0, strpos($mimetype, '-')); if( file_exists( OC::$SERVERROOT."/core/img/filetypes/$mimetype.png" )) { return OC::$WEBROOT."/core/img/filetypes/$mimetype.png"; } @@ -263,18 +288,18 @@ class OC_Helper { if($file != '.' && $file != '..') { $fullpath = $path.'/'.$file; if(is_link($fullpath)) - return FALSE; + return false; elseif(!is_dir($fullpath) && !@chmod($fullpath, $filemode)) - return FALSE; + return false; elseif(!self::chmodr($fullpath, $filemode)) - return FALSE; + return false; } } closedir($dh); if(@chmod($path, $filemode)) - return TRUE; + return true; else - return FALSE; + return false; } /** @@ -294,7 +319,7 @@ class OC_Helper { self::copyr("$src/$file", "$dest/$file"); } } - }elseif(file_exists($src)) { + }elseif(file_exists($src) && !OC_Filesystem::isFileBlacklisted($src)) { copy($src, $dest); } } @@ -330,29 +355,29 @@ class OC_Helper { * does NOT work for ownClouds filesystem, use OC_FileSystem::getMimeType instead */ static function getMimeType($path) { - $isWrapped=(strpos($path,'://')!==false) and (substr($path,0,7)=='file://'); + $isWrapped=(strpos($path, '://')!==false) and (substr($path, 0, 7)=='file://'); if (@is_dir($path)) { // directories are easy return "httpd/unix-directory"; } - if(strpos($path,'.')) { + if(strpos($path, '.')) { //try to guess the type by the file extension - if(!self::$mimetypes || self::$mimetypes != include('mimetypes.list.php')) { - self::$mimetypes=include('mimetypes.list.php'); + if(!self::$mimetypes || self::$mimetypes != include 'mimetypes.list.php') { + self::$mimetypes=include 'mimetypes.list.php'; } $extension=strtolower(strrchr(basename($path), ".")); - $extension=substr($extension,1);//remove leading . + $extension=substr($extension, 1);//remove leading . $mimeType=(isset(self::$mimetypes[$extension]))?self::$mimetypes[$extension]:'application/octet-stream'; }else{ $mimeType='application/octet-stream'; } if($mimeType=='application/octet-stream' and function_exists('finfo_open') and function_exists('finfo_file') and $finfo=finfo_open(FILEINFO_MIME)) { - $info = @strtolower(finfo_file($finfo,$path)); + $info = @strtolower(finfo_file($finfo, $path)); if($info) { - $mimeType=substr($info,0,strpos($info,';')); + $mimeType=substr($info, 0, strpos($info, ';')); } finfo_close($finfo); } @@ -362,20 +387,15 @@ class OC_Helper { } if (!$isWrapped and $mimeType=='application/octet-stream' && OC_Helper::canExecute("file")) { // it looks like we have a 'file' command, - // lets see it it does have mime support + // lets see if it does have mime support $path=escapeshellarg($path); $fp = popen("file -i -b $path 2>/dev/null", "r"); $reply = fgets($fp); pclose($fp); - //trim the character set from the end of the response - $mimeType=substr($reply,0,strrpos($reply,' ')); - $mimeType=substr($mimeType,0,strrpos($mimeType,"\n")); - - //trim ; - if (strpos($mimeType, ';') !== false) { - $mimeType = strstr($mimeType, ';', true); - } + // we have smth like 'text/x-c++; charset=us-ascii\n' + // and need to eliminate everything starting with semicolon including trailing LF + $mimeType = preg_replace('/;.*/ms', '', trim($reply)); } return $mimeType; @@ -392,8 +412,8 @@ class OC_Helper { return finfo_buffer($finfo, $data); }else{ $tmpFile=OC_Helper::tmpFile(); - $fh=fopen($tmpFile,'wb'); - fwrite($fh,$data,8024); + $fh=fopen($tmpFile, 'wb'); + fwrite($fh, $data, 8024); fclose($fh); $mime=self::getMimeType($tmpFile); unset($tmpFile); @@ -455,16 +475,16 @@ class OC_Helper { $dirs = explode(PATH_SEPARATOR, $path); // WARNING : We have to check if open_basedir is enabled : $obd = ini_get('open_basedir'); - if($obd != "none"){ + if($obd != "none") { $obd_values = explode(PATH_SEPARATOR, $obd); - if(count($obd_values) > 0 and $obd_values[0]){ + if(count($obd_values) > 0 and $obd_values[0]) { // open_basedir is in effect ! // We need to check if the program is in one of these dirs : $dirs = $obd_values; } } - foreach($dirs as $dir){ - foreach($exts as $ext){ + foreach($dirs as $dir) { + foreach($exts as $ext) { if($check_fn("$dir/$name".$ext)) return true; } @@ -478,13 +498,13 @@ class OC_Helper { * @param resource $target * @return int the number of bytes copied */ - public static function streamCopy($source,$target) { + public static function streamCopy($source, $target) { if(!$source or !$target) { return false; } $count=0; while(!feof($source)) { - $count+=fwrite($target,fread($source,8192)); + $count+=fwrite($target, fread($source, 8192)); } return $count; } @@ -498,12 +518,33 @@ class OC_Helper { */ public static function tmpFile($postfix='') { $file=get_temp_dir().'/'.md5(time().rand()).$postfix; - $fh=fopen($file,'w'); + $fh=fopen($file, 'w'); fclose($fh); self::$tmpFiles[]=$file; return $file; } + /** + * create a temporary file with an unique filename. It will not be deleted + * automatically + * @param string $postfix + * @return string + * + */ + public static function tmpFileNoClean($postfix='') { + $tmpDirNoClean=get_temp_dir().'/oc-noclean/'; + if (!file_exists($tmpDirNoClean) || !is_dir($tmpDirNoClean)) { + if (file_exists($tmpDirNoClean)) { + unlink($tmpDirNoClean); + } + mkdir($tmpDirNoClean); + } + $file=$tmpDirNoClean.md5(time().rand()).$postfix; + $fh=fopen($file,'w'); + fclose($fh); + return $file; + } + /** * create a temporary folder with an unique filename * @return string @@ -539,6 +580,16 @@ class OC_Helper { } } + /** + * remove all files created by self::tmpFileNoClean + */ + public static function cleanTmpNoClean() { + $tmpDirNoCleanFile=get_temp_dir().'/oc-noclean/'; + if(file_exists($tmpDirNoCleanFile)) { + self::rmdirr($tmpDirNoCleanFile); + } + } + /** * Adds a suffix to the name in case the file exists * @@ -692,4 +743,19 @@ class OC_Helper { return false; } + + /** + * Shortens str to maxlen by replacing characters in the middle with '...', eg. + * ellipsis('a very long string with lots of useless info to make a better example', 14) becomes 'a very ...example' + * @param string $str the string + * @param string $maxlen the maximum length of the result + * @return string with at most maxlen characters + */ + public static function ellipsis($str, $maxlen) { + if (strlen($str) > $maxlen) { + $characters = floor($maxlen / 2); + return substr($str, 0, $characters) . '...' . substr($str, -1 * $characters); + } + return $str; + } } diff --git a/lib/image.php b/lib/image.php index 861353e039dfd92201ffff3b94dcc1c32bf629fb..2043a452541eae544929e69b1a0cae92e6b67754 100644 --- a/lib/image.php +++ b/lib/image.php @@ -20,32 +20,13 @@ * License along with this library. If not, see . * */ - -//From user comments at http://dk2.php.net/manual/en/function.exif-imagetype.php -if ( ! function_exists( 'exif_imagetype' ) ) { - function exif_imagetype ( $filename ) { - if ( ( $info = getimagesize( $filename ) ) !== false ) { - return $info[2]; - } - return false; - } -} - -function ellipsis($str, $maxlen) { - if (strlen($str) > $maxlen) { - $characters = floor($maxlen / 2); - return substr($str, 0, $characters) . '...' . substr($str, -1 * $characters); - } - return $str; -} - /** * Class for basic image manipulation - * */ class OC_Image { protected $resource = false; // tmp resource. protected $imagetype = IMAGETYPE_PNG; // Default to png if file type isn't evident. + protected $bit_depth = 24; protected $filepath = null; /** @@ -66,7 +47,7 @@ class OC_Image { public function __construct($imageref = null) { //OC_Log::write('core',__METHOD__.'(): start', OC_Log::DEBUG); if(!extension_loaded('gd') || !function_exists('gd_info')) { - OC_Log::write('core',__METHOD__.'(): GD module not installed', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): GD module not installed', OC_Log::ERROR); return false; } if(!is_null($imageref)) { @@ -112,7 +93,7 @@ class OC_Image { */ public function widthTopLeft() { $o = $this->getOrientation(); - OC_Log::write('core','OC_Image->widthTopLeft() Orientation: '.$o, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->widthTopLeft() Orientation: '.$o, OC_Log::DEBUG); switch($o) { case -1: case 1: @@ -137,7 +118,7 @@ class OC_Image { */ public function heightTopLeft() { $o = $this->getOrientation(); - OC_Log::write('core','OC_Image->heightTopLeft() Orientation: '.$o, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->heightTopLeft() Orientation: '.$o, OC_Log::DEBUG); switch($o) { case -1: case 1: @@ -172,7 +153,7 @@ class OC_Image { public function save($filepath=null) { if($filepath === null && $this->filepath === null) { - OC_Log::write('core',__METHOD__.'(): called with no path.', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): called with no path.', OC_Log::ERROR); return false; } elseif($filepath === null && $this->filepath !== null) { $filepath = $this->filepath; @@ -188,10 +169,10 @@ class OC_Image { if (!file_exists(dirname($filepath))) mkdir(dirname($filepath), 0777, true); if(!is_writable(dirname($filepath))) { - OC_Log::write('core',__METHOD__.'(): Directory \''.dirname($filepath).'\' is not writable.', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): Directory \''.dirname($filepath).'\' is not writable.', OC_Log::ERROR); return false; } elseif(is_writable(dirname($filepath)) && file_exists($filepath) && !is_writable($filepath)) { - OC_Log::write('core',__METHOD__.'(): File \''.$filepath.'\' is not writable.', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): File \''.$filepath.'\' is not writable.', OC_Log::ERROR); return false; } } @@ -214,9 +195,11 @@ class OC_Image { $retval = imagexbm($this->resource, $filepath); break; case IMAGETYPE_WBMP: - case IMAGETYPE_BMP: $retval = imagewbmp($this->resource, $filepath); break; + case IMAGETYPE_BMP: + $retval = imagebmp($this->resource, $filepath, $this->bit_depth); + break; default: $retval = imagepng($this->resource, $filepath); } @@ -244,7 +227,7 @@ class OC_Image { ob_start(); $res = imagepng($this->resource); if (!$res) { - OC_Log::write('core','OC_Image->data. Error getting image data.',OC_Log::ERROR); + OC_Log::write('core', 'OC_Image->data. Error getting image data.', OC_Log::ERROR); } return ob_get_clean(); } @@ -263,15 +246,15 @@ class OC_Image { */ public function getOrientation() { if(!is_callable('exif_read_data')) { - OC_Log::write('core','OC_Image->fixOrientation() Exif module not enabled.', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->fixOrientation() Exif module not enabled.', OC_Log::DEBUG); return -1; } if(!$this->valid()) { - OC_Log::write('core','OC_Image->fixOrientation() No image loaded.', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->fixOrientation() No image loaded.', OC_Log::DEBUG); return -1; } if(is_null($this->filepath) || !is_readable($this->filepath)) { - OC_Log::write('core','OC_Image->fixOrientation() No readable file path set.', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->fixOrientation() No readable file path set.', OC_Log::DEBUG); return -1; } $exif = @exif_read_data($this->filepath, 'IFD0'); @@ -291,7 +274,7 @@ class OC_Image { */ public function fixOrientation() { $o = $this->getOrientation(); - OC_Log::write('core','OC_Image->fixOrientation() Orientation: '.$o, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->fixOrientation() Orientation: '.$o, OC_Log::DEBUG); $rotate = 0; $flip = false; switch($o) { @@ -341,15 +324,15 @@ class OC_Image { $this->resource = $res; return true; } else { - OC_Log::write('core','OC_Image->fixOrientation() Error during alphasaving.', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->fixOrientation() Error during alphasaving.', OC_Log::DEBUG); return false; } } else { - OC_Log::write('core','OC_Image->fixOrientation() Error during alphablending.', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->fixOrientation() Error during alphablending.', OC_Log::DEBUG); return false; } } else { - OC_Log::write('core','OC_Image->fixOrientation() Error during oriention fixing.', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->fixOrientation() Error during oriention fixing.', OC_Log::DEBUG); return false; } } @@ -365,7 +348,7 @@ class OC_Image { if(get_resource_type($imageref) == 'gd') { $this->resource = $imageref; return $this->resource; - } elseif(in_array(get_resource_type($imageref), array('file','stream'))) { + } elseif(in_array(get_resource_type($imageref), array('file', 'stream'))) { return $this->loadFromFileHandle($imageref); } } elseif($this->loadFromFile($imageref) !== false) { @@ -375,7 +358,7 @@ class OC_Image { } elseif($this->loadFromData($imageref) !== false) { return $this->resource; } else { - OC_Log::write('core',__METHOD__.'(): couldn\'t load anything. Giving up!', OC_Log::DEBUG); + OC_Log::write('core', __METHOD__.'(): couldn\'t load anything. Giving up!', OC_Log::DEBUG); return false; } } @@ -387,7 +370,7 @@ class OC_Image { * @returns An image resource or false on error */ public function loadFromFileHandle($handle) { - OC_Log::write('core',__METHOD__.'(): Trying', OC_Log::DEBUG); + OC_Log::write('core', __METHOD__.'(): Trying', OC_Log::DEBUG); $contents = stream_get_contents($handle); if($this->loadFromData($contents)) { return $this->resource; @@ -402,7 +385,7 @@ class OC_Image { public function loadFromFile($imagepath=false) { if(!is_file($imagepath) || !file_exists($imagepath) || !is_readable($imagepath)) { // Debug output disabled because this method is tried before loadFromBase64? - OC_Log::write('core','OC_Image->loadFromFile, couldn\'t load: '.ellipsis($imagepath, 50), OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromFile, couldn\'t load: '.$imagepath, OC_Log::DEBUG); return false; } $itype = exif_imagetype($imagepath); @@ -411,38 +394,40 @@ class OC_Image { if (imagetypes() & IMG_GIF) { $this->resource = imagecreatefromgif($imagepath); } else { - OC_Log::write('core','OC_Image->loadFromFile, GIF images not supported: '.$imagepath, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromFile, GIF images not supported: '.$imagepath, OC_Log::DEBUG); } break; case IMAGETYPE_JPEG: if (imagetypes() & IMG_JPG) { $this->resource = imagecreatefromjpeg($imagepath); } else { - OC_Log::write('core','OC_Image->loadFromFile, JPG images not supported: '.$imagepath, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromFile, JPG images not supported: '.$imagepath, OC_Log::DEBUG); } break; case IMAGETYPE_PNG: if (imagetypes() & IMG_PNG) { $this->resource = imagecreatefrompng($imagepath); } else { - OC_Log::write('core','OC_Image->loadFromFile, PNG images not supported: '.$imagepath, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromFile, PNG images not supported: '.$imagepath, OC_Log::DEBUG); } break; case IMAGETYPE_XBM: if (imagetypes() & IMG_XPM) { $this->resource = imagecreatefromxbm($imagepath); } else { - OC_Log::write('core','OC_Image->loadFromFile, XBM/XPM images not supported: '.$imagepath, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromFile, XBM/XPM images not supported: '.$imagepath, OC_Log::DEBUG); } break; case IMAGETYPE_WBMP: - case IMAGETYPE_BMP: if (imagetypes() & IMG_WBMP) { $this->resource = imagecreatefromwbmp($imagepath); } else { - OC_Log::write('core','OC_Image->loadFromFile, (W)BMP images not supported: '.$imagepath, OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromFile, WBMP images not supported: '.$imagepath, OC_Log::DEBUG); } break; + case IMAGETYPE_BMP: + $this->resource = $this->imagecreatefrombmp($imagepath); + break; /* case IMAGETYPE_TIFF_II: // (intel byte order) break; @@ -472,7 +457,7 @@ class OC_Image { // this is mostly file created from encrypted file $this->resource = imagecreatefromstring(\OC_Filesystem::file_get_contents(\OC_Filesystem::getLocalPath($imagepath))); $itype = IMAGETYPE_PNG; - OC_Log::write('core','OC_Image->loadFromFile, Default', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromFile, Default', OC_Log::DEBUG); break; } if($this->valid()) { @@ -493,7 +478,7 @@ class OC_Image { } $this->resource = @imagecreatefromstring($str); if(!$this->resource) { - OC_Log::write('core','OC_Image->loadFromData, couldn\'t load', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromData, couldn\'t load', OC_Log::DEBUG); return false; } return $this->resource; @@ -512,7 +497,7 @@ class OC_Image { if($data) { // try to load from string data $this->resource = @imagecreatefromstring($data); if(!$this->resource) { - OC_Log::write('core','OC_Image->loadFromBase64, couldn\'t load', OC_Log::DEBUG); + OC_Log::write('core', 'OC_Image->loadFromBase64, couldn\'t load', OC_Log::DEBUG); return false; } return $this->resource; @@ -521,6 +506,147 @@ class OC_Image { } } + /** + * Create a new image from file or URL + * @link http://www.programmierer-forum.de/function-imagecreatefrombmp-laeuft-mit-allen-bitraten-t143137.htm + * @version 1.00 + * @param string $filename

            + * Path to the BMP image. + *

            + * @return resource an image resource identifier on success, FALSE on errors. + */ + private function imagecreatefrombmp($filename) { + if (!($fh = fopen($filename, 'rb'))) { + trigger_error('imagecreatefrombmp: Can not open ' . $filename, E_USER_WARNING); + return false; + } + // read file header + $meta = unpack('vtype/Vfilesize/Vreserved/Voffset', fread($fh, 14)); + // check for bitmap + if ($meta['type'] != 19778) { + trigger_error('imagecreatefrombmp: ' . $filename . ' is not a bitmap!', E_USER_WARNING); + return false; + } + // read image header + $meta += unpack('Vheadersize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vcolors/Vimportant', fread($fh, 40)); + // read additional 16bit header + if ($meta['bits'] == 16) { + $meta += unpack('VrMask/VgMask/VbMask', fread($fh, 12)); + } + // set bytes and padding + $meta['bytes'] = $meta['bits'] / 8; + $this->bit_depth = $meta['bits']; //remember the bit depth for the imagebmp call + $meta['decal'] = 4 - (4 * (($meta['width'] * $meta['bytes'] / 4)- floor($meta['width'] * $meta['bytes'] / 4))); + if ($meta['decal'] == 4) { + $meta['decal'] = 0; + } + // obtain imagesize + if ($meta['imagesize'] < 1) { + $meta['imagesize'] = $meta['filesize'] - $meta['offset']; + // in rare cases filesize is equal to offset so we need to read physical size + if ($meta['imagesize'] < 1) { + $meta['imagesize'] = @filesize($filename) - $meta['offset']; + if ($meta['imagesize'] < 1) { + trigger_error('imagecreatefrombmp: Can not obtain filesize of ' . $filename . '!', E_USER_WARNING); + return false; + } + } + } + // calculate colors + $meta['colors'] = !$meta['colors'] ? pow(2, $meta['bits']) : $meta['colors']; + // read color palette + $palette = array(); + if ($meta['bits'] < 16) { + $palette = unpack('l' . $meta['colors'], fread($fh, $meta['colors'] * 4)); + // in rare cases the color value is signed + if ($palette[1] < 0) { + foreach ($palette as $i => $color) { + $palette[$i] = $color + 16777216; + } + } + } + // create gd image + $im = imagecreatetruecolor($meta['width'], $meta['height']); + $data = fread($fh, $meta['imagesize']); + $p = 0; + $vide = chr(0); + $y = $meta['height'] - 1; + $error = 'imagecreatefrombmp: ' . $filename . ' has not enough data!'; + // loop through the image data beginning with the lower left corner + while ($y >= 0) { + $x = 0; + while ($x < $meta['width']) { + switch ($meta['bits']) { + case 32: + case 24: + if (!($part = substr($data, $p, 3))) { + trigger_error($error, E_USER_WARNING); + return $im; + } + $color = unpack('V', $part . $vide); + break; + case 16: + if (!($part = substr($data, $p, 2))) { + trigger_error($error, E_USER_WARNING); + return $im; + } + $color = unpack('v', $part); + $color[1] = (($color[1] & 0xf800) >> 8) * 65536 + (($color[1] & 0x07e0) >> 3) * 256 + (($color[1] & 0x001f) << 3); + break; + case 8: + $color = unpack('n', $vide . substr($data, $p, 1)); + $color[1] = $palette[ $color[1] + 1 ]; + break; + case 4: + $color = unpack('n', $vide . substr($data, floor($p), 1)); + $color[1] = ($p * 2) % 2 == 0 ? $color[1] >> 4 : $color[1] & 0x0F; + $color[1] = $palette[ $color[1] + 1 ]; + break; + case 1: + $color = unpack('n', $vide . substr($data, floor($p), 1)); + switch (($p * 8) % 8) { + case 0: + $color[1] = $color[1] >> 7; + break; + case 1: + $color[1] = ($color[1] & 0x40) >> 6; + break; + case 2: + $color[1] = ($color[1] & 0x20) >> 5; + break; + case 3: + $color[1] = ($color[1] & 0x10) >> 4; + break; + case 4: + $color[1] = ($color[1] & 0x8) >> 3; + break; + case 5: + $color[1] = ($color[1] & 0x4) >> 2; + break; + case 6: + $color[1] = ($color[1] & 0x2) >> 1; + break; + case 7: + $color[1] = ($color[1] & 0x1); + break; + } + $color[1] = $palette[ $color[1] + 1 ]; + break; + default: + trigger_error('imagecreatefrombmp: ' . $filename . ' has ' . $meta['bits'] . ' bits and this is not supported!', E_USER_WARNING); + return false; + } + imagesetpixel($im, $x, $y, $color[1]); + $x++; + $p += $meta['bytes']; + } + $y--; + $p += $meta['decal']; + } + fclose($fh); + return $im; + } + /** * @brief Resizes the image preserving ratio. * @param $maxsize The maximum size of either the width or height. @@ -528,7 +654,7 @@ class OC_Image { */ public function resize($maxsize) { if(!$this->valid()) { - OC_Log::write('core',__METHOD__.'(): No image loaded', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): No image loaded', OC_Log::ERROR); return false; } $width_orig=imageSX($this->resource); @@ -549,7 +675,7 @@ class OC_Image { public function preciseResize($width, $height) { if (!$this->valid()) { - OC_Log::write('core',__METHOD__.'(): No image loaded', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): No image loaded', OC_Log::ERROR); return false; } $width_orig=imageSX($this->resource); @@ -557,14 +683,14 @@ class OC_Image { $process = imagecreatetruecolor($width, $height); if ($process == false) { - OC_Log::write('core',__METHOD__.'(): Error creating true color image',OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): Error creating true color image', OC_Log::ERROR); imagedestroy($process); return false; } imagecopyresampled($process, $this->resource, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); if ($process == false) { - OC_Log::write('core',__METHOD__.'(): Error resampling process image '.$width.'x'.$height,OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): Error resampling process image '.$width.'x'.$height, OC_Log::ERROR); imagedestroy($process); return false; } @@ -580,7 +706,7 @@ class OC_Image { */ public function centerCrop($size=0) { if(!$this->valid()) { - OC_Log::write('core','OC_Image->centerCrop, No image loaded', OC_Log::ERROR); + OC_Log::write('core', 'OC_Image->centerCrop, No image loaded', OC_Log::ERROR); return false; } $width_orig=imageSX($this->resource); @@ -607,13 +733,13 @@ class OC_Image { } $process = imagecreatetruecolor($targetWidth, $targetHeight); if ($process == false) { - OC_Log::write('core','OC_Image->centerCrop. Error creating true color image',OC_Log::ERROR); + OC_Log::write('core', 'OC_Image->centerCrop. Error creating true color image', OC_Log::ERROR); imagedestroy($process); return false; } imagecopyresampled($process, $this->resource, 0, 0, $x, $y, $targetWidth, $targetHeight, $width, $height); if ($process == false) { - OC_Log::write('core','OC_Image->centerCrop. Error resampling process image '.$width.'x'.$height,OC_Log::ERROR); + OC_Log::write('core', 'OC_Image->centerCrop. Error resampling process image '.$width.'x'.$height, OC_Log::ERROR); imagedestroy($process); return false; } @@ -627,23 +753,23 @@ class OC_Image { * @param $x Horizontal position * @param $y Vertical position * @param $w Width - * @param $h Hight + * @param $h Height * @returns bool for success or failure */ public function crop($x, $y, $w, $h) { if(!$this->valid()) { - OC_Log::write('core',__METHOD__.'(): No image loaded', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): No image loaded', OC_Log::ERROR); return false; } $process = imagecreatetruecolor($w, $h); if ($process == false) { - OC_Log::write('core',__METHOD__.'(): Error creating true color image',OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): Error creating true color image', OC_Log::ERROR); imagedestroy($process); return false; } imagecopyresampled($process, $this->resource, 0, 0, $x, $y, $w, $h, $w, $h); if ($process == false) { - OC_Log::write('core',__METHOD__.'(): Error resampling process image '.$w.'x'.$h,OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): Error resampling process image '.$w.'x'.$h, OC_Log::ERROR); imagedestroy($process); return false; } @@ -660,7 +786,7 @@ class OC_Image { */ public function fitIn($maxWidth, $maxHeight) { if(!$this->valid()) { - OC_Log::write('core',__METHOD__.'(): No image loaded', OC_Log::ERROR); + OC_Log::write('core', __METHOD__.'(): No image loaded', OC_Log::ERROR); return false; } $width_orig=imageSX($this->resource); @@ -669,7 +795,7 @@ class OC_Image { $newWidth = min($maxWidth, $ratio*$maxHeight); $newHeight = min($maxHeight, $maxWidth/$ratio); - + $this->preciseResize(round($newWidth), round($newHeight)); return true; } @@ -685,3 +811,138 @@ class OC_Image { $this->destroy(); } } +if ( ! function_exists( 'imagebmp') ) { + /** + * Output a BMP image to either the browser or a file + * @link http://www.ugia.cn/wp-data/imagebmp.php + * @author legend + * @link http://www.programmierer-forum.de/imagebmp-gute-funktion-gefunden-t143716.htm + * @author mgutt + * @version 1.00 + * @param resource $image + * @param string $filename [optional]

            The path to save the file to.

            + * @param int $bit [optional]

            Bit depth, (default is 24).

            + * @param int $compression [optional] + * @return bool TRUE on success or FALSE on failure. + */ + function imagebmp($im, $filename='', $bit=24, $compression=0) { + if (!in_array($bit, array(1, 4, 8, 16, 24, 32))) { + $bit = 24; + } + else if ($bit == 32) { + $bit = 24; + } + $bits = pow(2, $bit); + imagetruecolortopalette($im, true, $bits); + $width = imagesx($im); + $height = imagesy($im); + $colors_num = imagecolorstotal($im); + $rgb_quad = ''; + if ($bit <= 8) { + for ($i = 0; $i < $colors_num; $i++) { + $colors = imagecolorsforindex($im, $i); + $rgb_quad .= chr($colors['blue']) . chr($colors['green']) . chr($colors['red']) . "\0"; + } + $bmp_data = ''; + if ($compression == 0 || $bit < 8) { + $compression = 0; + $extra = ''; + $padding = 4 - ceil($width / (8 / $bit)) % 4; + if ($padding % 4 != 0) { + $extra = str_repeat("\0", $padding); + } + for ($j = $height - 1; $j >= 0; $j --) { + $i = 0; + while ($i < $width) { + $bin = 0; + $limit = $width - $i < 8 / $bit ? (8 / $bit - $width + $i) * $bit : 0; + for ($k = 8 - $bit; $k >= $limit; $k -= $bit) { + $index = imagecolorat($im, $i, $j); + $bin |= $index << $k; + $i++; + } + $bmp_data .= chr($bin); + } + $bmp_data .= $extra; + } + } + // RLE8 + else if ($compression == 1 && $bit == 8) { + for ($j = $height - 1; $j >= 0; $j--) { + $last_index = "\0"; + $same_num = 0; + for ($i = 0; $i <= $width; $i++) { + $index = imagecolorat($im, $i, $j); + if ($index !== $last_index || $same_num > 255) { + if ($same_num != 0) { + $bmp_data .= chr($same_num) . chr($last_index); + } + $last_index = $index; + $same_num = 1; + } + else { + $same_num++; + } + } + $bmp_data .= "\0\0"; + } + $bmp_data .= "\0\1"; + } + $size_quad = strlen($rgb_quad); + $size_data = strlen($bmp_data); + } + else { + $extra = ''; + $padding = 4 - ($width * ($bit / 8)) % 4; + if ($padding % 4 != 0) { + $extra = str_repeat("\0", $padding); + } + $bmp_data = ''; + for ($j = $height - 1; $j >= 0; $j--) { + for ($i = 0; $i < $width; $i++) { + $index = imagecolorat($im, $i, $j); + $colors = imagecolorsforindex($im, $index); + if ($bit == 16) { + $bin = 0 << $bit; + $bin |= ($colors['red'] >> 3) << 10; + $bin |= ($colors['green'] >> 3) << 5; + $bin |= $colors['blue'] >> 3; + $bmp_data .= pack("v", $bin); + } + else { + $bmp_data .= pack("c*", $colors['blue'], $colors['green'], $colors['red']); + } + } + $bmp_data .= $extra; + } + $size_quad = 0; + $size_data = strlen($bmp_data); + $colors_num = 0; + } + $file_header = 'BM' . pack('V3', 54 + $size_quad + $size_data, 0, 54 + $size_quad); + $info_header = pack('V3v2V*', 0x28, $width, $height, 1, $bit, $compression, $size_data, 0, 0, $colors_num, 0); + if ($filename != '') { + $fp = fopen($filename, 'wb'); + fwrite($fp, $file_header . $info_header . $rgb_quad . $bmp_data); + fclose($fp); + return true; + } + echo $file_header . $info_header. $rgb_quad . $bmp_data; + return true; + } +} + +if ( ! function_exists( 'exif_imagetype' ) ) { + /** + * Workaround if exif_imagetype does not exist + * @link http://www.php.net/manual/en/function.exif-imagetype.php#80383 + * @param string $filename + * @return string|boolean + */ + function exif_imagetype ( $filename ) { + if ( ( $info = getimagesize( $filename ) ) !== false ) { + return $info[2]; + } + return false; + } +} diff --git a/lib/installer.php b/lib/installer.php index 9135c60fc056c7e4ace2c1be648f3897f33243e7..7dc8b0cef8ddfbbe2db16814dc92c3f67ef9765e 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -57,7 +57,7 @@ class OC_Installer{ */ public static function installApp( $data = array()) { if(!isset($data['source'])) { - OC_Log::write('core','No source specified when installing app',OC_Log::ERROR); + OC_Log::write('core', 'No source specified when installing app', OC_Log::ERROR); return false; } @@ -65,13 +65,13 @@ class OC_Installer{ if($data['source']=='http') { $path=OC_Helper::tmpFile(); if(!isset($data['href'])) { - OC_Log::write('core','No href specified when installing app from http',OC_Log::ERROR); + OC_Log::write('core', 'No href specified when installing app from http', OC_Log::ERROR); return false; } - copy($data['href'],$path); + copy($data['href'], $path); }else{ if(!isset($data['path'])) { - OC_Log::write('core','No path specified when installing app from local file',OC_Log::ERROR); + OC_Log::write('core', 'No path specified when installing app from local file', OC_Log::ERROR); return false; } $path=$data['path']; @@ -80,13 +80,13 @@ class OC_Installer{ //detect the archive type $mime=OC_Helper::getMimeType($path); if($mime=='application/zip') { - rename($path,$path.'.zip'); + rename($path, $path.'.zip'); $path.='.zip'; }elseif($mime=='application/x-gzip') { - rename($path,$path.'.tgz'); + rename($path, $path.'.tgz'); $path.='.tgz'; }else{ - OC_Log::write('core','Archives of type '.$mime.' are not supported',OC_Log::ERROR); + OC_Log::write('core', 'Archives of type '.$mime.' are not supported', OC_Log::ERROR); return false; } @@ -97,7 +97,7 @@ class OC_Installer{ if($archive=OC_Archive::open($path)) { $archive->extract($extractDir); } else { - OC_Log::write('core','Failed to open archive when installing app',OC_Log::ERROR); + OC_Log::write('core', 'Failed to open archive when installing app', OC_Log::ERROR); OC_Helper::rmdirr($extractDir); if($data['source']=='http') { unlink($path); @@ -118,17 +118,17 @@ class OC_Installer{ } } if(!is_file($extractDir.'/appinfo/info.xml')) { - OC_Log::write('core','App does not provide an info.xml file',OC_Log::ERROR); + OC_Log::write('core', 'App does not provide an info.xml file', OC_Log::ERROR); OC_Helper::rmdirr($extractDir); if($data['source']=='http') { unlink($path); } return false; } - $info=OC_App::getAppInfo($extractDir.'/appinfo/info.xml',true); + $info=OC_App::getAppInfo($extractDir.'/appinfo/info.xml', true); // check the code for not allowed calls - if(!OC_Installer::checkCode($info['id'],$extractDir)) { - OC_Log::write('core','App can\'t be installed because of not allowed code in the App',OC_Log::ERROR); + if(!OC_Installer::checkCode($info['id'], $extractDir)) { + OC_Log::write('core', 'App can\'t be installed because of not allowed code in the App', OC_Log::ERROR); OC_Helper::rmdirr($extractDir); return false; } @@ -136,14 +136,14 @@ class OC_Installer{ // check if the app is compatible with this version of ownCloud $version=OC_Util::getVersion(); if(!isset($info['require']) or ($version[0]>$info['require'])) { - OC_Log::write('core','App can\'t be installed because it is not compatible with this version of ownCloud',OC_Log::ERROR); + OC_Log::write('core', 'App can\'t be installed because it is not compatible with this version of ownCloud', OC_Log::ERROR); OC_Helper::rmdirr($extractDir); return false; } //check if an app with the same id is already installed if(self::isInstalled( $info['id'] )) { - OC_Log::write('core','App already installed',OC_Log::WARN); + OC_Log::write('core', 'App already installed', OC_Log::WARN); OC_Helper::rmdirr($extractDir); if($data['source']=='http') { unlink($path); @@ -154,7 +154,7 @@ class OC_Installer{ $basedir=OC_App::getInstallPath().'/'.$info['id']; //check if the destination directory already exists if(is_dir($basedir)) { - OC_Log::write('core','App directory already exists',OC_Log::WARN); + OC_Log::write('core', 'App directory already exists', OC_Log::WARN); OC_Helper::rmdirr($extractDir); if($data['source']=='http') { unlink($path); @@ -168,14 +168,14 @@ class OC_Installer{ //copy the app to the correct place if(@!mkdir($basedir)) { - OC_Log::write('core','Can\'t create app folder. Please fix permissions. ('.$basedir.')',OC_Log::ERROR); + OC_Log::write('core', 'Can\'t create app folder. Please fix permissions. ('.$basedir.')', OC_Log::ERROR); OC_Helper::rmdirr($extractDir); if($data['source']=='http') { unlink($path); } return false; } - OC_Helper::copyr($extractDir,$basedir); + OC_Helper::copyr($extractDir, $basedir); //remove temporary files OC_Helper::rmdirr($extractDir); @@ -187,12 +187,12 @@ class OC_Installer{ //run appinfo/install.php if((!isset($data['noinstall']) or $data['noinstall']==false) and file_exists($basedir.'/appinfo/install.php')) { - include($basedir.'/appinfo/install.php'); + include $basedir.'/appinfo/install.php'; } //set the installed version - OC_Appconfig::setValue($info['id'],'installed_version',OC_App::getAppVersion($info['id'])); - OC_Appconfig::setValue($info['id'],'enabled','no'); + OC_Appconfig::setValue($info['id'], 'installed_version', OC_App::getAppVersion($info['id'])); + OC_Appconfig::setValue($info['id'], 'enabled', 'no'); //set remote/public handelers foreach($info['remote'] as $name=>$path) { @@ -248,7 +248,7 @@ class OC_Installer{ * -# including appinfo/upgrade.php * -# setting the installed version * - * upgrade.php can determine the current installed version of the app using "OC_Appconfig::getValue($appid,'installed_version')" + * upgrade.php can determine the current installed version of the app using "OC_Appconfig::getValue($appid, 'installed_version')" */ public static function upgradeApp( $data = array()) { // TODO: write function @@ -296,7 +296,7 @@ class OC_Installer{ $enabled = isset($info['default_enable']); if( $enabled ) { OC_Installer::installShippedApp($filename); - OC_Appconfig::setValue($filename,'enabled','yes'); + OC_Appconfig::setValue($filename, 'enabled', 'yes'); } } } @@ -320,10 +320,10 @@ class OC_Installer{ //run appinfo/install.php if(is_file(OC_App::getAppPath($app)."/appinfo/install.php")) { - include(OC_App::getAppPath($app)."/appinfo/install.php"); + include OC_App::getAppPath($app)."/appinfo/install.php"; } $info=OC_App::getAppInfo($app); - OC_Appconfig::setValue($app,'installed_version',OC_App::getAppVersion($app)); + OC_Appconfig::setValue($app, 'installed_version', OC_App::getAppVersion($app)); //set remote/public handelers foreach($info['remote'] as $name=>$path) { @@ -344,7 +344,7 @@ class OC_Installer{ * @param string $folder the folder of the app to check * @returns true for app is o.k. and false for app is not o.k. */ - public static function checkCode($appname,$folder) { + public static function checkCode($appname, $folder) { $blacklist=array( 'exec(', @@ -360,7 +360,7 @@ class OC_Installer{ // check if grep is installed $grep = exec('which grep'); if($grep=='') { - OC_Log::write('core','grep not installed. So checking the code of the app "'.$appname.'" was not possible',OC_Log::ERROR); + OC_Log::write('core', 'grep not installed. So checking the code of the app "'.$appname.'" was not possible', OC_Log::ERROR); return true; } @@ -370,7 +370,7 @@ class OC_Installer{ $result = exec($cmd); // bad pattern found if($result<>'') { - OC_Log::write('core','App "'.$appname.'" is using a not allowed call "'.$bl.'". Installation refused.',OC_Log::ERROR); + OC_Log::write('core', 'App "'.$appname.'" is using a not allowed call "'.$bl.'". Installation refused.', OC_Log::ERROR); return false; } } diff --git a/lib/json.php b/lib/json.php index 518c3c87c49932b660c0d69f3a3918e1389e4397..204430411c09b28a7925dafc209529cfcebe3eb1 100644 --- a/lib/json.php +++ b/lib/json.php @@ -58,6 +58,7 @@ class OC_JSON{ */ public static function checkAdminUser() { self::checkLoggedIn(); + self::verifyUser(); if( !OC_Group::inGroup( OC_User::getUser(), 'admin' )) { $l = OC_L10N::get('lib'); self::error(array( 'data' => array( 'message' => $l->t('Authentication error') ))); @@ -70,13 +71,27 @@ class OC_JSON{ */ public static function checkSubAdminUser() { self::checkLoggedIn(); - if(!OC_Group::inGroup(OC_User::getUser(),'admin') && !OC_SubAdmin::isSubAdmin(OC_User::getUser())) { + self::verifyUser(); + if(!OC_Group::inGroup(OC_User::getUser(), 'admin') && !OC_SubAdmin::isSubAdmin(OC_User::getUser())) { $l = OC_L10N::get('lib'); self::error(array( 'data' => array( 'message' => $l->t('Authentication error') ))); exit(); } } + /** + * Check if the user verified the login with his password + */ + public static function verifyUser() { + if(OC_Config::getValue('enhancedauth', false) === true) { + if(!isset($_SESSION['verifiedLogin']) OR $_SESSION['verifiedLogin'] < time()) { + $l = OC_L10N::get('lib'); + self::error(array( 'data' => array( 'message' => $l->t('Authentication error') ))); + exit(); + } + } + } + /** * Send json error msg */ @@ -105,7 +120,7 @@ class OC_JSON{ /** * Encode and print $data in json format */ - public static function encodedPrint($data,$setContentType=true) { + public static function encodedPrint($data, $setContentType=true) { // Disable mimesniffing, don't move this to setContentTypeHeader! header( 'X-Content-Type-Options: nosniff' ); if($setContentType) { diff --git a/lib/l10n.php b/lib/l10n.php index 4eb4c323d88859f36a40a681c24a1a7540c4f391..f172710e5d7b9a8c686e748cc6a60d9ee7628ca9 100644 --- a/lib/l10n.php +++ b/lib/l10n.php @@ -58,22 +58,24 @@ class OC_L10N{ * Localization */ private $localizations = array( - 'date' => 'd.m.Y', - 'datetime' => 'd.m.Y H:i:s', - 'time' => 'H:i:s'); + 'jsdate' => 'dd.mm.yy', + 'date' => '%d.%m.%Y', + 'datetime' => '%d.%m.%Y %H:%M:%S', + 'time' => '%H:%M:%S', + 'firstday' => 0); /** * get an L10N instance * @return OC_L10N */ - public static function get($app,$lang=null) { + public static function get($app, $lang=null) { if(is_null($lang)) { if(!isset(self::$instances[$app])) { self::$instances[$app]=new OC_L10N($app); } return self::$instances[$app]; }else{ - return new OC_L10N($app,$lang); + return new OC_L10N($app, $lang); } } @@ -118,7 +120,7 @@ class OC_L10N{ OC_Helper::issubdirectory($i18ndir.$lang.'.php', OC::$SERVERROOT.'/lib/l10n/') || OC_Helper::issubdirectory($i18ndir.$lang.'.php', OC::$SERVERROOT.'/settings')) && file_exists($i18ndir.$lang.'.php')) { // Include the file, save the data from $CONFIG - include(strip_tags($i18ndir).strip_tags($lang).'.php'); + include strip_tags($i18ndir).strip_tags($lang).'.php'; if(isset($TRANSLATIONS) && is_array($TRANSLATIONS)) { $this->translations = $TRANSLATIONS; } @@ -126,7 +128,7 @@ class OC_L10N{ if(file_exists(OC::$SERVERROOT.'/core/l10n/l10n-'.$lang.'.php')) { // Include the file, save the data from $CONFIG - include(OC::$SERVERROOT.'/core/l10n/l10n-'.$lang.'.php'); + include OC::$SERVERROOT.'/core/l10n/l10n-'.$lang.'.php'; if(isset($LOCALIZATIONS) && is_array($LOCALIZATIONS)) { $this->localizations = array_merge($this->localizations, $LOCALIZATIONS); } @@ -165,7 +167,7 @@ class OC_L10N{ * */ public function tA($textArray) { - OC_Log::write('core', 'DEPRECATED: the method tA is deprecated and will be removed soon.',OC_Log::WARN); + OC_Log::write('core', 'DEPRECATED: the method tA is deprecated and will be removed soon.', OC_Log::WARN); $result = array(); foreach($textArray as $key => $text) { $result[$key] = (string)$this->t($text); @@ -216,8 +218,21 @@ class OC_L10N{ case 'time': if($data instanceof DateTime) return $data->format($this->localizations[$type]); elseif(is_string($data)) $data = strtotime($data); - return date($this->localizations[$type], $data); + $locales = array(self::findLanguage()); + if (strlen($locales[0]) == 2) { + $locales[] = $locales[0].'_'.strtoupper($locales[0]); + } + setlocale(LC_TIME, $locales); + $format = $this->localizations[$type]; + // Check for Windows to find and replace the %e modifier correctly + if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { + $format = preg_replace('#(?localizations[$type]; default: return false; } diff --git a/lib/l10n/ar.php b/lib/l10n/ar.php new file mode 100644 index 0000000000000000000000000000000000000000..3ae226f04fdd008f01b19f0739eea305feb97ae5 --- /dev/null +++ b/lib/l10n/ar.php @@ -0,0 +1,9 @@ + "المساعدة", +"Personal" => "شخصي", +"Settings" => "تعديلات", +"Users" => "المستخدمين", +"Authentication error" => "لم يتم التأكد من الشخصية بنجاح", +"Files" => "الملÙات", +"Text" => "معلومات إضاÙية" +); diff --git a/lib/l10n/bg_BG.php b/lib/l10n/bg_BG.php new file mode 100644 index 0000000000000000000000000000000000000000..3eb0660d944a22dfeb9052cfc8e9883df840874e --- /dev/null +++ b/lib/l10n/bg_BG.php @@ -0,0 +1,4 @@ + "Лично", +"Authentication error" => "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта" +); diff --git a/lib/l10n/ca.php b/lib/l10n/ca.php index 031207227ec04f116a13ee416a4bd6d8018ebcfd..b3321ef82e14e539dff7c76ef33695b90b49064f 100644 --- a/lib/l10n/ca.php +++ b/lib/l10n/ca.php @@ -12,17 +12,23 @@ "Application is not enabled" => "L'aplicació no està habilitada", "Authentication error" => "Error d'autenticació", "Token expired. Please reload page." => "El testimoni ha expirat. Torneu a carregar la pàgina.", +"Files" => "Fitxers", +"Text" => "Text", +"Images" => "Imatges", "seconds ago" => "segons enrere", "1 minute ago" => "fa 1 minut", "%d minutes ago" => "fa %d minuts", +"1 hour ago" => "fa 1 hora", +"%d hours ago" => "fa %d hores", "today" => "avui", "yesterday" => "ahir", "%d days ago" => "fa %d dies", "last month" => "el mes passat", -"months ago" => "mesos enrere", +"%d months ago" => "fa %d mesos", "last year" => "l'any passat", "years ago" => "fa anys", "%s is available. Get more information" => "%s està disponible. Obtén més informació", "up to date" => "actualitzat", -"updates check is disabled" => "la comprovació d'actualitzacions està desactivada" +"updates check is disabled" => "la comprovació d'actualitzacions està desactivada", +"Could not find category \"%s\"" => "No s'ha trobat la categoria \"%s\"" ); diff --git a/lib/l10n/cs_CZ.php b/lib/l10n/cs_CZ.php index 00815f97533db2a3d1c4f70dd515444a9dac75f3..fa11e886774adb37761eb55e3d51b6db148cb00e 100644 --- a/lib/l10n/cs_CZ.php +++ b/lib/l10n/cs_CZ.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Aplikace není povolena", "Authentication error" => "Chyba ověření", "Token expired. Please reload page." => "Token vyprÅ¡el. Obnovte prosím stránku.", +"Files" => "Soubory", +"Text" => "Text", +"Images" => "Obrázky", "seconds ago" => "pÅ™ed vteÅ™inami", "1 minute ago" => "pÅ™ed 1 minutou", "%d minutes ago" => "pÅ™ed %d minutami", +"1 hour ago" => "pÅ™ed hodinou", +"%d hours ago" => "pÅ™ed %d hodinami", "today" => "dnes", "yesterday" => "vÄera", "%d days ago" => "pÅ™ed %d dny", "last month" => "minulý mÄ›síc", -"months ago" => "pÅ™ed mÄ›síci", +"%d months ago" => "PÅ™ed %d mÄ›síci", "last year" => "loni", "years ago" => "pÅ™ed lety", "%s is available. Get more information" => "%s je dostupná. Získat více informací", "up to date" => "aktuální", -"updates check is disabled" => "kontrola aktualizací je vypnuta" +"updates check is disabled" => "kontrola aktualizací je vypnuta", +"Could not find category \"%s\"" => "Nelze nalézt kategorii \"%s\"" ); diff --git a/lib/l10n/da.php b/lib/l10n/da.php index 09124c1829054241b6d76980a76daa963c2b4d26..7458b329782fc760dfcc28c3f0e3928cb8fe67e3 100644 --- a/lib/l10n/da.php +++ b/lib/l10n/da.php @@ -12,6 +12,8 @@ "Application is not enabled" => "Programmet er ikke aktiveret", "Authentication error" => "Adgangsfejl", "Token expired. Please reload page." => "Adgang er udløbet. Genindlæs siden.", +"Files" => "Filer", +"Text" => "SMS", "seconds ago" => "sekunder siden", "1 minute ago" => "1 minut siden", "%d minutes ago" => "%d minutter siden", @@ -19,7 +21,6 @@ "yesterday" => "I gÃ¥r", "%d days ago" => "%d dage siden", "last month" => "Sidste mÃ¥ned", -"months ago" => "mÃ¥neder siden", "last year" => "Sidste Ã¥r", "years ago" => "Ã¥r siden", "%s is available. Get more information" => "%s er tilgængelig. FÃ¥ mere information", diff --git a/lib/l10n/de.php b/lib/l10n/de.php index 8c81be165821ab2b651e66067515b11c51865fe0..7724d8c684f2d730d6858a4f177ae7bb4504c7b2 100644 --- a/lib/l10n/de.php +++ b/lib/l10n/de.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Die Anwendung ist nicht aktiviert", "Authentication error" => "Authentifizierungs-Fehler", "Token expired. Please reload page." => "Token abgelaufen. Bitte lade die Seite neu.", -"seconds ago" => "Vor wenigen Sekunden", +"Files" => "Dateien", +"Text" => "Text", +"Images" => "Bilder", +"seconds ago" => "Gerade eben", "1 minute ago" => "Vor einer Minute", "%d minutes ago" => "Vor %d Minuten", +"1 hour ago" => "Vor einer Stunde", +"%d hours ago" => "Vor %d Stunden", "today" => "Heute", "yesterday" => "Gestern", "%d days ago" => "Vor %d Tag(en)", "last month" => "Letzten Monat", -"months ago" => "Vor Monaten", +"%d months ago" => "Vor %d Monaten", "last year" => "Letztes Jahr", -"years ago" => "Vor Jahren", +"years ago" => "Vor wenigen Jahren", "%s is available. Get more information" => "%s ist verfügbar. Weitere Informationen", "up to date" => "aktuell", -"updates check is disabled" => "Die Update-Ãœberprüfung ist ausgeschaltet" +"updates check is disabled" => "Die Update-Ãœberprüfung ist ausgeschaltet", +"Could not find category \"%s\"" => "Die Kategorie \"%s\" konnte nicht gefunden werden." ); diff --git a/lib/l10n/de_DE.php b/lib/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..95596a7a33ab4703d39ec271f3a59feea4552327 --- /dev/null +++ b/lib/l10n/de_DE.php @@ -0,0 +1,34 @@ + "Hilfe", +"Personal" => "Persönlich", +"Settings" => "Einstellungen", +"Users" => "Benutzer", +"Apps" => "Apps", +"Admin" => "Administrator", +"ZIP download is turned off." => "Der ZIP-Download ist deaktiviert.", +"Files need to be downloaded one by one." => "Die Dateien müssen einzeln heruntergeladen werden.", +"Back to Files" => "Zurück zu \"Dateien\"", +"Selected files too large to generate zip file." => "Die gewählten Dateien sind zu groß, um eine ZIP-Datei zu erstellen.", +"Application is not enabled" => "Die Anwendung ist nicht aktiviert", +"Authentication error" => "Authentifizierungs-Fehler", +"Token expired. Please reload page." => "Token abgelaufen. Bitte laden Sie die Seite neu.", +"Files" => "Dateien", +"Text" => "Text", +"Images" => "Bilder", +"seconds ago" => "Gerade eben", +"1 minute ago" => "Vor einer Minute", +"%d minutes ago" => "Vor %d Minuten", +"1 hour ago" => "Vor einer Stunde", +"%d hours ago" => "Vor %d Stunden", +"today" => "Heute", +"yesterday" => "Gestern", +"%d days ago" => "Vor %d Tag(en)", +"last month" => "Letzten Monat", +"%d months ago" => "Vor %d Monaten", +"last year" => "Letztes Jahr", +"years ago" => "Vor wenigen Jahren", +"%s is available. Get more information" => "%s ist verfügbar. Weitere Informationen", +"up to date" => "aktuell", +"updates check is disabled" => "Die Update-Ãœberprüfung ist ausgeschaltet", +"Could not find category \"%s\"" => "Die Kategorie \"%s\" konnte nicht gefunden werden." +); diff --git a/lib/l10n/el.php b/lib/l10n/el.php index e4e1249071142d6475ee2010add40d523293cb52..315b995ecc9aad988227665fb8dcfb09b1a53b15 100644 --- a/lib/l10n/el.php +++ b/lib/l10n/el.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Δεν ενεÏγοποιήθηκε η εφαÏμογή", "Authentication error" => "Σφάλμα πιστοποίησης", "Token expired. Please reload page." => "Το αναγνωÏιστικό έληξε. ΠαÏακαλώ φοÏτώστε ξανά την σελίδα.", +"Files" => "ΑÏχεία", +"Text" => "Κείμενο", +"Images" => "Εικόνες", "seconds ago" => "δευτεÏόλεπτα Ï€Ïιν", "1 minute ago" => "1 λεπτό Ï€Ïιν", "%d minutes ago" => "%d λεπτά Ï€Ïιν", +"1 hour ago" => "1 ÏŽÏα Ï€Ïιν", +"%d hours ago" => "%d ÏŽÏες Ï€Ïιν", "today" => "σήμεÏα", "yesterday" => "χθές", "%d days ago" => "%d ημέÏες Ï€Ïιν", "last month" => "τον Ï€ÏοηγοÏμενο μήνα", -"months ago" => "μήνες Ï€Ïιν", +"%d months ago" => "%d μήνες Ï€Ïιν", "last year" => "τον Ï€ÏοηγοÏμενο χÏόνο", "years ago" => "χÏόνια Ï€Ïιν", "%s is available. Get more information" => "%s είναι διαθέσιμα. Δείτε πεÏισσότεÏες πληÏοφοÏίες", "up to date" => "ενημεÏωμένο", -"updates check is disabled" => "ο έλεγχος ενημεÏώσεων είναι απενεÏγοποιημένος" +"updates check is disabled" => "ο έλεγχος ενημεÏώσεων είναι απενεÏγοποιημένος", +"Could not find category \"%s\"" => "Αδυναμία εÏÏεσης κατηγοÏίας \"%s\"" ); diff --git a/lib/l10n/eo.php b/lib/l10n/eo.php index b3c1c52ecee8e489040f05448d1f140ca62d498b..dac11ffe7e602711bf7e797da0afaa618a5a49bf 100644 --- a/lib/l10n/eo.php +++ b/lib/l10n/eo.php @@ -12,17 +12,23 @@ "Application is not enabled" => "La aplikaĵo ne estas kapabligita", "Authentication error" => "AÅ­tentiga eraro", "Token expired. Please reload page." => "Ä´etono eksvalidiÄis. Bonvolu reÅargi la paÄon.", +"Files" => "Dosieroj", +"Text" => "Teksto", +"Images" => "Bildoj", "seconds ago" => "sekundojn antaÅ­e", "1 minute ago" => "antaÅ­ 1 minuto", "%d minutes ago" => "antaÅ­ %d minutoj", +"1 hour ago" => "antaÅ­ 1 horo", +"%d hours ago" => "antaÅ­ %d horoj", "today" => "hodiaÅ­", "yesterday" => "hieraÅ­", "%d days ago" => "antaÅ­ %d tagoj", "last month" => "lasta monato", -"months ago" => "monatojn antaÅ­e", +"%d months ago" => "antaÅ­ %d monatoj", "last year" => "lasta jaro", "years ago" => "jarojn antaÅ­e", "%s is available. Get more information" => "%s haveblas. Ekhavu pli da informo", "up to date" => "Äisdata", -"updates check is disabled" => "Äisdateckontrolo estas malkapabligita" +"updates check is disabled" => "Äisdateckontrolo estas malkapabligita", +"Could not find category \"%s\"" => "Ne troviÄis kategorio “%sâ€" ); diff --git a/lib/l10n/es.php b/lib/l10n/es.php index 6d2a310ca3b0ea31a22d3d7a3cc66d7ca398debf..f843c42dfd38605828e3d70988275f501afd7835 100644 --- a/lib/l10n/es.php +++ b/lib/l10n/es.php @@ -12,17 +12,23 @@ "Application is not enabled" => "La aplicación no está habilitada", "Authentication error" => "Error de autenticación", "Token expired. Please reload page." => "Token expirado. Por favor, recarga la página.", +"Files" => "Archivos", +"Text" => "Texto", +"Images" => "Imágenes", "seconds ago" => "hace segundos", "1 minute ago" => "hace 1 minuto", "%d minutes ago" => "hace %d minutos", +"1 hour ago" => "Hace 1 hora", +"%d hours ago" => "Hace %d horas", "today" => "hoy", "yesterday" => "ayer", "%d days ago" => "hace %d días", "last month" => "este mes", -"months ago" => "hace meses", +"%d months ago" => "Hace %d meses", "last year" => "este año", "years ago" => "hace años", "%s is available. Get more information" => "%s está disponible. Obtén más información", "up to date" => "actualizado", -"updates check is disabled" => "comprobar actualizaciones está desactivado" +"updates check is disabled" => "comprobar actualizaciones está desactivado", +"Could not find category \"%s\"" => "No puede encontrar la categoria \"%s\"" ); diff --git a/lib/l10n/es_AR.php b/lib/l10n/es_AR.php index fd50027d8a146b3786a1fa57a8e4f2cf6c816a27..2bbffd39e9e367b9336a6eba3917a9d34acb9c79 100644 --- a/lib/l10n/es_AR.php +++ b/lib/l10n/es_AR.php @@ -12,17 +12,23 @@ "Application is not enabled" => "La aplicación no está habilitada", "Authentication error" => "Error de autenticación", "Token expired. Please reload page." => "Token expirado. Por favor, recargá la página.", +"Files" => "Archivos", +"Text" => "Texto", +"Images" => "Imágenes", "seconds ago" => "hace unos segundos", "1 minute ago" => "hace 1 minuto", "%d minutes ago" => "hace %d minutos", +"1 hour ago" => "1 hora atrás", +"%d hours ago" => "%d horas atrás", "today" => "hoy", "yesterday" => "ayer", "%d days ago" => "hace %d días", "last month" => "este mes", -"months ago" => "hace meses", +"%d months ago" => "%d meses atrás", "last year" => "este año", "years ago" => "hace años", "%s is available. Get more information" => "%s está disponible. Conseguí más información", "up to date" => "actualizado", -"updates check is disabled" => "comprobar actualizaciones está desactivado" +"updates check is disabled" => "comprobar actualizaciones está desactivado", +"Could not find category \"%s\"" => "No fue posible encontrar la categoría \"%s\"" ); diff --git a/lib/l10n/et_EE.php b/lib/l10n/et_EE.php index 87f222af8381b33bc3d85ed9d8bdfba291e07195..906abf9430a9fe6351834abf33b8c036fc5f6f77 100644 --- a/lib/l10n/et_EE.php +++ b/lib/l10n/et_EE.php @@ -12,6 +12,9 @@ "Application is not enabled" => "Rakendus pole sisse lülitatud", "Authentication error" => "Autentimise viga", "Token expired. Please reload page." => "Kontrollkood aegus. Paelun lae leht uuesti.", +"Files" => "Failid", +"Text" => "Tekst", +"Images" => "Pildid", "seconds ago" => "sekundit tagasi", "1 minute ago" => "1 minut tagasi", "%d minutes ago" => "%d minutit tagasi", @@ -19,7 +22,6 @@ "yesterday" => "eile", "%d days ago" => "%d päeva tagasi", "last month" => "eelmisel kuul", -"months ago" => "kuud tagasi", "last year" => "eelmisel aastal", "years ago" => "aastat tagasi", "%s is available. Get more information" => "%s on saadaval. Vaata lisainfot", diff --git a/lib/l10n/eu.php b/lib/l10n/eu.php index 461bf458778a1d9b44decc03c2532c71b7d4bf3b..5d47ecbda23b992b15904b3c2cfa7fae13c9edd6 100644 --- a/lib/l10n/eu.php +++ b/lib/l10n/eu.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Aplikazioa ez dago gaituta", "Authentication error" => "Autentikazio errorea", "Token expired. Please reload page." => "Tokena iraungitu da. Mesedez birkargatu orria.", +"Files" => "Fitxategiak", +"Text" => "Testua", +"Images" => "Irudiak", "seconds ago" => "orain dela segundu batzuk", "1 minute ago" => "orain dela minutu 1", "%d minutes ago" => "orain dela %d minutu", +"1 hour ago" => "orain dela ordu bat", +"%d hours ago" => "orain dela %d ordu", "today" => "gaur", "yesterday" => "atzo", "%d days ago" => "orain dela %d egun", "last month" => "joan den hilabetea", -"months ago" => "orain dela hilabete batzuk", +"%d months ago" => "orain dela %d hilabete", "last year" => "joan den urtea", "years ago" => "orain dela urte batzuk", "%s is available. Get more information" => "%s eskuragarri dago. Lortu informazio gehiago", "up to date" => "eguneratuta", -"updates check is disabled" => "eguneraketen egiaztapena ez dago gaituta" +"updates check is disabled" => "eguneraketen egiaztapena ez dago gaituta", +"Could not find category \"%s\"" => "Ezin da \"%s\" kategoria aurkitu" ); diff --git a/lib/l10n/fa.php b/lib/l10n/fa.php index 3579329820f235c88d6ed737ee3e5ddeb85f7daa..ce7c7c6e970c17643d2de5eb7ecda66206f4f886 100644 --- a/lib/l10n/fa.php +++ b/lib/l10n/fa.php @@ -4,13 +4,15 @@ "Settings" => "تنظیمات", "Users" => "کاربران", "Admin" => "مدیر", +"Authentication error" => "خطا در اعتبار سنجی", +"Files" => "پرونده‌ها", +"Text" => "متن", "seconds ago" => "ثانیه‌ها پیش", "1 minute ago" => "1 دقیقه پیش", "%d minutes ago" => "%d دقیقه پیش", "today" => "امروز", "yesterday" => "دیروز", "last month" => "ماه قبل", -"months ago" => "ماه‌های قبل", "last year" => "سال قبل", "years ago" => "سال‌های قبل" ); diff --git a/lib/l10n/fi_FI.php b/lib/l10n/fi_FI.php index 6f0ebcd16e619169e81fc5fb59f57b31e7b2169b..6a5734e978d68f736c57a097fa59175b1af4d97a 100644 --- a/lib/l10n/fi_FI.php +++ b/lib/l10n/fi_FI.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Sovellusta ei ole otettu käyttöön", "Authentication error" => "Todennusvirhe", "Token expired. Please reload page." => "Valtuutus vanheni. Lataa sivu uudelleen.", +"Files" => "Tiedostot", +"Text" => "Teksti", +"Images" => "Kuvat", "seconds ago" => "sekuntia sitten", "1 minute ago" => "1 minuutti sitten", "%d minutes ago" => "%d minuuttia sitten", +"1 hour ago" => "1 tunti sitten", +"%d hours ago" => "%d tuntia sitten", "today" => "tänään", "yesterday" => "eilen", "%d days ago" => "%d päivää sitten", "last month" => "viime kuussa", -"months ago" => "kuukautta sitten", +"%d months ago" => "%d kuukautta sitten", "last year" => "viime vuonna", "years ago" => "vuotta sitten", "%s is available. Get more information" => "%s on saatavilla. Lue lisätietoja", "up to date" => "ajan tasalla", -"updates check is disabled" => "päivitysten tarkistus on pois käytöstä" +"updates check is disabled" => "päivitysten tarkistus on pois käytöstä", +"Could not find category \"%s\"" => "Luokkaa \"%s\" ei löytynyt" ); diff --git a/lib/l10n/fr.php b/lib/l10n/fr.php index c10259e637616f6bd03bac4b80c546c16b5c869e..218c22c1d53aef3e5bad0dfbbebf90886b9761f6 100644 --- a/lib/l10n/fr.php +++ b/lib/l10n/fr.php @@ -12,17 +12,23 @@ "Application is not enabled" => "L'application n'est pas activée", "Authentication error" => "Erreur d'authentification", "Token expired. Please reload page." => "La session a expiré. Veuillez recharger la page.", +"Files" => "Fichiers", +"Text" => "Texte", +"Images" => "Images", "seconds ago" => "à l'instant", "1 minute ago" => "il y a 1 minute", "%d minutes ago" => "il y a %d minutes", +"1 hour ago" => "Il y a une heure", +"%d hours ago" => "Il y a %d heures", "today" => "aujourd'hui", "yesterday" => "hier", "%d days ago" => "il y a %d jours", "last month" => "le mois dernier", -"months ago" => "il y a plusieurs mois", +"%d months ago" => "Il y a %d mois", "last year" => "l'année dernière", "years ago" => "il y a plusieurs années", "%s is available. Get more information" => "%s est disponible. Obtenez plus d'informations", "up to date" => "À jour", -"updates check is disabled" => "la vérification des mises à jour est désactivée" +"updates check is disabled" => "la vérification des mises à jour est désactivée", +"Could not find category \"%s\"" => "Impossible de trouver la catégorie \"%s\"" ); diff --git a/lib/l10n/gl.php b/lib/l10n/gl.php index 7a9de627c2d922c18c2ba6f7ec6e6e05c708520c..fd59cff02fad5eeffa7ea662e2e74bb9e5eac19e 100644 --- a/lib/l10n/gl.php +++ b/lib/l10n/gl.php @@ -1,28 +1,34 @@ "Axuda", "Personal" => "Personal", -"Settings" => "Preferencias", +"Settings" => "Configuracións", "Users" => "Usuarios", -"Apps" => "Apps", +"Apps" => "Aplicativos", "Admin" => "Administración", -"ZIP download is turned off." => "Descargas ZIP está deshabilitadas", -"Files need to be downloaded one by one." => "Os ficheiros necesitan ser descargados de un en un", -"Back to Files" => "Voltar a ficheiros", -"Selected files too large to generate zip file." => "Os ficheiros seleccionados son demasiado grandes para xerar un ficheiro ZIP", -"Application is not enabled" => "O aplicativo non está habilitado", +"ZIP download is turned off." => "As descargas ZIP están desactivadas", +"Files need to be downloaded one by one." => "Os ficheiros necesitan ser descargados de un en un.", +"Back to Files" => "Volver aos ficheiros", +"Selected files too large to generate zip file." => "Os ficheiros seleccionados son demasiado grandes como para xerar un ficheiro zip.", +"Application is not enabled" => "O aplicativo non está activado", "Authentication error" => "Erro na autenticación", -"Token expired. Please reload page." => "Testemuño caducado. Por favor recargue a páxina.", +"Token expired. Please reload page." => "Token caducado. Recarga a páxina.", +"Files" => "Ficheiros", +"Text" => "Texto", +"Images" => "Imaxes", "seconds ago" => "hai segundos", "1 minute ago" => "hai 1 minuto", "%d minutes ago" => "hai %d minutos", +"1 hour ago" => "1 hora antes", +"%d hours ago" => "%d horas antes", "today" => "hoxe", "yesterday" => "onte", "%d days ago" => "hai %d días", "last month" => "último mes", -"months ago" => "meses atrás", +"%d months ago" => "%d meses antes", "last year" => "último ano", "years ago" => "anos atrás", -"%s is available. Get more information" => "%s está dispoñible. Obteña máis información", +"%s is available. Get more information" => "%s está dispoñible. Obtén máis información", "up to date" => "ao día", -"updates check is disabled" => "comprobación de actualizacións está deshabilitada" +"updates check is disabled" => "a comprobación de actualizacións está desactivada", +"Could not find category \"%s\"" => "Non se puido atopar a categoría «%s»" ); diff --git a/lib/l10n/he.php b/lib/l10n/he.php index 149637d09d29422b78442b2fc9146a9d1ba4bdf0..078a731afc0defacdaafaf0c93b7890dad81c4ae 100644 --- a/lib/l10n/he.php +++ b/lib/l10n/he.php @@ -12,17 +12,23 @@ "Application is not enabled" => "×™×™×©×•×ž×™× ××™× × ×ž×•×¤×¢×œ×™×", "Authentication error" => "שגי×ת הזדהות", "Token expired. Please reload page." => "פג תוקף. × × ×œ×˜×¢×•×Ÿ שוב ×ת הדף.", +"Files" => "קבצי×", +"Text" => "טקסט", +"Images" => "תמונות", "seconds ago" => "שניות", "1 minute ago" => "לפני דקה ×חת", "%d minutes ago" => "לפני %d דקות", +"1 hour ago" => "לפני שעה", +"%d hours ago" => "לפני %d שעות", "today" => "היו×", "yesterday" => "×תמול", "%d days ago" => "לפני %d ימי×", "last month" => "חודש שעבר", -"months ago" => "חודשי×", +"%d months ago" => "לפני %d חודשי×", "last year" => "שנה שעברה", "years ago" => "שני×", "%s is available. Get more information" => "%s זמין. קבלת מידע נוסף", "up to date" => "עדכני", -"updates check is disabled" => "בדיקת ×¢×“×›×•× ×™× ×ž× ×•×˜×¨×œ×ª" +"updates check is disabled" => "בדיקת ×¢×“×›×•× ×™× ×ž× ×•×˜×¨×œ×ª", +"Could not find category \"%s\"" => "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת הקטגוריה „%s“" ); diff --git a/lib/l10n/hr.php b/lib/l10n/hr.php new file mode 100644 index 0000000000000000000000000000000000000000..62305c15711d1778221faafcb16bec3aa74648c6 --- /dev/null +++ b/lib/l10n/hr.php @@ -0,0 +1,15 @@ + "Pomoć", +"Personal" => "Osobno", +"Settings" => "Postavke", +"Users" => "Korisnici", +"Authentication error" => "GreÅ¡ka kod autorizacije", +"Files" => "Datoteke", +"Text" => "Tekst", +"seconds ago" => "sekundi prije", +"today" => "danas", +"yesterday" => "juÄer", +"last month" => "proÅ¡li mjesec", +"last year" => "proÅ¡lu godinu", +"years ago" => "godina" +); diff --git a/lib/l10n/hu_HU.php b/lib/l10n/hu_HU.php index eb074b79c617ac72b4df0127984b758c6ad5a63f..63704a978c5b81efe0450b6562ca9788615802ff 100644 --- a/lib/l10n/hu_HU.php +++ b/lib/l10n/hu_HU.php @@ -12,6 +12,8 @@ "Application is not enabled" => "Az alkalmazás nincs engedélyezve", "Authentication error" => "Hitelesítési hiba", "Token expired. Please reload page." => "A token lejárt. Frissítsd az oldalt.", +"Files" => "Fájlok", +"Text" => "Szöveg", "seconds ago" => "másodperccel ezelÅ‘tt", "1 minute ago" => "1 perccel ezelÅ‘tt", "%d minutes ago" => "%d perccel ezelÅ‘tt", @@ -19,7 +21,6 @@ "yesterday" => "tegnap", "%d days ago" => "%d évvel ezelÅ‘tt", "last month" => "múlt hónapban", -"months ago" => "hónappal ezelÅ‘tt", "last year" => "tavaly", "years ago" => "évvel ezelÅ‘tt" ); diff --git a/lib/l10n/ia.php b/lib/l10n/ia.php new file mode 100644 index 0000000000000000000000000000000000000000..05b2c88e1ed82342cd2cb3f72c92fe9b4df1219b --- /dev/null +++ b/lib/l10n/ia.php @@ -0,0 +1,8 @@ + "Adjuta", +"Personal" => "Personal", +"Settings" => "Configurationes", +"Users" => "Usatores", +"Files" => "Files", +"Text" => "Texto" +); diff --git a/lib/l10n/id.php b/lib/l10n/id.php new file mode 100644 index 0000000000000000000000000000000000000000..e31b4caf4f503288f995698e1e530712c3e27485 --- /dev/null +++ b/lib/l10n/id.php @@ -0,0 +1,28 @@ + "bantu", +"Personal" => "perseorangan", +"Settings" => "pengaturan", +"Users" => "pengguna", +"Apps" => "aplikasi", +"Admin" => "admin", +"ZIP download is turned off." => "download ZIP sedang dimatikan", +"Files need to be downloaded one by one." => "file harus di unduh satu persatu", +"Back to Files" => "kembali ke daftar file", +"Selected files too large to generate zip file." => "file yang dipilih terlalu besar untuk membuat file zip", +"Application is not enabled" => "aplikasi tidak diaktifkan", +"Authentication error" => "autentikasi bermasalah", +"Token expired. Please reload page." => "token kadaluarsa.mohon perbaharui laman.", +"Text" => "teks", +"seconds ago" => "beberapa detik yang lalu", +"1 minute ago" => "1 menit lalu", +"%d minutes ago" => "%d menit lalu", +"today" => "hari ini", +"yesterday" => "kemarin", +"%d days ago" => "%d hari lalu", +"last month" => "bulan kemarin", +"last year" => "tahun kemarin", +"years ago" => "beberapa tahun lalu", +"%s is available. Get more information" => "%s tersedia. dapatkan info lebih lanjut", +"up to date" => "terbaru", +"updates check is disabled" => "pengecekan pembaharuan sedang non-aktifkan" +); diff --git a/lib/l10n/it.php b/lib/l10n/it.php index c4c7d90610bec35d3d3c0d75dea715c40c0a6c52..c0fb0babfb3051a63dca901413ba404901e5e022 100644 --- a/lib/l10n/it.php +++ b/lib/l10n/it.php @@ -12,17 +12,23 @@ "Application is not enabled" => "L'applicazione non è abilitata", "Authentication error" => "Errore di autenticazione", "Token expired. Please reload page." => "Token scaduto. Ricarica la pagina.", +"Files" => "File", +"Text" => "Testo", +"Images" => "Immagini", "seconds ago" => "secondi fa", "1 minute ago" => "1 minuto fa", "%d minutes ago" => "%d minuti fa", +"1 hour ago" => "1 ora fa", +"%d hours ago" => "%d ore fa", "today" => "oggi", "yesterday" => "ieri", "%d days ago" => "%d giorni fa", "last month" => "il mese scorso", -"months ago" => "mesi fa", +"%d months ago" => "%d mesi fa", "last year" => "l'anno scorso", "years ago" => "anni fa", "%s is available. Get more information" => "%s è disponibile. Ottieni ulteriori informazioni", "up to date" => "aggiornato", -"updates check is disabled" => "il controllo degli aggiornamenti è disabilitato" +"updates check is disabled" => "il controllo degli aggiornamenti è disabilitato", +"Could not find category \"%s\"" => "Impossibile trovare la categoria \"%s\"" ); diff --git a/lib/l10n/ja_JP.php b/lib/l10n/ja_JP.php index 10f7276703abc4b734891a90f36e58ef76ff2ee4..854734c976479535efd7035cd17d300a2eaab548 100644 --- a/lib/l10n/ja_JP.php +++ b/lib/l10n/ja_JP.php @@ -12,17 +12,23 @@ "Application is not enabled" => "アプリケーションã¯ç„¡åŠ¹ã§ã™", "Authentication error" => "èªè¨¼ã‚¨ãƒ©ãƒ¼", "Token expired. Please reload page." => "トークンãŒç„¡åŠ¹ã«ãªã‚Šã¾ã—ãŸã€‚ページをå†èª­è¾¼ã—ã¦ãã ã•ã„。", +"Files" => "ファイル", +"Text" => "TTY TDD", +"Images" => "ç”»åƒ", "seconds ago" => "秒å‰", "1 minute ago" => "1分å‰", "%d minutes ago" => "%d 分å‰", +"1 hour ago" => "1 時間å‰", +"%d hours ago" => "%d 時間å‰", "today" => "今日", "yesterday" => "昨日", "%d days ago" => "%d æ—¥å‰", "last month" => "先月", -"months ago" => "月å‰", +"%d months ago" => "%d 分å‰", "last year" => "昨年", "years ago" => "å¹´å‰", "%s is available. Get more information" => "%s ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚詳細情報 を確èªãã ã•ã„", "up to date" => "最新ã§ã™", -"updates check is disabled" => "æ›´æ–°ãƒã‚§ãƒƒã‚¯ã¯ç„¡åŠ¹ã§ã™" +"updates check is disabled" => "æ›´æ–°ãƒã‚§ãƒƒã‚¯ã¯ç„¡åŠ¹ã§ã™", +"Could not find category \"%s\"" => "カテゴリ \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" ); diff --git a/lib/l10n/ka_GE.php b/lib/l10n/ka_GE.php new file mode 100644 index 0000000000000000000000000000000000000000..ff623827216ecea2d328fe3917a0d1908ae23bf7 --- /dev/null +++ b/lib/l10n/ka_GE.php @@ -0,0 +1,20 @@ + "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ", +"Personal" => "პირáƒáƒ“ი", +"Settings" => "პáƒáƒ áƒáƒ›áƒ”ტრები", +"Users" => "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი", +"Apps" => "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი", +"Admin" => "áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ˜", +"Authentication error" => "áƒáƒ•áƒ—ენტიფიკáƒáƒªáƒ˜áƒ˜áƒ¡ შეცდáƒáƒ›áƒ", +"Files" => "ფáƒáƒ˜áƒšáƒ”ბი", +"Text" => "ტექსტი", +"seconds ago" => "წáƒáƒ›áƒ˜áƒ¡ წინ", +"1 minute ago" => "1 წუთის წინ", +"today" => "დღეს", +"yesterday" => "გუშინ", +"last month" => "გáƒáƒ¡áƒ£áƒš თვეში", +"last year" => "ბáƒáƒšáƒ წელს", +"years ago" => "წლის წინ", +"up to date" => "გáƒáƒœáƒáƒ®áƒšáƒ”ბულიáƒ", +"updates check is disabled" => "გáƒáƒœáƒáƒ®áƒšáƒ”ბის ძებნრგáƒáƒ—იშულიáƒ" +); diff --git a/lib/l10n/ko.php b/lib/l10n/ko.php new file mode 100644 index 0000000000000000000000000000000000000000..6f32e3b54ec2d9e26b45e541ed55a7392c826269 --- /dev/null +++ b/lib/l10n/ko.php @@ -0,0 +1,34 @@ + "ë„움ë§", +"Personal" => "ê°œì¸ì˜", +"Settings" => "설정", +"Users" => "사용ìž", +"Apps" => "어플리케ì´ì…˜", +"Admin" => "관리ìž", +"ZIP download is turned off." => "ZIP 다운로드가 꺼졌습니다.", +"Files need to be downloaded one by one." => "íŒŒì¼ ì°¨ë¡€ëŒ€ë¡œ 다운로드가 필요합니다.", +"Back to Files" => "파ì¼ë¡œ ëŒì•„가기", +"Selected files too large to generate zip file." => "zip íŒŒì¼ ìƒì„±í•˜ê¸° 위한 너무 ë§Žì€ íŒŒì¼ë“¤ì´ ì„ íƒë˜ì—ˆìŠµë‹ˆë‹¤.", +"Application is not enabled" => "ì‘ìš©í”„ë¡œê·¸ëž¨ì´ ì‚¬ìš© 가능하지 않습니다.", +"Authentication error" => "ì¸ì¦ 오류", +"Token expired. Please reload page." => "í† í° ë§Œë£Œ. 페ì´ì§€ë¥¼ 새로고침 해주세요.", +"Files" => "파ì¼", +"Text" => "ë¬¸ìž ë²ˆí˜¸", +"Images" => "그림", +"seconds ago" => "ì´ˆ ì „", +"1 minute ago" => "1분 ì „", +"%d minutes ago" => "%d 분 ì „", +"1 hour ago" => "1 시간 ì „", +"%d hours ago" => "%d 시간 ì „", +"today" => "오늘", +"yesterday" => "ì–´ì œ", +"%d days ago" => "%d ì¼ ì „", +"last month" => "지난 달", +"%d months ago" => "%d 달 ì „", +"last year" => "지난 í•´", +"years ago" => "ìž‘ë…„", +"%s is available. Get more information" => "%sì€ ê°€ëŠ¥í•©ë‹ˆë‹¤. ë” ìžì„¸í•œ 정보는 ì´ê³³ìœ¼ë¡œ..", +"up to date" => "최신", +"updates check is disabled" => "ì—…ë°ì´íŠ¸ 확ì¸ì´ 비활성화 ë˜ì–´ìžˆìŠµë‹ˆë‹¤.", +"Could not find category \"%s\"" => "\"%s\" 카테고리를 ì°¾ì„ ìˆ˜ 없습니다." +); diff --git a/lib/l10n/ku_IQ.php b/lib/l10n/ku_IQ.php new file mode 100644 index 0000000000000000000000000000000000000000..f89871f23c922104fc68624696c81c00e620d9c2 --- /dev/null +++ b/lib/l10n/ku_IQ.php @@ -0,0 +1,5 @@ + "یارمەتی", +"Settings" => "ده‌ستكاری", +"Users" => "به‌كارهێنه‌ر" +); diff --git a/lib/l10n/lb.php b/lib/l10n/lb.php new file mode 100644 index 0000000000000000000000000000000000000000..baee630e89753e2e8c74d8a10ccaaac860ed3d6a --- /dev/null +++ b/lib/l10n/lb.php @@ -0,0 +1,6 @@ + "Perséinlech", +"Settings" => "Astellungen", +"Authentication error" => "Authentifikatioun's Fehler", +"Text" => "SMS" +); diff --git a/lib/l10n/lt_LT.php b/lib/l10n/lt_LT.php index c6702a622879013dd4690ffd69914f44a8eb286c..b84c155633b33d6ce1ae226714ea2524c64b4ac5 100644 --- a/lib/l10n/lt_LT.php +++ b/lib/l10n/lt_LT.php @@ -11,11 +11,19 @@ "Selected files too large to generate zip file." => "Pasirinkti failai per dideli archyvavimui į ZIP.", "Application is not enabled" => "Programa neįjungta", "Authentication error" => "Autentikacijos klaida", +"Token expired. Please reload page." => "Sesija baigÄ—si. PraÅ¡ome perkrauti puslapį.", +"Files" => "Failai", +"Text" => "ŽinuÄių", +"seconds ago" => "prieÅ¡ kelias sekundes", "1 minute ago" => "prieÅ¡ 1 minutÄ™", "%d minutes ago" => "prieÅ¡ %d minuÄių", "today" => "Å¡iandien", "yesterday" => "vakar", "%d days ago" => "prieÅ¡ %d dienų", "last month" => "praÄ—jusį mÄ—nesį", -"last year" => "pereitais metais" +"last year" => "pereitais metais", +"years ago" => "prieÅ¡ metus", +"%s is available. Get more information" => "%s yra galimas. PlatesnÄ— informacija Äia", +"up to date" => "pilnai atnaujinta", +"updates check is disabled" => "atnaujinimų tikrinimas iÅ¡jungtas" ); diff --git a/lib/l10n/lv.php b/lib/l10n/lv.php new file mode 100644 index 0000000000000000000000000000000000000000..3330d0e6b70f7a8957418b686b7085813c00165b --- /dev/null +++ b/lib/l10n/lv.php @@ -0,0 +1,8 @@ + "PalÄ«dzÄ«ba", +"Personal" => "PersonÄ«gi", +"Settings" => "IestatÄ«jumi", +"Users" => "LietotÄji", +"Authentication error" => "IelogoÅ¡anÄs kļūme", +"Files" => "Faili" +); diff --git a/lib/l10n/mk.php b/lib/l10n/mk.php new file mode 100644 index 0000000000000000000000000000000000000000..a06073e808a3cf23ee1f86d09b6234ea3cc0de61 --- /dev/null +++ b/lib/l10n/mk.php @@ -0,0 +1,8 @@ + "Помош", +"Personal" => "Лично", +"Settings" => "Параметри", +"Users" => "КориÑници", +"Files" => "Датотеки", +"Text" => "ТекÑÑ‚" +); diff --git a/lib/l10n/ms_MY.php b/lib/l10n/ms_MY.php new file mode 100644 index 0000000000000000000000000000000000000000..86c7e51b4869bf17a41b9ce31b75fdf8f70c7b54 --- /dev/null +++ b/lib/l10n/ms_MY.php @@ -0,0 +1,8 @@ + "Peribadi", +"Settings" => "Tetapan", +"Users" => "Pengguna", +"Authentication error" => "Ralat pengesahan", +"Files" => "Fail-fail", +"Text" => "Teks" +); diff --git a/lib/l10n/nb_NO.php b/lib/l10n/nb_NO.php index f751a41d5eb2beeb90c879eb7491f569c124d04b..b01e09798890725a6ca7a1eb2fa90ee0edac519a 100644 --- a/lib/l10n/nb_NO.php +++ b/lib/l10n/nb_NO.php @@ -12,6 +12,9 @@ "Application is not enabled" => "Applikasjon er ikke pÃ¥slÃ¥tt", "Authentication error" => "Autentiseringsfeil", "Token expired. Please reload page." => "Symbol utløpt. Vennligst last inn siden pÃ¥ nytt.", +"Files" => "Filer", +"Text" => "Tekst", +"Images" => "Bilder", "seconds ago" => "sekunder siden", "1 minute ago" => "1 minuitt siden", "%d minutes ago" => "%d minutter siden", @@ -19,7 +22,9 @@ "yesterday" => "i gÃ¥r", "%d days ago" => "%d dager siden", "last month" => "forrige mÃ¥ned", -"months ago" => "mÃ¥neder siden", "last year" => "i fjor", -"years ago" => "Ã¥r siden" +"years ago" => "Ã¥r siden", +"%s is available. Get more information" => "%s er tilgjengelig. FÃ¥ mer informasjon", +"up to date" => "oppdatert", +"updates check is disabled" => "versjonssjekk er avslÃ¥tt" ); diff --git a/lib/l10n/nl.php b/lib/l10n/nl.php index c650071c03cfcbd3b2f38e4f4753adacf45f5c63..087cf23a6278492ab4c495efed01ab4091ed4212 100644 --- a/lib/l10n/nl.php +++ b/lib/l10n/nl.php @@ -4,7 +4,7 @@ "Settings" => "Instellingen", "Users" => "Gebruikers", "Apps" => "Apps", -"Admin" => "Administrator", +"Admin" => "Beheerder", "ZIP download is turned off." => "ZIP download is uitgeschakeld.", "Files need to be downloaded one by one." => "Bestanden moeten één voor één worden gedownload.", "Back to Files" => "Terug naar bestanden", @@ -12,17 +12,23 @@ "Application is not enabled" => "De applicatie is niet actief", "Authentication error" => "Authenticatie fout", "Token expired. Please reload page." => "Token verlopen. Herlaad de pagina.", +"Files" => "Bestanden", +"Text" => "Tekst", +"Images" => "Afbeeldingen", "seconds ago" => "seconden geleden", "1 minute ago" => "1 minuut geleden", "%d minutes ago" => "%d minuten geleden", +"1 hour ago" => "1 uur geleden", +"%d hours ago" => "%d uren geleden", "today" => "vandaag", "yesterday" => "gisteren", "%d days ago" => "%d dagen geleden", "last month" => "vorige maand", -"months ago" => "maanden geleden", +"%d months ago" => "%d maanden geleden", "last year" => "vorig jaar", "years ago" => "jaar geleden", "%s is available. Get more information" => "%s is beschikbaar. Verkrijg meer informatie", "up to date" => "bijgewerkt", -"updates check is disabled" => "Meest recente versie controle is uitgeschakeld" +"updates check is disabled" => "Meest recente versie controle is uitgeschakeld", +"Could not find category \"%s\"" => "Kon categorie \"%s\" niet vinden" ); diff --git a/lib/l10n/nn_NO.php b/lib/l10n/nn_NO.php new file mode 100644 index 0000000000000000000000000000000000000000..faf7440320a824a8baa11de80f21c02c180b06c5 --- /dev/null +++ b/lib/l10n/nn_NO.php @@ -0,0 +1,9 @@ + "Hjelp", +"Personal" => "Personleg", +"Settings" => "Innstillingar", +"Users" => "Brukarar", +"Authentication error" => "Feil i autentisering", +"Files" => "Filer", +"Text" => "Tekst" +); diff --git a/lib/l10n/oc.php b/lib/l10n/oc.php index ffc0588becc111108f2b0d661e8f436432b27737..89161393380afac47d484ff194e47619f07cea39 100644 --- a/lib/l10n/oc.php +++ b/lib/l10n/oc.php @@ -9,6 +9,7 @@ "Files need to be downloaded one by one." => "Los fichièrs devan èsser avalcargats un per un.", "Back to Files" => "Torna cap als fichièrs", "Authentication error" => "Error d'autentificacion", +"Files" => "Fichièrs", "seconds ago" => "segonda a", "1 minute ago" => "1 minuta a", "%d minutes ago" => "%d minutas a", @@ -16,7 +17,6 @@ "yesterday" => "ièr", "%d days ago" => "%d jorns a", "last month" => "mes passat", -"months ago" => "meses a", "last year" => "an passat", "years ago" => "ans a", "up to date" => "a jorn", diff --git a/lib/l10n/pl.php b/lib/l10n/pl.php index 087aaa227d30b1588049888b616d777eac10536d..6f84a328ed9580d784a10d5668a90babbd980cfd 100644 --- a/lib/l10n/pl.php +++ b/lib/l10n/pl.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Aplikacja nie jest wÅ‚Ä…czona", "Authentication error" => "BÅ‚Ä…d uwierzytelniania", "Token expired. Please reload page." => "Token wygasÅ‚. ProszÄ™ ponownie zaÅ‚adować stronÄ™.", +"Files" => "Pliki", +"Text" => "PoÅ‚Ä…czenie tekstowe", +"Images" => "Obrazy", "seconds ago" => "sekund temu", "1 minute ago" => "1 minutÄ™ temu", "%d minutes ago" => "%d minut temu", +"1 hour ago" => "1 godzine temu", +"%d hours ago" => "%d godzin temu", "today" => "dzisiaj", "yesterday" => "wczoraj", "%d days ago" => "%d dni temu", "last month" => "ostatni miesiÄ…c", -"months ago" => "miesiÄ™cy temu", +"%d months ago" => "%d miesiecy temu", "last year" => "ostatni rok", "years ago" => "lat temu", "%s is available. Get more information" => "%s jest dostÄ™pna. Uzyskaj wiÄ™cej informacji", "up to date" => "Aktualne", -"updates check is disabled" => "wybór aktualizacji jest wyÅ‚Ä…czony" +"updates check is disabled" => "wybór aktualizacji jest wyÅ‚Ä…czony", +"Could not find category \"%s\"" => "Nie można odnaleźć kategorii \"%s\"" ); diff --git a/lib/l10n/pl_PL.php b/lib/l10n/pl_PL.php new file mode 100644 index 0000000000000000000000000000000000000000..67cf0a33259224384df3bdc17b8b5eb84385d08e --- /dev/null +++ b/lib/l10n/pl_PL.php @@ -0,0 +1,3 @@ + "Ustawienia" +); diff --git a/lib/l10n/pt_BR.php b/lib/l10n/pt_BR.php index 1455eabbc94c973e89da7c6c70fa0e5e2af44e07..fb7087d35d779e765c631b3fb98bb9be013b10a9 100644 --- a/lib/l10n/pt_BR.php +++ b/lib/l10n/pt_BR.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Aplicação não está habilitada", "Authentication error" => "Erro de autenticação", "Token expired. Please reload page." => "Token expirou. Por favor recarregue a página.", +"Files" => "Arquivos", +"Text" => "Texto", +"Images" => "Imagens", "seconds ago" => "segundos atrás", "1 minute ago" => "1 minuto atrás", "%d minutes ago" => "%d minutos atrás", +"1 hour ago" => "1 hora atrás", +"%d hours ago" => "%d horas atrás", "today" => "hoje", "yesterday" => "ontem", "%d days ago" => "%d dias atrás", "last month" => "último mês", -"months ago" => "meses atrás", +"%d months ago" => "%d meses atrás", "last year" => "último ano", "years ago" => "anos atrás", "%s is available. Get more information" => "%s está disponível. Obtenha mais informações", "up to date" => "atualizado", -"updates check is disabled" => "checagens de atualização estão desativadas" +"updates check is disabled" => "checagens de atualização estão desativadas", +"Could not find category \"%s\"" => "Impossível localizar categoria \"%s\"" ); diff --git a/lib/l10n/pt_PT.php b/lib/l10n/pt_PT.php index c3cee207a16f64299ff6b790a778dd2a8e95ab2a..84867c4c37c49787e663d1bf225b42536529d84f 100644 --- a/lib/l10n/pt_PT.php +++ b/lib/l10n/pt_PT.php @@ -12,17 +12,23 @@ "Application is not enabled" => "A aplicação não está activada", "Authentication error" => "Erro na autenticação", "Token expired. Please reload page." => "O token expirou. Por favor recarregue a página.", +"Files" => "Ficheiros", +"Text" => "Texto", +"Images" => "Imagens", "seconds ago" => "há alguns segundos", "1 minute ago" => "há 1 minuto", "%d minutes ago" => "há %d minutos", +"1 hour ago" => "Há 1 horas", +"%d hours ago" => "Há %d horas", "today" => "hoje", "yesterday" => "ontem", "%d days ago" => "há %d dias", "last month" => "mês passado", -"months ago" => "há meses", +"%d months ago" => "Há %d meses atrás", "last year" => "ano passado", "years ago" => "há anos", "%s is available. Get more information" => "%s está disponível. Obtenha mais informação", "up to date" => "actualizado", -"updates check is disabled" => "a verificação de actualizações está desligada" +"updates check is disabled" => "a verificação de actualizações está desligada", +"Could not find category \"%s\"" => "Não foi encontrado a categoria \"%s\"" ); diff --git a/lib/l10n/ro.php b/lib/l10n/ro.php index 5fffeec2335923effeb57379406c59a23d5ed62d..27912550e17c07945873736c4ae8ae98a3d59392 100644 --- a/lib/l10n/ro.php +++ b/lib/l10n/ro.php @@ -12,6 +12,8 @@ "Application is not enabled" => "AplicaÈ›ia nu este activată", "Authentication error" => "Eroare la autentificare", "Token expired. Please reload page." => "Token expirat. Te rugăm să reîncarci pagina.", +"Files" => "FiÈ™iere", +"Text" => "Text", "seconds ago" => "secunde în urmă", "1 minute ago" => "1 minut în urmă", "%d minutes ago" => "%d minute în urmă", @@ -19,7 +21,6 @@ "yesterday" => "ieri", "%d days ago" => "%d zile în urmă", "last month" => "ultima lună", -"months ago" => "luni în urmă", "last year" => "ultimul an", "years ago" => "ani în urmă", "%s is available. Get more information" => "%s este disponibil. Vezi mai multe informaÈ›ii", diff --git a/lib/l10n/ru.php b/lib/l10n/ru.php index 74425f0e134c148ceb40d4fa217253913bad999e..3ed55f8e9dc5bf5690415eac2902e3b3d97977ac 100644 --- a/lib/l10n/ru.php +++ b/lib/l10n/ru.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Приложение не разрешено", "Authentication error" => "Ошибка аутентификации", "Token expired. Please reload page." => "Токен проÑрочен. Перезагрузите Ñтраницу.", +"Files" => "Файлы", +"Text" => "ТекÑÑ‚", +"Images" => "ИзображениÑ", "seconds ago" => "менее минуты", "1 minute ago" => "1 минуту назад", "%d minutes ago" => "%d минут назад", +"1 hour ago" => "Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´", +"%d hours ago" => "%d чаÑов назад", "today" => "ÑегоднÑ", "yesterday" => "вчера", "%d days ago" => "%d дней назад", "last month" => "в прошлом меÑÑце", -"months ago" => "меÑÑцы назад", +"%d months ago" => "%d меÑÑцев назад", "last year" => "в прошлом году", "years ago" => "годы назад", "%s is available. Get more information" => "Возможно обновление до %s. Подробнее", "up to date" => "Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ", -"updates check is disabled" => "проверка обновлений отключена" +"updates check is disabled" => "проверка обновлений отключена", +"Could not find category \"%s\"" => "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ \"%s\" не найдена" ); diff --git a/lib/l10n/ru_RU.php b/lib/l10n/ru_RU.php index decf63efb97ca4b0b1ff45ba64c638cd9fe2cc56..ba7d39f9eb075e4cb549c54db52e6487485dc656 100644 --- a/lib/l10n/ru_RU.php +++ b/lib/l10n/ru_RU.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Приложение не запущено", "Authentication error" => "Ошибка аутентификации", "Token expired. Please reload page." => "Маркер иÑтек. ПожалуйÑта, перезагрузите Ñтраницу.", +"Files" => "Файлы", +"Text" => "ТекÑÑ‚", +"Images" => "ИзображениÑ", "seconds ago" => "Ñекунд назад", "1 minute ago" => "1 минуту назад", "%d minutes ago" => "%d минут назад", +"1 hour ago" => "1 Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´", +"%d hours ago" => "%d чаÑов назад", "today" => "ÑегоднÑ", "yesterday" => "вчера", "%d days ago" => "%d дней назад", "last month" => "в прошлом меÑÑце", -"months ago" => "меÑÑц назад", +"%d months ago" => "%d меÑÑцев назад", "last year" => "в прошлом году", "years ago" => "год назад", "%s is available. Get more information" => "%s доÑтупно. Получите more information", "up to date" => "до наÑтоÑщего времени", -"updates check is disabled" => "Проверка обновлений отключена" +"updates check is disabled" => "Проверка обновлений отключена", +"Could not find category \"%s\"" => "Ðе удалоÑÑŒ найти категорию \"%s\"" ); diff --git a/lib/l10n/si_LK.php b/lib/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..25624acf705ca0e9b56488abfb3aa76fc5a106f0 --- /dev/null +++ b/lib/l10n/si_LK.php @@ -0,0 +1,30 @@ + "උදව්", +"Personal" => "පෞද්ගලික", +"Settings" => "සිටුවම්", +"Users" => "පරිà·à·“ලකයන්", +"Apps" => "යෙදුම්", +"Admin" => "පරිපà·à¶½à¶š", +"ZIP download is turned off." => "ZIP භà·à¶œà¶­ කිරීම් අක්â€à¶»à·’යයි", +"Files need to be downloaded one by one." => "ගොනු එකින් එක භà·à¶œà¶­ යුතුයි", +"Back to Files" => "ගොනු වෙතට නà·à·€à¶­ යන්න", +"Selected files too large to generate zip file." => "තà·à¶»à·à¶œà¶­à·Š ගොනු ZIP ගොනුවක් තà·à¶±à·“මට විà·à·à¶½ à·€à·à¶©à·’ය.", +"Application is not enabled" => "යෙදුම සක්â€à¶»à·’ය කර නොමà·à¶­", +"Authentication error" => "සත්â€à¶ºà·à¶´à¶±à¶º කිරීමේ දà·à·à¶ºà¶šà·Š", +"Token expired. Please reload page." => "ටà·à¶šà¶±à¶º කල් ඉකුත් වී ඇත. පිටුව නà·à·€à·”ම් කරන්න", +"Files" => "ගොනු", +"Text" => "පෙළ", +"Images" => "අනු රූ", +"seconds ago" => "තත්පරයන්ට පෙර", +"1 minute ago" => "1 මිනිත්තුවකට පෙර", +"%d minutes ago" => "%d මිනිත්තුවන්ට පෙර", +"today" => "අද", +"yesterday" => "ඊයේ", +"%d days ago" => "%d දිනකට පෙර", +"last month" => "පෙර මà·à·ƒà¶ºà·š", +"last year" => "පෙර අවුරුද්දේ", +"years ago" => "අවුරුදු කීපයකට පෙර", +"%s is available. Get more information" => "%s යොදà·à¶œà¶­ à·„à·à¶š. තව විස්තර ලබà·à¶œà¶±à·Šà¶±", +"up to date" => "යà·à·€à¶­à·Šà¶šà·à¶½à·“නයි", +"updates check is disabled" => "යà·à·€à¶­à·Šà¶šà·à¶½à·“න බව පරීක්ෂණය අක්â€à¶»à·’යයි" +); diff --git a/lib/l10n/sk_SK.php b/lib/l10n/sk_SK.php index 33b329c30bbf7e6ab63cf402131684969ec6e85e..98a5b5ca677d6935ebe822c8bc49ed2684390f2d 100644 --- a/lib/l10n/sk_SK.php +++ b/lib/l10n/sk_SK.php @@ -11,15 +11,24 @@ "Selected files too large to generate zip file." => "Zvolené súbory sú príliž veľké na vygenerovanie zip súboru.", "Application is not enabled" => "Aplikácia nie je zapnutá", "Authentication error" => "Chyba autentifikácie", +"Token expired. Please reload page." => "Token vyprÅ¡al. Obnovte, prosím, stránku.", +"Files" => "Súbory", +"Text" => "Text", +"Images" => "Obrázky", +"seconds ago" => "pred sekundami", "1 minute ago" => "pred 1 minútou", "%d minutes ago" => "pred %d minútami", +"1 hour ago" => "Pred 1 hodinou", +"%d hours ago" => "Pred %d hodinami.", "today" => "dnes", "yesterday" => "vÄera", "%d days ago" => "pred %d dňami", "last month" => "minulý mesiac", -"months ago" => "pred mesiacmi", +"%d months ago" => "Pred %d mesiacmi.", "last year" => "minulý rok", "years ago" => "pred rokmi", +"%s is available. Get more information" => "%s je dostupné. ZískaÅ¥ viac informácií", "up to date" => "aktuálny", -"updates check is disabled" => "sledovanie aktualizácií je vypnuté" +"updates check is disabled" => "sledovanie aktualizácií je vypnuté", +"Could not find category \"%s\"" => "Nemožno nájsÅ¥ danú kategóriu \"%s\"" ); diff --git a/lib/l10n/sl.php b/lib/l10n/sl.php index eac839e78f32fc49e197c1f2394f02f970d8351b..391d932c4ee0c916866da3fc6afab4a1580eb036 100644 --- a/lib/l10n/sl.php +++ b/lib/l10n/sl.php @@ -3,26 +3,32 @@ "Personal" => "Osebno", "Settings" => "Nastavitve", "Users" => "Uporabniki", -"Apps" => "Aplikacije", -"Admin" => "Skrbnik", -"ZIP download is turned off." => "ZIP prenos je onemogoÄen.", -"Files need to be downloaded one by one." => "Datoteke morajo biti preneÅ¡ene posamezno.", +"Apps" => "Programi", +"Admin" => "SkrbniÅ¡tvo", +"ZIP download is turned off." => "Prejem datotek ZIP je onemogoÄen.", +"Files need to be downloaded one by one." => "Datoteke je mogoÄe prejeti le posamiÄ.", "Back to Files" => "Nazaj na datoteke", -"Selected files too large to generate zip file." => "Izbrane datoteke so prevelike, da bi lahko ustvarili zip datoteko.", -"Application is not enabled" => "Aplikacija ni omogoÄena", +"Selected files too large to generate zip file." => "Izbrane datoteke so prevelike za ustvarjanje datoteke arhiva zip.", +"Application is not enabled" => "Program ni omogoÄen", "Authentication error" => "Napaka overitve", -"Token expired. Please reload page." => "Žeton je potekel. Prosimo, Äe spletno stran znova naložite.", +"Token expired. Please reload page." => "Žeton je potekel. SpletiÅ¡Äe je traba znova naložiti.", +"Files" => "Datoteke", +"Text" => "Besedilo", +"Images" => "Slike", "seconds ago" => "pred nekaj sekundami", "1 minute ago" => "pred minuto", "%d minutes ago" => "pred %d minutami", +"1 hour ago" => "Pred 1 uro", +"%d hours ago" => "Pred %d urami", "today" => "danes", "yesterday" => "vÄeraj", "%d days ago" => "pred %d dnevi", "last month" => "prejÅ¡nji mesec", -"months ago" => "pred nekaj meseci", +"%d months ago" => "Pred %d meseci", "last year" => "lani", "years ago" => "pred nekaj leti", -"%s is available. Get more information" => "%s je na voljo. VeÄ informacij.", -"up to date" => "ažuren", -"updates check is disabled" => "preverjanje za posodobitve je onemogoÄeno" +"%s is available. Get more information" => "%s je na voljo. VeÄ podrobnosti.", +"up to date" => "posodobljeno", +"updates check is disabled" => "preverjanje za posodobitve je onemogoÄeno", +"Could not find category \"%s\"" => "Kategorije \"%s\" ni bilo mogoÄe najti." ); diff --git a/lib/l10n/sr.php b/lib/l10n/sr.php new file mode 100644 index 0000000000000000000000000000000000000000..2ae7400ba79018731322bc9a939dccef8dcc9b76 --- /dev/null +++ b/lib/l10n/sr.php @@ -0,0 +1,34 @@ + "Помоћ", +"Personal" => "Лично", +"Settings" => "Подешавања", +"Users" => "КориÑници", +"Apps" => "Ðпликације", +"Admin" => "ÐдминиÑтрација", +"ZIP download is turned off." => "Преузимање ZIP-а је иÑкључено.", +"Files need to be downloaded one by one." => "Датотеке морате преузимати једну по једну.", +"Back to Files" => "Ðазад на датотеке", +"Selected files too large to generate zip file." => "Изабране датотеке Ñу превелике да биÑте направили ZIP датотеку.", +"Application is not enabled" => "Ðпликација није омогућена", +"Authentication error" => "Грешка при провери идентитета", +"Token expired. Please reload page." => "Жетон је иÑтекао. Поново учитајте Ñтраницу.", +"Files" => "Датотеке", +"Text" => "ТекÑÑ‚", +"Images" => "Слике", +"seconds ago" => "пре неколико Ñекунди", +"1 minute ago" => "пре 1 минут", +"%d minutes ago" => "пре %d минута", +"1 hour ago" => "пре 1 Ñат", +"%d hours ago" => "пре %d Ñата/и", +"today" => "данаÑ", +"yesterday" => "јуче", +"%d days ago" => "пре %d дана", +"last month" => "прошлог меÑеца", +"%d months ago" => "пре %d меÑеца/и", +"last year" => "прошле године", +"years ago" => "година раније", +"%s is available. Get more information" => "%s је доÑтупна. Погледајте више информација.", +"up to date" => "је ажурна.", +"updates check is disabled" => "провера ажурирања је онемогућена.", +"Could not find category \"%s\"" => "Ðе могу да пронађем категорију „%s“." +); diff --git a/lib/l10n/sr@latin.php b/lib/l10n/sr@latin.php new file mode 100644 index 0000000000000000000000000000000000000000..3fc1f61eafa07903031456ad2d6c2fd1a131a63d --- /dev/null +++ b/lib/l10n/sr@latin.php @@ -0,0 +1,9 @@ + "Pomoć", +"Personal" => "LiÄno", +"Settings" => "PodeÅ¡avanja", +"Users" => "Korisnici", +"Authentication error" => "GreÅ¡ka pri autentifikaciji", +"Files" => "Fajlovi", +"Text" => "Tekst" +); diff --git a/lib/l10n/sv.php b/lib/l10n/sv.php index 3d377133f2242d4885e2e4ef0c6df063449328a8..5799e2dd1a8883d594c361b1646ab1358f4c8634 100644 --- a/lib/l10n/sv.php +++ b/lib/l10n/sv.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Applikationen är inte aktiverad", "Authentication error" => "Fel vid autentisering", "Token expired. Please reload page." => "Ogiltig token. Ladda om sidan.", +"Files" => "Filer", +"Text" => "Text", +"Images" => "Bilder", "seconds ago" => "sekunder sedan", "1 minute ago" => "1 minut sedan", "%d minutes ago" => "%d minuter sedan", +"1 hour ago" => "1 timme sedan", +"%d hours ago" => "%d timmar sedan", "today" => "idag", "yesterday" => "igÃ¥r", "%d days ago" => "%d dagar sedan", "last month" => "förra mÃ¥naden", -"months ago" => "mÃ¥nader sedan", +"%d months ago" => "%d mÃ¥nader sedan", "last year" => "förra Ã¥ret", "years ago" => "Ã¥r sedan", "%s is available. Get more information" => "%s finns. FÃ¥ mer information", "up to date" => "uppdaterad", -"updates check is disabled" => "uppdateringskontroll är inaktiverad" +"updates check is disabled" => "uppdateringskontroll är inaktiverad", +"Could not find category \"%s\"" => "Kunde inte hitta kategorin \"%s\"" ); diff --git a/lib/l10n/ta_LK.php b/lib/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..c76394bcb4f9c815607d280cdab5fb4acf950229 --- /dev/null +++ b/lib/l10n/ta_LK.php @@ -0,0 +1,34 @@ + "உதவி", +"Personal" => "தனிபà¯à®ªà®Ÿà¯à®Ÿ", +"Settings" => "அமைபà¯à®ªà¯à®•à®³à¯", +"Users" => "பயனாளரà¯à®•à®³à¯", +"Apps" => "செயலிகளà¯", +"Admin" => "நிரà¯à®µà®¾à®•à®®à¯", +"ZIP download is turned off." => "வீசொலிப௠பூடà¯à®Ÿà¯ பதிவிறகà¯à®•à®®à¯ நிறà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯.", +"Files need to be downloaded one by one." => "கோபà¯à®ªà¯à®•à®³à¯à®’னà¯à®±à®©à¯ பின௠ஒனà¯à®±à®¾à®• பதிவிறகà¯à®•à®ªà¯à®ªà®Ÿà®µà¯‡à®£à¯à®Ÿà¯à®®à¯.", +"Back to Files" => "கோபà¯à®ªà¯à®•à®³à¯à®•à¯à®•à¯ செலà¯à®•", +"Selected files too large to generate zip file." => "வீ சொலிக௠கோபà¯à®ªà¯à®•à®³à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•à¯ தெரிவà¯à®šà¯†à®¯à¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯à®•à®³à¯ மிகபà¯à®ªà¯†à®°à®¿à®¯à®µà¯ˆ", +"Application is not enabled" => "செயலி இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ", +"Authentication error" => "அதà¯à®¤à®¾à®Ÿà¯à®šà®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¿à®²à¯ வழà¯", +"Token expired. Please reload page." => "அடையாளவிலà¯à®²à¯ˆ காலாவதியாகிவிடà¯à®Ÿà®¤à¯. தயவà¯à®šà¯†à®¯à¯à®¤à¯ பகà¯à®•à®¤à¯à®¤à¯ˆ மீள௠à®à®±à¯à®±à¯à®•.", +"Files" => "கோபà¯à®ªà¯à®•à®³à¯", +"Text" => "உரை", +"Images" => "படஙà¯à®•à®³à¯", +"seconds ago" => "செகà¯à®•à®©à¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯", +"1 minute ago" => "1 நிமிடதà¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯ ", +"%d minutes ago" => "%d நிமிடஙà¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯", +"1 hour ago" => "1 மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯", +"%d hours ago" => "%d மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯", +"today" => "இனà¯à®±à¯", +"yesterday" => "நேறà¯à®±à¯", +"%d days ago" => "%d நாடà¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯", +"last month" => "கடநà¯à®¤ மாதமà¯", +"%d months ago" => "%d மாததà¯à®¤à®¿à®±à¯à®•à¯ à®®à¯à®©à¯", +"last year" => "கடநà¯à®¤ வரà¯à®Ÿà®®à¯", +"years ago" => "வரà¯à®Ÿà®™à¯à®•à®³à¯à®•à¯à®•à¯ à®®à¯à®©à¯", +"%s is available. Get more information" => "%s இனà¯à®©à¯à®®à¯ இரà¯à®•à¯à®•à®¿à®©à¯à®±à®©. மேலதிக தகவலà¯à®•à®³à¯à®•à¯à®•à¯ எடà¯à®•à¯à®•", +"up to date" => "நவீன", +"updates check is disabled" => "இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ˆ சரிபாரà¯à®ªà¯à®ªà®¤à¯ˆ செயலறà¯à®±à®¤à®¾à®•à¯à®•à¯à®•", +"Could not find category \"%s\"" => "பிரிவ௠\"%s\" ஠கணà¯à®Ÿà¯à®ªà¯à®ªà®¿à®Ÿà®¿à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" +); diff --git a/lib/l10n/th_TH.php b/lib/l10n/th_TH.php index 2aa2ffaba8cec81bfa64da005cad4159e5d3dbe7..75fa02f84b09ead9ff09ca63fc657278723fc895 100644 --- a/lib/l10n/th_TH.php +++ b/lib/l10n/th_TH.php @@ -12,17 +12,23 @@ "Application is not enabled" => "à¹à¸­à¸žà¸žà¸¥à¸´à¹€à¸„ชั่นดังà¸à¸¥à¹ˆà¸²à¸§à¸¢à¸±à¸‡à¹„ม่ได้เปิดใช้งาน", "Authentication error" => "เà¸à¸´à¸”ข้อผิดพลาดในสิทธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน", "Token expired. Please reload page." => "รหัสยืนยันความถูà¸à¸•à¹‰à¸­à¸‡à¸«à¸¡à¸”อายุà¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าโหลดหน้าเว็บใหม่อีà¸à¸„รั้ง", +"Files" => "ไฟล์", +"Text" => "ข้อความ", +"Images" => "รูปภาพ", "seconds ago" => "วินาทีที่ผ่านมา", "1 minute ago" => "1 นาทีมาà¹à¸¥à¹‰à¸§", "%d minutes ago" => "%d นาทีที่ผ่านมา", +"1 hour ago" => "1 ชั่วโมงà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰", +"%d hours ago" => "%d ชั่วโมงà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰", "today" => "วันนี้", "yesterday" => "เมื่อวานนี้", "%d days ago" => "%d วันที่ผ่านมา", "last month" => "เดือนที่à¹à¸¥à¹‰à¸§", -"months ago" => "เดือนมาà¹à¸¥à¹‰à¸§", +"%d months ago" => "%d เดือนมาà¹à¸¥à¹‰à¸§", "last year" => "ปีที่à¹à¸¥à¹‰à¸§", "years ago" => "ปีที่ผ่านมา", "%s is available. Get more information" => "%s พร้อมให้ใช้งานได้à¹à¸¥à¹‰à¸§. ดูรายละเอียดเพิ่มเติม", "up to date" => "ทันสมัย", -"updates check is disabled" => "à¸à¸²à¸£à¸•à¸£à¸§à¸ˆà¸ªà¸­à¸šà¸Šà¸¸à¸”อัพเดทถูà¸à¸›à¸´à¸”ใช้งานไว้" +"updates check is disabled" => "à¸à¸²à¸£à¸•à¸£à¸§à¸ˆà¸ªà¸­à¸šà¸Šà¸¸à¸”อัพเดทถูà¸à¸›à¸´à¸”ใช้งานไว้", +"Could not find category \"%s\"" => "ไม่พบหมวดหมู่ \"%s\"" ); diff --git a/lib/l10n/tr.php b/lib/l10n/tr.php new file mode 100644 index 0000000000000000000000000000000000000000..69067d7ec57b05260099679bc765eb8504c0a1d2 --- /dev/null +++ b/lib/l10n/tr.php @@ -0,0 +1,9 @@ + "Yardı", +"Personal" => "KiÅŸisel", +"Settings" => "Ayarlar", +"Users" => "Kullanıcılar", +"Authentication error" => "Kimlik doÄŸrulama hatası", +"Files" => "Dosyalar", +"Text" => "Metin" +); diff --git a/lib/l10n/uk.php b/lib/l10n/uk.php index 423aa12b2d736f277015121226fb19fb2de6c961..f5d52f8682dd464c6b9fcf4348cabd041db09997 100644 --- a/lib/l10n/uk.php +++ b/lib/l10n/uk.php @@ -11,15 +11,24 @@ "Selected files too large to generate zip file." => "Вибрані фали завеликі Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ zip файлу.", "Application is not enabled" => "Додаток не увімкнений", "Authentication error" => "Помилка автентифікації", +"Token expired. Please reload page." => "Строк дії токена ÑкінчивÑÑ. Будь лаÑка, перезавантажте Ñторінку.", +"Files" => "Файли", +"Text" => "ТекÑÑ‚", +"Images" => "ЗображеннÑ", "seconds ago" => "Ñекунди тому", "1 minute ago" => "1 хвилину тому", "%d minutes ago" => "%d хвилин тому", +"1 hour ago" => "1 годину тому", +"%d hours ago" => "%d годин тому", "today" => "Ñьогодні", "yesterday" => "вчора", "%d days ago" => "%d днів тому", "last month" => "минулого міÑÑцÑ", -"months ago" => "міÑÑці тому", +"%d months ago" => "%d міÑÑців тому", "last year" => "минулого року", "years ago" => "роки тому", -"updates check is disabled" => "перевірка оновлень відключена" +"%s is available. Get more information" => "%s доÑтупно. Отримати детальну інформацію", +"up to date" => "оновлено", +"updates check is disabled" => "перевірка оновлень відключена", +"Could not find category \"%s\"" => "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ категорію \"%s\"" ); diff --git a/lib/l10n/vi.php b/lib/l10n/vi.php index fc41d69819ae89134e45100029cee8a5c5f1a50e..8b7242ae6111cda61f8394d8d3a4272b1fd256c7 100644 --- a/lib/l10n/vi.php +++ b/lib/l10n/vi.php @@ -12,17 +12,23 @@ "Application is not enabled" => "Ứng dụng không được BẬT", "Authentication error" => "Lá»—i xác thá»±c", "Token expired. Please reload page." => "Mã Token đã hết hạn. Hãy tải lại trang.", +"Files" => "Các tập tin", +"Text" => "Văn bản", +"Images" => "Hình ảnh", "seconds ago" => "1 giây trÆ°á»›c", "1 minute ago" => "1 phút trÆ°á»›c", "%d minutes ago" => "%d phút trÆ°á»›c", +"1 hour ago" => "1 giá» trÆ°á»›c", +"%d hours ago" => "%d giá» trÆ°á»›c", "today" => "hôm nay", "yesterday" => "hôm qua", "%d days ago" => "%d ngày trÆ°á»›c", "last month" => "tháng trÆ°á»›c", -"months ago" => "tháng trÆ°á»›c", +"%d months ago" => "%d tháng trÆ°á»›c", "last year" => "năm trÆ°á»›c", "years ago" => "năm trÆ°á»›c", "%s is available. Get more information" => "%s có sẵn. xem thêm ở đây", "up to date" => "đến ngày", -"updates check is disabled" => "đã TÄ‚T chức năng cập nhật " +"updates check is disabled" => "đã TÄ‚T chức năng cập nhật ", +"Could not find category \"%s\"" => "không thể tìm thấy mục \"%s\"" ); diff --git a/lib/l10n/zh_CN.GB2312.php b/lib/l10n/zh_CN.GB2312.php index 4b0a5e9f4d2a59597a728f1ab3a4ae31e3f1303b..08975e44598b5e2a8884aa7e2dcd9fb3879b60a9 100644 --- a/lib/l10n/zh_CN.GB2312.php +++ b/lib/l10n/zh_CN.GB2312.php @@ -12,6 +12,9 @@ "Application is not enabled" => "应用未å¯ç”¨", "Authentication error" => "验è¯é”™è¯¯", "Token expired. Please reload page." => "会è¯è¿‡æœŸã€‚请刷新页é¢ã€‚", +"Files" => "文件", +"Text" => "文本", +"Images" => "图片", "seconds ago" => "秒å‰", "1 minute ago" => "1 分钟å‰", "%d minutes ago" => "%d 分钟å‰", @@ -19,7 +22,6 @@ "yesterday" => "昨天", "%d days ago" => "%d 天å‰", "last month" => "上个月", -"months ago" => "月å‰", "last year" => "去年", "years ago" => "å¹´å‰", "%s is available. Get more information" => "%s ä¸å¯ç”¨ã€‚获知 详情", diff --git a/lib/l10n/zh_CN.php b/lib/l10n/zh_CN.php index 8229c77d2dd096e1bbbf9d1ab2c3f1ce72a59d55..c3af288b7270559c5fe4ff2b752b15a28be6f03f 100644 --- a/lib/l10n/zh_CN.php +++ b/lib/l10n/zh_CN.php @@ -12,17 +12,23 @@ "Application is not enabled" => "ä¸éœ€è¦ç¨‹åº", "Authentication error" => "认è¯é”™è¯¯", "Token expired. Please reload page." => "Token 过期,请刷新页é¢ã€‚", +"Files" => "文件", +"Text" => "文本", +"Images" => "图åƒ", "seconds ago" => "几秒å‰", "1 minute ago" => "1分钟å‰", "%d minutes ago" => "%d 分钟å‰", +"1 hour ago" => "1å°æ—¶å‰", +"%d hours ago" => "%då°æ—¶å‰", "today" => "今天", "yesterday" => "昨天", "%d days ago" => "%d 天å‰", "last month" => "上月", -"months ago" => "几月å‰", +"%d months ago" => "%d 月å‰", "last year" => "上年", "years ago" => "几年å‰", "%s is available. Get more information" => "%s 已存在. 点此 获å–更多信æ¯", "up to date" => "已更新。", -"updates check is disabled" => "检查更新功能被关闭。" +"updates check is disabled" => "检查更新功能被关闭。", +"Could not find category \"%s\"" => "无法找到分类 \"%s\"" ); diff --git a/lib/l10n/zh_TW.php b/lib/l10n/zh_TW.php index c9a26a53b2a71e30e559b4ee144e6ae07e3ad3a9..4dbf89c2e0e0a9fc0d9e44a4bf5c3d7eb9efcad9 100644 --- a/lib/l10n/zh_TW.php +++ b/lib/l10n/zh_TW.php @@ -12,17 +12,23 @@ "Application is not enabled" => "應用程å¼æœªå•Ÿç”¨", "Authentication error" => "èªè­‰éŒ¯èª¤", "Token expired. Please reload page." => "Token éŽæœŸ. è«‹é‡æ–°æ•´ç†é é¢", +"Files" => "檔案", +"Text" => "文字", +"Images" => "圖片", "seconds ago" => "幾秒å‰", "1 minute ago" => "1 分é˜å‰", "%d minutes ago" => "%d 分é˜å‰", +"1 hour ago" => "1å°æ™‚之å‰", +"%d hours ago" => "%då°æ™‚之å‰", "today" => "今天", "yesterday" => "昨天", "%d days ago" => "%d 天å‰", "last month" => "上個月", -"months ago" => "幾個月å‰", +"%d months ago" => "%d個月之å‰", "last year" => "去年", "years ago" => "幾年å‰", "%s is available. Get more information" => "%s 已經å¯ç”¨. å–å¾— 更多資訊", "up to date" => "最新的", -"updates check is disabled" => "檢查更新已åœç”¨" +"updates check is disabled" => "檢查更新已åœç”¨", +"Could not find category \"%s\"" => "找ä¸åˆ°åˆ†é¡ž-\"%s\"" ); diff --git a/lib/log.php b/lib/log.php index 6de99b4ea6bd07977e4f1b8e4de2a13eb1643cac..e9cededa5c091587d45266d34689cb7c17d9e994 100644 --- a/lib/log.php +++ b/lib/log.php @@ -39,4 +39,29 @@ class OC_Log { $log_class::write($app, $message, $level); } } + + //Fatal errors handler + public static function onShutdown() { + $error = error_get_last(); + if($error) { + //ob_end_clean(); + self::write('PHP', $error['message'] . ' at ' . $error['file'] . '#' . $error['line'], self::FATAL); + } else { + return true; + } + } + + // Uncaught exception handler + public static function onException($exception) { + self::write('PHP', $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(), self::FATAL); + } + + //Recoverable errors handler + public static function onError($number, $message, $file, $line) { + if (error_reporting() === 0) { + return; + } + self::write('PHP', $message . ' at ' . $file . '#' . $line, self::WARN); + + } } diff --git a/lib/log/owncloud.php b/lib/log/owncloud.php index d4644163ad56e70b64d6ac5b80b90eb677ed1bb2..ec43208d833459d9467c6f8ab3e16251c00d9089 100644 --- a/lib/log/owncloud.php +++ b/lib/log/owncloud.php @@ -44,9 +44,9 @@ class OC_Log_Owncloud { * @param int level */ public static function write($app, $message, $level) { - $minLevel=min(OC_Config::getValue( "loglevel", OC_Log::WARN ),OC_Log::ERROR); + $minLevel=min(OC_Config::getValue( "loglevel", OC_Log::WARN ), OC_Log::ERROR); if($level>=$minLevel) { - $entry=array('app'=>$app, 'message'=>$message, 'level'=>$level,'time'=>time()); + $entry=array('app'=>$app, 'message'=>$message, 'level'=>$level, 'time'=>time()); $fh=fopen(self::$logFile, 'a'); fwrite($fh, json_encode($entry)."\n"); fclose($fh); diff --git a/lib/mail.php b/lib/mail.php index 8d30fff9f28248e827fc357edc3a876b0e6eb35b..c78fcce88d4f604f43998278602540075ce04abb 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -27,7 +27,7 @@ class OC_Mail { * @param string $fromname * @param bool $html */ - public static function send($toaddress,$toname,$subject,$mailtext,$fromaddress,$fromname,$html=0,$altbody='',$ccaddress='',$ccname='',$bcc='') { + public static function send($toaddress,$toname,$subject,$mailtext,$fromaddress,$fromname,$html=0,$altbody='',$ccaddress='',$ccname='', $bcc='') { $SMTPMODE = OC_Config::getValue( 'mail_smtpmode', 'sendmail' ); $SMTPHOST = OC_Config::getValue( 'mail_smtphost', '127.0.0.1' ); @@ -56,13 +56,13 @@ class OC_Mail { $mailo->From =$fromaddress; $mailo->FromName = $fromname;; $mailo->Sender =$fromaddress; - $a=explode(' ',$toaddress); + $a=explode(' ', $toaddress); try { foreach($a as $ad) { - $mailo->AddAddress($ad,$toname); + $mailo->AddAddress($ad, $toname); } - if($ccaddress<>'') $mailo->AddCC($ccaddress,$ccname); + if($ccaddress<>'') $mailo->AddCC($ccaddress, $ccname); if($bcc<>'') $mailo->AddBCC($bcc); $mailo->AddReplyTo($fromaddress, $fromname); diff --git a/lib/migrate.php b/lib/migrate.php index 611a935ee5d9be9137ee02094db361034041b08b..2cc0a3067b8c472e1783624cc8dbb902787ae157 100644 --- a/lib/migrate.php +++ b/lib/migrate.php @@ -66,7 +66,7 @@ class OC_Migrate{ foreach($apps as $app) { $path = OC_App::getAppPath($app) . '/appinfo/migrate.php'; if( file_exists( $path ) ) { - include( $path ); + include $path; } } } @@ -91,7 +91,7 @@ class OC_Migrate{ if( self::$exporttype == 'user' ) { // Check user exists self::$uid = is_null($uid) ? OC_User::getUser() : $uid; - if(!OC_User::userExists(self::$uid)){ + if(!OC_User::userExists(self::$uid)) { return json_encode( array( 'success' => false) ); } } @@ -200,7 +200,7 @@ class OC_Migrate{ $scan = scandir( $extractpath ); // Check for export_info.json if( !in_array( 'export_info.json', $scan ) ) { - OC_Log::write( 'migration', 'Invalid import file, export_info.json note found', OC_Log::ERROR ); + OC_Log::write( 'migration', 'Invalid import file, export_info.json not found', OC_Log::ERROR ); return json_encode( array( 'success' => false ) ); } $json = json_decode( file_get_contents( $extractpath . 'export_info.json' ) ); @@ -235,12 +235,19 @@ class OC_Migrate{ return json_encode( array( 'success' => false ) ); } // Copy data - if( !self::copy_r( $extractpath . $json->exporteduser, $datadir . '/' . self::$uid ) ) { - return json_encode( array( 'success' => false ) ); + $userfolder = $extractpath . $json->exporteduser; + $newuserfolder = $datadir . '/' . self::$uid; + foreach(scandir($userfolder) as $file){ + if($file !== '.' && $file !== '..' && is_dir($file)) { + // Then copy the folder over + OC_Helper::copyr($userfolder.'/'.$file, $newuserfolder.'/'.$file); + } } // Import user app data - if( !$appsimported = self::importAppData( $extractpath . $json->exporteduser . '/migration.db', $json, self::$uid ) ) { - return json_encode( array( 'success' => false ) ); + if(file_exists($extractpath . $json->exporteduser . '/migration.db')) { + if( !$appsimported = self::importAppData( $extractpath . $json->exporteduser . '/migration.db', $json, self::$uid ) ) { + return json_encode( array( 'success' => false ) ); + } } // All done! if( !self::unlink_r( $extractpath ) ) { @@ -304,37 +311,6 @@ class OC_Migrate{ return true; } - /** - * @brief copies recursively - * @param $path string path to source folder - * @param $dest string path to destination - * @return bool - */ - private static function copy_r( $path, $dest ) { - if( is_dir($path) ) { - @mkdir( $dest ); - $objects = scandir( $path ); - if( sizeof( $objects ) > 0 ) { - foreach( $objects as $file ) { - if( $file == "." || $file == ".." || $file == ".htaccess") - continue; - // go on - if( is_dir( $path . '/' . $file ) ) { - self::copy_r( $path .'/' . $file, $dest . '/' . $file ); - } else { - copy( $path . '/' . $file, $dest . '/' . $file ); - } - } - } - return true; - } - elseif( is_file( $path ) ) { - return copy( $path, $dest ); - } else { - return false; - } - } - /** * @brief tries to extract the import zip * @param $path string path to the zip @@ -347,7 +323,7 @@ class OC_Migrate{ OC_Log::write( 'migration', 'Zip not found', OC_Log::ERROR ); return false; } - if ( self::$zip->open( $path ) != TRUE ) { + if ( self::$zip->open( $path ) != true ) { OC_Log::write( 'migration', "Failed to open zip file", OC_Log::ERROR ); return false; } @@ -576,7 +552,7 @@ class OC_Migrate{ OC_Log::write('migration', 'createZip() called but $zip and/or $zippath have not been set', OC_Log::ERROR); return false; } - if ( self::$zip->open( self::$zippath, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE ) !== TRUE ) { + if ( self::$zip->open( self::$zippath, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE ) !== true ) { OC_Log::write('migration', 'Failed to create the zip with error: '.self::$zip->getStatusString(), OC_Log::ERROR); return false; } else { @@ -611,11 +587,11 @@ class OC_Migrate{ if( file_exists( $db ) ) { // Connect to the db if(!self::connectDB( $db )) { - OC_Log::write('migration','Failed to connect to migration.db',OC_Log::ERROR); + OC_Log::write('migration', 'Failed to connect to migration.db', OC_Log::ERROR); return false; } } else { - OC_Log::write('migration','Migration.db not found at: '.$db, OC_Log::FATAL ); + OC_Log::write('migration', 'Migration.db not found at: '.$db, OC_Log::FATAL ); return false; } diff --git a/lib/migration/content.php b/lib/migration/content.php index 89b1e782d86a8ee94affb55285daf1d00341151c..00df62f0c7fafada2f669c10b64eaa8cdae2b000 100644 --- a/lib/migration/content.php +++ b/lib/migration/content.php @@ -48,16 +48,16 @@ class OC_Migration_Content{ // @brief prepares the db // @param $query the sql query to prepare public function prepare( $query ) { - + // Only add database to tmpfiles if actually used if( !is_null( $this->db ) ) { // Get db path $db = $this->db->getDatabase(); - if(!in_array($db, $this->tmpfiles)){ + if(!in_array($db, $this->tmpfiles)) { $this->tmpfiles[] = $db; } } - + // Optimize the query $query = $this->processQuery( $query ); @@ -152,7 +152,7 @@ class OC_Migration_Content{ $sql = "INSERT INTO `" . $options['table'] . '` ( `'; $fieldssql = implode( '`, `', $fields ); $sql .= $fieldssql . "` ) VALUES( "; - $valuessql = substr( str_repeat( '?, ', count( $fields ) ),0,-2 ); + $valuessql = substr( str_repeat( '?, ', count( $fields ) ), 0, -2 ); $sql .= $valuessql . " )"; // Make the query $query = $this->prepare( $sql ); @@ -205,7 +205,7 @@ class OC_Migration_Content{ } closedir($dirhandle); } else { - OC_Log::write('admin_export',"Was not able to open directory: " . $dir,OC_Log::ERROR); + OC_Log::write('admin_export', "Was not able to open directory: " . $dir, OC_Log::ERROR); return false; } return true; diff --git a/lib/minimizer.php b/lib/minimizer.php index d50ab0d239727dd0bede72ce278f3b6f91c31130..db522de74dc162ebf01b86c682b4b552b746c618 100644 --- a/lib/minimizer.php +++ b/lib/minimizer.php @@ -2,14 +2,11 @@ abstract class OC_Minimizer { public function generateETag($files) { - $etag = ''; - sort($files); + $fullpath_files = array(); foreach($files as $file_info) { - $file = $file_info[0] . '/' . $file_info[2]; - $stat = stat($file); - $etag .= $file.$stat['mtime'].$stat['size']; + $fullpath_files[] = $file_info[0] . '/' . $file_info[2]; } - return md5($etag); + return OC_Cache::generateCacheKeyFromFiles($fullpath_files); } abstract public function minimizeFiles($files); @@ -33,6 +30,12 @@ abstract class OC_Minimizer { $cache->set($cache_key.'.gz', $gzout); OC_Response::setETagHeader($etag); } + // on some systems (e.g. SLES 11, but not Ubuntu) mod_deflate and zlib compression will compress the output twice. + // This results in broken core.css and core.js. To avoid it, we switch off zlib compression. + // Since mod_deflate is still active, Apache will compress what needs to be compressed, i.e. no disadvantage. + if(function_exists('apache_get_modules') && ini_get('zlib.output_compression') && in_array('mod_deflate', apache_get_modules())) { + ini_set('zlib.output_compression', 'Off'); + } if ($encoding = OC_Request::acceptGZip()) { header('Content-Encoding: '.$encoding); $out = $gzout; @@ -51,11 +54,11 @@ abstract class OC_Minimizer { } if (!function_exists('gzdecode')) { - function gzdecode($data,$maxlength=null,&$filename='',&$error='') + function gzdecode($data, $maxlength=null, &$filename='', &$error='') { - if (strcmp(substr($data,0,9),"\x1f\x8b\x8\0\0\0\0\0\0")) { + if (strcmp(substr($data, 0, 9),"\x1f\x8b\x8\0\0\0\0\0\0")) { return null; // Not the GZIP format we expect (See RFC 1952) } - return gzinflate(substr($data,10,-8)); + return gzinflate(substr($data, 10, -8)); } } diff --git a/lib/ocs.php b/lib/ocs.php index 7350c3c88218cb63350c5b4d7293de6082776688..1a0abf0e367173576eee93afaa0bb935752608e1 100644 --- a/lib/ocs.php +++ b/lib/ocs.php @@ -23,7 +23,8 @@ * */ - +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; /** * Class to handle open collaboration services API requests @@ -92,91 +93,144 @@ class OC_OCS { exit(); } - // preprocess url - $url = strtolower($_SERVER['REQUEST_URI']); - if(substr($url, (strlen($url)-1))<>'/') $url.='/'; - $ex=explode('/', $url); - $paracount=count($ex); $format = self::readData($method, 'format', 'text', ''); - // eventhandler + $router = new OC_Router(); + $router->useCollection('root'); // CONFIG - // apiconfig - GET - CONFIG - if(($method=='get') and ($ex[$paracount-3] == 'v1.php') and ($ex[$paracount-2] == 'config')) { - OC_OCS::apiconfig($format); + $router->create('config', '/config.{format}') + ->defaults(array('format' => $format)) + ->action('OC_OCS', 'apiConfig') + ->requirements(array('format'=>'xml|json')); // PERSON - // personcheck - POST - PERSON/CHECK - } elseif(($method=='post') and ($ex[$paracount-4] == 'v1.php') and ($ex[$paracount-3]=='person') and ($ex[$paracount-2] == 'check')) { - $login = self::readData($method, 'login', 'text'); - $passwd = self::readData($method, 'password', 'text'); - OC_OCS::personcheck($format, $login, $passwd); + $router->create('person_check', '/person/check.{format}') + ->post() + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $login = OC_OCS::readData('post', 'login', 'text'); + $passwd = OC_OCS::readData('post', 'password', 'text'); + OC_OCS::personCheck($format, $login, $passwd); + }) + ->requirements(array('format'=>'xml|json')); // ACTIVITY // activityget - GET ACTIVITY page,pagesize als urlparameter - }elseif(($method=='get') and ($ex[$paracount-3] == 'v1.php') and ($ex[$paracount-2] == 'activity')) { - $page = self::readData($method, 'page', 'int', 0); - $pagesize = self::readData($method, 'pagesize', 'int', 10); - if($pagesize<1 or $pagesize>100) $pagesize=10; - OC_OCS::activityget($format, $page, $pagesize); - + $router->create('activity_get', '/activity.{format}') + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $page = OC_OCS::readData('get', 'page', 'int', 0); + $pagesize = OC_OCS::readData('get', 'pagesize', 'int', 10); + if($pagesize<1 or $pagesize>100) $pagesize=10; + OC_OCS::activityGet($format, $page, $pagesize); + }) + ->requirements(array('format'=>'xml|json')); // activityput - POST ACTIVITY - }elseif(($method=='post') and ($ex[$paracount-3] == 'v1.php') and ($ex[$paracount-2] == 'activity')) { - $message = self::readData($method, 'message', 'text'); - OC_OCS::activityput($format, $message); - + $router->create('activity_put', '/activity.{format}') + ->post() + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $message = OC_OCS::readData('post', 'message', 'text'); + OC_OCS::activityPut($format, $message); + }) + ->requirements(array('format'=>'xml|json')); // PRIVATEDATA // get - GET DATA - }elseif(($method=='get') and ($ex[$paracount-4] == 'v1.php') and ($ex[$paracount-2] == 'getattribute')) { - OC_OCS::privateDataGet($format); - - }elseif(($method=='get') and ($ex[$paracount-5] == 'v1.php') and ($ex[$paracount-3] == 'getattribute')) { - $app=$ex[$paracount-2]; - OC_OCS::privateDataGet($format, $app); - }elseif(($method=='get') and ($ex[$paracount-6] == 'v1.php') and ($ex[$paracount-4] == 'getattribute')) { - - $key=$ex[$paracount-2]; - $app=$ex[$paracount-3]; - OC_OCS::privateDataGet($format, $app, $key); - + $router->create('privatedata_get', + '/privatedata/getattribute/{app}/{key}.{format}') + ->defaults(array('app' => '', 'key' => '', 'format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $app = addslashes(strip_tags($parameters['app'])); + $key = addslashes(strip_tags($parameters['key'])); + OC_OCS::privateDataGet($format, $app, $key); + }) + ->requirements(array('format'=>'xml|json')); // set - POST DATA - }elseif(($method=='post') and ($ex[$paracount-6] == 'v1.php') and ($ex[$paracount-4] == 'setattribute')) { - $key=$ex[$paracount-2]; - $app=$ex[$paracount-3]; - $value = self::readData($method, 'value', 'text'); - OC_OCS::privatedataset($format, $app, $key, $value); + $router->create('privatedata_set', + '/privatedata/setattribute/{app}/{key}.{format}') + ->post() + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $app = addslashes(strip_tags($parameters['app'])); + $key = addslashes(strip_tags($parameters['key'])); + $value=OC_OCS::readData('post', 'value', 'text'); + OC_OCS::privateDataSet($format, $app, $key, $value); + }) + ->requirements(array('format'=>'xml|json')); // delete - POST DATA - }elseif(($method=='post') and ($ex[$paracount-6] =='v1.php') and ($ex[$paracount-4] == 'deleteattribute')) { - $key=$ex[$paracount-2]; - $app=$ex[$paracount-3]; - OC_OCS::privatedatadelete($format, $app, $key); + $router->create('privatedata_delete', + '/privatedata/deleteattribute/{app}/{key}.{format}') + ->post() + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $app = addslashes(strip_tags($parameters['app'])); + $key = addslashes(strip_tags($parameters['key'])); + OC_OCS::privateDataDelete($format, $app, $key); + }) + ->requirements(array('format'=>'xml|json')); // CLOUD // systemWebApps - }elseif(($method=='get') and ($ex[$paracount-5] == 'v1.php') and ($ex[$paracount-4]=='cloud') and ($ex[$paracount-3] == 'system') and ($ex[$paracount-2] == 'webapps')) { - OC_OCS::systemwebapps($format); + $router->create('system_webapps', + '/cloud/system/webapps.{format}') + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + OC_OCS::systemwebapps($format); + }) + ->requirements(array('format'=>'xml|json')); // quotaget - }elseif(($method=='get') and ($ex[$paracount-6] == 'v1.php') and ($ex[$paracount-5]=='cloud') and ($ex[$paracount-4] == 'user') and ($ex[$paracount-2] == 'quota')) { - $user=$ex[$paracount-3]; - OC_OCS::quotaget($format, $user); - + $router->create('quota_get', + '/cloud/user/{user}.{format}') + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $user = $parameters['user']; + OC_OCS::quotaGet($format, $user); + }) + ->requirements(array('format'=>'xml|json')); // quotaset - }elseif(($method=='post') and ($ex[$paracount-6] == 'v1.php') and ($ex[$paracount-5]=='cloud') and ($ex[$paracount-4] == 'user') and ($ex[$paracount-2] == 'quota')) { - $user=$ex[$paracount-3]; - $quota = self::readData('post', 'quota', 'int'); - OC_OCS::quotaset($format, $user, $quota); + $router->create('quota_set', + '/cloud/user/{user}.{format}') + ->post() + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $user = $parameters['user']; + $quota = self::readData('post', 'quota', 'int'); + OC_OCS::quotaSet($format, $user, $quota); + }) + ->requirements(array('format'=>'xml|json')); // keygetpublic - }elseif(($method=='get') and ($ex[$paracount-6] == 'v1.php') and ($ex[$paracount-5]=='cloud') and ($ex[$paracount-4] == 'user') and ($ex[$paracount-2] == 'publickey')) { - $user=$ex[$paracount-3]; - OC_OCS::publicKeyGet($format, $user); + $router->create('keygetpublic', + '/cloud/user/{user}/publickey.{format}') + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $user = $parameters['user']; + OC_OCS::publicKeyGet($format, $user); + }) + ->requirements(array('format'=>'xml|json')); // keygetprivate - }elseif(($method=='get') and ($ex[$paracount-6] == 'v1.php') and ($ex[$paracount-5]=='cloud') and ($ex[$paracount-4] == 'user') and ($ex[$paracount-2] == 'privatekey')) { - $user=$ex[$paracount-3]; - OC_OCS::privateKeyGet($format, $user); + $router->create('keygetpublic', + '/cloud/user/{user}/privatekey.{format}') + ->defaults(array('format' => $format)) + ->action(function ($parameters) { + $format = $parameters['format']; + $user = $parameters['user']; + OC_OCS::privateKeyGet($format, $user); + }) + ->requirements(array('format'=>'xml|json')); // add more calls here @@ -190,13 +244,17 @@ class OC_OCS { // sharing // versioning // news (rss) - - - - }else{ - $txt='Invalid query, please check the syntax. API specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services. DEBUG OUTPUT:'."\n"; + try { + $router->match($_SERVER['PATH_INFO']); + } catch (ResourceNotFoundException $e) { + $txt='Invalid query, please check the syntax. ' + .'API specifications are here: ' + .'http://www.freedesktop.org/wiki/Specifications/open-collaboration-services.' + .'DEBUG OUTPUT:'."\n"; $txt.=OC_OCS::getdebugoutput(); echo(OC_OCS::generatexml($format, 'failed', 999, $txt)); + } catch (MethodNotAllowedException $e) { + OC_Response::setStatus(405); } exit(); } @@ -268,7 +326,7 @@ class OC_OCS { * @param int $itemsperpage * @return string xml/json */ - private static function generateXml($format,$status,$statuscode,$message,$data=array(),$tag='',$tagattribute='',$dimension=-1,$itemscount='',$itemsperpage='') { + private static function generateXml($format, $status, $statuscode, $message, $data=array(), $tag='', $tagattribute='', $dimension=-1, $itemscount='', $itemsperpage='') { if($format=='json') { $json=array(); $json['status']=$status; @@ -288,7 +346,7 @@ class OC_OCS { xmlwriter_write_element($writer, 'status', $status); xmlwriter_write_element($writer, 'statuscode', $statuscode); xmlwriter_write_element($writer, 'message', $message); - if($itemscount<>'') xmlwriter_write_element($writer,'totalitems',$itemscount); + if($itemscount<>'') xmlwriter_write_element($writer, 'totalitems', $itemscount); if(!empty($itemsperpage)) xmlwriter_write_element($writer, 'itemsperpage', $itemsperpage); xmlwriter_end_element($writer); if($dimension=='0') { @@ -303,7 +361,7 @@ class OC_OCS { xmlwriter_end_element($writer); }elseif($dimension=='2') { - xmlwriter_start_element($writer,'data'); + xmlwriter_start_element($writer, 'data'); foreach($data as $entry) { xmlwriter_start_element($writer, $tag); if(!empty($tagattribute)) { @@ -358,14 +416,14 @@ class OC_OCS { } } - public static function toXml($writer,$data,$node) { + public static function toXml($writer, $data, $node) { foreach($data as $key => $value) { if (is_numeric($key)) { $key = $node; } if (is_array($value)) { xmlwriter_start_element($writer, $key); - OC_OCS::toxml($writer,$value, $node); + OC_OCS::toxml($writer, $value, $node); xmlwriter_end_element($writer); }else{ xmlwriter_write_element($writer, $key, $value); @@ -378,7 +436,8 @@ class OC_OCS { * @param string $format * @return string xml/json */ - private static function apiConfig($format) { + public static function apiConfig($parameters) { + $format = $parameters['format']; $user=OC_OCS::checkpassword(false); $url=substr(OCP\Util::getServerHost().$_SERVER['SCRIPT_NAME'], 0, -11).''; @@ -397,7 +456,7 @@ class OC_OCS { * @param string $passwd * @return string xml/json */ - private static function personCheck($format,$login,$passwd) { + private static function personCheck($format, $login, $passwd) { if($login<>'') { if(OC_User::login($login, $passwd)) { $xml['person']['personid']=$login; @@ -424,7 +483,7 @@ class OC_OCS { //TODO - $txt=OC_OCS::generatexml($format, 'ok', 100, '', $xml, 'activity', 'full', 2, $totalcount,$pagesize); + $txt=OC_OCS::generatexml($format, 'ok', 100, '', $xml, 'activity', 'full', 2, $totalcount, $pagesize); echo($txt); } @@ -434,7 +493,7 @@ class OC_OCS { * @param string $message * @return string xml/json */ - private static function activityPut($format,$message) { + private static function activityPut($format, $message) { // not implemented in ownCloud $user=OC_OCS::checkpassword(); echo(OC_OCS::generatexml($format, 'ok', 100, '')); @@ -565,7 +624,7 @@ class OC_OCS { foreach($apps as $app) { $info=OC_App::getAppInfo($app); if(isset($info['standalone'])) { - $newvalue=array('name'=>$info['name'],'url'=>OC_Helper::linkToAbsolute($app,''),'icon'=>''); + $newvalue=array('name'=>$info['name'], 'url'=>OC_Helper::linkToAbsolute($app, ''), 'icon'=>''); $values[]=$newvalue; } @@ -582,7 +641,7 @@ class OC_OCS { * @param string $user * @return string xml/json */ - private static function quotaGet($format,$user) { + private static function quotaGet($format, $user) { $login=OC_OCS::checkpassword(); if(OC_Group::inGroup($login, 'admin') or ($login==$user)) { @@ -621,7 +680,7 @@ class OC_OCS { * @param string $quota * @return string xml/json */ - private static function quotaSet($format,$user,$quota) { + private static function quotaSet($format, $user, $quota) { $login=OC_OCS::checkpassword(); if(OC_Group::inGroup($login, 'admin')) { @@ -644,7 +703,7 @@ class OC_OCS { * @param string $user * @return string xml/json */ - private static function publicKeyGet($format,$user) { + private static function publicKeyGet($format, $user) { $login=OC_OCS::checkpassword(); if(OC_User::userExists($user)) { @@ -662,7 +721,7 @@ class OC_OCS { * @param string $user * @return string xml/json */ - private static function privateKeyGet($format,$user) { + private static function privateKeyGet($format, $user) { $login=OC_OCS::checkpassword(); if(OC_Group::inGroup($login, 'admin') or ($login==$user)) { diff --git a/lib/ocsclient.php b/lib/ocsclient.php index 794bc972f579956d51b04ed39468393a28fbabb5..12e5026a877e56689d61c85039bc84b3b63bce17 100644 --- a/lib/ocsclient.php +++ b/lib/ocsclient.php @@ -55,20 +55,11 @@ class OC_OCSClient{ * This function calls an OCS server and returns the response. It also sets a sane timeout */ private static function getOCSresponse($url) { - // set a sensible timeout of 10 sec to stay responsive even if the server is down. - $ctx = stream_context_create( - array( - 'http' => array( - 'timeout' => 10 - ) - ) - ); - $data=@file_get_contents($url, 0, $ctx); + $data = \OC_Util::getUrlContent($url); return($data); } - - /** + /** * @brief Get all the categories from the OCS server * @returns array with category ids * @note returns NULL if config value appstoreenabled is set to false @@ -76,12 +67,12 @@ class OC_OCSClient{ */ public static function getCategories() { if(OC_Config::getValue('appstoreenabled', true)==false) { - return NULL; + return null; } $url=OC_OCSClient::getAppStoreURL().'/content/categories'; $xml=OC_OCSClient::getOCSresponse($url); - if($xml==FALSE) { - return NULL; + if($xml==false) { + return null; } $data=simplexml_load_string($xml); @@ -105,25 +96,25 @@ class OC_OCSClient{ * * This function returns a list of all the applications on the OCS server */ - public static function getApplications($categories,$page,$filter) { + public static function getApplications($categories, $page, $filter) { if(OC_Config::getValue('appstoreenabled', true)==false) { return(array()); } if(is_array($categories)) { - $categoriesstring=implode('x',$categories); + $categoriesstring=implode('x', $categories); }else{ $categoriesstring=$categories; } - $version='&version='.implode('x',\OC_Util::getVersion()); + $version='&version='.implode('x', \OC_Util::getVersion()); $filterurl='&filter='.urlencode($filter); $url=OC_OCSClient::getAppStoreURL().'/content/data?categories='.urlencode($categoriesstring).'&sortmode=new&page='.urlencode($page).'&pagesize=100'.$filterurl.$version; $apps=array(); $xml=OC_OCSClient::getOCSresponse($url); - if($xml==FALSE) { - return NULL; + if($xml==false) { + return null; } $data=simplexml_load_string($xml); @@ -156,14 +147,14 @@ class OC_OCSClient{ */ public static function getApplication($id) { if(OC_Config::getValue('appstoreenabled', true)==false) { - return NULL; + return null; } $url=OC_OCSClient::getAppStoreURL().'/content/data/'.urlencode($id); $xml=OC_OCSClient::getOCSresponse($url); - if($xml==FALSE) { - OC_Log::write('core','Unable to parse OCS content',OC_Log::FATAL); - return NULL; + if($xml==false) { + OC_Log::write('core', 'Unable to parse OCS content', OC_Log::FATAL); + return null; } $data=simplexml_load_string($xml); @@ -192,16 +183,16 @@ class OC_OCSClient{ * * This function returns an download url for an applications from the OCS server */ - public static function getApplicationDownload($id,$item) { + public static function getApplicationDownload($id, $item) { if(OC_Config::getValue('appstoreenabled', true)==false) { - return NULL; + return null; } $url=OC_OCSClient::getAppStoreURL().'/content/download/'.urlencode($id).'/'.urlencode($item); $xml=OC_OCSClient::getOCSresponse($url); - if($xml==FALSE) { - OC_Log::write('core','Unable to parse OCS content',OC_Log::FATAL); - return NULL; + if($xml==false) { + OC_Log::write('core', 'Unable to parse OCS content', OC_Log::FATAL); + return null; } $data=simplexml_load_string($xml); @@ -222,40 +213,35 @@ class OC_OCSClient{ * * This function returns a list of all the knowledgebase entries from the OCS server */ - public static function getKnownledgebaseEntries($page,$pagesize,$search='') { - if(OC_Config::getValue('knowledgebaseenabled', true)==false) { - $kbe=array(); - $kbe['totalitems']=0; - return $kbe; - } - - $p= (int) $page; - $s= (int) $pagesize; - if($search<>'') $searchcmd='&search='.urlencode($search); else $searchcmd=''; - $url=OC_OCSClient::getKBURL().'/knowledgebase/data?type=150&page='.$p.'&pagesize='.$s.$searchcmd; - - $kbe=array(); - $xml=OC_OCSClient::getOCSresponse($url); - - if($xml==FALSE) { - OC_Log::write('core','Unable to parse knowledgebase content',OC_Log::FATAL); - return NULL; - } - $data=simplexml_load_string($xml); - - $tmp=$data->data->content; - for($i = 0; $i < count($tmp); $i++) { - $kb=array(); - $kb['id']=$tmp[$i]->id; - $kb['name']=$tmp[$i]->name; - $kb['description']=$tmp[$i]->description; - $kb['answer']=$tmp[$i]->answer; - $kb['preview1']=$tmp[$i]->smallpreviewpic1; - $kb['detailpage']=$tmp[$i]->detailpage; - $kbe[]=$kb; + public static function getKnownledgebaseEntries($page, $pagesize, $search='') { + $kbe = array('totalitems' => 0); + if(OC_Config::getValue('knowledgebaseenabled', true)) { + $p = (int) $page; + $s = (int) $pagesize; + $searchcmd = ''; + if ($search) { + $searchcmd = '&search='.urlencode($search); + } + $url = OC_OCSClient::getKBURL().'/knowledgebase/data?type=150&page='. $p .'&pagesize='. $s . $searchcmd; + $xml = OC_OCSClient::getOCSresponse($url); + $data = @simplexml_load_string($xml); + if($data===false) { + OC_Log::write('core', 'Unable to parse knowledgebase content', OC_Log::FATAL); + return null; + } + $tmp = $data->data->content; + for($i = 0; $i < count($tmp); $i++) { + $kbe[] = array( + 'id' => $tmp[$i]->id, + 'name' => $tmp[$i]->name, + 'description' => $tmp[$i]->description, + 'answer' => $tmp[$i]->answer, + 'preview1' => $tmp[$i]->smallpreviewpic1, + 'detailpage' => $tmp[$i]->detailpage + ); + } + $kbe['totalitems'] = $data->meta->totalitems; } - $total=$data->meta->totalitems; - $kbe['totalitems']=$total; return $kbe; } diff --git a/lib/preferences.php b/lib/preferences.php index b198a18415cc17bd93447ed73517db250f4bedd9..6270457834dbebde0b2139b4aaa7c69217ed7f71 100644 --- a/lib/preferences.php +++ b/lib/preferences.php @@ -139,7 +139,7 @@ class OC_Preferences{ public static function setValue( $user, $app, $key, $value ) { // Check if the key does exist $query = OC_DB::prepare( 'SELECT `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?' ); - $values=$query->execute(array($user,$app,$key))->fetchAll(); + $values=$query->execute(array($user, $app, $key))->fetchAll(); $exists=(count($values)>0); if( !$exists ) { diff --git a/lib/public/backgroundjob.php b/lib/public/backgroundjob.php index aba7d2b7620504139617f47bb5bdb1d7dd419c9f..601046fe691dcf9146371699d060bb03f436b485 100644 --- a/lib/public/backgroundjob.php +++ b/lib/public/backgroundjob.php @@ -46,6 +46,29 @@ namespace OCP; * is done it will be deleted from the list. */ class BackgroundJob { + /** + * @brief get the execution type of background jobs + * @return string + * + * This method returns the type how background jobs are executed. If the user + * did not select something, the type is ajax. + */ + public static function getExecutionType() { + return \OC_BackgroundJob::getExecutionType(); + } + + /** + * @brief sets the background jobs execution type + * @param $type execution type + * @return boolean + * + * This method sets the execution type of the background jobs. Possible types + * are "none", "ajax", "webcron", "cron" + */ + public static function setExecutionType( $type ) { + return \OC_BackgroundJob::setExecutionType( $type ); + } + /** * @brief creates a regular task * @param $klass class name diff --git a/lib/public/constants.php b/lib/public/constants.php new file mode 100644 index 0000000000000000000000000000000000000000..bc979c9031fcc8ce94647a7911a393f0052cce1f --- /dev/null +++ b/lib/public/constants.php @@ -0,0 +1,38 @@ +. + * + */ + +/** + * This file defines common constants used in ownCloud + */ + +namespace OCP; + +/** + * CRUDS permissions. + */ +const PERMISSION_CREATE = 4; +const PERMISSION_READ = 1; +const PERMISSION_UPDATE = 2; +const PERMISSION_DELETE = 8; +const PERMISSION_SHARE = 16; +const PERMISSION_ALL = 31; + diff --git a/lib/public/contacts.php b/lib/public/contacts.php new file mode 100644 index 0000000000000000000000000000000000000000..5762fd28e02d93c44fa5774962cf4d63c709bf33 --- /dev/null +++ b/lib/public/contacts.php @@ -0,0 +1,103 @@ +. + * + */ + +/** + * Public interface of ownCloud for apps to use. + * Contacts Class + * + */ + +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal ownCloud classes +namespace OCP; + +/** + * This class provides access to the contacts app. Use this class exclusively if you want to access contacts. + * + * Contacts in general will be expressed as an array of key-value-pairs. + * The keys will match the property names defined in https://tools.ietf.org/html/rfc2426#section-1 + * + * Proposed workflow for working with contacts: + * - search for the contacts + * - manipulate the results array + * - createOrUpdate will save the given contacts overwriting the existing data + * + * For updating it is mandatory to keep the id. + * Without an id a new contact will be created. + * + */ +class Contacts +{ + /** + * This function is used to search and find contacts within the users address books. + * In case $pattern is empty all contacts will be returned. + * + * @param string $pattern which should match within the $searchProperties + * @param array $searchProperties defines the properties within the query pattern should match + * @param array $options - for future use. One should always have options! + * @return array of contacts which are arrays of key-value-pairs + */ + public static function search($pattern, $searchProperties = array(), $options = array()) { + + // dummy results + return array( + array('id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c', 'GEO' => '37.386013;-122.082932'), + array('id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => array('d@e.f', 'g@h.i')), + ); + } + + /** + * This function can be used to delete the contact identified by the given id + * + * @param object $id the unique identifier to a contact + * @return bool successful or not + */ + public static function delete($id) { + return false; + } + + /** + * This function is used to create a new contact if 'id' is not given or not present. + * Otherwise the contact will be updated by replacing the entire data set. + * + * @param array $properties this array if key-value-pairs defines a contact + * @return array representing the contact just created or updated + */ + public static function createOrUpdate($properties) { + + // dummy + return array('id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c', + 'PHOTO' => 'VALUE=uri:http://www.abc.com/pub/photos/jqpublic.gif', + 'ADR' => ';;123 Main Street;Any Town;CA;91921-1234' + ); + } + + /** + * Check if contacts are available (e.g. contacts app enabled) + * + * @return bool true if enabled, false if not + */ + public static function isEnabled() { + return false; + } + +} diff --git a/lib/public/db.php b/lib/public/db.php index 6ce62b27ca27d22ee87b0d5d9f86bc000d0acc99..92ff8f93a227877bed86d428b87fe1370780a5a8 100644 --- a/lib/public/db.php +++ b/lib/public/db.php @@ -42,9 +42,30 @@ class DB { * SQL query via MDB2 prepare(), needs to be execute()'d! */ static public function prepare( $query, $limit=null, $offset=null ) { - return(\OC_DB::prepare($query,$limit,$offset)); + return(\OC_DB::prepare($query, $limit, $offset)); } + /** + * @brief Insert a row if a matching row doesn't exists. + * @param $table string The table name (will replace *PREFIX*) to perform the replace on. + * @param $input array + * + * The input array if in the form: + * + * array ( 'id' => array ( 'value' => 6, + * 'key' => true + * ), + * 'name' => array ('value' => 'Stoyan'), + * 'family' => array ('value' => 'Stefanov'), + * 'birth_date' => array ('value' => '1975-06-20') + * ); + * @returns true/false + * + */ + public static function insertIfNotExist($table, $input) { + return(\OC_DB::insertIfNotExist($table, $input)); + } + /** * @brief gets last value of autoincrement * @param $table string The optional table name (will replace *PREFIX*) and add sequence suffix diff --git a/lib/public/share.php b/lib/public/share.php index 1db3a0b2c1de80685b073936d084fe51f09bd9ae..d736871d2440004d99fac20eaa75c3a3f2be9d90 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -1,1251 +1,1318 @@ -. -*/ -namespace OCP; - -\OC_Hook::connect('OC_User', 'post_deleteUser', 'OCP\Share', 'post_deleteUser'); -\OC_Hook::connect('OC_User', 'post_addToGroup', 'OCP\Share', 'post_addToGroup'); -\OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OCP\Share', 'post_removeFromGroup'); -\OC_Hook::connect('OC_User', 'post_deleteGroup', 'OCP\Share', 'post_deleteGroup'); - -/** -* This class provides the ability for apps to share their content between users. -* Apps must create a backend class that implements OCP\Share_Backend and register it with this class. -*/ -class Share { - - const SHARE_TYPE_USER = 0; - const SHARE_TYPE_GROUP = 1; - const SHARE_TYPE_LINK = 3; - const SHARE_TYPE_EMAIL = 4; - const SHARE_TYPE_CONTACT = 5; - const SHARE_TYPE_REMOTE = 6; - - /** CRUDS permissions (Create, Read, Update, Delete, Share) using a bitmask - * Construct permissions for share() and setPermissions with Or (|) e.g. Give user read and update permissions: PERMISSION_READ | PERMISSION_UPDATE - * Check if permission is granted with And (&) e.g. Check if delete is granted: if ($permissions & PERMISSION_DELETE) - * Remove permissions with And (&) and Not (~) e.g. Remove the update permission: $permissions &= ~PERMISSION_UPDATE - * Apps are required to handle permissions on their own, this class only stores and manages the permissions of shares - */ - const PERMISSION_CREATE = 4; - const PERMISSION_READ = 1; - const PERMISSION_UPDATE = 2; - const PERMISSION_DELETE = 8; - const PERMISSION_SHARE = 16; - - const FORMAT_NONE = -1; - const FORMAT_STATUSES = -2; - const FORMAT_SOURCES = -3; - - private static $shareTypeUserAndGroups = -1; - private static $shareTypeGroupUserUnique = 2; - private static $backends = array(); - private static $backendTypes = array(); - - /** - * @brief Register a sharing backend class that implements OCP\Share_Backend for an item type - * @param string Item type - * @param string Backend class - * @param string (optional) Depends on item type - * @param array (optional) List of supported file extensions if this item type depends on files - * @return Returns true if backend is registered or false if error - */ - public static function registerBackend($itemType, $class, $collectionOf = null, $supportedFileExtensions = null) { - if (self::isEnabled()) { - if (!isset(self::$backendTypes[$itemType])) { - self::$backendTypes[$itemType] = array('class' => $class, 'collectionOf' => $collectionOf, 'supportedFileExtensions' => $supportedFileExtensions); - if(count(self::$backendTypes) === 1) { - \OC_Util::addScript('core', 'share'); - \OC_Util::addStyle('core', 'share'); - } - return true; - } - \OC_Log::write('OCP\Share', 'Sharing backend '.$class.' not registered, '.self::$backendTypes[$itemType]['class'].' is already registered for '.$itemType, \OC_Log::WARN); - } - return false; - } - - /** - * @brief Check if the Share API is enabled - * @return Returns true if enabled or false - * - * The Share API is enabled by default if not configured - * - */ - public static function isEnabled() { - if (\OC_Appconfig::getValue('core', 'shareapi_enabled', 'yes') == 'yes') { - return true; - } - return false; - } - - /** - * @brief Get the items of item type shared with the current user - * @param string Item type - * @param int Format (optional) Format type must be defined by the backend - * @param int Number of items to return (optional) Returns all by default - * @return Return depends on format - */ - public static function getItemsSharedWith($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) { - return self::getItems($itemType, null, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, $limit, $includeCollections); - } - - /** - * @brief Get the item of item type shared with the current user - * @param string Item type - * @param string Item target - * @param int Format (optional) Format type must be defined by the backend - * @return Return depends on format - */ - public static function getItemSharedWith($itemType, $itemTarget, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { - return self::getItems($itemType, $itemTarget, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections); - } - - /** - * @brief Get the item of item type shared with the current user by source - * @param string Item type - * @param string Item source - * @param int Format (optional) Format type must be defined by the backend - * @return Return depends on format - */ - public static function getItemSharedWithBySource($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { - return self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections, true); - } - - /** - * @brief Get the item of item type shared by a link - * @param string Item type - * @param string Item source - * @param string Owner of link - * @return Item - */ - public static function getItemSharedWithByLink($itemType, $itemSource, $uidOwner) { - return self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1); - } - - /** - * @brief Get the shared items of item type owned by the current user - * @param string Item type - * @param int Format (optional) Format type must be defined by the backend - * @param int Number of items to return (optional) Returns all by default - * @return Return depends on format - */ - public static function getItemsShared($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) { - return self::getItems($itemType, null, null, null, \OC_User::getUser(), $format, $parameters, $limit, $includeCollections); - } - - /** - * @brief Get the shared item of item type owned by the current user - * @param string Item type - * @param string Item source - * @param int Format (optional) Format type must be defined by the backend - * @return Return depends on format - */ - public static function getItemShared($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { - return self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), $format, $parameters, -1, $includeCollections); - } - - /** - * @brief Share an item with a user, group, or via private link - * @param string Item type - * @param string Item source - * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK - * @param string User or group the item is being shared with - * @param int CRUDS permissions - * @return bool Returns true on success or false on failure - */ - public static function shareItem($itemType, $itemSource, $shareType, $shareWith, $permissions) { - $uidOwner = \OC_User::getUser(); - $sharingPolicy = \OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'); - // Verify share type and sharing conditions are met - if ($shareType === self::SHARE_TYPE_USER) { - if ($shareWith == $uidOwner) { - $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is the item owner'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - if (!\OC_User::userExists($shareWith)) { - $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' does not exist'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - if ($sharingPolicy == 'groups_only') { - $inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith)); - if (empty($inGroup)) { - $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member of any groups that '.$uidOwner.' is a member of'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } - // Check if the item source is already shared with the user, either from the same owner or a different user - if ($checkExists = self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) { - // Only allow the same share to occur again if it is the same owner and is not a user share, this use case is for increasing permissions for a specific user - if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { - $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } - } else if ($shareType === self::SHARE_TYPE_GROUP) { - if (!\OC_Group::groupExists($shareWith)) { - $message = 'Sharing '.$itemSource.' failed, because the group '.$shareWith.' does not exist'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - if ($sharingPolicy == 'groups_only' && !\OC_Group::inGroup($uidOwner, $shareWith)) { - $message = 'Sharing '.$itemSource.' failed, because '.$uidOwner.' is not a member of the group '.$shareWith; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - // Check if the item source is already shared with the group, either from the same owner or a different user - // The check for each user in the group is done inside the put() function - if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_GROUP, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) { - // Only allow the same share to occur again if it is the same owner and is not a group share, this use case is for increasing permissions for a specific user - if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { - $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } - // Convert share with into an array with the keys group and users - $group = $shareWith; - $shareWith = array(); - $shareWith['group'] = $group; - $shareWith['users'] = array_diff(\OC_Group::usersInGroup($group), array($uidOwner)); - } else if ($shareType === self::SHARE_TYPE_LINK) { - if (\OC_Appconfig::getValue('core', 'shareapi_allow_links', 'yes') == 'yes') { - if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1)) { - // If password is set delete the old link - if (isset($shareWith)) { - self::delete($checkExists['id']); - } else { - $message = 'Sharing '.$itemSource.' failed, because this item is already shared with a link'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } - // Generate hash of password - same method as user passwords - if (isset($shareWith)) { - $forcePortable = (CRYPT_BLOWFISH != 1); - $hasher = new \PasswordHash(8, $forcePortable); - $shareWith = $hasher->HashPassword($shareWith.\OC_Config::getValue('passwordsalt', '')); - } - return self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions); - } - $message = 'Sharing '.$itemSource.' failed, because sharing with links is not allowed'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - return false; -// } else if ($shareType === self::SHARE_TYPE_CONTACT) { -// if (!\OC_App::isEnabled('contacts')) { -// $message = 'Sharing '.$itemSource.' failed, because the contacts app is not enabled'; -// \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); -// return false; -// } -// $vcard = \OC_Contacts_App::getContactVCard($shareWith); -// if (!isset($vcard)) { -// $message = 'Sharing '.$itemSource.' failed, because the contact does not exist'; -// \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); -// throw new \Exception($message); -// } -// $details = \OC_Contacts_VCard::structureContact($vcard); -// // TODO Add ownCloud user to contacts vcard -// if (!isset($details['EMAIL'])) { -// $message = 'Sharing '.$itemSource.' failed, because no email address is associated with the contact'; -// \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); -// throw new \Exception($message); -// } -// return self::shareItem($itemType, $itemSource, self::SHARE_TYPE_EMAIL, $details['EMAIL'], $permissions); - } else { - // Future share types need to include their own conditions - $message = 'Share type '.$shareType.' is not valid for '.$itemSource; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - // If the item is a folder, scan through the folder looking for equivalent item types - if ($itemType == 'folder') { - $parentFolder = self::put('folder', $itemSource, $shareType, $shareWith, $uidOwner, $permissions, true); - if ($parentFolder && $files = \OC_Files::getDirectoryContent($itemSource)) { - for ($i = 0; $i < count($files); $i++) { - $name = substr($files[$i]['name'], strpos($files[$i]['name'], $itemSource) - strlen($itemSource)); - if ($files[$i]['mimetype'] == 'httpd/unix-directory' && $children = \OC_Files::getDirectoryContent($name, '/')) { - // Continue scanning into child folders - array_push($files, $children); - } else { - // Check file extension for an equivalent item type to convert to - $extension = strtolower(substr($itemSource, strrpos($itemSource, '.') + 1)); - foreach (self::$backends as $type => $backend) { - if (isset($backend->dependsOn) && $backend->dependsOn == 'file' && isset($backend->supportedFileExtensions) && in_array($extension, $backend->supportedFileExtensions)) { - $itemType = $type; - break; - } - } - // Pass on to put() to check if this item should be converted, the item won't be inserted into the database unless it can be converted - self::put($itemType, $name, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder); - } - } - return true; - } - return false; - } else { - // Put the item into the database - return self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions); - } - } - - /** - * @brief Unshare an item from a user, group, or delete a private link - * @param string Item type - * @param string Item source - * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK - * @param string User or group the item is being shared with - * @return Returns true on success or false on failure - */ - public static function unshare($itemType, $itemSource, $shareType, $shareWith) { - if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1)) { - self::delete($item['id']); - return true; - } - return false; - } - - /** - * @brief Unshare an item shared with the current user - * @param string Item type - * @param string Item target - * @return Returns true on success or false on failure - * - * Unsharing from self is not allowed for items inside collections - * - */ - public static function unshareFromSelf($itemType, $itemTarget) { - if ($item = self::getItemSharedWith($itemType, $itemTarget)) { - if ((int)$item['share_type'] === self::SHARE_TYPE_GROUP) { - // Insert an extra row for the group share and set permission to 0 to prevent it from showing up for the user - $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)'); - $query->execute(array($item['item_type'], $item['item_source'], $item['item_target'], $item['id'], self::$shareTypeGroupUserUnique, \OC_User::getUser(), $item['uid_owner'], 0, $item['stime'], $item['file_source'], $item['file_target'])); - \OC_DB::insertid('*PREFIX*share'); - // Delete all reshares by this user of the group share - self::delete($item['id'], true, \OC_User::getUser()); - } else if ((int)$item['share_type'] === self::$shareTypeGroupUserUnique) { - // Set permission to 0 to prevent it from showing up for the user - $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = ? WHERE `id` = ?'); - $query->execute(array(0, $item['id'])); - self::delete($item['id'], true); - } else { - self::delete($item['id']); - } - return true; - } - return false; - } - - /** - * @brief Set the permissions of an item for a specific user or group - * @param string Item type - * @param string Item source - * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK - * @param string User or group the item is being shared with - * @param int CRUDS permissions - * @return Returns true on success or false on failure - */ - public static function setPermissions($itemType, $itemSource, $shareType, $shareWith, $permissions) { - if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1, false)) { - // Check if this item is a reshare and verify that the permissions granted don't exceed the parent shared item - if (isset($item['parent'])) { - $query = \OC_DB::prepare('SELECT `permissions` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $result = $query->execute(array($item['parent']))->fetchRow(); - if (~(int)$result['permissions'] & $permissions) { - $message = 'Setting permissions for '.$itemSource.' failed, because the permissions exceed permissions granted to '.\OC_User::getUser(); - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } - $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = ? WHERE `id` = ?'); - $query->execute(array($permissions, $item['id'])); - // Check if permissions were removed - if ($item['permissions'] & ~$permissions) { - // If share permission is removed all reshares must be deleted - if (($item['permissions'] & self::PERMISSION_SHARE) && (~$permissions & self::PERMISSION_SHARE)) { - self::delete($item['id'], true); - } else { - $ids = array(); - $parents = array($item['id']); - while (!empty($parents)) { - $parents = "'".implode("','", $parents)."'"; - $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')'); - $result = $query->execute(); - // Reset parents array, only go through loop again if items are found that need permissions removed - $parents = array(); - while ($item = $result->fetchRow()) { - // Check if permissions need to be removed - if ($item['permissions'] & ~$permissions) { - // Add to list of items that need permissions removed - $ids[] = $item['id']; - $parents[] = $item['id']; - } - } - } - // Remove the permissions for all reshares of this item - if (!empty($ids)) { - $ids = "'".implode("','", $ids)."'"; - $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = `permissions` & ? WHERE `id` IN ('.$ids.')'); - $query->execute(array($permissions)); - } - } - } - return true; - } - $message = 'Setting permissions for '.$itemSource.' failed, because the item was not found'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - - public static function setExpirationDate($itemType, $itemSource, $date) { - if ($items = self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), self::FORMAT_NONE, null, -1, false)) { - if (!empty($items)) { - if ($date == '') { - $date = null; - } else { - $date = new \DateTime($date); - $date = date('Y-m-d H:i', $date->format('U') - $date->getOffset()); - } - $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `expiration` = ? WHERE `id` = ?'); - foreach ($items as $item) { - $query->execute(array($date, $item['id'])); - } - return true; - } - } - return false; - } - - /** - * @brief Get the backend class for the specified item type - * @param string Item type - * @return Sharing backend object - */ - private static function getBackend($itemType) { - if (isset(self::$backends[$itemType])) { - return self::$backends[$itemType]; - } else if (isset(self::$backendTypes[$itemType]['class'])) { - $class = self::$backendTypes[$itemType]['class']; - if (class_exists($class)) { - self::$backends[$itemType] = new $class; - if (!(self::$backends[$itemType] instanceof Share_Backend)) { - $message = 'Sharing backend '.$class.' must implement the interface OCP\Share_Backend'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - return self::$backends[$itemType]; - } else { - $message = 'Sharing backend '.$class.' not found'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } - $message = 'Sharing backend for '.$itemType.' not found'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - - /** - * @brief Get a list of collection item types for the specified item type - * @param string Item type - * @return array - */ - private static function getCollectionItemTypes($itemType) { - $collectionTypes = array($itemType); - foreach (self::$backendTypes as $type => $backend) { - if (in_array($backend['collectionOf'], $collectionTypes)) { - $collectionTypes[] = $type; - } - } - if (!self::getBackend($itemType) instanceof Share_Backend_Collection) { - unset($collectionTypes[0]); - } - // Return array if collections were found or the item type is a collection itself - collections can be inside collections - if (count($collectionTypes) > 0) { - return $collectionTypes; - } - return false; - } - - /** - * @brief Get shared items from the database - * @param string Item type - * @param string Item source or target (optional) - * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, SHARE_TYPE_LINK, $shareTypeUserAndGroups, or $shareTypeGroupUserUnique - * @param string User or group the item is being shared with - * @param string User that is the owner of shared items (optional) - * @param int Format to convert items to with formatItems() - * @param mixed Parameters to pass to formatItems() - * @param int Number of items to return, -1 to return all matches (optional) - * @param bool Include collection item types (optional) - * @return mixed - * - * See public functions getItem(s)... for parameter usage - * - */ - private static function getItems($itemType, $item = null, $shareType = null, $shareWith = null, $uidOwner = null, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false, $itemShareWithBySource = false) { - if (!self::isEnabled()) { - if ($limit == 1 || (isset($uidOwner) && isset($item))) { - return false; - } else { - return array(); - } - } - $backend = self::getBackend($itemType); - // Get filesystem root to add it to the file target and remove from the file source, match file_source with the file cache - if ($itemType == 'file' || $itemType == 'folder') { - $root = \OC_Filesystem::getRoot(); - $where = 'INNER JOIN `*PREFIX*fscache` ON `file_source` = `*PREFIX*fscache`.`id`'; - if (!isset($item)) { - $where .= ' WHERE `file_target` IS NOT NULL'; - } - $fileDependent = true; - $queryArgs = array(); - } else { - $fileDependent = false; - $root = ''; - if ($includeCollections && !isset($item) && ($collectionTypes = self::getCollectionItemTypes($itemType))) { - // If includeCollections is true, find collections of this item type, e.g. a music album contains songs - if (!in_array($itemType, $collectionTypes)) { - $itemTypes = array_merge(array($itemType), $collectionTypes); - } else { - $itemTypes = $collectionTypes; - } - $placeholders = join(',', array_fill(0, count($itemTypes), '?')); - $where .= ' WHERE item_type IN ('.$placeholders.'))'; - $queryArgs = $itemTypes; - } else { - $where = ' WHERE `item_type` = ?'; - $queryArgs = array($itemType); - } - } - if (isset($shareType)) { - // Include all user and group items - if ($shareType == self::$shareTypeUserAndGroups && isset($shareWith)) { - $where .= ' AND `share_type` IN (?,?,?)'; - $queryArgs[] = self::SHARE_TYPE_USER; - $queryArgs[] = self::SHARE_TYPE_GROUP; - $queryArgs[] = self::$shareTypeGroupUserUnique; - $userAndGroups = array_merge(array($shareWith), \OC_Group::getUserGroups($shareWith)); - $placeholders = join(',', array_fill(0, count($userAndGroups), '?')); - $where .= ' AND `share_with` IN ('.$placeholders.')'; - $queryArgs = array_merge($queryArgs, $userAndGroups); - // Don't include own group shares - $where .= ' AND `uid_owner` != ?'; - $queryArgs[] = $shareWith; - } else { - $where .= ' AND `share_type` = ?'; - $queryArgs[] = $shareType; - if (isset($shareWith)) { - $where .= ' AND `share_with` = ?'; - $queryArgs[] = $shareWith; - } - } - } - if (isset($uidOwner)) { - $where .= ' AND `uid_owner` = ?'; - $queryArgs[] = $uidOwner; - if (!isset($shareType)) { - // Prevent unique user targets for group shares from being selected - $where .= ' AND `share_type` != ?'; - $queryArgs[] = self::$shareTypeGroupUserUnique; - } - if ($itemType == 'file' || $itemType == 'folder') { - $column = 'file_source'; - } else { - $column = 'item_source'; - } - } else { - if ($itemType == 'file' || $itemType == 'folder') { - $column = 'file_target'; - } else { - $column = 'item_target'; - } - } - if (isset($item)) { - if ($includeCollections && $collectionTypes = self::getCollectionItemTypes($itemType)) { - $where .= ' AND ('; - } else { - $where .= ' AND'; - } - // If looking for own shared items, check item_source else check item_target - if (isset($uidOwner) || $itemShareWithBySource) { - // If item type is a file, file source needs to be checked in case the item was converted - if ($itemType == 'file' || $itemType == 'folder') { - $where .= ' `file_source` = ?'; - $column = 'file_source'; - } else { - $where .= ' `item_source` = ?'; - $column = 'item_source'; - } - } else { - if ($itemType == 'file' || $itemType == 'folder') { - $where .= ' `file_target` = ?'; - $item = \OC_Filesystem::normalizePath($item); - } else { - $where .= ' `item_target` = ?'; - } - } - $queryArgs[] = $item; - if ($includeCollections && $collectionTypes) { - $placeholders = join(',', array_fill(0, count($collectionTypes), '?')); - $where .= ' OR item_type IN ('.$placeholders.'))'; - $queryArgs = array_merge($queryArgs, $collectionTypes); - } - } - if ($limit != -1 && !$includeCollections) { - if ($shareType == self::$shareTypeUserAndGroups) { - // Make sure the unique user target is returned if it exists, unique targets should follow the group share in the database - // If the limit is not 1, the filtering can be done later - $where .= ' ORDER BY `*PREFIX*share`.`id` DESC'; - } - // The limit must be at least 3, because filtering needs to be done - if ($limit < 3) { - $queryLimit = 3; - } else { - $queryLimit = $limit; - } - } else { - $queryLimit = null; - } - // TODO Optimize selects - if ($format == self::FORMAT_STATUSES) { - if ($itemType == 'file' || $itemType == 'folder') { - $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `file_source`, `path`, `expiration`'; - } else { - $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `expiration`'; - } - } else { - if (isset($uidOwner)) { - if ($itemType == 'file' || $itemType == 'folder') { - $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `file_source`, `path`, `permissions`, `stime`, `expiration`'; - } else { - $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, `permissions`, `stime`, `file_source`, `expiration`'; - } - } else { - if ($fileDependent) { - if (($itemType == 'file' || $itemType == 'folder') && $format == \OC_Share_Backend_File::FORMAT_FILE_APP || $format == \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT) { - $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `uid_owner`, `share_type`, `share_with`, `file_source`, `path`, `file_target`, `permissions`, `expiration`, `name`, `ctime`, `mtime`, `mimetype`, `size`, `encrypted`, `versioned`, `writable`'; - } else { - $select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `item_target`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `uid_owner`, `file_source`, `path`, `file_target`, `permissions`, `stime`, `expiration`'; - } - } else { - $select = '*'; - } - } - } - $root = strlen($root); - $query = \OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*share` '.$where, $queryLimit); - $result = $query->execute($queryArgs); - $items = array(); - $targets = array(); - while ($row = $result->fetchRow()) { - // Filter out duplicate group shares for users with unique targets - if ($row['share_type'] == self::$shareTypeGroupUserUnique && isset($items[$row['parent']])) { - $row['share_type'] = self::SHARE_TYPE_GROUP; - $row['share_with'] = $items[$row['parent']]['share_with']; - // Remove the parent group share - unset($items[$row['parent']]); - if ($row['permissions'] == 0) { - continue; - } - } else if (!isset($uidOwner)) { - // Check if the same target already exists - if (isset($targets[$row[$column]])) { - // Check if the same owner shared with the user twice through a group and user share - this is allowed - $id = $targets[$row[$column]]; - if ($items[$id]['uid_owner'] == $row['uid_owner']) { - // Switch to group share type to ensure resharing conditions aren't bypassed - if ($items[$id]['share_type'] != self::SHARE_TYPE_GROUP) { - $items[$id]['share_type'] = self::SHARE_TYPE_GROUP; - $items[$id]['share_with'] = $row['share_with']; - } - // Switch ids if sharing permission is granted on only one share to ensure correct parent is used if resharing - if (~(int)$items[$id]['permissions'] & self::PERMISSION_SHARE && (int)$row['permissions'] & self::PERMISSION_SHARE) { - $items[$row['id']] = $items[$id]; - unset($items[$id]); - $id = $row['id']; - } - // Combine the permissions for the item - $items[$id]['permissions'] |= (int)$row['permissions']; - continue; - } - } else { - $targets[$row[$column]] = $row['id']; - } - } - // Remove root from file source paths if retrieving own shared items - if (isset($uidOwner) && isset($row['path'])) { - if (isset($row['parent'])) { - $row['path'] = '/Shared/'.basename($row['path']); - } else { - $row['path'] = substr($row['path'], $root); - } - } - if (isset($row['expiration'])) { - $time = new \DateTime(); - if ($row['expiration'] < date('Y-m-d H:i', $time->format('U') - $time->getOffset())) { - self::delete($row['id']); - continue; - } - } - $items[$row['id']] = $row; - } - if (!empty($items)) { - $collectionItems = array(); - foreach ($items as &$row) { - // Return only the item instead of a 2-dimensional array - if ($limit == 1 && $row['item_type'] == $itemType && $row[$column] == $item) { - if ($format == self::FORMAT_NONE) { - return $row; - } else { - break; - } - } - // Check if this is a collection of the requested item type - if ($includeCollections && $collectionTypes && in_array($row['item_type'], $collectionTypes)) { - if (($collectionBackend = self::getBackend($row['item_type'])) && $collectionBackend instanceof Share_Backend_Collection) { - // Collections can be inside collections, check if the item is a collection - if (isset($item) && $row['item_type'] == $itemType && $row[$column] == $item) { - $collectionItems[] = $row; - } else { - $collection = array(); - $collection['item_type'] = $row['item_type']; - if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') { - $collection['path'] = basename($row['path']); - } - $row['collection'] = $collection; - // Fetch all of the children sources - $children = $collectionBackend->getChildren($row[$column]); - foreach ($children as $child) { - $childItem = $row; - $childItem['item_type'] = $itemType; - if ($row['item_type'] != 'file' && $row['item_type'] != 'folder') { - $childItem['item_source'] = $child['source']; - $childItem['item_target'] = $child['target']; - } - if ($backend instanceof Share_Backend_File_Dependent) { - if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') { - $childItem['file_source'] = $child['source']; - } else { - $childItem['file_source'] = \OC_FileCache::getId($child['file_path']); - } - $childItem['file_target'] = \OC_Filesystem::normalizePath($child['file_path']); - } - if (isset($item)) { - if ($childItem[$column] == $item) { - // Return only the item instead of a 2-dimensional array - if ($limit == 1) { - if ($format == self::FORMAT_NONE) { - return $childItem; - } else { - // Unset the items array and break out of both loops - $items = array(); - $items[] = $childItem; - break 2; - } - } else { - $collectionItems[] = $childItem; - } - } - } else { - $collectionItems[] = $childItem; - } - } - } - } - // Remove collection item - unset($items[$row['id']]); - } - } - if (!empty($collectionItems)) { - $items = array_merge($items, $collectionItems); - } - if ($format == self::FORMAT_NONE) { - return $items; - } else if ($format == self::FORMAT_STATUSES) { - $statuses = array(); - // Switch column to path for files and folders, used for determining statuses inside of folders - if ($itemType == 'file' || $itemType == 'folder') { - $column = 'path'; - } - foreach ($items as $item) { - if ($item['share_type'] == self::SHARE_TYPE_LINK) { - $statuses[$item[$column]] = true; - } else if (!isset($statuses[$item[$column]])) { - $statuses[$item[$column]] = false; - } - } - return $statuses; - } else { - return $backend->formatItems($items, $format, $parameters); - } - } else if ($limit == 1 || (isset($uidOwner) && isset($item))) { - return false; - } - return array(); - } - - /** - * @brief Put shared item into the database - * @param string Item type - * @param string Item source - * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK - * @param string User or group the item is being shared with - * @param int CRUDS permissions - * @param bool|array Parent folder target (optional) - * @return bool Returns true on success or false on failure - */ - private static function put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder = null) { - $backend = self::getBackend($itemType); - // Check if this is a reshare - if ($checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true)) { - // Check if attempting to share back to owner - if ($checkReshare['uid_owner'] == $shareWith && $shareType == self::SHARE_TYPE_USER) { - $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is the original sharer'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - // Check if share permissions is granted - if ((int)$checkReshare['permissions'] & self::PERMISSION_SHARE) { - if (~(int)$checkReshare['permissions'] & $permissions) { - $message = 'Sharing '.$itemSource.' failed, because the permissions exceed permissions granted to '.$uidOwner; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } else { - // TODO Don't check if inside folder - $parent = $checkReshare['id']; - $itemSource = $checkReshare['item_source']; - $fileSource = $checkReshare['file_source']; - $suggestedItemTarget = $checkReshare['item_target']; - $suggestedFileTarget = $checkReshare['file_target']; - $filePath = $checkReshare['file_target']; - } - } else { - $message = 'Sharing '.$itemSource.' failed, because resharing is not allowed'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } else { - $parent = null; - $suggestedItemTarget = null; - $suggestedFileTarget = null; - if (!$backend->isValidSource($itemSource, $uidOwner)) { - $message = 'Sharing '.$itemSource.' failed, because the sharing backend for '.$itemType.' could not find its source'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - $parent = null; - if ($backend instanceof Share_Backend_File_Dependent) { - $filePath = $backend->getFilePath($itemSource, $uidOwner); - if ($itemType == 'file' || $itemType == 'folder') { - $fileSource = $itemSource; - } else { - $fileSource = \OC_FileCache::getId($filePath); - } - if ($fileSource == -1) { - $message = 'Sharing '.$itemSource.' failed, because the file could not be found in the file cache'; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - } else { - $filePath = null; - $fileSource = null; - } - } - $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)'); - // Share with a group - if ($shareType == self::SHARE_TYPE_GROUP) { - $groupItemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith['group'], $uidOwner, $suggestedItemTarget); - if (isset($fileSource)) { - if ($parentFolder) { - if ($parentFolder === true) { - $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget); - // Set group default file target for future use - $parentFolders[0]['folder'] = $groupFileTarget; - } else { - // Get group default file target - $groupFileTarget = $parentFolder[0]['folder'].$itemSource; - $parent = $parentFolder[0]['id']; - } - } else { - $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget); - } - } else { - $groupFileTarget = null; - } - $query->execute(array($itemType, $itemSource, $groupItemTarget, $parent, $shareType, $shareWith['group'], $uidOwner, $permissions, time(), $fileSource, $groupFileTarget)); - // Save this id, any extra rows for this group share will need to reference it - $parent = \OC_DB::insertid('*PREFIX*share'); - // Loop through all users of this group in case we need to add an extra row - foreach ($shareWith['users'] as $uid) { - $itemTarget = self::generateTarget($itemType, $itemSource, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedItemTarget, $parent); - if (isset($fileSource)) { - if ($parentFolder) { - if ($parentFolder === true) { - $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent); - if ($fileTarget != $groupFileTarget) { - $parentFolders[$uid]['folder'] = $fileTarget; - } - } else if (isset($parentFolder[$uid])) { - $fileTarget = $parentFolder[$uid]['folder'].$itemSource; - $parent = $parentFolder[$uid]['id']; - } - } else { - $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent); - } - } else { - $fileTarget = null; - } - // Insert an extra row for the group share if the item or file target is unique for this user - if ($itemTarget != $groupItemTarget || (isset($fileSource) && $fileTarget != $groupFileTarget)) { - $query->execute(array($itemType, $itemSource, $itemTarget, $parent, self::$shareTypeGroupUserUnique, $uid, $uidOwner, $permissions, time(), $fileSource, $fileTarget)); - \OC_DB::insertid('*PREFIX*share'); - } - } - if ($parentFolder === true) { - // Return parent folders to preserve file target paths for potential children - return $parentFolders; - } - } else { - $itemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedItemTarget); - if (isset($fileSource)) { - if ($parentFolder) { - if ($parentFolder === true) { - $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget); - $parentFolders['folder'] = $fileTarget; - } else { - $fileTarget = $parentFolder['folder'].$itemSource; - $parent = $parentFolder['id']; - } - } else { - $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget); - } - } else { - $fileTarget = null; - } - $query->execute(array($itemType, $itemSource, $itemTarget, $parent, $shareType, $shareWith, $uidOwner, $permissions, time(), $fileSource, $fileTarget)); - $id = \OC_DB::insertid('*PREFIX*share'); - if ($parentFolder === true) { - $parentFolders['id'] = $id; - // Return parent folder to preserve file target paths for potential children - return $parentFolders; - } - } - return true; - } - - /** - * @brief Generate a unique target for the item - * @param string Item type - * @param string Item source - * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK - * @param string User or group the item is being shared with - * @param string The suggested target originating from a reshare (optional) - * @param int The id of the parent group share (optional) - * @return string Item target - */ - private static function generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedTarget = null, $groupParent = null) { - $backend = self::getBackend($itemType); - if ($shareType == self::SHARE_TYPE_LINK) { - if (isset($suggestedTarget)) { - return $suggestedTarget; - } - return $backend->generateTarget($itemSource, false); - } else { - if ($itemType == 'file' || $itemType == 'folder') { - $column = 'file_target'; - $columnSource = 'file_source'; - } else { - $column = 'item_target'; - $columnSource = 'item_source'; - } - if ($shareType == self::SHARE_TYPE_USER) { - // Share with is a user, so set share type to user and groups - $shareType = self::$shareTypeUserAndGroups; - $userAndGroups = array_merge(array($shareWith), \OC_Group::getUserGroups($shareWith)); - } else { - $userAndGroups = false; - } - $exclude = null; - // Backend has 3 opportunities to generate a unique target - for ($i = 0; $i < 2; $i++) { - // Check if suggested target exists first - if ($i == 0 && isset($suggestedTarget)) { - $target = $suggestedTarget; - } else { - if ($shareType == self::SHARE_TYPE_GROUP) { - $target = $backend->generateTarget($itemSource, false, $exclude); - } else { - $target = $backend->generateTarget($itemSource, $shareWith, $exclude); - } - if (is_array($exclude) && in_array($target, $exclude)) { - break; - } - } - // Check if target already exists - $checkTarget = self::getItems($itemType, $target, $shareType, $shareWith); - if (!empty($checkTarget)) { - foreach ($checkTarget as $item) { - // Skip item if it is the group parent row - if (isset($groupParent) && $item['id'] == $groupParent) { - if (count($checkTarget) == 1) { - return $target; - } else { - continue; - } - } - if ($item['uid_owner'] == $uidOwner) { - if ($itemType == 'file' || $itemType == 'folder') { - if ($item['file_source'] == \OC_FileCache::getId($itemSource)) { - return $target; - } - } else if ($item['item_source'] == $itemSource) { - return $target; - } - } - } - if (!isset($exclude)) { - $exclude = array(); - } - // Find similar targets to improve backend's chances to generate a unqiue target - if ($userAndGroups) { - if ($column == 'file_target') { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'); - $result = $checkTargets->execute(array(self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique)); - } else { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'); - $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique)); - } - } else { - if ($column == 'file_target') { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` = ? AND `share_with` = ?'); - $result = $checkTargets->execute(array(self::SHARE_TYPE_GROUP, $shareWith)); - } else { - $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` = ? AND `share_with` = ?'); - $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_GROUP, $shareWith)); - } - } - while ($row = $result->fetchRow()) { - $exclude[] = $row[$column]; - } - } else { - return $target; - } - } - } - $message = 'Sharing backend registered for '.$itemType.' did not generate a unique target for '.$itemSource; - \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); - throw new \Exception($message); - } - - /** - * @brief Delete all reshares of an item - * @param int Id of item to delete - * @param bool If true, exclude the parent from the delete (optional) - * @param string The user that the parent was shared with (optinal) - */ - private static function delete($parent, $excludeParent = false, $uidOwner = null) { - $ids = array($parent); - $parents = array($parent); - while (!empty($parents)) { - $parents = "'".implode("','", $parents)."'"; - // Check the owner on the first search of reshares, useful for finding and deleting the reshares by a single user of a group share - if (count($ids) == 1 && isset($uidOwner)) { - $query = \OC_DB::prepare('SELECT `id`, `uid_owner`, `item_type`, `item_target`, `parent` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.') AND `uid_owner` = ?'); - $result = $query->execute(array($uidOwner)); - } else { - $query = \OC_DB::prepare('SELECT `id`, `item_type`, `item_target`, `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')'); - $result = $query->execute(); - } - // Reset parents array, only go through loop again if items are found - $parents = array(); - while ($item = $result->fetchRow()) { - // Search for a duplicate parent share, this occurs when an item is shared to the same user through a group and user or the same item is shared by different users - $userAndGroups = array_merge(array($item['uid_owner']), \OC_Group::getUserGroups($item['uid_owner'])); - $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `item_type` = ? AND `item_target` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\') AND `uid_owner` != ? AND `id` != ?'); - $duplicateParent = $query->execute(array($item['item_type'], $item['item_target'], self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique, $item['uid_owner'], $item['parent']))->fetchRow(); - if ($duplicateParent) { - // Change the parent to the other item id if share permission is granted - if ($duplicateParent['permissions'] & self::PERMISSION_SHARE) { - $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `parent` = ? WHERE `id` = ?'); - $query->execute(array($duplicateParent['id'], $item['id'])); - continue; - } - } - $ids[] = $item['id']; - $parents[] = $item['id']; - } - } - if ($excludeParent) { - unset($ids[0]); - } - if (!empty($ids)) { - $ids = "'".implode("','", $ids)."'"; - $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `id` IN ('.$ids.')'); - $query->execute(); - } - } - - /** - * Hook Listeners - */ - - public static function post_deleteUser($arguments) { - // Delete any items shared with the deleted user - $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `share_with` = ? AND `share_type` = ? OR `share_type` = ?'); - $result = $query->execute(array($arguments['uid'], self::SHARE_TYPE_USER, self::$shareTypeGroupUserUnique)); - // Delete any items the deleted user shared - $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*share` WHERE `uid_owner` = ?'); - $result = $query->execute(array($arguments['uid'])); - while ($item = $result->fetchRow()) { - self::delete($item['id']); - } - } - - public static function post_addToGroup($arguments) { - // Find the group shares and check if the user needs a unique target - $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `share_type` = ? AND `share_with` = ?'); - $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'])); - $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)'); - while ($item = $result->fetchRow()) { - if ($item['item_type'] == 'file' || $item['item_type'] == 'file') { - $itemTarget = null; - } else { - $itemTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['item_target'], $item['id']); - } - if (isset($item['file_source'])) { - $fileTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['file_target'], $item['id']); - } else { - $fileTarget = null; - } - // Insert an extra row for the group share if the item or file target is unique for this user - if ($itemTarget != $item['item_target'] || $fileTarget != $item['file_target']) { - $query->execute(array($item['item_type'], $item['item_source'], $itemTarget, $item['id'], self::$shareTypeGroupUserUnique, $arguments['uid'], $item['uid_owner'], $item['permissions'], $item['stime'], $item['file_source'], $fileTarget)); - \OC_DB::insertid('*PREFIX*share'); - } - } - } - - public static function post_removeFromGroup($arguments) { - // TODO Don't call if user deleted? - $query = \OC_DB::prepare('SELECT `id`, `share_type` FROM `*PREFIX*share` WHERE (`share_type` = ? AND `share_with` = ?) OR (`share_type` = ? AND `share_with` = ?)'); - $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'], self::$shareTypeGroupUserUnique, $arguments['uid'])); - while ($item = $result->fetchRow()) { - if ($item['share_type'] == self::SHARE_TYPE_GROUP) { - // Delete all reshares by this user of the group share - self::delete($item['id'], true, $arguments['uid']); - } else { - self::delete($item['id']); - } - } - } - - public static function post_deleteGroup($arguments) { - $query = \OC_DB::prepare('SELECT id FROM `*PREFIX*share` WHERE `share_type` = ? AND `share_with` = ?'); - $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'])); - while ($item = $result->fetchRow()) { - self::delete($item['id']); - } - } - -} - -/** -* Interface that apps must implement to share content. -*/ -interface Share_Backend { - - /** - * @brief Get the source of the item to be stored in the database - * @param string Item source - * @param string Owner of the item - * @return mixed|array|false Source - * - * Return an array if the item is file dependent, the array needs two keys: 'item' and 'file' - * Return false if the item does not exist for the user - * - * The formatItems() function will translate the source returned back into the item - */ - public function isValidSource($itemSource, $uidOwner); - - /** - * @brief Get a unique name of the item for the specified user - * @param string Item source - * @param string|false User the item is being shared with - * @param array|null List of similar item names already existing as shared items - * @return string Target name - * - * This function needs to verify that the user does not already have an item with this name. - * If it does generate a new name e.g. name_# - */ - public function generateTarget($itemSource, $shareWith, $exclude = null); - - /** - * @brief Converts the shared item sources back into the item in the specified format - * @param array Shared items - * @param int Format - * @return ? - * - * The items array is a 3-dimensional array with the item_source as the first key and the share id as the second key to an array with the share info. - * The key/value pairs included in the share info depend on the function originally called: - * If called by getItem(s)Shared: id, item_type, item, item_source, share_type, share_with, permissions, stime, file_source - * If called by getItem(s)SharedWith: id, item_type, item, item_source, item_target, share_type, share_with, permissions, stime, file_source, file_target - * This function allows the backend to control the output of shared items with custom formats. - * It is only called through calls to the public getItem(s)Shared(With) functions. - */ - public function formatItems($items, $format, $parameters = null); - -} - -/** -* Interface for share backends that share content that is dependent on files. -* Extends the Share_Backend interface. -*/ -interface Share_Backend_File_Dependent extends Share_Backend { - - /** - * @brief Get the file path of the item - * @param - * @param - * @return - */ - public function getFilePath($itemSource, $uidOwner); - -} - -/** -* Interface for collections of of items implemented by another share backend. -* Extends the Share_Backend interface. -*/ -interface Share_Backend_Collection extends Share_Backend { - - /** - * @brief Get the sources of the children of the item - * @param string Item source - * @return array Returns an array of children each inside an array with the keys: source, target, and file_path if applicable - */ - public function getChildren($itemSource); - -} +. +*/ +namespace OCP; + +/** +* This class provides the ability for apps to share their content between users. +* Apps must create a backend class that implements OCP\Share_Backend and register it with this class. +* +* It provides the following hooks: +* - post_shared +*/ +class Share { + + const SHARE_TYPE_USER = 0; + const SHARE_TYPE_GROUP = 1; + const SHARE_TYPE_LINK = 3; + const SHARE_TYPE_EMAIL = 4; + const SHARE_TYPE_CONTACT = 5; + const SHARE_TYPE_REMOTE = 6; + + /** CRUDS permissions (Create, Read, Update, Delete, Share) using a bitmask + * Construct permissions for share() and setPermissions with Or (|) e.g. Give user read and update permissions: PERMISSION_READ | PERMISSION_UPDATE + * Check if permission is granted with And (&) e.g. Check if delete is granted: if ($permissions & PERMISSION_DELETE) + * Remove permissions with And (&) and Not (~) e.g. Remove the update permission: $permissions &= ~PERMISSION_UPDATE + * Apps are required to handle permissions on their own, this class only stores and manages the permissions of shares + * @see lib/public/constants.php + */ + + const FORMAT_NONE = -1; + const FORMAT_STATUSES = -2; + const FORMAT_SOURCES = -3; + + const TOKEN_LENGTH = 32; // see db_structure.xml + + private static $shareTypeUserAndGroups = -1; + private static $shareTypeGroupUserUnique = 2; + private static $backends = array(); + private static $backendTypes = array(); + + /** + * @brief Register a sharing backend class that implements OCP\Share_Backend for an item type + * @param string Item type + * @param string Backend class + * @param string (optional) Depends on item type + * @param array (optional) List of supported file extensions if this item type depends on files + * @return Returns true if backend is registered or false if error + */ + public static function registerBackend($itemType, $class, $collectionOf = null, $supportedFileExtensions = null) { + if (self::isEnabled()) { + if (!isset(self::$backendTypes[$itemType])) { + self::$backendTypes[$itemType] = array('class' => $class, 'collectionOf' => $collectionOf, 'supportedFileExtensions' => $supportedFileExtensions); + if(count(self::$backendTypes) === 1) { + \OC_Util::addScript('core', 'share'); + \OC_Util::addStyle('core', 'share'); + } + return true; + } + \OC_Log::write('OCP\Share', 'Sharing backend '.$class.' not registered, '.self::$backendTypes[$itemType]['class'].' is already registered for '.$itemType, \OC_Log::WARN); + } + return false; + } + + /** + * @brief Check if the Share API is enabled + * @return Returns true if enabled or false + * + * The Share API is enabled by default if not configured + * + */ + public static function isEnabled() { + if (\OC_Appconfig::getValue('core', 'shareapi_enabled', 'yes') == 'yes') { + return true; + } + return false; + } + + /** + * @brief Get the items of item type shared with the current user + * @param string Item type + * @param int Format (optional) Format type must be defined by the backend + * @param int Number of items to return (optional) Returns all by default + * @return Return depends on format + */ + public static function getItemsSharedWith($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) { + return self::getItems($itemType, null, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, $limit, $includeCollections); + } + + /** + * @brief Get the item of item type shared with the current user + * @param string Item type + * @param string Item target + * @param int Format (optional) Format type must be defined by the backend + * @return Return depends on format + */ + public static function getItemSharedWith($itemType, $itemTarget, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { + return self::getItems($itemType, $itemTarget, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections); + } + + /** + * @brief Get the item of item type shared with the current user by source + * @param string Item type + * @param string Item source + * @param int Format (optional) Format type must be defined by the backend + * @return Return depends on format + */ + public static function getItemSharedWithBySource($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { + return self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections, true); + } + + /** + * @brief Get the item of item type shared by a link + * @param string Item type + * @param string Item source + * @param string Owner of link + * @return Item + */ + public static function getItemSharedWithByLink($itemType, $itemSource, $uidOwner) { + return self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1); + } + + /** + * @brief Get the item shared by a token + * @param string token + * @return Item + */ + public static function getShareByToken($token) { + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `token` = ?',1); + $result = $query->execute(array($token)); + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', token=' . $token, \OC_Log::ERROR); + } + return $result->fetchRow(); + } + + /** + * @brief Get the shared items of item type owned by the current user + * @param string Item type + * @param int Format (optional) Format type must be defined by the backend + * @param int Number of items to return (optional) Returns all by default + * @return Return depends on format + */ + public static function getItemsShared($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) { + return self::getItems($itemType, null, null, null, \OC_User::getUser(), $format, $parameters, $limit, $includeCollections); + } + + /** + * @brief Get the shared item of item type owned by the current user + * @param string Item type + * @param string Item source + * @param int Format (optional) Format type must be defined by the backend + * @return Return depends on format + */ + public static function getItemShared($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) { + return self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), $format, $parameters, -1, $includeCollections); + } + + /** + * @brief Share an item with a user, group, or via private link + * @param string Item type + * @param string Item source + * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK + * @param string User or group the item is being shared with + * @param int CRUDS permissions + * @return bool|string Returns true on success or false on failure, Returns token on success for links + */ + public static function shareItem($itemType, $itemSource, $shareType, $shareWith, $permissions) { + $uidOwner = \OC_User::getUser(); + $sharingPolicy = \OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'); + // Verify share type and sharing conditions are met + if ($shareType === self::SHARE_TYPE_USER) { + if ($shareWith == $uidOwner) { + $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is the item owner'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + if (!\OC_User::userExists($shareWith)) { + $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' does not exist'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + if ($sharingPolicy == 'groups_only') { + $inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith)); + if (empty($inGroup)) { + $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member of any groups that '.$uidOwner.' is a member of'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + } + // Check if the item source is already shared with the user, either from the same owner or a different user + if ($checkExists = self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) { + // Only allow the same share to occur again if it is the same owner and is not a user share, this use case is for increasing permissions for a specific user + if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { + $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + } + } else if ($shareType === self::SHARE_TYPE_GROUP) { + if (!\OC_Group::groupExists($shareWith)) { + $message = 'Sharing '.$itemSource.' failed, because the group '.$shareWith.' does not exist'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + if ($sharingPolicy == 'groups_only' && !\OC_Group::inGroup($uidOwner, $shareWith)) { + $message = 'Sharing '.$itemSource.' failed, because '.$uidOwner.' is not a member of the group '.$shareWith; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + // Check if the item source is already shared with the group, either from the same owner or a different user + // The check for each user in the group is done inside the put() function + if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_GROUP, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) { + // Only allow the same share to occur again if it is the same owner and is not a group share, this use case is for increasing permissions for a specific user + if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { + $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + } + // Convert share with into an array with the keys group and users + $group = $shareWith; + $shareWith = array(); + $shareWith['group'] = $group; + $shareWith['users'] = array_diff(\OC_Group::usersInGroup($group), array($uidOwner)); + } else if ($shareType === self::SHARE_TYPE_LINK) { + if (\OC_Appconfig::getValue('core', 'shareapi_allow_links', 'yes') == 'yes') { + // when updating a link share + if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1)) { + // remember old token + $oldToken = $checkExists['token']; + //delete the old share + self::delete($checkExists['id']); + } + + // Generate hash of password - same method as user passwords + if (isset($shareWith)) { + $forcePortable = (CRYPT_BLOWFISH != 1); + $hasher = new \PasswordHash(8, $forcePortable); + $shareWith = $hasher->HashPassword($shareWith.\OC_Config::getValue('passwordsalt', '')); + } + + // Generate token + if (isset($oldToken)) { + $token = $oldToken; + } else { + $token = \OC_Util::generate_random_bytes(self::TOKEN_LENGTH); + } + $result = self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, null, $token); + if ($result) { + return $token; + } else { + return false; + } + } + $message = 'Sharing '.$itemSource.' failed, because sharing with links is not allowed'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + return false; +// } else if ($shareType === self::SHARE_TYPE_CONTACT) { +// if (!\OC_App::isEnabled('contacts')) { +// $message = 'Sharing '.$itemSource.' failed, because the contacts app is not enabled'; +// \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); +// return false; +// } +// $vcard = \OC_Contacts_App::getContactVCard($shareWith); +// if (!isset($vcard)) { +// $message = 'Sharing '.$itemSource.' failed, because the contact does not exist'; +// \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); +// throw new \Exception($message); +// } +// $details = \OC_Contacts_VCard::structureContact($vcard); +// // TODO Add ownCloud user to contacts vcard +// if (!isset($details['EMAIL'])) { +// $message = 'Sharing '.$itemSource.' failed, because no email address is associated with the contact'; +// \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); +// throw new \Exception($message); +// } +// return self::shareItem($itemType, $itemSource, self::SHARE_TYPE_EMAIL, $details['EMAIL'], $permissions); + } else { + // Future share types need to include their own conditions + $message = 'Share type '.$shareType.' is not valid for '.$itemSource; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + // If the item is a folder, scan through the folder looking for equivalent item types + if ($itemType == 'folder') { + $parentFolder = self::put('folder', $itemSource, $shareType, $shareWith, $uidOwner, $permissions, true); + if ($parentFolder && $files = \OC_Files::getDirectoryContent($itemSource)) { + for ($i = 0; $i < count($files); $i++) { + $name = substr($files[$i]['name'], strpos($files[$i]['name'], $itemSource) - strlen($itemSource)); + if ($files[$i]['mimetype'] == 'httpd/unix-directory' && $children = \OC_Files::getDirectoryContent($name, '/')) { + // Continue scanning into child folders + array_push($files, $children); + } else { + // Check file extension for an equivalent item type to convert to + $extension = strtolower(substr($itemSource, strrpos($itemSource, '.') + 1)); + foreach (self::$backends as $type => $backend) { + if (isset($backend->dependsOn) && $backend->dependsOn == 'file' && isset($backend->supportedFileExtensions) && in_array($extension, $backend->supportedFileExtensions)) { + $itemType = $type; + break; + } + } + // Pass on to put() to check if this item should be converted, the item won't be inserted into the database unless it can be converted + self::put($itemType, $name, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder); + } + } + return true; + } + return false; + } else { + // Put the item into the database + return self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions); + } + } + + /** + * @brief Unshare an item from a user, group, or delete a private link + * @param string Item type + * @param string Item source + * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK + * @param string User or group the item is being shared with + * @return Returns true on success or false on failure + */ + public static function unshare($itemType, $itemSource, $shareType, $shareWith) { + if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1)) { + self::delete($item['id']); + return true; + } + return false; + } + + /** + * @brief Unshare an item from all users, groups, and remove all links + * @param string Item type + * @param string Item source + * @return Returns true on success or false on failure + */ + public static function unshareAll($itemType, $itemSource) { + if ($shares = self::getItemShared($itemType, $itemSource)) { + foreach ($shares as $share) { + self::delete($share['id']); + } + return true; + } + return false; + } + + /** + * @brief Unshare an item shared with the current user + * @param string Item type + * @param string Item target + * @return Returns true on success or false on failure + * + * Unsharing from self is not allowed for items inside collections + * + */ + public static function unshareFromSelf($itemType, $itemTarget) { + if ($item = self::getItemSharedWith($itemType, $itemTarget)) { + if ((int)$item['share_type'] === self::SHARE_TYPE_GROUP) { + // Insert an extra row for the group share and set permission to 0 to prevent it from showing up for the user + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)'); + $query->execute(array($item['item_type'], $item['item_source'], $item['item_target'], $item['id'], self::$shareTypeGroupUserUnique, \OC_User::getUser(), $item['uid_owner'], 0, $item['stime'], $item['file_source'], $item['file_target'])); + \OC_DB::insertid('*PREFIX*share'); + // Delete all reshares by this user of the group share + self::delete($item['id'], true, \OC_User::getUser()); + } else if ((int)$item['share_type'] === self::$shareTypeGroupUserUnique) { + // Set permission to 0 to prevent it from showing up for the user + $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = ? WHERE `id` = ?'); + $query->execute(array(0, $item['id'])); + self::delete($item['id'], true); + } else { + self::delete($item['id']); + } + return true; + } + return false; + } + + /** + * @brief Set the permissions of an item for a specific user or group + * @param string Item type + * @param string Item source + * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK + * @param string User or group the item is being shared with + * @param int CRUDS permissions + * @return Returns true on success or false on failure + */ + public static function setPermissions($itemType, $itemSource, $shareType, $shareWith, $permissions) { + if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1, false)) { + // Check if this item is a reshare and verify that the permissions granted don't exceed the parent shared item + if (isset($item['parent'])) { + $query = \OC_DB::prepare('SELECT `permissions` FROM `*PREFIX*share` WHERE `id` = ?', 1); + $result = $query->execute(array($item['parent']))->fetchRow(); + if (~(int)$result['permissions'] & $permissions) { + $message = 'Setting permissions for '.$itemSource.' failed, because the permissions exceed permissions granted to '.\OC_User::getUser(); + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + } + $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = ? WHERE `id` = ?'); + $query->execute(array($permissions, $item['id'])); + // Check if permissions were removed + if ($item['permissions'] & ~$permissions) { + // If share permission is removed all reshares must be deleted + if (($item['permissions'] & PERMISSION_SHARE) && (~$permissions & PERMISSION_SHARE)) { + self::delete($item['id'], true); + } else { + $ids = array(); + $parents = array($item['id']); + while (!empty($parents)) { + $parents = "'".implode("','", $parents)."'"; + $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')'); + $result = $query->execute(); + // Reset parents array, only go through loop again if items are found that need permissions removed + $parents = array(); + while ($item = $result->fetchRow()) { + // Check if permissions need to be removed + if ($item['permissions'] & ~$permissions) { + // Add to list of items that need permissions removed + $ids[] = $item['id']; + $parents[] = $item['id']; + } + } + } + // Remove the permissions for all reshares of this item + if (!empty($ids)) { + $ids = "'".implode("','", $ids)."'"; + $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = `permissions` & ? WHERE `id` IN ('.$ids.')'); + $query->execute(array($permissions)); + } + } + } + return true; + } + $message = 'Setting permissions for '.$itemSource.' failed, because the item was not found'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + + public static function setExpirationDate($itemType, $itemSource, $date) { + if ($items = self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), self::FORMAT_NONE, null, -1, false)) { + if (!empty($items)) { + if ($date == '') { + $date = null; + } else { + $date = new \DateTime($date); + $date = date('Y-m-d H:i', $date->format('U') - $date->getOffset()); + } + $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `expiration` = ? WHERE `id` = ?'); + foreach ($items as $item) { + $query->execute(array($date, $item['id'])); + } + return true; + } + } + return false; + } + + /** + * @brief Get the backend class for the specified item type + * @param string Item type + * @return Sharing backend object + */ + private static function getBackend($itemType) { + if (isset(self::$backends[$itemType])) { + return self::$backends[$itemType]; + } else if (isset(self::$backendTypes[$itemType]['class'])) { + $class = self::$backendTypes[$itemType]['class']; + if (class_exists($class)) { + self::$backends[$itemType] = new $class; + if (!(self::$backends[$itemType] instanceof Share_Backend)) { + $message = 'Sharing backend '.$class.' must implement the interface OCP\Share_Backend'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + return self::$backends[$itemType]; + } else { + $message = 'Sharing backend '.$class.' not found'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + } + $message = 'Sharing backend for '.$itemType.' not found'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + + /** + * @brief Get a list of collection item types for the specified item type + * @param string Item type + * @return array + */ + private static function getCollectionItemTypes($itemType) { + $collectionTypes = array($itemType); + foreach (self::$backendTypes as $type => $backend) { + if (in_array($backend['collectionOf'], $collectionTypes)) { + $collectionTypes[] = $type; + } + } + if (!self::getBackend($itemType) instanceof Share_Backend_Collection) { + unset($collectionTypes[0]); + } + // Return array if collections were found or the item type is a collection itself - collections can be inside collections + if (count($collectionTypes) > 0) { + return $collectionTypes; + } + return false; + } + + /** + * @brief Get shared items from the database + * @param string Item type + * @param string Item source or target (optional) + * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, SHARE_TYPE_LINK, $shareTypeUserAndGroups, or $shareTypeGroupUserUnique + * @param string User or group the item is being shared with + * @param string User that is the owner of shared items (optional) + * @param int Format to convert items to with formatItems() + * @param mixed Parameters to pass to formatItems() + * @param int Number of items to return, -1 to return all matches (optional) + * @param bool Include collection item types (optional) + * @return mixed + * + * See public functions getItem(s)... for parameter usage + * + */ + private static function getItems($itemType, $item = null, $shareType = null, $shareWith = null, $uidOwner = null, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false, $itemShareWithBySource = false) { + if (!self::isEnabled()) { + if ($limit == 1 || (isset($uidOwner) && isset($item))) { + return false; + } else { + return array(); + } + } + $backend = self::getBackend($itemType); + // Get filesystem root to add it to the file target and remove from the file source, match file_source with the file cache + if ($itemType == 'file' || $itemType == 'folder') { + $root = \OC_Filesystem::getRoot(); + $where = 'INNER JOIN `*PREFIX*fscache` ON `file_source` = `*PREFIX*fscache`.`id`'; + if (!isset($item)) { + $where .= ' WHERE `file_target` IS NOT NULL'; + } + $fileDependent = true; + $queryArgs = array(); + } else { + $fileDependent = false; + $root = ''; + if ($includeCollections && !isset($item) && ($collectionTypes = self::getCollectionItemTypes($itemType))) { + // If includeCollections is true, find collections of this item type, e.g. a music album contains songs + if (!in_array($itemType, $collectionTypes)) { + $itemTypes = array_merge(array($itemType), $collectionTypes); + } else { + $itemTypes = $collectionTypes; + } + $placeholders = join(',', array_fill(0, count($itemTypes), '?')); + $where .= ' WHERE `item_type` IN ('.$placeholders.'))'; + $queryArgs = $itemTypes; + } else { + $where = ' WHERE `item_type` = ?'; + $queryArgs = array($itemType); + } + } + if (isset($shareType)) { + // Include all user and group items + if ($shareType == self::$shareTypeUserAndGroups && isset($shareWith)) { + $where .= ' AND `share_type` IN (?,?,?)'; + $queryArgs[] = self::SHARE_TYPE_USER; + $queryArgs[] = self::SHARE_TYPE_GROUP; + $queryArgs[] = self::$shareTypeGroupUserUnique; + $userAndGroups = array_merge(array($shareWith), \OC_Group::getUserGroups($shareWith)); + $placeholders = join(',', array_fill(0, count($userAndGroups), '?')); + $where .= ' AND `share_with` IN ('.$placeholders.')'; + $queryArgs = array_merge($queryArgs, $userAndGroups); + // Don't include own group shares + $where .= ' AND `uid_owner` != ?'; + $queryArgs[] = $shareWith; + } else { + $where .= ' AND `share_type` = ?'; + $queryArgs[] = $shareType; + if (isset($shareWith)) { + $where .= ' AND `share_with` = ?'; + $queryArgs[] = $shareWith; + } + } + } + if (isset($uidOwner)) { + $where .= ' AND `uid_owner` = ?'; + $queryArgs[] = $uidOwner; + if (!isset($shareType)) { + // Prevent unique user targets for group shares from being selected + $where .= ' AND `share_type` != ?'; + $queryArgs[] = self::$shareTypeGroupUserUnique; + } + if ($itemType == 'file' || $itemType == 'folder') { + $column = 'file_source'; + } else { + $column = 'item_source'; + } + } else { + if ($itemType == 'file' || $itemType == 'folder') { + $column = 'file_target'; + } else { + $column = 'item_target'; + } + } + if (isset($item)) { + if ($includeCollections && $collectionTypes = self::getCollectionItemTypes($itemType)) { + $where .= ' AND ('; + } else { + $where .= ' AND'; + } + // If looking for own shared items, check item_source else check item_target + if (isset($uidOwner) || $itemShareWithBySource) { + // If item type is a file, file source needs to be checked in case the item was converted + if ($itemType == 'file' || $itemType == 'folder') { + $where .= ' `file_source` = ?'; + $column = 'file_source'; + } else { + $where .= ' `item_source` = ?'; + $column = 'item_source'; + } + } else { + if ($itemType == 'file' || $itemType == 'folder') { + $where .= ' `file_target` = ?'; + $item = \OC_Filesystem::normalizePath($item); + } else { + $where .= ' `item_target` = ?'; + } + } + $queryArgs[] = $item; + if ($includeCollections && $collectionTypes) { + $placeholders = join(',', array_fill(0, count($collectionTypes), '?')); + $where .= ' OR `item_type` IN ('.$placeholders.'))'; + $queryArgs = array_merge($queryArgs, $collectionTypes); + } + } + if ($limit != -1 && !$includeCollections) { + if ($shareType == self::$shareTypeUserAndGroups) { + // Make sure the unique user target is returned if it exists, unique targets should follow the group share in the database + // If the limit is not 1, the filtering can be done later + $where .= ' ORDER BY `*PREFIX*share`.`id` DESC'; + } + // The limit must be at least 3, because filtering needs to be done + if ($limit < 3) { + $queryLimit = 3; + } else { + $queryLimit = $limit; + } + } else { + $queryLimit = null; + } + // TODO Optimize selects + if ($format == self::FORMAT_STATUSES) { + if ($itemType == 'file' || $itemType == 'folder') { + $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `file_source`, `path`, `expiration`'; + } else { + $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `expiration`'; + } + } else { + if (isset($uidOwner)) { + if ($itemType == 'file' || $itemType == 'folder') { + $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `file_source`, `path`, `permissions`, `stime`, `expiration`, `token`'; + } else { + $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, `permissions`, `stime`, `file_source`, `expiration`, `token`'; + } + } else { + if ($fileDependent) { + if (($itemType == 'file' || $itemType == 'folder') && $format == \OC_Share_Backend_File::FORMAT_FILE_APP || $format == \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT) { + $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `uid_owner`, `share_type`, `share_with`, `file_source`, `path`, `file_target`, `permissions`, `expiration`, `name`, `ctime`, `mtime`, `mimetype`, `size`, `encrypted`, `versioned`, `writable`'; + } else { + $select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `item_target`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `uid_owner`, `file_source`, `path`, `file_target`, `permissions`, `stime`, `expiration`, `token`'; + } + } else { + $select = '*'; + } + } + } + $root = strlen($root); + $query = \OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*share` '.$where, $queryLimit); + $result = $query->execute($queryArgs); + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=' . $where, \OC_Log::ERROR); + } + $items = array(); + $targets = array(); + while ($row = $result->fetchRow()) { + // Filter out duplicate group shares for users with unique targets + if ($row['share_type'] == self::$shareTypeGroupUserUnique && isset($items[$row['parent']])) { + $row['share_type'] = self::SHARE_TYPE_GROUP; + $row['share_with'] = $items[$row['parent']]['share_with']; + // Remove the parent group share + unset($items[$row['parent']]); + if ($row['permissions'] == 0) { + continue; + } + } else if (!isset($uidOwner)) { + // Check if the same target already exists + if (isset($targets[$row[$column]])) { + // Check if the same owner shared with the user twice through a group and user share - this is allowed + $id = $targets[$row[$column]]; + if ($items[$id]['uid_owner'] == $row['uid_owner']) { + // Switch to group share type to ensure resharing conditions aren't bypassed + if ($items[$id]['share_type'] != self::SHARE_TYPE_GROUP) { + $items[$id]['share_type'] = self::SHARE_TYPE_GROUP; + $items[$id]['share_with'] = $row['share_with']; + } + // Switch ids if sharing permission is granted on only one share to ensure correct parent is used if resharing + if (~(int)$items[$id]['permissions'] & PERMISSION_SHARE && (int)$row['permissions'] & PERMISSION_SHARE) { + $items[$row['id']] = $items[$id]; + unset($items[$id]); + $id = $row['id']; + } + // Combine the permissions for the item + $items[$id]['permissions'] |= (int)$row['permissions']; + continue; + } + } else { + $targets[$row[$column]] = $row['id']; + } + } + // Remove root from file source paths if retrieving own shared items + if (isset($uidOwner) && isset($row['path'])) { + if (isset($row['parent'])) { + $row['path'] = '/Shared/'.basename($row['path']); + } else { + $row['path'] = substr($row['path'], $root); + } + } + if (isset($row['expiration'])) { + $time = new \DateTime(); + if ($row['expiration'] < date('Y-m-d H:i', $time->format('U') - $time->getOffset())) { + self::delete($row['id']); + continue; + } + } + $items[$row['id']] = $row; + } + if (!empty($items)) { + $collectionItems = array(); + foreach ($items as &$row) { + // Return only the item instead of a 2-dimensional array + if ($limit == 1 && $row['item_type'] == $itemType && $row[$column] == $item) { + if ($format == self::FORMAT_NONE) { + return $row; + } else { + break; + } + } + // Check if this is a collection of the requested item type + if ($includeCollections && $collectionTypes && in_array($row['item_type'], $collectionTypes)) { + if (($collectionBackend = self::getBackend($row['item_type'])) && $collectionBackend instanceof Share_Backend_Collection) { + // Collections can be inside collections, check if the item is a collection + if (isset($item) && $row['item_type'] == $itemType && $row[$column] == $item) { + $collectionItems[] = $row; + } else { + $collection = array(); + $collection['item_type'] = $row['item_type']; + if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') { + $collection['path'] = basename($row['path']); + } + $row['collection'] = $collection; + // Fetch all of the children sources + $children = $collectionBackend->getChildren($row[$column]); + foreach ($children as $child) { + $childItem = $row; + $childItem['item_type'] = $itemType; + if ($row['item_type'] != 'file' && $row['item_type'] != 'folder') { + $childItem['item_source'] = $child['source']; + $childItem['item_target'] = $child['target']; + } + if ($backend instanceof Share_Backend_File_Dependent) { + if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') { + $childItem['file_source'] = $child['source']; + } else { + $childItem['file_source'] = \OC_FileCache::getId($child['file_path']); + } + $childItem['file_target'] = \OC_Filesystem::normalizePath($child['file_path']); + } + if (isset($item)) { + if ($childItem[$column] == $item) { + // Return only the item instead of a 2-dimensional array + if ($limit == 1) { + if ($format == self::FORMAT_NONE) { + return $childItem; + } else { + // Unset the items array and break out of both loops + $items = array(); + $items[] = $childItem; + break 2; + } + } else { + $collectionItems[] = $childItem; + } + } + } else { + $collectionItems[] = $childItem; + } + } + } + } + // Remove collection item + unset($items[$row['id']]); + } + } + if (!empty($collectionItems)) { + $items = array_merge($items, $collectionItems); + } + if ($format == self::FORMAT_NONE) { + return $items; + } else if ($format == self::FORMAT_STATUSES) { + $statuses = array(); + // Switch column to path for files and folders, used for determining statuses inside of folders + if ($itemType == 'file' || $itemType == 'folder') { + $column = 'path'; + } + foreach ($items as $item) { + if ($item['share_type'] == self::SHARE_TYPE_LINK) { + $statuses[$item[$column]] = true; + } else if (!isset($statuses[$item[$column]])) { + $statuses[$item[$column]] = false; + } + } + return $statuses; + } else { + return $backend->formatItems($items, $format, $parameters); + } + } else if ($limit == 1 || (isset($uidOwner) && isset($item))) { + return false; + } + return array(); + } + + /** + * @brief Put shared item into the database + * @param string Item type + * @param string Item source + * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK + * @param string User or group the item is being shared with + * @param int CRUDS permissions + * @param bool|array Parent folder target (optional) + * @return bool Returns true on success or false on failure + */ + private static function put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder = null, $token = null) { + $backend = self::getBackend($itemType); + // Check if this is a reshare + if ($checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true)) { + // Check if attempting to share back to owner + if ($checkReshare['uid_owner'] == $shareWith && $shareType == self::SHARE_TYPE_USER) { + $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is the original sharer'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + // Check if share permissions is granted + if ((int)$checkReshare['permissions'] & PERMISSION_SHARE) { + if (~(int)$checkReshare['permissions'] & $permissions) { + $message = 'Sharing '.$itemSource.' failed, because the permissions exceed permissions granted to '.$uidOwner; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } else { + // TODO Don't check if inside folder + $parent = $checkReshare['id']; + $itemSource = $checkReshare['item_source']; + $fileSource = $checkReshare['file_source']; + $suggestedItemTarget = $checkReshare['item_target']; + $suggestedFileTarget = $checkReshare['file_target']; + $filePath = $checkReshare['file_target']; + } + } else { + $message = 'Sharing '.$itemSource.' failed, because resharing is not allowed'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + } else { + $parent = null; + $suggestedItemTarget = null; + $suggestedFileTarget = null; + if (!$backend->isValidSource($itemSource, $uidOwner)) { + $message = 'Sharing '.$itemSource.' failed, because the sharing backend for '.$itemType.' could not find its source'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + $parent = null; + if ($backend instanceof Share_Backend_File_Dependent) { + $filePath = $backend->getFilePath($itemSource, $uidOwner); + if ($itemType == 'file' || $itemType == 'folder') { + $fileSource = $itemSource; + } else { + $fileSource = \OC_FileCache::getId($filePath); + } + if ($fileSource == -1) { + $message = 'Sharing '.$itemSource.' failed, because the file could not be found in the file cache'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + } else { + $filePath = null; + $fileSource = null; + } + } + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`, `token`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); + // Share with a group + if ($shareType == self::SHARE_TYPE_GROUP) { + $groupItemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith['group'], $uidOwner, $suggestedItemTarget); + if (isset($fileSource)) { + if ($parentFolder) { + if ($parentFolder === true) { + $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget); + // Set group default file target for future use + $parentFolders[0]['folder'] = $groupFileTarget; + } else { + // Get group default file target + $groupFileTarget = $parentFolder[0]['folder'].$itemSource; + $parent = $parentFolder[0]['id']; + } + } else { + $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget); + } + } else { + $groupFileTarget = null; + } + $query->execute(array($itemType, $itemSource, $groupItemTarget, $parent, $shareType, $shareWith['group'], $uidOwner, $permissions, time(), $fileSource, $groupFileTarget, $token)); + // Save this id, any extra rows for this group share will need to reference it + $parent = \OC_DB::insertid('*PREFIX*share'); + // Loop through all users of this group in case we need to add an extra row + foreach ($shareWith['users'] as $uid) { + $itemTarget = self::generateTarget($itemType, $itemSource, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedItemTarget, $parent); + if (isset($fileSource)) { + if ($parentFolder) { + if ($parentFolder === true) { + $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent); + if ($fileTarget != $groupFileTarget) { + $parentFolders[$uid]['folder'] = $fileTarget; + } + } else if (isset($parentFolder[$uid])) { + $fileTarget = $parentFolder[$uid]['folder'].$itemSource; + $parent = $parentFolder[$uid]['id']; + } + } else { + $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent); + } + } else { + $fileTarget = null; + } + \OC_Hook::emit('OCP\Share', 'post_shared', array( + 'itemType' => $itemType, + 'itemSource' => $itemSource, + 'itemTarget' => $itemTarget, + 'parent' => $parent, + 'shareType' => self::$shareTypeGroupUserUnique, + 'shareWith' => $uid, + 'uidOwner' => $uidOwner, + 'permissions' => $permissions, + 'fileSource' => $fileSource, + 'fileTarget' => $fileTarget, + 'id' => $parent, + 'token' => $token + )); + // Insert an extra row for the group share if the item or file target is unique for this user + if ($itemTarget != $groupItemTarget || (isset($fileSource) && $fileTarget != $groupFileTarget)) { + $query->execute(array($itemType, $itemSource, $itemTarget, $parent, self::$shareTypeGroupUserUnique, $uid, $uidOwner, $permissions, time(), $fileSource, $fileTarget, $token)); + $id = \OC_DB::insertid('*PREFIX*share'); + } + } + if ($parentFolder === true) { + // Return parent folders to preserve file target paths for potential children + return $parentFolders; + } + } else { + $itemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedItemTarget); + if (isset($fileSource)) { + if ($parentFolder) { + if ($parentFolder === true) { + $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget); + $parentFolders['folder'] = $fileTarget; + } else { + $fileTarget = $parentFolder['folder'].$itemSource; + $parent = $parentFolder['id']; + } + } else { + $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget); + } + } else { + $fileTarget = null; + } + $query->execute(array($itemType, $itemSource, $itemTarget, $parent, $shareType, $shareWith, $uidOwner, $permissions, time(), $fileSource, $fileTarget, $token)); + $id = \OC_DB::insertid('*PREFIX*share'); + \OC_Hook::emit('OCP\Share', 'post_shared', array( + 'itemType' => $itemType, + 'itemSource' => $itemSource, + 'itemTarget' => $itemTarget, + 'parent' => $parent, + 'shareType' => $shareType, + 'shareWith' => $shareWith, + 'uidOwner' => $uidOwner, + 'permissions' => $permissions, + 'fileSource' => $fileSource, + 'fileTarget' => $fileTarget, + 'id' => $id, + 'token' => $token + )); + if ($parentFolder === true) { + $parentFolders['id'] = $id; + // Return parent folder to preserve file target paths for potential children + return $parentFolders; + } + } + return true; + } + + /** + * @brief Generate a unique target for the item + * @param string Item type + * @param string Item source + * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, or SHARE_TYPE_LINK + * @param string User or group the item is being shared with + * @param string The suggested target originating from a reshare (optional) + * @param int The id of the parent group share (optional) + * @return string Item target + */ + private static function generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedTarget = null, $groupParent = null) { + $backend = self::getBackend($itemType); + if ($shareType == self::SHARE_TYPE_LINK) { + if (isset($suggestedTarget)) { + return $suggestedTarget; + } + return $backend->generateTarget($itemSource, false); + } else { + if ($itemType == 'file' || $itemType == 'folder') { + $column = 'file_target'; + $columnSource = 'file_source'; + } else { + $column = 'item_target'; + $columnSource = 'item_source'; + } + if ($shareType == self::SHARE_TYPE_USER) { + // Share with is a user, so set share type to user and groups + $shareType = self::$shareTypeUserAndGroups; + $userAndGroups = array_merge(array($shareWith), \OC_Group::getUserGroups($shareWith)); + } else { + $userAndGroups = false; + } + $exclude = null; + // Backend has 3 opportunities to generate a unique target + for ($i = 0; $i < 2; $i++) { + // Check if suggested target exists first + if ($i == 0 && isset($suggestedTarget)) { + $target = $suggestedTarget; + } else { + if ($shareType == self::SHARE_TYPE_GROUP) { + $target = $backend->generateTarget($itemSource, false, $exclude); + } else { + $target = $backend->generateTarget($itemSource, $shareWith, $exclude); + } + if (is_array($exclude) && in_array($target, $exclude)) { + break; + } + } + // Check if target already exists + $checkTarget = self::getItems($itemType, $target, $shareType, $shareWith); + if (!empty($checkTarget)) { + foreach ($checkTarget as $item) { + // Skip item if it is the group parent row + if (isset($groupParent) && $item['id'] == $groupParent) { + if (count($checkTarget) == 1) { + return $target; + } else { + continue; + } + } + if ($item['uid_owner'] == $uidOwner) { + if ($itemType == 'file' || $itemType == 'folder') { + if ($item['file_source'] == \OC_FileCache::getId($itemSource)) { + return $target; + } + } else if ($item['item_source'] == $itemSource) { + return $target; + } + } + } + if (!isset($exclude)) { + $exclude = array(); + } + // Find similar targets to improve backend's chances to generate a unqiue target + if ($userAndGroups) { + if ($column == 'file_target') { + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'); + $result = $checkTargets->execute(array(self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique)); + } else { + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'); + $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique)); + } + } else { + if ($column == 'file_target') { + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` = ? AND `share_with` = ?'); + $result = $checkTargets->execute(array(self::SHARE_TYPE_GROUP, $shareWith)); + } else { + $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` = ? AND `share_with` = ?'); + $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_GROUP, $shareWith)); + } + } + while ($row = $result->fetchRow()) { + $exclude[] = $row[$column]; + } + } else { + return $target; + } + } + } + $message = 'Sharing backend registered for '.$itemType.' did not generate a unique target for '.$itemSource; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + throw new \Exception($message); + } + + /** + * @brief Delete all reshares of an item + * @param int Id of item to delete + * @param bool If true, exclude the parent from the delete (optional) + * @param string The user that the parent was shared with (optinal) + */ + private static function delete($parent, $excludeParent = false, $uidOwner = null) { + $ids = array($parent); + $parents = array($parent); + while (!empty($parents)) { + $parents = "'".implode("','", $parents)."'"; + // Check the owner on the first search of reshares, useful for finding and deleting the reshares by a single user of a group share + if (count($ids) == 1 && isset($uidOwner)) { + $query = \OC_DB::prepare('SELECT `id`, `uid_owner`, `item_type`, `item_target`, `parent` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.') AND `uid_owner` = ?'); + $result = $query->execute(array($uidOwner)); + } else { + $query = \OC_DB::prepare('SELECT `id`, `item_type`, `item_target`, `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')'); + $result = $query->execute(); + } + // Reset parents array, only go through loop again if items are found + $parents = array(); + while ($item = $result->fetchRow()) { + // Search for a duplicate parent share, this occurs when an item is shared to the same user through a group and user or the same item is shared by different users + $userAndGroups = array_merge(array($item['uid_owner']), \OC_Group::getUserGroups($item['uid_owner'])); + $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `item_type` = ? AND `item_target` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\') AND `uid_owner` != ? AND `id` != ?'); + $duplicateParent = $query->execute(array($item['item_type'], $item['item_target'], self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique, $item['uid_owner'], $item['parent']))->fetchRow(); + if ($duplicateParent) { + // Change the parent to the other item id if share permission is granted + if ($duplicateParent['permissions'] & PERMISSION_SHARE) { + $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `parent` = ? WHERE `id` = ?'); + $query->execute(array($duplicateParent['id'], $item['id'])); + continue; + } + } + $ids[] = $item['id']; + $parents[] = $item['id']; + } + } + if ($excludeParent) { + unset($ids[0]); + } + if (!empty($ids)) { + $ids = "'".implode("','", $ids)."'"; + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `id` IN ('.$ids.')'); + $query->execute(); + } + } + + /** + * Hook Listeners + */ + + public static function post_deleteUser($arguments) { + // Delete any items shared with the deleted user + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `share_with` = ? AND `share_type` = ? OR `share_type` = ?'); + $result = $query->execute(array($arguments['uid'], self::SHARE_TYPE_USER, self::$shareTypeGroupUserUnique)); + // Delete any items the deleted user shared + $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*share` WHERE `uid_owner` = ?'); + $result = $query->execute(array($arguments['uid'])); + while ($item = $result->fetchRow()) { + self::delete($item['id']); + } + } + + public static function post_addToGroup($arguments) { + // Find the group shares and check if the user needs a unique target + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `share_type` = ? AND `share_with` = ?'); + $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'])); + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)'); + while ($item = $result->fetchRow()) { + if ($item['item_type'] == 'file' || $item['item_type'] == 'file') { + $itemTarget = null; + } else { + $itemTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['item_target'], $item['id']); + } + if (isset($item['file_source'])) { + $fileTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['file_target'], $item['id']); + } else { + $fileTarget = null; + } + // Insert an extra row for the group share if the item or file target is unique for this user + if ($itemTarget != $item['item_target'] || $fileTarget != $item['file_target']) { + $query->execute(array($item['item_type'], $item['item_source'], $itemTarget, $item['id'], self::$shareTypeGroupUserUnique, $arguments['uid'], $item['uid_owner'], $item['permissions'], $item['stime'], $item['file_source'], $fileTarget)); + \OC_DB::insertid('*PREFIX*share'); + } + } + } + + public static function post_removeFromGroup($arguments) { + // TODO Don't call if user deleted? + $query = \OC_DB::prepare('SELECT `id`, `share_type` FROM `*PREFIX*share` WHERE (`share_type` = ? AND `share_with` = ?) OR (`share_type` = ? AND `share_with` = ?)'); + $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'], self::$shareTypeGroupUserUnique, $arguments['uid'])); + while ($item = $result->fetchRow()) { + if ($item['share_type'] == self::SHARE_TYPE_GROUP) { + // Delete all reshares by this user of the group share + self::delete($item['id'], true, $arguments['uid']); + } else { + self::delete($item['id']); + } + } + } + + public static function post_deleteGroup($arguments) { + $query = \OC_DB::prepare('SELECT id FROM `*PREFIX*share` WHERE `share_type` = ? AND `share_with` = ?'); + $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'])); + while ($item = $result->fetchRow()) { + self::delete($item['id']); + } + } + +} + +/** +* Interface that apps must implement to share content. +*/ +interface Share_Backend { + + /** + * @brief Get the source of the item to be stored in the database + * @param string Item source + * @param string Owner of the item + * @return mixed|array|false Source + * + * Return an array if the item is file dependent, the array needs two keys: 'item' and 'file' + * Return false if the item does not exist for the user + * + * The formatItems() function will translate the source returned back into the item + */ + public function isValidSource($itemSource, $uidOwner); + + /** + * @brief Get a unique name of the item for the specified user + * @param string Item source + * @param string|false User the item is being shared with + * @param array|null List of similar item names already existing as shared items + * @return string Target name + * + * This function needs to verify that the user does not already have an item with this name. + * If it does generate a new name e.g. name_# + */ + public function generateTarget($itemSource, $shareWith, $exclude = null); + + /** + * @brief Converts the shared item sources back into the item in the specified format + * @param array Shared items + * @param int Format + * @return ? + * + * The items array is a 3-dimensional array with the item_source as the first key and the share id as the second key to an array with the share info. + * The key/value pairs included in the share info depend on the function originally called: + * If called by getItem(s)Shared: id, item_type, item, item_source, share_type, share_with, permissions, stime, file_source + * If called by getItem(s)SharedWith: id, item_type, item, item_source, item_target, share_type, share_with, permissions, stime, file_source, file_target + * This function allows the backend to control the output of shared items with custom formats. + * It is only called through calls to the public getItem(s)Shared(With) functions. + */ + public function formatItems($items, $format, $parameters = null); + +} + +/** +* Interface for share backends that share content that is dependent on files. +* Extends the Share_Backend interface. +*/ +interface Share_Backend_File_Dependent extends Share_Backend { + + /** + * @brief Get the file path of the item + * @param + * @param + * @return + */ + public function getFilePath($itemSource, $uidOwner); + +} + +/** +* Interface for collections of of items implemented by another share backend. +* Extends the Share_Backend interface. +*/ +interface Share_Backend_Collection extends Share_Backend { + + /** + * @brief Get the sources of the children of the item + * @param string Item source + * @return array Returns an array of children each inside an array with the keys: source, target, and file_path if applicable + */ + public function getChildren($itemSource); + +} diff --git a/lib/public/util.php b/lib/public/util.php index 38da7e821717ee968d875bdf9576ee57d2e720fb..7b5b1abbded296873353858179cb40b0abcadef3 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -61,7 +61,7 @@ class Util { */ public static function sendMail( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='') { // call the internal mail class - \OC_MAIL::send( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc=''); + \OC_MAIL::send($toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html = 0, $altbody = '', $ccaddress = '', $ccname = '', $bcc = ''); } /** @@ -107,8 +107,8 @@ class Util { * @param int timestamp $timestamp * @param bool dateOnly option to ommit time from the result */ - public static function formatDate( $timestamp,$dateOnly=false) { - return(\OC_Util::formatDate( $timestamp,$dateOnly )); + public static function formatDate( $timestamp, $dateOnly=false) { + return(\OC_Util::formatDate( $timestamp, $dateOnly )); } /** diff --git a/lib/request.php b/lib/request.php old mode 100644 new mode 100755 index 87262d986255555467fea8485201f10f3cb274bf..c975c84a7117349a9af951ca9a6a5b2dbbb82de4 --- a/lib/request.php +++ b/lib/request.php @@ -18,6 +18,9 @@ class OC_Request { if(OC::$CLI) { return 'localhost'; } + if(OC_Config::getValue('overwritehost', '')<>''){ + return OC_Config::getValue('overwritehost'); + } if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { if (strpos($_SERVER['HTTP_X_FORWARDED_HOST'], ",") !== false) { $host = trim(array_pop(explode(",", $_SERVER['HTTP_X_FORWARDED_HOST']))); @@ -40,6 +43,9 @@ class OC_Request { * Returns the server protocol. It respects reverse proxy servers and load balancers */ public static function serverProtocol() { + if(OC_Config::getValue('overwriteprotocol', '')<>''){ + return OC_Config::getValue('overwriteprotocol'); + } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { $proto = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']); }else{ @@ -63,7 +69,7 @@ class OC_Request { $path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME'])); // following is taken from Sabre_DAV_URLUtil::decodePathSegment $path_info = rawurldecode($path_info); - $encoding = mb_detect_encoding($path_info, array('UTF-8','ISO-8859-1')); + $encoding = mb_detect_encoding($path_info, array('UTF-8', 'ISO-8859-1')); switch($encoding) { @@ -98,7 +104,7 @@ class OC_Request { $HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"]; if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false ) return 'x-gzip'; - else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false ) + else if( strpos($HTTP_ACCEPT_ENCODING, 'gzip') !== false ) return 'gzip'; return false; } diff --git a/lib/route.php b/lib/route.php new file mode 100644 index 0000000000000000000000000000000000000000..5901717c094430c54b81fd53b3090ad890895d11 --- /dev/null +++ b/lib/route.php @@ -0,0 +1,116 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +use Symfony\Component\Routing\Route; + +class OC_Route extends Route { + /** + * Specify the method when this route is to be used + * + * @param string $method HTTP method (uppercase) + */ + public function method($method) { + $this->setRequirement('_method', strtoupper($method)); + return $this; + } + + /** + * Specify POST as the method to use with this route + */ + public function post() { + $this->method('POST'); + return $this; + } + + /** + * Specify GET as the method to use with this route + */ + public function get() { + $this->method('GET'); + return $this; + } + + /** + * Specify PUT as the method to use with this route + */ + public function put() { + $this->method('PUT'); + return $this; + } + + /** + * Specify DELETE as the method to use with this route + */ + public function delete() { + $this->method('DELETE'); + return $this; + } + + /** + * Defaults to use for this route + * + * @param array $defaults The defaults + */ + public function defaults($defaults) { + $action = $this->getDefault('action'); + $this->setDefaults($defaults); + if (isset($defaults['action'])) { + $action = $defaults['action']; + } + $this->action($action); + return $this; + } + + /** + * Requirements for this route + * + * @param array $requirements The requirements + */ + public function requirements($requirements) { + $method = $this->getRequirement('_method'); + $this->setRequirements($requirements); + if (isset($requirements['_method'])) { + $method = $requirements['_method']; + } + if ($method) { + $this->method($method); + } + return $this; + } + + /** + * The action to execute when this route matches + * @param string|callable $class the class or a callable + * @param string $function the function to use with the class + * + * This function is called with $class set to a callable or + * to the class with $function + */ + public function action($class, $function = null) { + $action = array($class, $function); + if (is_null($function)) { + $action = $class; + } + $this->setDefault('action', $action); + return $this; + } + + /** + * The action to execute when this route matches, includes a file like + * it is called directly + * @param $file + */ + public function actionInclude($file) { + $function = create_function('$param', + 'unset($param["_route"]);' + .'$_GET=array_merge($_GET, $param);' + .'unset($param);' + .'require_once "'.$file.'";'); + $this->action($function); + } +} diff --git a/lib/router.php b/lib/router.php new file mode 100644 index 0000000000000000000000000000000000000000..8cb8fd4f33b3e68664ba8f228f2ff5228c7388de --- /dev/null +++ b/lib/router.php @@ -0,0 +1,173 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +use Symfony\Component\Routing\Matcher\UrlMatcher; +use Symfony\Component\Routing\Generator\UrlGenerator; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\RouteCollection; +//use Symfony\Component\Routing\Route; + +class OC_Router { + protected $collections = array(); + protected $collection = null; + protected $root = null; + + protected $generator = null; + protected $routing_files; + protected $cache_key; + + public function __construct() { + $baseUrl = OC_Helper::linkTo('', 'index.php'); + $method = $_SERVER['REQUEST_METHOD']; + $host = OC_Request::serverHost(); + $schema = OC_Request::serverProtocol(); + $this->context = new RequestContext($baseUrl, $method, $host, $schema); + // TODO cache + $this->root = $this->getCollection('root'); + } + + public function getRoutingFiles() { + if (!isset($this->routing_files)) { + $this->routing_files = array(); + foreach(OC_APP::getEnabledApps() as $app) { + $file = OC_App::getAppPath($app).'/appinfo/routes.php'; + if(file_exists($file)) { + $this->routing_files[$app] = $file; + } + } + } + return $this->routing_files; + } + + public function getCacheKey() { + if (!isset($this->cache_key)) { + $files = $this->getRoutingFiles(); + $files[] = 'settings/routes.php'; + $files[] = 'core/routes.php'; + $this->cache_key = OC_Cache::generateCacheKeyFromFiles($files); + } + return $this->cache_key; + } + + /** + * loads the api routes + */ + public function loadRoutes() { + foreach($this->getRoutingFiles() as $app => $file) { + $this->useCollection($app); + require_once $file; + $collection = $this->getCollection($app); + $this->root->addCollection($collection, '/apps/'.$app); + } + $this->useCollection('root'); + require_once 'settings/routes.php'; + require_once 'core/routes.php'; + } + + protected function getCollection($name) { + if (!isset($this->collections[$name])) { + $this->collections[$name] = new RouteCollection(); + } + return $this->collections[$name]; + } + + /** + * Sets the collection to use for adding routes + * + * @param string $name Name of the colletion to use. + */ + public function useCollection($name) { + $this->collection = $this->getCollection($name); + } + + /** + * Create a OC_Route. + * + * @param string $name Name of the route to create. + * @param string $pattern The pattern to match + * @param array $defaults An array of default parameter values + * @param array $requirements An array of requirements for parameters (regexes) + */ + public function create($name, $pattern, array $defaults = array(), array $requirements = array()) { + $route = new OC_Route($pattern, $defaults, $requirements); + $this->collection->add($name, $route); + return $route; + } + + /** + * Find the route matching $url. + * + * @param string $url The url to find + */ + public function match($url) { + $matcher = new UrlMatcher($this->root, $this->context); + $parameters = $matcher->match($url); + if (isset($parameters['action'])) { + $action = $parameters['action']; + if (!is_callable($action)) { + var_dump($action); + throw new Exception('not a callable action'); + } + unset($parameters['action']); + call_user_func($action, $parameters); + } elseif (isset($parameters['file'])) { + include $parameters['file']; + } else { + throw new Exception('no action available'); + } + } + + /** + * Get the url generator + * + */ + public function getGenerator() + { + if (null !== $this->generator) { + return $this->generator; + } + + return $this->generator = new UrlGenerator($this->root, $this->context); + } + + /** + * Generate url based on $name and $parameters + * + * @param string $name Name of the route to use. + * @param array $parameters Parameters for the route + */ + public function generate($name, $parameters = array(), $absolute = false) + { + return $this->getGenerator()->generate($name, $parameters, $absolute); + } + + /** + * Generate JSON response for routing in javascript + */ + public static function JSRoutes() + { + $router = OC::getRouter(); + + $etag = $router->getCacheKey(); + OC_Response::enableCaching(); + OC_Response::setETagHeader($etag); + + $root = $router->getCollection('root'); + $routes = array(); + foreach($root->all() as $name => $route) { + $compiled_route = $route->compile(); + $defaults = $route->getDefaults(); + unset($defaults['action']); + $routes[$name] = array( + 'tokens' => $compiled_route->getTokens(), + 'defaults' => $defaults, + ); + } + OCP\JSON::success ( array( 'data' => $routes ) ); + } +} diff --git a/lib/search.php b/lib/search.php index 0b6ad050024349649dc60184752a73edacfd5153..3c3378ad13cbb12c31f8db4e25e51f574a330e6b 100644 --- a/lib/search.php +++ b/lib/search.php @@ -40,8 +40,8 @@ class OC_Search{ * register a new search provider to be used * @param string $provider class name of a OC_Search_Provider */ - public static function registerProvider($class,$options=array()) { - self::$registeredProviders[]=array('class'=>$class,'options'=>$options); + public static function registerProvider($class, $options=array()) { + self::$registeredProviders[]=array('class'=>$class, 'options'=>$options); } /** diff --git a/lib/search/provider/file.php b/lib/search/provider/file.php index 24832296c593a618635825cc48b3574665986377..ea536ef77de2f692460db9bc2cab3f905c2a70a8 100644 --- a/lib/search/provider/file.php +++ b/lib/search/provider/file.php @@ -2,8 +2,9 @@ class OC_Search_Provider_File extends OC_Search_Provider{ function search($query) { - $files=OC_FileCache::search($query,true); + $files=OC_FileCache::search($query, true); $results=array(); + $l=OC_L10N::get('lib'); foreach($files as $fileData) { $path = $fileData['path']; $mime = $fileData['mimetype']; @@ -13,25 +14,25 @@ class OC_Search_Provider_File extends OC_Search_Provider{ $skip = false; if($mime=='httpd/unix-directory') { $link = OC_Helper::linkTo( 'files', 'index.php', array('dir' => $path)); - $type = 'Files'; + $type = (string)$l->t('Files'); }else{ - $link = OC_Helper::linkTo( 'files', 'download.php', array('file' => $path)); + $link = OC_Helper::linkToRoute( 'download', array('file' => $path)); $mimeBase = $fileData['mimepart']; switch($mimeBase) { case 'audio': $skip = true; break; case 'text': - $type = 'Text'; + $type = (string)$l->t('Text'); break; case 'image': - $type = 'Images'; + $type = (string)$l->t('Images'); break; default: if($mime=='application/xml') { - $type = 'Text'; + $type = (string)$l->t('Text'); }else{ - $type = 'Files'; + $type = (string)$l->t('Files'); } } } diff --git a/lib/search/result.php b/lib/search/result.php index 63b5cfabce6ef2bd428a237d48452102a9f73a2c..08beaea151ca77657521532e87db9c841df6c1d4 100644 --- a/lib/search/result.php +++ b/lib/search/result.php @@ -15,7 +15,7 @@ class OC_Search_Result{ * @param string $link link for the result * @param string $type the type of result as human readable string ('File', 'Music', etc) */ - public function __construct($name,$text,$link,$type) { + public function __construct($name, $text, $link, $type) { $this->name=$name; $this->text=$text; $this->link=$link; diff --git a/lib/setup.php b/lib/setup.php index 16b9ec68df68aceb10c95b8e4965dbd1a5daafb9..264cd55795e575d0ed08853966157a59da71b814 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -1,38 +1,5 @@ $hasSQLite, - 'hasMySQL' => $hasMySQL, - 'hasPostgreSQL' => $hasPostgreSQL, - 'hasOracle' => $hasOracle, - 'directory' => $datadir, - 'errors' => array(), -); - -if(isset($_POST['install']) AND $_POST['install']=='true') { - // We have to launch the installation process : - $e = OC_Setup::install($_POST); - $errors = array('errors' => $e); - - if(count($e) > 0) { - //OC_Template::printGuestPage("", "error", array("errors" => $errors)); - $options = array_merge($_POST, $opts, $errors); - OC_Template::printGuestPage("", "installation", $options); - } - else { - header("Location: ".OC::$WEBROOT.'/'); - exit(); - } -} -else { - OC_Template::printGuestPage("", "installation", $opts); -} - class OC_Setup { public static function install($options) { $error = array(); @@ -63,6 +30,9 @@ class OC_Setup { if(empty($options['dbname'])) { $error[] = "$dbprettyname enter the database name."; } + if(substr_count($options['dbname'], '.') >= 1) { + $error[] = "$dbprettyname you may not use dots in the database name"; + } if($dbtype != 'oci' && empty($options['dbhost'])) { $error[] = "$dbprettyname set the database host."; } @@ -85,69 +55,27 @@ class OC_Setup { //write the config file OC_Config::setValue('datadirectory', $datadir); OC_Config::setValue('dbtype', $dbtype); - OC_Config::setValue('version',implode('.',OC_Util::getVersion())); + OC_Config::setValue('version', implode('.', OC_Util::getVersion())); if($dbtype == 'mysql') { $dbuser = $options['dbuser']; $dbpass = $options['dbpass']; $dbname = $options['dbname']; $dbhost = $options['dbhost']; $dbtableprefix = isset($options['dbtableprefix']) ? $options['dbtableprefix'] : 'oc_'; + OC_Config::setValue('dbname', $dbname); OC_Config::setValue('dbhost', $dbhost); OC_Config::setValue('dbtableprefix', $dbtableprefix); - //check if the database user has admin right - $connection = @mysql_connect($dbhost, $dbuser, $dbpass); - if(!$connection) { + try { + self::setupMySQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username); + } catch (Exception $e) { $error[] = array( 'error' => 'MySQL username and/or password not valid', 'hint' => 'You need to enter either an existing account or the administrator.' ); return($error); } - else { - $oldUser=OC_Config::getValue('dbuser', false); - - $query="SELECT user FROM mysql.user WHERE user='$dbuser'"; //this should be enough to check for admin rights in mysql - if(mysql_query($query, $connection)) { - //use the admin login data for the new database user - - //add prefix to the mysql user name to prevent collisions - $dbusername=substr('oc_'.$username,0,16); - if($dbusername!=$oldUser) { - //hash the password so we don't need to store the admin config in the config file - $dbpassword=md5(time().$password); - - self::createDBUser($dbusername, $dbpassword, $connection); - - OC_Config::setValue('dbuser', $dbusername); - OC_Config::setValue('dbpassword', $dbpassword); - } - - //create the database - self::createDatabase($dbname, $dbusername, $connection); - } - else { - if($dbuser!=$oldUser) { - OC_Config::setValue('dbuser', $dbuser); - OC_Config::setValue('dbpassword', $dbpass); - } - - //create the database - self::createDatabase($dbname, $dbuser, $connection); - } - - //fill the database if needed - $query="select count(*) from information_schema.tables where table_schema='$dbname' AND table_name = '{$dbtableprefix}users';"; - $result = mysql_query($query,$connection); - if($result) { - $row=mysql_fetch_row($result); - } - if(!$result or $row[0]==0) { - OC_DB::createDbFromStructure('db_structure.xml'); - } - mysql_close($connection); - } } elseif($dbtype == 'pgsql') { $dbuser = $options['dbuser']; @@ -155,82 +83,20 @@ class OC_Setup { $dbname = $options['dbname']; $dbhost = $options['dbhost']; $dbtableprefix = isset($options['dbtableprefix']) ? $options['dbtableprefix'] : 'oc_'; - OC_CONFIG::setValue('dbname', $dbname); - OC_CONFIG::setValue('dbhost', $dbhost); - OC_CONFIG::setValue('dbtableprefix', $dbtableprefix); - - $e_host = addslashes($dbhost); - $e_user = addslashes($dbuser); - $e_password = addslashes($dbpass); - //check if the database user has admin right - $connection_string = "host='$e_host' dbname=postgres user='$e_user' password='$e_password'"; - $connection = @pg_connect($connection_string); - if(!$connection) { + + OC_Config::setValue('dbname', $dbname); + OC_Config::setValue('dbhost', $dbhost); + OC_Config::setValue('dbtableprefix', $dbtableprefix); + + try { + self::setupPostgreSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username); + } catch (Exception $e) { $error[] = array( 'error' => 'PostgreSQL username and/or password not valid', 'hint' => 'You need to enter either an existing account or the administrator.' ); return $error; } - else { - $e_user = pg_escape_string($dbuser); - //check for roles creation rights in postgresql - $query="SELECT 1 FROM pg_roles WHERE rolcreaterole=TRUE AND rolname='$e_user'"; - $result = pg_query($connection, $query); - if($result and pg_num_rows($result) > 0) { - //use the admin login data for the new database user - - //add prefix to the postgresql user name to prevent collisions - $dbusername='oc_'.$username; - //create a new password so we don't need to store the admin config in the config file - $dbpassword=md5(time()); - - self::pg_createDBUser($dbusername, $dbpassword, $connection); - - OC_CONFIG::setValue('dbuser', $dbusername); - OC_CONFIG::setValue('dbpassword', $dbpassword); - - //create the database - self::pg_createDatabase($dbname, $dbusername, $connection); - } - else { - OC_CONFIG::setValue('dbuser', $dbuser); - OC_CONFIG::setValue('dbpassword', $dbpass); - - //create the database - self::pg_createDatabase($dbname, $dbuser, $connection); - } - - // the connection to dbname=postgres is not needed anymore - pg_close($connection); - - // connect to the ownCloud database (dbname=$dbname) an check if it needs to be filled - $dbuser = OC_CONFIG::getValue('dbuser'); - $dbpass = OC_CONFIG::getValue('dbpassword'); - - $e_host = addslashes($dbhost); - $e_dbname = addslashes($dbname); - $e_user = addslashes($dbuser); - $e_password = addslashes($dbpass); - - $connection_string = "host='$e_host' dbname='$e_dbname' user='$e_user' password='$e_password'"; - $connection = @pg_connect($connection_string); - if(!$connection) { - $error[] = array( - 'error' => 'PostgreSQL username and/or password not valid', - 'hint' => 'You need to enter either an existing account or the administrator.' - ); - } else { - $query = "select count(*) FROM pg_class WHERE relname='{$dbtableprefix}users' limit 1"; - $result = pg_query($connection, $query); - if($result) { - $row = pg_fetch_row($result); - } - if(!$result or $row[0]==0) { - OC_DB::createDbFromStructure('db_structure.xml'); - } - } - } } elseif($dbtype == 'oci') { $dbuser = $options['dbuser']; @@ -239,116 +105,20 @@ class OC_Setup { $dbtablespace = $options['dbtablespace']; $dbhost = isset($options['dbhost'])?$options['dbhost']:''; $dbtableprefix = isset($options['dbtableprefix']) ? $options['dbtableprefix'] : 'oc_'; - OC_CONFIG::setValue('dbname', $dbname); - OC_CONFIG::setValue('dbtablespace', $dbtablespace); - OC_CONFIG::setValue('dbhost', $dbhost); - OC_CONFIG::setValue('dbtableprefix', $dbtableprefix); - - $e_host = addslashes($dbhost); - $e_dbname = addslashes($dbname); - //check if the database user has admin right - if ($e_host == '') { - $easy_connect_string = $e_dbname; // use dbname as easy connect name - } else { - $easy_connect_string = '//'.$e_host.'/'.$e_dbname; - } - $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); - if(!$connection) { - $e = oci_error(); + + OC_Config::setValue('dbname', $dbname); + OC_Config::setValue('dbtablespace', $dbtablespace); + OC_Config::setValue('dbhost', $dbhost); + OC_Config::setValue('dbtableprefix', $dbtableprefix); + + try { + self::setupOCIDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $dbtablespace, $username); + } catch (Exception $e) { $error[] = array( 'error' => 'Oracle username and/or password not valid', 'hint' => 'You need to enter either an existing account or the administrator.' ); return $error; - } else { - //check for roles creation rights in oracle - - $query="SELECT count(*) FROM user_role_privs, role_sys_privs WHERE user_role_privs.granted_role = role_sys_privs.role AND privilege = 'CREATE ROLE'"; - $stmt = oci_parse($connection, $query); - if (!$stmt) { - $entry='DB Error: "'.oci_last_error($connection).'"
            '; - $entry.='Offending command was: '.$query.'
            '; - echo($entry); - } - $result = oci_execute($stmt); - if($result) { - $row = oci_fetch_row($stmt); - } - if($result and $row[0] > 0) { - //use the admin login data for the new database user - - //add prefix to the oracle user name to prevent collisions - $dbusername='oc_'.$username; - //create a new password so we don't need to store the admin config in the config file - $dbpassword=md5(time().$dbpass); - - //oracle passwords are treated as identifiers: - // must start with aphanumeric char - // needs to be shortened to 30 bytes, as the two " needed to escape the identifier count towards the identifier length. - $dbpassword=substr($dbpassword, 0, 30); - - self::oci_createDBUser($dbusername, $dbpassword, $dbtablespace, $connection); - - OC_CONFIG::setValue('dbuser', $dbusername); - OC_CONFIG::setValue('dbname', $dbusername); - OC_CONFIG::setValue('dbpassword', $dbpassword); - - //create the database not neccessary, oracle implies user = schema - //self::oci_createDatabase($dbname, $dbusername, $connection); - } else { - - OC_CONFIG::setValue('dbuser', $dbuser); - OC_CONFIG::setValue('dbname', $dbname); - OC_CONFIG::setValue('dbpassword', $dbpass); - - //create the database not neccessary, oracle implies user = schema - //self::oci_createDatabase($dbname, $dbuser, $connection); - } - - //FIXME check tablespace exists: select * from user_tablespaces - - // the connection to dbname=oracle is not needed anymore - oci_close($connection); - - // connect to the oracle database (schema=$dbuser) an check if the schema needs to be filled - $dbuser = OC_CONFIG::getValue('dbuser'); - //$dbname = OC_CONFIG::getValue('dbname'); - $dbpass = OC_CONFIG::getValue('dbpassword'); - - $e_host = addslashes($dbhost); - $e_dbname = addslashes($dbname); - - if ($e_host == '') { - $easy_connect_string = $e_dbname; // use dbname as easy connect name - } else { - $easy_connect_string = '//'.$e_host.'/'.$e_dbname; - } - $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); - if(!$connection) { - $error[] = array( - 'error' => 'Oracle username and/or password not valid', - 'hint' => 'You need to enter either an existing account or the administrator.' - ); - return $error; - } else { - $query = "SELECT count(*) FROM user_tables WHERE table_name = :un"; - $stmt = oci_parse($connection, $query); - $un = $dbtableprefix.'users'; - oci_bind_by_name($stmt, ':un', $un); - if (!$stmt) { - $entry='DB Error: "'.oci_last_error($connection).'"
            '; - $entry.='Offending command was: '.$query.'
            '; - echo($entry); - } - $result = oci_execute($stmt); - - if($result) { - $row = oci_fetch_row($stmt); - } - if(!$result or $row[0]==0) { - OC_DB::createDbFromStructure('db_structure.xml'); - } - } } } else { @@ -369,8 +139,8 @@ class OC_Setup { } if(count($error) == 0) { - OC_Appconfig::setValue('core', 'installedat',microtime(true)); - OC_Appconfig::setValue('core', 'lastupdatedat',microtime(true)); + OC_Appconfig::setValue('core', 'installedat', microtime(true)); + OC_Appconfig::setValue('core', 'lastupdatedat', microtime(true)); OC_Group::createGroup('admin'); OC_Group::addToGroup($username, 'admin'); @@ -383,7 +153,7 @@ class OC_Setup { if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) { self::createHtaccess(); } - + //and we are done OC_Config::setValue('installed', true); } @@ -392,7 +162,56 @@ class OC_Setup { return $error; } - public static function createDatabase($name,$user,$connection) { + private static function setupMySQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username) { + //check if the database user has admin right + $connection = @mysql_connect($dbhost, $dbuser, $dbpass); + if(!$connection) { + throw new Exception('MySQL username and/or password not valid'); + } + $oldUser=OC_Config::getValue('dbuser', false); + + $query="SELECT user FROM mysql.user WHERE user='$dbuser'"; //this should be enough to check for admin rights in mysql + if(mysql_query($query, $connection)) { + //use the admin login data for the new database user + + //add prefix to the mysql user name to prevent collisions + $dbusername=substr('oc_'.$username, 0, 16); + if($dbusername!=$oldUser) { + //hash the password so we don't need to store the admin config in the config file + $dbpassword=md5(time().$dbpass); + + self::createDBUser($dbusername, $dbpassword, $connection); + + OC_Config::setValue('dbuser', $dbusername); + OC_Config::setValue('dbpassword', $dbpassword); + } + + //create the database + self::createMySQLDatabase($dbname, $dbusername, $connection); + } + else { + if($dbuser!=$oldUser) { + OC_Config::setValue('dbuser', $dbuser); + OC_Config::setValue('dbpassword', $dbpass); + } + + //create the database + self::createMySQLDatabase($dbname, $dbuser, $connection); + } + + //fill the database if needed + $query="select count(*) from information_schema.tables where table_schema='$dbname' AND table_name = '{$dbtableprefix}users';"; + $result = mysql_query($query, $connection); + if($result) { + $row=mysql_fetch_row($result); + } + if(!$result or $row[0]==0) { + OC_DB::createDbFromStructure('db_structure.xml'); + } + mysql_close($connection); + } + + private static function createMySQLDatabase($name, $user, $connection) { //we cant use OC_BD functions here because we need to connect as the administrative user. $query = "CREATE DATABASE IF NOT EXISTS `$name`"; $result = mysql_query($query, $connection); @@ -405,7 +224,7 @@ class OC_Setup { $result = mysql_query($query, $connection); //this query will fail if there aren't the right permissons, ignore the error } - private static function createDBUser($name,$password,$connection) { + private static function createDBUser($name, $password, $connection) { // we need to create 2 accounts, one for global use and one for local user. if we don't specify the local one, // the anonymous user would take precedence when there is one. $query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'"; @@ -414,7 +233,73 @@ class OC_Setup { $result = mysql_query($query, $connection); } - public static function pg_createDatabase($name,$user,$connection) { + private static function setupPostgreSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username) { + $e_host = addslashes($dbhost); + $e_user = addslashes($dbuser); + $e_password = addslashes($dbpass); + + //check if the database user has admin rights + $connection_string = "host='$e_host' dbname=postgres user='$e_user' password='$e_password'"; + $connection = @pg_connect($connection_string); + if(!$connection) { + throw new Exception('PostgreSQL username and/or password not valid'); + } + $e_user = pg_escape_string($dbuser); + //check for roles creation rights in postgresql + $query="SELECT 1 FROM pg_roles WHERE rolcreaterole=TRUE AND rolname='$e_user'"; + $result = pg_query($connection, $query); + if($result and pg_num_rows($result) > 0) { + //use the admin login data for the new database user + + //add prefix to the postgresql user name to prevent collisions + $dbusername='oc_'.$username; + //create a new password so we don't need to store the admin config in the config file + $dbpassword=md5(time()); + + self::pg_createDBUser($dbusername, $dbpassword, $connection); + + OC_Config::setValue('dbuser', $dbusername); + OC_Config::setValue('dbpassword', $dbpassword); + + //create the database + self::pg_createDatabase($dbname, $dbusername, $connection); + } + else { + OC_Config::setValue('dbuser', $dbuser); + OC_Config::setValue('dbpassword', $dbpass); + + //create the database + self::pg_createDatabase($dbname, $dbuser, $connection); + } + + // the connection to dbname=postgres is not needed anymore + pg_close($connection); + + // connect to the ownCloud database (dbname=$dbname) and check if it needs to be filled + $dbuser = OC_Config::getValue('dbuser'); + $dbpass = OC_Config::getValue('dbpassword'); + + $e_host = addslashes($dbhost); + $e_dbname = addslashes($dbname); + $e_user = addslashes($dbuser); + $e_password = addslashes($dbpass); + + $connection_string = "host='$e_host' dbname='$e_dbname' user='$e_user' password='$e_password'"; + $connection = @pg_connect($connection_string); + if(!$connection) { + throw new Exception('PostgreSQL username and/or password not valid'); + } + $query = "select count(*) FROM pg_class WHERE relname='{$dbtableprefix}users' limit 1"; + $result = pg_query($connection, $query); + if($result) { + $row = pg_fetch_row($result); + } + if(!$result or $row[0]==0) { + OC_DB::createDbFromStructure('db_structure.xml'); + } + } + + private static function pg_createDatabase($name, $user, $connection) { //we cant use OC_BD functions here because we need to connect as the administrative user. $e_name = pg_escape_string($name); $e_user = pg_escape_string($user); @@ -439,7 +324,7 @@ class OC_Setup { $result = pg_query($connection, $query); } - private static function pg_createDBUser($name,$password,$connection) { + private static function pg_createDBUser($name, $password, $connection) { $e_name = pg_escape_string($name); $e_password = pg_escape_string($password); $query = "select * from pg_roles where rolname='$e_name';"; @@ -470,6 +355,106 @@ class OC_Setup { } } } + + private static function setupOCIDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $dbtablespace, $username) { + $e_host = addslashes($dbhost); + $e_dbname = addslashes($dbname); + //check if the database user has admin right + if ($e_host == '') { + $easy_connect_string = $e_dbname; // use dbname as easy connect name + } else { + $easy_connect_string = '//'.$e_host.'/'.$e_dbname; + } + $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); + if(!$connection) { + $e = oci_error(); + throw new Exception('Oracle username and/or password not valid'); + } + //check for roles creation rights in oracle + + $query="SELECT count(*) FROM user_role_privs, role_sys_privs WHERE user_role_privs.granted_role = role_sys_privs.role AND privilege = 'CREATE ROLE'"; + $stmt = oci_parse($connection, $query); + if (!$stmt) { + $entry='DB Error: "'.oci_last_error($connection).'"
            '; + $entry.='Offending command was: '.$query.'
            '; + echo($entry); + } + $result = oci_execute($stmt); + if($result) { + $row = oci_fetch_row($stmt); + } + if($result and $row[0] > 0) { + //use the admin login data for the new database user + + //add prefix to the oracle user name to prevent collisions + $dbusername='oc_'.$username; + //create a new password so we don't need to store the admin config in the config file + $dbpassword=md5(time().$dbpass); + + //oracle passwords are treated as identifiers: + // must start with aphanumeric char + // needs to be shortened to 30 bytes, as the two " needed to escape the identifier count towards the identifier length. + $dbpassword=substr($dbpassword, 0, 30); + + self::oci_createDBUser($dbusername, $dbpassword, $dbtablespace, $connection); + + OC_Config::setValue('dbuser', $dbusername); + OC_Config::setValue('dbname', $dbusername); + OC_Config::setValue('dbpassword', $dbpassword); + + //create the database not neccessary, oracle implies user = schema + //self::oci_createDatabase($dbname, $dbusername, $connection); + } else { + + OC_Config::setValue('dbuser', $dbuser); + OC_Config::setValue('dbname', $dbname); + OC_Config::setValue('dbpassword', $dbpass); + + //create the database not neccessary, oracle implies user = schema + //self::oci_createDatabase($dbname, $dbuser, $connection); + } + + //FIXME check tablespace exists: select * from user_tablespaces + + // the connection to dbname=oracle is not needed anymore + oci_close($connection); + + // connect to the oracle database (schema=$dbuser) an check if the schema needs to be filled + $dbuser = OC_Config::getValue('dbuser'); + //$dbname = OC_Config::getValue('dbname'); + $dbpass = OC_Config::getValue('dbpassword'); + + $e_host = addslashes($dbhost); + $e_dbname = addslashes($dbname); + + if ($e_host == '') { + $easy_connect_string = $e_dbname; // use dbname as easy connect name + } else { + $easy_connect_string = '//'.$e_host.'/'.$e_dbname; + } + $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); + if(!$connection) { + throw new Exception('Oracle username and/or password not valid'); + } + $query = "SELECT count(*) FROM user_tables WHERE table_name = :un"; + $stmt = oci_parse($connection, $query); + $un = $dbtableprefix.'users'; + oci_bind_by_name($stmt, ':un', $un); + if (!$stmt) { + $entry='DB Error: "'.oci_last_error($connection).'"
            '; + $entry.='Offending command was: '.$query.'
            '; + echo($entry); + } + $result = oci_execute($stmt); + + if($result) { + $row = oci_fetch_row($stmt); + } + if(!$result or $row[0]==0) { + OC_DB::createDbFromStructure('db_structure.xml'); + } + } + /** * * @param String $name @@ -548,7 +533,15 @@ class OC_Setup { * create .htaccess files for apache hosts */ private static function createHtaccess() { - $content = "ErrorDocument 403 ".OC::$WEBROOT."/core/templates/403.php\n";//custom 403 error page + $content = "\n"; + $content.= "\n"; + $content.= "\n"; + $content.= "SetEnvIfNoCase ^Authorization$ \"(.+)\" XAUTHORIZATION=$1\n"; + $content.= "RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION\n"; + $content.= "\n"; + $content.= "\n"; + $content.= "\n"; + $content.= "ErrorDocument 403 ".OC::$WEBROOT."/core/templates/403.php\n";//custom 403 error page $content.= "ErrorDocument 404 ".OC::$WEBROOT."/core/templates/404.php\n";//custom 404 error page $content.= "\n"; $content.= "php_value upload_max_filesize 512M\n";//upload limit @@ -567,9 +560,17 @@ class OC_Setup { $content.= "RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]\n"; $content.= "RewriteRule ^remote/(.*) remote.php [QSA,L]\n"; $content.= "\n"; + $content.= "\n"; + $content.= "AddType image/svg+xml svg svgz\n"; + $content.= "AddEncoding gzip svgz\n"; + $content.= "\n"; $content.= "Options -Indexes\n"; @file_put_contents(OC::$SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it + self::protectDataDirectory(); + } + + public static function protectDataDirectory() { $content = "deny from all\n"; $content.= "IndexIgnore *"; file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.htaccess', $content); diff --git a/lib/streamwrappers.php b/lib/streamwrappers.php index 1e5b19a11f0bcba8b146fc6fc6e5c1205d0cdd2b..981c280f0ddf92a1537a5b220b17b93d9e762ccb 100644 --- a/lib/streamwrappers.php +++ b/lib/streamwrappers.php @@ -5,8 +5,8 @@ class OC_FakeDirStream{ private $name; private $index; - public function dir_opendir($path,$options) { - $this->name=substr($path,strlen('fakedir://')); + public function dir_opendir($path, $options) { + $this->name=substr($path, strlen('fakedir://')); $this->index=0; if(!isset(self::$dirs[$this->name])) { self::$dirs[$this->name]=array(); @@ -223,9 +223,9 @@ class OC_CloseStreamWrapper{ private $source; private static $open=array(); public function stream_open($path, $mode, $options, &$opened_path) { - $path=substr($path,strlen('close://')); + $path=substr($path, strlen('close://')); $this->path=$path; - $this->source=fopen($path,$mode); + $this->source=fopen($path, $mode); if(is_resource($this->source)) { $this->meta=stream_get_meta_data($this->source); } @@ -234,7 +234,7 @@ class OC_CloseStreamWrapper{ } public function stream_seek($offset, $whence=SEEK_SET) { - fseek($this->source,$offset,$whence); + fseek($this->source, $offset, $whence); } public function stream_tell() { @@ -242,23 +242,23 @@ class OC_CloseStreamWrapper{ } public function stream_read($count) { - return fread($this->source,$count); + return fread($this->source, $count); } public function stream_write($data) { - return fwrite($this->source,$data); + return fwrite($this->source, $data); } - public function stream_set_option($option,$arg1,$arg2) { + public function stream_set_option($option, $arg1, $arg2) { switch($option) { case STREAM_OPTION_BLOCKING: - stream_set_blocking($this->source,$arg1); + stream_set_blocking($this->source, $arg1); break; case STREAM_OPTION_READ_TIMEOUT: - stream_set_timeout($this->source,$arg1,$arg2); + stream_set_timeout($this->source, $arg1, $arg2); break; case STREAM_OPTION_WRITE_BUFFER: - stream_set_write_buffer($this->source,$arg1,$arg2); + stream_set_write_buffer($this->source, $arg1, $arg2); } } @@ -267,7 +267,7 @@ class OC_CloseStreamWrapper{ } public function stream_lock($mode) { - flock($this->source,$mode); + flock($this->source, $mode); } public function stream_flush() { @@ -279,7 +279,7 @@ class OC_CloseStreamWrapper{ } public function url_stat($path) { - $path=substr($path,strlen('close://')); + $path=substr($path, strlen('close://')); if(file_exists($path)) { return stat($path); }else{ @@ -290,12 +290,12 @@ class OC_CloseStreamWrapper{ public function stream_close() { fclose($this->source); if(isset(self::$callBacks[$this->path])) { - call_user_func(self::$callBacks[$this->path],$this->path); + call_user_func(self::$callBacks[$this->path], $this->path); } } public function unlink($path) { - $path=substr($path,strlen('close://')); + $path=substr($path, strlen('close://')); return unlink($path); } } diff --git a/lib/template.php b/lib/template.php index 1c529932a3018904313e843644f172d50d5c57c7..04667d73a2c46f5de9a03944b430907005c4a972 100644 --- a/lib/template.php +++ b/lib/template.php @@ -21,6 +21,22 @@ * */ +/** + * Prints an XSS escaped string + * @param string $string the string which will be escaped and printed + */ +function p($string) { + print(OC_Util::sanitizeHTML($string)); +} + +/** + * Prints an unescaped string + * @param string $string the string which will be printed as it is + */ +function print_unescaped($string) { + print($string); +} + /** * @brief make OC_Helper::linkTo available as a simple function * @param string $app app @@ -69,7 +85,7 @@ function human_file_size( $bytes ) { } function simple_file_size($bytes) { - $mbytes = round($bytes/(1024*1024),1); + $mbytes = round($bytes/(1024*1024), 1); if($bytes == 0) { return '0'; } else if($mbytes < 0.1) { return '< 0.1'; } else if($mbytes > 1000) { return '> 1000'; } @@ -86,14 +102,14 @@ function relative_modified_date($timestamp) { if($timediff < 60) { return $l->t('seconds ago'); } else if($timediff < 120) { return $l->t('1 minute ago'); } - else if($timediff < 3600) { return $l->t('%d minutes ago',$diffminutes); } - //else if($timediff < 7200) { return '1 hour ago'; } - //else if($timediff < 86400) { return $diffhours.' hours ago'; } + else if($timediff < 3600) { return $l->t('%d minutes ago', $diffminutes); } + else if($timediff < 7200) { return $l->t('1 hour ago'); } + else if($timediff < 86400) { return $l->t('%d hours ago', $diffhours); } else if((date('G')-$diffhours) > 0) { return $l->t('today'); } else if((date('G')-$diffhours) > -24) { return $l->t('yesterday'); } - else if($timediff < 2678400) { return $l->t('%d days ago',$diffdays); } + else if($timediff < 2678400) { return $l->t('%d days ago', $diffdays); } else if($timediff < 5184000) { return $l->t('last month'); } - else if((date('n')-$diffmonths) > 0) { return $l->t('months ago'); } + else if((date('n')-$diffmonths) > 0) { return $l->t('%d months ago', $diffmonths); } else if($timediff < 63113852) { return $l->t('last year'); } else { return $l->t('years ago'); } } @@ -156,7 +172,6 @@ class OC_Template{ $this->application = $app; $this->vars = array(); $this->vars['requesttoken'] = OC_Util::callRegister(); - $this->vars['requestlifespan'] = OC_Util::$callLifespan; $parts = explode('/', $app); // fix translation when app is something like core/lostpassword $this->l10n = OC_L10N::get($parts[0]); @@ -180,11 +195,11 @@ class OC_Template{ public static function detectFormfactor() { // please add more useragent strings for other devices if(isset($_SERVER['HTTP_USER_AGENT'])) { - if(stripos($_SERVER['HTTP_USER_AGENT'],'ipad')>0) { + if(stripos($_SERVER['HTTP_USER_AGENT'], 'ipad')>0) { $mode='tablet'; - }elseif(stripos($_SERVER['HTTP_USER_AGENT'],'iphone')>0) { + }elseif(stripos($_SERVER['HTTP_USER_AGENT'], 'iphone')>0) { $mode='mobile'; - }elseif((stripos($_SERVER['HTTP_USER_AGENT'],'N9')>0) and (stripos($_SERVER['HTTP_USER_AGENT'],'nokia')>0)) { + }elseif((stripos($_SERVER['HTTP_USER_AGENT'], 'N9')>0) and (stripos($_SERVER['HTTP_USER_AGENT'], 'nokia')>0)) { $mode='mobile'; }else{ $mode='default'; @@ -341,7 +356,7 @@ class OC_Template{ * @param string $text the text content for the element */ public function addHeader( $tag, $attributes, $text='') { - $this->headers[]=array('tag'=>$tag,'attributes'=>$attributes,'text'=>$text); + $this->headers[]=array('tag'=>$tag,'attributes'=>$attributes, 'text'=>$text); } /** @@ -375,13 +390,12 @@ class OC_Template{ $page = new OC_TemplateLayout($this->renderas); if($this->renderas == 'user') { $page->assign('requesttoken', $this->vars['requesttoken']); - $page->assign('requestlifespan', $this->vars['requestlifespan']); } // Add custom headers - $page->assign('headers',$this->headers, false); + $page->assign('headers', $this->headers, false); foreach(OC_Util::$headers as $header) { - $page->append('headers',$header); + $page->append('headers', $header); } $page->assign( "content", $data, false ); @@ -405,7 +419,7 @@ class OC_Template{ // Execute the template ob_start(); - include( $this->template ); // <-- we have to use include because we pass $_! + include $this->template; // <-- we have to use include because we pass $_! $data = ob_get_contents(); @ob_end_clean(); @@ -430,7 +444,7 @@ class OC_Template{ // Include ob_start(); - include( $this->path.$file.'.php' ); + include $this->path.$file.'.php'; $data = ob_get_contents(); @ob_end_clean(); @@ -482,4 +496,15 @@ class OC_Template{ } return $content->printPage(); } + + /** + * @brief Print a fatal error page and terminates the script + * @param string $error The error message to show + * @param string $hint An option hint message + */ + public static function printErrorPage( $error_msg, $hint = '' ) { + $errors = array(array('error' => $error_msg, 'hint' => $hint)); + OC_Template::printGuestPage("", "error", array("errors" => $errors)); + die(); + } } diff --git a/lib/templatelayout.php b/lib/templatelayout.php index 4f26775b48e149286cd36af8443f829106100dd7..1a0570a270d617b4a3d2cb82a6b033aa25f5ced7 100644 --- a/lib/templatelayout.php +++ b/lib/templatelayout.php @@ -12,10 +12,10 @@ class OC_TemplateLayout extends OC_Template { if( $renderas == 'user' ) { parent::__construct( 'core', 'layout.user' ); - if(in_array(OC_APP::getCurrentApp(),array('settings','admin','help'))!==false) { - $this->assign('bodyid','body-settings', false); + if(in_array(OC_APP::getCurrentApp(), array('settings','admin', 'help'))!==false) { + $this->assign('bodyid', 'body-settings', false); }else{ - $this->assign('bodyid','body-user', false); + $this->assign('bodyid', 'body-user', false); } // Add navigation entry @@ -38,7 +38,7 @@ class OC_TemplateLayout extends OC_Template { foreach(OC_App::getEnabledApps() as $app) { $apps_paths[$app] = OC_App::getAppWebPath($app); } - $this->assign( 'apps_paths', str_replace('\\/', '/',json_encode($apps_paths)),false ); // Ugly unescape slashes waiting for better solution + $this->assign( 'apps_paths', str_replace('\\/', '/', json_encode($apps_paths)), false ); // Ugly unescape slashes waiting for better solution if (OC_Config::getValue('installed', false) && !OC_AppConfig::getValue('core', 'remote_core.css', false)) { OC_AppConfig::setValue('core', 'remote_core.css', '/core/minimizer.php'); @@ -49,7 +49,7 @@ class OC_TemplateLayout extends OC_Template { $jsfiles = self::findJavascriptFiles(OC_Util::$scripts); $this->assign('jsfiles', array(), false); if (!empty(OC_Util::$core_scripts)) { - $this->append( 'jsfiles', OC_Helper::linkToRemote('core.js', false)); + $this->append( 'jsfiles', OC_Helper::linkToRemoteBase('core.js', false)); } foreach($jsfiles as $info) { $root = $info[0]; @@ -62,7 +62,7 @@ class OC_TemplateLayout extends OC_Template { $cssfiles = self::findStylesheetFiles(OC_Util::$styles); $this->assign('cssfiles', array()); if (!empty(OC_Util::$core_styles)) { - $this->append( 'cssfiles', OC_Helper::linkToRemote('core.css', false)); + $this->append( 'cssfiles', OC_Helper::linkToRemoteBase('core.css', false)); } foreach($cssfiles as $info) { $root = $info[0]; diff --git a/lib/updater.php b/lib/updater.php index b3b289ef276d9eded961b47a1eefd921dcf333b5..11081eded639935b27411b0edebee1d271763fa9 100644 --- a/lib/updater.php +++ b/lib/updater.php @@ -29,8 +29,8 @@ class OC_Updater{ * Check if a new version is available */ public static function check() { - OC_Appconfig::setValue('core', 'lastupdatedat',microtime(true)); - if(OC_Appconfig::getValue('core', 'installedat','')=='') OC_Appconfig::setValue('core', 'installedat',microtime(true)); + OC_Appconfig::setValue('core', 'lastupdatedat', microtime(true)); + if(OC_Appconfig::getValue('core', 'installedat', '')=='') OC_Appconfig::setValue('core', 'installedat', microtime(true)); $updaterurl='http://apps.owncloud.com/updater.php'; $version=OC_Util::getVersion(); @@ -38,21 +38,21 @@ class OC_Updater{ $version['updated']=OC_Appconfig::getValue('core', 'lastupdatedat'); $version['updatechannel']='stable'; $version['edition']=OC_Util::getEditionString(); - $versionstring=implode('x',$version); + $versionstring=implode('x', $version); //fetch xml data from updater $url=$updaterurl.'?version='.$versionstring; // set a sensible timeout of 10 sec to stay responsive even if the update server is down. $ctx = stream_context_create( - array( - 'http' => array( - 'timeout' => 10 - ) - ) - ); + array( + 'http' => array( + 'timeout' => 10 + ) + ) + ); $xml=@file_get_contents($url, 0, $ctx); - if($xml==FALSE) { + if($xml==false) { return array(); } $data=@simplexml_load_string($xml); @@ -72,7 +72,7 @@ class OC_Updater{ if(OC_Config::getValue('updatechecker', true)==true) { $data=OC_Updater::check(); if(isset($data['version']) and $data['version']<>'') { - $txt=''.$l->t('%s is available. Get more information',array($data['versionstring'], $data['web'])).''; + $txt=''.$l->t('%s is available. Get more information', array($data['versionstring'], $data['web'])).''; }else{ $txt=$l->t('up to date'); } diff --git a/lib/user.php b/lib/user.php index 7de2a4b7fe63475d4c84d839a533fde9ab931bb8..31c93740d77c4a0ead5615495eaf5833cb9bd903 100644 --- a/lib/user.php +++ b/lib/user.php @@ -120,11 +120,11 @@ class OC_User { * setup the configured backends in config.php */ public static function setupBackends() { - $backends=OC_Config::getValue('user_backends',array()); + $backends=OC_Config::getValue('user_backends', array()); foreach($backends as $i=>$config) { $class=$config['class']; $arguments=$config['arguments']; - if(class_exists($class) and array_search($i,self::$_setupedBackends)===false) { + if(class_exists($class) and array_search($i, self::$_setupedBackends)===false) { // make a reflection object $reflectionObj = new ReflectionClass($class); @@ -133,7 +133,7 @@ class OC_User { self::useBackend($backend); $_setupedBackends[]=$i; }else{ - OC_Log::write('core','User backend '.$class.' not found.',OC_Log::ERROR); + OC_Log::write('core', 'User backend '.$class.' not found.', OC_Log::ERROR); } } } @@ -179,10 +179,10 @@ class OC_User { if(!$backend->implementsActions(OC_USER_BACKEND_CREATE_USER)) continue; - $backend->createUser($uid,$password); + $backend->createUser($uid, $password); OC_Hook::emit( "OC_User", "post_createUser", array( "uid" => $uid, "password" => $password )); - return true; + return self::userExists($uid); } } return false; @@ -204,12 +204,19 @@ class OC_User { foreach(self::$_usedBackends as $backend) { $backend->deleteUser($uid); } + if (self::userExists($uid)) { + return false; + } // We have to delete the user from all groups foreach( OC_Group::getUserGroups( $uid ) as $i ) { OC_Group::removeFromGroup( $uid, $i ); } // Delete the user's keys in preferences OC_Preferences::deleteUser($uid); + + // Delete user files in /data/ + OC_Helper::rmdirr(OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ) . '/'.$uid.'/'); + // Emit and exit OC_Hook::emit( "OC_User", "post_deleteUser", array( "uid" => $uid )); return true; @@ -325,10 +332,12 @@ class OC_User { foreach(self::$_usedBackends as $backend) { if($backend->implementsActions(OC_USER_BACKEND_SET_PASSWORD)) { if($backend->userExists($uid)) { - $success |= $backend->setPassword($uid,$password); + $success |= $backend->setPassword($uid, $password); } } } + // invalidate all login cookies + OC_Preferences::deleteApp($uid, 'login_token'); OC_Hook::emit( "OC_User", "post_setPassword", array( "uid" => $uid, "password" => $password )); return $success; } @@ -363,8 +372,7 @@ class OC_User { * @param $password The password * @returns string * - * Check if the password is correct without logging in the user - * returns the user id or false + * returns the path to the users home directory */ public static function getHome($uid) { foreach(self::$_usedBackends as $backend) { @@ -472,9 +480,10 @@ class OC_User { */ public static function setMagicInCookie($username, $token) { $secure_cookie = OC_Config::getValue("forcessl", false); - setcookie("oc_username", $username, time()+60*60*24*15, '', '', $secure_cookie); - setcookie("oc_token", $token, time()+60*60*24*15, '', '', $secure_cookie); - setcookie("oc_remember_login", true, time()+60*60*24*15, '', '', $secure_cookie); + $expires = time() + OC_Config::getValue('remember_login_cookie_lifetime', 60*60*24*15); + setcookie("oc_username", $username, $expires, '', '', $secure_cookie); + setcookie("oc_token", $token, $expires, '', '', $secure_cookie, true); + setcookie("oc_remember_login", true, $expires, '', '', $secure_cookie); } /** @@ -484,8 +493,8 @@ class OC_User { unset($_COOKIE["oc_username"]); unset($_COOKIE["oc_token"]); unset($_COOKIE["oc_remember_login"]); - setcookie("oc_username", NULL, -1); - setcookie("oc_token", NULL, -1); - setcookie("oc_remember_login", NULL, -1); + setcookie("oc_username", null, -1); + setcookie("oc_token", null, -1); + setcookie("oc_remember_login", null, -1); } } diff --git a/lib/user/database.php b/lib/user/database.php index 25e24fcf7e4085fdf6c1bf2c546642b145657a9d..f33e338e2e4919a0cf8c84d514f6e84e800f82b3 100644 --- a/lib/user/database.php +++ b/lib/user/database.php @@ -48,7 +48,7 @@ class OC_User_Database extends OC_User_Backend { if(!self::$hasher) { //we don't want to use DES based crypt(), since it doesn't return a has with a recognisable prefix $forcePortable=(CRYPT_BLOWFISH!=1); - self::$hasher=new PasswordHash(8,$forcePortable); + self::$hasher=new PasswordHash(8, $forcePortable); } return self::$hasher; @@ -137,7 +137,7 @@ class OC_User_Database extends OC_User_Backend { }else{//old sha1 based hashing if(sha1($password)==$storedHash) { //upgrade to new hashing - $this->setPassword($row['uid'],$password); + $this->setPassword($row['uid'], $password); return $row['uid']; }else{ return false; @@ -155,7 +155,7 @@ class OC_User_Database extends OC_User_Backend { * Get a list of all users. */ public function getUsers($search = '', $limit = null, $offset = null) { - $query = OC_DB::prepare('SELECT `uid` FROM `*PREFIX*users` WHERE LOWER(`uid`) LIKE LOWER(?)',$limit,$offset); + $query = OC_DB::prepare('SELECT `uid` FROM `*PREFIX*users` WHERE LOWER(`uid`) LIKE LOWER(?)', $limit, $offset); $result = $query->execute(array($search.'%')); $users = array(); while ($row = $result->fetchRow()) { @@ -172,7 +172,10 @@ class OC_User_Database extends OC_User_Backend { public function userExists($uid) { $query = OC_DB::prepare( 'SELECT * FROM `*PREFIX*users` WHERE LOWER(`uid`) = LOWER(?)' ); $result = $query->execute( array( $uid )); - + if (OC_DB::isError($result)) { + OC_Log::write('core', OC_DB::getErrorMessage($result), OC_Log::ERROR); + return false; + } return $result->numRows() > 0; } diff --git a/lib/user/http.php b/lib/user/http.php index 2668341408daaea973fdf47d33fb97a9ceaccfa5..944ede73a0b3a2188c7fbc446e16f09317bb362d 100644 --- a/lib/user/http.php +++ b/lib/user/http.php @@ -40,7 +40,7 @@ class OC_User_HTTP extends OC_User_Backend { if(isset($parts['query'])) { $url.='?'.$parts['query']; } - return array($parts['user'],$url); + return array($parts['user'], $url); } @@ -50,7 +50,7 @@ class OC_User_HTTP extends OC_User_Backend { * @return boolean */ private function matchUrl($url) { - return ! is_null(parse_url($url,PHP_URL_USER)); + return ! is_null(parse_url($url, PHP_URL_USER)); } /** @@ -66,7 +66,7 @@ class OC_User_HTTP extends OC_User_Backend { if(!$this->matchUrl($uid)) { return false; } - list($user,$url)=$this->parseUrl($uid); + list($user, $url)=$this->parseUrl($uid); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); diff --git a/lib/util.php b/lib/util.php index afbea9a00cbc7f710e6f3712581af3d5a89e383e..2ee3f0e4efb00bcbd488188fadde439862690c27 100755 --- a/lib/util.php +++ b/lib/util.php @@ -24,6 +24,11 @@ class OC_Util { $user = OC_User::getUser(); } + // load all filesystem apps before, so no setup-hook gets lost + if(!isset($RUNTIME_NOAPPS) || !$RUNTIME_NOAPPS) { + OC_App::loadApps(array('filesystem')); + } + // the filesystem will finish when $user is not empty, // mark fs setup here to avoid doing the setup from loading // OC_Filesystem @@ -34,7 +39,7 @@ class OC_Util { $CONFIG_DATADIRECTORY = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); //first set up the local "root" storage if(!self::$rootMounted) { - OC_Filesystem::mount('OC_Filestorage_Local',array('datadir'=>$CONFIG_DATADIRECTORY),'/'); + OC_Filesystem::mount('OC_Filestorage_Local', array('datadir'=>$CONFIG_DATADIRECTORY), '/'); self::$rootMounted=true; } @@ -47,27 +52,13 @@ class OC_Util { } //jail the user into his "home" directory OC_Filesystem::mount('OC_Filestorage_Local', array('datadir' => $user_root), $user); - OC_Filesystem::init($user_dir); + OC_Filesystem::init($user_dir, $user); $quotaProxy=new OC_FileProxy_Quota(); $fileOperationProxy = new OC_FileProxy_FileOperations(); OC_FileProxy::register($quotaProxy); OC_FileProxy::register($fileOperationProxy); // Load personal mount config - if (is_file($user_root.'/mount.php')) { - $mountConfig = include($user_root.'/mount.php'); - if (isset($mountConfig['user'][$user])) { - foreach ($mountConfig['user'][$user] as $mountPoint => $options) { - OC_Filesystem::mount($options['class'], $options['options'], $mountPoint); - } - } - - $mtime=filemtime($user_root.'/mount.php'); - $previousMTime=OC_Preferences::getValue($user,'files','mountconfigmtime',0); - if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated - OC_FileCache::triggerUpdate($user); - OC_Preferences::setValue($user,'files','mountconfigmtime',$mtime); - } - } + self::loadUserMountPoints($user); OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $user_dir)); } } @@ -77,13 +68,34 @@ class OC_Util { self::$fsSetup=false; } + public static function loadUserMountPoints($user) { + $user_dir = '/'.$user.'/files'; + $user_root = OC_User::getHome($user); + $userdirectory = $user_root . '/files'; + if (is_file($user_root.'/mount.php')) { + $mountConfig = include $user_root.'/mount.php'; + if (isset($mountConfig['user'][$user])) { + foreach ($mountConfig['user'][$user] as $mountPoint => $options) { + OC_Filesystem::mount($options['class'], $options['options'], $mountPoint); + } + } + + $mtime=filemtime($user_root.'/mount.php'); + $previousMTime=OC_Preferences::getValue($user, 'files', 'mountconfigmtime', 0); + if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated + OC_FileCache::triggerUpdate($user); + OC_Preferences::setValue($user, 'files', 'mountconfigmtime', $mtime); + } + } + } + /** * get the current installed version of ownCloud * @return array */ public static function getVersion() { // hint: We only can count up. So the internal version number of ownCloud 4.5 will be 4.90.0. This is not visible to the user - return array(4,91,00); + return array(4, 91, 02); } /** @@ -145,7 +157,7 @@ class OC_Util { * @param string $text the text content for the element */ public static function addHeader( $tag, $attributes, $text='') { - self::$headers[]=array('tag'=>$tag,'attributes'=>$attributes,'text'=>$text); + self::$headers[]=array('tag'=>$tag,'attributes'=>$attributes, 'text'=>$text); } /** @@ -154,16 +166,16 @@ class OC_Util { * @param int timestamp $timestamp * @param bool dateOnly option to ommit time from the result */ - public static function formatDate( $timestamp,$dateOnly=false) { + public static function formatDate( $timestamp, $dateOnly=false) { if(isset($_SESSION['timezone'])) {//adjust to clients timezone if we know it $systemTimeZone = intval(date('O')); - $systemTimeZone=(round($systemTimeZone/100,0)*60)+($systemTimeZone%100); + $systemTimeZone=(round($systemTimeZone/100, 0)*60)+($systemTimeZone%100); $clientTimeZone=$_SESSION['timezone']*60; $offset=$clientTimeZone-$systemTimeZone; $timestamp=$timestamp+$offset*60; } - $timeformat=$dateOnly?'F j, Y':'F j, Y, H:i'; - return date($timeformat,$timestamp); + $l=OC_L10N::get('lib'); + return $l->l($dateOnly ? 'date' : 'datetime', $timestamp); } /** @@ -174,7 +186,7 @@ class OC_Util { * @param string $url * @return OC_Template */ - public static function getPageNavi($pagecount,$page,$url) { + public static function getPageNavi($pagecount, $page, $url) { $pagelinkcount=8; if ($pagecount>1) { @@ -184,11 +196,11 @@ class OC_Util { if($pagestop>$pagecount) $pagestop=$pagecount; $tmpl = new OC_Template( '', 'part.pagenavi', '' ); - $tmpl->assign('page',$page); - $tmpl->assign('pagecount',$pagecount); - $tmpl->assign('pagestart',$pagestart); - $tmpl->assign('pagestop',$pagestop); - $tmpl->assign('url',$url); + $tmpl->assign('page', $page); + $tmpl->assign('pagecount', $pagecount); + $tmpl->assign('pagestart', $pagestart); + $tmpl->assign('pagestop', $pagestop); + $tmpl->assign('url', $url); return $tmpl; } } @@ -205,7 +217,7 @@ class OC_Util { $web_server_restart= false; //check for database drivers if(!(is_callable('sqlite_open') or class_exists('SQLite3')) and !is_callable('mysql_connect') and !is_callable('pg_connect')) { - $errors[]=array('error'=>'No database drivers (sqlite, mysql, or postgresql) installed.
            ','hint'=>'');//TODO: sane hint + $errors[]=array('error'=>'No database drivers (sqlite, mysql, or postgresql) installed.
            ', 'hint'=>'');//TODO: sane hint $web_server_restart= true; } @@ -214,13 +226,13 @@ class OC_Util { // Check if config folder is writable. if(!is_writable(OC::$SERVERROOT."/config/") or !is_readable(OC::$SERVERROOT."/config/")) { - $errors[]=array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud"); + $errors[]=array('error'=>"Can't write into config directory 'config'", 'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud"); } // Check if there is a writable install folder. if(OC_Config::getValue('appstoreenabled', true)) { if( OC_App::getInstallPath() === null || !is_writable(OC_App::getInstallPath()) || !is_readable(OC_App::getInstallPath()) ) { - $errors[]=array('error'=>"Can't write into apps directory",'hint'=>"You can usually fix this by giving the webserver user write access to the apps directory + $errors[]=array('error'=>"Can't write into apps directory", 'hint'=>"You can usually fix this by giving the webserver user write access to the apps directory in owncloud or disabling the appstore in the config file."); } } @@ -229,24 +241,24 @@ class OC_Util { //check for correct file permissions if(!stristr(PHP_OS, 'WIN')) { $permissionsModHint="Please change the permissions to 0770 so that the directory cannot be listed by other users."; - $prems=substr(decoct(@fileperms($CONFIG_DATADIRECTORY)),-3); - if(substr($prems,-1)!='0') { - OC_Helper::chmodr($CONFIG_DATADIRECTORY,0770); + $prems=substr(decoct(@fileperms($CONFIG_DATADIRECTORY)), -3); + if(substr($prems, -1)!='0') { + OC_Helper::chmodr($CONFIG_DATADIRECTORY, 0770); clearstatcache(); - $prems=substr(decoct(@fileperms($CONFIG_DATADIRECTORY)),-3); - if(substr($prems,2,1)!='0') { - $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY.') is readable for other users
            ','hint'=>$permissionsModHint); + $prems=substr(decoct(@fileperms($CONFIG_DATADIRECTORY)), -3); + if(substr($prems, 2, 1)!='0') { + $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY.') is readable for other users
            ', 'hint'=>$permissionsModHint); } } if( OC_Config::getValue( "enablebackup", false )) { $CONFIG_BACKUPDIRECTORY = OC_Config::getValue( "backupdirectory", OC::$SERVERROOT."/backup" ); - $prems=substr(decoct(@fileperms($CONFIG_BACKUPDIRECTORY)),-3); - if(substr($prems,-1)!='0') { - OC_Helper::chmodr($CONFIG_BACKUPDIRECTORY,0770); + $prems=substr(decoct(@fileperms($CONFIG_BACKUPDIRECTORY)), -3); + if(substr($prems, -1)!='0') { + OC_Helper::chmodr($CONFIG_BACKUPDIRECTORY, 0770); clearstatcache(); - $prems=substr(decoct(@fileperms($CONFIG_BACKUPDIRECTORY)),-3); - if(substr($prems,2,1)!='0') { - $errors[]=array('error'=>'Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable for other users
            ','hint'=>$permissionsModHint); + $prems=substr(decoct(@fileperms($CONFIG_BACKUPDIRECTORY)), -3); + if(substr($prems, 2, 1)!='0') { + $errors[]=array('error'=>'Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable for other users
            ', 'hint'=>$permissionsModHint); } } } @@ -257,62 +269,67 @@ class OC_Util { if(!is_dir($CONFIG_DATADIRECTORY)) { $success=@mkdir($CONFIG_DATADIRECTORY); if(!$success) { - $errors[]=array('error'=>"Can't create data directory (".$CONFIG_DATADIRECTORY.")",'hint'=>"You can usually fix this by giving the webserver write access to the ownCloud directory '".OC::$SERVERROOT."' (in a terminal, use the command 'chown -R www-data:www-data /path/to/your/owncloud/install/data' "); + $errors[]=array('error'=>"Can't create data directory (".$CONFIG_DATADIRECTORY.")", 'hint'=>"You can usually fix this by giving the webserver write access to the ownCloud directory '".OC::$SERVERROOT."' (in a terminal, use the command 'chown -R www-data:www-data /path/to/your/owncloud/install/data' "); } } else if(!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) { - $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY.') not writable by ownCloud
            ','hint'=>$permissionsHint); + $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY.') not writable by ownCloud
            ', 'hint'=>$permissionsHint); } // check if all required php modules are present if(!class_exists('ZipArchive')) { - $errors[]=array('error'=>'PHP module zip not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP module zip not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } if(!function_exists('mb_detect_encoding')) { - $errors[]=array('error'=>'PHP module mb multibyte not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP module mb multibyte not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } if(!function_exists('ctype_digit')) { - $errors[]=array('error'=>'PHP module ctype is not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP module ctype is not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } if(!function_exists('json_encode')) { - $errors[]=array('error'=>'PHP module JSON is not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP module JSON is not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } if(!function_exists('imagepng')) { - $errors[]=array('error'=>'PHP module GD is not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP module GD is not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } if(!function_exists('gzencode')) { - $errors[]=array('error'=>'PHP module zlib is not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP module zlib is not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); + $web_server_restart= false; + } + if(!function_exists('iconv')) { + $errors[]=array('error'=>'PHP module iconv is not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } - if(!function_exists('simplexml_load_string')) { - $errors[]=array('error'=>'PHP module SimpleXML is not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP module SimpleXML is not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } if(floatval(phpversion())<5.3) { - $errors[]=array('error'=>'PHP 5.3 is required.
            ','hint'=>'Please ask your server administrator to update PHP to version 5.3 or higher. PHP 5.2 is no longer supported by ownCloud and the PHP community.'); + $errors[]=array('error'=>'PHP 5.3 is required.
            ', 'hint'=>'Please ask your server administrator to update PHP to version 5.3 or higher. PHP 5.2 is no longer supported by ownCloud and the PHP community.'); $web_server_restart= false; } if(!defined('PDO::ATTR_DRIVER_NAME')) { - $errors[]=array('error'=>'PHP PDO module is not installed.
            ','hint'=>'Please ask your server administrator to install the module.'); + $errors[]=array('error'=>'PHP PDO module is not installed.
            ', 'hint'=>'Please ask your server administrator to install the module.'); $web_server_restart= false; } if($web_server_restart) { - $errors[]=array('error'=>'PHP modules have been installed, but they are still listed as missing?
            ','hint'=>'Please ask your server administrator to restart the web server.'); + $errors[]=array('error'=>'PHP modules have been installed, but they are still listed as missing?
            ', 'hint'=>'Please ask your server administrator to restart the web server.'); } return $errors; } - public static function displayLoginPage($display_lostpassword) { + public static function displayLoginPage($errors = array()) { $parameters = array(); - $parameters['display_lostpassword'] = $display_lostpassword; + foreach( $errors as $key => $value ) { + $parameters[$value] = true; + } if (!empty($_POST['user'])) { $parameters["username"] = OC_Util::sanitizeHTML($_POST['user']).'"'; @@ -359,6 +376,7 @@ class OC_Util { public static function checkAdminUser() { // Check if we are a user self::checkLoggedIn(); + self::verifyUser(); if( !OC_Group::inGroup( OC_User::getUser(), 'admin' )) { header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php' )); exit(); @@ -372,7 +390,8 @@ class OC_Util { public static function checkSubAdminUser() { // Check if we are a user self::checkLoggedIn(); - if(OC_Group::inGroup(OC_User::getUser(),'admin')) { + self::verifyUser(); + if(OC_Group::inGroup(OC_User::getUser(), 'admin')) { return true; } if(!OC_SubAdmin::isSubAdmin(OC_User::getUser())) { @@ -382,6 +401,40 @@ class OC_Util { return true; } + /** + * Check if the user verified the login with his password in the last 15 minutes + * If not, the user will be shown a password verification page + */ + public static function verifyUser() { + if(OC_Config::getValue('enhancedauth', false) === true) { + // Check password to set session + if(isset($_POST['password'])) { + if (OC_User::login(OC_User::getUser(), $_POST["password"] ) === true) { + $_SESSION['verifiedLogin']=time() + OC_Config::getValue('enhancedauthtime', 15 * 60); + } + } + + // Check if the user verified his password + if(!isset($_SESSION['verifiedLogin']) OR $_SESSION['verifiedLogin'] < time()) { + OC_Template::printGuestPage("", "verify", array('username' => OC_User::getUser())); + exit(); + } + } + } + + /** + * Check if the user verified the login with his password + * @return bool + */ + public static function isUserVerified() { + if(OC_Config::getValue('enhancedauth', false) === true) { + if(!isset($_SESSION['verifiedLogin']) OR $_SESSION['verifiedLogin'] < time()) { + return false; + } + } + return true; + } + /** * Redirect to the user default page */ @@ -411,25 +464,14 @@ class OC_Util { * @return string */ public static function getInstanceId() { - $id=OC_Config::getValue('instanceid',null); + $id=OC_Config::getValue('instanceid', null); if(is_null($id)) { $id=uniqid(); - OC_Config::setValue('instanceid',$id); + OC_Config::setValue('instanceid', $id); } return $id; } - /** - * @brief Static lifespan (in seconds) when a request token expires. - * @see OC_Util::callRegister() - * @see OC_Util::isCallRegistered() - * @description - * Also required for the client side to compute the piont in time when to - * request a fresh token. The client will do so when nearly 97% of the - * timespan coded here has expired. - */ - public static $callLifespan = 3600; // 3600 secs = 1 hour - /** * @brief Register an get/post call. Important to prevent CSRF attacks. * @todo Write howto: CSRF protection guide @@ -438,40 +480,25 @@ class OC_Util { * Creates a 'request token' (random) and stores it inside the session. * Ever subsequent (ajax) request must use such a valid token to succeed, * otherwise the request will be denied as a protection against CSRF. - * The tokens expire after a fixed lifespan. - * @see OC_Util::$callLifespan * @see OC_Util::isCallRegistered() */ public static function callRegister() { - // generate a random token. - $token = self::generate_random_bytes(20); - - // store the token together with a timestamp in the session. - $_SESSION['requesttoken-'.$token]=time(); - - // cleanup old tokens garbage collector - // only run every 20th time so we don't waste cpu cycles - if(rand(0,20)==0) { - foreach($_SESSION as $key=>$value) { - // search all tokens in the session - if(substr($key,0,12)=='requesttoken') { - // check if static lifespan has expired - if($value+self::$callLifespan array( + 'timeout' => 10 + ) + ) + ); + $data=@file_get_contents($url, 0, $ctx); + + } + + return $data; + } + } diff --git a/lib/vcategories.php b/lib/vcategories.php index 6b1d6a316f1660bcd0e218e793892041892abffe..406a4eb1074cd4b1ccf0c8a9eb5dac05748621ad 100644 --- a/lib/vcategories.php +++ b/lib/vcategories.php @@ -21,6 +21,7 @@ * */ +OC_Hook::connect('OC_User', 'post_deleteUser', 'OC_VCategories', 'post_deleteUser'); /** * Class for easy access to categories in VCARD, VEVENT, VTODO and VJOURNAL. @@ -28,50 +29,261 @@ * anything else that is either parsed from a vobject or that the user chooses * to add. * Category names are not case-sensitive, but will be saved with the case they - * are entered in. If a user already has a category 'family' for an app, and + * are entered in. If a user already has a category 'family' for a type, and * tries to add a category named 'Family' it will be silently ignored. - * NOTE: There is a limitation in that the the configvalue field in the - * preferences table is a varchar(255). */ class OC_VCategories { - const PREF_CATEGORIES_LABEL = 'extra_categories'; + /** * Categories */ private $categories = array(); - private $app = null; + /** + * Used for storing objectid/categoryname pairs while rescanning. + */ + private static $relations = array(); + + private $type = null; private $user = null; + const CATEGORY_TABLE = '*PREFIX*vcategory'; + const RELATION_TABLE = '*PREFIX*vcategory_to_object'; + + const CATEGORY_FAVORITE = '_$!!$_'; + + const FORMAT_LIST = 0; + const FORMAT_MAP = 1; + /** * @brief Constructor. - * @param $app The application identifier e.g. 'contacts' or 'calendar'. + * @param $type The type identifier e.g. 'contact' or 'event'. * @param $user The user whos data the object will operate on. This * parameter should normally be omitted but to make an app able to * update categories for all users it is made possible to provide it. * @param $defcategories An array of default categories to be used if none is stored. */ - public function __construct($app, $user=null, $defcategories=array()) { - $this->app = $app; + public function __construct($type, $user=null, $defcategories=array()) { + $this->type = $type; $this->user = is_null($user) ? OC_User::getUser() : $user; - $categories = trim(OC_Preferences::getValue($this->user, $app, self::PREF_CATEGORIES_LABEL, '')); - if ($categories) { - $categories = @unserialize($categories); + + $this->loadCategories(); + OCP\Util::writeLog('core', __METHOD__ . ', categories: ' + . print_r($this->categories, true), + OCP\Util::DEBUG + ); + + if($defcategories && count($this->categories) === 0) { + $this->addMulti($defcategories, true); + } + } + + /** + * @brief Load categories from db. + */ + private function loadCategories() { + $this->categories = array(); + $result = null; + $sql = 'SELECT `id`, `category` FROM `' . self::CATEGORY_TABLE . '` ' + . 'WHERE `uid` = ? AND `type` = ? ORDER BY `category`'; + try { + $stmt = OCP\DB::prepare($sql); + $result = $stmt->execute(array($this->user, $this->type)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + } + + if(!is_null($result)) { + while( $row = $result->fetchRow()) { + // The keys are prefixed because array_search wouldn't work otherwise :-/ + $this->categories[$row['id']] = $row['category']; + } + } + OCP\Util::writeLog('core', __METHOD__.', categories: ' . print_r($this->categories, true), + OCP\Util::DEBUG); + } + + + /** + * @brief Check if any categories are saved for this type and user. + * @returns boolean. + * @param $type The type identifier e.g. 'contact' or 'event'. + * @param $user The user whos categories will be checked. If not set current user will be used. + */ + public static function isEmpty($type, $user = null) { + $user = is_null($user) ? OC_User::getUser() : $user; + $sql = 'SELECT COUNT(*) FROM `' . self::CATEGORY_TABLE . '` ' + . 'WHERE `uid` = ? AND `type` = ?'; + try { + $stmt = OCP\DB::prepare($sql); + $result = $stmt->execute(array($user, $type)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + return false; + } + return ($result->numRows() == 0); + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + return false; } - $this->categories = is_array($categories) ? $categories : $defcategories; } /** * @brief Get the categories for a specific user. + * @param * @returns array containing the categories as strings. */ - public function categories() { - //OC_Log::write('core','OC_VCategories::categories: '.print_r($this->categories, true), OC_Log::DEBUG); + public function categories($format = null) { if(!$this->categories) { return array(); } - usort($this->categories, 'strnatcasecmp'); // usort to also renumber the keys - return $this->categories; + $categories = array_values($this->categories); + uasort($categories, 'strnatcasecmp'); + if($format == self::FORMAT_MAP) { + $catmap = array(); + foreach($categories as $category) { + if($category !== self::CATEGORY_FAVORITE) { + $catmap[] = array( + 'id' => $this->array_searchi($category, $this->categories), + 'name' => $category + ); + } + } + return $catmap; + } + + // Don't add favorites to normal categories. + $favpos = array_search(self::CATEGORY_FAVORITE, $categories); + if($favpos !== false) { + return array_splice($categories, $favpos); + } else { + return $categories; + } + } + + /** + * Get the a list if items belonging to $category. + * + * Throws an exception if the category could not be found. + * + * @param string|integer $category Category id or name. + * @returns array An array of object ids or false on error. + */ + public function idsForCategory($category) { + $result = null; + if(is_numeric($category)) { + $catid = $category; + } elseif(is_string($category)) { + $catid = $this->array_searchi($category, $this->categories); + } + OCP\Util::writeLog('core', __METHOD__.', category: '.$catid.' '.$category, OCP\Util::DEBUG); + if($catid === false) { + $l10n = OC_L10N::get('core'); + throw new Exception( + $l10n->t('Could not find category "%s"', $category) + ); + } + + $ids = array(); + $sql = 'SELECT `objid` FROM `' . self::RELATION_TABLE + . '` WHERE `categoryid` = ?'; + + try { + $stmt = OCP\DB::prepare($sql); + $result = $stmt->execute(array($catid)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + return false; + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + return false; + } + + if(!is_null($result)) { + while( $row = $result->fetchRow()) { + $ids[] = (int)$row['objid']; + } + } + + return $ids; + } + + /** + * Get the a list if items belonging to $category. + * + * Throws an exception if the category could not be found. + * + * @param string|integer $category Category id or name. + * @param array $tableinfo Array in the form {'tablename' => table, 'fields' => ['field1', 'field2']} + * @param int $limit + * @param int $offset + * + * This generic method queries a table assuming that the id + * field is called 'id' and the table name provided is in + * the form '*PREFIX*table_name'. + * + * If the category name cannot be resolved an exception is thrown. + * + * TODO: Maybe add the getting permissions for objects? + * + * @returns array containing the resulting items or false on error. + */ + public function itemsForCategory($category, $tableinfo, $limit = null, $offset = null) { + $result = null; + if(is_numeric($category)) { + $catid = $category; + } elseif(is_string($category)) { + $catid = $this->array_searchi($category, $this->categories); + } + OCP\Util::writeLog('core', __METHOD__.', category: '.$catid.' '.$category, OCP\Util::DEBUG); + if($catid === false) { + $l10n = OC_L10N::get('core'); + throw new Exception( + $l10n->t('Could not find category "%s"', $category) + ); + } + $fields = ''; + foreach($tableinfo['fields'] as $field) { + $fields .= '`' . $tableinfo['tablename'] . '`.`' . $field . '`,'; + } + $fields = substr($fields, 0, -1); + + $items = array(); + $sql = 'SELECT `' . self::RELATION_TABLE . '`.`categoryid`, ' . $fields + . ' FROM `' . $tableinfo['tablename'] . '` JOIN `' + . self::RELATION_TABLE . '` ON `' . $tableinfo['tablename'] + . '`.`id` = `' . self::RELATION_TABLE . '`.`objid` WHERE `' + . self::RELATION_TABLE . '`.`categoryid` = ?'; + + try { + $stmt = OCP\DB::prepare($sql, $limit, $offset); + $result = $stmt->execute(array($catid)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + return false; + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + return false; + } + + if(!is_null($result)) { + while( $row = $result->fetchRow()) { + $items[] = $row; + } + } + //OCP\Util::writeLog('core', __METHOD__.', count: ' . count($items), OCP\Util::DEBUG); + //OCP\Util::writeLog('core', __METHOD__.', sql: ' . $sql, OCP\Util::DEBUG); + + return $items; } /** @@ -84,22 +296,51 @@ class OC_VCategories { } /** - * @brief Add a new category name. + * @brief Add a new category. + * @param $name A string with a name of the category + * @returns int the id of the added category or false if it already exists. + */ + public function add($name) { + OCP\Util::writeLog('core', __METHOD__.', name: ' . $name, OCP\Util::DEBUG); + if($this->hasCategory($name)) { + OCP\Util::writeLog('core', __METHOD__.', name: ' . $name. ' exists already', OCP\Util::DEBUG); + return false; + } + OCP\DB::insertIfNotExist(self::CATEGORY_TABLE, + array( + 'uid' => $this->user, + 'type' => $this->type, + 'category' => $name, + )); + $id = OCP\DB::insertid(self::CATEGORY_TABLE); + OCP\Util::writeLog('core', __METHOD__.', id: ' . $id, OCP\Util::DEBUG); + $this->categories[$id] = $name; + return $id; + } + + /** + * @brief Add a new category. * @param $names A string with a name or an array of strings containing * the name(s) of the categor(y|ies) to add. * @param $sync bool When true, save the categories + * @param $id int Optional object id to add to this|these categor(y|ies) * @returns bool Returns false on error. */ - public function add($names, $sync=false) { + public function addMulti($names, $sync=false, $id = null) { if(!is_array($names)) { $names = array($names); } $names = array_map('trim', $names); $newones = array(); foreach($names as $name) { - if(($this->in_arrayi($name, $this->categories) == false) && $name != '') { + if(($this->in_arrayi( + $name, $this->categories) == false) && $name != '') { $newones[] = $name; } + if(!is_null($id) ) { + // Insert $objectid, $categoryid pairs if not exist. + self::$relations[] = array('objid' => $id, 'category' => $name); + } } if(count($newones) > 0) { $this->categories = array_merge($this->categories, $newones); @@ -114,8 +355,8 @@ class OC_VCategories { * @brief Extracts categories from a vobject and add the ones not already present. * @param $vobject The instance of OC_VObject to load the categories from. */ - public function loadFromVObject($vobject, $sync=false) { - $this->add($vobject->getAsArray('CATEGORIES'), $sync); + public function loadFromVObject($id, $vobject, $sync=false) { + $this->addMulti($vobject->getAsArray('CATEGORIES'), $sync, $id); } /** @@ -128,23 +369,62 @@ class OC_VCategories { * $result = $stmt->execute(); * $objects = array(); * if(!is_null($result)) { - * while( $row = $result->fetchRow()) { - * $objects[] = $row['carddata']; + * while( $row = $result->fetchRow()){ + * $objects[] = array($row['id'], $row['carddata']); * } * } * $categories->rescan($objects); */ public function rescan($objects, $sync=true, $reset=true) { + if($reset === true) { + $result = null; + // Find all objectid/categoryid pairs. + try { + $stmt = OCP\DB::prepare('SELECT `id` FROM `' . self::CATEGORY_TABLE . '` ' + . 'WHERE `uid` = ? AND `type` = ?'); + $result = $stmt->execute(array($this->user, $this->type)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + return false; + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + } + + // And delete them. + if(!is_null($result)) { + $stmt = OCP\DB::prepare('DELETE FROM `' . self::RELATION_TABLE . '` ' + . 'WHERE `categoryid` = ? AND `type`= ?'); + while( $row = $result->fetchRow()) { + $stmt->execute(array($row['id'], $this->type)); + } + } + try { + $stmt = OCP\DB::prepare('DELETE FROM `' . self::CATEGORY_TABLE . '` ' + . 'WHERE `uid` = ? AND `type` = ?'); + $result = $stmt->execute(array($this->user, $this->type)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + return; + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__ . ', exception: ' + . $e->getMessage(), OCP\Util::ERROR); + return; + } $this->categories = array(); } + // Parse all the VObjects foreach($objects as $object) { - //OC_Log::write('core','OC_VCategories::rescan: '.substr($object, 0, 100).'(...)', OC_Log::DEBUG); - $vobject = OC_VObject::parse($object); + $vobject = OC_VObject::parse($object[1]); if(!is_null($vobject)) { - $this->loadFromVObject($vobject, $sync); + // Load the categories + $this->loadFromVObject($object[0], $vobject, $sync); } else { - OC_Log::write('core','OC_VCategories::rescan, unable to parse. ID: '.', '.substr($object, 0, 100).'(...)', OC_Log::DEBUG); + OC_Log::write('core', __METHOD__ . ', unable to parse. ID: ' . ', ' + . substr($object, 0, 100) . '(...)', OC_Log::DEBUG); } } $this->save(); @@ -155,15 +435,223 @@ class OC_VCategories { */ private function save() { if(is_array($this->categories)) { - usort($this->categories, 'strnatcasecmp'); // usort to also renumber the keys - $escaped_categories = serialize($this->categories); - OC_Preferences::setValue($this->user, $this->app, self::PREF_CATEGORIES_LABEL, $escaped_categories); - OC_Log::write('core','OC_VCategories::save: '.print_r($this->categories, true), OC_Log::DEBUG); + foreach($this->categories as $category) { + OCP\DB::insertIfNotExist(self::CATEGORY_TABLE, + array( + 'uid' => $this->user, + 'type' => $this->type, + 'category' => $category, + )); + } + // reload categories to get the proper ids. + $this->loadCategories(); + // Loop through temporarily cached objectid/categoryname pairs + // and save relations. + $categories = $this->categories; + // For some reason this is needed or array_search(i) will return 0..? + ksort($categories); + foreach(self::$relations as $relation) { + $catid = $this->array_searchi($relation['category'], $categories); + OC_Log::write('core', __METHOD__ . 'catid, ' . $relation['category'] . ' ' . $catid, OC_Log::DEBUG); + if($catid) { + OCP\DB::insertIfNotExist(self::RELATION_TABLE, + array( + 'objid' => $relation['objid'], + 'categoryid' => $catid, + 'type' => $this->type, + )); + } + } + self::$relations = array(); // reset } else { - OC_Log::write('core','OC_VCategories::save: $this->categories is not an array! '.print_r($this->categories, true), OC_Log::ERROR); + OC_Log::write('core', __METHOD__.', $this->categories is not an array! ' + . print_r($this->categories, true), OC_Log::ERROR); } } + /** + * @brief Delete categories and category/object relations for a user. + * For hooking up on post_deleteUser + * @param string $uid The user id for which entries should be purged. + */ + public static function post_deleteUser($arguments) { + // Find all objectid/categoryid pairs. + $result = null; + try { + $stmt = OCP\DB::prepare('SELECT `id` FROM `' . self::CATEGORY_TABLE . '` ' + . 'WHERE `uid` = ?'); + $result = $stmt->execute(array($arguments['uid'])); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + } + + if(!is_null($result)) { + try { + $stmt = OCP\DB::prepare('DELETE FROM `' . self::RELATION_TABLE . '` ' + . 'WHERE `categoryid` = ?'); + while( $row = $result->fetchRow()) { + try { + $stmt->execute(array($row['id'])); + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + } + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + } + } + try { + $stmt = OCP\DB::prepare('DELETE FROM `' . self::CATEGORY_TABLE . '` ' + . 'WHERE `uid` = ? AND'); + $result = $stmt->execute(array($arguments['uid'])); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__ . ', exception: ' + . $e->getMessage(), OCP\Util::ERROR); + } + } + + /** + * @brief Delete category/object relations from the db + * @param int $id The id of the object + * @param string $type The type of object (event/contact/task/journal). + * Defaults to the type set in the instance + * @returns boolean Returns false on error. + */ + public function purgeObject($id, $type = null) { + $type = is_null($type) ? $this->type : $type; + try { + $stmt = OCP\DB::prepare('DELETE FROM `' . self::RELATION_TABLE . '` ' + . 'WHERE `objid` = ? AND `type`= ?'); + $result = $stmt->execute(array($id, $type)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + return false; + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + return false; + } + return true; + } + + /** + * Get favorites for an object type + * + * @param string $type The type of object (event/contact/task/journal). + * Defaults to the type set in the instance + * @returns array An array of object ids. + */ + public function getFavorites($type = null) { + $type = is_null($type) ? $this->type : $type; + + try { + return $this->idsForCategory(self::CATEGORY_FAVORITE); + } catch(Exception $e) { + // No favorites + return array(); + } + } + + /** + * Add an object to favorites + * + * @param int $objid The id of the object + * @param string $type The type of object (event/contact/task/journal). + * Defaults to the type set in the instance + * @returns boolean + */ + public function addToFavorites($objid, $type = null) { + $type = is_null($type) ? $this->type : $type; + if(!$this->hasCategory(self::CATEGORY_FAVORITE)) { + $this->add(self::CATEGORY_FAVORITE, true); + } + return $this->addToCategory($objid, self::CATEGORY_FAVORITE, $type); + } + + /** + * Remove an object from favorites + * + * @param int $objid The id of the object + * @param string $type The type of object (event/contact/task/journal). + * Defaults to the type set in the instance + * @returns boolean + */ + public function removeFromFavorites($objid, $type = null) { + $type = is_null($type) ? $this->type : $type; + return $this->removeFromCategory($objid, self::CATEGORY_FAVORITE, $type); + } + + /** + * @brief Creates a category/object relation. + * @param int $objid The id of the object + * @param int|string $category The id or name of the category + * @param string $type The type of object (event/contact/task/journal). + * Defaults to the type set in the instance + * @returns boolean Returns false on database error. + */ + public function addToCategory($objid, $category, $type = null) { + $type = is_null($type) ? $this->type : $type; + if(is_string($category) && !is_numeric($category)) { + if(!$this->hasCategory($category)) { + $this->add($category, true); + } + $categoryid = $this->array_searchi($category, $this->categories); + } else { + $categoryid = $category; + } + try { + OCP\DB::insertIfNotExist(self::RELATION_TABLE, + array( + 'objid' => $objid, + 'categoryid' => $categoryid, + 'type' => $type, + )); + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + return false; + } + return true; + } + + /** + * @brief Delete single category/object relation from the db + * @param int $objid The id of the object + * @param int|string $category The id or name of the category + * @param string $type The type of object (event/contact/task/journal). + * Defaults to the type set in the instance + * @returns boolean + */ + public function removeFromCategory($objid, $category, $type = null) { + $type = is_null($type) ? $this->type : $type; + $categoryid = (is_string($category) && !is_numeric($category)) + ? $this->array_searchi($category, $this->categories) + : $category; + try { + $sql = 'DELETE FROM `' . self::RELATION_TABLE . '` ' + . 'WHERE `objid` = ? AND `categoryid` = ? AND `type` = ?'; + OCP\Util::writeLog('core', __METHOD__.', sql: ' . $objid . ' ' . $categoryid . ' ' . $type, + OCP\Util::DEBUG); + $stmt = OCP\DB::prepare($sql); + $stmt->execute(array($objid, $categoryid, $type)); + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + return false; + } + return true; + } + /** * @brief Delete categories from the db and from all the vobject supplied * @param $names An array of categories to delete @@ -173,37 +661,87 @@ class OC_VCategories { if(!is_array($names)) { $names = array($names); } - OC_Log::write('core','OC_VCategories::delete, before: '.print_r($this->categories, true), OC_Log::DEBUG); + + OC_Log::write('core', __METHOD__ . ', before: ' + . print_r($this->categories, true), OC_Log::DEBUG); foreach($names as $name) { - OC_Log::write('core','OC_VCategories::delete: '.$name, OC_Log::DEBUG); + $id = null; + OC_Log::write('core', __METHOD__.', '.$name, OC_Log::DEBUG); if($this->hasCategory($name)) { - //OC_Log::write('core','OC_VCategories::delete: '.$name.' got it', OC_Log::DEBUG); - unset($this->categories[$this->array_searchi($name, $this->categories)]); + $id = $this->array_searchi($name, $this->categories); + unset($this->categories[$id]); + } + try { + $stmt = OCP\DB::prepare('DELETE FROM `' . self::CATEGORY_TABLE . '` WHERE ' + . '`uid` = ? AND `type` = ? AND `category` = ?'); + $result = $stmt->execute(array($this->user, $this->type, $name)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__ . ', exception: ' + . $e->getMessage(), OCP\Util::ERROR); + } + if(!is_null($id) && $id !== false) { + try { + $sql = 'DELETE FROM `' . self::RELATION_TABLE . '` ' + . 'WHERE `categoryid` = ?'; + $stmt = OCP\DB::prepare($sql); + $result = $stmt->execute(array($id)); + if (OC_DB::isError($result)) { + OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR); + } + } catch(Exception $e) { + OCP\Util::writeLog('core', __METHOD__.', exception: '.$e->getMessage(), + OCP\Util::ERROR); + return false; + } } } - $this->save(); - OC_Log::write('core','OC_VCategories::delete, after: '.print_r($this->categories, true), OC_Log::DEBUG); + OC_Log::write('core', __METHOD__.', after: ' + . print_r($this->categories, true), OC_Log::DEBUG); if(!is_null($objects)) { foreach($objects as $key=>&$value) { $vobject = OC_VObject::parse($value[1]); if(!is_null($vobject)) { - $categories = $vobject->getAsArray('CATEGORIES'); - //OC_Log::write('core','OC_VCategories::delete, before: '.$key.': '.print_r($categories, true), OC_Log::DEBUG); + $object = null; + $componentname = ''; + if (isset($vobject->VEVENT)) { + $object = $vobject->VEVENT; + $componentname = 'VEVENT'; + } else + if (isset($vobject->VTODO)) { + $object = $vobject->VTODO; + $componentname = 'VTODO'; + } else + if (isset($vobject->VJOURNAL)) { + $object = $vobject->VJOURNAL; + $componentname = 'VJOURNAL'; + } else { + $object = $vobject; + } + $categories = $object->getAsArray('CATEGORIES'); foreach($names as $name) { $idx = $this->array_searchi($name, $categories); - //OC_Log::write('core','OC_VCategories::delete, loop: '.$name.', '.print_r($idx, true), OC_Log::DEBUG); if($idx !== false) { - OC_Log::write('core','OC_VCategories::delete, unsetting: '.$categories[$this->array_searchi($name, $categories)], OC_Log::DEBUG); + OC_Log::write('core', __METHOD__ + .', unsetting: ' + . $categories[$this->array_searchi($name, $categories)], + OC_Log::DEBUG); unset($categories[$this->array_searchi($name, $categories)]); - //unset($categories[$idx]); } } - //OC_Log::write('core','OC_VCategories::delete, after: '.$key.': '.print_r($categories, true), OC_Log::DEBUG); - $vobject->setString('CATEGORIES', implode(',', $categories)); + + $object->setString('CATEGORIES', implode(',', $categories)); + if($vobject !== $object) { + $vobject[$componentname] = $object; + } $value[1] = $vobject->serialize(); $objects[$key] = $value; } else { - OC_Log::write('core','OC_VCategories::delete, unable to parse. ID: '.$value[0].', '.substr($value[1], 0, 50).'(...)', OC_Log::DEBUG); + OC_Log::write('core', __METHOD__ + .', unable to parse. ID: ' . $value[0] . ', ' + . substr($value[1], 0, 50) . '(...)', OC_Log::DEBUG); } } } @@ -222,7 +760,7 @@ class OC_VCategories { if(!is_array($haystack)) { return false; } - return array_search(strtolower($needle),array_map('strtolower',$haystack)); + return array_search(strtolower($needle), array_map('strtolower', $haystack)); } - } + diff --git a/lib/vobject.php b/lib/vobject.php index b5a04b4bf65db60efc5c6f583499def98775412e..267176ebc070f8590254ad6b38b8e5f6d9e3363e 100644 --- a/lib/vobject.php +++ b/lib/vobject.php @@ -24,11 +24,11 @@ * This class provides a streamlined interface to the Sabre VObject classes */ class OC_VObject{ - /** @var Sabre_VObject_Component */ + /** @var Sabre\VObject\Component */ protected $vobject; /** - * @returns Sabre_VObject_Component + * @returns Sabre\VObject\Component */ public function getVObject() { return $this->vobject; @@ -41,9 +41,9 @@ class OC_VObject{ */ public static function parse($data) { try { - Sabre_VObject_Property::$classMap['LAST-MODIFIED'] = 'Sabre_VObject_Property_DateTime'; - $vobject = Sabre_VObject_Reader::read($data); - if ($vobject instanceof Sabre_VObject_Component) { + Sabre\VObject\Property::$classMap['LAST-MODIFIED'] = 'Sabre\VObject\Property\DateTime'; + $vobject = Sabre\VObject\Reader::read($data); + if ($vobject instanceof Sabre\VObject\Component) { $vobject = new OC_VObject($vobject); } return $vobject; @@ -62,7 +62,7 @@ class OC_VObject{ foreach($value as &$i ) { $i = implode("\\\\;", explode(';', $i)); } - return implode(';',$value); + return implode(';', $value); } /** @@ -71,15 +71,15 @@ class OC_VObject{ * @return array */ public static function unescapeSemicolons($value) { - $array = explode(';',$value); + $array = explode(';', $value); for($i=0;$ivobject = $vobject_or_name; } else { - $this->vobject = new Sabre_VObject_Component($vobject_or_name); + $this->vobject = new Sabre\VObject\Component($vobject_or_name); } } @@ -117,9 +117,9 @@ class OC_VObject{ if(is_array($value)) { $value = OC_VObject::escapeSemicolons($value); } - $property = new Sabre_VObject_Property( $name, $value ); + $property = new Sabre\VObject\Property( $name, $value ); foreach($parameters as $name => $value) { - $property->parameters[] = new Sabre_VObject_Parameter($name, $value); + $property->parameters[] = new Sabre\VObject\Parameter($name, $value); } $this->vobject->add($property); @@ -127,8 +127,8 @@ class OC_VObject{ } public function setUID() { - $uid = substr(md5(rand().time()),0,10); - $this->vobject->add('UID',$uid); + $uid = substr(md5(rand().time()), 0, 10); + $this->vobject->add('UID', $uid); } public function setString($name, $string) { @@ -150,12 +150,12 @@ class OC_VObject{ * @param int $dateType * @return void */ - public function setDateTime($name, $datetime, $dateType=Sabre_VObject_Property_DateTime::LOCALTZ) { + public function setDateTime($name, $datetime, $dateType=Sabre\VObject\Property\DateTime::LOCALTZ) { if ($datetime == 'now') { $datetime = new DateTime(); } if ($datetime instanceof DateTime) { - $datetime_element = new Sabre_VObject_Property_DateTime($name); + $datetime_element = new Sabre\VObject\Property\DateTime($name); $datetime_element->setDateTime($datetime, $dateType); $this->vobject->__set($name, $datetime_element); }else{ @@ -183,7 +183,7 @@ class OC_VObject{ return $this->vobject->children; } $return = $this->vobject->__get($name); - if ($return instanceof Sabre_VObject_Component) { + if ($return instanceof Sabre\VObject\Component) { $return = new OC_VObject($return); } return $return; @@ -201,7 +201,7 @@ class OC_VObject{ return $this->vobject->__isset($name); } - public function __call($function,$arguments) { + public function __call($function, $arguments) { return call_user_func_array(array($this->vobject, $function), $arguments); } } diff --git a/ocs/providers.php b/ocs/providers.php index 4c68ded914e3f1c58f922b96c7be0f103f18bf3f..0c7cbaeff081c69d0c1d1c8942435a0d30d255d5 100644 --- a/ocs/providers.php +++ b/ocs/providers.php @@ -3,27 +3,27 @@ /** * ownCloud * -* @author Frank Karlitschek -* @copyright 2012 Frank Karlitschek frank@owncloud.org -* +* @author Frank Karlitschek +* @copyright 2012 Frank Karlitschek frank@owncloud.org +* * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either +* License as published by the Free Software Foundation; either * version 3 of the License, or any later version. -* +* * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public +* +* You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . -* +* */ require_once '../lib/base.php'; -$url='http://'.substr(OCP\Util::getServerHost().$_SERVER['REQUEST_URI'], 0, -17).'ocs/v1.php/'; +$url=OCP\Util::getServerProtocol().'://'.substr(OCP\Util::getServerHost().$_SERVER['REQUEST_URI'], 0, -17).'ocs/v1.php/'; echo(' diff --git a/ocs/v1.php b/ocs/v1.php index b12ea5ef18d0df1f9d257d8f879e456167b55ef7..1652b0bedbe223138f1a59ca57ca037626e5c196 100644 --- a/ocs/v1.php +++ b/ocs/v1.php @@ -3,22 +3,22 @@ /** * ownCloud * -* @author Frank Karlitschek -* @copyright 2012 Frank Karlitschek frank@owncloud.org -* +* @author Frank Karlitschek +* @copyright 2012 Frank Karlitschek frank@owncloud.org +* * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either +* License as published by the Free Software Foundation; either * version 3 of the License, or any later version. -* +* * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public +* +* You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . -* +* */ require_once '../lib/base.php'; diff --git a/public.php b/public.php index db8419373ee252e108daf75142f6e7a6153d0dee..759e8e91619276bc1f45e2f9913cd23654ea3e84 100644 --- a/public.php +++ b/public.php @@ -1,5 +1,5 @@ 3)?true:false; -function compareEntries($a,$b) { +function compareEntries($a, $b) { return $b->time - $a->time; } usort($entries, 'compareEntries'); -$tmpl->assign('loglevel',OC_Config::getValue( "loglevel", 2 )); -$tmpl->assign('entries',$entries); +$tmpl->assign('loglevel', OC_Config::getValue( "loglevel", 2 )); +$tmpl->assign('entries', $entries); $tmpl->assign('entriesremain', $entriesremain); -$tmpl->assign('htaccessworking',$htaccessworking); +$tmpl->assign('htaccessworking', $htaccessworking); +$tmpl->assign('internetconnectionworking', OC_Util::isinternetconnectionworking()); $tmpl->assign('backgroundjobs_mode', OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax')); $tmpl->assign('shareAPIEnabled', OC_Appconfig::getValue('core', 'shareapi_enabled', 'yes')); $tmpl->assign('allowLinks', OC_Appconfig::getValue('core', 'shareapi_allow_links', 'yes')); $tmpl->assign('allowResharing', OC_Appconfig::getValue('core', 'shareapi_allow_resharing', 'yes')); $tmpl->assign('sharePolicy', OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global')); -$tmpl->assign('forms',array()); +$tmpl->assign('forms', array()); foreach($forms as $form) { - $tmpl->append('forms',$form); + $tmpl->append('forms', $form); } $tmpl->printPage(); diff --git a/settings/ajax/apps/ocs.php b/settings/ajax/apps/ocs.php index fb78cc89248471008532c2be7fcc7a8aca3a65d8..1ffba26ad1d693d2404379b830761cbb5a779ecd 100644 --- a/settings/ajax/apps/ocs.php +++ b/settings/ajax/apps/ocs.php @@ -6,9 +6,6 @@ * See the COPYING-README file. */ -// Init owncloud -require_once '../../../lib/base.php'; - OC_JSON::checkAdminUser(); $l = OC_L10N::get('settings'); @@ -43,7 +40,7 @@ if(is_array($catagoryNames)) { if(!$local) { if($app['preview']=='') { - $pre='trans.png'; + $pre=OC_Helper::imagePath('settings', 'trans.png'); } else { $pre=$app['preview']; } diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php index b251fea504b9e89df86543affc05effa70818802..b2db2611518182df78ef760b1350561ff5e9530b 100644 --- a/settings/ajax/changepassword.php +++ b/settings/ajax/changepassword.php @@ -1,17 +1,13 @@ array( "username" => $username ))); diff --git a/settings/ajax/creategroup.php b/settings/ajax/creategroup.php index 83733ac4d2d58c130f447504b07bf5c02c6cb85d..0a79527c219f70131e97dfaa8654165338c322a0 100644 --- a/settings/ajax/creategroup.php +++ b/settings/ajax/creategroup.php @@ -1,16 +1,7 @@ array( "message" => $l->t("Authentication error") ))); - exit(); -} - OCP\JSON::callCheck(); +OC_JSON::checkAdminUser(); $groupname = $_POST["groupname"]; diff --git a/settings/ajax/createuser.php b/settings/ajax/createuser.php index bdf7e4983ac5fd5f12674bb0db9a721de01442f3..addae78517a45c51de930517355eb8a41ba42d23 100644 --- a/settings/ajax/createuser.php +++ b/settings/ajax/createuser.php @@ -1,15 +1,7 @@ array( "message" => "Authentication error" ))); - exit(); -} OCP\JSON::callCheck(); +OC_JSON::checkSubAdminUser(); $isadmin = OC_Group::inGroup(OC_User::getUser(), 'admin')?true:false; @@ -37,23 +29,26 @@ $username = $_POST["username"]; $password = $_POST["password"]; // Does the group exist? -if( in_array( $username, OC_User::getUsers())) { +if(OC_User::userExists($username)) { OC_JSON::error(array("data" => array( "message" => "User already exists" ))); exit(); } // Return Success story try { - OC_User::createUser($username, $password); + if (!OC_User::createUser($username, $password)) { + OC_JSON::error(array('data' => array( 'message' => 'User creation failed for '.$username ))); + exit(); + } foreach( $groups as $i ) { if(!OC_Group::groupExists($i)) { OC_Group::createGroup($i); } OC_Group::addToGroup( $username, $i ); } - OC_JSON::success(array("data" => - array( - "username" => $username, + OC_JSON::success(array("data" => + array( + "username" => $username, "groups" => implode( ", ", OC_Group::getUserGroups( $username ))))); } catch (Exception $exception) { OC_JSON::error(array("data" => array( "message" => $exception->getMessage()))); diff --git a/settings/ajax/disableapp.php b/settings/ajax/disableapp.php index 977a536af215d084e39584a50dd3d8c89f4ceea1..a39b06b9c7d6ffa27287cf6c005cf7f57e9c7b44 100644 --- a/settings/ajax/disableapp.php +++ b/settings/ajax/disableapp.php @@ -1,6 +1,4 @@ OC_Util::sanitizeHTML($entries), + "data" => OC_Util::sanitizeHTML($entries), "remain"=>(count(OC_Log_Owncloud::getEntries(1, $offset + $offset)) != 0) ? true : false)); diff --git a/settings/ajax/lostpassword.php b/settings/ajax/lostpassword.php index 2a40ba09a8ac3506af2050b0b5e191897b2db28b..b5f47bbceabe88a41464da3ed6283b14f3b85744 100644 --- a/settings/ajax/lostpassword.php +++ b/settings/ajax/lostpassword.php @@ -1,7 +1,5 @@ array_values($navIds), 'nav_entries' => $navigation)); diff --git a/settings/ajax/openid.php b/settings/ajax/openid.php index ecec085383c1124c599c3c7f6f1cb205ccdcfcd0..23c43c3c48eb209db10b5dfce13c86a0156776d4 100644 --- a/settings/ajax/openid.php +++ b/settings/ajax/openid.php @@ -1,8 +1,5 @@ array( "message" => $l->t("Unable to delete user") ))); -} \ No newline at end of file +} diff --git a/settings/ajax/setlanguage.php b/settings/ajax/setlanguage.php index 42eea7a96fdc03bb793fbd2e7bc17694d2832da0..aebb1b31b6f9f0bfad0cd77f169119a1f057ba99 100644 --- a/settings/ajax/setlanguage.php +++ b/settings/ajax/setlanguage.php @@ -1,8 +1,5 @@ array( "username" => $username ,'quota' => $quota))); +OC_JSON::success(array("data" => array( "username" => $username , 'quota' => $quota))); diff --git a/settings/ajax/togglegroups.php b/settings/ajax/togglegroups.php index 65747968c172bf62abf8665750757260e7af511c..f82ece4aee1464b47ba3c253fab507fef2daa9de 100644 --- a/settings/ajax/togglegroups.php +++ b/settings/ajax/togglegroups.php @@ -1,14 +1,17 @@ array( 'message' => $l->t('Admins can\'t remove themself from the admin group')))); + exit(); +} if(!OC_Group::inGroup(OC_User::getUser(), 'admin') && (!OC_SubAdmin::isUserAccessible(OC_User::getUser(), $username) || !OC_SubAdmin::isGroupAccessible(OC_User::getUser(), $group))) { $l = OC_L10N::get('core'); diff --git a/settings/ajax/togglesubadmins.php b/settings/ajax/togglesubadmins.php index 5f7126dca347dd94ce0c8dd853737a09afb35b8e..a99e805f69dff88ec3d1cd04636d409584975fbc 100644 --- a/settings/ajax/togglesubadmins.php +++ b/settings/ajax/togglesubadmins.php @@ -1,13 +1,10 @@ $user, - 'groups' => join(', ', OC_Group::getUserGroups($user)), - 'subadmin' => join(', ', OC_SubAdmin::getSubAdminsGroups($user)), + 'name' => $user, + 'groups' => join(', ', OC_Group::getUserGroups($user)), + 'subadmin' => join(', ', OC_SubAdmin::getSubAdminsGroups($user)), 'quota' => OC_Preferences::getValue($user, 'files', 'quota', 'default')); } } else { @@ -44,9 +42,9 @@ if (OC_Group::inGroup(OC_User::getUser(), 'admin')) { $batch = OC_Group::usersInGroups($groups, '', 10, $offset); foreach ($batch as $user) { $users[] = array( - 'name' => $user, - 'groups' => join(', ', OC_Group::getUserGroups($user)), + 'name' => $user, + 'groups' => join(', ', OC_Group::getUserGroups($user)), 'quota' => OC_Preferences::getValue($user, 'files', 'quota', 'default')); } } -OC_JSON::success(array('data' => $users)); \ No newline at end of file +OC_JSON::success(array('data' => $users)); diff --git a/settings/apps.php b/settings/apps.php index a1c1bf6aa5303710fb3d308a8111e5414ed23cb4..99a3094399d6a42d8d619a69a3200164f9f9a485 100644 --- a/settings/apps.php +++ b/settings/apps.php @@ -21,8 +21,8 @@ * */ -require_once '../lib/base.php'; OC_Util::checkAdminUser(); +OC_App::loadApps(); // Load the files we need OC_Util::addStyle( "settings", "settings" ); @@ -77,7 +77,7 @@ foreach ( $installedApps as $app ) { } - $info['preview'] = 'trans.png'; + $info['preview'] = OC_Helper::imagePath('settings', 'trans.png'); $info['version'] = OC_App::getAppVersion($app); @@ -95,11 +95,11 @@ if ( $remoteApps ) { foreach ( $remoteApps AS $key => $remote ) { - if ( + if ( $app['name'] == $remote['name'] - // To set duplicate detection to use OCS ID instead of string name, - // enable this code, remove the line of code above, - // and add [ID] to info.xml of each 3rd party app: + // To set duplicate detection to use OCS ID instead of string name, + // enable this code, remove the line of code above, + // and add [ID] to info.xml of each 3rd party app: // OR $app['ocs_id'] == $remote['ocs_id'] ) { diff --git a/settings/css/settings.css b/settings/css/settings.css index 60a42784661a9e5a33c3f4678eab9ae8d95f65ab..560862fa12f23c0c1ec86f20d09540699452105a 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -38,7 +38,7 @@ div.quota { float:right; display:block; position:absolute; right:25em; top:0; } div.quota-select-wrapper { position: relative; } select.quota { position:absolute; left:0; top:0; width:10em; } select.quota-user { position:relative; left:0; top:0; width:10em; } -input.quota-other { display:none; position:absolute; left:0.1em; top:0.1em; width:7em; border:none; -webkit-box-shadow: none; -moz-box-shadow:none ; box-shadow:none; } +input.quota-other { display:none; position:absolute; left:0.1em; top:0.1em; width:7em; border:none; box-shadow:none; } div.quota>span { position:absolute; right:0em; white-space:nowrap; top: 0.7em } select.quota.active { background: #fff; } @@ -65,5 +65,6 @@ span.version { margin-left:1em; margin-right:1em; color:#555; } /* ADMIN */ span.securitywarning {color:#C33; font-weight:bold; } +span.connectionwarning {color:#933; font-weight:bold; } input[type=radio] { width:1em; } table.shareAPI td { padding-bottom: 0.8em; } diff --git a/settings/help.php b/settings/help.php index 9157308dd57cf81e3023bb6a3ecf5a45b56d580f..69a5ec9c14691fd58861a2f5a223a70a500bf682 100644 --- a/settings/help.php +++ b/settings/help.php @@ -5,9 +5,8 @@ * See the COPYING-README file. */ -require_once '../lib/base.php'; OC_Util::checkLoggedIn(); - +OC_App::loadApps(); // Load the files we need OC_Util::addStyle( "settings", "settings" ); diff --git a/settings/trans.png b/settings/img/trans.png similarity index 100% rename from settings/trans.png rename to settings/img/trans.png diff --git a/settings/js/apps.js b/settings/js/apps.js index 8de95100c4c59e9f912c43f1b5814ac1c56a474e..c4c36b4bb12a84b85c3deb0e47b58847e68af9ce 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -51,6 +51,7 @@ OC.Settings.Apps = OC.Settings.Apps || { } else { element.data('active',false); + OC.Settings.Apps.removeNavigation(appid); element.val(t('settings','Enable')); } },'json'); @@ -61,6 +62,7 @@ OC.Settings.Apps = OC.Settings.Apps || { OC.dialogs.alert('Error while enabling app','Error'); } else { + OC.Settings.Apps.addNavigation(appid); element.data('active',true); element.val(t('settings','Disable')); } @@ -87,6 +89,38 @@ OC.Settings.Apps = OC.Settings.Apps || { applist.last().after(app); } return app; + }, + removeNavigation: function(appid){ + $.getJSON(OC.filePath('settings', 'ajax', 'navigationdetect.php'), {app: appid}).done(function(response){ + if(response.status === 'success'){ + var navIds=response.nav_ids; + for(var i=0; i< navIds.length; i++){ + $('#apps').children('li[data-id="'+navIds[i]+'"]').remove(); + } + } + }); + }, + addNavigation: function(appid){ + $.getJSON(OC.filePath('settings', 'ajax', 'navigationdetect.php'), {app: appid}).done(function(response){ + if(response.status === 'success'){ + var navEntries=response.nav_entries; + for(var i=0; i< navEntries.length; i++){ + var entry = navEntries[i]; + var container = $('#apps'); + + if(container.children('li[data-id="'+entry.id+'"]').length === 0){ + var li=$('
          • '); + li.attr('data-id', entry.id); + var a=$(''); + a.attr('style', 'background-image: url('+entry.icon+')'); + a.text(entry.name); + a.attr('href', entry.href); + li.append(a); + container.append(li); + } + } + } + }); } }; diff --git a/settings/js/users.js b/settings/js/users.js index 20bd94993bce5f309d1df454588dd22a2912efc4..f2ce69cf3118cdb0af9efa68e1d976003739c50b 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -16,7 +16,10 @@ var UserList={ * finishDelete() completes the process. This allows for 'undo'. */ do_delete:function( uid ) { - + if (typeof UserList.deleteUid !== 'undefined') { + //Already a user in the undo queue + UserList.finishDelete(null); + } UserList.deleteUid = uid; // Set undo flag @@ -26,7 +29,6 @@ var UserList={ $('#notification').html(t('users', 'deleted')+' '+uid+''+t('users', 'undo')+''); $('#notification').data('deleteuser',true); $('#notification').fadeIn(); - }, /** @@ -54,10 +56,11 @@ var UserList={ $('#notification').fadeOut(); $('tr').filterAttr('data-uid', UserList.deleteUid).remove(); UserList.deleteCanceled = true; - UserList.deleteFiles = null; if (ready) { ready(); } + } else { + oc.dialogs.alert(result.data.message, t('settings', 'Unable to remove user')); } } }); @@ -66,20 +69,15 @@ var UserList={ add:function(username, groups, subadmin, quota, sort) { var tr = $('tbody tr').first().clone(); - tr.data('uid', username); + tr.attr('data-uid', username); tr.find('td.name').text(username); - var groupsSelect = $('').attr('data-username', username).attr('data-user-groups', groups); tr.find('td.groups').empty(); if (tr.find('td.subadmins').length > 0) { - var subadminSelect = $('').attr('data-username', username).attr('data-user-groups', groups).attr('data-subadmin', subadmin); tr.find('td.subadmins').empty(); } - var allGroups = String($('#content table').data('groups')).split(', '); + var allGroups = String($('#content table').attr('data-groups')).split(', '); $.each(allGroups, function(i, group) { groupsSelect.append($('')); if (typeof subadminSelect !== 'undefined' && group != 'admin') { @@ -93,7 +91,14 @@ var UserList={ UserList.applyMultiplySelect(subadminSelect); } if (tr.find('td.remove img').length == 0 && OC.currentUser != username) { - tr.find('td.remove').append($('Delete')); + var rm_img = $('', { + class: 'svg action', + src: OC.imagePath('core','actions/delete'), + alt: t('settings','Delete'), + title: t('settings','Delete') + }); + var rm_link = $('', { class: 'action delete', href: '#'}).append(rm_img); + tr.find('td.remove').append(rm_link); } else if (OC.currentUser == username) { tr.find('td.remove a').remove(); } @@ -113,7 +118,7 @@ var UserList={ if (sort) { username = username.toLowerCase(); $('tbody tr').each(function() { - if (username < $(this).data('uid').toLowerCase()) { + if (username < $(this).attr('data-uid').toLowerCase()) { $(tr).insertBefore($(this)); added = true; return false; @@ -130,7 +135,7 @@ var UserList={ if (typeof UserList.offset === 'undefined') { UserList.offset = $('tbody tr').length; } - $.get(OC.filePath('settings', 'ajax', 'userlist.php'), { offset: UserList.offset }, function(result) { + $.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset }), function(result) { if (result.status === 'success') { $.each(result.data, function(index, user) { var tr = UserList.add(user.name, user.groups, user.subadmin, user.quota, false); @@ -148,7 +153,7 @@ var UserList={ applyMultiplySelect:function(element) { var checked=[]; - var user=element.data('username'); + var user=element.attr('data-username'); if($(element).attr('class') == 'groupsselect'){ if(element.data('userGroups')){ checked=String(element.data('userGroups')).split(', '); @@ -257,7 +262,7 @@ $(document).ready(function(){ $('td.remove>a').live('click',function(event){ var row = $(this).parent().parent(); - var uid = $(row).data('uid'); + var uid = $(row).attr('data-uid'); $(row).hide(); // Call function for handling delete/undo UserList.do_delete(uid); @@ -266,7 +271,7 @@ $(document).ready(function(){ $('td.password>img').live('click',function(event){ event.stopPropagation(); var img=$(this); - var uid=img.parent().parent().data('uid'); + var uid=img.parent().parent().attr('data-uid'); var input=$(''); img.css('display','none'); img.parent().children('span').replaceWith(input); @@ -296,7 +301,7 @@ $(document).ready(function(){ $('select.quota, select.quota-user').live('change',function(){ var select=$(this); - var uid=$(this).parent().parent().parent().data('uid'); + var uid=$(this).parent().parent().parent().attr('data-uid'); var quota=$(this).val(); var other=$(this).next(); if(quota!='other'){ @@ -314,7 +319,7 @@ $(document).ready(function(){ }) $('input.quota-other').live('change',function(){ - var uid=$(this).parent().parent().parent().data('uid'); + var uid=$(this).parent().parent().parent().attr('data-uid'); var quota=$(this).val(); var select=$(this).prev(); var other=$(this); @@ -391,13 +396,8 @@ $(document).ready(function(){ $('#notification').hide(); $('#notification .undo').live('click', function() { if($('#notification').data('deleteuser')) { - $('tbody tr').each(function(index, row) { - if ($(row).data('uid') == UserList.deleteUid) { - $(row).show(); - } - }); + $('tbody tr').filterAttr('data-uid', UserList.deleteUid).show(); UserList.deleteCanceled=true; - UserList.deleteFiles=null; } $('#notification').fadeOut(); }); diff --git a/settings/l10n/ar.php b/settings/l10n/ar.php index 36cad27d3a3a708523551a0325d022000331fcb5..662e69bbfc58b67c24bb8b938c890b866035ffd8 100644 --- a/settings/l10n/ar.php +++ b/settings/l10n/ar.php @@ -1,13 +1,17 @@ "تم تغيير ال OpenID", "Invalid request" => "طلبك غير Ù…Ùهوم", +"Authentication error" => "لم يتم التأكد من الشخصية بنجاح", "Language changed" => "تم تغيير اللغة", +"Saving..." => "Ø­Ùظ", "__language_name__" => "__language_name__", "Select an App" => "إختر تطبيقاً", +"Documentation" => "التوثيق", "Ask a question" => "إسأل سؤال", "Problems connecting to help database." => "الاتصال بقاعدة بيانات المساعدة لم يتم بنجاح", "Go there manually." => "إذهب هنالك بنÙسك", "Answer" => "الجواب", +"Download" => "انزال", "Unable to change your password" => "لم يتم تعديل كلمة السر بنجاح", "Current password" => "كلمات السر الحالية", "New password" => "كلمات سر جديدة", @@ -23,6 +27,7 @@ "Password" => "كلمات السر", "Groups" => "مجموعات", "Create" => "انشئ", +"Other" => "شيء آخر", "Quota" => "حصه", "Delete" => "حذÙ" ); diff --git a/settings/l10n/bg_BG.php b/settings/l10n/bg_BG.php index 6a46348b300d5a2862961e3f76a448839fadc33a..5a2d882581f394eb904c0db38f74010a7ee9034d 100644 --- a/settings/l10n/bg_BG.php +++ b/settings/l10n/bg_BG.php @@ -3,6 +3,7 @@ "Invalid email" => "Ðеправилна е-поща", "OpenID Changed" => "OpenID е Ñменено", "Invalid request" => "Ðевалидна заÑвка", +"Authentication error" => "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта", "Language changed" => "Езика е Ñменен", "Disable" => "Изключване", "Enable" => "Включване", @@ -30,6 +31,7 @@ "Groups" => "Групи", "Create" => "Ðово", "Default Quota" => "Квота по подразбиране", +"Other" => "Друго", "Quota" => "Квота", "Delete" => "Изтриване" ); diff --git a/settings/l10n/ca.php b/settings/l10n/ca.php index 16660fb07d36527fbbb7cb426cda11947aa703bf..eff84e12de7ba61b922d7f3acb7238027932203d 100644 --- a/settings/l10n/ca.php +++ b/settings/l10n/ca.php @@ -1,6 +1,5 @@ "No s'ha pogut carregar la llista des de l'App Store", -"Authentication error" => "Error d'autenticació", "Group already exists" => "El grup ja existeix", "Unable to add group" => "No es pot afegir el grup", "Could not enable app. " => "No s'ha pogut activar l'apliació", @@ -9,32 +8,16 @@ "OpenID Changed" => "OpenID ha canviat", "Invalid request" => "Sol.licitud no vàlida", "Unable to delete group" => "No es pot eliminar el grup", +"Authentication error" => "Error d'autenticació", "Unable to delete user" => "No es pot eliminar l'usuari", "Language changed" => "S'ha canviat l'idioma", +"Admins can't remove themself from the admin group" => "Els administradors no es poden eliminar del grup admin", "Unable to add user to group %s" => "No es pot afegir l'usuari al grup %s", "Unable to remove user from group %s" => "No es pot eliminar l'usuari del grup %s", "Disable" => "Desactiva", "Enable" => "Activa", "Saving..." => "S'està desant...", "__language_name__" => "Català", -"Security Warning" => "Avís de seguretat", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "La carpeta de dades i els vostres fitxersprobablement són accessibles des d'Internet. La fitxer .htaccess que ownCloud proporciona no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Executar una tasca de cada pàgina carregada", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php està registrat en un servei webcron. Feu una crida a la pàgina cron.php a l'arrel de ownCloud cada minut a través de http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Utilitzeu el sistema de servei cron. Cridar el arxiu cron.php de la carpeta owncloud cada minut utilitzant el sistema de tasques cron.", -"Sharing" => "Compartir", -"Enable Share API" => "Activa l'API de compartir", -"Allow apps to use the Share API" => "Permet que les aplicacions usin l'API de compartir", -"Allow links" => "Permet enllaços", -"Allow users to share items to the public with links" => "Permet als usuaris compartir elements amb el públic amb enllaços", -"Allow resharing" => "Permet compartir de nou", -"Allow users to share items shared with them again" => "Permet als usuaris comparir elements ja compartits amb ells", -"Allow users to share with anyone" => "Permet als usuaris compartir amb qualsevol", -"Allow users to only share with users in their groups" => "Permet als usuaris compartir només amb usuaris del seu grup", -"Log" => "Registre", -"More" => "Més", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desenvolupat per la comunitat ownCloud, el codi font té llicència AGPL.", "Add your App" => "Afegiu la vostra aplicació", "More Apps" => "Més aplicacions", "Select an App" => "Seleccioneu una aplicació", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problemes per connectar amb la base de dades d'ajuda.", "Go there manually." => "Vés-hi manualment.", "Answer" => "Resposta", -"You have used %s of the available %s" => "Ha utilitzat %s de la %s disponible", +"You have used %s of the available %s" => "Heu utilitzat %s d'un total disponible de %s", "Desktop and Mobile Syncing Clients" => "Clients de sincronització d'escriptori i de mòbil", "Download" => "Baixada", "Your password was changed" => "La seva contrasenya s'ha canviat", @@ -61,6 +44,7 @@ "Language" => "Idioma", "Help translate" => "Ajudeu-nos amb la traducció", "use this address to connect to your ownCloud in your file manager" => "useu aquesta adreça per connectar-vos a ownCloud des del gestor de fitxers", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desenvolupat per la comunitat ownCloud, el codi font té llicència AGPL.", "Name" => "Nom", "Password" => "Contrasenya", "Groups" => "Grups", diff --git a/settings/l10n/cs_CZ.php b/settings/l10n/cs_CZ.php index c0f7ebd868624ac57eaa5983f8315a9a22a8d614..ee30583b0462bf606746a689bd45c6894f30dd2a 100644 --- a/settings/l10n/cs_CZ.php +++ b/settings/l10n/cs_CZ.php @@ -1,6 +1,5 @@ "Nelze naÄíst seznam z App Store", -"Authentication error" => "Chyba ověření", "Group already exists" => "Skupina již existuje", "Unable to add group" => "Nelze pÅ™idat skupinu", "Could not enable app. " => "Nelze povolit aplikaci.", @@ -9,32 +8,16 @@ "OpenID Changed" => "OpenID zmÄ›nÄ›no", "Invalid request" => "Neplatný požadavek", "Unable to delete group" => "Nelze smazat skupinu", +"Authentication error" => "Chyba ověření", "Unable to delete user" => "Nelze smazat uživatele", "Language changed" => "Jazyk byl zmÄ›nÄ›n", +"Admins can't remove themself from the admin group" => "Správci se nemohou odebrat sami ze skupiny správců", "Unable to add user to group %s" => "Nelze pÅ™idat uživatele do skupiny %s", "Unable to remove user from group %s" => "Nelze odstranit uživatele ze skupiny %s", "Disable" => "Zakázat", "Enable" => "Povolit", "Saving..." => "Ukládám...", "__language_name__" => "ÄŒesky", -"Security Warning" => "BezpeÄnostní varování", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Váš adresář dat a soubory jsou pravdÄ›podobnÄ› přístupné z internetu. Soubor .htacces, který ownCloud poskytuje nefunguje. DoporuÄujeme Vám abyste nastavili Váš webový server tak, aby nebylo možno pÅ™istupovat do adresáře s daty, nebo pÅ™esunuli adresář dat mimo koÅ™enovou složku dokumentů webového serveru.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Spustit jednu úlohu s každou naÄtenou stránkou", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php je registrován u služby webcron. Zavolá stránku cron.php v koÅ™enovém adresáři owncloud každou minutu skrze http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Použít systémovou službu cron. Zavolat soubor cron.php ze složky owncloud pomocí systémové úlohy cron každou minutu.", -"Sharing" => "Sdílení", -"Enable Share API" => "Povolit API sdílení", -"Allow apps to use the Share API" => "Povolit aplikacím používat API sdílení", -"Allow links" => "Povolit odkazy", -"Allow users to share items to the public with links" => "Povolit uživatelům sdílet položky s veÅ™ejností pomocí odkazů", -"Allow resharing" => "Povolit znovu-sdílení", -"Allow users to share items shared with them again" => "Povolit uživatelům znovu sdílet položky, které jsou pro nÄ› sdíleny", -"Allow users to share with anyone" => "Povolit uživatelům sdílet s kýmkoliv", -"Allow users to only share with users in their groups" => "Povolit uživatelům sdílet pouze s uživateli v jejich skupinách", -"Log" => "Záznam", -"More" => "Více", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Vyvinuto komunitou ownCloud, zdrojový kód je licencován pod AGPL.", "Add your App" => "PÅ™idat Vaší aplikaci", "More Apps" => "Více aplikací", "Select an App" => "Vyberte aplikaci", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problémy s pÅ™ipojením k databázi s nápovÄ›dou.", "Go there manually." => "PÅ™ejít ruÄnÄ›.", "Answer" => "OdpovÄ›Ä", -"You have used %s of the available %s" => "Použili jste %s z dostupných %s", +"You have used %s of the available %s" => "Používáte %s z %s dostupných", "Desktop and Mobile Syncing Clients" => "Klienti pro synchronizaci", "Download" => "Stáhnout", "Your password was changed" => "VaÅ¡e heslo bylo zmÄ›nÄ›no", @@ -61,6 +44,7 @@ "Language" => "Jazyk", "Help translate" => "Pomoci s pÅ™ekladem", "use this address to connect to your ownCloud in your file manager" => "tuto adresu použijte pro pÅ™ipojení k ownCloud ve VaÅ¡em správci souborů", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Vyvinuto komunitou ownCloud, zdrojový kód je licencován pod AGPL.", "Name" => "Jméno", "Password" => "Heslo", "Groups" => "Skupiny", diff --git a/settings/l10n/da.php b/settings/l10n/da.php index f93d7b6cd11118ccfff71ba71ed8c800e33a33f8..3d82f6e4a0b9ad2756e55a7294ffd6c431ece255 100644 --- a/settings/l10n/da.php +++ b/settings/l10n/da.php @@ -1,6 +1,5 @@ "Kunne ikke indlæse listen fra App Store", -"Authentication error" => "Adgangsfejl", "Group already exists" => "Gruppen findes allerede", "Unable to add group" => "Gruppen kan ikke oprettes", "Could not enable app. " => "Applikationen kunne ikke aktiveres.", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID ændret", "Invalid request" => "Ugyldig forespørgsel", "Unable to delete group" => "Gruppen kan ikke slettes", +"Authentication error" => "Adgangsfejl", "Unable to delete user" => "Bruger kan ikke slettes", "Language changed" => "Sprog ændret", "Unable to add user to group %s" => "Brugeren kan ikke tilføjes til gruppen %s", @@ -17,24 +17,6 @@ "Enable" => "Aktiver", "Saving..." => "Gemmer...", "__language_name__" => "Dansk", -"Security Warning" => "Sikkerhedsadvarsel", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Din datamappe og dine filer er formentligt tilgængelige fra internettet.\n.htaccess-filen, som ownCloud leverer, fungerer ikke. Vi anbefaler stærkt, at du opsætter din server pÃ¥ en mÃ¥de, sÃ¥ datamappen ikke længere er direkte tilgængelig, eller at du flytter datamappen udenfor serverens tilgængelige rodfilsystem.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Udfør en opgave med hver side indlæst", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php er registreret hos en webcron-tjeneste. Kald cron.php-siden i ownClouds rodmappe en gang i minuttet over http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "vend systemets cron-tjeneste. Kald cron.php-filen i ownCloud-mappen ved hjælp af systemets cronjob en gang i minuttet.", -"Sharing" => "Deling", -"Enable Share API" => "Aktiver dele API", -"Allow apps to use the Share API" => "Tillad apps a bruge dele APIen", -"Allow links" => "Tillad links", -"Allow users to share items to the public with links" => "Tillad brugere at dele elementer med offentligheden med links", -"Allow resharing" => "Tillad gendeling", -"Allow users to share items shared with them again" => "Tillad brugere at dele elementer, som er blevet delt med dem, videre til andre", -"Allow users to share with anyone" => "Tillad brugere at dele med hvem som helst", -"Allow users to only share with users in their groups" => "Tillad kun deling med brugere i brugerens egen gruppe", -"Log" => "Log", -"More" => "Mere", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Udviklet af ownClouds community, og kildekoden er underlagt licensen AGPL.", "Add your App" => "Tilføj din App", "More Apps" => "Flere Apps", "Select an App" => "Vælg en App", @@ -46,7 +28,6 @@ "Problems connecting to help database." => "Problemer med at forbinde til hjælpe-databasen.", "Go there manually." => "GÃ¥ derhen manuelt.", "Answer" => "Svar", -"You have used %s of the available %s" => "Du har brugt %s af de tilgængelige %s", "Desktop and Mobile Syncing Clients" => "Synkroniserings programmer for desktop og mobil", "Download" => "Download", "Your password was changed" => "Din adgangskode blev ændret", @@ -61,6 +42,7 @@ "Language" => "Sprog", "Help translate" => "Hjælp med oversættelsen", "use this address to connect to your ownCloud in your file manager" => "benyt denne adresse til at forbinde til din ownCloud i din filbrowser", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Udviklet af ownClouds community, og kildekoden er underlagt licensen AGPL.", "Name" => "Navn", "Password" => "Kodeord", "Groups" => "Grupper", diff --git a/settings/l10n/de.php b/settings/l10n/de.php index 391dcc95c1feb1feb9c14fc6c1b5801b886c1635..33de45a9225a2324413c163731adfe5d873a9719 100644 --- a/settings/l10n/de.php +++ b/settings/l10n/de.php @@ -1,6 +1,5 @@ "Die Liste der Anwendungen im Store konnte nicht geladen werden.", -"Authentication error" => "Fehler bei der Anmeldung", "Group already exists" => "Gruppe existiert bereits", "Unable to add group" => "Gruppe konnte nicht angelegt werden", "Could not enable app. " => "App konnte nicht aktiviert werden.", @@ -9,32 +8,16 @@ "OpenID Changed" => "OpenID geändert", "Invalid request" => "Ungültige Anfrage", "Unable to delete group" => "Gruppe konnte nicht gelöscht werden", +"Authentication error" => "Fehler bei der Anmeldung", "Unable to delete user" => "Benutzer konnte nicht gelöscht werden", "Language changed" => "Sprache geändert", +"Admins can't remove themself from the admin group" => "Administratoren können sich nicht selbst aus der Admin-Gruppe löschen.", "Unable to add user to group %s" => "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", "Unable to remove user from group %s" => "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", "Disable" => "Deaktivieren", "Enable" => "Aktivieren", "Saving..." => "Speichern...", -"__language_name__" => "Deutsch", -"Security Warning" => "Sicherheitshinweis", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ihr Datenverzeichnis ist möglicher Weise aus dem Internet erreichbar. Die .htaccess-Datei von ownCloud funktioniert nicht. Wir raten Ihnen dringend, dass Sie Ihren Webserver dahingehend konfigurieren, dass Ihr Datenverzeichnis nicht länger aus dem Internet erreichbar ist, oder Sie verschieben das Datenverzeichnis außerhalb des Wurzelverzeichnisses des Webservers.", -"Cron" => "Cron-Jobs", -"Execute one task with each page loaded" => "Führe eine Aufgabe bei jeder geladenen Seite aus.", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php ist bei einem Webcron-Dienst registriert. Ruf die Seite cron.php im ownCloud-Root minütlich per HTTP auf.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Benutze den System-Crondienst. Bitte ruf die cron.php im ownCloud-Ordner über einen System-Cronjob minütlich auf.", -"Sharing" => "Freigabe", -"Enable Share API" => "Freigabe-API aktivieren", -"Allow apps to use the Share API" => "Erlaubt Anwendungen, die Freigabe-API zu nutzen", -"Allow links" => "Links erlauben", -"Allow users to share items to the public with links" => "Erlaube Nutzern, Dateien mithilfe von Links öffentlich zu teilen", -"Allow resharing" => "Erneutes Teilen erlauben", -"Allow users to share items shared with them again" => "Erlaubt Nutzern, Dateien die mit ihnen geteilt wurden, erneut zu teilen", -"Allow users to share with anyone" => "Erlaubet Nutzern mit jedem zu Teilen", -"Allow users to only share with users in their groups" => "Erlaubet Nutzern nur das Teilen in ihrer Gruppe", -"Log" => "Log", -"More" => "Mehr", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Entwickelt von der ownCloud-Community, der Quellcode ist unter der AGPL lizenziert.", +"__language_name__" => "Deutsch (Persönlich)", "Add your App" => "Füge Deine Anwendung hinzu", "More Apps" => "Weitere Anwendungen", "Select an App" => "Wähle eine Anwendung aus", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Probleme bei der Verbindung zur Hilfe-Datenbank.", "Go there manually." => "Datenbank direkt besuchen.", "Answer" => "Antwort", -"You have used %s of the available %s" => "Du verwendest %s der verfügbaren %s", +"You have used %s of the available %s" => "Du verwendest %s der verfügbaren %s", "Desktop and Mobile Syncing Clients" => "Desktop- und mobile Clients für die Synchronisation", "Download" => "Download", "Your password was changed" => "Dein Passwort wurde geändert.", @@ -60,7 +43,8 @@ "Fill in an email address to enable password recovery" => "Trage eine E-Mail-Adresse ein, um die Passwort-Wiederherstellung zu aktivieren.", "Language" => "Sprache", "Help translate" => "Hilf bei der Ãœbersetzung", -"use this address to connect to your ownCloud in your file manager" => "Benutzen Sie diese Adresse, um Ihre ownCloud mit Ihrem Dateimanager zu verbinden.", +"use this address to connect to your ownCloud in your file manager" => "Verwende diese Adresse, um Deine ownCloud mit Deinem Dateimanager zu verbinden.", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Entwickelt von der ownCloud-Community, der Quellcode ist unter der AGPL lizenziert.", "Name" => "Name", "Password" => "Passwort", "Groups" => "Gruppen", diff --git a/settings/l10n/de_DE.php b/settings/l10n/de_DE.php new file mode 100644 index 0000000000000000000000000000000000000000..9db7cb93c365f4ab75809658405e8f583ccf4606 --- /dev/null +++ b/settings/l10n/de_DE.php @@ -0,0 +1,57 @@ + "Die Liste der Anwendungen im Store konnte nicht geladen werden.", +"Group already exists" => "Die Gruppe existiert bereits", +"Unable to add group" => "Die Gruppe konnte nicht angelegt werden", +"Could not enable app. " => "Die Anwendung konnte nicht aktiviert werden.", +"Email saved" => "E-Mail-Adresse gespeichert", +"Invalid email" => "Ungültige E-Mail-Adresse", +"OpenID Changed" => "OpenID geändert", +"Invalid request" => "Ungültige Anfrage", +"Unable to delete group" => "Die Gruppe konnte nicht gelöscht werden", +"Authentication error" => "Fehler bei der Anmeldung", +"Unable to delete user" => "Der Benutzer konnte nicht gelöscht werden", +"Language changed" => "Sprache geändert", +"Admins can't remove themself from the admin group" => "Administratoren können sich nicht selbst aus der admin-Gruppe löschen", +"Unable to add user to group %s" => "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", +"Unable to remove user from group %s" => "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", +"Disable" => "Deaktivieren", +"Enable" => "Aktivieren", +"Saving..." => "Speichern...", +"__language_name__" => "Deutsch (Förmlich: Sie)", +"Add your App" => "Fügen Sie Ihre Anwendung hinzu", +"More Apps" => "Weitere Anwendungen", +"Select an App" => "Wählen Sie eine Anwendung aus", +"See application page at apps.owncloud.com" => "Weitere Anwendungen finden Sie auf apps.owncloud.com", +"-licensed by " => "-lizenziert von ", +"Documentation" => "Dokumentation", +"Managing Big Files" => "Große Dateien verwalten", +"Ask a question" => "Stellen Sie eine Frage", +"Problems connecting to help database." => "Probleme bei der Verbindung zur Hilfe-Datenbank.", +"Go there manually." => "Datenbank direkt besuchen.", +"Answer" => "Antwort", +"You have used %s of the available %s" => "Sie verwenden %s der verfügbaren %s", +"Desktop and Mobile Syncing Clients" => "Desktop- und mobile Clients für die Synchronisation", +"Download" => "Download", +"Your password was changed" => "Ihr Passwort wurde geändert.", +"Unable to change your password" => "Das Passwort konnte nicht geändert werden", +"Current password" => "Aktuelles Passwort", +"New password" => "Neues Passwort", +"show" => "zeigen", +"Change password" => "Passwort ändern", +"Email" => "E-Mail", +"Your email address" => "Ihre E-Mail-Adresse", +"Fill in an email address to enable password recovery" => "Bitte tragen Sie eine E-Mail-Adresse ein, um die Passwort-Wiederherstellung zu aktivieren.", +"Language" => "Sprache", +"Help translate" => "Helfen Sie bei der Ãœbersetzung", +"use this address to connect to your ownCloud in your file manager" => "Benutzen Sie diese Adresse, um Ihre ownCloud mit Ihrem Dateimanager zu verbinden.", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Entwickelt von der ownCloud-Community, der Quellcode ist unter der AGPL lizenziert.", +"Name" => "Name", +"Password" => "Passwort", +"Groups" => "Gruppen", +"Create" => "Anlegen", +"Default Quota" => "Standard-Quota", +"Other" => "Andere", +"Group Admin" => "Gruppenadministrator", +"Quota" => "Quota", +"Delete" => "Löschen" +); diff --git a/settings/l10n/el.php b/settings/l10n/el.php index c6bb9857100c0605dd7c84bd144f9de10ade0358..ac62453886c77e6db174f06d728b5f0dea6e5dad 100644 --- a/settings/l10n/el.php +++ b/settings/l10n/el.php @@ -1,51 +1,35 @@ "Σφάλμα στην φόÏτωση της λίστας από το App Store", -"Authentication error" => "Σφάλμα πιστοποίησης", "Group already exists" => "Η ομάδα υπάÏχει ήδη", "Unable to add group" => "Αδυναμία Ï€Ïοσθήκης ομάδας", "Could not enable app. " => "Αδυναμία ενεÏγοποίησης εφαÏμογής ", -"Email saved" => "Το Email αποθηκεÏτηκε ", +"Email saved" => "Το email αποθηκεÏτηκε ", "Invalid email" => "Μη έγκυÏο email", "OpenID Changed" => "Το OpenID άλλαξε", "Invalid request" => "Μη έγκυÏο αίτημα", "Unable to delete group" => "Αδυναμία διαγÏαφής ομάδας", +"Authentication error" => "Σφάλμα πιστοποίησης", "Unable to delete user" => "Αδυναμία διαγÏαφής χÏήστη", "Language changed" => "Η γλώσσα άλλαξε", +"Admins can't remove themself from the admin group" => "Οι διαχειÏιστές δεν μποÏοÏν να αφαιÏέσουν τους εαυτοÏÏ‚ τους από την ομάδα των διαχειÏιστών", "Unable to add user to group %s" => "Αδυναμία Ï€Ïοσθήκη χÏήστη στην ομάδα %s", "Unable to remove user from group %s" => "Αδυναμία αφαίÏεσης χÏήστη από την ομάδα %s", "Disable" => "ΑπενεÏγοποίηση", "Enable" => "ΕνεÏγοποίηση", "Saving..." => "Αποθήκευση...", "__language_name__" => "__όνομα_γλώσσας__", -"Security Warning" => "ΠÏοειδοποίηση Ασφαλείας", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ο κατάλογος δεδομένων και τα αÏχεία σας είναι πιθανότατα Ï€Ïοσβάσιμα από το διαδίκτυο. Το αÏχείο .htaccess που παÏέχει το owncloud, δεν λειτουÏγεί. Σας συνιστοÏμε να Ïυθμίσετε τον εξυπηÏετητή σας έτσι ώστε ο κατάλογος δεδομένων να μην είναι πλεον Ï€Ïοσβάσιμος ή μετακινήστε τον κατάλογο δεδομένων εκτός του καταλόγου document του εξυπηÏετητή σας.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Εκτέλεση μιας εÏγασίας με κάθε σελίδα που φοÏτώνεται", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "Το cron.php είναι καταχωÏημένο στην υπηÏεσία webcron. Îα καλείται μια φοÏά το λεπτό η σελίδα cron.php από τον root του owncloud μέσω http", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "ΧÏήση υπηÏεσίας συστήματος cron. Îα καλείται μια φοÏά το λεπτό, το αÏχείο cron.php από τον φάκελο του owncloud μέσω του cronjob του συστήματος.", -"Sharing" => "ΔιαμοιÏασμός", -"Enable Share API" => "ΕνεÏγοποίηση API ΔιαμοιÏασμοÏ", -"Allow apps to use the Share API" => "Îα επιτÏέπεται στις εφαÏμογές να χÏησιμοποιοÏν το API ΔιαμοιÏασμοÏ", -"Allow links" => "Îα επιτÏέπονται σÏνδεσμοι", -"Allow users to share items to the public with links" => "Îα επιτÏέπεται στους χÏήστες να διαμοιÏάζονται δημόσια με συνδέσμους", -"Allow resharing" => "Îα επιτÏέπεται ο επαναδιαμοιÏασμός", -"Allow users to share items shared with them again" => "Îα επιτÏέπεται στους χÏήστες να διαμοιÏάζουν ότι τους έχει διαμοιÏαστεί", -"Allow users to share with anyone" => "Îα επιτÏέπεται ο διαμοιÏασμός με οποιονδήποτε", -"Allow users to only share with users in their groups" => "Îα επιτÏέπεται ο διαμοιÏασμός μόνο με χÏήστες της ίδιας ομάδας", -"Log" => "ΑÏχείο καταγÏαφής", -"More" => "ΠεÏισσότεÏο", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ΑναπτÏχθηκε από την κοινότητα ownCloud, ο πηγαίος κώδικας είναι υπό άδεια χÏήσης AGPL.", -"Add your App" => "ΠÏόσθεσε τη δικιά σου εφαÏμογή ", -"Select an App" => "Επιλέξτε μια εφαÏμογή", -"See application page at apps.owncloud.com" => "Η σελίδα εφαÏμογών στο apps.owncloud.com", +"Add your App" => "ΠÏόσθεστε τη Δικιά σας ΕφαÏμογή", +"More Apps" => "ΠεÏισσότεÏες ΕφαÏμογές", +"Select an App" => "Επιλέξτε μια ΕφαÏμογή", +"See application page at apps.owncloud.com" => "Δείτε την σελίδα εφαÏμογών στο apps.owncloud.com", "-licensed by " => "-άδεια από ", "Documentation" => "ΤεκμηÏίωση", -"Managing Big Files" => "ΔιαχείÏιση μεγάλων αÏχείων", +"Managing Big Files" => "ΔιαχείÏιση Μεγάλων ΑÏχείων", "Ask a question" => "Ρωτήστε μια εÏώτηση", "Problems connecting to help database." => "ΠÏοβλήματα κατά τη σÏνδεση με τη βάση δεδομένων βοήθειας.", "Go there manually." => "ΧειÏοκίνητη μετάβαση.", "Answer" => "Απάντηση", -"You have used %s of the available %s" => "Έχετε χÏησιμοποιήσει %s από τα διαθέσιμα %s", +"You have used %s of the available %s" => "ΧÏησιμοποιήσατε %s από διαθέσιμα %s", "Desktop and Mobile Syncing Clients" => "Πελάτες συγχÏÎ¿Î½Î¹ÏƒÎ¼Î¿Ï Î³Î¹Î± Desktop και Mobile", "Download" => "Λήψη", "Your password was changed" => "Το συνθηματικό σας έχει αλλάξει", @@ -55,18 +39,19 @@ "show" => "εμφάνιση", "Change password" => "Αλλαγή συνθηματικοÏ", "Email" => "Email", -"Your email address" => "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας", +"Your email address" => "Η διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας", "Fill in an email address to enable password recovery" => "ΣυμπληÏώστε μια διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου για να ενεÏγοποιηθεί η ανάκτηση συνθηματικοÏ", "Language" => "Γλώσσα", -"Help translate" => "Βοηθήστε στην μετάφÏαση", -"use this address to connect to your ownCloud in your file manager" => "χÏησιμοποιήστε αυτή τη διεÏθυνση για να συνδεθείτε στο ownCloud σας από το διαχειÏιστή αÏχείων σας", +"Help translate" => "Βοηθήστε στη μετάφÏαση", +"use this address to connect to your ownCloud in your file manager" => "χÏησιμοποιήστε αυτήν τη διεÏθυνση για να συνδεθείτε στο ownCloud σας από το διαχειÏιστή αÏχείων σας", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ΑναπτÏχθηκε από την κοινότητα ownCloud, ο πηγαίος κώδικας είναι υπό άδεια χÏήσης AGPL.", "Name" => "Όνομα", "Password" => "Συνθηματικό", "Groups" => "Ομάδες", "Create" => "ΔημιουÏγία", -"Default Quota" => "ΠÏοεπιλεγμένο ÏŒÏιο", +"Default Quota" => "ΠÏοεπιλεγμένο ÎŒÏιο", "Other" => "Άλλα", "Group Admin" => "Ομάδα ΔιαχειÏιστών", -"Quota" => "ΣÏνολο χώÏου", +"Quota" => "ΣÏνολο ΧώÏου", "Delete" => "ΔιαγÏαφή" ); diff --git a/settings/l10n/eo.php b/settings/l10n/eo.php index 7052bf34c92c78bf6e701907a2362f307d3aeffb..e686868e67c6bb549ab51ef92ffc49a590028871 100644 --- a/settings/l10n/eo.php +++ b/settings/l10n/eo.php @@ -1,30 +1,38 @@ "Ne eblis Åargi liston el aplikaĵovendejo", -"Authentication error" => "AÅ­tentiga eraro", +"Group already exists" => "La grupo jam ekzistas", +"Unable to add group" => "Ne eblis aldoni la grupon", +"Could not enable app. " => "Ne eblis kapabligi la aplikaĵon.", "Email saved" => "La retpoÅtadreso konserviÄis", "Invalid email" => "Nevalida retpoÅtadreso", "OpenID Changed" => "La agordo de OpenID estas ÅanÄita", "Invalid request" => "Nevalida peto", +"Unable to delete group" => "Ne eblis forigi la grupon", +"Authentication error" => "AÅ­tentiga eraro", +"Unable to delete user" => "Ne eblis forigi la uzanton", "Language changed" => "La lingvo estas ÅanÄita", +"Admins can't remove themself from the admin group" => "Administrantoj ne povas forigi sin mem el la administra grupo.", +"Unable to add user to group %s" => "Ne eblis aldoni la uzanton al la grupo %s", +"Unable to remove user from group %s" => "Ne eblis forigi la uzantan el la grupo %s", "Disable" => "Malkapabligi", "Enable" => "Kapabligi", "Saving..." => "Konservante...", "__language_name__" => "Esperanto", -"Security Warning" => "Sekureca averto", -"Cron" => "Cron", -"Log" => "Protokolo", -"More" => "Pli", "Add your App" => "Aldonu vian aplikaĵon", +"More Apps" => "Pli da aplikaĵoj", "Select an App" => "Elekti aplikaĵon", "See application page at apps.owncloud.com" => "Vidu la paÄon pri aplikaĵoj ĉe apps.owncloud.com", +"-licensed by " => "-permesilhavigita de ", "Documentation" => "Dokumentaro", "Managing Big Files" => "Administrante grandajn dosierojn", "Ask a question" => "Faru demandon", "Problems connecting to help database." => "Problemoj okazis dum konektado al la helpa datumbazo.", "Go there manually." => "Iri tien mane.", "Answer" => "Respondi", +"You have used %s of the available %s" => "Vi uzas %s el la haveblaj %s", "Desktop and Mobile Syncing Clients" => "Labortablaj kaj porteblaj sinkronigoklientoj", "Download" => "ElÅuti", +"Your password was changed" => "Via pasvorto ÅanÄiÄis", "Unable to change your password" => "Ne eblis ÅanÄi vian pasvorton", "Current password" => "Nuna pasvorto", "New password" => "Nova pasvorto", @@ -36,6 +44,7 @@ "Language" => "Lingvo", "Help translate" => "Helpu traduki", "use this address to connect to your ownCloud in your file manager" => "uzu ĉi tiun adreson por konektiÄi al via ownCloud per via dosieradministrilo", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Ellaborita de la komunumo de ownCloud, la fontokodo publikas laÅ­ la permesilo AGPL.", "Name" => "Nomo", "Password" => "Pasvorto", "Groups" => "Grupoj", diff --git a/settings/l10n/es.php b/settings/l10n/es.php index 9a578fa6368c7fbd40fb7b4c55c1d5594b6489b6..39f88ac4ea2de79ec90e54b2a84a7f8be394fb2c 100644 --- a/settings/l10n/es.php +++ b/settings/l10n/es.php @@ -1,6 +1,5 @@ "Imposible cargar la lista desde el App Store", -"Authentication error" => "Error de autenticación", "Group already exists" => "El grupo ya existe", "Unable to add group" => "No se pudo añadir el grupo", "Could not enable app. " => "No puedo habilitar la app.", @@ -9,32 +8,16 @@ "OpenID Changed" => "OpenID cambiado", "Invalid request" => "Solicitud no válida", "Unable to delete group" => "No se pudo eliminar el grupo", +"Authentication error" => "Error de autenticación", "Unable to delete user" => "No se pudo eliminar el usuario", "Language changed" => "Idioma cambiado", +"Admins can't remove themself from the admin group" => "Los administradores no se pueden eliminar a ellos mismos del grupo de administrador", "Unable to add user to group %s" => "Imposible añadir el usuario al grupo %s", "Unable to remove user from group %s" => "Imposible eliminar al usuario del grupo %s", "Disable" => "Desactivar", "Enable" => "Activar", "Saving..." => "Guardando...", "__language_name__" => "Castellano", -"Security Warning" => "Advertencia de seguridad", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "El directorio de datos -data- y sus archivos probablemente son accesibles desde internet. El archivo .htaccess que provee ownCloud no está funcionando. Recomendamos fuertemente que configure su servidor web de forma que el directorio de datos ya no sea accesible o mueva el directorio de datos fuera de la raíz de documentos del servidor web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Ejecutar una tarea con cada página cargada", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php está registrado como un servicio del webcron. Llama a la página de cron.php en la raíz de owncloud cada minuto sobre http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Usar el servicio de cron del sitema. Llame al fichero cron.php en la carpeta de owncloud via servidor cronjob cada minuto.", -"Sharing" => "Compartir", -"Enable Share API" => "Activar API de compartición", -"Allow apps to use the Share API" => "Permitir a las aplicaciones usar la API de compartición", -"Allow links" => "Permitir enlaces", -"Allow users to share items to the public with links" => "Permitir a los usuarios compartir elementos públicamente con enlaces", -"Allow resharing" => "Permitir re-compartir", -"Allow users to share items shared with them again" => "Permitir a los usuarios compartir elementos compartidos con ellos de nuevo", -"Allow users to share with anyone" => "Permitir a los usuarios compartir con cualquiera", -"Allow users to only share with users in their groups" => "Permitir a los usuarios compartir con usuarios en sus grupos", -"Log" => "Registro", -"More" => "Más", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL.", "Add your App" => "Añade tu aplicación", "More Apps" => "Más aplicaciones", "Select an App" => "Seleccionar una aplicación", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problemas al conectar con la base de datos de ayuda.", "Go there manually." => "Ir manualmente", "Answer" => "Respuesta", -"You have used %s of the available %s" => "Ha usado %s de %s disponible", +"You have used %s of the available %s" => "Ha usado %s de %s disponibles", "Desktop and Mobile Syncing Clients" => "Clientes de sincronización móviles y de escritorio", "Download" => "Descargar", "Your password was changed" => "Su contraseña ha sido cambiada", @@ -61,6 +44,7 @@ "Language" => "Idioma", "Help translate" => "Ayúdanos a traducir", "use this address to connect to your ownCloud in your file manager" => "utiliza esta dirección para conectar a tu ownCloud desde tu gestor de archivos", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL.", "Name" => "Nombre", "Password" => "Contraseña", "Groups" => "Grupos", diff --git a/settings/l10n/es_AR.php b/settings/l10n/es_AR.php index 0b103406fabb2b7c40c229ed3917667f48ac1b61..653dfbc215651555bdf43bb1a5d2c112a2786648 100644 --- a/settings/l10n/es_AR.php +++ b/settings/l10n/es_AR.php @@ -1,6 +1,5 @@ "Imposible cargar la lista desde el App Store", -"Authentication error" => "Error al autenticar", "Group already exists" => "El grupo ya existe", "Unable to add group" => "No fue posible añadir el grupo", "Could not enable app. " => "No se puede habilitar la aplicación.", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID cambiado", "Invalid request" => "Solicitud no válida", "Unable to delete group" => "No fue posible eliminar el grupo", +"Authentication error" => "Error al autenticar", "Unable to delete user" => "No fue posible eliminar el usuario", "Language changed" => "Idioma cambiado", "Unable to add user to group %s" => "No fue posible añadir el usuario al grupo %s", @@ -17,24 +17,6 @@ "Enable" => "Activar", "Saving..." => "Guardando...", "__language_name__" => "Castellano (Argentina)", -"Security Warning" => "Advertencia de seguridad", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "El directorio de datos -data- y los archivos que contiene, probablemente son accesibles desde internet. El archivo .htaccess que provee ownCloud no está funcionando. Recomendamos fuertemente que configures su servidor web de forma que el directorio de datos ya no sea accesible o que muevas el directorio de datos fuera de la raíz de documentos del servidor web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Ejecutar una tarea con cada página cargada", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php está registrado como un servicio del webcron. Llamá a la página de cron.php en la raíz de ownCloud cada minuto sobre http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Usar el servicio de cron del sistema. Llamá al archivo cron.php en la carpeta de ownCloud via servidor cronjob cada minuto.", -"Sharing" => "Compartir", -"Enable Share API" => "Activar API de compartición", -"Allow apps to use the Share API" => "Permitir a las aplicaciones usar la API de compartición", -"Allow links" => "Permitir enlaces", -"Allow users to share items to the public with links" => "Permitir a los usuarios compartir elementos públicamente con enlaces", -"Allow resharing" => "Permitir re-compartir", -"Allow users to share items shared with them again" => "Permitir a los usuarios compartir elementos ya compartidos", -"Allow users to share with anyone" => "Permitir a los usuarios compartir con cualquiera", -"Allow users to only share with users in their groups" => "Permitir a los usuarios compartir con usuarios en sus grupos", -"Log" => "Registro", -"More" => "Más", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL.", "Add your App" => "Añadí tu aplicación", "More Apps" => "Más aplicaciones", "Select an App" => "Seleccionar una aplicación", @@ -46,7 +28,7 @@ "Problems connecting to help database." => "Problemas al conectar con la base de datos de ayuda.", "Go there manually." => "Ir de forma manual", "Answer" => "Respuesta", -"You have used %s of the available %s" => "Usaste %s de %s disponible", +"You have used %s of the available %s" => "Usaste %s de los %s disponibles", "Desktop and Mobile Syncing Clients" => "Clientes de sincronización para celulares, tablets y de escritorio", "Download" => "Descargar", "Your password was changed" => "Tu contraseña fue cambiada", @@ -61,6 +43,7 @@ "Language" => "Idioma", "Help translate" => "Ayudanos a traducir", "use this address to connect to your ownCloud in your file manager" => "usá esta dirección para conectarte a tu ownCloud desde tu gestor de archivos", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desarrollado por la comunidad ownCloud, el código fuente está bajo licencia AGPL.", "Name" => "Nombre", "Password" => "Contraseña", "Groups" => "Grupos", diff --git a/settings/l10n/et_EE.php b/settings/l10n/et_EE.php index 42cb42bce97937f7f7bad6094879f63abbe2a0dc..17fd60b9490ca76d20b8a0e3bc8c2468b58b05e4 100644 --- a/settings/l10n/et_EE.php +++ b/settings/l10n/et_EE.php @@ -1,13 +1,14 @@ "App Sotre'i nimekirja laadimine ebaõnnestus", -"Authentication error" => "Autentimise viga", "Group already exists" => "Grupp on juba olemas", "Unable to add group" => "Keela grupi lisamine", +"Could not enable app. " => "Rakenduse sisselülitamine ebaõnnestus.", "Email saved" => "Kiri on salvestatud", "Invalid email" => "Vigane e-post", "OpenID Changed" => "OpenID on muudetud", "Invalid request" => "Vigane päring", "Unable to delete group" => "Keela grupi kustutamine", +"Authentication error" => "Autentimise viga", "Unable to delete user" => "Keela kasutaja kustutamine", "Language changed" => "Keel on muudetud", "Unable to add user to group %s" => "Kasutajat ei saa lisada gruppi %s", @@ -16,19 +17,8 @@ "Enable" => "Lülita sisse", "Saving..." => "Salvestamine...", "__language_name__" => "Eesti", -"Security Warning" => "Turvahoiatus", -"Cron" => "Ajastatud töö", -"Enable Share API" => "Luba jagamise API", -"Allow apps to use the Share API" => "Luba rakendustel kasutada jagamise API-t", -"Allow links" => "Luba linke", -"Allow users to share items to the public with links" => "Luba kasutajatel jagada kirjeid avalike linkidega", -"Allow resharing" => "Luba edasijagamine", -"Allow users to share items shared with them again" => "Luba kasutajatel jagada edasi kirjeid, mida on neile jagatud", -"Allow users to share with anyone" => "Luba kasutajatel kõigiga jagada", -"Allow users to only share with users in their groups" => "Luba kasutajatel jagada kirjeid ainult nende grupi liikmetele, millesse nad ise kuuluvad", -"Log" => "Logi", -"More" => "Veel", "Add your App" => "Lisa oma rakendus", +"More Apps" => "Veel rakendusi", "Select an App" => "Vali programm", "See application page at apps.owncloud.com" => "Vaata rakenduste lehte aadressil apps.owncloud.com", "-licensed by " => "-litsenseeritud ", @@ -40,6 +30,7 @@ "Answer" => "Vasta", "Desktop and Mobile Syncing Clients" => "Töölaua ja mobiiliga sünkroniseerimise rakendused", "Download" => "Lae alla", +"Your password was changed" => "Sinu parooli on muudetud", "Unable to change your password" => "Sa ei saa oma parooli muuta", "Current password" => "Praegune parool", "New password" => "Uus parool", diff --git a/settings/l10n/eu.php b/settings/l10n/eu.php index 4320b8ae6937f16e3d1657f919cd9260b01cc9d3..d6c87e0928b1625e49f704f979da00b11153cadd 100644 --- a/settings/l10n/eu.php +++ b/settings/l10n/eu.php @@ -1,6 +1,5 @@ "Ezin izan da App Dendatik zerrenda kargatu", -"Authentication error" => "Autentifikazio errorea", "Group already exists" => "Taldea dagoeneko existitzenda", "Unable to add group" => "Ezin izan da taldea gehitu", "Could not enable app. " => "Ezin izan da aplikazioa gaitu.", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID aldatuta", "Invalid request" => "Baliogabeko eskaria", "Unable to delete group" => "Ezin izan da taldea ezabatu", +"Authentication error" => "Autentifikazio errorea", "Unable to delete user" => "Ezin izan da erabiltzailea ezabatu", "Language changed" => "Hizkuntza aldatuta", "Unable to add user to group %s" => "Ezin izan da erabiltzailea %s taldera gehitu", @@ -17,25 +17,8 @@ "Enable" => "Gaitu", "Saving..." => "Gordetzen...", "__language_name__" => "Euskera", -"Security Warning" => "Segurtasun abisua", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Zure data karpeta eta zure fitxategiak internetetik zuzenean eskuragarri egon daitezke. ownCloudek emandako .htaccess fitxategia ez du bere lana egiten. Aholkatzen dizugu zure web zerbitzaria ongi konfiguratzea data karpeta eskuragarri ez izateko edo data karpeta web zerbitzariaren dokumentu errotik mugitzea.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Exekutatu zeregin bat orri karga bakoitzean", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php webcron zerbitzu batean erregistratua dago. Deitu cron.php orria ownclouden erroan minuturo http bidez.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Erabili sistemaren cron zerbitzua. Deitu cron.php fitxategia owncloud karpetan minuturo sistemaren cron lan baten bidez.", -"Sharing" => "Partekatzea", -"Enable Share API" => "Gaitu Partekatze APIa", -"Allow apps to use the Share API" => "Baimendu aplikazioak Partekatze APIa erabiltzeko", -"Allow links" => "Baimendu loturak", -"Allow users to share items to the public with links" => "Baimendu erabiltzaileak loturen bidez fitxategiak publikoki partekatzen", -"Allow resharing" => "Baimendu birpartekatzea", -"Allow users to share items shared with them again" => "Baimendu erabiltzaileak haiekin partekatutako fitxategiak berriz ere partekatzen", -"Allow users to share with anyone" => "Baimendu erabiltzaileak edonorekin partekatzen", -"Allow users to only share with users in their groups" => "Baimendu erabiltzaileak bakarrik bere taldeko erabiltzaileekin partekatzen", -"Log" => "Egunkaria", -"More" => "Gehiago", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ownCloud komunitateak garatuta, itubruru kodeaAGPL lizentziarekin banatzen da.", "Add your App" => "Gehitu zure aplikazioa", +"More Apps" => "App gehiago", "Select an App" => "Aukeratu programa bat", "See application page at apps.owncloud.com" => "Ikusi programen orria apps.owncloud.com en", "-licensed by " => "-lizentziatua ", @@ -45,7 +28,7 @@ "Problems connecting to help database." => "Arazoak daude laguntza datubasera konektatzeko.", "Go there manually." => "Joan hara eskuz.", "Answer" => "Erantzun", -"You have used %s of the available %s" => "Eskuragarri dituzun %setik %s erabili duzu", +"You have used %s of the available %s" => "Dagoeneko %s erabili duzu eskuragarri duzun %setatik", "Desktop and Mobile Syncing Clients" => "Mahaigain eta mugikorren sinkronizazio bezeroak", "Download" => "Deskargatu", "Your password was changed" => "Zere pasahitza aldatu da", @@ -60,6 +43,7 @@ "Language" => "Hizkuntza", "Help translate" => "Lagundu itzultzen", "use this address to connect to your ownCloud in your file manager" => "erabili helbide hau zure fitxategi kudeatzailean zure ownCloudera konektatzeko", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ownCloud komunitateak garatuta, itubruru kodeaAGPL lizentziarekin banatzen da.", "Name" => "Izena", "Password" => "Pasahitza", "Groups" => "Taldeak", diff --git a/settings/l10n/fa.php b/settings/l10n/fa.php index d8a49cc440b857d792057fa9311d50538dbc8e80..3dcb770c7303edc4a4ae96afd19a1883b1d5a94e 100644 --- a/settings/l10n/fa.php +++ b/settings/l10n/fa.php @@ -1,16 +1,15 @@ "قادر به بارگذاری لیست از Ùروشگاه اپ نیستم", "Email saved" => "ایمیل ذخیره شد", "Invalid email" => "ایمیل غیر قابل قبول", "OpenID Changed" => "OpenID تغییر کرد", "Invalid request" => "درخواست غیر قابل قبول", +"Authentication error" => "خطا در اعتبار سنجی", "Language changed" => "زبان تغییر کرد", "Disable" => "غیرÙعال", "Enable" => "Ùعال", "Saving..." => "درحال ذخیره ...", "__language_name__" => "__language_name__", -"Security Warning" => "اخطار امنیتی", -"Log" => "کارنامه", -"More" => "بیشتر", "Add your App" => "برنامه خود را بیاÙزایید", "Select an App" => "یک برنامه انتخاب کنید", "See application page at apps.owncloud.com" => "صÙحه این اٌپ را در apps.owncloud.com ببینید", @@ -22,6 +21,7 @@ "Answer" => "پاسخ", "Desktop and Mobile Syncing Clients" => " ابزار مدیریت با دسکتاپ Ùˆ موبایل", "Download" => "بارگیری", +"Your password was changed" => "رمز عبور شما تغییر یاÙت", "Unable to change your password" => "ناتوان در تغییر گذرواژه", "Current password" => "گذرواژه کنونی", "New password" => "گذرواژه جدید", diff --git a/settings/l10n/fi_FI.php b/settings/l10n/fi_FI.php index 0969b6e3654476703451c8c9fe5bc025220c186b..a9e4ad6929bc5231dead3c5a4ec4a03f1601c9a4 100644 --- a/settings/l10n/fi_FI.php +++ b/settings/l10n/fi_FI.php @@ -1,6 +1,5 @@ "Ei pystytä lataamaan listaa sovellusvarastosta (App Store)", -"Authentication error" => "Todennusvirhe", "Group already exists" => "Ryhmä on jo olemassa", "Unable to add group" => "Ryhmän lisäys epäonnistui", "Could not enable app. " => "Sovelluksen käyttöönotto epäonnistui.", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID on vaihdettu", "Invalid request" => "Virheellinen pyyntö", "Unable to delete group" => "Ryhmän poisto epäonnistui", +"Authentication error" => "Todennusvirhe", "Unable to delete user" => "Käyttäjän poisto epäonnistui", "Language changed" => "Kieli on vaihdettu", "Unable to add user to group %s" => "Käyttäjän tai ryhmän %s lisääminen ei onnistu", @@ -17,32 +17,18 @@ "Enable" => "Käytä", "Saving..." => "Tallennetaan...", "__language_name__" => "_kielen_nimi_", -"Security Warning" => "Turvallisuusvaroitus", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Data-kansio ja tiedostot ovat ehkä saavutettavissa Internetistä. .htaccess-tiedosto, jolla kontrolloidaan pääsyä, ei toimi. Suosittelemme, että muutat web-palvelimesi asetukset niin ettei data-kansio ole enää pääsyä tai siirrät data-kansion pois web-palvelimen tiedostojen juuresta.", -"Cron" => "Cron", -"Sharing" => "Jakaminen", -"Enable Share API" => "Ota käyttöön jaon ohjelmoitirajapinta (Share API)", -"Allow apps to use the Share API" => "Salli sovellusten käyttää jaon ohjelmointirajapintaa (Share API)", -"Allow links" => "Salli linkit", -"Allow users to share items to the public with links" => "Salli käyttäjien jakaa kohteita julkisesti linkkejä käyttäen", -"Allow resharing" => "Salli uudelleenjako", -"Allow users to share items shared with them again" => "Salli käyttäjien jakaa heille itselleen jaettuja tietoja edelleen", -"Allow users to share with anyone" => "Salli käyttäjien jakaa kohteita kenen tahansa kanssa", -"Allow users to only share with users in their groups" => "Salli käyttäjien jakaa kohteita vain omien ryhmien jäsenten kesken", -"Log" => "Loki", -"More" => "Lisää", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Kehityksestä on vastannut ownCloud-yhteisö, lähdekoodi on julkaistu lisenssin AGPL alaisena.", -"Add your App" => "Lisää ohjelmasi", -"Select an App" => "Valitse ohjelma", +"Add your App" => "Lisää sovelluksesi", +"More Apps" => "Lisää sovelluksia", +"Select an App" => "Valitse sovellus", "See application page at apps.owncloud.com" => "Katso sovellussivu osoitteessa apps.owncloud.com", "-licensed by " => "-lisensoija ", "Documentation" => "Dokumentaatio", "Managing Big Files" => "Suurten tiedostojen hallinta", "Ask a question" => "Kysy jotain", "Problems connecting to help database." => "Virhe yhdistettäessä tietokantaan.", -"Go there manually." => "Ohje löytyy sieltä.", +"Go there manually." => "Siirry sinne itse.", "Answer" => "Vastaus", -"You have used %s of the available %s" => "Käytössäsi on %s/%s", +"You have used %s of the available %s" => "Käytössäsi on %s/%s", "Desktop and Mobile Syncing Clients" => "Tietokoneen ja mobiililaitteiden synkronointisovellukset", "Download" => "Lataa", "Your password was changed" => "Salasanasi vaihdettiin", @@ -57,6 +43,7 @@ "Language" => "Kieli", "Help translate" => "Auta kääntämisessä", "use this address to connect to your ownCloud in your file manager" => "voit yhdistää tiedostonhallintasovelluksellasi ownCloudiin käyttämällä tätä osoitetta", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Kehityksestä on vastannut ownCloud-yhteisö, lähdekoodi on julkaistu lisenssin AGPL alaisena.", "Name" => "Nimi", "Password" => "Salasana", "Groups" => "Ryhmät", diff --git a/settings/l10n/fr.php b/settings/l10n/fr.php index b81f545b13eb96f8d2e00d77ea2f7181a450d03f..8e5169fe0f3be2e08eab612877ac9f4b4e573cec 100644 --- a/settings/l10n/fr.php +++ b/settings/l10n/fr.php @@ -1,6 +1,5 @@ "Impossible de charger la liste depuis l'App Store", -"Authentication error" => "Erreur d'authentification", "Group already exists" => "Ce groupe existe déjà", "Unable to add group" => "Impossible d'ajouter le groupe", "Could not enable app. " => "Impossible d'activer l'Application", @@ -9,33 +8,18 @@ "OpenID Changed" => "Identifiant OpenID changé", "Invalid request" => "Requête invalide", "Unable to delete group" => "Impossible de supprimer le groupe", +"Authentication error" => "Erreur d'authentification", "Unable to delete user" => "Impossible de supprimer l'utilisateur", "Language changed" => "Langue changée", +"Admins can't remove themself from the admin group" => "Les administrateurs ne peuvent pas se retirer eux-mêmes du groupe admin", "Unable to add user to group %s" => "Impossible d'ajouter l'utilisateur au groupe %s", "Unable to remove user from group %s" => "Impossible de supprimer l'utilisateur du groupe %s", "Disable" => "Désactiver", "Enable" => "Activer", "Saving..." => "Sauvegarde...", "__language_name__" => "Français", -"Security Warning" => "Alertes de sécurité", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Votre répertoire de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess fourni avec ownCloud ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce répertoire ne soit plus accessible, ou bien de déplacer le répertoire de données à l'extérieur de la racine du serveur web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Exécute une tâche à chaque chargement de page", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php est enregistré en tant que service webcron. Veuillez appeler la page cron.php située à la racine du serveur ownCoud via http toute les minutes.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Utilise le service cron du système. Appelle le fichier cron.php du répertoire owncloud toutes les minutes grâce à une tâche cron du système.", -"Sharing" => "Partage", -"Enable Share API" => "Activer l'API de partage", -"Allow apps to use the Share API" => "Autoriser les applications à utiliser l'API de partage", -"Allow links" => "Autoriser les liens", -"Allow users to share items to the public with links" => "Autoriser les utilisateurs à partager du contenu public avec des liens", -"Allow resharing" => "Autoriser le re-partage", -"Allow users to share items shared with them again" => "Autoriser les utilisateurs à partager des éléments déjà partagés entre eux", -"Allow users to share with anyone" => "Autoriser les utilisateurs à partager avec tout le monde", -"Allow users to only share with users in their groups" => "Autoriser les utilisateurs à ne partager qu'avec les utilisateurs dans leurs groupes", -"Log" => "Journaux", -"More" => "Plus", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Développé par la communauté ownCloud, le code source est publié sous license AGPL.", "Add your App" => "Ajoutez votre application", +"More Apps" => "Plus d'applications…", "Select an App" => "Sélectionner une Application", "See application page at apps.owncloud.com" => "Voir la page des applications à l'url apps.owncloud.com", "-licensed by " => "Distribué sous licence , par ", @@ -45,7 +29,7 @@ "Problems connecting to help database." => "Problème de connexion à la base de données d'aide.", "Go there manually." => "S'y rendre manuellement.", "Answer" => "Réponse", -"You have used %s of the available %s" => "Vous avez utilisé %s des %s disponibles", +"You have used %s of the available %s" => "Vous avez utilisé %s des %s disponibles", "Desktop and Mobile Syncing Clients" => "Clients de synchronisation Mobile et Ordinateur", "Download" => "Télécharger", "Your password was changed" => "Votre mot de passe a été changé", @@ -60,6 +44,7 @@ "Language" => "Langue", "Help translate" => "Aidez à traduire", "use this address to connect to your ownCloud in your file manager" => "utilisez cette adresse pour vous connecter à votre ownCloud depuis un explorateur de fichiers", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Développé par la communauté ownCloud, le code source est publié sous license AGPL.", "Name" => "Nom", "Password" => "Mot de passe", "Groups" => "Groupes", diff --git a/settings/l10n/gl.php b/settings/l10n/gl.php index a0fe0989149bbe7099f6f82fed736ebb32e25904..1cde895d0d9dff9e25a48967d1c1f1c84e255740 100644 --- a/settings/l10n/gl.php +++ b/settings/l10n/gl.php @@ -1,30 +1,38 @@ "Non se puido cargar a lista desde a App Store", -"Authentication error" => "Erro na autenticación", +"Group already exists" => "O grupo xa existe", +"Unable to add group" => "Non se pode engadir o grupo", +"Could not enable app. " => "Con se puido activar o aplicativo.", "Email saved" => "Correo electrónico gardado", "Invalid email" => "correo electrónico non válido", "OpenID Changed" => "Mudou o OpenID", "Invalid request" => "Petición incorrecta", +"Unable to delete group" => "Non se pode eliminar o grupo.", +"Authentication error" => "Erro na autenticación", +"Unable to delete user" => "Non se pode eliminar o usuario", "Language changed" => "O idioma mudou", -"Disable" => "Deshabilitar", -"Enable" => "Habilitar", +"Admins can't remove themself from the admin group" => "Os administradores non se pode eliminar a si mesmos do grupo admin", +"Unable to add user to group %s" => "Non se puido engadir o usuario ao grupo %s", +"Unable to remove user from group %s" => "Non se puido eliminar o usuario do grupo %s", +"Disable" => "Desactivar", +"Enable" => "Activar", "Saving..." => "Gardando...", "__language_name__" => "Galego", -"Security Warning" => "Aviso de seguridade", -"Cron" => "Cron", -"Log" => "Conectar", -"More" => "Máis", "Add your App" => "Engade o teu aplicativo", +"More Apps" => "Máis aplicativos", "Select an App" => "Escolla un Aplicativo", "See application page at apps.owncloud.com" => "Vexa a páxina do aplicativo en apps.owncloud.com", +"-licensed by " => "-licenciado por", "Documentation" => "Documentación", "Managing Big Files" => "Xestionar Grandes Ficheiros", "Ask a question" => "Pregunte", "Problems connecting to help database." => "Problemas conectando coa base de datos de axuda", "Go there manually." => "Ir manualmente.", "Answer" => "Resposta", +"You have used %s of the available %s" => "Tes usados %s do total dispoñíbel de %s", "Desktop and Mobile Syncing Clients" => "Cliente de sincronización de escritorio e móbil", "Download" => "Descargar", +"Your password was changed" => "O seu contrasinal foi cambiado", "Unable to change your password" => "Incapaz de trocar o seu contrasinal", "Current password" => "Contrasinal actual", "New password" => "Novo contrasinal", @@ -36,12 +44,14 @@ "Language" => "Idioma", "Help translate" => "Axude na tradución", "use this address to connect to your ownCloud in your file manager" => "utilice este enderezo para conectar ao seu ownCloud no xestor de ficheiros", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desenvolvido pola comunidade ownCloud, o código fonte está baixo a licenza AGPL.", "Name" => "Nome", "Password" => "Contrasinal", "Groups" => "Grupos", "Create" => "Crear", -"Default Quota" => "Cuota por omisión", +"Default Quota" => "Cota por omisión", "Other" => "Outro", +"Group Admin" => "Grupo Admin", "Quota" => "Cota", "Delete" => "Borrar" ); diff --git a/settings/l10n/he.php b/settings/l10n/he.php index bb98a876b82bc8c168435a448497baed85ecbe31..f82cc83d9f77434c098ca7b0b8f35d1a7339f270 100644 --- a/settings/l10n/he.php +++ b/settings/l10n/he.php @@ -1,26 +1,38 @@ "×œ× × ×™×ª×Ÿ לטעון רשימה מה־App Store", +"Group already exists" => "הקבוצה כבר קיימת", +"Unable to add group" => "×œ× × ×™×ª×Ÿ להוסיף קבוצה", +"Could not enable app. " => "×œ× × ×™×ª×Ÿ להפעיל ×ת היישו×", "Email saved" => "הדו×״ל נשמר", "Invalid email" => "דו×״ל ×œ× ×—×•×§×™", "OpenID Changed" => "OpenID השתנה", "Invalid request" => "בקשה ×œ× ×—×•×§×™×ª", +"Unable to delete group" => "×œ× × ×™×ª×Ÿ למחוק ×ת הקבוצה", +"Authentication error" => "שגי×ת הזדהות", +"Unable to delete user" => "×œ× × ×™×ª×Ÿ למחוק ×ת המשתמש", "Language changed" => "שפה השתנתה", +"Admins can't remove themself from the admin group" => "×ž× ×”×œ×™× ×œ× ×™×›×•×œ×™× ×œ×”×¡×™×¨ ×ת ×¢×¦×ž× ×ž×§×‘×•×¦×ª המנהלי×", +"Unable to add user to group %s" => "×œ× × ×™×ª×Ÿ להוסיף משתמש לקבוצה %s", +"Unable to remove user from group %s" => "×œ× × ×™×ª×Ÿ להסיר משתמש מהקבוצה %s", "Disable" => "בטל", "Enable" => "הפעל", "Saving..." => "שומר..", "__language_name__" => "עברית", -"Log" => "יומן", -"More" => "עוד", "Add your App" => "הוספת ×”×™×™×©×•× ×©×œ×š", +"More Apps" => "×™×™×©×•×ž×™× × ×•×¡×¤×™×", "Select an App" => "בחירת יישו×", "See application page at apps.owncloud.com" => "צפה בעמוד ×”×™×©×•× ×‘ apps.owncloud.com", +"-licensed by " => "ברישיון לטובת ", "Documentation" => "תיעוד", "Managing Big Files" => "ניהול ×§×‘×¦×™× ×’×“×•×œ×™×", "Ask a question" => "ש×ל ש×לה", "Problems connecting to help database." => "בעיות בהתחברות לבסיס נתוני העזרה", "Go there manually." => "גש ×œ×©× ×‘×ופן ידני", "Answer" => "מענה", +"You have used %s of the available %s" => "השתמשת ב־%s מתוך %s ×”×–×ž×™× ×™× ×œ×š", "Desktop and Mobile Syncing Clients" => "לקוחות סנכרון למחשב שולחני ולנייד", "Download" => "הורדה", +"Your password was changed" => "הססמה שלך הוחלפה", "Unable to change your password" => "×œ× × ×™×ª×Ÿ לשנות ×ת הססמה שלך", "Current password" => "ססמה נוכחית", "New password" => "ססמה חדשה", @@ -32,12 +44,14 @@ "Language" => "פה", "Help translate" => "עזרה בתרגו×", "use this address to connect to your ownCloud in your file manager" => "השתמש בכתובת זו כדי להתחבר ל־ownCloude שלך ממנהל הקבצי×", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "פותח על די קהילתownCloud, קוד המקור מוגן ברישיון AGPL.", "Name" => "ש×", "Password" => "ססמה", "Groups" => "קבוצות", "Create" => "יצירה", "Default Quota" => "מכסת בררת המחדל", "Other" => "×חר", +"Group Admin" => "מנהל הקבוצה", "Quota" => "מכסה", "Delete" => "מחיקה" ); diff --git a/settings/l10n/hi.php b/settings/l10n/hi.php new file mode 100644 index 0000000000000000000000000000000000000000..645b991a9123b60051215ef26bae5d9d34279cca --- /dev/null +++ b/settings/l10n/hi.php @@ -0,0 +1,4 @@ + "नया पासवरà¥à¤¡", +"Password" => "पासवरà¥à¤¡" +); diff --git a/settings/l10n/hr.php b/settings/l10n/hr.php index 587974c8c76b0a133d90869fc386bb8ff37346c5..7f2fefb90d5b4d31a280a5e78557b4e847b3c6ab 100644 --- a/settings/l10n/hr.php +++ b/settings/l10n/hr.php @@ -1,18 +1,15 @@ "Nemogićnost uÄitavanja liste sa Apps Stora", -"Authentication error" => "GreÅ¡ka kod autorizacije", "Email saved" => "Email spremljen", "Invalid email" => "Neispravan email", "OpenID Changed" => "OpenID promijenjen", "Invalid request" => "Neispravan zahtjev", +"Authentication error" => "GreÅ¡ka kod autorizacije", "Language changed" => "Jezik promijenjen", "Disable" => "IskljuÄi", "Enable" => "UkljuÄi", "Saving..." => "Spremanje...", "__language_name__" => "__ime_jezika__", -"Cron" => "Cron", -"Log" => "dnevnik", -"More" => "viÅ¡e", "Add your App" => "Dodajte vaÅ¡u aplikaciju", "Select an App" => "Odaberite Aplikaciju", "See application page at apps.owncloud.com" => "Pogledajte stranicu s aplikacijama na apps.owncloud.com", diff --git a/settings/l10n/hu_HU.php b/settings/l10n/hu_HU.php index e58a0b6c199bf788eda37c002d18593b443b4b29..e587f7107aec4ac93f30c63831523967653af284 100644 --- a/settings/l10n/hu_HU.php +++ b/settings/l10n/hu_HU.php @@ -1,18 +1,15 @@ "Nem tölthetÅ‘ le a lista az App Store-ból", -"Authentication error" => "Hitelesítési hiba", "Email saved" => "Email mentve", "Invalid email" => "Hibás email", "OpenID Changed" => "OpenID megváltozott", "Invalid request" => "Érvénytelen kérés", +"Authentication error" => "Hitelesítési hiba", "Language changed" => "A nyelv megváltozott", "Disable" => "Letiltás", "Enable" => "Engedélyezés", "Saving..." => "Mentés...", "__language_name__" => "__language_name__", -"Security Warning" => "Biztonsági figyelmeztetés", -"Log" => "Napló", -"More" => "Tovább", "Add your App" => "App hozzáadása", "Select an App" => "Egy App kiválasztása", "See application page at apps.owncloud.com" => "Lásd apps.owncloud.com, alkalmazások oldal", diff --git a/settings/l10n/ia.php b/settings/l10n/ia.php index 398a59da1354c0c2c44555fa6a54ea57dd91035d..c5f4e7eaf24f1b91280b97f57585f40fb8e350f2 100644 --- a/settings/l10n/ia.php +++ b/settings/l10n/ia.php @@ -3,8 +3,6 @@ "Invalid request" => "Requesta invalide", "Language changed" => "Linguage cambiate", "__language_name__" => "Interlingua", -"Log" => "Registro", -"More" => "Plus", "Add your App" => "Adder tu application", "Select an App" => "Selectionar un app", "Documentation" => "Documentation", diff --git a/settings/l10n/id.php b/settings/l10n/id.php index 7ab21d7feaf01cb467fc316df765882ae8d069dd..ad89a4659d03da14a1cc141c0a9961e2b3c3bae5 100644 --- a/settings/l10n/id.php +++ b/settings/l10n/id.php @@ -3,14 +3,12 @@ "Invalid email" => "Email tidak sah", "OpenID Changed" => "OpenID telah dirubah", "Invalid request" => "Permintaan tidak valid", +"Authentication error" => "autentikasi bermasalah", "Language changed" => "Bahasa telah diganti", "Disable" => "NonAktifkan", "Enable" => "Aktifkan", "Saving..." => "Menyimpan...", "__language_name__" => "__language_name__", -"Security Warning" => "Peringatan Keamanan", -"Log" => "Log", -"More" => "Lebih", "Add your App" => "Tambahkan App anda", "Select an App" => "Pilih satu aplikasi", "See application page at apps.owncloud.com" => "Lihat halaman aplikasi di apps.owncloud.com", @@ -24,7 +22,7 @@ "Download" => "Unduh", "Unable to change your password" => "Tidak dapat merubah password anda", "Current password" => "Password saat ini", -"New password" => "Password baru", +"New password" => "kata kunci baru", "show" => "perlihatkan", "Change password" => "Rubah password", "Email" => "Email", diff --git a/settings/l10n/it.php b/settings/l10n/it.php index 0fc32c0b9319e65ebbb7f6948163eed3b541cc73..fa24156b589d557acc0ebcf55e0f589e2d042ade 100644 --- a/settings/l10n/it.php +++ b/settings/l10n/it.php @@ -1,6 +1,5 @@ "Impossibile caricare l'elenco dall'App Store", -"Authentication error" => "Errore di autenticazione", "Group already exists" => "Il gruppo esiste già", "Unable to add group" => "Impossibile aggiungere il gruppo", "Could not enable app. " => "Impossibile abilitare l'applicazione.", @@ -9,32 +8,16 @@ "OpenID Changed" => "OpenID modificato", "Invalid request" => "Richiesta non valida", "Unable to delete group" => "Impossibile eliminare il gruppo", +"Authentication error" => "Errore di autenticazione", "Unable to delete user" => "Impossibile eliminare l'utente", "Language changed" => "Lingua modificata", +"Admins can't remove themself from the admin group" => "Gli amministratori non possono rimuovere se stessi dal gruppo di amministrazione", "Unable to add user to group %s" => "Impossibile aggiungere l'utente al gruppo %s", "Unable to remove user from group %s" => "Impossibile rimuovere l'utente dal gruppo %s", "Disable" => "Disabilita", "Enable" => "Abilita", "Saving..." => "Salvataggio in corso...", "__language_name__" => "Italiano", -"Security Warning" => "Avviso di sicurezza", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet.\nIl file .htaccess fornito da ownCloud non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile e spostare la cartella fuori dalla radice del server web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Esegui un'operazione per ogni pagina caricata", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php è registrato su un servizio webcron. Chiama la pagina cron.php nella radice di owncloud ogni minuto su http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Usa il servizio cron di sistema. Chiama il file cron.php nella cartella di owncloud tramite una pianificazione del cron di sistema ogni minuto.", -"Sharing" => "Condivisione", -"Enable Share API" => "Abilita API di condivisione", -"Allow apps to use the Share API" => "Consenti alle applicazioni di utilizzare le API di condivisione", -"Allow links" => "Consenti collegamenti", -"Allow users to share items to the public with links" => "Consenti agli utenti di condividere elementi al pubblico con collegamenti", -"Allow resharing" => "Consenti la ri-condivisione", -"Allow users to share items shared with them again" => "Consenti agli utenti di condividere elementi già condivisi", -"Allow users to share with anyone" => "Consenti agli utenti di condividere con chiunque", -"Allow users to only share with users in their groups" => "Consenti agli utenti di condividere con gli utenti del proprio gruppo", -"Log" => "Registro", -"More" => "Altro", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Sviluppato dalla comunità di ownCloud, il codice sorgente è licenziato nei termini della AGPL.", "Add your App" => "Aggiungi la tua applicazione", "More Apps" => "Altre applicazioni", "Select an App" => "Seleziona un'applicazione", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problemi di connessione al database di supporto.", "Go there manually." => "Raggiungilo manualmente.", "Answer" => "Risposta", -"You have used %s of the available %s" => "Hai utilizzato %s dei %s disponibili", +"You have used %s of the available %s" => "Hai utilizzato %s dei %s disponibili", "Desktop and Mobile Syncing Clients" => "Client di sincronizzazione desktop e mobile", "Download" => "Scaricamento", "Your password was changed" => "La tua password è cambiata", @@ -61,6 +44,7 @@ "Language" => "Lingua", "Help translate" => "Migliora la traduzione", "use this address to connect to your ownCloud in your file manager" => "usa questo indirizzo per connetterti al tuo ownCloud dal gestore file", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Sviluppato dalla comunità di ownCloud, il codice sorgente è licenziato nei termini della AGPL.", "Name" => "Nome", "Password" => "Password", "Groups" => "Gruppi", diff --git a/settings/l10n/ja_JP.php b/settings/l10n/ja_JP.php index 72f79837d90e0d04fab263db93f4d1cc9a312ade..098cce843d78a774fd0ec5b3579e974a121a96f9 100644 --- a/settings/l10n/ja_JP.php +++ b/settings/l10n/ja_JP.php @@ -1,6 +1,5 @@ "アプリストアã‹ã‚‰ãƒªã‚¹ãƒˆã‚’ロードã§ãã¾ã›ã‚“", -"Authentication error" => "èªè¨¼ã‚¨ãƒ©ãƒ¼", "Group already exists" => "グループã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™", "Unable to add group" => "グループを追加ã§ãã¾ã›ã‚“", "Could not enable app. " => "アプリを有効ã«ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚", @@ -9,33 +8,18 @@ "OpenID Changed" => "OpenIDãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ", "Invalid request" => "無効ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ã™", "Unable to delete group" => "グループを削除ã§ãã¾ã›ã‚“", +"Authentication error" => "èªè¨¼ã‚¨ãƒ©ãƒ¼", "Unable to delete user" => "ユーザを削除ã§ãã¾ã›ã‚“", "Language changed" => "言語ãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ", +"Admins can't remove themself from the admin group" => "管ç†è€…ã¯è‡ªèº«ã‚’管ç†è€…グループã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。", "Unable to add user to group %s" => "ユーザをグループ %s ã«è¿½åŠ ã§ãã¾ã›ã‚“", "Unable to remove user from group %s" => "ユーザをグループ %s ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“", "Disable" => "無効", "Enable" => "有効", "Saving..." => "ä¿å­˜ä¸­...", "__language_name__" => "Japanese (日本語)", -"Security Warning" => "セキュリティ警告", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "データディレクトリã¨ãƒ•ã‚¡ã‚¤ãƒ«ãŒæらãインターãƒãƒƒãƒˆã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã£ã¦ã„ã¾ã™ã€‚ownCloudãŒæä¾›ã™ã‚‹ .htaccessファイルãŒæ©Ÿèƒ½ã—ã¦ã„ã¾ã›ã‚“。データディレクトリを全ãアクセスã§ããªã„よã†ã«ã™ã‚‹ã‹ã€ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ウェブサーãƒã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆãƒ«ãƒ¼ãƒˆã®å¤–ã«ç½®ãよã†ã«ã‚¦ã‚§ãƒ–サーãƒã‚’設定ã™ã‚‹ã“ã¨ã‚’å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚", -"Cron" => "cron(自動定期実行)", -"Execute one task with each page loaded" => "å„ページã®èª­ã¿è¾¼ã¿æ™‚ã«ã‚¿ã‚¹ã‚¯ã‚’1ã¤å®Ÿè¡Œã™ã‚‹", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php 㯠webcron サービスã¨ã—ã¦ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚HTTP経由ã§1分間ã«1回ã®é »åº¦ã§ owncloud ã®ãƒ«ãƒ¼ãƒˆãƒšãƒ¼ã‚¸å†…ã® cron.php ページを呼ã³å‡ºã—ã¾ã™ã€‚", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "システムã®cronサービスを利用ã™ã‚‹ã€‚1分ã«1回ã®é »åº¦ã§ã‚·ã‚¹ãƒ†ãƒ ã®cronジョブã«ã‚ˆã‚Šowncloudフォルダ内ã®cron.phpファイルを呼ã³å‡ºã—ã¦ãã ã•ã„。", -"Sharing" => "共有中", -"Enable Share API" => "Share APIを有効", -"Allow apps to use the Share API" => "Share APIã®ä½¿ç”¨ã‚’アプリケーションã«è¨±å¯", -"Allow links" => "リンクを許å¯", -"Allow users to share items to the public with links" => "ユーザーãŒãƒªãƒ³ã‚¯ã«ã‚ˆã‚‹å…¬é–‹ã§ã‚¢ã‚¤ãƒ†ãƒ ã‚’共有ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ã™ã‚‹", -"Allow resharing" => "å†å…±æœ‰ã‚’許å¯", -"Allow users to share items shared with them again" => "ユーザーãŒå…±æœ‰ã•ã‚Œã¦ã„るアイテムをã•ã‚‰ã«å…±æœ‰ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ã™ã‚‹", -"Allow users to share with anyone" => "ユーザーãŒèª°ã«ã§ã‚‚共有出æ¥ã‚‹ã‚ˆã†ã«ã™ã‚‹", -"Allow users to only share with users in their groups" => "ユーザーãŒã‚°ãƒ«ãƒ¼ãƒ—ã®äººã«ã—ã‹å…±æœ‰å‡ºæ¥ãªã„よã†ã«ã™ã‚‹", -"Log" => "ログ", -"More" => "ã‚‚ã£ã¨", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ownCloud communityã«ã‚ˆã‚Šé–‹ç™ºã•ã‚Œã¦ã„ã¾ã™ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã¯ã€AGPL ライセンスã«ã‚ˆã‚Šæä¾›ã•ã‚Œã¦ã„ã¾ã™ã€‚", "Add your App" => "アプリを追加", +"More Apps" => "ã•ã‚‰ã«ã‚¢ãƒ—リを表示", "Select an App" => "アプリをé¸æŠžã—ã¦ãã ã•ã„", "See application page at apps.owncloud.com" => "apps.owncloud.com ã§ã‚¢ãƒ—リケーションã®ãƒšãƒ¼ã‚¸ã‚’見ã¦ãã ã•ã„", "-licensed by " => "-ライセンス: ", @@ -45,7 +29,7 @@ "Problems connecting to help database." => "ヘルプデータベースã¸ã®æŽ¥ç¶šæ™‚ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ", "Go there manually." => "手動ã§ç§»å‹•ã—ã¦ãã ã•ã„。", "Answer" => "解答", -"You have used %s of the available %s" => "ç¾åœ¨ï½¤%s / %s を利用ã—ã¦ã„ã¾ã™", +"You have used %s of the available %s" => "ç¾åœ¨ã€%s / %s を利用ã—ã¦ã„ã¾ã™", "Desktop and Mobile Syncing Clients" => "デスクトップãŠã‚ˆã³ãƒ¢ãƒã‚¤ãƒ«ç”¨ã®åŒæœŸã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ", "Download" => "ダウンロード", "Your password was changed" => "パスワードを変更ã—ã¾ã—ãŸ", @@ -60,6 +44,7 @@ "Language" => "言語", "Help translate" => "翻訳ã«å”力ã™ã‚‹", "use this address to connect to your ownCloud in your file manager" => "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§ã‚ãªãŸã®ownCloudã«æŽ¥ç¶šã™ã‚‹éš›ã¯ã€ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’使用ã—ã¦ãã ã•ã„", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ownCloud communityã«ã‚ˆã‚Šé–‹ç™ºã•ã‚Œã¦ã„ã¾ã™ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã¯ã€AGPL ライセンスã«ã‚ˆã‚Šæä¾›ã•ã‚Œã¦ã„ã¾ã™ã€‚", "Name" => "åå‰", "Password" => "パスワード", "Groups" => "グループ", diff --git a/settings/l10n/ka_GE.php b/settings/l10n/ka_GE.php new file mode 100644 index 0000000000000000000000000000000000000000..d3ad88fe95f613024a652c07b3a7d186cff70ff5 --- /dev/null +++ b/settings/l10n/ka_GE.php @@ -0,0 +1,54 @@ + "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბის სირვერ ჩáƒáƒ›áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—რApp Store", +"Group already exists" => "ჯგუფი უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს", +"Unable to add group" => "ჯგუფის დáƒáƒ›áƒáƒ¢áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ", +"Could not enable app. " => "ვერ მáƒáƒ®áƒ”რხდრáƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ áƒ—ვáƒ.", +"Email saved" => "იმეილი შენáƒáƒ®áƒ£áƒšáƒ˜áƒ", +"Invalid email" => "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ იმეილი", +"OpenID Changed" => "OpenID შეცვლილიáƒ", +"Invalid request" => "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ მáƒáƒ—ხáƒáƒ•áƒœáƒ", +"Unable to delete group" => "ჯგუფის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ", +"Authentication error" => "áƒáƒ•áƒ—ენტიფიკáƒáƒªáƒ˜áƒ˜áƒ¡ შეცდáƒáƒ›áƒ", +"Unable to delete user" => "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ", +"Language changed" => "ენრშეცვლილიáƒ", +"Unable to add user to group %s" => "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის დáƒáƒ›áƒáƒ¢áƒ”ბრვერ მáƒáƒ®áƒ”ხდრჯგუფში %s", +"Unable to remove user from group %s" => "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”ხდრჯგუფიდáƒáƒœ %s", +"Disable" => "გáƒáƒ›áƒáƒ áƒ—ვáƒ", +"Enable" => "ჩáƒáƒ áƒ—ვáƒ", +"Saving..." => "შენáƒáƒ®áƒ•áƒ...", +"__language_name__" => "__language_name__", +"Add your App" => "დáƒáƒáƒ›áƒáƒ¢áƒ” შენი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ", +"More Apps" => "უფრრმეტი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი", +"Select an App" => "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ", +"See application page at apps.owncloud.com" => "ნáƒáƒ®áƒ”თ áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ გვერდი apps.owncloud.com –ზე", +"-licensed by " => "-ლიცენსირებულირ", +"Documentation" => "დáƒáƒ™áƒ£áƒ›áƒ”ნტáƒáƒªáƒ˜áƒ", +"Managing Big Files" => "დიდი ფáƒáƒ˜áƒšáƒ”ბის მენეჯმენტი", +"Ask a question" => "დáƒáƒ¡áƒ•áƒ˜áƒ— შეკითხვáƒ", +"Problems connecting to help database." => "დáƒáƒ®áƒ›áƒáƒ áƒ”ბის ბáƒáƒ–áƒáƒ¡áƒ—áƒáƒœ წვდáƒáƒ›áƒ˜áƒ¡ პრáƒáƒ‘ლემáƒ", +"Go there manually." => "წáƒáƒ“ი იქ შენით.", +"Answer" => "პáƒáƒ¡áƒ£áƒ®áƒ˜", +"Desktop and Mobile Syncing Clients" => "დესკტáƒáƒž დრმáƒáƒ‘ილური კლიენტების სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ", +"Download" => "ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ", +"Your password was changed" => "თქვენი პáƒáƒ áƒáƒšáƒ˜ შეიცვáƒáƒšáƒ", +"Unable to change your password" => "თქვენი პáƒáƒ áƒáƒšáƒ˜ áƒáƒ  შეიცვáƒáƒšáƒ", +"Current password" => "მიმდინáƒáƒ áƒ” პáƒáƒ áƒáƒšáƒ˜", +"New password" => "áƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜", +"show" => "გáƒáƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”", +"Change password" => "პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ", +"Email" => "იმეილი", +"Your email address" => "თქვენი იმეილ მისáƒáƒ›áƒáƒ áƒ—ი", +"Fill in an email address to enable password recovery" => "შეáƒáƒ•áƒ¡áƒ”თ იმეილ მისáƒáƒ›áƒáƒ áƒ—ის ველი პáƒáƒ áƒáƒšáƒ˜áƒ¡ áƒáƒ¦áƒ¡áƒáƒ“გენáƒáƒ“", +"Language" => "ენáƒ", +"Help translate" => "თáƒáƒ áƒ’მნის დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ", +"use this address to connect to your ownCloud in your file manager" => "გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე შემდეგი მისáƒáƒ›áƒáƒ áƒ—ი ownCloud–თáƒáƒœ დáƒáƒ¡áƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბლáƒáƒ“ შენს ფáƒáƒ˜áƒšáƒ›áƒ”ნეჯერში", +"Name" => "სáƒáƒ®áƒ”ლი", +"Password" => "პáƒáƒ áƒáƒšáƒ˜", +"Groups" => "ჯგუფი", +"Create" => "შექმნáƒ", +"Default Quota" => "სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ქვáƒáƒ¢áƒ", +"Other" => "სხვáƒ", +"Group Admin" => "ჯგუფის áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ˜", +"Quota" => "ქვáƒáƒ¢áƒ", +"Delete" => "წáƒáƒ¨áƒšáƒ" +); diff --git a/settings/l10n/ko.php b/settings/l10n/ko.php index b2c00808967019caf6e5f49610ede4a63a1c4584..cf864c353dad6f1de817822aa2e89b500cdc1c67 100644 --- a/settings/l10n/ko.php +++ b/settings/l10n/ko.php @@ -1,30 +1,37 @@ "앱 스토어ì—ì„œ 목ë¡ì„ 가져올 수 없습니다", -"Authentication error" => "ì¸ì¦ 오류", +"Group already exists" => "ê·¸ë£¹ì´ ì´ë¯¸ 존재합니다.", +"Unable to add group" => "그룹추가가 불가능합니다.", +"Could not enable app. " => "ì‘용프로그램 가능하지 않습니다.", "Email saved" => "ì´ë©”ì¼ ì €ìž¥", "Invalid email" => "ìž˜ëª»ëœ ì´ë©”ì¼", "OpenID Changed" => "OpenID 변경ë¨", "Invalid request" => "ìž˜ëª»ëœ ìš”ì²­", +"Unable to delete group" => "그룹 삭제가 불가능합니다.", +"Authentication error" => "ì¸ì¦ 오류", +"Unable to delete user" => "ì‚¬ìš©ìž ì‚­ì œê°€ 불가능합니다.", "Language changed" => "언어가 변경ë˜ì—ˆìŠµë‹ˆë‹¤", +"Unable to add user to group %s" => "%s ê·¸ë£¹ì— ì‚¬ìš©ìž ì¶”ê°€ê°€ 불가능합니다.", +"Unable to remove user from group %s" => "%s 그룹으로부터 ì‚¬ìš©ìž ì œê±°ê°€ 불가능합니다.", "Disable" => "비활성화", "Enable" => "활성화", "Saving..." => "저장...", "__language_name__" => "한국어", -"Security Warning" => "보안 경고", -"Cron" => "í¬ë¡ ", -"Log" => "로그", -"More" => "ë”", "Add your App" => "앱 추가", +"More Apps" => "ë”ë§Žì€ ì‘용프로그램들", "Select an App" => "프로그램 ì„ íƒ", "See application page at apps.owncloud.com" => "application page at apps.owncloud.comì„ ë³´ì‹œì˜¤.", +"-licensed by " => "-licensed by ", "Documentation" => "문서", "Managing Big Files" => "í° íŒŒì¼ ê´€ë¦¬", "Ask a question" => "질문하기", "Problems connecting to help database." => "ë°ì´í„°ë² ì´ìŠ¤ì— 연결하는 ë° ë¬¸ì œê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.", "Go there manually." => "ì§ì ‘ ê°ˆ 수 있습니다.", "Answer" => "대답", +"You have used %s of the available %s" => "You have used %s of the available %s", "Desktop and Mobile Syncing Clients" => "ë°ìŠ¤í¬íƒ‘ ë° ëª¨ë°”ì¼ ë™ê¸°í™” í´ë¼ì´ì–¸íŠ¸", "Download" => "다운로드", +"Your password was changed" => "ë‹¹ì‹ ì˜ ë¹„ë°€ë²ˆí˜¸ê°€ 변경ë˜ì—ˆìŠµë‹ˆë‹¤.", "Unable to change your password" => "암호를 변경할 수 ì—†ìŒ", "Current password" => "현재 암호", "New password" => "새 암호", @@ -36,6 +43,7 @@ "Language" => "언어", "Help translate" => "번역 ë•ê¸°", "use this address to connect to your ownCloud in your file manager" => "íŒŒì¼ ê´€ë¦¬ìžì—ì„œ ë‚´ ownCloudì— ì—°ê²°í•  ë•Œ ì´ ì£¼ì†Œë¥¼ 사용하십시오", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ownCloud communityì— ì˜í•´ì„œ 개발ë˜ì—ˆìŠµë‹ˆë‹¤. 소스코드는 AGPLì— ë”°ë¼ ì‚¬ìš©ì´ í—ˆê°€ë©ë‹ˆë‹¤.", "Name" => "ì´ë¦„", "Password" => "암호", "Groups" => "그룹", diff --git a/settings/l10n/ku_IQ.php b/settings/l10n/ku_IQ.php new file mode 100644 index 0000000000000000000000000000000000000000..b4bdf2a6cedac65908cd938fc80374526c64ab66 --- /dev/null +++ b/settings/l10n/ku_IQ.php @@ -0,0 +1,10 @@ + "چالاککردن", +"Saving..." => "پاشکه‌وتده‌کات...", +"Documentation" => "به‌ڵگه‌نامه", +"Download" => "داگرتن", +"New password" => "وشەی نهێنی نوێ", +"Email" => "ئیمه‌یل", +"Name" => "ناو", +"Password" => "وشەی تێپەربو" +); diff --git a/settings/l10n/lb.php b/settings/l10n/lb.php index abad102bb59331e391d73bde7299e8ec483f52d0..440b81d44c93883d563efe9d1437287a09ec98f0 100644 --- a/settings/l10n/lb.php +++ b/settings/l10n/lb.php @@ -1,25 +1,15 @@ "Konnt Lescht net vum App Store lueden", -"Authentication error" => "Authentifikatioun's Fehler", "Email saved" => "E-mail gespäichert", "Invalid email" => "Ongülteg e-mail", "OpenID Changed" => "OpenID huet geännert", "Invalid request" => "Ongülteg Requête", +"Authentication error" => "Authentifikatioun's Fehler", "Language changed" => "Sprooch huet geännert", "Disable" => "Ofschalten", "Enable" => "Aschalten", "Saving..." => "Speicheren...", "__language_name__" => "__language_name__", -"Security Warning" => "Sécherheets Warnung", -"Cron" => "Cron", -"Enable Share API" => "Share API aschalten", -"Allow apps to use the Share API" => "Erlab Apps d'Share API ze benotzen", -"Allow links" => "Links erlaben", -"Allow resharing" => "Resharing erlaben", -"Allow users to share with anyone" => "Useren erlaben mat egal wiem ze sharen", -"Allow users to only share with users in their groups" => "Useren nëmmen erlaben mat Useren aus hirer Grupp ze sharen", -"Log" => "Log", -"More" => "Méi", "Add your App" => "Setz deng App bei", "Select an App" => "Wiel eng Applikatioun aus", "See application page at apps.owncloud.com" => "Kuck dir d'Applicatioun's Säit op apps.owncloud.com un", diff --git a/settings/l10n/lt_LT.php b/settings/l10n/lt_LT.php index 09cb02d147df1ce0c2758ff2a3fb34be6ee713c8..6399b5b1b498fd444b82d45619a2ca0d7dfe2480 100644 --- a/settings/l10n/lt_LT.php +++ b/settings/l10n/lt_LT.php @@ -1,25 +1,26 @@ "Neįmanoma įkelti sÄ…raÅ¡o iÅ¡ Programų Katalogo", +"Could not enable app. " => "Nepavyksta įjungti aplikacijos.", "Email saved" => "El. paÅ¡tas iÅ¡saugotas", "Invalid email" => "Netinkamas el. paÅ¡tas", "OpenID Changed" => "OpenID pakeistas", "Invalid request" => "Klaidinga užklausa", +"Authentication error" => "Autentikacijos klaida", "Language changed" => "Kalba pakeista", "Disable" => "IÅ¡jungti", "Enable" => "Ä®jungti", "Saving..." => "Saugoma..", "__language_name__" => "Kalba", -"Security Warning" => "Saugumo įspÄ—jimas", -"Cron" => "Cron", -"Log" => "Žurnalas", -"More" => "Daugiau", "Add your App" => "PridÄ—ti programÄ—lÄ™", +"More Apps" => "Daugiau aplikacijų", "Select an App" => "Pasirinkite programÄ…", +"-licensed by " => "- autorius", "Documentation" => "Dokumentacija", "Ask a question" => "Užduoti klausimÄ…", "Problems connecting to help database." => "Problemos jungiantis prie duomenų bazÄ—s", "Answer" => "Atsakyti", "Download" => "Atsisiųsti", +"Your password was changed" => "JÅ«sų slaptažodis buvo pakeistas", "Unable to change your password" => "Neįmanoma pakeisti slaptažodžio", "Current password" => "Dabartinis slaptažodis", "New password" => "Naujas slaptažodis", diff --git a/settings/l10n/lv.php b/settings/l10n/lv.php index 829cda0f9179082e495ed89c76e0fdd5c785e62d..13f4483f1d24bc7a36369fd2247473076331b9c9 100644 --- a/settings/l10n/lv.php +++ b/settings/l10n/lv.php @@ -1,30 +1,37 @@ "Nebija iespÄ“jams lejuplÄdÄ“t sarakstu no aplikÄciju veikala", -"Authentication error" => "IelogoÅ¡anÄs kļūme", +"Group already exists" => "Grupa jau eksistÄ“", +"Unable to add group" => "Nevar pievienot grupu", +"Could not enable app. " => "Nevar ieslÄ“gt aplikÄciju.", "Email saved" => "Epasts tika saglabÄts", "Invalid email" => "Nepareizs epasts", "OpenID Changed" => "OpenID nomainÄ«ts", "Invalid request" => "Nepareizs vaicÄjums", +"Unable to delete group" => "Nevar izdzÄ“st grupu", +"Authentication error" => "IelogoÅ¡anÄs kļūme", +"Unable to delete user" => "Nevar izdzÄ“st lietotÄju", "Language changed" => "Valoda tika nomainÄ«ta", +"Unable to add user to group %s" => "Nevar pievienot lietotÄju grupai %s", +"Unable to remove user from group %s" => "Nevar noņemt lietotÄju no grupas %s", "Disable" => "Atvienot", "Enable" => "Pievienot", "Saving..." => "SaglabÄ...", "__language_name__" => "__valodas_nosaukums__", -"Security Warning" => "BrÄ«dinÄjums par droÅ¡Ä«bu", -"Cron" => "Cron", -"Log" => "Log", -"More" => "VairÄk", "Add your App" => "Pievieno savu aplikÄciju", +"More Apps" => "VairÄk aplikÄciju", "Select an App" => "IzvÄ“lies aplikÄciju", "See application page at apps.owncloud.com" => "Apskatie aplikÄciju lapu - apps.owncloud.com", +"-licensed by " => "-licencÄ“ts no ", "Documentation" => "DokumentÄcija", "Managing Big Files" => "RÄ«koties ar apjomÄ«giem failiem", "Ask a question" => "Uzdod jautajumu", "Problems connecting to help database." => "ProblÄ“mas ar datubÄzes savienojumu", "Go there manually." => "Nokļūt tur paÅ¡rocÄ«gi", "Answer" => "AtbildÄ“t", +"You have used %s of the available %s" => "JÅ«s lietojat %s no pieejamajiem %s", "Desktop and Mobile Syncing Clients" => "Desktop un mobÄ«lo ierÄ«Äu sinhronizÄcijas rÄ«ks", "Download" => "LejuplÄdÄ“t", +"Your password was changed" => "JÅ«ru parole tika nomainÄ«ta", "Unable to change your password" => "Nav iespÄ“jams nomainÄ«t jÅ«su paroli", "Current password" => "PaÅ¡reizÄ“jÄ parole", "New password" => "Jauna parole", @@ -36,6 +43,7 @@ "Language" => "Valoda", "Help translate" => "PalÄ«dzi tulkot", "use this address to connect to your ownCloud in your file manager" => "izmanto Å¡o adresi lai ielogotos ownCloud no sava failu pÄrlÅ«ka", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "IzstrÄdÄjusiownCloud kopiena,pirmkodukurÅ¡ ir licencÄ“ts zem AGPL.", "Name" => "VÄrds", "Password" => "Parole", "Groups" => "Grupas", diff --git a/settings/l10n/mk.php b/settings/l10n/mk.php index 78d05660e71fc117b0c500a6efce954ae67aad7a..8594825fdd666a97809678f63efd715c1f48ddfa 100644 --- a/settings/l10n/mk.php +++ b/settings/l10n/mk.php @@ -8,8 +8,6 @@ "Enable" => "Овозможи", "Saving..." => "Снимам...", "__language_name__" => "__language_name__", -"Log" => "ЗапиÑник", -"More" => "Повеќе", "Add your App" => "Додадете ја Вашата апликација", "Select an App" => "Избери аппликација", "See application page at apps.owncloud.com" => "Види ја Ñтраницата Ñо апликации на apps.owncloud.com", diff --git a/settings/l10n/ms_MY.php b/settings/l10n/ms_MY.php index 187199894626b619b21cccd7d89ee1bb00287529..5de247110bb76662bd3fc093d24bc7319d4fb8db 100644 --- a/settings/l10n/ms_MY.php +++ b/settings/l10n/ms_MY.php @@ -1,17 +1,14 @@ "Ralat pengesahan", "Email saved" => "Emel disimpan", "Invalid email" => "Emel tidak sah", "OpenID Changed" => "OpenID diubah", "Invalid request" => "Permintaan tidak sah", +"Authentication error" => "Ralat pengesahan", "Language changed" => "Bahasa diubah", "Disable" => "Nyahaktif", "Enable" => "Aktif", "Saving..." => "Simpan...", "__language_name__" => "_nama_bahasa_", -"Security Warning" => "Amaran keselamatan", -"Log" => "Log", -"More" => "Lanjutan", "Add your App" => "Tambah apps anda", "Select an App" => "Pilih aplikasi", "See application page at apps.owncloud.com" => "Lihat halaman applikasi di apps.owncloud.com", diff --git a/settings/l10n/nb_NO.php b/settings/l10n/nb_NO.php index daeb1b78e7f5d769c9b03e92374ac520422790d4..23618fc30244d83e9a80d5c0bb4368b4613c90c9 100644 --- a/settings/l10n/nb_NO.php +++ b/settings/l10n/nb_NO.php @@ -1,20 +1,24 @@ "Lasting av liste fra App Store feilet.", -"Authentication error" => "Autentikasjonsfeil", +"Group already exists" => "Gruppen finnes allerede", +"Unable to add group" => "Kan ikke legge til gruppe", +"Could not enable app. " => "Kan ikke aktivere app.", "Email saved" => "Epost lagret", "Invalid email" => "Ugyldig epost", "OpenID Changed" => "OpenID endret", "Invalid request" => "Ugyldig forespørsel", +"Unable to delete group" => "Kan ikke slette gruppe", +"Authentication error" => "Autentikasjonsfeil", +"Unable to delete user" => "Kan ikke slette bruker", "Language changed" => "SprÃ¥k endret", +"Unable to add user to group %s" => "Kan ikke legge bruker til gruppen %s", +"Unable to remove user from group %s" => "Kan ikke slette bruker fra gruppen %s", "Disable" => "SlÃ¥ avBehandle ", "Enable" => "SlÃ¥ pÃ¥", "Saving..." => "Lagrer...", "__language_name__" => "__language_name__", -"Security Warning" => "Sikkerhetsadvarsel", -"Cron" => "Cron", -"Log" => "Logg", -"More" => "Mer", "Add your App" => "Legg til din App", +"More Apps" => "Flere Apps", "Select an App" => "Velg en app", "See application page at apps.owncloud.com" => "Se applikasjonens side pÃ¥ apps.owncloud.org", "Documentation" => "Dokumentasjon", @@ -25,6 +29,7 @@ "Answer" => "Svar", "Desktop and Mobile Syncing Clients" => "Klienter for datamaskiner og mobile enheter", "Download" => "Last ned", +"Your password was changed" => "Passord har blitt endret", "Unable to change your password" => "Kunne ikke endre passordet ditt", "Current password" => "NÃ¥værende passord", "New password" => "Nytt passord", diff --git a/settings/l10n/nl.php b/settings/l10n/nl.php index d7bd4267ac131d7b002cbd623af48907519f83db..f419ecf74eddbd399f9f2a262d9a7a025cc08115 100644 --- a/settings/l10n/nl.php +++ b/settings/l10n/nl.php @@ -1,6 +1,5 @@ "Kan de lijst niet van de App store laden", -"Authentication error" => "Authenticatie fout", "Group already exists" => "Groep bestaat al", "Unable to add group" => "Niet in staat om groep toe te voegen", "Could not enable app. " => "Kan de app. niet activeren", @@ -9,45 +8,29 @@ "OpenID Changed" => "OpenID is aangepast", "Invalid request" => "Ongeldig verzoek", "Unable to delete group" => "Niet in staat om groep te verwijderen", +"Authentication error" => "Authenticatie fout", "Unable to delete user" => "Niet in staat om gebruiker te verwijderen", "Language changed" => "Taal aangepast", +"Admins can't remove themself from the admin group" => "Admins kunnen zichzelf niet uit de admin groep verwijderen", "Unable to add user to group %s" => "Niet in staat om gebruiker toe te voegen aan groep %s", "Unable to remove user from group %s" => "Niet in staat om gebruiker te verwijderen uit groep %s", "Disable" => "Uitschakelen", "Enable" => "Inschakelen", "Saving..." => "Aan het bewaren.....", "__language_name__" => "Nederlands", -"Security Warning" => "Veiligheidswaarschuwing", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Uw data folder en uw bestanden zijn hoogst waarschijnlijk vanaf het internet bereikbaar. Het .htaccess bestand dat ownCloud meelevert werkt niet. Het is ten zeerste aangeraden om uw webserver zodanig te configureren, dat de data folder niet bereikbaar is vanaf het internet of verplaatst uw data folder naar een locatie buiten de webserver document root.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Voer één taak uit met elke pagina die wordt geladen", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php is bij een webcron dienst geregistreerd. Roep de cron.php pagina in de owncloud root via http één maal per minuut op.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Gebruik de systeem cron dienst. Gebruik, eens per minuut, het bestand cron.php in de owncloud map via de systeem cronjob.", -"Sharing" => "Delen", -"Enable Share API" => "Zet de Deel API aan", -"Allow apps to use the Share API" => "Sta apps toe om de Deel API te gebruiken", -"Allow links" => "Sta links toe", -"Allow users to share items to the public with links" => "Sta gebruikers toe om items via links publiekelijk te maken", -"Allow resharing" => "Sta verder delen toe", -"Allow users to share items shared with them again" => "Sta gebruikers toe om items nogmaals te delen", -"Allow users to share with anyone" => "Sta gebruikers toe om met iedereen te delen", -"Allow users to only share with users in their groups" => "Sta gebruikers toe om alleen met gebruikers in hun groepen te delen", -"Log" => "Log", -"More" => "Meer", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Ontwikkeld door de ownCloud gemeenschap, de bron code is gelicenseerd onder de AGPL.", -"Add your App" => "Voeg je App toe", +"Add your App" => "App toevoegen", "More Apps" => "Meer apps", "Select an App" => "Selecteer een app", "See application page at apps.owncloud.com" => "Zie de applicatiepagina op apps.owncloud.com", "-licensed by " => "-Gelicenseerd door ", "Documentation" => "Documentatie", -"Managing Big Files" => "Onderhoud van grote bestanden", +"Managing Big Files" => "Instellingen voor grote bestanden", "Ask a question" => "Stel een vraag", "Problems connecting to help database." => "Problemen bij het verbinden met de helpdatabank.", "Go there manually." => "Ga er zelf heen.", "Answer" => "Beantwoord", -"You have used %s of the available %s" => "Je hebt %s gebruikt van de beschikbare %s", -"Desktop and Mobile Syncing Clients" => "Desktop en mobiele synchronisatie apparaten", +"You have used %s of the available %s" => "U heeft %s van de %s beschikbaren gebruikt", +"Desktop and Mobile Syncing Clients" => "Desktop en mobiele synchronisatie applicaties", "Download" => "Download", "Your password was changed" => "Je wachtwoord is veranderd", "Unable to change your password" => "Niet in staat om uw wachtwoord te wijzigen", @@ -55,19 +38,20 @@ "New password" => "Nieuw wachtwoord", "show" => "weergeven", "Change password" => "Wijzig wachtwoord", -"Email" => "mailadres", -"Your email address" => "Jouw mailadres", -"Fill in an email address to enable password recovery" => "Vul een mailadres in om je wachtwoord te kunnen herstellen", +"Email" => "E-mailadres", +"Your email address" => "Uw e-mailadres", +"Fill in an email address to enable password recovery" => "Vul een e-mailadres in om wachtwoord reset uit te kunnen voeren", "Language" => "Taal", "Help translate" => "Help met vertalen", -"use this address to connect to your ownCloud in your file manager" => "gebruik dit adres om verbinding te maken met ownCloud in uw bestandsbeheerprogramma", +"use this address to connect to your ownCloud in your file manager" => "Gebruik het bovenstaande adres om verbinding te maken met ownCloud in uw bestandbeheerprogramma", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Ontwikkeld door de ownCloud gemeenschap, de bron code is gelicenseerd onder de AGPL.", "Name" => "Naam", "Password" => "Wachtwoord", "Groups" => "Groepen", "Create" => "Creëer", "Default Quota" => "Standaard limiet", "Other" => "Andere", -"Group Admin" => "Groep Administrator", +"Group Admin" => "Groep beheerder", "Quota" => "Limieten", "Delete" => "verwijderen" ); diff --git a/settings/l10n/nn_NO.php b/settings/l10n/nn_NO.php index d712f749bbf143c3a57026f57b66d3064460c9ff..5f9d7605cc6efc02b985b7e9b7675fbca7166258 100644 --- a/settings/l10n/nn_NO.php +++ b/settings/l10n/nn_NO.php @@ -1,10 +1,10 @@ "Klarer ikkje Ã¥ laste inn liste fra App Store", -"Authentication error" => "Feil i autentisering", "Email saved" => "E-postadresse lagra", "Invalid email" => "Ugyldig e-postadresse", "OpenID Changed" => "OpenID endra", "Invalid request" => "Ugyldig førespurnad", +"Authentication error" => "Feil i autentisering", "Language changed" => "SprÃ¥k endra", "Disable" => "SlÃ¥ av", "Enable" => "SlÃ¥ pÃ¥", @@ -14,6 +14,7 @@ "Problems connecting to help database." => "Problem ved tilkopling til hjelpedatabasen.", "Go there manually." => "GÃ¥ der pÃ¥ eigen hand.", "Answer" => "Svar", +"Download" => "Last ned", "Unable to change your password" => "Klarte ikkje Ã¥ endra passordet", "Current password" => "Passord", "New password" => "Nytt passord", @@ -29,6 +30,7 @@ "Password" => "Passord", "Groups" => "Grupper", "Create" => "Lag", +"Other" => "Anna", "Quota" => "Kvote", "Delete" => "Slett" ); diff --git a/settings/l10n/oc.php b/settings/l10n/oc.php index 28835df95c13256e0f29dfdfcb6e1ecd4f9dba66..f16f5cc91ae8441b9dca72b7bac592152a16f34b 100644 --- a/settings/l10n/oc.php +++ b/settings/l10n/oc.php @@ -1,6 +1,5 @@ "Pas possible de cargar la tièra dempuèi App Store", -"Authentication error" => "Error d'autentificacion", "Group already exists" => "Lo grop existís ja", "Unable to add group" => "Pas capable d'apondre un grop", "Could not enable app. " => "Pòt pas activar app. ", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID cambiat", "Invalid request" => "Demanda invalida", "Unable to delete group" => "Pas capable d'escafar un grop", +"Authentication error" => "Error d'autentificacion", "Unable to delete user" => "Pas capable d'escafar un usancièr", "Language changed" => "Lengas cambiadas", "Unable to add user to group %s" => "Pas capable d'apondre un usancièr al grop %s", @@ -17,14 +17,6 @@ "Enable" => "Activa", "Saving..." => "Enregistra...", "__language_name__" => "__language_name__", -"Security Warning" => "Avertiment de securitat", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Executa un prètfach amb cada pagina cargada", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Utiliza lo servici cron de ton sistèm operatiu. Executa lo fichièr cron.php dins lo dorsier owncloud tras cronjob del sistèm cada minuta.", -"Sharing" => "Al partejar", -"Enable Share API" => "Activa API partejada", -"Log" => "Jornal", -"More" => "Mai d'aquò", "Add your App" => "Ajusta ton App", "Select an App" => "Selecciona una applicacion", "See application page at apps.owncloud.com" => "Agacha la pagina d'applications en cò de apps.owncloud.com", @@ -35,7 +27,6 @@ "Problems connecting to help database." => "Problemas al connectar de la basa de donadas d'ajuda", "Go there manually." => "Vas çai manualament", "Answer" => "Responsa", -"You have used %s of the available %s" => "As utilizat %s dels %s disponibles", "Download" => "Avalcarga", "Your password was changed" => "Ton senhal a cambiat", "Unable to change your password" => "Pas possible de cambiar ton senhal", diff --git a/settings/l10n/pl.php b/settings/l10n/pl.php index 5ea1f022c6601d667ad57c75d0bfcf241f5ed0f5..e17e3c00e530afbe12fc0a460f3b6c278f60d84c 100644 --- a/settings/l10n/pl.php +++ b/settings/l10n/pl.php @@ -1,6 +1,5 @@ "Nie mogÄ™ zaÅ‚adować listy aplikacji", -"Authentication error" => "BÅ‚Ä…d uwierzytelniania", "Group already exists" => "Grupa już istnieje", "Unable to add group" => "Nie można dodać grupy", "Could not enable app. " => "Nie można wÅ‚Ä…czyć aplikacji.", @@ -9,32 +8,16 @@ "OpenID Changed" => "Zmieniono OpenID", "Invalid request" => "NieprawidÅ‚owe żądanie", "Unable to delete group" => "Nie można usunąć grupy", +"Authentication error" => "BÅ‚Ä…d uwierzytelniania", "Unable to delete user" => "Nie można usunąć użytkownika", "Language changed" => "JÄ™zyk zmieniony", +"Admins can't remove themself from the admin group" => "Administratorzy nie mogÄ… usunąć siÄ™ sami z grupy administratorów.", "Unable to add user to group %s" => "Nie można dodać użytkownika do grupy %s", "Unable to remove user from group %s" => "Nie można usunąć użytkownika z grupy %s", "Disable" => "WyÅ‚Ä…cz", "Enable" => "WÅ‚Ä…cz", "Saving..." => "Zapisywanie...", "__language_name__" => "Polski", -"Security Warning" => "Ostrzeżenia bezpieczeÅ„stwa", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Twój katalog danych i pliki sÄ… prawdopodobnie dostÄ™pne z Internetu. Plik .htaccess, który dostarcza ownCloud nie dziaÅ‚a. Sugerujemy, aby skonfigurować serwer WWW w taki sposób, aby katalog danych nie byÅ‚ dostÄ™pny lub przenieść katalog danych poza główny katalog serwera WWW.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Wykonanie jednego zadania z każdej strony wczytywania", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php jest zarejestrowany w usÅ‚udze webcron. PrzywoÅ‚aj stronÄ™ cron.php w katalogu głównym owncloud raz na minute przez http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Użyj usÅ‚ugi systemowej cron. PrzywoÅ‚aj plik cron.php z katalogu owncloud przez systemowe cronjob raz na minute.", -"Sharing" => "UdostÄ™pnianij", -"Enable Share API" => "WÅ‚Ä…cz udostÄ™pniane API", -"Allow apps to use the Share API" => "Zezwalaj aplikacjom na używanie API", -"Allow links" => "Zezwalaj na Å‚Ä…cza", -"Allow users to share items to the public with links" => "Zezwalaj użytkownikom na puliczne współdzielenie elementów za pomocÄ… linków", -"Allow resharing" => "Zezwól na ponowne udostÄ™pnianie", -"Allow users to share items shared with them again" => "Zezwalaj użytkownikom na ponowne współdzielenie elementów już z nimi współdzilonych", -"Allow users to share with anyone" => "Zezwalaj użytkownikom na współdzielenie z kimkolwiek", -"Allow users to only share with users in their groups" => "Zezwalaj użytkownikom współdzielić z użytkownikami ze swoich grup", -"Log" => "Log", -"More" => "WiÄ™cej", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Stwirzone przez spoÅ‚eczność ownCloud, the kod źródÅ‚owy na licencji AGPL.", "Add your App" => "Dodaj aplikacje", "More Apps" => "WiÄ™cej aplikacji", "Select an App" => "Zaznacz aplikacje", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problem z poÅ‚Ä…czeniem z bazÄ… danych.", "Go there manually." => "Przejdź na stronÄ™ rÄ™cznie.", "Answer" => "Odpowiedź", -"You have used %s of the available %s" => "Używasz %s z dostÄ™pnych %s", +"You have used %s of the available %s" => "Korzystasz z %s z dostÄ™pnych %s", "Desktop and Mobile Syncing Clients" => "Klienci synchronizacji", "Download" => "ÅšciÄ…gnij", "Your password was changed" => "Twoje hasÅ‚o zostaÅ‚o zmienione", @@ -61,6 +44,7 @@ "Language" => "JÄ™zyk", "Help translate" => "Pomóż w tÅ‚umaczeniu", "use this address to connect to your ownCloud in your file manager" => "ProszÄ™ użyć tego adresu, aby uzyskać dostÄ™p do usÅ‚ugi ownCloud w menedżerze plików.", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Stwirzone przez spoÅ‚eczność ownCloud, the kod źródÅ‚owy na licencji AGPL.", "Name" => "Nazwa", "Password" => "HasÅ‚o", "Groups" => "Grupy", diff --git a/settings/l10n/pl_PL.php b/settings/l10n/pl_PL.php new file mode 100644 index 0000000000000000000000000000000000000000..ab81cb23465c623f91549f3f722e0e7dc5360e45 --- /dev/null +++ b/settings/l10n/pl_PL.php @@ -0,0 +1,3 @@ + "Email" +); diff --git a/settings/l10n/pt_BR.php b/settings/l10n/pt_BR.php index 7ca5160d9a8e4e617fdf2ef7d2ea3930218c7e9b..d09e867f7f26563b60c7222dac40ea6c3c60e315 100644 --- a/settings/l10n/pt_BR.php +++ b/settings/l10n/pt_BR.php @@ -1,6 +1,5 @@ "Não foi possivel carregar lista da App Store", -"Authentication error" => "erro de autenticação", "Group already exists" => "Grupo já existe", "Unable to add group" => "Não foi possivel adicionar grupo", "Could not enable app. " => "Não pôde habilitar aplicação", @@ -9,32 +8,16 @@ "OpenID Changed" => "Mudou OpenID", "Invalid request" => "Pedido inválido", "Unable to delete group" => "Não foi possivel remover grupo", +"Authentication error" => "erro de autenticação", "Unable to delete user" => "Não foi possivel remover usuário", "Language changed" => "Mudou Idioma", +"Admins can't remove themself from the admin group" => "Admins não podem se remover do grupo admin", "Unable to add user to group %s" => "Não foi possivel adicionar usuário ao grupo %s", "Unable to remove user from group %s" => "Não foi possivel remover usuário ao grupo %s", "Disable" => "Desabilitado", "Enable" => "Habilitado", "Saving..." => "Gravando...", "__language_name__" => "Português", -"Security Warning" => "Aviso de Segurança", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Seu diretório de dados e seus arquivos estão, provavelmente, acessíveis a partir da internet. O .htaccess que o ownCloud fornece não está funcionando. Nós sugerimos que você configure o seu servidor web de uma forma que o diretório de dados esteja mais acessível ou que você mova o diretório de dados para fora da raiz do servidor web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Executa uma tarefa com cada página carregada", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php está registrado no serviço webcron. Chama a página cron.php na raíz do owncloud uma vez por minuto via http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Usa o serviço cron do sistema. Chama o arquivo cron.php na pasta do owncloud através do cronjob do sistema uma vez a cada minuto.", -"Sharing" => "Compartilhamento", -"Enable Share API" => "Habilitar API de Compartilhamento", -"Allow apps to use the Share API" => "Permitir aplicações a usar a API de Compartilhamento", -"Allow links" => "Permitir links", -"Allow users to share items to the public with links" => "Permitir usuários a compartilhar itens para o público com links", -"Allow resharing" => "Permitir re-compartilhamento", -"Allow users to share items shared with them again" => "Permitir usuário a compartilhar itens compartilhados com eles novamente", -"Allow users to share with anyone" => "Permitir usuários a compartilhar com qualquer um", -"Allow users to only share with users in their groups" => "Permitir usuários a somente compartilhar com usuários em seus respectivos grupos", -"Log" => "Log", -"More" => "Mais", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desenvolvido pela comunidade ownCloud, o código fonte está licenciado sob AGPL.", "Add your App" => "Adicione seu Aplicativo", "More Apps" => "Mais Apps", "Select an App" => "Selecione uma Aplicação", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problemas ao conectar na base de dados.", "Go there manually." => "Ir manualmente.", "Answer" => "Resposta", -"You have used %s of the available %s" => "Você usou %s do espaço disponível de %s ", +"You have used %s of the available %s" => "Você usou %s do seu espaço de %s", "Desktop and Mobile Syncing Clients" => "Sincronizando Desktop e Mobile", "Download" => "Download", "Your password was changed" => "Sua senha foi alterada", @@ -61,6 +44,7 @@ "Language" => "Idioma", "Help translate" => "Ajude a traduzir", "use this address to connect to your ownCloud in your file manager" => "use este endereço para se conectar ao seu ownCloud no seu gerenciador de arquvos", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desenvolvido pela comunidade ownCloud, o código fonte está licenciado sob AGPL.", "Name" => "Nome", "Password" => "Senha", "Groups" => "Grupos", diff --git a/settings/l10n/pt_PT.php b/settings/l10n/pt_PT.php index a5eb8c399bee4c6792ebbb8a8cf2da5b2b36b02b..96d9ac67ac4db05243d1bc613e931dde34806fd3 100644 --- a/settings/l10n/pt_PT.php +++ b/settings/l10n/pt_PT.php @@ -1,6 +1,5 @@ "Incapaz de carregar a lista da App Store", -"Authentication error" => "Erro de autenticação", "Group already exists" => "O grupo já existe", "Unable to add group" => "Impossível acrescentar o grupo", "Could not enable app. " => "Não foi possível activar a app.", @@ -9,32 +8,16 @@ "OpenID Changed" => "OpenID alterado", "Invalid request" => "Pedido inválido", "Unable to delete group" => "Impossível apagar grupo", +"Authentication error" => "Erro de autenticação", "Unable to delete user" => "Impossível apagar utilizador", "Language changed" => "Idioma alterado", +"Admins can't remove themself from the admin group" => "Os administradores não se podem remover a eles mesmos do grupo admin.", "Unable to add user to group %s" => "Impossível acrescentar utilizador ao grupo %s", "Unable to remove user from group %s" => "Impossível apagar utilizador do grupo %s", "Disable" => "Desactivar", "Enable" => "Activar", "Saving..." => "A guardar...", "__language_name__" => "__language_name__", -"Security Warning" => "Aviso de Segurança", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "A sua pasta com os dados e os seus ficheiros estão provavelmente acessíveis a partir das internet. Sugerimos veementemente que configure o seu servidor web de maneira a que a pasta com os dados deixe de ficar acessível, ou mova a pasta com os dados para fora da raiz de documentos do servidor web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Executar uma tarefa ao carregar cada página", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php está registado num serviço webcron. Chame a página cron.php na raiz owncloud por http uma vez por minuto.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Usar o serviço cron do sistema. Chame a página cron.php na pasta owncloud via um cronjob do sistema uma vez por minuto.", -"Sharing" => "Partilhando", -"Enable Share API" => "Activar API de partilha", -"Allow apps to use the Share API" => "Permitir que as aplicações usem a API de partilha", -"Allow links" => "Permitir ligações", -"Allow users to share items to the public with links" => "Permitir que os utilizadores partilhem itens com o público com ligações", -"Allow resharing" => "Permitir voltar a partilhar", -"Allow users to share items shared with them again" => "Permitir que os utilizadores partilhem itens que foram partilhados com eles", -"Allow users to share with anyone" => "Permitir que os utilizadores partilhem com toda a gente", -"Allow users to only share with users in their groups" => "Permitir que os utilizadores apenas partilhem com utilizadores do seu grupo", -"Log" => "Log", -"More" => "Mais", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desenvolvido pela comunidade ownCloud, ocódigo fonte está licenciado sob a AGPL.", "Add your App" => "Adicione a sua aplicação", "More Apps" => "Mais Aplicações", "Select an App" => "Selecione uma aplicação", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problemas ao ligar à base de dados de ajuda", "Go there manually." => "Vá lá manualmente", "Answer" => "Resposta", -"You have used %s of the available %s" => "Usou %s dos %s disponíveis.", +"You have used %s of the available %s" => "Usou %s do disponivel %s", "Desktop and Mobile Syncing Clients" => "Clientes de sincronização desktop e móvel", "Download" => "Transferir", "Your password was changed" => "A sua palavra-passe foi alterada", @@ -61,6 +44,7 @@ "Language" => "Idioma", "Help translate" => "Ajude a traduzir", "use this address to connect to your ownCloud in your file manager" => "utilize este endereço para ligar ao seu ownCloud através do seu gestor de ficheiros", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Desenvolvido pela comunidade ownCloud, ocódigo fonte está licenciado sob a AGPL.", "Name" => "Nome", "Password" => "Palavra-chave", "Groups" => "Grupos", diff --git a/settings/l10n/ro.php b/settings/l10n/ro.php index ee0d804716b31a2f4bb4a8bb673c81bbcb1ad3ae..deabed6f803093851584b08ea902fcb016a96b2b 100644 --- a/settings/l10n/ro.php +++ b/settings/l10n/ro.php @@ -1,6 +1,5 @@ "Imposibil de încărcat lista din App Store", -"Authentication error" => "Eroare de autentificare", "Group already exists" => "Grupul există deja", "Unable to add group" => "Nu s-a putut adăuga grupul", "Could not enable app. " => "Nu s-a putut activa aplicaÈ›ia.", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID schimbat", "Invalid request" => "Cerere eronată", "Unable to delete group" => "Nu s-a putut È™terge grupul", +"Authentication error" => "Eroare de autentificare", "Unable to delete user" => "Nu s-a putut È™terge utilizatorul", "Language changed" => "Limba a fost schimbată", "Unable to add user to group %s" => "Nu s-a putut adăuga utilizatorul la grupul %s", @@ -17,24 +17,6 @@ "Enable" => "ActivaÈ›i", "Saving..." => "Salvez...", "__language_name__" => "_language_name_", -"Security Warning" => "Avertisment de securitate", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Directorul tău de date È™i fiÈ™ierele tale probabil sunt accesibile prin internet. FiÈ™ierul .htaccess oferit de ownCloud nu funcÈ›ionează. ÃŽÈ›i recomandăm să configurezi server-ul tău web într-un mod în care directorul de date să nu mai fie accesibil sau mută directorul de date în afara directorului root al server-ului web.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Execută o sarcină la fiecare pagină încărcată", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php este înregistrat în serviciul webcron. Accesează pagina cron.php din root-ul owncloud odată pe minut prin http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "FoloseÈ™te serviciul cron al sistemului. Accesează fiÈ™ierul cron.php din directorul owncloud printr-un cronjob de sistem odată la fiecare minut.", -"Sharing" => "Partajare", -"Enable Share API" => "Activare API partajare", -"Allow apps to use the Share API" => "Permite aplicaÈ›iilor să folosească API-ul de partajare", -"Allow links" => "Pemite legături", -"Allow users to share items to the public with links" => "Permite utilizatorilor să partajeze fiÈ™iere în mod public prin legături", -"Allow resharing" => "Permite repartajarea", -"Allow users to share items shared with them again" => "Permite utilizatorilor să repartajeze fiÈ™iere partajate cu ei", -"Allow users to share with anyone" => "Permite utilizatorilor să partajeze cu oricine", -"Allow users to only share with users in their groups" => "Permite utilizatorilor să partajeze doar cu utilizatori din acelaÈ™i grup", -"Log" => "Jurnal de activitate", -"More" => "Mai mult", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Dezvoltat de the comunitatea ownCloud, codul sursă este licenÈ›iat sub AGPL.", "Add your App" => "Adaugă aplicaÈ›ia ta", "Select an App" => "Selectează o aplicaÈ›ie", "See application page at apps.owncloud.com" => "Vizualizează pagina applicaÈ›iei pe apps.owncloud.com", @@ -45,7 +27,6 @@ "Problems connecting to help database." => "Probleme de conectare la baza de date.", "Go there manually." => "Pe cale manuală.", "Answer" => "Răspuns", -"You have used %s of the available %s" => "Ai utilizat %s din %s spaÈ›iu disponibil", "Desktop and Mobile Syncing Clients" => "ClienÈ›i de sincronizare pentru telefon mobil È™i desktop", "Download" => "Descărcări", "Your password was changed" => "Parola a fost modificată", @@ -60,6 +41,7 @@ "Language" => "Limba", "Help translate" => "Ajută la traducere", "use this address to connect to your ownCloud in your file manager" => "foloseÈ™te această adresă pentru a te conecta la managerul tău de fiÈ™iere din ownCloud", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Dezvoltat de the comunitatea ownCloud, codul sursă este licenÈ›iat sub AGPL.", "Name" => "Nume", "Password" => "Parolă", "Groups" => "Grupuri", diff --git a/settings/l10n/ru.php b/settings/l10n/ru.php index b658a4bbafb771e786270c284ff158c0716e76a0..126cc3fcd08eb63303aa7b9e133118414caf5543 100644 --- a/settings/l10n/ru.php +++ b/settings/l10n/ru.php @@ -1,13 +1,14 @@ "Загрузка из App Store запрещена", -"Authentication error" => "Ошибка авторизации", "Group already exists" => "Группа уже ÑущеÑтвует", "Unable to add group" => "Ðевозможно добавить группу", +"Could not enable app. " => "Ðе удалоÑÑŒ включить приложение.", "Email saved" => "Email Ñохранен", "Invalid email" => "Ðеправильный Email", "OpenID Changed" => "OpenID изменён", "Invalid request" => "Ðеверный запроÑ", "Unable to delete group" => "Ðевозможно удалить группу", +"Authentication error" => "Ошибка авторизации", "Unable to delete user" => "Ðевозможно удалить пользователÑ", "Language changed" => "Язык изменён", "Unable to add user to group %s" => "Ðевозможно добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу %s", @@ -16,21 +17,8 @@ "Enable" => "Включить", "Saving..." => "Сохранение...", "__language_name__" => "РуÑÑкий ", -"Security Warning" => "Предупреждение безопаÑноÑти", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Похоже, что каталог data и ваши файлы в нем доÑтупны из интернета. ПредоÑтавлÑемый ownCloud файл htaccess не работает. ÐаÑтоÑтельно рекомендуем наÑтроить Ñервер таким образом, чтобы закрыть доÑтуп к каталогу data или вынеÑти каталог data за пределы корневого каталога веб-Ñервера.", -"Cron" => "Задание", -"Enable Share API" => "Включить API публикации", -"Allow apps to use the Share API" => "Разрешить API публикации Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹", -"Allow links" => "Разрешить ÑÑылки", -"Allow users to share items to the public with links" => "Разрешить пользователÑм публикацию при помощи ÑÑылок", -"Allow resharing" => "Включить повторную публикацию", -"Allow users to share items shared with them again" => "Разрешить пользователÑм публиковать доÑтупные им Ñлементы других пользователей", -"Allow users to share with anyone" => "Разрешить публиковать Ð´Ð»Ñ Ð»ÑŽÐ±Ñ‹Ñ… пользователей", -"Allow users to only share with users in their groups" => "Ограничить публикацию группами пользователÑ", -"Log" => "Журнал", -"More" => "Ещё", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "РазрабатываетÑÑ ÑообщеÑтвом ownCloud, иÑходный код доÑтупен под лицензией AGPL.", "Add your App" => "Добавить приложение", +"More Apps" => "Больше приложений", "Select an App" => "Выберите приложение", "See application page at apps.owncloud.com" => "Смотрите Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð° apps.owncloud.com", "-licensed by " => " лицензиÑ. Ðвтор ", @@ -40,8 +28,10 @@ "Problems connecting to help database." => "Проблема ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð±Ð°Ð·Ð¾Ð¹ данных помощи.", "Go there manually." => "Войти ÑамоÑтоÑтельно.", "Answer" => "Ответ", +"You have used %s of the available %s" => "Ð’Ñ‹ иÑпользовали %s из доÑтупных %s", "Desktop and Mobile Syncing Clients" => "Клиенты Ñинхронизации Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ñ… Ñтанций и мобильных уÑтройÑтв", "Download" => "Загрузка", +"Your password was changed" => "Ваш пароль изменён", "Unable to change your password" => "Ðевозможно Ñменить пароль", "Current password" => "Текущий пароль", "New password" => "Ðовый пароль", @@ -53,6 +43,7 @@ "Language" => "Язык", "Help translate" => "Помочь Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð¼", "use this address to connect to your ownCloud in your file manager" => "иÑпользуйте данный Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº ownCloud в вашем файловом менеджере", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "РазрабатываетÑÑ ÑообщеÑтвом ownCloud, иÑходный код доÑтупен под лицензией AGPL.", "Name" => "ИмÑ", "Password" => "Пароль", "Groups" => "Группы", diff --git a/settings/l10n/ru_RU.php b/settings/l10n/ru_RU.php index e94c371fe4c7f704b66a4596ae3990928ce2681a..83eb603ba3d5a317242b4628358f058607bc8307 100644 --- a/settings/l10n/ru_RU.php +++ b/settings/l10n/ru_RU.php @@ -1,6 +1,5 @@ "Ðевозможно загрузить ÑпиÑок из App Store", -"Authentication error" => "Ошибка авторизации", "Group already exists" => "Группа уже ÑущеÑтвует", "Unable to add group" => "Ðевозможно добавить группу", "Could not enable app. " => "Ðе удалоÑÑŒ запуÑтить приложение", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID изменен", "Invalid request" => "Ðеверный запроÑ", "Unable to delete group" => "Ðевозможно удалить группу", +"Authentication error" => "Ошибка авторизации", "Unable to delete user" => "Ðевозможно удалить пользователÑ", "Language changed" => "Язык изменен", "Unable to add user to group %s" => "Ðевозможно добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу %s", @@ -17,23 +17,6 @@ "Enable" => "Включить", "Saving..." => "Сохранение", "__language_name__" => "__Ñзык_имÑ__", -"Security Warning" => "Предупреждение ÑиÑтемы безопаÑноÑти", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ваш каталог данных и файлы возможно доÑтупны из Интернета. Файл .htaccess, предоÑтавлÑемый ownCloud, не работает. Мы наÑтоÑтельно рекомендуем Вам наÑтроить Ñервер таким образом, чтобы каталог данных был бы больше не доÑтупен, или перемеÑтить каталог данных за пределы корневой папки веб-Ñервера.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "ВыполнÑйте одну задачу на каждой загружаемой Ñтранице", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php зарегиÑтрирован в Ñлужбе webcron. ОбращайтеÑÑŒ к Ñтранице cron.php в корне owncloud раз в минуту по http.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "ИÑпользуйте ÑиÑтемный ÑÐµÑ€Ð²Ð¸Ñ cron. ИÑполнÑйте файл cron.php в папке owncloud Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑиÑтемы cronjob раз в минуту.", -"Sharing" => "СовмеÑтное иÑпользование", -"Enable Share API" => "Включить разделÑемые API", -"Allow apps to use the Share API" => "Разрешить приложениÑм иÑпользовать Share API", -"Allow links" => "ПредоÑтавить ÑÑылки", -"Allow users to share items to the public with links" => "ПозволÑет пользователÑм добавлÑÑ‚ÑŒ объекты в общий доÑтуп по ÑÑылке", -"Allow resharing" => "Разрешить повторное ÑовмеÑтное иÑпользование", -"Allow users to share with anyone" => "Разрешить пользователÑм разделение Ñ ÐºÐµÐ¼-либо", -"Allow users to only share with users in their groups" => "Разрешить пользователÑм разделение только Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми в их группах", -"Log" => "Вход", -"More" => "Подробнее", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Разработанный ownCloud community, the source code is licensed under the AGPL.", "Add your App" => "Добавить Ваше приложение", "More Apps" => "Больше приложений", "Select an App" => "Выбрать приложение", @@ -45,7 +28,7 @@ "Problems connecting to help database." => "Проблемы, ÑвÑзанные Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ Помощь базы данных", "Go there manually." => "Сделать вручную.", "Answer" => "Ответ", -"You have used %s of the available %s" => "Ð’Ñ‹ иÑпользовали %s из доÑтупных%s", +"You have used %s of the available %s" => "Ð’Ñ‹ иÑпользовали %s из возможных %s", "Desktop and Mobile Syncing Clients" => "Клиенты Ñинхронизации наÑтольной и мобильной ÑиÑтем", "Download" => "Загрузка", "Your password was changed" => "Ваш пароль был изменен", @@ -60,6 +43,7 @@ "Language" => "Язык", "Help translate" => "Помогите перевеÑти", "use this address to connect to your ownCloud in your file manager" => "ИÑпользуйте Ñтот Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð’Ð°ÑˆÐ¸Ð¼ ownCloud в файловом менеджере", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Разработанный ownCloud community, the source code is licensed under the AGPL.", "Name" => "ИмÑ", "Password" => "Пароль", "Groups" => "Группы", diff --git a/settings/l10n/si_LK.php b/settings/l10n/si_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..13bd1762d423257377ea7be9844e68ff4eb23edd --- /dev/null +++ b/settings/l10n/si_LK.php @@ -0,0 +1,50 @@ + "කණ්ඩà·à¶ºà¶¸ දà·à¶±à¶§à¶¸à¶­à·Š තිබේ", +"Unable to add group" => "කà·à¶«à¶©à¶ºà¶šà·Š එක් කළ නොහà·à¶šà·’ විය", +"Could not enable app. " => "යෙදුම සක්â€à¶»à·“ය කළ නොහà·à¶šà·’ විය.", +"Email saved" => "වි-තà·à¶´à·‘ල සුරකින ලදී", +"Invalid email" => "අවලංගු වි-තà·à¶´à·‘ල", +"OpenID Changed" => "විවෘත à·„à·à¶³à·”නුම නà·à¶­à·„ොත් OpenID වෙනස්විය.", +"Invalid request" => "අවලංගු අයදුම", +"Unable to delete group" => "කණ්ඩà·à¶ºà¶¸ මà·à¶šà·“මට නොහà·à¶š", +"Authentication error" => "සත්â€à¶ºà·à¶´à¶± දà·à·‚යක්", +"Unable to delete user" => "පරිà·à·“ලකය෠මà·à¶šà·“මට නොහà·à¶š", +"Language changed" => "භà·à·‚à·à·€ à·à·€à¶±à·ƒà·Š කිරීම", +"Unable to add user to group %s" => "පරිà·à·“ලකය෠%s කණ්ඩà·à¶ºà¶¸à¶§ එකතු කළ නොහà·à¶š", +"Unable to remove user from group %s" => "පරිà·à·“ලකය෠%s කණ්ඩà·à¶ºà¶¸à·’න් ඉවත් කළ නොහà·à¶š", +"Disable" => "අක්â€à¶»à·’ය කරන්න", +"Enable" => "ක්â€à¶»à·’යත්මක කරන්න", +"Saving..." => "සුරà·à¶šà·™à¶¸à·’න් පවතී...", +"Add your App" => "යෙදුමක් එක් කිරීම", +"More Apps" => "තවත් යෙදුම්", +"Select an App" => "යෙදුමක් තොරන්න", +"Documentation" => "ලේඛන", +"Managing Big Files" => "විà·à·à¶½ ගොනු කළමණà·à¶šà¶»à¶±à¶º", +"Ask a question" => "ප්â€à¶»à·à·Šà¶«à¶ºà¶šà·Š අසන්න", +"Problems connecting to help database." => "උදව් දත්ත ගබඩà·à·€ හ෠සම්බන්ධවීමේදී ගà·à¶§à·…à·” ඇතිවිය.", +"Go there manually." => "ස්වà·à¶šà·Šà¶­à·’යෙන් එතà·à¶±à¶§ යන්න", +"Answer" => "පිළිතුර", +"Download" => "භà·à¶œà¶­ කරන්න", +"Your password was changed" => "ඔබගේ මුර පදය වෙනස් කෙරුණි", +"Unable to change your password" => "මුර පදය වෙනස් කළ නොහà·à¶šà·’ විය", +"Current password" => "වත්මන් මුරපදය", +"New password" => "නව මුරපදය", +"show" => "ප්â€à¶»à¶¯à¶»à·Šà·à¶±à¶º කිරීම", +"Change password" => "මුරපදය වෙනස් කිරීම", +"Email" => "විද්â€à¶ºà·”ත් තà·à¶´à·‘ල", +"Your email address" => "ඔබගේ විද්â€à¶ºà·”ත් තà·à¶´à·‘ල", +"Fill in an email address to enable password recovery" => "මුරපද ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º සඳහ෠විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š විස්තර ලබ෠දෙන්න", +"Language" => "භà·à·‚à·à·€", +"Help translate" => "පරිවර්ථන සහය", +"use this address to connect to your ownCloud in your file manager" => "ඔබගේ ගොනු කළමනà·à¶šà¶»à·” ownCloudයට සම්බන්ධ කිරීමට මෙම ලිපිනය භà·à·€à·’ත෠කරන්න", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "නිපදන ලද්දේ ownCloud සමà·à¶¢à¶ºà·™à¶±à·Š, the මුල් කේතය ලයිසන්ස් කර ඇත්තේ AGPL යටතේ.", +"Name" => "නà·à¶¸à¶º", +"Password" => "මුරපදය", +"Groups" => "සමූහය", +"Create" => "තනන්න", +"Default Quota" => "à·ƒà·à¶¸à·à¶±à·Šâ€à¶º සලà·à¶šà¶º", +"Other" => "වෙනත්", +"Group Admin" => "කà·à¶«à·Šà¶© පරිපà·à¶½à¶š", +"Quota" => "සලà·à¶šà¶º", +"Delete" => "මක෠දමනවà·" +); diff --git a/settings/l10n/sk_SK.php b/settings/l10n/sk_SK.php index 4dd824a8088d75d1fa9eeaf61d3174ddc1ef0fb5..179cbe250b5d4220668d245cd87d3c2bd421fa04 100644 --- a/settings/l10n/sk_SK.php +++ b/settings/l10n/sk_SK.php @@ -1,6 +1,5 @@ "Nie je možné nahraÅ¥ zoznam z App Store", -"Authentication error" => "Chyba pri autentifikácii", "Group already exists" => "Skupina už existuje", "Unable to add group" => "Nie je možné pridaÅ¥ skupinu", "Could not enable app. " => "Nie je možné zapnúť aplikáciu.", @@ -8,45 +7,33 @@ "Invalid email" => "Neplatný email", "OpenID Changed" => "OpenID zmenené", "Invalid request" => "Neplatná požiadavka", -"Unable to delete group" => "Nie je možné zmazaÅ¥ skupinu", -"Unable to delete user" => "Nie je možné zmazaÅ¥ užívateľa", +"Unable to delete group" => "Nie je možné odstrániÅ¥ skupinu", +"Authentication error" => "Chyba pri autentifikácii", +"Unable to delete user" => "Nie je možné odstrániÅ¥ používateľa", "Language changed" => "Jazyk zmenený", +"Admins can't remove themself from the admin group" => "Administrátori nesmú odstrániÅ¥ sami seba zo skupiny admin", "Unable to add user to group %s" => "Nie je možné pridaÅ¥ užívateľa do skupiny %s", -"Unable to remove user from group %s" => "Nie je možné zmazaÅ¥ užívateľa zo skupiny %s", +"Unable to remove user from group %s" => "Nie je možné odstrániÅ¥ používateľa zo skupiny %s", "Disable" => "ZakázaÅ¥", "Enable" => "PovoliÅ¥", "Saving..." => "Ukladám...", "__language_name__" => "Slovensky", -"Security Warning" => "BezpeÄnostné varovanie", -"Execute one task with each page loaded" => "VykonaÅ¥ jednu úlohu každým nahraním stránky", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "PoužívaÅ¥ systémovú službu cron. Každú minútu bude spustený súbor cron.php v prieÄinku owncloud pomocou systémového programu cronjob.", -"Sharing" => "Zdieľanie", -"Enable Share API" => "Zapnúť API zdieľania", -"Allow apps to use the Share API" => "PovoliÅ¥ aplikáciam používaÅ¥ API pre zdieľanie", -"Allow links" => "PovoliÅ¥ odkazy", -"Allow users to share items to the public with links" => "PovoliÅ¥ užívateľom zdieľaÅ¥ obsah pomocou verejných odkazov", -"Allow resharing" => "PovoliÅ¥ opakované zdieľanie", -"Allow users to share items shared with them again" => "PovoliÅ¥ zdieľanie zdielaného obsahu iného užívateľa", -"Allow users to share with anyone" => "PovoliÅ¥ užívateľom zdieľaÅ¥ s každým", -"Allow users to only share with users in their groups" => "PovoliÅ¥ užívateľom zdieľanie iba s užívateľmi ich vlastnej skupiny", -"Log" => "Záznam", -"More" => "Viac", "Add your App" => "PridaÅ¥ vaÅ¡u aplikáciu", "More Apps" => "Viac aplikácií", "Select an App" => "Vyberte aplikáciu", -"See application page at apps.owncloud.com" => "Pozrite si stránku aplikácie na apps.owncloud.com", +"See application page at apps.owncloud.com" => "Pozrite si stránku aplikácií na apps.owncloud.com", "-licensed by " => "-licencované ", "Documentation" => "Dokumentácia", -"Managing Big Files" => "Spravovanie veľké súbory", -"Ask a question" => "Opýtajte sa otázku", -"Problems connecting to help database." => "Problémy spojené s pomocnou databázou.", +"Managing Big Files" => "Správa veľkých súborov", +"Ask a question" => "OpýtaÅ¥ sa otázku", +"Problems connecting to help database." => "Problémy s pripojením na databázu pomocníka.", "Go there manually." => "PrejsÅ¥ tam ruÄne.", "Answer" => "OdpoveÄ", -"You have used %s of the available %s" => "Použili ste %s dostupného %s", +"You have used %s of the available %s" => "Použili ste %s z %s dostupných ", "Desktop and Mobile Syncing Clients" => "Klienti pre synchronizáciu", "Download" => "Stiahnúť", "Your password was changed" => "Heslo bolo zmenené", -"Unable to change your password" => "Nedokážem zmeniÅ¥ vaÅ¡e heslo", +"Unable to change your password" => "Nie je možné zmeniÅ¥ vaÅ¡e heslo", "Current password" => "Aktuálne heslo", "New password" => "Nové heslo", "show" => "zobraziÅ¥", @@ -57,6 +44,7 @@ "Language" => "Jazyk", "Help translate" => "PomôcÅ¥ s prekladom", "use this address to connect to your ownCloud in your file manager" => "použite túto adresu pre spojenie s vaším ownCloud v správcovi súborov", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Vyvinuté komunitou ownCloud,zdrojový kód je licencovaný pod AGPL.", "Name" => "Meno", "Password" => "Heslo", "Groups" => "Skupiny", diff --git a/settings/l10n/sl.php b/settings/l10n/sl.php index 7f23d9dbc917d14ba64a4a8680fe4cdbdf41a5f8..9c65b17cee121e432109c4419233534bd4cf9c57 100644 --- a/settings/l10n/sl.php +++ b/settings/l10n/sl.php @@ -1,72 +1,56 @@ "Ne morem naložiti seznama iz App Store", -"Authentication error" => "Napaka overitve", +"Unable to load list from App Store" => "Ni mogoÄe naložiti seznama iz App Store", "Group already exists" => "Skupina že obstaja", "Unable to add group" => "Ni mogoÄe dodati skupine", -"Could not enable app. " => "Aplikacije ni bilo mogoÄe omogoÄiti.", -"Email saved" => "E-poÅ¡tni naslov je bil shranjen", -"Invalid email" => "Neveljaven e-poÅ¡tni naslov", +"Could not enable app. " => "Programa ni mogoÄe omogoÄiti.", +"Email saved" => "Elektronski naslov je shranjen", +"Invalid email" => "Neveljaven elektronski naslov", "OpenID Changed" => "OpenID je bil spremenjen", -"Invalid request" => "Neveljaven zahtevek", +"Invalid request" => "Neveljavna zahteva", "Unable to delete group" => "Ni mogoÄe izbrisati skupine", +"Authentication error" => "Napaka overitve", "Unable to delete user" => "Ni mogoÄe izbrisati uporabnika", "Language changed" => "Jezik je bil spremenjen", "Unable to add user to group %s" => "Uporabnika ni mogoÄe dodati k skupini %s", "Unable to remove user from group %s" => "Uporabnika ni mogoÄe odstraniti iz skupine %s", "Disable" => "OnemogoÄi", "Enable" => "OmogoÄi", -"Saving..." => "Shranjevanje...", +"Saving..." => "Poteka shranjevanje ...", "__language_name__" => "__ime_jezika__", -"Security Warning" => "Varnostno opozorilo", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "VaÅ¡a mapa data in vaÅ¡e datoteke so verjetno vsem dostopne preko interneta. Datoteka .htaccess vkljuÄena v ownCloud ni omogoÄena. MoÄno vam priporoÄamo, da nastavite vaÅ¡ spletni strežnik tako, da mapa data ne bo veÄ na voljo vsem, ali pa jo preselite izven korenske mape spletnega strežnika.", -"Cron" => "PeriodiÄno opravilo", -"Execute one task with each page loaded" => "Izvede eno opravilo z vsako naloženo stranjo.", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "Datoteka cron.php je prijavljena pri enem od spletnih servisov za periodiÄna opravila. Preko protokola http pokliÄite datoteko cron.php, ki se nahaja v ownCloud korenski mapi, enkrat na minuto.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Uporabi sistemski servis za periodiÄna opravila. Preko sistemskega servisa pokliÄite datoteko cron.php, ki se nahaja v ownCloud korenski mapi, enkrat na minuto.", -"Sharing" => "Souporaba", -"Enable Share API" => "OmogoÄi API souporabe", -"Allow apps to use the Share API" => "Aplikacijam dovoli uporabo API-ja souporabe", -"Allow links" => "Dovoli povezave", -"Allow users to share items to the public with links" => "Uporabnikom dovoli souporabo z javnimi povezavami", -"Allow resharing" => "Dovoli nadaljnjo souporabo", -"Allow users to share items shared with them again" => "Uporabnikom dovoli nadaljnjo souporabo", -"Allow users to share with anyone" => "Uporabnikom dovoli souporabo s komerkoli", -"Allow users to only share with users in their groups" => "Uporabnikom dovoli souporabo le znotraj njihove skupine", -"Log" => "Dnevnik", -"More" => "VeÄ", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Razvija ga ownCloud skupnost. Izvorna koda je izdana pod licenco AGPL.", -"Add your App" => "Dodajte vaÅ¡o aplikacijo", -"Select an App" => "Izberite aplikacijo", -"See application page at apps.owncloud.com" => "ObiÅ¡Äite spletno stran aplikacije na apps.owncloud.com", -"-licensed by " => "-licencirana s strani ", +"Add your App" => "Dodaj program", +"More Apps" => "VeÄ programov", +"Select an App" => "Izberite program", +"See application page at apps.owncloud.com" => "ObiÅ¡Äite spletno stran programa na apps.owncloud.com", +"-licensed by " => "-z dovoljenjem s strani ", "Documentation" => "Dokumentacija", "Managing Big Files" => "Upravljanje velikih datotek", -"Ask a question" => "Postavi vpraÅ¡anje", -"Problems connecting to help database." => "Težave pri povezovanju s podatkovno zbirko pomoÄi.", -"Go there manually." => "Pojdi tja roÄno.", +"Ask a question" => "Zastavi vpraÅ¡anje", +"Problems connecting to help database." => "Težave med povezovanjem s podatkovno zbirko pomoÄi.", +"Go there manually." => "Ustvari povezavo roÄno.", "Answer" => "Odgovor", -"You have used %s of the available %s" => "Uporabili ste %s od razpoložljivih %s", -"Desktop and Mobile Syncing Clients" => "Namizni in mobilni odjemalci za sinhronizacijo", -"Download" => "Prenesi", -"Your password was changed" => "VaÅ¡e geslo je bilo spremenjeno", -"Unable to change your password" => "VaÅ¡ega gesla ni bilo mogoÄe spremeniti.", +"You have used %s of the available %s" => "Uporabljate %s od razpoložljivih %s", +"Desktop and Mobile Syncing Clients" => "Namizni in mobilni odjemalci za usklajevanje", +"Download" => "Prejmi", +"Your password was changed" => "VaÅ¡e geslo je spremenjeno", +"Unable to change your password" => "Gesla ni mogoÄe spremeniti.", "Current password" => "Trenutno geslo", "New password" => "Novo geslo", -"show" => "prikaži", +"show" => "pokaži", "Change password" => "Spremeni geslo", -"Email" => "E-poÅ¡ta", -"Your email address" => "VaÅ¡ e-poÅ¡tni naslov", -"Fill in an email address to enable password recovery" => "VpiÅ¡ite vaÅ¡ e-poÅ¡tni naslov in s tem omogoÄite obnovitev gesla", +"Email" => "Elektronska poÅ¡ta", +"Your email address" => "VaÅ¡ elektronski poÅ¡tni naslov", +"Fill in an email address to enable password recovery" => "VpiÅ¡ite vaÅ¡ elektronski naslov in s tem omogoÄite obnovitev gesla", "Language" => "Jezik", "Help translate" => "Pomagajte pri prevajanju", -"use this address to connect to your ownCloud in your file manager" => "Uporabite ta naslov za povezavo do ownCloud v vaÅ¡em upravljalniku datotek.", +"use this address to connect to your ownCloud in your file manager" => "Uporabite ta naslov za povezavo do ownCloud v upravljalniku datotek.", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Programski paket razvija skupnost ownCloud. Izvorna koda je objavljena pod pogoji dovoljenja AGPL.", "Name" => "Ime", "Password" => "Geslo", "Groups" => "Skupine", "Create" => "Ustvari", "Default Quota" => "Privzeta koliÄinska omejitev", "Other" => "Drugo", -"Group Admin" => "Administrator skupine", +"Group Admin" => "Skrbnik skupine", "Quota" => "KoliÄinska omejitev", "Delete" => "IzbriÅ¡i" ); diff --git a/settings/l10n/sr.php b/settings/l10n/sr.php index 3fc1cd8c1ec427fe40182723554233688fb962d4..924d6a07b39be0afa32bd4c73e64eb856584d0ee 100644 --- a/settings/l10n/sr.php +++ b/settings/l10n/sr.php @@ -1,12 +1,38 @@ "Грешка приликом учитавања ÑпиÑка из Складишта Програма", +"Group already exists" => "Група већ поÑтоји", +"Unable to add group" => "Ðе могу да додам групу", +"Could not enable app. " => "Ðе могу да укључим програм", +"Email saved" => "Е-порука Ñачувана", +"Invalid email" => "ÐеиÑправна е-адреÑа", "OpenID Changed" => "OpenID је измењен", "Invalid request" => "ÐеиÑправан захтев", -"Language changed" => "Језик је измењен", +"Unable to delete group" => "Ðе могу да уклоним групу", +"Authentication error" => "Грешка при аутентификацији", +"Unable to delete user" => "Ðе могу да уклоним кориÑника", +"Language changed" => "Језик је промењен", +"Admins can't remove themself from the admin group" => "Управници не могу Ñебе уклонити из админ групе", +"Unable to add user to group %s" => "Ðе могу да додам кориÑника у групу %s", +"Unable to remove user from group %s" => "Ðе могу да уклоним кориÑника из групе %s", +"Disable" => "ИÑкључи", +"Enable" => "Укључи", +"Saving..." => "Чување у току...", +"__language_name__" => "__language_name__", +"Add your App" => "Додајте ваш програм", +"More Apps" => "Више програма", "Select an App" => "Изаберите програм", +"See application page at apps.owncloud.com" => "Погледајте Ñтраницу Ñа програмима на apps.owncloud.com", +"-licensed by " => "-лиценцирао ", +"Documentation" => "Документација", +"Managing Big Files" => "Управљање великим датотекама", "Ask a question" => "ПоÑтавите питање", "Problems connecting to help database." => "Проблем у повезивању Ñа базом помоћи", "Go there manually." => "Отиђите тамо ручно.", "Answer" => "Одговор", +"You have used %s of the available %s" => "ИÑкориÑтили Ñте %s од дозвољених %s", +"Desktop and Mobile Syncing Clients" => "Стони и мобилни клијенти за уÑклађивање", +"Download" => "Преузимање", +"Your password was changed" => "Лозинка је промењена", "Unable to change your password" => "Ðе могу да изменим вашу лозинку", "Current password" => "Тренутна лозинка", "New password" => "Ðова лозинка", @@ -14,12 +40,18 @@ "Change password" => "Измени лозинку", "Email" => "Е-пошта", "Your email address" => "Ваша адреÑа е-поште", +"Fill in an email address to enable password recovery" => "Ун", "Language" => "Језик", "Help translate" => " Помозите у превођењу", "use this address to connect to your ownCloud in your file manager" => "кориÑтите ову адреÑу да би Ñе повезали на ownCloud путем менаџњера фајлова", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Развијају Оунклауд (ownCloud) заједница, изворни код је издат под ÐГПЛ лиценцом.", "Name" => "Име", "Password" => "Лозинка", "Groups" => "Групе", "Create" => "Ðаправи", +"Default Quota" => "Подразумевано ограничење", +"Other" => "Друго", +"Group Admin" => "Управник групе", +"Quota" => "Ограничење", "Delete" => "Обриши" ); diff --git a/settings/l10n/sr@latin.php b/settings/l10n/sr@latin.php index 5a85856979d1b607806ff2a8fe210b0b938175f3..13d3190df8b41596306d574f697d3d0f6839c9ec 100644 --- a/settings/l10n/sr@latin.php +++ b/settings/l10n/sr@latin.php @@ -1,22 +1,26 @@ "OpenID je izmenjen", "Invalid request" => "Neispravan zahtev", +"Authentication error" => "GreÅ¡ka pri autentifikaciji", "Language changed" => "Jezik je izmenjen", "Select an App" => "Izaberite program", "Ask a question" => "Postavite pitanje", "Problems connecting to help database." => "Problem u povezivanju sa bazom pomoći", "Go there manually." => "OtiÄ‘ite tamo ruÄno.", "Answer" => "Odgovor", +"Download" => "Preuzmi", "Unable to change your password" => "Ne mogu da izmenim vaÅ¡u lozinku", "Current password" => "Trenutna lozinka", "New password" => "Nova lozinka", "show" => "prikaži", "Change password" => "Izmeni lozinku", +"Email" => "E-mail", "Language" => "Jezik", "use this address to connect to your ownCloud in your file manager" => "koristite ovu adresu da bi se povezali na ownCloud putem menadžnjera fajlova", "Name" => "Ime", "Password" => "Lozinka", "Groups" => "Grupe", "Create" => "Napravi", +"Other" => "Drugo", "Delete" => "ObriÅ¡i" ); diff --git a/settings/l10n/sv.php b/settings/l10n/sv.php index 17d33896423ea58bc1c2401a1871a5e2dc78b444..c829e0376b79d87b11e22e62cbfe129064c18141 100644 --- a/settings/l10n/sv.php +++ b/settings/l10n/sv.php @@ -1,6 +1,5 @@ "Kan inte ladda listan frÃ¥n App Store", -"Authentication error" => "Autentiseringsfel", "Group already exists" => "Gruppen finns redan", "Unable to add group" => "Kan inte lägga till grupp", "Could not enable app. " => "Kunde inte aktivera appen.", @@ -9,32 +8,16 @@ "OpenID Changed" => "OpenID ändrat", "Invalid request" => "Ogiltig begäran", "Unable to delete group" => "Kan inte radera grupp", +"Authentication error" => "Autentiseringsfel", "Unable to delete user" => "Kan inte radera användare", "Language changed" => "SprÃ¥k ändrades", +"Admins can't remove themself from the admin group" => "Administratörer kan inte ta bort sig själva frÃ¥n admingruppen", "Unable to add user to group %s" => "Kan inte lägga till användare i gruppen %s", "Unable to remove user from group %s" => "Kan inte radera användare frÃ¥n gruppen %s", "Disable" => "Deaktivera", "Enable" => "Aktivera", "Saving..." => "Sparar...", "__language_name__" => "__language_name__", -"Security Warning" => "Säkerhetsvarning", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Din datamapp och dina filer kan möjligen vara nÃ¥bara frÃ¥n internet. Filen .htaccess som ownCloud tillhandahÃ¥ller fungerar inte. Vi rekommenderar starkt att du ställer in din webbserver pÃ¥ ett sätt sÃ¥ att datamappen inte är nÃ¥bar. Alternativt att ni flyttar datamappen utanför webbservern.", -"Cron" => "Cron", -"Execute one task with each page loaded" => "Exekvera en uppgift vid varje sidladdning", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php är registrerad som en webcron-tjänst. Anropa cron.php sidan i ownCloud en gÃ¥ng i minuten över HTTP.", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "Använd system-tjänsten cron. Anropa filen cron.php i ownCloud-mappen via ett cronjobb varje minut.", -"Sharing" => "Dela", -"Enable Share API" => "Aktivera delat API", -"Allow apps to use the Share API" => "TillÃ¥t applikationer att använda delat API", -"Allow links" => "TillÃ¥t länkar", -"Allow users to share items to the public with links" => "TillÃ¥t delning till allmänheten via publika länkar", -"Allow resharing" => "TillÃ¥t dela vidare", -"Allow users to share items shared with them again" => "TillÃ¥t användare att dela vidare filer som delats med dom", -"Allow users to share with anyone" => "TillÃ¥t delning med alla", -"Allow users to only share with users in their groups" => "TillÃ¥t bara delning med användare i egna grupper", -"Log" => "Logg", -"More" => "Mera", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Utvecklad av ownCloud kommunity, källkoden är licenserad under AGPL.", "Add your App" => "Lägg till din applikation", "More Apps" => "Fler Appar", "Select an App" => "Välj en App", @@ -46,7 +29,7 @@ "Problems connecting to help database." => "Problem med att ansluta till hjälpdatabasen.", "Go there manually." => "GÃ¥ dit manuellt.", "Answer" => "Svar", -"You have used %s of the available %s" => "Du har använt %s av tillgängliga %s", +"You have used %s of the available %s" => "Du har använt %s av tillgängliga %s", "Desktop and Mobile Syncing Clients" => "Synkroniseringsklienter för dator och mobil", "Download" => "Ladda ner", "Your password was changed" => "Ditt lösenord har ändrats", @@ -61,6 +44,7 @@ "Language" => "SprÃ¥k", "Help translate" => "Hjälp att översätta", "use this address to connect to your ownCloud in your file manager" => "använd denna adress för att ansluta ownCloud till din filhanterare", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Utvecklad av ownCloud kommunity, källkoden är licenserad under AGPL.", "Name" => "Namn", "Password" => "Lösenord", "Groups" => "Grupper", diff --git a/settings/l10n/ta_LK.php b/settings/l10n/ta_LK.php new file mode 100644 index 0000000000000000000000000000000000000000..c0189a5bdaf39a567196cfda29e8d0b05d54d8e0 --- /dev/null +++ b/settings/l10n/ta_LK.php @@ -0,0 +1,56 @@ + "செயலி சேமிபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ à®à®±à¯à®±à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯à®³à¯à®³à®¤à¯", +"Group already exists" => "கà¯à®´à¯ à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³à®¤à¯", +"Unable to add group" => "கà¯à®´à¯à®µà¯ˆ சேரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯", +"Could not enable app. " => "செயலியை இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯", +"Email saved" => "மினà¯à®©à®žà¯à®šà®²à¯ சேமிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"Invalid email" => "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± மினà¯à®©à®žà¯à®šà®²à¯", +"OpenID Changed" => "OpenID மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"Invalid request" => "செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± வேணà¯à®Ÿà¯à®•à¯‹à®³à¯", +"Unable to delete group" => "கà¯à®´à¯à®µà¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯", +"Authentication error" => "அதà¯à®¤à®¾à®Ÿà¯à®šà®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¿à®²à¯ வழà¯", +"Unable to delete user" => "பயனாளரை நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯", +"Language changed" => "மொழி மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯", +"Unable to add user to group %s" => "கà¯à®´à¯ %s இல௠பயனாளரை சேரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯", +"Unable to remove user from group %s" => "கà¯à®´à¯ %s இலிரà¯à®¨à¯à®¤à¯ பயனாளரை நீகà¯à®•à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯", +"Disable" => "இயலà¯à®®à¯ˆà®ªà¯à®ª", +"Enable" => "செயலறà¯à®±à®¤à®¾à®•à¯à®•à¯à®•", +"Saving..." => "இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•", +"__language_name__" => "_மொழி_பெயரà¯_", +"Add your App" => "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ செயலியை சேரà¯à®•à¯à®•", +"More Apps" => "மேலதிக செயலிகளà¯", +"Select an App" => "செயலி ஒனà¯à®±à¯ˆ தெரிவà¯à®šà¯†à®¯à¯à®•", +"See application page at apps.owncloud.com" => "apps.owncloud.com இல௠செயலி பகà¯à®•à®¤à¯à®¤à¯ˆ பாரà¯à®•à¯à®•", +"-licensed by " => "-அனà¯à®®à®¤à®¿ பெறà¯à®± ", +"Documentation" => "ஆவணமாகà¯à®•à®²à¯", +"Managing Big Files" => "பெரிய கோபà¯à®ªà¯à®•à®³à¯ˆ à®®à¯à®•à®¾à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯", +"Ask a question" => "வினா ஒனà¯à®±à¯ˆ கேடà¯à®•", +"Problems connecting to help database." => "தரவà¯à®¤à®³à®¤à¯à®¤à¯ˆ இணைகà¯à®•à¯à®®à¯ உதவியில௠பிரசà¯à®šà®¿à®©à¯ˆà®•à®³à¯", +"Go there manually." => "கைமà¯à®±à¯ˆà®¯à®¾à®• à®…à®™à¯à®•à¯ செலà¯à®•", +"Answer" => "விடை", +"You have used %s of the available %s" => "நீஙà¯à®•à®³à¯ %s இலà¯à®³à¯à®³ %sபயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿à®¯à¯à®³à¯à®³à¯€à®°à¯à®•à®³à¯", +"Desktop and Mobile Syncing Clients" => "desktop மறà¯à®±à¯à®®à¯ Mobile ஒதà¯à®¤à®¿à®šà¯ˆà®µà¯ சேவைப௠பயனாளரà¯", +"Download" => "பதிவிறகà¯à®•à¯à®•", +"Your password was changed" => "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯", +"Unable to change your password" => "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯", +"Current password" => "தறà¯à®ªà¯‹à®¤à¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯", +"New password" => "பà¯à®¤à®¿à®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯", +"show" => "காடà¯à®Ÿà¯", +"Change password" => "கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à¯à®•", +"Email" => "மினà¯à®©à®žà¯à®šà®²à¯", +"Your email address" => "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿", +"Fill in an email address to enable password recovery" => "கடவà¯à®šà¯à®šà¯Šà®²à¯ மீள௠பெறà¯à®µà®¤à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à®±à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆ இயலà¯à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•", +"Language" => "மொழி", +"Help translate" => "மொழிபெயரà¯à®•à¯à®• உதவி", +"use this address to connect to your ownCloud in your file manager" => "உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ கோபà¯à®ªà¯ à®®à¯à®•à®¾à®®à¯ˆà®¯à®¿à®²à¯ உளà¯à®³ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ ownCloud உடன௠இணைகà¯à®• இநà¯à®¤ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Developed by the ownCloud community, the source code is licensed under the AGPL.", +"Name" => "பெயரà¯", +"Password" => "கடவà¯à®šà¯à®šà¯Šà®²à¯", +"Groups" => "கà¯à®´à¯à®•à¯à®•à®³à¯", +"Create" => "உரà¯à®µà®¾à®•à¯à®•à¯à®•", +"Default Quota" => "பொத௠இரà¯à®ªà¯à®ªà¯ பஙà¯à®•à¯", +"Other" => "மறà¯à®±à®µà¯ˆ", +"Group Admin" => "கà¯à®´à¯ நிரà¯à®µà®¾à®•à®¿", +"Quota" => "பஙà¯à®•à¯", +"Delete" => "அழிகà¯à®•" +); diff --git a/settings/l10n/th_TH.php b/settings/l10n/th_TH.php index 0b2d1ecfb54f5d7f957928826eb0046e9d021319..3431fedac0ae6bbea156130a4b19edecb22f3256 100644 --- a/settings/l10n/th_TH.php +++ b/settings/l10n/th_TH.php @@ -1,6 +1,5 @@ "ไม่สามารถโหลดรายà¸à¸²à¸£à¸ˆà¸²à¸ App Store ได้", -"Authentication error" => "เà¸à¸´à¸”ข้อผิดพลาดเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน", "Group already exists" => "มีà¸à¸¥à¸¸à¹ˆà¸¡à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸°à¸šà¸šà¸­à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§", "Unable to add group" => "ไม่สามารถเพิ่มà¸à¸¥à¸¸à¹ˆà¸¡à¹„ด้", "Could not enable app. " => "ไม่สามารถเปิดใช้งานà¹à¸­à¸›à¹„ด้", @@ -9,6 +8,7 @@ "OpenID Changed" => "เปลี่ยนชื่อบัà¸à¸Šà¸µ OpenID à¹à¸¥à¹‰à¸§", "Invalid request" => "คำร้องขอไม่ถูà¸à¸•à¹‰à¸­à¸‡", "Unable to delete group" => "ไม่สามารถลบà¸à¸¥à¸¸à¹ˆà¸¡à¹„ด้", +"Authentication error" => "เà¸à¸´à¸”ข้อผิดพลาดเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹€à¸‚้าใช้งาน", "Unable to delete user" => "ไม่สามารถลบผู้ใช้งานได้", "Language changed" => "เปลี่ยนภาษาเรียบร้อยà¹à¸¥à¹‰à¸§", "Unable to add user to group %s" => "ไม่สามารถเพิ่มผู้ใช้งานเข้าไปที่à¸à¸¥à¸¸à¹ˆà¸¡ %s ได้", @@ -17,24 +17,6 @@ "Enable" => "เปิดใช้งาน", "Saving..." => "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึุà¸à¸‚้อมูล...", "__language_name__" => "ภาษาไทย", -"Security Warning" => "คำเตือนเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸„วามปลอดภัย", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "ไดเร็à¸à¸—อรี่ข้อมูลà¹à¸¥à¸°à¹„ฟล์ของคุณสามารถเข้าถึงได้จาà¸à¸­à¸´à¸™à¹€à¸—อร์เน็ต ไฟล์ .htaccess ที่ ownCloud มีให้ไม่สามารถทำงานได้อย่างเหมาะสม เราขอà¹à¸™à¸°à¸™à¸³à¹ƒà¸«à¹‰à¸„ุณà¸à¸³à¸«à¸™à¸”ค่าเว็บเซิร์ฟเวอร์ใหม่ในรูปà¹à¸šà¸šà¸—ี่ไดเร็à¸à¸—อรี่เà¸à¹‡à¸šà¸‚้อมูลไม่สามารถเข้าถึงได้อีà¸à¸•à¹ˆà¸­à¹„ป หรือคุณได้ย้ายไดเร็à¸à¸—อรี่ที่ใช้เà¸à¹‡à¸šà¸‚้อมูลไปอยู่ภายนอà¸à¸•à¸³à¹à¸«à¸™à¹ˆà¸‡ root ของเว็บเซิร์ฟเวอร์à¹à¸¥à¹‰à¸§", -"Cron" => "Cron", -"Execute one task with each page loaded" => "ประมวลคำสั่งหนึ่งงานในà¹à¸•à¹ˆà¸¥à¸°à¸„รั้งที่มีà¸à¸²à¸£à¹‚หลดหน้าเว็บ", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php ได้รับà¸à¸²à¸£à¸¥à¸‡à¸—ะเบียนà¹à¸¥à¹‰à¸§à¸à¸±à¸šà¹€à¸§à¹‡à¸šà¸œà¸¹à¹‰à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£ webcron เรียà¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸š cron.php ที่ตำà¹à¸«à¸™à¹ˆà¸‡ root ของ owncloud หลังจาà¸à¸™à¸µà¹‰à¸ªà¸±à¸à¸„รู่ผ่านทาง http", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "ใช้บริà¸à¸²à¸£ cron จาà¸à¸£à¸°à¸šà¸š เรียà¸à¹„ฟล์ cron.php ในโฟลเดอร์ owncloud ผ่านทาง cronjob ของระบบหลังจาà¸à¸™à¸µà¹‰à¸ªà¸±à¸à¸„รู่", -"Sharing" => "à¸à¸²à¸£à¹à¸Šà¸£à¹Œà¸‚้อมูล", -"Enable Share API" => "เปิดใช้งาน API สำหรับคุณสมบัติà¹à¸Šà¸£à¹Œà¸‚้อมูล", -"Allow apps to use the Share API" => "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸­à¸›à¸¯à¸ªà¸²à¸¡à¸²à¸£à¸–ใช้ API สำหรับà¹à¸Šà¸£à¹Œà¸‚้อมูลได้", -"Allow links" => "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸¥à¸´à¸‡à¸à¹Œà¹„ด้", -"Allow users to share items to the public with links" => "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸Šà¸£à¹Œà¸‚้อมูลรายà¸à¸²à¸£à¸•à¹ˆà¸²à¸‡à¹†à¹„ปให้สาธารณะชนเป็นลิงà¸à¹Œà¹„ด้", -"Allow resharing" => "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸Šà¸£à¹Œà¸‚้อมูลซ้ำใหม่ได้", -"Allow users to share items shared with them again" => "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸Šà¸£à¹Œà¸‚้อมูลรายà¸à¸²à¸£à¸•à¹ˆà¸²à¸‡à¹†à¸—ี่ถูà¸à¹à¸Šà¸£à¹Œà¸¡à¸²à¹ƒà¸«à¹‰à¸•à¸±à¸§à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ด้เท่านั้น", -"Allow users to share with anyone" => "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸Šà¸£à¹Œà¸‚้อมูลถึงใครà¸à¹‡à¹„ด้", -"Allow users to only share with users in their groups" => "อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸Šà¸£à¹Œà¸‚้อมูลได้เฉพาะà¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸—ี่อยู่ในà¸à¸¥à¸¸à¹ˆà¸¡à¹€à¸”ียวà¸à¸±à¸™à¹€à¸—่านั้น", -"Log" => "บันทึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡", -"More" => "เพิ่มเติม", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "พัฒนาโดย the ชุมชนผู้ใช้งาน ownCloud, the ซอร์สโค้ดอยู่ภายใต้สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•à¸‚อง AGPL.", "Add your App" => "เพิ่มà¹à¸­à¸›à¸‚องคุณ", "More Apps" => "à¹à¸­à¸›à¸¯à¸­à¸·à¹ˆà¸™à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•à¸´à¸¡", "Select an App" => "เลือภApp", @@ -46,7 +28,7 @@ "Problems connecting to help database." => "เà¸à¸´à¸”ปัà¸à¸«à¸²à¹ƒà¸™à¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸à¸±à¸šà¸à¸²à¸™à¸‚้อมูลช่วยเหลือ", "Go there manually." => "ไปที่นั่นด้วยตนเอง", "Answer" => "คำตอบ", -"You have used %s of the available %s" => "คุณได้ใช้ %s จาà¸à¸—ี่สามารถใช้ได้ %s", +"You have used %s of the available %s" => "คุณได้ใช้งานไปà¹à¸¥à¹‰à¸§ %s จาà¸à¸ˆà¸³à¸™à¸§à¸™à¸—ี่สามารถใช้ได้ %s", "Desktop and Mobile Syncing Clients" => "โปรà¹à¸à¸£à¸¡à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸‚้อมูลไฟล์สำหรับเครื่องเดสà¸à¹Œà¸—็อปà¹à¸¥à¸°à¸¡à¸·à¸­à¸–ือ", "Download" => "ดาวน์โหลด", "Your password was changed" => "รหัสผ่านของคุณถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸¥à¹‰à¸§", @@ -61,6 +43,7 @@ "Language" => "ภาษา", "Help translate" => "ช่วยà¸à¸±à¸™à¹à¸›à¸¥", "use this address to connect to your ownCloud in your file manager" => "ใช้ที่อยู่นี้ในà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸à¸±à¸šà¸šà¸±à¸à¸Šà¸µ ownCloud ของคุณในเครื่องมือจัดà¸à¸²à¸£à¹„ฟล์ของคุณ", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "พัฒนาโดย the ชุมชนผู้ใช้งาน ownCloud, the ซอร์สโค้ดอยู่ภายใต้สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•à¸‚อง AGPL.", "Name" => "ชื่อ", "Password" => "รหัสผ่าน", "Groups" => "à¸à¸¥à¸¸à¹ˆà¸¡", diff --git a/settings/l10n/tr.php b/settings/l10n/tr.php index 31486c7776a3229214dcfc9afedf147f45ab397a..1e301e8d32355ef79c5c97b3377a4c01f9b31d13 100644 --- a/settings/l10n/tr.php +++ b/settings/l10n/tr.php @@ -1,18 +1,23 @@ "EÅŸleÅŸme hata", +"Unable to load list from App Store" => "App Store'dan liste yüklenemiyor", +"Group already exists" => "Grup zaten mevcut", +"Unable to add group" => "Gruba eklenemiyor", +"Could not enable app. " => "Uygulama devreye alınamadı", "Email saved" => "Eposta kaydedildi", "Invalid email" => "Geçersiz eposta", "OpenID Changed" => "OpenID DeÄŸiÅŸtirildi", "Invalid request" => "Geçersiz istek", +"Unable to delete group" => "Grup silinemiyor", +"Authentication error" => "EÅŸleÅŸme hata", +"Unable to delete user" => "Kullanıcı silinemiyor", "Language changed" => "Dil deÄŸiÅŸtirildi", +"Unable to add user to group %s" => "Kullanıcı %s grubuna eklenemiyor", "Disable" => "Etkin deÄŸil", "Enable" => "Etkin", "Saving..." => "Kaydediliyor...", "__language_name__" => "__dil_adı__", -"Security Warning" => "Güvenlik Uyarisi", -"Log" => "Günlük", -"More" => "Devamı", "Add your App" => "Uygulamanı Ekle", +"More Apps" => "Daha fazla App", "Select an App" => "Bir uygulama seçin", "See application page at apps.owncloud.com" => "Uygulamanın sayfasına apps.owncloud.com adresinden bakın ", "Documentation" => "Dökümantasyon", @@ -23,6 +28,7 @@ "Answer" => "Cevap", "Desktop and Mobile Syncing Clients" => "Masaüstü ve Mobil Senkron Ä°stemcileri", "Download" => "Ä°ndir", +"Your password was changed" => "Åžifreniz deÄŸiÅŸtirildi", "Unable to change your password" => "Parolanız deÄŸiÅŸtirilemiyor", "Current password" => "Mevcut parola", "New password" => "Yeni parola", @@ -34,12 +40,14 @@ "Language" => "Dil", "Help translate" => "Çevirilere yardım edin", "use this address to connect to your ownCloud in your file manager" => "bu adresi kullanarak ownCloud unuza dosya yöneticinizle baÄŸlanın", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "GeliÅŸtirilen TarafownCloud community, the source code is altında lisanslanmıştır AGPL.", "Name" => "Ad", "Password" => "Parola", "Groups" => "Gruplar", "Create" => "OluÅŸtur", "Default Quota" => "Varsayılan Kota", "Other" => "DiÄŸer", +"Group Admin" => "Yönetici Grubu ", "Quota" => "Kota", "Delete" => "Sil" ); diff --git a/settings/l10n/uk.php b/settings/l10n/uk.php index 82b6881dfc1d21be814cc834591b436bb5fa44da..d1a0d6d9091c4ee81a5a5ed6d84b0bf7559a909a 100644 --- a/settings/l10n/uk.php +++ b/settings/l10n/uk.php @@ -1,18 +1,57 @@ "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑпиÑок з App Store", +"Group already exists" => "Група вже Ñ–Ñнує", +"Unable to add group" => "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ групу", +"Could not enable app. " => "Ðе вдалоÑÑ Ð°ÐºÑ‚Ð¸Ð²ÑƒÐ²Ð°Ñ‚Ð¸ програму. ", +"Email saved" => "ÐдреÑу збережено", +"Invalid email" => "Ðевірна адреÑа", "OpenID Changed" => "OpenID змінено", "Invalid request" => "Помилковий запит", +"Unable to delete group" => "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ групу", +"Authentication error" => "Помилка автентифікації", +"Unable to delete user" => "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача", "Language changed" => "Мова змінена", +"Admins can't remove themself from the admin group" => "ÐдмініÑтратор не може видалити Ñебе з групи адмінів", +"Unable to add user to group %s" => "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ кориÑтувача у групу %s", +"Unable to remove user from group %s" => "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача із групи %s", +"Disable" => "Вимкнути", +"Enable" => "Включити", +"Saving..." => "Зберігаю...", +"__language_name__" => "__language_name__", +"Add your App" => "Додати Ñвою програму", +"More Apps" => "Більше програм", "Select an App" => "Вибрати додаток", +"See application page at apps.owncloud.com" => "ПереглÑньте Ñторінку програм на apps.owncloud.com", +"-licensed by " => "-licensed by ", +"Documentation" => "ДокументаціÑ", +"Managing Big Files" => "Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ð¸ файлами", "Ask a question" => "Запитати", "Problems connecting to help database." => "Проблема при з'єднані з базою допомоги", +"Go there manually." => "Перейти вручну.", +"Answer" => "Відповідь", +"You have used %s of the available %s" => "Ви викориÑтали %s із доÑтупних %s", +"Desktop and Mobile Syncing Clients" => "ÐаÑтільні та мобільні клієнти Ñинхронізації", +"Download" => "Завантажити", +"Your password was changed" => "Ваш пароль змінено", +"Unable to change your password" => "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ваш пароль", "Current password" => "Поточний пароль", "New password" => "Ðовий пароль", "show" => "показати", "Change password" => "Змінити пароль", +"Email" => "Ел.пошта", +"Your email address" => "Ваша адреÑа електронної пошти", +"Fill in an email address to enable password recovery" => "Введіть адреÑу електронної пошти Ð´Ð»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ", "Language" => "Мова", +"Help translate" => "Допомогти з перекладом", +"use this address to connect to your ownCloud in your file manager" => "викориÑтовувати цю адреÑу Ð´Ð»Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· ownCloud у Вашому файловому менеджері", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Розроблено ownCloud громадою, вихідний код має ліцензію AGPL.", "Name" => "Ім'Ñ", "Password" => "Пароль", "Groups" => "Групи", "Create" => "Створити", +"Default Quota" => "Квота за замовчуваннÑм", +"Other" => "Інше", +"Group Admin" => "ÐдмініÑтратор групи", +"Quota" => "Квота", "Delete" => "Видалити" ); diff --git a/settings/l10n/vi.php b/settings/l10n/vi.php index 18de6a6068f425ab8cf4c46e5543315667e3e722..7857b0509e6c7568f93f2c5ede86479ea2cff0e8 100644 --- a/settings/l10n/vi.php +++ b/settings/l10n/vi.php @@ -1,47 +1,38 @@ "Không thể tải danh sách ứng dụng từ App Store", -"Authentication error" => "Lá»—i xác thá»±c", "Group already exists" => "Nhóm đã tồn tại", "Unable to add group" => "Không thể thêm nhóm", +"Could not enable app. " => "không thể kích hoạt ứng dụng.", "Email saved" => "LÆ°u email", "Invalid email" => "Email không hợp lệ", "OpenID Changed" => "Äổi OpenID", "Invalid request" => "Yêu cầu không hợp lệ", "Unable to delete group" => "Không thể xóa nhóm", +"Authentication error" => "Lá»—i xác thá»±c", "Unable to delete user" => "Không thể xóa ngÆ°á»i dùng", "Language changed" => "Ngôn ngữ đã được thay đổi", +"Admins can't remove themself from the admin group" => "Quản trị viên không thể loại bá» chính há» khá»i nhóm quản lý", "Unable to add user to group %s" => "Không thể thêm ngÆ°á»i dùng vào nhóm %s", "Unable to remove user from group %s" => "Không thể xóa ngÆ°á»i dùng từ nhóm %s", -"Disable" => "Vô hiệu", -"Enable" => "Cho phép", +"Disable" => "Tắt", +"Enable" => "Bật", "Saving..." => "Äang tiến hành lÆ°u ...", "__language_name__" => "__Ngôn ngữ___", -"Security Warning" => "Cảnh bảo bảo mật", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "ThÆ° mục dữ liệu và những tập tin của bạn có thể dá»… dàng bị truy cập từ internet. Tập tin .htaccess của ownCloud cung cấp không hoạt Ä‘á»™ng. Chúng tôi Ä‘á» nghị bạn nên cấu hình lại máy chủ webserver của bạn để thÆ° mục dữ liệu không còn bị truy cập hoặc bạn di chuyển thÆ° mục dữ liệu ra bên ngoài thÆ° mục gốc của máy chủ.", -"Cron" => "Cron", -"Enable Share API" => "Bật chia sẻ API", -"Allow apps to use the Share API" => "Cho phép các ứng dụng sá»­ dụng chia sẻ API", -"Allow links" => "Cho phép liên kết", -"Allow users to share items to the public with links" => "Cho phép ngÆ°á»i dùng chia sẻ công khai các mục bằng các liên kết", -"Allow resharing" => "Cho phép chia sẻ lại", -"Allow users to share items shared with them again" => "Cho phép ngÆ°á»i dùng chia sẻ lại những mục đã được chia sẻ", -"Allow users to share with anyone" => "Cho phép ngÆ°á»i dùng chia sẻ vá»›i bất cứ ai", -"Allow users to only share with users in their groups" => "Chỉ cho phép ngÆ°á»i dùng chia sẻ vá»›i những ngÆ°á»i dùng trong nhóm của há»", -"Log" => "Log", -"More" => "nhiá»u hÆ¡n", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Äược phát triển bởi cá»™ng đồng ownCloud, mã nguồn đã được cấp phép theo chuẩn AGPL.", "Add your App" => "Thêm ứng dụng của bạn", +"More Apps" => "Nhiá»u ứng dụng hÆ¡n", "Select an App" => "Chá»n má»™t ứng dụng", -"See application page at apps.owncloud.com" => "Xem ứng dụng tại apps.owncloud.com", +"See application page at apps.owncloud.com" => "Xem nhiá»u ứng dụng hÆ¡n tại apps.owncloud.com", "-licensed by " => "-Giấy phép được cấp bởi ", "Documentation" => "Tài liệu", "Managing Big Files" => "Quản lý tập tin lá»›n", "Ask a question" => "Äặt câu há»i", "Problems connecting to help database." => "Vấn Ä‘á» kết nối đến cÆ¡ sở dữ liệu.", -"Go there manually." => "Äến bằng thủ công", +"Go there manually." => "Äến bằng thủ công.", "Answer" => "trả lá»i", +"You have used %s of the available %s" => "Bạn đã sá»­ dụng %s có sẵn %s ", "Desktop and Mobile Syncing Clients" => "Äồng bá»™ dữ liệu", "Download" => "Tải vá»", +"Your password was changed" => "Mật khẩu của bạn đã được thay đổi.", "Unable to change your password" => "Không thể đổi mật khẩu", "Current password" => "Mật khẩu cÅ©", "New password" => "Mật khẩu má»›i ", @@ -51,8 +42,9 @@ "Your email address" => "Email của bạn", "Fill in an email address to enable password recovery" => "Nhập địa chỉ email của bạn để khôi phục lại mật khẩu", "Language" => "Ngôn ngữ", -"Help translate" => "Dịch ", +"Help translate" => "Há»— trợ dịch thuật", "use this address to connect to your ownCloud in your file manager" => "sá»­ dụng địa chỉ này để kết nối vá»›i ownCloud của bạn trong quản lý tập tin ", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "Äược phát triển bởi cá»™ng đồng ownCloud, mã nguồn đã được cấp phép theo chuẩn AGPL.", "Name" => "Tên", "Password" => "Mật khẩu", "Groups" => "Nhóm", diff --git a/settings/l10n/zh_CN.GB2312.php b/settings/l10n/zh_CN.GB2312.php index 26bfbbd7ae50e9fdd1929af60f778fed409d2794..4784ff7ff9df99dbd19239f1f8445107c5797e37 100644 --- a/settings/l10n/zh_CN.GB2312.php +++ b/settings/l10n/zh_CN.GB2312.php @@ -1,6 +1,5 @@ "ä¸èƒ½ä»ŽApp Store 中加载列表", -"Authentication error" => "认è¯é”™è¯¯", "Group already exists" => "群组已存在", "Unable to add group" => "未能添加群组", "Could not enable app. " => "未能å¯ç”¨åº”用", @@ -9,6 +8,7 @@ "OpenID Changed" => "OpenID 改å˜äº†", "Invalid request" => "éžæ³•è¯·æ±‚", "Unable to delete group" => "未能删除群组", +"Authentication error" => "认è¯é”™è¯¯", "Unable to delete user" => "未能删除用户", "Language changed" => "语言改å˜äº†", "Unable to add user to group %s" => "未能添加用户到群组 %s", @@ -17,25 +17,8 @@ "Enable" => "å¯ç”¨", "Saving..." => "ä¿å­˜ä¸­...", "__language_name__" => "Chinese", -"Security Warning" => "安全警告", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "您的数æ®æ–‡ä»¶å¤¹å’Œæ‚¨çš„文件å¯èƒ½å¯ä»¥ä»Žäº’è”网访问。ownCloud æ供的 .htaccess 文件未工作。我们强烈建议您é…置您的网络æœåŠ¡å™¨ï¼Œè®©æ•°æ®æ–‡ä»¶å¤¹ä¸èƒ½è®¿é—®ï¼Œæˆ–将数æ®æ–‡ä»¶å¤¹ç§»å‡ºç½‘络æœåŠ¡å™¨æ–‡æ¡£æ ¹ç›®å½•ã€‚", -"Cron" => "定时", -"Execute one task with each page loaded" => "在æ¯ä¸ªé¡µé¢è½½å…¥æ—¶æ‰§è¡Œä¸€é¡¹ä»»åŠ¡", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php 已作为 webcron æœåŠ¡æ³¨å†Œã€‚owncloud 根用户将通过 http åè®®æ¯åˆ†é’Ÿè°ƒç”¨ä¸€æ¬¡ cron.php。", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "使用系统 cron æœåŠ¡ã€‚通过系统 cronjob æ¯åˆ†é’Ÿè°ƒç”¨ä¸€æ¬¡ owncloud 文件夹下的 cron.php", -"Sharing" => "分享", -"Enable Share API" => "å¯ç”¨åˆ†äº« API", -"Allow apps to use the Share API" => "å…许应用使用分享 API", -"Allow links" => "å…许链接", -"Allow users to share items to the public with links" => "å…许用户使用链接与公众分享æ¡ç›®", -"Allow resharing" => "å…许é‡å¤åˆ†äº«", -"Allow users to share items shared with them again" => "å…许用户å†æ¬¡åˆ†äº«å·²ç»åˆ†äº«è¿‡çš„æ¡ç›®", -"Allow users to share with anyone" => "å…许用户与任何人分享", -"Allow users to only share with users in their groups" => "åªå…许用户与群组内用户分享", -"Log" => "日志", -"More" => "更多", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ç”± ownCloud 社区开å‘,sæºä»£ç  以 AGPL 许å¯åè®®å‘布。", "Add your App" => "添加你的应用程åº", +"More Apps" => "更多应用", "Select an App" => "选择一个程åº", "See application page at apps.owncloud.com" => "在owncloud.com上查看应用程åº", "-licensed by " => "授æƒåè®® ", @@ -45,7 +28,6 @@ "Problems connecting to help database." => "连接到帮助数æ®åº“时的问题", "Go there manually." => "收到转到.", "Answer" => "回答", -"You have used %s of the available %s" => "您已使用了 %s,总å¯ç”¨ %s", "Desktop and Mobile Syncing Clients" => "æ¡Œé¢å’Œç§»åŠ¨åŒæ­¥å®¢æˆ·ç«¯", "Download" => "下载", "Your password was changed" => "您的密ç ä»¥å˜æ›´", @@ -60,6 +42,7 @@ "Language" => "语言", "Help translate" => "帮助翻译", "use this address to connect to your ownCloud in your file manager" => "使用这个地å€å’Œä½ çš„文件管ç†å™¨è¿žæŽ¥åˆ°ä½ çš„ownCloud", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ç”± ownCloud 社区开å‘,sæºä»£ç  以 AGPL 许å¯åè®®å‘布。", "Name" => "åå­—", "Password" => "密ç ", "Groups" => "组", diff --git a/settings/l10n/zh_CN.php b/settings/l10n/zh_CN.php index 31063d3a01ba235ddae5ec3040d54d46cf7590ed..87c8172d6fa9f53cb27a028292f3a04722a74c64 100644 --- a/settings/l10n/zh_CN.php +++ b/settings/l10n/zh_CN.php @@ -1,6 +1,5 @@ "无法从应用商店载入列表", -"Authentication error" => "认è¯é”™è¯¯", "Group already exists" => "已存在该组", "Unable to add group" => "无法添加组", "Could not enable app. " => "无法开å¯App", @@ -9,33 +8,18 @@ "OpenID Changed" => "OpenID 已修改", "Invalid request" => "éžæ³•è¯·æ±‚", "Unable to delete group" => "无法删除组", +"Authentication error" => "认è¯é”™è¯¯", "Unable to delete user" => "无法删除用户", "Language changed" => "语言已修改", +"Admins can't remove themself from the admin group" => "管ç†å‘˜ä¸èƒ½å°†è‡ªå·±ç§»å‡ºç®¡ç†ç»„。", "Unable to add user to group %s" => "无法把用户添加到组 %s", "Unable to remove user from group %s" => "无法从组%s中移除用户", "Disable" => "ç¦ç”¨", "Enable" => "å¯ç”¨", "Saving..." => "正在ä¿å­˜", "__language_name__" => "简体中文", -"Security Warning" => "安全警告", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "您的数æ®æ–‡ä»¶å¤¹å’Œæ–‡ä»¶å¯ç”±äº’è”网访问。OwnCloudæ供的.htaccess文件未生效。我们强烈建议您é…ç½®æœåŠ¡å™¨ï¼Œä»¥ä½¿æ•°æ®æ–‡ä»¶å¤¹ä¸å¯è¢«è®¿é—®ï¼Œæˆ–者将数æ®æ–‡ä»¶å¤¹ç§»åˆ°webæœåŠ¡å™¨æ ¹ç›®å½•ä»¥å¤–。", -"Cron" => "计划任务", -"Execute one task with each page loaded" => "æ¯æ¬¡é¡µé¢åŠ è½½å®ŒæˆåŽæ‰§è¡Œä»»åŠ¡", -"cron.php is registered at a webcron service. Call the cron.php page in the owncloud root once a minute over http." => "cron.php已被注册到网络定时任务æœåŠ¡ã€‚通过httpæ¯åˆ†é’Ÿè°ƒç”¨owncloud根目录的cron.php网页。", -"Use systems cron service. Call the cron.php file in the owncloud folder via a system cronjob once a minute." => "使用系统定时任务æœåŠ¡ã€‚æ¯åˆ†é’Ÿé€šè¿‡ç³»ç»Ÿå®šæ—¶ä»»åŠ¡è°ƒç”¨owncloud文件夹中的cron.php文件", -"Sharing" => "分享", -"Enable Share API" => "å¼€å¯å…±äº«API", -"Allow apps to use the Share API" => "å…许 应用 使用共享API", -"Allow links" => "å…许连接", -"Allow users to share items to the public with links" => "å…许用户使用连接å‘公众共享", -"Allow resharing" => "å…许å†æ¬¡å…±äº«", -"Allow users to share items shared with them again" => "å…许用户将共享给他们的项目å†æ¬¡å…±äº«", -"Allow users to share with anyone" => "å…许用户å‘任何人共享", -"Allow users to only share with users in their groups" => "å…许用户åªå‘åŒç»„用户共享", -"Log" => "日志", -"More" => "更多", -"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ç”±ownCloud社区开å‘, æºä»£ç åœ¨AGPL许å¯è¯ä¸‹å‘布。", "Add your App" => "添加应用", +"More Apps" => "更多应用", "Select an App" => "选择一个应用", "See application page at apps.owncloud.com" => "查看在 app.owncloud.com 的应用程åºé¡µé¢", "-licensed by " => "-核准: ", @@ -45,8 +29,8 @@ "Problems connecting to help database." => "连接帮助数æ®åº“错误 ", "Go there manually." => "手动访问", "Answer" => "回答", -"You have used %s of the available %s" => "您已使用空间: %s,总空间: %s", -"Desktop and Mobile Syncing Clients" => "æ¡Œé¢å’Œç§»åŠ¨è®¾å¤‡åŒæ­¥ç¨‹åº", +"You have used %s of the available %s" => "你已使用 %s,有效空间 %s", +"Desktop and Mobile Syncing Clients" => "æ¡Œé¢å’Œç§»åŠ¨è®¾å¤‡åŒæ­¥å®¢æˆ·ç«¯", "Download" => "下载", "Your password was changed" => "密ç å·²ä¿®æ”¹", "Unable to change your password" => "无法修改密ç ", @@ -56,17 +40,18 @@ "Change password" => "修改密ç ", "Email" => "电å­é‚®ä»¶", "Your email address" => "您的电å­é‚®ä»¶", -"Fill in an email address to enable password recovery" => "填写电å­é‚®ä»¶åœ°å€ä»¥å¯ç”¨å¯†ç æ¢å¤", +"Fill in an email address to enable password recovery" => "填写电å­é‚®ä»¶åœ°å€ä»¥å¯ç”¨å¯†ç æ¢å¤åŠŸèƒ½", "Language" => "语言", "Help translate" => "帮助翻译", "use this address to connect to your ownCloud in your file manager" => "您å¯åœ¨æ–‡ä»¶ç®¡ç†å™¨ä¸­ä½¿ç”¨è¯¥åœ°å€è¿žæŽ¥åˆ°ownCloud", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ç”±ownCloud社区开å‘, æºä»£ç åœ¨AGPL许å¯è¯ä¸‹å‘布。", "Name" => "å称", "Password" => "密ç ", "Groups" => "组", "Create" => "创建", "Default Quota" => "默认é…é¢", "Other" => "其它", -"Group Admin" => "组管ç†", +"Group Admin" => "组管ç†å‘˜", "Quota" => "é…é¢", "Delete" => "删除" ); diff --git a/settings/l10n/zh_TW.php b/settings/l10n/zh_TW.php index ccf67cef03590b789ea656d2d054d7e7210dd2ad..7de5ee5f54d375f0cc233ca5be8fdfdbd1ffb8fa 100644 --- a/settings/l10n/zh_TW.php +++ b/settings/l10n/zh_TW.php @@ -1,42 +1,38 @@ "無法從 App Store 讀å–清單", -"Authentication error" => "èªè­‰éŒ¯èª¤", "Group already exists" => "群組已存在", "Unable to add group" => "群組增加失敗", +"Could not enable app. " => "未能啟動此app", "Email saved" => "Email已儲存", "Invalid email" => "無效的email", "OpenID Changed" => "OpenID 已變更", "Invalid request" => "無效請求", "Unable to delete group" => "群組刪除錯誤", +"Authentication error" => "èªè­‰éŒ¯èª¤", "Unable to delete user" => "使用者刪除錯誤", "Language changed" => "語言已變更", +"Admins can't remove themself from the admin group" => "管ç†è€…帳號無法從管ç†è€…群組中移除", "Unable to add user to group %s" => "使用者加入群組%s錯誤", "Unable to remove user from group %s" => "使用者移出群組%s錯誤", "Disable" => "åœç”¨", "Enable" => "啟用", "Saving..." => "儲存中...", "__language_name__" => "__語言_å稱__", -"Security Warning" => "安全性警告", -"Cron" => "定期執行", -"Allow links" => "å…許連çµ", -"Allow users to share items to the public with links" => "å…許使用者以çµé€£å…¬é–‹åˆ†äº«æª”案", -"Allow resharing" => "å…許轉貼分享", -"Allow users to share items shared with them again" => "å…許使用者轉貼共享檔案", -"Allow users to share with anyone" => "å…許使用者公開分享", -"Allow users to only share with users in their groups" => "僅å…許使用者在群組內分享", -"Log" => "紀錄", -"More" => "更多", "Add your App" => "添加你的 App", +"More Apps" => "更多Apps", "Select an App" => "é¸æ“‡ä¸€å€‹æ‡‰ç”¨ç¨‹å¼", "See application page at apps.owncloud.com" => "查看應用程å¼é é¢æ–¼ apps.owncloud.com", +"-licensed by " => "-核准: ", "Documentation" => "文件", "Managing Big Files" => "管ç†å¤§æª”案", "Ask a question" => "æå•", -"Problems connecting to help database." => "連接到求助資料庫發生å•é¡Œ", +"Problems connecting to help database." => "連接到求助資料庫時發生å•é¡Œ", "Go there manually." => "手動å‰å¾€", "Answer" => "答案", +"You have used %s of the available %s" => "您已經使用了 %s ,目å‰å¯ç”¨ç©ºé–“為 %s", "Desktop and Mobile Syncing Clients" => "桌機與手機åŒæ­¥å®¢æˆ¶ç«¯", "Download" => "下載", +"Your password was changed" => "你的密碼已更改", "Unable to change your password" => "無法變更你的密碼", "Current password" => "ç›®å‰å¯†ç¢¼", "New password" => "新密碼", @@ -48,6 +44,7 @@ "Language" => "語言", "Help translate" => "幫助翻譯", "use this address to connect to your ownCloud in your file manager" => "使用這個ä½å€åŽ»é€£æŽ¥åˆ°ä½ çš„ç§æœ‰é›²æª”案管ç†å“¡", +"Developed by the ownCloud community, the source code is licensed under the AGPL." => "ç”±ownCloud 社å€é–‹ç™¼ï¼Œæºä»£ç¢¼åœ¨AGPL許å¯è­‰ä¸‹ç™¼å¸ƒã€‚", "Name" => "å稱", "Password" => "密碼", "Groups" => "群組", diff --git a/settings/languageCodes.php b/settings/languageCodes.php index 6d3b6ebe634574c70948291d35232f7b18fe5e00..71655800856500b5bc833d8df6a8349fe857df89 100644 --- a/settings/languageCodes.php +++ b/settings/languageCodes.php @@ -3,13 +3,14 @@ * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file. */ - + return array( 'bg_BG'=>'българÑки език', 'ca'=>'Català', 'cs_CZ'=>'ÄŒeÅ¡tina', 'da'=>'Dansk', -'de'=>'Deutsch', +'de'=>'Deutsch (Persönlich)', +'de_DE'=>'Deutsch (Förmlich)', 'el'=>'Ελληνικά', 'en'=>'English', 'es'=>'Español', diff --git a/settings/personal.php b/settings/personal.php index 2031edd8df8839e0f492711b8502ff91dd6ec069..47dbcc53ebc5c4c71a6275e190f2dcf7b0ff3224 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -5,8 +5,8 @@ * See the COPYING-README file. */ -require_once '../lib/base.php'; OC_Util::checkLoggedIn(); +OC_App::loadApps(); // Highlight navigation entry OC_Util::addScript( 'settings', 'personal' ); @@ -40,11 +40,11 @@ $languages=array(); foreach($languageCodes as $lang) { $l=OC_L10N::get('settings', $lang); if(substr($l->t('__language_name__'), 0, 1)!='_') {//first check if the language name is in the translation file - $languages[]=array('code'=>$lang,'name'=>$l->t('__language_name__')); + $languages[]=array('code'=>$lang, 'name'=>$l->t('__language_name__')); }elseif(isset($languageNames[$lang])) { - $languages[]=array('code'=>$lang,'name'=>$languageNames[$lang]); + $languages[]=array('code'=>$lang, 'name'=>$languageNames[$lang]); }else{//fallback to language code - $languages[]=array('code'=>$lang,'name'=>$lang); + $languages[]=array('code'=>$lang, 'name'=>$lang); } } diff --git a/settings/routes.php b/settings/routes.php new file mode 100644 index 0000000000000000000000000000000000000000..8239fe005db425bf350d76dcb290db8ec4e6aa0e --- /dev/null +++ b/settings/routes.php @@ -0,0 +1,64 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +// Settings pages +$this->create('settings_help', '/settings/help') + ->actionInclude('settings/help.php'); +$this->create('settings_personal', '/settings/personal') + ->actionInclude('settings/personal.php'); +$this->create('settings_settings', '/settings') + ->actionInclude('settings/settings.php'); +$this->create('settings_users', '/settings/users') + ->actionInclude('settings/users.php'); +$this->create('settings_apps', '/settings/apps') + ->actionInclude('settings/apps.php'); +$this->create('settings_admin', '/settings/admin') + ->actionInclude('settings/admin.php'); +// Settings ajax actions +// users +$this->create('settings_ajax_userlist', '/settings/ajax/userlist') + ->actionInclude('settings/ajax/userlist.php'); +$this->create('settings_ajax_createuser', '/settings/ajax/createuser.php') + ->actionInclude('settings/ajax/createuser.php'); +$this->create('settings_ajax_removeuser', '/settings/ajax/removeuser.php') + ->actionInclude('settings/ajax/removeuser.php'); +$this->create('settings_ajax_setquota', '/settings/ajax/setquota.php') + ->actionInclude('settings/ajax/setquota.php'); +$this->create('settings_ajax_creategroup', '/settings/ajax/creategroup.php') + ->actionInclude('settings/ajax/creategroup.php'); +$this->create('settings_ajax_togglegroups', '/settings/ajax/togglegroups.php') + ->actionInclude('settings/ajax/togglegroups.php'); +$this->create('settings_ajax_togglesubadmins', '/settings/ajax/togglesubadmins.php') + ->actionInclude('settings/ajax/togglesubadmins.php'); +$this->create('settings_ajax_removegroup', '/settings/ajax/removegroup.php') + ->actionInclude('settings/ajax/removegroup.php'); +$this->create('settings_ajax_changepassword', '/settings/ajax/changepassword.php') + ->actionInclude('settings/ajax/changepassword.php'); +// personel +$this->create('settings_ajax_lostpassword', '/settings/ajax/lostpassword.php') + ->actionInclude('settings/ajax/lostpassword.php'); +$this->create('settings_ajax_setlanguage', '/settings/ajax/setlanguage.php') + ->actionInclude('settings/ajax/setlanguage.php'); +// apps +$this->create('settings_ajax_apps_ocs', '/settings/ajax/apps/ocs.php') + ->actionInclude('settings/ajax/apps/ocs.php'); +$this->create('settings_ajax_enableapp', '/settings/ajax/enableapp.php') + ->actionInclude('settings/ajax/enableapp.php'); +$this->create('settings_ajax_disableapp', '/settings/ajax/disableapp.php') + ->actionInclude('settings/ajax/disableapp.php'); +$this->create('settings_ajax_navigationdetect', '/settings/ajax/navigationdetect.php') + ->actionInclude('settings/ajax/navigationdetect.php'); +// admin +$this->create('settings_ajax_getlog', '/settings/ajax/getlog.php') + ->actionInclude('settings/ajax/getlog.php'); +$this->create('settings_ajax_setloglevel', '/settings/ajax/setloglevel.php') + ->actionInclude('settings/ajax/setloglevel.php'); + +// apps/user_openid +$this->create('settings_ajax_openid', '/settings/ajax/openid.php') + ->actionInclude('settings/ajax/openid.php'); diff --git a/settings/settings.php b/settings/settings.php index 24099ef574227c2cc4605914b8b348abe8a682e9..add94b5b01135ff54018268c0a5dee077ddf1307 100644 --- a/settings/settings.php +++ b/settings/settings.php @@ -5,8 +5,9 @@ * See the COPYING-README file. */ -require_once '../lib/base.php'; OC_Util::checkLoggedIn(); +OC_Util::verifyUser(); +OC_App::loadApps(); OC_Util::addStyle( 'settings', 'settings' ); OC_App::setActiveNavigationEntry( 'settings' ); diff --git a/settings/templates/admin.php b/settings/templates/admin.php index 35f34489fec170f90cc0358b01dcca5171aef2eb..9c4ee0bf6806895efcfc84dc3f895570b6678df4 100644 --- a/settings/templates/admin.php +++ b/settings/templates/admin.php @@ -3,7 +3,7 @@ * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file. */ -$levels=array('Debug','Info','Warning','Error','Fatal'); +$levels=array('Debug','Info','Warning','Error', 'Fatal'); ?> + +
            + t('Internet connection not working');?> + + + t('This ownCloud server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features of ownCloud.'); ?> + + +
            + " data-installed="1"> 3rd party' ?> diff --git a/settings/templates/help.php b/settings/templates/help.php index b2a78ff851203c254e6eafda799fdd9c45053ff9..75201a86a9f3d3fe37c0e90caea708ff41b111f6 100644 --- a/settings/templates/help.php +++ b/settings/templates/help.php @@ -1,4 +1,4 @@ -printPage(); } ?>
            - +

            t('Problems connecting to help database.');?>

            t('Go there manually.');?>

            diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 55ff24b4223ca94bd4ba2000289fb8ba9ece9727..d02bcdd7ea5d9db6b5aec48f78caead95c35aef4 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -5,7 +5,7 @@ */?>
            -

            t('You have used %s of the available %s', array($_['usage'], $_['total_space']));?>

            +

            t('You have used %s of the available %s', array($_['usage'], $_['total_space']));?>

            @@ -56,4 +56,9 @@ };?> +

            + ownCloud
            + t('Developed by the ownCloud community, the source code is licensed under the AGPL.'); ?> +

            + diff --git a/settings/templates/users.php b/settings/templates/users.php index eef9b291357215c8a6887429d5d822af828002b0..de7e50da8f3d42ed7d4d242200cae700cc7ebab2 100644 --- a/settings/templates/users.php +++ b/settings/templates/users.php @@ -142,7 +142,7 @@ var isadmin = ;
            - + diff --git a/settings/users.php b/settings/users.php index e76505cc78d6e9d44206f9b7a6cfc0000a985610..93a259f1cd8844872346642dfd5fbe7037b860a6 100644 --- a/settings/users.php +++ b/settings/users.php @@ -5,8 +5,8 @@ * See the COPYING-README file. */ -require_once '../lib/base.php'; OC_Util::checkSubAdminUser(); +OC_App::loadApps(); // We have some javascript foo! OC_Util::addScript( 'settings', 'users' ); @@ -31,7 +31,7 @@ if($isadmin) { foreach($accessibleusers as $i) { $users[] = array( - "name" => $i, + "name" => $i, "groups" => join( ", ", /*array_intersect(*/OC_Group::getUserGroups($i)/*, OC_SubAdmin::getSubAdminsGroups(OC_User::getUser()))*/), 'quota'=>OC_Preferences::getValue($i, 'files', 'quota', 'default'), 'subadmin'=>implode(', ', OC_SubAdmin::getSubAdminsGroups($i))); @@ -42,7 +42,7 @@ foreach( $accessiblegroups as $i ) { $groups[] = array( "name" => $i ); } $quotaPreset=OC_Appconfig::getValue('files', 'quota_preset', 'default,none,1 GB, 5 GB, 10 GB'); -$quotaPreset=explode(',',$quotaPreset); +$quotaPreset=explode(',', $quotaPreset); foreach($quotaPreset as &$preset) { $preset=trim($preset); } @@ -57,4 +57,4 @@ $tmpl->assign( 'subadmins', $subadmins); $tmpl->assign( 'numofgroups', count($accessiblegroups)); $tmpl->assign( 'quota_preset', $quotaPreset); $tmpl->assign( 'default_quota', $defaultQuota); -$tmpl->printPage(); \ No newline at end of file +$tmpl->printPage(); diff --git a/status.php b/status.php index cadca60f292d0817ea8082296dc1e39eb4c16667..9d6ac87c671a3069f5acaa72abf003c04273c07d 100644 --- a/status.php +++ b/status.php @@ -21,7 +21,7 @@ * */ -$RUNTIME_NOAPPS = TRUE; //no apps, yet +$RUNTIME_NOAPPS = true; //no apps, yet require_once 'lib/base.php'; diff --git a/tests/bootstrap.php b/tests/bootstrap.php index f8364b71ef79697f46d51887f7e5a2214b7870f0..115a15883a08461638b874aee22c570c61918762 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,26 +1,28 @@ assertEquals($expected, $actual, $string); } - function assertNotEqual($expected, $actual, $string=''){ + function assertNotEqual($expected, $actual, $string='') { $this->assertNotEquals($expected, $actual, $string); } - static function assertTrue($actual, $string=''){ + static function assertTrue($actual, $string='') { parent::assertTrue((bool)$actual, $string); } - static function assertFalse($actual, $string=''){ + static function assertFalse($actual, $string='') { parent::assertFalse((bool)$actual, $string); } } diff --git a/tests/data/db_structure.xml b/tests/data/db_structure.xml index 03d7502c44179c9fe21995a0479328088f73a292..af2e5ce3439131671ca96378d8cfb1e9e97d02a1 100644 --- a/tests/data/db_structure.xml +++ b/tests/data/db_structure.xml @@ -135,4 +135,47 @@ + + + *dbprefix*vcategory + + + + + id + integer + 0 + true + 1 + true + 4 + + + + uid + text + + true + 64 + + + + type + text + + true + 64 + + + + category + text + + true + 255 + + + +
            + diff --git a/tests/enable_all.php b/tests/enable_all.php new file mode 100644 index 0000000000000000000000000000000000000000..16838398f1751d5a8e63f18ea5eac9fabe9bc64b --- /dev/null +++ b/tests/enable_all.php @@ -0,0 +1,19 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +require_once __DIR__.'/../lib/base.php'; + +OC_App::enable('calendar'); +OC_App::enable('contacts'); +OC_App::enable('apptemplate_advanced'); +#OC_App::enable('files_archive'); +#OC_App::enable('mozilla_sync'); +#OC_App::enable('news'); +#OC_App::enable('provisioning_api'); +#OC_App::enable('user_external'); + diff --git a/tests/lib/archive.php b/tests/lib/archive.php index 04ae722aea7bd5be00343cfc617ebbbd377e1979..cd2ca6630a5f6d99cb4ec464ce4b37ba34d06fea 100644 --- a/tests/lib/archive.php +++ b/tests/lib/archive.php @@ -26,24 +26,24 @@ abstract class Test_Archive extends UnitTestCase { public function testGetFiles() { $this->instance=$this->getExisting(); $allFiles=$this->instance->getFiles(); - $expected=array('lorem.txt','logo-wide.png','dir/','dir/lorem.txt'); - $this->assertEqual(4,count($allFiles),'only found '.count($allFiles).' out of 4 expected files'); + $expected=array('lorem.txt','logo-wide.png','dir/', 'dir/lorem.txt'); + $this->assertEqual(4, count($allFiles), 'only found '.count($allFiles).' out of 4 expected files'); foreach($expected as $file) { $this->assertContains($file, $allFiles, 'cant find '. $file . ' in archive'); - $this->assertTrue($this->instance->fileExists($file),'file '.$file.' does not exist in archive'); + $this->assertTrue($this->instance->fileExists($file), 'file '.$file.' does not exist in archive'); } $this->assertFalse($this->instance->fileExists('non/existing/file')); $rootContent=$this->instance->getFolder(''); - $expected=array('lorem.txt','logo-wide.png','dir/'); - $this->assertEqual(3,count($rootContent)); + $expected=array('lorem.txt','logo-wide.png', 'dir/'); + $this->assertEqual(3, count($rootContent)); foreach($expected as $file) { $this->assertContains($file, $rootContent, 'cant find '. $file . ' in archive'); } $dirContent=$this->instance->getFolder('dir/'); $expected=array('lorem.txt'); - $this->assertEqual(1,count($dirContent)); + $this->assertEqual(1, count($dirContent)); foreach($expected as $file) { $this->assertContains($file, $dirContent, 'cant find '. $file . ' in archive'); } @@ -53,47 +53,47 @@ abstract class Test_Archive extends UnitTestCase { $this->instance=$this->getExisting(); $dir=OC::$SERVERROOT.'/tests/data'; $textFile=$dir.'/lorem.txt'; - $this->assertEqual(file_get_contents($textFile),$this->instance->getFile('lorem.txt')); + $this->assertEqual(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); $tmpFile=OCP\Files::tmpFile('.txt'); - $this->instance->extractFile('lorem.txt',$tmpFile); - $this->assertEqual(file_get_contents($textFile),file_get_contents($tmpFile)); + $this->instance->extractFile('lorem.txt', $tmpFile); + $this->assertEqual(file_get_contents($textFile), file_get_contents($tmpFile)); } public function testWrite() { $dir=OC::$SERVERROOT.'/tests/data'; $textFile=$dir.'/lorem.txt'; $this->instance=$this->getNew(); - $this->assertEqual(0,count($this->instance->getFiles())); - $this->instance->addFile('lorem.txt',$textFile); - $this->assertEqual(1,count($this->instance->getFiles())); + $this->assertEqual(0, count($this->instance->getFiles())); + $this->instance->addFile('lorem.txt', $textFile); + $this->assertEqual(1, count($this->instance->getFiles())); $this->assertTrue($this->instance->fileExists('lorem.txt')); $this->assertFalse($this->instance->fileExists('lorem.txt/')); - $this->assertEqual(file_get_contents($textFile),$this->instance->getFile('lorem.txt')); - $this->instance->addFile('lorem.txt','foobar'); - $this->assertEqual('foobar',$this->instance->getFile('lorem.txt')); + $this->assertEqual(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); + $this->instance->addFile('lorem.txt', 'foobar'); + $this->assertEqual('foobar', $this->instance->getFile('lorem.txt')); } public function testReadStream() { $dir=OC::$SERVERROOT.'/tests/data'; $this->instance=$this->getExisting(); - $fh=$this->instance->getStream('lorem.txt','r'); + $fh=$this->instance->getStream('lorem.txt', 'r'); $this->assertTrue($fh); - $content=fread($fh,$this->instance->filesize('lorem.txt')); + $content=fread($fh, $this->instance->filesize('lorem.txt')); fclose($fh); - $this->assertEqual(file_get_contents($dir.'/lorem.txt'),$content); + $this->assertEqual(file_get_contents($dir.'/lorem.txt'), $content); } public function testWriteStream() { $dir=OC::$SERVERROOT.'/tests/data'; $this->instance=$this->getNew(); - $fh=$this->instance->getStream('lorem.txt','w'); - $source=fopen($dir.'/lorem.txt','r'); - OCP\Files::streamCopy($source,$fh); + $fh=$this->instance->getStream('lorem.txt', 'w'); + $source=fopen($dir.'/lorem.txt', 'r'); + OCP\Files::streamCopy($source, $fh); fclose($source); fclose($fh); $this->assertTrue($this->instance->fileExists('lorem.txt')); - $this->assertEqual(file_get_contents($dir.'/lorem.txt'),$this->instance->getFile('lorem.txt')); + $this->assertEqual(file_get_contents($dir.'/lorem.txt'), $this->instance->getFile('lorem.txt')); } public function testFolder() { $this->instance=$this->getNew(); @@ -111,29 +111,29 @@ abstract class Test_Archive extends UnitTestCase { $this->instance=$this->getExisting(); $tmpDir=OCP\Files::tmpFolder(); $this->instance->extract($tmpDir); - $this->assertEqual(true,file_exists($tmpDir.'lorem.txt')); - $this->assertEqual(true,file_exists($tmpDir.'dir/lorem.txt')); - $this->assertEqual(true,file_exists($tmpDir.'logo-wide.png')); - $this->assertEqual(file_get_contents($dir.'/lorem.txt'),file_get_contents($tmpDir.'lorem.txt')); + $this->assertEqual(true, file_exists($tmpDir.'lorem.txt')); + $this->assertEqual(true, file_exists($tmpDir.'dir/lorem.txt')); + $this->assertEqual(true, file_exists($tmpDir.'logo-wide.png')); + $this->assertEqual(file_get_contents($dir.'/lorem.txt'), file_get_contents($tmpDir.'lorem.txt')); OCP\Files::rmdirr($tmpDir); } public function testMoveRemove() { $dir=OC::$SERVERROOT.'/tests/data'; $textFile=$dir.'/lorem.txt'; $this->instance=$this->getNew(); - $this->instance->addFile('lorem.txt',$textFile); + $this->instance->addFile('lorem.txt', $textFile); $this->assertFalse($this->instance->fileExists('target.txt')); - $this->instance->rename('lorem.txt','target.txt'); + $this->instance->rename('lorem.txt', 'target.txt'); $this->assertTrue($this->instance->fileExists('target.txt')); $this->assertFalse($this->instance->fileExists('lorem.txt')); - $this->assertEqual(file_get_contents($textFile),$this->instance->getFile('target.txt')); + $this->assertEqual(file_get_contents($textFile), $this->instance->getFile('target.txt')); $this->instance->remove('target.txt'); $this->assertFalse($this->instance->fileExists('target.txt')); } public function testRecursive() { $dir=OC::$SERVERROOT.'/tests/data'; $this->instance=$this->getNew(); - $this->instance->addRecursive('/dir',$dir); + $this->instance->addRecursive('/dir', $dir); $this->assertTrue($this->instance->fileExists('/dir/lorem.txt')); $this->assertTrue($this->instance->fileExists('/dir/data.zip')); $this->assertTrue($this->instance->fileExists('/dir/data.tar.gz')); diff --git a/tests/lib/cache.php b/tests/lib/cache.php index 08653d4a3108d8499de26be32f323a87f9ccd740..1a1287ff1352af6eb2fdb846e2f25a837d047c12 100644 --- a/tests/lib/cache.php +++ b/tests/lib/cache.php @@ -13,7 +13,7 @@ abstract class Test_Cache extends UnitTestCase { protected $instance; public function tearDown() { - if($this->instance){ + if($this->instance) { $this->instance->clear(); } } @@ -23,25 +23,25 @@ abstract class Test_Cache extends UnitTestCase { $this->assertFalse($this->instance->hasKey('value1')); $value='foobar'; - $this->instance->set('value1',$value); + $this->instance->set('value1', $value); $this->assertTrue($this->instance->hasKey('value1')); $received=$this->instance->get('value1'); - $this->assertEqual($value,$received,'Value recieved from cache not equal to the original'); + $this->assertEqual($value, $received, 'Value recieved from cache not equal to the original'); $value='ipsum lorum'; - $this->instance->set('value1',$value); + $this->instance->set('value1', $value); $received=$this->instance->get('value1'); - $this->assertEqual($value,$received,'Value not overwritten by second set'); + $this->assertEqual($value, $received, 'Value not overwritten by second set'); $value2='foobar'; - $this->instance->set('value2',$value2); + $this->instance->set('value2', $value2); $received2=$this->instance->get('value2'); $this->assertTrue($this->instance->hasKey('value1')); $this->assertTrue($this->instance->hasKey('value2')); - $this->assertEqual($value,$received,'Value changed while setting other variable'); - $this->assertEqual($value2,$received2,'Second value not equal to original'); + $this->assertEqual($value, $received, 'Value changed while setting other variable'); + $this->assertEqual($value2, $received2, 'Second value not equal to original'); $this->assertFalse($this->instance->hasKey('not_set')); - $this->assertNull($this->instance->get('not_set'),'Unset value not equal to null'); + $this->assertNull($this->instance->get('not_set'), 'Unset value not equal to null'); $this->assertTrue($this->instance->remove('value1')); $this->assertFalse($this->instance->hasKey('value1')); @@ -49,10 +49,10 @@ abstract class Test_Cache extends UnitTestCase { function testClear() { $value='ipsum lorum'; - $this->instance->set('1_value1',$value); - $this->instance->set('1_value2',$value); - $this->instance->set('2_value1',$value); - $this->instance->set('3_value1',$value); + $this->instance->set('1_value1', $value); + $this->instance->set('1_value2', $value); + $this->instance->set('2_value1', $value); + $this->instance->set('3_value1', $value); $this->assertTrue($this->instance->clear('1_')); $this->assertFalse($this->instance->hasKey('1_value1')); diff --git a/tests/lib/cache/apc.php b/tests/lib/cache/apc.php index f68b97bcbd925f9b58b8c5ee0b5891926de5746d..bb5eb483dbf150bcb523c2907f64eed31cf09998 100644 --- a/tests/lib/cache/apc.php +++ b/tests/lib/cache/apc.php @@ -22,11 +22,11 @@ class Test_Cache_APC extends Test_Cache { public function setUp() { - if(!extension_loaded('apc')){ + if(!extension_loaded('apc')) { $this->markTestSkipped('The apc extension is not available.'); return; } - if(!ini_get('apc.enable_cli') && OC::$CLI){ + if(!ini_get('apc.enable_cli') && OC::$CLI) { $this->markTestSkipped('apc not available in CLI.'); return; } diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php index 00be005d08d307de576237123ab2857390996782..d64627198e0e188d8508c3e01ddebff4f0068ef7 100644 --- a/tests/lib/cache/file.php +++ b/tests/lib/cache/file.php @@ -39,7 +39,7 @@ class Test_Cache_File extends Test_Cache { //set up temporary storage OC_Filesystem::clearMounts(); - OC_Filesystem::mount('OC_Filestorage_Temporary',array(),'/'); + OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/'); OC_User::clearBackends(); OC_User::useBackend(new OC_User_Dummy()); diff --git a/tests/lib/cache/xcache.php b/tests/lib/cache/xcache.php index c081036a31f5b42cfba2f2cd0a13b7783fd996ab..43bed2db037a5f30ab45c2d280b42edcc83ddfd7 100644 --- a/tests/lib/cache/xcache.php +++ b/tests/lib/cache/xcache.php @@ -22,7 +22,7 @@ class Test_Cache_XCache extends Test_Cache { public function setUp() { - if(!function_exists('xcache_get')){ + if(!function_exists('xcache_get')) { $this->markTestSkipped('The xcache extension is not available.'); return; } diff --git a/tests/lib/db.php b/tests/lib/db.php index 2344f7d8ec466ac129a35f101cbd406b697d0ebf..c2eb38dae8367ba1a174305539db0c4610917557 100644 --- a/tests/lib/db.php +++ b/tests/lib/db.php @@ -24,6 +24,7 @@ class Test_DB extends UnitTestCase { $this->test_prefix = $r; $this->table1 = $this->test_prefix.'contacts_addressbooks'; $this->table2 = $this->test_prefix.'contacts_cards'; + $this->table3 = $this->test_prefix.'vcategory'; } public function tearDown() { @@ -67,4 +68,66 @@ class Test_DB extends UnitTestCase { $result = $query->execute(array('uri_3')); $this->assertTrue($result); } + + public function testinsertIfNotExist() { + $categoryentries = array( + array('user' => 'test', 'type' => 'contact', 'category' => 'Family'), + array('user' => 'test', 'type' => 'contact', 'category' => 'Friends'), + array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers'), + array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers'), + array('user' => 'test', 'type' => 'contact', 'category' => 'School'), + ); + + foreach($categoryentries as $entry) { + $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table3, + array( + 'uid' => $entry['user'], + 'type' => $entry['type'], + 'category' => $entry['category'], + )); + $this->assertTrue($result); + } + + $query = OC_DB::prepare('SELECT * FROM *PREFIX*'.$this->table3); + $result = $query->execute(); + $this->assertTrue($result); + $this->assertEqual('4', $result->numRows()); + } + + public function testinsertIfNotExistDontOverwrite() { + $fullname = 'fullname test'; + $uri = 'uri_1'; + $carddata = 'This is a vCard'; + + // Normal test to have same known data inserted. + $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`, `uri`, `carddata`) VALUES (?, ?, ?)'); + $result = $query->execute(array($fullname, $uri, $carddata)); + $this->assertTrue($result); + $query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); + $result = $query->execute(array($uri)); + $this->assertTrue($result); + $row = $result->fetchRow(); + $this->assertArrayHasKey('carddata', $row); + $this->assertEqual($carddata, $row['carddata']); + $this->assertEqual('1', $result->numRows()); + + // Try to insert a new row + $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table2, + array( + 'fullname' => $fullname, + 'uri' => $uri, + )); + $this->assertTrue($result); + + $query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); + $result = $query->execute(array($uri)); + $this->assertTrue($result); + $row = $result->fetchRow(); + $this->assertArrayHasKey('carddata', $row); + // Test that previously inserted data isn't overwritten + $this->assertEqual($carddata, $row['carddata']); + // And that a new row hasn't been inserted. + $this->assertEqual('1', $result->numRows()); + + } } diff --git a/tests/lib/filesystem.php b/tests/lib/filesystem.php index e22b3f1c0d80903f1d191061166f1d72255c7357..5cced4946d9b9aba4738eaf18cefd3f15ebce990 100644 --- a/tests/lib/filesystem.php +++ b/tests/lib/filesystem.php @@ -24,7 +24,7 @@ class Test_Filesystem extends UnitTestCase { /** * @var array tmpDirs */ - private $tmpDirs=array(); + private $tmpDirs = array(); /** * @return array @@ -72,21 +72,55 @@ class Test_Filesystem extends UnitTestCase { } } + public function testBlacklist() { + OC_Hook::clear('OC_Filesystem'); + OC::registerFilesystemHooks(); + + $run = true; + OC_Hook::emit( + OC_Filesystem::CLASSNAME, + OC_Filesystem::signal_write, + array( + OC_Filesystem::signal_param_path => '/test/.htaccess', + OC_Filesystem::signal_param_run => &$run + ) + ); + $this->assertFalse($run); + + if (OC_Filesystem::getView()) { + $user = OC_User::getUser(); + } else { + $user = uniqid(); + OC_Filesystem::init('/' . $user . '/files'); + } + + OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/'); + + $rootView = new OC_FilesystemView(''); + $rootView->mkdir('/' . $user); + $rootView->mkdir('/' . $user . '/files'); + + $this->assertFalse($rootView->file_put_contents('/.htaccess', 'foo')); + $this->assertFalse(OC_Filesystem::file_put_contents('/.htaccess', 'foo')); + $fh = fopen(__FILE__, 'r'); + $this->assertFalse(OC_Filesystem::file_put_contents('/.htaccess', $fh)); + } + public function testHooks() { - if(OC_Filesystem::getView()){ + if (OC_Filesystem::getView()) { $user = OC_User::getUser(); - }else{ - $user=uniqid(); - OC_Filesystem::init('/'.$user.'/files'); + } else { + $user = uniqid(); + OC_Filesystem::init('/' . $user . '/files'); } OC_Hook::clear('OC_Filesystem'); OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHook'); OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/'); - $rootView=new OC_FilesystemView(''); - $rootView->mkdir('/'.$user); - $rootView->mkdir('/'.$user.'/files'); + $rootView = new OC_FilesystemView(''); + $rootView->mkdir('/' . $user); + $rootView->mkdir('/' . $user . '/files'); OC_Filesystem::file_put_contents('/foo', 'foo'); OC_Filesystem::mkdir('/bar'); diff --git a/tests/lib/geo.php b/tests/lib/geo.php index 2b3599ab9b9fbd5920ac83808d56164924ad88c7..d4951ee79e79bbe16862536019418cd1b1ec1d44 100644 --- a/tests/lib/geo.php +++ b/tests/lib/geo.php @@ -8,12 +8,12 @@ class Test_Geo extends UnitTestCase { function testTimezone() { - $result = OC_Geo::timezone(3,3); + $result = OC_Geo::timezone(3, 3); $expected = 'Africa/Porto-Novo'; - $this->assertEquals($result, $expected); + $this->assertEquals($expected, $result); $result = OC_Geo::timezone(-3,-3333); $expected = 'Pacific/Enderbury'; - $this->assertEquals($result, $expected); + $this->assertEquals($expected, $result); } } \ No newline at end of file diff --git a/tests/lib/group.php b/tests/lib/group.php index 0bea9a008868f2123d7932d2d712f863121d8a2b..28264b0f168c060e9d8269c415d1400fc667f5d6 100644 --- a/tests/lib/group.php +++ b/tests/lib/group.php @@ -3,7 +3,9 @@ * ownCloud * * @author Robin Appelman +* @author Bernhard Posselt * @copyright 2012 Robin Appelman icewind@owncloud.com +* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -36,32 +38,98 @@ class Test_Group extends UnitTestCase { $user1=uniqid(); $user2=uniqid(); - $this->assertFalse(OC_Group::inGroup($user1,$group1)); - $this->assertFalse(OC_Group::inGroup($user2,$group1)); - $this->assertFalse(OC_Group::inGroup($user1,$group2)); - $this->assertFalse(OC_Group::inGroup($user2,$group2)); + $this->assertFalse(OC_Group::inGroup($user1, $group1)); + $this->assertFalse(OC_Group::inGroup($user2, $group1)); + $this->assertFalse(OC_Group::inGroup($user1, $group2)); + $this->assertFalse(OC_Group::inGroup($user2, $group2)); - $this->assertTrue(OC_Group::addToGroup($user1,$group1)); + $this->assertTrue(OC_Group::addToGroup($user1, $group1)); - $this->assertTrue(OC_Group::inGroup($user1,$group1)); - $this->assertFalse(OC_Group::inGroup($user2,$group1)); - $this->assertFalse(OC_Group::inGroup($user1,$group2)); - $this->assertFalse(OC_Group::inGroup($user2,$group2)); + $this->assertTrue(OC_Group::inGroup($user1, $group1)); + $this->assertFalse(OC_Group::inGroup($user2, $group1)); + $this->assertFalse(OC_Group::inGroup($user1, $group2)); + $this->assertFalse(OC_Group::inGroup($user2, $group2)); - $this->assertFalse(OC_Group::addToGroup($user1,$group1)); + $this->assertFalse(OC_Group::addToGroup($user1, $group1)); - $this->assertEqual(array($user1),OC_Group::usersInGroup($group1)); - $this->assertEqual(array(),OC_Group::usersInGroup($group2)); + $this->assertEqual(array($user1), OC_Group::usersInGroup($group1)); + $this->assertEqual(array(), OC_Group::usersInGroup($group2)); - $this->assertEqual(array($group1),OC_Group::getUserGroups($user1)); - $this->assertEqual(array(),OC_Group::getUserGroups($user2)); + $this->assertEqual(array($group1), OC_Group::getUserGroups($user1)); + $this->assertEqual(array(), OC_Group::getUserGroups($user2)); OC_Group::deleteGroup($group1); - $this->assertEqual(array(),OC_Group::getUserGroups($user1)); - $this->assertEqual(array(),OC_Group::usersInGroup($group1)); - $this->assertFalse(OC_Group::inGroup($user1,$group1)); + $this->assertEqual(array(), OC_Group::getUserGroups($user1)); + $this->assertEqual(array(), OC_Group::usersInGroup($group1)); + $this->assertFalse(OC_Group::inGroup($user1, $group1)); } + + public function testNoEmptyGIDs(){ + OC_Group::useBackend(new OC_Group_Dummy()); + $emptyGroup = null; + + $this->assertEqual(false, OC_Group::createGroup($emptyGroup)); + } + + + public function testNoGroupsTwice(){ + OC_Group::useBackend(new OC_Group_Dummy()); + $group = uniqid(); + OC_Group::createGroup($group); + + $groupCopy = $group; + + $this->assertEqual(false, OC_Group::createGroup($groupCopy)); + $this->assertEqual(array($group), OC_Group::getGroups()); + } + + + public function testDontDeleteAdminGroup(){ + OC_Group::useBackend(new OC_Group_Dummy()); + $adminGroup = 'admin'; + OC_Group::createGroup($adminGroup); + + $this->assertEqual(false, OC_Group::deleteGroup($adminGroup)); + $this->assertEqual(array($adminGroup), OC_Group::getGroups()); + } + + + public function testDontAddUserToNonexistentGroup(){ + OC_Group::useBackend(new OC_Group_Dummy()); + $groupNonExistent = 'notExistent'; + $user = uniqid(); + + $this->assertEqual(false, OC_Group::addToGroup($user, $groupNonExistent)); + $this->assertEqual(array(), OC_Group::getGroups()); + } + + + public function testUsersInGroup(){ + OC_Group::useBackend(new OC_Group_Dummy()); + $group1 = uniqid(); + $group2 = uniqid(); + $group3 = uniqid(); + $user1 = uniqid(); + $user2 = uniqid(); + $user3 = uniqid(); + OC_Group::createGroup($group1); + OC_Group::createGroup($group2); + OC_Group::createGroup($group3); + + OC_Group::addToGroup($user1, $group1); + OC_Group::addToGroup($user2, $group1); + OC_Group::addToGroup($user3, $group1); + OC_Group::addToGroup($user3, $group2); + + $this->assertEqual(array($user1, $user2, $user3), + OC_Group::usersInGroups(array($group1, $group2, $group3))); + + // FIXME: needs more parameter variation + } + + + function testMultiBackend() { $backend1=new OC_Group_Dummy(); $backend2=new OC_Group_Dummy(); @@ -73,42 +141,42 @@ class Test_Group extends UnitTestCase { OC_Group::createGroup($group1); //groups should be added to the first registered backend - $this->assertEqual(array($group1),$backend1->getGroups()); - $this->assertEqual(array(),$backend2->getGroups()); + $this->assertEqual(array($group1), $backend1->getGroups()); + $this->assertEqual(array(), $backend2->getGroups()); - $this->assertEqual(array($group1),OC_Group::getGroups()); + $this->assertEqual(array($group1), OC_Group::getGroups()); $this->assertTrue(OC_Group::groupExists($group1)); $this->assertFalse(OC_Group::groupExists($group2)); $backend1->createGroup($group2); - $this->assertEqual(array($group1,$group2),OC_Group::getGroups()); + $this->assertEqual(array($group1, $group2), OC_Group::getGroups()); $this->assertTrue(OC_Group::groupExists($group1)); $this->assertTrue(OC_Group::groupExists($group2)); $user1=uniqid(); $user2=uniqid(); - $this->assertFalse(OC_Group::inGroup($user1,$group1)); - $this->assertFalse(OC_Group::inGroup($user2,$group1)); + $this->assertFalse(OC_Group::inGroup($user1, $group1)); + $this->assertFalse(OC_Group::inGroup($user2, $group1)); - $this->assertTrue(OC_Group::addToGroup($user1,$group1)); + $this->assertTrue(OC_Group::addToGroup($user1, $group1)); - $this->assertTrue(OC_Group::inGroup($user1,$group1)); - $this->assertFalse(OC_Group::inGroup($user2,$group1)); - $this->assertFalse($backend2->inGroup($user1,$group1)); + $this->assertTrue(OC_Group::inGroup($user1, $group1)); + $this->assertFalse(OC_Group::inGroup($user2, $group1)); + $this->assertFalse($backend2->inGroup($user1, $group1)); - $this->assertFalse(OC_Group::addToGroup($user1,$group1)); + $this->assertFalse(OC_Group::addToGroup($user1, $group1)); - $this->assertEqual(array($user1),OC_Group::usersInGroup($group1)); + $this->assertEqual(array($user1), OC_Group::usersInGroup($group1)); - $this->assertEqual(array($group1),OC_Group::getUserGroups($user1)); - $this->assertEqual(array(),OC_Group::getUserGroups($user2)); + $this->assertEqual(array($group1), OC_Group::getUserGroups($user1)); + $this->assertEqual(array(), OC_Group::getUserGroups($user2)); OC_Group::deleteGroup($group1); - $this->assertEqual(array(),OC_Group::getUserGroups($user1)); - $this->assertEqual(array(),OC_Group::usersInGroup($group1)); - $this->assertFalse(OC_Group::inGroup($user1,$group1)); + $this->assertEqual(array(), OC_Group::getUserGroups($user1)); + $this->assertEqual(array(), OC_Group::usersInGroup($group1)); + $this->assertFalse(OC_Group::inGroup($user1, $group1)); } } diff --git a/tests/lib/group/backend.php b/tests/lib/group/backend.php index 61e008b6ca5e2ebddc9f03d094ba335cbf94e8fa..f61abed5f297fa1ee111319be94338e5ac9f9c02 100644 --- a/tests/lib/group/backend.php +++ b/tests/lib/group/backend.php @@ -52,20 +52,20 @@ abstract class Test_Group_Backend extends UnitTestCase { $name2=$this->getGroupName(); $this->backend->createGroup($name1); $count=count($this->backend->getGroups())-$startCount; - $this->assertEqual(1,$count); - $this->assertTrue((array_search($name1,$this->backend->getGroups())!==false)); - $this->assertFalse((array_search($name2,$this->backend->getGroups())!==false)); + $this->assertEqual(1, $count); + $this->assertTrue((array_search($name1, $this->backend->getGroups())!==false)); + $this->assertFalse((array_search($name2, $this->backend->getGroups())!==false)); $this->backend->createGroup($name2); $count=count($this->backend->getGroups())-$startCount; - $this->assertEqual(2,$count); - $this->assertTrue((array_search($name1,$this->backend->getGroups())!==false)); - $this->assertTrue((array_search($name2,$this->backend->getGroups())!==false)); + $this->assertEqual(2, $count); + $this->assertTrue((array_search($name1, $this->backend->getGroups())!==false)); + $this->assertTrue((array_search($name2, $this->backend->getGroups())!==false)); $this->backend->deleteGroup($name2); $count=count($this->backend->getGroups())-$startCount; - $this->assertEqual(1,$count); - $this->assertTrue((array_search($name1,$this->backend->getGroups())!==false)); - $this->assertFalse((array_search($name2,$this->backend->getGroups())!==false)); + $this->assertEqual(1, $count); + $this->assertTrue((array_search($name1, $this->backend->getGroups())!==false)); + $this->assertFalse((array_search($name2, $this->backend->getGroups())!==false)); } public function testUser() { @@ -77,29 +77,29 @@ abstract class Test_Group_Backend extends UnitTestCase { $user1=$this->getUserName(); $user2=$this->getUserName(); - $this->assertFalse($this->backend->inGroup($user1,$group1)); - $this->assertFalse($this->backend->inGroup($user2,$group1)); - $this->assertFalse($this->backend->inGroup($user1,$group2)); - $this->assertFalse($this->backend->inGroup($user2,$group2)); + $this->assertFalse($this->backend->inGroup($user1, $group1)); + $this->assertFalse($this->backend->inGroup($user2, $group1)); + $this->assertFalse($this->backend->inGroup($user1, $group2)); + $this->assertFalse($this->backend->inGroup($user2, $group2)); - $this->assertTrue($this->backend->addToGroup($user1,$group1)); + $this->assertTrue($this->backend->addToGroup($user1, $group1)); - $this->assertTrue($this->backend->inGroup($user1,$group1)); - $this->assertFalse($this->backend->inGroup($user2,$group1)); - $this->assertFalse($this->backend->inGroup($user1,$group2)); - $this->assertFalse($this->backend->inGroup($user2,$group2)); + $this->assertTrue($this->backend->inGroup($user1, $group1)); + $this->assertFalse($this->backend->inGroup($user2, $group1)); + $this->assertFalse($this->backend->inGroup($user1, $group2)); + $this->assertFalse($this->backend->inGroup($user2, $group2)); - $this->assertFalse($this->backend->addToGroup($user1,$group1)); + $this->assertFalse($this->backend->addToGroup($user1, $group1)); - $this->assertEqual(array($user1),$this->backend->usersInGroup($group1)); - $this->assertEqual(array(),$this->backend->usersInGroup($group2)); + $this->assertEqual(array($user1), $this->backend->usersInGroup($group1)); + $this->assertEqual(array(), $this->backend->usersInGroup($group2)); - $this->assertEqual(array($group1),$this->backend->getUserGroups($user1)); - $this->assertEqual(array(),$this->backend->getUserGroups($user2)); + $this->assertEqual(array($group1), $this->backend->getUserGroups($user1)); + $this->assertEqual(array(), $this->backend->getUserGroups($user2)); $this->backend->deleteGroup($group1); - $this->assertEqual(array(),$this->backend->getUserGroups($user1)); - $this->assertEqual(array(),$this->backend->usersInGroup($group1)); - $this->assertFalse($this->backend->inGroup($user1,$group1)); + $this->assertEqual(array(), $this->backend->getUserGroups($user1)); + $this->assertEqual(array(), $this->backend->usersInGroup($group1)); + $this->assertFalse($this->backend->inGroup($user1, $group1)); } } diff --git a/tests/lib/helper.php b/tests/lib/helper.php new file mode 100644 index 0000000000000000000000000000000000000000..cfb9a7995795f0611e5b4d276e85c2716302c91f --- /dev/null +++ b/tests/lib/helper.php @@ -0,0 +1,140 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class Test_Helper extends UnitTestCase { + + function testHumanFileSize() { + $result = OC_Helper::humanFileSize(0); + $expected = '0 B'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::humanFileSize(1024); + $expected = '1 kB'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::humanFileSize(10000000); + $expected = '9.5 MB'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::humanFileSize(500000000000); + $expected = '465.7 GB'; + $this->assertEquals($result, $expected); + } + + function testComputerFileSize() { + $result = OC_Helper::computerFileSize("0 B"); + $expected = '0.0'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::computerFileSize("1 kB"); + $expected = '1024.0'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::computerFileSize("9.5 MB"); + $expected = '9961472.0'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::computerFileSize("465.7 GB"); + $expected = '500041567436.8'; + $this->assertEquals($result, $expected); + } + + function testGetMimeType() { + $dir=OC::$SERVERROOT.'/tests/data'; + $result = OC_Helper::getMimeType($dir."/"); + $expected = 'httpd/unix-directory'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::getMimeType($dir."/data.tar.gz"); + $expected = 'application/x-gzip'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::getMimeType($dir."/data.zip"); + $expected = 'application/zip'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::getMimeType($dir."/logo-wide.svg"); + $expected = 'image/svg+xml'; + $this->assertEquals($result, $expected); + + $result = OC_Helper::getMimeType($dir."/logo-wide.png"); + $expected = 'image/png'; + $this->assertEquals($result, $expected); + } + + function testGetStringMimeType() { + $result = OC_Helper::getStringMimeType("/data/data.tar.gz"); + $expected = 'text/plain; charset=us-ascii'; + $this->assertEquals($result, $expected); + } + + function testIssubdirectory() { + $result = OC_Helper::issubdirectory("./data/", "/anotherDirectory/"); + $this->assertFalse($result); + + $result = OC_Helper::issubdirectory("./data/", "./data/"); + $this->assertTrue($result); + + mkdir("data/TestSubdirectory", 0777); + $result = OC_Helper::issubdirectory("data/TestSubdirectory/", "data"); + rmdir("data/TestSubdirectory"); + $this->assertTrue($result); + } + + function testMb_array_change_key_case() { + $arrayStart = array( + "Foo" => "bar", + "Bar" => "foo", + ); + $arrayResult = array( + "foo" => "bar", + "bar" => "foo", + ); + $result = OC_Helper::mb_array_change_key_case($arrayStart); + $expected = $arrayResult; + $this->assertEquals($result, $expected); + + $arrayStart = array( + "foo" => "bar", + "bar" => "foo", + ); + $arrayResult = array( + "FOO" => "bar", + "BAR" => "foo", + ); + $result = OC_Helper::mb_array_change_key_case($arrayStart, MB_CASE_UPPER); + $expected = $arrayResult; + $this->assertEquals($result, $expected); + } + + function testMb_substr_replace() { + $result = OC_Helper::mb_substr_replace("This is a teststring", "string", 5); + $expected = "This string is a teststring"; + $this->assertEquals($result, $expected); + } + + function testMb_str_replace() { + $result = OC_Helper::mb_str_replace("teststring", "string", "This is a teststring"); + $expected = "This is a string"; + $this->assertEquals($result, $expected); + } + + function testRecursiveArraySearch() { + $haystack = array( + "Foo" => "own", + "Bar" => "Cloud", + ); + + $result = OC_Helper::recursiveArraySearch($haystack, "own"); + $expected = "Foo"; + $this->assertEquals($result, $expected); + + $result = OC_Helper::recursiveArraySearch($haystack, "NotFound"); + $this->assertFalse($result); + } +} diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index dc9a518d9dba2c312bc253044057147e46bea1fb..92f5d065cf26fb7c1bb2703f74a2244d96721420 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -33,10 +33,10 @@ class Test_Share extends UnitTestCase { public function setUp() { OC_User::clearBackends(); OC_User::useBackend('dummy'); - $this->user1 = uniqid('user_'); - $this->user2 = uniqid('user_'); - $this->user3 = uniqid('user_'); - $this->user4 = uniqid('user_'); + $this->user1 = uniqid('user1_'); + $this->user2 = uniqid('user2_'); + $this->user3 = uniqid('user3_'); + $this->user4 = uniqid('user4_'); OC_User::createUser($this->user1, 'pass'); OC_User::createUser($this->user2, 'pass'); OC_User::createUser($this->user3, 'pass'); @@ -54,6 +54,8 @@ class Test_Share extends UnitTestCase { OC_Group::addToGroup($this->user2, $this->group2); OC_Group::addToGroup($this->user4, $this->group2); OCP\Share::registerBackend('test', 'Test_Share_Backend'); + OC_Hook::clear('OCP\\Share'); + OC::registerShareHooks(); } public function tearDown() { @@ -64,7 +66,7 @@ class Test_Share extends UnitTestCase { public function testShareInvalidShareType() { $message = 'Share type foobar is not valid for test.txt'; try { - OCP\Share::shareItem('test', 'test.txt', 'foobar', $this->user2, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', 'foobar', $this->user2, OCP\PERMISSION_READ); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } @@ -73,7 +75,7 @@ class Test_Share extends UnitTestCase { public function testInvalidItemType() { $message = 'Sharing backend for foobar not found'; try { - OCP\Share::shareItem('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -109,7 +111,7 @@ class Test_Share extends UnitTestCase { $this->assertEquals($message, $exception->getMessage()); } try { - OCP\Share::setPermissions('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_UPDATE); + OCP\Share::setPermissions('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_UPDATE); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -120,131 +122,131 @@ class Test_Share extends UnitTestCase { // Invalid shares $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the item owner'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } $message = 'Sharing test.txt failed, because the user foobar does not exist'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, 'foobar', OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, 'foobar', OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } $message = 'Sharing foobar failed, because the sharing backend for test could not find its source'; try { - OCP\Share::shareItem('test', 'foobar', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'foobar', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Valid share - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); - + // Attempt to share again OC_User::setUserId($this->user1); $message = 'Sharing test.txt failed, because this item is already shared with '.$this->user2; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Attempt to share back OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Unshare OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); - + // Attempt reshare without share permission - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because resharing is not allowed'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - - // Owner grants share and update permission + + // Owner grants share and update permission OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_SHARE)); - + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_SHARE)); + // Attempt reshare with escalated permissions OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the permissions exceed permissions granted to '.$this->user2; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Valid reshare - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); - $this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - + $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + // Attempt to escalate permissions OC_User::setUserId($this->user2); $message = 'Setting permissions for test.txt failed, because the permissions exceed permissions granted to '.$this->user2; try { - OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE); + OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Remove update permission OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user3); - $this->assertEquals(array(OCP\Share::PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - + $this->assertEquals(array(OCP\PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + // Remove share permission OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\Share::PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(OCP\PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user3); $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt')); - + // Reshare again, and then have owner unshare OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); OC_User::setUserId($this->user2); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ)); OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); OC_User::setUserId($this->user2); $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt')); OC_User::setUserId($this->user3); $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt')); - + // Attempt target conflict OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); OC_User::setUserId($this->user3); - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); OC_User::setUserId($this->user2); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); @@ -263,7 +265,7 @@ class Test_Share extends UnitTestCase { // Invalid shares $message = 'Sharing test.txt failed, because the group foobar does not exist'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -272,131 +274,131 @@ class Test_Share extends UnitTestCase { OC_Appconfig::setValue('core', 'shareapi_share_policy', 'groups_only'); $message = 'Sharing test.txt failed, because '.$this->user1.' is not a member of the group '.$this->group2; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } OC_Appconfig::setValue('core', 'shareapi_share_policy', $policy); - + // Valid share - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); - + // Attempt to share again OC_User::setUserId($this->user1); $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Attempt to share back to owner of group share OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Attempt to share back to group $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Attempt to share back to member of group $message ='Sharing test.txt failed, because this item is already shared with '.$this->user3; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } - + // Unshare OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); - + // Valid share with same person - user then group - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE | OCP\Share::PERMISSION_SHARE)); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE | OCP\Share::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - + $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + // Valid reshare OC_User::setUserId($this->user2); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\Share::PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ)); OC_User::setUserId($this->user4); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - + // Unshare from user only OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user4); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - + // Valid share with same person - group then user OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - + $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + // Unshare from group only OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - + $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + // Attempt user specific target conflict OC_User::setUserId($this->user3); - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); OC_User::setUserId($this->user2); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); $this->assertEquals(2, count($to_test)); $this->assertTrue(in_array('test.txt', $to_test)); $this->assertTrue(in_array('test1.txt', $to_test)); - - // Valid reshare - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); + + // Valid reshare + $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); OC_User::setUserId($this->user4); $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - + // Remove user from group OC_Group::removeFromGroup($this->user2, $this->group1); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); OC_User::setUserId($this->user4); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - + // Add user to group OC_Group::addToGroup($this->user4, $this->group1); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - + // Unshare from self $this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt')); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - + // Remove group OC_Group::deleteGroup($this->group1); OC_User::setUserId($this->user4); diff --git a/tests/lib/streamwrappers.php b/tests/lib/streamwrappers.php index 46838ff9754656bea65ad0547c48468135e7a848..89b2785fca6e705bb776d72ea5597f0315dfdfbc 100644 --- a/tests/lib/streamwrappers.php +++ b/tests/lib/streamwrappers.php @@ -22,7 +22,7 @@ class Test_StreamWrappers extends UnitTestCase { public function testFakeDir() { - $items=array('foo','bar'); + $items=array('foo', 'bar'); OC_FakeDirStream::$dirs['test']=$items; $dh=opendir('fakedir://test'); $result=array(); @@ -30,16 +30,16 @@ class Test_StreamWrappers extends UnitTestCase { $result[]=$file; $this->assertContains($file, $items); } - $this->assertEqual(count($items),count($result)); + $this->assertEqual(count($items), count($result)); } public function testStaticStream() { $sourceFile=OC::$SERVERROOT.'/tests/data/lorem.txt'; $staticFile='static://test'; $this->assertFalse(file_exists($staticFile)); - file_put_contents($staticFile,file_get_contents($sourceFile)); + file_put_contents($staticFile, file_get_contents($sourceFile)); $this->assertTrue(file_exists($staticFile)); - $this->assertEqual(file_get_contents($sourceFile),file_get_contents($staticFile)); + $this->assertEqual(file_get_contents($sourceFile), file_get_contents($staticFile)); unlink($staticFile); clearstatcache(); $this->assertFalse(file_exists($staticFile)); @@ -51,8 +51,8 @@ class Test_StreamWrappers extends UnitTestCase { $tmpFile=OC_Helper::TmpFile('.txt'); $file='close://'.$tmpFile; $this->assertTrue(file_exists($file)); - file_put_contents($file,file_get_contents($sourceFile)); - $this->assertEqual(file_get_contents($sourceFile),file_get_contents($file)); + file_put_contents($file, file_get_contents($sourceFile)); + $this->assertEqual(file_get_contents($sourceFile), file_get_contents($file)); unlink($file); clearstatcache(); $this->assertFalse(file_exists($file)); @@ -60,15 +60,15 @@ class Test_StreamWrappers extends UnitTestCase { //test callback $tmpFile=OC_Helper::TmpFile('.txt'); $file='close://'.$tmpFile; - OC_CloseStreamWrapper::$callBacks[$tmpFile]=array('Test_StreamWrappers','closeCallBack'); - $fh=fopen($file,'w'); - fwrite($fh,'asd'); + OC_CloseStreamWrapper::$callBacks[$tmpFile]=array('Test_StreamWrappers', 'closeCallBack'); + $fh=fopen($file, 'w'); + fwrite($fh, 'asd'); try{ fclose($fh); $this->fail('Expected exception'); }catch(Exception $e) { $path=$e->getMessage(); - $this->assertEqual($path,$tmpFile); + $this->assertEqual($path, $tmpFile); } } diff --git a/tests/lib/template.php b/tests/lib/template.php new file mode 100644 index 0000000000000000000000000000000000000000..736bc95255c05824a1a810cf0d799f057475a201 --- /dev/null +++ b/tests/lib/template.php @@ -0,0 +1,71 @@ +. +* +*/ + +OC::autoload('OC_Template'); + +class Test_TemplateFunctions extends UnitTestCase { + + public function testP() { + // FIXME: do we need more testcases? + $htmlString = ""; + ob_start(); + p($htmlString); + $result = ob_get_clean(); + ob_end_clean(); + + $this->assertEqual("<script>alert('xss');</script>", $result); + } + + public function testPNormalString() { + $normalString = "This is a good string!"; + ob_start(); + p($normalString); + $result = ob_get_clean(); + ob_end_clean(); + + $this->assertEqual("This is a good string!", $result); + } + + + public function testPrintUnescaped() { + $htmlString = ""; + + ob_start(); + print_unescaped($htmlString); + $result = ob_get_clean(); + ob_end_clean(); + + $this->assertEqual($htmlString, $result); + } + + public function testPrintUnescapedNormalString() { + $normalString = "This is a good string!"; + ob_start(); + print_unescaped($normalString); + $result = ob_get_clean(); + ob_end_clean(); + + $this->assertEqual("This is a good string!", $result); + } + + +} diff --git a/tests/lib/user/backend.php b/tests/lib/user/backend.php index c69c1bad51264a66ea21d2c499a874d90978c047..0b744770ea28faea45f37e119b54af509179e2a1 100644 --- a/tests/lib/user/backend.php +++ b/tests/lib/user/backend.php @@ -23,10 +23,10 @@ /** * Abstract class to provide the basis of backend-specific unit test classes. * - * All subclasses MUST assign a backend property in setUp() which implements + * All subclasses MUST assign a backend property in setUp() which implements * user operations (add, remove, etc.). Test methods in this class will then be * run on each separate subclass and backend therein. - * + * * For an example see /tests/lib/user/dummy.php */ @@ -51,22 +51,22 @@ abstract class Test_User_Backend extends UnitTestCase { $name1=$this->getUser(); $name2=$this->getUser(); - $this->backend->createUser($name1,''); + $this->backend->createUser($name1, ''); $count=count($this->backend->getUsers())-$startCount; - $this->assertEqual(1,$count); - $this->assertTrue((array_search($name1,$this->backend->getUsers())!==false)); - $this->assertFalse((array_search($name2,$this->backend->getUsers())!==false)); - $this->backend->createUser($name2,''); + $this->assertEqual(1, $count); + $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); + $this->assertFalse((array_search($name2, $this->backend->getUsers())!==false)); + $this->backend->createUser($name2, ''); $count=count($this->backend->getUsers())-$startCount; - $this->assertEqual(2,$count); - $this->assertTrue((array_search($name1,$this->backend->getUsers())!==false)); - $this->assertTrue((array_search($name2,$this->backend->getUsers())!==false)); + $this->assertEqual(2, $count); + $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); + $this->assertTrue((array_search($name2, $this->backend->getUsers())!==false)); $this->backend->deleteUser($name2); $count=count($this->backend->getUsers())-$startCount; - $this->assertEqual(1,$count); - $this->assertTrue((array_search($name1,$this->backend->getUsers())!==false)); - $this->assertFalse((array_search($name2,$this->backend->getUsers())!==false)); + $this->assertEqual(1, $count); + $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); + $this->assertFalse((array_search($name2, $this->backend->getUsers())!==false)); } public function testLogin() { @@ -76,24 +76,24 @@ abstract class Test_User_Backend extends UnitTestCase { $this->assertFalse($this->backend->userExists($name1)); $this->assertFalse($this->backend->userExists($name2)); - $this->backend->createUser($name1,'pass1'); - $this->backend->createUser($name2,'pass2'); + $this->backend->createUser($name1, 'pass1'); + $this->backend->createUser($name2, 'pass2'); $this->assertTrue($this->backend->userExists($name1)); $this->assertTrue($this->backend->userExists($name2)); - $this->assertTrue($this->backend->checkPassword($name1,'pass1')); - $this->assertTrue($this->backend->checkPassword($name2,'pass2')); + $this->assertTrue($this->backend->checkPassword($name1, 'pass1')); + $this->assertTrue($this->backend->checkPassword($name2, 'pass2')); - $this->assertFalse($this->backend->checkPassword($name1,'pass2')); - $this->assertFalse($this->backend->checkPassword($name2,'pass1')); + $this->assertFalse($this->backend->checkPassword($name1, 'pass2')); + $this->assertFalse($this->backend->checkPassword($name2, 'pass1')); - $this->assertFalse($this->backend->checkPassword($name1,'dummy')); - $this->assertFalse($this->backend->checkPassword($name2,'foobar')); + $this->assertFalse($this->backend->checkPassword($name1, 'dummy')); + $this->assertFalse($this->backend->checkPassword($name2, 'foobar')); - $this->backend->setPassword($name1,'newpass1'); - $this->assertFalse($this->backend->checkPassword($name1,'pass1')); - $this->assertTrue($this->backend->checkPassword($name1,'newpass1')); - $this->assertFalse($this->backend->checkPassword($name2,'newpass1')); + $this->backend->setPassword($name1, 'newpass1'); + $this->assertFalse($this->backend->checkPassword($name1, 'pass1')); + $this->assertTrue($this->backend->checkPassword($name1, 'newpass1')); + $this->assertFalse($this->backend->checkPassword($name2, 'newpass1')); } } diff --git a/tests/lib/util.php b/tests/lib/util.php index 23fe29036130ae7419f0bf99f0ccf2a724821daf..27635cb805558cf3b46130c7f1ace9a3e0cd9c47 100644 --- a/tests/lib/util.php +++ b/tests/lib/util.php @@ -10,36 +10,36 @@ class Test_Util extends UnitTestCase { // Constructor function Test_Util() { - date_default_timezone_set("UTC"); + date_default_timezone_set("UTC"); } function testFormatDate() { $result = OC_Util::formatDate(1350129205); - $expected = 'October 13, 2012, 11:53'; - $this->assertEquals($result, $expected); + $expected = 'October 13, 2012 11:53'; + $this->assertEquals($expected, $result); $result = OC_Util::formatDate(1102831200, true); $expected = 'December 12, 2004'; - $this->assertEquals($result, $expected); + $this->assertEquals($expected, $result); } function testCallRegister() { $result = strlen(OC_Util::callRegister()); - $this->assertEquals($result, 20); + $this->assertEquals(20, $result); } function testSanitizeHTML() { $badString = ""; $result = OC_Util::sanitizeHTML($badString); - $this->assertEquals($result, "<script>alert('Hacked!');</script>"); + $this->assertEquals("<script>alert('Hacked!');</script>", $result); $goodString = "This is an harmless string."; $result = OC_Util::sanitizeHTML($goodString); - $this->assertEquals($result, "This is an harmless string."); - } + $this->assertEquals("This is an harmless string.", $result); + } function testGenerate_random_bytes() { $result = strlen(OC_Util::generate_random_bytes(59)); - $this->assertEquals($result, 59); - } + $this->assertEquals(59, $result); + } } \ No newline at end of file diff --git a/tests/lib/vcategories.php b/tests/lib/vcategories.php new file mode 100644 index 0000000000000000000000000000000000000000..63516a063daa62f4cbe37f7054ef9626c0153546 --- /dev/null +++ b/tests/lib/vcategories.php @@ -0,0 +1,117 @@ +. +* +*/ + +//require_once("../lib/template.php"); + +class Test_VCategories extends UnitTestCase { + + protected $objectType; + protected $user; + protected $backupGlobals = FALSE; + + public function setUp() { + + OC_User::clearBackends(); + OC_User::useBackend('dummy'); + $this->user = uniqid('user_'); + $this->objectType = uniqid('type_'); + OC_User::createUser($this->user, 'pass'); + OC_User::setUserId($this->user); + + } + + public function tearDown() { + //$query = OC_DB::prepare('DELETE FROM `*PREFIX*vcategories` WHERE `item_type` = ?'); + //$query->execute(array('test')); + } + + public function testInstantiateWithDefaults() { + $defcategories = array('Friends', 'Family', 'Work', 'Other'); + + $catmgr = new OC_VCategories($this->objectType, $this->user, $defcategories); + + $this->assertEqual(4, count($catmgr->categories())); + } + + public function testAddCategories() { + $categories = array('Friends', 'Family', 'Work', 'Other'); + + $catmgr = new OC_VCategories($this->objectType, $this->user); + + foreach($categories as $category) { + $result = $catmgr->add($category); + $this->assertTrue($result); + } + + $this->assertFalse($catmgr->add('Family')); + $this->assertFalse($catmgr->add('fAMILY')); + + $this->assertEqual(4, count($catmgr->categories())); + } + + public function testdeleteCategories() { + $defcategories = array('Friends', 'Family', 'Work', 'Other'); + $catmgr = new OC_VCategories($this->objectType, $this->user, $defcategories); + $this->assertEqual(4, count($catmgr->categories())); + + $catmgr->delete('family'); + $this->assertEqual(3, count($catmgr->categories())); + + $catmgr->delete(array('Friends', 'Work', 'Other')); + $this->assertEqual(0, count($catmgr->categories())); + + } + + public function testAddToCategory() { + $objids = array(1, 2, 3, 4, 5, 6, 7, 8, 9); + + $catmgr = new OC_VCategories($this->objectType, $this->user); + + foreach($objids as $id) { + $catmgr->addToCategory($id, 'Family'); + } + + $this->assertEqual(1, count($catmgr->categories())); + $this->assertEqual(9, count($catmgr->idsForCategory('Family'))); + } + + /** + * @depends testAddToCategory + */ + public function testRemoveFromCategory() { + $objids = array(1, 2, 3, 4, 5, 6, 7, 8, 9); + + // Is this "legal"? + $this->testAddToCategory(); + $catmgr = new OC_VCategories($this->objectType, $this->user); + + foreach($objids as $id) { + $this->assertTrue(in_array($id, $catmgr->idsForCategory('Family'))); + $catmgr->removeFromCategory($id, 'Family'); + $this->assertFalse(in_array($id, $catmgr->idsForCategory('Family'))); + } + + $this->assertEqual(1, count($catmgr->categories())); + $this->assertEqual(0, count($catmgr->idsForCategory('Family'))); + } + +} diff --git a/tests/phpunit.xml b/tests/phpunit.xml index 4a2d68a3e479ab2d8327e8e021473a8a99eb083c..23cd123edc67cabcf26882e400aca784144fd37d 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -4,4 +4,11 @@ lib/ apps.php + + + .. + + ../3rdparty + + diff --git a/tests/preseed-config.php b/tests/preseed-config.php new file mode 100644 index 0000000000000000000000000000000000000000..9791e713dacbf88ebad247807c2245e1b18d97e8 --- /dev/null +++ b/tests/preseed-config.php @@ -0,0 +1,19 @@ + false, + 'apps_paths' => + array ( + 0 => + array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => + array ( + 'path' => OC::$SERVERROOT.'/apps2', + 'url' => '/apps2', + 'writable' => false, + ) + ), +);